/**
 * @preserve
 * @author    ThemePunch <info@themepunch.com>
 * @link      http://www.themepunch.com/
 * @copyright 2018 ThemePunch
 * @version 6.7.0
 */
!function(){"use strict";if(window.SR7??={},window._tpt??={},SR7.A??={},SR7.F??={},SR7.D??={},2===window?._tpt?.R?.thecluster?.status)return;SR7.A.thecluster={...SR7.A.thecluster,init:e=>{void 0===SR7.A.theclustercss&&(_tpt.injectCssJs(SR7.A.thecluster.style,void 0,void 0,"thecluster_global_styles"),SR7.A.theclustercss=!0),SR7.M[e].c.moduleListeners??={},SR7.M[e].c.moduleListeners.thecluster??={},_tpt.scrollObserver.observe(SR7.M[e].c.module),SR7.F.module.listeners.init(e),SR7.A.thecluster.listeners.init(e);const t=["THREE","WEBGL"];return null==SR7.A.thecluster.cluster&&t.push("tc_Cluster"),null==SR7.A.thecluster.shaders&&t.push("tc_Shaders"),null==SR7.A.thecluster.tools&&t.push("tc_Tools"),t},getLayerBasics:(e={},t)=>({speed:e.speed??25,limitMovement:e.limitMovement??!1,limitMovementValue:e.limitMovementValue??15,noiseOn:e.noiseOn??!1,noiseAmount:e.noiseAmount??50,angle:e.angle??0,tilt:e.tile??0,showHelper:e.showHelper??!1,keepCentered:e.keepCentered??!0,offsetX:e.offsetX??0,offsetY:e.offsetY??0,offsetZ:e.offsetZ??0,dpr:e.dpr??1,gravPointsVisible:e.gravPointsVisible??!1,g1X:e.g1X??-5,g1Y:e.g1Y??0,g1Z:e.g1Z??0,g2X:e.g2X??0,g2Y:e.g2Y??0,g2Z:e.g2Z??0,g3X:e.g3X??5,g3Y:e.g3Y??0,g3Z:e.g3Z??0,mass:e.mass??30,mass2:e.mass2??30,mass3:e.mass3??30,gravPoint1Toggle:e.gravPoint1Toggle??!1,gravPoint2Toggle:e.gravPoint2Toggle??!0,gravPoint3Toggle:e.gravPoint3Toggle??!1,spawnDiameter:e.spawnDiameter??50,amount:e.amount??900,spawnForm:e.spawnForm??"random",spawnAccVec:e.spawnAccVec??"normalCW",sIX:e.sIX??10,sIY:e.sIY??7,sIZ:e.sIZ??0,sVX:e.sVX??1,sVY:e.sVY??0,sVZ:e.sVZ??0,mirroredOn:e.mirroredOn??0,size:e.size??22,randomizeSize:e.randomizeSize??!0,tc_mainColor:_tpt.gradient.convert(e.tc_mainColor??"radial-gradient(circle,rgba(255,248,0,1) 0%,rgba(255,19,97,1) 33%,rgba(68,16,122,1) 71%,rgba(35,21,87,1) 100%)"),particle:e.particle??"default",randomizeOpacity:e.randomizeOpacity??!0,randSizeMin:e.randSizeMin??50,randSizeMax:e.randSizeMax??150,colorImageMixValue:e.colorImageMixValue??0,animationSel:e.animationSel??"off",aniX:e.aniX??0,aniY:e.aniY??0,aniZ:e.aniZ??0,patternSel:e.patternSel??"continuous",lifeTimeDelay:e.lifeTimeDelay??5,lifetimeAlphaChange:e.lifetimeAlphaChange??"fadeInOut",lifeTimeGradient:e.lifeTimeGradient??!1,gravP1MoveSel:e.gravP1MoveSel??"off",gravP2MoveSel:e.gravP2MoveSel??"off",gravP3MoveSel:e.gravP3MoveSel??"off",periodicSpawn:e.periodicSpawn??!0,periodicSpawnValue:e.periodicSpawnValue??1,gravModuleBased:e.gravModuleBased??!0,gravFollowMouse:e.gravFollowMouse??"off",gravFollowMouseValue:e.gravFollowMouseValue??50,gravRotateMouseValue:e.gravRotateMouseValue??30,gravRotateReturnValue:e.gravRotateReturnValue??30,vfxSelector:e.vfxSelector??"off",focus:e.focus??50,maxBlur:e.maxBlur??10,minBlur:e.minBlur??0,aperture:e.aperture??5,sfxBreathing:e.sfxBreathing??!0}),getModuleBasics:(e={},t)=>({u:"compare"==t?void 0:e.u??e.enable??!0}),prepareLayer:async(e,t,a)=>{if("thecluster"===t.subtype){var{c:o}=SR7.F.getLayer(a);return new Promise((e=>{o.addOns??={},o.addOns.thecluster??={},o.addOns.thecluster.canvas=SR7.WEBGL.getCanvas(),t.addOns.thecluster=SR7.A.thecluster.getLayerBasics(t.addOns.thecluster),s(t.addOns.thecluster).then((t=>{o.addOns.thecluster.settings=t,o.addOns.thecluster.prepared=!0,o.el.appendChild(o.addOns.thecluster.canvas.canvas),SR7.A.thecluster.build(o),e()})).catch((t=>{console.log(t),e()}))}))}},toggle:(e,t)=>{let s=SR7.A.thecluster;const a=SR7.M[e];if(s.onFire)for(let t in s.onFire[e])_tpt.hop(s.onFire[e],t)&&(a.states.inViewPort?s.play(e,a.c.layers[t]):s.pause(e,a.c.layers[t],!1))},play:(e,t)=>{let s=SR7.A.thecluster;t.addOns?.thecluster&&(t.addOns.thecluster.paused=!1,s.onFire??={},s.onFire[e]??={},s.onFire[e][t.el.id]=!0,s.render(t),t.addOns.thecluster.everPlayed||requestAnimationFrame((()=>{requestAnimationFrame((()=>{SR7.A.thecluster.refreshScene(t)})),t.addOns.thecluster.everPlayed=!0})))},pause:(e,t,s)=>{let a=SR7.A.thecluster;t.addOns.thecluster.paused=!0,t.addOns.thecluster.frame=cancelAnimationFrame(t.addOns.thecluster.frame),s&&a?.onFire?.[e]?.[t.el.id]&&delete a.onFire[e][t.el.id]},listeners:{init:e=>{const t=SR7.M[e];if(SR7.A.thecluster.listenersAdded?.[e])return;let s=SR7.A.thecluster;s.onFire??={},s.onFire[e]??={},t.c.addOns??={};const a=t.c.addOns.thecluster??{};document.addEventListener("sr.layer.action",(function(e){""+(e.layersettings?.addOns?.thecluster??!1)!="false"&&("enterstage"==e.eventtype?s.play(e.id,e.c):"leavestage"==e.eventtype&&s.pause(e.id,e.c,!0))})),a.mouseEnter=a.mouseEnter??SR7.F.module.listeners.reg(e,"mouseenter",((e,t)=>s.listeners.mouse.module.enter(e,t))),a.mouseMove=a.mouseMove??SR7.F.module.listeners.reg(e,"mousemove",((e,t)=>s.listeners.mouse.module.move(e,t))),a.mouseLeave=a.mouseLeave??SR7.F.module.listeners.reg(e,"mouseleave",((e,t)=>s.listeners.mouse.module.leave(e,t))),s.listenersAdded??={},s.listenersAdded[e]=!0},mouse:{module:{enter:(e,t)=>{SR7.A.thecluster.listeners.mouse.module.default(e,t,"enter")},move:(e,t)=>{SR7.A.thecluster.listeners.mouse.module.default(e,t,"move")},leave:(e,t)=>{SR7.A.thecluster.listeners.mouse.module.default(e,t,"leave")},default:(e,t,s)=>{const a=SR7.M[e];a.c.addOns??={},a.c.addOns.thecluster??={},a.c.addOns.thecluster.mouse??={};const o=a.c.addOns.thecluster;for(var e in o.mouse.type=s,SR7.M){const a=SR7.M[e];if(a.states.inViewPort)for(var n in a.c.layers){if(!a.c.layers[n].addOns?.thecluster)continue;const e=a.c.layers[n].addOns.thecluster;if(!e?.settings?.gravModuleBased)continue;let o=t.clientX/a.dims.module.w*a.c.layers[n].cw,r=t.clientY/a.dims.module.h*a.c.layers[n].ch;if("indivGrav"===e.settings.gravFollowMouse)SR7.A.thecluster.listeners.mouse[s]({layerX:o,layerY:r,clientX:o,clientY:r},a.c.layers[n]);else if("indivRotaWithReturn"===e.settings.gravFollowMouse||"indivRota"===e.settings.gravFollowMouse){if(0==o&&0==r)continue;SR7.A.thecluster.listeners.mouse.move2({layerX:o,layerY:r,clientX:o,clientY:r},a.c.layers[n])}}}}},enter:(e,t)=>{let s=t.addOns.thecluster;s.settings.mouseOnLayer=!0,s.vccToUniform.u_mouseOnLayer.value=s.settings.mouseOnLayer,s.particleMaterial.uniforms.u_mouseOnLayer.value=s.settings.mouseOnLayer},leave:(e,t)=>{let s=t.addOns.thecluster;s.settings.mouseOnLayer=!1,s.vccToUniform.u_mouseOnLayer.value=s.settings.mouseOnLayer,s.particleMaterial.uniforms.u_mouseOnLayer.value=s.settings.mouseOnLayer},move:(e,t)=>{let s=t.addOns.thecluster,a=s.settings;var o=s.canvas.canvas.getBoundingClientRect();a.mouseOnLayer=!0,a.mouseVec.x=e.layerX/o.width*2-1,a.mouseVec.y=-e.layerY/o.height*2+1;var n=new THREE.Vector3(a.mouseVec.x,a.mouseVec.y,0);n.unproject(s.camera);var r=n.sub(s.camera.position).normalize(),i=-s.camera.position.z/r.z;a.convertedPos=s.camera.position.clone().add(r.multiplyScalar(i)),a.convertedPos.z=0,a.mouseMoveVec.set(s.settings.convertedPos.x,s.settings.convertedPos.y,0),s.vccToUniform.u_mouseVector.value=[a.mouseMoveVec.x,a.mouseMoveVec.y],s.particleMaterial.uniforms.u_mouseVector.value=[a.mouseMoveVec.x,a.mouseMoveVec.y]},move2:(e,t)=>{let s=t.addOns.thecluster;if(s.lastMousePos??=[0,0],s.counter??=0,s.counter>0){var a=e.clientX,o=e.clientY,n=[s.lastMousePos[0]-a,s.lastMousePos[1]-o],r=n[0]/t.cw*s.settings.gravRotateMouseValue,i=-n[1]/t.ch*s.settings.gravRotateMouseValue;s.scene.rotation.y+=-r*Math.PI/180,s.scene.rotation.x+=i*Math.PI/180,s.lastMousePos[0]=a,s.lastMousePos[1]=o}else s.lastMousePos[0]=e.clientX,s.lastMousePos[1]=e.clientY,s.counter++}}},fitCameraToObject:e=>{let t=e.addOns?.thecluster??!1;if(t){let s=Math.round(e.cw??0),a=Math.round(e.ch??0);t.lastDim={width:s,height:a},SR7.A.thecluster.resize(e,s,a),t.paused=!1,cancelAnimationFrame(t.frame),t.frame=requestAnimationFrame(t.bindedRender)}},adjustScene:e=>{let t=e.settings;e.scene.rotation.z=t.angle*Math.PI/180,e.scene.rotation.x=t.tilt*Math.PI/180,e.camera.position.x=t.horizontal,e.camera.position.y=t.vertical,e.camera.position.z=t.zoom+22,t.keepCentered&&e.camera.lookAt(0,0,0)}};let e=e=>parseFloat(e),t=e=>1===e||0!==e&&e,s=async s=>(void 0===s.clock&&(s.clock=new THREE.Clock),s.clockCounter=0,s.size=e(s.size)/5,s.amount=Math.floor(Math.sqrt(e(s.amount))),s.icon="default"==s.particle?SR7.E.resources.tcURL+"public/lib/par1.png":s.particle,s.mass=e(s.mass),s.mass2=e(s.mass2),s.mass3=e(s.mass3),s.spawnDiameter=e(s.spawnDiameter)/10,s.vccVector=[0,0,0,0,0,0,0,0],s.dpr=e(s.dpr),s.gravPointCounter=0,s.gravPointArray=[new THREE.Vector3],s.gravPositions=[0,0,0,0,0,0,0,0,0],s.g1X=e(s.g1X),s.g1Y=e(s.g1Y),s.g1Z=e(s.g1Z),s.g2X=e(s.g2X),s.g2Y=e(s.g2Y),s.g2Z=e(s.g2Z),s.g3X=e(s.g3X),s.g3Y=e(s.g3Y),s.g3Z=e(s.g3Z),s.limitMovement=t(s.limitMovement),s.limitMovementValue=e(s.limitMovementValue),s.limitCentrePosition=new THREE.Vector3(0,0,0),s.sIX=e(s.sIX),s.sIY=e(s.sIY),s.sIZ=e(s.sIZ),s.sVX=e(s.sVX),s.sVY=e(s.sVY),s.sVZ=e(s.sVZ),s.isGradient="solid"!==s.tc_mainColor.type,s.isRadGradient="radial"==s.tc_mainColor.type,s.RGBAColor=_tpt.parseColor(s.tc_mainColor.string,!0),s.draggable=null,s.convertedPos=new THREE.Vector3,s.aniX=e(s.aniX),s.aniY=e(s.aniY),s.aniZ=e(s.aniZ),s.lifeTimeDelay=Math.abs(e(s.lifeTimeDelay)/10-2.1),s.noiseOn=t(s.noiseOn),s.noiseAmount=e(s.noiseAmount)/100,s.lifeTimeGradient=t(s.lifeTimeGradient),s.randomizeOpacity=t(s.randomizeOpacity),s.periodicSpawn=t(s.periodicSpawn),s.periodicSpawnValue=e(s.periodicSpawnValue),s.gravPoint1Toggle=t(s.gravPoint1Toggle),s.gravPoint2Toggle=t(s.gravPoint2Toggle),s.gravPoint3Toggle=t(s.gravPoint3Toggle),s.randSizeMin=e(s.randSizeMin),s.randSizeMax=e(s.randSizeMax),s.colorImageMixValue=e(s.colorImageMixValue),s.mouseVec=new THREE.Vector2,s.mouseMoveVec=new THREE.Vector2,s.mouseOnLayer=!1,s.gravFollowMouseValue=e(s.gravFollowMouseValue),s.gravRotateMouseValue=e(s.gravRotateMouseValue),s.gravRotateReturnValue=e(s.gravRotateReturnValue)/1e4,s.focus=e(s.focus),s.maxBlur=.001*e(s.maxBlur),s.minBlur=.001*e(s.minBlur),s.aperture=1e-5*e(s.aperture),s.speed=e(s.speed)/100,s.angle=e(s.angle),s.tilt=e(s.tilt),s.horizontal=e(s.offsetX),s.vertical=e(s.offsetY),s.zoom=e(s.offsetZ),s.isSVG=-1!==s.particle.indexOf(".svg"),s.canvastemp=document.createElement("canvas"),s.ctxtemp=s.canvastemp.getContext("2d"),-1!==s.icon.indexOf(".svg")?(s.isSVG=!0,await _tpt.loadSVG(s.icon).then((e=>{if(null!==e){const t=s.size*window.devicePixelRatio*2;let a=e.getElementsByTagName("svg")[0];for(null!=a&&null!=a||(a=e);a.getElementsByTagName("svg").length>0;)a=a.getElementsByTagName("svg")[0];let o=parseFloat(a.getAttribute("width"))||t,n=parseFloat(a.getAttribute("height"))||t;a.setAttribute("width",o),a.setAttribute("height",n);const r=isFinite(o/n)&&o/n||1;o=r>=1?t:t*r,n=r>=1?t/r:t;let i=new Image;i.crossOrigin="Anonymous",i.src="data:image/svg+xml;base64,"+btoa((new XMLSerializer).serializeToString(a)),i.onload=function(){SR7.A.particlewave.tools.particleOnCanvas(o,n,i,s.ctxtemp)}}})).catch((e=>{throw e}))):_tpt.isImageURL(s.icon)&&await _tpt.loadSingleImage(s.icon).then((e=>{let t=5*s.size*window.devicePixelRatio*2,a=e.image,{naturalHeight:o,naturalWidth:n}=a;const r=a.naturalWidth/a.naturalHeight;isNaN(r)||0===r||!isFinite(r)?n=o=t:(n=r>=1?t:t*r,o=r>=1?t/r:t),SR7.A.thecluster.tools.particleOnCanvas(n,o,a,s.ctxtemp)})).catch((e=>{throw e})),s);_tpt.R??={},_tpt.R.thecluster=_tpt.extend?_tpt.extend(_tpt.R.thecluster,{status:2,version:"1.0"}):{status:2,version:"1.0"},window.dispatchEvent(new CustomEvent("SR7TheClusterReady"))}();
!function(){"use strict";if(window.SR7??={},window._tpt??={},SR7.A??={},SR7.F??={},SR7.D??={},void 0!==(SR7.A.thecluster?.cluster??void 0))return;SR7.A.thecluster={...SR7.A.thecluster,cluster:!0,build:e=>{T();let t=e.addOns.thecluster,r=t.settings;t.count=r.amount*r.amount,t.camera=new THREE.PerspectiveCamera(70,e.cw/e.ch,1,1e3),t.camera.aspect=1,t.scene=new THREE.Scene,t.group=new THREE.Group,t.camera.position.z=20,(r.showHelper||r.gravPointsVisible)&&(t.axesHelper=new THREE.AxesHelper(5),t.scene.add(t.axesHelper)),t.textureCanvas=new THREE.CanvasTexture(r.canvastemp),t.textureCanvas.needsUpdate=!0,SR7.A.thecluster.refreshScene(e,!0),f(e),t.bindedRender=t=>{SR7.A.thecluster.render(e,t)},t.built=!0,t.paused=!0,t.computeRenderer.compute()},refreshScene:(e,t)=>{let r=e.addOns.thecluster,a=r.settings;t&&(r.renderer=new THREE.WebGLRenderer({antialias:!0,canvas:r.canvas.canvas,alpha:!0})),r.renderer.setPixelRatio(Math.min(a.dpr,window.devicePixelRatio)),r.renderer.setSize(e.cw,e.ch),r.gravColor1=16721765,r.gravColor2=890098,r.gravColor3=3274158,(null==r.particleFragShader||t)&&SR7.A.thecluster.createShaders(r),(null==r.clusterParticles||t)&&(r.clusterParticles=h(e)),r.scene.add(r.clusterParticles),SR7.A.thecluster.gravPoints.set(r),SR7.A.thecluster.initPP(e),SR7.A.thecluster.adjustScene(r),SR7.A.thecluster.startComputeRenderer(e,t)},render:(t,r)=>{let n=t.addOns.thecluster,o=n.settings;n.destroyed||n.paused||(n.frame=cancelAnimationFrame(n.frame),n.frame=requestAnimationFrame(n.bindedRender)),void 0!==r&&void 0!==n.time?(n.tDiff=(r-n.time)/1600,n.time=r,void 0!==n.lastDim&&n.lastDim.width===t.cw&&n.lastDim.height===t.ch||SR7.A.thecluster.fitCameraToObject(t),n.computeRenderer.compute(),n.particleUniforms.texturePosition.value=n.computeRenderer.getCurrentRenderTarget(o.computePos).texture,n.particleUniforms.textureVelocity.value=n.computeRenderer.getCurrentRenderTarget(o.computeVcc).texture,n.particleUniforms.textureCustomValues.value=n.computeRenderer.getCurrentRenderTarget(o.computeCustomValues).texture,n.particleUniforms.textureInitPos.value=n.computeRenderer.getCurrentRenderTarget(o.computeInitPos).texture,n.particleUniforms.textureInitVCC.value=n.computeRenderer.getCurrentRenderTarget(o.computeInitVCC).texture,0!=o.gravPointsVisible||"off"==o.gravP1MoveSel&&"off"==o.gravP2MoveSel&&"off"==o.gravP3MoveSel||e(n,r),o.clock.getElapsedTime()>.016666666666666666*o.clockCounter&&(n.particleMaterial.uniforms.u_time.value+=n.tDiff,n.posToUniform.u_time.value??=0,n.posToUniform.u_time.value+=n.tDiff,n.vccToUniform.u_time.value+=n.tDiff,n.pp&&n.pp.composer?("off"!=o.vfxSelector&&o.sfxBreathing&&(n.pp.effectPass.uniforms.maxblur.value=_tpt.gsap.utils.mapRange(0,1,o.minBlur,o.maxBlur,Math.abs(Math.sin(Math.PI*(n.particleMaterial.uniforms.u_time.value+.5)*.3)))),n.pp.composer.render()):n.renderer.render(n.scene,n.camera),"off"!=o.animationSel&&a(n),"indivRotaWithReturn"===o.gravFollowMouse&&"off"===o.animationSel&&(n.scene.rotation.y>0&&(n.scene.rotation.y-=o.gravRotateReturnValue),n.scene.rotation.y<0&&(n.scene.rotation.y+=o.gravRotateReturnValue),n.scene.rotation.x>0&&(n.scene.rotation.x-=o.gravRotateReturnValue),n.scene.rotation.x<0&&(n.scene.rotation.x+=o.gravRotateReturnValue)))):n.time=r},initPP:e=>{let t=e.addOns.thecluster,r=t.settings;"off"===r.vfxSelector||t.ppEnabled||void 0===e.cw||void 0===e.ch||0===e.cw||0===e.ch||(t.ppEnabled=!0,t.pp=SR7.WEBGL.postProcessing("BokehPass",t.renderer,t.scene,t.camera,{focus:r.focus,aperture:r.aperture,maxblur:r.maxBlur,transparent:!0,width:e.cw,height:e.ch}))},update:e=>{let t=e.addOns.thecluster,r=t.settings;t.particleMaterial.uniforms.u_pointSize.value=r.size,t.particleMaterial.uniforms.u_limitMovementValue.value=r.limitMovementValue,t.particleMaterial.uniforms.u_limitCentrePosition.value=r.limitCentrePosition,t.posToUniform.u_speed.value=r.speed,t.posToUniform.u_lifeTimeDelay.value=r.lifeTimeDelay,t.vccToUniform.u_speed.value=r.speed,t.vccToUniform.u_mass.value=r.mass,t.vccToUniform.u_mass2.value=r.mass2,t.vccToUniform.u_mass3.value=r.mass3,t.vccToUniform.u_gravPositions.value=r.gravPositions,t.vccToUniform.u_lifeTimeDelay.value=r.lifeTimeDelay,t.vccToUniform.u_noiseAmount.value=(r.noiseAmount/100).toFixed(2),t.particleMaterial.uniforms.u_colorImageMixValue.value=r.colorImageMixValue,SR7.A.thecluster.adjustScene(t)},resize:(e,t,r)=>{let a=e.addOns.thecluster;a.w=t,a.h=r,a.camera&&(a.camera.aspect=a.w/a.h,a.camera.updateProjectionMatrix(),a.renderer.setSize(a.w,a.h))},destroy:e=>{let t=e.addOns.thecluster;t.destroyed=!0,t.renderer&&(t.renderer.dispose(),t.renderer.domElement.remove(),t.renderer.domElement=null),t.renderer=null,t.frame=cancelAnimationFrame(t.frame)},calcSizeAt0Plane:e=>{var t=Math.tan(e.camera.fov/2)*(e.camera.position.z+12)*2;return{x:e.camera.aspect*t,y:t}}};let e=(e,a)=>{let n=r(a),o=e.settings;o.gravPoint1Toggle&&(o["g1"+o.gravP1MoveSel[0].toUpperCase()]=n.x,o["g1"+o.gravP1MoveSel[1].toUpperCase()]=n.y,o.gravPointArray[0].position[o.gravP1MoveSel[0]]=o["g1"+o.gravP1MoveSel[0].toUpperCase()],o.gravPointArray[0].position[o.gravP1MoveSel[1]]=o["g1"+o.gravP1MoveSel[1].toUpperCase()]),o.gravPoint2Toggle&&(o["g2"+o.gravP2MoveSel[0].toUpperCase()]=n.x,o["g2"+o.gravP2MoveSel[1].toUpperCase()]=n.y,o.gravPointArray[1].position[o.gravP2MoveSel[0]]=o["g2"+o.gravP2MoveSel[0].toUpperCase()],o.gravPointArray[1].position[o.gravP2MoveSel[1]]=o["g2"+o.gravP2MoveSel[1].toUpperCase()]),o.gravPoint3Toggle&&(o["g3"+o.gravP3MoveSel[0].toUpperCase()]=n.x,o["g3"+o.gravP3MoveSel[1].toUpperCase()]=n.y,o.gravPointArray[2].position[o.gravP3MoveSel[0]]=o["g1"+o.gravP3MoveSel[0].toUpperCase()],o.gravPointArray[2].position[o.gravP3MoveSel[1]]=o["g1"+o.gravP3MoveSel[1].toUpperCase()]),t(o),e.vccToUniform.u_gravPositions.value=o.gravPositions},t=e=>{e.gravPositions[0]=e.g1X,e.gravPositions[1]=e.g1Y,e.gravPositions[2]=e.g1Z,e.gravPositions[3]=e.g2X,e.gravPositions[4]=e.g2Y,e.gravPositions[5]=e.g2Z,e.gravPositions[6]=e.g3X,e.gravPositions[7]=e.g3Y,e.gravPositions[8]=e.g3Z},r=e=>({x:10*Math.sin(e/5e3),y:10*Math.cos(e/5e3)}),a=e=>{e.scene.rotation.x+=e.settings.aniX/1e3*e.settings.speed*1.5,e.scene.rotation.y+=e.settings.aniY/1e3*e.settings.speed*1.5,e.scene.rotation.z+=e.settings.aniZ/1e3*e.settings.speed*1.5},n=e=>{for(var t=e.image.data,r=0,a=t.length;r<a;r+=4)t[r+0]=20*Math.random()-10,t[r+1]=20*Math.random()-10,t[r+2]=20*Math.random()-10,t[r+3]=0},o=(e,t)=>{for(var r=t.image.data,a=e.image.data,n=0,o=a.length;n<o;n+=4)a[n+0]=-r[n+0],a[n+1]=-r[n+1],a[n+2]=-r[n+2],a[n+3]=0},s=(e,t)=>{const r=t.image.data,a=e.image.data,n=Math.PI/2,o=Math.cos(n),s=Math.sin(n),i=new Float32Array(4);for(let e=0,t=a.length;e<t;e+=4){const t=r[e+0],n=r[e+1],u=r[e+2],l=Math.sqrt(t*t+n*n+u*u);0!==l&&(i[0]=(t*o+n*s)/l,i[1]=(-t*s+n*o)/l,i[2]=u/l,i[3]=0,a.set(i,e))}},i=(e,t)=>{const r=t.image.data,a=e.image.data,n=Math.PI/2,o=Math.cos(n),s=Math.sin(n),i=new Float32Array(4);for(let e=0,t=a.length;e<t;e+=4){const t=r[e+0],n=r[e+1],u=r[e+2],l=Math.sqrt(t*t+n*n+u*u);0!==l&&(i[0]=(t*o-n*s)/l,i[1]=(t*s+n*o)/l,i[2]=u/l,i[3]=0,a.set(i,e))}},u=(e,t)=>{const r=e.image.data,a=Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z);if(0===a)return;const n=new Float32Array([t.x/a,t.y/a,t.z/a,0]);for(let e=0,t=r.length;e<t;e+=4)r.set(n,e)},l=(e,t)=>{const r=e.image.data,a=r.length/4,n=t.mirroredOn,o=new Float32Array(4);for(let e=0,s=r.length;e<s;e+=4){const s=Math.random()-.5,i=Math.random()-.5,u=Math.random()-.5,l=Math.random()*t.spawnDiameter/Math.sqrt(s*s+i*i+u*u);o[0]=s*l,o[1]=i*l,o[2]=u*l;const c=e/4;n>=2?c<1/n*a?(o[0]+=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ):c<2/n*a?(o[0]-=t.sIX,o[1]-=t.sIY,o[2]+=t.sIZ):n>=4&&(c<3/n*a?(o[0]-=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ):c<4/n*a?(o[0]+=t.sIX,o[1]-=t.sIY,o[2]+=t.sIZ):n>=6&&(c<5/n*a?o[2]+=.5*t.sIZ:c<6/n*a&&(o[2]+=1.5*t.sIZ))):(o[0]+=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ),o[3]=Math.random(),r.set(o,e)}},c=(e,t)=>{const r=e.image.data,a=r.length/4,n=t.mirroredOn,o=new Float32Array(4);for(let e=0,s=r.length;e<s;e+=4){const s=Math.random()-.5,i=Math.random()-.5,u=Math.random()-.5,l=t.spawnDiameter/Math.sqrt(s*s+i*i+u*u);o[0]=s*l,o[1]=i*l,o[2]=u*l;const c=e/4;n>=2?c<1/n*a?(o[0]+=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ):c<2/n*a?(o[0]-=t.sIX,o[1]-=t.sIY,o[2]+=t.sIZ):n>=4&&(c<3/n*a?(o[0]-=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ):c<4/n*a?(o[0]+=t.sIX,o[1]-=t.sIY,o[2]+=t.sIZ):n>=6&&(c<5/n*a?o[2]+=.5*t.sIZ:c<6/n*a&&(o[2]+=1.5*t.sIZ))):(o[0]+=t.sIX,o[1]+=t.sIY,o[2]+=t.sIZ),o[3]=Math.random(),r.set(o,e)}},m=(e,t)=>{const r=e.image.data,a=t.x/2,n=t.y/2,o=new Float32Array(4);for(let e=0,s=r.length;e<s;e+=4){let s,i,u=10*Math.random()-5;Math.random()>=.5?(s=Math.random()*t.x-a,i=0===Math.round(Math.random())?-n:n):(s=0===Math.round(Math.random())?-a:a,i=Math.random()*t.y-n),o[0]=s,o[1]=i,o[2]=u,o[3]=Math.random(),r.set(o,e)}},d=(e,t,r)=>{const a=e.image.data,n=a.length/4,o=new Float32Array(4),s=n/4,i=n/2,u=3*s;for(let e=0,n=a.length;e<n;e+=4){const n=e/4;let l=Math.random()*r.x-r.x/2+t.sIX,c=t.sIY,m=t.sIZ;t.mirroredOn>=2&&(n<s?c=-t.sIY:t.mirroredOn>=4&&(n<i?(c=-t.sIY,m=-t.sIZ):n<u&&(m=-t.sIZ))),o[0]=l,o[1]=c,o[2]=m,o[3]=Math.random(),a.set(o,e)}},p=(e,t)=>{const r=e.image.data,a=r.length/4,n=new Float32Array(4),o=t.mirroredOn;for(let e=0,s=r.length;e<s;e+=4){const s=e/4,i=Math.random()-.5,u=Math.random()-.5;let l=i*t.spawnDiameter,c=u*t.spawnDiameter,m=0;o>=2?s<1/o*a?(l+=t.sIX,c+=t.sIY,m+=t.sIZ):s<2/o*a?(l-=t.sIX,c-=t.sIY,m+=t.sIZ):o>=4&&(s<3/o*a?(l-=t.sIX,c+=t.sIY,m+=t.sIZ):s<4/o*a?(l+=t.sIX,c-=t.sIY,m+=t.sIZ):o>=6&&(s<5/o*a?m+=.5*t.sIZ:s<6/o*a&&(m+=1.5*t.sIZ))):l+=t.sIX,c+=t.sIY,m+=t.sIZ,n[0]=l,n[1]=c,n[2]=m,n[3]=Math.random(),r.set(n,e)}},v=(e,t)=>{const r=t.x/2,a=t.y/2,n=new Float32Array(4),o=e.image.data;for(let e=0,s=o.length;e<s;e+=4)n[0]=Math.random()*t.x-r,n[1]=Math.random()*t.y-a,n[2]=10*Math.random()-5,n[3]=Math.random(),o.set(n,e)},g=(e,t)=>{const r=t.x/2,a=t.y/2,n=new Float32Array(4),o=e.image.data;for(let e=0,s=o.length;e<s;e+=4)n[0]=Math.random()*t.x-r,n[1]=Math.random()*t.y-a,n[2]=Math.random()*t.y-a,n[3]=Math.random(),o.set(n,e)},h=e=>{let t=e.addOns.thecluster,r=t.settings;for(var a=new THREE.BufferGeometry,n=new Float32Array(3*t.count),o=new Float32Array(2*t.count),s=0,i=0;i<t.count;i++)o[(s=2*i)+0]=i%r.amount/r.amount,o[s+1]=Math.floor(i/r.amount)/r.amount;return a.setAttribute("position",new THREE.BufferAttribute(n,3)),a.setAttribute("uv",new THREE.BufferAttribute(o,2)),t.particleUniforms={texturePosition:{value:null},textureVelocity:{value:null},textureCustomValues:{value:null},textureInitPos:{value:null},textureInitVCC:{value:null},u_pointSize:{value:r.size},u_particleTexture:{value:t.textureCanvas},u_limitCentrePosition:{value:r.limitCentrePosition},u_limitMovementValue:{value:r.limitMovementValue},u_limitMovement:{value:r.limitMovement},u_colorArray:{value:r.RGBAColor},u_time:{value:0},u_colorImageMixValue:{value:r.colorImageMixValue},u_lifeTimeDelay:{value:r.lifeTimeDelay},u_mouseOnLayer:{value:r.mouseOnLayer},u_mouseVector:{value:[0,0]}},t.particleMaterial=new THREE.ShaderMaterial({uniforms:t.particleUniforms,vertexShader:t.particleVertShader,fragmentShader:t.particleFragShader,blending:THREE.AdditiveBlending,depthTest:!1,transparent:!0,vertexColors:!0}),new THREE.Points(a,t.particleMaterial)};SR7.A.thecluster.startComputeRenderer=e=>{let t=e.addOns.thecluster,r=t.settings;switch(t.computeRenderer=new THREE.GPUComputationRenderer(r.amount,r.amount,t.renderer),r.renderTexturePos=t.computeRenderer.createTexture(),r.renderTextureVcc=t.computeRenderer.createTexture(),r.renderTextureCustomValues=t.computeRenderer.createTexture(),r.renderTextureInitPos=t.computeRenderer.createTexture(),r.renderTextureInitVCC=t.computeRenderer.createTexture(),r.spawnForm){case"onGlobe":c(r.renderTexturePos,r);break;case"inGlobe":l(r.renderTexturePos,r);break;case"onBorder":m(r.renderTexturePos,SR7.A.thecluster.calcSizeAt0Plane(t));break;case"random":v(r.renderTexturePos,SR7.A.thecluster.calcSizeAt0Plane(t));break;case"random3D":g(r.renderTexturePos,SR7.A.thecluster.calcSizeAt0Plane(t));break;case"inLine":d(r.renderTexturePos,r,SR7.A.thecluster.calcSizeAt0Plane(t));break;case"inCircle":p(r.renderTexturePos,r)}switch(r.spawnAccVec){case"random":n(r.renderTextureVcc);break;case"toCentre":o(r.renderTextureVcc,r.renderTexturePos);break;case"normalCW":s(r.renderTextureVcc,r.renderTexturePos);break;case"normalCCW":i(r.renderTextureVcc,r.renderTexturePos);break;case"direction":u(r.renderTextureVcc,new THREE.Vector3(r.sVX,r.sVY,r.sVZ))}r.renderTextureInitPos=r.renderTexturePos,r.renderTextureInitVCC=r.renderTextureVcc,(e=>{const t=e.renderTextureVcc.image.data,r=1/(e.periodicSpawnValue-1);let a=0,n=0;if("lifetime"===e.patternSel)if(e.periodicSpawn)for(n=0;n<t.length;n+=4)1===e.periodicSpawnValue?t[n+3]=0:a<e.periodicSpawnValue?(t[n+3]=r*a,a++):(a=1,t[n+3]=0);else for(n=0;n<t.length;n+=4)t[n+3]=Math.max(Math.min(Math.random(),1),.05);else for(n=0;n<t.length;n+=4)t[n+3]=e.randomizeOpacity?Math.random()+.05:1})(r),((e,t)=>{for(var r=e.image.data,a=0,n=r.length;a<n;a+=4)r[a+0]=0,r[a+1]=0,r[a+2]=0,r[a+3]=t.randomizeSize?(Math.random()*(t.randSizeMax-t.randSizeMin)+t.randSizeMin)/100:1})(r.renderTextureCustomValues,r),r.computePos=t.computeRenderer.addVariable("texturePosition",t.computePosShader,r.renderTexturePos),r.computeVcc=t.computeRenderer.addVariable("textureVelocity",t.computeVelShader,r.renderTextureVcc),r.computeCustomValues=t.computeRenderer.addVariable("textureCustomValues",t.computeValueShader,r.renderTextureCustomValues),r.computeInitPos=t.computeRenderer.addVariable("textureInitPos",t.computeInitPosShader,r.renderTextureInitPos),r.computeInitVCC=t.computeRenderer.addVariable("textureInitVCC",t.computeInitVCCShader,r.renderTextureInitVCC),t.computeRenderer.setVariableDependencies(r.computePos,[r.computePos,r.computeVcc,r.computeCustomValues,r.computeInitPos,r.computeInitVCC]),t.posToUniform=r.computePos.material.uniforms,t.posToUniform.u_speed={value:r.speed},t.posToUniform.u_time={value:0},t.posToUniform.u_lifeTimeDelay={value:r.lifeTimeDelay},t.computeRenderer.setVariableDependencies(r.computeVcc,[r.computeVcc,r.computePos,r.computeCustomValues,r.computeInitPos,r.computeInitVCC]),t.vccToUniform=r.computeVcc.material.uniforms,t.vccToUniform.u_speed={value:r.speed},t.vccToUniform.u_mass={value:r.mass},t.vccToUniform.u_mass2={value:r.mass2},t.vccToUniform.u_mass3={value:r.mass3},t.vccToUniform.u_gravPositions={value:r.gravPositions},t.vccToUniform.u_mouseVector={value:r.mouseVec},t.vccToUniform.u_mouseOnLayer={value:r.mouseOnLayer},t.vccToUniform.u_time={value:0},t.vccToUniform.u_lifeTimeDelay={value:r.lifeTimeDelay},t.vccToUniform.u_noiseAmount={value:r.noiseAmount},t.computeRenderer.setVariableDependencies(r.computeCustomValues,[r.computeCustomValues]),t.computeRenderer.setVariableDependencies(r.computeInitPos,[r.computeInitPos]),t.computeRenderer.setVariableDependencies(r.computeInitVCC,[r.computeInitVCC]),t.computeRenderer.init()};let f=e=>{let t=e.addOns.thecluster;t.settings.gravModuleBased||("indivGrav"===t.settings.gravFollowMouse&&(t.canvas.canvas.addEventListener("mouseenter",(function(t){SR7.A.thecluster.listeners.mouse.enter(t,e)})),t.canvas.canvas.addEventListener("mouseleave",(function(t){SR7.A.thecluster.listeners.mouse.leave(t,e)})),t.canvas.canvas.addEventListener("mousemove",(function(t){SR7.A.thecluster.listeners.mouse.move(t,e)}))),"indivRotaWithReturn"!==t.settings.gravFollowMouse&&"indivRota"!==t.settings.gravFollowMouse||(t.lastMousePos=[0,0],t.counter=0,t.canvas.canvas.addEventListener("mousemove",(function(t){SR7.A.thecluster.listeners.mouse.move2(t,e)}))))},T=()=>{THREE.GPUComputationRenderer??=function(e,t,r){this.variables=[],this.currentTextureIndex=0;var a=new THREE.Scene,n=new THREE.Camera;n.position.z=1;var o={passThruTexture:{value:null}},s=l("uniform sampler2D passThruTexture;\n\nvoid main() {\n\n\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\n\tgl_FragColor = texture2D( passThruTexture, uv );\n\n}\n",o),i=new THREE.Mesh(new THREE.PlaneBufferGeometry(2,2),s);function u(r){r.defines.resolution="vec2( "+e.toFixed(1)+", "+t.toFixed(1)+" )"}function l(e,t){t=t||{};var r=new THREE.ShaderMaterial({uniforms:t,vertexShader:"void main()\t{\n\n\tgl_Position = vec4( position, 1.0 );\n\n}\n",fragmentShader:e});return u(r),r}a.add(i),this.addVariable=function(e,t,r){var a={name:e,initialValueTexture:r,material:this.createShaderMaterial(t),dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter};return this.variables.push(a),a},this.setVariableDependencies=function(e,t){e.dependencies=t},this.init=function(){if(!r.capabilities.isWebGL2&&!r.extensions.get("OES_texture_float"))return"No OES_texture_float support for float textures.";if(0===r.capabilities.maxVertexTextures)return"No support for vertex shader textures.";for(var a=0;a<this.variables.length;a++){var n=this.variables[a];n.renderTargets[0]=this.createRenderTarget(e,t,n.wrapS,n.wrapT,n.minFilter,n.magFilter),n.renderTargets[1]=this.createRenderTarget(e,t,n.wrapS,n.wrapT,n.minFilter,n.magFilter),this.renderTexture(n.initialValueTexture,n.renderTargets[0]),this.renderTexture(n.initialValueTexture,n.renderTargets[1]);var o=n.material,s=o.uniforms;if(null!==n.dependencies)for(var i=0;i<n.dependencies.length;i++){var u=n.dependencies[i];if(u.name!==n.name){for(var l=!1,c=0;c<this.variables.length;c++)if(u.name===this.variables[c].name){l=!0;break}if(!l)return"Variable dependency not found. Variable="+n.name+", dependency="+u.name}s[u.name]={value:null},o.fragmentShader="\nuniform sampler2D "+u.name+";\n"+o.fragmentShader}}return this.currentTextureIndex=0,null},this.compute=function(){for(var e=this.currentTextureIndex,t=0===this.currentTextureIndex?1:0,r=0,a=this.variables.length;r<a;r++){var n=this.variables[r];if(null!==n.dependencies)for(var o=n.material.uniforms,s=0,i=n.dependencies.length;s<i;s++){var u=n.dependencies[s];o[u.name].value=u.renderTargets[e].texture}this.doRenderTarget(n.material,n.renderTargets[t])}this.currentTextureIndex=t},this.getCurrentRenderTarget=function(e){return e.renderTargets[this.currentTextureIndex]},this.getAlternateRenderTarget=function(e){return e.renderTargets[0===this.currentTextureIndex?1:0]},this.addResolutionDefine=u,this.createShaderMaterial=l,this.createRenderTarget=function(r,a,n,o,s,i){return r=r||e,a=a||t,n=n||THREE.ClampToEdgeWrapping,o=o||THREE.ClampToEdgeWrapping,s=s||THREE.NearestFilter,i=i||THREE.NearestFilter,new THREE.WebGLRenderTarget(r,a,{wrapS:n,wrapT:o,minFilter:s,magFilter:i,format:THREE.RGBAFormat,type:/(iPad|iPhone|iPod)/g.test(navigator.userAgent)?THREE.HalfFloatType:THREE.FloatType,stencilBuffer:!1,depthBuffer:!1})},this.createTexture=function(){var r=new Float32Array(e*t*4);return new THREE.DataTexture(r,e,t,THREE.RGBAFormat,THREE.FloatType)},this.renderTexture=function(e,t){o.passThruTexture.value=e,this.doRenderTarget(s,t),o.passThruTexture.value=null},this.doRenderTarget=function(e,t){var o=r.getRenderTarget();i.material=e,r.setRenderTarget(t),r.render(a,n),i.material=s,r.setRenderTarget(o)}}};_tpt.R??={},_tpt.R.tc_Cluster=_tpt.extend?_tpt.extend(_tpt.R.tc_Cluster,{status:2,version:"1.0"}):{status:2,version:"1.0"},window.dispatchEvent(new CustomEvent("SR7TheClusterClusterLoaded"))}();
!function(){"use strict";function t(t){(t===1/0||isNaN(t))&&(t=0);var e=function(t){var e=t.toString().split(".")[1];return void 0===e?0:e.length}(t);return 0===e?parseFloat(t).toFixed(1):parseFloat(t).toFixed(e)}window.SR7??={},window._tpt??={},SR7.A??={},SR7.F??={},SR7.D??={},void 0===(SR7.A.thecluster?.shaders??void 0)&&(SR7.A.thecluster={...SR7.A.thecluster,shaders:{computePosShader:()=>"\n\t\t\t\tuniform float u_speed;\n\t\t\t\tuniform float u_time;\n\t\t\t\tuniform float u_lifeTimeDelay;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\t\t\t\t\tvec4 texturePos = texture2D(texturePosition, uv);\n\t\t\t\t\tvec4 textureVel = texture2D(textureVelocity, uv);\n\t\t\t\t\tvec4 textureInitPos = texture2D(textureInitPos, uv);\n\t\t\t\t\tvec4 textureInitVCC = texture2D(textureInitVCC, uv);\n\t\t\t\t\tvec3 pos = texturePos.xyz;\n\t\t\t\t\tvec3 vel = textureVel.xyz;\n\n\t\t\t\t\tfloat minCo = 0.0;\n\t\t\t\t\tfloat maxCo = 0.75;\n\n\t\t\t\t\t//-- Add ParticleMove Here --\n\n\t\t\t\t\tgl_FragColor = vec4(pos, 1.0);\n\t\t\t\t}\n\t\t\t",computeValueShader:()=>"\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\t\t\t\t\tvec4 textureCV = texture2D(textureCustomValues, uv);\n\n\t\t\t\t\tgl_FragColor = textureCV;\n\t\t\t\t}\n\t\t\t",computeInitPosShader:()=>"\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\t\t\t\t\tvec4 textureCV = texture2D(textureInitPos, uv);\n\n\t\t\t\t\tgl_FragColor = textureCV;\n\t\t\t\t}\n\t\t\t",computeInitVCCShader:()=>"\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\t\t\t\t\tvec4 textureCV = texture2D(textureInitVCC, uv);\n\n\t\t\t\t\tgl_FragColor = textureCV;\n\t\t\t\t}\n\t\t\t",computeVelShader:()=>"\n\t\t\t\tuniform float u_speed;\n\t\t\t\tuniform float u_mass;\n\t\t\t\tuniform float u_mass2;\n\t\t\t\tuniform float u_mass3;\n\t\t\t\tuniform float u_gravPositions[9];\n\t\t\t\tuniform float u_time;\n\t\t\t\tuniform float u_lifeTimeDelay;\n\t\t\t\tuniform float u_noiseAmount;\n\t\t\t\tuniform vec2 u_mouseVector;\n\t\t\t\tuniform bool u_mouseOnLayer;\n\n\t\t\t\t//-- Add Noise Methods Here --\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 uv = gl_FragCoord.xy / resolution.xy;\n\t\t\t\t\tvec4 texturePos = texture2D(texturePosition, uv);\n\t\t\t\t\tvec4 textureVel = texture2D(textureVelocity, uv);\n\t\t\t\t\tvec4 textureCV = texture2D(textureCustomValues, uv);\n\t\t\t\t\tvec4 textureInitVCC = texture2D(textureInitVCC, uv);\n\t\t\t\t\tvec3 vel = textureVel.xyz;\n\t\t\t\t\tvec3 pos = texturePos.xyz;\n\t\t\t\t\tfloat lifetime = textureVel.w;\n\n\t\t\t\t\tfloat gravCo = -0.004;\n\t\t\t\t\tfloat speedCo = 0.1;\n\n\t\t\t\t\tvec3 sumVector = vec3(0.0, 0.0, 0.0);\n\n\t\t\t\t\t//-- Add G1 Here --\n\t\t\t\t\t//-- Add G2 Here --\n\t\t\t\t\t//-- Add G3 Here --\n\t\t\t\t\t//-- Add G4 Here --\n\n\t\t\t\t\t//-- Add Modified Vel Here --\n\n\t\t\t\t\tvel += sumVector * u_speed * speedCo;\n\n\t\t\t\t\t//-- Add Noise Here --\n\n\t\t\t\t\t//-- Add Disolve Here --\n\n\t\t\t\t\tgl_FragColor = vec4(vel, lifetime);\n\t\t\t\t}\n\t\t\t",particleVertShader:()=>"\n\t\t\t\t//interresting effect with limit on gl_Position.xyz\n\n\t\t\t\tvec3 limit(inout vec3 pos, vec3 shiftby, float dis){\n\t\t\t\t\tfloat length = length(pos - shiftby);\n\t\t\t\t\tif(length > dis){\n\t\t\t\t\t\treturn (normalize(pos) * dis) + shiftby;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\treturn pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvec3 unLimit(inout vec3 pos, vec3 shiftby, float dis){\n\t\t\t\t\tfloat length = length(pos - shiftby);\n\t\t\t\t\tif(length < dis){\n\t\t\t\t\t\treturn (normalize(pos) * dis) + shiftby;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\treturn pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tuniform sampler2D texturePosition;\n\t\t\t\tuniform sampler2D textureVelocity;\n\t\t\t\tuniform sampler2D textureCustomValues;\n\n\t\t\t\tuniform float u_pointSize;\n\t\t\t\tuniform vec3 u_limitCentrePosition;\n\t\t\t\tuniform float u_limitMovementValue;\n\t\t\t\tuniform bool u_limitMovement;\n\t\t\t\tuniform float u_time;\n\t\t\t\tuniform float u_lifeTimeDelay;\n\n\t\t\t\tvarying vec3 v_pos;\n\t\t\t\tvarying float v_lifetime;\n\t\t\t\tvarying vec2 v_uv;\n\n\t\t\t\tuniform bool u_mouseOnLayer;\n\t\t\t\tuniform vec2 u_mouseVector;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec4 pos = texture2D(texturePosition, uv);\n\t\t\t\t\tvec4 vel = texture2D(textureVelocity, uv);\n\t\t\t\t\tvec4 textureCV = texture2D(textureCustomValues, uv);\n\n\t\t\t\t\tv_uv = uv;\n\n\t\t\t\t\tvec4 worldPosition;\n\n\t\t\t\t\tvec4 endPos;\n\t\t\t\t\tvec3 posnew = vec3(0.0);\n\n\t\t\t\t\tif(u_mouseOnLayer == true){\n\t\t\t\t\t\tposnew = unLimit(pos.xyz, vec3(u_mouseVector, 0.0), 0.55);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tposnew = unLimit(pos.xyz, u_limitCentrePosition, 0.55);\n\t\t\t\t\t}\n\t\t\t\t\t\n\n\t\t\t\t\tif(u_limitMovement == true){\n\t\t\t\t\t\tendPos = vec4(limit(posnew, u_limitCentrePosition, u_limitMovementValue), 1.0);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tendPos = vec4(posnew, 1.0);\n\t\t\t\t\t}\n\n\t\t\t\t\tworldPosition = modelMatrix * endPos;\n\t\t\t\t\t\n\t\t\t\t\tvec4 mvPosition = viewMatrix * worldPosition;\n\t\t\t\t\tgl_Position = projectionMatrix * mvPosition;\n\n\t\t\t\t\tv_pos = pos.xyz;\n\n\t\t\t\t\t//-- Add v_lifetime Here --\n\n\t\t\t\t\t//-- Add stayOnScreen Here --\n\n\t\t\t\t\tfloat sizeChangeOnGrav = length(pos.xyz) / 5.0;\n\t\t\t\t\tgl_PointSize = (u_pointSize) * textureCV.w * clamp(sizeChangeOnGrav, 0.75, 1.5);\n\t\t\t\t}\n\t\t\t",particleFragShader:()=>"\n\t\t\t\tfloat resize(inout float x, float wholeLocal){\n\t\t\t\t\treturn abs(x / wholeLocal);\n\t\t\t\t}\n\n\t\t\t\tuniform sampler2D u_particleTexture;\n\t\t\t\tuniform float u_colorArray[30];\n\t\t\t\tuniform float u_time;\n\t\t\t\tuniform float u_colorImageMixValue;\n\n\t\t\t\tvarying vec3 v_pos;\n\t\t\t\tvarying float v_lifetime;\n\t\t\t\tvarying vec2 v_uv;\n\t\t\t\t\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t//-- Add ColorCode Here --\n\n\t\t\t\t\tif(b.w > 0.1){\n\t\t\t\t\t\tgl_FragColor = mix(c, b, u_colorImageMixValue / 100.0);\n\t\t\t\t\t\tgl_FragColor.w = v_lifetime;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t"},createShaders:e=>{let n=e.settings,o=SR7.A.thecluster.shaders.particleFragShader(),r=SR7.A.thecluster.shaders.computeVelShader(),i=SR7.A.thecluster.shaders.computePosShader(),l=SR7.A.thecluster.shaders.particleVertShader();if(n.gravPoint1Toggle&&(r=r.replace("//-- Add G1 Here --","\n\t\t\t\t\tvec3 g1 = pos - vec3(u_gravPositions[0], u_gravPositions[1], u_gravPositions[2]);\n\t\t\t\t\tsumVector += normalize(g1) * length(g1) * gravCo * u_mass;\n\t\t\t\t")),n.gravPoint2Toggle&&(r=r.replace("//-- Add G2 Here --","\n\t\t\t\t\tvec3 g2 = pos - vec3(u_gravPositions[3], u_gravPositions[4], u_gravPositions[5]);\n\t\t\t\t\tsumVector += normalize(g2) * length(g2) * gravCo * u_mass2;\n\t\t\t\t")),n.gravPoint3Toggle&&(r=r.replace("//-- Add G3 Here --","\n\t\t\t\t\tvec3 g3 = pos - vec3(u_gravPositions[6], u_gravPositions[7], u_gravPositions[8]);\n\t\t\t\t\tsumVector += normalize(g3) * length(g3) * gravCo * u_mass3;\n\t\t\t\t")),r=r.replace("//-- Add G4 Here --",`\n\t\t\t\tif(u_mouseOnLayer){\n\t\t\t\t\tvec3 g4 = pos - vec3(u_mouseVector.x, u_mouseVector.y, 0.0);\n\t\t\t\t\tsumVector += normalize(g4) * length(g4) * gravCo * ${(10*n.gravFollowMouseValue).toFixed(1)};\n\t\t\t\t}\n\t\t\t`),"lifetime"==n.patternSel&&("fadeInOut"==n.lifetimeAlphaChange&&(r=r.replace("//-- Add Modified Vel Here --",`\n\t\t\t\t\t\tfloat lt = sin((u_time * ${n.lifeTimeDelay.toFixed(1)}) + textureVel.w * 6.28);\n\t\n\t\t\t\t\t\tif(lt < 0.0){\n\t\t\t\t\t\t\tvel.xyz =textureInitVCC.xyz;\n\t\t\t\t\t\t}\n\t\t\t\t\t`)),"fadeIn"==n.lifetimeAlphaChange&&(r=r.replace("//-- Add Modified Vel Here --",`\n\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + textureVel.w * 6.28;\n\t\t\t\t\t\tfloat lt = sin(x)- 0.5 * sin(2.0 * x);\n\t\n\t\t\t\t\t\tif(lt < 0.0){\n\t\t\t\t\t\t\tvel.xyz =  textureInitVCC.xyz;\n\t\t\t\t\t\t}\n\t\t\t\t\t`)),"fadeOut"==n.lifetimeAlphaChange&&(r=r.replace("//-- Add Modified Vel Here --",`\n\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + textureVel.w * 6.28;\n\t\t\t\t\t\tfloat lt = -sin(x) + 0.5 * sin(2.0 * x);\n\t\n\t\t\t\t\t\tif(lt < 0.0){\n\t\t\t\t\t\t\tvel.xyz = textureInitVCC.xyz;\n\t\t\t\t\t\t}\n\t\t\t\t\t`))),n.noiseOn&&(r=r.replace("//-- Add Noise Methods Here --","\n\t\t\t\t\tvec4 mod289(vec4 x) {\n\t\t\t\t\t\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfloat mod289(float x) {\n\t\t\t\t\t\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvec4 permute(vec4 x) {\n\t\t\t\t\t\treturn mod289(((x*34.0)+1.0)*x);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfloat permute(float x) {\n\t\t\t\t\t\treturn mod289(((x*34.0)+1.0)*x);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvec4 taylorInvSqrt(vec4 r) {\n\t\t\t\t\t\treturn 1.79284291400159 - 0.85373472095314 * r;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tfloat taylorInvSqrt(float r) {\n\t\t\t\t\t\treturn 1.79284291400159 - 0.85373472095314 * r;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvec4 grad4(float j, vec4 ip) {\n\t\t\t\t\t\tconst vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n\t\t\t\t\t\tvec4 p,s;\n\t\t\t\t\t\n\t\t\t\t\t\tp.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n\t\t\t\t\t\tp.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n\t\t\t\t\t\ts = vec4(lessThan(p, vec4(0.0)));\n\t\t\t\t\t\tp.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\t\t\t\t\t\n\t\t\t\t\t\treturn p;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t#define F4 0.309016994374947451\n\t\t\t\t\t\n\t\t\t\t\tvec4 snoise4 (vec4 v) {\n\t\t\t\t\t\tconst vec4  C = vec4( 0.138196601125011,0.276393202250021,0.414589803375032,-0.447213595499958);\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 i  = floor(v + dot(v, vec4(F4)) );\n\t\t\t\t\t\tvec4 x0 = v -   i + dot(i, C.xxxx);\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 i0;\n\t\t\t\t\t\tvec3 isX = step( x0.yzw, x0.xxx );\n\t\t\t\t\t\tvec3 isYZ = step( x0.zww, x0.yyz );\n\t\t\t\t\t\ti0.x = isX.x + isX.y + isX.z;\n\t\t\t\t\t\ti0.yzw = 1.0 - isX;\n\t\t\t\t\t\ti0.y += isYZ.x + isYZ.y;\n\t\t\t\t\t\ti0.zw += 1.0 - isYZ.xy;\n\t\t\t\t\t\ti0.z += isYZ.z;\n\t\t\t\t\t\ti0.w += 1.0 - isYZ.z;\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 i3 = clamp( i0, 0.0, 1.0 );\n\t\t\t\t\t\tvec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n\t\t\t\t\t\tvec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 x1 = x0 - i1 + C.xxxx;\n\t\t\t\t\t\tvec4 x2 = x0 - i2 + C.yyyy;\n\t\t\t\t\t\tvec4 x3 = x0 - i3 + C.zzzz;\n\t\t\t\t\t\tvec4 x4 = x0 + C.wwww;\n\t\t\t\t\t\n\t\t\t\t\t\ti = mod289(i);\n\t\t\t\t\t\tfloat j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n\t\t\t\t\t\tvec4 j1 = permute( permute( permute( permute (\n\t\t\t\t\t\t\t\ti.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n\t\t\t\t\t\t\t+ i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n\t\t\t\t\t\t\t+ i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n\t\t\t\t\t\t\t+ i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 p0 = grad4(j0,   ip);\n\t\t\t\t\t\tvec4 p1 = grad4(j1.x, ip);\n\t\t\t\t\t\tvec4 p2 = grad4(j1.y, ip);\n\t\t\t\t\t\tvec4 p3 = grad4(j1.z, ip);\n\t\t\t\t\t\tvec4 p4 = grad4(j1.w, ip);\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n\t\t\t\t\t\tp0 *= norm.x;\n\t\t\t\t\t\tp1 *= norm.y;\n\t\t\t\t\t\tp2 *= norm.z;\n\t\t\t\t\t\tp3 *= norm.w;\n\t\t\t\t\t\tp4 *= taylorInvSqrt(dot(p4,p4));\n\t\t\t\t\t\n\t\t\t\t\t\tvec3 values0 = vec3(dot(p0, x0), dot(p1, x1), dot(p2, x2)); //value of contributions from each corner at point\n\t\t\t\t\t\tvec2 values1 = vec2(dot(p3, x3), dot(p4, x4));\n\t\t\t\t\t\n\t\t\t\t\t\tvec3 m0 = max(0.5 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0); //(0.5 - x^2) where x is the distance\n\t\t\t\t\t\tvec2 m1 = max(0.5 - vec2(dot(x3,x3), dot(x4,x4)), 0.0);\n\t\t\t\t\t\n\t\t\t\t\t\tvec3 temp0 = -6.0 * m0 * m0 * values0;\n\t\t\t\t\t\tvec2 temp1 = -6.0 * m1 * m1 * values1;\n\t\t\t\t\t\n\t\t\t\t\t\tvec3 mmm0 = m0 * m0 * m0;\n\t\t\t\t\t\tvec2 mmm1 = m1 * m1 * m1;\n\t\t\t\t\t\n\t\t\t\t\t\tfloat dx = temp0[0] * x0.x + temp0[1] * x1.x + temp0[2] * x2.x + temp1[0] * x3.x + temp1[1] * x4.x + mmm0[0] * p0.x + mmm0[1] * p1.x + mmm0[2] * p2.x + mmm1[0] * p3.x + mmm1[1] * p4.x;\n\t\t\t\t\t\tfloat dy = temp0[0] * x0.y + temp0[1] * x1.y + temp0[2] * x2.y + temp1[0] * x3.y + temp1[1] * x4.y + mmm0[0] * p0.y + mmm0[1] * p1.y + mmm0[2] * p2.y + mmm1[0] * p3.y + mmm1[1] * p4.y;\n\t\t\t\t\t\tfloat dz = temp0[0] * x0.z + temp0[1] * x1.z + temp0[2] * x2.z + temp1[0] * x3.z + temp1[1] * x4.z + mmm0[0] * p0.z + mmm0[1] * p1.z + mmm0[2] * p2.z + mmm1[0] * p3.z + mmm1[1] * p4.z;\n\t\t\t\t\t\tfloat dw = temp0[0] * x0.w + temp0[1] * x1.w + temp0[2] * x2.w + temp1[0] * x3.w + temp1[1] * x4.w + mmm0[0] * p0.w + mmm0[1] * p1.w + mmm0[2] * p2.w + mmm1[0] * p3.w + mmm1[1] * p4.w;\n\t\t\t\t\t\n\t\t\t\t\t\treturn vec4(dx, dy, dz, dw) * 49.0;\n\t\t\t\t\t}\n\t\t\t\t\tvec3 curl( in vec3 p, in float noiseTime, in float persistence ) {\n\t\t\t\t\t\n\t\t\t\t\t\tvec4 xNoisePotentialDerivatives = vec4(0.0);\n\t\t\t\t\t\tvec4 yNoisePotentialDerivatives = vec4(0.0);\n\t\t\t\t\t\tvec4 zNoisePotentialDerivatives = vec4(0.0);\n\t\t\t\t\t\n\t\t\t\t\t\tfor (int i = 0; i < 3; ++i) {\n\t\t\t\t\t\n\t\t\t\t\t\t\tfloat twoPowI = pow(2.0, float(i));\n\t\t\t\t\t\t\tfloat scale = 0.5 * twoPowI * pow(persistence, float(i));\n\t\t\t\t\t\n\t\t\t\t\t\t\txNoisePotentialDerivatives += snoise4(vec4(p * twoPowI, noiseTime)) * scale;\n\t\t\t\t\t\t\tyNoisePotentialDerivatives += snoise4(vec4((p + vec3(123.4, 129845.6, -1239.1)) * twoPowI, noiseTime)) * scale;\n\t\t\t\t\t\t\tzNoisePotentialDerivatives += snoise4(vec4((p + vec3(-9519.0, 9051.0, -123.0)) * twoPowI, noiseTime)) * scale;\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\treturn vec3(\n\t\t\t\t\t\t\tzNoisePotentialDerivatives[1] - yNoisePotentialDerivatives[2],\n\t\t\t\t\t\t\txNoisePotentialDerivatives[2] - zNoisePotentialDerivatives[0],\n\t\t\t\t\t\t\tyNoisePotentialDerivatives[0] - xNoisePotentialDerivatives[1]\n\t\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t"),r=r.replace("//-- Add Noise Here --","\n\t\t\t\t\tvel += normalize(curl(pos * 0.02, u_time, 0.01)) * (u_noiseAmount / 4.0);\n\t\t\t\t")),n.lifeTimeGradient)if(n.isGradient){var a=n.RGBAColor[n.RGBAColor.length-5]/255,c=n.RGBAColor[n.RGBAColor.length-4]/255,s=n.RGBAColor[n.RGBAColor.length-3]/255,u=n.RGBAColor[n.RGBAColor.length-2],m=1;n.RGBAColor.length%5==0&&(m=0),o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\tconst int co1 = ${Math.round(a)};\n\t\t\t\t\t\tconst int co2 = ${Math.round(c)};\n\t\t\t\t\t\tconst int co3 = ${Math.round(s)};\n\t\t\t\t\t\tconst int co4 = ${Math.round(u)};\n\t\n\t\t\t\t\t\tvec4 c = vec4(co1, co2, co3, co4);\n\t\t\t\t\t\tconst int convert_i = ${(n.RGBAColor.length-m)/5};\n\t\t\t\t\t\tconst int cancelGardientAngle = ${m};\n\t\n\t\t\t\t\t\tfor(int i=0; i<convert_i; i++){\n\t\t\t\t\t\t\tif(u_colorArray[i*5+4+cancelGardientAngle]/100.0 <= v_lifetime && v_lifetime <= u_colorArray[i*5+9+cancelGardientAngle]/100.0){\n\t\t\t\t\t\t\t\tc.x = mix(u_colorArray[i*5+0+${m}]/255.0, u_colorArray[i*5+5+${m}]/255.0, smoothstep(u_colorArray[i*5+4+${m}] / 100.0, u_colorArray[i*5+9+${m}] / 100.0, v_lifetime));\n\t\t\t\t\t\t\t\tc.y = mix(u_colorArray[i*5+1+${m}]/255.0, u_colorArray[i*5+6+${m}]/255.0, smoothstep(u_colorArray[i*5+4+${m}] / 100.0, u_colorArray[i*5+9+${m}] / 100.0, v_lifetime));\n\t\t\t\t\t\t\t\tc.z = mix(u_colorArray[i*5+2+${m}]/255.0, u_colorArray[i*5+7+${m}]/255.0, smoothstep(u_colorArray[i*5+4+${m}] / 100.0, u_colorArray[i*5+9+${m}] / 100.0, v_lifetime));\n\t\t\t\t\t\t\t\tc.w = 1.0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t`)}else o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\tvec4 c = vec4(${n.RGBAColor[0]/255}, ${n.RGBAColor[1]/255}, ${n.RGBAColor[2]/255}, ${n.RGBAColor[3]});\n\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t`);else if(n.isGradient||n.isRadGradient){let r=SR7.A.thecluster.calcSizeAt0Plane(e);var v=(Math.round(10*r.x)/10).toFixed(1).toString(),x=(Math.round(10*r.y)/10).toFixed(1).toString(),p=t(v/2);v=t(v),x=t(x);a=n.RGBAColor[n.RGBAColor.length-5]/255,c=n.RGBAColor[n.RGBAColor.length-4]/255,s=n.RGBAColor[n.RGBAColor.length-3]/255,u=n.RGBAColor[n.RGBAColor.length-2];if(n.isRadGradient)o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\t\tvec3 posVal = v_pos;\n\t\t\t\t\t\t\tfloat length = length(posVal);\n\t\t\t\t\t\t\tfloat sizeAt0X_recalc = ${p};\n\t\t\t\t\t\t\tfloat l = resize(length, sizeAt0X_recalc);\n\t\t\n\t\t\t\t\t\t\tvec4 c = vec4(${a.toFixed(2)}, ${c.toFixed(2)}, ${s.toFixed(2)}, ${u.toFixed(2)});\n\t\t\t\t\t\t\tconst int convert_i = ${n.RGBAColor.length/5};\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor(int i=0; i<convert_i; i++){\n\t\t\t\t\t\t\t\tif(u_colorArray[i*5+4]/100.0 <= l && l <= u_colorArray[i*5+9]/100.0){\n\t\t\t\t\t\t\t\t\tc.x = mix(u_colorArray[i*5+0]/255.0, u_colorArray[i*5+5]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\tc.y = mix(u_colorArray[i*5+1]/255.0, u_colorArray[i*5+6]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\tc.z = mix(u_colorArray[i*5+2]/255.0, u_colorArray[i*5+7]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\tc.w = 1.0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t\t`);else if(n.RGBAColor.length%5==0)o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\t\t\tvec3 posVal = v_pos;\n\t\t\t\t\t\t\t\tfloat localH = ${x};\n\t\t\t\t\t\t\t\tfloat length = posVal.y - localH/2.0;\n\t\t\t\t\t\t\t\tfloat sizeAt0Y_recalc = ${x};\n\t\t\t\t\t\t\t\tfloat l = resize(length, sizeAt0Y_recalc);\n\t\t\n\t\t\t\t\t\t\t\tvec4 c = vec4(${a.toFixed(2)}, ${c.toFixed(2)}, ${s.toFixed(2)}, ${u.toFixed(2)});\n\t\t\t\t\t\t\t\tconst int convert_i = ${n.RGBAColor.length/5};\n\t\n\t\t\t\t\t\t\t\tfor(int i=0; i<convert_i; i++){\n\t\t\t\t\t\t\t\t\tif(u_colorArray[i*5+4]/100.0 <= l && l <= u_colorArray[i*5+9]/100.0){\n\t\t\t\t\t\t\t\t\t\tc.x = mix(u_colorArray[i*5+0]/255.0, u_colorArray[i*5+5]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.y = mix(u_colorArray[i*5+1]/255.0, u_colorArray[i*5+6]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.z = mix(u_colorArray[i*5+2]/255.0, u_colorArray[i*5+7]/255.0, smoothstep(u_colorArray[i*5+4] / 100.0, u_colorArray[i*5+9] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.w = 1.0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t\t\t`);else{var d=p,f="posVal.x";n.RGBAColor[0]<225&&n.RGBAColor[0]>=135&&(f="posVal.y - localH/2.0",d=x),n.RGBAColor[0]<135&&n.RGBAColor[0]>=45&&(f="posVal.x + localW/2.0",d=v),n.RGBAColor[0]<45&&n.RGBAColor[0]>=0&&(f="posVal.y + localH/2.0",d=x),n.RGBAColor[0]<0&&n.RGBAColor[0]>=315&&(f="posVal.y + localH/2.0",d=x),n.RGBAColor[0]<315&&n.RGBAColor[0]>=225&&(f="posVal.x - localW/2.0",d=v),o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\t\t\tvec3 posVal = v_pos;\n\t\t\t\t\t\t\t\tfloat localW = ${v};\n\t\t\t\t\t\t\t\tfloat localH = ${x};\n\t\t\t\t\t\t\t\tfloat length = ${f};\n\t\t\t\t\t\t\t\tfloat selWH_recalc = ${d};\n\t\t\t\t\t\t\t\tfloat l = resize(length, selWH_recalc);\n\t\t\n\t\t\t\t\t\t\t\tvec4 c = vec4(${a.toFixed(2)}, ${c.toFixed(2)}, ${s.toFixed(2)}, ${u.toFixed(2)});\n\t\t\t\t\t\t\t\tconst int convert_i = ${(n.RGBAColor.length-1)/5};\n\t\n\t\t\t\t\t\t\t\tfor(int i=0; i<convert_i; i++){\n\t\t\t\t\t\t\t\t\tif(u_colorArray[i*5+5]/100.0 <= l && l <= u_colorArray[i*5+10]/100.0){\n\t\t\t\t\t\t\t\t\t\tc.x = mix(u_colorArray[i*5+1]/255.0, u_colorArray[i*5+6]/255.0, smoothstep(u_colorArray[i*5+5] / 100.0, u_colorArray[i*5+10] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.y = mix(u_colorArray[i*5+2]/255.0, u_colorArray[i*5+7]/255.0, smoothstep(u_colorArray[i*5+5] / 100.0, u_colorArray[i*5+10] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.z = mix(u_colorArray[i*5+3]/255.0, u_colorArray[i*5+8]/255.0, smoothstep(u_colorArray[i*5+5] / 100.0, u_colorArray[i*5+10] / 100.0, l));\n\t\t\t\t\t\t\t\t\t\tc.w = 1.0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t\t\t`)}}else o=o.replace("//-- Add ColorCode Here --",`\n\t\t\t\t\t\tvec4 c = vec4(${n.RGBAColor[0]/255}, ${n.RGBAColor[1]/255}, ${n.RGBAColor[2]/255}, ${n.RGBAColor[3]});\n\t\t\t\t\t\tvec4 b = texture2D( u_particleTexture, gl_PointCoord );\n\t\t\t\t\t`);switch(n.patternSel){case"continuous":i=n.periodicSpawn?i.replace("//-- Add ParticleMove Here --","\n\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed * (textureVel.w + 0.5);\n\t\t\t\t\t\t"):i.replace("//-- Add ParticleMove Here --","\n\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed;\n\t\t\t\t\t\t");break;case"sinus":i=n.periodicSpawn?i.replace("//-- Add ParticleMove Here --","\n\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed * sin(u_time + textureVel.w);\n\t\t\t\t\t\t"):i.replace("//-- Add ParticleMove Here --","\n\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed * sin(u_time);\n\t\t\t\t\t\t");break;case"lifetime":"fadeInOut"==n.lifetimeAlphaChange&&(i=i.replace("//-- Add ParticleMove Here --",`\n\t\t\t\t\t\t\tfloat lifetime = sin((u_time * ${n.lifeTimeDelay.toFixed(1)}) + textureVel.w * 6.28);\n\t\n\t\t\t\t\t\t\tif(lifetime > 0.0){\n\t\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tpos.xyz = textureInitPos.xyz;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`)),"fadeIn"==n.lifetimeAlphaChange&&(i=i.replace("//-- Add ParticleMove Here --",`\n\t\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + textureVel.w * 6.28;\n\t\t\t\t\t\t\tfloat lifetime = sin(x)- 0.5 * sin(2.0 * x);\n\t\n\t\t\t\t\t\t\tif(lifetime > 0.0){\n\t\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tpos.xyz = textureInitPos.xyz;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`)),"fadeOut"==n.lifetimeAlphaChange&&(i=i.replace("//-- Add ParticleMove Here --",`\n\t\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + textureVel.w * 6.28;\n\t\t\t\t\t\t\tfloat lifetime = -sin(x) + 0.5 * sin(2.0 * x);\n\t\n\t\t\t\t\t\t\tif(lifetime > 0.0){\n\t\t\t\t\t\t\t\tvel = normalize(vel) * clamp(length(vel), minCo, maxCo);\n\t\t\t\t\t\t\t\tpos += vel * 0.30 * u_speed;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tpos.xyz = textureInitPos.xyz;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`))}"lifetime"==n.patternSel?("fadeInOut"==n.lifetimeAlphaChange&&(l=l.replace("//-- Add v_lifetime Here --",`\n\t\t\t\t\t\tv_lifetime = sin((u_time * ${n.lifeTimeDelay.toFixed(1)}) + vel.w * 6.28);\n\t\t\t\t\t`)),"fadeIn"==n.lifetimeAlphaChange&&(l=l.replace("//-- Add v_lifetime Here --",`\n\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + vel.w * 6.28;\n\t\t\t\t\t\tv_lifetime = sin(x)- 0.5 * sin(2.0 * x);\n\t\t\t\t\t`)),"fadeOut"==n.lifetimeAlphaChange&&(l=l.replace("//-- Add v_lifetime Here --",`\n\t\t\t\t\t\tfloat x = u_time * ${n.lifeTimeDelay.toFixed(1)} + vel.w * 6.28;\n\t\t\t\t\t\tv_lifetime = -sin(x) + 0.5 * sin(2.0 * x);\n\t\t\t\t\t`))):l=l.replace("//-- Add v_lifetime Here --","\n\t\t\t\t\tv_lifetime = vel.w;\n\t\t\t\t"),e.particleFragShader=o,e.computeVelShader=r,e.computePosShader=i,e.particleVertShader=l,e.computeValueShader=SR7.A.thecluster.shaders.computeValueShader(),e.computeInitPosShader=SR7.A.thecluster.shaders.computeInitPosShader(),e.computeInitVCCShader=SR7.A.thecluster.shaders.computeInitVCCShader()}},_tpt.R??={},_tpt.R.tc_Shaders=_tpt.extend?_tpt.extend(_tpt.R.tc_Shaders,{status:2,version:"1.0"}):{status:2,version:"1.0"},window.dispatchEvent(new CustomEvent("SR7TheClusterShadersLoaded")))}();
!function(){"use strict";window.SR7??={},window._tpt??={},SR7.A??={},SR7.F??={},SR7.D??={},void 0===(SR7.A.thecluster?.tools??void 0)&&(SR7.A.thecluster={...SR7.A.thecluster,tools:{particleOnCanvas:(t,e,s,o)=>{const i=Math.max(t,e)+4;s.width=t,s.height=e,o.canvas.width=o.canvas.height=i,["webkitImageSmoothingEnabled","msImageSmoothingEnabled","imageSmoothingEnabled"].forEach((t=>o[t]=!1)),o.drawImage(s,(i-t)/2+2,(i-e)/2+2,t-4,e-4)}},gravPoints:{set:t=>{SR7.A.thecluster.gravPoints.add(t),SR7.A.thecluster.gravPoints.fill(t.settings),SR7.A.thecluster.gravPoints.selectable(t.settings),SR7.A.thecluster.gravPoints.visibility(t.settings)},add:t=>{let e=t.settings;for(let t=0;t<9;t++)e.gravPositions[t]=0;for(let a=0;a<3;a++){var s=new THREE.SphereGeometry(.4,7,7),o=new THREE.MeshBasicMaterial({color:3274158,transparent:!0}),i=new THREE.Mesh(s,o);e.gravPointArray[a]=i,t.scene.add(e.gravPointArray[a]),e.gravPositions[3*a+0]=0,e.gravPositions[3*a+1]=0,t.settings.gravPositions[3*a+2]=0,i.userData.draggable=!0,i.userData.name=a+1}},fill:t=>{t.g1X=t.gravPositions[0],t.g1Y=t.gravPositions[1],t.g1Z=t.gravPositions[2],t.g2X=t.gravPositions[3],t.g2Y=t.gravPositions[4],t.g2Z=t.gravPositions[5],t.g3X=t.gravPositions[6],t.g3Y=t.gravPositions[7],t.g3Z=t.gravPositions[8]},selectable:t=>{SR7.A.thecluster.gravPoints.points=[3];for(let e=1;e<4;e++){let s=SR7.A.thecluster.gravPoints.points[e-1]??=document.getElementById("wpsaddon_gravP"+e+"MoveSel");null!==s&&null==s&&(s.style.cssText=t["gravPoint"+e+"Toggle"]?"opacity: 100%; pointer-events: auto;":"opacity: 50%; pointer-events: none;")}},visibility:t=>{for(let e=1;e<4;e++)t.gravPointArray[e-1].visible=t.gravPointsVisible&&""+t["gravPoint"+e+"Toggle"]=="true"}}},_tpt.R??={},_tpt.R.tc_Tools=_tpt.extend?_tpt.extend(_tpt.R.tc_Tools,{status:2,version:"1.0"}):{status:2,version:"1.0"},window.dispatchEvent(new CustomEvent("SR7TheClusterToolsLoaded")))}();