1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3774],{2363:(e,t,n)=>{n.d(t,{K:()=>o,L:()=>l});var a=n(7548);function l(){for(let l of[{antialias:!0,alpha:!0,powerPreference:"high-performance"},{antialias:!0,alpha:!0},{alpha:!0}]){var e,t,n;let o=document.createElement("canvas"),r=null;try{r=null!=(e=o.getContext("webgl2",l))?e:o.getContext("webgl",l)}catch(e){}if(r)return new a.JeP({canvas:o,context:r,antialias:null!=(t=l.antialias)&&t,alpha:!0,powerPreference:null!=(n=l.powerPreference)?n:"default"})}throw Error("WebGL unavailable: could not create a context")}function o(e){e.dispose(),e.forceContextLoss()}},3774:(e,t,n)=>{n.r(t),n.d(t,{default:()=>h});var a=n(5155),l=n(2115),o=n(5339),r=n(7548),i=n(5833),s=n(3350),c=n(4177),u=n(1848),d=n(5975),f=n(2363);let y={ruby:{color:new o.Q1f(.55,.05,.04),attenuation:new o.Q1f(.9,.11,.08),ior:1.77},citrine:{color:new o.Q1f(.76,.48,.04),attenuation:new o.Q1f(.97,.68,.07),ior:1.82,rubber:.42},sapphire:{color:new o.Q1f(.06,.15,.56),attenuation:new o.Q1f(.08,.22,.94),ior:1.77},peridot:{color:new o.Q1f(.3,.45,.07),attenuation:new o.Q1f(.44,.76,.14),ior:1.82}},p={x:-.0056,y:-.0226,z:.0064,scaleW:1.15,scaleH:1,rotX:0,rotY:0,rotZ:90},x=[{x:.0227,y:.03573},{x:.0174,y:.03512},{x:.0121,y:.03451},{x:.0068,y:.0339},{x:.0015,y:.0333},{x:-.0038,y:.03269},{x:-.0091,y:.03208},{x:-.0144,y:.03147},{x:-.01971,y:.03086},{x:-.02501,y:.03025},{x:-.0302,y:.02925},{x:-.03385,y:.02537},{x:-.03694,y:.02104},{x:-.03929,y:.01626},{x:-.04103,y:.01121},{x:-.04224,y:.00602},{x:-.04303,y:74e-5},{x:-.04335,y:-.00458},{x:-.04311,y:-.00991},{x:-.04122,y:-.01469},{x:-.03745,y:-.01847},{x:-.03367,y:-.02224},{x:-.0299,y:-.02601},{x:-.02613,y:-.02978},{x:-.02234,y:-.03355},{x:-.01769,y:-.03565},{x:-.01236,y:-.03557},{x:-.00708,y:-.03482},{x:-.0019,y:-.03358},{x:.00326,y:-.03218},{x:.00841,y:-.03079},{x:.01356,y:-.0294},{x:.01871,y:-.02801},{x:.02386,y:-.02661},{x:.02901,y:-.02522},{x:.03266,y:-.02179},{x:.03472,y:-.01687},{x:.03678,y:-.01195},{x:.03884,y:-.00702},{x:.0409,y:-.0021},{x:.04257,y:.00296},{x:.04332,y:.00823},{x:.04308,y:.01356},{x:.04181,y:.01873},{x:.03949,y:.02352},{x:.03627,y:.02776},{x:.03228,y:.03129},{x:.02771,y:.03403}];function h(e){let{gemColor:t="ruby",className:n=""}=e,h=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(!h.current)return;let e=h.current,n=e.clientWidth||300,a=e.clientHeight||300,l=new o.Z58;l.background=null;let m=new o.ubm(40,n/a,.001,100);m.position.set(0,.25,-.28);let w=(0,f.L)();w.setSize(n,a),w.setPixelRatio(Math.min(devicePixelRatio,2)),w.outputColorSpace=o.er$,w.toneMapping=o.FV,w.toneMappingExposure=1.2,w.setClearColor(0xffffff,0),w.domElement.style.opacity="0",w.domElement.style.transition="opacity 0.6s ease",e.appendChild(w.domElement);let g=new i.N(m,w.domElement);g.enableDamping=!0,g.dampingFactor=.04,g.autoRotate=!0,g.autoRotateSpeed=2.5,g.target.set(0,.24,0),g.enableZoom=!1,g.enablePan=!1,g.minPolarAngle=.25*Math.PI,g.maxPolarAngle=.75*Math.PI,g.update(),w.domElement.style.touchAction="pan-y";let b=new r.BdL(w);
1b.compileEquirectangularShader(),new u.Y().setPath("/assets/hdri/").load("studio_small_08_1k.hdr",e=>{l.environment=b.fromEquirectangular(e).texture,e.dispose()}),l.environmentIntensity=.6;let M=new o.$p8(0xffffff,.5);l.add(M);let P=new o.ZyN(0xfff5e8,2.5);P.position.set(3,5,4),l.add(P);let v=new o.ZyN(0xe8eeff,1);v.position.set(-4,2,-2),l.add(v);let E=new o.ZyN(0xffffff,1.5);E.position.set(0,1,-5),l.add(E);let S=document.createElement("canvas");S.width=d.SP,S.height=d.Lq;let C=new o.GOR(S);C.minFilter=o.k6q,C.magFilter=o.k6q,C.generateMipmaps=!1,C.colorSpace=o.er$;let I=new o.bdM(1,1),B=new o.V9B({map:C,color:0xffffff,toneMapped:!1,side:o.$EB}),R=new o.eaF(I,B);R.position.set(p.x,p.y,p.z),R.scale.set(-(.044*p.scaleW*.73),.041*p.scaleH*.73,1),R.rotation.set(p.rotX*Math.PI/180,p.rotY*Math.PI/180,p.rotZ*Math.PI/180),R.renderOrder=2;let q=new o.ypk;q.moveTo(x[0].x,x[0].y);for(let e=1;e<x.length;e++)q.lineTo(x[e].x,x[e].y);let k=new o.eaF(new o.MSw(q),new o.V9B({color:0,side:o.$EB}));k.position.set(p.x,p.y,p.z-.001),k.rotation.set(p.rotX*Math.PI/180,p.rotY*Math.PI/180,p.rotZ*Math.PI/180),k.renderOrder=1;let A=new o.YJl;A.rotation.y=Math.PI,l.add(A),A.add(R),A.add(k);let F=null,L=0,Q=0;(0,d.qT)().then(e=>{F=e});let N=new s.B,z=new c.Z;z.setDecoderPath("/draco/"),N.setDRACOLoader(z);let Z=y[t];N.load("/assets/models/puff-jeff.opt.glb",e=>{let t=e.scene;t.traverse(e=>{var t,n;if(!e.isMesh)return;let a=function(e){let t=e.toUpperCase();return t.includes("GEM")?"gem":t.includes("LATCH")||t.includes("BUTTON")?"rubber":t.includes("USB")?"usb":"steel"}(e.name||(null==(t=e.parent)?void 0:t.name)||"");"gem"===a?(e.renderOrder=3,e.material=new o.uSd({color:Z.color.clone(),metalness:0,roughness:0,transmission:.97,thickness:.95,ior:1.34,envMapIntensity:3,clearcoat:.5,clearcoatRoughness:.005,specularIntensity:1,specularColor:new o.Q1f(1,1,1),side:o.hB5,attenuationColor:Z.attenuation.clone(),attenuationDistance:.3,transparent:!0})):"rubber"===a?e.material=new o.uSd({color:Z.attenuation.clone().multiplyScalar(null!=(n=Z.rubber)?n:.2),metalness:0,roughness:.75,envMapIntensity:.8,clearcoat:.08,clearcoatRoughness:.5,specularIntensity:.4,side:o.hB5}):"usb"===a?e.material=new o.uSd({color:new o.Q1f(.55,.55,.57),metalness:.95,roughness:.35,envMapIntensity:2,side:o.hB5}):e.material=new o.uSd({color:new o.Q1f(.82,.8,.78),metalness:1,roughness:.3,envMapIntensity:8,clearcoat:0,clearcoatRoughness:.015,reflectivity:1,side:o.hB5})});let n=new o.NRn().setFromObject(t).getSize(new o.Pq0),a=.15/Math.max(n.x,n.y,n.z);t.scale.setScalar(a);let l=new o.NRn().setFromObject(t).getCenter(new o.Pq0);t.position.sub(l),A.add(t),A.position.set(0,.24,0),w.domElement.style.opacity="1"});let O=!1,T=0,_=e=>{O||(T=requestAnimationFrame(_),F&&e-Q>=d.G9-1&&(Q=e,(0,d.BS)(S,F,L),C.needsUpdate=!0,L=(L+1)%F.frameCount),g.update(),w.render(l,m))};requestAnimationFrame(_);let j=()=>{let t=e.clientWidth,n=e.clientHeight;m.aspect=t/n,m.updateProjectionMatrix(),w.setSize(t,n)};return window.addEventListener("resize",j),()=>{O=!0,cancelAnimationFrame(T),window.removeEventListener("resize",j),g.dispose(),(0,f.K)(w),e.contains(w.domElement)&&e.removeChild(w.domElement)}},[t]),(0,a.jsx)("div",{ref:h,className:"aspect-[4/3] ".concat(n||"w-full")})}},5975:(e,t,n)=>{n.d(t,{BS:()=>i,G9:()=>a,Lq:()=>r,SP:()=>o,qT:()=>l});let a=33.333333333333336;async function l(){try{let e=await fetch("/assets/base-anim-loop.bin");if(!e.ok)return null;let t=new Uint8Array(await e.arrayBuffer()),n=Math.floor(t.length/384);return n>0?{frameCount:n,data:t}:null}catch(e){return null}}let o=512,r=384;function i(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#ffffff",l=e.getContext("2d");(e.width!==o||e.height!==r)&&(e.width=o,e.height=r),l.fillStyle="#000000",l.fillRect(0,0,o,r);let i=n%t.frameCount*384,s=[],c=[];for(let e=0;e<48;e++){let n=i+8*e;for(let a=0;a<8;a++){let l=t.data[n+a];if(0!==l)for(let t=0;t<8;t++)l&128>>t&&(s.push(8*a+t),c.push(e))}}l.fillStyle=a,l.globalAlpha=.32;for(let e=0;e<s.length;e++)l.fillRect(8*s[e]-2,8*c[e]-2,12,12);l.globalAlpha=1,l.fillStyle=a;for(let e=0;e<s.length;e++)l.fillRect(8*s[e],8*c[e],8,8)}}}]);
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.