{"version":3,"file":"SignalField.DszZXWmn.mjs","names":["mask","Base","MotionSVG","SVG","svg","getProps","Icon","React.forwardRef","React.forwardRef","useRef","c","__esmMin","init_ssg_sandbox_shims","window","de","c","J","init_jsx_runtime","init_npm_react_18_3_1","ce","motion","addPropertyControls","init_framer_B6PCHH0A","useSVGTemplate","cx","ControlType","useIsStaticRenderer","withCSS","mask$1","Base$1","MotionSVG$1","SVG$1","svg$1","getProps$1","Icon$1","init_sfgiQXU3_","props","rest","animated","width1","color","restProps","href","className","P_DcoRcrY","JEeZYcamG","style","mask","Base","MotionSVG","SVG","svg","getProps","Icon","init_PZz_Pa1pM","caretPoint","r","el","cs","padL","padT","lineH","measureCtx","before","lines","width","inner","isArea","wraps","x","y","rgb","s","input","VAR","v","m","h","k","p","name","fallback","SignalField","DEFAULTS","isStatic","rootRef","canvasRef","live","root","canvas","gl","reduced","sh","type","src","prog","VS","FS","ext","ready","U","buf","w","dpr","raf","visible","last","time","idleFrame","mouse","field","caret","rips","ripIdx","i","resize","frame","dt","now","n","P","waving","glide","busy","start","local","e","onMove","onLeave","addRipple","strength","onDown","textField","a","b","onFocusIn","onFocusOut","onKey","px","py","ro","io","es","c$1","init_SignalField"],"sources":["https:/framerusercontent.com/modules/60ruPaq91QOU6ZSQnQjt/mAyygrMTPdW8DMCisLzg/sfgiQXU3_.js","https:/framerusercontent.com/modules/LnEqQQ2EddyT1eyD82Qf/ibU6IuGxCzulfZgNbVp9/PZz_Pa1pM.js","https:/framerusercontent.com/modules/lz5jT76alyK7WU2d7rjm/jB4IFnehKftQYXgnxkIx/SignalField.js"],"sourcesContent":["// Generated by Framer (85eaff3)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 10 C 0 4.477 4.477 0 10 0 C 15.523 0 20 4.477 20 10 C 20 15.523 15.523 20 10 20 C 4.477 20 0 15.523 0 10 Z\" fill=\"transparent\" height=\"20px\" id=\"DCz_eKU1_\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(2 2)\" width=\"20px\"/><path d=\"M 0 2 L 2 4 L 6 0\" fill=\"transparent\" height=\"4px\" id=\"UefoekZNv\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(9 10)\" width=\"6px\"/></svg>';const getProps=({color,height,id,width,width1,...props})=>{return{...props,JEeZYcamG:width1??props.JEeZYcamG??2,P_DcoRcrY:color??props.P_DcoRcrY??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,P_DcoRcrY,JEeZYcamG,...restProps}=getProps(props);const href=useSVGTemplate(\"2994208654\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-E6ihB\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m973uw\":P_DcoRcrY,\"--js9iwy\":JEeZYcamG,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-E6ihB { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"P_DcoRcrY\":\"color\",\"JEeZYcamG\":\"width1\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Circle Check\",\"color\":{\"type\":\"variable\",\"value\":\"1m973uw\"},\"set\":{\"localId\":\"vectorSet/ZsiCCGPvG\",\"id\":\"ZsiCCGPvG\",\"moduleId\":\"Y7SpbVH16cWqMhj75z1M\"}}\n */const Icon=withCSS(Component,css,\"framer-E6ihB\");Icon.displayName=\"Circle Check\";export default Icon;addPropertyControls(Icon,{P_DcoRcrY:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},JEeZYcamG:{defaultValue:2,displayStepper:true,hidden:false,max:16,min:1,title:\"Width\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"24\",\"framerIntrinsicWidth\":\"24\",\"framerVariables\":\"{\\\"P_DcoRcrY\\\":\\\"color\\\",\\\"JEeZYcamG\\\":\\\"width1\\\"}\",\"framerVector\":\"{\\\"name\\\":\\\"Circle Check\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"1m973uw\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/ZsiCCGPvG\\\",\\\"id\\\":\\\"ZsiCCGPvG\\\",\\\"moduleId\\\":\\\"Y7SpbVH16cWqMhj75z1M\\\"}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (85eaff3)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 0 L 0 4\" fill=\"transparent\" height=\"4px\" id=\"PimSI8EkH\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(8 2)\" width=\"1px\"/><path d=\"M 0 0 L 0 4\" fill=\"transparent\" height=\"4px\" id=\"aUP_qLROX\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(16 2)\" width=\"1px\"/><path d=\"M 2 18 C 0.895 18 0 17.105 0 16 L 0 2 C 0 0.895 0.895 0 2 0 L 16 0 C 17.105 0 18 0.895 18 2 L 18 16 C 18 17.105 17.105 18 16 18 Z\" fill=\"transparent\" height=\"18px\" id=\"et6dD8IXx\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(3 4)\" width=\"18px\"/><path d=\"M 0 0 L 18 0\" fill=\"transparent\" height=\"1px\" id=\"nVWw9AjMG\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--js9iwy, 2)\" stroke=\"var(--1m973uw, rgb(0,0,0))\" transform=\"translate(3 10)\" width=\"18px\"/></svg>';const getProps=({color,height,id,width,width1,...props})=>{return{...props,JEeZYcamG:width1??props.JEeZYcamG??2,P_DcoRcrY:color??props.P_DcoRcrY??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,P_DcoRcrY,JEeZYcamG,...restProps}=getProps(props);const href=useSVGTemplate(\"2066690328\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-vAXF2\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1m973uw\":P_DcoRcrY,\"--js9iwy\":JEeZYcamG,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-vAXF2 { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"P_DcoRcrY\":\"color\",\"JEeZYcamG\":\"width1\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Calendar\",\"color\":{\"type\":\"variable\",\"value\":\"1m973uw\"},\"set\":{\"localId\":\"vectorSet/ZsiCCGPvG\",\"id\":\"ZsiCCGPvG\",\"moduleId\":\"Y7SpbVH16cWqMhj75z1M\"}}\n */const Icon=withCSS(Component,css,\"framer-vAXF2\");Icon.displayName=\"Calendar\";export default Icon;addPropertyControls(Icon,{P_DcoRcrY:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},JEeZYcamG:{defaultValue:2,displayStepper:true,hidden:false,max:16,min:1,title:\"Width\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"P_DcoRcrY\\\":\\\"color\\\",\\\"JEeZYcamG\\\":\\\"width1\\\"}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Calendar\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"1m973uw\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/ZsiCCGPvG\\\",\\\"id\\\":\\\"ZsiCCGPvG\\\",\\\"moduleId\\\":\\\"Y7SpbVH16cWqMhj75z1M\\\"}}\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Signal Field: an interactive dot grid in WebGL2. Dots swell and take the accent colour near the\n// pointer, a slow wave runs through the field, and a click sends a ripple across it. With \"React to\n// Typing\" on, a text field on top of it gets a ring of lit dots while focused, and every keystroke\n// sends a small ripple out from the caret.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const DEFAULTS={dotColor:\"#3B4D46\",accent:\"#3CF0C2\",spacing:16,dotSize:1.1,radius:140,waves:true,ripple:true,fadeEdges:true,typing:false};let measureCtx=null;// where the caret of a text field sits, in page pixels\nfunction caretPoint(el){const r=el.getBoundingClientRect();const cs=getComputedStyle(el);const padL=parseFloat(cs.paddingLeft)||0,padT=parseFloat(cs.paddingTop)||0;const lineH=parseFloat(cs.lineHeight)||(parseFloat(cs.fontSize)||16)*1.3;if(!measureCtx)measureCtx=document.createElement(\"canvas\").getContext(\"2d\");let before=\"\";try{before=el.value.slice(0,el.selectionStart??el.value.length);}catch{before=el.value;}if(el.type===\"password\")before=\"•\".repeat(before.length);const lines=before.split(\"\\n\");let width=0;if(measureCtx){measureCtx.font=`${cs.fontWeight} ${cs.fontSize} ${cs.fontFamily}`;width=measureCtx.measureText(lines[lines.length-1]).width;}const inner=Math.max(1,r.width-padL*2);const isArea=el.tagName===\"TEXTAREA\";const wraps=isArea?Math.floor(width/inner):0;const x=r.left+padL+(isArea?width%inner:Math.min(width,inner))-(isArea?0:el.scrollLeft);const y=isArea?Math.min(r.bottom-padT,r.top+padT+(lines.length-1+wraps+.5)*lineH-el.scrollTop):r.top+r.height/2;return[Math.min(r.right-padL,x),y];}function rgb(input,fallback){let s=(input||\"\").trim();const VAR=/^var\\(\\s*--[^,]+,\\s*(.+)\\)$/;for(let v=VAR.exec(s);v;v=VAR.exec(s))s=v[1].trim();let m=/^#([0-9a-f]{3,8})$/i.exec(s);if(m){let h=m[1];if(h.length<6)h=h.split(\"\").map(c=>c+c).join(\"\");return[0,2,4].map(k=>parseInt(h.slice(k,k+2),16)/255);}m=/^rgba?\\(([^)]+)\\)$/i.exec(s);if(m){const p=m[1].split(/[ ,/]+/).filter(Boolean).map(parseFloat);return[p[0]/255,p[1]/255,p[2]/255];}// a token without a fallback: read its value from the page\nconst name=/^var\\(\\s*(--[^,)\\s]+)/.exec(s);if(name&&typeof document!==\"undefined\"&&document.body){const v=getComputedStyle(document.body).getPropertyValue(name[1]).trim();if(v&&!/^var\\(/.test(v))return rgb(v,fallback);}return fallback;}const VS=`#version 300 es\r\nin vec2 aPos;\r\nvoid main() { gl_Position = vec4(aPos, 0.0, 1.0); }`;const FS=`#version 300 es\r\nprecision highp float;\r\nuniform vec2 uRes;\r\nuniform float uDpr;\r\nuniform float uTime;\r\nuniform vec3 uMouse;\r\nuniform float uSpacing;\r\nuniform float uDot;\r\nuniform float uRadius;\r\nuniform float uWave;\r\nuniform float uFade;\r\nuniform vec3 uColA;\r\nuniform vec3 uColB;\r\nuniform vec4 uRip[4];\r\nuniform vec4 uField;\r\nuniform float uFieldOn;\r\nuniform vec3 uCaret;\r\nout vec4 o;\r\nvoid main() {\r\n  vec2 p = vec2(gl_FragCoord.x, uRes.y * uDpr - gl_FragCoord.y) / uDpr;\r\n  vec2 c = (floor(p / uSpacing) + 0.5) * uSpacing;\r\n  float d = length(p - c);\r\n  vec2 m = c - uMouse.xy;\r\n  float glow = uMouse.z * exp(-dot(m, m) / (uRadius * uRadius));\r\n  float wave = uWave * (0.5 + 0.5 * sin(c.x * 0.011 + c.y * 0.017 + uTime * 0.8));\r\n  float rip = 0.0;\r\n  for (int i = 0; i < 4; i++) {\r\n    float age = uTime - uRip[i].z;\r\n    if (age > 0.0 && age < 2.2) {\r\n      float rd = abs(length(c - uRip[i].xy) - age * 420.0);\r\n      rip += uRip[i].w * exp(-rd * rd / 1200.0) * (1.0 - age / 2.2);\r\n    }\r\n  }\r\n  // the focused text field: dots along its outline light up\r\n  vec2 q = abs(c - uField.xy - uField.zw * 0.5) - uField.zw * 0.5 + 10.0;\r\n  float sd = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - 10.0;\r\n  float ring = uFieldOn * exp(-sd * sd / 220.0) * 0.85;\r\n  vec2 cm = c - uCaret.xy;\r\n  float caret = uCaret.z * exp(-dot(cm, cm) / 900.0);\r\n  float k = clamp(glow + rip + ring + caret, 0.0, 1.0);\r\n  float size = uDot * (1.0 + 1.5 * k + 0.35 * wave);\r\n  float a = smoothstep(size + 0.8, size - 0.2, d);\r\n  vec2 e = min(p, uRes - p) / max(1.0, min(uRes.x, uRes.y) * 0.18);\r\n  float edge = mix(1.0, clamp(min(e.x, e.y), 0.0, 1.0), uFade);\r\n  float alpha = a * (0.32 + 0.22 * wave + 0.7 * k) * edge;\r\n  o = vec4(mix(uColA, uColB, k) * alpha, alpha);\r\n}`;/**\r\n * Signal Field\r\n *\r\n * @framerIntrinsicWidth 480\r\n * @framerIntrinsicHeight 320\r\n *\r\n * @framerSupportedLayoutWidth any-prefer-fixed\r\n * @framerSupportedLayoutHeight any-prefer-fixed\r\n */export default function SignalField(props){const p={...DEFAULTS,...props};const isStatic=useIsStaticRenderer();const rootRef=useRef(null);const canvasRef=useRef(null);const live=useRef(p);live.current=p;useEffect(()=>{if(isStatic)return;const root=rootRef.current,canvas=canvasRef.current;if(!root||!canvas)return;const gl=canvas.getContext(\"webgl2\",{alpha:true,premultipliedAlpha:true,antialias:false});if(!gl)return;const reduced=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const sh=(type,src)=>{const s=gl.createShader(type);gl.shaderSource(s,src);gl.compileShader(s);return s;};const prog=gl.createProgram();gl.attachShader(prog,sh(gl.VERTEX_SHADER,VS));gl.attachShader(prog,sh(gl.FRAGMENT_SHADER,FS));gl.bindAttribLocation(prog,0,\"aPos\");gl.linkProgram(prog);const ext=gl.getExtension(\"KHR_parallel_shader_compile\");let ready=false;const U={};const buf=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),gl.STATIC_DRAW);gl.enableVertexAttribArray(0);gl.vertexAttribPointer(0,2,gl.FLOAT,false,0,0);let w=1,h=1,dpr=1;let raf=0,visible=false,last=0,time=0,idleFrame=0;const mouse={x:-9999,y:-9999,on:0,target:0};const field={x:-9999,y:-9999,w:0,h:0,on:0,target:0,to:[0,0,0,0]};const caret={x:-9999,y:-9999,on:0};const rips=new Float32Array(16);let ripIdx=0;for(let i=0;i<4;i++)rips[i*4+2]=-99;const resize=()=>{const r=root.getBoundingClientRect();w=Math.max(1,r.width);h=Math.max(1,r.height);dpr=Math.min(window.devicePixelRatio||1,2);canvas.width=Math.round(w*dpr);canvas.height=Math.round(h*dpr);};const frame=now=>{raf=0;if(!visible)return;const dt=last?Math.min(.05,(now-last)/1e3):1/60;last=now;if(!ready){if(ext&&!gl.getProgramParameter(prog,ext.COMPLETION_STATUS_KHR)){raf=requestAnimationFrame(frame);return;}if(!gl.getProgramParameter(prog,gl.LINK_STATUS)){console.error(\"SignalField shader: \"+gl.getProgramInfoLog(prog));return;}for(const n of[\"uRes\",\"uDpr\",\"uTime\",\"uMouse\",\"uSpacing\",\"uDot\",\"uRadius\",\"uWave\",\"uFade\",\"uColA\",\"uColB\",\"uRip\",\"uField\",\"uFieldOn\",\"uCaret\"])U[n]=gl.getUniformLocation(prog,n);ready=true;}const P=live.current;const waving=P.waves&&!reduced;mouse.on+=(mouse.target-mouse.on)*Math.min(1,dt*7);field.on+=(field.target-field.on)*Math.min(1,dt*6);const glide=Math.min(1,dt*10);field.x+=(field.to[0]-field.x)*glide;field.y+=(field.to[1]-field.y)*glide;field.w+=(field.to[2]-field.w)*glide;field.h+=(field.to[3]-field.h)*glide;caret.on*=Math.exp(-dt*3.2);const busy=waving||mouse.on>.01||mouse.target>0||Math.abs(field.target-field.on)>.01||field.on>.01&&Math.abs(field.to[1]-field.y)>.5||caret.on>.01||time-Math.max(rips[2],rips[6],rips[10],rips[14])<2.3;// when nothing moves, draw a few frames a second only\nidleFrame=busy?0:idleFrame+1;time+=dt;if(busy||idleFrame%15===0){gl.viewport(0,0,canvas.width,canvas.height);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(prog);gl.uniform2f(U.uRes,w,h);gl.uniform1f(U.uDpr,dpr);gl.uniform1f(U.uTime,time);gl.uniform3f(U.uMouse,mouse.x,mouse.y,mouse.on);gl.uniform1f(U.uSpacing,Math.max(6,P.spacing));gl.uniform1f(U.uDot,P.dotSize);gl.uniform1f(U.uRadius,Math.max(20,P.radius));gl.uniform1f(U.uWave,waving?1:0);gl.uniform1f(U.uFade,P.fadeEdges?1:0);gl.uniform3fv(U.uColA,rgb(P.dotColor,[.23,.3,.27]));gl.uniform3fv(U.uColB,rgb(P.accent,[.24,.94,.76]));gl.uniform4fv(U.uRip,rips);gl.uniform4f(U.uField,field.x,field.y,field.w,field.h);gl.uniform1f(U.uFieldOn,field.on);gl.uniform3f(U.uCaret,caret.x,caret.y,caret.on);gl.enable(gl.BLEND);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);gl.drawArrays(gl.TRIANGLES,0,3);}raf=requestAnimationFrame(frame);};const start=()=>{if(!raf&&visible){last=0;raf=requestAnimationFrame(frame);}};const local=e=>{const r=root.getBoundingClientRect();return[e.clientX-r.left,e.clientY-r.top];};const onMove=e=>{const[x,y]=local(e);mouse.x=x;mouse.y=y;mouse.target=1;};const onLeave=()=>mouse.target=0;const addRipple=(x,y,strength)=>{rips.set([x,y,time,strength],ripIdx*4);ripIdx=(ripIdx+1)%4;};const onDown=e=>{if(!live.current.ripple||reduced)return;const[x,y]=local(e);addRipple(x,y,1);};// typing: the text fields sit on top of the field as siblings, so these listen on the page\n// and only react to a field that overlaps this one\nconst textField=el=>{if(!el||!(el instanceof HTMLInputElement||el instanceof HTMLTextAreaElement))return null;if(el instanceof HTMLInputElement&&!/^(text|email|tel|url|search|password|number|)$/.test(el.type))return null;const a=el.getBoundingClientRect(),b=root.getBoundingClientRect();return a.right>b.left&&a.left<b.right&&a.bottom>b.top&&a.top<b.bottom?el:null;};const onFocusIn=e=>{if(!live.current.typing)return;const el=textField(e.target);if(!el)return;const a=el.getBoundingClientRect(),b=root.getBoundingClientRect();field.to=[a.left-b.left,a.top-b.top,a.width,a.height];// the outline glides from one field to the next, and starts in place on the first focus\nif(field.on<.05)[field.x,field.y,field.w,field.h]=field.to;field.target=1;start();};const onFocusOut=()=>{field.target=0;start();};const onKey=e=>{if(!live.current.typing||e.metaKey||e.ctrlKey)return;const el=textField(document.activeElement);if(!el)return;// read the caret after the browser has put the character in\nrequestAnimationFrame(()=>{const[px,py]=caretPoint(el);const b=root.getBoundingClientRect();caret.x=px-b.left;caret.y=py-b.top;caret.on=.8;if(!reduced&&e.key.length===1)addRipple(caret.x,caret.y,.3);start();});};resize();const ro=new ResizeObserver(resize);ro.observe(root);const io=new IntersectionObserver(es=>{visible=es[es.length-1].isIntersecting;if(visible)start();else if(raf){cancelAnimationFrame(raf);raf=0;}});io.observe(root);root.addEventListener(\"pointermove\",onMove);root.addEventListener(\"pointerleave\",onLeave);root.addEventListener(\"pointerdown\",onDown);document.addEventListener(\"focusin\",onFocusIn);document.addEventListener(\"focusout\",onFocusOut);document.addEventListener(\"keydown\",onKey);return()=>{if(raf)cancelAnimationFrame(raf);ro.disconnect();io.disconnect();root.removeEventListener(\"pointermove\",onMove);root.removeEventListener(\"pointerleave\",onLeave);root.removeEventListener(\"pointerdown\",onDown);document.removeEventListener(\"focusin\",onFocusIn);document.removeEventListener(\"focusout\",onFocusOut);document.removeEventListener(\"keydown\",onKey);gl.deleteProgram(prog);gl.deleteBuffer(buf);};},[isStatic]);const c=rgb(p.dotColor,[.23,.3,.27]).map(v=>Math.round(v*255)).join(\",\");return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{...p.style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\"},\"aria-hidden\":\"true\",children:isStatic?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,backgroundImage:`radial-gradient(circle, rgba(${c},0.55) ${p.dotSize}px, transparent ${p.dotSize+.8}px)`,backgroundSize:`${p.spacing}px ${p.spacing}px`,WebkitMaskImage:p.fadeEdges?\"radial-gradient(closest-side, #000 70%, transparent)\":undefined,maskImage:p.fadeEdges?\"radial-gradient(closest-side, #000 70%, transparent)\":undefined}}):/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\"}})});}addPropertyControls(SignalField,{dotColor:{type:ControlType.Color,title:\"Dots\",defaultValue:DEFAULTS.dotColor},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:DEFAULTS.accent},spacing:{type:ControlType.Number,title:\"Spacing\",min:8,max:48,step:1,unit:\"px\",defaultValue:DEFAULTS.spacing},dotSize:{type:ControlType.Number,title:\"Dot Size\",min:.5,max:4,step:.1,defaultValue:DEFAULTS.dotSize},radius:{type:ControlType.Number,title:\"Reach\",min:40,max:400,step:10,unit:\"px\",defaultValue:DEFAULTS.radius},waves:{type:ControlType.Boolean,title:\"Wave\",defaultValue:DEFAULTS.waves},ripple:{type:ControlType.Boolean,title:\"Click Ripple\",defaultValue:DEFAULTS.ripple},fadeEdges:{type:ControlType.Boolean,title:\"Fade Edges\",defaultValue:DEFAULTS.fadeEdges},typing:{type:ControlType.Boolean,title:\"React to Typing\",defaultValue:DEFAULTS.typing,description:\"Lights the outline of a focused text field placed over the field, with a ripple per key.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignalField\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"480\",\"framerIntrinsicHeight\":\"320\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SignalField.map"],"mappings":"A,2UACgMA,EAAK,0BAAgCC,EAAkB,gBAAW,SAAS,EAAM,EAAI,CAAC,MAAoB,gBAAK,MAAM,CAAC,GAAGmC,EAAU,MAAI,SAASA,EAAM,QAAQ,CAAC,CAAE,CAAC,EAAQlC,EAAUkB,EAAO,OAAOnB,CAAI,EAAQE,EAAiB,iBAAY,EAAM,IAAM,CAAC,GAAK,CAAC,WAAS,WAAS,WAAS,GAAGkC,GAAMD,EAAM,OAAOE,EAAsB,gBAAKpC,EAAU,CAAC,GAAGmC,EAAc,WAAa,MAAa,UAAQ,CAAC,EAAe,gBAAK,MAAM,CAAC,GAAGA,EAAS,MAAa,UAAQ,CAAC,CAAE,CAAC,EAAQjC,EAAI,6rBAAmsBC,GAAU,CAAC,QAAM,SAAO,KAAG,QAAM,SAAO,GAAG+B,MAAgB,CAAC,GAAGA,EAAM,UAAUG,GAAQH,EAAM,WAAW,EAAE,UAAUI,GAAOJ,EAAM,WAAW,cAAc,GASz+C9B,EAAKqB,EATqgDpB,kBAAiB,SAAS,EAAM,EAAI,CAAC,GAAK,CAAC,QAAM,YAAU,WAAS,UAAQ,YAAU,YAAU,GAAGkC,GAAWpC,EAAS+B,CAAK,EAAQM,EAAKnB,EAAe,aAAanB,CAAG,EAAE,MAAoB,gBAAKD,EAAI,CAAC,GAAGsC,EAAU,UAAUjB,EAAG,eAAemB,CAAS,EAAW,WAAa,MAAI,KAAK,eAAe,MAAM,CAAC,YAAYC,EAAU,WAAWC,EAAU,GAAGC,CAAK,EAAE,QAAQ,YAAY,SAAsB,gBAAK,MAAM,CAAM,MAAI,CAAC,CAAC,CAAC,CAAE,CAS/5D,EAAE,CAT26D,iCAAiC9C,EAAK,2CAA2CA,EAAK,iBAS//D,EAAE,cAAc,EAAE,EAAK,YAAY,eAAmCqB,EAAoBf,EAAK,CAAC,UAAU,CAAC,aAAa,eAAe,OAAO,GAAM,MAAM,QAAQ,KAAKmB,EAAY,KAAK,EAAE,UAAU,CAAC,aAAa,EAAE,eAAe,GAAK,OAAO,GAAM,IAAI,GAAG,IAAI,EAAE,MAAM,QAAQ,KAAKA,EAAY,MAAM,CAAC,CAAC,C,mECT3I,EAAK,0BAAgC,EAAkB,gBAAW,SAAS,EAAM,EAAI,CAAC,MAAoB,gBAAK,MAAM,CAAC,GAAGW,EAAU,MAAI,SAASA,EAAM,QAAQ,CAAC,CAAE,CAAC,EAAQ,EAAUhB,EAAO,OAAO4B,CAAI,EAAQ,EAAiB,iBAAY,EAAM,IAAM,CAAC,GAAK,CAAC,WAAS,WAAS,WAAS,GAAGX,GAAMD,EAAM,OAAOE,EAAsB,gBAAKW,EAAU,CAAC,GAAGZ,EAAc,WAAa,MAAa,UAAQ,CAAC,EAAe,gBAAK,MAAM,CAAC,GAAGA,EAAS,MAAa,UAAQ,CAAC,CAAE,CAAC,EAAQ,EAAI,qrCAA2rC,GAAU,CAAC,QAAM,SAAO,KAAG,QAAM,SAAO,GAAGD,MAAgB,CAAC,GAAGA,EAAM,UAAUG,GAAQH,EAAM,WAAW,EAAE,UAAUI,GAAOJ,EAAM,WAAW,cAAc,GASj+D,EAAKT,EAT6/DnB,kBAAiB,SAAS,EAAM,EAAI,CAAC,GAAK,CAAC,QAAM,YAAU,WAAS,UAAQ,YAAU,YAAU,GAAGiC,GAAWW,EAAShB,CAAK,EAAQM,EAAKnB,EAAe,aAAa4B,CAAG,EAAE,MAAoB,gBAAKD,EAAI,CAAC,GAAGT,EAAU,UAAUjB,EAAG,eAAemB,CAAS,EAAW,WAAa,MAAI,KAAK,eAAe,MAAM,CAAC,YAAYC,EAAU,WAAWC,EAAU,GAAGC,CAAK,EAAE,QAAQ,YAAY,SAAsB,gBAAK,MAAM,CAAM,MAAI,CAAC,CAAC,CAAC,CAAE,CASv5E,EAAE,CATm6E,iCAAiCC,EAAK,2CAA2CA,EAAK,iBASv/E,EAAE,cAAc,EAAE,EAAK,YAAY,WAA+B1B,EAAoBgC,EAAK,CAAC,UAAU,CAAC,aAAa,eAAe,OAAO,GAAM,MAAM,QAAQ,KAAK5B,EAAY,KAAK,EAAE,UAAU,CAAC,aAAa,EAAE,eAAe,GAAK,OAAO,GAAM,IAAI,GAAG,IAAI,EAAE,MAAM,QAAQ,KAAKA,EAAY,MAAM,CAAC,CAAC,C,OCLvU,SAAS8B,EAAW,EAAG,CAAC,IAAMC,EAAEC,EAAG,sBAAsB,EAAQC,EAAG,iBAAiBD,CAAE,EAAQE,EAAK,WAAWD,EAAG,WAAW,GAAG,EAAEE,EAAK,WAAWF,EAAG,UAAU,GAAG,EAAQG,EAAM,WAAWH,EAAG,UAAU,IAAI,WAAWA,EAAG,QAAQ,GAAG,IAAI,IAAI,AAAeI,IAAW,SAAS,cAAc,QAAQ,CAAC,CAAC,WAAW,IAAI,EAAE,IAAIC,EAAO,GAAG,GAAG,CAAC,EAAON,EAAG,MAAM,MAAM,EAAEA,EAAG,gBAAgBA,EAAG,MAAM,MAAM,CAAE,MAAM,CAAC,EAAOA,EAAG,KAAM,CAAIA,EAAG,OAAO,aAAW,EAAO,IAAI,OAAOM,EAAO,MAAM,GAAE,IAAMC,EAAMD,EAAO,MAAM;CAAI,EAAME,EAAM,EAAKH,IAAY,EAAW,KAAK,GAAGJ,EAAG,WAAW,GAAGA,EAAG,SAAS,GAAGA,EAAG,aAAa,EAAMI,EAAW,YAAYE,EAAMA,EAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAME,EAAM,KAAK,IAAI,EAAEV,EAAE,MAAMG,EAAK,CAAC,EAAQQ,EAAOV,EAAG,UAAU,WAAiBW,EAAMD,EAAO,KAAK,MAAMF,EAAMC,CAAK,EAAE,EAAQG,EAAEb,EAAE,KAAKG,GAAMQ,EAAOF,EAAMC,EAAM,KAAK,IAAID,EAAMC,CAAK,IAAIC,EAAO,EAAEV,EAAG,YAAkBa,EAAEH,EAAO,KAAK,IAAIX,EAAE,OAAOI,EAAKJ,EAAE,IAAII,GAAMI,EAAM,OAAO,EAAEI,EAAM,IAAIP,EAAMJ,EAAG,SAAS,EAAED,EAAE,IAAIA,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAIA,EAAE,MAAMG,EAAKU,CAAC,EAAEC,CAAC,CAAE,CAAC,SAASC,EAAI,EAAM,EAAS,CAAC,IAAIC,GAAGC,GAAO,GAAA,CAAI,KAAK,EAAQC,EAAI,8BAA8B,IAAI,IAAIC,EAAED,EAAI,KAAKF,CAAC,EAAEG,EAAE,EAAED,EAAI,KAAKF,CAAC,EAAE,EAAEG,EAAE,EAAE,CAAC,KAAK,EAAE,IAAIC,EAAE,sBAAsB,KAAKJ,CAAC,EAAE,GAAGI,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAoD,OAA9CC,EAAE,OAAO,IAAE,EAAEA,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG9D,EAAEA,CAAC,CAAC,CAAC,KAAK,EAAE,GAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS8D,EAAE,MAAMC,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAE,CAAiC,GAAhC,EAAE,sBAAsB,KAAKN,CAAC,EAAKI,EAAE,CAAC,IAAMG,EAAEH,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,UAAU,EAAE,MAAM,CAACG,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,GAAG,CAAE,CAC16C,IAAMC,EAAK,wBAAwB,KAAKR,CAAC,EAAE,GAAGQ,GAAM,OAAO,SAAW,KAAa,SAAS,KAAK,CAAC,IAAML,EAAE,iBAAiB,SAAS,IAAI,CAAC,CAAC,iBAAiBK,EAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAGL,GAAG,CAAC,SAAS,KAAKA,CAAC,EAAE,OAAOJ,EAAII,EAAEM,CAAQ,CAAE,CAAC,OAAOA,CAAS,CAwDxO,SAAwBC,EAAY,EAAM,CAAC,IAAMH,EAAE,CAAC,GAAGI,EAAS,GAAG/C,CAAK,EAAQgD,EAAS1D,EAAoB,EAAQ2D,EAAQ5E,EAAO,IAAI,EAAQ6E,EAAU7E,EAAO,IAAI,EAAQ8E,EAAK9E,EAAOsE,CAAC,EAAE,EAAK,QAAQA,EAAE5D,MAAc,CAAC,GAAGiE,EAAS,OAAO,IAAMI,EAAKH,EAAQ,QAAQI,EAAOH,EAAU,QAAQ,GAAG,CAACE,GAAM,CAACC,EAAO,OAAO,IAAMC,EAAGD,EAAO,WAAW,SAAS,CAAC,MAAM,GAAK,mBAAmB,GAAK,UAAU,EAAK,CAAC,EAAE,GAAG,CAACC,EAAG,OAAO,IAAMC,EAAQ9E,EAAO,YAAYA,EAAO,WAAW,kCAAkC,CAAC,CAAC,QAAc+E,GAAI,EAAK,IAAM,CAAC,IAAMpB,EAAEkB,EAAG,aAAaG,CAAI,EAA6C,OAA3CH,EAAG,aAAalB,EAAEsB,CAAG,EAAEJ,EAAG,cAAclB,CAAC,EAASA,CAAE,EAAQuB,EAAKL,EAAG,cAAc,EAAEA,EAAG,aAAaK,EAAKH,EAAGF,EAAG,cAAcM,CAAE,CAAC,EAAEN,EAAG,aAAaK,EAAKH,EAAGF,EAAG,gBAAgBO,CAAE,CAAC,EAAEP,EAAG,mBAAmBK,EAAK,EAAE,MAAM,EAAEL,EAAG,YAAYK,CAAI,EAAE,IAAMG,EAAIR,EAAG,aAAa,6BAA6B,EAAMS,EAAM,GAAYC,EAAE,CAAC,EAAQC,EAAIX,EAAG,aAAa,EAAEA,EAAG,WAAWA,EAAG,aAAaW,CAAG,EAAEX,EAAG,WAAWA,EAAG,aAAa,IAAI,aAAa,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAEA,EAAG,WAAW,EAAEA,EAAG,wBAAwB,CAAC,EAAEA,EAAG,oBAAoB,EAAE,EAAEA,EAAG,MAAM,GAAM,EAAE,CAAC,EAAE,IAAIY,EAAE,EAAEzB,EAAE,EAAE0B,EAAI,EAAMC,EAAI,EAAEC,EAAQ,GAAMC,EAAK,EAAEC,EAAK,EAAEC,EAAU,EAAQC,EAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,OAAO,CAAC,EAAQC,EAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAQC,EAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAQC,kBAAK,IAAI,aAAa,EAAE,EAAMC,EAAO,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAE,EAAE,IAAI,EAAKA,EAAE,EAAE,GAAG,IAAI,IAAMC,MAAW,CAAC,IAAM,EAAE3B,EAAK,sBAAsB,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,EAAI,KAAK,IAAI3E,EAAO,kBAAkB,EAAE,CAAC,EAAE,EAAO,MAAM,KAAK,MAAMyF,EAAEC,CAAG,EAAE,EAAO,OAAO,KAAK,MAAM1B,EAAE0B,CAAG,CAAE,EAAQa,EAAM,GAAK,CAAO,GAAN,EAAI,EAAK,CAACX,EAAQ,OAAO,IAAMY,EAAGX,EAAK,KAAK,IAAI,KAAKY,EAAIZ,GAAM,GAAG,EAAE,EAAE,GAAY,GAAT,EAAKY,EAAO,CAACnB,EAAM,CAAC,GAAGD,GAAK,CAACR,EAAG,oBAAoBK,EAAKG,EAAI,qBAAqB,EAAE,CAAC,EAAI,sBAAsBkB,CAAK,EAAE,MAAO,CAAC,GAAG,CAAC1B,EAAG,oBAAoBK,EAAKL,EAAG,WAAW,EAAE,CAAC,QAAQ,MAAM,uBAAuBA,EAAG,kBAAkBK,CAAI,CAAC,EAAE,MAAO,CAAC,IAAI,IAAMwB,IAAI,CAAC,OAAO,OAAO,QAAQ,SAAS,WAAW,OAAO,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,SAAS,WAAW,QAAQ,EAAE,EAAEA,GAAG7B,EAAG,mBAAmBK,EAAKwB,CAAC,EAAE,EAAM,EAAK,CAAC,IAAMC,EAAEjC,EAAK,QAAckC,EAAOD,EAAE,OAAO,CAAC7B,EAAQ,EAAM,KAAKkB,EAAM,OAAOA,EAAM,IAAI,KAAK,IAAI,EAAEQ,EAAG,CAAC,EAAE,EAAM,KAAKP,EAAM,OAAOA,EAAM,IAAI,KAAK,IAAI,EAAEO,EAAG,CAAC,EAAE,IAAMK,EAAM,KAAK,IAAI,EAAEL,EAAG,EAAE,EAAE,EAAM,IAAIP,EAAM,GAAG,GAAGA,EAAM,GAAGY,EAAM,EAAM,IAAIZ,EAAM,GAAG,GAAGA,EAAM,GAAGY,EAAM,EAAM,IAAIZ,EAAM,GAAG,GAAGA,EAAM,GAAGY,EAAM,EAAM,IAAIZ,EAAM,GAAG,GAAGA,EAAM,GAAGY,EAAM,EAAM,IAAI,KAAK,IAAI,CAACL,EAAG,GAAG,EAAE,IAAMM,EAAKF,GAAQZ,EAAM,GAAG,KAAKA,EAAM,OAAO,GAAG,KAAK,IAAIC,EAAM,OAAOA,EAAM,EAAE,EAAE,KAAKA,EAAM,GAAG,KAAK,KAAK,IAAIA,EAAM,GAAG,GAAGA,EAAM,CAAC,EAAE,IAAIC,EAAM,GAAG,KAAKJ,EAAK,KAAK,IAAIK,EAAK,GAAGA,EAAK,GAAGA,EAAK,IAAIA,EAAK,GAAG,EAAE,IACzoF,EAAUW,EAAK,EAAEf,EAAU,EAAE,GAAMS,GAAMM,GAAMf,EAAU,IAAK,KAAGlB,EAAG,SAAS,EAAE,EAAED,EAAO,MAAMA,EAAO,MAAM,EAAEC,EAAG,WAAW,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAG,MAAMA,EAAG,gBAAgB,EAAEA,EAAG,WAAWK,CAAI,EAAEL,EAAG,UAAUU,EAAE,KAAKE,EAAEzB,CAAC,EAAEa,EAAG,UAAUU,EAAE,KAAKG,CAAG,EAAEb,EAAG,UAAUU,EAAE,MAAMO,CAAI,EAAEjB,EAAG,UAAUU,EAAE,OAAOS,EAAM,EAAEA,EAAM,EAAEA,EAAM,EAAE,EAAEnB,EAAG,UAAUU,EAAE,SAAS,KAAK,IAAI,EAAEoB,EAAE,OAAO,CAAC,EAAE9B,EAAG,UAAUU,EAAE,KAAKoB,EAAE,OAAO,EAAE9B,EAAG,UAAUU,EAAE,QAAQ,KAAK,IAAI,GAAGoB,EAAE,MAAM,CAAC,EAAE9B,EAAG,UAAUU,EAAE,MAAM,IAAU,EAAEV,EAAG,UAAUU,EAAE,MAAM,KAAE,SAAa,EAAEV,EAAG,WAAWU,EAAE,MAAM7B,EAAIiD,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE9B,EAAG,WAAWU,EAAE,MAAM7B,EAAIiD,EAAE,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE9B,EAAG,WAAWU,EAAE,KAAKY,CAAI,EAAEtB,EAAG,UAAUU,EAAE,OAAOU,EAAM,EAAEA,EAAM,EAAEA,EAAM,EAAEA,EAAM,CAAC,EAAEpB,EAAG,UAAUU,EAAE,SAASU,EAAM,EAAE,EAAEpB,EAAG,UAAUU,EAAE,OAAOW,EAAM,EAAEA,EAAM,EAAEA,EAAM,EAAE,EAAErB,EAAG,OAAOA,EAAG,KAAK,EAAEA,EAAG,UAAUA,EAAG,IAAIA,EAAG,mBAAmB,EAAEA,EAAG,WAAWA,EAAG,UAAU,EAAE,CAAC,GAAG,EAAI,sBAAsB0B,CAAK,CAAE,EAAQQ,MAAU,CAAI,CAACpB,GAAKC,IAAS,EAAK,EAAE,EAAI,sBAAsBW,CAAK,EAAG,EAAQS,EAAM,GAAG,CAAC,IAAMrE,EAAEgC,EAAK,sBAAsB,EAAE,MAAM,CAACsC,EAAE,QAAQtE,EAAE,KAAKsE,EAAE,QAAQtE,EAAE,GAAG,CAAE,EAAQuE,EAAO,GAAG,CAAC,GAAK,CAAC1D,EAAEC,GAAGuD,EAAM,CAAC,EAAE,EAAM,EAAExD,EAAE,EAAM,EAAEC,EAAE,EAAM,OAAO,CAAE,EAAQ0D,MAAY,EAAM,OAAO,EAAQC,GAAW,EAAE,EAAE,IAAW,CAACjB,EAAK,IAAI,CAAC3C,EAAEC,EAAEqC,EAAKuB,CAAQ,EAAEjB,EAAO,CAAC,EAAE,GAAQA,EAAO,GAAG,CAAE,EAAQkB,EAAO,GAAG,CAAC,GAAG,CAAC5C,EAAK,QAAQ,QAAQI,EAAQ,OAAO,GAAK,CAACtB,EAAEC,GAAGuD,EAAM,CAAC,EAAEI,EAAU5D,EAAEC,EAAE,CAAC,CAAE,EAEp1C8D,EAAU,GAAI,CAA0F,GAAtF,CAAC3E,GAAI,EAAEA,aAAc,kBAAkBA,aAAc,sBAAoCA,aAAc,kBAAkB,CAAC,iDAAiD,KAAKA,EAAG,IAAI,EAAE,OAAO,KAAK,IAAM4E,EAAE5E,EAAG,sBAAsB,EAAE6E,EAAE9C,EAAK,sBAAsB,EAAE,OAAO6C,EAAE,MAAMC,EAAE,MAAMD,EAAE,KAAKC,EAAE,OAAOD,EAAE,OAAOC,EAAE,KAAKD,EAAE,IAAIC,EAAE,OAAO7E,EAAG,IAAK,EAAQ8E,EAAU,GAAG,CAAC,GAAG,CAAChD,EAAK,QAAQ,OAAO,OAAO,IAAM9B,EAAG2E,EAAUN,EAAE,MAAM,EAAE,GAAG,CAACrE,EAAG,OAAO,IAAM4E,EAAE5E,EAAG,sBAAsB,EAAE6E,EAAE9C,EAAK,sBAAsB,EAAE,EAAM,GAAG,CAAC6C,EAAE,KAAKC,EAAE,KAAKD,EAAE,IAAIC,EAAE,IAAID,EAAE,MAAMA,EAAE,MAAM,EAChkBvB,EAAM,GAAG,MAAI,CAACA,EAAM,EAAEA,EAAM,EAAEA,EAAM,EAAEA,EAAM,GAAGA,EAAM,IAAG,EAAM,OAAO,EAAEc,EAAM,CAAE,EAAQY,MAAe,CAAC,EAAM,OAAO,EAAEZ,EAAM,CAAE,EAAQa,EAAM,GAAG,CAAC,GAAG,CAAClD,EAAK,QAAQ,QAAQuC,EAAE,SAASA,EAAE,QAAQ,OAAO,IAAMrE,EAAG2E,EAAU,SAAS,aAAa,EAAM3E,GACvP,0BAA0B,CAAC,GAAK,CAACiF,EAAGC,GAAIpF,EAAWE,CAAE,EAAQ6E,EAAE9C,EAAK,sBAAsB,EAAE,EAAM,EAAEkD,EAAGJ,EAAE,KAAK,EAAM,EAAEK,EAAGL,EAAE,IAAI,EAAM,GAAG,GAAM,CAAC3C,GAASmC,EAAE,IAAI,SAAS,GAAEG,EAAUlB,EAAM,EAAEA,EAAM,EAAE,EAAE,EAAEa,EAAM,CAAE,CAAC,CAAE,EAAET,EAAO,EAAE,IAAMyB,EAAG,IAAI,eAAezB,CAAM,EAAEyB,EAAG,QAAQpD,CAAI,EAAE,IAAMqD,EAAG,IAAI,qBAAqB,GAAI,CAAC,EAAQC,EAAGA,EAAG,OAAO,EAAE,CAAC,eAAkBrC,EAAQmB,EAAM,EAAO,AAAkCpB,KAA1B,qBAAqBA,CAAG,EAAM,EAAG,CAAC,EAAoS,OAAlSqC,EAAG,QAAQrD,CAAI,EAAEA,EAAK,iBAAiB,cAAcuC,CAAM,EAAEvC,EAAK,iBAAiB,eAAewC,CAAO,EAAExC,EAAK,iBAAiB,cAAc2C,CAAM,EAAE,SAAS,iBAAiB,UAAUI,CAAS,EAAE,SAAS,iBAAiB,WAAWC,CAAU,EAAE,SAAS,iBAAiB,UAAUC,CAAK,MAAY,CAAIjC,GAAI,qBAAqBA,CAAG,EAAEoC,EAAG,WAAW,EAAEC,EAAG,WAAW,EAAErD,EAAK,oBAAoB,cAAcuC,CAAM,EAAEvC,EAAK,oBAAoB,eAAewC,CAAO,EAAExC,EAAK,oBAAoB,cAAc2C,CAAM,EAAE,SAAS,oBAAoB,UAAUI,CAAS,EAAE,SAAS,oBAAoB,WAAWC,CAAU,EAAE,SAAS,oBAAoB,UAAUC,CAAK,EAAE/C,EAAG,cAAcK,CAAI,EAAEL,EAAG,aAAaW,CAAG,CAAE,CAAE,EAAE,CAACjB,CAAQ,CAAC,EAAE,IAAM1E,EAAE6D,EAAIQ,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,MAAMJ,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,MAAoB,gBAAK,MAAM,CAAC,IAAIU,EAAQ,MAAM,CAAC,GAAGN,EAAE,MAAM,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,SAAS,QAAQ,EAAE,cAAc,OAAO,SAASK,EAAsB,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,gBAAgB,gCAAgC1E,EAAE,SAASqE,EAAE,QAAQ,kBAAkBA,EAAE,QAAQ,GAAG,KAAK,eAAe,GAAGA,EAAE,QAAQ,KAAKA,EAAE,QAAQ,IAAI,gBAAgBA,EAAE,UAAU,uDAAuD,IAAA,GAAU,UAAUA,EAAE,UAAU,uDAAuD,IAAA,EAAS,CAAC,CAAC,EAAe,gBAAK,SAAS,CAAC,IAAIO,EAAU,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,C,0DA/D5sD,EAAS,CAAC,SAAS,UAAU,OAAO,UAAU,QAAQ,GAAG,QAAQ,IAAI,OAAO,IAAI,MAAM,GAAK,OAAO,GAAK,UAAU,GAAK,OAAO,EAAK,EAAM,EAAW,KAE9D,EAAG;;qDAE1L,EAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2D4yDjE,EAAoB6D,EAAY,CAAC,SAAS,CAAC,KAAKzD,EAAY,MAAM,MAAM,OAAO,aAAa0D,EAAS,QAAQ,EAAE,OAAO,CAAC,KAAK1D,EAAY,MAAM,MAAM,SAAS,aAAa0D,EAAS,MAAM,EAAE,QAAQ,CAAC,KAAK1D,EAAY,OAAO,MAAM,UAAU,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,aAAa0D,EAAS,OAAO,EAAE,QAAQ,CAAC,KAAK1D,EAAY,OAAO,MAAM,WAAW,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,aAAa0D,EAAS,OAAO,EAAE,OAAO,CAAC,KAAK1D,EAAY,OAAO,MAAM,QAAQ,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,aAAa0D,EAAS,MAAM,EAAE,MAAM,CAAC,KAAK1D,EAAY,QAAQ,MAAM,OAAO,aAAa0D,EAAS,KAAK,EAAE,OAAO,CAAC,KAAK1D,EAAY,QAAQ,MAAM,eAAe,aAAa0D,EAAS,MAAM,EAAE,UAAU,CAAC,KAAK1D,EAAY,QAAQ,MAAM,aAAa,aAAa0D,EAAS,SAAS,EAAE,OAAO,CAAC,KAAK1D,EAAY,QAAQ,MAAM,kBAAkB,aAAa0D,EAAS,OAAO,YAAY,0FAA0F,CAAC,CAAC,C"}