{"version":3,"file":"DitherShader.Bo_MScoF.mjs","names":["Bo","J","Z","Eo","Po","A","q","Y","U","T","Le","Ke","ne","ao","be","ro","so","co","uo","fe","vo","yo","Ao","Ro","Ue","To","dr.useRef","dr.useCallback","dr.useMemo","Re","c","De","Kr","He","gr","We","Pr","Ie","Ae","je","Te","qe","kr","Ve","me","$e","Ze","Je","br","to","Vr","no","fo","io","yr","go","pe","ho","So","wo","_o","Br","Fo","$r","xo","Co","zo","Yo","Fr","Do","Ho","Wo","Io","Go","Yr","Lo","le","No","Ko","Vo","Uo","xr","ea","ce","aa","sa","oa","Cr","pa","ue","ca","ua","la","zr","wa","Jr","Pa","ba","ya","ka","hr","za","Xa","Ra","Ma","va","Da","Oa","Xr","Ta","Qr","Ea","Na","Ua","La","Mr","Za","de","rs","os","es","Or","fs","ge","ms","ls","ps","Zr","re","_s","he","ks","Ps","ws","bs","Ss","oe","ee","Xs","_e","Rs","Ms","vs","Ds","Os","vr","Ts","Se","Us","Es","Ns","Ks","Ls","Rr","rt","we","ot","at","et","Dr","mt","pt","ct","ut","lt","Hr","wt","Pe","kt","bt","Pt","Gr","Ct","zt","ae","Mt","Ot","Xt","Wr","Wt","se","qt","jt","At","Tt","It","Ir","Vt","ke","Jt","Qt","$t","Ar","si","te","ni","ii","fi","ti","qr","di","hi","_i","gi","Fe","Yi","zi","Be","xi","Ci","ye","Mi","Oi","Xi","jr","Hi","Wi","Ye","Gi","xe","qi","Ai","ji","Ii","Tr","Ki","Ce","Qi","Ji","$i","Zi","Vi","Er","tn","fn","wr","pn","mn","ln","nn","Lr","_n","wn","ze","Sn","ie","bn","kn","yn","Pn","useRef","useState","useMemo","Dithering"],"sources":["https:/esm.sh/@paper-design/shaders@0.0.81/es2022/shaders.mjs","https:/esm.sh/@paper-design/shaders-react@0.0.81/X-ZXJlYWN0LHJlYWN0LWRvbQ/es2022/shaders-react.mjs","https:/esm.sh/@paper-design/shaders-react@0.0.81?external=react,react-dom","https:/framerusercontent.com/modules/969GDzO4a6ZnazaFL7kC/fdPsK8VIBRJhUdUmaJnG/DitherShader.js"],"sourcesContent":["/* esm.sh - @paper-design/shaders@0.0.81 */\nvar Ve=`#version 300 es\nprecision mediump float;\n\nlayout(location = 0) in vec4 a_position;\n\nuniform vec2 u_resolution;\nuniform float u_pixelRatio;\nuniform float u_imageAspectRatio;\nuniform float u_originX;\nuniform float u_originY;\nuniform float u_worldWidth;\nuniform float u_worldHeight;\nuniform float u_fit;\nuniform float u_scale;\nuniform float u_rotation;\nuniform float u_offsetX;\nuniform float u_offsetY;\n\nout vec2 v_objectUV;\nout vec2 v_objectBoxSize;\nout vec2 v_responsiveUV;\nout vec2 v_responsiveBoxGivenSize;\nout vec2 v_patternUV;\nout vec2 v_patternBoxSize;\nout vec2 v_imageUV;\n\nvec3 getBoxSize(float boxRatio, vec2 givenBoxSize) {\n  vec2 box = vec2(0.);\n  // fit = none\n  box.x = boxRatio * min(givenBoxSize.x / boxRatio, givenBoxSize.y);\n  float noFitBoxWidth = box.x;\n  if (u_fit == 1.) { // fit = contain\n    box.x = boxRatio * min(u_resolution.x / boxRatio, u_resolution.y);\n  } else if (u_fit == 2.) { // fit = cover\n    box.x = boxRatio * max(u_resolution.x / boxRatio, u_resolution.y);\n  }\n  box.y = box.x / boxRatio;\n  return vec3(box, noFitBoxWidth);\n}\n\nvoid main() {\n  gl_Position = a_position;\n\n  vec2 uv = gl_Position.xy * .5;\n  vec2 boxOrigin = vec2(.5 - u_originX, u_originY - .5);\n  vec2 givenBoxSize = vec2(u_worldWidth, u_worldHeight);\n  givenBoxSize = max(givenBoxSize, vec2(1.)) * u_pixelRatio;\n  float r = u_rotation * 3.14159265358979323846 / 180.;\n  mat2 graphicRotation = mat2(cos(r), sin(r), -sin(r), cos(r));\n  vec2 graphicOffset = vec2(-u_offsetX, u_offsetY);\n\n\n  // ===================================================\n\n  float fixedRatio = 1.;\n  vec2 fixedRatioBoxGivenSize = vec2(\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\n  );\n\n  v_objectBoxSize = getBoxSize(fixedRatio, fixedRatioBoxGivenSize).xy;\n  vec2 objectWorldScale = u_resolution.xy / v_objectBoxSize;\n\n  v_objectUV = uv;\n  v_objectUV *= objectWorldScale;\n  v_objectUV += boxOrigin * (objectWorldScale - 1.);\n  v_objectUV += graphicOffset;\n  v_objectUV /= u_scale;\n  v_objectUV = graphicRotation * v_objectUV;\n\n  // ===================================================\n\n  v_responsiveBoxGivenSize = vec2(\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\n  );\n  float responsiveRatio = v_responsiveBoxGivenSize.x / v_responsiveBoxGivenSize.y;\n  vec2 responsiveBoxSize = getBoxSize(responsiveRatio, v_responsiveBoxGivenSize).xy;\n  vec2 responsiveBoxScale = u_resolution.xy / responsiveBoxSize;\n\n  #ifdef ADD_HELPERS\n  v_responsiveHelperBox = uv;\n  v_responsiveHelperBox *= responsiveBoxScale;\n  v_responsiveHelperBox += boxOrigin * (responsiveBoxScale - 1.);\n  #endif\n\n  v_responsiveUV = uv;\n  v_responsiveUV *= responsiveBoxScale;\n  v_responsiveUV += boxOrigin * (responsiveBoxScale - 1.);\n  v_responsiveUV += graphicOffset;\n  v_responsiveUV /= u_scale;\n  v_responsiveUV.x *= responsiveRatio;\n  v_responsiveUV = graphicRotation * v_responsiveUV;\n  v_responsiveUV.x /= responsiveRatio;\n\n  // ===================================================\n\n  float patternBoxRatio = givenBoxSize.x / givenBoxSize.y;\n  vec2 patternBoxGivenSize = vec2(\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\n  );\n  patternBoxRatio = patternBoxGivenSize.x / patternBoxGivenSize.y;\n\n  vec3 boxSizeData = getBoxSize(patternBoxRatio, patternBoxGivenSize);\n  v_patternBoxSize = boxSizeData.xy;\n  float patternBoxNoFitBoxWidth = boxSizeData.z;\n  vec2 patternBoxScale = u_resolution.xy / v_patternBoxSize;\n\n  v_patternUV = uv;\n  v_patternUV += graphicOffset / patternBoxScale;\n  v_patternUV += boxOrigin;\n  v_patternUV -= boxOrigin / patternBoxScale;\n  v_patternUV *= u_resolution.xy;\n  v_patternUV /= u_pixelRatio;\n  if (u_fit > 0.) {\n    v_patternUV *= (patternBoxNoFitBoxWidth / v_patternBoxSize.x);\n  }\n  v_patternUV /= u_scale;\n  v_patternUV = graphicRotation * v_patternUV;\n  v_patternUV += boxOrigin / patternBoxScale;\n  v_patternUV -= boxOrigin;\n  // x100 is a default multiplier between vertex and fragmant shaders\n  // we use it to avoid UV presision issues\n  v_patternUV *= .01;\n\n  // ===================================================\n\n  vec2 imageBoxSize;\n  if (u_fit == 1.) { // contain\n    imageBoxSize.x = min(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\n  } else if (u_fit == 2.) { // cover\n    imageBoxSize.x = max(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\n  } else {\n    imageBoxSize.x = min(10.0, 10.0 / u_imageAspectRatio * u_imageAspectRatio);\n  }\n  imageBoxSize.y = imageBoxSize.x / u_imageAspectRatio;\n  vec2 imageBoxScale = u_resolution.xy / imageBoxSize;\n\n  v_imageUV = uv;\n  v_imageUV *= imageBoxScale;\n  v_imageUV += boxOrigin * (imageBoxScale - 1.);\n  v_imageUV += graphicOffset;\n  v_imageUV /= u_scale;\n  v_imageUV.x *= u_imageAspectRatio;\n  v_imageUV = graphicRotation * v_imageUV;\n  v_imageUV.x /= u_imageAspectRatio;\n\n  v_imageUV += .5;\n  v_imageUV.y = 1. - v_imageUV.y;\n}`;var ke=1920*1080*4,de=class{parentElement;canvasElement;gl;program=null;uniformLocations={};fragmentShader;rafId=null;lastRenderTime=0;currentFrame=0;speed=0;currentSpeed=0;providedUniforms;mipmaps=[];hasBeenDisposed=!1;resolutionChanged=!0;textures=new Map;minPixelRatio;maxPixelCount;isSafari=Pe();uniformCache={};textureUnitMap=new Map;ownerDocument;constructor(e,a,r,u,l=0,c=0,t=2,p=ke,s=[]){if(e?.nodeType===1)this.parentElement=e;else throw new Error(\"Paper Shaders: parent element must be an HTMLElement\");if(this.ownerDocument=e.ownerDocument,!this.ownerDocument.querySelector(\"style[data-paper-shader]\")){let m=this.ownerDocument.createElement(\"style\");m.innerHTML=ze,m.setAttribute(\"data-paper-shader\",\"\"),this.ownerDocument.head.prepend(m)}let g=this.ownerDocument.createElement(\"canvas\");this.canvasElement=g,this.parentElement.prepend(g),this.fragmentShader=a,this.providedUniforms=r,this.mipmaps=s,this.currentFrame=c,this.minPixelRatio=t,this.maxPixelCount=p;let f=g.getContext(\"webgl2\",u);if(!f)throw new Error(\"Paper Shaders: WebGL is not supported in this browser\");this.gl=f,this.initProgram(),this.setupPositionAttribute(),this.setupUniforms(),this.setUniformValues(this.providedUniforms),this.setupResizeObserver(),visualViewport?.addEventListener(\"resize\",this.handleVisualViewportChange),this.setupIntersectionObserver(),this.setSpeed(l),this.parentElement.setAttribute(\"data-paper-shader\",\"\"),this.parentElement.paperShaderMount=this,this.ownerDocument.addEventListener(\"visibilitychange\",this.handleDocumentVisibilityChange)}initProgram=()=>{let e=De(this.gl,Ve,this.fragmentShader);e&&(this.program=e)};setupPositionAttribute=()=>{let e=this.gl.getAttribLocation(this.program,\"a_position\"),a=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,a);let r=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1];this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(r),this.gl.STATIC_DRAW),this.gl.enableVertexAttribArray(e),this.gl.vertexAttribPointer(e,2,this.gl.FLOAT,!1,0,0)};setupUniforms=()=>{let e={u_time:this.gl.getUniformLocation(this.program,\"u_time\"),u_pixelRatio:this.gl.getUniformLocation(this.program,\"u_pixelRatio\"),u_resolution:this.gl.getUniformLocation(this.program,\"u_resolution\")};Object.entries(this.providedUniforms).forEach(([a,r])=>{if(e[a]=this.gl.getUniformLocation(this.program,a),r instanceof HTMLImageElement){let u=`${a}AspectRatio`;e[u]=this.gl.getUniformLocation(this.program,u)}}),this.uniformLocations=e};renderScale=1;parentWidth=0;parentHeight=0;parentDevicePixelWidth=0;parentDevicePixelHeight=0;devicePixelsSupported=!1;intersectionObserver=null;isInViewport=!0;resizeObserver=null;setupResizeObserver=()=>{this.resizeObserver=new ResizeObserver(([e])=>{if(e?.borderBoxSize[0]){let a=e.devicePixelContentBoxSize?.[0];a!==void 0&&(this.devicePixelsSupported=!0,this.parentDevicePixelWidth=a.inlineSize,this.parentDevicePixelHeight=a.blockSize),this.parentWidth=e.borderBoxSize[0].inlineSize,this.parentHeight=e.borderBoxSize[0].blockSize}this.handleResize()}),this.resizeObserver.observe(this.parentElement)};setupIntersectionObserver=()=>{let e=this.ownerDocument.defaultView;e?.IntersectionObserver&&(this.intersectionObserver=new e.IntersectionObserver(([a])=>{this.isInViewport=a?.isIntersecting??!0,this.updateCurrentSpeed()}),this.intersectionObserver.observe(this.parentElement))};handleVisualViewportChange=()=>{this.resizeObserver?.disconnect(),this.setupResizeObserver()};handleResize=()=>{let e=0,a=0,r=Math.max(1,window.devicePixelRatio),u=visualViewport?.scale??1;if(this.devicePixelsSupported){let g=Math.max(1,this.minPixelRatio/r);e=this.parentDevicePixelWidth*g*u,a=this.parentDevicePixelHeight*g*u}else{let g=Math.max(r,this.minPixelRatio)*u;if(this.isSafari){let f=Te(this.ownerDocument);g*=Math.max(1,f)}e=Math.round(this.parentWidth)*g,a=Math.round(this.parentHeight)*g}let l=Math.sqrt(this.maxPixelCount)/Math.sqrt(e*a),c=Math.min(1,l),t=Math.round(e*c),p=Math.round(a*c),s=t/Math.round(this.parentWidth);(this.canvasElement.width!==t||this.canvasElement.height!==p||this.renderScale!==s)&&(this.renderScale=s,this.canvasElement.width=t,this.canvasElement.height=p,this.resolutionChanged=!0,this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.render(performance.now()))};render=e=>{if(this.hasBeenDisposed)return;if(this.program===null){console.warn(\"Tried to render before program or gl was initialized\");return}let a=e-this.lastRenderTime;this.lastRenderTime=e,this.currentSpeed!==0&&(this.currentFrame+=a*this.currentSpeed),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.uniform1f(this.uniformLocations.u_time,this.currentFrame*.001),this.resolutionChanged&&(this.gl.uniform2f(this.uniformLocations.u_resolution,this.gl.canvas.width,this.gl.canvas.height),this.gl.uniform1f(this.uniformLocations.u_pixelRatio,this.renderScale),this.resolutionChanged=!1),this.gl.drawArrays(this.gl.TRIANGLES,0,6),this.currentSpeed!==0?this.requestRender():this.rafId=null};requestRender=()=>{this.rafId!==null&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(this.render)};setTextureUniform=(e,a)=>{if(!a.complete||a.naturalWidth===0)throw new Error(`Paper Shaders: image for uniform ${e} must be fully loaded`);let r=this.textures.get(e);r&&this.gl.deleteTexture(r),this.textureUnitMap.has(e)||this.textureUnitMap.set(e,this.textureUnitMap.size);let u=this.textureUnitMap.get(e);this.gl.activeTexture(this.gl.TEXTURE0+u);let l=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,l),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,a),this.mipmaps.includes(e)&&(this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_LINEAR));let c=this.gl.getError();if(c!==this.gl.NO_ERROR||l===null){console.error(\"Paper Shaders: WebGL error when uploading texture:\",c);return}this.textures.set(e,l);let t=this.uniformLocations[e];if(t){this.gl.uniform1i(t,u);let p=`${e}AspectRatio`,s=this.uniformLocations[p];if(s){let g=a.naturalWidth/a.naturalHeight;this.gl.uniform1f(s,g)}}};areUniformValuesEqual=(e,a)=>e===a?!0:Array.isArray(e)&&Array.isArray(a)&&e.length===a.length?e.every((r,u)=>this.areUniformValuesEqual(r,a[u])):!1;setUniformValues=e=>{this.gl.useProgram(this.program),Object.entries(e).forEach(([a,r])=>{let u=r;if(r instanceof HTMLImageElement&&(u=`${r.src.slice(0,200)}|${r.naturalWidth}x${r.naturalHeight}`),this.areUniformValuesEqual(this.uniformCache[a],u))return;this.uniformCache[a]=u;let l=this.uniformLocations[a];if(!l){console.warn(`Uniform location for ${a} not found`);return}if(r instanceof HTMLImageElement)this.setTextureUniform(a,r);else if(Array.isArray(r)){let c=null,t=null;if(r[0]!==void 0&&Array.isArray(r[0])){let p=r[0].length;if(r.every(s=>s.length===p))c=r.flat(),t=p;else{console.warn(`All child arrays must be the same length for ${a}`);return}}else c=r,t=c.length;switch(t){case 2:this.gl.uniform2fv(l,c);break;case 3:this.gl.uniform3fv(l,c);break;case 4:this.gl.uniform4fv(l,c);break;case 9:this.gl.uniformMatrix3fv(l,!1,c);break;case 16:this.gl.uniformMatrix4fv(l,!1,c);break;default:console.warn(`Unsupported uniform array length: ${t}`)}}else typeof r==\"number\"?this.gl.uniform1f(l,r):typeof r==\"boolean\"?this.gl.uniform1i(l,r?1:0):console.warn(`Unsupported uniform type for ${a}: ${typeof r}`)})};getCurrentFrame=()=>this.currentFrame;setFrame=e=>{this.currentFrame=e,this.lastRenderTime=performance.now(),this.render(performance.now())};setSpeed=(e=1)=>{this.speed=e,this.updateCurrentSpeed()};updateCurrentSpeed=()=>{this.setCurrentSpeed(this.ownerDocument.hidden||!this.isInViewport?0:this.speed)};setCurrentSpeed=e=>{this.currentSpeed=e,this.rafId===null&&e!==0&&(this.lastRenderTime=performance.now(),this.rafId=requestAnimationFrame(this.render)),this.rafId!==null&&e===0&&(cancelAnimationFrame(this.rafId),this.rafId=null)};setMaxPixelCount=(e=ke)=>{this.maxPixelCount=e,this.handleResize()};setMinPixelRatio=(e=2)=>{this.minPixelRatio=e,this.handleResize()};setUniforms=e=>{this.setUniformValues(e),this.providedUniforms={...this.providedUniforms,...e},this.render(performance.now())};handleDocumentVisibilityChange=()=>{this.updateCurrentSpeed()};dispose=()=>{this.hasBeenDisposed=!0,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.gl&&this.program&&(this.textures.forEach(e=>{this.gl.deleteTexture(e)}),this.textures.clear(),this.gl.deleteProgram(this.program),this.program=null,this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,null),this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,null),this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,null),this.gl.getError()),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=null),visualViewport?.removeEventListener(\"resize\",this.handleVisualViewportChange),this.ownerDocument.removeEventListener(\"visibilitychange\",this.handleDocumentVisibilityChange),this.uniformLocations={},this.canvasElement.remove(),delete this.parentElement.paperShaderMount}};function Ie(o,e,a){let r=o.createShader(e);return r?(o.shaderSource(r,a),o.compileShader(r),o.getShaderParameter(r,o.COMPILE_STATUS)?r:(console.error(\"An error occurred compiling the shaders: \"+o.getShaderInfoLog(r)),o.deleteShader(r),null)):null}function De(o,e,a){let r=o.getShaderPrecisionFormat(o.FRAGMENT_SHADER,o.MEDIUM_FLOAT),u=r?r.precision:null;u&&u<23&&(e=e.replace(/precision\\s+(lowp|mediump)\\s+float;/g,\"precision highp float;\"),a=a.replace(/precision\\s+(lowp|mediump)\\s+float/g,\"precision highp float\").replace(/\\b(uniform|varying|attribute)\\s+(lowp|mediump)\\s+(\\w+)/g,\"$1 highp $3\"));let l=Ie(o,o.VERTEX_SHADER,e),c=Ie(o,o.FRAGMENT_SHADER,a);if(!l||!c)return null;let t=o.createProgram();return t?(o.attachShader(t,l),o.attachShader(t,c),o.linkProgram(t),o.getProgramParameter(t,o.LINK_STATUS)?(o.detachShader(t,l),o.detachShader(t,c),o.deleteShader(l),o.deleteShader(c),t):(console.error(\"Unable to initialize the shader program: \"+o.getProgramInfoLog(t)),o.deleteProgram(t),o.deleteShader(l),o.deleteShader(c),null)):null}var ze=`@layer paper-shaders {\n  :where([data-paper-shader]) {\n    isolation: isolate;\n    position: relative;\n\n    & canvas {\n      contain: strict;\n      display: block;\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      width: 100%;\n      height: 100%;\n      border-radius: inherit;\n      corner-shape: inherit;\n    }\n  }\n}`;function Ee(o){return\"paperShaderMount\"in o}function Pe(){let o=navigator.userAgent.toLowerCase();return o.includes(\"safari\")&&!o.includes(\"chrome\")&&!o.includes(\"android\")}function Te(o){let e=visualViewport?.scale??1,a=visualViewport?.width??window.innerWidth,r=window.innerWidth-o.documentElement.clientWidth,u=e*a+r,l=outerWidth/u,c=Math.round(100*l);return c%5===0?c/100:c===33?1/3:c===67?2/3:c===133?4/3:l}var Ge={fit:\"contain\",scale:1,rotation:0,offsetX:0,offsetY:0,originX:.5,originY:.5,worldWidth:0,worldHeight:0},Ne={fit:\"none\",scale:1,rotation:0,offsetX:0,offsetY:0,originX:.5,originY:.5,worldWidth:0,worldHeight:0},Qe={none:0,contain:1,cover:2};var d=`\n#define TWO_PI 6.28318530718\n#define PI 3.14159265358979323846\n`,A=`\nvec2 rotate(vec2 uv, float th) {\n  return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n}\n`,q=`\n  float hash11(float p) {\n    p = fract(p * 0.3183099) + 0.1;\n    p *= p + 19.19;\n    return fract(p * p);\n  }\n`,M=`\n  float hash21(vec2 p) {\n    p = fract(p * vec2(0.3183099, 0.3678794)) + 0.1;\n    p += dot(p, p + 19.19);\n    return fract(p.x * p.y);\n  }\n`,Fe=`\n  vec2 hash22(vec2 p) {\n    p = fract(p * vec2(0.3183099, 0.3678794)) + 0.1;\n    p += dot(p, p.yx + 19.19);\n    return fract(vec2(p.x * p.y, p.x + p.y));\n  }\n`,Y=`\n  float randomR(vec2 p) {\n    vec2 uv = floor(p) / 100. + .5;\n    return texture(u_noiseTexture, fract(uv)).r;\n  }\n`,te=`\n  vec2 randomGB(vec2 p) {\n    vec2 uv = floor(p) / 100. + .5;\n    return texture(u_noiseTexture, fract(uv)).gb;\n  }\n`,U=`\n  color += 1. / 256. * (fract(sin(dot(.014 * gl_FragCoord.xy, vec2(12.9898, 78.233))) * 43758.5453123) - .5);\n`,T=`\nvec3 permute(vec3 x) { return mod(((x * 34.0) + 1.0) * x, 289.0); }\nfloat snoise(vec2 v) {\n  const vec4 C = vec4(0.211324865405187, 0.366025403784439,\n    -0.577350269189626, 0.024390243902439);\n  vec2 i = floor(v + dot(v, C.yy));\n  vec2 x0 = v - i + dot(i, C.xx);\n  vec2 i1;\n  i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n  vec4 x12 = x0.xyxy + C.xxzz;\n  x12.xy -= i1;\n  i = mod(i, 289.0);\n  vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0))\n    + i.x + vec3(0.0, i1.x, 1.0));\n  vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy),\n      dot(x12.zw, x12.zw)), 0.0);\n  m = m * m;\n  m = m * m;\n  vec3 x = 2.0 * fract(p * C.www) - 1.0;\n  vec3 h = abs(x) - 0.5;\n  vec3 ox = floor(x + 0.5);\n  vec3 a0 = x - ox;\n  m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);\n  vec3 g;\n  g.x = a0.x * x0.x + h.x * x0.y;\n  g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n  return 130.0 * dot(m, g);\n}\n`;var ge={maxColorCount:10},We=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colors[${ge.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_distortion;\nuniform float u_swirl;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\n\nin vec2 v_objectUV;\nout vec4 fragColor;\n\n${d}\n${A}\n${M}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1.0, 0.0));\n  float c = hash21(i + vec2(0.0, 1.0));\n  float d = hash21(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat noise(vec2 n, vec2 seedOffset) {\n  return valueNoise(n + seedOffset);\n}\n\nvec2 getPosition(int i, float t) {\n  float a = float(i) * .37;\n  float b = .6 + fract(float(i) / 3.) * .9;\n  float c = .8 + fract(float(i + 1) / 4.);\n\n  float x = sin(t * b + a);\n  float y = cos(t * c + a * 1.5);\n\n  return .5 + .5 * vec2(x, y);\n}\n\nvoid main() {\n  vec2 uv = v_objectUV;\n  uv += .5;\n  vec2 grainUV = uv * 1000.;\n\n  float mixerGrain = 0.;\n  if (u_grainMixer > 0.) {\n    mixerGrain = .4 * u_grainMixer * (noise(grainUV, vec2(0.)) - .5);\n  }\n\n  const float firstFrameOffset = 41.5;\n  float t = .5 * (u_time + firstFrameOffset);\n\n  float radius = smoothstep(0., 1., length(uv - .5));\n  float center = 1. - radius;\n  for (float i = 1.; i <= 2.; i++) {\n    uv.x += u_distortion * center / i * sin(t + i * .4 * smoothstep(.0, 1., uv.y)) * cos(.2 * t + i * 2.4 * smoothstep(.0, 1., uv.y));\n    uv.y += u_distortion * center / i * cos(t + i * 2. * smoothstep(.0, 1., uv.x));\n  }\n\n  vec2 uvRotated = uv;\n  uvRotated -= vec2(.5);\n  float angle = 3. * u_swirl * radius;\n  uvRotated = rotate(uvRotated, -angle);\n  uvRotated += vec2(.5);\n\n  vec3 color = vec3(0.);\n  float opacity = 0.;\n  float totalWeight = 0.;\n\n  for (int i = 0; i < ${ge.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n\n    vec2 pos = getPosition(i, t) + mixerGrain;\n    vec3 colorFraction = u_colors[i].rgb * u_colors[i].a;\n    float opacityFraction = u_colors[i].a;\n\n    float dist = length(uvRotated - pos);\n\n    dist = pow(dist, 3.5);\n    float weight = 1. / (dist + 1e-3);\n    color += colorFraction * weight;\n    opacity += opacityFraction * weight;\n    totalWeight += weight;\n  }\n\n  color /= max(1e-4, totalWeight);\n  opacity /= max(1e-4, totalWeight);\n\n  if (u_grainOverlay > 0.) {\n    float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grainOverlay = pow(grainOverlay, 1.3);\n\n    float grainOverlayV = grainOverlay * 2. - 1.;\n    vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n    float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n    grainOverlayStrength = pow(grainOverlayStrength, .8);\n    color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);\n\n    opacity += .5 * grainOverlayStrength;\n  }\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`;var le={maxColorCount:10,maxNoiseIterations:8},Ye=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${le.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_thickness;\nuniform float u_radius;\nuniform float u_innerShape;\nuniform float u_noiseScale;\nuniform float u_noiseIterations;\n\nin vec2 v_objectUV;\n\nout vec4 fragColor;\n\n${d}\n${Y}\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = randomR(i);\n  float b = randomR(i + vec2(1.0, 0.0));\n  float c = randomR(i + vec2(0.0, 1.0));\n  float d = randomR(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\nvec2 fbm(vec2 n0, vec2 n1) {\n  vec2 total = vec2(0.0);\n  float amplitude = .4;\n  for (int i = 0; i < ${le.maxNoiseIterations}; i++) {\n    if (i >= int(u_noiseIterations)) break;\n    total.x += valueNoise(n0) * amplitude;\n    total.y += valueNoise(n1) * amplitude;\n    n0 *= 1.99;\n    n1 *= 1.99;\n    amplitude *= 0.65;\n  }\n  return total;\n}\n\nfloat getNoise(vec2 uv, vec2 pUv, float t) {\n  vec2 pUvLeft = pUv + .03 * t;\n  float period = max(abs(u_noiseScale * TWO_PI), 1e-6);\n  vec2 pUvRight = vec2(fract(pUv.x / period) * period, pUv.y) + .03 * t;\n  vec2 noise = fbm(pUvLeft, pUvRight);\n  return mix(noise.y, noise.x, smoothstep(-.25, .25, uv.x));\n}\n\nfloat getRingShape(vec2 uv) {\n  float radius = u_radius;\n  float thickness = u_thickness;\n\n  float distance = length(uv);\n  float ringValue = 1. - smoothstep(radius, radius + thickness, distance);\n  ringValue *= smoothstep(radius - pow(u_innerShape, 3.) * thickness, radius, distance);\n\n  return ringValue;\n}\n\nvoid main() {\n  vec2 shape_uv = v_objectUV;\n\n  float t = u_time;\n\n  float cycleDuration = 3.;\n  float period2 = 2.0 * cycleDuration;\n  float localTime1 = fract((0.1 * t + cycleDuration) / period2) * period2;\n  float localTime2 = fract((0.1 * t) / period2) * period2;\n  float timeBlend = .5 + .5 * sin(.1 * t * PI / cycleDuration - .5 * PI);\n\n  float atg = atan(shape_uv.y, shape_uv.x) + .001;\n  float l = length(shape_uv);\n  float radialOffset = .5 * l - inversesqrt(max(1e-4, l));\n  vec2 polar_uv1 = vec2(atg, localTime1 - radialOffset) * u_noiseScale;\n  vec2 polar_uv2 = vec2(atg, localTime2 - radialOffset) * u_noiseScale;\n  \n  float noise1 = getNoise(shape_uv, polar_uv1, t);\n  float noise2 = getNoise(shape_uv, polar_uv2, t);\n\n  float noise = mix(noise1, noise2, timeBlend);\n\n  shape_uv *= (.8 + 1.2 * noise);\n\n  float ringShape = getRingShape(shape_uv);\n\n  float mixer = ringShape * ringShape * (u_colorsCount - 1.);\n  int idxLast = int(u_colorsCount) - 1;\n  vec4 gradient = u_colors[idxLast];\n  gradient.rgb *= gradient.a;\n  for (int i = ${le.maxColorCount} - 2; i >= 0; i--) {\n    float localT = clamp(mixer - float(idxLast - i - 1), 0., 1.);\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, localT);\n  }\n\n  vec3 color = gradient.rgb * ringShape;\n  float opacity = gradient.a * ringShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1. - opacity);\n  opacity = opacity + u_colorBack.a * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var Le=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colorFront;\nuniform vec4 u_colorMid;\nuniform vec4 u_colorBack;\nuniform float u_brightness;\nuniform float u_contrast;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${A}\n\nfloat neuroShape(vec2 uv, float t) {\n  vec2 sine_acc = vec2(0.);\n  vec2 res = vec2(0.);\n  float scale = 8.;\n\n  for (int j = 0; j < 15; j++) {\n    uv = rotate(uv, 1.);\n    sine_acc = rotate(sine_acc, 1.);\n    vec2 layer = uv * scale + float(j) + sine_acc - t;\n    sine_acc += sin(layer);\n    res += (.5 + .5 * cos(layer)) / scale;\n    scale *= (1.2);\n  }\n  return res.x + res.y;\n}\n\nvoid main() {\n  vec2 shape_uv = v_patternUV;\n  shape_uv *= .13;\n\n  float t = .5 * u_time;\n\n  float noise = neuroShape(shape_uv, t);\n\n  noise = (1. + u_brightness) * noise * noise;\n  noise = pow(noise, .7 + 6. * u_contrast);\n  noise = min(1.4, noise);\n\n  float blend = smoothstep(0.7, 1.4, noise);\n\n  vec4 frontC = u_colorFront;\n  frontC.rgb *= frontC.a;\n  vec4 midC = u_colorMid;\n  midC.rgb *= midC.a;\n  vec4 blendFront = mix(midC, frontC, blend);\n\n  float safeNoise = max(noise, 0.0);\n  vec3 color = blendFront.rgb * safeNoise;\n  float opacity = clamp(blendFront.a * safeNoise, 0., 1.);\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1. - opacity);\n  opacity = opacity + u_colorBack.a * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var ve={maxColorCount:10},He=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${ve.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_stepsPerColor;\nuniform float u_size;\nuniform float u_sizeRange;\nuniform float u_spreading;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${Y}\n${te}\n\n\nvec3 voronoiShape(vec2 uv, float time) {\n  vec2 i_uv = floor(uv);\n  vec2 f_uv = fract(uv);\n\n  float spreading = .25 * clamp(u_spreading, 0., 1.);\n\n  float minDist = 1.;\n  vec2 randomizer = vec2(0.);\n  for (int y = -1; y <= 1; y++) {\n    for (int x = -1; x <= 1; x++) {\n      vec2 tileOffset = vec2(float(x), float(y));\n      vec2 rand = randomGB(i_uv + tileOffset);\n      vec2 cellCenter = vec2(.5 + 1e-4);\n      cellCenter += spreading * cos(time + TWO_PI * rand);\n      cellCenter -= .5;\n      cellCenter = rotate(cellCenter, randomR(vec2(rand.x, rand.y)) + .1 * time);\n      cellCenter += .5;\n      float dist = length(tileOffset + cellCenter - f_uv);\n      if (dist < minDist) {\n        minDist = dist;\n        randomizer = rand;\n      }\n    }\n  }\n\n  return vec3(minDist, randomizer);\n}\n\nvoid main() {\n\n  vec2 shape_uv = v_patternUV;\n  shape_uv *= 1.5;\n\n  const float firstFrameOffset = -10.;\n  float t = u_time + firstFrameOffset;\n\n  vec3 voronoi = voronoiShape(shape_uv, t) + 1e-4;\n\n  float radius = .25 * clamp(u_size, 0., 1.) - .5 * clamp(u_sizeRange, 0., 1.) * voronoi[2];\n  float dist = voronoi[0];\n  float edgeWidth = fwidth(dist);\n  float dots = 1. - smoothstep(radius - edgeWidth, radius + edgeWidth, dist);\n\n  float shape = voronoi[1];\n\n  float mixer = shape * (u_colorsCount - 1.);\n  mixer = (shape - .5 / u_colorsCount) * u_colorsCount;\n  float steps = max(1., u_stepsPerColor);\n\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  for (int i = 1; i < ${ve.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n    float localT = clamp(mixer - float(i - 1), 0.0, 1.0);\n    localT = round(localT * steps) / steps;\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, localT);\n  }\n\n  if ((mixer < 0.) || (mixer > (u_colorsCount - 1.))) {\n    float localT = mixer + 1.;\n    if (mixer > (u_colorsCount - 1.)) {\n      localT = mixer - (u_colorsCount - 1.);\n    }\n    localT = round(localT * steps) / steps;\n    vec4 cFst = u_colors[0];\n    cFst.rgb *= cFst.a;\n    vec4 cLast = u_colors[int(u_colorsCount - 1.)];\n    cLast.rgb *= cLast.a;\n    gradient = mix(cLast, cFst, localT);\n  }\n\n  vec3 color = gradient.rgb * dots;\n  float opacity = gradient.a * dots;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1. - opacity);\n  opacity = opacity + u_colorBack.a * (1. - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`;var qe=`#version 300 es\nprecision mediump float;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorFill;\nuniform vec4 u_colorStroke;\nuniform float u_dotSize;\nuniform float u_gapX;\nuniform float u_gapY;\nuniform float u_strokeWidth;\nuniform float u_sizeRange;\nuniform float u_opacityRange;\nuniform float u_shape;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${T}\n\nfloat polygon(vec2 p, float N, float rot) {\n  float a = atan(p.x, p.y) + rot;\n  float r = TWO_PI / float(N);\n\n  return cos(floor(.5 + a / r) * r - a) * length(p);\n}\n\nvoid main() {\n\n  // x100 is a default multiplier between vertex and fragmant shaders\n  // we use it to avoid UV presision issues\n  vec2 shape_uv = 100. * v_patternUV;\n\n  vec2 gap = max(abs(vec2(u_gapX, u_gapY)), vec2(1e-6));\n  vec2 grid = fract(shape_uv / gap) + 1e-4;\n  vec2 grid_idx = floor(shape_uv / gap);\n  float sizeRandomizer = .5 + .8 * snoise(2. * vec2(grid_idx.x * 100., grid_idx.y));\n  float opacity_randomizer = .5 + .7 * snoise(2. * vec2(grid_idx.y, grid_idx.x));\n\n  vec2 center = vec2(0.5) - 1e-3;\n  vec2 p = (grid - center) * vec2(u_gapX, u_gapY);\n\n  float baseSize = u_dotSize * (1. - sizeRandomizer * u_sizeRange);\n  float strokeWidth = u_strokeWidth * (1. - sizeRandomizer * u_sizeRange);\n\n  float dist;\n  if (u_shape < 0.5) {\n    // Circle\n    dist = length(p);\n  } else if (u_shape < 1.5) {\n    // Diamond\n    strokeWidth *= 1.5;\n    dist = polygon(1.5 * p, 4., .25 * PI);\n  } else if (u_shape < 2.5) {\n    // Square\n    dist = polygon(1.03 * p, 4., 1e-3);\n  } else {\n    // Triangle\n    strokeWidth *= 1.5;\n    p = p * 2. - 1.;\n    p *= .9;\n    p.y = 1. - p.y;\n    p.y -= .75 * baseSize;\n    dist = polygon(p, 3., 1e-3);\n  }\n\n  float edgeWidth = fwidth(dist);\n  float shapeOuter = 1. - smoothstep(baseSize - edgeWidth, baseSize + edgeWidth, dist - strokeWidth);\n  float shapeInner = 1. - smoothstep(baseSize - edgeWidth, baseSize + edgeWidth, dist);\n  float stroke = shapeOuter - shapeInner;\n\n  float dotOpacity = max(0., 1. - opacity_randomizer * u_opacityRange);\n  stroke *= dotOpacity;\n  shapeInner *= dotOpacity;\n\n  stroke *= u_colorStroke.a;\n  shapeInner *= u_colorFill.a;\n\n  vec3 color = vec3(0.);\n  color += stroke * u_colorStroke.rgb;\n  color += shapeInner * u_colorFill.rgb;\n  color += (1. - shapeInner - stroke) * u_colorBack.rgb * u_colorBack.a;\n\n  float opacity = 0.;\n  opacity += stroke;\n  opacity += shapeInner;\n  opacity += (1. - opacity) * u_colorBack.a;\n\n  fragColor = vec4(color, opacity);\n}\n`,Xe={circle:0,diamond:1,square:2,triangle:3};var he={maxColorCount:10},Ke=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colors[${he.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_stepsPerColor;\nuniform float u_softness;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${T}\n\nfloat getNoise(vec2 uv, float t) {\n  float noise = .5 * snoise(uv - vec2(0., .3 * t));\n  noise += .5 * snoise(2. * uv + vec2(0., .32 * t));\n\n  return noise;\n}\n\nfloat steppedSmooth(float m, float steps, float softness) {\n  float stepT = floor(m * steps) / steps;\n  float f = m * steps - floor(m * steps);\n  float fw = steps * fwidth(m);\n  float smoothed = smoothstep(.5 - softness, min(1., .5 + softness + fw), f);\n  return stepT + smoothed / steps;\n}\n\nvoid main() {\n  vec2 shape_uv = v_patternUV;\n  shape_uv *= .1;\n\n  float t = .2 * u_time;\n\n  float shape = .5 + .5 * getNoise(shape_uv, t);\n\n  float mixer = (shape - .5 / u_colorsCount) * u_colorsCount;\n\n  float steps = max(1., u_stepsPerColor);\n\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  for (int i = 1; i < ${he.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n\n    float localM = clamp(mixer - float(i - 1), 0., 1.);\n    localM = steppedSmooth(localM, steps, .5 * u_softness);\n\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, localM);\n  }\n\n  if ((mixer < 0.) || (mixer > (u_colorsCount - 1.))) {\n    float localM = mixer + 1.;\n    if (mixer > (u_colorsCount - 1.)) {\n      localM = mixer - (u_colorsCount - 1.);\n    }\n    localM = steppedSmooth(localM, steps, .5 * u_softness);\n    vec4 cFst = u_colors[0];\n    cFst.rgb *= cFst.a;\n    vec4 cLast = u_colors[int(u_colorsCount - 1.)];\n    cLast.rgb *= cLast.a;\n    gradient = mix(cLast, cFst, localM);\n  }\n\n  vec3 color = gradient.rgb;\n  float opacity = gradient.a;\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var ne={maxColorCount:8,maxBallsCount:20},je=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${ne.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_size;\nuniform float u_count;\n\nin vec2 v_objectUV;\n\nout vec4 fragColor;\n\n${d}\n${Y}\nfloat noise(float x) {\n  float i = floor(x);\n  float f = fract(x);\n  float u = f * f * (3.0 - 2.0 * f);\n  vec2 p0 = vec2(i, 0.0);\n  vec2 p1 = vec2(i + 1.0, 0.0);\n  return mix(randomR(p0), randomR(p1), u);\n}\n\nfloat getBallShape(vec2 uv, vec2 c, float p) {\n  float s = .5 * length(uv - c);\n  s = 1. - clamp(s, 0., 1.);\n  s = pow(s, p);\n  return s;\n}\n\nvoid main() {\n  vec2 shape_uv = v_objectUV;\n\n  shape_uv += .5;\n\n  const float firstFrameOffset = 2503.4;\n  float t = .2 * (u_time + firstFrameOffset);\n\n  vec3 totalColor = vec3(0.);\n  float totalShape = 0.;\n  float totalOpacity = 0.;\n\n  for (int i = 0; i < ${ne.maxBallsCount}; i++) {\n    if (i >= int(ceil(u_count))) break;\n\n    float idxFract = float(i) / float(${ne.maxBallsCount});\n    float angle = TWO_PI * idxFract;\n\n    float speed = 1. - .2 * idxFract;\n    float noiseX = noise(angle * 10. + float(i) + t * speed);\n    float noiseY = noise(angle * 20. + float(i) - t * speed);\n\n    vec2 pos = vec2(.5) + 1e-4 + .9 * (vec2(noiseX, noiseY) - .5);\n\n    int safeIndex = i % int(u_colorsCount + 0.5);\n    vec4 ballColor = u_colors[safeIndex];\n    ballColor.rgb *= ballColor.a;\n\n    float sizeFrac = 1.;\n    if (float(i) > floor(u_count - 1.)) {\n      sizeFrac *= fract(u_count);\n    }\n\n    float shape = getBallShape(shape_uv, pos, 45. - 30. * u_size * sizeFrac);\n    shape *= pow(u_size, .2);\n    shape = smoothstep(0., 1., shape);\n\n    totalColor += ballColor.rgb * shape;\n    totalShape += shape;\n    totalOpacity += ballColor.a * shape;\n  }\n\n  totalColor /= max(totalShape, 1e-4);\n  totalOpacity /= max(totalShape, 1e-4);\n\n  float edge_width = fwidth(totalShape);\n  float finalShape = smoothstep(.4, .4 + edge_width, totalShape);\n\n  vec3 color = totalColor * finalShape;\n  float opacity = totalOpacity * finalShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1. - opacity);\n  opacity = opacity + u_colorBack.a * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var Je=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colorFront;\nuniform vec4 u_colorBack;\nuniform float u_proportion;\nuniform float u_softness;\nuniform float u_octaveCount;\nuniform float u_persistence;\nuniform float u_lacunarity;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${q}\n${M}\n\nfloat hash31(vec3 p) {\n  p = fract(p * 0.3183099) + 0.1;\n  p += dot(p, p.yzx + 19.19);\n  return fract(p.x * (p.y + p.z));\n}\n\nvec3 gradientPredefined(float hash) {\n  int idx = int(hash * 12.0) % 12;\n\n  if (idx == 0) return vec3(1, 1, 0);\n  if (idx == 1) return vec3(-1, 1, 0);\n  if (idx == 2) return vec3(1, -1, 0);\n  if (idx == 3) return vec3(-1, -1, 0);\n  if (idx == 4) return vec3(1, 0, 1);\n  if (idx == 5) return vec3(-1, 0, 1);\n  if (idx == 6) return vec3(1, 0, -1);\n  if (idx == 7) return vec3(-1, 0, -1);\n  if (idx == 8) return vec3(0, 1, 1);\n  if (idx == 9) return vec3(0, -1, 1);\n  if (idx == 10) return vec3(0, 1, -1);\n  return vec3(0, -1, -1);// idx == 11\n}\n\nfloat interpolateSafe(float v000, float v001, float v010, float v011,\nfloat v100, float v101, float v110, float v111, vec3 t) {\n  t = clamp(t, 0.0, 1.0);\n\n  float v00 = mix(v000, v100, t.x);\n  float v01 = mix(v001, v101, t.x);\n  float v10 = mix(v010, v110, t.x);\n  float v11 = mix(v011, v111, t.x);\n\n  float v0 = mix(v00, v10, t.y);\n  float v1 = mix(v01, v11, t.y);\n\n  return mix(v0, v1, t.z);\n}\n\nvec3 fade(vec3 t) {\n  return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\n\nfloat perlinNoise(vec3 position, float seed) {\n  position += vec3(seed * 127.1, seed * 311.7, seed * 74.7);\n\n  vec3 i = floor(position);\n  vec3 f = fract(position);\n  float h000 = hash31(i);\n  float h001 = hash31(i + vec3(0, 0, 1));\n  float h010 = hash31(i + vec3(0, 1, 0));\n  float h011 = hash31(i + vec3(0, 1, 1));\n  float h100 = hash31(i + vec3(1, 0, 0));\n  float h101 = hash31(i + vec3(1, 0, 1));\n  float h110 = hash31(i + vec3(1, 1, 0));\n  float h111 = hash31(i + vec3(1, 1, 1));\n  vec3 g000 = gradientPredefined(h000);\n  vec3 g001 = gradientPredefined(h001);\n  vec3 g010 = gradientPredefined(h010);\n  vec3 g011 = gradientPredefined(h011);\n  vec3 g100 = gradientPredefined(h100);\n  vec3 g101 = gradientPredefined(h101);\n  vec3 g110 = gradientPredefined(h110);\n  vec3 g111 = gradientPredefined(h111);\n  float v000 = dot(g000, f - vec3(0, 0, 0));\n  float v001 = dot(g001, f - vec3(0, 0, 1));\n  float v010 = dot(g010, f - vec3(0, 1, 0));\n  float v011 = dot(g011, f - vec3(0, 1, 1));\n  float v100 = dot(g100, f - vec3(1, 0, 0));\n  float v101 = dot(g101, f - vec3(1, 0, 1));\n  float v110 = dot(g110, f - vec3(1, 1, 0));\n  float v111 = dot(g111, f - vec3(1, 1, 1));\n\n  vec3 u = fade(f);\n  return interpolateSafe(v000, v001, v010, v011, v100, v101, v110, v111, u);\n}\n\nfloat p_noise(vec3 position, int octaveCount, float persistence, float lacunarity) {\n  float value = 0.0;\n  float amplitude = 1.0;\n  float frequency = 10.0;\n  octaveCount = clamp(octaveCount, 1, 8);\n\n  for (int i = 0; i < octaveCount; i++) {\n    float seed = float(i) * 0.7319;\n    value += perlinNoise(position * frequency, seed) * amplitude;\n    amplitude *= persistence;\n    frequency *= lacunarity;\n  }\n  return value;\n}\n\nfloat get_max_amp(float persistence, float octaveCount) {\n  persistence = clamp(persistence * 0.999, 0.0, 0.999);\n  octaveCount = clamp(octaveCount, 1.0, 8.0);\n\n  return (1.0 - pow(persistence, octaveCount)) / max(1e-4, (1.0 - persistence));\n}\n\nvoid main() {\n  vec2 uv = v_patternUV;\n  uv *= .5;\n\n  float t = .2 * u_time;\n\n  vec3 p = vec3(uv, t);\n\n  float octCount = floor(u_octaveCount);\n  float noise = p_noise(p, int(octCount), u_persistence, u_lacunarity);\n\n  float max_amp = get_max_amp(u_persistence, octCount);\n  float noise_normalized = clamp((noise + max_amp) / max(1e-4, (2. * max_amp)) + (u_proportion - .5), 0.0, 1.0);\n  float sharpness = clamp(u_softness, 0., 1.);\n  float smooth_w = 0.5 * max(fwidth(noise_normalized), 0.001);\n  float res = smoothstep(\n  .5 - .5 * sharpness - smooth_w,\n  .5 + .5 * sharpness + smooth_w,\n  noise_normalized\n  );\n\n  vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n  float fgOpacity = u_colorFront.a;\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  float bgOpacity = u_colorBack.a;\n\n  vec3 color = fgColor * res;\n  float opacity = fgOpacity * res;\n\n  color += bgColor * (1. - opacity);\n  opacity += bgOpacity * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var xe={maxColorCount:5},Ze=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform float u_scale;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colors[${xe.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_stepsPerColor;\nuniform vec4 u_colorGlow;\nuniform vec4 u_colorGap;\nuniform float u_distortion;\nuniform float u_gap;\nuniform float u_glow;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${te}\n\nvec4 voronoi(vec2 x, float t) {\n  vec2 ip = floor(x);\n  vec2 fp = fract(x);\n\n  vec2 mg, mr;\n  float md = 8.;\n  float rand = 0.;\n\n  for (int j = -1; j <= 1; j++) {\n    for (int i = -1; i <= 1; i++) {\n      vec2 g = vec2(float(i), float(j));\n      vec2 o = randomGB(ip + g);\n      float raw_hash = o.x;\n      o = .5 + u_distortion * sin(t + TWO_PI * o);\n      vec2 r = g + o - fp;\n      float d = dot(r, r);\n\n      if (d < md) {\n        md = d;\n        mr = r;\n        mg = g;\n        rand = raw_hash;\n      }\n    }\n  }\n\n  md = 8.;\n  for (int j = -2; j <= 2; j++) {\n    for (int i = -2; i <= 2; i++) {\n      vec2 g = mg + vec2(float(i), float(j));\n      vec2 o = randomGB(ip + g);\n      o = .5 + u_distortion * sin(t + TWO_PI * o);\n      vec2 r = g + o - fp;\n      if (dot(mr - r, mr - r) > .00001) {\n        md = min(md, dot(.5 * (mr + r), normalize(r - mr)));\n      }\n    }\n  }\n\n  return vec4(md, mr, rand);\n}\n\nvoid main() {\n  vec2 shape_uv = v_patternUV;\n  shape_uv *= 1.25;\n\n  float t = u_time;\n\n  vec4 voronoiRes = voronoi(shape_uv, t);\n\n  float shape = clamp(voronoiRes.w, 0., 1.);\n  float mixer = shape * (u_colorsCount - 1.);\n  mixer = (shape - .5 / u_colorsCount) * u_colorsCount;\n  float steps = max(1., u_stepsPerColor);\n\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  for (int i = 1; i < ${xe.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n    float localT = clamp(mixer - float(i - 1), 0.0, 1.0);\n    localT = round(localT * steps) / steps;\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, localT);\n  }\n\n  if ((mixer < 0.) || (mixer > (u_colorsCount - 1.))) {\n    float localT = mixer + 1.;\n    if (mixer > (u_colorsCount - 1.)) {\n      localT = mixer - (u_colorsCount - 1.);\n    }\n    localT = round(localT * steps) / steps;\n    vec4 cFst = u_colors[0];\n    cFst.rgb *= cFst.a;\n    vec4 cLast = u_colors[int(u_colorsCount - 1.)];\n    cLast.rgb *= cLast.a;\n    gradient = mix(cLast, cFst, localT);\n  }\n\n  vec3 cellColor = gradient.rgb;\n  float cellOpacity = gradient.a;\n\n  float glows = length(voronoiRes.yz * u_glow);\n  glows = pow(glows, 1.5);\n\n  vec3 color = mix(cellColor, u_colorGlow.rgb * u_colorGlow.a, u_colorGlow.a * glows);\n  float opacity = cellOpacity + u_colorGlow.a * glows;\n\n  float edge = voronoiRes.x;\n  float smoothEdge = .02 / (2. * u_scale) * (1. + .5 * u_gap);\n  edge = smoothstep(u_gap - smoothEdge, u_gap + smoothEdge, edge);\n\n  color = mix(u_colorGap.rgb * u_colorGap.a, color, edge);\n  opacity = mix(u_colorGap.a, opacity, edge);\n\n  fragColor = vec4(color, opacity);\n}\n`;var $e=`#version 300 es\nprecision mediump float;\n\nuniform vec4 u_colorFront;\nuniform vec4 u_colorBack;\nuniform float u_shape;\nuniform float u_frequency;\nuniform float u_amplitude;\nuniform float u_spacing;\nuniform float u_proportion;\nuniform float u_softness;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n\nvoid main() {\n  vec2 shape_uv = v_patternUV;\n  shape_uv *= 4.;\n\n  float wave = .5 * cos(shape_uv.x * u_frequency * TWO_PI);\n  float zigzag = 2. * abs(fract(shape_uv.x * u_frequency) - .5);\n  float irregular = sin(shape_uv.x * .25 * u_frequency * TWO_PI) * cos(shape_uv.x * u_frequency * TWO_PI);\n  float irregular2 = .75 * (sin(shape_uv.x * u_frequency * TWO_PI) + .5 * cos(shape_uv.x * .5 * u_frequency * TWO_PI));\n\n  float offset = mix(zigzag, wave, smoothstep(0., 1., u_shape));\n  offset = mix(offset, irregular, smoothstep(1., 2., u_shape));\n  offset = mix(offset, irregular2, smoothstep(2., 3., u_shape));\n  offset *= 2. * u_amplitude;\n\n  float spacing = (.001 + u_spacing);\n  float shape = .5 + .5 * sin((shape_uv.y + offset) * PI / spacing);\n\n  float aa = .0001 + fwidth(shape);\n  float dc = 1. - clamp(u_proportion, 0., 1.);\n  float e0 = dc - u_softness - aa;\n  float e1 = dc + u_softness + aa;\n  float res = smoothstep(min(e0, e1), max(e0, e1), shape);\n\n  vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n  float fgOpacity = u_colorFront.a;\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  float bgOpacity = u_colorBack.a;\n\n  vec3 color = fgColor * res;\n  float opacity = fgOpacity * res;\n\n  color += bgColor * (1. - opacity);\n  opacity += bgOpacity * (1. - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`;var _e={maxColorCount:10},eo=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colors[${_e.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_proportion;\nuniform float u_softness;\nuniform float u_shape;\nuniform float u_shapeScale;\nuniform float u_distortion;\nuniform float u_swirl;\nuniform float u_swirlIterations;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\nfloat randomG(vec2 p) {\n  vec2 uv = floor(p) / 100. + .5;\n  return texture(u_noiseTexture, fract(uv)).g;\n}\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = randomG(i);\n  float b = randomG(i + vec2(1.0, 0.0));\n  float c = randomG(i + vec2(0.0, 1.0));\n  float d = randomG(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\n\nvoid main() {\n  vec2 uv = v_patternUV;\n  uv *= .5;\n\n  const float firstFrameOffset = 118.;\n  float t = 0.0625 * (u_time + firstFrameOffset);\n\n  float n1 = valueNoise(uv * 1. + t);\n  float n2 = valueNoise(uv * 2. - t);\n  float angle = n1 * TWO_PI;\n  uv.x += 4. * u_distortion * n2 * cos(angle);\n  uv.y += 4. * u_distortion * n2 * sin(angle);\n\n  float swirl = u_swirl;\n  for (int i = 1; i <= 20; i++) {\n    if (i >= int(u_swirlIterations)) break;\n    float iFloat = float(i);\n    uv.x += swirl / iFloat * cos(t + iFloat * 1.5 * uv.y);\n    uv.y += swirl / iFloat * cos(t + iFloat * 1. * uv.x);\n  }\n\n  float proportion = clamp(u_proportion, 0., 1.);\n\n  float shape = 0.;\n  if (u_shape < .5) {\n    vec2 checksShape_uv = uv * (.5 + 3.5 * u_shapeScale);\n    shape = .5 + .5 * sin(checksShape_uv.x) * cos(checksShape_uv.y);\n    shape += .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n  } else if (u_shape < 1.5) {\n    vec2 stripesShape_uv = uv * (2. * u_shapeScale);\n    float f = fract(stripesShape_uv.y);\n    shape = smoothstep(.0, .55, f) * (1.0 - smoothstep(.45, 1., f));\n    shape += .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n  } else {\n    float shapeScaling = 5. * (1. - u_shapeScale);\n    float e0 = 0.45 - shapeScaling;\n    float e1 = 0.55 + shapeScaling;\n    shape = smoothstep(min(e0, e1), max(e0, e1), 1.0 - uv.y + 0.3 * (proportion - 0.5));\n  }\n\n  float mixer = shape * (u_colorsCount - 1.);\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  float aa = fwidth(shape);\n  for (int i = 1; i < ${_e.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n    float m = clamp(mixer - float(i - 1), 0.0, 1.0);\n\n    float localMixerStart = floor(m);\n    float softness = .5 * u_softness + fwidth(m);\n    float smoothed = smoothstep(max(0., .5 - softness - aa), min(1., .5 + softness + aa), m - localMixerStart);\n    float stepped = localMixerStart + smoothed;\n\n    m = mix(stepped, m, u_softness);\n\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, m);\n  }\n\n  vec3 color = gradient.rgb;\n  float opacity = gradient.a;\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`,oo={checks:0,stripes:1,edge:2};var ye={maxColorCount:5},to=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorBloom;\nuniform vec4 u_colors[${ye.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_density;\nuniform float u_spotty;\nuniform float u_midSize;\nuniform float u_midIntensity;\nuniform float u_intensity;\nuniform float u_bloom;\n\nin vec2 v_objectUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${Y}\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = randomR(i);\n  float b = randomR(i + vec2(1.0, 0.0));\n  float c = randomR(i + vec2(0.0, 1.0));\n  float d = randomR(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\n${q}\n\nfloat raysShape(vec2 uv, float r, float freq, float intensity, float radius) {\n  float a = atan(uv.y, uv.x);\n  vec2 left = vec2(a * freq, r);\n  vec2 right = vec2(fract(a / TWO_PI) * TWO_PI * freq, r);\n  float n_left = pow(valueNoise(left), intensity);\n  float n_right = pow(valueNoise(right), intensity);\n  float shape = mix(n_right, n_left, smoothstep(-.15, .15, uv.x));\n  return shape;\n}\n\nvoid main() {\n  vec2 shape_uv = v_objectUV;\n\n  float t = .2 * u_time;\n\n  float radius = length(shape_uv);\n  float spots = 6.5 * abs(u_spotty);\n\n  float intensity = 4. - 3. * clamp(u_intensity, 0., 1.);\n\n  float delta = 1. - smoothstep(0., 1., radius);\n\n  float midSize = 10. * abs(u_midSize);\n  float ms_lo = 0.02 * midSize;\n  float ms_hi = max(midSize, 1e-6);\n  float middleShape = pow(u_midIntensity, 0.3) * (1. - smoothstep(ms_lo, ms_hi, 3.0 * radius));\n  middleShape = pow(middleShape, 5.0);\n\n  vec3 accumColor = vec3(0.0);\n  float accumAlpha = 0.0;\n\n  for (int i = 0; i < ${ye.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n\n    vec2 rotatedUV = rotate(shape_uv, float(i) + 1.0);\n\n    float r1 = radius * (1.0 + 0.4 * float(i)) - 3.0 * t;\n    float r2 = 0.5 * radius * (1.0 + spots) - 2.0 * t;\n    float density = 6. * u_density + step(.5, u_density) * pow(4.5 * (u_density - .5), 4.);\n    float f = mix(1.0, 3.0 + 0.5 * float(i), hash11(float(i) * 15.)) * density;\n\n    float ray = raysShape(rotatedUV, r1, 5.0 * f, intensity, radius);\n    ray *= raysShape(rotatedUV, r2, 4.0 * f, intensity, radius);\n    ray += (1. + 4. * ray) * middleShape;\n    ray = clamp(ray, 0.0, 1.0);\n\n    float srcAlpha = u_colors[i].a * ray;\n    vec3 srcColor = u_colors[i].rgb * srcAlpha;\n\n    vec3 alphaBlendColor = accumColor + (1.0 - accumAlpha) * srcColor;\n    float alphaBlendAlpha = accumAlpha + (1.0 - accumAlpha) * srcAlpha;\n\n    vec3 addBlendColor = accumColor + srcColor;\n    float addBlendAlpha = accumAlpha + srcAlpha;\n\n    accumColor = mix(alphaBlendColor, addBlendColor, u_bloom);\n    accumAlpha = mix(alphaBlendAlpha, addBlendAlpha, u_bloom);\n  }\n\n  float overlayAlpha = u_colorBloom.a;\n  vec3 overlayColor = u_colorBloom.rgb * overlayAlpha;\n\n  vec3 colorWithOverlay = accumColor + accumAlpha * overlayColor;\n  accumColor = mix(accumColor, colorWithOverlay, u_bloom);\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n\n  vec3 color = accumColor + (1. - accumAlpha) * bgColor;\n  float opacity = accumAlpha + (1. - accumAlpha) * u_colorBack.a;\n  color = clamp(color, 0., 1.);\n  opacity = clamp(opacity, 0., 1.);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var ao=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorFront;\nuniform float u_density;\nuniform float u_distortion;\nuniform float u_strokeWidth;\nuniform float u_strokeCap;\nuniform float u_strokeTaper;\nuniform float u_noise;\nuniform float u_noiseFrequency;\nuniform float u_softness;\n\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n${T}\n\nvoid main() {\n  vec2 uv = 2. * v_patternUV;\n\n  float t = u_time;\n  float l = length(uv);\n  float density = clamp(u_density, 0., 1.);\n  l = pow(max(l, 1e-6), density);\n  float angle = atan(uv.y, uv.x) - t;\n  float angleNormalised = angle / TWO_PI;\n\n  if (u_noise > 0.) {\n    angleNormalised += .125 * u_noise * snoise(16. * pow(u_noiseFrequency, 3.) * uv);\n  }\n\n  float offset = l + angleNormalised;\n  offset -= u_distortion * (sin(4. * l - .5 * t) * cos(PI + l + .5 * t));\n  float stripe = fract(offset);\n\n  float shape = 2. * abs(stripe - .5);\n  float width = 1. - clamp(u_strokeWidth, .005 * u_strokeTaper, 1.);\n\n\n  float wCap = mix(width, (1. - stripe) * (1. - step(.5, stripe)), (1. - clamp(l, 0., 1.)));\n  width = mix(width, wCap, u_strokeCap);\n  width *= (1. - clamp(u_strokeTaper, 0., 1.) * l);\n\n  float fw = fwidth(offset);\n  float fwMult = 4. - 3. * (smoothstep(.05, .4, 2. * u_strokeWidth) * smoothstep(.05, .4, 2. * (1. - u_strokeWidth)));\n  float pixelSize = mix(fwMult * fw, fwidth(shape), clamp(fw, 0., 1.));\n  pixelSize = mix(pixelSize, .002, u_strokeCap * (1. - clamp(l, 0., 1.)));\n\n  float res = smoothstep(width - pixelSize - u_softness, width + pixelSize + u_softness, shape);\n\n  vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n  float fgOpacity = u_colorFront.a;\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  float bgOpacity = u_colorBack.a;\n\n  vec3 color = fgColor * res;\n  float opacity = fgOpacity * res;\n\n  color += bgColor * (1. - opacity);\n  opacity += bgOpacity * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var be={maxColorCount:10},io=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${be.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_bandCount;\nuniform float u_twist;\nuniform float u_center;\nuniform float u_proportion;\nuniform float u_softness;\nuniform float u_noise;\nuniform float u_noiseFrequency;\n\nin vec2 v_objectUV;\n\nout vec4 fragColor;\n\n${d}\n${T}\n${A}\n\nvoid main() {\n  vec2 shape_uv = v_objectUV;\n\n  float l = length(shape_uv);\n  l = max(1e-4, l);\n\n  float t = u_time;\n\n  float angle = ceil(u_bandCount) * atan(shape_uv.y, shape_uv.x) + t;\n  float angle_norm = angle / TWO_PI;\n\n  float twist = 3. * clamp(u_twist, 0., 1.);\n  float offset = pow(l, -twist) + angle_norm;\n\n  float shape = fract(offset);\n  shape = 1. - abs(2. * shape - 1.);\n  if (u_noise > 0.) {\n    shape += u_noise * snoise(15. * pow(u_noiseFrequency, 2.) * shape_uv);\n  }\n\n  float mid = smoothstep(.2, .2 + .8 * u_center, pow(l, twist));\n  shape = mix(0., shape, mid);\n\n  float proportion = clamp(u_proportion, 0., 1.);\n  float exponent = mix(.25, 1., proportion * 2.);\n  exponent = mix(exponent, 10., max(0., proportion * 2. - 1.));\n  shape = pow(shape, exponent);\n\n  float mixer = shape * u_colorsCount;\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n\n  float outerShape = 0.;\n  for (int i = 1; i < ${be.maxColorCount+1}; i++) {\n    if (i > int(u_colorsCount)) break;\n\n    float m = clamp(mixer - float(i - 1), 0., 1.);\n    float aa = fwidth(m);\n    m = smoothstep(.5 - .5 * u_softness - aa, .5 + .5 * u_softness + aa, m);\n\n    if (i == 1) {\n      outerShape = m;\n    }\n\n    vec4 c = u_colors[i - 1];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, m);\n  }\n\n  float midAA = .1 * fwidth(pow(l, -twist));\n  float outerMid = smoothstep(.2, .2 + midAA, pow(l, twist));\n  outerShape = mix(0., outerShape, outerMid);\n\n  vec3 color = gradient.rgb * outerShape;\n  float opacity = gradient.a * outerShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1.0 - opacity);\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var ro=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec2 u_resolution;\nuniform float u_pixelRatio;\nuniform float u_originX;\nuniform float u_originY;\nuniform float u_worldWidth;\nuniform float u_worldHeight;\nuniform float u_fit;\nuniform float u_scale;\nuniform float u_rotation;\nuniform float u_offsetX;\nuniform float u_offsetY;\n\nuniform float u_pxSize;\nuniform vec4 u_colorBack;\nuniform vec4 u_colorFront;\nuniform float u_shape;\nuniform float u_type;\n\nout vec4 fragColor;\n\n${T}\n${d}\n${q}\n${M}\n\nfloat getSimplexNoise(vec2 uv, float t) {\n  float noise = .5 * snoise(uv - vec2(0., .3 * t));\n  noise += .5 * snoise(2. * uv + vec2(0., .32 * t));\n\n  return noise;\n}\n\nconst int bayer2x2[4] = int[4](0, 2, 3, 1);\nconst int bayer4x4[16] = int[16](\n0, 8, 2, 10,\n12, 4, 14, 6,\n3, 11, 1, 9,\n15, 7, 13, 5\n);\n\nconst int bayer8x8[64] = int[64](\n0, 32, 8, 40, 2, 34, 10, 42,\n48, 16, 56, 24, 50, 18, 58, 26,\n12, 44, 4, 36, 14, 46, 6, 38,\n60, 28, 52, 20, 62, 30, 54, 22,\n3, 35, 11, 43, 1, 33, 9, 41,\n51, 19, 59, 27, 49, 17, 57, 25,\n15, 47, 7, 39, 13, 45, 5, 37,\n63, 31, 55, 23, 61, 29, 53, 21\n);\n\nfloat getBayerValue(vec2 uv, int size) {\n  ivec2 pos = ivec2(fract(uv / float(size)) * float(size));\n  int index = pos.y * size + pos.x;\n\n  if (size == 2) {\n    return float(bayer2x2[index]) / 4.0;\n  } else if (size == 4) {\n    return float(bayer4x4[index]) / 16.0;\n  } else if (size == 8) {\n    return float(bayer8x8[index]) / 64.0;\n  }\n  return 0.0;\n}\n\n\nvoid main() {\n  float t = .5 * u_time;\n\n  float pxSize = u_pxSize * u_pixelRatio;\n  vec2 pxSizeUV = gl_FragCoord.xy - .5 * u_resolution;\n  pxSizeUV /= pxSize;\n  vec2 canvasPixelizedUV = (floor(pxSizeUV) + .5) * pxSize;\n  vec2 normalizedUV = canvasPixelizedUV / u_resolution;\n\n  vec2 ditheringNoiseUV = canvasPixelizedUV;\n  vec2 shapeUV = normalizedUV;\n\n  vec2 boxOrigin = vec2(.5 - u_originX, u_originY - .5);\n  vec2 givenBoxSize = vec2(u_worldWidth, u_worldHeight);\n  givenBoxSize = max(givenBoxSize, vec2(1.)) * u_pixelRatio;\n  float r = u_rotation * PI / 180.;\n  mat2 graphicRotation = mat2(cos(r), sin(r), -sin(r), cos(r));\n  vec2 graphicOffset = vec2(-u_offsetX, u_offsetY);\n\n  float patternBoxRatio = givenBoxSize.x / givenBoxSize.y;\n  vec2 boxSize = vec2(\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\n  );\n  \n  if (u_shape > 3.5) {\n    vec2 objectBoxSize = vec2(0.);\n    // fit = none\n    objectBoxSize.x = min(boxSize.x, boxSize.y);\n    if (u_fit == 1.) { // fit = contain\n      objectBoxSize.x = min(u_resolution.x, u_resolution.y);\n    } else if (u_fit == 2.) { // fit = cover\n      objectBoxSize.x = max(u_resolution.x, u_resolution.y);\n    }\n    objectBoxSize.y = objectBoxSize.x;\n    vec2 objectWorldScale = u_resolution.xy / objectBoxSize;\n\n    shapeUV *= objectWorldScale;\n    shapeUV += boxOrigin * (objectWorldScale - 1.);\n    shapeUV += vec2(-u_offsetX, u_offsetY);\n    shapeUV /= u_scale;\n    shapeUV = graphicRotation * shapeUV;\n  } else {\n    vec2 patternBoxSize = vec2(0.);\n    // fit = none\n    patternBoxSize.x = patternBoxRatio * min(boxSize.x / patternBoxRatio, boxSize.y);\n    float patternWorldNoFitBoxWidth = patternBoxSize.x;\n    if (u_fit == 1.) { // fit = contain\n      patternBoxSize.x = patternBoxRatio * min(u_resolution.x / patternBoxRatio, u_resolution.y);\n    } else if (u_fit == 2.) { // fit = cover\n      patternBoxSize.x = patternBoxRatio * max(u_resolution.x / patternBoxRatio, u_resolution.y);\n    }\n    patternBoxSize.y = patternBoxSize.x / patternBoxRatio;\n    vec2 patternWorldScale = u_resolution.xy / patternBoxSize;\n\n    shapeUV += vec2(-u_offsetX, u_offsetY) / patternWorldScale;\n    shapeUV += boxOrigin;\n    shapeUV -= boxOrigin / patternWorldScale;\n    shapeUV *= u_resolution.xy;\n    shapeUV /= u_pixelRatio;\n    if (u_fit > 0.) {\n      shapeUV *= (patternWorldNoFitBoxWidth / patternBoxSize.x);\n    }\n    shapeUV /= u_scale;\n    shapeUV = graphicRotation * shapeUV;\n    shapeUV += boxOrigin / patternWorldScale;\n    shapeUV -= boxOrigin;\n    shapeUV += .5;\n  }\n\n  float shape = 0.;\n  if (u_shape < 1.5) {\n    // Simplex noise\n    shapeUV *= .001;\n\n    shape = 0.5 + 0.5 * getSimplexNoise(shapeUV, t);\n    shape = smoothstep(0.3, 0.9, shape);\n\n  } else if (u_shape < 2.5) {\n    // Warp\n    shapeUV *= .003;\n\n    for (float i = 1.0; i < 6.0; i++) {\n      shapeUV.x += 0.6 / i * cos(i * 2.5 * shapeUV.y + t);\n      shapeUV.y += 0.6 / i * cos(i * 1.5 * shapeUV.x + t);\n    }\n\n    shape = .15 / max(0.001, abs(sin(t - shapeUV.y - shapeUV.x)));\n    shape = smoothstep(0.02, 1., shape);\n\n  } else if (u_shape < 3.5) {\n    // Dots\n    shapeUV *= .05;\n\n    float stripeIdx = floor(2. * shapeUV.x / TWO_PI);\n    float rand = hash11(stripeIdx * 10.);\n    rand = sign(rand - .5) * pow(.1 + abs(rand), .4);\n    shape = sin(shapeUV.x) * cos(shapeUV.y - 5. * rand * t);\n    shape = pow(abs(shape), 6.);\n\n  } else if (u_shape < 4.5) {\n    // Sine wave\n    shapeUV *= 4.;\n\n    float wave = cos(.5 * shapeUV.x - 2. * t) * sin(1.5 * shapeUV.x + t) * (.75 + .25 * cos(3. * t));\n    shape = 1. - smoothstep(-1., 1., shapeUV.y + wave);\n\n  } else if (u_shape < 5.5) {\n    // Ripple\n\n    float dist = length(shapeUV);\n    float waves = sin(pow(dist, 1.7) * 7. - 3. * t) * .5 + .5;\n    shape = waves;\n\n  } else if (u_shape < 6.5) {\n    // Swirl\n\n    float l = length(shapeUV);\n    float angle = 6. * atan(shapeUV.y, shapeUV.x) + 4. * t;\n    float twist = 1.2;\n    float offset = 1. / pow(max(l, 1e-6), twist) + angle / TWO_PI;\n    float mid = smoothstep(0., 1., pow(l, twist));\n    shape = mix(0., fract(offset), mid);\n\n  } else {\n    // Sphere\n    shapeUV *= 2.;\n\n    float d = 1. - pow(length(shapeUV), 2.);\n    vec3 pos = vec3(shapeUV, sqrt(max(0., d)));\n    vec3 lightPos = normalize(vec3(cos(1.5 * t), .8, sin(1.25 * t)));\n    shape = .5 + .5 * dot(lightPos, pos);\n    shape *= step(0., d);\n  }\n\n\n  int type = int(floor(u_type));\n  float dithering = 0.0;\n\n  switch (type) {\n    case 1: {\n      dithering = step(hash21(ditheringNoiseUV), shape);\n    } break;\n    case 2:\n    dithering = getBayerValue(pxSizeUV, 2);\n    break;\n    case 3:\n    dithering = getBayerValue(pxSizeUV, 4);\n    break;\n    default :\n    dithering = getBayerValue(pxSizeUV, 8);\n    break;\n  }\n\n  dithering -= .5;\n  float res = step(.5, shape + dithering);\n\n  vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n  float fgOpacity = u_colorFront.a;\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  float bgOpacity = u_colorBack.a;\n\n  vec3 color = fgColor * res;\n  float opacity = fgOpacity * res;\n\n  color += bgColor * (1. - opacity);\n  opacity += bgOpacity * (1. - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`,so={simplex:1,warp:2,dots:3,wave:4,ripple:5,swirl:6,sphere:7},lo={random:1,\"2x2\":2,\"4x4\":3,\"8x8\":4};var Ae={maxColorCount:7},no=`#version 300 es\nprecision lowp float;\n\nuniform mediump float u_time;\nuniform mediump vec2 u_resolution;\nuniform mediump float u_pixelRatio;\n\nuniform sampler2D u_noiseTexture;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${Ae.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_softness;\nuniform float u_intensity;\nuniform float u_noise;\nuniform float u_shape;\n\nuniform mediump float u_worldWidth;\nuniform mediump float u_worldHeight;\nuniform mediump float u_fit;\n\nuniform mediump float u_scale;\nuniform mediump float u_rotation;\nuniform mediump float u_offsetX;\nuniform mediump float u_offsetY;\n\nin vec2 v_objectUV;\nin vec2 v_patternUV;\nin vec2 v_objectBoxSize;\nin vec2 v_patternBoxSize;\n\nout vec4 fragColor;\n\n${d}\n${T}\n${A}\n${Y}\n\nfloat valueNoiseR(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = randomR(i);\n  float b = randomR(i + vec2(1.0, 0.0));\n  float c = randomR(i + vec2(0.0, 1.0));\n  float d = randomR(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\nvec4 fbmR(vec2 n0, vec2 n1, vec2 n2, vec2 n3) {\n  float amplitude = 0.2;\n  vec4 total = vec4(0.);\n  for (int i = 0; i < 3; i++) {\n    n0 = rotate(n0, 0.3);\n    n1 = rotate(n1, 0.3);\n    n2 = rotate(n2, 0.3);\n    n3 = rotate(n3, 0.3);\n    total.x += valueNoiseR(n0) * amplitude;\n    total.y += valueNoiseR(n1) * amplitude;\n    total.z += valueNoiseR(n2) * amplitude;\n    total.z += valueNoiseR(n3) * amplitude;\n    n0 *= 1.99;\n    n1 *= 1.99;\n    n2 *= 1.99;\n    n3 *= 1.99;\n    amplitude *= 0.6;\n  }\n  return total;\n}\n\n${q}\n\nvec2 truchet(vec2 uv, float idx){\n  idx = fract(((idx - .5) * 2.));\n  if (idx > 0.75) {\n    uv = vec2(1.0) - uv;\n  } else if (idx > 0.5) {\n    uv = vec2(1.0 - uv.x, uv.y);\n  } else if (idx > 0.25) {\n    uv = 1.0 - vec2(1.0 - uv.x, uv.y);\n  }\n  return uv;\n}\n\nvoid main() {\n\n  const float firstFrameOffset = 7.;\n  float t = .1 * (u_time + firstFrameOffset);\n\n  vec2 shape_uv = vec2(0.);\n  vec2 grain_uv = vec2(0.);\n\n  float r = u_rotation * PI / 180.;\n  float cr = cos(r);\n  float sr = sin(r);\n  mat2 graphicRotation = mat2(cr, sr, -sr, cr);\n  vec2 graphicOffset = vec2(-u_offsetX, u_offsetY);\n\n  if (u_shape > 3.5) {\n    shape_uv = v_objectUV;\n    grain_uv = shape_uv;\n\n    // apply inverse transform to grain_uv so it respects the originXY\n    grain_uv = transpose(graphicRotation) * grain_uv;\n    grain_uv *= u_scale;\n    grain_uv -= graphicOffset;\n    grain_uv *= v_objectBoxSize;\n    grain_uv *= .7;\n  } else {\n    shape_uv = .5 * v_patternUV;\n    grain_uv = 100. * v_patternUV;\n\n    // apply inverse transform to grain_uv so it respects the originXY\n    grain_uv = transpose(graphicRotation) * grain_uv;\n    grain_uv *= u_scale;\n    if (u_fit > 0.) {\n      vec2 givenBoxSize = vec2(u_worldWidth, u_worldHeight);\n      givenBoxSize = max(givenBoxSize, vec2(1.)) * u_pixelRatio;\n      float patternBoxRatio = givenBoxSize.x / givenBoxSize.y;\n      vec2 patternBoxGivenSize = vec2(\n      (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\n      (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\n      );\n      patternBoxRatio = patternBoxGivenSize.x / patternBoxGivenSize.y;\n      float patternBoxNoFitBoxWidth = patternBoxRatio * min(patternBoxGivenSize.x / patternBoxRatio, patternBoxGivenSize.y);\n      grain_uv /= (patternBoxNoFitBoxWidth / v_patternBoxSize.x);\n    }\n    vec2 patternBoxScale = u_resolution.xy / v_patternBoxSize;\n    grain_uv -= graphicOffset / patternBoxScale;\n    grain_uv *= 1.6;\n  }\n\n\n  float shape = 0.;\n\n  if (u_shape < 1.5) {\n    // Sine wave\n\n    float wave = cos(.5 * shape_uv.x - 4. * t) * sin(1.5 * shape_uv.x + 2. * t) * (.75 + .25 * cos(6. * t));\n    shape = 1. - smoothstep(-1., 1., shape_uv.y + wave);\n\n  } else if (u_shape < 2.5) {\n    // Grid (dots)\n\n    float stripeIdx = floor(2. * shape_uv.x / TWO_PI);\n    float rand = hash11(stripeIdx * 100.);\n    rand = sign(rand - .5) * pow(4. * abs(rand), .3);\n    shape = sin(shape_uv.x) * cos(shape_uv.y - 5. * rand * t);\n    shape = pow(abs(shape), 4.);\n\n  } else if (u_shape < 3.5) {\n    // Truchet pattern\n\n    float n2 = valueNoiseR(shape_uv * .4 - 3.75 * t);\n    shape_uv.x += 10.;\n    shape_uv *= .6;\n\n    vec2 tile = truchet(fract(shape_uv), randomR(floor(shape_uv)));\n\n    float distance1 = length(tile);\n    float distance2 = length(tile - vec2(1.));\n\n    n2 -= .5;\n    n2 *= .1;\n    shape = smoothstep(.2, .55, distance1 + n2) * (1. - smoothstep(.45, .8, distance1 - n2));\n    shape += smoothstep(.2, .55, distance2 + n2) * (1. - smoothstep(.45, .8, distance2 - n2));\n\n    shape = pow(shape, 1.5);\n\n  } else if (u_shape < 4.5) {\n    // Corners\n\n    shape_uv *= .6;\n    vec2 outer = vec2(.5);\n\n    vec2 bl = smoothstep(vec2(0.), outer, shape_uv + vec2(.1 + .1 * sin(3. * t), .2 - .1 * sin(5.25 * t)));\n    vec2 tr = smoothstep(vec2(0.), outer, 1. - shape_uv);\n    shape = 1. - bl.x * bl.y * tr.x * tr.y;\n\n    shape_uv = -shape_uv;\n    bl = smoothstep(vec2(0.), outer, shape_uv + vec2(.1 + .1 * sin(3. * t), .2 - .1 * cos(5.25 * t)));\n    tr = smoothstep(vec2(0.), outer, 1. - shape_uv);\n    shape -= bl.x * bl.y * tr.x * tr.y;\n\n    shape = 1. - smoothstep(0., 1., shape);\n\n  } else if (u_shape < 5.5) {\n    // Ripple\n\n    shape_uv *= 2.;\n    float dist = length(.4 * shape_uv);\n    float waves = sin(pow(dist, 1.2) * 5. - 3. * t) * .5 + .5;\n    shape = waves;\n\n  } else if (u_shape < 6.5) {\n    // Blob\n\n    t *= 2.;\n\n    vec2 f1_traj = .25 * vec2(1.3 * sin(t), .2 + 1.3 * cos(.6 * t + 4.));\n    vec2 f2_traj = .2 * vec2(1.2 * sin(-t), 1.3 * sin(1.6 * t));\n    vec2 f3_traj = .25 * vec2(1.7 * cos(-.6 * t), cos(-1.6 * t));\n    vec2 f4_traj = .3 * vec2(1.4 * cos(.8 * t), 1.2 * sin(-.6 * t - 3.));\n\n    shape = .5 * pow(1. - clamp(0., 1., length(shape_uv + f1_traj)), 5.);\n    shape += .5 * pow(1. - clamp(0., 1., length(shape_uv + f2_traj)), 5.);\n    shape += .5 * pow(1. - clamp(0., 1., length(shape_uv + f3_traj)), 5.);\n    shape += .5 * pow(1. - clamp(0., 1., length(shape_uv + f4_traj)), 5.);\n\n    shape = smoothstep(.0, .9, shape);\n    float edge = smoothstep(.25, .3, shape);\n    shape = mix(.0, shape, edge);\n\n  } else {\n    // Sphere\n\n    shape_uv *= 2.;\n    float d = 1. - pow(length(shape_uv), 2.);\n    vec3 pos = vec3(shape_uv, sqrt(max(d, 0.)));\n    vec3 lightPos = normalize(vec3(cos(1.5 * t), .8, sin(1.25 * t)));\n    shape = .5 + .5 * dot(lightPos, pos);\n    shape *= step(0., d);\n  }\n\n  float baseNoise = snoise(grain_uv * .5);\n  vec4 fbmVals = fbmR(\n  .002 * grain_uv + 10.,\n  .003 * grain_uv,\n  .001 * grain_uv,\n  rotate(.4 * grain_uv, 2.)\n  );\n  float grainDist = baseNoise * snoise(grain_uv * .2) - fbmVals.x - fbmVals.y;\n  float rawNoise = .75 * baseNoise - fbmVals.w - fbmVals.z;\n  float noise = clamp(rawNoise, 0., 1.);\n\n  shape += u_intensity * 2. / u_colorsCount * (grainDist + .5);\n  shape += u_noise * 10. / u_colorsCount * noise;\n\n  float aa = fwidth(shape);\n\n  shape = clamp(shape - .5 / u_colorsCount, 0., 1.);\n  float totalShape = smoothstep(0., u_softness + 2. * aa, clamp(shape * u_colorsCount, 0., 1.));\n  float mixer = shape * (u_colorsCount - 1.);\n\n  int cntStop = int(u_colorsCount) - 1;\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  for (int i = 1; i < ${Ae.maxColorCount}; i++) {\n    if (i > cntStop) break;\n\n    float localT = clamp(mixer - float(i - 1), 0., 1.);\n    localT = smoothstep(.5 - .5 * u_softness - aa, .5 + .5 * u_softness + aa, localT);\n\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, localT);\n  }\n\n  vec3 color = gradient.rgb * totalShape;\n  float opacity = gradient.a * totalShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1.0 - opacity);\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`,co={wave:1,dots:2,truchet:3,corners:4,ripple:5,blob:6,sphere:7};var ce={maxColorCount:5,maxSpots:4},uo=`#version 300 es\nprecision lowp float;\n\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${ce.maxColorCount}];\nuniform float u_colorsCount;\nuniform float u_roundness;\nuniform float u_thickness;\nuniform float u_marginLeft;\nuniform float u_marginRight;\nuniform float u_marginTop;\nuniform float u_marginBottom;\nuniform float u_aspectRatio;\nuniform float u_softness;\nuniform float u_intensity;\nuniform float u_bloom;\nuniform float u_spotSize;\nuniform float u_spots;\nuniform float u_pulse;\nuniform float u_smoke;\nuniform float u_smokeSize;\n\nuniform sampler2D u_noiseTexture;\n\nin vec2 v_responsiveUV;\nin vec2 v_responsiveBoxGivenSize;\nin vec2 v_patternUV;\n\nout vec4 fragColor;\n\n${d}\n\nfloat beat(float time) {\n  float first = pow(abs(sin(time * TWO_PI)), 10.);\n  float second = pow(abs(sin((time - .15) * TWO_PI)), 10.);\n\n  return clamp(first + 0.6 * second, 0.0, 1.0);\n}\n\nfloat sst(float edge0, float edge1, float x) {\n  return smoothstep(edge0, edge1, x);\n}\n\nfloat roundedBox(vec2 uv, vec2 halfSize, float distance, float cornerDistance, float thickness, float softness) {\n  float borderDistance = abs(distance);\n  float aa = 2. * fwidth(distance);\n  float border = 1. - sst(min(mix(thickness, -thickness, softness), thickness + aa), max(mix(thickness, -thickness, softness), thickness + aa), borderDistance);\n  float cornerFadeCircles = 0.;\n  cornerFadeCircles = mix(1., cornerFadeCircles, sst(0., 1., length((uv + halfSize) / thickness)));\n  cornerFadeCircles = mix(1., cornerFadeCircles, sst(0., 1., length((uv - vec2(-halfSize.x, halfSize.y)) / thickness)));\n  cornerFadeCircles = mix(1., cornerFadeCircles, sst(0., 1., length((uv - vec2(halfSize.x, -halfSize.y)) / thickness)));\n  cornerFadeCircles = mix(1., cornerFadeCircles, sst(0., 1., length((uv - halfSize) / thickness)));\n  aa = fwidth(cornerDistance);\n  float cornerFade = sst(0., mix(aa, thickness, softness), cornerDistance);\n  cornerFade *= cornerFadeCircles;\n  border += cornerFade;\n  return border;\n}\n\n${te}\n\nfloat randomG(vec2 p) {\n  vec2 uv = floor(p) / 100. + .5;\n  return texture(u_noiseTexture, fract(uv)).g;\n}\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = randomG(i);\n  float b = randomG(i + vec2(1.0, 0.0));\n  float c = randomG(i + vec2(0.0, 1.0));\n  float d = randomG(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nvoid main() {\n  const float firstFrameOffset = 109.;\n  float t = 1.2 * (u_time + firstFrameOffset);\n\n  vec2 borderUV = v_responsiveUV;\n  float pulse = u_pulse * beat(.18 * u_time);\n\n  float canvasRatio = v_responsiveBoxGivenSize.x / v_responsiveBoxGivenSize.y;\n  vec2 halfSize = vec2(.5);\n  borderUV.x *= max(canvasRatio, 1.);\n  borderUV.y /= min(canvasRatio, 1.);\n  halfSize.x *= max(canvasRatio, 1.);\n  halfSize.y /= min(canvasRatio, 1.);\n\n  float mL = u_marginLeft;\n  float mR = u_marginRight;\n  float mT = u_marginTop;\n  float mB = u_marginBottom;\n  float mX = mL + mR;\n  float mY = mT + mB;\n\n  if (u_aspectRatio > 0.) {\n    float shapeRatio = canvasRatio * (1. - mX) / max(1. - mY, 1e-6);\n    float freeX = shapeRatio > 1. ? (1. - mX) * (1. - 1. / max(abs(shapeRatio), 1e-6)) : 0.;\n    float freeY = shapeRatio < 1. ? (1. - mY) * (1. - shapeRatio) : 0.;\n    mL += freeX * 0.5;\n    mR += freeX * 0.5;\n    mT += freeY * 0.5;\n    mB += freeY * 0.5;\n    mX = mL + mR;\n    mY = mT + mB;\n  }\n\n  float thickness = .5 * u_thickness * min(halfSize.x, halfSize.y);\n\n  halfSize.x *= (1. - mX);\n  halfSize.y *= (1. - mY);\n\n  vec2 centerShift = vec2(\n  (mL - mR) * max(canvasRatio, 1.) * 0.5,\n  (mB - mT) / min(canvasRatio, 1.) * 0.5\n  );\n\n  borderUV -= centerShift;\n  halfSize -= mix(thickness, 0., u_softness);\n\n  float radius = mix(0., min(halfSize.x, halfSize.y), u_roundness);\n  vec2 d = abs(borderUV) - halfSize + radius;\n  float outsideDistance = length(max(d, .0001)) - radius;\n  float insideDistance = min(max(d.x, d.y), .0001);\n  float cornerDistance = abs(min(max(d.x, d.y) - .45 * radius, .0));\n  float distance = outsideDistance + insideDistance;\n\n  float borderThickness = mix(thickness, 3. * thickness, u_softness);\n  float border = roundedBox(borderUV, halfSize, distance, cornerDistance, borderThickness, u_softness);\n  border = pow(border, 1. + u_softness);\n\n  vec2 smokeUV = .3 * u_smokeSize * v_patternUV;\n  float smoke = clamp(3. * valueNoise(2.7 * smokeUV + .5 * t), 0., 1.);\n  smoke -= valueNoise(3.4 * smokeUV - .5 * t);\n  float smokeThickness = thickness + .2;\n  smokeThickness = min(.4, max(smokeThickness, .1));\n  smoke *= roundedBox(borderUV, halfSize, distance, cornerDistance, smokeThickness, 1.);\n  smoke = 30. * smoke * smoke;\n  smoke *= mix(0., .5, pow(u_smoke, 2.));\n  smoke *= mix(1., pulse, u_pulse);\n  smoke = clamp(smoke, 0., 1.);\n  border += smoke;\n\n  border = clamp(border, 0., 1.);\n\n  vec3 blendColor = vec3(0.);\n  float blendAlpha = 0.;\n  vec3 addColor = vec3(0.);\n  float addAlpha = 0.;\n\n  float bloom = 4. * u_bloom;\n  float intensity = 1. + (1. + 4. * u_softness) * u_intensity;\n\n  float angle = atan(borderUV.y, borderUV.x) / TWO_PI;\n\n  for (int colorIdx = 0; colorIdx < ${ce.maxColorCount}; colorIdx++) {\n    if (colorIdx >= int(u_colorsCount)) break;\n    float colorIdxF = float(colorIdx);\n\n    vec3 c = u_colors[colorIdx].rgb * u_colors[colorIdx].a;\n    float a = u_colors[colorIdx].a;\n\n    for (int spotIdx = 0; spotIdx < ${ce.maxSpots}; spotIdx++) {\n      if (spotIdx >= int(u_spots)) break;\n      float spotIdxF = float(spotIdx);\n\n      vec2 randVal = randomGB(vec2(spotIdxF * 10. + 2., 40. + colorIdxF));\n\n      float time = (.1 + .15 * abs(sin(spotIdxF * (2. + colorIdxF)) * cos(spotIdxF * (2. + 2.5 * colorIdxF)))) * t + randVal.x * 3.;\n      time *= mix(1., -1., step(.5, randVal.y));\n\n      float mask = .5 + .5 * mix(\n      sin(t + spotIdxF * (5. - 1.5 * colorIdxF)),\n      cos(t + spotIdxF * (3. + 1.3 * colorIdxF)),\n      step(mod(colorIdxF, 2.), .5)\n      );\n\n      float p = clamp(2. * u_pulse - randVal.x, 0., 1.);\n      mask = mix(mask, pulse, p);\n\n      float atg1 = fract(angle + time);\n      float spotSize = .05 + .6 * pow(u_spotSize, 2.) + .05 * randVal.x;\n      spotSize = mix(spotSize, .1, p);\n      float sector = sst(.5 - spotSize, .5, atg1) * (1. - sst(.5, .5 + spotSize, atg1));\n\n      sector *= mask;\n      sector *= border;\n      sector *= intensity;\n      sector = clamp(sector, 0., 1.);\n\n      vec3 srcColor = c * sector;\n      float srcAlpha = a * sector;\n\n      blendColor += ((1. - blendAlpha) * srcColor);\n      blendAlpha = blendAlpha + (1. - blendAlpha) * srcAlpha;\n      addColor += srcColor;\n      addAlpha += srcAlpha;\n    }\n  }\n\n  vec3 accumColor = mix(blendColor, addColor, bloom);\n  float accumAlpha = mix(blendAlpha, addAlpha, bloom);\n  accumAlpha = clamp(accumAlpha, 0., 1.);\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  vec3 color = accumColor + (1. - accumAlpha) * bgColor;\n  float opacity = accumAlpha + (1. - accumAlpha) * u_colorBack.a;\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}`,fo={auto:0,square:1};var ue={maxColorCount:7},mo=`#version 300 es\nprecision lowp float;\n\nuniform float u_time;\nuniform mediump float u_scale;\n\nuniform vec4 u_colors[${ue.maxColorCount}];\nuniform float u_colorsCount;\nuniform vec4 u_colorBack;\nuniform float u_density;\nuniform float u_angle1;\nuniform float u_angle2;\nuniform float u_length;\nuniform bool u_edges;\nuniform float u_blur;\nuniform float u_fadeIn;\nuniform float u_fadeOut;\nuniform float u_gradient;\n\nin vec2 v_objectUV;\n\nout vec4 fragColor;\n\n${d}\n\nconst float zLimit = .5;\n\nvec2 getPanel(float angle, vec2 uv, float invLength, float aa) {\n  float sinA = sin(angle);\n  float cosA = cos(angle);\n\n  float denom = sinA - uv.y * cosA;\n  if (abs(denom) < .01) return vec2(0.);\n\n  float z = uv.y / denom;\n\n  if (z <= 0. || z > zLimit) return vec2(0.);\n\n  float zRatio = z / zLimit;\n  float panelMap = 1. - zRatio;\n  float x = uv.x * (cosA * z + 1.) * invLength;\n\n  float zOffset = zRatio - .5;\n  float left = -.5 + zOffset * u_angle1;\n  float right = .5 - zOffset * u_angle2;\n  float blurX = aa + 2. * panelMap * u_blur;\n\n  float leftEdge1 = left - blurX;\n  float leftEdge2 = left + .25 * blurX;\n  float rightEdge1 = right - .25 * blurX;\n  float rightEdge2 = right + blurX;\n\n  float panel = smoothstep(leftEdge1, leftEdge2, x) * (1.0 - smoothstep(rightEdge1, rightEdge2, x));\n  panel *= mix(0., panel, smoothstep(0., .01 / u_scale, panelMap));\n\n  float midScreen = abs(sinA);\n  if (u_edges == true) {\n    panelMap = mix(.99, panelMap, panel * clamp(panelMap / (.15 * (1. - pow(midScreen, .1))), 0.0, 1.0));\n  } else if (midScreen < .07) {\n    panel *= (midScreen * 15.);\n  }\n\n  return vec2(panel, panelMap);\n}\n\nvec4 blendColor(vec4 colorA, float panelMask, float panelMap) {\n  float fade = 1. - smoothstep(.97 - .97 * u_fadeIn, 1., panelMap);\n\n  fade *= smoothstep(-.2 * (1. - u_fadeOut), u_fadeOut, panelMap);\n\n  vec3 blendedRGB = mix(vec3(0.), colorA.rgb, fade);\n  float blendedAlpha = mix(0., colorA.a, fade);\n\n  return vec4(blendedRGB, blendedAlpha) * panelMask;\n}\n\nvoid main() {\n  vec2 uv = v_objectUV;\n  uv *= 1.25;\n\n  float t = .02 * u_time;\n  t = fract(t);\n  bool reverseTime = (t < 0.5);\n\n  vec3 color = vec3(0.);\n  float opacity = 0.;\n\n  float aa = .005 / u_scale;\n  int colorsCount = int(u_colorsCount);\n\n  vec4 premultipliedColors[${ue.maxColorCount}];\n  for (int i = 0; i < ${ue.maxColorCount}; i++) {\n    if (i >= colorsCount) break;\n    vec4 c = u_colors[i];\n    c.rgb *= c.a;\n    premultipliedColors[i] = c;\n  }\n\n  float invLength = 1.5 / max(u_length, .001);\n\n  float totalColorWeight = 0.;\n  int panelsNumber = 12;\n\n  float densityNormalizer = 1.;\n  if (colorsCount == 4) {\n    panelsNumber = 16;\n    densityNormalizer = 1.34;\n  } else if (colorsCount == 5) {\n    panelsNumber = 20;\n    densityNormalizer = 1.67;\n  } else if (colorsCount == 7) {\n    panelsNumber = 14;\n    densityNormalizer = 1.17;\n  }\n\n  float fPanelsNumber = float(panelsNumber);\n\n  float totalPanelsShape = 0.;\n  float panelGrad = 1. - clamp(u_gradient, 0., 1.);\n\n  for (int set = 0; set < 2; set++) {\n    bool isForward = (set == 0 && !reverseTime) || (set == 1 && reverseTime);\n    if (!isForward) continue;\n\n    for (int i = 0; i <= 20; i++) {\n      if (i >= panelsNumber) break;\n\n      int idx = panelsNumber - 1 - i;\n\n      float offset = float(idx) / fPanelsNumber;\n      if (set == 1) {\n        offset += .5;\n      }\n\n      float densityFract = densityNormalizer * fract(t + offset);\n      float angleNorm = densityFract / u_density;\n      if (densityFract >= .5 || angleNorm >= .3) continue;\n\n      float smoothDensity = clamp((.5 - densityFract) / .1, 0., 1.) * clamp(densityFract / .01, 0., 1.);\n      float smoothAngle = clamp((.3 - angleNorm) / .05, 0., 1.);\n      if (smoothDensity * smoothAngle < .001) continue;\n\n      if (angleNorm > .5) {\n        angleNorm = 0.5;\n      }\n      vec2 panel = getPanel(angleNorm * TWO_PI + PI, uv, invLength, aa);\n      if (panel[0] <= .001) continue;\n      float panelMask = panel[0] * smoothDensity * smoothAngle;\n      float panelMap = panel[1];\n\n      int colorIdx = idx % colorsCount;\n      int nextColorIdx = (idx + 1) % colorsCount;\n\n      vec4 colorA = premultipliedColors[colorIdx];\n      vec4 colorB = premultipliedColors[nextColorIdx];\n\n      colorA = mix(colorA, colorB, max(0., smoothstep(.0, .45, panelMap) - panelGrad));\n      vec4 blended = blendColor(colorA, panelMask, panelMap);\n      color = blended.rgb + color * (1. - blended.a);\n      opacity = blended.a + opacity * (1. - blended.a);\n    }\n\n\n    for (int i = 0; i <= 20; i++) {\n      if (i >= panelsNumber) break;\n\n      int idx = panelsNumber - 1 - i;\n\n      float offset = float(idx) / fPanelsNumber;\n      if (set == 0) {\n        offset += .5;\n      }\n\n      float densityFract = densityNormalizer * fract(-t + offset);\n      float angleNorm = -densityFract / u_density;\n      if (densityFract >= .5 || angleNorm < -.3) continue;\n\n      float smoothDensity = clamp((.5 - densityFract) / .1, 0., 1.) * clamp(densityFract / .01, 0., 1.);\n      float smoothAngle = clamp((angleNorm + .3) / .05, 0., 1.);\n      if (smoothDensity * smoothAngle < .001) continue;\n\n      vec2 panel = getPanel(angleNorm * TWO_PI + PI, uv, invLength, aa);\n      float panelMask = panel[0] * smoothDensity * smoothAngle;\n      if (panelMask <= .001) continue;\n      float panelMap = panel[1];\n\n      int colorIdx = (colorsCount - (idx % colorsCount)) % colorsCount;\n      if (colorIdx < 0) colorIdx += colorsCount;\n      int nextColorIdx = (colorIdx + 1) % colorsCount;\n\n      vec4 colorA = premultipliedColors[colorIdx];\n      vec4 colorB = premultipliedColors[nextColorIdx];\n\n      colorA = mix(colorA, colorB, max(0., smoothstep(.0, .45, panelMap) - panelGrad));\n      vec4 blended = blendColor(colorA, panelMask, panelMap);\n      color = blended.rgb + color * (1. - blended.a);\n      opacity = blended.a + opacity * (1. - blended.a);\n    }\n  }\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1.0 - opacity);\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`;var Ce={maxColorCount:10},po=`#version 300 es\nprecision mediump float;\n\nuniform vec4 u_colors[${Ce.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_positions;\nuniform float u_waveX;\nuniform float u_waveXShift;\nuniform float u_waveY;\nuniform float u_waveYShift;\nuniform float u_mixing;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\n\nin vec2 v_objectUV;\nout vec4 fragColor;\n\n${d}\n${A}\n${M}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1.0, 0.0));\n  float c = hash21(i + vec2(0.0, 1.0));\n  float d = hash21(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat noise(vec2 n, vec2 seedOffset) {\n  return valueNoise(n + seedOffset);\n}\n\nvec2 getPosition(int i, float t) {\n  float a = float(i) * .37;\n  float b = .6 + mod(float(i), 3.) * .3;\n  float c = .8 + mod(float(i + 1), 4.) * 0.25;\n\n  float x = sin(t * b + a);\n  float y = cos(t * c + a * 1.5);\n\n  return .5 + .5 * vec2(x, y);\n}\n\nvoid main() {\n  vec2 uv = v_objectUV;\n  uv += .5;\n  vec2 grainUV = uv * 1000.;\n\n  float mixerGrain = 0.;\n  if (u_grainMixer > 0.) {\n    mixerGrain = .4 * u_grainMixer * (noise(grainUV, vec2(0.)) - .5);\n  }\n\n  float radius = smoothstep(0., 1., length(uv - .5));\n  float center = 1. - radius;\n  for (float i = 1.; i <= 2.; i++) {\n    uv.x += u_waveX * center / i * cos(TWO_PI * u_waveXShift + i * 2. * smoothstep(.0, 1., uv.y));\n    uv.y += u_waveY * center / i * cos(TWO_PI * u_waveYShift + i * 2. * smoothstep(.0, 1., uv.x));\n  }\n\n  vec3 color = vec3(0.);\n  float opacity = 0.;\n  float totalWeight = 0.;\n  float positionSeed = 25. + .33 * u_positions;\n\n  for (int i = 0; i < ${Ce.maxColorCount}; i++) {\n    if (i >= int(u_colorsCount)) break;\n\n    vec2 pos = getPosition(i, positionSeed) + mixerGrain;\n    float dist = length(uv - pos);\n\n    vec3 colorFraction = u_colors[i].rgb * u_colors[i].a;\n    float opacityFraction = u_colors[i].a;\n\n    float mixing = pow(u_mixing, .7);\n    float power = mix(2., 1., mixing);\n    dist = pow(dist, power);\n\n    float w = 1. / (dist + 1e-3);\n    float baseSharpness = mix(.0, 8., clamp(w, 0., 1.));\n    float sharpness = mix(baseSharpness, 1., mixing);\n    w = pow(w, sharpness);\n    color += colorFraction * w;\n    opacity += opacityFraction * w;\n    totalWeight += w;\n  }\n\n  color /= max(1e-4, totalWeight);\n  opacity /= max(1e-4, totalWeight);\n\n  if (u_grainOverlay > 0.) {\n    float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grainOverlay = pow(grainOverlay, 1.3);\n\n    float grainOverlayV = grainOverlay * 2. - 1.;\n    vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n    float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n    grainOverlayStrength = pow(grainOverlayStrength, .8);\n    color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);\n\n    opacity += .5 * grainOverlayStrength;\n  }\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`;var we={maxColorCount:10},go=`#version 300 es\nprecision mediump float;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${we.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_radius;\nuniform float u_focalDistance;\nuniform float u_focalAngle;\nuniform float u_falloff;\nuniform float u_mixing;\nuniform float u_distortion;\nuniform float u_distortionShift;\nuniform float u_distortionFreq;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\n\nin vec2 v_objectUV;\nout vec4 fragColor;\n\n${d}\n${A}\n${M}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1.0, 0.0));\n  float c = hash21(i + vec2(0.0, 1.0));\n  float d = hash21(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat noise(vec2 n, vec2 seedOffset) {\n  return valueNoise(n + seedOffset);\n}\n\nvec2 getPosition(int i, float t) {\n  float a = float(i) * .37;\n  float b = .6 + mod(float(i), 3.) * .3;\n  float c = .8 + mod(float(i + 1), 4.) * 0.25;\n\n  float x = sin(t * b + a);\n  float y = cos(t * c + a * 1.5);\n\n  return .5 + .5 * vec2(x, y);\n}\n\nvoid main() {\n  vec2 uv = 2. * v_objectUV;\n  vec2 grainUV = uv * 1000.;\n\n  vec2 center = vec2(0.);\n  float angleRad = -radians(u_focalAngle + 90.);\n  vec2 focalPoint = vec2(cos(angleRad), sin(angleRad)) * u_focalDistance;\n  float radius = u_radius;\n\n  vec2 c_to_uv = uv - center;\n  vec2 f_to_uv = uv - focalPoint;\n  vec2 f_to_c = center - focalPoint;\n  float r = length(c_to_uv);\n\n  float fragAngle = atan(c_to_uv.y, c_to_uv.x);\n  float angleDiff = fract((fragAngle - angleRad + PI) / TWO_PI) * TWO_PI - PI;\n\n  float halfAngle = acos(clamp(radius / max(u_focalDistance, 1e-4), 0.0, 1.0));\n  float e0 = 0.6 * PI, e1 = halfAngle;\n  float lo = min(e0, e1), hi = max(e0, e1);\n  float s  = smoothstep(lo, hi, abs(angleDiff));\n  float isInSector = (e1 >= e0) ? (1.0 - s) : s;\n\n  float a = dot(f_to_uv, f_to_uv);\n  float b = -2.0 * dot(f_to_uv, f_to_c);\n  float c = dot(f_to_c, f_to_c) - radius * radius;\n\n  float discriminant = b * b - 4.0 * a * c;\n  float t = 1.0;\n\n  if (discriminant >= 0.0) {\n    float sqrtD = sqrt(discriminant);\n    float div = max(1e-4, 2.0 * a);\n    float t0 = (-b - sqrtD) / div;\n    float t1 = (-b + sqrtD) / div;\n    t = max(t0, t1);\n    if (t < 0.0) t = 0.0;\n  }\n\n  float dist = length(f_to_uv);\n  float normalized = dist / max(1e-4, length(f_to_uv * t));\n  float shape = clamp(normalized, 0.0, 1.0);\n\n  float falloffMapped = mix(.2 + .8 * max(0., u_falloff + 1.), mix(1., 15., u_falloff * u_falloff), step(.0, u_falloff));\n\n  float falloffExp = mix(falloffMapped, 1., shape);\n  shape = pow(shape, falloffExp);\n  shape = 1. - clamp(shape, 0., 1.);\n\n\n  float outerMask = .002;\n  float outer = 1.0 - smoothstep(radius - outerMask, radius + outerMask, r);\n  outer = mix(outer, 1., isInSector);\n\n  shape = mix(0., shape, outer);\n  shape *= 1. - smoothstep(radius - .01, radius, r);\n\n  float angle = atan(f_to_uv.y, f_to_uv.x);\n  shape -= pow(u_distortion, 2.) * shape * pow(abs(sin(PI * clamp(length(f_to_uv) - 0.2 + u_distortionShift, 0.0, 1.0))), 4.0) * (sin(u_distortionFreq * angle) + cos(floor(0.65 * u_distortionFreq) * angle));\n\n  float mixerGrain = 0.;\n  if (u_grainMixer > 0.) {\n    mixerGrain = .4 * u_grainMixer * (noise(grainUV, vec2(0.)) - .5);\n  }\n\n  float mixer = shape * u_colorsCount + mixerGrain;\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n\n  float outerShape = 0.;\n  for (int i = 1; i < ${we.maxColorCount+1}; i++) {\n    if (i > int(u_colorsCount)) break;\n    float mLinear = clamp(mixer - float(i - 1), 0.0, 1.0);\n\n    float aa = fwidth(mLinear);\n    float width = min(u_mixing, 0.5);\n    float t = clamp((mLinear - (0.5 - width - aa)) / (2. * width + 2. * aa), 0., 1.);\n    float p = mix(2., 1., clamp((u_mixing - 0.5) * 2., 0., 1.));\n    float m = t < 0.5\n      ? 0.5 * pow(2. * t, p)\n      : 1. - 0.5 * pow(2. * (1. - t), p);\n\n    float quadBlend = clamp((u_mixing - 0.5) * 2., 0., 1.);\n    m = mix(m, m * m, 0.5 * quadBlend);\n    \n    if (i == 1) {\n      outerShape = m;\n    }\n\n    vec4 c = u_colors[i - 1];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, m);\n  }\n\n  vec3 color = gradient.rgb * outerShape;\n  float opacity = gradient.a * outerShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1.0 - opacity);\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\n\n  if (u_grainOverlay > 0.) {\n    float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grainOverlay = pow(grainOverlay, 1.3);\n\n    float grainOverlayV = grainOverlay * 2. - 1.;\n    vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n    float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n    grainOverlayStrength = pow(grainOverlayStrength, .8);\n    color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);\n\n    opacity += .5 * grainOverlayStrength;\n  }\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`;var fe={maxCrumpleCount:15},vo=`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_image;\nuniform bool u_isImage;\nuniform float u_imageAspectRatio;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorPaper;\nuniform vec4 u_colorShadow;\n\nuniform float u_blending;\nuniform float u_distortion;\nuniform bool u_clip;\nuniform float u_angle;\nuniform float u_seed;\n\nuniform float u_roughness;\nuniform float u_roughnessSize;\nuniform float u_roughnessRows;\nuniform float u_fiber;\nuniform float u_fiberSize;\nuniform float u_folds;\nuniform float u_foldSizeX;\nuniform float u_foldSizeY;\nuniform float u_foldOffsetX;\nuniform float u_foldOffsetY;\nuniform float u_wrinkles;\nuniform float u_wrinkleSize;\nuniform float u_crumples;\nuniform float u_crumpleCount;\nuniform float u_drops;\n\nuniform sampler2D u_noiseTexture;\n\nin vec2 v_imageUV;\nout vec4 fragColor;\n\nfloat getUvFrame(vec2 uv) {\n  vec2 invAA = .5 / clamp(fwidth(uv), 1e-5, .02);\n  vec2 lo = clamp(uv * invAA + .5, 0., 1.);\n  vec2 hi = clamp((1. - uv) * invAA + .5, 0., 1.);\n  return lo.x * hi.x * lo.y * hi.y;\n}\n\nfloat lst(float edge0, float edge1, float x) {\n  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\n${d}\n${M}\n${Fe}\n\nfloat getRoughness(vec2 p, vec2 lightDir, vec2 seedShift, float basePixel) {\n  vec2 u = p / vec2(2, 4);\n  float w = 100. * basePixel;\n  float eps = 4. * w;\n\n  float size = mix(3.2, .8, u_roughnessSize);\n  float logLac = log2(2.1);\n  float level = -log2(w + 1e-8) / logLac;\n  float baseLevel = floor(level) - 2.;\n  float fade = fract(level);\n\n  vec2 px = (u.x + vec2(eps, -eps)) * .1;\n  float py = u.y * .1;\n\n  vec2 sum = vec2(0.);\n  float norm = 0., amp = .5;\n  float freq = exp2(baseLevel * logLac);\n  for (int i = 0; i < 4; i++) {\n    float absIdx = baseLevel + float(i);\n    vec2 qx = size * px * freq;\n    float qy = size * py * freq;\n\n    float wi = 1.;\n    if (i == 0) wi = 1. - fade;\n    if (i == 3) wi = fade;\n\n    vec2 fx = fract(qx);\n    float fy = fract(qy);\n    vec2 shift = .5 + absIdx * .3 + seedShift;\n    float uvY = floor(qy) / 50. + shift.y;\n    vec2 s0a = textureLod(u_noiseTexture, fract(vec2(floor(qx.x) / 50. + shift.x, uvY)), 0.).rg;\n    vec2 s1a = textureLod(u_noiseTexture, fract(vec2( ceil(qx.x) / 50. + shift.x, uvY)), 0.).rg;\n    vec2 s0b = textureLod(u_noiseTexture, fract(vec2(floor(qx.y) / 50. + shift.x, uvY)), 0.).rg;\n    vec2 s1b = textureLod(u_noiseTexture, fract(vec2( ceil(qx.y) / 50. + shift.x, uvY)), 0.).rg;\n    vec2 ny0 = mix(vec2(s0a.r, s0b.r), vec2(s0a.g, s0b.g), fy);\n    vec2 ny1 = mix(vec2(s1a.r, s1b.r), vec2(s1a.g, s1b.g), fy);\n    vec2 n = mix(ny0, ny1, fx);\n\n    sum += amp * wi * n;\n    norm += amp * wi;\n    amp *= .8;\n    freq *= 2.1;\n  }\n\n  vec2 r = sum / norm;\n  float dx = .5 + r.x - r.y;\n  float grain = 3. * dx * dx - .7;\n\n  float rowBand = fract(dot(p, lightDir) * .05 * size);\n  return grain + .6 * u_roughnessRows * (rowBand - .5);\n}\n\nfloat getFiber(vec2 p, vec2 seedShift, float basePixel) {\n  float size = mix(4., 1., u_fiberSize);\n  float w = 50. * basePixel;\n  float level = -log2(w + 1e-8);\n  float baseLevel = floor(level) - 3.;\n  float fade = fract(level);\n\n  vec2 grad = vec2(0.);\n  float scale = 1.;\n  float amp = 1.;\n  float freq = pow(1.7, baseLevel);\n  for (int i = 0; i < 5; i++) {\n    float absIdx = baseLevel + float(i);\n    vec2 q = size * p * freq;\n\n    float an = absIdx * .8;\n    float rc = cos(an), rs = sin(an);\n    q = vec2(rc * q.x - rs * q.y, rs * q.x + rc * q.y);\n\n    float wi = 1.;\n    if (i == 0) wi = 1. - fade;\n    if (i == 4) wi = fade;\n\n    vec2 iq = floor(q);\n    vec2 fq = fract(q);\n    float shift = absIdx * .3;\n    vec4 uv = fract(vec4(iq, iq + 1.) / 50. + .5 + shift + seedShift.xyxy);\n    float aF = textureLod(u_noiseTexture, uv.xy, 0.).b;\n    float bF = textureLod(u_noiseTexture, uv.zy, 0.).b;\n    float cF = textureLod(u_noiseTexture, uv.xw, 0.).b;\n    float dF = textureLod(u_noiseTexture, uv.zw, 0.).b;\n    vec2 u = fq * fq * (3. - 2. * fq);\n    vec2 du = 8. * fq * (1. - fq);\n    float dx = du.x * mix(bF - aF, dF - cF, u.y);\n    float dy = du.y * mix(cF - aF, dF - bF, u.x);\n    grad += wi * amp * scale * vec2(rc * dx + rs * dy, -rs * dx + rc * dy);\n    scale *= 1.7;\n    amp *= .5;\n    freq *= 1.7;\n  }\n\n  return clamp(.333 * length(grad), 0., 1.);\n}\n\nvec2 smoothNoise(vec2 p) {\n  vec2 t = p * 50. - .5;\n  vec2 i = floor(t);\n  vec2 f = fract(t);\n  f = f * f * (3. - 2. * f);\n  return textureLod(u_noiseTexture, fract((i + f + .5) / vec2(50.)), 0.).rg;\n}\n\nfloat getDrops(vec2 uv, vec2 seedShift) {\n  vec2 iDropsUV = floor(uv);\n  vec2 fDropsUV = fract(uv);\n  float dropsMinDist = 1.;\n  for (int y = -1; y < 2; y += 1) {\n    for (int x = -1; x < 2; x += 1) {\n      vec2 neighbor = vec2(float(y), float(x));\n      vec2 offset = hash22(iDropsUV + neighbor + 50. * seedShift);\n      vec2 pos = neighbor + offset - fDropsUV;\n      dropsMinDist *= min(1., dot(pos, pos));\n    }\n  }\n  return .5 * lst(.09, .08, sqrt(sqrt(dropsMinDist)));\n}\n\nvec2 getCellTilt(float idx, float radius) {\n  vec2 rand = hash22(vec2(idx + 31., idx * u_seed + 17.));\n  float an = rand.x * TWO_PI;\n  return vec2(cos(an), sin(an)) * mix(.3, 1.7, rand.y * rand.y) * mix(.7, 1., radius);\n}\n\nvec2 getCrumpleDetail(vec2 uv, float freq, float shift, float basePixel, out float depth) {\n  depth = 0.;\n  vec2 v = uv * freq;\n  float pixel = .9 * freq * basePixel;\n  vec2 base = floor(v);\n  float n1 = 9., n2 = 9.;\n  vec2 s1 = vec2(0.), s2 = vec2(0.), q1 = vec2(0.), q2 = vec2(0.);\n\n  for (int y = -1; y <= 1; y++) {\n    for (int x = -1; x <= 1; x++) {\n      vec2 cell = base + vec2(float(x), float(y));\n      vec2 q = hash22(vec2(cell.y * 1.9 + 3.1 + shift, cell.x * 1.3 + .11 * u_seed));\n      float keep = .8;\n      if (q.y > keep) continue;\n\n      vec2 r = hash22(vec2(cell.x + .37 * u_seed + shift + 11.1, cell.y - .21 * u_seed + 5.7));\n      vec2 s = cell + .06 + .88 * r;\n\n      vec2 d = v - s;\n      float dsq = dot(d, d);\n      if (dsq < n1) {\n        n2 = n1;\n        s2 = s1;\n        q2 = q1;\n        n1 = dsq;\n        s1 = s;\n        q1 = q;\n      } else if (dsq < n2) {\n        n2 = dsq;\n        s2 = s;\n        q2 = q;\n      }\n    }\n  }\n\n  if (n1 > 8.) return vec2(0.);\n\n  float an1 = q1.x * TWO_PI, mag1 = q1.y / .8;\n  vec2 t1 = vec2(cos(an1), sin(an1)) * mix(.3, 1.7, mag1 * mag1);\n  float an2 = q2.x * TWO_PI, mag2 = q2.y / .8;\n  vec2 t2 = vec2(cos(an2), sin(an2)) * mix(.3, 1.7, mag2 * mag2);\n\n  vec2 span = s1 - s2;\n  float spanLen = max(length(span), 1e-4);\n  float toEdge = (n2 - n1) / (2. * spanLen);\n\n  float pair = hash21(s1 + s2 + 1.7 * abs(s1 - s2));\n  float pairSoft = .05 + .1 * step(pair, .4);\n  float b = clamp(toEdge / max(1.5 * pixel, .5 * pairSoft), 0., 1.);\n  b = b * b * (3. - 2. * b);\n  float d1 = max(sqrt(n1), 1e-4);\n  depth = .2 * d1;\n  float shoulderAmt = max(0., 1. - toEdge / .42) * b;\n  vec2 shoulder = vec2(0.);\n  if (shoulderAmt > 0.) {\n    float d2 = max(sqrt(n2), 1e-4);\n    shoulder = shoulderAmt * ((v - s2) / d2 - (v - s1) / d1);\n  }\n\n  vec2 mid = .5 * (t1 + t2);\n  return mid + (t1 - mid) * b + .9 * shoulder;\n}\n\nvec4 getCrumples(vec2 uv) {\n  float crumpleN = max(2., floor(u_crumpleCount + .5));\n  float near = 60000., nearB = 60000.;\n  float idx = 0., rad = 0.;\n  vec2 nearP = vec2(0.), nearPb = vec2(0.);\n  vec4 seeds[${fe.maxCrumpleCount}];\n  for (int i = 0; i < ${fe.maxCrumpleCount}; i++) {\n    if (float(i) >= crumpleN) break;\n    vec2 rand = hash22(vec2(float(i), float(i) * u_seed));\n    float an = rand.x * TWO_PI;\n    vec2 p = vec2(cos(an), sin(an)) * rand.y;\n    seeds[i] = vec4(p, rand);\n\n    vec2 d = uv - p;\n    float dsq = dot(d, d);\n    if (dsq < near) {\n      nearB = near;\n      nearPb = nearP;\n      near = dsq;\n      idx = float(i);\n      rad = rand.y;\n      nearP = p;\n    } else if (dsq < nearB) {\n      nearB = dsq;\n      nearPb = p;\n    }\n  }\n  float l = sqrt(near), lb = sqrt(nearB);\n  vec2 dir = (uv - nearP) / max(l, 1e-4);\n  float edge = lst(0., .5, lb - l);\n\n  float shoulderLimit = l + .5;\n\n  vec2 tilt = getCellTilt(idx, rad);\n  float tiltSum = 1.;\n  vec2 wide = vec2(0.);\n  float wideSum = 0.;\n  float toEdge = 9., edgeSoft = 0.;\n\n  for (int i = 0; i < ${fe.maxCrumpleCount}; i++) {\n    if (float(i) >= crumpleN) break;\n    if (float(i) == idx) continue;\n    vec4 seed = seeds[i];\n    vec2 p = seed.xy;\n    vec2 rand = seed.zw;\n\n    vec2 d = uv - p;\n    float dsq = dot(d, d);\n\n    if (dsq < shoulderLimit * shoulderLimit) {\n      float di = sqrt(dsq);\n      float shoulder = lst(.5, 0., di - l);\n      wide += shoulder * (d / max(di, 1e-4) - dir);\n      wideSum += shoulder;\n    }\n\n    float pairSoft = .01 + .05 * step(.2, rand.x) + .3 * rand.y;\n    float toBisector = (dsq - near) / (.2 * max(length(p - nearP), 1e-4));\n    if (toBisector < toEdge) {\n      toEdge = toBisector;\n      edgeSoft = pairSoft;\n    }\n\n    float w = 1. - toBisector / pairSoft;\n    if (w > 0.) {\n      w *= w;\n      tilt += w * getCellTilt(float(i), rand.y);\n      tiltSum += w;\n    }\n  }\n\n  float blend = clamp(toEdge / edgeSoft, 0., 1.);\n  vec2 sharp = (1. - edge) * ((uv - nearPb) / max(lb, 1e-4) - dir);\n  vec2 rounding = mix(sharp, wide / max(wideSum, 1.), min(2. * edgeSoft, 1.));\n  float radial = l / max(l + toEdge, 1e-4);\n\n  return vec4(tilt / tiltSum + rounding * blend * radial, .2 * l, edge);\n}\n\nvoid getFolds(vec2 coord, vec2 offset, vec2 count, vec2 noise, vec2 baseFwidth, out vec2 slope, out vec2 dark, out vec2 lift) {\n  vec2 g = coord * count + .5 * offset + noise;\n  vec2 dx = fract(g) - .5;\n  vec2 adx = abs(dx);\n  float foldRadius = .3;\n  vec2 t = clamp(adx / foldRadius, 0., 1.);\n  dark = t * t * (3. - 2. * t);\n  lift = 1. - t;\n  lift *= lift;\n\n  vec2 crease = clamp(dx / max(count * baseFwidth, 1e-5), -1., 1.);\n  slope = crease * (1. - dark);\n\n  vec2 lineWidth = .02 * count * mix(vec2(2.5), vec2(.8), dark.yx) + .1 * noise;\n  slope -= 1. - smoothstep(vec2(0.), lineWidth, adx);\n}\n\nvoid main() {\n\n  vec2 patternUV = (v_imageUV - .5) * vec2(u_imageAspectRatio, 1.);\n  float basePixel = max(length(dFdx(patternUV)), length(dFdy(patternUV)));\n  vec2 baseFwidth = fwidth(patternUV);\n\n  float pattern = 0.;\n\n  float crumpleDepth = 0.;\n  float wrinkleDepth = 0.;\n  float foldDepth = 0.;\n  float roughness = 0.;\n  float fiber = 0.;\n  float drops = 0.;\n\n  float grazing = 0.7;\n  float lightRad = radians(u_angle);\n  vec2 lightDir = vec2(sin(lightRad), -cos(lightRad));\n  float foldAngleInSector = mod(u_angle, 90.);\n  float foldLightRad = radians(u_angle - foldAngleInSector + mix(12., 78., foldAngleInSector / 90.));\n  vec2 foldLightDir = vec2(sin(foldLightRad), -cos(foldLightRad));\n  vec2 relief = vec2(0.);\n  vec2 foldSlope = vec2(0.);\n  float reliefAmount = 0.;\n  float foldInk = 1.;\n  vec2 crumpleFlow = vec2(0.);\n\n  vec2 warpNoise = vec2(0.);\n  if (u_crumples > 0. || u_folds > 0. || u_wrinkles > 0.) {\n    warpNoise = smoothNoise(patternUV * .1 + .2 + .6 * fract(.017 * u_seed)) - .5;\n  }\n  vec2 crumplesUV = (patternUV * .9) + .012 * warpNoise;\n\n  if (u_crumples > 0.) {\n    vec4 crumples = getCrumples(crumplesUV);\n\n    vec2 crumpleTilt = .5 * u_crumples * crumples.xy;\n    crumpleTilt -= .1 * max(dot(crumpleTilt, lightDir), 0.) * lightDir;\n    relief += crumpleTilt;\n    reliefAmount += .6 * u_crumples;\n    crumpleFlow = crumples.w * crumpleTilt;\n\n    crumpleDepth = clamp(5. * crumples.z, 0., 1.);\n  }\n\n  if (u_wrinkles > 0.) {\n    float detailFreq = mix(10., 1., u_wrinkleSize);\n    float detailAmp = .2;\n    vec2 detailGrad = vec2(0.);\n    float detailDepth = 0., depthSum = 0.;\n    for (int i = 0; i < 3; i++) {\n      float layerDepth;\n      detailGrad += detailAmp * getCrumpleDetail(crumplesUV, detailFreq, 31. * float(i), basePixel, layerDepth);\n      detailDepth += detailAmp * layerDepth;\n      depthSum += detailAmp;\n      detailAmp *= (.5 + .2 * detailGrad.x);\n      detailFreq *= 2.1;\n    }\n\n    vec2 detailTilt = 1.5 * u_wrinkles * detailGrad;\n    detailTilt -= .65 * max(dot(detailTilt, lightDir), 0.) * lightDir;\n    relief += detailTilt;\n    reliefAmount += .6 * u_wrinkles;\n\n    wrinkleDepth = clamp(5. * detailDepth / max(depthSum, 1e-4), 0., 1.);\n  }\n\n  if (u_folds > 0.) {\n    vec2 foldOffset = vec2(1. - 2. * u_foldOffsetX, 1. - 2. * u_foldOffsetY);\n    vec2 foldCount = vec2(mix(3., .5, u_foldSizeX), mix(3., .5, u_foldSizeY));\n    vec2 foldNoise = .005 * warpNoise * foldCount;\n    vec2 uv = patternUV + .03 * crumpleFlow;\n\n    vec2 slope, dark, lift;\n    getFolds(uv, foldOffset, foldCount, foldNoise, baseFwidth, slope, dark, lift);\n\n    foldSlope = u_folds * slope;\n    reliefAmount += 1. * u_folds;\n    vec2 ink = mix(vec2(.96), vec2(1.), dark);\n    float flatness = dark.x * dark.y;\n    foldInk *= mix(1., ink.x * ink.y * mix(.5, .3, flatness), u_folds);\n\n    foldDepth = u_folds * (lift.y * foldLightDir.y - lift.x * foldLightDir.x);\n  }\n\n  float unlit = cos(grazing);\n  float lit = unlit;\n\n  if (reliefAmount > 0.) {\n    float lightFalloff = clamp(.5 + dot(v_imageUV - .5, lightDir), 0., 1.);\n    float lightPower = mix(.5, 1., lightFalloff);\n    float slope = clamp(dot(relief, lightDir) + dot(foldSlope, foldLightDir), -1.2, 1.2);\n    lit = max(cos(slope + grazing), 0.);\n\n    pattern += (clamp(reliefAmount, 0., 1.) * unlit + (lit - unlit)) * foldInk * lightPower;\n  }\n\n  patternUV += .04 * crumpleFlow;\n\n  vec2 seedShift = floor(fract(u_seed * vec2(.7548776662, .5698402909)) * 50.) / 50.;\n\n  if (u_roughness > 0.) {\n    roughness = u_roughness * getRoughness(1000. * patternUV, lightDir, seedShift, basePixel);\n    pattern += roughness;\n  }\n\n  if (u_fiber > 0.) {\n    fiber = u_fiber * getFiber(50. * patternUV, seedShift, basePixel);\n    pattern += fiber;\n  }\n\n  if (u_drops > 0.) {\n    drops = u_drops * getDrops(patternUV * 10., seedShift);\n  }\n\n  pattern = clamp(pattern, 0., 1.);\n\n  vec3 backColor = u_colorBack.rgb * u_colorBack.a;\n  float backOpacity = u_colorBack.a;\n  vec3 baseColor = u_colorPaper.rgb * u_colorPaper.a;\n  float baseOpacity = u_colorPaper.a;\n  vec3 shadowColor = u_colorShadow.rgb * u_colorShadow.a;\n  float shadowOpacity = u_colorShadow.a;\n\n  float notClipped = u_clip ? .1 : 1.;\n  vec2 imageCenteredUV = v_imageUV - .5;\n  float edgeDist = 2. * max(abs(imageCenteredUV.x), abs(imageCenteredUV.y));\n  float wrinkleDistortion = mix(.38, .0175, smoothstep(0., 1., edgeDist));\n  float scaleDistortion = .15 * u_crumples * (crumpleDepth - .5) + wrinkleDistortion * u_wrinkles * (wrinkleDepth - .5) + .05 * foldDepth;\n  vec2 linearDistortion = notClipped * .002 * lightDir * drops;\n  float radialDistortion = notClipped * .02 * (roughness + fiber);\n  vec2 centeredUV = imageCenteredUV * (1. - u_distortion * scaleDistortion);\n  centeredUV -= u_distortion * linearDistortion;\n  vec2 imageUV = .5 + centeredUV * (1. - abs(u_distortion) * radialDistortion * dot(centeredUV, centeredUV));\n\n  vec3 color = shadowColor * pattern;\n  float opacity = shadowOpacity * pattern;\n  color += baseColor * (1. - opacity);\n  opacity += baseOpacity * (1. - opacity);\n\n  if (u_isImage) {\n    float frame = getUvFrame(imageUV);\n    vec4 image = texture(u_image, imageUV);\n    frame *= image.a;\n\n    float maxC = max(max(image.r, image.g), image.b);\n    float minC = min(min(image.r, image.g), image.b);\n    float sat = maxC > 0. ? (maxC - minC) / maxC : 0.;\n    float midC = image.r + image.g + image.b - maxC - minC;\n    float secondaryness = maxC > minC ? (midC - minC) / (maxC - minC) : 0.;\n    float satDampen = sat * (1. - .5 * secondaryness);\n    float darkDampen = 1. - dot(vec3(.2126, .7152, .0722), image.rgb);\n    float dampen = mix(0., .7, u_blending) * max(satDampen, darkDampen);\n\n    vec3 paper = vec3(1.) - opacity + color;\n    vec3 pic = image.rgb * paper * u_blending + image.rgb * (1. - u_blending);\n    pic = mix(pic, vec3(1.), .6 * pow(dampen, 2. + 3. * pattern));\n\n    color = mix(color, pic, frame);\n    opacity = frame + opacity * (1. - frame);\n\n    if (u_clip) {\n      color *= frame;\n      opacity *= frame;\n    }\n  }\n\n  color *= mix(vec3(1.), .5 * u_colorShadow.rgb, drops * shadowOpacity);\n\n  color += backColor * (1. - opacity);\n  opacity += backOpacity * (1. - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`;var ho=`#version 300 es\nprecision mediump float;\n\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorHighlight;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\n\nuniform float u_size;\nuniform float u_highlights;\nuniform float u_layering;\nuniform float u_edges;\nuniform float u_caustic;\nuniform float u_waves;\n\nin vec2 v_imageUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${T}\n\nfloat getUvFrame(vec2 uv) {\n  float aax = 2. * fwidth(uv.x);\n  float aay = 2. * fwidth(uv.y);\n\n  float left   = smoothstep(0., aax, uv.x);\n  float right = 1.0 - smoothstep(1. - aax, 1., uv.x);\n  float bottom = smoothstep(0., aay, uv.y);\n  float top = 1.0 - smoothstep(1. - aay, 1., uv.y);\n\n  return left * right * bottom * top;\n}\n\nmat2 rotate2D(float r) {\n  return mat2(cos(r), sin(r), -sin(r), cos(r));\n}\n\nfloat getCausticNoise(vec2 uv, float t, float scale) {\n  vec2 n = vec2(.1);\n  vec2 N = vec2(.1);\n  mat2 m = rotate2D(.5);\n  for (int j = 0; j < 6; j++) {\n    uv *= m;\n    n *= m;\n    vec2 q = uv * scale + float(j) + n + (.5 + .5 * float(j)) * (mod(float(j), 2.) - 1.) * t;\n    n += sin(q);\n    N += cos(q) / scale;\n    scale *= 1.1;\n  }\n  return (N.x + N.y + 1.);\n}\n\nvoid main() {\n  vec2 imageUV = v_imageUV;\n  vec2 patternUV = v_imageUV - .5;\n  patternUV = (patternUV * vec2(u_imageAspectRatio, 1.));\n  patternUV /= (.01 + .09 * u_size);\n\n  float t = u_time;\n\n  float wavesNoise = snoise((.3 + .1 * sin(t)) * .1 * patternUV + vec2(0., .4 * t));\n\n  float causticNoise = getCausticNoise(patternUV + u_waves * vec2(1., -1.) * wavesNoise, 2. * t, 1.5);\n\n  if (u_layering > 0.) {\n    causticNoise += u_layering * getCausticNoise(patternUV + 2. * u_waves * vec2(1., -1.) * wavesNoise, 1.5 * t, 2.);\n  }\n  causticNoise = causticNoise * causticNoise;\n\n  float edgesDistortion = smoothstep(0., .1, imageUV.x);\n  edgesDistortion *= smoothstep(0., .1, imageUV.y);\n  edgesDistortion *= (smoothstep(1., 1.1, imageUV.x) + (1.0 - smoothstep(.8, .95, imageUV.x)));\n  edgesDistortion *= (1.0 - smoothstep(.9, 1., imageUV.y));\n  edgesDistortion = mix(edgesDistortion, 1., u_edges);\n\n  float causticNoiseDistortion = .02 * causticNoise * edgesDistortion;\n\n  float wavesDistortion = .1 * u_waves * wavesNoise;\n\n  imageUV += vec2(wavesDistortion, -wavesDistortion);\n  imageUV += (u_caustic * causticNoiseDistortion);\n\n  float frame = getUvFrame(imageUV);\n\n  vec4 image = texture(u_image, imageUV);\n  vec4 backColor = u_colorBack;\n  backColor.rgb *= backColor.a;\n\n  vec3 color = mix(backColor.rgb, image.rgb, image.a * frame);\n  float opacity = backColor.a + image.a * frame;\n\n  causticNoise = max(-.2, causticNoise);\n\n  float hightlight = .025 * u_highlights * causticNoise;\n  hightlight *= u_colorHighlight.a;\n  color = mix(color, u_colorHighlight.rgb, .05 * u_highlights * causticNoise * u_colorHighlight.a);\n  opacity += hightlight;\n\n  color += hightlight * (.5 + .5 * wavesNoise);\n  opacity += hightlight * (.5 + .5 * wavesNoise);\n\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`;var xo=`#version 300 es\nprecision mediump float;\n\nuniform vec2 u_resolution;\nuniform float u_pixelRatio;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorShadow;\nuniform vec4 u_colorHighlight;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\n\nuniform float u_size;\nuniform float u_shadows;\nuniform float u_angle;\nuniform float u_stretch;\nuniform float u_shape;\nuniform float u_distortion;\nuniform float u_highlights;\nuniform float u_distortionShape;\nuniform float u_shift;\nuniform float u_blur;\nuniform float u_edges;\nuniform float u_marginLeft;\nuniform float u_marginRight;\nuniform float u_marginTop;\nuniform float u_marginBottom;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\n\nin vec2 v_imageUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${M}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1.0, 0.0));\n  float c = hash21(i + vec2(0.0, 1.0));\n  float d = hash21(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat getUvFrame(vec2 uv, float softness) {\n  float aax = 2. * fwidth(uv.x);\n  float aay = 2. * fwidth(uv.y);\n  float left   = smoothstep(0., aax + softness, uv.x);\n  float right  = 1. - smoothstep(1. - softness - aax, 1., uv.x);\n  float bottom = smoothstep(0., aay + softness, uv.y);\n  float top    = 1. - smoothstep(1. - softness - aay, 1., uv.y);\n  return left * right * bottom * top;\n}\n\nconst int MAX_RADIUS = 50;\nvec4 samplePremultiplied(sampler2D tex, vec2 uv) {\n  vec4 c = texture(tex, uv);\n  c.rgb *= c.a;\n  return c;\n}\nvec4 getBlur(sampler2D tex, vec2 uv, vec2 texelSize, vec2 dir, float sigma) {\n  if (sigma <= .5) return texture(tex, uv);\n  int radius = int(min(float(MAX_RADIUS), ceil(3.0 * sigma)));\n\n  float twoSigma2 = 2.0 * sigma * sigma;\n  float gaussianNorm = 1.0 / sqrt(TWO_PI * sigma * sigma);\n\n  vec4 sum = samplePremultiplied(tex, uv) * gaussianNorm;\n  float weightSum = gaussianNorm;\n\n  for (int i = 1; i <= MAX_RADIUS; i++) {\n    if (i > radius) break;\n\n    float x = float(i);\n    float w = exp(-(x * x) / twoSigma2) * gaussianNorm;\n\n    vec2 offset = dir * texelSize * x;\n    vec4 s1 = samplePremultiplied(tex, uv + offset);\n    vec4 s2 = samplePremultiplied(tex, uv - offset);\n\n    sum += (s1 + s2) * w;\n    weightSum += 2.0 * w;\n  }\n\n  vec4 result = sum / weightSum;\n  if (result.a > 0.) {\n    result.rgb /= result.a;\n  }\n\n  return result;\n}\n\nvec2 rotateAspect(vec2 p, float a, float aspect) {\n  p.x *= aspect;\n  p = rotate(p, a);\n  p.x /= aspect;\n  return p;\n}\n\nfloat smoothFract(float x) {\n  float f = fract(x);\n  float w = fwidth(x);\n\n  float edge = abs(f - 0.5) - 0.5;\n  float band = smoothstep(-w, w, edge);\n\n  return mix(f, 1.0 - f, band);\n}\n\nvoid main() {\n\n  float patternRotation = -u_angle * PI / 180.;\n  float patternSize = mix(200., 5., u_size);\n\n  vec2 uv = v_imageUV;\n\n  vec2 uvMask = gl_FragCoord.xy / u_resolution.xy;\n  vec2 sw = vec2(.005);\n  vec4 margins = vec4(u_marginLeft, u_marginTop, u_marginRight, u_marginBottom);\n  float mask =\n  smoothstep(margins[0], margins[0] + sw.x, uvMask.x + sw.x) *\n  smoothstep(margins[2], margins[2] + sw.x, 1.0 - uvMask.x + sw.x) *\n  smoothstep(margins[1], margins[1] + sw.y, uvMask.y + sw.y) *\n  smoothstep(margins[3], margins[3] + sw.y, 1.0 - uvMask.y + sw.y);\n  float maskOuter =\n  smoothstep(margins[0] - sw.x, margins[0], uvMask.x + sw.x) *\n  smoothstep(margins[2] - sw.x, margins[2], 1.0 - uvMask.x + sw.x) *\n  smoothstep(margins[1] - sw.y, margins[1], uvMask.y + sw.y) *\n  smoothstep(margins[3] - sw.y, margins[3], 1.0 - uvMask.y + sw.y);\n  float maskStroke = maskOuter - mask;\n  float maskInner =\n  smoothstep(margins[0] - 2. * sw.x, margins[0], uvMask.x) *\n  smoothstep(margins[2] - 2. * sw.x, margins[2], 1.0 - uvMask.x) *\n  smoothstep(margins[1] - 2. * sw.y, margins[1], uvMask.y) *\n  smoothstep(margins[3] - 2. * sw.y, margins[3], 1.0 - uvMask.y);\n  float maskStrokeInner = maskInner - mask;\n\n  uv -= .5;\n  uv *= patternSize;\n  uv = rotateAspect(uv, patternRotation, u_imageAspectRatio);\n\n  float curve = 0.;\n  float patternY = uv.y / u_imageAspectRatio;\n  if (u_shape > 4.5) {\n    // pattern\n    curve = .5 + .5 * sin(.5 * PI * uv.x) * cos(.5 * PI * patternY);\n  } else if (u_shape > 3.5) {\n    // zigzag\n    curve = 10. * abs(fract(.1 * patternY) - .5);\n  } else if (u_shape > 2.5) {\n    // wave\n    curve = 4. * sin(.23 * patternY);\n  } else if (u_shape > 1.5) {\n    // lines irregular\n    curve = .5 + .5 * sin(.5 * uv.x) * sin(1.7 * uv.x);\n  } else {\n    // lines\n  }\n\n  vec2 UvToFract = uv + curve;\n  vec2 fractOrigUV = fract(uv);\n  vec2 floorOrigUV = floor(uv);\n\n  float x = smoothFract(UvToFract.x);\n  float xNonSmooth = fract(UvToFract.x) + .0001;\n\n  float highlightsWidth = 2. * max(.001, fwidth(UvToFract.x));\n  highlightsWidth += 2. * maskStrokeInner;\n  float highlights = smoothstep(0., highlightsWidth, xNonSmooth);\n  highlights *= smoothstep(1., 1. - highlightsWidth, xNonSmooth);\n  highlights = 1. - highlights;\n  highlights *= u_highlights;\n  highlights = clamp(highlights, 0., 1.);\n  highlights *= mask;\n\n  float shadows = pow(x, 1.3);\n  float distortion = 0.;\n  float fadeX = 1.;\n  float frameFade = 0.;\n\n  float aa = fwidth(xNonSmooth);\n  aa = max(aa, fwidth(uv.x));\n  aa = max(aa, fwidth(UvToFract.x));\n  aa = max(aa, .0001);\n\n  if (u_distortionShape == 1.) {\n    distortion = -pow(1.5 * x, 3.);\n    distortion += (.5 - u_shift);\n\n    frameFade = pow(1.5 * x, 3.);\n    aa = max(.2, aa);\n    aa += mix(.2, 0., u_size);\n    fadeX = smoothstep(0., aa, xNonSmooth) * smoothstep(1., 1. - aa, xNonSmooth);\n    distortion = mix(.5, distortion, fadeX);\n  } else if (u_distortionShape == 2.) {\n    distortion = 2. * pow(x, 2.);\n    distortion -= (.5 + u_shift);\n\n    frameFade = pow(abs(x - .5), 4.);\n    aa = max(.2, aa);\n    aa += mix(.2, 0., u_size);\n    fadeX = smoothstep(0., aa, xNonSmooth) * smoothstep(1., 1. - aa, xNonSmooth);\n    distortion = mix(.5, distortion, fadeX);\n    frameFade = mix(1., frameFade, .5 * fadeX);\n  } else if (u_distortionShape == 3.) {\n    distortion = pow(2. * (xNonSmooth - .5), 6.);\n    distortion -= .25;\n    distortion -= u_shift;\n\n    frameFade = 1. - 2. * pow(abs(x - .4), 2.);\n    aa = .15;\n    aa += mix(.1, 0., u_size);\n    fadeX = smoothstep(0., aa, xNonSmooth) * smoothstep(1., 1. - aa, xNonSmooth);\n    frameFade = mix(1., frameFade, fadeX);\n\n  } else if (u_distortionShape == 4.) {\n    x = xNonSmooth;\n    distortion = sin((x + .25) * TWO_PI);\n    shadows = .5 + .5 * asin(distortion) / (.5 * PI);\n    distortion *= .5;\n    distortion -= u_shift;\n    frameFade = .5 + .5 * sin(x * TWO_PI);\n  } else if (u_distortionShape == 5.) {\n    distortion -= pow(abs(x), .2) * x;\n    distortion += .33;\n    distortion -= 3. * u_shift;\n    distortion *= .33;\n\n    frameFade = .3 * (smoothstep(.0, 1., x));\n    shadows = pow(x, 2.5);\n\n    aa = max(.1, aa);\n    aa += mix(.1, 0., u_size);\n    fadeX = smoothstep(0., aa, xNonSmooth) * smoothstep(1., 1. - aa, xNonSmooth);\n    distortion *= fadeX;\n  }\n\n  vec2 dudx = dFdx(v_imageUV);\n  vec2 dudy = dFdy(v_imageUV);\n  vec2 grainUV = v_imageUV - .5;\n  grainUV *= (.8 / vec2(length(dudx), length(dudy)));\n  grainUV += .5;\n  if (u_grainMixer > 0.) {\n    float grain = valueNoise(grainUV);\n    grain = smoothstep(.4, .7, grain);\n    grain *= u_grainMixer;\n    distortion = mix(distortion, 0., grain);\n  }\n\n  shadows = min(shadows, 1.);\n  shadows += maskStrokeInner;\n  shadows *= mask;\n  shadows = min(shadows, 1.);\n  shadows *= pow(u_shadows, 2.);\n  shadows = clamp(shadows, 0., 1.);\n\n  distortion *= 3. * u_distortion;\n  frameFade *= u_distortion;\n\n  fractOrigUV.x += distortion;\n  floorOrigUV = rotateAspect(floorOrigUV, -patternRotation, u_imageAspectRatio);\n  fractOrigUV = rotateAspect(fractOrigUV, -patternRotation, u_imageAspectRatio);\n\n  uv = (floorOrigUV + fractOrigUV) / patternSize;\n  uv += pow(maskStroke, 4.);\n\n  uv += vec2(.5);\n\n  uv = mix(v_imageUV, uv, smoothstep(0., .7, mask));\n  float blur = mix(0., 50., u_blur);\n  blur = mix(0., blur, smoothstep(.5, 1., mask));\n\n  float edgeDistortion = mix(.0, .04, u_edges);\n  edgeDistortion += .06 * frameFade * u_edges;\n  edgeDistortion *= mask;\n  float frame = getUvFrame(uv, edgeDistortion);\n\n  float stretch = 1. - smoothstep(0., .5, xNonSmooth) * smoothstep(1., 1. - .5, xNonSmooth);\n  stretch = pow(stretch, 2.);\n  stretch *= mask;\n  stretch *= getUvFrame(uv, .1 + .05 * mask * frameFade);\n  uv.y = mix(uv.y, .5, u_stretch * stretch);\n\n  vec4 image = getBlur(u_image, uv, 1. / u_resolution / u_pixelRatio, vec2(0., 1.), blur);\n  image.rgb *= image.a;\n  vec4 backColor = u_colorBack;\n  backColor.rgb *= backColor.a;\n  vec4 highlightColor = u_colorHighlight;\n  highlightColor.rgb *= highlightColor.a;\n  vec4 shadowColor = u_colorShadow;\n\n  vec3 color = highlightColor.rgb * highlights;\n  float opacity = highlightColor.a * highlights;\n\n  shadows = mix(shadows * shadowColor.a, 0., highlights);\n  color = mix(color, shadowColor.rgb * shadowColor.a, .5 * shadows);\n  color += .5 * pow(shadows, .5) * shadowColor.rgb;\n  opacity += shadows;\n  color = clamp(color, vec3(0.), vec3(1.));\n  opacity = clamp(opacity, 0., 1.);\n\n  color += image.rgb * (1. - opacity) * frame;\n  opacity += image.a * (1. - opacity) * frame;\n\n  color += backColor.rgb * (1. - opacity);\n  opacity += backColor.a * (1. - opacity);\n\n  if (u_grainOverlay > 0.) {\n    float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grainOverlay = pow(grainOverlay, 1.3);\n\n    float grainOverlayV = grainOverlay * 2. - 1.;\n    vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n    float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n    grainOverlayStrength = pow(grainOverlayStrength, .8);\n    grainOverlayStrength *= mask;\n    color = mix(color, grainOverlayColor, .35 * grainOverlayStrength);\n\n    opacity += .5 * grainOverlayStrength;\n  }\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`,_o={lines:1,linesIrregular:2,wave:3,zigzag:4,pattern:5},yo={prism:1,lens:2,contour:3,cascade:4,flat:5};var bo=`#version 300 es\nprecision mediump float;\n\nuniform vec2 u_resolution;\nuniform float u_pixelRatio;\nuniform float u_originX;\nuniform float u_originY;\nuniform float u_fit;\n\nuniform float u_scale;\nuniform float u_rotation;\nuniform float u_offsetX;\nuniform float u_offsetY;\n\nuniform vec4 u_colorFront;\nuniform vec4 u_colorBack;\nuniform vec4 u_colorHighlight;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\n\nuniform float u_type;\nuniform float u_pxSize;\nuniform bool u_originalColors;\nuniform bool u_inverted;\nuniform float u_colorSteps;\n\nout vec4 fragColor;\n\n\n${M}\n${d}\n\nfloat getUvFrame(vec2 uv, vec2 pad) {\n  float aa = 0.0001;\n\n  float left   = smoothstep(-pad.x, -pad.x + aa, uv.x);\n  float right  = smoothstep(1.0 + pad.x, 1.0 + pad.x - aa, uv.x);\n  float bottom = smoothstep(-pad.y, -pad.y + aa, uv.y);\n  float top    = smoothstep(1.0 + pad.y, 1.0 + pad.y - aa, uv.y);\n\n  return left * right * bottom * top;\n}\n\nvec2 getImageUV(vec2 uv) {\n  vec2 boxOrigin = vec2(.5 - u_originX, u_originY - .5);\n  float r = u_rotation * PI / 180.;\n  mat2 graphicRotation = mat2(cos(r), sin(r), -sin(r), cos(r));\n  vec2 graphicOffset = vec2(-u_offsetX, u_offsetY);\n\n  vec2 imageBoxSize;\n  if (u_fit == 1.) { // contain\n    imageBoxSize.x = min(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\n  } else if (u_fit == 2.) { // cover\n    imageBoxSize.x = max(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\n  } else {\n    imageBoxSize.x = min(10.0, 10.0 / u_imageAspectRatio * u_imageAspectRatio);\n  }\n  imageBoxSize.y = imageBoxSize.x / u_imageAspectRatio;\n  vec2 imageBoxScale = u_resolution.xy / imageBoxSize;\n\n  vec2 imageUV = uv;\n  imageUV *= imageBoxScale;\n  imageUV += boxOrigin * (imageBoxScale - 1.);\n  imageUV += graphicOffset;\n  imageUV /= u_scale;\n  imageUV.x *= u_imageAspectRatio;\n  imageUV = graphicRotation * imageUV;\n  imageUV.x /= u_imageAspectRatio;\n\n  imageUV += .5;\n  imageUV.y = 1. - imageUV.y;\n\n  return imageUV;\n}\n\nconst int bayer2x2[4] = int[4](0, 2, 3, 1);\nconst int bayer4x4[16] = int[16](\n0, 8, 2, 10,\n12, 4, 14, 6,\n3, 11, 1, 9,\n15, 7, 13, 5\n);\n\nconst int bayer8x8[64] = int[64](\n0, 32, 8, 40, 2, 34, 10, 42,\n48, 16, 56, 24, 50, 18, 58, 26,\n12, 44, 4, 36, 14, 46, 6, 38,\n60, 28, 52, 20, 62, 30, 54, 22,\n3, 35, 11, 43, 1, 33, 9, 41,\n51, 19, 59, 27, 49, 17, 57, 25,\n15, 47, 7, 39, 13, 45, 5, 37,\n63, 31, 55, 23, 61, 29, 53, 21\n);\n\nfloat getBayerValue(vec2 uv, int size) {\n  ivec2 pos = ivec2(fract(uv / float(size)) * float(size));\n  int index = pos.y * size + pos.x;\n\n  if (size == 2) {\n    return float(bayer2x2[index]) / 4.0;\n  } else if (size == 4) {\n    return float(bayer4x4[index]) / 16.0;\n  } else if (size == 8) {\n    return float(bayer8x8[index]) / 64.0;\n  }\n  return 0.0;\n}\n\n\nvoid main() {\n\n  float pxSize = u_pxSize * u_pixelRatio;\n  vec2 pxSizeUV = gl_FragCoord.xy - .5 * u_resolution;\n  pxSizeUV /= pxSize;\n  vec2 canvasPixelizedUV = (floor(pxSizeUV) + .5) * pxSize;\n  vec2 normalizedUV = canvasPixelizedUV / u_resolution;\n\n  vec2 imageUV = getImageUV(normalizedUV);\n  vec2 ditheringNoiseUV = canvasPixelizedUV;\n  vec4 image = texture(u_image, imageUV);\n  float frame = getUvFrame(imageUV, pxSize / u_resolution);\n\n  int type = int(floor(u_type));\n  float dithering = 0.0;\n\n  float lum = dot(vec3(.2126, .7152, .0722), image.rgb);\n  lum = u_inverted ? (1. - lum) : lum;\n\n  switch (type) {\n    case 1: {\n      dithering = step(hash21(ditheringNoiseUV), lum);\n    } break;\n    case 2:\n    dithering = getBayerValue(pxSizeUV, 2);\n    break;\n    case 3:\n    dithering = getBayerValue(pxSizeUV, 4);\n    break;\n    default :\n    dithering = getBayerValue(pxSizeUV, 8);\n    break;\n  }\n\n  float colorSteps = max(floor(u_colorSteps), 1.);\n  vec3 color = vec3(0.0);\n  float opacity = 1.;\n\n  dithering -= .5;\n  float brightness = clamp(lum + dithering / colorSteps, 0.0, 1.0);\n  brightness = mix(0.0, brightness, frame);\n  brightness = mix(0.0, brightness, image.a);\n  float quantLum = floor(brightness * colorSteps + 0.5) / colorSteps;\n  quantLum = mix(0.0, quantLum, frame);\n\n  if (u_originalColors == true) {\n    vec3 normColor = image.rgb / max(lum, 0.001);\n    color = normColor * quantLum;\n\n    float quantAlpha = floor(image.a * colorSteps + 0.5) / colorSteps;\n    opacity = mix(quantLum, 1., quantAlpha);\n  } else {\n    vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n    float fgOpacity = u_colorFront.a;\n    vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n    float bgOpacity = u_colorBack.a;\n    vec3 hlColor = u_colorHighlight.rgb * u_colorHighlight.a;\n    float hlOpacity = u_colorHighlight.a;\n\n    fgColor = mix(fgColor, hlColor, step(1.02 - .02 * u_colorSteps, brightness));\n    fgOpacity = mix(fgOpacity, hlOpacity, step(1.02 - .02 * u_colorSteps, brightness));\n\n    color = fgColor * quantLum;\n    opacity = fgOpacity * quantLum;\n    color += bgColor * (1.0 - opacity);\n    opacity += bgOpacity * (1.0 - opacity);\n  }\n\n  fragColor = vec4(color, opacity);\n}\n`;var Re={maxSamples:50},Ao=`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\nuniform float u_spread;\nuniform float u_bias;\nuniform float u_angle;\nuniform float u_perspective;\nuniform float u_count;\nuniform float u_dispersion;\nuniform float u_dispersionShift;\nuniform float u_dispersionColor;\nuniform float u_focusCenter;\nuniform float u_focusEdges;\nuniform float u_swirl;\nuniform float u_noise;\nuniform float u_noiseFrequency;\nuniform float u_noiseOffset;\nuniform float u_lensBulge;\nuniform float u_lensCircle;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\nuniform float u_imageX;\nuniform float u_imageY;\n\nin vec2 v_imageUV;\n\nout vec4 fragColor;\n\n${d}\n${M}\n${A}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1., 0.));\n  float c = hash21(i + vec2(0., 1.));\n  float d = hash21(i + vec2(1., 1.));\n  vec2 u = f * f * (3. - 2. * f);\n  return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);\n}\n\nfloat getUvFrame(vec2 uv) {\n  vec2 invAA = 1. / clamp(fwidth(uv), 1e-5, .02);\n  vec2 lo = clamp(uv * invAA + .5, 0., 1.);\n  vec2 hi = clamp((1. - uv) * invAA + .5, 0., 1.);\n  return lo.x * hi.x * lo.y * hi.y;\n}\n\nvec4 sampleOverWhite(vec2 uv) {\n  vec4 img = texture(u_image, uv);\n  float cover = img.a * getUvFrame(uv);\n  vec3 colorOverWhite = mix(vec3(1.), img.rgb, cover);\n  return vec4(colorOverWhite, cover);\n}\n\nvec3 hueColor(float hue) {\n  vec3 rgb = clamp(abs(mod(hue * 6. + vec3(0., 4., 2.), 6.) - 3.) - 1., 0., 1.);\n  rgb = rgb * rgb * (3. - 2. * rgb);\n  return rgb;\n}\n                                            \nfloat boxInradius() {\n  return .5 * min(u_imageAspectRatio, 1.);\n}\n\nfloat boxOutradius() {\n  return .5 * length(vec2(u_imageAspectRatio, 1.));\n}\n\nfloat spreadReach() {\n  return .7 * pow(u_spread, 1.3 + 2.7 * u_spread);\n}\n\nfloat innerCircleMask(float radius, float inradius) {\n  return 1. - smoothstep(.5 * inradius, 1.1 * inradius, radius);\n}\n\nfloat dispersionCurve(float t, float biasPow) {\n  float mirroredT = u_bias < 0. ? 1. - t : t;\n  float curved = pow(mirroredT, biasPow);\n  return u_bias < 0. ? 1. - curved : curved;\n}\n\nvec2 getSpread(vec2 fromCenter, float radius, vec2 warpedUV, float edgeAA, float inradius, float outradius, float reach, out float outStrength) {\n  float angleRad = radians(u_angle);\n  vec2 uniformDir = vec2(cos(angleRad), sin(angleRad));\n\n  float invInradius = 1. / inradius;\n  vec2 radialDir = fromCenter * invInradius;\n  float maxLen = (outradius + reach) * invInradius;\n  float radialLen = radius * invInradius;\n  if (radialLen > maxLen) radialDir *= maxLen / radialLen;\n  vec2 spreadDir = mix(uniformDir, radialDir, u_perspective);\n\n  float bandProximity = smoothstep(inradius * .8, inradius, radius);\n  float lensCircleMaxing = bandProximity * u_lensCircle * u_lensCircle * u_lensCircle;\n  spreadDir = mix(spreadDir, radialDir, lensCircleMaxing);\n\n  vec2 warpedAbs = abs(warpedUV - .5);\n  float inner = mix(1., smoothstep(0., mix(inradius, outradius, u_focusCenter), radius), u_focusCenter);\n  float boxDist = max(warpedAbs.x, warpedAbs.y) * 2.;\n  float outer = mix(1., 1. - min(boxDist, 1.), u_focusEdges);\n  float strength = inner * outer;\n\n  strength *= mix(1., mix(.15, .03, max(-u_lensBulge, 0.)), lensCircleMaxing);\n\n  vec2 outside = max(warpedAbs - .5, 0.);\n  float margin = max(reach * length(spreadDir) * (1. - u_lensCircle), edgeAA);\n  strength *= 1. - smoothstep(0., margin, length(outside));\n\n  outStrength = strength;\n  vec2 axis = spreadDir * (reach * strength);\n\n  if (u_noise > 0.) {\n    float turn = (valueNoise(fromCenter * u_noiseFrequency * 18. + u_noiseOffset * 30.) - .5) * 2. * u_noise;\n    float cs = cos(turn), sn = sin(turn);\n    axis = mat2(cs, -sn, sn, cs) * axis;\n  }\n\n  axis.x /= u_imageAspectRatio;\n  return axis;\n}\n\nvec2 lensWarp(vec2 fromCenter, float radius, float inradius, out float bulgeFade) {\n  bulgeFade = 1.;\n  if (u_lensBulge == 0. && u_lensCircle <= 0.) return fromCenter;\n  if (radius < 1e-5) return fromCenter;\n  \n  float r = radius;\n\n  if (u_lensBulge != 0.) {\n    float rn = radius / inradius;\n    float bulge = abs(u_lensBulge) * (u_lensBulge > 0. ? 1.4 : 1.2);\n    if (u_lensBulge > 0.) bulgeFade = 1. - smoothstep(1.45, 1.53, rn * bulge);\n    float map = u_lensBulge > 0.\n      ? tan(min(rn * bulge, 1.53)) / tan(bulge)\n      : atan(rn * tan(bulge)) / bulge;\n    float bulgeScale = map / rn;\n    fromCenter *= bulgeScale;\n    r *= bulgeScale;\n  }\n\n  if (u_lensCircle > 0.) {\n    vec2 dir = fromCenter / max(r, 1e-5);\n    vec2 halfBox = vec2(u_imageAspectRatio, 1.) * .5;\n    float rBox = min(halfBox.x / max(abs(dir.x), 1e-4), halfBox.y / max(abs(dir.y), 1e-4));\n    float band = inradius * mix(.03, .2, .5 * (u_lensBulge + 1.));\n    float innerEdge = inradius - band;\n    float over = smoothstep(0., 1., (r - innerEdge) / band);\n    float g = r + (rBox - inradius) * pow(over, 14.);\n    fromCenter = dir * mix(r, g, u_lensCircle);\n  }\n\n  return fromCenter;\n}\n\nvoid main() {\n  vec2 uv = v_imageUV;\n\n  float invAspect = 1. / u_imageAspectRatio;\n  float inradius = boxInradius();\n  float outradius = boxOutradius();\n  float reach = spreadReach();\n\n  vec2 fromCenter = uv - .5;\n  fromCenter.x *= u_imageAspectRatio;\n  float radius = length(fromCenter);\n\n  float bulgeFade;\n  vec2 warpedFromCenter = lensWarp(fromCenter, radius, inradius, bulgeFade);\n  vec2 baseUV = vec2(warpedFromCenter.x * invAspect, warpedFromCenter.y) + .5;\n\n  vec2 baseDerivative = fwidth(baseUV);\n  float edgeAA = clamp(2. * max(baseDerivative.x, baseDerivative.y), .001, .02);\n\n  float spreadStrength;\n  vec2 spreadAxis = getSpread(fromCenter, radius, baseUV, edgeAA, inradius, outradius, reach, spreadStrength);\n\n  vec2 grainUV = vec2(0.);\n  if (u_grainMixer > 0. || u_grainOverlay > 0.) {\n    vec2 dudx = dFdx(v_imageUV);\n    vec2 dudy = dFdy(v_imageUV);\n    grainUV = (v_imageUV - .5) * (.8 / vec2(length(dudx), length(dudy))) + .5;\n  }\n\n  if (u_grainMixer > 0.) {\n    float grainSeed = valueNoise(grainUV);\n    vec2 jit = fract(grainSeed * vec2(157.31, 113.57)) * 2. - 1.;\n    spreadAxis += jit * .3 * u_grainMixer * length(spreadAxis);\n  }\n\n  float count = floor(u_count);\n  int countInteger = int(count);\n\n  float invCount = 1. / count;\n  float invSpan = 1. / max(count - 1., 1.);\n  float hueBase = u_dispersionColor + .5;\n  float biasPower = 1. + 2. * abs(u_bias);\n  vec2 tapBias = .5 - vec2(u_imageX, u_imageY);\n\n  float centerAmount = clamp(1. - u_dispersionShift, 0., 1.);\n  float edgesAmount = clamp(1. + u_dispersionShift, 0., 1.);\n  float dispersion = u_dispersion * mix(edgesAmount, centerAmount, innerCircleMask(radius, inradius));\n  float dispersionPower = pow(dispersion, .8);\n\n  float warpedRadius = length(warpedFromCenter);\n  float swirlAngle = u_swirl * .4 * PI * spreadStrength * u_spread * min(1., inradius / max(warpedRadius, 1e-4));\n\n  vec3 colorSum = vec3(0.);\n  vec3 weightSum = vec3(0.);\n  float coverSum = 0.;\n\n  for (int i = 0; i < ${Re.maxSamples}; i++) {\n    if (i >= countInteger) break;\n\n    float layer = float(i);\n    float hue = hueBase + layer * invCount;\n\n    float spread = layer * invSpan;\n    if (u_bias != 0.) spread = dispersionCurve(spread, biasPower);\n\n    // mix(axis, -axis, spread) is axis scaled by the signed position along the fan\n    float fanPos = 1. - 2. * spread;\n    vec2 tapUV = baseUV + spreadAxis * fanPos - .5;\n\n    if (u_swirl != 0.) {\n      tapUV.x *= u_imageAspectRatio;\n      tapUV = rotate(tapUV, swirlAngle * fanPos);\n      tapUV.x *= invAspect;\n    }\n\n    vec4 tap = sampleOverWhite(tapUV + tapBias);\n    vec3 weight = 1. - dispersionPower * hueColor(hue);\n\n    colorSum += tap.rgb * weight;\n    weightSum += weight;\n    coverSum += tap.a;\n  }\n\n  vec3 color = colorSum / max(weightSum, 1e-4);\n  float coverAvg = coverSum * invCount;\n\n  float ground = min(color.r, min(color.g, color.b));\n  float alpha = max(coverAvg, 1. - ground);\n  vec3 premult = max(color - (1. - alpha), 0.);\n  fragColor = vec4(premult, alpha) * bulgeFade;\n\n  if (u_grainOverlay > 0.) {\n    float grain = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grain = mix(grain, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grain = pow(grain, 1.3);\n    float grainV = grain * 2. - 1.;\n    float grainStrength = pow(u_grainOverlay * abs(grainV), .8) * fragColor.a;\n    fragColor.rgb = mix(fragColor.rgb, vec3(step(0., grainV)) * fragColor.a, .35 * grainStrength);\n  }\n}\n`;var Be={maxColorCount:10},Co=`#version 300 es\nprecision highp float;\n\nin mediump vec2 v_imageUV;\nin mediump vec2 v_objectUV;\nout vec4 fragColor;\n\nuniform sampler2D u_image;\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colors[${Be.maxColorCount}];\nuniform float u_colorsCount;\n\nuniform float u_angle;\nuniform float u_noise;\nuniform float u_innerGlow;\nuniform float u_outerGlow;\nuniform float u_contour;\n\n#define TWO_PI 6.28318530718\n#define PI 3.14159265358979323846\n\nfloat getImgFrame(vec2 uv, float th) {\n  float frame = 1.;\n  frame *= smoothstep(0., th, uv.y);\n  frame *= 1. - smoothstep(1. - th, 1., uv.y);\n  frame *= smoothstep(0., th, uv.x);\n  frame *= 1. - smoothstep(1. - th, 1., uv.x);\n  return frame;\n}\n\nfloat circle(vec2 uv, vec2 c, vec2 r) {\n  return 1. - smoothstep(r[0], r[1], length(uv - c));\n}\n\nfloat lst(float edge0, float edge1, float x) {\n  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\nfloat sst(float edge0, float edge1, float x) {\n  return smoothstep(edge0, edge1, x);\n}\n\nfloat shadowShape(vec2 uv, float t, float contour) {\n  vec2 scaledUV = uv;\n\n  // base shape tranjectory\n  float posY = mix(-1., 2., t);\n\n  // scaleX when it's moving down\n  scaledUV.y -= .5;\n  float mainCircleScale = sst(0., .8, posY) * lst(1.4, .9, posY);\n  scaledUV *= vec2(1., 1. + 1.5 * mainCircleScale);\n  scaledUV.y += .5;\n\n  // base shape\n  float innerR = .4;\n  float outerR = 1. - .3 * (sst(.1, .2, t) * (1. - sst(.2, .5, t)));\n  float s = circle(scaledUV, vec2(.5, posY - .2), vec2(innerR, outerR));\n  float shapeSizing = sst(.2, .3, t) * sst(.6, .3, t);\n  s = pow(s, 1.4);\n  s *= 1.2;\n\n  // flat gradient to take over the shadow shape\n  float topFlattener = 0.;\n  {\n    float pos = posY - uv.y;\n    float edge = 1.2;\n    topFlattener = lst(-.4, 0., pos) * (1. - sst(.0, edge, pos));\n    topFlattener = pow(topFlattener, 3.);\n    float topFlattenerMixer = (1. - sst(.0, .3, pos));\n    s = mix(topFlattener, s, topFlattenerMixer);\n  }\n\n  // apple right circle\n  {\n    float visibility = sst(.6, .7, t) * (1. - sst(.8, .9, t));\n    float angle = -2. -t * TWO_PI;\n    float rightCircle = circle(uv, vec2(.95 - .2 * cos(angle), .4 - .1 * sin(angle)), vec2(.15, .3));\n    rightCircle *= visibility;\n    s = mix(s, 0., rightCircle);\n  }\n\n  // apple top circle\n  {\n    float topCircle = circle(uv, vec2(.5, .19), vec2(.05, .25));\n    topCircle += 2. * contour * circle(uv, vec2(.5, .19), vec2(.2, .5));\n    float visibility = .55 * sst(.2, .3, t) * (1. - sst(.3, .45, t));\n    topCircle *= visibility;\n    s = mix(s, 0., topCircle);\n  }\n\n  float leafMask = circle(uv, vec2(.53, .13), vec2(.08, .19));\n  leafMask = mix(leafMask, 0., 1. - sst(.4, .54, uv.x));\n  leafMask = mix(0., leafMask, sst(.0, .2, uv.y));\n  leafMask *= (sst(.5, 1.1, posY) * sst(1.5, 1.3, posY));\n  s += leafMask;\n\n  // apple bottom circle\n  {\n    float visibility = sst(.0, .4, t) * (1. - sst(.6, .8, t));\n    s = mix(s, 0., visibility * circle(uv, vec2(.52, .92), vec2(.09, .25)));\n  }\n\n  // random balls that are invisible if apple logo is selected\n  {\n    float pos = sst(.0, .6, t) * (1. - sst(.6, 1., t));\n    s = mix(s, .5, circle(uv, vec2(.0, 1.2 - .5 * pos), vec2(.1, .3)));\n    s = mix(s, .0, circle(uv, vec2(1., .5 + .5 * pos), vec2(.1, .3)));\n\n    s = mix(s, 1., circle(uv, vec2(.95, .2 + .2 * sst(.3, .4, t) * sst(.7, .5, t)), vec2(.07, .22)));\n    s = mix(s, 1., circle(uv, vec2(.95, .2 + .2 * sst(.3, .4, t) * (1. - sst(.5, .7, t))), vec2(.07, .22)));\n    s /= max(1e-4, sst(1., .85, uv.y));\n  }\n\n  s = clamp(0., 1., s);\n  return s;\n}\n\nfloat blurEdge3x3(sampler2D tex, vec2 uv, vec2 dudx, vec2 dudy, float radius, float centerSample) {\n  vec2 texel = 1.0 / vec2(textureSize(tex, 0));\n  vec2 r = radius * texel;\n\n  float w1 = 1.0, w2 = 2.0, w4 = 4.0;\n  float norm = 16.0;\n  float sum = w4 * centerSample;\n\n  sum += w2 * textureGrad(tex, uv + vec2(0.0, -r.y), dudx, dudy).g;\n  sum += w2 * textureGrad(tex, uv + vec2(0.0, r.y), dudx, dudy).g;\n  sum += w2 * textureGrad(tex, uv + vec2(-r.x, 0.0), dudx, dudy).g;\n  sum += w2 * textureGrad(tex, uv + vec2(r.x, 0.0), dudx, dudy).g;\n\n  sum += w1 * textureGrad(tex, uv + vec2(-r.x, -r.y), dudx, dudy).g;\n  sum += w1 * textureGrad(tex, uv + vec2(r.x, -r.y), dudx, dudy).g;\n  sum += w1 * textureGrad(tex, uv + vec2(-r.x, r.y), dudx, dudy).g;\n  sum += w1 * textureGrad(tex, uv + vec2(r.x, r.y), dudx, dudy).g;\n\n  return sum / norm;\n}\n\nvoid main() {\n  vec2 uv = v_objectUV + .5;\n  uv.y = 1. - uv.y;\n\n  vec2 imgUV = v_imageUV;\n  imgUV -= .5;\n  imgUV *= 0.5714285714285714;\n  imgUV += .5;\n  float imgSoftFrame = getImgFrame(imgUV, .03);\n\n  vec4 img = texture(u_image, imgUV);\n  vec2 dudx = dFdx(imgUV);\n  vec2 dudy = dFdy(imgUV);\n\n  if (img.a == 0.) {\n    fragColor = u_colorBack;\n    return;\n  }\n\n  float t = .1 * u_time;\n  t -= .3;\n\n  float tCopy = t + 1. / 3.;\n  float tCopy2 = t + 2. / 3.;\n\n  t = mod(t, 1.);\n  tCopy = mod(tCopy, 1.);\n  tCopy2 = mod(tCopy2, 1.);\n\n  vec2 animationUV = imgUV - vec2(.5);\n  float angle = -u_angle * PI / 180.;\n  float cosA = cos(angle);\n  float sinA = sin(angle);\n  animationUV = vec2(\n  animationUV.x * cosA - animationUV.y * sinA,\n  animationUV.x * sinA + animationUV.y * cosA\n  ) + vec2(.5);\n\n  float shape = img[0];\n\n  img[1] = blurEdge3x3(u_image, imgUV, dudx, dudy, 8., img[1]);\n\n  float outerBlur = 1. - mix(1., img[1], shape);\n  float innerBlur = mix(img[1], 0., shape);\n  float contour = mix(img[2], 0., shape);\n\n  outerBlur *= imgSoftFrame;\n\n  float shadow = shadowShape(animationUV, t, innerBlur);\n  float shadowCopy = shadowShape(animationUV, tCopy, innerBlur);\n  float shadowCopy2 = shadowShape(animationUV, tCopy2, innerBlur);\n\n  float inner = .8 + .8 * innerBlur;\n  inner = mix(inner, 0., shadow);\n  inner = mix(inner, 0., shadowCopy);\n  inner = mix(inner, 0., shadowCopy2);\n\n  inner *= mix(0., 2., u_innerGlow);\n\n  inner += (u_contour * 2.) * contour;\n  inner = min(1., inner);\n  inner *= (1. - shape);\n\n  float outer = 0.;\n  {\n    t *= 3.;\n    t = mod(t - .1, 1.);\n\n    outer = .9 * pow(outerBlur, .8);\n    float y = mod(animationUV.y - t, 1.);\n    float animatedMask = sst(.3, .65, y) * (1. - sst(.65, 1., y));\n    animatedMask = .5 + animatedMask;\n    outer *= animatedMask;\n    outer *= mix(0., 5., pow(u_outerGlow, 2.));\n    outer *= imgSoftFrame;\n  }\n\n  inner = pow(inner, 1.2);\n  float heat = clamp(inner + outer, 0., 1.);\n\n  heat += (.005 + .35 * u_noise) * (fract(sin(dot(uv, vec2(12.9898, 78.233))) * 43758.5453123) - .5);\n\n  float mixer = heat * u_colorsCount;\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n  float outerShape = 0.;\n  for (int i = 1; i < ${Be.maxColorCount+1}; i++) {\n    if (i > int(u_colorsCount)) break;\n    float m = clamp(mixer - float(i - 1), 0., 1.);\n    if (i == 1) {\n      outerShape = m;\n    }\n    vec4 c = u_colors[i - 1];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, m);\n  }\n\n  vec3 color = gradient.rgb * outerShape;\n  float opacity = gradient.a * outerShape;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1.0 - opacity);\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\n\n  color += .02 * (fract(sin(dot(uv + 1., vec2(12.9898, 78.233))) * 43758.5453123) - .5);\n\n  fragColor = vec4(color, opacity);\n}\n`;function wo(o){let e=document.createElement(\"canvas\"),a=1e3;return new Promise((r,u)=>{let l=new Image;l.crossOrigin=\"anonymous\",l.addEventListener(\"load\",()=>{(typeof o==\"string\"?o.endsWith(\".svg\"):o.type===\"image/svg+xml\")&&(l.width=a,l.height=a);let c=l.naturalWidth/l.naturalHeight,t=Math.floor(a*.15),p=Math.ceil(t*2.5),s=a,g=a;c>1?g=Math.floor(a/c):s=Math.floor(a*c),e.width=s+2*p,e.height=g+2*p;let f=e.getContext(\"2d\",{willReadFrequently:!0});if(!f)throw new Error(\"Failed to get canvas 2d context\");f.fillStyle=\"white\",f.fillRect(0,0,e.width,e.height),f.drawImage(l,p,p,s,g);let{width:m,height:I}=e,v=f.getImageData(0,0,m,I).data,i=m*I,n=new Uint8ClampedArray(i);for(let O=0;O<i;O++){let z=O*4,E=v[z]??0,X=v[z+1]??0,L=v[z+2]??0;n[O]=.299*E+.587*X+.114*L|0}let b=t,w=Math.max(1,Math.round(.12*t)),V=5,F=Se(n,m,I,b,3),C=Se(n,m,I,w,3),x=Se(n,m,I,V,1),R=f.createImageData(m,I),W=R.data;for(let O=0;O<i;O++){let z=O*4;W[z]=x[O]??0,W[z+1]=F[O]??0,W[z+2]=C[O]??0,W[z+3]=255}f.putImageData(R,0,0),e.toBlob(O=>{if(!O){u(new Error(\"Failed to create PNG blob\"));return}r({blob:O})},\"image/png\")}),l.addEventListener(\"error\",()=>{u(new Error(\"Failed to load image\"))}),l.src=typeof o==\"string\"?o:URL.createObjectURL(o)})}function Me(o,e,a,r){if(r<=0)return o.slice();let u=new Uint8ClampedArray(e*a),l=new Uint32Array(e*a);for(let c=0;c<a;c++){let t=0;for(let p=0;p<e;p++){let s=c*e+p,g=o[s]??0;t+=g,l[s]=t+(c>0?l[s-e]??0:0)}}for(let c=0;c<a;c++){let t=Math.max(0,c-r),p=Math.min(a-1,c+r);for(let s=0;s<e;s++){let g=Math.max(0,s-r),f=Math.min(e-1,s+r),m=p*e+f,I=p*e+(g-1),P=(t-1)*e+f,v=(t-1)*e+(g-1),i=l[m]??0,n=g>0?l[I]??0:0,b=t>0?l[P]??0:0,w=g>0&&t>0?l[v]??0:0,V=i-n-b+w,F=(f-g+1)*(p-t+1);u[c*e+s]=Math.round(V/F)}}return u}function Se(o,e,a,r,u){if(r<=0||u<=1)return Me(o,e,a,r);let l=o,c=o;for(let t=0;t<u;t++)c=Me(l,e,a,r),l=c;return c}var So=`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_image;\n\nuniform vec2 u_resolution;\nuniform float u_time;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorTint;\n\nuniform float u_softness;\nuniform float u_repetition;\nuniform float u_shiftRed;\nuniform float u_shiftBlue;\nuniform float u_distortion;\nuniform float u_contour;\nuniform float u_angle;\n\nuniform float u_shape;\nuniform bool u_isImage;\n\nin vec2 v_objectUV;\nin vec2 v_responsiveUV;\nin vec2 v_responsiveBoxGivenSize;\nin vec2 v_imageUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${T}\n\nfloat getColorChanges(float c1, float c2, float stripe_p, vec3 w, float blur, float bump, float tint) {\n\n  float ch = mix(c2, c1, smoothstep(.0, 2. * blur, stripe_p));\n\n  float border = w[0];\n  ch = mix(ch, c2, smoothstep(border, border + 2. * blur, stripe_p));\n\n  if (u_isImage == true) {\n    bump = smoothstep(.2, .8, bump);\n  }\n  border = w[0] + .4 * (1. - bump) * w[1];\n  ch = mix(ch, c1, smoothstep(border, border + 2. * blur, stripe_p));\n\n  border = w[0] + .5 * (1. - bump) * w[1];\n  ch = mix(ch, c2, smoothstep(border, border + 2. * blur, stripe_p));\n\n  border = w[0] + w[1];\n  ch = mix(ch, c1, smoothstep(border, border + 2. * blur, stripe_p));\n\n  float gradient_t = (stripe_p - w[0] - w[1]) / w[2];\n  float gradient = mix(c1, c2, smoothstep(0., 1., gradient_t));\n  ch = mix(ch, gradient, smoothstep(border, border + .5 * blur, stripe_p));\n\n  // Tint color is applied with color burn blending\n  ch = mix(ch, 1. - min(1., (1. - ch) / max(tint, 0.0001)), u_colorTint.a);\n  return ch;\n}\n\nfloat getImgFrame(vec2 uv, float th) {\n  float frame = 1.;\n  frame *= smoothstep(0., th, uv.y);\n  frame *= 1.0 - smoothstep(1. - th, 1., uv.y);\n  frame *= smoothstep(0., th, uv.x);\n  frame *= 1.0 - smoothstep(1. - th, 1., uv.x);\n  return frame;\n}\n\nfloat blurEdge3x3(sampler2D tex, vec2 uv, vec2 dudx, vec2 dudy, float radius, float centerSample) {\n  vec2 texel = 1.0 / vec2(textureSize(tex, 0));\n  vec2 r = radius * texel;\n\n  float w1 = 1.0, w2 = 2.0, w4 = 4.0;\n  float norm = 16.0;\n  float sum = w4 * centerSample;\n\n  sum += w2 * textureGrad(tex, uv + vec2(0.0, -r.y), dudx, dudy).r;\n  sum += w2 * textureGrad(tex, uv + vec2(0.0, r.y), dudx, dudy).r;\n  sum += w2 * textureGrad(tex, uv + vec2(-r.x, 0.0), dudx, dudy).r;\n  sum += w2 * textureGrad(tex, uv + vec2(r.x, 0.0), dudx, dudy).r;\n\n  sum += w1 * textureGrad(tex, uv + vec2(-r.x, -r.y), dudx, dudy).r;\n  sum += w1 * textureGrad(tex, uv + vec2(r.x, -r.y), dudx, dudy).r;\n  sum += w1 * textureGrad(tex, uv + vec2(-r.x, r.y), dudx, dudy).r;\n  sum += w1 * textureGrad(tex, uv + vec2(r.x, r.y), dudx, dudy).r;\n\n  return sum / norm;\n}\n\nfloat lst(float edge0, float edge1, float x) {\n  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\nvoid main() {\n\n  const float firstFrameOffset = 2.8;\n  float t = .3 * (u_time + firstFrameOffset);\n\n  vec2 uv = v_imageUV;\n  vec2 dudx = dFdx(v_imageUV);\n  vec2 dudy = dFdy(v_imageUV);\n  vec4 img = textureGrad(u_image, uv, dudx, dudy);\n\n  if (u_isImage == false) {\n    uv = v_objectUV + .5;\n    uv.y = 1. - uv.y;\n  }\n\n  float cycleWidth = u_repetition;\n  float edge = 0.;\n  float contOffset = 1.;\n\n  vec2 rotatedUV = uv - vec2(.5);\n  float angle = (-u_angle + 70.) * PI / 180.;\n  float cosA = cos(angle);\n  float sinA = sin(angle);\n  rotatedUV = vec2(\n  rotatedUV.x * cosA - rotatedUV.y * sinA,\n  rotatedUV.x * sinA + rotatedUV.y * cosA\n  ) + vec2(.5);\n\n  // u_contour is applied in 2 separate ranges:\n  // - 0 to .4 sets the edge hardness, saturated above .4 (both branches below)\n  // - .5 to 1 warps the stripes direction along the edges, inactive below .5 (see u_contour range 2)\n  if (u_isImage == true) {\n    float edgeRaw = img.r;\n    edge = blurEdge3x3(u_image, uv, dudx, dudy, 6., edgeRaw);\n    edge = pow(edge, 1.6);\n    edge *= mix(0.0, 1.0, smoothstep(0.0, 0.4, u_contour));\n  } else {\n    if (u_shape < 1.) {\n      // full-fill on canvas\n      vec2 borderUV = v_responsiveUV + .5;\n      float ratio = v_responsiveBoxGivenSize.x / v_responsiveBoxGivenSize.y;\n      vec2 mask = min(borderUV, 1. - borderUV);\n      vec2 pixel_thickness = min(250. / v_responsiveBoxGivenSize, vec2(.5));\n      float maskX = smoothstep(0.0, pixel_thickness.x, mask.x);\n      float maskY = smoothstep(0.0, pixel_thickness.y, mask.y);\n      maskX = pow(maskX, .25);\n      maskY = pow(maskY, .25);\n      edge = clamp(1. - maskX * maskY, 0., 1.);\n\n      uv = v_responsiveUV;\n      if (ratio > 1.) {\n        uv.y /= ratio;\n      } else {\n        uv.x *= ratio;\n      }\n      uv += .5;\n      uv.y = 1. - uv.y;\n\n      cycleWidth *= 2.;\n      contOffset = 1.5;\n\n    } else if (u_shape < 2.) {\n      // circle\n      vec2 shapeUV = uv - .5;\n      shapeUV *= .67;\n      edge = pow(clamp(3. * length(shapeUV), 0., 1.), 18.);\n    } else if (u_shape < 3.) {\n      // daisy\n      vec2 shapeUV = uv - .5;\n      shapeUV *= 1.68;\n\n      float r = length(shapeUV) * 2.;\n      float a = atan(shapeUV.y, shapeUV.x) + .2;\n      r *= (1. + .05 * sin(3. * a + 2. * t));\n      float f = abs(cos(a * 3.));\n      edge = smoothstep(f, f + .7, r);\n      edge *= edge;\n\n      uv *= .8;\n      cycleWidth *= 1.6;\n\n    } else if (u_shape < 4.) {\n      // diamond\n      vec2 shapeUV = uv - .5;\n      shapeUV = rotate(shapeUV, .25 * PI);\n      shapeUV *= 1.42;\n      shapeUV += .5;\n      vec2 mask = min(shapeUV, 1. - shapeUV);\n      vec2 pixel_thickness = vec2(.15);\n      float maskX = smoothstep(0.0, pixel_thickness.x, mask.x);\n      float maskY = smoothstep(0.0, pixel_thickness.y, mask.y);\n      maskX = pow(maskX, .25);\n      maskY = pow(maskY, .25);\n      edge = clamp(1. - maskX * maskY, 0., 1.);\n    } else if (u_shape < 5.) {\n      // metaballs\n      vec2 shapeUV = uv - .5;\n      shapeUV *= 1.3;\n      edge = 0.;\n      for (int i = 0; i < 5; i++) {\n        float fi = float(i);\n        float speed = 1.5 + 2./3. * sin(fi * 12.345);\n        float angle = -fi * 1.5;\n        vec2 dir1 = vec2(cos(angle), sin(angle));\n        vec2 dir2 = vec2(cos(angle + 1.57), sin(angle + 1.));\n        vec2 traj = .4 * (dir1 * sin(t * speed + fi * 1.23) + dir2 * cos(t * (speed * 0.7) + fi * 2.17));\n        float d = length(shapeUV + traj);\n        edge += pow(1.0 - clamp(d, 0.0, 1.0), 4.0);\n      }\n      edge = 1. - smoothstep(.65, .9, edge);\n      edge = pow(edge, 4.);\n    }\n\n    edge = mix(smoothstep(.9 - 2. * fwidth(edge), .9, edge), edge, smoothstep(0.0, 0.4, u_contour));\n\n  }\n\n  float opacity = 0.;\n  if (u_isImage == true) {\n    opacity = img.g;\n    float frame = getImgFrame(v_imageUV, 0.);\n    opacity *= frame;\n  } else {\n    opacity = 1. - smoothstep(.9 - 2. * fwidth(edge), .9, edge);\n    if (u_shape < 2.) {\n      edge = 1.2 * edge;\n    } else if (u_shape < 5.) {\n      edge = 1.8 * pow(edge, 1.5);\n    }\n  }\n\n  float diagBLtoTR = rotatedUV.x - rotatedUV.y;\n  float diagTLtoBR = rotatedUV.x + rotatedUV.y;\n\n  vec3 color = vec3(0.);\n  vec3 color1 = vec3(.98, 0.98, 1.);\n  vec3 color2 = vec3(.1, .1, .1 + .1 * smoothstep(.7, 1.3, diagTLtoBR));\n\n  vec2 grad_uv = uv - .5;\n\n  float dist = length(grad_uv + vec2(0., .2 * diagBLtoTR));\n  grad_uv = rotate(grad_uv, (.25 - .2 * diagBLtoTR) * PI);\n  float direction = grad_uv.x;\n\n  float bump = pow(1.8 * dist, 1.2);\n  bump = 1. - bump;\n  bump *= pow(uv.y, .3);\n\n\n  float thin_strip_1_ratio = .12 / cycleWidth * (1. - .4 * bump);\n  float thin_strip_2_ratio = .07 / cycleWidth * (1. + .4 * bump);\n  float wide_strip_ratio = (1. - thin_strip_1_ratio - thin_strip_2_ratio);\n\n  float thin_strip_1_width = cycleWidth * thin_strip_1_ratio;\n  float thin_strip_2_width = cycleWidth * thin_strip_2_ratio;\n\n  float noise = snoise(uv - t);\n\n  edge += (1. - edge) * u_distortion * noise;\n\n  direction += diagBLtoTR;\n  float contour = 0.;\n  direction -= 2. * noise * diagBLtoTR * (smoothstep(0., 1., edge) * (1.0 - smoothstep(0., 1., edge)));\n  // u_contour range 2\n  direction *= mix(1., 1. - edge, smoothstep(.5, 1., u_contour));\n  direction -= 1.7 * edge * smoothstep(.5, 1., u_contour);\n  direction += .2 * pow(u_contour, 4.) * (1.0 - smoothstep(0., 1., edge));\n\n  bump *= clamp(pow(uv.y, .1), .3, 1.);\n  direction *= (.1 + (1.1 - edge) * bump);\n\n  direction *= (.4 + .6 * (1.0 - smoothstep(.5, 1., edge)));\n  direction += .18 * (smoothstep(.1, .2, uv.y) * (1.0 - smoothstep(.2, .4, uv.y)));\n  direction += .03 * (smoothstep(.1, .2, 1. - uv.y) * (1.0 - smoothstep(.2, .4, 1. - uv.y)));\n\n  direction *= (.5 + .5 * pow(uv.y, 2.));\n  direction *= cycleWidth;\n  direction -= t;\n\n\n  float colorDispersion = (1. - bump);\n  colorDispersion = clamp(colorDispersion, 0., 1.);\n  float dispersionRed = colorDispersion;\n  dispersionRed += .03 * bump * noise;\n  dispersionRed += 5. * (smoothstep(-.1, .2, uv.y) * (1.0 - smoothstep(.1, .5, uv.y))) * (smoothstep(.4, .6, bump) * (1.0 - smoothstep(.4, 1., bump)));\n  dispersionRed -= diagBLtoTR;\n\n  float dispersionBlue = colorDispersion;\n  dispersionBlue *= 1.3;\n  dispersionBlue += (smoothstep(0., .4, uv.y) * (1.0 - smoothstep(.1, .8, uv.y))) * (smoothstep(.4, .6, bump) * (1.0 - smoothstep(.4, .8, bump)));\n  dispersionBlue -= .2 * edge;\n\n  dispersionRed *= (u_shiftRed / 20.);\n  dispersionBlue *= (u_shiftBlue / 20.);\n\n  float blur = 0.;\n  float rExtraBlur = 0.;\n  float gExtraBlur = 0.;\n  if (u_isImage == true) {\n    float softness = 0.05 * u_softness;\n    blur = softness + .5 * smoothstep(1., 10., u_repetition) * smoothstep(.0, 1., edge);\n    float smallCanvasT = 1.0 - smoothstep(100., 500., min(u_resolution.x, u_resolution.y));\n    blur += smallCanvasT * smoothstep(.0, 1., edge);\n    rExtraBlur = softness * (0.05 + .1 * (u_shiftRed / 20.) * bump);\n    gExtraBlur = softness * 0.05 / max(0.001, abs(1. - diagBLtoTR));\n  } else {\n    blur = u_softness / 15. + .3 * contour;\n  }\n\n  vec3 w = vec3(thin_strip_1_width, thin_strip_2_width, wide_strip_ratio);\n  w[1] -= .02 * smoothstep(.0, 1., edge + bump);\n  float stripe_r = fract(direction + dispersionRed);\n  float r = getColorChanges(color1.r, color2.r, stripe_r, w, blur + fwidth(stripe_r) + rExtraBlur, bump, u_colorTint.r);\n  float stripe_g = fract(direction);\n  float g = getColorChanges(color1.g, color2.g, stripe_g, w, blur + fwidth(stripe_g) + gExtraBlur, bump, u_colorTint.g);\n  float stripe_b = fract(direction - dispersionBlue);\n  float b = getColorChanges(color1.b, color2.b, stripe_b, w, blur + fwidth(stripe_b), bump, u_colorTint.b);\n\n  color = vec3(r, g, b);\n  color *= opacity;\n\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n  color = color + bgColor * (1. - opacity);\n  opacity = opacity + u_colorBack.a * (1. - opacity);\n\n  ${U}\n\n  fragColor = vec4(color, opacity);\n}\n`,J={measurePerformance:!1,workingSize:512,iterations:40};function Bo(o){let e=document.createElement(\"canvas\"),a=e.getContext(\"2d\"),r=typeof o==\"string\"&&o.startsWith(\"blob:\");return new Promise((u,l)=>{if(!o||!a){l(new Error(\"Invalid file or canvas context\"));return}let c=r&&fetch(o).then(s=>s.headers.get(\"Content-Type\")),t=new Image;t.crossOrigin=\"anonymous\";let p=performance.now();t.onload=async()=>{let s,g=await c;g?s=g===\"image/svg+xml\":typeof o==\"string\"?s=o.endsWith(\".svg\")||o.startsWith(\"data:image/svg+xml\"):s=o.type===\"image/svg+xml\";let f=t.width||t.naturalWidth,m=t.height||t.naturalHeight;if(s){let _=f/m;f>m?(f=4096,m=4096/_):(m=4096,f=4096*_),t.width=f,t.height=m}let I=Math.min(f,m),v=J.workingSize/I,i=Math.round(f*v),n=Math.round(m*v);J.measurePerformance&&(console.log(\"[Processing Mode]\"),console.log(`  Original: ${f}\\xD7${m}`),console.log(`  Working: ${i}\\xD7${n} (${(v*100).toFixed(1)}% scale)`),v<1&&console.log(`  Speedup: ~${Math.round(1/(v*v))}\\xD7`)),e.width=f,e.height=m;let b=document.createElement(\"canvas\");b.width=i,b.height=n;let w=b.getContext(\"2d\");w.drawImage(t,0,0,i,n);let V=performance.now(),C=w.getImageData(0,0,i,n).data,x=new Uint8Array(i*n),R=new Uint8Array(i*n),W=0;for(let h=0,_=0;h<C.length;h+=4,_++){let D=C[h+3]===0?0:1;x[_]=D,W+=D}let O=[],z=[];for(let h=0;h<n;h++)for(let _=0;_<i;_++){let S=h*i+_;if(!x[S])continue;let D=!1;_===0||_===i-1||h===0||h===n-1?D=!0:D=!x[S-1]||!x[S+1]||!x[S-i]||!x[S+i]||!x[S-i-1]||!x[S-i+1]||!x[S+i-1]||!x[S+i+1],D?(R[S]=1,O.push(S)):z.push(S)}J.measurePerformance&&(console.log(`[Mask Building] Time: ${(performance.now()-V).toFixed(2)}ms`),console.log(`  Shape pixels: ${W} / ${i*n} (${(W/(i*n)*100).toFixed(1)}%)`),console.log(`  Interior pixels: ${z.length}`),console.log(`  Boundary pixels: ${O.length}`));let E=Uo(x,R,new Uint32Array(z),new Uint32Array(O),i,n),X=performance.now(),L=Vo(E,x,R,i,n);J.measurePerformance&&console.log(`[Poisson Solve] Time: ${(performance.now()-X).toFixed(2)}ms`);let K=0,H;for(let h=0;h<z.length;h++){let _=z[h];L[_]>K&&(K=L[_])}let $=document.createElement(\"canvas\");$.width=i,$.height=n;let ie=$.getContext(\"2d\"),Q=ie.createImageData(i,n);for(let h=0;h<n;h++)for(let _=0;_<i;_++){let S=h*i+_,D=S*4;if(!x[S])Q.data[D]=255,Q.data[D+1]=255,Q.data[D+2]=255,Q.data[D+3]=0;else{let oe=255*(1-L[S]/K);Q.data[D]=oe,Q.data[D+1]=oe,Q.data[D+2]=oe,Q.data[D+3]=255}}ie.putImageData(Q,0,0),a.imageSmoothingEnabled=!0,a.imageSmoothingQuality=\"high\",a.drawImage($,0,0,i,n,0,0,f,m);let G=a.getImageData(0,0,f,m),ee=document.createElement(\"canvas\");ee.width=f,ee.height=m;let j=ee.getContext(\"2d\");j.drawImage(t,0,0,f,m);let re=j.getImageData(0,0,f,m);for(let h=0;h<G.data.length;h+=4){let _=re.data[h+3],S=G.data[h+3];_===0?(G.data[h]=255,G.data[h+1]=0):(G.data[h]=S===0?0:G.data[h],G.data[h+1]=_),G.data[h+2]=255,G.data[h+3]=255}a.putImageData(G,0,0),H=G,e.toBlob(h=>{if(!h){l(new Error(\"Failed to create PNG blob\"));return}if(J.measurePerformance){let _=performance.now()-p;if(console.log(`[Total Processing Time] ${_.toFixed(2)}ms`),v<1){let S=_*Math.pow(f*m/(i*n),1.5);console.log(`[Estimated time at full resolution] ~${S.toFixed(0)}ms`),console.log(`[Time saved] ~${(S-_).toFixed(0)}ms (${Math.round(S/_)}\\xD7 faster)`)}}u({imageData:H,pngBlob:h})},\"image/png\")},t.onerror=()=>l(new Error(\"Failed to load image\")),t.src=typeof o==\"string\"?o:URL.createObjectURL(o)})}function Uo(o,e,a,r,u,l){let c=a.length,t=new Int32Array(c*4);for(let p=0;p<c;p++){let s=a[p],g=s%u,f=Math.floor(s/u);t[p*4+0]=g<u-1&&o[s+1]?s+1:-1,t[p*4+1]=g>0&&o[s-1]?s-1:-1,t[p*4+2]=f>0&&o[s-u]?s-u:-1,t[p*4+3]=f<l-1&&o[s+u]?s+u:-1}return{interiorPixels:a,boundaryPixels:r,pixelCount:c,neighborIndices:t}}function Vo(o,e,a,r,u){let l=J.iterations,c=.01,t=new Float32Array(r*u),{interiorPixels:p,neighborIndices:s,pixelCount:g}=o,f=performance.now(),m=1.9,I=[],P=[];for(let v=0;v<g;v++){let i=p[v],n=i%r,b=Math.floor(i/r);(n+b)%2===0?I.push(v):P.push(v)}for(let v=0;v<l;v++){for(let i of I){let n=p[i],b=s[i*4+0],w=s[i*4+1],V=s[i*4+2],F=s[i*4+3],C=0;b>=0&&(C+=t[b]),w>=0&&(C+=t[w]),V>=0&&(C+=t[V]),F>=0&&(C+=t[F]);let x=(c+C)/4;t[n]=m*x+(1-m)*t[n]}for(let i of P){let n=p[i],b=s[i*4+0],w=s[i*4+1],V=s[i*4+2],F=s[i*4+3],C=0;b>=0&&(C+=t[b]),w>=0&&(C+=t[w]),V>=0&&(C+=t[V]),F>=0&&(C+=t[F]);let x=(c+C)/4;t[n]=m*x+(1-m)*t[n]}}if(J.measurePerformance){let v=performance.now()-f;console.log(`[Optimized Poisson Solver (SOR \\u03C9=${m})]`),console.log(`  Working size: ${r}\\xD7${u}`),console.log(`  Iterations: ${l}`),console.log(`  Time: ${v.toFixed(2)}ms`),console.log(`  Interior pixels processed: ${g}`),console.log(`  Speed: ${(l*g/(v*1e3)).toFixed(2)} Mpixels/sec`)}return t}var ko={none:0,circle:1,daisy:2,diamond:3,metaballs:4};var Io=`#version 300 es\nprecision mediump float;\n\nuniform vec4 u_colorFront;\nuniform vec4 u_colorBack;\nuniform float u_radius;\nuniform float u_contrast;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\n\nuniform float u_size;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\nuniform float u_grainSize;\nuniform float u_grid;\nuniform bool u_originalColors;\nuniform bool u_inverted;\nuniform float u_type;\n\nin vec2 v_imageUV;\n\nout vec4 fragColor;\n\n${d}\n${A}\n${M}\n\nfloat valueNoise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = hash21(i);\n  float b = hash21(i + vec2(1.0, 0.0));\n  float c = hash21(i + vec2(0.0, 1.0));\n  float d = hash21(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat lst(float edge0, float edge1, float x) {\n  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n}\n\nfloat sst(float edge0, float edge1, float x) {\n  return smoothstep(edge0, edge1, x);\n}\n\nfloat getCircle(vec2 uv, float r, float baseR) {\n  r = mix(.25 * baseR, 0., r);\n  float d = length(uv - .5);\n  float aa = fwidth(d);\n  return 1. - smoothstep(r - aa, r + aa, d);\n}\n\nfloat getCell(vec2 uv) {\n  float insideX = step(0.0, uv.x) * (1.0 - step(1.0, uv.x));\n  float insideY = step(0.0, uv.y) * (1.0 - step(1.0, uv.y));\n  return insideX * insideY;\n}\n\nfloat getCircleWithHole(vec2 uv, float r, float baseR) {\n  float cell = getCell(uv);\n\n  r = mix(.75 * baseR, 0., r);\n  float rMod = mod(r, .5);\n\n  float d = length(uv - .5);\n  float aa = fwidth(d);\n  float circle = 1. - smoothstep(rMod - aa, rMod + aa, d);\n  if (r < .5) {\n    return circle;\n  } else {\n    return cell - circle;\n  }\n}\n\nfloat getGooeyBall(vec2 uv, float r, float baseR) {\n  float d = length(uv - .5);\n  float sizeRadius = .3;\n  if (u_grid == 1.) {\n    sizeRadius = .42;\n  }\n  sizeRadius = mix(sizeRadius * baseR, 0., r);\n  d = 1. - sst(0., sizeRadius, d);\n\n  d = pow(d, 2. + baseR);\n  return d;\n}\n\nfloat getSoftBall(vec2 uv, float r, float baseR) {\n  float d = length(uv - .5);\n  float sizeRadius = clamp(baseR, 0., 1.);\n  sizeRadius = mix(.5 * sizeRadius, 0., r);\n  d = 1. - lst(0., sizeRadius, d);\n  float powRadius = 1. - lst(0., 2., baseR);\n  d = pow(d, 4. + 3. * powRadius);\n  return d;\n}\n\nfloat getUvFrame(vec2 uv, vec2 pad) {\n  float aa = 0.0001;\n\n  float left   = smoothstep(-pad.x, -pad.x + aa, uv.x);\n  float right  = smoothstep(1.0 + pad.x, 1.0 + pad.x - aa, uv.x);\n  float bottom = smoothstep(-pad.y, -pad.y + aa, uv.y);\n  float top    = smoothstep(1.0 + pad.y, 1.0 + pad.y - aa, uv.y);\n\n  return left * right * bottom * top;\n}\n\nfloat sigmoid(float x, float k) {\n  return 1.0 / (1.0 + exp(-k * (x - 0.5)));\n}\n\nfloat getLumAtPx(vec2 uv, float contrast) {\n  vec4 tex = texture(u_image, uv);\n  vec3 color = vec3(\n  sigmoid(tex.r, contrast),\n  sigmoid(tex.g, contrast),\n  sigmoid(tex.b, contrast)\n  );\n  float lum = dot(vec3(0.2126, 0.7152, 0.0722), color);\n  lum = mix(1., lum, tex.a);\n  lum = u_inverted ? (1. - lum) : lum;\n  return lum;\n}\n\nfloat getLumBall(vec2 p, vec2 pad, vec2 inCellOffset, float contrast, float baseR, float stepSize, out vec4 ballColor) {\n  p += inCellOffset;\n  vec2 uv_i = floor(p);\n  vec2 uv_f = fract(p);\n  vec2 samplingUV = (uv_i + .5 - inCellOffset) * pad + vec2(.5);\n  float outOfFrame = getUvFrame(samplingUV, pad * stepSize);\n\n  float lum = getLumAtPx(samplingUV, contrast);\n  ballColor = texture(u_image, samplingUV);\n  ballColor.rgb *= ballColor.a;\n  ballColor *= outOfFrame;\n\n  float ball = 0.;\n  if (u_type == 0.) {\n    // classic\n    ball = getCircle(uv_f, lum, baseR);\n  } else if (u_type == 1.) {\n    // gooey\n    ball = getGooeyBall(uv_f, lum, baseR);\n  } else if (u_type == 2.) {\n    // holes\n    ball = getCircleWithHole(uv_f, lum, baseR);\n  } else if (u_type == 3.) {\n    // soft\n    ball = getSoftBall(uv_f, lum, baseR);\n  }\n\n  return ball * outOfFrame;\n}\n\n\nvoid main() {\n\n  float stepMultiplier = 1.;\n  if (u_type == 0.) {\n    // classic\n    stepMultiplier = 2.;\n  } else if (u_type == 1. || u_type == 3.) {\n    // gooey & soft\n    stepMultiplier = 6.;\n  }\n\n  float cellsPerSide = mix(300., 7., pow(u_size, .7));\n  cellsPerSide /= stepMultiplier;\n  float cellSizeY = 1. / cellsPerSide;\n  vec2 pad = cellSizeY * vec2(1. / u_imageAspectRatio, 1.);\n  if (u_type == 1. && u_grid == 1.) {\n    // gooey diagonal grid works differently\n    pad *= .7;\n  }\n\n  vec2 uv = v_imageUV;\n  uv -= vec2(.5);\n  uv /= pad;\n\n  float contrast = mix(0., 15., pow(u_contrast, 1.5));\n  float baseRadius = u_radius;\n  if (u_originalColors == true) {\n    contrast = mix(.1, 4., pow(u_contrast, 2.));\n    baseRadius = 2. * pow(.5 * u_radius, .3);\n  }\n\n  float totalShape = 0.;\n  vec3 totalColor = vec3(0.);\n  float totalOpacity = 0.;\n\n  vec4 ballColor;\n  float shape;\n  float stepSize = 1. / stepMultiplier;\n  for (float x = -0.5; x < 0.5; x += stepSize) {\n    for (float y = -0.5; y < 0.5; y += stepSize) {\n      vec2 offset = vec2(x, y);\n\n      if (u_grid == 1.) {\n        float rowIndex = floor((y + .5) / stepSize);\n        float colIndex = floor((x + .5) / stepSize);\n        if (stepSize == 1.) {\n          rowIndex = floor(uv.y + y + 1.);\n          if (u_type == 1.) {\n            colIndex = floor(uv.x + x + 1.);\n          }\n        }\n        if (u_type == 1.) {\n          if (mod(rowIndex + colIndex, 2.) == 1.) {\n            continue;\n          }\n        } else {\n          if (mod(rowIndex, 2.) == 1.) {\n            offset.x += .5 * stepSize;\n          }\n        }\n      }\n\n      shape = getLumBall(uv, pad, offset, contrast, baseRadius, stepSize, ballColor);\n      totalColor   += ballColor.rgb * shape;\n      totalShape   += shape;\n      totalOpacity += shape;\n    }\n  }\n\n  const float eps = 1e-4;\n\n  totalColor /= max(totalShape, eps);\n  totalOpacity /= max(totalShape, eps);\n\n  float finalShape = 0.;\n  if (u_type == 0.) {\n    finalShape = min(1., totalShape);\n  } else if (u_type == 1.) {\n    float aa = fwidth(totalShape);\n    float th = .5;\n    finalShape = smoothstep(th - aa, th + aa, totalShape);\n  } else if (u_type == 2.) {\n    finalShape = min(1., totalShape);\n  } else if (u_type == 3.) {\n    finalShape = totalShape;\n  }\n\n  vec2 grainSize = mix(2000., 200., u_grainSize) * vec2(1., 1. / u_imageAspectRatio);\n  vec2 grainUV = v_imageUV - .5;\n  grainUV *= grainSize;\n  grainUV += .5;\n  if (u_grainMixer > 0.) {\n    float grain = valueNoise(grainUV);\n    grain = smoothstep(.55, .7 + .2 * u_grainMixer, grain);\n    grain *= u_grainMixer;\n    finalShape = mix(finalShape, 0., grain);\n  }\n\n  vec3 color = vec3(0.);\n  float opacity = 0.;\n\n  if (u_originalColors == true) {\n    color = totalColor * finalShape;\n    opacity = totalOpacity * finalShape;\n\n    vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n    color = color + bgColor * (1. - opacity);\n    opacity = opacity + u_colorBack.a * (1. - opacity);\n  } else {\n    vec3 fgColor = u_colorFront.rgb * u_colorFront.a;\n    float fgOpacity = u_colorFront.a;\n    vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n    float bgOpacity = u_colorBack.a;\n\n    color = fgColor * finalShape;\n    opacity = fgOpacity * finalShape;\n    color += bgColor * (1. - opacity);\n    opacity += bgOpacity * (1. - opacity);\n  }\n\n  if (u_grainOverlay > 0.) {\n    float grainOverlay = valueNoise(rotate(grainUV, 1.) + vec2(3.));\n    grainOverlay = mix(grainOverlay, valueNoise(rotate(grainUV, 2.) + vec2(-1.)), .5);\n    grainOverlay = pow(grainOverlay, 1.3);\n\n    float grainOverlayV = grainOverlay * 2. - 1.;\n    vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n    float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n    grainOverlayStrength = pow(grainOverlayStrength, .8);\n    color = mix(color, grainOverlayColor, .5 * grainOverlayStrength);\n\n    opacity += .5 * grainOverlayStrength;\n  }\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`,Fo={classic:0,gooey:1,holes:2,soft:3},Ro={square:0,hex:1};var Mo=`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_image;\nuniform float u_imageAspectRatio;\n\nuniform vec4 u_colorBack;\nuniform vec4 u_colorC;\nuniform vec4 u_colorM;\nuniform vec4 u_colorY;\nuniform vec4 u_colorK;\nuniform float u_size;\nuniform float u_contrast;\nuniform float u_grainSize;\nuniform float u_grainMixer;\nuniform float u_grainOverlay;\nuniform float u_gridNoise;\nuniform float u_softness;\nuniform float u_floodC;\nuniform float u_floodM;\nuniform float u_floodY;\nuniform float u_floodK;\nuniform float u_gainC;\nuniform float u_gainM;\nuniform float u_gainY;\nuniform float u_gainK;\nuniform float u_type;\nuniform sampler2D u_noiseTexture;\n\nin vec2 v_imageUV;\nout vec4 fragColor;\n\nconst float shiftC = -.5;\nconst float shiftM = -.25;\nconst float shiftY = .2;\nconst float shiftK = 0.;\n\n// Precomputed sin/cos for rotation angles (15\\xB0, 75\\xB0, 0\\xB0, 45\\xB0)\nconst float cosC = 0.9659258;  const float sinC = 0.2588190;   // 15\\xB0\nconst float cosM = 0.2588190;  const float sinM = 0.9659258;   // 75\\xB0\nconst float cosY = 1.0;        const float sinY = 0.0;         // 0\\xB0\nconst float cosK = 0.7071068;  const float sinK = 0.7071068;   // 45\\xB0\n\n${d}\n\nvec2 randomRG(vec2 p) {\n  vec2 uv = floor(p) / 100. + .5;\n  return texture(u_noiseTexture, fract(uv)).rg;\n}\nvec3 hash23(vec2 p) {\n  vec3 p3 = fract(vec3(p.xyx) * vec3(0.3183099, 0.3678794, 0.3141592)) + 0.1;\n  p3 += dot(p3, p3.yzx + 19.19);\n  return fract(vec3(p3.x * p3.y, p3.y * p3.z, p3.z * p3.x));\n}\n\nfloat sst(float edge0, float edge1, float x) {\n  return smoothstep(edge0, edge1, x);\n}\n\nvec3 valueNoise3(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  vec3 a = hash23(i);\n  vec3 b = hash23(i + vec2(1.0, 0.0));\n  vec3 c = hash23(i + vec2(0.0, 1.0));\n  vec3 d = hash23(i + vec2(1.0, 1.0));\n  vec2 u = f * f * (3.0 - 2.0 * f);\n  vec3 x1 = mix(a, b, u.x);\n  vec3 x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n}\n\nfloat getUvFrame(vec2 uv, vec2 pad) {\n  float left   = smoothstep(-pad.x, 0., uv.x);\n  float right  = smoothstep(1. + pad.x, 1., uv.x);\n  float bottom = smoothstep(-pad.y, 0., uv.y);\n  float top    = smoothstep(1. + pad.y, 1., uv.y);\n\n  return left * right * bottom * top;\n}\n\nvec4 RGBAtoCMYK(vec4 rgba) {\n  float k = 1. - max(max(rgba.r, rgba.g), rgba.b);\n  float denom = 1. - k;\n  vec3 cmy = vec3(0.);\n  if (denom > 1e-5) {\n    cmy = (1. - rgba.rgb - vec3(k)) / denom;\n  }\n  return vec4(cmy, k) * rgba.a;\n}\n\nvec3 applyContrast(vec3 rgb) {\n  return clamp((rgb - 0.5) * u_contrast + 0.5, 0.0, 1.0);\n}\n\n// Single-component CMYK extractors with contrast built-in, alpha-aware\nfloat getCyan(vec4 rgba) {\n  vec3 c = clamp((rgba.rgb - 0.5) * u_contrast + 0.5, 0.0, 1.0);\n  float maxRGB = max(max(c.r, c.g), c.b);\n  return (maxRGB > 1e-5 ? (maxRGB - c.r) / maxRGB : 0.) * rgba.a;\n}\nfloat getMagenta(vec4 rgba) {\n  vec3 c = clamp((rgba.rgb - 0.5) * u_contrast + 0.5, 0.0, 1.0);\n  float maxRGB = max(max(c.r, c.g), c.b);\n  return (maxRGB > 1e-5 ? (maxRGB - c.g) / maxRGB : 0.) * rgba.a;\n}\nfloat getYellow(vec4 rgba) {\n  vec3 c = clamp((rgba.rgb - 0.5) * u_contrast + 0.5, 0.0, 1.0);\n  float maxRGB = max(max(c.r, c.g), c.b);\n  return (maxRGB > 1e-5 ? (maxRGB - c.b) / maxRGB : 0.) * rgba.a;\n}\nfloat getBlack(vec4 rgba) {\n  vec3 c = clamp((rgba.rgb - 0.5) * u_contrast + 0.5, 0.0, 1.0);\n  return (1. - max(max(c.r, c.g), c.b)) * rgba.a;\n}\n\nvec2 cellCenterPos(vec2 uv, vec2 cellOffset, float channelIdx) {\n  vec2 cellCenter = floor(uv) + .5 + cellOffset;\n  return cellCenter + (randomRG(cellCenter + channelIdx * 50.) - .5) * u_gridNoise;\n}\n\nvec2 gridToImageUV(vec2 cellCenter, float cosA, float sinA, float shift, vec2 pad) {\n  vec2 uvGrid = mat2(cosA, -sinA, sinA, cosA) * (cellCenter - shift);\n  return uvGrid * pad + 0.5;\n}\n\nvoid colorMask(vec2 pos, vec2 cellCenter, float rad, float transparency, float grain, float channelAddon, float channelgain, float generalComp, bool isJoined, inout float outMask) {\n  float dist = length(pos - cellCenter);\n\n  float radius = rad;\n  radius *= (1. + generalComp);\n  radius += (.15 + channelgain * radius);\n  radius = max(0., radius);\n  radius = mix(0., radius, transparency);\n  radius += channelAddon;\n  radius *= (1. - grain);\n\n  float mask = 1. - sst(0., radius, dist);\n  if (isJoined) {\n    // ink or sharp (joined)\n    mask = pow(mask, 1.2);\n  } else {\n    // dots (separate)\n    mask = sst(.5 - .5 * u_softness, .51 + .49 * u_softness, mask);\n  }\n\n  mask *= mix(1., mix(.5, 1., 1.5 * radius), u_softness);\n  outMask += mask;\n}\n\nvec3 applyInk(vec3 paper, vec3 inkColor, float cov) {\n  vec3 inkEffect = mix(vec3(1.0), inkColor, clamp(cov, 0.0, 1.0));\n  return paper * inkEffect;\n}\n\nvoid main() {\n  vec2 uv = v_imageUV;\n\n  float cellsPerSide = mix(400.0, 7.0, pow(u_size, 0.7));\n  float cellSizeY = 1.0 / cellsPerSide;\n  vec2 pad = cellSizeY * vec2(1.0 / u_imageAspectRatio, 1.0);\n  vec2 uvGrid = (uv - .5) / pad;\n  float insideImageBox = getUvFrame(uv, pad);\n\n  float generalComp = .1 * u_softness + .1 * u_gridNoise + .1 * (1. - step(0.5, u_type)) * (1.5 - u_softness);\n\n  vec2 uvC = mat2(cosC, sinC, -sinC, cosC) * uvGrid + shiftC;\n  vec2 uvM = mat2(cosM, sinM, -sinM, cosM) * uvGrid + shiftM;\n  vec2 uvY = mat2(cosY, sinY, -sinY, cosY) * uvGrid + shiftY;\n  vec2 uvK = mat2(cosK, sinK, -sinK, cosK) * uvGrid + shiftK;\n\n  vec2 grainSize = mix(2000., 200., u_grainSize) * vec2(1., 1. / u_imageAspectRatio);\n  vec2 grainUV = (v_imageUV - .5) * grainSize + .5;\n  // shared by the grain mixer and the grain overlay, skip it when neither is on\n  vec3 noiseValues = vec3(0.);\n  if (u_grainMixer > 0. || u_grainOverlay > 0.) {\n    noiseValues = valueNoise3(grainUV);\n  }\n  float grain = sst(.55, 1., noiseValues.r);\n  grain *= u_grainMixer;\n\n  vec4 outMask = vec4(0.);\n  bool isJoined = u_type > 0.5;\n\n  if (u_type < 1.5) {\n    // dots or ink: per-cell color sampling\n    for (int dy = -1; dy <= 1; dy++) {\n      for (int dx = -1; dx <= 1; dx++) {\n        vec2 cellOffset = vec2(float(dx), float(dy));\n\n        vec2 cellCenterC = cellCenterPos(uvC, cellOffset, 0.);\n        vec4 texC = texture(u_image, gridToImageUV(cellCenterC, cosC, sinC, shiftC, pad));\n        colorMask(uvC, cellCenterC, getCyan(texC), insideImageBox * texC.a, grain, u_floodC, u_gainC, generalComp, isJoined, outMask[0]);\n\n        vec2 cellCenterM = cellCenterPos(uvM, cellOffset, 1.);\n        vec4 texM = texture(u_image, gridToImageUV(cellCenterM, cosM, sinM, shiftM, pad));\n        colorMask(uvM, cellCenterM, getMagenta(texM), insideImageBox * texM.a, grain, u_floodM, u_gainM, generalComp, isJoined, outMask[1]);\n\n        vec2 cellCenterY = cellCenterPos(uvY, cellOffset, 2.);\n        vec4 texY = texture(u_image, gridToImageUV(cellCenterY, cosY, sinY, shiftY, pad));\n        colorMask(uvY, cellCenterY, getYellow(texY), insideImageBox * texY.a, grain, u_floodY, u_gainY, generalComp, isJoined, outMask[2]);\n\n        vec2 cellCenterK = cellCenterPos(uvK, cellOffset, 3.);\n        vec4 texK = texture(u_image, gridToImageUV(cellCenterK, cosK, sinK, shiftK, pad));\n        colorMask(uvK, cellCenterK, getBlack(texK), insideImageBox * texK.a, grain, u_floodK, u_gainK, generalComp, isJoined, outMask[3]);\n      }\n    }\n  } else {\n    // sharp: direct px color sampling\n    vec4 tex = texture(u_image, uv);\n    tex.rgb = applyContrast(tex.rgb);\n    insideImageBox *= tex.a;\n    vec4 cmykOriginal = RGBAtoCMYK(tex);\n    for (int dy = -1; dy <= 1; dy++) {\n      for (int dx = -1; dx <= 1; dx++) {\n        vec2 cellOffset = vec2(float(dx), float(dy));\n\n        colorMask(uvC, cellCenterPos(uvC, cellOffset, 0.), cmykOriginal.x, insideImageBox, grain, u_floodC, u_gainC, generalComp, isJoined, outMask[0]);\n        colorMask(uvM, cellCenterPos(uvM, cellOffset, 1.), cmykOriginal.y, insideImageBox, grain, u_floodM, u_gainM, generalComp, isJoined, outMask[1]);\n        colorMask(uvY, cellCenterPos(uvY, cellOffset, 2.), cmykOriginal.z, insideImageBox, grain, u_floodY, u_gainY, generalComp, isJoined, outMask[2]);\n        colorMask(uvK, cellCenterPos(uvK, cellOffset, 3.), cmykOriginal.w, insideImageBox, grain, u_floodK, u_gainK, generalComp, isJoined, outMask[3]);\n      }\n    }\n  }\n\n  float shape;\n\n  float C = outMask[0];\n  float M = outMask[1];\n  float Y = outMask[2];\n  float K = outMask[3];\n\n  if (isJoined) {\n    // ink or sharp: apply threshold for joined dots\n    float th = .5;\n    float sLeft = th * u_softness;\n    float sRight = (1. - th) * u_softness + .01;\n    C = smoothstep(th - sLeft - fwidth(C), th + sRight, C);\n    M = smoothstep(th - sLeft - fwidth(M), th + sRight, M);\n    Y = smoothstep(th - sLeft - fwidth(Y), th + sRight, Y);\n    K = smoothstep(th - sLeft - fwidth(K), th + sRight, K);\n  }\n\n  C *= u_colorC.a;\n  M *= u_colorM.a;\n  Y *= u_colorY.a;\n  K *= u_colorK.a;\n\n  vec3 ink = vec3(1.);\n  ink = applyInk(ink, u_colorK.rgb, K);\n  ink = applyInk(ink, u_colorC.rgb, C);\n  ink = applyInk(ink, u_colorM.rgb, M);\n  ink = applyInk(ink, u_colorY.rgb, Y);\n\n  shape = clamp(max(max(C, M), max(Y, K)), 0., 1.);\n\n  vec3 color = u_colorBack.rgb * u_colorBack.a;\n\n  float opacity = u_colorBack.a;\n  color = mix(color, ink, shape);\n  opacity += shape;\n  opacity = clamp(opacity, 0., 1.);\n\n  float grainOverlay = mix(noiseValues.g, noiseValues.b, .5);\n  grainOverlay = pow(grainOverlay, 1.3);\n\n  float grainOverlayV = grainOverlay * 2. - 1.;\n  vec3 grainOverlayColor = vec3(step(0., grainOverlayV));\n  float grainOverlayStrength = u_grainOverlay * abs(grainOverlayV);\n  grainOverlayStrength = pow(grainOverlayStrength, .8);\n  color = mix(color, grainOverlayColor, .5 * grainOverlayStrength);\n\n  opacity += .5 * grainOverlayStrength;\n  opacity = clamp(opacity, 0., 1.);\n\n  fragColor = vec4(color, opacity);\n}\n`,Oo={dots:0,ink:1,sharp:2};var Ue={maxColorCount:6},Do=`#version 300 es\nprecision mediump float;\n\nin mediump vec2 v_imageUV;\nin mediump vec2 v_objectUV;\nin mediump vec2 v_responsiveUV;\nin mediump vec2 v_responsiveBoxGivenSize;\n                                               \nout vec4 fragColor;\n\nuniform sampler2D u_image;\nuniform float u_shape;\nuniform bool u_isImage;\n\nuniform float u_time;\nuniform vec4 u_colors[${Ue.maxColorCount}];\nuniform float u_colorsCount;\nuniform vec4 u_colorBack;\nuniform vec4 u_colorInner;\nuniform float u_innerDistortion;\nuniform float u_outerDistortion;\nuniform float u_outerGlow;\nuniform float u_innerGlow;\nuniform float u_offset;\nuniform float u_angle;\nuniform float u_size;\n\n${d}\n${A}\n\n// 9x9 Gaussian blur on R and G channels\nvec2 gaussBlur9x9RG(sampler2D tex, vec2 uv, float radius) {\n  vec2 texel = 1.0 / vec2(textureSize(tex, 0));\n  vec2 r = max(radius, 0.0) * texel;\n  // Pascal's row 8: sum = 256, 2D norm = 65536\n  const float k[9] = float[9](1.0, 8.0, 28.0, 56.0, 70.0, 56.0, 28.0, 8.0, 1.0);\n  vec2 sum = vec2(0.0);\n\n  for (int j = -4; j <= 4; ++j) {\n    float wy = k[j + 4];\n    for (int i = -4; i <= 4; ++i) {\n      float w = k[i + 4] * wy;\n      vec2 off = vec2(float(i) * r.x, float(j) * r.y);\n      sum += w * texture(tex, uv + off).rg;\n    }\n  }\n\n  return sum / 65536.0;\n}\n\nfloat sst(float a, float b, float x) {\n  return smoothstep(a, b, x);\n}\n\nvoid main() {\n  float time = u_time;\n\n  float roundness = 0.;\n  float imgAlpha = 0.;\n\n  if (u_isImage == true) {\n    // Image sampling (UV scaled inward to account for padding)\n    vec2 imageUV = v_imageUV;\n    imageUV -= .5;\n    imageUV *= .95;\n    imageUV += .5;\n\n    // Blurred image: x = roundness, y = alpha\n    vec2 blurred = gaussBlur9x9RG(u_image, imageUV, 10.);\n    roundness = 1. - blurred.x;\n    vec2 texelA = 1.0 / vec2(textureSize(u_image, 0));\n    const float k3[3] = float[3](1.0, 2.0, 1.0);\n    for (int j = -1; j <= 1; ++j) {\n      for (int i = -1; i <= 1; ++i) {\n        imgAlpha += k3[i + 1] * k3[j + 1] * texture(u_image, imageUV + vec2(float(i) * texelA.x, float(j) * texelA.y)).g;\n      }\n    }\n    imgAlpha /= 16.0;\n  } else {\n    vec2 uv = v_objectUV + .5;\n    uv.y = 1. - uv.y;\n    float edge = 0.;\n\n    if (u_shape < 1.) {\n      // full-fill on canvas\n      vec2 borderUV = v_responsiveUV + .5;\n      vec2 mask = min(borderUV, 1. - borderUV);\n      vec2 pixel_thickness = min(250. / v_responsiveBoxGivenSize, vec2(.5));\n      float maskX = smoothstep(0.0, pixel_thickness.x, mask.x);\n      float maskY = smoothstep(0.0, pixel_thickness.y, mask.y);\n      maskX = pow(maskX, .25);\n      maskY = pow(maskY, .25);\n      edge = clamp(1. - maskX * maskY, 0., 1.);\n    } else if (u_shape < 2.) {\n      // circle\n      vec2 shapeUV = uv - .5;\n      shapeUV *= .67;\n      edge = pow(clamp(3. * length(shapeUV), 0., 1.), 18.);\n    } else if (u_shape < 3.) {\n      // daisy\n      vec2 shapeUV = uv - .5;\n      shapeUV *= 1.68;\n\n      float r = length(shapeUV) * 2.;\n      float a = atan(shapeUV.y, shapeUV.x) + .2;\n      r *= (1. + .05 * sin(3. * a + 2. * time));\n      float f = abs(cos(a * 3.));\n      edge = smoothstep(f, f + .7, r);\n      edge *= edge;\n    } else if (u_shape < 4.) {\n      // diamond\n      vec2 shapeUV = uv - .5;\n      shapeUV = rotate(shapeUV, .25 * PI);\n      shapeUV *= 1.42;\n      shapeUV += .5;\n      vec2 mask = min(shapeUV, 1. - shapeUV);\n      vec2 pixel_thickness = vec2(.15);\n      float maskX = smoothstep(0.0, pixel_thickness.x, mask.x);\n      float maskY = smoothstep(0.0, pixel_thickness.y, mask.y);\n      maskX = pow(maskX, .25);\n      maskY = pow(maskY, .25);\n      edge = clamp(1. - maskX * maskY, 0., 1.);\n    } else if (u_shape < 5.) {\n      // metaballs\n      vec2 shapeUV = uv - .5;\n      shapeUV *= 1.3;\n      edge = 0.;\n      for (int i = 0; i < 5; i++) {\n        float fi = float(i);\n        float speed = 1.5 + 2./3. * sin(fi * 12.345);\n        float angle = -fi * 1.5;\n        vec2 dir1 = vec2(cos(angle), sin(angle));\n        vec2 dir2 = vec2(cos(angle + 1.57), sin(angle + 1.));\n        vec2 traj = .4 * (dir1 * sin(time * speed + fi * 1.23) + dir2 * cos(time * (speed * 0.7) + fi * 2.17));\n        float d = length(shapeUV + traj);\n        edge += pow(1.0 - clamp(d, 0.0, 1.0), 4.0);\n      }\n      edge = 1. - smoothstep(.65, .9, edge);\n      edge = pow(edge, 4.);\n    }\n\n    imgAlpha = 1. - smoothstep(.9 - 2. * fwidth(edge), .9, edge);\n    roundness = 1. - edge;\n  }\n\n// Smoke UV setup\n  vec2 smokeUV = v_objectUV;\n  smokeUV = rotate(smokeUV, u_angle * PI / 180.);\n  smokeUV *= mix(4., 1., u_size);\n\n  // Two swirl paths: inner (shape-masked) and outer (free), each with independent distortion\n  vec2 innerUV = smokeUV;\n  vec2 outerUV = smokeUV;\n\n  // Vertical displacement \\u2014 applied independently to inner and outer\n  innerUV.y += u_innerDistortion * (1. - sst(0., 1., length(.4 * innerUV)));\n  innerUV.y -= .4 * u_innerDistortion;\n  innerUV.y += .7 * u_offset * roundness;\n\n  outerUV.y += u_outerDistortion * (1. - sst(0., 1., length(.4 * outerUV)));\n  outerUV.y -= .4 * u_outerDistortion;\n\n  float innerSwirl = u_innerDistortion * roundness;\n  float outerSwirl = u_outerDistortion;\n\n  for (int i = 1; i < 5; i++) {\n    float fi = float(i);\n\n    float stretchIn = max(length(dFdx(innerUV)), length(dFdy(innerUV)));\n    float dampenIn = 1. / (1. + stretchIn * 8.);\n    float sIn = innerSwirl * dampenIn;\n    innerUV.x += sIn / fi * cos(time + fi * 2.9 * innerUV.y);\n    innerUV.y += sIn / fi * cos(time + fi * 1.5 * innerUV.x);\n\n    float stretchOut = max(length(dFdx(outerUV)), length(dFdy(outerUV)));\n    float dampenOut = 1. / (1. + stretchOut * 8.);\n    float sOut = outerSwirl * dampenOut;\n    outerUV.x += sOut / fi * cos(time + fi * 2.9 * outerUV.y);\n    outerUV.y += sOut / fi * cos(time + fi * 1.5 * outerUV.x);\n  }\n\n  // Smoke shapes from swirl fields\n  float innerShape = exp(-1.5 * dot(innerUV, innerUV));\n  float outerShape = exp(-1.5 * dot(outerUV, outerUV));\n\n  // Visibility masks\n  float outerMask = pow(u_outerGlow, 2.) * (1. - imgAlpha);\n  float innerMask = (.01 + .99 * u_innerGlow) * imgAlpha;\n\n  innerShape *= innerMask;\n  outerShape *= outerMask;\n\n  // Color gradient\n  float mixer = (innerShape + outerShape) * u_colorsCount;\n  vec4 gradient = u_colors[0];\n  gradient.rgb *= gradient.a;\n\n  float smokeMask = 0.;\n  for (int i = 1; i < ${Ue.maxColorCount+1}; i++) {\n    if (i > int(u_colorsCount)) break;\n\n    float m = sst(0., 1., clamp(mixer - float(i - 1), 0., 1.));\n    if (i == 1) smokeMask = m;\n\n    vec4 c = u_colors[i - 1];\n    c.rgb *= c.a;\n    gradient = mix(gradient, c, m);\n  }\n\n  // Compositing (premultiplied alpha, front-to-back)\n  vec3 color = gradient.rgb * smokeMask;\n  float opacity = gradient.a * smokeMask;\n\n  float innerOpacity = u_colorInner.a * imgAlpha;\n  vec3 innerColor = u_colorInner.rgb * innerOpacity;\n  color += innerColor * (1.0 - opacity);\n  opacity += innerOpacity * (1.0 - opacity);\n\n  vec3 backColor = u_colorBack.rgb * u_colorBack.a;\n  color += backColor * (1.0 - opacity);\n  opacity += u_colorBack.a * (1.0 - opacity);\n\n  fragColor = vec4(color, opacity);\n}\n`,Z={measurePerformance:!1,workingSize:512,iterations:32};function zo(o){let e=document.createElement(\"canvas\"),a=e.getContext(\"2d\"),r=typeof o==\"string\"&&o.startsWith(\"blob:\");return new Promise((u,l)=>{if(!o||!a){l(new Error(\"Invalid file or canvas context\"));return}let c=r&&fetch(o).then(s=>s.headers.get(\"Content-Type\")),t=new Image;t.crossOrigin=\"anonymous\";let p=performance.now();t.onload=async()=>{let s,g=await c;g?s=g===\"image/svg+xml\":typeof o==\"string\"?s=o.endsWith(\".svg\")||o.startsWith(\"data:image/svg+xml\"):s=o.type===\"image/svg+xml\";let f=t.width||t.naturalWidth,m=t.height||t.naturalHeight;if(s){let B=f/m;f>m?(f=4096,m=4096/B):(m=4096,f=4096*B),t.width=f,t.height=m}let I=Math.min(f,m),v=Z.workingSize/I,i=Math.round(f*v),n=Math.round(m*v);Z.measurePerformance&&(console.log(\"[Processing Mode]\"),console.log(`  Original: ${f}\\xD7${m}`),console.log(`  Working: ${i}\\xD7${n} (${(v*100).toFixed(1)}% scale)`),v<1&&console.log(`  Speedup: ~${Math.round(1/(v*v))}\\xD7`)),e.width=f,e.height=m;let b=.025,w=Math.ceil(i*b),V=Math.ceil(n*b),F=i-2*w,C=n-2*V,x=document.createElement(\"canvas\");x.width=i,x.height=n;let R=x.getContext(\"2d\");R.drawImage(t,w,V,F,C);let W=performance.now(),z=R.getImageData(0,0,i,n).data,E=new Uint8Array(i*n),X=new Uint8Array(i*n),L=0;for(let y=0,B=0;y<z.length;y+=4,B++){let N=z[y+3]===0?0:1;E[B]=N,L+=N}let K=[],H=[];for(let y=0;y<n;y++)for(let B=0;B<i;B++){let k=y*i+B;if(!E[k])continue;let N=!1;B===0||B===i-1||y===0||y===n-1?N=!0:N=!E[k-1]||!E[k+1]||!E[k-i]||!E[k+i]||!E[k-i-1]||!E[k-i+1]||!E[k+i-1]||!E[k+i+1],N?(X[k]=1,K.push(k)):H.push(k)}Z.measurePerformance&&(console.log(`[Mask Building] Time: ${(performance.now()-W).toFixed(2)}ms`),console.log(`  Shape pixels: ${L} / ${i*n} (${(L/(i*n)*100).toFixed(1)}%)`),console.log(`  Interior pixels: ${H.length}`),console.log(`  Boundary pixels: ${K.length}`));let $=Eo(E,X,new Uint32Array(H),new Uint32Array(K),i,n),ie=performance.now(),Q=Po($,E,X,i,n);Z.measurePerformance&&console.log(`[Poisson Solve] Time: ${(performance.now()-ie).toFixed(2)}ms`);let G=0,ee;for(let y=0;y<H.length;y++){let B=H[y];Q[B]>G&&(G=Q[B])}let j=document.createElement(\"canvas\");j.width=i,j.height=n;let re=j.getContext(\"2d\"),h=re.createImageData(i,n);for(let y=0;y<n;y++)for(let B=0;B<i;B++){let k=y*i+B,N=k*4;if(!E[k])h.data[N]=255,h.data[N+1]=255,h.data[N+2]=255,h.data[N+3]=0;else{let pe=255*(1-Q[k]/G);h.data[N]=pe,h.data[N+1]=pe,h.data[N+2]=pe,h.data[N+3]=255}}re.putImageData(h,0,0),a.imageSmoothingEnabled=!0,a.imageSmoothingQuality=\"high\",a.drawImage(j,0,0,i,n,0,0,f,m);let _=a.getImageData(0,0,f,m),S=Math.ceil(f*b),D=Math.ceil(m*b),se=document.createElement(\"canvas\");se.width=f,se.height=m;let oe=se.getContext(\"2d\");oe.drawImage(t,S,D,f-2*S,m-2*D);let Oe=oe.getImageData(0,0,f,m);for(let y=0;y<_.data.length;y+=4){let B=Oe.data[y+3],k=_.data[y+3];B===0?(_.data[y]=255,_.data[y+1]=0):(_.data[y]=k===0?0:_.data[y],_.data[y+1]=B),_.data[y+2]=255,_.data[y+3]=255}a.putImageData(_,0,0),ee=_,e.toBlob(y=>{if(!y){l(new Error(\"Failed to create PNG blob\"));return}if(Z.measurePerformance){let B=performance.now()-p;if(console.log(`[Total Processing Time] ${B.toFixed(2)}ms`),v<1){let k=B*Math.pow(f*m/(i*n),1.5);console.log(`[Estimated time at full resolution] ~${k.toFixed(0)}ms`),console.log(`[Time saved] ~${(k-B).toFixed(0)}ms (${Math.round(k/B)}\\xD7 faster)`)}}u({imageData:ee,pngBlob:y})},\"image/png\")},t.onerror=()=>l(new Error(\"Failed to load image\")),t.src=typeof o==\"string\"?o:URL.createObjectURL(o)})}function Eo(o,e,a,r,u,l){let c=a.length,t=new Int32Array(c*4);for(let p=0;p<c;p++){let s=a[p],g=s%u,f=Math.floor(s/u);t[p*4+0]=g<u-1&&o[s+1]?s+1:-1,t[p*4+1]=g>0&&o[s-1]?s-1:-1,t[p*4+2]=f>0&&o[s-u]?s-u:-1,t[p*4+3]=f<l-1&&o[s+u]?s+u:-1}return{interiorPixels:a,boundaryPixels:r,pixelCount:c,neighborIndices:t}}function Po(o,e,a,r,u){let l=Z.iterations,c=.01,t=new Float32Array(r*u),{interiorPixels:p,neighborIndices:s,pixelCount:g}=o,f=performance.now(),m=1.9,I=[],P=[];for(let i=0;i<g;i++){let n=p[i],b=n%r,w=Math.floor(n/r);(b+w)%2===0?I.push(i):P.push(i)}for(let i=0;i<l;i++){for(let n of I){let b=p[n],w=s[n*4+0],V=s[n*4+1],F=s[n*4+2],C=s[n*4+3],x=0;w>=0&&(x+=t[w]),V>=0&&(x+=t[V]),F>=0&&(x+=t[F]),C>=0&&(x+=t[C]);let R=(c+x)/4;t[b]=m*R+(1-m)*t[b]}for(let n of P){let b=p[n],w=s[n*4+0],V=s[n*4+1],F=s[n*4+2],C=s[n*4+3],x=0;w>=0&&(x+=t[w]),V>=0&&(x+=t[V]),F>=0&&(x+=t[F]),C>=0&&(x+=t[C]);let R=(c+x)/4;t[b]=m*R+(1-m)*t[b]}}let v=new Float32Array(r*u);for(let i=0;i<3;i++){v.set(t);for(let n=0;n<g;n++){let b=p[n],w=s[n*4+0],V=s[n*4+1],F=s[n*4+2],C=s[n*4+3],x=0,R=0;w>=0&&(x+=v[w],R++),V>=0&&(x+=v[V],R++),F>=0&&(x+=v[F],R++),C>=0&&(x+=v[C],R++),t[b]=R>0?(v[b]+x/R)*.5:v[b]}}if(Z.measurePerformance){let i=performance.now()-f;console.log(`[Optimized Poisson Solver (SOR \\u03C9=${m})]`),console.log(`  Working size: ${r}\\xD7${u}`),console.log(`  Iterations: ${l}`),console.log(`  Time: ${i.toFixed(2)}ms`),console.log(`  Interior pixels processed: ${g}`),console.log(`  Speed: ${(l*g/(i*1e3)).toFixed(2)} Mpixels/sec`)}return t}var To={none:0,circle:1,daisy:2,diamond:3,metaballs:4};function Go(o){if(Array.isArray(o))return o.length===4?o:o.length===3?[...o,1]:ae;if(typeof o!=\"string\")return ae;let e,a,r,u=1;if(o.startsWith(\"#\"))[e,a,r,u]=No(o);else if(o.startsWith(\"rgb\")){let l=Qo(o);if(l===null)return ae;[e,a,r,u]=l}else if(o.startsWith(\"hsl\")){let l=Wo(o);if(l===null)return ae;[e,a,r,u]=Yo(l)}else return console.error(\"Unsupported color format\",o),ae;return[me(e,0,1),me(a,0,1),me(r,0,1),me(u,0,1)]}function No(o){if(o=o.replace(/^#/,\"\"),(o.length===3||o.length===4)&&(o=o.split(\"\").map(l=>l+l).join(\"\")),o.length===6&&(o=o+\"ff\"),!/^[0-9a-f]{8}$/i.test(o))return console.warn(\"Invalid hex color\"),ae;let e=parseInt(o.slice(0,2),16)/255,a=parseInt(o.slice(2,4),16)/255,r=parseInt(o.slice(4,6),16)/255,u=parseInt(o.slice(6,8),16)/255;return[e,a,r,u]}function Qo(o){let e=o.match(/^rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);return e?[parseInt(e[1]??\"0\")/255,parseInt(e[2]??\"0\")/255,parseInt(e[3]??\"0\")/255,e[4]===void 0?1:parseFloat(e[4])]:null}function Wo(o){let e=o.match(/^hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);return e?[parseInt(e[1]??\"0\"),parseInt(e[2]??\"0\"),parseInt(e[3]??\"0\"),e[4]===void 0?1:parseFloat(e[4])]:null}function Yo(o){let[e,a,r,u]=o,l=e/360,c=a/100,t=r/100,p,s,g;if(a===0)p=s=g=t;else{let f=(P,v,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<.16666666666666666?P+(v-P)*6*i:i<.5?v:i<.6666666666666666?P+(v-P)*(.6666666666666666-i)*6:P),m=t<.5?t*(1+c):t+c-t*c,I=2*t-m;p=f(I,m,l+1/3),s=f(I,m,l),g=f(I,m,l-1/3)}return[p,s,g,u]}var me=(o,e,a)=>Math.min(Math.max(o,e),a),ae=[.5,.5,.5,1];function Lo(){if(typeof window>\"u\")return;let o=new Image;return o.src=Ho,o}var Ho=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAADAFBMVEUCAQMBAf7/AgMD/wID//7+/wT+A/4FAmYIAqIKnw7+//4EAisEAUgGBIYIewkFVhEJjAoFAuEFA8GWAv6T/gz+AzER/25z/wu1/w1nAggL/049BQUC/y39BrckAQQp/wr+AZYNOvx9AQkN/pELUvMFaAZTBAgIRgsO/7cJNQT+YgkLwRELIf5O/wlP/v79/q4IGAYLK4+kAQ1tAv4IdMpc/4xNMBF2/lQN2vTFAws9BLf9/3kJJgsMRF3+HwkLxfv9BVL8BHEN/9gMsg7cA/13/vv9OAqWA0sOofP9TAsIe/4FQqoF4Q/aAgsQwnKQAwa5BP0JW21NqgmY/f3Z/wkI7whGjAr7oAkLrGGf/JH8jg4zAj4R0Qr+xQ8VZv1Y/8O6//wfA/5bAT79/lQ1AGn8egkKdom0BgYOsfjtBAVDBoz9/zG0A238P/tsbQ/+A9rIig/HCEtvIgrM/1lwBWgIlmr62Q5qA5FndnEIXa+PthUMrqiRfw6SAodE/0cQm6UOirP5swuMCrEOjvo/dBVSA/79KvCgSBL9M1E/TwjUag/e//2WdPZ2TQ9ZMvfPxRD7aPpmOFqXSPu3pww5B/wR00wTgVf3y6dXW137ffv3c7GNj/icJG+4xvYQ61++CZOVll8p//uXzgyTKg6m/1L47w3cAY8EI1T7xvgKbkr7UsGBJPNsB7xL2wuvd5z3svmDmgipcGT8jez8oP0R6bNYuVpUxRn9LZVkqIijYxK7K/dZBtjH/71ZT/1myfz52fVm2WBfk0vxUFj+Vfv9/9plbfz3yl6VUl+flbNijrpfpfz5TZSGRKAI15X14pSt4vwQKMHOTQlKifz1sKW6A9u2A7R65waprffGcfeY/8iyUsFh3rn4lGERMUHJolveAs+PBdb5iZFuX8S8SH7Ekfe8Lwy0t5cLwsD3s2TzbHXa/478nLtNQ6NtstW15QvaKgr25FJm4vyXwFlPInIPId79dUr77fmr18BGdLHIS/mGx6dKw64L7v6k32XMJrWl8ELA3C70AAAgAElEQVR42gTBCTyUeQMA4P97zIx3ZjDvHGaMYQxjhhm33BGTY8h95sodkaNkXVGhKGdUri+SIxQ6nG36VUhS0rnZ6tsVfR2ibKlta7/d5wH7kMaTxlOVozEoHgU29/ayNC9YlrZdyVT+Lf/dAsDDc/xfzX+MLBa2LK23goK0aXhCxZ8qIAdXYj+c8zviDOtRkhEtRxNajHWLuCtdcfQqV2mgRlpDD6wJpKpBrGON27qa4nNeQOU8ViU0pZ2eCMN5mWO7bfR17Q9ItpsqgZJNJcJSq6cSWiV4q1zIDMmkqzAdpqT8gI5G3qm3YEyliPPG9kiwF7P99ghNn7zLs9EXFvFdLmlOdKBAp2ZyGTcI4JuBPYrWyGCYwgFwOhTmHeYC0zEDSp1iX3W71cqoW332M++OAYJUrEySVX0c5lzmDgLcAQ1yFVVOgQ5l+j1k6TEBidTUek7OF4T2kDYo2eVGwOrglKyGBXYyBrxFv9ptR16B+BJ0IFCsryJve0ZEuzNjLeEcw/0aK/kyku6JW0BiicnCBFptKAQRRNRrtmUV/YOn6GNMHXddsFf1YZCHMnFWgcyp2gnLOWTTBcVQVvM/FTgJAHl0NWHHzL0eqzuRXTDCEO03DoThV3kezhrtpNqKW0Bb3MSSAJMmmVnLEpexS8JrmYOr4KXz1cUmByty3N/sbEzBSP8tfGSCJ3caYDhymsPdGbwO4HAl/+PYDCZNf+H6kofkNk4N4Zn6NM4y1lJD7Tt2gyklnrR48dgbfHXgd9uzHvpamm3wKhcaLcawXWxL5T97dL7MeW3aZ7NDWksVZyZv8VQyjm94CDU7UjtbedqOCvB2DdE+wFC6a5JcEIgkKRJ8cfTGmW/2jMS5LEWWKiGY0BFaDNQ++2+sOifPMQ7CcHeFx+PPpcbzRoy4IKmVwHg/1842BwoGc2qlRVoNjCF59oXsrcBgVEP4u1GIX7jshIMqqPdbGTRJzMXcyyyiNG5fr5qFrUVntrktt4QdJugkr1kzNJCK1roWpTraix9JVMpZcsxGYsJlGiSyEgOFZzHy6YVlilnicmxUVkdX/PetzMBk92PNJNkIaLhmA30XPCrMuncWxOZK9kpLnqpYOOsLFFmaf2Mk8OH+BbwPH7HBX2KGI0Ns80gleH+Y6k0YZcF0sWgpoJA30BBbG59XaKyBHoxFtc2p9sFvyXqo2v2aRKN+1HLPshCibfZESAESYsLXmz3tT4wNMp0Wali+VPN93JIJaQ0AcXGrNMnSS0YASPcaNh32NhO0sWHKPhrNVpCBzyk4EWR/PnmKE+3s2cDO+YF6OddPNx7G4AIrZBPldw6tcss4bqzb6hBy6ccf3YaBSNRBFELueRFp7DXWNMFVAT9J1LNTntEyEI2gJS64oyKMKvSRrbpPQGE0rEEmHyqCl2oQravq51FwJXG0m/pPdRA6Xp3sSLdwGwNytaLg3g3VEE2eFESy/GijQPwmYPjwJT+bH/ax0dNT0NZAFQxyIqKzET00vUDuJ+T25QGCclaGZiJBxsjtz3YMZ0PPsq751h0ldwbZstMgHfnauk/7n1eZxEmYIPf5wPt0KJvg2V9bcYWGgua/Lvn/xG5q98tPLcGzHaac2+Cbs3niyPtGgfYgBT2OHgxvhGxzApoPxPoCOtUNCXX+ojW0ug7DOuyrOOG5GkWhaAzx6ZyGE8qbCPS1oxzPjcWSrG/ICNaNMKsra8bIlQVvmRQ/FY4WiHhnrVz/VfdOiOu6u66gG3NKogJ/0rGdbC+iPN1pbZ4HQAZODS+mC2z9dNBqSzd6mTQWKq+EI3fXgJQdqfqz6jY6Fbs4sWT/QkaLUOBnMhWRmSdrpTy769BcCql1UOmaqtFbDA9d7qEox8Lpa+TPXX+xm40jrB7EBK1lwu6IMud9xh7NBZCbq6PNN/QdTu0BVa2neF+s8b1dGns5tMGxQIP/+fiY60jZNp9n5D9MLm4NLWO2gXVG4xwDXHeHXMFEAITOVUGJRoBUwOV3miiTEPPzLrwDm74zFsW9zkfCASQvPi2RaF9qJ2HHWMJNxCHzDym6tNfXiEe28ZnjmHVGwlSvfgBo4afqcoTh4NNq7QQ1KrPJW+1uHEK1VvTghGa0DAePo8D6D1NCYgEPY239D/RQSUMxWJsAIi5KEp/3/9LH1wSTwl8/mfekwWyIhAwMPErzWxVSL7sFnFT1NqJ+Zb8hX4cqwyucXdUVkaqNeVL7abNtJV++aASn/d+Fw9qlVwplz4SqpVw5CBK7nq483nxbZ8p/8TtFwr8oD5uhq+lxfovd0x4+MHo1Wv14SJzqBo9Un1KCZ8NWfbA7jLeoMjnCcS8bjtKuxii0+0RPZlLS6NdhNKHeN2NSdCswa+K+aGFUTD9MLW9R7mhPT5i88TZvV5rWtuek07W/vBev9eJznPGkM8FrCZ53AB8+Ig7vKms99yRb5fpyoQssijTwz0i22O+HvjsjyGXpqseb4t4j6YW86PfJF2cnjmy8EKVF8sIomGUdVGBquOIDIlHsrgPkJEzw7KovqHB/kS+NPgs9nG9FkG1MJiA0GNwTyj5dRS0uiWTfSLf7jpL0ioLExajL/OJPkUbA6CIdKjpU6XrSY/6mE5Z1IDBoHX7tGx9fFkJZQPrPIW49pj9oUEykkiolzaein8mBh/C/0eAzYoFXHWJxYZWrv/ayPmcWsjfWyDy8ndnmPTldcJ05MaxOoIHWPcND2SOan44Wc1Oxyk59KHbiXwbrxB3qvAEA+Pd3zc3MkDFmxjG3K4ZxjHHfFXKNI691kyRLjmRCUmTQWnQo6XS8JNFBsTkqiRQpijalraTe1VPbpa1394/4PM+naUIl5jb9OQw4tXHsFyAoD/x8vmlYJu23hfowcTnJOXSMUdKum4IqKUd4HJguRiprd/Etw9K/NJ+UKE+T2v39ms2JRGhtNDxShw6kmZEdsr6fwVSzZUCgj/xK8CaD46MMqjtVmEE0DTPS7yo7so402lkAAr5A9TA8YbapYO+4tLHK+uBAqCsdrmkNB/tSNQxgrZRiBjhVSt904TQbBmEDW36UhZEwZN9TbWh1vtrLVYdkQKayJHgjO5aVftyaOhbtIVFjq0gImWcFJbXqPp+aGTaOzHzPptvWbli/tEz5BHs2WdU4y01sOWIdG+CPWbxSDnQ/KbYgddG1ggtPPUFvXeLdNH2EoslAveJl8GUVaLs6WWsoo3G2Q8KnvSkrNV13rJm4fF2jG2NKE3FMgjWPyCyVVZXDxk0WKQyzIcdGvhovfXwvS237WZN3PvX9Dh50V1CMuemc5AkPWBJzzlg8giqz/M3mICBajNsO3PSuByw3zV51gCTybHlfu/R+zXwVekhzN1C0gZCgqc3x8EUR5Mt8LndPRv3AbLnf2ZMLJ2TZBapthY8hSsIET5/vpH1T7/l1IKZl4pTp2eMVFT8J+1JyElnizM32GmBQTaTDJOwuvPCV3QDonD/6xjwgR6SA92MF+v+Xlo/BDyOZJpkM7QFh73uKxzX9hlDol/x5HVESyPM/HNyF6MwCg866UWXm9Jd2xsjrXyEKgjl11K41nEwzFzjyP0V9T87dStAustB/MkOwBaQoOCNG0+6dfSw2YIL2d+aAFbtewoPIATWJC+6il2nDFDx8Vlxg2a22oZG4My48gnrQEcDxOuE71wz51mkfvC3B8gjF04baNRpg6SGoHIAc+zB2Qqqn9yEzCXfpmpdN2kxdkiMQ/W/X7iT/RzkpBGvlGrx2Bs4pl3s8Akl3mRTsubk3x+CQH47r1ZNgECzf7IP0nV8lRUj1XqsW9+wNI0+oAx/lOGVsHcmalqdAqT/Rb+rp3wthEPxjXI6irxhTZc9U20OHSbYAJCX6MKHYW/P8XRlyam7KHfk5VTu8Tmebd889NmQ7hiuPb6bQu8inM/FOXkO7iEWd9hgyBVEErR+8P+Om2lFcXGp8DGe734LHfS2Pk7/pzSwPvdrkd7/NgVo0V8s5ir4NYME0CzGbOVoiygQKh+vexBN5PkUBa1bYInKhFqBi7f3FP9xdy5wmH5ByEL6YmlsN4H+lvQJBG8TSvwBmhcGUafV9uPlIYlkx7S81YuG+rzfC3Eb07PGLSnvKO1ujlkiGMoliWkYJ6XYpHzhP4z5odeImZqKxZT1hFN+arPz5Dw2e00ODXsBCGrf4jB+45ZT7UrN7VBRUYgrUJx0WkxNyMCSxRCIYwgyqxP8Zv9VC+6aiUgB0eIt08YI0fh2ZFRqSilUuRRvmt5jejdoSCjfaRFSca6RXh9kVAjX/OeC8Fbgdo+Ffx9K0zF8p4sLEk27kG2vWNThL82M/h1BScI2Kr8fOKkYdh+WXxAYVPhsD11sx5SDIEyx5CGwE1cQ3osdYdlEP3/AZPwvH8oc1WdqXU/OM6fdPELtY9JRSNHEepmC3ZWgsLZss2H2qwq00xxA81SAexVdwbL1ektQlJeVMZAGObIMXLK5lkb95dhjMzkc/Lq17iiAPa1uAovfIZZLe/kaNzRCUCr39gjN5YW18DwBEKdQkVriaJc5BKEHi5s3DEMukQIe9bStXDHyciJ0Xv84FSgb6OW6WuhFqtyjdjWTw/jt87MnpqzC9LTP5d6vqhMo3Y4u6dwfNAzL++6ah0G8ahltlcWiZPeGtcG104UJ67f4QMwOqq/jMIFw8leQ9VsbOhuOtjYqx9cXIaiBcng3fueAQPIz7hl+NJ2ltWAECQIyl81LAaRwlbECUyuuxtH/i/nb25kFilIsdm9q0qzIVxbO2/dyBPwsOdwI/A1NIhXctIgDDfKCMOLIhEHXE0TYiDRDEMkzWtQ9aBbO3WRIhTdI8MGpPh+xE3SEvZM3TsaSkSwo8aIp7vcBPSpNIUWc9dx2ihGIUfcCMA6h6H0sgzlYo2LzwzsSBG/vPLUKBRAIDClNo2hylJMPNHUF6/FyCi7vsPpUBU5f1Zryco/9dyqeIEYzdzRL4fhRqyDTW1lv0jlQjuBtfaUaKBPI7Hr/G7RcawKWd8xytCCHq0tGrABFlLf+tFnXvcFRUS9SdsaU+DOI67yy47KiS86yVHnkbvbnhw7R5+QMX6efQ0ueOVdVkKZ5o+0GzRYPc72WXnZ220/EEPvQ2mJs9umccvaJ9JQDlWujkWdH+bCuOl6OBriPwtt/6D57aofIHy0JVbraWRZDo7xiUeThF4JL+APjur4ftrBDOoDbMmJGGRvnl0iv71YPgcPgMSa8PT1ZvFkRgx3zPM6BFff0dTJbRNIHNd92hlQTTuYNVd2W6Pu7Myx+NgVOiFPeih7aHHc/Dn2tVtPIQZTLWhr1BSVJzNpZo72uzoDQW1D6KG7aCPz+193FdMxFtZ/hYE8idJqfsq7jHo6USnTep5tp8D4LWtSPqIJS9+U4cc8Ym8lJ94wuv8uj5DlIsflhtItJUoeNhAnkdEmUMIsLbGt6thjaw5suLGIwXg96aII8ttrigpcKpcdmqmOegLraj5h8AAQj+90zF3YhqscELTAFaWZuUAQMThYiUb/FNHAlDUttdbQAyP0iCmwvBlXj3bwwGkEZxh7Y8fY1TB+UUdVfjDXKAaoLYaWGWCmVzzxQxUQK7wSFq7btNyjcmKx2vXgKNSocDI3W0q3gacABoST1YfO0NC0OZ3VJ2PUAwXIcsOj7fJ6GGGw3hkT0GAMOIASUuHGB1NI2BNAAuhQtFj2vT4FWOBwA8AZQCJQw8v+fPYq97G8tFNng/7Ieg+y8KHAcI5wACkQOUMBG9bgUsiYNGzPHqgpWonRw8Fzw7aDForw4oGUkSvQQ4H18ev2sHhEVc+aMCAykFFh8LmGKQVJKhIlOdALmkAKIDBkf5txoCxwKdUAz0ToWOJaUGAeneA3pOjwFyZwApO7V3akpwjkl8oyOFoQqEjYfUC0cBHVCoAzuMMH42EggBKSJqxhsQWwBEu1doBqQKAktnbzMzwTSck8w4yPZwGjYeKiAjDxSHIz0HE3EjHAUOAk5RLXQHqIsOrysqUAHM8BmGZRVNw6Mi1QOeAQRaLLABABIkQAM0yABTbYCxYAC+HWBJ00xdN0r3YZU7ubbjAi0CrjFHxLMzaNEjFLz+4ScStCg4r358a5kbAtifbaHcTY18qVrMIdEEISdanHgWFdkBnM8/SEkTKfoHaS1aNTmZvNwAflsqqgZLAjBXyAMFyrIpbAVGV6oAKrCcPqAr45KYS/sfi9mObGiSlB0D+wALckOOCGOriDK83ywNfxUfTw5tHzwDGiJaJ4SU9holF5fx3X6qZhsRAQeNjT8E/kvHIKvUY1sAUZAea4Onlj9sE68EoEUB458HLCDmAB8MIw6JSiQAN73SPLEOfGU31KMYEYrTousmiyRtBTQ7ClaT3ANP6uFYKL84ahsIP6ssogAAK2ks+AYESgB6V3UYAypGWgKVqngClwwJ4MMim9fqCAHJWh0U5DQ7OVAdSk8dtdOMDCrNkgSBo/c0qyIuBDEFbkh0SUHxE+47GQEo0sga4YD6zesDkgAXwjKzLArVShiyFFWSYXkS3iSlNQsBUb4kAQKUESNv4bFLCMoBtfxJAAAACsmEpW4PjIM0DDK2ZbpZmBCz6FoZBgXsbtnLKab9EAxgAVmSeUimBgihp8IvMSfWAwTyz2AE0IhEJxVzmmrwNT0PncoCGQXQtXwua50xk3uPDI1DfqKHdklTBVYAioGcInu/CGIX1GcrkE1cTAHQHxBAprY2Ib/AxT4WBxZveQAd5CwBQsaMPgkdmgYbVQpqCW6JAP29BmFQDW+aDAMuXCMvfT9WrGXn00cmaaaXZvgDOV/4nwXQKgfTiEmisC6eemBCMrpfiElpnHRef3auBiVEA0qLWeFLEAUBBa5BCblqmQV/CgAZ1UEFS2EgCvpyuAMpGyc9BVooZsCBADmIoACXkboDAEwGNNmnABevAQcGNhceIVFDux3uWIIEPQAsjr5l1g8ClQpMAwJsOVsOFi0Uvq4cDl8PEVl0AAdaC6mFaVQiDNeeA9ECv47hpTZ7Qk1VRRwbdRax8vFXryTiYolAIwprBlZ0pa+KKl5wBU1lQRMCjFIw0l0YdXYDC6i9MgDUC6kp3+A48fLH86hBDQILLQBhZJ5hWwInm3QIHgYZEWvbV70xWqoFLAPERDLK4HM5/cWVKbX8bAMEE7o/Am2aue5ZF6OcLqqvVu8EC6f8aJbYBZOWXW5xKyBANEqjA6AskyIoAf5MBQGnKBpoPTABR+0/oFUHAU1VAKsOqV5NYgBBHwZZh1rUncwDCp7sSWwDQTYKBQdpCzmIrMgNN5QDEbEvW2QFgmmkKFOns0WDQamWLPHDNVGTniIfRQ5HqfKsg8Uue/ER8pZHd+ebUSOm7KgF63WiTIhrWg6oJYgEMYc0LhWELTvncXdcgScC3S+BnrjLYYsZK1PXQ4GJZugCuQAClGncjGcMCJwGMHx8c7mRwoVCQAMJPQO/MQBbcs68Zz2lDQgs/R85PVvPAzRJwGkC7MYIF/UDBRoHd1GhwYuAEoXDO6sFqIIUr3wOHGmZFK1zH11Bh8iGFWc8HgEoQwXvQRxHJDEUBTF/AplEfWUmWSMJpiEUvAcghlFGEQtETwA/BxQAeDBBt1IYKa4cADo6WpUuAAMg0w4DBroB1hgTiAJ/RN9REX0qcIM3Fb7b2AEEm+mOawIEXgFg1ne8ByE6fvMKVpI3IjdsAQETBiWUmjZGDQhjQTF8FgldAgNRNiACM16kCBXhkWoUp+4SP+hEEghL9k9wZjlmc6scT6cUqAASj5U5aTAbAwOEl3ICCG25JR4ffsEKYfUNKIkoY2UMcAkXDqEhrGQ2b2RrqaXjAx81CAUWeXVrAI4mGDm6bXtoAwYVMi4GSk5PUVtclscH8gIhvXQ9UiUA1unQH3gHBwkwq/5SRAaUD0GYbE0QL2MAiQbzlasuGxcYAwE0vhmvfgAe3CW/9BQfAiZ8Tnxx5COM3BRtf6U+K/tpYA+lJQO+LQPteW4WmCHRYyCQALcpWAIX8w0S5CQPI1seMBmCcEAegczCb/8FJpCzbAWD3H5NorMaMENXbcyM+SqnzMa1KAA9KRESUQB+C5mbhqFe5lVYhRtCGAK/a7AxcRIgu2O0PwDuLixjUViaEgz3FA0zqDci2tBRCSARPgRBM/NkGRlZeCFnHlEiyaQrgIgQyl66REcXNJslVzwimlyANCOKfrhClEyKOdFL7hiibMlFBQQg1jaLPAADCPz3BFXbRsbE1+oiTTkKCl8XnvRMQbUbRUgqR+ICSw/lJnACx3kIAhaIfB8W/BnkAGo4MoPAYEEA7RTnB5Sg3RinVnQRBQYS8wR+CaYzXT07BdYMDs8Gu44ABtULIyJHDl9wejIEAGo6jg0VoCpEOI0/YewzCgIzcEmGYDY8+rhtRfEyZQblSwUeDSI/X7sFhPM8FQbc4nCqKe0BtEIkeVqJcscyajxYOUfpyk2ANDYfAOmZD6zJTRSBDpgL/N5wnUqyClKcYB05MI1UBooALCvUhuAcyf9sJiv8GyJRzX/IQQCyC3ZBSzwcO9sXB4AIlRE2vh0HBpcF5grsAQPnqAA7obcALildiZ92TM224bdMmAwPQINWrPd+RCgHJxgDfwMv0YKRlEBHJnpxkJytDXXpANUtIEdWWmUSBAcJCSPkZZ0GEy8MDKof72cdh+oTQjqaLH0McSmDa3cQnJ6lQ0N/+aitLGabIwgrEzCvmmp/o49p5V0GNlRLPRbu2UehI31oa8rgCQhEB6mYuZpU0KMCA2URBW47L4EFCEEgFz8IC8xlQBN3t0iRJY+oxFKsIMEPAMBxbQZ5ChYjF24zfKVBA5UGcHmAAsQ3Zgwn9mMueQ53L9/rahkcB2PJEpl5AIasYhP/UBsSETYp00xgawArAIQDBEgPegICAY7xP353eEuT/Ty9fCWnKMRFNQQACMlLA661MINMsM2jlS7bJr8GyFo0bmasanYGCDqsgIONKQqkAGeBYAkHowDYzhhEM59lCAFQLOH9SCzwQAl9AQZI8AdUPFsoFXJbAAEoFp1vvyL6CQ8nDsdymYQNX0B+FM0EBi+IBmIX5R0i5ed+S0/eRBB2EQBmGBUDWLTLNyEHJKJOPiJaTmkSDpwQNgYCGQqA1LUHqtAwOYMi/of0CMIHTBipAIYEO2MKkkC1BQPDFD4Ax8nmll9bNkZ7bmwv1wIH6qkQQndEHQYPeXxUrLUnE28cVsctUWoZGjYVKWe9VAI7RFHZnmsoBWVmYD4xTWNtGZ9wFawr+wAASdAIf6sAjAbfucWuRAx4jNliQHDSAII30QYUYqZ4xSGTct2+WT1bCnw+AJcbNXKKSE8ZFR+fPATWLFkeHQcVH4CxT9sDtA1cAFADBk8ZBBaRRpJovyFHBAEoMwPaXYvvOh8bfQxDvxShtHKe4KQeeg/AXhcIJKBkjxwgXgB+PCAtPifdTwusJGdXJibqGQzCPyySkBZJpz9En7iGYiCX83wDeQbt1TdkV6IAAGxhL0wERTmBBzESBRUdFRMctnmVblQLazgBAsJXtHhcHCclXRoeywgpDynhVqyFWAZBYTWCEviIXzaHwMxdN05xDT5FAwDkBC0TbBYFo2ssKCNOTQkodAEG0uYMXix5sMvSBZxfQ3Egc5k+AjwvJQOEN9rFpuYXv4oFPCULWRr5AKprOYWuCATtAAlKBrcGkIICAd6cnwxqtl0lfz/5+hUR6q/mHdbFA68Qz8syO8Gibp8LetHFNF8tRAV0bEYORkJhTRQFxAMdPwUJMicmXlQKBmMsZwKoAMA1DGAAEQEnMhcBtQZgNggLxcHiAoCFFYEMAd91E7K+4vHKXBbOfJrOAG1E1YEkqxGsNwUr0w0pR2MitIQ5BlqXAA1atwMCSgBYnTuUtAxxNg0ApC4fgrhL7D5sQQM+pLcGg2RmHwIZNZPGC/cI+3Dbb8WlBSCJ/uO2txmjCBULLyHgqeRjEBLnACxYAkBvBQE2owNsMXy0kzWqADm6Oh7HbSK2kQ53AIoKAFWwN02IAuhiBIQgP30OBTUCcpQr5T2fJjB+bUd/2g5Go9sMv5CrnFlpfAWsi+mamCLtIz5VFsBrbb4AM42rGna4cyoQ2eMO3z8NN8BeNKCKBQp3jFrOL+zqP9WWCQukQGBjmPsTAChybv4zgnVctaQ+ynQlaFQJtTPSxEAsRLwRAK0pStgs2M0EBQtIBmKomNWHKHU1uDIsAg2kEHvlUc5/AgICJ34VcpskFZHSgGFydLhFCo6nCXFfWXgIGgY6R9CKIkFdswK6euK1SRkYAxdXV1Z+9UWpQQOzIqloZy0FIoAZfxX7FAEasEKHC04pAAbnGP4CkFFkEZniWC3xBD13ADNArAFjkW8nICQKAOvmzBI8y+QwMBUgcrY0WJdtSxl0hFiiptgP3hDTlmpdVwDTCwZ0BDrZS0eTQt5GALQLQQJcPsQNOkguZZwCIMTEeadTAyR+ijoz4Qo4VzZZAAAlkSVs6VUcZJepUq0Svzx14BNIbWLpMC7XFJGvfVpoWr+cAI4twmWi2I9wqgwAaiwDPtB9E7z2SlYSA4hvaKQ1nAZ/MnZ2kRZ5P60FIq16lCYDVwVsKAx1BqPRgzsOZvKTPIoBn9kCKTDuDtMFqtp2nRYWNRw6ZBc0MvZ2DYu0CLhiWBeCK9jSZwBQ2CySAafnVwKo3rdJXGWGUQv5gHlWsQQUAFUmWXi4AQNX/oqvEnkEUKG6tlZ9QkzDT1jLpmR9fWCg4wByAi0AWeNCBgYJ12ItvmMCNwrVZkYzcU5GBs8aT0XcqZ04IN6FTgQuL9dZDbIa1W0ER64dUb07oB0eE80fZ8/do84xBFGBcwGbppkJq530TW9GuGMsjLJLNAWrBU0KAKYedUoDH3QB0iGTAE7OOxuOVL8BIAMPUxKLA7HUBjHBHEQvFD87HYE40ZqAAXEF3+EI/FQAACAASURBVAA5VAcYSqwlTR4TFY8AFHwtHQXQhYMABwj490xjbrxCQRY1FA0MBmQdfy8KK5JQK5jIhiNb0AgjOAP7zB0TqcsihQUwRXSdVE4CD0RhWQx6EEYLhhYAeoE3P05iEwbgIiTEHEUiq1SOJcmGFl7Xv0dlavCgAliw5QDiemOUAuaucf5lhTXGhc5AoiqoZFu0WZDr+oQYAoJy3YAB2FsNETiWuCXLoc1tIQasfWYAMgQUTgYARFslHwpiRDUs1hBRoB0bQ7+s0NKTRd1E/RCeHiCeUK9JN5EAdJfznAEq8htHb5ADuUQCf8tY/UgQKaRCDSYrhAiA7UateS9WPksK2cYTfUrVpCTmA0SUrFBkXh0Am/veTf7P7Lb4DU8aKbKXz0zdwW3XchzRimAwkx59hHaKO2GnMbYaFW0YBYkNxWp1SEXiNNCm5g3DNIMgtw+ShZNpOpYq/Q8AswmkIiOEHX99N+JMMAC+JKYI7yrXvJWhZgcNbtz2wQA+bk7APAHTMxnOjSWcrcbzX+OZWahITJEaSlVq6X0QGs2kD7jsDlU8ixd3KQOKAgHdAVMANmNMOIuMjEusSjd7Aw4HHBUmlmJgCkxWYk4Veq5jVQ9CFDiuddoVjHF4dDYARDwtTkEhkSROFdWSdDsWaCj4BExuaA8OTiCxBNJIORyAAoMOTk1iT5wDLiZJBrs7VV4uAKKQCxESEKAfymPGhzOP0pVhBGA8ol5iCxpyOoZZFCJJRRXFTm8sA7PfEnuAEgFx0kBskwNQZhyzMLaesB4SdgBuQAKmhMetRhYAICQAP7EL9S9J8rk7xDAYgIxMIlDWBG0DAW8BYAdGkayHGwwrAi4b/r5sA0rCezgdXjtnijaFR5eSBAz/aVQ+mggCDxmYem6hDQtN369pqjuUEgAYD0BSUCT2CaA0BkkSSiDM6jOEQDOFjTDiIQAVX1TPI7bMwK6hF1sFT16bBoFTnVAAFcgndTYODzc/52xpHRZyNxDDkQBPhGMNhklGAbYDJLs3NFGGnC8lCpbuAl06ZWbRM0QQJgfnBAVVCyqR6L9SLIHQDAVNGpYiAIc1AJk8AIAA0TfDOzNArLrhf7hEtVMnMAEBCT81VCmAL7wJ+AKFpQS0Xx0tbQDcQgEJZzcdBW4AOQB2yAAFEeGWwhWAatIHABBbsCfCPlQAikYBjxdYEHgjNAUNL8OWdGkAXgMfOQDJ05gDZyTItT4pIibKF7+xXSp4Shfkxy9Vylsra8P4h50uKHAGw0KZJbkH2GZs1xvMPI3ddzg1sNxcsWHdA6IsCN0GeRJtVDCuDUWwaQAlQj0Ad2Ca6wMJA8+cfEoKOwP0EoXGHg6EdQUZaed7cUveOVMeswMfGy++GDwFsSsb6S9ehSIqVZF71JbZh6LBFLIRDiAACUrQGh3yN1sIIYIkUOeTKl1MTeQYCiMBFATQgh+ynTsCSAOav9AxNUF/AClE0gY7BIsUJiVNABBFJRT2FwgAslkF4mtM9lMDI6AGHrsDBEMhcPQBAnwmdg8o7YkIzxJYkJ77A35vQ2M8AOfeGivv6N1CumQj+RUGPQOXLeEAqgIp1Ig6o3nGdRl8PTUJyQFDEAJ/KNdr3gkIBywcNHDoiAfNW0CHClyw+AbbsU+ruOwbBAncmpU0WePmFgtJd4UAHD+zLgBSQQAugirUKWA8ERwyAjfDPLchDh3EdJRQgbHANWS4bDX2QWzJ2mJZh18YFTBxVgJsBe9gFSoE7VZXKLlzBo5G6q7l1hLxmQMMA6MLWH9PJUb3QgGZC4SBAx0BINreFj822QBjNwMgk00EK/kAtPUvcwxhc8cPRQBSsLgAbRwSGiMBLa5gDN0OekNWCnc1aV9sqeReuiznCC+PLMjJAh4xhq9iAwgOI3IvvyBg2TibaC5IlpM0Lkp8BdcGL9/LB3D9u3oJVwBZDSkkPQIITsjVS5NtqzukBoSUItLaLUeGQlRph9bxmRwAOCK8upGsTd/aP9AhFkwjBnErDQYAAT28k+5LG8IaPTLcvCciEHIbDW8PS3F7ZABuCV2xjgQ+9MHk5jktIvwbTCddCpWOGVBD4QIOfa+MURkdX70FKoRNAA08ttApUKfTq7tHm6YZAJYNRtEWHxgn4AKWIzQrKipAgSK8tk9aOQpky24DUkQGZnVQoRUBP0NDRI/UwgIAMfAoEBSLZDEgLRO1Br6SV38EF7rXIx/JAQ8E3EALBQcSgN0AFFDXMM+Lcw4EFpWDb2knRW/mRYYdfAUdfQLwWhkUCJQyms1ksgTMpHhbAHil+gEBS7anHDTwiRpCrmULHlgkaWl2VL1GDsrg1apysgeLQcKytiGpZUOcDMqz7zAAQwIiuAc+MjjuBK+JmoanK95NcXD4JyZd2Nh5dmU8IRLLDQdeCTYLvtBn6g+P6dw9JTYeVpoGi4ogu1N/K1HYkQC/YBpZAtrEZABeIfY1qIPPzFLFqQ4DDANRwxLNOQFjDca2WfiWsYh/pDePNz8H8AwduiJsSFkTWQRoen8WGw4Ahh81nyQBP5AGhR0E26ZwQ6DHcrwHTrJhA8yogTgLH9PiAFsgFGUJZgB2SLsyWzN9ASa5CB0yXwEJCam2WKEPNT54YlMBn+0OZwAdDwgEA9SnqxNDFoEDQT0NGaOFEHRADFm8F23JWUQQGhMCArWvLhNCfHChBBcNC6QNK40boQEAO+lRHA2CUxLhZyStpJ7pkDc/Cj5S9VMYHgC1PkR/KyVZmwEdKqJACDEcjSYbdxq+AKHVJUhxUMLPdHUdbAACCP33H9UAA8AELkYySGs1NZFvoAsnLu86CBTGMDtrpS3xOIHVHOVVSwUjxA3XFS3diDMPLbOzB9k7Wc9QwVJ5rhsB6E8S1AAGLXom2BIGMhblrl1bFXIYjQSmRiUtBVEKRbNsx4GKS0NiJC+HPpi9LQ76mjyf6OVwqBcGUmYEXgMTd2A6HWqzv7eGEQxBjkcBU/NVLCeshKpDLHJlq2tKGXeSSwFCJS0yAwEd0QEQYULiWW5o1uMgCv2UbVQVInoFKCv7FzYEEgB+31t4HjUs6mheCcGtRwxkMsMlBBHf1b0ADh8dZLtXOJM2kDUSjgxbWZmpAjISVgRbC4sCJugEjdR31gAp7hMAnkgTM5YXSQOZPGsHOAKwefkwknwPEBMqfn0NhJUI15ICbM0TWmmseAWuYeBQiaoWCRAA1AKbxAo92wPXEUQw7wDfnSIrnG4CGV3YXaBnPavwW4OXApQBfZxDwQ1iC6MENCEJAOKZqDFUARg48iFDTDLhNwWjqH4WHAE7PALJFQV7EwMBmYl4Mx4WDqsCAVgA3AQC/Ncp2LMA2aotBnxeNApPDKe9EVSiGS9JMEtKwJUIlwMUDac5oIEPRnapEikLMwAhzQUgJ3QiA/CiOgqWe23hYA0ZAglKDSQZOAEOC72KBJoavjfOPF3IWRciaEYtEzhLKwC2bklkNZgpRwI6WBtPAw+npsDsD6wU0TJ18JCbBy4aNIHPCstFAhRbFzkDOiYSlyULWoWJuUmHMaMPQhe5B3kbXkVL5bZfW0cOMzb+WAAAkGLfDwBkZAAVpGI4umrpsOchSIGKAzcBIjSXoBNokAlDLAFxFpsCbPTQTw5xswgtiyR9QVUGBDzWTAaVDqEAbCsATiO9za1IUezkU2NfcW/LHFaJ0Z8ACSpJVAV9AnL57hOjBs+jBFaPVyvne8dqLUfbF8GOEKVCDVsBLgxdJgBoClkAqUMmZS9cZrUUCgko/DTSHhYGPC75Dm1CIhnzGV44TgJ57DncEMTOEBWMAIEzFCASqi8BMQDtz2WwAChwVFEFYF5qEVJU837Uyx7fUGxE1YBGgu1N0nEsGiYBARCJGiv7nw4CCctmfyoGrnruhwzdwJUyHQMCWypq8T6caAAE20uVHZAlymbvOgSEAwDthEIcfAVjEQBvBRkXkhxrAm2ikI8RNt45FNuOoFokRRdegaaQOtexKJK1HiUAJWEDJgZz22IINjqFaReWG/QEzfsCRBPGyDdYRgcCrzIksE9ZRSXiAdKtH2VYAuzuqgMa3rADi5QGUH9vDzLeOQIEWwAJV4ubXVPDh5EkEzIVBjBkdMcxmAdVxQcDjxzkZr7HeTUzAQ3p9AaLaZGNHWb007EKkvOzc+9NfzgpIllL5myLFbQLygM4XgYF1J2Tvk0uFwIOEtlkSmFFA/yLJ80NAoMAXcbeHgxwl1jcouxbixCh2lPHTFx3qtaG2fp20wrwOgAL5yMrCgRJvQQtg38vXwf6doIW284PZBpHpsBJPzedw5AHCAEMS7YabRQzbkW6L7ndADPqNCkhAZiLdAMYfiZIPOYjGAwGD9Y6vGuiItqzLShPPJ6nT1V7ZoqepyOwL/dvFVxifBwAiHaMARYTQUxgAgACKxRvBh4kjk4AAwUq3gAAEeZC8yAMw5i22C0+GDtgBDwBXg98AwkROUA8S8YCBF903leViZjUa90cdTEOBrwDXHw1Bg8SIAD9EsSgIQwFDEcasGfBcl/3AGhtMD6YjLVaO7gLSl0BA32wU8o5AecqKYOtbh4BdQNIjo0geknWgXWS7wGzHxZ0A3NqHQEBcwCtNqlyt+c0AOkASngGAApBSYNSsGARwxoqz0NA/ggLh2AmkXEAlkauySUDu3QbBNpQUzkdYm+uYokbAjUmTZkCjHh5Zg4uAQ1OY2Z3mUl9vCwNoKYnFjSlbmiP4RmPUKK7eZ0DPgnn0ZqDmJDuA98yAQ+aL1PCSm9NBjcyE3BMmwCmEOyvBOilD8z03gZJS04dEK5yxwBKUnLULgA795xy0+1MXWEPe0MSTWdOSllnH4JfHofxViJmgMVAnbIMYSY+wAUMGScQ1g8AYqARnwEBAwBI5pMFeFOj84MHBNMeuweIjvkDExPKh9omslGCSVgAiN7YEB44Qpp2LiBjPdarEADOBIQdaOdMeA1XMJ8TpvwQ2tGMe61kiAcdEAoCrtBNJ2/Rhs5WfILCBiM/lIG64B5EVH5MfuQS8x03Za2ACu7cEw7NMQ8fIgA9EhYzJYmjV4svwhdqDI+guRTTWvBAXB1UdpDG1QI4DIY3NMjq48cHAg/PbAeQEFlY8rE5ClIACwBx5RxSJp0jQxFhGENVSjUQBQw2iMOKTHxkGjWS9SnbArELcrY0rwyMZT8ShykQV+FwUJMuUgaIWSeyRBZdbRACRCCiiSAml2AEGGImDUh7HGwsHG5KaxaGKsADQ18qC6KJsaYtDUsAATMPnDFfNa8EAH09YH2HsN5GykhFWAxNkwAGCSh0Vh/nMSOlhmUY7RVMBADQmDc6QPpXOVQoBbAMOyECuunUyxPgsQ0ETnBwRXQBAD4Z9IYX3tRMpbUBBbEOtydiCAIYue+9ssJjHgR/2AeVIIGbAmlLYUymQyRwZQTXBlCWmgNl48hVM7QSIL0CdJNSu2lFnk8fiZUZPRFODQCEH0ExjxJKSHJHTWlhSvJmIZZqczI+ADBfRQ6D4Q78UtkAAwsBw2I4MWsZlxhDLwD/BwD4WAUGCne4shiGGyeronSUAQXP5UkAOZ+BfwIRRANQS2eyNSEDcP67cPQAAA5dPwTl5Eg5FHSFGiQZF6BZBxttv2GoyEQFB0xSNBUW/EssG1aRABX0L0oXTk9w9P/nm+ZVMmhBQhcIGxhYOHHoHwNzJldxFQB0KHapYgBDkY+WKIQBBS3cJQYOvmYAR0qKAE8GApuhVQDTKawrE0mPBQG0gt28GoU0YHBDwfqHHhjbkDpoSWVWA6kEs0e1jAIvmkyegpM6G1IBXUzELwUOM2kAISwmADRsQ0MwYxeYL/A6RQABzliwKBgSK4MIxgogDTzGA86dDMa+XUMCLkazOuVDGApvbCfg4CQac2iJU8SvkQMoMrD+PQICV+oinEEdBm0iJT4MyAhTZgFYEnkWnG9xn0y74ilvXe25Jbli4UIJQAJDDjXiA4QDDSiVdiMi/rXIbh7VAPAPxA4UU/bFj9kDQwQKkZtHAlmRGwAt1n4c5uKmg4kORgd5WBq/V17bNiFuAu4AXIauVmwyb1tJ3gLMkljMvYJpCGEM79RBkhofAX06o1gaLwLwTDaMDQEFuzw6UlE9ASVc4VhyijlwMBC8q5TXBwY+MsgHe0VJoAJjlgAUvh8zAAcyNgUYl0e7u2JdGR5GbEOPBQRZBIQBZnrZAvJGzYKVQg8nTwskXgRp1hvgBRwEizz0V35fMqtosBADNwJ5EsGJBAriES8rADV+1ohgBwcBL3YBFAiISgIAAaiaHtpdDgh2Oj1Dg8G1gzdxdGkYQwW7CQCTNDW1GGtT5qJptqfhAAM2bhqP/YwZCWvDU8wVZmt9qQ2yMo6+KHLZ/dslAgWy5BanAIcBnb5hcjI7WBZ6AqTuASP9LHZRiHh0WQ1dJzgqMXGNqSWF7duSohXEqt3EAck4ZwUVVX45ChZEIBYeFnpOC5wPIwA/Gt0cIcKsoqTJPZ1UTRMBWA9OMqWcK8/YAIvfnzBhEwXifwgthgYgEecXBAsQZSVfVQ0ER3w4TgE8iE6ZEIwoFTYzUwGwt2El03Wp4Q2IALsOJnVYBGZdKCUBwQAqAFqlQEZJRbtrwqcgXlIIUx2NcEShuvIBbgq0XVCNBAKhUT4JQB/OBgqIf3FzY6V7OyKAOAoBASg2GU9GAA4AfSMKojG0m5gyqAe3MXWTUgDAAgxFtBcbx3gCmAYBRCEIaWdBmXYDgQdPhQMSeVkjt+IFTuC6Ij8N8+cIOhMxFvN0DJU7rf6eCTpJ9QNR1LoQQQMgEY26fApxVC5HOGr9sKU9GORpdSRjAW4rUEs3GgRFo9IJvYmKIxn3EuAwADMMjc+dCqyePSGpQbkhEXoVHwb9SJ5eMR3zbXZ4JW2BqZVw2l7pIXRrAhSAEAVRS84yK4rNO2l2wNVcCFW7FQwbADpohDhH+ALV5AgD4rQpGReMQ9tkmLIzbxPPHStlIdXCbS1hCEj4yktcH8cO9QspuSFFc2sfFMjhw8WBfwH4AL00SwUDOthSQB54xEsG0i0ACE7WuddaHtLJZxcCSUEYrDRF7xRceFE3AC2x0k8HnShj+8mn1AICDQvHh7yrNLLpdSMBOF7XG0MIKTpg3XePZSgxj4EUDQW6ERczAmkHACMqRzp7jwLBHE1J+9rgGE0jMKR9eAC3iUeONakBJAvMALJ5jyVnHDpo4HcqIQQqJDKFNBhoGQpAAb6m34tpMCwA0p2et1pv9wIkr2yOkSgpxQLKc1IqDDsWJgQWiFnICOdG5B2pQ1FQEqBk2k0FSQ8oLkFGe38tCE61lDAABt0AMaACES7m5uDMWkOQJp0/Hg41dp5mhRNyv+xrYjkRExpXAACXB7ToUYIOVBcRGpltVbe8OYgfXFsByY4hGhkpkyoB7hcF6K0uvEqfZ3griUwBA1c/lD66CQFPcuK8UwRxQHrjeyZEa4w1vRQqYTgxzxgQEhpdGRUUHRNnf4vqR4ObYGCWlrtDMwhWI0ZhExohPDYcfbYDowruYrcukRU+j0IGABZOTatOWA6DbwRHWnODFRc4PImVa24k7ATGb0kbQpcSsL4YFbkgARWhBHl6vFpBPRSyVmOdTmIXefPQCLgLUWUpNV+MAwdW3p10p0eu5BxC504BVIXy9c4JWFeJA2BjBxPZAnIBVQAZhQU1ADH4DjnMGeNHLOhzGY0L6yQtbYoXAJyb6u1PF7UZ5yAt4JwGYldYBd0VembYLQBnVTpvhSA/ckID5KwqDCHKBp0YAiR0oOcfXFD5GQY+oUJH5JqHAR8UBB9QqIcTPwQDE/cukJsaOVIbAuUBaxEVKvd3i2+Q8BAfV8nGOwKY/DtMAgkLMOnoHpCTARcGXgIUhPyYDnVrAExDQSJ1gGIMGgtYAytm5mAuUxtoB58TXTtv6wUAa0NdRSmbkMUEc15QPzEmWRQCSiw5cA1VoRQfWtxc+T0F03kr1T9b7QirrbwAXiw9TpIQLwMRz1BPIlLVz2C9KLQez0US9jMGnUkwCDWWKKWkjQlmXDZjQFxL7nsoey5VQwonAARTHV+7T2o2FlIjAghKc4pLVFWlP5YBH+iWBrccMUpWvxfLgF2Uc3GlpxBgKSA1C26DD6lECOuPBZ1vBhzxaoJkOfOGBXEfH4SpqLmcqQgHLqpA2FJvoLGFBTTtEVwPgIAWD5czgF1YKwbKK0omhid9pnsG3sdBFgMCnWEwrAt/AAxsDcl3PWYuBXYZt/VAEHZFRyu9ERMlZA7aGdcCBgAJCPb3D2AtAxKrHCcRQEh3PMxxSgZzhpKkABTYngRSabRPLwAEwOdIZ7q4CXUDSQBW4y0NAs3GAJEzApI+A3ch8L5wJxDHl31utHwtomsfuOkYFHczQFQ9YpEkspI90XQaQREGQDYArfYUTT1n+WnEVRlkMK0YFEehewNFXB9Qf7NnPPRJozTB8ggFWhokACEeqsVTFD4NFOtfQSlGkYutE1BndA5zBjM1zCAsKWfDYBYCKsZanqqU8mgF3ANrEAI/HOsHDjgi8oycUYmlahbDEym+E2RZoJ7CuZQvFIZ+Jo+CNsk+dvgAXSsCovgCRS0tyH+aFYaA2V8ApQLIFAW2ZfgiAlIEuwIO4Ap2I1xnL9wAdig3UgIGf6YE6DbBBHsBdxUYPHjSAHNWkIRV4yToTJo9fHKeIa32X0luKS0KMxP3Ko1eRBJCWkIMxCT0QmGFVau4JCE8fyjMBrtGXRFQD0ey3ylvRggAFQMds0jrARM9SsnGPBPwES6Nxm00yQBywllTABaqCdwPMUoO5Qd85Skqddq+OgvwnB0cAXVO92EWHA4IdbRkNjHKtgz1P9igRVKWJTcjwZrR8wLfBG0HCOFOoHq8bxdTQkAxKg8nE1DGHtA3kQgro0sY9PUYwjnZqgN5FQeHiEMAFRkElNIELGVYpCzs7psuagceOx6VnFMNPy/MDQe9BwEqPVUNBAhc0tpXAFewAxZ+AKsGSriss+52JIsIOj6JVHuNtiQnblFpaV8ED8LHvw4EmBgHL1UP5gNrBQ0SQdz+AxUBqnMDNuBtmgbCMweoGxIq9AbOQIyvOd0DVEUOXzQAcJCuFF52j5Jz5aHRQ5YwMny8QQJcFYgAF1sGkRMQBTDDzDdfK4SKytaorCm44gSOswA1lc1IVWqFuh+6x3LnBSUAE2QIWigFHb3YC1BVDwWdb4eIFzrNRimjqSKpwzltIIWEdI49Mh06XQYKBw41oWjUAHwgEoKXEKItKQEDAAsANWhxAN8K2QR2g1UjAts3mDkh2jA/LHK7BM5OEQ6oBqLLHj0aA3U3MX2Kb1wEBNIHNul/ogAnOGEERQWVVxvZA01dshtiBA9sUJqjJEs0APzrxA5TLhld+ImbOIIBSAJ5CsWQ9nwDE4EAmwYAFsoF28p6D1uFMYMFfgYtE6qkNwAATiwqvE9QADoAAQBqF4wG3QAumBeeN0klpFMCJGmFA9QrBAiYUiAsAFvNnm/HCXOBHKIZXyFlQikDC34xeT4IqQES+kh8NAMYAUEAvgB0HiVoCiMIbI4DGSYNQndiOymW01MRHDwWzs/FkmNBosBbZlMJj0LSAQJUiguvPQAHSxcATgAEbkceKlAmA966PQGGvYaul2NcZG64cOS55stIjxIVAZyuYlwBAVoJLrV6cSQeOwLpDQQb3gMFBUOMOKCAHgTAJd/0fsZGRCZz9eoBhQZ9Lx+BmQgjUNWgNZEbkzIzJz7Kn22XMHV5p49UihqXk6EAeqS6kDqzQcAcjElhAwsAIw4bkjXuBXHmkwJFAT8NLgCQSA9fAmoWAII8yBinKIFM5qNFDVITCBY3q1P2BKNnIPIJoA1wSGtOVkMVL0wuW3qGmRItFEJdIwMNRwI4VlZyFA5ntqYu3bk8FuzvX73m+0e8MiSObrkfXIS3PqwgW30csgKb+sNWNAqkAUAHHBcAHisPF8KyNVwdjib4CQEEqB8BBk3RmxoOcAYqEdnBQnikHk+GCzazSTmuSQXIjV1IPVWWBJEz61wSEA0AQA89r+DVIWexHfEtWzwaxWhXkAxh4jFolqsEVsMROEk9ijfAAR5jTmj6exsBtYRyIiMoZ/4tVhPlPMTKWBfLMQIxUwEAmQxJGCMFSwPjJwj2GUxYFhcWg5u0ntEASB9dCwNnhlcp7wADVo2t9ZEqG8wJWw3bW4IBpoWxDiGWcPxTjgYaN78JGGW0oA4BFsFpqTAKAAQ80REueg8DlcPFnx1jXTAK5NnxwgEb60cNmUb1gDo4IDUGyQgCAW8uBE8AClg+kQEACiJyVT5uW8RBG87AFApFlOwHAicmhoIYJ5YKAQzVZCfCeuuSnEUSeZckEiordDgJUX3LlPazKnfNjiIeqMxVZAZZADTEEkZ8EXGL+gFGwrjaTHyCEb//H6AY7NQKJgsWLAEZPFuLZnZGRnQtp1EuJRVuJTGdca2pHwCthB51+ZgAuXp+lRMyJ2SAgrYB6m0Q+/4YDM6aKGi/fSuVCQVuWtMBKztbqWEoa85PVdo7zihmsFxiXjnaYQAUn5bbKOh6s08RBhjdaU82QD8htgUalV8OGmIHAFTgUJyiMgTgxg8fON4ZAaBIgnxJeaqd1gRvBBMITAdGJWRKWx0lAVHR0j4AdvYAdQNaQJUDRHlHml5cSLMjaYxAqHmbAaTZAZcZ5s6JLJGip7sCXaw2LCRnK1YMO4sFRAgVWgfXMfc+zt038JeI6lkCDQU5yCGeZRBOA9aMG3e0AZ7cmQmKjgeCWvmJnn7yAwY8uoEEL1wLBADizps1VFIzm5UYtBHFT5Qy46UAsQTBZCwPgljNPekNGEwdic0FR1JmP5AAhShTl4MCWwq2By1NKlUqzQQGAidkywDoSgYGtQ8JRdefJLqPjw5YsD85GiBWlRsDZ2GzVDkCvRSyUzIq16YUXEBLd2kGn+rLIwAAAK1JREFUf54DD3C0WwmGPi9OSjpCA0A7fFwUZTm0ktDZLl5VXmbFDDQACl7+QSry5QCM2bfNC+WAFj1LAzLsiwEBaQCW/1EGcMN/tG8OViQtylulBUxRADYm5SEBRAcAARkeMC5iRNgZhOoxnz4oHApa6gD3ASdbmF188wxpDZVKUL4RUhTSSRvrQAZLDcgauImabgJzkXIaALePAXot1j6Bdwe3AXoQAnXMFVuCApGWbjuRvTu7AAAAAElFTkSuQmCC\";var qo=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";export{so as DitheringShapes,lo as DitheringTypes,Xe as DotGridShapes,To as GemSmokeShapes,yo as GlassDistortionShapes,_o as GlassGridShapes,co as GrainGradientShapes,Oo as HalftoneCmykTypes,Ro as HalftoneDotsGrids,Fo as HalftoneDotsTypes,ko as LiquidMetalShapes,fo as PulsingBorderAspectRatios,Qe as ShaderFitOptions,de as ShaderMount,oo as WarpPatterns,mo as colorPanelsFragmentShader,ue as colorPanelsMeta,Ge as defaultObjectSizing,Ne as defaultPatternSizing,ro as ditheringFragmentShader,qe as dotGridFragmentShader,He as dotOrbitFragmentShader,ve as dotOrbitMeta,qo as emptyPixel,xo as flutedGlassFragmentShader,Do as gemSmokeFragmentShader,Ue as gemSmokeMeta,Go as getShaderColorFromString,Lo as getShaderNoiseTexture,to as godRaysFragmentShader,ye as godRaysMeta,no as grainGradientFragmentShader,Ae as grainGradientMeta,Mo as halftoneCmykFragmentShader,Io as halftoneDotsFragmentShader,Co as heatmapFragmentShader,Be as heatmapMeta,bo as imageDitheringFragmentShader,Ee as isPaperShaderElement,Ao as lensDistortionFragmentShader,Re as lensDistortionMeta,So as liquidMetalFragmentShader,We as meshGradientFragmentShader,ge as meshGradientMeta,je as metaballsFragmentShader,ne as metaballsMeta,Le as neuroNoiseFragmentShader,vo as paperTextureFragmentShader,fe as paperTextureMeta,Je as perlinNoiseFragmentShader,uo as pulsingBorderFragmentShader,ce as pulsingBorderMeta,Ke as simplexNoiseFragmentShader,he as simplexNoiseMeta,Ye as smokeRingFragmentShader,le as smokeRingMeta,ao as spiralFragmentShader,po as staticMeshGradientFragmentShader,Ce as staticMeshGradientMeta,go as staticRadialGradientFragmentShader,we as staticRadialGradientMeta,io as swirlFragmentShader,be as swirlMeta,zo as toProcessedGemSmoke,wo as toProcessedHeatmap,Bo as toProcessedLiquidMetal,Ze as voronoiFragmentShader,xe as voronoiMeta,eo as warpFragmentShader,_e as warpMeta,ho as waterFragmentShader,$e as wavesFragmentShader};\n//# sourceMappingURL=shaders.mjs.map","/* esm.sh - @paper-design/shaders-react@0.0.81 */\n\"use client\";import{useEffect as gr,useRef as Kr,forwardRef as Re,useState as De}from\"react\";import{ShaderMount as He,emptyPixel as Ge}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import*as dr from\"react\";function ne(m){let e=dr.useRef(void 0),a=dr.useCallback(r=>{let i=m.map(o=>{if(o!=null){if(typeof o==\"function\"){let s=o,t=s(r);return typeof t==\"function\"?t:()=>{s(null)}}return o.current=r,()=>{o.current=null}}});return()=>{i.forEach(o=>o?.())}},m);return dr.useMemo(()=>m.every(r=>r==null)?null:r=>{e.current&&(e.current(),e.current=void 0),r!=null&&(e.current=a(r))},m)}function Ur(m){if(m.naturalWidth<1024&&m.naturalHeight<1024){if(m.naturalWidth<1||m.naturalHeight<1)return;let e=m.naturalWidth/m.naturalHeight;m.width=Math.round(e>1?1024*e:1024),m.height=Math.round(e>1?1024:1024/e)}}import{jsx as We}from\"react/jsx-runtime\";async function fe(m){let e={},a=[],r=o=>{try{return o.startsWith(\"/\")||new URL(o),!0}catch{return!1}},i=o=>{try{return o.startsWith(\"/\")?!1:new URL(o,window.location.origin).origin!==window.location.origin}catch{return!1}};return Object.entries(m).forEach(([o,s])=>{if(typeof s==\"string\"){let t=s||Ge;if(!r(t)){console.warn(`Uniform \"${o}\" has invalid URL \"${t}\". Skipping image loading.`);return}let c=new Promise((u,d)=>{let n=new Image;i(t)&&(n.crossOrigin=\"anonymous\"),n.onload=()=>{Ur(n),e[o]=n,u()},n.onerror=()=>{console.error(`Could not set uniforms. Failed to load image at ${t}`),d()},n.src=t});a.push(c)}else if(s instanceof HTMLImageElement){let t=s.decode().then(()=>{Ur(s),e[o]=s});a.push(t)}else e[o]=s}),await Promise.all(a),e}var S=Re(function({fragmentShader:e,uniforms:a,webGlContextAttributes:r,speed:i=0,frame:o=0,width:s,height:t,minPixelRatio:c,maxPixelCount:u,mipmaps:d,style:n,...h},_){let[p,g]=De(!1),f=Kr(null),l=Kr(null),w=Kr(r);gr(()=>((async()=>{let B=await fe(a);f.current&&!l.current&&(l.current=new He(f.current,e,B,w.current,i,o,c,u,d),g(!0))})(),()=>{l.current?.dispose(),l.current=null}),[e]),gr(()=>{let b=!1;return(async()=>{let y=await fe(a);b||l.current?.setUniforms(y)})(),()=>{b=!0}},[a,p]),gr(()=>{l.current?.setSpeed(i)},[i,p]),gr(()=>{l.current?.setMaxPixelCount(u)},[u,p]),gr(()=>{l.current?.setMinPixelRatio(c)},[c,p]),gr(()=>{l.current?.setFrame(o)},[o,p]);let P=ne([f,_]);return We(\"div\",{ref:P,style:s!==void 0||t!==void 0?{width:typeof s==\"string\"&&isNaN(+s)===!1?+s:s,height:typeof t==\"string\"&&isNaN(+t)===!1?+t:t,...n}:n,...h})});S.displayName=\"ShaderMount\";import{memo as Ie}from\"react\";function k(m,e){if(Object.keys(m).length!==Object.keys(e).length)return!1;for(let a in m){if(a===\"colors\"){let r=Array.isArray(m.colors),i=Array.isArray(e.colors);if(!r||!i){if(Object.is(m.colors,e.colors)===!1)return!1;continue}if(m.colors?.length!==e.colors?.length||!m.colors?.every((o,s)=>o===e.colors?.[s]))return!1;continue}if(Object.is(m[a],e[a])===!1)return!1}return!0}import{defaultObjectSizing as Pr,getShaderColorFromString as Ae,meshGradientFragmentShader as qe,ShaderFitOptions as je}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Te}from\"react/jsx-runtime\";var sr={name:\"Default\",params:{...Pr,speed:1,frame:0,colors:[\"#e0eaff\",\"#241d9a\",\"#f75092\",\"#9f50d3\"],distortion:.8,swirl:.1,grainMixer:0,grainOverlay:0}},Ee={name:\"Purple\",params:{...Pr,speed:.6,frame:0,colors:[\"#aaa7d7\",\"#3c2b8e\"],distortion:1,swirl:1,grainMixer:0,grainOverlay:0}},Le={name:\"Beach\",params:{...Pr,speed:.1,frame:0,colors:[\"#bcecf6\",\"#00aaff\",\"#00f7ff\",\"#ffd447\"],distortion:.8,swirl:.35,grainMixer:0,grainOverlay:0}},Ne={name:\"Ink\",params:{...Pr,speed:1,frame:0,colors:[\"#ffffff\",\"#000000\"],distortion:1,swirl:.2,rotation:90,grainMixer:0,grainOverlay:0}},Ue=[sr,Ne,Ee,Le],Ke=Ie(function({speed:e=sr.params.speed,frame:a=sr.params.frame,colors:r=sr.params.colors,distortion:i=sr.params.distortion,swirl:o=sr.params.swirl,grainMixer:s=sr.params.grainMixer,grainOverlay:t=sr.params.grainOverlay,fit:c=sr.params.fit,rotation:u=sr.params.rotation,scale:d=sr.params.scale,originX:n=sr.params.originX,originY:h=sr.params.originY,offsetX:_=sr.params.offsetX,offsetY:p=sr.params.offsetY,worldWidth:g=sr.params.worldWidth,worldHeight:f=sr.params.worldHeight,...l}){let w={u_colors:r.map(Ae),u_colorsCount:r.length,u_distortion:i,u_swirl:o,u_grainMixer:s,u_grainOverlay:t,u_fit:je[c],u_rotation:u,u_scale:d,u_offsetX:_,u_offsetY:p,u_originX:n,u_originY:h,u_worldWidth:g,u_worldHeight:f};return Te(S,{...l,speed:e,frame:a,fragmentShader:qe,uniforms:w})},k);import{memo as Ve}from\"react\";import{defaultObjectSizing as kr,getShaderColorFromString as me,getShaderNoiseTexture as $e,smokeRingFragmentShader as Je,ShaderFitOptions as Qe}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Ze}from\"react/jsx-runtime\";var $={name:\"Default\",params:{...kr,speed:.5,frame:0,colorBack:\"#000000\",colors:[\"#ffffff\"],noiseScale:3,noiseIterations:8,radius:.25,thickness:.65,innerShape:.7,scale:.8}},ro={name:\"Solar\",params:{...kr,speed:1,frame:0,colorBack:\"#000000\",colors:[\"#ffffff\",\"#ffca0a\",\"#fc6203\",\"#fc620366\"],noiseScale:2,noiseIterations:3,radius:.4,thickness:.8,innerShape:4,scale:2,offsetY:1}},eo={name:\"Line\",params:{...kr,frame:0,colorBack:\"#000000\",colors:[\"#4540a4\",\"#1fe8ff\"],noiseScale:1.1,noiseIterations:2,radius:.38,thickness:.01,innerShape:.88,speed:4}},oo={name:\"Cloud\",params:{...kr,frame:0,colorBack:\"#81ADEC\",colors:[\"#ffffff\"],noiseScale:3,noiseIterations:10,radius:.5,thickness:.65,innerShape:.85,speed:.5,scale:2.5}},ao=[$,eo,ro,oo],so=Ve(function({speed:e=$.params.speed,frame:a=$.params.frame,colorBack:r=$.params.colorBack,colors:i=$.params.colors,noiseScale:o=$.params.noiseScale,thickness:s=$.params.thickness,radius:t=$.params.radius,innerShape:c=$.params.innerShape,noiseIterations:u=$.params.noiseIterations,fit:d=$.params.fit,scale:n=$.params.scale,rotation:h=$.params.rotation,originX:_=$.params.originX,originY:p=$.params.originY,offsetX:g=$.params.offsetX,offsetY:f=$.params.offsetY,worldWidth:l=$.params.worldWidth,worldHeight:w=$.params.worldHeight,...P}){let b={u_colorBack:me(r),u_colors:i.map(me),u_colorsCount:i.length,u_noiseScale:o,u_thickness:s,u_radius:t,u_innerShape:c,u_noiseIterations:u,u_noiseTexture:$e(),u_fit:Qe[d],u_scale:n,u_rotation:h,u_offsetX:g,u_offsetY:f,u_originX:_,u_originY:p,u_worldWidth:l,u_worldHeight:w};return Ze(S,{...P,speed:e,frame:a,fragmentShader:Je,uniforms:b})},k);import{memo as to}from\"react\";import{defaultPatternSizing as br,getShaderColorFromString as Vr,neuroNoiseFragmentShader as io,ShaderFitOptions as no}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as fo}from\"react/jsx-runtime\";var tr={name:\"Default\",params:{...br,speed:1,frame:0,colorFront:\"#ffffff\",colorMid:\"#47a6ff\",colorBack:\"#000000\",brightness:.05,contrast:.3}},mo={name:\"Sensation\",params:{...br,speed:1,frame:0,colorFront:\"#00c8ff\",colorMid:\"#fbff00\",colorBack:\"#8b42ff\",brightness:.19,contrast:.12,scale:3}},po={name:\"Bloodstream\",params:{...br,speed:1,frame:0,colorFront:\"#ff0000\",colorMid:\"#ff0000\",colorBack:\"#ffffff\",brightness:.24,contrast:.17,scale:.7}},lo={name:\"Ghost\",params:{...br,speed:1,frame:0,colorFront:\"#ffffff\",colorMid:\"#000000\",colorBack:\"#ffffff\",brightness:0,contrast:1,scale:.55}},co=[tr,mo,po,lo],uo=to(function({speed:e=tr.params.speed,frame:a=tr.params.frame,colorFront:r=tr.params.colorFront,colorMid:i=tr.params.colorMid,colorBack:o=tr.params.colorBack,brightness:s=tr.params.brightness,contrast:t=tr.params.contrast,fit:c=tr.params.fit,scale:u=tr.params.scale,rotation:d=tr.params.rotation,originX:n=tr.params.originX,originY:h=tr.params.originY,offsetX:_=tr.params.offsetX,offsetY:p=tr.params.offsetY,worldWidth:g=tr.params.worldWidth,worldHeight:f=tr.params.worldHeight,...l}){let w={u_colorFront:Vr(r),u_colorMid:Vr(i),u_colorBack:Vr(o),u_brightness:s,u_contrast:t,u_fit:no[c],u_scale:u,u_rotation:d,u_offsetX:_,u_offsetY:p,u_originX:n,u_originY:h,u_worldWidth:g,u_worldHeight:f};return fo(S,{...l,speed:e,frame:a,fragmentShader:io,uniforms:w})},k);import{memo as go}from\"react\";import{getShaderColorFromString as pe,getShaderNoiseTexture as ho,dotOrbitFragmentShader as _o,ShaderFitOptions as So,defaultPatternSizing as yr}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as wo}from\"react/jsx-runtime\";var Z={name:\"Default\",params:{...yr,speed:1.5,frame:0,colorBack:\"#000000\",colors:[\"#ffc96b\",\"#ff6200\",\"#ff2f00\",\"#421100\",\"#1a0000\"],size:1,sizeRange:0,spreading:1,stepsPerColor:4}},Po={name:\"Shine\",params:{...yr,speed:.1,frame:0,colors:[\"#ffffff\",\"#006aff\",\"#fff675\"],colorBack:\"#000000\",stepsPerColor:4,size:.3,sizeRange:.2,spreading:1,scale:.4}},ko={name:\"Bubbles\",params:{...yr,speed:.4,frame:0,colors:[\"#D0D2D5\"],colorBack:\"#989CA4\",stepsPerColor:2,size:.9,sizeRange:.7,spreading:1,scale:1.64}},bo={name:\"Hallucinatory\",params:{...yr,speed:5,frame:0,colors:[\"#000000\"],colorBack:\"#ffe500\",stepsPerColor:2,size:.65,sizeRange:0,spreading:.3,scale:.5}},yo=[Z,ko,Po,bo],Bo=go(function({speed:e=Z.params.speed,frame:a=Z.params.frame,colorBack:r=Z.params.colorBack,colors:i=Z.params.colors,size:o=Z.params.size,sizeRange:s=Z.params.sizeRange,spreading:t=Z.params.spreading,stepsPerColor:c=Z.params.stepsPerColor,fit:u=Z.params.fit,scale:d=Z.params.scale,rotation:n=Z.params.rotation,originX:h=Z.params.originX,originY:_=Z.params.originY,offsetX:p=Z.params.offsetX,offsetY:g=Z.params.offsetY,worldWidth:f=Z.params.worldWidth,worldHeight:l=Z.params.worldHeight,...w}){let P={u_colorBack:pe(r),u_colors:i.map(pe),u_colorsCount:i.length,u_size:o,u_sizeRange:s,u_spreading:t,u_stepsPerColor:c,u_noiseTexture:ho(),u_fit:So[u],u_scale:d,u_rotation:n,u_offsetX:p,u_offsetY:g,u_originX:h,u_originY:_,u_worldWidth:f,u_worldHeight:l};return wo(S,{...w,speed:e,frame:a,fragmentShader:_o,uniforms:P})},k);import{memo as Fo}from\"react\";import{getShaderColorFromString as $r,dotGridFragmentShader as Yo,DotGridShapes as xo,ShaderFitOptions as Co,defaultPatternSizing as Br}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as zo}from\"react/jsx-runtime\";var E={name:\"Default\",params:{...Br,colorBack:\"#000000\",colorFill:\"#ffffff\",colorStroke:\"#ffaa00\",size:2,gapX:32,gapY:32,strokeWidth:0,sizeRange:0,opacityRange:0,shape:\"circle\"}},Xo={name:\"Triangles\",params:{...Br,colorBack:\"#ffffff\",colorFill:\"#ffffff\",colorStroke:\"#808080\",size:5,gapX:32,gapY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:\"triangle\"}},Mo={name:\"Tree line\",params:{...Br,colorBack:\"#f4fce7\",colorFill:\"#052e19\",colorStroke:\"#000000\",size:8,gapX:20,gapY:90,strokeWidth:0,sizeRange:1,opacityRange:.6,shape:\"circle\"}},Oo={name:\"Wallpaper\",params:{...Br,colorBack:\"#204030\",colorFill:\"#000000\",colorStroke:\"#bd955b\",size:9,gapX:32,gapY:32,strokeWidth:1,sizeRange:0,opacityRange:0,shape:\"diamond\"}},vo=[E,Xo,Mo,Oo],Ro=Fo(function({colorBack:e=E.params.colorBack,colorFill:a=E.params.colorFill,colorStroke:r=E.params.colorStroke,size:i=E.params.size,gapX:o=E.params.gapX,gapY:s=E.params.gapY,strokeWidth:t=E.params.strokeWidth,sizeRange:c=E.params.sizeRange,opacityRange:u=E.params.opacityRange,shape:d=E.params.shape,fit:n=E.params.fit,scale:h=E.params.scale,rotation:_=E.params.rotation,originX:p=E.params.originX,originY:g=E.params.originY,offsetX:f=E.params.offsetX,offsetY:l=E.params.offsetY,worldWidth:w=E.params.worldWidth,worldHeight:P=E.params.worldHeight,maxPixelCount:b=6016*3384,...B}){let y={u_colorBack:$r(e),u_colorFill:$r(a),u_colorStroke:$r(r),u_dotSize:i,u_gapX:o,u_gapY:s,u_strokeWidth:t,u_sizeRange:c,u_opacityRange:u,u_shape:xo[d],u_fit:Co[n],u_scale:h,u_rotation:_,u_offsetX:f,u_offsetY:l,u_originX:p,u_originY:g,u_worldWidth:w,u_worldHeight:P};return zo(S,{...B,maxPixelCount:b,fragmentShader:Yo,uniforms:y})},k);import{memo as Do}from\"react\";import{getShaderColorFromString as Ho,simplexNoiseFragmentShader as Go,ShaderFitOptions as Wo,defaultPatternSizing as Fr}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Io}from\"react/jsx-runtime\";var mr={name:\"Default\",params:{...Fr,scale:.6,speed:.5,frame:0,colors:[\"#4449CF\",\"#FFD1E0\",\"#F94446\",\"#FFD36B\",\"#FFFFFF\"],stepsPerColor:2,softness:0}},Ao={name:\"Bubblegum\",params:{...Fr,speed:2,frame:0,colors:[\"#ffffff\",\"#ff9e9e\",\"#5f57ff\",\"#00f7ff\"],stepsPerColor:1,softness:1,scale:1.6}},qo={name:\"Spots\",params:{...Fr,speed:.6,frame:0,colors:[\"#ff7b00\",\"#f9ffeb\",\"#320d82\"],stepsPerColor:1,softness:0,scale:1}},jo={name:\"First contact\",params:{...Fr,speed:2,frame:0,colors:[\"#e8cce6\",\"#120d22\",\"#442c44\",\"#e6baba\",\"#fff5f5\"],stepsPerColor:2,softness:0,scale:.2}},To=[mr,qo,jo,Ao],Eo=Do(function({speed:e=mr.params.speed,frame:a=mr.params.frame,colors:r=mr.params.colors,stepsPerColor:i=mr.params.stepsPerColor,softness:o=mr.params.softness,fit:s=mr.params.fit,scale:t=mr.params.scale,rotation:c=mr.params.rotation,originX:u=mr.params.originX,originY:d=mr.params.originY,offsetX:n=mr.params.offsetX,offsetY:h=mr.params.offsetY,worldWidth:_=mr.params.worldWidth,worldHeight:p=mr.params.worldHeight,...g}){let f={u_colors:r.map(Ho),u_colorsCount:r.length,u_stepsPerColor:i,u_softness:o,u_fit:Wo[s],u_scale:t,u_rotation:c,u_offsetX:n,u_offsetY:h,u_originX:u,u_originY:d,u_worldWidth:_,u_worldHeight:p};return Io(S,{...g,speed:e,frame:a,fragmentShader:Go,uniforms:f})},k);import{memo as Lo}from\"react\";import{defaultObjectSizing as Yr,getShaderColorFromString as le,getShaderNoiseTexture as No,metaballsFragmentShader as Uo,ShaderFitOptions as Ko}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Vo}from\"react/jsx-runtime\";var fr={name:\"Default\",params:{...Yr,scale:1,speed:1,frame:0,colorBack:\"#000000\",colors:[\"#6e33cc\",\"#ff5500\",\"#ffc105\",\"#ffc800\",\"#f585ff\"],count:10,size:.83}},$o={name:\"Ink Drops\",params:{...Yr,scale:1,speed:2,frame:0,colorBack:\"#ffffff00\",colors:[\"#000000\"],count:18,size:.1}},Jo={name:\"Background\",params:{...Yr,speed:.5,frame:0,colors:[\"#ae00ff\",\"#00ff95\",\"#ffc105\"],colorBack:\"#2a273f\",count:13,size:.81,scale:4,rotation:0,offsetX:-.3}},Qo={name:\"Solar\",params:{...Yr,speed:1,frame:0,colors:[\"#ffc800\",\"#ff5500\",\"#ffc105\"],colorBack:\"#102f84\",count:7,size:.75,scale:1}},Zo=[fr,$o,Qo,Jo],ra=Lo(function({speed:e=fr.params.speed,frame:a=fr.params.frame,colorBack:r=fr.params.colorBack,colors:i=fr.params.colors,size:o=fr.params.size,count:s=fr.params.count,fit:t=fr.params.fit,rotation:c=fr.params.rotation,scale:u=fr.params.scale,originX:d=fr.params.originX,originY:n=fr.params.originY,offsetX:h=fr.params.offsetX,offsetY:_=fr.params.offsetY,worldWidth:p=fr.params.worldWidth,worldHeight:g=fr.params.worldHeight,...f}){let l={u_colorBack:le(r),u_colors:i.map(le),u_colorsCount:i.length,u_size:o,u_count:s,u_noiseTexture:No(),u_fit:Ko[t],u_rotation:c,u_scale:u,u_offsetX:h,u_offsetY:_,u_originX:d,u_originY:n,u_worldWidth:p,u_worldHeight:g};return Vo(S,{...f,speed:e,frame:a,fragmentShader:Uo,uniforms:l})},k);import{memo as ea}from\"react\";import{defaultPatternSizing as xr,getShaderColorFromString as ce,wavesFragmentShader as oa,ShaderFitOptions as aa}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as sa}from\"react/jsx-runtime\";var rr={name:\"Default\",params:{...xr,scale:.6,colorFront:\"#ffbb00\",colorBack:\"#000000\",shape:0,frequency:.5,amplitude:.5,spacing:1.2,proportion:.1,softness:0}},ta={name:\"Groovy\",params:{...xr,scale:5,rotation:90,colorFront:\"#fcfcee\",colorBack:\"#ff896b\",shape:3,frequency:.2,amplitude:.25,spacing:1.17,proportion:.57,softness:0}},ia={name:\"Tangled up\",params:{...xr,scale:.5,rotation:0,colorFront:\"#133a41\",colorBack:\"#c2d8b6\",shape:2.07,frequency:.44,amplitude:.57,spacing:1.05,proportion:.75,softness:0}},na={name:\"Ride the wave\",params:{...xr,scale:1.7,rotation:0,colorFront:\"#fdffe6\",colorBack:\"#1f1f1f\",shape:2.25,frequency:.2,amplitude:1,spacing:1.25,proportion:1,softness:0}},fa=[rr,ta,ia,na],ma=ea(function({colorFront:e=rr.params.colorFront,colorBack:a=rr.params.colorBack,shape:r=rr.params.shape,frequency:i=rr.params.frequency,amplitude:o=rr.params.amplitude,spacing:s=rr.params.spacing,proportion:t=rr.params.proportion,softness:c=rr.params.softness,fit:u=rr.params.fit,scale:d=rr.params.scale,rotation:n=rr.params.rotation,offsetX:h=rr.params.offsetX,offsetY:_=rr.params.offsetY,originX:p=rr.params.originX,originY:g=rr.params.originY,worldWidth:f=rr.params.worldWidth,worldHeight:l=rr.params.worldHeight,maxPixelCount:w=6016*3384,...P}){let b={u_colorFront:ce(e),u_colorBack:ce(a),u_shape:r,u_frequency:i,u_amplitude:o,u_spacing:s,u_proportion:t,u_softness:c,u_fit:aa[u],u_scale:d,u_rotation:n,u_offsetX:h,u_offsetY:_,u_originX:p,u_originY:g,u_worldWidth:f,u_worldHeight:l};return sa(S,{...P,fragmentShader:oa,uniforms:b})},k);import{memo as pa}from\"react\";import{defaultPatternSizing as Cr,getShaderColorFromString as ue,perlinNoiseFragmentShader as la,ShaderFitOptions as ca}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ua}from\"react/jsx-runtime\";var W={name:\"Default\",params:{...Cr,speed:.5,frame:0,colorBack:\"#632ad5\",colorFront:\"#fccff7\",proportion:.35,softness:.1,octaveCount:1,persistence:1,lacunarity:1.5}},da={name:\"Nintendo Water\",params:{...Cr,scale:1/.2,speed:.4,frame:0,colorBack:\"#2d69d4\",colorFront:\"#d1eefc\",proportion:.42,softness:0,octaveCount:2,persistence:.55,lacunarity:1.8}},ga={name:\"Moss\",params:{...Cr,scale:1/.15,speed:.02,frame:0,colorBack:\"#05ff4a\",colorFront:\"#262626\",proportion:.65,softness:.35,octaveCount:6,persistence:1,lacunarity:2.55}},ha={name:\"Worms\",params:{...Cr,scale:.9,speed:0,frame:0,colorBack:\"#ffffff00\",colorFront:\"#595959\",proportion:.5,softness:0,octaveCount:1,persistence:1,lacunarity:1.5}},_a=[W,da,ga,ha],Sa=pa(function({speed:e=W.params.speed,frame:a=W.params.frame,colorFront:r=W.params.colorFront,colorBack:i=W.params.colorBack,proportion:o=W.params.proportion,softness:s=W.params.softness,octaveCount:t=W.params.octaveCount,persistence:c=W.params.persistence,lacunarity:u,fit:d=W.params.fit,worldWidth:n=W.params.worldWidth,worldHeight:h=W.params.worldHeight,scale:_=W.params.scale,rotation:p=W.params.rotation,originX:g=W.params.originX,originY:f=W.params.originY,offsetX:l=W.params.offsetX,offsetY:w=W.params.offsetY,...P}){let b={u_colorBack:ue(i),u_colorFront:ue(r),u_proportion:o,u_softness:s??W.params.softness,u_octaveCount:t??W.params.octaveCount,u_persistence:c??W.params.persistence,u_lacunarity:u??W.params.lacunarity,u_fit:ca[d],u_scale:_,u_rotation:p,u_offsetX:l,u_offsetY:w,u_originX:g,u_originY:f,u_worldWidth:n,u_worldHeight:h};return ua(S,{...P,speed:e,frame:a,fragmentShader:la,uniforms:b})},k);import{memo as wa}from\"react\";import{defaultPatternSizing as zr,getShaderColorFromString as Jr,getShaderNoiseTexture as Pa,voronoiFragmentShader as ka,ShaderFitOptions as ba}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ya}from\"react/jsx-runtime\";var J={name:\"Default\",params:{...zr,speed:.5,frame:0,colors:[\"#ff8247\",\"#ffe53d\"],stepsPerColor:3,colorGlow:\"#ffffff\",colorGap:\"#2e0000\",distortion:.4,gap:.04,glow:0,scale:.5}},Ba={name:\"Cells\",params:{...zr,scale:.5,speed:.5,frame:0,colors:[\"#ffffff\"],stepsPerColor:1,colorGlow:\"#ffffff\",colorGap:\"#000000\",distortion:.5,gap:.03,glow:.8}},Fa={name:\"Bubbles\",params:{...zr,scale:.75,speed:.5,frame:0,colors:[\"#83c9fb\"],stepsPerColor:1,colorGlow:\"#ffffff\",colorGap:\"#ffffff\",distortion:.4,gap:0,glow:1}},Ya={name:\"Lights\",params:{...zr,scale:3.3,speed:.5,frame:0,colors:[\"#fffffffc\",\"#bbff00\",\"#00ffff\"],colorGlow:\"#ff00d0\",colorGap:\"#ff00d0\",stepsPerColor:2,distortion:.38,gap:0,glow:1}},xa=[J,Ya,Ba,Fa],Ca=wa(function({speed:e=J.params.speed,frame:a=J.params.frame,colors:r=J.params.colors,stepsPerColor:i=J.params.stepsPerColor,colorGlow:o=J.params.colorGlow,colorGap:s=J.params.colorGap,distortion:t=J.params.distortion,gap:c=J.params.gap,glow:u=J.params.glow,fit:d=J.params.fit,scale:n=J.params.scale,rotation:h=J.params.rotation,originX:_=J.params.originX,originY:p=J.params.originY,offsetX:g=J.params.offsetX,offsetY:f=J.params.offsetY,worldWidth:l=J.params.worldWidth,worldHeight:w=J.params.worldHeight,...P}){let b={u_colors:r.map(Jr),u_colorsCount:r.length,u_stepsPerColor:i,u_colorGlow:Jr(o),u_colorGap:Jr(s),u_distortion:t,u_gap:c,u_glow:u,u_noiseTexture:Pa(),u_fit:ba[d],u_scale:n,u_rotation:h,u_offsetX:g,u_offsetY:f,u_originX:_,u_originY:p,u_worldWidth:l,u_worldHeight:w};return ya(S,{...P,speed:e,frame:a,fragmentShader:ka,uniforms:b})},k);import{memo as za}from\"react\";import{defaultPatternSizing as hr,getShaderColorFromString as Xa,getShaderNoiseTexture as Ma,warpFragmentShader as Oa,ShaderFitOptions as va,WarpPatterns as Ra}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Da}from\"react/jsx-runtime\";var L={name:\"Default\",params:{...hr,rotation:0,speed:1,frame:0,colors:[\"#121212\",\"#9470ff\",\"#121212\",\"#8838ff\"],proportion:.45,softness:1,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.1,shape:\"checks\"}},Ha={name:\"Cauldron Pot\",params:{...hr,scale:.9,rotation:160,speed:10,frame:0,colors:[\"#a7e58b\",\"#324472\",\"#0a180d\"],proportion:.64,softness:1.5,distortion:.2,swirl:.86,swirlIterations:7,shapeScale:.6,shape:\"edge\"}},Ga={name:\"Live Ink\",params:{...hr,scale:1.2,rotation:44,offsetY:-.3,speed:2.5,frame:0,colors:[\"#111314\",\"#9faeab\",\"#f3fee7\",\"#f3fee7\"],proportion:.05,softness:0,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.28,shape:\"checks\"}},Wa={name:\"Kelp\",params:{...hr,scale:.8,rotation:50,speed:20,frame:0,colors:[\"#dbff8f\",\"#404f3e\",\"#091316\"],proportion:.67,softness:0,distortion:0,swirl:.2,swirlIterations:3,shapeScale:1,shape:\"stripes\"}},Ia={name:\"Nectar\",params:{...hr,scale:2,offsetY:.6,rotation:0,speed:4.2,frame:0,colors:[\"#151310\",\"#d3a86b\",\"#f0edea\"],proportion:.24,softness:1,distortion:.21,swirl:.57,swirlIterations:10,shapeScale:.75,shape:\"edge\"}},Aa={name:\"Passion\",params:{...hr,scale:2.5,rotation:1.35,speed:3,frame:0,colors:[\"#3b1515\",\"#954751\",\"#ffc085\"],proportion:.5,softness:1,distortion:.09,swirl:.9,swirlIterations:6,shapeScale:.25,shape:\"checks\"}},qa=[L,Ha,Ga,Wa,Ia,Aa],ja=za(function({speed:e=L.params.speed,frame:a=L.params.frame,colors:r=L.params.colors,proportion:i=L.params.proportion,softness:o=L.params.softness,distortion:s=L.params.distortion,swirl:t=L.params.swirl,swirlIterations:c=L.params.swirlIterations,shapeScale:u=L.params.shapeScale,shape:d=L.params.shape,fit:n=L.params.fit,scale:h=L.params.scale,rotation:_=L.params.rotation,originX:p=L.params.originX,originY:g=L.params.originY,offsetX:f=L.params.offsetX,offsetY:l=L.params.offsetY,worldWidth:w=L.params.worldWidth,worldHeight:P=L.params.worldHeight,...b}){let B={u_colors:r.map(Xa),u_colorsCount:r.length,u_proportion:i,u_softness:o,u_distortion:s,u_swirl:t,u_swirlIterations:c,u_shapeScale:u,u_shape:Ra[d],u_noiseTexture:Ma(),u_scale:h,u_rotation:_,u_fit:va[n],u_offsetX:f,u_offsetY:l,u_originX:p,u_originY:g,u_worldWidth:w,u_worldHeight:P};return Da(S,{...b,speed:e,frame:a,fragmentShader:Oa,uniforms:B})},k);import{memo as Ta}from\"react\";import{defaultObjectSizing as Xr,getShaderNoiseTexture as Ea,getShaderColorFromString as Qr,godRaysFragmentShader as La,ShaderFitOptions as Na}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Ua}from\"react/jsx-runtime\";var q={name:\"Default\",params:{...Xr,offsetX:0,offsetY:-.55,colorBack:\"#000000\",colorBloom:\"#0000ff\",colors:[\"#a600ff6e\",\"#6200fff0\",\"#ffffff\",\"#33fff5\"],density:.3,spotty:.3,midIntensity:.4,midSize:.2,intensity:.8,bloom:.4,speed:.75,frame:0}},Ka={name:\"Warp\",params:{...Xr,colorBack:\"#000000\",colorBloom:\"#222288\",colors:[\"#ff47d4\",\"#ff8c00\",\"#ffffff\"],density:.45,spotty:.15,midIntensity:.4,midSize:.33,intensity:.79,bloom:.4,speed:2,frame:0}},Va={name:\"Linear\",params:{...Xr,offsetX:.2,offsetY:-.8,colorBack:\"#000000\",colorBloom:\"#eeeeee\",colors:[\"#ffffff1f\",\"#ffffff3d\",\"#ffffff29\"],density:.41,spotty:.25,midSize:.1,midIntensity:.75,intensity:.79,bloom:1,speed:.5,frame:0}},$a={name:\"Ether\",params:{...Xr,offsetX:-.6,colorBack:\"#090f1d\",colorBloom:\"#ffffff\",colors:[\"#148effa6\",\"#c4dffebe\",\"#232a47\"],density:.03,spotty:.77,midSize:.1,midIntensity:.6,intensity:.6,bloom:.6,speed:1,frame:0}},Ja=[q,Ka,Va,$a],Qa=Ta(function({speed:e=q.params.speed,frame:a=q.params.frame,colorBloom:r=q.params.colorBloom,colorBack:i=q.params.colorBack,colors:o=q.params.colors,density:s=q.params.density,spotty:t=q.params.spotty,midIntensity:c=q.params.midIntensity,midSize:u=q.params.midSize,intensity:d=q.params.intensity,bloom:n=q.params.bloom,fit:h=q.params.fit,scale:_=q.params.scale,rotation:p=q.params.rotation,originX:g=q.params.originX,originY:f=q.params.originY,offsetX:l=q.params.offsetX,offsetY:w=q.params.offsetY,worldWidth:P=q.params.worldWidth,worldHeight:b=q.params.worldHeight,...B}){let y={u_colorBloom:Qr(r),u_colorBack:Qr(i),u_colors:o.map(Qr),u_colorsCount:o.length,u_density:s,u_spotty:t,u_midIntensity:c,u_midSize:u,u_intensity:d,u_bloom:n,u_noiseTexture:Ea(),u_fit:Na[h],u_scale:_,u_rotation:p,u_offsetX:l,u_offsetY:w,u_originX:g,u_originY:f,u_worldWidth:P,u_worldHeight:b};return Ua(S,{...B,speed:e,frame:a,fragmentShader:La,uniforms:y})},k);import{memo as Za}from\"react\";import{defaultPatternSizing as Mr,getShaderColorFromString as de,ShaderFitOptions as rs,spiralFragmentShader as es}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as os}from\"react/jsx-runtime\";var I={name:\"Default\",params:{...Mr,scale:1,colorBack:\"#001429\",colorFront:\"#79D1FF\",density:1,distortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noise:0,noiseFrequency:0,softness:0,speed:1,frame:0}},as={name:\"Droplet\",params:{...Mr,colorBack:\"#effafe\",colorFront:\"#bf40a0\",density:.9,distortion:0,strokeWidth:.75,strokeTaper:.18,strokeCap:1,noise:.74,noiseFrequency:.33,softness:.02,speed:1,frame:0}},ss={name:\"Jungle\",params:{...Mr,scale:1.3,density:.5,colorBack:\"#a0ef2a\",colorFront:\"#288b18\",distortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noise:1,noiseFrequency:.25,softness:0,speed:.75,frame:0}},ts={name:\"Swirl\",params:{...Mr,scale:.45,colorBack:\"#b3e6d9\",colorFront:\"#1a2b4d\",density:.2,distortion:0,strokeWidth:.5,strokeTaper:0,strokeCap:0,noise:0,noiseFrequency:.3,softness:.5,speed:1,frame:0}},is=[I,ss,as,ts],ns=Za(function({speed:e=I.params.speed,frame:a=I.params.frame,colorBack:r=I.params.colorBack,colorFront:i=I.params.colorFront,density:o=I.params.density,distortion:s=I.params.distortion,strokeWidth:t=I.params.strokeWidth,strokeTaper:c=I.params.strokeTaper,strokeCap:u=I.params.strokeCap,noiseFrequency:d=I.params.noiseFrequency,noise:n=I.params.noise,softness:h=I.params.softness,fit:_=I.params.fit,rotation:p=I.params.rotation,scale:g=I.params.scale,originX:f=I.params.originX,originY:l=I.params.originY,offsetX:w=I.params.offsetX,offsetY:P=I.params.offsetY,worldWidth:b=I.params.worldWidth,worldHeight:B=I.params.worldHeight,...y}){let X={u_colorBack:de(r),u_colorFront:de(i),u_density:o,u_distortion:s,u_strokeWidth:t,u_strokeTaper:c,u_strokeCap:u,u_noiseFrequency:d,u_noise:n,u_softness:h,u_fit:rs[_],u_scale:g,u_rotation:p,u_offsetX:w,u_offsetY:P,u_originX:f,u_originY:l,u_worldWidth:b,u_worldHeight:B};return os(S,{...y,speed:e,frame:a,fragmentShader:es,uniforms:X})},k);import{memo as fs}from\"react\";import{defaultObjectSizing as Or,getShaderColorFromString as ge,ShaderFitOptions as ms,swirlFragmentShader as ps}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ls}from\"react/jsx-runtime\";var j={name:\"Default\",params:{...Or,speed:.32,frame:0,colorBack:\"#330000\",colors:[\"#ffd1d1\",\"#ff8a8a\",\"#660000\"],bandCount:4,twist:.1,center:.2,proportion:.5,softness:0,noiseFrequency:.4,noise:.2}},cs={name:\"Opening\",params:{...Or,offsetX:-.4,offsetY:1,speed:.5,frame:0,colorBack:\"#ff8b61\",colors:[\"#fefff0\",\"#ffd8bd\",\"#ff8b61\"],bandCount:2,twist:.3,center:.2,proportion:.5,softness:0,noiseFrequency:0,noise:0,scale:1}},us={name:\"007\",params:{...Or,speed:1,frame:0,colorBack:\"#E9E7DA\",colors:[\"#000000\"],bandCount:5,twist:.3,center:0,proportion:0,softness:0,noiseFrequency:.5,noise:0}},ds={name:\"Candy\",params:{...Or,speed:1,frame:0,colorBack:\"#ffcd66\",colors:[\"#6bbceb\",\"#d7b3ff\",\"#ff9fff\"],bandCount:2,twist:.15,center:.2,proportion:.5,softness:1,noiseFrequency:.5,noise:0}},gs=[j,us,cs,ds],hs=fs(function({speed:e=j.params.speed,frame:a=j.params.frame,colorBack:r=j.params.colorBack,colors:i=j.params.colors,bandCount:o=j.params.bandCount,twist:s=j.params.twist,center:t=j.params.center,proportion:c=j.params.proportion,softness:u=j.params.softness,noiseFrequency:d=j.params.noiseFrequency,noise:n=j.params.noise,fit:h=j.params.fit,rotation:_=j.params.rotation,scale:p=j.params.scale,originX:g=j.params.originX,originY:f=j.params.originY,offsetX:l=j.params.offsetX,offsetY:w=j.params.offsetY,worldWidth:P=j.params.worldWidth,worldHeight:b=j.params.worldHeight,...B}){let y={u_colorBack:ge(r),u_colors:i.map(ge),u_colorsCount:i.length,u_bandCount:o,u_twist:s,u_center:t,u_proportion:c,u_softness:u,u_noiseFrequency:d,u_noise:n,u_fit:ms[h],u_scale:p,u_rotation:_,u_offsetX:l,u_offsetY:w,u_originX:g,u_originY:f,u_worldWidth:P,u_worldHeight:b};return ls(S,{...B,speed:e,frame:a,fragmentShader:ps,uniforms:y})},k);import{memo as _s}from\"react\";import{getShaderColorFromString as he,ditheringFragmentShader as Ss,ShaderFitOptions as ws,defaultPatternSizing as Zr,defaultObjectSizing as re,DitheringTypes as Ps}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{DitheringShapes as ks}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as bs}from\"react/jsx-runtime\";var ir={name:\"Default\",params:{...Zr,speed:1,frame:0,scale:.6,colorBack:\"#000000\",colorFront:\"#00b2ff\",shape:\"sphere\",type:\"4x4\",size:2}},ys={name:\"Sine Wave\",params:{...Zr,speed:1,frame:0,colorBack:\"#730d54\",colorFront:\"#00becc\",shape:\"wave\",type:\"4x4\",size:11,scale:1.2}},Bs={name:\"Bugs\",params:{...Zr,speed:1,frame:0,colorBack:\"#000000\",colorFront:\"#008000\",shape:\"dots\",type:\"random\",size:9}},Fs={name:\"Ripple\",params:{...re,speed:1,frame:0,colorBack:\"#603520\",colorFront:\"#c67953\",shape:\"ripple\",type:\"2x2\",size:3}},Ys={name:\"Swirl\",params:{...re,speed:1,frame:0,colorBack:\"#00000000\",colorFront:\"#47a8e1\",shape:\"swirl\",type:\"8x8\",size:2}},xs={name:\"Warp\",params:{...re,speed:1,frame:0,colorBack:\"#301c2a\",colorFront:\"#56ae6c\",shape:\"warp\",type:\"4x4\",size:2.5}},Cs=[ir,xs,ys,Fs,Bs,Ys],zs=_s(function({speed:e=ir.params.speed,frame:a=ir.params.frame,colorBack:r=ir.params.colorBack,colorFront:i=ir.params.colorFront,shape:o=ir.params.shape,type:s=ir.params.type,pxSize:t,size:c=t===void 0?ir.params.size:t,fit:u=ir.params.fit,scale:d=ir.params.scale,rotation:n=ir.params.rotation,originX:h=ir.params.originX,originY:_=ir.params.originY,offsetX:p=ir.params.offsetX,offsetY:g=ir.params.offsetY,worldWidth:f=ir.params.worldWidth,worldHeight:l=ir.params.worldHeight,...w}){let P={u_colorBack:he(r),u_colorFront:he(i),u_shape:ks[o],u_type:Ps[s],u_pxSize:c,u_fit:ws[u],u_scale:d,u_rotation:n,u_offsetX:p,u_offsetY:g,u_originX:h,u_originY:_,u_worldWidth:f,u_worldHeight:l};return bs(S,{...w,speed:e,frame:a,fragmentShader:Ss,uniforms:P})});import{memo as Xs}from\"react\";import{getShaderColorFromString as _e,getShaderNoiseTexture as Ms,grainGradientFragmentShader as Os,ShaderFitOptions as vs,defaultPatternSizing as ee,defaultObjectSizing as oe,GrainGradientShapes as Rs}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Ds}from\"react/jsx-runtime\";var er={name:\"Default\",params:{...oe,speed:1,frame:0,colorBack:\"#000000\",colors:[\"#7300ff\",\"#eba8ff\",\"#00bfff\",\"#2a00ff\"],softness:.5,intensity:.5,noise:.25,shape:\"corners\"}},Hs={name:\"Wave\",params:{...ee,speed:1,frame:0,colorBack:\"#000a0f\",colors:[\"#c4730b\",\"#bdad5f\",\"#d8ccc7\"],softness:.7,intensity:.15,noise:.5,shape:\"wave\"}},Gs={name:\"Dots\",params:{...ee,scale:.6,speed:1,frame:0,colorBack:\"#0a0000\",colors:[\"#6f0000\",\"#0080ff\",\"#f2ebc9\",\"#33cc33\"],softness:1,intensity:1,noise:.7,shape:\"dots\"}},Ws={name:\"Truchet\",params:{...ee,speed:1,frame:0,colorBack:\"#0a0000\",colors:[\"#6f2200\",\"#eabb7c\",\"#39b523\"],softness:0,intensity:.2,noise:1,shape:\"truchet\"}},Is={name:\"Ripple\",params:{...oe,scale:.5,speed:1,frame:0,colorBack:\"#140a00\",colors:[\"#6f2d00\",\"#88ddae\",\"#2c0b1d\"],softness:.5,intensity:.5,noise:.5,shape:\"ripple\"}},As={name:\"Blob\",params:{...oe,scale:1.3,speed:1,frame:0,colorBack:\"#0f0e18\",colors:[\"#3e6172\",\"#a49b74\",\"#568c50\"],softness:0,intensity:.15,noise:.5,shape:\"blob\"}},qs=[er,Hs,Gs,Ws,Is,As],js=Xs(function({speed:e=er.params.speed,frame:a=er.params.frame,colorBack:r=er.params.colorBack,colors:i=er.params.colors,softness:o=er.params.softness,intensity:s=er.params.intensity,noise:t=er.params.noise,shape:c=er.params.shape,fit:u=er.params.fit,scale:d=er.params.scale,rotation:n=er.params.rotation,originX:h=er.params.originX,originY:_=er.params.originY,offsetX:p=er.params.offsetX,offsetY:g=er.params.offsetY,worldWidth:f=er.params.worldWidth,worldHeight:l=er.params.worldHeight,...w}){let P={u_colorBack:_e(r),u_colors:i.map(_e),u_colorsCount:i.length,u_softness:o,u_intensity:s,u_noise:t,u_shape:Rs[c],u_noiseTexture:Ms(),u_fit:vs[u],u_scale:d,u_rotation:n,u_offsetX:p,u_offsetY:g,u_originX:h,u_originY:_,u_worldWidth:f,u_worldHeight:l};return Ds(S,{...w,speed:e,frame:a,fragmentShader:Os,uniforms:P})});import{memo as Ts}from\"react\";import{defaultObjectSizing as vr,getShaderColorFromString as Se,getShaderNoiseTexture as Es,pulsingBorderFragmentShader as Ls,ShaderFitOptions as Ns}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{PulsingBorderAspectRatios as Us}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Ks}from\"react/jsx-runtime\";var z={name:\"Default\",params:{...vr,speed:1,frame:0,scale:.6,colorBack:\"#000000\",colors:[\"#0dc1fd\",\"#d915ef\",\"#ff3f2ecc\"],roundness:.25,thickness:.1,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,aspectRatio:\"auto\",softness:.75,intensity:.2,bloom:.25,spots:4,spotSize:.5,pulse:.25,smoke:.3,smokeSize:.6}},Vs={name:\"Circle\",params:{...vr,aspectRatio:\"square\",scale:.6,speed:1,frame:0,colorBack:\"#000000\",colors:[\"#0dc1fd\",\"#d915ef\",\"#ff3f2ecc\"],roundness:1,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,thickness:0,softness:.75,intensity:.2,bloom:.45,spots:3,spotSize:.4,pulse:.5,smoke:1,smokeSize:0}},$s={name:\"Northern lights\",params:{...vr,speed:.18,scale:1.1,frame:0,colors:[\"#4c4794\",\"#774a7d\",\"#12694a\",\"#0aff78\",\"#4733cc\"],colorBack:\"#0c182c\",roundness:0,thickness:1,softness:1,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,aspectRatio:\"auto\",intensity:.1,bloom:.2,spots:4,spotSize:.25,pulse:0,smoke:.32,smokeSize:.5}},Js={name:\"Solid line\",params:{...vr,speed:1,frame:0,colors:[\"#81ADEC\"],colorBack:\"#00000000\",roundness:0,thickness:.05,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,aspectRatio:\"auto\",softness:0,intensity:0,bloom:.15,spots:4,spotSize:1,pulse:0,smoke:0,smokeSize:0}},Qs=[z,Vs,$s,Js],Zs=Ts(function({speed:e=z.params.speed,frame:a=z.params.frame,colors:r=z.params.colors,colorBack:i=z.params.colorBack,roundness:o=z.params.roundness,thickness:s=z.params.thickness,aspectRatio:t=z.params.aspectRatio,softness:c=z.params.softness,bloom:u=z.params.bloom,intensity:d=z.params.intensity,spots:n=z.params.spots,spotSize:h=z.params.spotSize,pulse:_=z.params.pulse,smoke:p=z.params.smoke,smokeSize:g=z.params.smokeSize,margin:f,marginLeft:l=f??z.params.marginLeft,marginRight:w=f??z.params.marginRight,marginTop:P=f??z.params.marginTop,marginBottom:b=f??z.params.marginBottom,fit:B=z.params.fit,rotation:y=z.params.rotation,scale:X=z.params.scale,originX:R=z.params.originX,originY:M=z.params.originY,offsetX:D=z.params.offsetX,offsetY:K=z.params.offsetY,worldWidth:V=z.params.worldWidth,worldHeight:or=z.params.worldHeight,...nr}){let ar={u_colorBack:Se(i),u_colors:r.map(Se),u_colorsCount:r.length,u_roundness:o,u_thickness:s,u_marginLeft:l,u_marginRight:w,u_marginTop:P,u_marginBottom:b,u_aspectRatio:Us[t],u_softness:c,u_intensity:d,u_bloom:u,u_spots:n,u_spotSize:h,u_pulse:_,u_smoke:p,u_smokeSize:g,u_noiseTexture:Es(),u_fit:Ns[B],u_rotation:y,u_scale:X,u_offsetX:D,u_offsetY:K,u_originX:R,u_originY:M,u_worldWidth:V,u_worldHeight:or};return Ks(S,{...nr,speed:e,frame:a,fragmentShader:Ls,uniforms:ar})},k);import{memo as rt}from\"react\";import{getShaderColorFromString as we,colorPanelsFragmentShader as et,ShaderFitOptions as ot,defaultObjectSizing as Rr}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as at}from\"react/jsx-runtime\";var H={name:\"Default\",params:{...Rr,speed:.5,frame:0,colors:[\"#ff9d00\",\"#fd4f30\",\"#809bff\",\"#6d2eff\",\"#333aff\",\"#f15cff\",\"#ffd557\"],colorBack:\"#000000\",angle1:0,angle2:0,length:1.1,edges:!1,blur:0,fadeIn:1,fadeOut:.3,gradient:0,density:3,scale:.8}},st={name:\"Glass\",params:{...Rr,rotation:112,speed:1,frame:0,colors:[\"#00cfff\",\"#ff2d55\",\"#34c759\",\"#af52de\"],colorBack:\"#ffffff00\",angle1:.3,angle2:.3,length:1,edges:!0,blur:.25,fadeIn:.85,fadeOut:.3,gradient:0,density:1.6}},tt={name:\"Gradient\",params:{...Rr,speed:.5,frame:0,colors:[\"#f2ff00\",\"#00000000\",\"#00000000\",\"#5a0283\",\"#005eff\"],colorBack:\"#8ffff2\",angle1:.4,angle2:.4,length:3,edges:!1,blur:.5,fadeIn:1,fadeOut:.39,gradient:.78,density:1.65,scale:1.72,rotation:270,offsetX:.18}},it={name:\"Opening\",params:{...Rr,speed:2,frame:0,colors:[\"#00ffff\"],colorBack:\"#570044\",angle1:-1,angle2:-1,length:.52,edges:!1,blur:0,fadeIn:0,fadeOut:1,gradient:0,density:2.21,scale:2.32,rotation:360,offsetX:-.3,offsetY:.6}},nt=[H,st,tt,it],ft=rt(function({speed:e=H.params.speed,frame:a=H.params.frame,colors:r=H.params.colors,colorBack:i=H.params.colorBack,angle1:o=H.params.angle1,angle2:s=H.params.angle2,length:t=H.params.length,edges:c=H.params.edges,blur:u=H.params.blur,fadeIn:d=H.params.fadeIn,fadeOut:n=H.params.fadeOut,density:h=H.params.density,gradient:_=H.params.gradient,fit:p=H.params.fit,scale:g=H.params.scale,rotation:f=H.params.rotation,originX:l=H.params.originX,originY:w=H.params.originY,offsetX:P=H.params.offsetX,offsetY:b=H.params.offsetY,worldWidth:B=H.params.worldWidth,worldHeight:y=H.params.worldHeight,...X}){let R={u_colors:r.map(we),u_colorsCount:r.length,u_colorBack:we(i),u_angle1:o,u_angle2:s,u_length:t,u_edges:c,u_blur:u,u_fadeIn:d,u_fadeOut:n,u_density:h,u_gradient:_,u_fit:ot[p],u_scale:g,u_rotation:f,u_offsetX:P,u_offsetY:b,u_originX:l,u_originY:w,u_worldWidth:B,u_worldHeight:y};return at(S,{...X,speed:e,frame:a,fragmentShader:et,uniforms:R})},k);import{memo as mt}from\"react\";import{defaultObjectSizing as Dr,getShaderColorFromString as pt,staticMeshGradientFragmentShader as lt,ShaderFitOptions as ct}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ut}from\"react/jsx-runtime\";var T={name:\"Default\",params:{...Dr,rotation:270,speed:0,frame:0,colors:[\"#ffad0a\",\"#6200ff\",\"#e2a3ff\",\"#ff99fd\"],positions:2,waveX:1,waveXShift:.6,waveY:1,waveYShift:.21,mixing:.93,grainMixer:0,grainOverlay:0}},dt={name:\"Sea\",params:{...Dr,speed:0,frame:0,colors:[\"#013b65\",\"#03738c\",\"#a3d3ff\",\"#f2faef\"],positions:0,waveX:.53,waveXShift:0,waveY:.95,waveYShift:.64,mixing:.5,grainMixer:0,grainOverlay:0}},gt={name:\"1960s\",params:{...Dr,speed:0,frame:0,colors:[\"#000000\",\"#082400\",\"#b1aa91\",\"#8e8c15\"],positions:42,waveX:.45,waveXShift:0,waveY:1,waveYShift:0,mixing:0,grainMixer:.37,grainOverlay:.78}},ht={name:\"Sunset\",params:{...Dr,speed:0,frame:0,colors:[\"#264653\",\"#9c2b2b\",\"#f4a261\",\"#ffffff\"],positions:0,waveX:.6,waveXShift:.7,waveY:.7,waveYShift:.7,mixing:.5,grainMixer:0,grainOverlay:0}},_t=[T,gt,ht,dt],St=mt(function({speed:e=T.params.speed,frame:a=T.params.frame,colors:r=T.params.colors,positions:i=T.params.positions,waveX:o=T.params.waveX,waveXShift:s=T.params.waveXShift,waveY:t=T.params.waveY,waveYShift:c=T.params.waveYShift,mixing:u=T.params.mixing,grainMixer:d=T.params.grainMixer,grainOverlay:n=T.params.grainOverlay,fit:h=T.params.fit,rotation:_=T.params.rotation,scale:p=T.params.scale,originX:g=T.params.originX,originY:f=T.params.originY,offsetX:l=T.params.offsetX,offsetY:w=T.params.offsetY,worldWidth:P=T.params.worldWidth,worldHeight:b=T.params.worldHeight,...B}){let y={u_colors:r.map(pt),u_colorsCount:r.length,u_positions:i,u_waveX:o,u_waveXShift:s,u_waveY:t,u_waveYShift:c,u_mixing:u,u_grainMixer:d,u_grainOverlay:n,u_fit:ct[h],u_rotation:_,u_scale:p,u_offsetX:l,u_offsetY:w,u_originX:g,u_originY:f,u_worldWidth:P,u_worldHeight:b};return ut(S,{...B,speed:e,frame:a,fragmentShader:lt,uniforms:y})},k);import{memo as wt}from\"react\";import{defaultObjectSizing as Hr,getShaderColorFromString as Pe,staticRadialGradientFragmentShader as Pt,ShaderFitOptions as kt}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as bt}from\"react/jsx-runtime\";var O={name:\"Default\",params:{...Hr,scale:1,speed:0,frame:0,colorBack:\"#000000\",colors:[\"#00bbff\",\"#00ffe1\",\"#ffffff\"],radius:.8,focalDistance:.99,focalAngle:0,falloff:.24,mixing:.5,distortion:0,distortionShift:0,distortionFreq:12,grainMixer:0,grainOverlay:0}},yt={name:\"Cross Section\",params:{...Hr,scale:1,speed:0,frame:0,colorBack:\"#3d348b\",colors:[\"#7678ed\",\"#f7b801\",\"#f18701\",\"#37a066\"],radius:1,focalDistance:0,focalAngle:0,falloff:0,mixing:0,distortion:1,distortionShift:0,distortionFreq:12,grainMixer:0,grainOverlay:0}},Bt={name:\"Radial\",params:{...Hr,scale:1,speed:0,frame:0,colorBack:\"#264653\",colors:[\"#9c2b2b\",\"#f4a261\",\"#ffffff\"],radius:1,focalDistance:0,focalAngle:0,falloff:0,mixing:1,distortion:0,distortionShift:0,distortionFreq:12,grainMixer:0,grainOverlay:0}},Ft={name:\"Lo-Fi\",params:{...Hr,speed:0,frame:0,colorBack:\"#2e1f27\",colors:[\"#d72638\",\"#3f88c5\",\"#f49d37\"],radius:1,focalDistance:0,focalAngle:0,falloff:.9,mixing:.7,distortion:0,distortionShift:0,distortionFreq:12,grainMixer:1,grainOverlay:.5}},Yt=[O,Ft,yt,Bt],xt=wt(function({speed:e=O.params.speed,frame:a=O.params.frame,colorBack:r=O.params.colorBack,colors:i=O.params.colors,radius:o=O.params.radius,focalDistance:s=O.params.focalDistance,focalAngle:t=O.params.focalAngle,falloff:c=O.params.falloff,grainMixer:u=O.params.grainMixer,mixing:d=O.params.mixing,distortion:n=O.params.distortion,distortionShift:h=O.params.distortionShift,distortionFreq:_=O.params.distortionFreq,grainOverlay:p=O.params.grainOverlay,fit:g=O.params.fit,rotation:f=O.params.rotation,scale:l=O.params.scale,originX:w=O.params.originX,originY:P=O.params.originY,offsetX:b=O.params.offsetX,offsetY:B=O.params.offsetY,worldWidth:y=O.params.worldWidth,worldHeight:X=O.params.worldHeight,...R}){let M={u_colorBack:Pe(r),u_colors:i.map(Pe),u_colorsCount:i.length,u_radius:o,u_focalDistance:s,u_focalAngle:t,u_falloff:c,u_mixing:d,u_distortion:n,u_distortionShift:h,u_distortionFreq:_,u_grainMixer:u,u_grainOverlay:p,u_fit:kt[g],u_rotation:f,u_scale:l,u_offsetX:b,u_offsetY:B,u_originX:w,u_originY:P,u_worldWidth:y,u_worldHeight:X};return bt(S,{...R,speed:e,frame:a,fragmentShader:Pt,uniforms:M})},k);import{memo as Ct}from\"react\";import{defaultObjectSizing as Gr,getShaderColorFromString as ae,getShaderNoiseTexture as zt,paperTextureFragmentShader as Xt,ShaderFitOptions as Mt}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Ot}from\"react/jsx-runtime\";var F={name:\"Default\",params:{...Gr,fit:\"contain\",scale:.9,speed:0,frame:0,colorBack:\"#d3d2ab\",colorPaper:\"#ffffff\",colorShadow:\"#cccccc\",blending:1,distortion:.75,clip:!1,angle:300,seed:4,roughness:.4,roughnessSize:.5,roughnessRows:0,fiber:.4,fiberSize:.5,folds:.5,foldSizeX:1,foldSizeY:1,foldOffsetX:0,foldOffsetY:0,wrinkles:1,wrinkleSize:.65,crumples:0,crumpleCount:6,drops:.4}},vt={name:\"Creased\",params:{...Gr,fit:\"contain\",scale:.9,speed:0,frame:0,colorBack:\"#d3d2ab\",colorPaper:\"#ffffff\",colorShadow:\"#b3b3b3\",blending:1,distortion:-.5,clip:!1,angle:60,seed:49,roughness:.4,roughnessSize:.25,roughnessRows:0,fiber:.4,fiberSize:.5,folds:0,foldSizeX:.6,foldSizeY:.89,foldOffsetX:.59,foldOffsetY:1,wrinkles:0,wrinkleSize:.65,crumples:1,crumpleCount:4,drops:0}},Rt={name:\"Spread\",params:{...Gr,fit:\"contain\",scale:.9,speed:0,frame:0,colorBack:\"#ffffff00\",colorPaper:\"#ffffffb5\",colorShadow:\"#b3b3b3\",blending:1,distortion:-.3,clip:!0,angle:236,seed:613,roughness:.15,roughnessSize:.25,roughnessRows:0,fiber:.5,fiberSize:.5,folds:1,foldSizeX:.4,foldSizeY:.89,foldOffsetX:0,foldOffsetY:0,wrinkles:0,wrinkleSize:.65,crumples:0,crumpleCount:9,drops:0}},Dt={name:\"Flat\",params:{...Gr,fit:\"contain\",scale:.9,speed:0,frame:0,colorBack:\"#d4cdab\",colorPaper:\"#ffffffa8\",colorShadow:\"#b3b3b3\",blending:1,distortion:0,clip:!1,angle:0,seed:455,roughness:1,roughnessSize:.5,roughnessRows:.6,fiber:.7,fiberSize:1,folds:0,foldSizeX:0,foldSizeY:.44,foldOffsetX:0,foldOffsetY:0,wrinkles:0,wrinkleSize:0,crumples:0,crumpleCount:6,drops:.2}},Ht=[F,Rt,vt,Dt],Gt=Ct(function({speed:e=F.params.speed,frame:a=F.params.frame,image:r=\"\",colorBack:i=F.params.colorBack,colorPaper:o=F.params.colorPaper,colorShadow:s=F.params.colorShadow,blending:t=F.params.blending,distortion:c=F.params.distortion,clip:u=F.params.clip,angle:d=F.params.angle,seed:n=F.params.seed,roughness:h=F.params.roughness,roughnessSize:_=F.params.roughnessSize,roughnessRows:p=F.params.roughnessRows,fiber:g=F.params.fiber,fiberScale:f,fiberSize:l=f===void 0?F.params.fiberSize:.2/f,folds:w=F.params.folds,foldSizeX:P=F.params.foldSizeX,foldSizeY:b=F.params.foldSizeY,foldOffsetX:B=F.params.foldOffsetX,foldOffsetY:y=F.params.foldOffsetY,wrinkles:X=F.params.wrinkles,wrinkleSize:R=F.params.wrinkleSize,crumples:M=F.params.crumples,foldsNumber:D,crumpleCount:K=D===void 0?F.params.crumpleCount:D,drops:V=F.params.drops,fit:or=F.params.fit,scale:nr=F.params.scale,rotation:ar=F.params.rotation,originX:pr=F.params.originX,originY:lr=F.params.originY,offsetX:ur=F.params.offsetX,offsetY:Sr=F.params.offsetY,worldWidth:Nr=F.params.worldWidth,worldHeight:Xe=F.params.worldHeight,...Me}){let Oe=typeof window<\"u\"&&{u_noiseTexture:zt()},ve={u_image:r,u_isImage:!!r,u_colorBack:ae(i),u_colorPaper:ae(o),u_colorShadow:ae(s),u_blending:t,u_distortion:c,u_clip:u,u_angle:d,u_seed:n,u_roughness:h,u_roughnessSize:_,u_roughnessRows:p,u_fiber:g,u_fiberSize:l,u_folds:w,u_foldSizeX:P,u_foldSizeY:b,u_foldOffsetX:B,u_foldOffsetY:y,u_wrinkles:X,u_wrinkleSize:R,u_crumples:M,u_crumpleCount:K,u_drops:V,...Oe,u_fit:Mt[or],u_scale:nr,u_rotation:ar,u_offsetX:ur,u_offsetY:Sr,u_originX:pr,u_originY:lr,u_worldWidth:Nr,u_worldHeight:Xe};return Ot(S,{...Me,speed:e,frame:a,fragmentShader:Xt,mipmaps:[\"u_image\"],uniforms:ve})},k);import{memo as Wt}from\"react\";import{flutedGlassFragmentShader as It,ShaderFitOptions as At,defaultObjectSizing as Wr,GlassDistortionShapes as qt,GlassGridShapes as jt,getShaderColorFromString as se}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Tt}from\"react/jsx-runtime\";var x={name:\"Default\",params:{...Wr,fit:\"cover\",speed:0,frame:0,colorBack:\"#00000000\",colorShadow:\"#000000\",colorHighlight:\"#ffffff\",shadows:.25,size:.5,angle:0,distortionShape:\"prism\",highlights:.1,shape:\"lines\",distortion:.5,shift:0,blur:0,edges:.25,stretch:0,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,grainMixer:0,grainOverlay:0}},Et={name:\"Waves\",params:{...Wr,fit:\"cover\",scale:1.2,speed:0,frame:0,colorBack:\"#00000000\",colorShadow:\"#000000\",colorHighlight:\"#ffffff\",shadows:0,size:.9,angle:0,distortionShape:\"contour\",highlights:0,shape:\"wave\",distortion:.5,shift:0,blur:.1,edges:.5,stretch:1,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,grainMixer:0,grainOverlay:.05}},Lt={name:\"Abstract\",params:{...Wr,fit:\"cover\",scale:4,speed:0,frame:0,colorBack:\"#00000000\",colorShadow:\"#000000\",colorHighlight:\"#ffffff\",shadows:0,size:.7,angle:30,distortionShape:\"flat\",highlights:0,shape:\"linesIrregular\",distortion:1,shift:0,blur:1,edges:.5,stretch:1,margin:0,marginLeft:0,marginRight:0,marginTop:0,marginBottom:0,grainMixer:.1,grainOverlay:.1}},Nt={name:\"Folds\",params:{...Wr,fit:\"cover\",speed:0,frame:0,colorBack:\"#00000000\",colorShadow:\"#000000\",colorHighlight:\"#ffffff\",shadows:.4,size:.4,angle:0,distortionShape:\"cascade\",highlights:0,shape:\"lines\",distortion:.75,shift:0,blur:.25,edges:.5,stretch:0,margin:.1,marginLeft:.1,marginRight:.1,marginTop:.1,marginBottom:.1,grainMixer:0,grainOverlay:0}},Ut=[x,Lt,Et,Nt],Kt=Wt(function({speed:e=x.params.speed,frame:a=x.params.frame,colorBack:r=x.params.colorBack,colorShadow:i=x.params.colorShadow,colorHighlight:o=x.params.colorHighlight,image:s=\"\",shadows:t=x.params.shadows,angle:c=x.params.angle,distortion:u=x.params.distortion,distortionShape:d=x.params.distortionShape,highlights:n=x.params.highlights,shape:h=x.params.shape,shift:_=x.params.shift,blur:p=x.params.blur,edges:g=x.params.edges,margin:f,marginLeft:l=f??x.params.marginLeft,marginRight:w=f??x.params.marginRight,marginTop:P=f??x.params.marginTop,marginBottom:b=f??x.params.marginBottom,grainMixer:B=x.params.grainMixer,grainOverlay:y=x.params.grainOverlay,stretch:X=x.params.stretch,count:R,size:M=R===void 0?x.params.size:Math.pow(1/(R*1.6),1/6)/.7-.5,fit:D=x.params.fit,scale:K=x.params.scale,rotation:V=x.params.rotation,originX:or=x.params.originX,originY:nr=x.params.originY,offsetX:ar=x.params.offsetX,offsetY:pr=x.params.offsetY,worldWidth:lr=x.params.worldWidth,worldHeight:ur=x.params.worldHeight,...Sr}){let Nr={u_image:s,u_colorBack:se(r),u_colorShadow:se(i),u_colorHighlight:se(o),u_shadows:t,u_size:M,u_angle:c,u_distortion:u,u_shift:_,u_blur:p,u_edges:g,u_stretch:X,u_distortionShape:qt[d],u_highlights:n,u_shape:jt[h],u_marginLeft:l,u_marginRight:w,u_marginTop:P,u_marginBottom:b,u_grainMixer:B,u_grainOverlay:y,u_fit:At[D],u_scale:K,u_rotation:V,u_offsetX:ar,u_offsetY:pr,u_originX:or,u_originY:nr,u_worldWidth:lr,u_worldHeight:ur};return Tt(S,{...Sr,speed:e,frame:a,fragmentShader:It,mipmaps:[\"u_image\"],uniforms:Nr})});import\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{memo as Vt}from\"react\";import{waterFragmentShader as $t,getShaderColorFromString as ke,ShaderFitOptions as Jt,defaultObjectSizing as Ir}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Qt}from\"react/jsx-runtime\";var N={name:\"Default\",params:{...Ir,scale:.8,speed:1,frame:0,colorBack:\"#909090\",colorHighlight:\"#ffffff\",highlights:.07,layering:.5,edges:.8,waves:.3,caustic:.1,size:1}},Zt={name:\"Abstract\",params:{...Ir,fit:\"cover\",scale:3,speed:1,frame:0,colorBack:\"#909090\",colorHighlight:\"#ffffff\",highlights:0,layering:0,edges:1,waves:1,caustic:.4,size:.15}},ri={name:\"Streaming\",params:{...Ir,fit:\"contain\",scale:.4,speed:2,frame:0,colorBack:\"#909090\",colorHighlight:\"#ffffff\",highlights:0,layering:0,edges:0,waves:.5,caustic:0,size:.5}},ei={name:\"Slow-mo\",params:{...Ir,fit:\"cover\",scale:1,speed:.1,frame:0,colorBack:\"#909090\",colorHighlight:\"#ffffff\",highlights:.4,layering:0,edges:0,waves:0,caustic:.2,size:.7}},oi=[N,ei,Zt,ri],ai=Vt(function({speed:e=N.params.speed,frame:a=N.params.frame,colorBack:r=N.params.colorBack,colorHighlight:i=N.params.colorHighlight,image:o=\"\",highlights:s=N.params.highlights,layering:t=N.params.layering,waves:c=N.params.waves,edges:u=N.params.edges,caustic:d=N.params.caustic,effectScale:n,size:h=n===void 0?N.params.size:10/9/n-1/9,fit:_=N.params.fit,scale:p=N.params.scale,rotation:g=N.params.rotation,originX:f=N.params.originX,originY:l=N.params.originY,offsetX:w=N.params.offsetX,offsetY:P=N.params.offsetY,worldWidth:b=N.params.worldWidth,worldHeight:B=N.params.worldHeight,...y}){let X={u_image:o,u_colorBack:ke(r),u_colorHighlight:ke(i),u_highlights:s,u_layering:t,u_waves:c,u_edges:u,u_caustic:d,u_size:h,u_fit:Jt[_],u_rotation:g,u_scale:p,u_offsetX:w,u_offsetY:P,u_originX:f,u_originY:l,u_worldWidth:b,u_worldHeight:B};return Qt(S,{...y,speed:e,frame:a,fragmentShader:$t,mipmaps:[\"u_image\"],uniforms:X})},k);import{memo as si}from\"react\";import{imageDitheringFragmentShader as ti,getShaderColorFromString as te,ShaderFitOptions as ii,defaultObjectSizing as Ar,DitheringTypes as ni}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as fi}from\"react/jsx-runtime\";var U={name:\"Default\",params:{...Ar,fit:\"cover\",speed:0,frame:0,colorFront:\"#94ffaf\",colorBack:\"#000c38\",colorHighlight:\"#eaff94\",type:\"8x8\",size:2,colorSteps:2,originalColors:!1,inverted:!1}},mi={name:\"Retro\",params:{...Ar,fit:\"cover\",speed:0,frame:0,colorFront:\"#eeeeee\",colorBack:\"#5452ff\",colorHighlight:\"#eeeeee\",type:\"2x2\",size:3,colorSteps:1,originalColors:!0,inverted:!1}},pi={name:\"Noise\",params:{...Ar,fit:\"cover\",speed:0,frame:0,colorFront:\"#a2997c\",colorBack:\"#000000\",colorHighlight:\"#ededed\",type:\"random\",size:1,colorSteps:1,originalColors:!1,inverted:!1}},li={name:\"Natural\",params:{...Ar,fit:\"cover\",speed:0,frame:0,colorFront:\"#ffffff\",colorBack:\"#000000\",colorHighlight:\"#ffffff\",type:\"8x8\",size:2,colorSteps:5,originalColors:!0,inverted:!1}},ci=[U,pi,mi,li],ui=si(function({speed:e=U.params.speed,frame:a=U.params.frame,colorFront:r=U.params.colorFront,colorBack:i=U.params.colorBack,colorHighlight:o=U.params.colorHighlight,image:s=\"\",type:t=U.params.type,colorSteps:c=U.params.colorSteps,originalColors:u=U.params.originalColors,inverted:d=U.params.inverted,pxSize:n,size:h=n===void 0?U.params.size:n,fit:_=U.params.fit,scale:p=U.params.scale,rotation:g=U.params.rotation,originX:f=U.params.originX,originY:l=U.params.originY,offsetX:w=U.params.offsetX,offsetY:P=U.params.offsetY,worldWidth:b=U.params.worldWidth,worldHeight:B=U.params.worldHeight,...y}){let X={u_image:s,u_colorFront:te(r),u_colorBack:te(i),u_colorHighlight:te(o),u_type:ni[t],u_pxSize:h,u_colorSteps:c,u_originalColors:u,u_inverted:d,u_fit:ii[_],u_rotation:g,u_scale:p,u_offsetX:w,u_offsetY:P,u_originX:f,u_originY:l,u_worldWidth:b,u_worldHeight:B};return fi(S,{...y,speed:e,frame:a,fragmentShader:ti,uniforms:X})},k);import{memo as di}from\"react\";import{lensDistortionFragmentShader as gi,ShaderFitOptions as hi,defaultObjectSizing as qr}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as _i}from\"react/jsx-runtime\";var C={name:\"Default\",params:{...qr,scale:1,fit:\"contain\",speed:0,frame:0,spread:.6,bias:1,angle:0,perspective:.1,count:35,dispersion:1,dispersionShift:0,dispersionColor:.6,focusCenter:.8,focusEdges:1,swirl:.35,noise:0,noiseFrequency:.25,noiseOffset:0,lensBulge:0,lensCircle:0,grainMixer:0,grainOverlay:0,imageX:0,imageY:0}},Si={name:\"Fisheye\",params:{...qr,scale:1,fit:\"contain\",speed:0,frame:0,spread:.7,bias:1,angle:0,perspective:.75,count:15,dispersion:1,dispersionShift:0,dispersionColor:.7,focusCenter:.9,focusEdges:1,swirl:1,noise:0,noiseFrequency:.25,noiseOffset:0,lensBulge:.95,lensCircle:1,grainMixer:.5,grainOverlay:0,imageX:0,imageY:0}},wi={name:\"Duotone\",params:{...qr,fit:\"contain\",speed:0,frame:0,spread:.1,bias:0,angle:0,perspective:0,count:2,dispersion:1,dispersionShift:0,dispersionColor:.1,focusCenter:0,focusEdges:0,swirl:0,noise:0,noiseFrequency:.25,noiseOffset:0,lensBulge:0,lensCircle:0,grainMixer:.1,grainOverlay:.3,imageX:0,imageY:0}},Pi={name:\"Smoke\",params:{...qr,scale:1,fit:\"contain\",speed:0,frame:0,spread:.65,bias:-1,angle:0,perspective:.4,count:50,dispersion:0,dispersionShift:0,dispersionColor:.31,focusCenter:0,focusEdges:.6,swirl:0,noise:1,noiseFrequency:.35,noiseOffset:.3,lensBulge:0,lensCircle:0,grainMixer:0,grainOverlay:0,imageX:0,imageY:0}},ki=[C,Si,wi,Pi],bi=di(function({speed:e=C.params.speed,frame:a=C.params.frame,image:r=\"\",spread:i=C.params.spread,bias:o=C.params.bias,angle:s=C.params.angle,perspective:t=C.params.perspective,count:c=C.params.count,dispersion:u=C.params.dispersion,dispersionShift:d=C.params.dispersionShift,dispersionColor:n=C.params.dispersionColor,focusCenter:h=C.params.focusCenter,focusEdges:_=C.params.focusEdges,swirl:p=C.params.swirl,noise:g=C.params.noise,noiseFrequency:f=C.params.noiseFrequency,noiseOffset:l=C.params.noiseOffset,lensBulge:w=C.params.lensBulge,lensCircle:P=C.params.lensCircle,grainMixer:b=C.params.grainMixer,grainOverlay:B=C.params.grainOverlay,imageX:y=C.params.imageX,imageY:X=C.params.imageY,fit:R=C.params.fit,scale:M=C.params.scale,rotation:D=C.params.rotation,originX:K=C.params.originX,originY:V=C.params.originY,offsetX:or=C.params.offsetX,offsetY:nr=C.params.offsetY,worldWidth:ar=C.params.worldWidth,worldHeight:pr=C.params.worldHeight,...lr}){let ur={u_image:r,u_spread:i,u_bias:o,u_angle:s,u_perspective:t,u_count:c,u_dispersion:u,u_dispersionShift:d,u_dispersionColor:n,u_focusCenter:h,u_focusEdges:_,u_swirl:p,u_noise:g,u_noiseFrequency:f,u_noiseOffset:l,u_lensBulge:w,u_lensCircle:P,u_grainMixer:b,u_grainOverlay:B,u_imageX:y,u_imageY:X,u_fit:hi[R],u_rotation:D,u_scale:M,u_offsetX:or,u_offsetY:nr,u_originX:K,u_originY:V,u_worldWidth:ar,u_worldHeight:pr};return _i(S,{...lr,speed:e,frame:a,fragmentShader:gi,mipmaps:[\"u_image\"],uniforms:ur})},k);import{memo as Yi,useLayoutEffect as xi,useMemo as Ci,useState as zi}from\"react\";import{getShaderColorFromString as ye,heatmapFragmentShader as Xi,ShaderFitOptions as Mi,defaultObjectSizing as Fe,toProcessedHeatmap as Be}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";var cr=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";var yi=m=>typeof m==\"object\"&&typeof m.then==\"function\",be=[];function Bi(m,e){if(m===e)return!0;if(!m||!e)return!1;let a=m.length;if(e.length!==a)return!1;for(let r=0;r<a;r++)if(m[r]!==e[r])return!1;return!0}function Fi(m,e=null){e===null&&(e=[m]);for(let r of be)if(Bi(e,r.keys)){if(Object.prototype.hasOwnProperty.call(r,\"error\"))throw r.error;if(Object.prototype.hasOwnProperty.call(r,\"response\"))return r.response;throw r.promise}let a={keys:e,promise:(yi(m)?m:m(...e)).then(r=>{a.response=r}).catch(r=>a.error=r)};throw be.push(a),a.promise}var _r=(m,e)=>Fi(m,e);import{jsx as Oi}from\"react/jsx-runtime\";var Q={name:\"Default\",params:{...Fe,scale:.75,speed:1,frame:0,contour:.5,angle:0,noise:0,innerGlow:.5,outerGlow:.5,colorBack:\"#000000\",colors:[\"#11206a\",\"#1f3ba2\",\"#2f63e7\",\"#6bd7ff\",\"#ffe679\",\"#ff991e\",\"#ff4c00\"]}},vi={name:\"Sepia\",params:{...Fe,scale:.75,speed:.5,frame:0,contour:.5,angle:0,noise:.75,innerGlow:.5,outerGlow:.5,colorBack:\"#000000\",colors:[\"#997F45\",\"#ffffff\"]}},Ri=[Q,vi],Di=Yi(function({speed:e=Q.params.speed,frame:a=Q.params.frame,image:r=\"\",contour:i=Q.params.contour,angle:o=Q.params.angle,noise:s=Q.params.noise,innerGlow:t=Q.params.innerGlow,outerGlow:c=Q.params.outerGlow,colorBack:u=Q.params.colorBack,colors:d=Q.params.colors,suspendWhenProcessingImage:n=!1,fit:h=Q.params.fit,offsetX:_=Q.params.offsetX,offsetY:p=Q.params.offsetY,originX:g=Q.params.originX,originY:f=Q.params.originY,rotation:l=Q.params.rotation,scale:w=Q.params.scale,worldHeight:P=Q.params.worldHeight,worldWidth:b=Q.params.worldWidth,...B}){let y=typeof r==\"string\"?r:r.src,[X,R]=zi(cr),M;n&&typeof window<\"u\"?M=_r(()=>Be(y).then(K=>URL.createObjectURL(K.blob)),[y,\"heatmap\"]):M=X,xi(()=>{if(n)return;if(!y){R(cr);return}let K,V=!0;return Be(y).then(or=>{V&&(K=URL.createObjectURL(or.blob),R(K))}),()=>{V=!1}},[y,n]);let D=Ci(()=>({u_image:M,u_contour:i,u_angle:o,u_noise:s,u_innerGlow:t,u_outerGlow:c,u_colorBack:ye(u),u_colors:d.map(ye),u_colorsCount:d.length,u_fit:Mi[h],u_offsetX:_,u_offsetY:p,u_originX:g,u_originY:f,u_rotation:l,u_scale:w,u_worldHeight:P,u_worldWidth:b}),[e,a,i,o,s,t,c,d,u,M,h,_,p,g,f,l,w,P,b]);return Oi(S,{...B,speed:e,frame:a,fragmentShader:Xi,mipmaps:[\"u_image\"],uniforms:D})},k);import{memo as Hi,useLayoutEffect as Gi,useState as Wi}from\"react\";import{liquidMetalFragmentShader as Ii,ShaderFitOptions as Ai,defaultObjectSizing as jr,toProcessedLiquidMetal as Ye,getShaderColorFromString as xe,LiquidMetalShapes as qi}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ji}from\"react/jsx-runtime\";var A={name:\"Default\",params:{...jr,scale:.6,speed:1,frame:0,colorBack:\"#AAAAAC\",colorTint:\"#ffffff\",distortion:.07,repetition:2,shiftRed:.3,shiftBlue:.3,contour:.4,softness:.1,angle:70,shape:\"diamond\"}},Ti={name:\"Noir\",params:{...jr,scale:.6,speed:1,frame:0,colorBack:\"#000000\",colorTint:\"#606060\",softness:.45,repetition:1.5,shiftRed:0,shiftBlue:0,distortion:0,contour:0,angle:90,shape:\"diamond\"}},Ei={name:\"Backdrop\",params:{...jr,speed:1,frame:0,scale:1,colorBack:\"#AAAAAC\",colorTint:\"#ffffff\",softness:.05,repetition:1.5,shiftRed:.3,shiftBlue:.3,distortion:.1,contour:.4,shape:\"none\",angle:90,worldWidth:0,worldHeight:0}},Li={name:\"Stripes\",params:{...jr,speed:1,frame:0,scale:.6,colorBack:\"#000000\",colorTint:\"#2c5d72\",softness:.8,repetition:6,shiftRed:1,shiftBlue:-1,distortion:.4,contour:.4,shape:\"circle\",angle:0}},Ni=[A,Ti,Ei,Li],Ui=Hi(function({colorBack:e=A.params.colorBack,colorTint:a=A.params.colorTint,speed:r=A.params.speed,frame:i=A.params.frame,image:o=\"\",contour:s=A.params.contour,distortion:t=A.params.distortion,softness:c=A.params.softness,repetition:u=A.params.repetition,shiftRed:d=A.params.shiftRed,shiftBlue:n=A.params.shiftBlue,angle:h=A.params.angle,shape:_=A.params.shape,suspendWhenProcessingImage:p=!1,fit:g=A.params.fit,scale:f=A.params.scale,rotation:l=A.params.rotation,originX:w=A.params.originX,originY:P=A.params.originY,offsetX:b=A.params.offsetX,offsetY:B=A.params.offsetY,worldWidth:y=A.params.worldWidth,worldHeight:X=A.params.worldHeight,...R}){let M=typeof o==\"string\"?o:o.src,[D,K]=Wi(cr),V;p&&typeof window<\"u\"&&M?V=_r(()=>Ye(M).then(nr=>URL.createObjectURL(nr.pngBlob)),[M,\"liquid-metal\"]):V=D,Gi(()=>{if(p)return;if(!M){K(cr);return}let nr,ar=!0;return Ye(M).then(pr=>{ar&&(nr=URL.createObjectURL(pr.pngBlob),K(nr))}),()=>{ar=!1}},[M,p]);let or={u_colorBack:xe(e),u_colorTint:xe(a),u_image:V,u_contour:s,u_distortion:t,u_softness:c,u_repetition:u,u_shiftRed:d,u_shiftBlue:n,u_angle:h,u_isImage:!!o,u_shape:qi[_],u_fit:Ai[g],u_scale:f,u_rotation:l,u_offsetX:b,u_offsetY:B,u_originX:w,u_originY:P,u_worldWidth:y,u_worldHeight:X};return ji(S,{...R,speed:r,frame:i,fragmentShader:Ii,mipmaps:[\"u_image\"],uniforms:or})});import{memo as Ki}from\"react\";import{halftoneDotsFragmentShader as Vi,getShaderColorFromString as Ce,ShaderFitOptions as $i,defaultObjectSizing as Tr,HalftoneDotsTypes as Ji,HalftoneDotsGrids as Qi}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as Zi}from\"react/jsx-runtime\";var v={name:\"Default\",params:{...Tr,fit:\"cover\",speed:0,frame:0,colorBack:\"#f2f1e8\",colorFront:\"#2b2b2b\",size:.5,radius:1.25,contrast:.4,originalColors:!1,inverted:!1,grainMixer:.2,grainOverlay:.2,grainSize:.5,grid:\"hex\",type:\"gooey\"}},rn={name:\"LED screen\",params:{...Tr,fit:\"cover\",speed:0,frame:0,colorBack:\"#000000\",colorFront:\"#29ff7b\",size:.5,radius:1.5,contrast:.3,originalColors:!1,inverted:!1,grainMixer:0,grainOverlay:0,grainSize:.5,grid:\"square\",type:\"soft\"}},en={name:\"Mosaic\",params:{...Tr,fit:\"cover\",speed:0,frame:0,colorBack:\"#000000\",colorFront:\"#b2aeae\",size:.6,radius:2,contrast:.01,originalColors:!0,inverted:!1,grainMixer:0,grainOverlay:0,grainSize:.5,grid:\"hex\",type:\"classic\"}},on={name:\"Round and square\",params:{...Tr,fit:\"cover\",speed:0,frame:0,colorBack:\"#141414\",colorFront:\"#ff8000\",size:.8,radius:1,contrast:1,originalColors:!1,inverted:!0,grainMixer:.05,grainOverlay:.3,grainSize:.5,grid:\"square\",type:\"holes\"}},an=[v,rn,en,on],sn=Ki(function({speed:e=v.params.speed,frame:a=v.params.frame,colorFront:r=v.params.colorFront,colorBack:i=v.params.colorBack,image:o=\"\",size:s=v.params.size,radius:t=v.params.radius,contrast:c=v.params.contrast,originalColors:u=v.params.originalColors,inverted:d=v.params.inverted,grainMixer:n=v.params.grainMixer,grainOverlay:h=v.params.grainOverlay,grainSize:_=v.params.grainSize,grid:p=v.params.grid,type:g=v.params.type,fit:f=v.params.fit,scale:l=v.params.scale,rotation:w=v.params.rotation,originX:P=v.params.originX,originY:b=v.params.originY,offsetX:B=v.params.offsetX,offsetY:y=v.params.offsetY,worldWidth:X=v.params.worldWidth,worldHeight:R=v.params.worldHeight,...M}){let D={u_image:o,u_colorFront:Ce(r),u_colorBack:Ce(i),u_size:s,u_radius:t,u_contrast:c,u_originalColors:u,u_inverted:d,u_grainMixer:n,u_grainOverlay:h,u_grainSize:_,u_grid:Qi[p],u_type:Ji[g],u_fit:$i[f],u_rotation:w,u_scale:l,u_offsetX:B,u_offsetY:y,u_originX:P,u_originY:b,u_worldWidth:X,u_worldHeight:R};return Zi(S,{...M,speed:e,frame:a,fragmentShader:Vi,uniforms:D})},k);import{memo as tn}from\"react\";import{halftoneCmykFragmentShader as nn,getShaderColorFromString as wr,getShaderNoiseTexture as fn,ShaderFitOptions as mn,defaultObjectSizing as Er,HalftoneCmykTypes as pn}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as ln}from\"react/jsx-runtime\";var Y={name:\"Default\",params:{...Er,scale:1,fit:\"cover\",speed:0,frame:0,colorBack:\"#fbfaf5\",colorC:\"#00b4ff\",colorM:\"#fc519f\",colorY:\"#ffd800\",colorK:\"#231f20\",size:.2,contrast:1,softness:1,grainSize:.5,grainMixer:0,grainOverlay:0,gridNoise:.2,floodC:.15,floodM:0,floodY:0,floodK:0,gainC:.3,gainM:0,gainY:.2,gainK:0,type:\"ink\"}},cn={name:\"Drops\",params:{...Er,scale:1,fit:\"cover\",speed:0,frame:0,colorBack:\"#eeefd7\",colorC:\"#00b2ff\",colorM:\"#fc4f4f\",colorY:\"#ffd900\",colorK:\"#231f20\",size:.88,contrast:1.15,softness:0,grainSize:.01,grainMixer:.05,grainOverlay:.25,gridNoise:.5,floodC:.15,floodM:0,floodY:0,floodK:0,gainC:1,gainM:.44,gainY:-1,gainK:0,type:\"ink\"}},un={name:\"Newspaper\",params:{...Er,scale:1,fit:\"cover\",speed:0,frame:0,colorBack:\"#f2f1e8\",colorC:\"#7a7a75\",colorM:\"#7a7a75\",colorY:\"#7a7a75\",colorK:\"#231f20\",size:.01,contrast:2,softness:.2,grainSize:0,grainMixer:0,grainOverlay:.2,gridNoise:.6,floodC:0,floodM:0,floodY:0,floodK:.1,gainC:-.17,gainM:-.45,gainY:-.45,gainK:0,type:\"dots\"}},dn={name:\"Vintage\",params:{...Er,scale:1,fit:\"cover\",speed:0,frame:0,colorBack:\"#fffaf0\",colorC:\"#59afc5\",colorM:\"#d8697c\",colorY:\"#fad85c\",colorK:\"#2d2824\",size:.2,contrast:1.25,softness:.4,grainSize:.5,grainMixer:.15,grainOverlay:.1,gridNoise:.45,floodC:.15,floodM:0,floodY:0,floodK:0,gainC:.3,gainM:0,gainY:.2,gainK:0,type:\"sharp\"}},gn=[Y,cn,un,dn],hn=tn(function({speed:e=Y.params.speed,frame:a=Y.params.frame,colorBack:r=Y.params.colorBack,colorC:i=Y.params.colorC,colorM:o=Y.params.colorM,colorY:s=Y.params.colorY,colorK:t=Y.params.colorK,image:c=\"\",size:u=Y.params.size,contrast:d=Y.params.contrast,softness:n=Y.params.softness,grainSize:h=Y.params.grainSize,grainMixer:_=Y.params.grainMixer,grainOverlay:p=Y.params.grainOverlay,gridNoise:g=Y.params.gridNoise,floodC:f=Y.params.floodC,floodM:l=Y.params.floodM,floodY:w=Y.params.floodY,floodK:P=Y.params.floodK,gainC:b=Y.params.gainC,gainM:B=Y.params.gainM,gainY:y=Y.params.gainY,gainK:X=Y.params.gainK,type:R=Y.params.type,fit:M=Y.params.fit,scale:D=Y.params.scale,rotation:K=Y.params.rotation,originX:V=Y.params.originX,originY:or=Y.params.originY,offsetX:nr=Y.params.offsetX,offsetY:ar=Y.params.offsetY,worldWidth:pr=Y.params.worldWidth,worldHeight:lr=Y.params.worldHeight,...ur}){let Sr={u_image:c,u_noiseTexture:fn(),u_colorBack:wr(r),u_colorC:wr(i),u_colorM:wr(o),u_colorY:wr(s),u_colorK:wr(t),u_size:u,u_contrast:d,u_softness:n,u_grainSize:h,u_grainMixer:_,u_grainOverlay:p,u_gridNoise:g,u_floodC:f,u_floodM:l,u_floodY:w,u_floodK:P,u_gainC:b,u_gainM:B,u_gainY:y,u_gainK:X,u_type:pn[R],u_fit:mn[M],u_rotation:K,u_scale:D,u_offsetX:nr,u_offsetY:ar,u_originX:V,u_originY:or,u_worldWidth:pr,u_worldHeight:lr};return ln(S,{...ur,speed:e,frame:a,fragmentShader:nn,uniforms:Sr})},k);import{memo as _n,useLayoutEffect as Sn,useState as wn}from\"react\";import{gemSmokeFragmentShader as Pn,ShaderFitOptions as kn,defaultObjectSizing as Lr,toProcessedGemSmoke as ze,getShaderColorFromString as ie,GemSmokeShapes as bn}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{jsx as yn}from\"react/jsx-runtime\";var G={name:\"Default\",params:{...Lr,scale:.6,speed:1,frame:0,colorBack:\"#f0efea\",colorInner:\"#fafaf5\",colors:[\"#333333\",\"#e7e6df\"],outerGlow:.55,innerGlow:1,innerDistortion:.8,outerDistortion:.6,offset:0,angle:0,size:.8,shape:\"diamond\"}},Bn={name:\"Fluorescent\",params:{...Lr,scale:.6,speed:1,frame:0,colorBack:\"#000000\",colorInner:\"#000000\",colors:[\"#2fb64c\",\"#cdff61\",\"#ffffff\"],outerGlow:0,innerGlow:1,innerDistortion:1,outerDistortion:.8,offset:0,angle:0,size:.8,shape:\"diamond\"}},Fn={name:\"Fire\",params:{...Lr,scale:.6,speed:1,frame:0,colorBack:\"#000000\",colorInner:\"#000000\",colors:[\"#fe5b16\",\"#f7ff61\",\"#ffffff\"],outerGlow:1,innerGlow:.65,innerDistortion:.6,outerDistortion:.8,offset:0,angle:0,size:.8,shape:\"diamond\"}},Yn={name:\"Infrared\",params:{...Lr,scale:.6,speed:.5,frame:0,colorBack:\"#cd28dc\",colorInner:\"#00000000\",colors:[\"#ff9900\",\"#fff67a\",\"#dcff52\",\"#00ffbb\",\"#0077ff\"],outerGlow:1,innerGlow:1,innerDistortion:1,outerDistortion:1,offset:.2,angle:0,size:1,shape:\"diamond\"}},xn=[G,Fn,Bn,Yn],Cn=_n(function({colorBack:e=G.params.colorBack,colors:a=G.params.colors,speed:r=G.params.speed,frame:i=G.params.frame,image:o=\"\",innerDistortion:s=G.params.innerDistortion,outerDistortion:t=G.params.outerDistortion,outerGlow:c=G.params.outerGlow,innerGlow:u=G.params.innerGlow,colorInner:d=G.params.colorInner,offset:n=G.params.offset,angle:h=G.params.angle,size:_=G.params.size,shape:p=G.params.shape,suspendWhenProcessingImage:g=!1,fit:f=G.params.fit,scale:l=G.params.scale,rotation:w=G.params.rotation,originX:P=G.params.originX,originY:b=G.params.originY,offsetX:B=G.params.offsetX,offsetY:y=G.params.offsetY,worldWidth:X=G.params.worldWidth,worldHeight:R=G.params.worldHeight,...M}){let D=typeof o==\"string\"?o:o.src,[K,V]=wn(cr),or;g&&typeof window<\"u\"&&D?or=_r(()=>ze(D).then(ar=>URL.createObjectURL(ar.pngBlob)),[D,\"gemSmoke\"]):or=K,Sn(()=>{if(g)return;if(!D){V(cr);return}let ar,pr=!0;return ze(D).then(lr=>{pr&&(ar=URL.createObjectURL(lr.pngBlob),V(ar))}),()=>{pr=!1}},[D,g]);let nr={u_colors:a.map(ie),u_colorsCount:a.length,u_colorBack:ie(e),u_image:or,u_innerDistortion:s,u_outerDistortion:t,u_outerGlow:c,u_innerGlow:u,u_colorInner:ie(d),u_offset:n,u_angle:h,u_size:_,u_isImage:!!o,u_shape:bn[p],u_fit:kn[f],u_scale:l,u_rotation:w,u_offsetX:B,u_offsetY:y,u_originX:P,u_originY:b,u_worldWidth:X,u_worldHeight:R};return yn(S,{...M,speed:r,frame:i,fragmentShader:Pn,mipmaps:[\"u_image\"],uniforms:nr})},k);import{isPaperShaderElement as El,getShaderColorFromString as Ll}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";import{colorPanelsMeta as Ul,dotOrbitMeta as Kl,godRaysMeta as Vl,grainGradientMeta as $l,meshGradientMeta as Jl,metaballsMeta as Ql,paperTextureMeta as Zl,pulsingBorderMeta as r0,simplexNoiseMeta as e0,smokeRingMeta as o0,swirlMeta as a0,voronoiMeta as s0,warpMeta as t0,heatmapMeta as i0,lensDistortionMeta as n0,staticMeshGradientMeta as f0,staticRadialGradientMeta as m0}from\"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";export{ft as ColorPanels,zs as Dithering,Ro as DotGrid,Bo as DotOrbit,Kt as FlutedGlass,Cn as GemSmoke,Qa as GodRays,js as GrainGradient,hn as HalftoneCmyk,sn as HalftoneDots,Di as Heatmap,ui as ImageDithering,bi as LensDistortion,Ui as LiquidMetal,Ke as MeshGradient,ra as Metaballs,uo as NeuroNoise,Gt as PaperTexture,Sa as PerlinNoise,Zs as PulsingBorder,S as ShaderMount,Eo as SimplexNoise,so as SmokeRing,ns as Spiral,St as StaticMeshGradient,xt as StaticRadialGradient,hs as Swirl,Ca as Voronoi,ja as Warp,ai as Water,ma as Waves,Ul as colorPanelsMeta,nt as colorPanelsPresets,Cs as ditheringPresets,vo as dotGridPresets,Kl as dotOrbitMeta,yo as dotOrbitPresets,Ut as flutedGlassPresets,xn as gemSmokePresets,Ll as getShaderColorFromString,Vl as godRaysMeta,Ja as godRaysPresets,$l as grainGradientMeta,qs as grainGradientPresets,gn as halftoneCmykPresets,an as halftoneDotsPresets,i0 as heatmapMeta,Ri as heatmapPresets,ci as imageDitheringPresets,El as isPaperShaderElement,n0 as lensDistortionMeta,ki as lensDistortionPresets,Ni as liquidMetalPresets,Jl as meshGradientMeta,Ue as meshGradientPresets,Ql as metaballsMeta,Zo as metaballsPresets,co as neuroNoisePresets,Zl as paperTextureMeta,Ht as paperTexturePresets,_a as perlinNoisePresets,r0 as pulsingBorderMeta,Qs as pulsingBorderPresets,e0 as simplexNoiseMeta,To as simplexNoisePresets,o0 as smokeRingMeta,ao as smokeRingPresets,is as spiralPresets,f0 as staticMeshGradientMeta,_t as staticMeshGradientPresets,m0 as staticRadialGradientMeta,Yt as staticRadialGradientPresets,a0 as swirlMeta,gs as swirlPresets,s0 as voronoiMeta,xa as voronoiPresets,t0 as warpMeta,qa as warpPresets,oi as waterPresets,fa as wavesPresets};\n//# sourceMappingURL=shaders-react.mjs.map","/* esm.sh - @paper-design/shaders-react@0.0.81 */\nimport \"/@paper-design/shaders@0.0.81/es2022/shaders.mjs\";\nexport * from \"/@paper-design/shaders-react@0.0.81/X-ZXJlYWN0LHJlYWN0LWRvbQ/es2022/shaders-react.mjs\";\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// Pinned version: unversioned esm.sh URLs are only cached for 10 min and can\n// silently change underneath the site. Pinned URLs are cached immutably.\nimport{Dithering}from\"https://esm.sh/@paper-design/shaders-react@0.0.81?external=react,react-dom\";/**\n * DITHER SHADER\n *\n * Wraps the Dithering shader from https://shaders.paper.design/dithering.\n * Renders full-bleed and is resizable on the canvas.\n *\n * Performance:\n * - \"Per Cell\" render mode draws one GPU pixel per dither cell and lets the\n *   browser upscale it with crisp nearest-neighbour scaling. Same look,\n *   ~(size × devicePixelRatio)² fewer pixels shaded per frame.\n * - Frame rate is capped (Max FPS) and the loop fully stops when the\n *   component is off-screen, the tab is hidden, or the visitor prefers\n *   reduced motion.\n * - WebGL isn't initialised until the component is near the viewport and\n *   has a real size (so hidden breakpoints never create a GL context).\n *\n * Colors: Framer passes color styles as `var(--token-…, fallback)`, which\n * WebGL can't read. They're resolved to real rgba values here, and\n * re-resolved when the light/dark theme changes.\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function DitherShader(props){const{colorBack=\"#000000\",colorFront=\"#00b3ff\",shape=\"sphere\",type=\"4x4\",size=2,speed=1,scale=.6,fps=30,quality=\"fast\",style}=props;const containerRef=useRef(null);const frameRef=useRef(0);const back=useResolvedColor(colorBack,containerRef);const front=useResolvedColor(colorFront,containerRef);// Outside of the live site (canvas, thumbnails, export) mount immediately.\nconst eager=RenderTarget.current()!==RenderTarget.preview;const[hasBeenVisible,setHasBeenVisible]=useState(eager);// ---- Size tracking -------------------------------------------------------\n// Layout size (ignores CSS transforms, so Framer scale/appear effects\n// don't distort it). State only changes when the size actually changes.\nconst[box,setBox]=useState(null);useEffect(()=>{const el=containerRef.current;if(!el)return;const ro=new ResizeObserver(([entry])=>{const{width:w,height:h}=entry.contentRect;setBox(prev=>prev&&prev.w===w&&prev.h===h?prev:{w,h});});ro.observe(el);return()=>ro.disconnect();},[]);const fast=quality!==\"full\";const cell=Math.max(1,Math.round(size));// In \"Per Cell\" mode the shader element is sized to a whole (even) number\n// of cells and centred, and the canvas is capped to exactly one pixel per\n// cell. Even counts keep every cell perfectly aligned in the shader.\nconst cellLayout=useMemo(()=>{if(!fast||!box||box.w<1||box.h<1)return null;const cols=Math.ceil(box.w/cell/2)*2;const rows=Math.ceil(box.h/cell/2)*2;const w=cols*cell;const h=rows*cell;return{pixels:cols*rows,style:{position:\"absolute\",left:Math.round((box.w-w)/2),top:Math.round((box.h-h)/2),width:w,height:h,imageRendering:\"pixelated\"}};},[fast,box,cell]);// ---- Animation loop ------------------------------------------------------\n// The shader's built-in loop runs at the display's full refresh rate\n// (up to 120 Hz). We keep it at speed 0 and step frames ourselves.\nuseEffect(()=>{const el=containerRef.current;if(!el)return;const reduceMotion=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\");const interval=1e3/Math.max(1,fps);let raf=0;let inView=eager;let lastDraw=0;let lastTime=0;const getMount=()=>el.querySelector(\"[data-paper-shader]\")?.paperShaderMount;const tick=now=>{raf=requestAnimationFrame(tick);const since=now-lastDraw;if(since<interval-1)return;// 1ms tolerance for rAF jitter\nconst over=since-interval;lastDraw=now-(over>0&&over<interval?over:0);const dt=Math.min(Math.max(now-lastTime,0),250);lastTime=now;frameRef.current+=dt*speed;getMount()?.setFrame(frameRef.current);};const sync=()=>{const run=speed!==0&&inView&&!document.hidden&&!reduceMotion?.matches;if(run&&!raf){lastDraw=lastTime=performance.now();raf=requestAnimationFrame(tick);}else if(!run&&raf){cancelAnimationFrame(raf);raf=0;}};const io=new IntersectionObserver(([entry])=>{inView=entry?.isIntersecting??true;if(inView)setHasBeenVisible(true);sync();},{rootMargin:\"200px\"});io.observe(el);document.addEventListener(\"visibilitychange\",sync);reduceMotion?.addEventListener?.(\"change\",sync);sync();return()=>{if(raf)cancelAnimationFrame(raf);io.disconnect();document.removeEventListener(\"visibilitychange\",sync);reduceMotion?.removeEventListener?.(\"change\",sync);};},[speed,fps,eager]);const hasSize=!!box&&box.w>=1&&box.h>=1;const ready=hasBeenVisible&&hasSize&&(!fast||cellLayout);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...style},children:ready&&/*#__PURE__*/_jsx(Dithering,{colorBack:back,colorFront:front,shape:shape,type:type,size:fast?cell:size,scale:scale,speed:0,frame:0,maxPixelCount:fast?cellLayout.pixels:undefined,style:fast?cellLayout.style:FULL_STYLE})});}const FULL_STYLE={width:\"100%\",height:\"100%\",display:\"block\"};// ---- Color resolution --------------------------------------------------------\n/**\n * Framer color styles arrive as `var(--token-…, rgb(…))`. The shader only\n * understands hex / rgb / hsl strings, so it fell back to grey. This resolves\n * the variable against the live DOM (so light/dark variants work) and\n * normalises any CSS color to an `rgba()` string the shader can parse.\n */function useResolvedColor(value,ref){const[resolved,setResolved]=useState(()=>normalizeColor(value,null));useEffect(()=>{const update=()=>setResolved(normalizeColor(value,ref.current));update();if(typeof value!==\"string\"||!value.includes(\"var(\"))return;// Color styles can have light/dark variants — re-resolve on theme change.\nconst scheme=window.matchMedia?.(\"(prefers-color-scheme: dark)\");scheme?.addEventListener?.(\"change\",update);const mo=new MutationObserver(update);const opts={attributes:true,attributeFilter:[\"class\",\"style\",\"data-theme\",\"data-framer-theme\"]};mo.observe(document.documentElement,opts);if(document.body)mo.observe(document.body,opts);return()=>{scheme?.removeEventListener?.(\"change\",update);mo.disconnect();};},[value]);return resolved;}const TRANSPARENT=\"rgba(0, 0, 0, 0)\";const HEX_RE=/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;const RGB_RE=/^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)(?:[\\s,/]+([\\d.]+)(%?))?\\s*\\)$/i;const VAR_FALLBACK_RE=/^var\\(\\s*--[^,)]+,\\s*([\\s\\S]+)\\)$/;function normalizeColor(value,el){if(typeof value!==\"string\"||!value.trim())return TRANSPARENT;let css=value.trim();if(css.includes(\"var(\")){const computed=el?computeColor(css,el):null;css=computed??css.match(VAR_FALLBACK_RE)?.[1].trim()??css;}return toShaderColor(css)??css;}/** Let the browser resolve CSS variables in the component's own context. */function computeColor(css,el){const probe=document.createElement(\"span\");probe.style.display=\"none\";probe.style.color=css;if(!probe.style.color)return null// invalid value\n;el.appendChild(probe);const out=getComputedStyle(probe).color;probe.remove();return out||null;}let scratchCtx;function toShaderColor(css){if(HEX_RE.test(css))return css;const m=css.match(RGB_RE);if(m){const a=m[4]===undefined?1:m[5]?+m[4]/100:+m[4];return rgba(+m[1],+m[2],+m[3],a);}// Anything else (named colors, hsl with decimals, oklch, display-p3 …):\n// let a 1×1 canvas convert it to sRGB.\nif(typeof document===\"undefined\")return null;if(typeof CSS!==\"undefined\"&&!CSS.supports(\"color\",css))return null;if(scratchCtx===undefined){const c=document.createElement(\"canvas\");c.width=c.height=1;scratchCtx=c.getContext(\"2d\",{willReadFrequently:true});}if(!scratchCtx)return null;scratchCtx.clearRect(0,0,1,1);scratchCtx.fillStyle=css;scratchCtx.fillRect(0,0,1,1);const[r,g,b,a]=scratchCtx.getImageData(0,0,1,1).data;return rgba(r,g,b,a/255);}const clamp=(n,min,max)=>Math.min(Math.max(n,min),max);const rgba=(r,g,b,a)=>`rgba(${Math.round(clamp(r,0,255))}, ${Math.round(clamp(g,0,255))}, ${Math.round(clamp(b,0,255))}, ${+clamp(a,0,1).toFixed(3)})`;// ---- Property controls ---------------------------------------------------------\naddPropertyControls(DitherShader,{colorBack:{type:ControlType.Color,title:\"Back\",defaultValue:\"#000000\"},colorFront:{type:ControlType.Color,title:\"Front\",defaultValue:\"#00b3ff\"},shape:{type:ControlType.Enum,title:\"Shape\",defaultValue:\"sphere\",options:[\"simplex\",\"warp\",\"dots\",\"wave\",\"ripple\",\"swirl\",\"sphere\"],optionTitles:[\"Simplex\",\"Warp\",\"Dots\",\"Wave\",\"Ripple\",\"Swirl\",\"Sphere\"]},type:{type:ControlType.Enum,title:\"Type\",defaultValue:\"4x4\",options:[\"random\",\"2x2\",\"4x4\",\"8x8\"],optionTitles:[\"Random\",\"2\\xd72\",\"4\\xd74\",\"8\\xd78\"]},size:{type:ControlType.Number,title:\"Size\",defaultValue:2,min:1,max:10,step:1,displayStepper:true},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:0,max:5,step:.1},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:.6,min:.1,max:3,step:.1},fps:{type:ControlType.Number,title:\"Max FPS\",defaultValue:30,min:10,max:120,step:1,hidden:props=>props.speed===0,description:\"Lower = lighter. 24–30 suits the dithered look.\"},quality:{type:ControlType.Enum,title:\"Render\",defaultValue:\"fast\",options:[\"fast\",\"full\"],optionTitles:[\"Per Cell\",\"Full Res\"],displaySegmentedControl:true,description:\"Per Cell shades one pixel per dither cell — same look, far less GPU work.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DitherShader\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"400\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DitherShader.map"],"mappings":"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"}