0x122cdf09…f8b5sent to0x99a9b7c1…b069·#17,012,016·view on Etherscan
function n(n){return n&&n.__esModule?n.default:n}const e=(n,e,r)=>{const t=n.createShader(r);if(n.shaderSource(t,e),n.compileShader(t),!n.getShaderParameter(t,n.COMPILE_STATUS)){const e=n.getShaderInfoLog(t);throw new Error(e)}return t},r=(n,r,t,o)=>{const a=e(n,r,n.VERTEX_SHADER),i=e(n,t,n.FRAGMENT_SHADER),s=n.createProgram();if(n.attachShader(s,a),n.attachShader(s,i),o){const e=[];for(let n in o)e.push(o[n].varying);n.transformFeedbackVaryings(s,e,n.SEPARATE_ATTRIBS)}if(n.linkProgram(s),!n.getProgramParameter(s,n.LINK_STATUS)){const e=n.getProgramInfoLog(s);throw new Error(e)}return s},t=(n,e)=>{const r=n.getProgramParameter(e,n.ACTIVE_UNIFORMS),t={};for(let o=0;o<r;o++){const{name:r,type:a}=n.getActiveUniform(e,o);t[r]={location:n.getUniformLocation(e,r),type:a}}return t},o=(n,e,r=n.STATIC_DRAW,t=n.ARRAY_BUFFER)=>{const o=n.createBuffer();return n.bindBuffer(t,o),n.bufferData(t,e,r),o},a=(n,e,r)=>{if(!r)return null;const t=n.createVertexArray(),a=Object.keys(r);n.bindVertexArray(t);for(let t=0;t<a.length;t++){let{size:i=1,type:s=n.FLOAT,normalize:d=!1,stride:u=0,offset:f=0,buffer:c,data:l,usage:m=n.STATIC_DRAW,buffertype:v=n.ARRAY_BUFFER}=r[a[t]];l&&!c&&(c=o(n,l,m,v)),n.bindAttribLocation(e,t,a[t]),n.enableVertexAttribArray(t),n.bindBuffer(n.ARRAY_BUFFER,c),n.vertexAttribPointer(t,i,s,d,u,f)}return t},i=(n,e,r)=>{if(!r)return null;const t=[n.createVertexArray(),n.createVertexArray()],a=[n.createTransformFeedback(),n.createTransformFeedback()],i=[],s=Object.keys(r);return t.forEach(((t,d)=>{n.bindVertexArray(t);const u=[],f={};for(let t=0;t<s.length;t++){let{size:a=1,type:i=n.FLOAT,normalize:d=!1,stride:c=0,offset:l=0,buffer:m,data:v,usage:_=n.STATIC_DRAW,buffertype:p=n.ARRAY_BUFFER}=r[s[t]];v&&!m&&(m=o(n,v,_,p)),f[s[t]]={i:t,buffer:m},n.bindAttribLocation(e,t,s[t]),n.enableVertexAttribArray(t),n.bindBuffer(n.ARRAY_BUFFER,m),n.vertexAttribPointer(t,a,i,d,c,l),u.push(m)}n.bindBuffer(n.ARRAY_BUFFER,null),n.bindTransformFeedback(n.TRANSFORM_FEEDBACK,a[d]),u.forEach(((e,r)=>{n.bindBufferBase(n.TRANSFORM_FEEDBACK_BUFFER,r,e)})),n.bindVertexArray(null),i.push(f)})),{vaos:t,tfbs:a,tfbBuffers:i}},s=(n,{vert:e,frag:o,attributes:s,transformFeedbacks:d,count:u,offset:f=0,mode:c=n.TRIANGLES}={})=>{const l=r(n,e,o,d),m=t(n,l),v=a(n,l,s),_=i(n,l,d);let p=0;return{uniforms:m,bindUniform(e,r){if(void 0===r)return;if(!m[e])return;const{type:t,location:o}=m[e];switch(t){case 5126:return r instanceof Array?n.uniform1fv(o,r):("number"==typeof r&&n.uniform1f(o,r),null);case 35664:return n.uniform2fv(o,r);case 35665:return n.uniform3fv(o,r);case 35666:return n.uniform4fv(o,r);case 35670:case 5124:case 35678:case 35680:return r.length?n.uniform1iv(o,r):n.uniform1i(o,r);case 35671:case 35667:return n.uniform2iv(o,r);case 35672:case 35668:return n.uniform3iv(o,r);case 35673:case 35669:return n.uniform4iv(o,r);case 35674:return n.uniformMatrix2fv(o,!1,r);case 35675:return n.uniformMatrix3fv(o,!1,r);case 35676:if(null===r)return;return n.uniformMatrix4fv(o,!1,r)}},bindVAOs(){n.useProgram(l),v&&n.bindVertexArray(v)},bindTransformFeedbacks(){if(!_)return;const e=(p+1)%2,r=_.vaos[p],t=_.tfbs[e],o=_.tfbBuffers[e];this.readTFB=r,this.writeTFB=_.vaos[e],n.bindVertexArray(r),n.bindTransformFeedback(n.TRANSFORM_FEEDBACK,t);for(let e in o){const r=o[e];n.bindBufferBase(n.TRANSFORM_FEEDBACK_BUFFER,r.i,r.buffer)}p=e},render(e,r){n.viewport(0,0,e||n.canvas.width,r||n.canvas.height),_&&n.beginTransformFeedback(c),n.drawArrays(c,f,u),_&&n.endTransformFeedback()}}},d=(n,{width:e,height:r,tiling:t=n.CLAMP_TO_EDGE,type:o=n.UNSIGNED_BYTE,format:a=n.RGBA,internalFormat:i=n.RGBA,data:s=null,singular:d=!1,minFilter:u=n.LINEAR,magFilter:f=u,mips:c=!1}={})=>{const l=({w:d=e,h:l=r}={})=>{const m=n.createTexture();n.bindTexture(n.TEXTURE_2D,m),n.texImage2D(n.TEXTURE_2D,0,i,d,l,0,a,o,s),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,u),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,f),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,t),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,t);const v=n.createFramebuffer();return n.bindFramebuffer(n.FRAMEBUFFER,v),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,m,0),c&&n.generateMipmap(n.TEXTURE_2D),{fb:v,targetTexture:m}};return{width:e,height:r,read:l({w:e,h:r}),write:d?null:l({w:e,h:r}),resize(n,e){this.width=n,this.height=e,this.read=l({w:n,h:e}),this.write=l({w:n,h:e})},swap(){if(d)return;const n=this.read;this.read=this.write,this.write=n}}};class u{constructor(n){this.useA=!1;let e=function(n){let e=parseInt(n.substr(0,8),16),r=parseInt(n.substr(8,8),16),t=parseInt(n.substr(16,8),16),o=parseInt(n.substr(24,8),16);return function(){e|=0,r|=0,t|=0,o|=0;let n=(e+r|0)+o|0;return o=o+1|0,e=r^r>>>9,r=t+(t<<3)|0,t=t<<21|t>>>11,t=t+n|0,(n>>>0)/4294967296}};this.prngA=new e(n.hash.substr(2,32)),this.prngB=new e(n.hash.substr(34,32));for(let n=0;n<1e6;n+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(n,e){return n+(e-n)*this.random_dec()}random_int(n,e){return Math.floor(this.random_num(n,e+1))}random_bool(n){return this.random_dec()<n}random_choice(n){return n[this.random_int(0,n.length-1)]}}let f;function c(n){return n||(n=tokenData),f instanceof u||(f=new u(n)),f}const l=c();let m=parseInt(1836),v=parseInt(2400),_=[l.random_num(-500,500),l.random_num(-500,500)],p=0,b=l.random_dec();p=b<.9?0:b<.97?1:2;let g=0,x=l.random_dec();g=x<.05?0:x<.35?1:x<.55?2:x<.62?3:x<.9?4:5;let h=0,y=l.random_dec();h=y<.2?0:y<.4?1:y<.6?2:y<.8?3:y<.9?4:y<.92?5:y<.98?6:7,p>0&&(h=l.random_int(0,3)),4==h?g=l.random_int(4,5):5==h?g=5:6==h&&(g=l.random_int(3,5));let T=v/2,E=v/2,R=50,U=Math.sign(l.random_dec()-.5),F=Math.sqrt(l.random_num(.85,1.5));0==g&&(F=2);let w=7e3*F+8e3,z=1;if(0==h)R=l.random_num(100,150);else if(1==h)R=l.random_num(250,450);else if(2==h)R=l.random_num(100,150),E+=l.random_num(200,400);else if(3==h)R=l.random_num(250,450),E+=l.random_num(200,400);else if(4==h)R=l.random_num(1200,1800),E+=l.random_num(1250,1500)*U;else if(5==h)R=l.random_num(2500,4400),T+=l.random_num(.99*R,1.1*R)*U;else if(6==h)R=l.random_num(600,1e3);else if(7==h){R=4e3;let n=l.random_num(0,6.28318),e=l.random_num(.95*R,1.05*R);T+=Math.cos(n)*e,E+=Math.sin(n)*e,g=2}let A=[T,E];p>0&&(R=l.random_num(70,100));0==g&&(z=3.5);let P=parseInt(R/12),S=8*P,D=parseInt(l.random_int(P+15*F,S+50*F)/5+5);4!=h&&5!=h||(D=l.random_int(50,80)),7==h&&(D=200);let I=parseInt(R/20*F)+2,M=parseInt(R/10*F)+4,C=Math.min(40,l.random_int(I,M)),B=[1,1,1,2,5,6],L=l.random_int(1,B[g]);5==g&&(L=l.random_int(2,B[g]));let O=1==g?1:0,X=0;7==h&&(X=1),6==h&&(X=.5);let k=0,N=l.random_dec();k=N<.5?0:N<.85?1:2;let G=l.random_num(.005,.015),V=.2*Math.pow(l.random_dec(),3)+.05,q=l.random_num(.15,.25),H=.3*Math.pow(l.random_dec(),3)+.025,Y=.5*Math.pow(l.random_dec(),2),W=Math.pow(2,l.random_int(2,4));W=parseInt(W*(1-Y)*(1-H));let K=l.random_int(1840,1890),j=.3*Math.pow(1-(parseFloat(K)-1840)/50,5),J=0,Q=l.random_dec();J=Q<.18?0:Q<.36?1:Q<.48?2:Q<.6?3:Q<.68?4:Q<.78?5:Q<.93?6:Q<.96?7:8,J>=7&&(k=0),0==h||2==h?8==J&&(J=l.random_int(0,7)):7==h&&(J=l.random_int(4,6)),p>0&&(J=l.random_int(0,5));let Z=l.random_num(.8,1.1);5==h&&(Z=Math.min(Z,.95)),h>=4&&(Z=Math.max(Z,1));let $=parseInt(150*Z),nn=[.2,.8,.2,.8,1.5,1.5,1.25,1.25];1==g&&(nn=[1.2,1.2,1.2,1.2,1.5,1.5,1,1.25]);let en=nn[h],rn=[1.4,1.2,1.4,1.2,.92,.92,1.1,.9][h],tn=[.9,1,.8,1,1,1,1,1][h],on=["Solar Flare","Total Eclipse","Partial Eclipse","Annular Eclipse","Transit","Alignment"][g];7==h&&(on="Transit");const an={width:m,height:v,nOff:_,mapSize:1024,mapScale:32,numParticles:3e5,compId:h,eventId:g,sunPos:A,sunRad:R,sunSign:U,solarActivity:F,solarIntensity:w,flareIntensity:z,atmos:X,numForces:D,numSpots:C,numStars:W,numPlanets:L,bailyBeads:O,borderId:k,borderWidth:G,borderCornerRad:V,damage:j,cityHaze:H,cloudiness:Y,environmentId:p,groundLevel:q,exposure:Z,exposureFrames:$,tintId:J,rf0:l.random_dec(),rf1:l.random_dec(),coronaMulti:en,surfaceMulti:rn,coronaGlowMulti:tn};var sn;sn="#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec2 position;\nin vec2 uv;\nout vec2 v_uv;\n\nvoid main() {\n v_uv = uv;\n gl_Position = vec4( position * 2.0 - 1.0, 0, 1 );\n}";const dn=new Float32Array([-1,-1,3,-1,-1,3]),un=new Float32Array([0,0,2,0,0,2]),fn=1/an.mapSize,cn=e=>{const r={};return r.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec2 v_uv;\nout vec4 color;\n\nuniform vec2 u_inverseResolution;\nuniform vec2 u_direction;\nuniform vec2 u_resolution;\nuniform sampler2D u_buffer;\n\nvec4 blur(sampler2D image, vec2 uv, vec2 inverseResolution, vec2 direction) {\n vec4 color = vec4(0.0);\n vec2 off1 = vec2(1.411764705882353) * direction;\n vec2 off2 = vec2(3.2941176470588234) * direction;\n vec2 off3 = vec2(5.176470588235294) * direction;\n color += texture(image, uv) * 0.1964825501511404;\n color += texture(image, uv + (off1 * inverseResolution)) * 0.2969069646728344;\n color += texture(image, uv - (off1 * inverseResolution)) * 0.2969069646728344;\n color += texture(image, uv + (off2 * inverseResolution)) * 0.09447039785044732;\n color += texture(image, uv - (off2 * inverseResolution)) * 0.09447039785044732;\n color += texture(image, uv + (off3 * inverseResolution)) * 0.010381362401148057;\n color += texture(image, uv - (off3 * inverseResolution)) * 0.010381362401148057;\n return color;\n}\n\nvoid main() {\n vec2 uv = gl_FragCoord.xy / u_resolution;\n color = blur(u_buffer, uv, u_inverseResolution, u_direction);\n}"),attributes:{position:{data:dn,size:2},uv:{data:un,size:2}},count:3}),r.fb=d(e,{width:an.mapSize,height:an.mapSize,tiling:e.REPEAT,type:an.fbType,internalFormat:an.fbFormat}),r},ln=(n,e,r,t,o,a)=>{e.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,e.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,r),e.renderer.bindUniform("u_buffer",0),e.renderer.bindUniform("u_direction",t),e.renderer.bindUniform("u_inverseResolution",[fn,fn]),e.renderer.bindUniform("u_resolution",[o,a]),e.renderer.render(o,a),e.fb.swap()},mn=(n,e,r,t,o)=>(ln(n,r,e,[1,0],t,o),ln(n,r,r.fb.read.targetTexture,[0,1],t,o),r.fb.read.targetTexture),vn={},_n=e=>{const r=an.numParticles;vn.renderer=s(e,{vert:n("#version 300 es\n#define GLSLIFY 1\n\nin vec2 a_position;\nin vec2 a_velocity;\n\nuniform vec2 u_screensize;\n\nout vec2 state;\n\nvoid main() {\n gl_PointSize = 1.;\n state = a_position / u_screensize;\n gl_Position = vec4( state * 2. - 1., 0., 1.);\n}"),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 state;\n\nuniform float u_scale;\n\nout vec4 color;\n\nvoid main() {\n color = vec4( fract( state + 0.25 ) - 0.25, fract( state - 0.25 ) + 0.25 ) * u_scale;\n}"),count:r,mode:e.POINTS}),vn.fb=d(e,{width:an.mapSize,height:an.mapSize,tiling:e.REPEAT,type:an.fbType,internalFormat:an.fbFormat,singular:!0}),vn.blur=cn(e)};const pn=n=>{vn.renderer.bindVAOs(),n.bindVertexArray(Gn.renderer.readTFB),n.bindFramebuffer(n.FRAMEBUFFER,vn.fb.read.fb),vn.renderer.bindUniform("u_screensize",[an.height,an.height]),vn.renderer.bindUniform("u_scale",an.mapScale),n.clear(n.DEPTH_BUFFER_BIT),n.clear(n.DEPTH_BUFFER_BIT|n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ONE,n.ONE,n.ONE,n.ONE),vn.renderer.render(an.mapSize,an.mapSize),n.disable(n.BLEND),vn.fb.swap(),vn.blurTexture=mn(n,vn.fb.read.targetTexture,vn.blur,an.mapSize,an.mapSize)};const bn={},gn=e=>{const r=an.numParticles;bn.renderer=s(e,{vert:n("#version 300 es\n#define GLSLIFY 1\n\nlayout(location=0) in vec2 a_position;\nlayout(location=1) in vec2 a_velocity;\n\nuniform vec2 u_screensize;\n\nout vec2 state;\nout vec2 statedv;\n\nvoid main() {\n gl_PointSize = 1.;\n state = a_position / u_screensize;\n statedv = a_velocity;\n gl_Position = vec4( a_position / u_screensize * 2. - 1., 0., 1. );\n}"),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 state;\nin vec2 statedv;\n\nuniform float u_scale;\n\nout vec4 color;\n\nvoid main() {\n color = vec4(1, 0, clamp(statedv, -1e4, 1e4)) * u_scale;\n}"),count:r,mode:e.POINTS}),bn.fb=d(e,{width:an.mapSize,height:an.mapSize,tiling:e.REPEAT,type:an.fbType,internalFormat:an.fbFormat,singular:!0}),bn.blur=cn(e)};const xn=n=>{bn.renderer.bindVAOs(),n.bindVertexArray(Gn.renderer.readTFB),n.bindFramebuffer(n.FRAMEBUFFER,bn.fb.read.fb),bn.renderer.bindUniform("u_screensize",[an.height,an.height]),bn.renderer.bindUniform("u_scale",an.mapScale),n.clear(n.DEPTH_BUFFER_BIT),n.clear(n.DEPTH_BUFFER_BIT|n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD),n.blendFuncSeparate(n.ONE,n.ONE,n.ONE,n.ONE),bn.renderer.render(an.mapSize,an.mapSize),n.disable(n.BLEND),bn.fb.swap(),bn.blurTexture=mn(n,bn.fb.read.targetTexture,bn.blur,an.mapSize,an.mapSize)};const hn=c(),yn=new Float32Array([-1,-1,3,-1,-1,3]),Tn=new Float32Array([0,0,2,0,0,2]);let En=an.numSpots,Rn=an.sunPos[0],Un=an.sunPos[1],Fn=an.sunRad,wn="const vec4 spots["+En+"] = vec4["+En+"](";const zn={},An=e=>{let r,t;for(let n=0;n<En;n++){let e=Un+1*hn.random_num(-Fn,Fn),o=hn.random_num(.05,.8)*Fn;hn.random_bool(.5)&&(o=-o);let a=Rn+o,i=Math.pow(hn.random_dec(),3)*Fn*.7+6,s=hn.random_num(-4,4);n%2==1&&(e=t+hn.random_num(-50,50),a=r+hn.random_num(-20,20)),r=a,t=e,wn+="vec4("+a+","+e+","+i+","+s+")",wn+=n<En-1?", ":");"}zn.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\nprecision highp int;\n#define GLSLIFY 1\n\nuniform vec2 u_sunPos;\nuniform float u_sunRad;\nuniform int u_numForces;\nuniform int u_numSpots;\n\nuniform vec2 u_res;\nuniform int u_eventId;\nuniform vec2 u_nOff;\n\nout vec4 color;\n\n#define PI 3.1415926\n#define TAU 6.2831853\n\n%%sunspots%%\n\nvec3 sdgCircle( in vec2 p, in float r ) {\n float d = length(p);\n return vec3( d-r, p/d );\n}\n\nfloat smin( float a, float b, float k ){\n float res = exp2( -k*a ) + exp2( -k*b );\n return -log2( res )/k;\n}\n\nvec3 sdgSmoothMin( in vec3 a, in vec3 b, in float k ){\n float h = max(k-abs(a.x-b.x),0.0);\n float m = 0.25*h*h/k;\n float n = 0.50* h/k;\n return vec3( min(a.x, b.x) - m, \n mix(a.yz, b.yz, (a.x<b.x)?n:1.0-n) );\n}\n\nfloat getHaversine( vec2 p0, vec2 p1 ){\n vec2 c = u_sunPos;\n float sr = u_sunRad;\n float d0 = distance( c, p0 );\n float d1 = distance( c, p1 );\n float r0 = clamp( d0/sr, 0.0, 1.0 );\n float r1 = clamp( d1/sr, 0.0, 1.0 );\n\n r0 = pow( 1.0 - r0, 0.25 ) * sr * 2.0;\n r1 = pow( 1.0 - r1, 0.25 ) * sr * 2.0;\n\n vec3 ps0 = vec3( p0, r0 );\n vec3 ps1 = vec3( p1, r1 );\n\n float hd = distance( ps0, ps1 );\n return hd;\n}\n\n// Hash without Sine\n// MIT License...\n// Copyright (c)2014 David Hoskins.\n\n#define OCTAVES 8\n#define UI0 1597334673U\n#define UI1 3812015801U\n#define UI2 uvec2(UI0, UI1)\n#define UIF (1.0 / float(0xffffffffU))\nfloat hash12(vec2 p){\n\tuvec2 q = uvec2(ivec2(p)) * UI2;\n\tuint n = (q.x ^ q.y) * UI0;\n\treturn float(n) * UIF;\n}\n\n/*float hash12( vec2 p ){\n\tvec3 p3 = fract(vec3(p.xyx) * .1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}*/\n\nvec4 getForceData( vec2 p, float sr ){\n vec2 c = u_sunPos;\n float t = hash12( p ) * TAU;\n float r = sr - hash12( p + u_nOff ) * sr * 0.05;\n float x = c.x + cos( t ) * r;\n float y = c.y + sin( t ) * r;\n float f = hash12( p * vec2( 155.0 ) + u_nOff ) - 0.5;\n\n return vec4( x, y, hash12( p + vec2( 2.3, 5.6 ) ), f );\n}\n\nvoid main() {\n vec2 dirToSun = u_sunPos - gl_FragCoord.xy;\n vec3 sunSdg = sdgCircle( dirToSun, u_sunRad );\n float sunDist = sunSdg.x;\n\n float myDist = 1000000.0;\n vec3 mySdg = vec3( 100000.0, 0.0, 0.0 ); \n\tvec2 myVel = vec2( 0.0, 0.0 );\n\tfloat myF = 0.0;\n float myR = 0.0;\n\tvec2 p0 = gl_FragCoord.xy;\n\n if( sunDist > 0.0 ){\n for( int i=0; i<u_numForces; i++ ){\n float u = hash12( vec2( float( i ) * 3.3 + 11.4, 0.5 ) );\n float v = hash12( vec2( float( i ) * 5.5 + 17.5, 0.5 ) );\n vec4 forceData = getForceData( vec2( u, v ) * 100.0, u_sunRad );\n vec2 p1 = forceData.xy;\n float r = forceData.z;\n float f = forceData.w;\n\n vec2 dir \t\t= p0 - p1;\n float dist \t\t= length( dir );\n vec2 dirNorm = normalize( dir );\n float distSq = dist * dist;\n float invDistSq = 1.0 / ( distSq + r );\n\n myVel += dirNorm * invDistSq * 5000.0 * f;\n\n if( dist < myDist ){\n myDist = dist;\n myF = f;\n }\n }\n } else {\n for( int i=0; i<u_numSpots; i++ ){\n vec4 spot = spots[i];\n vec2 p1 = spot.xy;\n float r = spot.z;\n float f = spot.w;\n\n vec2 dir \t\t= p0 - p1;\n float dist = getHaversine( p0, p1 );\n vec3 sdg = sdgCircle( dir, r );\n vec2 dirNorm = normalize( dir );\n float distSq = dist * dist;\n float invDistSq = 1.0 / ( distSq + r );\n sdg.x = dist;\n mySdg = sdgSmoothMin( sdg, mySdg, u_sunRad * 0.05 );\n myF = smin( myF, f, 35.0 ) * sign( f );\n myR = smin( myR, r, 35.0 );\n myVel += dirNorm * invDistSq * 500.0 * f;\n }\n myDist = mySdg.x;\n }\n \n \tcolor = vec4( myVel.x, myVel.y, myDist, myF );\n}").replace("%%sunspots%%",wn),attributes:{position:{data:yn,size:2},uv:{data:Tn,size:2}},count:3}),zn.fb=d(e,{width:an.height,height:an.height,type:an.fbType,internalFormat:an.fbFormat,tiling:e.REPEAT})},Pn=n=>{zn.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,zn.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,zn.fb.read.targetTexture),zn.renderer.bindUniform("u_framebuffer",0),zn.renderer.bindUniform("u_sunPos",an.sunPos),zn.renderer.bindUniform("u_sunRad",an.sunRad),zn.renderer.bindUniform("u_numForces",an.numForces),zn.renderer.bindUniform("u_numSpots",an.numSpots),zn.renderer.bindUniform("u_res",[zn.fb.width,zn.fb.height]),zn.renderer.bindUniform("u_eventId",an.eventId),zn.renderer.bindUniform("u_nOff",an.nOff),zn.renderer.render(zn.fb.width,zn.fb.height),zn.fb.swap()};const Sn=new Float32Array([-1,-1,3,-1,-1,3]),Dn=new Float32Array([0,0,2,0,0,2]),In={},Mn=e=>{In.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\nprecision highp int;\n#define GLSLIFY 1\n\nuniform vec2 u_res;\nuniform float u_rf0;\nuniform float u_rf1;\nuniform vec2 u_ruv;\n\nout vec4 color;\n\n#define PI 3.14159\n#define TAU 6.28318\n\n#define OCTAVES 8\n#define UI0 1597334673U\n#define UI1 3812015801U\n#define UI2 uvec2(UI0, UI1)\n#define UIF (1.0 / float(0xffffffffU))\nfloat hash12(vec2 p){\n\tuvec2 q = uvec2(ivec2(p)) * UI2;\n\tuint n = (q.x ^ q.y) * UI0;\n\treturn float(n) * UIF;\n}\n\nfloat hermite(float t)\n{\n return t*t*(3.0-2.0*t);\n}\n\nfloat noise(vec2 co, float frequency)\n{\n vec2 v = vec2(co.x * frequency, co.y * frequency);\n\n float ix1 = floor(v.x);\n float iy1 = floor(v.y);\n float ix2 = floor(v.x + 1.0);\n float iy2 = floor(v.y + 1.0);\n\n float fx = hermite(fract(v.x));\n float fy = hermite(fract(v.y));\n\n float fade1 = mix(hash12(vec2(ix1, iy1)), hash12(vec2(ix2, iy1)), fx);\n float fade2 = mix(hash12(vec2(ix1, iy2)), hash12(vec2(ix2, iy2)), fx);\n\n return mix(fade1, fade2, fy);\n}\n\nfloat pnoise(vec2 co, float freq, int steps, float persistence)\n{\n float value = 0.0;\n float ampl = 1.0;\n float sum = 0.0;\n for(int i=0 ; i<steps ; i++)\n {\n sum += ampl;\n value += noise(co, freq) * ampl;\n freq *= 2.0;\n ampl *= persistence;\n }\n return value / sum;\n}\n\nvoid main() {\n vec2 frag = gl_FragCoord.xy;\n vec2 uv = frag / u_res;\n vec2 off = vec2( u_rf0, u_rf1 );\n float c0 = pnoise( uv + off * 1.0, 3.0, OCTAVES, 0.6 );\n float c1 = pnoise( uv + off * 2.0, 8.0, OCTAVES, 0.6 );\n float c2 = pnoise( uv + off * 3.0, 20.0, OCTAVES, 0.6 );\n float c3 = pnoise( uv + off * 4.0, 100.0, OCTAVES, 0.6 );\n vec4 clouds = vec4( c0, c1, c2, c3 );\n color = clouds;\n}"),attributes:{position:{data:Sn,size:2},uv:{data:Dn,size:2}},count:3}),In.fb=d(e,{width:an.height,height:an.height,type:an.fbType,internalFormat:an.fbFormat,tiling:e.REPEAT})},Cn=n=>{In.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,In.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,In.fb.read.targetTexture),In.renderer.bindUniform("u_framebuffer",0),In.renderer.bindUniform("u_res",[In.fb.width,In.fb.height]),In.renderer.bindUniform("u_rf0",an.rf0),In.renderer.bindUniform("u_rf1",an.rf1),In.renderer.bindUniform("u_ruv",[123.45*an.rf0,123.45*an.rf1]),In.renderer.render(In.fb.width,In.fb.height),In.fb.swap()},Bn=new Float32Array([-1,-1,3,-1,-1,3]),Ln=new Float32Array([0,0,2,0,0,2]),On={},Xn=e=>{On.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D u_forces;\nuniform sampler2D u_noiseClouds;\n\nuniform vec2 u_res;\nuniform float u_sunRad;\nuniform vec2 u_sunPos;\nuniform float u_rf0;\nuniform float u_rf1;\nuniform vec2 u_ruv;\n\nuniform float u_time;\nout vec4 color;\n\nconst float PI = 3.141592;\n\nvec3 sdgCircle( in vec2 p, in float r ){\n float d = length(p);\n return vec3( d-r, p/d );\n}\n\nvoid main() {\n vec2 uv = gl_FragCoord.xy / u_res;\n\n vec2 dirToSun = gl_FragCoord.xy - u_sunPos;\n vec3 sdg = sdgCircle( dirToSun, u_sunRad );\n\n float dist = sdg.x / u_sunRad;\n vec2 sp = uv - ( u_sunPos / u_res );\n\tfloat f = abs( 1.0 - ( pow( abs( dist ), 0.2 ) ) ) + 1.0;\n float srf = 0.0;\n\n float sr = u_sunRad;\n\n if( dist <= 0.0 ){\n vec4 spots = texture( u_forces, uv );\n vec2 sg = spots.xy;\n vec2 sgp = vec2( spots.y, -spots.x );\n float sd = spots.z;\n float sa = atan( sg.y, sg.x );\n float sm = smoothstep( 600.0, 50.0, u_sunRad ) * 0.4 + 0.1;\n\n vec2 suv;\n \t\tsuv.x = ( sp.x ) * f + 0.5;\n \t\tsuv.y = ( sp.y ) * f + 0.5;\n\n vec4 ccd = texture( u_noiseClouds, ( ( suv - 0.5 ) * 0.9 + 0.5 ) + sg * 0.01 );\n float c0 = ccd.x - 0.2;\n float c1 = ccd.y - 0.2;\n float c2 = ccd.z - 0.2;\n float c3 = ccd.w - 0.2;\n\n vec4 cnd = texture( u_noiseClouds, suv + vec2( c0, c1 ) + sg * 0.05 * sin( sa * 15.0 ) );\n float n0 = cnd.x - 0.25;\n float n1 = cnd.y - 0.25;\n float n2 = cnd.z - 0.25;\n float n3 = cnd.w - 0.25;\n\n float prox = smoothstep( sr * 0.02 * n1 + sr * 0.03 * n2, sr * 0.001, sd + 15.0 + c2 * 3.0 );\n float prox2 = smoothstep( sr * 0.2 * n1 + sr * 0.17 * n2 + n0, sr * 0.01, sd + 12.0 + c1 * 8.0 );\n float dark = smoothstep( 0.0, ( n2 + n1 ) * sr * 0.01 * n1, sd + 10.0 + c0 * 13.0 );\n dark -= ( sin( sa * sr * 0.03 ) * 0.5 + 0.5 ) * prox * n2 * 6.0;\n dark = max( 0.1, dark );\n\n srf = ( c0 + c1 + c2 + c3 ) * 0.1 + ( sin( c3 * c2 * 250.0 ) * 0.2 + 0.2 ); // complex base layer\n srf *= ( n0 + n1 + n2 + n3 ); // complex base layer\n srf *= sin( ( 1.0 - c3 ) * 115.0 ) * 0.2 + 0.8;\n srf -= pow( prox2, 25.0 ) * n2;\n srf += pow( prox2, 100.0 ) * n3 * c3 * 6.0;\n float noisy = sin( srf * 5.0 ) * 0.5 + 0.5;\n srf = mix( srf, noisy, n3 ) + 0.2;\n srf = srf * 0.45 + 0.55;\n srf = clamp( srf, 0.0, 1.0 );\n }\n\n color = vec4( sdg, srf );\n}"),attributes:{position:{data:Bn,size:2},uv:{data:Ln,size:2}},count:3}),On.fb=d(e,{width:an.height,height:an.height,type:an.fbType,internalFormat:an.fbFormat,tiling:e.REPEAT})},kn=(n,e)=>{On.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,On.fb.writ