1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,51867,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return o}});let r=e.r(16485),n="undefined"==typeof window,a=n?()=>{}:r.useLayoutEffect,s=n?()=>{}:r.useEffect;function o(e){let{headManager:t,reduceComponentsToState:i}=e;function o(){if(t&&t.mountedInstances){let e=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(i(e))}}return n&&(t?.mountedInstances?.add(e.children),o()),a(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),a(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),s(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},51641,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={default:function(){return m},defaultHead:function(){return c}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let a=e.r(81258),s=e.r(44066),o=e.r(55890),l=s._(e.r(16485)),u=a._(e.r(51867)),h=e.r(15194);function c(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function d(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(99376);let p=["name","httpEquiv","charSet","itemProp"];function f(e){let t,i,r,n;return e.reduce(d,[]).reverse().concat(c().reverse()).filter((t=new Set,i=new Set,r=new Set,n={},e=>{let a=!0,s=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){s=!0;let i=e.key.slice(e.key.indexOf("$")+1);t.has(i)?a=!1:t.add(i)}switch(e.type){case"title":case"base":i.has(e.type)?a=!1:i.add(e.type);break;case"meta":for(let t=0,i=p.length;t<i;t++){let i=p[t];if(e.props.hasOwnProperty(i))if("charSet"===i)r.has(i)?a=!1:r.add(i);else{let t=e.props[i],r=n[i]||new Set;("name"!==i||!s)&&r.has(t)?a=!1:(r.add(t),n[i]=r)}}}return a})).reverse().map((e,t)=>{let i=e.key||t;return l.default.cloneElement(e,{key:i})})}let m=function({children:e}){let t=(0,l.useContext)(h.HeadManagerContext);return(0,o.jsx)(u.default,{reduceComponentsToState:f,headManager:t,children:e})};("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},76499,(e,t,i)=>{"use strict";function r({widthInt:e,heightInt:t,blurWidth:i,blurHeight:r,blurDataURL:n,objectFit:a}){let s=i?40*i:e,o=r?40*r:t,l=s&&o?`viewBox='0 0 ${s} ${o}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${l}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${l?"none":"contain"===a?"xMidYMid":"cover"===a?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${n}'/%3E%3C/svg%3E`}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},90973,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return a},imageConfigDefault:function(){return s}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let a=["default","imgix","cloudinary","akamai","custom"],s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumRedirects:3,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,
1contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1}},67876,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"getImgProps",{enumerable:!0,get:function(){return u}}),e.r(99376);let r=e.r(4655),n=e.r(76499),a=e.r(90973),s=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function u({src:e,sizes:t,unoptimized:i=!1,priority:u=!1,preload:h=!1,loading:c,className:d,quality:p,width:f,height:m,fill:g=!1,style:v,overrideSrc:y,onLoad:x,onLoadingComplete:w,placeholder:E="empty",blurDataURL:b,fetchPriority:_,decoding:R="async",layout:P,objectFit:T,objectPosition:C,lazyBoundary:S,lazyRoot:j,...A},M){var U;let I,O,D,{imgConf:L,showAltText:N,blurComplete:k,defaultLoader:F}=M,z=L||a.imageConfigDefault;if("allSizes"in z)I=z;else{let e=[...z.deviceSizes,...z.imageSizes].sort((e,t)=>e-t),t=z.deviceSizes.sort((e,t)=>e-t),i=z.qualities?.sort((e,t)=>e-t);I={...z,allSizes:e,deviceSizes:t,qualities:i}}if(void 0===F)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let B=A.loader||F;delete A.loader,delete A.srcSet;let X="__next_img_default"in B;if(X){if("custom"===I.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop. 2Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=B;B=t=>{let{config:i,...r}=t;return e(r)}}if(P){"fill"===P&&(g=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[P];e&&(v={...v,...e});let i={responsive:"100vw",fill:"100vw"}[P];i&&!t&&(t=i)}
2let $="",G=l(f),W=l(m);if((U=e)&&"object"==typeof U&&(o(U)||void 0!==U.src)){let t=o(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(O=t.blurWidth,D=t.blurHeight,b=b||t.blurDataURL,$=t.src,!g)if(G||W){if(G&&!W){let e=G/t.width;W=Math.round(t.height*e)}else if(!G&&W){let e=W/t.height;G=Math.round(t.width*e)}}else G=t.width,W=t.height}let Y=!u&&!h&&("lazy"===c||void 0===c);(!(e="string"==typeof e?e:$)||e.startsWith("data:")||e.startsWith("blob:"))&&(i=!0,Y=!1),I.unoptimized&&(i=!0),X&&!I.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(i=!0);let H=l(p),q=Object.assign(g?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:T,objectPosition:C}:{},N?{}:{color:"transparent"},v),V=k||"empty"===E?null:"blur"===E?`url("data:image/svg+xml;charset=utf-8,${(0,n.getImageBlurSvg)({widthInt:G,heightInt:W,blurWidth:O,blurHeight:D,blurDataURL:b||"",objectFit:q.objectFit})}")`:`url("${E}")`,K=s.includes(q.objectFit)?"fill"===q.objectFit?"100% 100%":"cover":q.objectFit,J=V?{backgroundSize:K,backgroundPosition:q.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:V}:{},Q=function({config:e,src:t,unoptimized:i,width:n,quality:a,sizes:s,loader:o}){if(i){let e=(0,r.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")&&e){let i=t.includes("?")?"&":"?";t=`${t}${i}dpl=${e}`}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:l,kind:u}=function({deviceSizes:e,allSizes:t},i,r){if(r){let i=/(^|\s)(1?\d?\d)vw/g,n=[];for(let e;e=i.exec(r);)n.push(parseInt(e[2]));if(n.length){let i=.01*Math.min(...n);return{widths:t.filter(t=>t>=e[0]*i),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof i?{widths:e,kind:"w"}:{widths:[...new Set([i,2*i].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,n,s),h=l.length-1;return{sizes:s||"w"!==u?s:"100vw",srcSet:l.map((i,r)=>`${o({config:e,src:t,quality:a,width:i})} ${"w"===u?i:r+1}${u}`).join(", "),src:o({config:e,src:t,quality:a,width:l[h]})}}({config:I,src:e,unoptimized:i,width:G,quality:H,sizes:t,loader:B}),Z=Y?"lazy":c;return{props:{...A,loading:Z,fetchPriority:_,width:G,height:W,decoding:R,className:d,style:{...q,...J},sizes:Q.sizes,srcSet:Q.srcSet,src:y||Q.src},meta:{unoptimized:i,preload:h||u,placeholder:E,fill:g}}}},14057,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let r=e.r(81258)._(e.r(16485)),n=e.r(90973),a=r.default.createContext(n.imageConfigDefault)},94448,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"RouterContext",{enumerable:!0,get:function(){return r}});let r=e.r(81258)._(e.r(16485)).default.createContext(null)},81919,(e,t,i)=>{"use strict";function r(e,t){let i=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-i)<Math.abs(e-i)?t:e,0):i}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"findClosestQuality",{enumerable:!0,get:function(){return r}})},72499,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return s}});let r=e.r(81919),n=e.r(4655);function a({config:e,src:t,width:i,quality:a}){if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns. 3Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,
3configurable:!0});let s=(0,r.findClosestQuality)(a,e),o=(0,n.getDeploymentId)();return`${e.path}?url=${encodeURIComponent(t)}&w=${i}&q=${s}${t.startsWith("/")&&o?`&dpl=${o}`:""}`}a.__next_img_default=!0;let s=a},79031,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"Image",{enumerable:!0,get:function(){return w}});let r=e.r(81258),n=e.r(44066),a=e.r(55890),s=n._(e.r(16485)),o=r._(e.r(55440)),l=r._(e.r(51641)),u=e.r(67876),h=e.r(90973),c=e.r(14057);e.r(99376);let d=e.r(94448),p=r._(e.r(72499)),f=e.r(82497),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function g(e,t,i,r,n,a,s){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),i?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,n=!1;i.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}r?.current&&r.current(e)}}))}function v(e){return s.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,s.forwardRef)(({src:e,srcSet:t,sizes:i,height:r,width:n,decoding:o,className:l,style:u,fetchPriority:h,placeholder:c,loading:d,unoptimized:p,fill:m,onLoadRef:y,onLoadingCompleteRef:x,setBlurComplete:w,setShowAltText:E,sizesInput:b,onLoad:_,onError:R,...P},T)=>{let C=(0,s.useCallback)(e=>{e&&(R&&(e.src=e.src),e.complete&&g(e,c,y,x,w,p,b))},[e,c,y,x,w,R,p,b]),S=(0,f.useMergedRef)(T,C);return(0,a.jsx)("img",{...P,...v(h),loading:d,width:n,height:r,decoding:o,"data-nimg":m?"fill":"1",className:l,style:u,sizes:i,srcSet:t,src:e,ref:S,onLoad:e=>{g(e.currentTarget,c,y,x,w,p,b)},onError:e=>{E(!0),"empty"!==c&&w(!0),R&&R(e)}})});function x({isAppRouter:e,imgAttributes:t}){let i={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...v(t.fetchPriority)};return e&&o.default.preload?(o.default.preload(t.src,i),null):(0,a.jsx)(l.default,{children:(0,a.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...i},"__nimg-"+t.src+t.srcSet+t.sizes)})}let w=(0,s.forwardRef)((e,t)=>{let i=(0,s.useContext)(d.RouterContext),r=(0,s.useContext)(c.ImageConfigContext),n=(0,s.useMemo)(()=>{let e=m||r||h.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),i=e.deviceSizes.sort((e,t)=>e-t),n=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:i,qualities:n,localPatterns:"undefined"==typeof window?r?.localPatterns:e.localPatterns}},[r]),{onLoad:o,onLoadingComplete:l}=e,f=(0,s.useRef)(o);(0,s.useEffect)(()=>{f.current=o},[o]);let g=(0,s.useRef)(l);(0,s.useEffect)(()=>{g.current=l},[l]);let[v,w]=(0,s.useState)(!1),[E,b]=(0,s.useState)(!1),{props:_,meta:R}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:v,showAltText:E});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(y,{..._,unoptimized:R.unoptimized,placeholder:R.placeholder,fill:R.fill,onLoadRef:f,onLoadingCompleteRef:g,setBlurComplete:w,setShowAltText:b,sizesInput:e.sizes,ref:t}),R.preload?(0,a.jsx)(x,{isAppRouter:!i,imgAttributes:_}):null]})});("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},32048,e=>{"use strict";e.i(60233);var t=e.i(55890),i=e.i(16485),r=e.i(86166),n=e.i(5294),a=e.i(703),s=e.i(42457),o=e.i(50438),l=i,u=e.i(10099);function h(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class c extends l.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,o.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,i=(0,o.isHTMLElement)(e)&&e.offsetWidth||0,r=(0,o.isHTMLElement)(e)&&e.offsetHeight||0,n=getComputedStyle(t),a=this.props.sizeRef.current;a.height=parseFloat(n.height),a.width=parseFloat(n.width),a.top=t.offsetTop,a.left=t.offsetLeft,a.right=i-a.width-a.left,a.bottom=r-a.height-a.top}return null}componentDidUpdate(){}render(){return this.props.children}}function d({children:e,isPresent:r,anchorX:n,anchorY:a,root:s,pop:o}){let d=(0,l.useId)(),p=(0,l.useRef)(null),f=(0,l.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:m}=(0,l.useContext)(u.MotionConfigContext),g=function(...e){return i.useCallback(function(...e){return t=>{let i=!1,r=e.map(e=>{let r=h(e,t);return i||"function"!=typeof r||(i=!0),r});if(i)return()=>{for(let t=0;t<r.length;t++){let i=r[t];"function"==typeof i?i():h(e[t],null)}}}}(...e),e)}(p,e.props?.ref??e?.ref);return(0,l.useInsertionEffect)(()=>{let{width:e,height:t,top:i,left:l,right:u,bottom:h}=f.current;if(r||!1===o||!p.current||!e||!t)return;let c="left"===n?`left: ${l}`:`right: ${u}`,g="bottom"===a?`bottom: ${h}`:`top: ${i}`;p.current.dataset.motionPopId=d;
3let v=document.createElement("style");m&&(v.nonce=m);let y=s??document.head;return y.appendChild(v),v.sheet&&v.sheet.insertRule(` 4 [data-motion-pop-id="${d}"] { 5 position: absolute !important; 6 width: ${e}px !important; 7 height: ${t}px !important; 8 ${c}px !important; 9 ${g}px !important; 10 } 11 `),()=>{p.current?.removeAttribute("data-motion-pop-id"),y.contains(v)&&y.removeChild(v)}},[r]),(0,t.jsx)(c,{isPresent:r,childRef:p,sizeRef:f,pop:o,children:!1===o?e:l.cloneElement(e,{ref:g})})}let p=({children:e,initial:r,isPresent:a,onExitComplete:o,custom:l,presenceAffectsLayout:u,mode:h,anchorX:c,anchorY:p,root:m})=>{let g=(0,n.useConstant)(f),v=(0,i.useId)(),y=!0,x=(0,i.useMemo)(()=>(y=!1,{id:v,initial:r,isPresent:a,custom:l,onExitComplete:e=>{for(let t of(g.set(e,!0),g.values()))if(!t)return;o&&o()},register:e=>(g.set(e,!1),()=>g.delete(e))}),[a,g,o]);return u&&y&&(x={...x}),(0,i.useMemo)(()=>{g.forEach((e,t)=>g.set(t,!1))},[a]),i.useEffect(()=>{a||g.size||!o||o()},[a]),e=(0,t.jsx)(d,{pop:"popLayout"===h,isPresent:a,anchorX:c,anchorY:p,root:m,children:e}),(0,t.jsx)(s.PresenceContext.Provider,{value:x,children:e})};function f(){return new Map}var m=e.i(19380);let g=e=>e.key||"";function v(e){let t=[];return i.Children.forEach(e,e=>{(0,i.isValidElement)(e)&&t.push(e)}),t}let y=({children:e,custom:s,initial:o=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:h="sync",propagate:c=!1,anchorX:d="left",anchorY:f="top",root:y})=>{let[x,w]=(0,m.usePresence)(c),E=(0,i.useMemo)(()=>v(e),[e]),b=c&&!x?[]:E.map(g),_=(0,i.useRef)(!0),R=(0,i.useRef)(E),P=(0,n.useConstant)(()=>new Map),T=(0,i.useRef)(new Set),[C,S]=(0,i.useState)(E),[j,A]=(0,i.useState)(E);(0,a.useIsomorphicLayoutEffect)(()=>{_.current=!1,R.current=E;for(let e=0;e<j.length;e++){let t=g(j[e]);b.includes(t)?(P.delete(t),T.current.delete(t)):!0!==P.get(t)&&P.set(t,!1)}},[j,b.length,b.join("-")]);let M=[];if(E!==C){let e=[...E];for(let t=0;t<j.length;t++){let i=j[t],r=g(i);b.includes(r)||(e.splice(t,0,i),M.push(i))}return"wait"===h&&M.length&&(e=M),A(v(e)),S(E),null}let{forceRender:U}=(0,i.useContext)(r.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:j.map(e=>{let i=g(e),r=(!c||!!x)&&(E===j||b.includes(i));return(0,t.jsx)(p,{isPresent:r,initial:(!_.current||!!o)&&void 0,custom:s,presenceAffectsLayout:u,mode:h,root:y,onExitComplete:r?void 0:()=>{if(T.current.has(i)||!P.has(i))return;T.current.add(i),P.set(i,!0);let e=!0;P.forEach(t=>{t||(e=!1)}),e&&(U?.(),A(R.current),c&&w?.(),l&&l())},anchorX:d,anchorY:f,children:e},i)})})};e.s(["AnimatePresence",()=>y],32048)},52512,10780,83894,e=>{"use strict";var t=e.i(98631);let i=(0,t.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>i],52512);var r=e.i(55890),n=e.i(16485),a=e.i(86166);let s=(0,n.createContext)(null);var o=e.i(67682),l=e.i(703);let u=e=>!e.isLayoutDirty&&e.willUpdate(!1),h=({children:e,id:t,inherit:i=!0})=>{let h=(0,n.useContext)(a.LayoutGroupContext),c=(0,n.useContext)(s),[d,p]=function(){let e,t=(e=(0,n.useRef)(!1),(0,l.useIsomorphicLayoutEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),e),[i,r]=(0,n.useState)(0),a=(0,n.useCallback)(()=>{t.current&&r(i+1)},[i]);return[(0,n.useCallback)(()=>o.frame.postRender(a),[a]),i]}(),f=(0,n.useRef)(null),m=h.id||c;if(null===f.current){let e,r,n,a;(!0==(!0===(a=i))||"id"===a)&&m&&(t=t?m+"-"+t:m),f.current={id:t,group:!0===i&&h.group||(e=new Set,r=new WeakMap,{add:t=>{e.add(t),r.set(t,t.addEventListener("willUpdate",n))},remove:t=>{e.delete(t);let i=r.get(t);i&&(i(),r.delete(t)),n()},dirty:n=()=>e.forEach(u)})}}let g=(0,n.useMemo)(()=>({...f.current,forceRender:d}),[p]);return(0,r.jsx)(a.LayoutGroupContext.Provider,{value:g,children:e})};e.s(["LayoutGroup",()=>h],10780);var c=e.i(32048),d=e.i(41077);let p=(0,t.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),f=(0,t.default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),m=(0,t.default)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),g="[email protected]",v=[.22,1,.36,1];
11function y(){let[e,t]=(0,n.useState)(!1),[i,a]=(0,n.useState)(!1),s=async()=>{try{await navigator.clipboard.writeText(g),a(!0),window.setTimeout(()=>a(!1),1600)}catch{let e=document.createElement("textarea");e.value=g,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();try{document.execCommand("copy"),a(!0),window.setTimeout(()=>a(!1),1600)}catch{}document.body.removeChild(e)}};return(0,r.jsx)(d.motion.button,{type:"button",layout:!0,onClick:s,onHoverStart:()=>t(!0),onHoverEnd:()=>t(!1),onFocus:()=>t(!0),onBlur:()=>t(!1),"aria-label":i?"Email copied":e?`Copy ${g}`:"Show email",transition:{layout:{duration:.55,ease:v}},style:{borderRadius:12},className:"focus-ring relative inline-flex h-11 cursor-pointer items-center justify-center bg-foreground px-5 text-sm font-medium text-background",children:(0,r.jsx)(d.motion.span,{layout:"position",className:"relative inline-flex items-center",children:(0,r.jsx)(c.AnimatePresence,{initial:!1,mode:"popLayout",children:e?(0,r.jsxs)(d.motion.span,{layout:"position",initial:{opacity:0,filter:"blur(8px)"},animate:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(8px)"},transition:{duration:.35,ease:v},className:"inline-flex items-center gap-2 whitespace-nowrap",children:[(0,r.jsx)("span",{className:"relative inline-flex h-4 w-4 shrink-0 items-center justify-center",children:(0,r.jsx)(c.AnimatePresence,{initial:!1,mode:"wait",children:i?(0,r.jsx)(d.motion.span,{initial:{scale:.5,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.5,opacity:0},transition:{duration:.2,ease:v},className:"inline-flex",children:(0,r.jsx)(p,{className:"h-4 w-4","aria-hidden":"true"})},"check"):(0,r.jsx)(d.motion.span,{initial:{scale:.5,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.5,opacity:0},transition:{duration:.2,ease:v},className:"inline-flex",children:(0,r.jsx)(f,{className:"h-4 w-4","aria-hidden":"true"})},"copy")})}),(0,r.jsx)("span",{className:"tabular-nums",children:g})]},"email"):(0,r.jsxs)(d.motion.span,{layout:"position",initial:{opacity:0,filter:"blur(8px)"},animate:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(8px)"},transition:{duration:.35,ease:v},className:"inline-flex items-center gap-2 whitespace-nowrap",children:[(0,r.jsx)(m,{className:"h-4 w-4 shrink-0","aria-hidden":"true"}),(0,r.jsx)("span",{children:"Contact"})]},"contact")})})})}e.s(["ContactButton",()=>y],83894)},6038,e=>{"use strict";var t=e.i(55890),i=e.i(52512),r=e.i(10780),n=e.i(41077),a=e.i(79627),s=e.i(83894);let o=[.22,1,.36,1];function l(){return(0,t.jsx)(r.LayoutGroup,{children:(0,t.jsxs)(n.motion.div,{layout:!0,transition:{layout:{duration:.55,ease:o}},className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,t.jsx)(s.ContactButton,{}),(0,t.jsx)(n.motion.div,{layout:!0,transition:{layout:{duration:.55,ease:o}},children:(0,t.jsxs)(a.default,{href:"/projects",className:"border border-foreground
11/5 focus-ring group inline-flex cursor-pointer items-center gap-2 rounded-xl bg-background px-5 py-2.5 text-sm font-medium text-foreground shadow-md/2 transition-colors",children:["See projects",(0,t.jsx)(i.ArrowRight,{className:"h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5","aria-hidden":"true"})]})})]})})}e.s(["ContactCardCtas",()=>l])},35498,e=>{"use strict";var t=e.i(55890),i=e.i(41077);let r=[.22,1,.36,1];function n({children:e,delay:n=0,duration:a=.8,className:s}){return(0,t.jsx)(i.motion.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:a,delay:n,ease:r},className:s,children:e})}function a({children:e,delay:n=0,duration:a=1,className:s}){return(0,t.jsx)(i.motion.div,{initial:{opacity:0,scale:.7,filter:"blur(20px)"},animate:{opacity:1,scale:1,filter:"blur(0px)"},transition:{duration:a,delay:n,ease:r},style:{transformOrigin:"center"},className:s,children:e})}e.s(["FadeIn",()=>n,"ScaleUnblur",()=>a])},20325,e=>{"use strict";var t=e.i(55890),i=e.i(52512),r=e.i(10780),n=e.i(41077),a=e.i(79627),s=e.i(83894);let o=[.22,1,.36,1];function l(){return(0,t.jsx)(r.LayoutGroup,{children:(0,t.jsxs)(n.motion.div,{layout:!0,transition:{layout:{duration:.55,ease:o}},className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,t.jsx)(s.ContactButton,{}),(0,t.jsx)(n.motion.div,{layout:!0,transition:{layout:{duration:.55,ease:o}},children:(0,t.jsxs)(a.default,{href:"/projects",className:"border border-foreground
11/5 focus-ring group inline-flex cursor-pointer items-center gap-2 rounded-xl bg-background px-5 py-2.5 text-sm font-medium text-foreground shadow-2xl transition-colors hover:bg-foreground/4",children:["View My Work",(0,t.jsx)(i.ArrowRight,{className:"h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5","aria-hidden":"true"})]})})]})})}e.s(["HeroCtas",()=>l])},14281,e=>{"use strict";var t=e.i(55890),i=e.i(16485),r=e.i(52095),n=e.i(85390),a=e.i(83266),s=e.i(37270),o=e.i(59409);let l=new Uint8Array(4),u=1;class h{constructor(e,{image:t,target:i=e.TEXTURE_2D,type:r=e.UNSIGNED_BYTE,format:n=e.RGBA,internalFormat:a=n,wrapS:s=e.CLAMP_TO_EDGE,wrapT:o=e.CLAMP_TO_EDGE,wrapR:l=e.CLAMP_TO_EDGE,generateMipmaps:h=i===(e.TEXTURE_2D||e.TEXTURE_CUBE_MAP),minFilter:c=h?e.NEAREST_MIPMAP_LINEAR:e.LINEAR,magFilter:d=e.LINEAR,premultiplyAlpha:p=!1,unpackAlignment:f=4,flipY:m=i==(e.TEXTURE_2D||e.TEXTURE_3D),anisotropy:g=0,level:v=0,width:y,height:x=y,length:w=1}={}){this.gl=e,this.id=u++,this.image=t,this.target=i,this.type=r,this.format=n,this.internalFormat=a,this.minFilter=c,this.magFilter=d,this.wrapS=s,this.wrapT=o,this.wrapR=l,this.generateMipmaps=h,this.premultiplyAlpha=p,this.unpackAlignment=f,this.flipY=m,this.anisotropy=Math.min(g,this.gl.renderer.parameters.maxAnisotropy),this.level=v,this.width=y,this.height=x,this.length=w,this.texture=this.gl.createTexture(),this.store={image:null},this.glState=this.gl.renderer.state,this.state={},this.state.minFilter=this.gl.NEAREST_MIPMAP_LINEAR,this.state.magFilter=this.gl.LINEAR,this.state.wrapS=this.gl.REPEAT,this.state.wrapT=this.gl.REPEAT,this.state.anisotropy=0}bind(){this.glState.textureUnits[this.glState.activeTextureUnit]!==this.id&&(this.gl.bindTexture(this.target,this.texture),this.glState.textureUnits[this.glState.activeTextureUnit]=this.id)}update(e=0){let t=!(this.image===this.store.image&&!this.needsUpdate);if((t||this.glState.textureUnits[e]!==this.id)&&(this.gl.renderer.activeTexture(e),this.bind()),t){if(this.needsUpdate=!1,this.flipY!==this.glState.flipY&&(this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,this.flipY),this.glState.flipY=this.flipY),this.premultiplyAlpha!==this.glState.premultiplyAlpha&&(this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this.premultiplyAlpha),this.glState.premultiplyAlpha=this.premultiplyAlpha),this.unpackAlignment!==this.glState.unpackAlignment&&(this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT,this.unpackAlignment),this.glState.unpackAlignment=this.unpackAlignment),this.minFilter!==this.state.minFilter&&(this.gl.texParameteri(this.target,this.gl.TEXTURE_MIN_FILTER,this.minFilter),this.state.minFilter=this.minFilter),this.magFilter!==this.state.magFilter&&(this.gl.texParameteri(this.target,this.gl.TEXTURE_MAG_FILTER,this.magFilter),this.state.magFilter=this.magFilter),this.wrapS!==this.state.wrapS&&(this.gl.texParameteri(this.target,this.gl.TEXTURE_WRAP_S,this.wrapS),this.state.wrapS=this.wrapS),this.wrapT!==this.state.wrapT&&(this.gl.texParameteri(this.target,this.gl.TEXTURE_WRAP_T,this.wrapT),this.state.wrapT=this.wrapT),this.wrapR!==this.state.wrapR&&(this.gl.texParameteri(this.target,this.gl.TEXTURE_WRAP_R,this.wrapR),this.state.wrapR=this.wrapR),this.anisotropy&&this.anisotropy!==this.state.anisotropy&&(this.gl.texParameterf(this.target,this.gl.renderer.getExtension("EXT_texture_filter_anisotropic").TEXTURE_MAX_ANISOTROPY_EXT,this.anisotropy),this.state.anisotropy=this.anisotropy),this.image){if(this.image.width&&(this.width=this.image.width,this.height=this.image.height),this.target===this.gl.TEXTURE_CUBE_MAP)for(let e=0;e<6;e++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+e,this.level,this.internalFormat,this.format,this.type,this.image[e]);else if(ArrayBuffer.isView(this.image))this.target===this.gl.TEXTURE_2D?this.gl.texImage2D(this.target,this.level,this.internalFormat,this.width,this.height,0,this.format,this.type,this.image):(this.target===this.gl.TEXTURE_2D_ARRAY||this.target===this.gl.TEXTURE_3D)&&this.gl.texImage3D(this.target,this.level,this.internalFormat,this.width,this.height,this.length,0,this.format,this.type,this.image);else if(this.image.isCompressedTexture)for(let e=0;e<this.image.length;e++)this.gl.compressedTexImage2D(this.target,e,this.internalFormat,this.image[e].width,this.image[e].height,0,this.image[e].data);else this.target===this.gl.TEXTURE_2D?this.gl.texImage2D(this.target,this.level,this.internalFormat,this.format,this.type,this.image):this.gl.texImage3D(this.target,this.level,this.internalFormat,this.width,this.height,this.length,0,this.format,this.type,this.image);if(this.generateMipmaps){var i,r;this.gl.renderer.isWebgl2||((i=this.image.width)&i-1)==0&&((r=this.image.height)&r-1)==0?this.gl.generateMipmap(this.target):(this.generateMipmaps=!1,this.wrapS=this.wrapT=this.gl.CLAMP_TO_EDGE,this.minFilter=this.gl.LINEAR)}this.onUpdate&&this.onUpdate()}else if(this.target===this.gl.TEXTURE_CUBE_MAP)for(let e=0;e<6;e++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,this.gl.RGBA,1,1,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,l);else this.width?this.target===this.gl.TEXTURE_2D?this.gl.texImage2D(this.target,this.level,this.internalFormat,this.width,this.height,0,this.format,this.type,null):this.gl.texImage3D(this.target,this.level,this.internalFormat,this.width,this.height,this.length,0,this.format,this.type,null):this.gl.texImage2D(this.target,0,this.gl.RGBA,1,1,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,l);this.store.image=this.image}}}let c=` 12attribute vec2 position; 13varying vec2 vUv; 14void main() { 15 vUv = position * 0.5 + 0.5; 16 gl_Position = vec4(position, 0.0, 1.0); 17} 18`,d=` 19precision highp float; 20 21uniform sampler2D uTexA; 22uniform sampler2D uTexB; 23uniform float uProgress; 24uniform float uTime; 25uniform vec2 uResolution; 26uniform vec2 uImageSize; 27uniform vec2 uOrigin; 28uniform vec2 uDirection; 29 30varying vec2 vUv; 31 32vec2 coverUv(vec2 uv) { 33 vec2 ratio = vec2( 34 min((uResolution.x / uResolution.y) / (uImageSize.x / uImageSize.y), 1.0), 35 min((uResolution.y / uResolution.x) / (uImageSize.y / uImageSize.x), 1.0) 36 ); 37 return vec2( 38 uv.x * ratio.x + (1.0 - ratio.x) * 0.5, 39 uv.y * ratio.y + (1.0 - ratio.y) * 0.5 40 ); 41} 42 43float hash(vec2 p) { 44 return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); 45} 46 47float noise(vec2 p) { 48 vec2 i = floor(p); 49 vec2 f = fract(p); 50 f = f * f * (3.0 - 2.0 * f); 51 float a = hash(i); 52 float b = hash(i + vec2(1.0, 0.0)); 53 float c = hash(i + vec2(0.0, 1.0)); 54 float d = hash(i + vec2(1.0, 1.0)); 55 return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); 56} 57 58float fbm(vec2 p) { 59 float v = 0.0; 60 float a = 0.5; 61 for (int i = 0; i < 5; i++) { 62 v += a * noise(p); 63 p *= 2.0; 64 a *= 0.5; 65 } 66 return v; 67} 68 69void main() { 70 vec2 uv = vUv; 71 vec2 baseUv = coverUv(uv); 72 73 float p = uProgress; 74 float bell = 4.0 * p * (1.0 - p); 75 76 vec2 dir = normalize(uDirection + vec2(0.0001)); 77 float along = dot(uv - uOrigin, dir); 78 float distGradient = (along + 1.4) / 2.8; 79 80 float warpLow = fbm(uv * 1.8 + uTime * 0.05) - 0.5;
81 float warpHi = fbm(uv * 5.5 - uTime * 0.04 + 13.0) - 0.5; 82 float warp = warpLow * 0.55 + warpHi * 0.18; 83 84 float field = distGradient + warp; 85 86 float remapped = mix(-0.25, 1.25, p); 87 float edgeWidth = 0.07; 88 float mask = smoothstep(remapped - edgeWidth, remapped + edgeWidth, field); 89 mask = 1.0 - mask; 90 91 vec2 perp = vec2(-dir.y, dir.x); 92 float ripplePhase = (field - remapped) * 14.0; 93 float ripple = sin(ripplePhase) * 0.5 + 0.5; 94 float edgeBand = 1.0 - smoothstep(0.0, edgeWidth * 1.6, abs(field - remapped)); 95 float pushAmount = ripple * edgeBand * 0.025 * bell; 96 vec2 pushUv = uv + perp * pushAmount; 97 vec2 baseUvA = coverUv(pushUv); 98 vec2 baseUvB = coverUv(pushUv); 99 100 vec4 texA = texture2D(uTexA, baseUvA); 101 vec4 texB = texture2D(uTexB, baseUvB); 102 103 vec4 color = mix(texA, texB, mask); 104 105 float darken = edgeBand * 0.35 * bell; 106 color.rgb *= 1.0 - darken; 107 108 gl_FragColor = color; 109} 110`;function p({srcA:e,srcB:l,alt:u,className:p}){let f=(0,i.useRef)(null),[m,g]=(0,i.useState)(!1),v=(0,i.useRef)(!1),y=(0,i.useRef)(0),x=(0,i.useRef)([.5,.5]),w=(0,i.useRef)([1,0]),E=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let t=f.current;if(!t)return;let i=new r.Renderer({alpha:!0,premultipliedAlpha:!1,dpr:Math.min(window.devicePixelRatio||1,2)}),u=i.gl,p=u.canvas;p.style.width="100%",p.style.height="100%",p.style.display="block",t.appendChild(p);let m=new o.Transform,b=new h(u,{generateMipmaps:!1}),_=new h(u,{generateMipmaps:!1}),R=[1,1],P=(e,t)=>new Promise((i,r)=>{let n=new Image;n.crossOrigin="anonymous",n.onload=()=>{t.image=n,R[0]=n.naturalWidth,R[1]=n.naturalHeight,i()},n.onerror=r,n.src=e}),T=new s.Triangle(u),C=new n.Program(u,{vertex:c,fragment:d,uniforms:{uTexA:{value:b},uTexB:{value:_},uProgress:{value:0},uTime:{value:0},uResolution:{value:[1,1]},uImageSize:{value:R},uOrigin:{value:[.5,.5]},uDirection:{value:[1,0]}},transparent:!0});new a.Mesh(u,{geometry:T,program:C}).setParent(m);let S=()=>{let e=t.clientWidth,r=t.clientHeight;i.setSize(e,r),p.style.width="100%",p.style.height="100%",C.uniforms.uResolution.value=[e*i.dpr,r*i.dpr]},j=new ResizeObserver(S);j.observe(t),S();let A=0,M=performance.now(),U=0,I=!0,O=()=>{if(!I)return;let e=performance.now(),t=Math.min((e-M)/1e3,.05);M=e,U+=t;let r=+!!v.current,n=1-Math.exp(-(v.current?2.4:2)*t);y.current+=(r-y.current)*n,C.uniforms.uTime.value=U,C.uniforms.uProgress.value=y.current,C.uniforms.uOrigin.value=x.current,C.uniforms.uDirection.value=w.current,C.uniforms.uImageSize.value=R,i.render({scene:m}),A=requestAnimationFrame(O)};Promise.all([P(e,b),P(l,_)]).then(()=>{g(!0),M=performance.now(),O()}).catch(()=>{g(!1)});let D=(e,t)=>{let i=1-e,r=Math.min(e,i,t,1-t);return r===e?[1,0]:r===i?[-1,0]:r===t?[0,1]:[0,-1]},L=e=>{let i=t.getBoundingClientRect(),r=(e.clientX-i.left)/i.width,n=1-(e.clientY-i.top)/i.height;x.current=[r,n],w.current=D(r,n),E.current={x:r,y:n,t:performance.now()},v.current=!0},N=e=>{let i=t.getBoundingClientRect(),r=(e.clientX-i.left)/i.width,n=1-(e.clientY-i.top)/i.height;x.current=[r,n],w.current=D(r,n).map(e=>-e),v.current=!1},k=e=>{let i=t.getBoundingClientRect(),r=(e.clientX-i.left)/i.width,n=1-(e.clientY-i.top)/i.height,a=E.current;if(a&&performance.now()-a.t<80&&y.current<.15){let e=r-a.x,t=n-a.y,i=Math.hypot(e,t);i>.01&&(w.current=[e/i,t/i])}E.current={x:r,y:n,t:performance.now()}};return t.addEventListener("pointerenter",L),t.addEventListener("pointerleave",N),t.addEventListener("pointermove",k),()=>{I=!1,cancelAnimationFrame(A),j.disconnect(),t.removeEventListener("pointerenter",L),t.removeEventListener("pointerleave",N),t.removeEventListener("pointermove",k);let e=u.getExtension("WEBGL_lose_context");e&&e.loseContext(),p.parentNode===t&&t.removeChild(p)}},[e,l]),(0,t.jsx)("div",{ref:f,role:"img","aria-label":u,className:p,style:{position:"relative",width:"100%",height:"100%",filter:"grayscale(100%)"},children:m?null:(0,t.jsx)("img",{src:e,alt:u,draggable:!1,className:"absolute inset-0 h-full w-full select-none object-cover"})})}e.s(["PortraitMorph",()=>p],14281)}]);
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.