{"version":3,"file":"static/js/4510.b93ac149.chunk.js","mappings":"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","sources":["../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/BrushClip.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/BrushOverlay.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrushFill.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLBrushPieChart.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrushLabel.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrushLine.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrushText.js","../node_modules/@arcgis/core/views/2d/engine/brushes.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLBrushDotDensity.js","../node_modules/@arcgis/core/views/2d/engine/webgl/VertexStream.js","../node_modules/@arcgis/core/views/2d/engine/webgl/Mesh2D.js","../node_modules/@arcgis/core/views/2d/engine/webgl/ClippingInfo.js","../node_modules/@arcgis/core/views/2d/engine/webgl/WGLContainer.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/BrushBitmap.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLBrushHeatmap.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLBrushInfo.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLBrushStencil.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrush.js","../node_modules/@arcgis/core/views/2d/engine/webgl/brushes/WGLGeometryBrushMarker.js","../node_modules/@arcgis/core/views/2d/engine/webgl/effects/Effect.js","../node_modules/@arcgis/core/views/2d/engine/webgl/shaders/BackgroundPrograms.js","../node_modules/@arcgis/core/views/2d/engine/webgl/shaders/TileInfoPrograms.js","../node_modules/@arcgis/core/views/2d/engine/webgl/shaders/sources/shaderRepository.js","../node_modules/@arcgis/core/views/2d/engine/webgl/shaders/sources/resolver.js","../node_modules/@arcgis/core/views/webgl/ProgramTemplate.js","../node_modules/@arcgis/core/views/webgl/heatmapTextureUtils.js"],"sourcesContent":["/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isNone as r,isSome as e}from\"../../../../../core/maybe.js\";import{f as t}from\"../../../../../chunks/vec4f32.js\";import{createProgramDescriptor as s}from\"../Utils.js\";import o from\"./WGLBrush.js\";import{background as a}from\"../shaders/BackgroundPrograms.js\";import{StencilOperation as i,CompareFunction as m,PrimitiveType as n,DataType as p}from\"../../../../webgl/enums.js\";import{createProgram as l}from\"../../../../webgl/ProgramTemplate.js\";const c=()=>s(\"clip\",{geometry:[{location:0,name:\"a_pos\",count:2,type:p.SHORT}]});class d extends o{constructor(){super(...arguments),this._color=t(0,1,0,1)}dispose(){this._program&&this._program.dispose()}prepareState({context:r}){r.setStencilTestEnabled(!0),r.setBlendingEnabled(!1),r.setFaceCullingEnabled(!1),r.setColorMask(!1,!1,!1,!1),r.setStencilOp(i.KEEP,i.KEEP,i.REPLACE),r.setStencilWriteMask(255),r.setStencilFunction(m.ALWAYS,0,255)}draw(t,s){const{context:o,state:i,requestRender:m,allowDelayedRender:d}=t,f=c(),g=s.getVAO(o,i,f.attributes,f.bufferLayouts);r(g.indexBuffer)||(this._program||(this._program=l(o,a)),d&&e(m)&&!this._program.compiled?m():(o.useProgram(this._program),this._program.setUniform2fv(\"u_coord_range\",[1,1]),this._program.setUniform4fv(\"u_color\",this._color),this._program.setUniformMatrix3fv(\"u_dvsMat3\",i.displayMat3),o.bindVAO(g),o.drawElements(n.TRIANGLES,g.indexBuffer.size,p.UNSIGNED_INT,0),o.bindVAO()))}}export{d as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as e}from\"../../../../../core/maybe.js\";import{TEXTURE_BINDING_BITMAP as t}from\"../definitions.js\";import{createProgramDescriptor as r}from\"../Utils.js\";import s from\"./WGLBrush.js\";import{BlendFactor as o,CompareFunction as n,PrimitiveType as a,DataType as i}from\"../../../../webgl/enums.js\";const c=()=>r(\"overlay\",{geometry:[{location:0,name:\"a_pos\",count:2,type:i.FLOAT}],tex:[{location:1,name:\"a_uv\",count:2,type:i.UNSIGNED_SHORT}]});class m extends s{constructor(){super(...arguments),this._desc={vsPath:\"overlay/overlay\",fsPath:\"overlay/overlay\",attributes:new Map([[\"a_pos\",0],[\"a_uv\",1]])}}dispose(){}prepareState({context:e}){e.setBlendingEnabled(!0),e.setColorMask(!0,!0,!0,!0),e.setBlendFunctionSeparate(o.ONE,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA),e.setStencilWriteMask(0),e.setStencilTestEnabled(!0),e.setStencilFunction(n.GREATER,255,255)}draw(r,s){const{context:o,painter:n,requestRender:i,allowDelayedRender:m}=r;if(!s.isReady)return;const{computedOpacity:u,dvsMat3:d,isWrapAround:l,perspectiveTransform:p,texture:f}=s;r.timeline.begin(this.name);const _=n.materialManager.getProgram(this._desc);if(m&&e(i)&&!_.compiled)return void i();const v=c(),y=s.getVAO(o,v.bufferLayouts,v.attributes);if(!y)return;o.bindVAO(y),o.useProgram(_),o.bindTexture(f,t),_.setUniformMatrix3fv(\"u_dvsMat3\",d),_.setUniform1i(\"u_texture\",t),_.setUniform1f(\"u_opacity\",u),_.setUniform2fv(\"u_perspective\",p);const A=l?10:4;o.drawArrays(a.TRIANGLE_STRIP,0,A),o.bindVAO(),r.timeline.end(this.name)}}export{m as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as e,unwrapOr as t}from\"../../../../../core/maybe.js\";import{WGLGeometryType as o,WGLSymbologyType as r}from\"../enums.js\";import{createProgramDescriptor as a}from\"../Utils.js\";import i from\"./WGLGeometryBrush.js\";import{FillMaterialKey as n}from\"../materialKey/MaterialKey.js\";import{getTechniqueFromMaterialKey as s}from\"../techniques/utils.js\";import{PrimitiveType as m,DataType as l}from\"../../../../webgl/enums.js\";function u(e){const t={geometry:[{location:0,name:\"a_pos\",count:2,type:l.SHORT},{location:1,name:\"a_id\",count:3,type:l.UNSIGNED_BYTE},{location:2,name:\"a_bitset\",count:1,type:l.UNSIGNED_BYTE},{location:3,name:\"a_color\",count:4,type:l.UNSIGNED_BYTE,normalized:!0},{location:4,name:\"a_aux1\",count:4,type:l.UNSIGNED_SHORT},{location:5,name:\"a_aux2\",count:4,type:l.SHORT},{location:6,name:\"a_aux3\",count:4,type:l.UNSIGNED_BYTE},{location:7,name:\"a_zoomRange\",count:2,type:l.UNSIGNED_SHORT}]};switch(e.symbologyType){case r.SIMPLE:case r.OUTLINE_FILL_SIMPLE:t.geometry.splice(7,1),t.geometry.splice(4,1)}return{shader:\"materials/fill\",vertexLayout:t}}class c extends i{dispose(){}getGeometryType(){return o.FILL}supportsSymbology(e){return e!==r.DOT_DENSITY}drawGeometry(o,r,i,l){const{context:c,painter:y,rendererInfo:p,requiredLevel:_,passOptions:d,requestRender:f,allowDelayedRender:E}=o,S=n.load(i.materialKey),g=s(S.data),N=e(d)&&\"hittest\"===d.type,T=y.materialManager,{shader:I,vertexLayout:U,hittestAttributes:x}=t(g.programSpec,u(S));let L=m.TRIANGLES,h=a(S.data,U);N&&(h=this._getTriangleDesc(i.materialKey,h,x),L=m.POINTS);const{attributes:G,bufferLayouts:O}=h,b=T.getMaterialProgram(o,S,I,G,l);if(E&&e(f)&&!b.compiled)return void f();if(c.useProgram(b),this._setSharedUniforms(b,o,r),b.setUniform2f(\"u_tileOffset\",512*r.key.col,512*r.key.row),S.textureBinding){y.textureManager.bindTextures(c,b,S);const e=1/2**(_-r.key.level);b.setUniform1f(\"u_zoomFactor\",e)}const D=1/o.pixelRatio;b.setUniform1f(\"u_blur\",D),b.setUniform1f(\"u_antialiasing\",D),this._setSizeVVUniforms(S,b,p,r),this._setColorAndOpacityVVUniforms(S,b,p);const R=i.target.getVAO(c,O,G,N);let w=i.indexCount,j=i.indexFrom*Uint32Array.BYTES_PER_ELEMENT;N&&(w/=3,j/=3),c.bindVAO(R),this._drawFills(o,r,b,L,w,j)}_drawFills(e,t,o,r,a,i){e.context.drawElements(r,a,l.UNSIGNED_INT,i)}}export{c as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{WGLSymbologyType as o}from\"../enums.js\";import r from\"./WGLGeometryBrushMarker.js\";import{assertRendererSchema as e}from\"../techniques/utils.js\";import{DataType as t}from\"../../../../webgl/enums.js\";class s extends r{supportsSymbology(r){return r===o.PIE_CHART}_drawMarkers(o,r,s,n,l,f,u){const{context:i}=o,{rendererInfo:m}=o,{rendererSchema:a}=m;e(a,\"pie-chart\"),s.setUniform4fv(\"u_colors\",a.colors),s.setUniform4fv(\"u_defaultColor\",a.defaultColor),s.setUniform4fv(\"u_othersColor\",a.othersColor),s.setUniform4fv(\"u_outlineColor\",a.outlineColor),s.setUniform1f(\"u_donutRatio\",a.holePercentage),s.setUniform1f(\"u_sectorThreshold\",a.sectorThreshold),s.setUniform1f(\"u_outlineWidth\",a.outlineWidth),i.drawElements(n,l,t.UNSIGNED_INT,f)}}export{s as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as e}from\"../../../../../core/maybe.js\";import{WGLGeometryType as t}from\"../enums.js\";import{createProgramDescriptor as o}from\"../Utils.js\";import a from\"./WGLGeometryBrush.js\";import{LabelMaterialKey as n}from\"../materialKey/MaterialKey.js\";import{CompareFunction as r,PrimitiveType as s,DataType as i}from\"../../../../webgl/enums.js\";const m=e=>o(e.data,{geometry:[{location:0,name:\"a_pos\",count:2,type:i.SHORT},{location:1,name:\"a_id\",count:4,type:i.UNSIGNED_BYTE},{location:2,name:\"a_color\",count:4,type:i.UNSIGNED_BYTE,normalized:!0},{location:3,name:\"a_haloColor\",count:4,type:i.UNSIGNED_BYTE,normalized:!0},{location:4,name:\"a_texAndSize\",count:4,type:i.UNSIGNED_BYTE},{location:5,name:\"a_refSymbolAndPlacementOffset\",count:4,type:i.UNSIGNED_BYTE},{location:6,name:\"a_glyphData\",count:4,type:i.UNSIGNED_BYTE},{location:7,name:\"a_vertexOffset\",count:2,type:i.SHORT},{location:8,name:\"a_texCoords\",count:2,type:i.UNSIGNED_SHORT}]});class l extends a{dispose(){}getGeometryType(){return t.LABEL}supportsSymbology(e){return!0}drawGeometry(t,o,a,l){const{context:u,painter:f,state:d,rendererInfo:c,requestRender:_,allowDelayedRender:p}=t,y=n.load(a.materialKey),E=y.mapAligned?1:0;if(!E&&Math.abs(o.key.level-Math.round(100*t.displayLevel)/100)>=1)return;const{bufferLayouts:N,attributes:U}=m(y),S=f.materialManager.getMaterialProgram(t,y,\"materials/label\",U,l);if(p&&e(_)&&!S.compiled)return void _();t.context.setStencilFunction(r.EQUAL,0,255),u.useProgram(S),this._setSharedUniforms(S,t,o),f.textureManager.bindTextures(u,S,y);const T=1===E?d.displayViewMat3:d.displayMat3;this._setSizeVVUniforms(y,S,c,o),S.setUniform1f(\"u_mapRotation\",Math.floor(d.rotation/360*254)),S.setUniform1f(\"u_mapAligned\",E),S.setUniformMatrix3fv(\"u_displayMat3\",T),S.setUniform1f(\"u_opacity\",1),S.setUniform2fv(\"u_screenSize\",t.state.size);const g=a.target.getVAO(u,N,U),G=a.indexFrom*Uint32Array.BYTES_PER_ELEMENT;u.bindVAO(g),S.setUniform1f(\"u_isHaloPass\",0),S.setUniform1f(\"u_isBackgroundPass\",1),u.drawElements(s.TRIANGLES,a.indexCount,i.UNSIGNED_INT,G),S.setUniform1f(\"u_isHaloPass\",1),S.setUniform1f(\"u_isBackgroundPass\",0),u.drawElements(s.TRIANGLES,a.indexCount,i.UNSIGNED_INT,G),S.setUniform1f(\"u_isHaloPass\",0),S.setUniform1f(\"u_isBackgroundPass\",0),u.drawElements(s.TRIANGLES,a.indexCount,i.UNSIGNED_INT,G),u.setStencilTestEnabled(!0),u.setBlendingEnabled(!0)}}export{l as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as e}from\"../../../../../core/maybe.js\";import{WGLGeometryType as t}from\"../enums.js\";import{createProgramDescriptor as o}from\"../Utils.js\";import a from\"./WGLGeometryBrush.js\";import{LineMaterialKey as n}from\"../materialKey/MaterialKey.js\";import{PrimitiveType as r,DataType as i}from\"../../../../webgl/enums.js\";const s=e=>o(e.data,{geometry:[{location:0,name:\"a_pos\",count:2,type:i.SHORT},{location:1,name:\"a_id\",count:4,type:i.UNSIGNED_BYTE},{location:2,name:\"a_color\",count:4,type:i.UNSIGNED_BYTE,normalized:!0},{location:3,name:\"a_offsetAndNormal\",count:4,type:i.BYTE},{location:4,name:\"a_accumulatedDistanceAndHalfWidth\",count:2,type:i.UNSIGNED_SHORT},{location:5,name:\"a_tlbr\",count:4,type:i.UNSIGNED_SHORT},{location:6,name:\"a_segmentDirection\",count:4,type:i.BYTE},{location:7,name:\"a_aux\",count:2,type:i.UNSIGNED_SHORT},{location:8,name:\"a_zoomRange\",count:2,type:i.UNSIGNED_SHORT}]});class m extends a{dispose(){}getGeometryType(){return t.LINE}supportsSymbology(e){return!0}drawGeometry(t,o,a,m){const{context:l,painter:c,rendererInfo:u,displayLevel:p,passOptions:d,requestRender:y,allowDelayedRender:_}=t,f=n.load(a.materialKey),E=e(d)&&\"hittest\"===d.type;let N=s(f),g=r.TRIANGLES;E&&(N=this._getTriangleDesc(a.materialKey,N),g=r.POINTS);const{attributes:S,bufferLayouts:T}=N,U=c.materialManager.getMaterialProgram(t,f,\"materials/line\",S,m);if(_&&e(y)&&!U.compiled)return void y();const G=1/t.pixelRatio,I=0;l.useProgram(U),this._setSharedUniforms(U,t,o),f.textureBinding&&c.textureManager.bindTextures(l,U,f);const D=2**(p-o.key.level);U.setUniform1f(\"u_zoomFactor\",D),U.setUniform1f(\"u_blur\",I+G),U.setUniform1f(\"u_antialiasing\",G),this._setSizeVVUniforms(f,U,u,o),this._setColorAndOpacityVVUniforms(f,U,u),l.setFaceCullingEnabled(!1);const R=a.target.getVAO(l,T,S,E);let b=a.indexCount,x=a.indexFrom*Uint32Array.BYTES_PER_ELEMENT;E&&(b/=3,x/=3),l.bindVAO(R),l.drawElements(g,b,i.UNSIGNED_INT,x)}}export{m as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as t}from\"../../../../../core/maybe.js\";import{WGLGeometryType as e}from\"../enums.js\";import{createProgramDescriptor as o}from\"../Utils.js\";import a from\"./WGLGeometryBrush.js\";import{TextMaterialKey as r}from\"../materialKey/MaterialKey.js\";import{PrimitiveType as s,DataType as n}from\"../../../../webgl/enums.js\";const i=t=>o(t.data,{geometry:[{location:0,name:\"a_pos\",count:2,type:n.SHORT},{location:1,name:\"a_id\",count:4,type:n.UNSIGNED_BYTE},{location:2,name:\"a_color\",count:4,type:n.UNSIGNED_BYTE,normalized:!0},{location:3,name:\"a_haloColor\",count:4,type:n.UNSIGNED_BYTE,normalized:!0},{location:4,name:\"a_texFontSize\",count:4,type:n.UNSIGNED_BYTE},{location:5,name:\"a_aux\",count:4,type:n.BYTE},{location:6,name:\"a_zoomRange\",count:2,type:n.UNSIGNED_SHORT},{location:7,name:\"a_vertexOffset\",count:2,type:n.SHORT},{location:8,name:\"a_texCoords\",count:2,type:n.UNSIGNED_SHORT}]});class m extends a{dispose(){}getGeometryType(){return e.TEXT}supportsSymbology(t){return!0}drawGeometry(e,o,a,m){const{context:l,painter:u,rendererInfo:d,state:f,passOptions:_,requestRender:p,allowDelayedRender:c}=e,y=r.load(a.materialKey),E=t(_)&&\"hittest\"===_.type,{bufferLayouts:N,attributes:U}=i(y),S=u.materialManager.getMaterialProgram(e,y,\"materials/text\",U,m);if(c&&t(p)&&!S.compiled)return void p();l.useProgram(S);let T=s.TRIANGLES;E&&(T=s.POINTS),this._setSharedUniforms(S,e,o),u.textureManager.bindTextures(l,S,y),S.setUniformMatrix3fv(\"u_displayMat3\",f.displayMat3),S.setUniformMatrix3fv(\"u_displayViewMat3\",f.displayViewMat3),this._setSizeVVUniforms(y,S,d,o),this._setColorAndOpacityVVUniforms(y,S,d),this._setRotationVVUniforms(y,S,d);const x=a.target.getVAO(l,N,U),I=a.indexFrom*Uint32Array.BYTES_PER_ELEMENT;S.setUniform1f(\"u_isHaloPass\",0),S.setUniform1f(\"u_isBackgroundPass\",1),l.bindVAO(x),l.drawElements(T,a.indexCount,n.UNSIGNED_INT,I),S.setUniform1f(\"u_isHaloPass\",1),S.setUniform1f(\"u_isBackgroundPass\",0),l.drawElements(s.TRIANGLES,a.indexCount,n.UNSIGNED_INT,I),S.setUniform1f(\"u_isHaloPass\",0),S.setUniform1f(\"u_isBackgroundPass\",0),l.drawElements(T,a.indexCount,n.UNSIGNED_INT,I)}}export{m as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport r from\"./webgl/brushes/BrushBitmap.js\";import s from\"./webgl/brushes/BrushClip.js\";import e from\"./webgl/brushes/BrushOverlay.js\";import o from\"./webgl/brushes/WGLBrushDotDensity.js\";import m from\"./webgl/brushes/WGLBrushHeatmap.js\";import l from\"./webgl/brushes/WGLBrushInfo.js\";import t from\"./webgl/brushes/WGLBrushPieChart.js\";import b from\"./webgl/brushes/WGLBrushStencil.js\";import{WGLBrushVTLBackground as h}from\"./webgl/brushes/WGLBrushVTLBackground.js\";import{WGLBrushVTLCircle as i}from\"./webgl/brushes/WGLBrushVTLCircle.js\";import{WGLBrushVTLFill as u}from\"./webgl/brushes/WGLBrushVTLFill.js\";import{WGLBrushVTLLine as p}from\"./webgl/brushes/WGLBrushVTLLine.js\";import{WGLBrushVTLSymbol as L}from\"./webgl/brushes/WGLBrushVTLSymbol.js\";import f from\"./webgl/brushes/WGLGeometryBrushFill.js\";import B from\"./webgl/brushes/WGLGeometryBrushLabel.js\";import g from\"./webgl/brushes/WGLGeometryBrushLine.js\";import G from\"./webgl/brushes/WGLGeometryBrushMarker.js\";import j from\"./webgl/brushes/WGLGeometryBrushText.js\";const w={marker:G,line:g,fill:f,text:j,label:B,clip:s,stencil:b,bitmap:r,overlay:e,tileInfo:l,vtlBackground:h,vtlFill:u,vtlLine:p,vtlCircle:i,vtlSymbol:L,dotDensity:o,heatmap:m,pieChart:t};export{w as brushes};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{disposeMaybe as e,isSome as t,isNone as o}from\"../../../../../core/maybe.js\";import r from\"../../../../../core/RandomLCG.js\";import{TEXTURE_BINDING_RENDERER_0 as s,TEXTURE_BINDING_RENDERER_1 as i,TILE_SIZE as n}from\"../definitions.js\";import{WGLGeometryType as d,WGLSymbologyType as a}from\"../enums.js\";import l from\"./WGLGeometryBrushFill.js\";import{assertRendererSchema as _}from\"../techniques/utils.js\";import{BufferObject as u}from\"../../../../webgl/BufferObject.js\";import{DataType as m,PrimitiveType as h,TextureType as c,PixelFormat as f,PixelType as T,TextureSamplingMode as p,TextureWrapMode as x,TargetType as w,DepthStencilTargetType as D,RenderbufferFormat as y,Usage as g}from\"../../../../webgl/enums.js\";import{FramebufferObject as S}from\"../../../../webgl/FramebufferObject.js\";import{Renderbuffer as b}from\"../../../../webgl/Renderbuffer.js\";import{Texture as E}from\"../../../../webgl/Texture.js\";import{VertexArrayObject as F}from\"../../../../webgl/VertexArrayObject.js\";class O extends l{constructor(){super(...arguments),this._dotTextureSize=0,this._dotTextures=null,this._dotSamplers=new Int32Array([s,i]),this._dotVAO=null,this._dotDesc={vsPath:\"dot/dot\",fsPath:\"dot/dot\",attributes:new Map([[\"a_pos\",0]])}}dispose(){super.dispose(),this._disposeTextures(),this._dotFBO=e(this._dotFBO),this._dotVAO=e(this._dotVAO)}getGeometryType(){return d.FILL}supportsSymbology(e){return e===a.DOT_DENSITY}_drawFills(e,o,r,s,i,n){const{passOptions:d}=e;if(t(d)&&\"hittest\"===d.type)super._drawFills(e,o,r,s,i,n);else{const t=this._drawDotLocations(e,o,r,i,n);this._drawDotDensity(e,o,t)}}_drawDotDensity(e,o,r){const{context:s,painter:i,rendererInfo:n,requestRender:d,allowDelayedRender:a}=e,l=i.materialManager.getProgram(this._dotDesc);if(a&&t(d)&&!l.compiled)return void d();const{rendererSchema:u}=n;_(u,\"dot-density\");const c=this._createDotDensityMesh(s,this._dotDesc.attributes,{geometry:[{name:\"a_pos\",count:2,type:m.SHORT,divisor:0,normalized:!1,offset:0,stride:4}]});s.setStencilTestEnabled(!0),s.useProgram(l),l.setUniform1f(\"u_tileZoomFactor\",1),l.setUniform1i(\"u_texture\",this._dotSamplers[0]),l.setUniform1f(\"u_dotSize\",Math.max(u.dotSize,1)),l.setUniform1f(\"u_pixelRatio\",window.devicePixelRatio),this._setSharedUniforms(l,e,o),s.bindTexture(r,this._dotSamplers[0]),s.bindVAO(c),s.drawArrays(h.POINTS,0,262144)}_drawDotLocations(e,t,o,r,s){const{context:i,rendererInfo:d,requiredLevel:a}=e,l=i.getViewport(),{rendererSchema:u}=d;_(u,\"dot-density\");const{dotScale:c,colors:f,activeDots:T,backgroundColor:p,dotValue:x}=u;i.setViewport(0,0,512,512);const w=i.getBoundFramebufferObject(),D=this._createFBO(i);i.bindFramebuffer(D),i.setClearColor(0,0,0,0),i.clear(i.gl.COLOR_BUFFER_BIT|i.gl.STENCIL_BUFFER_BIT),i.setStencilTestEnabled(!1);const y=1/2**(a-t.key.level),g=n,S=g*window.devicePixelRatio*g*window.devicePixelRatio,b=1/y*(1/y),E=c?e.state.scale/c:1;return o.setUniform1f(\"u_tileZoomFactor\",y),o.setUniform1f(\"u_tileDotsOverArea\",S/(n*window.devicePixelRatio*n*window.devicePixelRatio)),o.setUniformMatrix4fv(\"u_dotColors\",f),o.setUniform4fv(\"u_isActive\",T),o.setUniform4fv(\"u_dotBackgroundColor\",p),o.setUniform1f(\"u_dotValue\",Math.max(1,x*E*b)),this._bindDotDensityTextures(i,o,d,g),i.drawElements(h.TRIANGLES,r,m.UNSIGNED_INT,s),i.setViewport(l.x,l.y,l.width,l.height),i.bindFramebuffer(w),D.colorTexture}_createFBO(e){if(o(this._dotFBO)){const t=512,o=512,r={target:c.TEXTURE_2D,pixelFormat:f.RGBA,dataType:T.UNSIGNED_BYTE,samplingMode:p.NEAREST,wrapMode:x.CLAMP_TO_EDGE,width:t,height:o},s={colorTarget:w.TEXTURE,depthStencilTarget:D.DEPTH_STENCIL_RENDER_BUFFER},i=new b(e,{width:t,height:o,internalFormat:y.DEPTH_STENCIL});this._dotFBO=new S(e,s,r,i)}return this._dotFBO}_disposeTextures(){if(this._dotTextures){for(let e=0;e{switch(t.BYTES_PER_ELEMENT){case 1:return y.UNSIGNED_BYTE;case 2:return y.UNSIGNED_SHORT;case 4:return y.UNSIGNED_INT;default:throw new e(\"Cannot get DataType of array\")}},g=(e,t,r,s)=>{let o=0;for(let n=1;n0:o<0},p=({coords:e,lengths:t},r)=>{const o=[];for(let n=0,i=0;n({...r,[s]:h.createVertex(e,t,this.vertices[s])})),{})),this._cache.vertexBuffers}}export{l as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport t from\"../../../../core/Error.js\";import e from\"../../../../core/Logger.js\";import{isSome as r,isNone as s}from\"../../../../core/maybe.js\";import{watch as i}from\"../../../../core/reactiveUtils.js\";import{c as o}from\"../../../../chunks/mat3f32.js\";import{DisplayObject as h}from\"../DisplayObject.js\";import a from\"./Mesh2D.js\";import{VertexArrayObject as c}from\"../../../webgl/VertexArrayObject.js\";const n=t=>parseFloat(t)/100;class m extends h{constructor(t,e){super(),this._clip=e,this._cache={},this.stage=t,this._handle=i((()=>e.version),(()=>this._invalidate())),this.ready()}static fromClipArea(t,e){return new m(t,e)}_destroyGL(){r(this._cache.mesh)&&(this._cache.mesh.destroy(),this._cache.mesh=null),r(this._cache.vao)&&(this._cache.vao.dispose(),this._cache.vao=null)}destroy(){this._destroyGL(),this._handle.remove()}getVAO(t,e,r,i){const[o,h]=e.size;if(\"geometry\"!==this._clip.type&&this._lastWidth===o&&this._lastHeight===h||(this._lastWidth=o,this._lastHeight=h,this._destroyGL()),s(this._cache.vao)){const s=this._createMesh(e,this._clip),o=s.getIndexBuffer(t),h=s.getVertexBuffers(t);this._cache.mesh=s,this._cache.vao=new c(t,r,i,h,o)}return this._cache.vao}_createTransforms(){return{dvs:o()}}_invalidate(){this._destroyGL(),this.requestRender()}_createScreenRect(t,e){const[r,s]=t.size,i=\"string\"==typeof e.left?n(e.left)*r:e.left,o=\"string\"==typeof e.right?n(e.right)*r:e.right,h=\"string\"==typeof e.top?n(e.top)*s:e.top,a=\"string\"==typeof e.bottom?n(e.bottom)*s:e.bottom,c=i,m=h;return{x:c,y:m,width:Math.max(r-o-c,0),height:Math.max(s-a-m,0)}}_createMesh(r,s){switch(s.type){case\"rect\":return a.fromRect(this._createScreenRect(r,s));case\"path\":return a.fromPath(s);case\"geometry\":return a.fromGeometry(r,s);default:return e.getLogger(\"esri.views.2d.engine.webgl.ClippingInfo\").error(new t(\"mapview-bad-type\",\"Unable to create ClippingInfo mesh from clip of type: ${clip.type}\")),a.fromRect({x:0,y:0,width:1,height:1})}}}export{m as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport\"../../../../core/has.js\";import{isNone as e,isSome as r}from\"../../../../core/maybe.js\";import{c as s}from\"../../../../chunks/mat3f32.js\";import{brushes as t}from\"../brushes.js\";import{Container as i}from\"../Container.js\";import n from\"./ClippingInfo.js\";import{WGLDrawPhase as o}from\"./enums.js\";class a extends i{constructor(){super(...arguments),this.name=this.constructor.name}set clips(e){this._clips=e,this.children.forEach((r=>r.clips=e)),this._updateClippingInfo()}beforeRender(e){super.beforeRender(e),this.updateTransforms(e.state)}_createTransforms(){return{dvs:s()}}doRender(e){const r=this.createRenderParams(e),{painter:s,globalOpacity:t,profiler:i,drawPhase:n}=r,a=n===o.LABEL||n===o.HIGHLIGHT?1:t*this.computedOpacity;i.recordContainerStart(this.name),s.beforeRenderLayer(r,this._clippingInfos?255:0,a),this.renderChildren(r),s.compositeLayer(r,a),i.recordContainerEnd()}renderChildren(r){e(this._renderPasses)&&(this._renderPasses=this.prepareRenderPasses(r.painter));for(const e of this._renderPasses)try{e.render(r)}catch(s){}}createRenderParams(e){return e.requireFBO=this.requiresDedicatedFBO,e}prepareRenderPasses(e){return[e.registerRenderPass({name:\"clip\",brushes:[t.clip],target:()=>this._clippingInfos,drawPhase:o.MAP|o.LABEL|o.LABEL_ALPHA|o.DEBUG|o.HIGHLIGHT})]}updateTransforms(e){for(const r of this.children)r.setTransform(e)}onAttach(){super.onAttach(),this._updateClippingInfo()}onDetach(){super.onDetach(),this._updateClippingInfo()}_updateClippingInfo(){r(this._clippingInfos)&&(this._clippingInfos.forEach((e=>e.destroy())),this._clippingInfos=null);const e=this.stage;if(!e)return;const s=this._clips;r(s)&&s.length&&(this._clippingInfos=s.items.map((r=>n.fromClipArea(e,r)))),this.requestRender()}}export{a as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as e}from\"../../../../../core/maybe.js\";import{TEXTURE_BINDING_BITMAP as t}from\"../definitions.js\";import i from\"../VertexStream.js\";import s from\"./WGLBrush.js\";import{TextureSamplingMode as n,BlendFactor as r,CompareFunction as a}from\"../../../../webgl/enums.js\";const o={nearest:{defines:[],samplingMode:n.NEAREST,mips:!1},bilinear:{defines:[],samplingMode:n.LINEAR,mips:!1},bicubic:{defines:[\"bicubic\"],samplingMode:n.LINEAR,mips:!1},trilinear:{defines:[],samplingMode:n.LINEAR_MIPMAP_LINEAR,mips:!0}},d=(e,t,i)=>{if(\"dynamic\"===i.samplingMode){const{state:i}=e,s=t.resolution/t.pixelRatio/i.resolution,n=Math.round(e.pixelRatio)!==e.pixelRatio,r=s>1.05||s<.95;return i.rotation||r||n||t.isSourceScaled||t.rotation?o.bilinear:o.nearest}return o[i.samplingMode]};class m extends s{constructor(){super(...arguments),this._desc={vsPath:\"raster/bitmap\",fsPath:\"raster/bitmap\",attributes:new Map([[\"a_pos\",0]])}}dispose(){this._quad&&this._quad.dispose()}prepareState({context:e}){e.setBlendingEnabled(!0),e.setColorMask(!0,!0,!0,!0),e.setStencilWriteMask(0),e.setStencilTestEnabled(!0)}draw(s,n){const{context:o,renderingOptions:m,painter:l,requestRender:c,allowDelayedRender:p}=s;if(!n.source||!n.isReady)return;const u=d(s,n,m),f=l.materialManager.getProgram(this._desc,u.defines);if(p&&e(c)&&!f.compiled)return void c();s.timeline.begin(this.name),\"additive\"===n.blendFunction?o.setBlendFunctionSeparate(r.ONE,r.ONE,r.ONE,r.ONE):o.setBlendFunctionSeparate(r.ONE,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA),o.setStencilFunction(a.EQUAL,n.stencilRef,255),this._quad||(this._quad=new i(o,[0,0,1,0,0,1,1,1]));const{coordScale:_,computedOpacity:E,transforms:M}=n;n.setSamplingProfile(u),n.bind(s.context,t),o.useProgram(f),f.setUniformMatrix3fv(\"u_dvsMat3\",M.dvs),f.setUniform1i(\"u_texture\",t),f.setUniform2fv(\"u_coordScale\",_),f.setUniform1f(\"u_opacity\",E),this._quad.draw(),s.timeline.end(this.name)}}export{m as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport e from\"../../../../../core/Logger.js\";import{disposeMaybe as t,isSome as r,isNone as i}from\"../../../../../core/maybe.js\";import{WGLSymbologyType as a}from\"../enums.js\";import s from\"../VertexStream.js\";import u from\"./WGLGeometryBrushMarker.js\";import{Effect as n}from\"../effects/Effect.js\";import{assertRendererSchema as o}from\"../techniques/utils.js\";import{ContextType as h}from\"../../../../webgl/context-util.js\";import{CompareFunction as c,DataType as l,BlendFactor as f,ClearBufferBit as m,TextureType as d,TextureWrapMode as p,RenderbufferFormat as _,PixelFormat as b,PixelType as g,TextureSamplingMode as F}from\"../../../../webgl/enums.js\";import{FramebufferObject as w}from\"../../../../webgl/FramebufferObject.js\";import{loadHeatmapTextureConfiguration as T}from\"../../../../webgl/heatmapTextureUtils.js\";import{Renderbuffer as E}from\"../../../../webgl/Renderbuffer.js\";import{Texture as O}from\"../../../../webgl/Texture.js\";const S=e.getLogger(\"esri.views.2d.engine.webgl.brushes.WGLBrushHeatmap\");function x(e){return\"heatmap\"===e.type}class B extends u{constructor(){super(...arguments),this.brushEffect=new y}supportsSymbology(e){return e===a.HEATMAP}dispose(){super.dispose(),this.brushEffect.dispose(),this.brushEffect=null}prepareState(){}drawGeometry(e,t,r,i){const{defines:a}=this.brushEffect.loadQualityProfile(e.context);super.drawGeometry(e,t,r,i?[...i,...a]:a)}_drawMarkers(e,t,r,i,a,s,u){const{context:n,rendererInfo:h,state:f}=e,{rendererSchema:m}=h;o(m,\"heatmap\");const{referenceScale:d,radius:p,isFieldActive:_}=m,b=p*(0!==d?d/f.scale:1);r.setUniform1f(\"u_radius\",b),u||(r.setUniform1f(\"u_isFieldActive\",_),n.setStencilFunction(c.GEQUAL,t.stencilRef,255)),n.drawElements(i,a,l.UNSIGNED_INT,s)}}const v={vsPath:\"heatmap/heatmapResolve\",fsPath:\"heatmap/heatmapResolve\",attributes:new Map([[\"a_position\",0]])};class y extends n{constructor(){super(...arguments),this.name=this.constructor.name}createOptions({passOptions:e}){return e}dispose(){this._prevFBO=null,this._accumulateOutputTexture=t(this._accumulateOutputTexture),r(this._accumulateFramebuffer)&&this._accumulateFramebuffer.detachDepthStencilBuffer(),this._accumulateOutputStencilBuffer=t(this._accumulateOutputStencilBuffer),this._accumulateFramebuffer=t(this._accumulateFramebuffer),this._resolveGradientTexture=t(this._resolveGradientTexture),this._tileQuad=t(this._tileQuad)}bind(e){const{context:t,rendererInfo:i,passOptions:a}=e,{rendererSchema:s}=i;!(r(a)&&\"hittest\"===a.type)&&x(s)&&(this._prevFBO=t.getBoundFramebufferObject(),this._prevViewport=t.getViewport(),o(s,\"heatmap\"),this._loadResources(e),this._updateResources(t,s),t.bindFramebuffer(this._accumulateFramebuffer),t.setViewport(0,0,this._accumulateFramebuffer.width,this._accumulateFramebuffer.height),t.setStencilTestEnabled(!0),t.setBlendingEnabled(!0),t.setBlendFunction(f.ONE,f.ONE),t.setClearColor(0,0,0,0),t.clear(m.COLOR_BUFFER_BIT))}unbind(){this._prevFBO=null,this._prevViewport=null}draw(e){const{context:t,painter:i,rendererInfo:a,passOptions:s}=e,{rendererSchema:u}=a;if(r(s)&&\"hittest\"===s.type||!x(u))return;const{defines:n}=this.loadQualityProfile(t),o=i.materialManager.getProgram(v,n);t.useProgram(o),t.bindFramebuffer(this._prevFBO),t.setViewport(0,0,this._prevViewport.width,this._prevViewport.height),t.setBlendFunction(f.ONE,f.ONE_MINUS_SRC_ALPHA),t.setStencilTestEnabled(!1);const{radius:h,minDensity:c,densityRange:l}=u;t.bindTexture(this._accumulateOutputTexture,8),t.bindTexture(this._resolveGradientTexture,9),o.setUniform1i(\"u_texture\",8),o.setUniform1i(\"u_gradient\",9),o.setUniform2f(\"u_densityMinAndInvRange\",c,1/l),o.setUniform1f(\"u_densityNormalization\",3/(h*h*Math.PI)),this._tileQuad.draw()}_loadResources({context:e,painter:t}){const{dataType:r,samplingMode:i,pixelFormat:a,internalFormat:u,shadingRate:n,requiresSharedStencilBuffer:o}=this.loadQualityProfile(e),{width:h,height:c}=this._prevViewport,l=h*n,f=c*n;this._accumulateOutputTexture??(this._accumulateOutputTexture=new O(e,{target:d.TEXTURE_2D,pixelFormat:a,internalFormat:u,dataType:r,samplingMode:i,wrapMode:p.CLAMP_TO_EDGE,width:l,height:f})),o||(this._accumulateOutputStencilBuffer??(this._accumulateOutputStencilBuffer=new E(e,{width:l,height:f,internalFormat:_.DEPTH_STENCIL}))),this._accumulateFramebuffer??(this._accumulateFramebuffer=new w(e,{},this._accumulateOutputTexture,o?t.getSharedStencilBuffer():this._accumulateOutputStencilBuffer)),this._resolveGradientTexture??(this._resolveGradientTexture=new O(e,{target:d.TEXTURE_2D,pixelFormat:b.RGBA,dataType:g.UNSIGNED_BYTE,samplingMode:F.LINEAR,wrapMode:p.CLAMP_TO_EDGE})),this._tileQuad??(this._tileQuad=new s(e,[0,0,1,0,0,1,1,1]))}_updateResources(e,t){const{gradientHash:i,gradient:a}=t;this._prevGradientHash!==i&&(this._resolveGradientTexture.resize(a.length/4,1),this._resolveGradientTexture.setData(a),this._prevGradientHash=i);const{shadingRate:s,requiresSharedStencilBuffer:u}=this.loadQualityProfile(e),{width:n,height:o}=this._prevViewport,h=n*s,c=o*s,{width:l,height:f}=this._accumulateFramebuffer;if(l!==h||f!==c){const e=this._accumulateFramebuffer.depthStencilAttachment;if(u&&r(e)){const{width:t,height:r}=e.descriptor;t===h&&r===c||(S.errorOnce(\"Attempted to resize shared stencil buffer! Detaching instead.\"),this._accumulateFramebuffer.detachDepthStencilBuffer())}this._accumulateFramebuffer.resize(h,c)}u||e.blitFramebuffer(this._prevFBO,this._accumulateFramebuffer,0,0,this._prevFBO.width,this._prevFBO.height,0,0,this._accumulateFramebuffer.width,this._accumulateFramebuffer.height,m.STENCIL_BUFFER_BIT,F.NEAREST)}loadQualityProfile(e){if(i(this._qualityProfile)){const t=T(e,S),r=e.type===h.WEBGL1;this._qualityProfile={...t,requiresSharedStencilBuffer:r,shadingRate:r?1:.25,defines:t.dataType!==g.FLOAT?[\"heatmapPrecisionHalfFloat\"]:[]}}return this._qualityProfile}}export{B as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as t}from\"../../../../../core/maybe.js\";import{f as e}from\"../../../../../chunks/vec4f32.js\";import{Pos2b as r}from\"../DefaultVertexAttributeLayouts.js\";import i from\"./WGLBrush.js\";import{background as o}from\"../shaders/BackgroundPrograms.js\";import{tileInfo as s}from\"../shaders/TileInfoPrograms.js\";import{BufferObject as n}from\"../../../../webgl/BufferObject.js\";import{BlendFactor as a,PrimitiveType as l,Usage as u,TextureType as m,PixelFormat as _,PixelType as f,TextureSamplingMode as c,TextureWrapMode as d}from\"../../../../webgl/enums.js\";import{createProgram as g}from\"../../../../webgl/ProgramTemplate.js\";import{Texture as h}from\"../../../../webgl/Texture.js\";import{VertexArrayObject as p}from\"../../../../webgl/VertexArrayObject.js\";const A=300,b=32;class x extends i{constructor(){super(...arguments),this._color=e(1,0,0,1)}dispose(){this._outlineProgram?.dispose(),this._outlineProgram=null,this._tileInfoProgram?.dispose(),this._tileInfoProgram=null,this._outlineVertexArrayObject?.dispose(),this._outlineVertexArrayObject=null,this._tileInfoVertexArrayObject?.dispose(),this._tileInfoVertexArrayObject=null,this._canvas=null}prepareState({context:t}){t.setBlendingEnabled(!0),t.setBlendFunctionSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA),t.setColorMask(!0,!0,!0,!0),t.setStencilWriteMask(0),t.setStencilTestEnabled(!1)}draw(e,r){const{context:i,requestRender:o,allowDelayedRender:s}=e;if(!r.isReady)return;if(this._loadWGLResources(i),s&&t(o)&&(!this._outlineProgram.compiled||!this._tileInfoProgram.compiled))return void o();i.bindVAO(this._outlineVertexArrayObject),i.useProgram(this._outlineProgram),this._outlineProgram.setUniformMatrix3fv(\"u_dvsMat3\",r.transforms.dvs),this._outlineProgram.setUniform2f(\"u_coord_range\",r.rangeX,r.rangeY),this._outlineProgram.setUniform1f(\"u_depth\",0),this._outlineProgram.setUniform4fv(\"u_color\",this._color),i.drawArrays(l.LINE_STRIP,0,4);const n=this._getTexture(i,r);n?(i.bindVAO(this._tileInfoVertexArrayObject),i.useProgram(this._tileInfoProgram),i.bindTexture(n,0),this._tileInfoProgram.setUniformMatrix3fv(\"u_dvsMat3\",r.transforms.dvs),this._tileInfoProgram.setUniform1f(\"u_depth\",0),this._tileInfoProgram.setUniform2f(\"u_coord_ratio\",r.rangeX/r.width,r.rangeY/r.height),this._tileInfoProgram.setUniform2f(\"u_delta\",8,8),this._tileInfoProgram.setUniform2f(\"u_dimensions\",n.descriptor.width,n.descriptor.height),i.drawArrays(l.TRIANGLE_STRIP,0,4),i.bindVAO()):i.bindVAO()}_loadWGLResources(t){if(this._outlineProgram&&this._tileInfoProgram)return;const e=g(t,o),i=g(t,s),a=new Int8Array([0,0,1,0,1,1,0,1]),l=n.createVertex(t,u.STATIC_DRAW,a),m=new p(t,o.attributes,r,{geometry:l}),_=new Int8Array([0,0,1,0,0,1,1,1]),f=n.createVertex(t,u.STATIC_DRAW,_),c=new p(t,s.attributes,r,{geometry:f});this._outlineProgram=e,this._tileInfoProgram=i,this._outlineVertexArrayObject=m,this._tileInfoVertexArrayObject=c}_getTexture(t,e){if(e.texture&&e.triangleCountReportedInDebug===e.triangleCount)return e.texture;e.triangleCountReportedInDebug=e.triangleCount,this._canvas||(this._canvas=document.createElement(\"canvas\"),this._canvas.setAttribute(\"id\",\"canvas2d\"),this._canvas.setAttribute(\"width\",`${A}`),this._canvas.setAttribute(\"height\",`${b}`),this._canvas.setAttribute(\"style\",\"display:none\"));const r=e.triangleCount;let i=e.key.id;e.triangleCount>0&&(i+=`, ${r}`);const o=this._canvas,s=o.getContext(\"2d\");return s.font=\"24px sans-serif\",s.textAlign=\"left\",s.textBaseline=\"top\",s.clearRect(0,0,A,b),r>1e5?(s.fillStyle=\"red\",s.fillRect(0,0,A,b),s.fillStyle=\"black\"):(s.clearRect(0,0,A,b),s.fillStyle=\"blue\"),s.fillText(i,0,0),e.texture=new h(t,{target:m.TEXTURE_2D,pixelFormat:_.RGBA,dataType:f.UNSIGNED_BYTE,samplingMode:c.NEAREST,wrapMode:d.CLAMP_TO_EDGE},o),e.texture}}export{x as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as r}from\"../../../../../core/maybe.js\";import{f as e}from\"../../../../../chunks/vec4f32.js\";import{Pos2b as t}from\"../DefaultVertexAttributeLayouts.js\";import s from\"./WGLBrush.js\";import{background as i}from\"../shaders/BackgroundPrograms.js\";import{BufferObject as o}from\"../../../../webgl/BufferObject.js\";import{StencilOperation as a,Face as l,CompareFunction as n,PrimitiveType as d,Usage as m}from\"../../../../webgl/enums.js\";import{createProgram as c}from\"../../../../webgl/ProgramTemplate.js\";import{VertexArrayObject as _}from\"../../../../webgl/VertexArrayObject.js\";class h extends s{constructor(){super(...arguments),this._color=e(1,0,0,1),this._initialized=!1}dispose(){this._solidProgram&&(this._solidProgram.dispose(),this._solidProgram=null),this._solidVertexArrayObject&&(this._solidVertexArrayObject.dispose(),this._solidVertexArrayObject=null)}prepareState({context:r}){r.setDepthWriteEnabled(!1),r.setDepthTestEnabled(!1),r.setStencilTestEnabled(!0),r.setBlendingEnabled(!1),r.setColorMask(!1,!1,!1,!1),r.setStencilOp(a.KEEP,a.KEEP,a.REPLACE),r.setStencilWriteMask(255)}draw(e,t){const{context:s,requestRender:i,allowDelayedRender:o}=e;this._initialized||this._initialize(s),o&&r(i)&&!this._solidProgram.compiled?i():(s.setStencilFunctionSeparate(l.FRONT_AND_BACK,n.GREATER,t.stencilRef,255),s.bindVAO(this._solidVertexArrayObject),s.useProgram(this._solidProgram),this._solidProgram.setUniformMatrix3fv(\"u_dvsMat3\",t.transforms.dvs),this._solidProgram.setUniform2fv(\"u_coord_range\",[t.rangeX,t.rangeY]),this._solidProgram.setUniform1f(\"u_depth\",0),this._solidProgram.setUniform4fv(\"u_color\",this._color),s.drawArrays(d.TRIANGLE_STRIP,0,4),s.bindVAO())}_initialize(r){if(this._initialized)return!0;const e=c(r,i);if(!e)return!1;const s=new Int8Array([0,0,1,0,0,1,1,1]),a=o.createVertex(r,m.STATIC_DRAW,s),l=new _(r,i.attributes,t,{geometry:a});return this._solidProgram=e,this._solidVertexArrayObject=l,this._initialized=!0,!0}}export{h as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isNone as t,isSome as e}from\"../../../../../core/maybe.js\";import{MIN_MAX_ZOOM_PRECISION_FACTOR as i,TEXTURE_BINDING_ATTRIBUTE_DATA_0 as s,TEXTURE_BINDING_ATTRIBUTE_DATA_1 as o,TEXTURE_BINDING_ATTRIBUTE_DATA_2 as a,TEXTURE_BINDING_ATTRIBUTE_DATA_3 as r,TEXTURE_BINDING_ATTRIBUTE_DATA_4 as n,TEXTURE_BINDING_ATTRIBUTE_DATA_5 as u}from\"../definitions.js\";import m from\"./WGLBrush.js\";import{MaterialKeyBase as v}from\"../materialKey/MaterialKey.js\";import{BlendFactor as f,CompareFunction as l}from\"../../../../webgl/enums.js\";class p extends m{constructor(){super(...arguments),this._computeDesc=new Map}prepareState({context:t},e){e&&e.includes(\"hittest\")?t.setBlendFunctionSeparate(f.ONE,f.ONE,f.ONE,f.ONE):t.setBlendFunctionSeparate(f.ONE,f.ONE_MINUS_SRC_ALPHA,f.ONE,f.ONE_MINUS_SRC_ALPHA),t.setBlendingEnabled(!0),t.setColorMask(!0,!0,!0,!0),t.setStencilWriteMask(0),t.setStencilTestEnabled(!0)}draw(e,i,s){const o=this.getGeometryType();i.commit(e);const a=i.getGeometry(o);t(a)||(e.timeline.begin(this.name),e.attributeView.bindTextures(e.context),e.context.setStencilFunction(l.EQUAL,i.stencilRef,255),a.forEachCommand((t=>{const o=v.load(t.materialKey).symbologyType;this.supportsSymbology(o)&&this.drawGeometry(e,i,t,s)})))}_setSharedUniforms(t,m,v){const{displayLevel:f,pixelRatio:l,state:p,passOptions:c}=m;e(c)&&\"hittest\"===c.type&&(t.setUniform2fv(\"u_hittestPos\",c.position),t.setUniform1f(\"u_hittestDist\",c.distance)),t.setUniform1f(\"u_pixelRatio\",l),t.setUniformMatrix3fv(\"u_tileMat3\",v.transforms.tileMat3),t.setUniformMatrix3fv(\"u_viewMat3\",p.viewMat3),t.setUniformMatrix3fv(\"u_dvsMat3\",v.transforms.dvs),t.setUniformMatrix3fv(\"u_displayViewMat3\",p.displayViewMat3),t.setUniform1f(\"u_currentZoom\",Math.round(f*i)),t.setUniform1i(\"u_attributeTextureSize\",m.attributeView.size),t.setUniform1i(\"u_attributeData0\",s),t.setUniform1i(\"u_attributeData1\",o),t.setUniform1i(\"u_attributeData2\",a),t.setUniform1i(\"u_attributeData3\",r),t.setUniform1i(\"u_attributeData4\",n),t.setUniform1i(\"u_attributeData5\",u)}_setSizeVVUniforms(t,e,i,s){if(t.vvSizeMinMaxValue&&e.setUniform4fv(\"u_vvSizeMinMaxValue\",i.vvSizeMinMaxValue),t.vvSizeScaleStops&&e.setUniform1f(\"u_vvSizeScaleStopsValue\",i.vvSizeScaleStopsValue),t.vvSizeFieldStops){const t=i.getSizeVVFieldStops(s.key.level);null!=t&&(e.setUniform1fv(\"u_vvSizeFieldStopsValues\",t.values),e.setUniform1fv(\"u_vvSizeFieldStopsSizes\",t.sizes))}t.vvSizeUnitValue&&e.setUniform1f(\"u_vvSizeUnitValueWorldToPixelsRatio\",i.vvSizeUnitValueToPixelsRatio)}_setColorAndOpacityVVUniforms(t,e,i){t.vvColor&&(e.setUniform1fv(\"u_vvColorValues\",i.vvColorValues),e.setUniform4fv(\"u_vvColors\",i.vvColors)),t.vvOpacity&&(e.setUniform1fv(\"u_vvOpacityValues\",i.vvOpacityValues),e.setUniform1fv(\"u_vvOpacities\",i.vvOpacities))}_setRotationVVUniforms(t,e,i){t.vvRotation&&e.setUniform1f(\"u_vvRotationType\",\"geographic\"===i.vvMaterialParameters.vvRotationType?0:1)}_getTriangleDesc(t,e,i=[\"a_pos\"]){const s=e.bufferLayouts.geometry,o=i.map((t=>s.findIndex((e=>e.name===t)))),a=`${t}-${o.join(\"-\")}`;let r=this._computeDesc.get(a);if(!r){const t=e.strides,i=e.strides.geometry,n=new Map(e.attributes),u=s.map((t=>({...t}))),m=Math.max(...e.attributes.values()),v={geometry:u};let f=0;for(const e of o){const t=s[e];v.geometry.push({count:t.count,name:t.name+\"1\",divisor:t.divisor,normalized:t.normalized,offset:i+t.offset,stride:i,type:t.type}),v.geometry.push({count:t.count,name:t.name+\"2\",divisor:t.divisor,normalized:t.normalized,offset:2*i+t.offset,stride:i,type:t.type}),n.set(t.name+\"1\",m+ ++f),n.set(t.name+\"2\",m+ ++f)}r={bufferLayouts:v,attributes:n,strides:t},this._computeDesc.set(a,r)}return r}}export{p as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{isSome as t,unwrapOr as e}from\"../../../../../core/maybe.js\";import{WGLGeometryType as o,WGLSymbologyType as a}from\"../enums.js\";import{createProgramDescriptor as r}from\"../Utils.js\";import i from\"./WGLGeometryBrush.js\";import{MarkerMaterialKey as n}from\"../materialKey/MaterialKey.js\";import{getTechniqueFromMaterialKey as s}from\"../techniques/utils.js\";import{DataType as m,PrimitiveType as l}from\"../../../../webgl/enums.js\";const d={shader:\"materials/icon\",vertexLayout:{geometry:[{location:0,name:\"a_pos\",count:2,type:m.SHORT},{location:1,name:\"a_vertexOffset\",count:2,type:m.SHORT},{location:2,name:\"a_texCoords\",count:2,type:m.UNSIGNED_SHORT},{location:3,name:\"a_bitSetAndDistRatio\",count:2,type:m.UNSIGNED_SHORT},{location:4,name:\"a_id\",count:4,type:m.UNSIGNED_BYTE},{location:5,name:\"a_color\",count:4,type:m.UNSIGNED_BYTE,normalized:!0},{location:6,name:\"a_outlineColor\",count:4,type:m.UNSIGNED_BYTE,normalized:!0},{location:7,name:\"a_sizeAndOutlineWidth\",count:4,type:m.UNSIGNED_BYTE},{location:8,name:\"a_zoomRange\",count:2,type:m.UNSIGNED_SHORT}]},hittestAttributes:[\"a_vertexOffset\",\"a_texCoords\"]};class u extends i{dispose(){}getGeometryType(){return o.MARKER}supportsSymbology(t){return t!==a.HEATMAP&&t!==a.PIE_CHART}drawGeometry(o,a,i,m){const{context:u,painter:c,rendererInfo:p,state:y,passOptions:_,requestRender:f,allowDelayedRender:E}=o,S=n.load(i.materialKey),N=s(S.data),T=t(_)&&\"hittest\"===_.type,{shader:g,vertexLayout:x,hittestAttributes:R}=e(N.programSpec,d);let h=l.TRIANGLES,U=r(S.data,x);T&&(U=this._getTriangleDesc(i.materialKey,U,R),h=l.POINTS);const{attributes:A,bufferLayouts:O}=U,G=c.materialManager.getMaterialProgram(o,S,g,A,m);if(E&&t(f)&&!G.compiled)return void f();u.useProgram(G),S.textureBinding&&c.textureManager.bindTextures(u,G,S,!0),this._setSharedUniforms(G,o,a);const I=S.vvRotation?y.displayViewMat3:y.displayMat3;G.setUniformMatrix3fv(\"u_displayMat3\",I),this._setSizeVVUniforms(S,G,p,a),this._setColorAndOpacityVVUniforms(S,G,p),this._setRotationVVUniforms(S,G,p);const M=i.target.getVAO(u,O,A,T);let b=i.indexCount,D=i.indexFrom*Uint32Array.BYTES_PER_ELEMENT;T&&(b/=3,D/=3),u.bindVAO(M),this._drawMarkers(o,a,G,h,b,D,T),u.bindVAO(null)}_drawMarkers(t,e,o,a,r,i,n){t.context.drawElements(a,r,m.UNSIGNED_INT,i)}}export{u as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nclass t{constructor(){this.name=this.constructor.name}createOptions(t,r){return null}}export{t as Effect};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{resolveIncludes as r}from\"./sources/resolver.js\";const e={shaders:{vertexShader:r(\"background/background.vert\"),fragmentShader:r(\"background/background.frag\")},attributes:new Map([[\"a_pos\",0]])};export{e as background};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{resolveIncludes as e}from\"./sources/resolver.js\";const r={shaders:{vertexShader:e(\"tileInfo/tileInfo.vert\"),fragmentShader:e(\"tileInfo/tileInfo.frag\")},attributes:new Map([[\"a_pos\",0]])};export{r as tileInfo};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nconst e={background:{\"background.frag\":\"uniform lowp vec4 u_color;\\nvoid main() {\\ngl_FragColor = u_color;\\n}\",\"background.vert\":\"attribute vec2 a_pos;\\nuniform highp mat3 u_dvsMat3;\\nuniform mediump vec2 u_coord_range;\\nuniform mediump float u_depth;\\nvoid main() {\\nvec3 v_pos = u_dvsMat3 * vec3(u_coord_range * a_pos, 1.0);\\ngl_Position = vec4(v_pos.xy, 0.0, 1.0);\\n}\"},bitBlit:{\"bitBlit.frag\":\"uniform lowp sampler2D u_tex;\\nuniform lowp float u_opacity;\\nvarying mediump vec2 v_uv;\\nvoid main() {\\nlowp vec4 color = texture2D(u_tex, v_uv);\\ngl_FragColor = color * u_opacity;\\n}\",\"bitBlit.vert\":\"attribute vec2 a_pos;\\nattribute vec2 a_tex;\\nvarying mediump vec2 v_uv;\\nvoid main(void) {\\ngl_Position = vec4(a_pos, 0.0, 1.0);\\nv_uv = a_tex;\\n}\"},blend:{\"blend.frag\":\"precision mediump float;\\nuniform sampler2D u_layerTexture;\\nuniform lowp float u_opacity;\\nuniform lowp float u_inFadeOpacity;\\n#ifndef NORMAL\\nuniform sampler2D u_backbufferTexture;\\n#endif\\nvarying mediump vec2 v_uv;\\nfloat rgb2v(in vec3 c) {\\nreturn max(c.x, max(c.y, c.z));\\n}\\nvec3 rgb2hsv(in vec3 c) {\\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\\nvec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\\nvec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\\nfloat d = q.x - min(q.w, q.y);\\nfloat e = 1.0e-10;\\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);\\n}\\nvec3 hsv2rgb(in vec3 c) {\\nvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\\nvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\\nreturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\\n}\\nvec3 tint(in vec3 Cb, in vec3 Cs) {\\nfloat vIn = rgb2v(Cb);\\nvec3 hsvTint = rgb2hsv(Cs);\\nvec3 hsvOut = vec3(hsvTint.x, hsvTint.y, vIn * hsvTint.z);\\nreturn hsv2rgb(hsvOut);\\n}\\nfloat overlay(in float Cb, in float Cs) {\\nreturn (1.0 - step(0.5, Cs)) * (1.0 - 2.0 * (1.0 - Cs ) * (1.0 - Cb)) + step(0.5, Cs) * (2.0 * Cs * Cb);\\n}\\nfloat colorDodge(in float Cb, in float Cs) {\\nreturn (Cb == 0.0) ? 0.0 : (Cs == 1.0) ? 1.0 : min(1.0, Cb / (1.0 - Cs));\\n}\\nfloat colorBurn(in float Cb, in float Cs) {\\nreturn (Cb == 1.0) ? 1.0 : (Cs == 0.0) ? 0.0 : 1.0 - min(1.0, (1.0 - Cb) / Cs);\\n}\\nfloat hardLight(in float Cb, in float Cs) {\\nreturn (1.0 - step(0.5, Cs)) * (2.0 * Cs * Cb) + step(0.5, Cs) * (1.0 - 2.0 * (1.0 - Cs) * (1.0 - Cb));\\n}\\nfloat reflectBlend(in float Cb, in float Cs) {\\nreturn (Cs == 1.0) ? Cs : min(Cb * Cb / (1.0 - Cs), 1.0);\\n}\\nfloat softLight(in float Cb, in float Cs) {\\nif (Cs <= 0.5) {\\nreturn Cb - (1.0 - 2.0 * Cs) * Cb * (1.0 - Cb);\\n}\\nif (Cb <= 0.25) {\\nreturn Cb + (2.0 * Cs - 1.0) * Cb * ((16.0 * Cb - 12.0) * Cb + 3.0);\\n}\\nreturn Cb + (2.0 * Cs - 1.0) * (sqrt(Cb) - Cb);\\n}\\nfloat vividLight(in float Cb, in float Cs) {\\nreturn (1.0 - step(0.5, Cs)) * colorBurn(Cb, 2.0 * Cs) + step(0.5, Cs) * colorDodge(Cb, (2.0 * (Cs - 0.5)));\\n}\\nfloat minv3(in vec3 c) {\\nreturn min(min(c.r, c.g), c.b);\\n}\\nfloat maxv3(in vec3 c) {\\nreturn max(max(c.r, c.g), c.b);\\n}\\nfloat lumv3(in vec3 c) {\\nreturn dot(c, vec3(0.3, 0.59, 0.11));\\n}\\nfloat satv3(vec3 c) {\\nreturn maxv3(c) - minv3(c);\\n}\\nvec3 clipColor(vec3 color) {\\nfloat lum = lumv3(color);\\nfloat mincol = minv3(color);\\nfloat maxcol = maxv3(color);\\nif (mincol < 0.0) {\\ncolor = lum + ((color - lum) * lum) / (lum - mincol);\\n}\\nif (maxcol > 1.0) {\\ncolor = lum + ((color - lum) * (1.0 - lum)) / (maxcol - lum);\\n}\\nreturn color;\\n}\\nvec3 setLum(vec3 cbase, vec3 clum) {\\nfloat lbase = lumv3(cbase);\\nfloat llum = lumv3(clum);\\nfloat ldiff = llum - lbase;\\nvec3 color = cbase + vec3(ldiff);\\nreturn clipColor(color);\\n}\\nvec3 setLumSat(vec3 cbase, vec3 csat, vec3 clum)\\n{\\nfloat minbase = minv3(cbase);\\nfloat sbase = satv3(cbase);\\nfloat ssat = satv3(csat);\\nvec3 color;\\nif (sbase > 0.0) {\\ncolor = (cbase - minbase) * ssat / sbase;\\n} else {\\ncolor = vec3(0.0);\\n}\\nreturn setLum(color, clum);\\n}\\nvoid main() {\\nvec4 src = texture2D(u_layerTexture, v_uv);\\n#ifdef NORMAL\\ngl_FragColor = src * u_opacity;\\n#else\\nvec4 dst = texture2D(u_backbufferTexture, v_uv);\\nvec3 Cs = src.a == 0.0 ? src.rgb : vec3(src.rgb / src.a);\\nvec3 Cb = dst.a == 0.0 ? dst.rgb : vec3(dst.rgb / dst.a);\\nfloat as = u_opacity * src.a;\\nfloat ab = dst.a;\\n#ifdef DESTINATION_OVER\\ngl_FragColor = vec4(as * Cs * (1.0 - ab) + ab * Cb, as + ab - as * ab);\\n#endif\\n#ifdef SOURCE_IN\\nvec4 color = vec4(as * Cs * ab, as * ab);\\nvec4 fadeColor = (1.0 - u_opacity) * u_inFadeOpacity * vec4(ab * Cb, ab);\\ngl_FragColor = color + fadeColor;\\n#endif\\n#ifdef DESTINATION_IN\\nvec4 color = vec4(ab * Cb * as, ab * as);\\nvec4 fadeColor = (1.0 - u_opacity) * u_inFadeOpacity * vec4(ab * Cb, ab);\\ngl_FragColor = color + fadeColor;\\n#endif\\n#ifdef SOURCE_OUT\\ngl_FragColor = vec4(as * Cs * (1.0 - ab), as * (1.0 - ab));\\n#endif\\n#ifdef DESTINATION_OUT\\ngl_FragColor = vec4(ab * Cb * (1.0 - as), ab * (1.0 - as));\\n#endif\\n#ifdef SOURCE_ATOP\\ngl_FragColor = vec4(as * Cs * ab + ab * Cb * (1.0 - as), ab);\\n#endif\\n#ifdef DESTINATION_ATOP\\ngl_FragColor = vec4(as * Cs * (1.0 - ab) + ab * Cb * as, as);\\n#endif\\n#ifdef XOR\\ngl_FragColor = vec4(as * Cs * (1.0 - ab) + ab * Cb * (1.0 - as),\\nas * (1.0 - ab) + ab * (1.0 - as));\\n#endif\\n#ifdef MULTIPLY\\ngl_FragColor = vec4(as * Cs * ab * Cb + (1.0 - ab) * as * Cs + (1.0 - as) * ab * Cb,\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef SCREEN\\ngl_FragColor = vec4((Cs + Cb - Cs * Cb) * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef OVERLAY\\nvec3 f = vec3(overlay(Cb.r, Cs.r), overlay(Cb.g, Cs.g), overlay(Cb.b, Cs.b));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef DARKEN\\ngl_FragColor = vec4(min(Cs, Cb) * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef LIGHTER\\ngl_FragColor = vec4(as * Cs + ab * Cb, as + ab);\\n#endif\\n#ifdef LIGHTEN\\ngl_FragColor = vec4(max(Cs, Cb) * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef COLOR_DODGE\\nvec3 f = clamp(vec3(colorDodge(Cb.r, Cs.r), colorDodge(Cb.g, Cs.g), colorDodge(Cb.b, Cs.b)), vec3(0.0), vec3(1.0));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef COLOR_BURN\\nvec3 f = vec3(colorBurn(Cb.r, Cs.r), colorBurn(Cb.g, Cs.g), colorBurn(Cb.b, Cs.b));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef HARD_LIGHT\\nvec3 f = vec3(hardLight(Cb.r, Cs.r), hardLight(Cb.g, Cs.g), hardLight(Cb.b, Cs.b));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef SOFT_LIGHT\\nvec3 f = vec3(softLight(Cb.r, Cs.r), softLight(Cb.g, Cs.g), softLight(Cb.b, Cs.b));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef DIFFERENCE\\ngl_FragColor = vec4(abs(Cb - Cs) * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef EXCLUSION\\nvec3 f = Cs + Cb - 2.0 * Cs * Cb;\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef INVERT\\ngl_FragColor = vec4((1.0 - Cb) * as * ab + Cb * ab * (1.0 - as), ab);\\n#endif\\n#ifdef VIVID_LIGHT\\nvec3 f = vec3(clamp(vividLight(Cb.r, Cs.r), 0.0, 1.0),\\nclamp(vividLight(Cb.g, Cs.g), 0.0, 1.0),\\nclamp(vividLight(Cb.b, Cs.b), 0.0, 1.0));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef HUE\\nvec3 f = setLumSat(Cs,Cb,Cb);\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef SATURATION\\nvec3 f = setLumSat(Cb,Cs,Cb);\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef COLOR\\nvec3 f = setLum(Cs,Cb);\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef LUMINOSITY\\nvec3 f = setLum(Cb,Cs);\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef PLUS\\ngl_FragColor = clamp(vec4(src.r + Cb.r, src.g + Cb.g, src.b + Cb.b, as + ab), 0.0, 1.0);\\n#endif\\n#ifdef MINUS\\ngl_FragColor = vec4(clamp(vec3(Cb.r - src.r, Cb.g - src.g, Cb.b - src.b), 0.0, 1.0), ab * as);\\n#endif\\n#ifdef AVERAGE\\nvec3 f = (Cb + Cs) / 2.0;\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#ifdef REFLECT\\nvec3 f = clamp(vec3(reflectBlend(Cb.r, Cs.r),\\nreflectBlend(Cb.g, Cs.g),\\nreflectBlend(Cb.b, Cs.b)), vec3(0.0), vec3(1.0));\\ngl_FragColor = vec4(f * as * ab + Cs * as * (1.0 - ab) + Cb * ab *(1.0 - as),\\nas + ab * (1.0 - as));\\n#endif\\n#endif\\n}\",\"blend.vert\":\"attribute vec2 a_position;\\nvarying mediump vec2 v_uv;\\nvoid main(void) {\\ngl_Position = vec4(a_position , 0.0, 1.0);\\nv_uv = (a_position + 1.0) / 2.0;\\n}\"},debug:{overlay:{\"overlay.frag\":\"precision mediump float;\\nvarying vec4 v_color;\\nvoid main(void) {\\ngl_FragColor = v_color;\\n}\",\"overlay.vert\":\"attribute vec3 a_PositionAndFlags;\\nuniform mat3 u_dvsMat3;\\nuniform vec4 u_colors[4];\\nuniform float u_opacities[4];\\nvarying vec4 v_color;\\nvoid main(void) {\\nvec2 position = a_PositionAndFlags.xy;\\nfloat flags = a_PositionAndFlags.z;\\nint colorIndex = int(mod(flags, 4.0));\\nvec4 color;\\nfor (int i = 0; i < 4; i++) {\\ncolor = u_colors[i];\\nif (i == colorIndex) {\\nbreak;\\n}\\n}\\nint opacityIndex = int(mod(floor(flags / 4.0), 4.0));\\nfloat opacity;\\nfor (int i = 0; i < 4; i++) {\\nopacity = u_opacities[i];\\nif (i == opacityIndex) {\\nbreak;\\n}\\n}\\nv_color = color * opacity;\\ngl_Position = vec4((u_dvsMat3 * vec3(position, 1.0)).xy, 0.0, 1.0);\\n}\"}},dot:{dot:{\"dot.frag\":\"precision mediump float;\\nvarying vec4 v_color;\\nvarying float v_dotRatio;\\nvarying float v_invEdgeRatio;\\nuniform highp float u_tileZoomFactor;\\nvoid main()\\n{\\nfloat dist = length(gl_PointCoord - vec2(.5, .5)) * 2.;\\nfloat alpha = smoothstep(0., 1., v_invEdgeRatio * (dist - v_dotRatio) + 1.);\\ngl_FragColor = v_color * alpha;\\n}\",\"dot.vert\":\"precision highp float;\\nattribute vec2 a_pos;\\nuniform sampler2D u_texture;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp float u_tileZoomFactor;\\nuniform highp float u_dotSize;\\nuniform highp float u_pixelRatio;\\nvarying vec2 v_pos;\\nvarying vec4 v_color;\\nvarying float v_dotRatio;\\nvarying float v_invEdgeRatio;\\nconst float EPSILON = 0.000001;\\nvoid main()\\n{\\nmat3 tileToTileTexture = mat3( 1., 0., 0.,\\n0., -1., 0.,\\n0., 1., 1. );\\nvec3 texCoords = tileToTileTexture * vec3(a_pos.xy / 512., 1.);\\nv_color = texture2D(u_texture, texCoords.xy);\\nfloat smoothEdgeWidth = max(u_dotSize / 2., 1.) ;\\nfloat z = 0.;\\nz += 2.0 * step(v_color.a, EPSILON);\\ngl_PointSize = (smoothEdgeWidth + u_dotSize);\\ngl_Position = vec4((u_dvsMat3 * vec3(a_pos + .5, 1.)).xy, z, 1.);\\nv_dotRatio = u_dotSize / gl_PointSize;\\nv_invEdgeRatio = -1. / ( smoothEdgeWidth / gl_PointSize );\\ngl_PointSize *= (u_pixelRatio * u_tileZoomFactor);\\n}\"}},filtering:{\"bicubic.glsl\":\"vec4 computeWeights(float v) {\\nfloat b = 1.0 / 6.0;\\nfloat v2 = v * v;\\nfloat v3 = v2 * v;\\nfloat w0 = b * (-v3 + 3.0 * v2 - 3.0 * v + 1.0);\\nfloat w1 = b * (3.0 * v3 - 6.0 * v2 + 4.0);\\nfloat w2 = b * (-3.0 * v3 + 3.0 * v2 + 3.0 * v + 1.0);\\nfloat w3 = b * v3;\\nreturn vec4(w0, w1, w2, w3);\\n}\\nvec4 bicubicOffsetsAndWeights(float v) {\\nvec4 w = computeWeights(v);\\nfloat g0 = w.x + w.y;\\nfloat g1 = w.z + w.w;\\nfloat h0 = 1.0 - (w.y / g0) + v;\\nfloat h1 = 1.0 + (w.w / g1) - v;\\nreturn vec4(h0, h1, g0, g1);\\n}\\nvec4 sampleBicubicBSpline(sampler2D sampler, vec2 coords, vec2 texSize) {\\nvec2 eX = vec2(1.0 / texSize.x, 0.0);\\nvec2 eY = vec2(0.0, 1.0 / texSize.y);\\nvec2 texel = coords * texSize - 0.5;\\nvec3 hgX = bicubicOffsetsAndWeights(fract(texel).x).xyz;\\nvec3 hgY = bicubicOffsetsAndWeights(fract(texel).y).xyz;\\nvec2 coords10 = coords + hgX.x * eX;\\nvec2 coords00 = coords - hgX.y * eX;\\nvec2 coords11 = coords10 + hgY.x * eY;\\nvec2 coords01 = coords00 + hgY.x * eY;\\ncoords10 = coords10 - hgY.y * eY;\\ncoords00 = coords00 - hgY.y * eY;\\nvec4 color00 = texture2D(sampler, coords00);\\nvec4 color10 = texture2D(sampler, coords10);\\nvec4 color01 = texture2D(sampler, coords01);\\nvec4 color11 = texture2D(sampler, coords11);\\ncolor00 = mix(color00, color01, hgY.z);\\ncolor10 = mix(color10, color11, hgY.z);\\ncolor00 = mix(color00, color10, hgX.z);\\nreturn color00;\\n}\",\"bilinear.glsl\":\"vec4 sampleBilinear(sampler2D sampler, vec2 coords, vec2 texSize) {\\nvec2 texelStart = floor(coords * texSize);\\nvec2 coord0 = texelStart / texSize;\\nvec2 coord1 = (texelStart + vec2(1.0, 0.0)) / texSize;\\nvec2 coord2 = (texelStart + vec2(0.0, 1.0)) / texSize;\\nvec2 coord3 = (texelStart + vec2(1.0, 1.0)) / texSize;\\nvec4 color0 = texture2D(sampler, coord0);\\nvec4 color1 = texture2D(sampler, coord1);\\nvec4 color2 = texture2D(sampler, coord2);\\nvec4 color3 = texture2D(sampler, coord3);\\nvec2 blend = fract(coords * texSize);\\nvec4 color01 = mix(color0, color1, blend.x);\\nvec4 color23 = mix(color2, color3, blend.x);\\nvec4 color = mix(color01, color23, blend.y);\\n#ifdef NNEDGE\\nfloat alpha = floor(color0.a * color1.a * color2.a * color3.a + 0.5);\\ncolor = color * alpha + (1.0 - alpha) * texture2D(sampler, coords);\\n#endif\\nreturn color;\\n}\",\"epx.glsl\":\"vec4 sampleEPX(sampler2D sampler, float size, vec2 coords, vec2 texSize) {\\nvec2 invSize = 1.0 / texSize;\\nvec2 texel = coords * texSize;\\nvec2 texel_i = floor(texel);\\nvec2 texel_frac = fract(texel);\\nvec4 colorP = texture2D(sampler, texel_i * invSize);\\nvec4 colorP1 = vec4(colorP);\\nvec4 colorP2 = vec4(colorP);\\nvec4 colorP3 = vec4(colorP);\\nvec4 colorP4 = vec4(colorP);\\nvec4 colorA = texture2D(sampler, (texel_i - vec2(0.0, 1.0)) * invSize);\\nvec4 colorB = texture2D(sampler, (texel_i + vec2(1.0, 0.0)) * invSize);\\nvec4 colorC = texture2D(sampler, (texel_i - vec2(1.0, 0.0)) * invSize);\\nvec4 colorD = texture2D(sampler, (texel_i + vec2(0.0, 1.0)) * invSize);\\nif (colorC == colorA && colorC != colorD && colorA != colorB) {\\ncolorP1 = colorA;\\n}\\nif (colorA == colorB && colorA != colorC && colorB != colorD) {\\ncolorP2 = colorB;\\n}\\nif (colorD == colorC && colorD != colorB && colorC != colorA) {\\ncolorP3 = colorC;\\n}\\nif (colorB == colorD && colorB != colorA && colorD != colorC) {\\ncolorP4 = colorD;\\n}\\nvec4 colorP12 = mix(colorP1, colorP2, texel_frac.x);\\nvec4 colorP34 = mix(colorP1, colorP2, texel_frac.x);\\nreturn mix(colorP12, colorP34, texel_frac.y);\\n}\"},fx:{integrate:{\"integrate.frag\":\"precision mediump float;\\nuniform lowp sampler2D u_sourceTexture;\\nuniform lowp sampler2D u_maskTexture;\\nuniform mediump float u_zoomLevel;\\nuniform highp float u_timeDelta;\\nuniform highp float u_animationTime;\\nvarying highp vec2 v_texcoord;\\n#include \\nvoid main()\\n{\\n#ifdef DELTA\\nvec4 texel = texture2D(u_sourceTexture, v_texcoord);\\nvec4 data0 = texture2D(u_maskTexture, v_texcoord);\\nfloat flags = data0.r * 255.0;\\nfloat groupMinZoom = data0.g * 255.0;\\nfloat isVisible = getFilterBit(flags, 0);\\nfloat wouldClip = step(groupMinZoom, u_zoomLevel);\\nfloat direction = wouldClip * 1.0 + (1.0 - wouldClip) * -1.0;\\nfloat dt = u_timeDelta / max(u_animationTime, 0.0001);\\nvec4 nextState = vec4(texel + direction * dt);\\ngl_FragColor = vec4(nextState);\\n#elif defined(UPDATE)\\nvec4 texel = texture2D(u_sourceTexture, v_texcoord);\\ngl_FragColor = texel;\\n#endif\\n}\",\"integrate.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nvarying highp vec2 v_texcoord;\\nvoid main()\\n{\\nv_texcoord = a_pos;\\ngl_Position = vec4(a_pos * 2.0 - 1.0, 0.0, 1.0);\\n}\"}},heatmap:{heatmapResolve:{\"heatmapResolve.frag\":\"precision highp float;\\n#ifdef HEATMAP_PRECISION_HALF_FLOAT\\n#define COMPRESSION_FACTOR 4.0\\n#else\\n#define COMPRESSION_FACTOR 1.0\\n#endif\\nuniform sampler2D u_texture;\\nuniform sampler2D u_gradient;\\nuniform vec2 u_densityMinAndInvRange;\\nuniform float u_densityNormalization;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec4 data = texture2D(u_texture, v_uv);\\nfloat density = data.r * COMPRESSION_FACTOR;\\ndensity *= u_densityNormalization;\\ndensity = (density - u_densityMinAndInvRange.x) * u_densityMinAndInvRange.y;\\nvec4 color = texture2D(u_gradient, vec2(density, 0.5));\\ngl_FragColor = vec4(color.rgb * color.a, color.a);\\n}\",\"heatmapResolve.vert\":\"precision highp float;\\nattribute vec2 a_pos;\\nvarying vec2 v_uv;\\nvoid main() {\\nv_uv = a_pos;\\ngl_Position = vec4(a_pos * 2.0 - 1.0, 1., 1.);\\n}\"}},highlight:{\"blur.frag\":\"varying mediump vec2 v_texcoord;\\nuniform mediump vec4 u_direction;\\nuniform mediump mat4 u_channelSelector;\\nuniform mediump float u_sigma;\\nuniform sampler2D u_texture;\\nmediump float gauss1(mediump vec2 dir) {\\nreturn exp(-dot(dir, dir) / (2.0 * u_sigma * u_sigma));\\n}\\nmediump vec4 selectChannel(mediump vec4 sample) {\\nreturn u_channelSelector * sample;\\n}\\nvoid accumGauss1(mediump float i, inout mediump float tot, inout mediump float weight) {\\nmediump float w = gauss1(i * u_direction.xy);\\ntot += selectChannel(texture2D(u_texture, v_texcoord + i * u_direction.zw))[3] * w;\\nweight += w;\\n}\\nvoid main(void) {\\nmediump float tot = 0.0;\\nmediump float weight = 0.0;\\naccumGauss1(-5.0, tot, weight);\\naccumGauss1(-4.0, tot, weight);\\naccumGauss1(-3.0, tot, weight);\\naccumGauss1(-2.0, tot, weight);\\naccumGauss1(-1.0, tot, weight);\\naccumGauss1(0.0, tot, weight);\\naccumGauss1(1.0, tot, weight);\\naccumGauss1(2.0, tot, weight);\\naccumGauss1(3.0, tot, weight);\\naccumGauss1(4.0, tot, weight);\\naccumGauss1(5.0, tot, weight);\\ngl_FragColor = vec4(0.0, 0.0, 0.0, tot / weight);\\n}\",\"highlight.frag\":\"varying mediump vec2 v_texcoord;\\nuniform sampler2D u_texture;\\nuniform mediump float u_sigma;\\nuniform sampler2D u_shade;\\nuniform mediump vec2 u_minMaxDistance;\\nmediump float estimateDistance() {\\nmediump float y = texture2D(u_texture, v_texcoord)[3];\\nconst mediump float y0 = 0.5;\\nmediump float m0 = 1.0 / (sqrt(2.0 * 3.1415) * u_sigma);\\nmediump float d = (y - y0) / m0;\\nreturn d;\\n}\\nmediump vec4 shade(mediump float d) {\\nmediump float mappedDistance = (d - u_minMaxDistance.x) / (u_minMaxDistance.y - u_minMaxDistance.x);\\nmappedDistance = clamp(mappedDistance, 0.0, 1.0);\\nreturn texture2D(u_shade, vec2(mappedDistance, 0.5));\\n}\\nvoid main(void) {\\nmediump float d = estimateDistance();\\ngl_FragColor = shade(d);\\n}\",\"textured.vert\":\"attribute mediump vec2 a_position;\\nattribute mediump vec2 a_texcoord;\\nvarying mediump vec2 v_texcoord;\\nvoid main(void) {\\ngl_Position = vec4(a_position, 0.0, 1.0);\\nv_texcoord = a_texcoord;\\n}\"},magnifier:{\"magnifier.frag\":\"uniform lowp vec4 u_background;\\nuniform mediump sampler2D u_readbackTexture;\\nuniform mediump sampler2D u_maskTexture;\\nuniform mediump sampler2D u_overlayTexture;\\nuniform bool u_maskEnabled;\\nuniform bool u_overlayEnabled;\\nvarying mediump vec2 v_texCoord;\\nconst lowp float barrelFactor = 1.1;\\nlowp vec2 barrel(lowp vec2 uv) {\\nlowp vec2 uvn = uv * 2.0 - 1.0;\\nif (uvn.x == 0.0 && uvn.y == 0.0) {\\nreturn vec2(0.5, 0.5);\\n}\\nlowp float theta = atan(uvn.y, uvn.x);\\nlowp float r = pow(length(uvn), barrelFactor);\\nreturn r * vec2(cos(theta), sin(theta)) * 0.5 + 0.5;\\n}\\nvoid main(void)\\n{\\nlowp vec4 color = texture2D(u_readbackTexture, barrel(v_texCoord));\\ncolor = (color + (1.0 - color.a) * u_background);\\nlowp float mask = u_maskEnabled ? texture2D(u_maskTexture, v_texCoord).a : 1.0;\\ncolor *= mask;\\nlowp vec4 overlayColor = u_overlayEnabled ? texture2D(u_overlayTexture, v_texCoord) : vec4(0);\\ngl_FragColor = overlayColor + (1.0 - overlayColor.a) * color;\\n}\",\"magnifier.vert\":\"precision mediump float;\\nattribute mediump vec2 a_pos;\\nuniform mediump vec4 u_drawPos;\\nvarying mediump vec2 v_texCoord;\\nvoid main(void)\\n{\\nv_texCoord = a_pos;\\ngl_Position = vec4(u_drawPos.xy + vec2(a_pos - 0.5) * u_drawPos.zw, 0.0, 1.0);\\n}\"},materials:{\"attributeData.glsl\":\"uniform highp sampler2D u_attributeData0;\\nuniform highp sampler2D u_attributeData1;\\nuniform highp sampler2D u_attributeData2;\\nuniform highp sampler2D u_attributeData3;\\nuniform highp sampler2D u_attributeData4;\\nuniform highp sampler2D u_attributeData5;\\nuniform highp int u_attributeTextureSize;\\nhighp vec2 getAttributeDataCoords(in highp vec3 id) {\\nhighp vec3 texel = unpackDisplayIdTexel(id);\\nhighp float size = float(u_attributeTextureSize);\\nhighp float u32 = float(int(texel.r) + int(texel.g) * 256 + int(texel.b) * 256 * 256);\\nhighp float col = mod(u32, size);\\nhighp float row = (u32 - col) / size;\\nhighp float u = col / size;\\nhighp float v = row / size;\\nreturn vec2(u, v);\\n}\\nhighp vec2 getAttributeDataTextureCoords(in highp vec3 id) {\\nreturn (getAttributeDataCoords(id) * 2.0) - 1.0 + (.5 / vec2(u_attributeTextureSize));\\n}\\nhighp vec4 getAttributeData0(in highp vec3 id) {\\nvec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData0, coords);\\n}\\nhighp vec4 getAttributeData1(in highp vec3 id) {\\nhighp vec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData1, coords);\\n}\\nhighp vec4 getAttributeData2(in highp vec3 id) {\\nhighp vec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData2, coords);\\n}\\nhighp vec4 getAttributeData3(in highp vec3 id) {\\nhighp vec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData3, coords);\\n}\\nhighp vec4 getAttributeData4(in highp vec3 id) {\\nhighp vec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData4, coords);\\n}\\nhighp vec4 getAttributeData5(in highp vec3 id) {\\nhighp vec2 coords = getAttributeDataCoords(id);\\nreturn texture2D(u_attributeData5, coords);\\n}\\nfloat u88VVToFloat(in vec2 v) {\\nbool isMagic = v.x == 255.0 && v.y == 255.0;\\nif (isMagic) {\\nreturn NAN_MAGIC_NUMBER;\\n}\\nreturn (v.x + v.y * float(0x100)) - 32768.0;\\n}\",\"barycentric.glsl\":\"float inTriangle(vec3 bary) {\\nvec3 absBary = abs(bary);\\nreturn step((absBary.x + absBary.y + absBary.z), 1.05);\\n}\\nvec3 xyToBarycentric(in vec2 pos, in vec2 v0, in vec2 v1, in vec2 v2) {\\nmat3 xyToBarycentricMat3 = mat3(\\nv1.x * v2.y - v2.x * v1.y, v2.x * v0.y - v0.x * v2.y, v0.x * v1.y - v1.x * v0.y,\\nv1.y - v2.y, v2.y - v0.y, v0.y - v1.y,\\nv2.x - v1.x, v0.x - v2.x, v1.x - v0.x\\n);\\nfloat A2 = v0.x * (v1.y - v2.y) + v1.x * (v2.y - v0.y) + v2.x * (v0.y - v1.y);\\nreturn (1. / A2) * xyToBarycentricMat3 * vec3(1., pos);\\n}\",\"constants.glsl\":\"const float C_DEG_TO_RAD = 3.14159265359 / 180.0;\\nconst float C_256_TO_RAD = 3.14159265359 / 128.0;\\nconst float C_RAD_TO_DEG = 180.0 / 3.141592654;\\nconst float POSITION_PRECISION = 1.0 / 8.0;\\nconst float FILL_POSITION_PRECISION = 1.0 / 1.0;\\nconst float SOFT_EDGE_RATIO = 1.0;\\nconst float THIN_LINE_WIDTH_FACTOR = 1.1;\\nconst float THIN_LINE_HALF_WIDTH = 1.0;\\nconst float EXTRUDE_SCALE_PLACEMENT_PADDING = 1.0 / 4.0;\\nconst float OFFSET_PRECISION = 1.0 / 8.0;\\nconst float OUTLINE_SCALE = 1.0 / 5.0;\\nconst float SDF_FONT_SIZE = 24.0;\\nconst float MAX_SDF_DISTANCE = 8.0;\\nconst float PLACEMENT_PADDING = 8.0;\\nconst float EPSILON = 0.00001;\\nconst float EPSILON_HITTEST = 0.05;\\nconst int MAX_FILTER_COUNT = 2;\\nconst int ATTR_VV_SIZE = 0;\\nconst int ATTR_VV_COLOR = 1;\\nconst int ATTR_VV_OPACITY = 2;\\nconst int ATTR_VV_ROTATION = 3;\\nconst highp float NAN_MAGIC_NUMBER = 1e-30;\\nconst int BITSET_GENERIC_LOCK_COLOR = 1;\\nconst int BITSET_GENERIC_CONSIDER_ALPHA_ONLY = 4;\\nconst int BITSET_MARKER_ALIGNMENT_MAP = 0;\\nconst int BITSET_MARKER_OUTLINE_ALLOW_COLOR_OVERRIDE = 2;\\nconst int BITSET_MARKER_SCALE_SYMBOLS_PROPORTIONALLY = 3;\\nconst int BITSET_TYPE_FILL_OUTLINE = 0;\\nconst int BITSET_FILL_RANDOM_PATTERN_OFFSET = 2;\\nconst int BITSET_FILL_HAS_UNRESOLVED_REPLACEMENT_COLOR = 3;\\nconst int BITSET_LINE_SCALE_DASH = 2;\",fill:{\"common.glsl\":\"#include \\n#ifdef PATTERN\\nuniform mediump vec2 u_mosaicSize;\\nvarying mediump float v_sampleAlphaOnly;\\n#endif\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nuniform lowp vec4 u_isActive[ 2 ];\\nuniform highp float u_dotValue;\\nuniform highp float u_tileDotsOverArea;\\nuniform highp float u_dotTextureDotCount;\\nuniform mediump float u_tileZoomFactor;\\n#endif\\nvarying highp vec3 v_id;\\nvarying lowp vec4 v_color;\\nvarying lowp float v_opacity;\\nvarying mediump vec4 v_aux1;\\n#ifdef PATTERN\\nvarying mediump vec2 v_tileTextureCoord;\\n#endif\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\nvarying lowp float v_isOutline;\\n#endif\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nvarying highp vec2 v_dotTextureCoords;\\nvarying highp vec4 v_dotThresholds[ 2 ];\\n#endif\",\"fill.frag\":\"precision highp float;\\n#include \\n#include \\n#include \\n#ifdef PATTERN\\nuniform lowp sampler2D u_texture;\\n#endif\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nuniform mediump mat4 u_dotColors[ 2 ];\\nuniform sampler2D u_dotTextures[ 2 ];\\nuniform vec4 u_dotBackgroundColor;\\n#endif\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#include \\n#include \\nlowp vec4 drawLine() {\\nfloat v_lineWidth = v_aux1.x;\\nvec2 v_normal = v_aux1.yz;\\nLineData inputs = LineData(\\nv_color,\\nv_normal,\\nv_lineWidth,\\nv_opacity,\\nv_id\\n);\\nreturn shadeLine(inputs);\\n}\\n#endif\\nlowp vec4 drawFill() {\\nlowp vec4 out_color = vec4(0.);\\n#ifdef HITTEST\\nout_color = v_color;\\n#elif defined(PATTERN)\\nmediump vec4 v_tlbr = v_aux1;\\nmediump vec2 normalizedTextureCoord = mod(v_tileTextureCoord, 1.0);\\nmediump vec2 samplePos = mix(v_tlbr.xy, v_tlbr.zw, normalizedTextureCoord);\\nlowp vec4 color = texture2D(u_texture, samplePos);\\nif (v_sampleAlphaOnly > 0.5) {\\ncolor.rgb = vec3(color.a);\\n}\\nout_color = v_opacity * v_color * color;\\n#elif SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY && !defined(HIGHLIGHT)\\nvec4 textureThresholds0 = texture2D(u_dotTextures[0], v_dotTextureCoords);\\nvec4 textureThresholds1 = texture2D(u_dotTextures[1], v_dotTextureCoords);\\nvec4 difference0 = v_dotThresholds[0] - textureThresholds0;\\nvec4 difference1 = v_dotThresholds[1] - textureThresholds1;\\n#ifdef DD_DOT_BLENDING\\nvec4 isPositive0 = step(0.0, difference0);\\nvec4 isPositive1 = step(0.0, difference1);\\nfloat weightSum = dot(isPositive0, difference0) + dot(isPositive1, difference1);\\nfloat lessThanEqZero = step(weightSum, 0.0);\\nfloat greaterThanZero = 1.0 - lessThanEqZero ;\\nfloat divisor = (weightSum + lessThanEqZero);\\nvec4 weights0 = difference0 * isPositive0 / divisor;\\nvec4 weights1 = difference1 * isPositive1 / divisor;\\nvec4 dotColor = u_dotColors[0] * weights0 + u_dotColors[1] * weights1;\\nvec4 preEffectColor = greaterThanZero * dotColor + lessThanEqZero * u_dotBackgroundColor;\\n#else\\nfloat diffMax = max(max4(difference0), max4(difference1));\\nfloat lessThanZero = step(diffMax, 0.0);\\nfloat greaterOrEqZero = 1.0 - lessThanZero;\\nvec4 isMax0 = step(diffMax, difference0);\\nvec4 isMax1 = step(diffMax, difference1);\\nvec4 dotColor = u_dotColors[0] * isMax0 + u_dotColors[1] * isMax1;\\nvec4 preEffectColor = greaterOrEqZero * dotColor + lessThanZero * u_dotBackgroundColor;\\n#endif\\nout_color = preEffectColor;\\n#else\\nout_color = v_opacity * v_color;\\n#endif\\n#ifdef HIGHLIGHT\\nout_color.a = 1.0;\\n#endif\\nreturn out_color;\\n}\\nvoid main() {\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\nif (v_isOutline > 0.5) {\\ngl_FragColor = drawLine();\\n} else {\\ngl_FragColor = drawFill();\\n}\\n#else\\ngl_FragColor = drawFill();\\n#endif\\n}\",\"fill.vert\":\"#include \\n#define PACKED_LINE\\nprecision highp float;\\nattribute float a_bitset;\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nattribute float a_inverseArea;\\nvec4 a_color = vec4(0.0, 0.0, 0.0, 1.0);\\nvec2 a_zoomRange = vec2(0.0, 10000.0);\\n#else\\nattribute vec4 a_color;\\nattribute vec4 a_aux2;\\nattribute vec4 a_aux3;\\n#ifndef SYMBOLOGY_TYPE_IS_SIMPLE_LIKE\\nattribute vec4 a_aux1;\\nattribute vec2 a_zoomRange;\\n#else\\nvec2 a_zoomRange = vec2(0.0, 10000.0);\\n#endif\\n#endif\\nuniform vec2 u_tileOffset;\\n#include \\n#include \\n#include \\n#include \\nconst float INV_SCALE_COMPRESSION_FACTOR = 1.0 / 128.0;\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nvec4 dotThreshold(vec4 featureAttrOverFeatureArea, float dotValue, float tileDotsOverArea) {\\nreturn featureAttrOverFeatureArea * (1.0 / dotValue) * (1.0 / tileDotsOverArea);\\n}\\n#endif\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#include \\n#include \\nvoid drawLine(out lowp vec4 out_color, out highp vec3 out_pos) {\\nLineData outputs = buildLine(\\nout_pos,\\na_id,\\na_pos,\\na_color,\\n(a_aux3.xy - 128.) / 16.,\\n(a_aux3.zw - 128.) / 16.,\\n0.,\\na_aux2.z / 16.,\\na_bitset,\\nvec4(0.),\\nvec2(0.),\\na_aux2.w / 16.\\n);\\nv_id = outputs.id;\\nv_opacity = outputs.opacity;\\nv_aux1 = vec4(outputs.lineHalfWidth, outputs.normal, 0.);\\nout_color = outputs.color;\\n}\\n#endif\\nvoid drawFill(out lowp vec4 out_color, out highp vec3 out_pos) {\\nfloat a_bitSet = a_bitset;\\nout_color = getColor(a_color, a_bitSet, BITSET_GENERIC_LOCK_COLOR);\\nv_opacity = getOpacity();\\nv_id = norm(a_id);\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nmat3 tileToTileNormalized = mat3( 2. / 512., 0., 0.,\\n0., -2. / 512., 0.,\\n-1., 1., 1. );\\nout_pos = tileToTileNormalized * vec3((a_pos * FILL_POSITION_PRECISION), 1.);\\n#else\\nout_pos = u_dvsMat3 * vec3(a_pos * FILL_POSITION_PRECISION, 1.);\\n#endif\\n#ifdef PATTERN\\nvec4 a_tlbr = a_aux1;\\nfloat a_width = a_aux2.x;\\nfloat a_height = a_aux2.y;\\nvec2 a_offset = a_aux2.zw;\\nvec2 a_scale = a_aux3.xy;\\nfloat a_angle = a_aux3.z;\\nvec2 scale = INV_SCALE_COMPRESSION_FACTOR * a_scale;\\nfloat width = u_zoomFactor * a_width * scale.x;\\nfloat height = u_zoomFactor * a_height * scale.y;\\nfloat angle = C_256_TO_RAD * a_angle;\\nfloat sinA = sin(angle);\\nfloat cosA = cos(angle);\\nfloat dx = 0.0;\\nfloat dy = 0.0;\\nif (getBit(a_bitset, BITSET_FILL_RANDOM_PATTERN_OFFSET) > 0.5) {\\nfloat id = rgba2float(vec4(a_id, 0.0));\\ndx = rand(vec2(id, 0.0));\\ndy = rand(vec2(0.0, id));\\n}\\nmat3 patternMatrix = mat3(cosA / width, sinA / height, 0,\\n-sinA / width, cosA / height, 0,\\ndx, dy, 1);\\nvec2 tileOffset = vec2(u_tileOffset.x * cosA - u_tileOffset.y * sinA, u_tileOffset.x * sinA + u_tileOffset.y * cosA);\\ntileOffset = mod(tileOffset, vec2(a_aux2.x, a_aux2.y));\\nvec2 symbolOffset = (a_offset - tileOffset) / vec2(width, height);\\nv_tileTextureCoord = (patternMatrix * vec3(a_pos * FILL_POSITION_PRECISION, 1.0)).xy - symbolOffset;\\nv_aux1 = a_tlbr / u_mosaicSize.xyxy;\\nv_sampleAlphaOnly = getBit(a_bitset, BITSET_GENERIC_CONSIDER_ALPHA_ONLY);\\nif (getBit(a_bitSet, BITSET_FILL_HAS_UNRESOLVED_REPLACEMENT_COLOR) > 0.5) {\\n#ifdef VV_COLOR\\nv_sampleAlphaOnly *= 1.0 - getBit(a_bitSet, BITSET_GENERIC_LOCK_COLOR);\\n#else\\nv_sampleAlphaOnly = 0.0;\\n#endif\\n}\\n#elif SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_DOT_DENSITY\\nvec4 ddAttributeData0 = getAttributeData2(a_id) * u_isActive[0] * a_inverseArea;\\nvec4 ddAttributeData1 = getAttributeData3(a_id) * u_isActive[1] * a_inverseArea;\\nfloat size = u_tileZoomFactor * 512.0 * 1.0 / u_pixelRatio;\\nv_dotThresholds[0] = dotThreshold(ddAttributeData0, u_dotValue, u_tileDotsOverArea);\\nv_dotThresholds[1] = dotThreshold(ddAttributeData1, u_dotValue, u_tileDotsOverArea);\\nv_dotTextureCoords = (a_pos * FILL_POSITION_PRECISION + 0.5) / size;\\n#endif\\n}\\n#ifdef HITTEST\\nvoid draw(out lowp vec4 out_color, out highp vec3 out_pos) {\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\nif (getBit(a_bitset, BITSET_TYPE_FILL_OUTLINE) > 0.5) {\\nout_pos = vec3(0., 0., 2.);\\nreturn;\\n}\\n#endif\\nhittestFill(out_color, out_pos);\\ngl_PointSize = 1.0;\\n}\\n#elif defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE)\\nvoid draw(out lowp vec4 out_color, out highp vec3 out_pos) {\\nv_isOutline = getBit(a_bitset, BITSET_TYPE_FILL_OUTLINE);\\nif (v_isOutline > 0.5) {\\ndrawLine(out_color, out_pos);\\n} else {\\ndrawFill(out_color, out_pos);\\n}\\n}\\n#else\\n#define draw drawFill\\n#endif\\nvoid main()\\n{\\nINIT;\\nhighp vec3 pos = vec3(0.);\\nhighp vec4 color = vec4(0.);\\ndraw(color, pos);\\nv_color = color;\\ngl_Position = vec4(clip(v_color, pos, getFilterFlags(), a_zoomRange), 1.0);\\n}\",\"hittest.glsl\":\"#ifdef HITTEST\\n#include \\nattribute vec2 a_pos1;\\nattribute vec2 a_pos2;\\nvoid hittestFill(\\nout lowp vec4 out_color,\\nout highp vec3 out_pos\\n) {\\nvec3 pos = u_viewMat3 * u_tileMat3 * vec3(a_pos * FILL_POSITION_PRECISION, 1.);\\nvec3 pos1 = u_viewMat3 * u_tileMat3 * vec3(a_pos1 * FILL_POSITION_PRECISION, 1.);\\nvec3 pos2 = u_viewMat3 * u_tileMat3 * vec3(a_pos2 * FILL_POSITION_PRECISION, 1.);\\nfloat hittestDist = u_hittestDist;\\nfloat dist = distPointTriangle(u_hittestPos, pos.xy, pos1.xy, pos2.xy);\\nout_pos = vec3(getAttributeDataTextureCoords(a_id), 0.0);\\nif (dist < 0. || dist >= hittestDist) {\\nout_pos.z += 2.0;\\n}\\nout_color = vec4(1. / 255., 0, 0, dist == 0. ? (1. / 255.) : 0.);\\n}\\n#endif\"},hittest:{\"common.glsl\":\"#ifdef HITTEST\\nuniform float u_hittestDist;\\nuniform highp vec2 u_hittestPos;\\nfloat projectScalar(vec2 a, vec2 b) {\\nreturn dot(a, normalize(b));\\n}\\nfloat distPointSegment(vec2 p0, vec2 p1, vec2 p2) {\\nvec2 L = p2 - p1;\\nvec2 A = p0 - p1;\\nfloat projAL = projectScalar(A, L);\\nfloat t = clamp(projAL / length(L), 0., 1.);\\nreturn distance(p0, p1 + t * (p2 - p1));\\n}\\nvoid hittestMarker(out lowp vec4 out_color, out highp vec3 out_pos, in highp vec3 pos, float size) {\\nfloat dist = distance(pos, vec3(u_hittestPos, 1.));\\nout_pos = vec3(getAttributeDataTextureCoords(a_id), 0.0);\\nif ((dist - size) > u_hittestDist) {\\nout_pos.z += 2.0;\\n}\\nout_color = vec4(1. / 255., 0, 0, (dist - size) < 0. ? (1. / 255.) : 0.);\\n}\\nfloat intersectPointTriangleBary(vec2 p, vec2 a, vec2 b, vec2 c) {\\nreturn inTriangle(xyToBarycentric(p, a, b, c));\\n}\\nfloat distPointTriangle(vec2 p, vec2 a, vec2 b, vec2 c) {\\nvec2 ba = b - a;\\nvec2 ca = c - a;\\nfloat crossProduct = ba.x * ca.y - ca.x * ba.y;\\nbool isParallel = crossProduct < EPSILON_HITTEST && crossProduct > -EPSILON_HITTEST;\\nif (isParallel) {\\nreturn -1.;\\n}\\nif (intersectPointTriangleBary(p.xy, a, b, c) == 1.) {\\nreturn 0.;\\n}\\nfloat distAB = distPointSegment(p, a, b);\\nfloat distBC = distPointSegment(p, b, c);\\nfloat distCA = distPointSegment(p, c, a);\\nreturn min(min(distAB, distBC), distCA);\\n}\\n#endif\"},icon:{\"common.glsl\":\"#include \\nuniform lowp vec2 u_mosaicSize;\\nvarying lowp vec4 v_color;\\nvarying highp vec3 v_id;\\nvarying highp vec4 v_sizeTex;\\nvarying mediump vec3 v_pos;\\nvarying lowp float v_opacity;\\nuniform lowp sampler2D u_texture;\\n#ifdef SDF\\nvarying lowp vec4 v_outlineColor;\\nvarying mediump float v_outlineWidth;\\nvarying mediump float v_distRatio;\\nvarying mediump float v_overridingOutlineColor;\\nvarying mediump float v_isThin;\\n#endif\\n#ifdef SDF\\nvec4 getColor(vec2 v_size, vec2 v_tex) {\\nlowp vec4 fillPixelColor = v_color;\\nfloat d = 0.5 - rgba2float(texture2D(u_texture, v_tex));\\nfloat size = max(v_size.x, v_size.y);\\nfloat dist = d * size * SOFT_EDGE_RATIO * v_distRatio;\\nfillPixelColor *= clamp(0.5 - dist, 0.0, 1.0);\\nfloat outlineWidth = v_outlineWidth;\\n#ifdef HIGHLIGHT\\noutlineWidth = max(outlineWidth, 4.0 * v_isThin);\\n#endif\\nif (outlineWidth > 0.25) {\\nlowp vec4 outlinePixelColor = v_overridingOutlineColor * v_color + (1.0 - v_overridingOutlineColor) * v_outlineColor;\\nfloat clampedOutlineSize = min(outlineWidth, size);\\noutlinePixelColor *= clamp(0.5 - abs(dist) + clampedOutlineSize * 0.5, 0.0, 1.0);\\nreturn v_opacity * ((1.0 - outlinePixelColor.a) * fillPixelColor + outlinePixelColor);\\n}\\nreturn v_opacity * fillPixelColor;\\n}\\n#else\\nvec4 getColor(vec2 _v_size, vec2 v_tex) {\\nlowp vec4 texColor = texture2D(u_texture, v_tex);\\nreturn v_opacity * texColor * v_color;\\n}\\n#endif\",heatmapAccumulate:{\"common.glsl\":\"varying lowp vec4 v_hittestResult;\\nvarying mediump vec2 v_offsetFromCenter;\\nvarying highp float v_fieldValue;\",\"heatmapAccumulate.frag\":\"precision mediump float;\\n#include \\n#ifdef HEATMAP_PRECISION_HALF_FLOAT\\n#define COMPRESSION_FACTOR 0.25\\n#else\\n#define COMPRESSION_FACTOR 1.0\\n#endif\\nuniform lowp sampler2D u_texture;\\nvoid main() {\\n#ifdef HITTEST\\ngl_FragColor = v_hittestResult;\\n#else\\nfloat radius = length(v_offsetFromCenter);\\nfloat shapeWeight = step(radius, 1.0);\\nfloat oneMinusRadiusSquared = 1.0 - radius * radius;\\nfloat kernelWeight = oneMinusRadiusSquared * oneMinusRadiusSquared;\\ngl_FragColor = vec4(shapeWeight * kernelWeight * v_fieldValue * COMPRESSION_FACTOR);\\n#endif\\n}\",\"heatmapAccumulate.vert\":\"precision highp float;\\nattribute vec2 a_vertexOffset;\\nvec4 a_color = vec4(0.0);\\nvec2 a_zoomRange = vec2(0.0, 10000.0);\\nuniform float u_radius;\\nuniform float u_isFieldActive;\\n#include \\n#include \\n#include \\nvoid main() {\\nfloat filterFlags = getFilterFlags();\\n#ifdef HITTEST\\nhighp vec4 out_hittestResult = vec4(0.);\\nhighp vec3 out_pos = vec3(0.);\\nvec3 pos = u_viewMat3 * u_tileMat3 * vec3(a_pos * POSITION_PRECISION, 1.0);\\nhittestMarker(out_hittestResult, out_pos, pos, u_radius);\\nv_hittestResult = out_hittestResult;\\ngl_PointSize = 1.;\\ngl_Position = vec4(clip(a_color, out_pos, filterFlags, a_zoomRange), 1.0);\\n#else\\nv_offsetFromCenter = sign(a_vertexOffset);\\nv_fieldValue = getAttributeData2(a_id).x * u_isFieldActive + 1.0 - u_isFieldActive;\\nvec3 centerPos = u_dvsMat3 * vec3(a_pos * POSITION_PRECISION, 1.0);\\nvec3 vertexPos = centerPos + u_displayViewMat3 * vec3(v_offsetFromCenter, 0.0) * u_radius;\\ngl_Position = vec4(clip(a_color, vertexPos, filterFlags, a_zoomRange), 1.0);\\n#endif\\n}\"},\"hittest.glsl\":\"#ifdef HITTEST\\n#include \\nattribute vec2 a_vertexOffset1;\\nattribute vec2 a_vertexOffset2;\\nattribute vec2 a_texCoords1;\\nattribute vec2 a_texCoords2;\\nvec2 getTextureCoords(in vec3 bary, in vec2 texCoords0, in vec2 texCoords1, in vec2 texCoords2) {\\nreturn texCoords0 * bary.x + texCoords1 * bary.y + texCoords2 * bary.z;\\n}\\nvoid hittestIcon(\\ninout lowp vec4 out_color,\\nout highp vec3 out_pos,\\nin vec3 pos,\\nin vec3 offset,\\nin vec2 size,\\nin float scaleFactor,\\nin float isMapAligned\\n) {\\nout_pos = vec3(getAttributeDataTextureCoords(a_id), 0.0);\\nvec3 posBase = u_viewMat3 * u_tileMat3 * pos;\\nvec3 offset1 = scaleFactor * vec3(a_vertexOffset1 / 16.0, 0.);\\nvec3 offset2 = scaleFactor * vec3(a_vertexOffset2 / 16.0, 0.);\\nvec2 pos0 = (posBase + getMatrixNoDisplay(isMapAligned) * offset).xy;\\nvec2 pos1 = (posBase + getMatrixNoDisplay(isMapAligned) * offset1).xy;\\nvec2 pos2 = (posBase + getMatrixNoDisplay(isMapAligned) * offset2).xy;\\nvec3 bary0 = xyToBarycentric(u_hittestPos + vec2(-u_hittestDist, -u_hittestDist), pos0, pos1, pos2);\\nvec3 bary1 = xyToBarycentric(u_hittestPos + vec2(0., -u_hittestDist), pos0, pos1, pos2);\\nvec3 bary2 = xyToBarycentric(u_hittestPos + vec2(u_hittestDist, -u_hittestDist), pos0, pos1, pos2);\\nvec3 bary3 = xyToBarycentric(u_hittestPos + vec2(-u_hittestDist, 0.), pos0, pos1, pos2);\\nvec3 bary4 = xyToBarycentric(u_hittestPos, pos0, pos1, pos2);\\nvec3 bary5 = xyToBarycentric(u_hittestPos + vec2(u_hittestDist, 0.), pos0, pos1, pos2);\\nvec3 bary6 = xyToBarycentric(u_hittestPos + vec2(-u_hittestDist, u_hittestDist), pos0, pos1, pos2);\\nvec3 bary7 = xyToBarycentric(u_hittestPos + vec2(0., u_hittestDist), pos0, pos1, pos2);\\nvec3 bary8 = xyToBarycentric(u_hittestPos + vec2(u_hittestDist, u_hittestDist), pos0, pos1, pos2);\\nvec2 tex0 = a_texCoords / u_mosaicSize;\\nvec2 tex1 = a_texCoords1 / u_mosaicSize;\\nvec2 tex2 = a_texCoords2 / u_mosaicSize;\\nfloat alphaSum = 0.;\\nalphaSum += inTriangle(bary0) * getColor(size, getTextureCoords(bary0, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary1) * getColor(size, getTextureCoords(bary1, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary2) * getColor(size, getTextureCoords(bary2, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary3) * getColor(size, getTextureCoords(bary3, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary4) * getColor(size, getTextureCoords(bary4, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary5) * getColor(size, getTextureCoords(bary5, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary6) * getColor(size, getTextureCoords(bary6, tex0, tex1, tex2)).a;\\nalphaSum += inTriangle(bary7) * getColor(size, getTextureCoords(bary7, tex0, tex1, tex2)).a;\\nout_pos.z += step(alphaSum, .05) * 2.0;\\nout_color = vec4(1. / 255., 0., 0., alphaSum / 255.);\\n}\\n#endif\",\"icon.frag\":\"precision mediump float;\\n#include \\n#include \\n#include \\nvoid main()\\n{\\n#ifdef HITTEST\\nvec4 color = v_color;\\n#else\\nvec4 color = getColor(v_sizeTex.xy, v_sizeTex.zw);\\n#endif\\n#ifdef HIGHLIGHT\\ncolor.a = step(1.0 / 255.0, color.a);\\n#endif\\ngl_FragColor = color;\\n}\",\"icon.vert\":\"precision highp float;\\nattribute vec4 a_color;\\nattribute vec4 a_outlineColor;\\nattribute vec4 a_sizeAndOutlineWidth;\\nattribute vec2 a_vertexOffset;\\nattribute vec2 a_texCoords;\\nattribute vec2 a_bitSetAndDistRatio;\\nattribute vec2 a_zoomRange;\\n#include \\n#include \\n#include \\nfloat getMarkerScaleFactor(inout vec2 size, in float referenceSize) {\\n#ifdef VV_SIZE\\nfloat f = getSize(size.y) / size.y;\\nfloat sizeFactor = size.y / referenceSize;\\nreturn getSize(referenceSize) / referenceSize;\\n#else\\nreturn 1.;\\n#endif\\n}\\nvoid main()\\n{\\nINIT;\\nfloat a_bitSet = a_bitSetAndDistRatio.x;\\nvec3 pos = vec3(a_pos * POSITION_PRECISION, 1.0);\\nvec2 size = a_sizeAndOutlineWidth.xy * a_sizeAndOutlineWidth.xy / 128.0;\\nvec3 offset = vec3(a_vertexOffset / 16.0, 0.);\\nfloat outlineSize = a_sizeAndOutlineWidth.z * a_sizeAndOutlineWidth.z / 128.0;\\nfloat isMapAligned = getBit(a_bitSet, BITSET_MARKER_ALIGNMENT_MAP);\\nfloat referenceSize = a_sizeAndOutlineWidth.w * a_sizeAndOutlineWidth.w / 128.0;\\nfloat scaleSymbolProportionally = getBit(a_bitSet, BITSET_MARKER_SCALE_SYMBOLS_PROPORTIONALLY);\\nfloat scaleFactor = getMarkerScaleFactor(size, referenceSize);\\nsize.xy *= scaleFactor;\\noffset.xy *= scaleFactor;\\noutlineSize *= scaleSymbolProportionally * (scaleFactor - 1.0) + 1.0;\\nvec2 v_tex = a_texCoords / u_mosaicSize;\\nfloat filterFlags = getFilterFlags();\\nv_color = getColor(a_color, a_bitSet, BITSET_GENERIC_LOCK_COLOR);\\nv_opacity = getOpacity();\\nv_id = norm(a_id);\\nv_pos = u_dvsMat3 * pos + getMatrix(isMapAligned) * getRotation() * offset;\\nv_sizeTex = vec4(size.xy, v_tex.xy);\\n#ifdef SDF\\nv_isThin = getBit(a_bitSet, BITSET_MARKER_OUTLINE_ALLOW_COLOR_OVERRIDE);\\n#ifdef VV_COLOR\\nv_overridingOutlineColor = v_isThin;\\n#else\\nv_overridingOutlineColor = 0.0;\\n#endif\\nv_outlineWidth = min(outlineSize, max(max(size.x, size.y) - 0.99, 0.0));\\nv_outlineColor = a_outlineColor;\\nv_distRatio = a_bitSetAndDistRatio.y / 126.0;\\n#endif\\n#ifdef HITTEST\\nhighp vec4 out_color = vec4(0.);\\nhighp vec3 out_pos = vec3(0.);\\nhittestIcon(out_color, out_pos, pos, offset, size, scaleFactor, isMapAligned);\\nv_color = out_color;\\ngl_PointSize = 1.;\\ngl_Position = vec4(clip(v_color, out_pos, filterFlags, a_zoomRange), 1.0);\\n#else\\ngl_Position = vec4(clip(v_color, v_pos, filterFlags, a_zoomRange), 1.0);\\n#endif\\n}\"},label:{\"common.glsl\":\"uniform mediump float u_zoomLevel;\\nuniform mediump float u_mapRotation;\\nuniform mediump float u_mapAligned;\\nuniform mediump vec2 u_mosaicSize;\\nvarying mediump float v_antialiasingWidth;\\nvarying mediump float v_edgeDistanceOffset;\\nvarying mediump vec2 v_tex;\\nvarying mediump vec4 v_color;\\nvarying lowp vec4 v_animation;\",\"label.frag\":\"#include \",\"label.vert\":\"precision highp float;\\n#include \\n#include \\nattribute vec4 a_color;\\nattribute vec4 a_haloColor;\\nattribute vec4 a_texAndSize;\\nattribute vec4 a_refSymbolAndPlacementOffset;\\nattribute vec4 a_glyphData;\\nattribute vec2 a_vertexOffset;\\nattribute vec2 a_texCoords;\\nuniform float u_isHaloPass;\\nuniform float u_isBackgroundPass;\\nuniform float u_mapRotation;\\nuniform float u_mapAligned;\\nfloat getZ(in float minZoom, in float maxZoom, in float angle) {\\nfloat glyphAngle = angle * 360.0 / 254.0;\\nfloat mapAngle = u_mapRotation * 360.0 / 254.0;\\nfloat diffAngle = min(360.0 - abs(mapAngle - glyphAngle), abs(mapAngle - glyphAngle));\\nfloat z = 0.0;\\nz += u_mapAligned * (2.0 * (1.0 - step(minZoom, u_currentZoom)));\\nz += u_mapAligned * 2.0 * step(90.0, diffAngle);\\nz += 2.0 * (1.0 - step(u_currentZoom, maxZoom));\\nreturn z;\\n}\\nvoid main()\\n{\\nINIT;\\nfloat groupMinZoom = getMinZoom();\\nfloat glyphMinZoom = a_glyphData.x;\\nfloat glyphMaxZoom = a_glyphData.y;\\nfloat glyphAngle = a_glyphData.z;\\nfloat a_isBackground = a_glyphData.w;\\nfloat a_minZoom = max(groupMinZoom, glyphMinZoom);\\nfloat a_placementPadding = a_refSymbolAndPlacementOffset.x * EXTRUDE_SCALE_PLACEMENT_PADDING;\\nvec2 a_placementDir = unpack_u8_nf32(a_refSymbolAndPlacementOffset.zw);\\nfloat a_refSymbolSize = a_refSymbolAndPlacementOffset.y;\\nfloat fontSize = a_texAndSize.z;\\nfloat haloSize = a_texAndSize.w * OUTLINE_SCALE;\\nvec2 vertexOffset = a_vertexOffset * OFFSET_PRECISION;\\nvec3 pos = vec3(a_pos * POSITION_PRECISION, 1.0);\\nfloat z = getZ(a_minZoom, glyphMaxZoom, glyphAngle);\\nfloat fontScale = fontSize / SDF_FONT_SIZE;\\nfloat halfSize = getSize(a_refSymbolSize) / 2.0;\\nfloat animation = pow(getAnimationState(), vec4(2.0)).r;\\nfloat isText = 1.0 - a_isBackground;\\nfloat isBackground = u_isBackgroundPass * a_isBackground;\\nvec4 nonHaloColor = (isBackground + isText) * a_color;\\nv_color = animation * ((1.0 - u_isHaloPass) * nonHaloColor + (u_isHaloPass * a_haloColor));\\nv_opacity = 1.0;\\nv_tex = a_texCoords / u_mosaicSize;\\nv_edgeDistanceOffset = u_isHaloPass * haloSize / fontScale / MAX_SDF_DISTANCE;\\nv_antialiasingWidth = 0.105 * SDF_FONT_SIZE / fontSize / u_pixelRatio;\\nvec2 placementOffset = a_placementDir * (halfSize + a_placementPadding);\\nvec3 glyphOffset = u_displayMat3 * vec3(vertexOffset + placementOffset, 0.0);\\nvec3 v_pos = vec3((u_dvsMat3 * pos + glyphOffset).xy, z);\\nfloat isHidden = u_isBackgroundPass * isText + (1.0 - u_isBackgroundPass) * a_isBackground;\\nv_pos.z += 2.0 * isHidden;\\ngl_Position = vec4(v_pos, 1.0);\\n#ifdef DEBUG\\nv_color = vec4(a_color.rgb, z == 0.0 ? 1.0 : 0.645);\\n#endif\\n}\"},line:{\"common.glsl\":\"varying lowp vec4 v_color;\\nvarying highp vec3 v_id;\\nvarying mediump vec2 v_normal;\\nvarying mediump float v_lineHalfWidth;\\nvarying lowp float v_opacity;\\n#ifdef PATTERN\\nvarying mediump vec4 v_tlbr;\\nvarying mediump vec2 v_patternSize;\\n#endif\\n#if defined(PATTERN) || defined(SDF)\\nvarying highp float v_accumulatedDistance;\\n#endif\\n#ifdef SDF\\nvarying mediump float v_lineWidthRatio;\\n#endif\",\"hittest.glsl\":\"#include \\n#ifdef HITTEST\\nattribute vec2 a_pos1;\\nattribute vec2 a_pos2;\\nvoid hittestLine(out lowp vec4 out_color, out highp vec3 out_pos, float halfWidth) {\\nvec3 pos = u_viewMat3 * u_tileMat3 * vec3(a_pos * POSITION_PRECISION, 1.);\\nvec3 pos1 = u_viewMat3 * u_tileMat3 * vec3(a_pos1 * POSITION_PRECISION, 1.);\\nvec3 pos2 = u_viewMat3 * u_tileMat3 * vec3(a_pos2 * POSITION_PRECISION, 1.);\\nvec3 outTextureCoords = vec3(getAttributeDataTextureCoords(a_id), 0.0);\\nfloat dist = min(distPointSegment(u_hittestPos, pos.xy, pos1.xy),\\ndistPointSegment(u_hittestPos, pos.xy, pos2.xy)) - halfWidth;\\nout_pos = vec3(getAttributeDataTextureCoords(a_id), 0.0);\\nif (dist >= u_hittestDist) {\\nout_pos.z += 2.0;\\n}\\nout_color = vec4(1. / 255., 0, 0, dist <= 0. ? (1. / 255.) : 0.);\\n}\\n#endif\",\"line.frag\":\"precision lowp float;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef HITTEST\\nvoid main() {\\ngl_FragColor = v_color;\\n}\\n#else\\nvoid main() {\\nLineData inputs = LineData(\\nv_color,\\nv_normal,\\nv_lineHalfWidth,\\nv_opacity,\\n#ifndef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#ifdef PATTERN\\nv_tlbr,\\nv_patternSize,\\n#endif\\n#ifdef SDF\\nv_lineWidthRatio,\\n#endif\\n#if defined(PATTERN) || defined(SDF)\\nv_accumulatedDistance,\\n#endif\\n#endif\\nv_id\\n);\\ngl_FragColor = shadeLine(inputs);\\n}\\n#endif\",\"line.vert\":\"precision highp float;\\nattribute vec4 a_color;\\nattribute vec4 a_offsetAndNormal;\\nattribute vec2 a_accumulatedDistanceAndHalfWidth;\\nattribute vec4 a_tlbr;\\nattribute vec4 a_segmentDirection;\\nattribute vec2 a_aux;\\nattribute vec2 a_zoomRange;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef HITTEST\\nvoid draw() {\\nfloat aa = 0.5 * u_antialiasing;\\nfloat a_halfWidth = a_accumulatedDistanceAndHalfWidth.y / 16.;\\nfloat a_cimHalfWidth = a_aux.x / 16. ;\\nvec2 a_offset = a_offsetAndNormal.xy / 16.;\\nfloat baseWidth = getBaseLineHalfWidth(a_halfWidth, a_cimHalfWidth);\\nfloat halfWidth = getLineHalfWidth(baseWidth, aa);\\nhighp vec3 pos = vec3(0.);\\nv_color = vec4(0.);\\nhittestLine(v_color, pos, halfWidth);\\ngl_PointSize = 1.;\\ngl_Position = vec4(clip(v_color, pos, getFilterFlags(), a_zoomRange), 1.0);\\n}\\n#else\\nvoid draw()\\n{\\nhighp vec3 pos = vec3(0.);\\nLineData outputs = buildLine(\\npos,\\na_id,\\na_pos,\\na_color,\\na_offsetAndNormal.xy / 16.,\\na_offsetAndNormal.zw / 16.,\\na_accumulatedDistanceAndHalfWidth.x,\\na_accumulatedDistanceAndHalfWidth.y / 16.,\\na_segmentDirection.w,\\na_tlbr,\\na_segmentDirection.xy / 16.,\\na_aux.x / 16.\\n);\\nv_id = outputs.id;\\nv_color = outputs.color;\\nv_normal = outputs.normal;\\nv_lineHalfWidth = outputs.lineHalfWidth;\\nv_opacity = outputs.opacity;\\n#ifndef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#ifdef PATTERN\\nv_tlbr = outputs.tlbr;\\nv_patternSize = outputs.patternSize;\\n#endif\\n#ifdef SDF\\nv_lineWidthRatio = outputs.lineWidthRatio;\\n#endif\\n#if defined(PATTERN) || defined(SDF)\\nv_accumulatedDistance = outputs.accumulatedDistance;\\n#endif\\n#endif\\ngl_Position = vec4(clip(outputs.color, pos, getFilterFlags(), a_zoomRange), 1.0);\\n}\\n#endif\\nvoid main() {\\nINIT;\\ndraw();\\n}\"},pie:{\"pie.frag\":\"precision mediump float;\\n#include \\n#include \\n#include \\n#include \\nvarying float v_size;\\nvarying vec2 v_offset;\\nvarying vec2 v_filteredSectorToColorId[NUMBER_OF_FIELDS];\\nvarying float v_numOfEntries;\\nvarying float v_maxSectorAngle;\\nuniform lowp vec4 u_colors[NUMBER_OF_FIELDS];\\nuniform lowp vec4 u_defaultColor;\\nuniform lowp vec4 u_othersColor;\\nuniform lowp vec4 u_outlineColor;\\nuniform float u_donutRatio;\\nuniform float u_sectorThreshold;\\nstruct FilteredChartInfo {\\nfloat endSectorAngle;\\nint colorId;\\n};\\nlowp vec4 getSectorColor(in int index, in vec2 filteredSectorToColorId[NUMBER_OF_FIELDS]) {\\n#if __VERSION__ == 300\\nmediump int colorIndex = int(filteredSectorToColorId[index].y);\\nreturn u_colors[colorIndex];\\n#else\\nmediump int colorIndex;\\nfor (int i = 0; i < NUMBER_OF_FIELDS; ++i) {\\nif (i == index) {\\ncolorIndex = int(filteredSectorToColorId[i].y);\\n}\\n}\\nfor (int i = 0; i < NUMBER_OF_FIELDS; ++i) {\\nif (i == colorIndex) {\\nreturn u_colors[i];\\n}\\n}\\nreturn u_colors[NUMBER_OF_FIELDS - 1];\\n#endif\\n}\\nconst int OTHER_SECTOR_ID = 255;\\n#ifdef HITTEST\\nvec4 getColor() {\\nreturn v_color;\\n}\\n#else\\nvec4 getColor() {\\nfloat angle = 90.0 - C_RAD_TO_DEG * atan2(v_offset.y, v_offset.x);\\nif (angle < 0.0) {\\nangle += 360.0;\\n} else if (angle > 360.0) {\\nangle = mod(angle, 360.0);\\n}\\nint numOfEntries = int(v_numOfEntries);\\nfloat maxSectorAngle = v_maxSectorAngle;\\nlowp vec4 fillColor = (maxSectorAngle > 0.0 || u_sectorThreshold > 0.0) ? u_othersColor : u_defaultColor;\\nlowp vec4 prevColor = vec4(0.0);\\nlowp vec4 nextColor = vec4(0.0);\\nfloat startSectorAngle = 0.0;\\nfloat endSectorAngle = 0.0;\\nif (angle < maxSectorAngle) {\\nfor (int index = 0; index < NUMBER_OF_FIELDS; ++index) {\\nstartSectorAngle = endSectorAngle;\\nendSectorAngle = v_filteredSectorToColorId[index].x;\\nif (endSectorAngle > angle) {\\nfillColor = getSectorColor(index, v_filteredSectorToColorId);\\nprevColor = u_sectorThreshold != 0.0 && index == 0 && abs(360.0 - maxSectorAngle) < EPSILON ? u_othersColor :\\ngetSectorColor(index > 0 ? index - 1 : numOfEntries - 1, v_filteredSectorToColorId);\\nnextColor = u_sectorThreshold != 0.0 && abs(endSectorAngle - maxSectorAngle) < EPSILON ? u_othersColor :\\ngetSectorColor(index < numOfEntries - 1 ? index + 1 : 0, v_filteredSectorToColorId);\\nbreak;\\n}\\nif (index == numOfEntries - 1) {\\nbreak;\\n}\\n}\\n} else {\\nprevColor = getSectorColor(numOfEntries - 1, v_filteredSectorToColorId);\\nnextColor = getSectorColor(0, v_filteredSectorToColorId);\\nstartSectorAngle = maxSectorAngle;\\nendSectorAngle = 360.0;\\n}\\nlowp vec4 outlineColor = u_outlineColor;\\nfloat offset = length(v_offset);\\nfloat distanceSize = offset * v_size;\\nif (startSectorAngle != 0.0 || endSectorAngle != 360.0) {\\nfloat distanceToStartSector = (angle - startSectorAngle);\\nfloat distanceToEndSector = (endSectorAngle - angle);\\nfloat sectorThreshold = 0.6;\\nfloat beginSectorAlpha = smoothstep(0.0, sectorThreshold, distanceToStartSector * offset);\\nfloat endSectorAlpha = smoothstep(0.0, sectorThreshold, distanceToEndSector * offset);\\nif (endSectorAlpha > 0.0) {\\nfillColor = mix(nextColor, fillColor, endSectorAlpha);\\n} else if (beginSectorAlpha > 0.0) {\\nfillColor = mix(prevColor, fillColor, beginSectorAlpha);\\n}\\n}\\nfloat donutSize = u_donutRatio * (v_size - v_outlineWidth);\\nfloat endOfDonut = donutSize - v_outlineWidth;\\nfloat aaThreshold = 0.75;\\nfloat innerCircleAlpha = endOfDonut - aaThreshold > 0.0 ? smoothstep(endOfDonut - aaThreshold, endOfDonut + aaThreshold, distanceSize) : 1.0;\\nfloat outerCircleAlpha = 1.0 - smoothstep(v_size - aaThreshold, v_size + aaThreshold , distanceSize);\\nfloat circleAlpha = innerCircleAlpha * outerCircleAlpha;\\nfloat startOfOutline = v_size - v_outlineWidth;\\nif (startOfOutline > 0.0 && v_outlineWidth > 0.25) {\\nfloat outlineFactor = smoothstep(startOfOutline - aaThreshold, startOfOutline + aaThreshold, distanceSize);\\nfloat innerLineFactor = donutSize - aaThreshold > 0.0 ? 1.0 - smoothstep(donutSize - aaThreshold, donutSize + aaThreshold , distanceSize) : 0.0;\\nfillColor = mix(fillColor, outlineColor, innerLineFactor + outlineFactor);\\n}\\nreturn v_opacity * circleAlpha * fillColor;\\n}\\n#endif\\nvoid main()\\n{\\nvec4 color = getColor();\\n#ifdef HIGHLIGHT\\ncolor.a = step(1.0 / 255.0, color.a);\\n#endif\\ngl_FragColor = color;\\n}\",\"pie.vert\":\"precision highp float;\\nattribute vec4 a_color;\\nattribute vec4 a_outlineColor;\\nattribute vec4 a_sizeAndOutlineWidth;\\nattribute vec2 a_vertexOffset;\\nattribute vec2 a_texCoords;\\nattribute vec2 a_bitSetAndDistRatio;\\nattribute vec2 a_zoomRange;\\nuniform float u_outlineWidth;\\nuniform mediump float u_sectorThreshold;\\nvarying float v_size;\\nvarying vec2 v_offset;\\nvarying vec2 v_filteredSectorToColorId[NUMBER_OF_FIELDS];\\nvarying float v_numOfEntries;\\nvarying float v_maxSectorAngle;\\nstruct FilteredChartInfo {\\nfloat endSectorAngle;\\nint colorId;\\n};\\nint filter(in float sectorAngle,\\nin int currentIndex,\\ninout FilteredChartInfo filteredInfo,\\ninout vec2 filteredSectorToColorId[NUMBER_OF_FIELDS]) {\\nif (sectorAngle > u_sectorThreshold * 360.0) {\\nfilteredInfo.endSectorAngle += sectorAngle;\\n#if __VERSION__ == 300\\nfilteredSectorToColorId[filteredInfo.colorId] = vec2(filteredInfo.endSectorAngle, currentIndex);\\n#else\\nfor (int i = 0; i < NUMBER_OF_FIELDS; i++) {\\nif (i == filteredInfo.colorId) {\\nfilteredSectorToColorId[i] = vec2(filteredInfo.endSectorAngle, currentIndex);\\n}\\n}\\n#endif\\n++filteredInfo.colorId;\\n}\\nreturn 0;\\n}\\nint filterValues(inout vec2 filteredSectorToColorId[NUMBER_OF_FIELDS],\\ninout FilteredChartInfo filteredInfo,\\nin float sectorAngles[NUMBER_OF_FIELDS]) {\\nfor (int index = 0; index < NUMBER_OF_FIELDS; ++index) {\\nfloat sectorValue = sectorAngles[index];\\nfilter(sectorValue, index, filteredInfo, filteredSectorToColorId);\\n}\\nreturn filteredInfo.colorId;\\n}\\n#include \\n#include \\n#include \\nvec2 getMarkerSize(inout vec2 offset, inout vec2 baseSize, inout float outlineSize, in float referenceSize, in float bitSet) {\\nvec2 outSize = baseSize;\\n#ifdef VV_SIZE\\nfloat r = 0.5 * getSize(referenceSize) / referenceSize;\\noutSize.xy *= r;\\noffset.xy *= r;\\nfloat scaleSymbolProportionally = getBit(bitSet, BITSET_MARKER_SCALE_SYMBOLS_PROPORTIONALLY);\\noutlineSize *= scaleSymbolProportionally * (r - 1.0) + 1.0;\\n#endif\\nreturn outSize;\\n}\\nvec3 getOffset(in vec2 in_offset, float a_bitSet) {\\nfloat isMapAligned = getBit(a_bitSet, BITSET_MARKER_ALIGNMENT_MAP);\\nvec3 offset = vec3(in_offset, 0.0);\\nreturn getMatrix(isMapAligned) * offset;\\n}\\nfloat filterNaNValues(in float value) {\\nreturn value != NAN_MAGIC_NUMBER && value > 0.0 ? value : 0.0;\\n}\\nvoid main()\\n{\\nINIT;\\nvec2 a_size = a_sizeAndOutlineWidth.xy * a_sizeAndOutlineWidth.xy / 128.0;\\nvec2 a_offset = a_vertexOffset / 16.0;\\nfloat outlineSize = u_outlineWidth;\\nfloat a_bitSet = a_bitSetAndDistRatio.x;\\nvec2 size = getMarkerSize(a_offset, a_size, outlineSize, a_sizeAndOutlineWidth.w * a_sizeAndOutlineWidth.w / 128.0, a_bitSet);\\nfloat filterFlags = getFilterFlags();\\nvec3 pos = vec3(a_pos * POSITION_PRECISION, 1.0);\\nv_opacity = getOpacity();\\nv_id = norm(a_id);\\nv_pos = u_dvsMat3 * pos + getOffset(a_offset, a_bitSet);\\nv_offset = sign(a_texCoords - 0.5);\\nv_size = max(size.x, size.y);\\nv_outlineWidth = outlineSize;\\nfloat attributeData[10];\\nvec4 attributeData0 = getAttributeData3(a_id);\\nattributeData[0] = filterNaNValues(attributeData0.x);\\nattributeData[1] = filterNaNValues(attributeData0.y);\\nattributeData[2] = filterNaNValues(attributeData0.z);\\nattributeData[3] = filterNaNValues(attributeData0.w);\\n#if (NUMBER_OF_FIELDS > 4)\\nvec4 attributeData1 = getAttributeData4(a_id);\\nattributeData[4] = filterNaNValues(attributeData1.x);\\nattributeData[5] = filterNaNValues(attributeData1.y);\\nattributeData[6] = filterNaNValues(attributeData1.z);\\nattributeData[7] = filterNaNValues(attributeData1.w);\\n#endif\\n#if (NUMBER_OF_FIELDS > 8)\\nvec4 attributeData2 = getAttributeData5(a_id);\\nattributeData[8] = filterNaNValues(attributeData2.x);\\nattributeData[9] = filterNaNValues(attributeData2.y);\\n#endif\\nfloat sum = 0.0;\\nfor (int i = 0; i < NUMBER_OF_FIELDS; ++i) {\\nsum += attributeData[i];\\n}\\nfloat sectorAngles[NUMBER_OF_FIELDS];\\nfor (int i = 0; i < NUMBER_OF_FIELDS; ++i) {\\nsectorAngles[i] = 360.0 * attributeData[i] / sum;\\n}\\nvec2 filteredSectorToColorId[NUMBER_OF_FIELDS];\\nFilteredChartInfo filteredInfo = FilteredChartInfo(0.0, 0);\\nint numOfEntries = filterValues(filteredSectorToColorId, filteredInfo, sectorAngles);\\nv_numOfEntries = float(numOfEntries);\\nv_maxSectorAngle = filteredInfo.endSectorAngle;\\n#if __VERSION__ == 300\\nv_filteredSectorToColorId = filteredSectorToColorId;\\n#else\\nfor (int i = 0; i < NUMBER_OF_FIELDS; ++i) {\\nif (i == numOfEntries) {\\nbreak;\\n}\\nv_filteredSectorToColorId[i] = filteredSectorToColorId[i];\\n}\\n#endif\\n#ifdef HITTEST\\nhighp vec3 out_pos = vec3(0.0);\\nv_color = vec4(0.0);\\nhittestMarker(v_color, out_pos, u_viewMat3 * u_tileMat3 * pos, v_size);\\ngl_PointSize = 1.0;\\ngl_Position = vec4(clip(v_color, out_pos, filterFlags, a_zoomRange), 1.0);\\n#else\\ngl_Position = vec4(clip(v_color, v_pos, filterFlags, a_zoomRange), 1.0);\\n#endif\\n}\"},shared:{line:{\"common.glsl\":\"#if !defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE) && defined(PATTERN)\\nuniform mediump vec2 u_mosaicSize;\\nvarying mediump float v_sampleAlphaOnly;\\n#endif\\nstruct LineData {\\nlowp vec4 color;\\nmediump vec2 normal;\\nmediump float lineHalfWidth;\\nlowp float opacity;\\n#ifndef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#ifdef PATTERN\\nmediump vec4 tlbr;\\nmediump vec2 patternSize;\\n#endif\\n#ifdef SDF\\nmediump float lineWidthRatio;\\n#endif\\n#if defined(PATTERN) || defined(SDF)\\nhighp float accumulatedDistance;\\n#endif\\n#endif\\nhighp vec3 id;\\n};\",\"line.frag\":\"uniform lowp float u_blur;\\n#if !defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE) && !defined(HIGHLIGHT)\\n#if defined(PATTERN) || defined(SDF)\\nuniform sampler2D u_texture;\\nuniform highp float u_pixelRatio;\\n#endif\\n#endif\\n#if defined(SDF) && !defined(HIGHLIGHT) && !defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE)\\nlowp vec4 getLineColor(LineData line) {\\nmediump float adjustedPatternWidth = line.patternSize.x * 2.0 * line.lineWidthRatio;\\nmediump float relativeTexX = fract(line.accumulatedDistance / adjustedPatternWidth);\\nmediump float relativeTexY = 0.5 + 0.25 * line.normal.y;\\nmediump vec2 texCoord = mix(line.tlbr.xy, line.tlbr.zw, vec2(relativeTexX, relativeTexY));\\nmediump float d = rgba2float(texture2D(u_texture, texCoord)) - 0.5;\\nfloat dist = d * line.lineHalfWidth;\\nreturn line.opacity * clamp(0.5 - dist, 0.0, 1.0) * line.color;\\n}\\n#elif defined(PATTERN) && !defined(HIGHLIGHT) && !defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE)\\nlowp vec4 getLineColor(LineData line) {\\nmediump float lineHalfWidth = line.lineHalfWidth;\\nmediump float adjustedPatternHeight = line.patternSize.y * 2.0 * lineHalfWidth / line.patternSize.x;\\nmediump float relativeTexY = fract(line.accumulatedDistance / adjustedPatternHeight);\\nmediump float relativeTexX = 0.5 + 0.5 * line.normal.y;\\nmediump vec2 texCoord = mix(line.tlbr.xy, line.tlbr.zw, vec2(relativeTexX, relativeTexY));\\nlowp vec4 color = texture2D(u_texture, texCoord);\\n#ifdef VV_COLOR\\nif (v_sampleAlphaOnly > 0.5) {\\ncolor.rgb = vec3(color.a);\\n}\\n#endif\\nreturn line.opacity * line.color * color;\\n}\\n#else\\nlowp vec4 getLineColor(LineData line) {\\nreturn line.opacity * line.color;\\n}\\n#endif\\nvec4 shadeLine(LineData line)\\n{\\nmediump float thinLineFactor = max(THIN_LINE_WIDTH_FACTOR * step(line.lineHalfWidth, THIN_LINE_HALF_WIDTH), 1.0);\\nmediump float fragDist = length(line.normal) * line.lineHalfWidth;\\nlowp float alpha = clamp(thinLineFactor * (line.lineHalfWidth - fragDist) / (u_blur + thinLineFactor - 1.0), 0.0, 1.0);\\nlowp vec4 out_color = getLineColor(line) * alpha;\\n#ifdef HIGHLIGHT\\nout_color.a = step(1.0 / 255.0, out_color.a);\\n#endif\\n#ifdef ID\\nif (out_color.a < 1.0 / 255.0) {\\ndiscard;\\n}\\nout_color = vec4(line.id, 0.0);\\n#endif\\nreturn out_color;\\n}\",\"line.vert\":\"float getBaseLineHalfWidth(in float lineHalfWidth, in float referenceHalfWidth) {\\n#ifdef VV_SIZE\\nfloat refLineWidth = 2.0 * referenceHalfWidth;\\nreturn 0.5 * (lineHalfWidth / max(referenceHalfWidth, EPSILON)) * getSize(refLineWidth);\\n#else\\nreturn lineHalfWidth;\\n#endif\\n}\\nfloat getLineHalfWidth(in float baseWidth, in float aa) {\\nfloat halfWidth = max(baseWidth + aa, 0.45) + 0.1 * aa;\\n#ifdef HIGHLIGHT\\nhalfWidth = max(halfWidth, 2.0);\\n#endif\\nreturn halfWidth;\\n}\\nvec2 getDist(in vec2 offset, in float halfWidth) {\\nfloat thinLineFactor = max(THIN_LINE_WIDTH_FACTOR * step(halfWidth, THIN_LINE_HALF_WIDTH), 1.0);\\nreturn thinLineFactor * halfWidth * offset;\\n}\\nLineData buildLine(\\nout vec3 out_pos,\\nin vec3 in_id,\\nin vec2 in_pos,\\nin vec4 in_color,\\nin vec2 in_offset,\\nin vec2 in_normal,\\nin float in_accumulatedDist,\\nin float in_lineHalfWidth,\\nin float in_bitSet,\\nin vec4 in_tlbr,\\nin vec2 in_segmentDirection,\\nin float in_referenceHalfWidth\\n)\\n{\\nfloat aa = 0.5 * u_antialiasing;\\nfloat baseWidth = getBaseLineHalfWidth(in_lineHalfWidth, in_referenceHalfWidth);\\nfloat halfWidth = getLineHalfWidth(baseWidth, aa);\\nfloat z = 2.0 * step(baseWidth, 0.0);\\nvec2 dist = getDist(in_offset, halfWidth);\\nvec3 offset = u_displayViewMat3 * vec3(dist, 0.0);\\nvec3 pos = u_dvsMat3 * vec3(in_pos * POSITION_PRECISION, 1.0) + offset;\\n#ifdef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\nvec4 color = in_color;\\nfloat opacity = 1.0;\\n#else\\nvec4 color = getColor(in_color, in_bitSet, BITSET_GENERIC_LOCK_COLOR);\\nfloat opacity = getOpacity();\\n#ifdef SDF\\nconst float SDF_PATTERN_HALF_WIDTH = 15.5;\\nfloat scaleDash = getBit(in_bitSet, BITSET_LINE_SCALE_DASH);\\nfloat lineWidthRatio = (scaleDash * max(halfWidth - 0.55 * u_antialiasing, 0.25) + (1.0 - scaleDash)) / SDF_PATTERN_HALF_WIDTH;\\n#endif\\n#endif\\n#if !defined(SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE) && defined(PATTERN)\\nv_sampleAlphaOnly = getBit(in_bitSet, BITSET_GENERIC_CONSIDER_ALPHA_ONLY);\\n#endif\\nout_pos = vec3(pos.xy, z);\\nreturn LineData(\\ncolor,\\nin_normal,\\nhalfWidth,\\nopacity,\\n#ifndef SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#ifdef PATTERN\\nin_tlbr / u_mosaicSize.xyxy,\\nvec2(in_tlbr.z - in_tlbr.x, in_tlbr.w - in_tlbr.y),\\n#endif\\n#ifdef SDF\\nlineWidthRatio,\\n#endif\\n#if defined(PATTERN) || defined(SDF)\\nin_accumulatedDist * u_zoomFactor + dot(in_segmentDirection, dist),\\n#endif\\n#endif\\nnorm(in_id)\\n);\\n}\"}},\"symbologyTypeUtils.glsl\":\"#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_OUTLINE_FILL || SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_OUTLINE_FILL_SIMPLE\\n#define SYMBOLOGY_TYPE_IS_OUTLINE_FILL_LIKE\\n#endif\\n#if SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_SIMPLE || SYMBOLOGY_TYPE == SYMBOLOGY_TYPE_OUTLINE_FILL_SIMPLE\\n#define SYMBOLOGY_TYPE_IS_SIMPLE_LIKE\\n#endif\",text:{\"common.glsl\":\"uniform highp vec2 u_mosaicSize;\\nvarying highp vec3 v_id;\\nvarying mediump vec3 v_pos;\\nvarying lowp float v_opacity;\\nvarying lowp vec4 v_color;\\nvarying highp vec2 v_tex;\\nvarying mediump float v_antialiasingWidth;\\nvarying mediump float v_edgeDistanceOffset;\\nvarying lowp float v_transparency;\",\"hittest.glsl\":\"#include \",\"text.frag\":\"precision mediump float;\\n#include \\nuniform lowp sampler2D u_texture;\\n#ifdef HITTEST\\nvec4 getColor() {\\nreturn v_color;\\n}\\n#else\\nvec4 getColor()\\n{\\nfloat SDF_CUTOFF = (2.0 / 8.0);\\nfloat SDF_BASE_EDGE_DIST = 1.0 - SDF_CUTOFF;\\nlowp float dist = texture2D(u_texture, v_tex).a;\\nmediump float edge = SDF_BASE_EDGE_DIST - v_edgeDistanceOffset;\\n#ifdef HIGHLIGHT\\nedge /= 2.0;\\n#endif\\nlowp float aa = v_antialiasingWidth;\\nlowp float alpha = smoothstep(edge - aa, edge + aa, dist);\\nreturn alpha * v_color * v_opacity;\\n}\\n#endif\\nvoid main()\\n{\\ngl_FragColor = getColor();\\n}\",\"text.vert\":\"precision highp float;\\n#include \\n#include \\n#include \\n#include \\nattribute vec4 a_color;\\nattribute vec4 a_haloColor;\\nattribute vec4 a_texFontSize;\\nattribute vec4 a_aux;\\nattribute vec2 a_zoomRange;\\nattribute vec2 a_vertexOffset;\\nattribute vec2 a_texCoords;\\nuniform float u_isHaloPass;\\nuniform float u_isBackgroundPass;\\nfloat getTextSize(inout vec2 offset, inout float baseSize, in float referenceSize) {\\n#ifdef VV_SIZE\\nfloat r = getSize(referenceSize) / referenceSize;\\nbaseSize *= r;\\noffset.xy *= r;\\nreturn baseSize;\\n#endif\\nreturn baseSize;\\n}\\nvoid main()\\n{\\nINIT;\\nfloat a_isBackground = a_aux.y;\\nfloat a_referenceSize = a_aux.z * a_aux.z / 256.0;\\nfloat a_bitSet = a_aux.w;\\nfloat a_fontSize = a_texFontSize.z;\\nvec2 a_offset = a_vertexOffset * OFFSET_PRECISION;\\nvec3 in_pos = vec3(a_pos * POSITION_PRECISION, 1.0);\\nfloat fontSize = getTextSize(a_offset, a_fontSize, a_referenceSize);\\nfloat fontScale = fontSize / SDF_FONT_SIZE;\\nvec3 offset = getRotation() * vec3(a_offset, 0.0);\\nmat3 extrudeMatrix = getBit(a_bitSet, 0) == 1.0 ? u_displayViewMat3 : u_displayMat3;\\nfloat isText = 1.0 - a_isBackground;\\nfloat isBackground = u_isBackgroundPass * a_isBackground;\\nvec4 nonHaloColor = (isBackground * a_color) + (isText * getColor(a_color, a_bitSet, 1));\\nv_color = u_isHaloPass * a_haloColor + (1.0 - u_isHaloPass) * nonHaloColor;\\nv_opacity = getOpacity();\\nv_id = norm(a_id);\\nv_tex = a_texCoords / u_mosaicSize;\\nv_pos = u_dvsMat3 * in_pos + extrudeMatrix * offset;\\nfloat isHidden = u_isBackgroundPass * isText + (1.0 - u_isBackgroundPass) * a_isBackground;\\nv_pos.z += 2.0 * isHidden;\\nv_edgeDistanceOffset = u_isHaloPass * OUTLINE_SCALE * a_texFontSize.w / fontScale / MAX_SDF_DISTANCE;\\nv_antialiasingWidth = 0.105 * SDF_FONT_SIZE / fontSize / u_pixelRatio;\\n#ifdef HITTEST\\nhighp vec3 out_pos = vec3(0.);\\nv_color = vec4(0.);\\nhittestMarker(v_color, out_pos, u_viewMat3 * u_tileMat3 * vec3(a_pos * POSITION_PRECISION, 1.0)\\n+ u_tileMat3 * offset, fontSize / 2.);\\ngl_PointSize = 1.;\\ngl_Position = vec4(clip(v_color, out_pos, getFilterFlags(), a_zoomRange), 1.0);\\n#else\\ngl_Position = vec4(clip(v_color, v_pos, getFilterFlags(), a_zoomRange), 1.0);\\n#endif\\n}\"},\"utils.glsl\":\"float rshift(in float u32, in int amount) {\\nreturn floor(u32 / pow(2.0, float(amount)));\\n}\\nfloat getBit(in float bitset, in int bitIndex) {\\nfloat offset = pow(2.0, float(bitIndex));\\nreturn mod(floor(bitset / offset), 2.0);\\n}\\nfloat getFilterBit(in float bitset, in int bitIndex) {\\nreturn getBit(bitset, bitIndex + 1);\\n}\\nfloat getHighlightBit(in float bitset) {\\nreturn getBit(bitset, 0);\\n}\\nhighp vec3 unpackDisplayIdTexel(in highp vec3 bitset) {\\nfloat isAggregate = getBit(bitset.b, 7);\\nreturn (1.0 - isAggregate) * bitset + isAggregate * (vec3(bitset.rgb) - vec3(0.0, 0.0, float(0x80)));\\n}\\nvec4 unpack(in float u32) {\\nfloat r = mod(rshift(u32, 0), 255.0);\\nfloat g = mod(rshift(u32, 8), 255.0);\\nfloat b = mod(rshift(u32, 16), 255.0);\\nfloat a = mod(rshift(u32, 24), 255.0);\\nreturn vec4(r, g, b, a);\\n}\\nvec3 norm(in vec3 v) {\\nreturn v /= 255.0;\\n}\\nvec4 norm(in vec4 v) {\\nreturn v /= 255.0;\\n}\\nfloat max4(vec4 target) {\\nreturn max(max(max(target.x, target.y), target.z), target.w);\\n}\\nvec2 unpack_u8_nf32(vec2 bytes) {\\nreturn (bytes - 127.0) / 127.0;\\n}\\nhighp float rand(in vec2 co) {\\nhighp float a = 12.9898;\\nhighp float b = 78.233;\\nhighp float c = 43758.5453;\\nhighp float dt = dot(co, vec2(a,b));\\nhighp float sn = mod(dt, 3.14);\\nreturn fract(sin(sn) * c);\\n}\",\"vcommon.glsl\":\"#include \\n#include \\n#include \\n#include \\n#include \\nattribute vec2 a_pos;\\nattribute highp vec3 a_id;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp mat3 u_displayMat3;\\nuniform highp mat3 u_displayViewMat3;\\nuniform highp mat3 u_tileMat3;\\nuniform highp mat3 u_viewMat3;\\nuniform highp float u_pixelRatio;\\nuniform mediump float u_zoomFactor;\\nuniform mediump float u_antialiasing;\\nuniform mediump float u_currentZoom;\\nvec4 VV_ADATA = vec4(0.0);\\nvoid loadVisualVariableData(inout vec4 target) {\\n#ifdef SUPPORTS_TEXTURE_FLOAT\\ntarget.rgba = getAttributeData2(a_id);\\n#else\\nvec4 data0 = getAttributeData2(a_id);\\nvec4 data1 = getAttributeData3(a_id);\\ntarget.r = u88VVToFloat(data0.rg * 255.0);\\ntarget.g = u88VVToFloat(data0.ba * 255.0);\\ntarget.b = u88VVToFloat(data1.rg * 255.0);\\ntarget.a = u88VVToFloat(data1.ba * 255.0);\\n#endif\\n}\\n#ifdef VV\\n#define INIT loadVisualVariableData(VV_ADATA)\\n#else\\n#define INIT\\n#endif\\nvec4 getColor(in vec4 a_color, in float a_bitSet, int index) {\\n#ifdef VV_COLOR\\nfloat isColorLocked = getBit(a_bitSet, index);\\nreturn getVVColor(VV_ADATA[ATTR_VV_COLOR], a_color, isColorLocked);\\n#else\\nreturn a_color;\\n#endif\\n}\\nfloat getOpacity() {\\n#ifdef VV_OPACITY\\nreturn getVVOpacity(VV_ADATA[ATTR_VV_OPACITY]);\\n#else\\nreturn 1.0;\\n#endif\\n}\\nfloat getSize(in float in_size) {\\n#ifdef VV_SIZE\\nreturn getVVSize(in_size, VV_ADATA[ATTR_VV_SIZE]);\\n#else\\nreturn in_size;\\n#endif\\n}\\nmat3 getRotation() {\\n#ifdef VV_ROTATION\\nreturn getVVRotationMat3(mod(VV_ADATA[ATTR_VV_ROTATION], 360.0));\\n#else\\nreturn mat3(1.0);\\n#endif\\n}\\nfloat getFilterFlags() {\\n#ifdef IGNORES_SAMPLER_PRECISION\\nreturn ceil(getAttributeData0(a_id).x * 255.0);\\n#else\\nreturn getAttributeData0(a_id).x * 255.0;\\n#endif\\n}\\nvec4 getAnimationState() {\\nreturn getAttributeData1(a_id);\\n}\\nfloat getMinZoom() {\\nvec4 data0 = getAttributeData0(a_id) * 255.0;\\nreturn data0.g;\\n}\\nmat3 getMatrixNoDisplay(float isMapAligned) {\\nreturn isMapAligned * u_viewMat3 * u_tileMat3 + (1.0 - isMapAligned) * u_tileMat3;\\n}\\nmat3 getMatrix(float isMapAligned) {\\nreturn isMapAligned * u_displayViewMat3 + (1.0 - isMapAligned) * u_displayMat3;\\n}\\nvec3 clip(inout vec4 color, inout vec3 pos, in float filterFlags, in vec2 minMaxZoom) {\\npos.z += 2.0 * (1.0 - getFilterBit(filterFlags, 0));\\n#ifdef INSIDE\\npos.z += 2.0 * (1.0 - getFilterBit(filterFlags, 1));\\n#elif defined(OUTSIDE)\\npos.z += 2.0 * getFilterBit(filterFlags, 1);\\n#elif defined(HIGHLIGHT)\\n#if !defined(HIGHLIGHT_ALL)\\npos.z += 2.0 * (1.0 - getHighlightBit(filterFlags));\\n#endif\\n#endif\\npos.z += 2.0 * (step(minMaxZoom.y, u_currentZoom) + (1.0 - step(minMaxZoom.x, u_currentZoom)));\\nreturn pos;\\n}\",\"vv.glsl\":\"#if defined(VV_SIZE_MIN_MAX_VALUE) || defined(VV_SIZE_SCALE_STOPS) || defined(VV_SIZE_FIELD_STOPS) || defined(VV_SIZE_UNIT_VALUE)\\n#define VV_SIZE\\n#endif\\n#if defined(VV_COLOR) || defined(VV_SIZE) || defined(VV_OPACITY) || defined(VV_ROTATION)\\n#define VV\\n#endif\\n#ifdef VV_COLOR\\nuniform highp float u_vvColorValues[8];\\nuniform vec4 u_vvColors[8];\\n#endif\\n#ifdef VV_SIZE_MIN_MAX_VALUE\\nuniform highp vec4 u_vvSizeMinMaxValue;\\n#endif\\n#ifdef VV_SIZE_SCALE_STOPS\\nuniform highp float u_vvSizeScaleStopsValue;\\n#endif\\n#ifdef VV_SIZE_FIELD_STOPS\\nuniform highp float u_vvSizeFieldStopsValues[6];\\nuniform float u_vvSizeFieldStopsSizes[6];\\n#endif\\n#ifdef VV_SIZE_UNIT_VALUE\\nuniform highp float u_vvSizeUnitValueWorldToPixelsRatio;\\n#endif\\n#ifdef VV_OPACITY\\nuniform highp float u_vvOpacityValues[8];\\nuniform float u_vvOpacities[8];\\n#endif\\n#ifdef VV_ROTATION\\nuniform lowp float u_vvRotationType;\\n#endif\\nbool isNan(float val) {\\nreturn (val == NAN_MAGIC_NUMBER);\\n}\\n#ifdef VV_SIZE_MIN_MAX_VALUE\\nfloat getVVMinMaxSize(float sizeValue, float fallback) {\\nif (isNan(sizeValue)) {\\nreturn fallback;\\n}\\nfloat interpolationRatio = (sizeValue - u_vvSizeMinMaxValue.x) / (u_vvSizeMinMaxValue.y - u_vvSizeMinMaxValue.x);\\ninterpolationRatio = clamp(interpolationRatio, 0.0, 1.0);\\nreturn u_vvSizeMinMaxValue.z + interpolationRatio * (u_vvSizeMinMaxValue.w - u_vvSizeMinMaxValue.z);\\n}\\n#endif\\n#ifdef VV_SIZE_FIELD_STOPS\\nconst int VV_SIZE_N = 6;\\nfloat getVVStopsSize(float sizeValue, float fallback) {\\nif (isNan(sizeValue)) {\\nreturn fallback;\\n}\\nif (sizeValue <= u_vvSizeFieldStopsValues[0]) {\\nreturn u_vvSizeFieldStopsSizes[0];\\n}\\nfor (int i = 1; i < VV_SIZE_N; ++i) {\\nif (u_vvSizeFieldStopsValues[i] >= sizeValue) {\\nfloat f = (sizeValue - u_vvSizeFieldStopsValues[i-1]) / (u_vvSizeFieldStopsValues[i] - u_vvSizeFieldStopsValues[i-1]);\\nreturn mix(u_vvSizeFieldStopsSizes[i-1], u_vvSizeFieldStopsSizes[i], f);\\n}\\n}\\nreturn u_vvSizeFieldStopsSizes[VV_SIZE_N - 1];\\n}\\n#endif\\n#ifdef VV_SIZE_UNIT_VALUE\\nfloat getVVUnitValue(float sizeValue, float fallback) {\\nif (isNan(sizeValue)) {\\nreturn fallback;\\n}\\nreturn u_vvSizeUnitValueWorldToPixelsRatio * sizeValue;\\n}\\n#endif\\n#ifdef VV_OPACITY\\nconst int VV_OPACITY_N = 8;\\nfloat getVVOpacity(float opacityValue) {\\nif (isNan(opacityValue)) {\\nreturn 1.0;\\n}\\nif (opacityValue <= u_vvOpacityValues[0]) {\\nreturn u_vvOpacities[0];\\n}\\nfor (int i = 1; i < VV_OPACITY_N; ++i) {\\nif (u_vvOpacityValues[i] >= opacityValue) {\\nfloat f = (opacityValue - u_vvOpacityValues[i-1]) / (u_vvOpacityValues[i] - u_vvOpacityValues[i-1]);\\nreturn mix(u_vvOpacities[i-1], u_vvOpacities[i], f);\\n}\\n}\\nreturn u_vvOpacities[VV_OPACITY_N - 1];\\n}\\n#endif\\n#ifdef VV_ROTATION\\nmat4 getVVRotation(float rotationValue) {\\nif (isNan(rotationValue)) {\\nreturn mat4(1, 0, 0, 0,\\n0, 1, 0, 0,\\n0, 0, 1, 0,\\n0, 0, 0, 1);\\n}\\nfloat rotation = rotationValue;\\nif (u_vvRotationType == 1.0) {\\nrotation = 90.0 - rotation;\\n}\\nfloat angle = C_DEG_TO_RAD * rotation;\\nfloat sinA = sin(angle);\\nfloat cosA = cos(angle);\\nreturn mat4(cosA, sinA, 0, 0,\\n-sinA, cosA, 0, 0,\\n0, 0, 1, 0,\\n0, 0, 0, 1);\\n}\\nmat3 getVVRotationMat3(float rotationValue) {\\nif (isNan(rotationValue)) {\\nreturn mat3(1, 0, 0,\\n0, 1, 0,\\n0, 0, 1);\\n}\\nfloat rotation = rotationValue;\\nif (u_vvRotationType == 1.0) {\\nrotation = 90.0 - rotation;\\n}\\nfloat angle = C_DEG_TO_RAD * -rotation;\\nfloat sinA = sin(angle);\\nfloat cosA = cos(angle);\\nreturn mat3(cosA, -sinA, 0,\\nsinA, cosA, 0,\\n0, 0, 1);\\n}\\n#endif\\n#ifdef VV_COLOR\\nconst int VV_COLOR_N = 8;\\nvec4 getVVColor(float colorValue, vec4 fallback, float isColorLocked) {\\nif (isNan(colorValue) || isColorLocked == 1.0) {\\nreturn fallback;\\n}\\nif (colorValue <= u_vvColorValues[0]) {\\nreturn u_vvColors[0];\\n}\\nfor (int i = 1; i < VV_COLOR_N; ++i) {\\nif (u_vvColorValues[i] >= colorValue) {\\nfloat f = (colorValue - u_vvColorValues[i-1]) / (u_vvColorValues[i] - u_vvColorValues[i-1]);\\nreturn mix(u_vvColors[i-1], u_vvColors[i], f);\\n}\\n}\\nreturn u_vvColors[VV_COLOR_N - 1];\\n}\\n#endif\\nfloat getVVSize(in float size, in float vvSize) {\\n#ifdef VV_SIZE_MIN_MAX_VALUE\\nreturn getVVMinMaxSize(vvSize, size);\\n#elif defined(VV_SIZE_SCALE_STOPS)\\nreturn u_vvSizeScaleStopsValue;\\n#elif defined(VV_SIZE_FIELD_STOPS)\\nfloat outSize = getVVStopsSize(vvSize, size);\\nreturn isNan(outSize) ? size : outSize;\\n#elif defined(VV_SIZE_UNIT_VALUE)\\nreturn getVVUnitValue(vvSize, size);\\n#else\\nreturn size;\\n#endif\\n}\"},overlay:{overlay:{\"overlay.frag\":\"precision lowp float;\\nuniform lowp sampler2D u_texture;\\nuniform lowp float u_opacity;\\nvarying mediump vec2 v_uv;\\nvoid main() {\\nvec4 color = texture2D(u_texture, v_uv);\\ngl_FragColor = color * u_opacity;\\n}\",\"overlay.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nattribute vec2 a_uv;\\nuniform highp mat3 u_dvsMat3;\\nuniform mediump vec2 u_perspective;\\nvarying mediump vec2 v_uv;\\nvoid main(void) {\\nv_uv = a_uv;\\nfloat w = 1.0 + dot(a_uv, u_perspective);\\nvec3 pos = u_dvsMat3 * vec3(a_pos, 1.0);\\ngl_Position = vec4(w * pos.xy, 0.0, w);\\n}\"}},\"post-processing\":{blit:{\"blit.frag\":\"precision mediump float;\\nuniform sampler2D u_texture;\\nvarying vec2 v_uv;\\nvoid main() {\\ngl_FragColor = texture2D(u_texture, v_uv);\\n}\"},bloom:{composite:{\"composite.frag\":\"precision mediump float;\\nvarying vec2 v_uv;\\nuniform sampler2D u_blurTexture1;\\nuniform sampler2D u_blurTexture2;\\nuniform sampler2D u_blurTexture3;\\nuniform sampler2D u_blurTexture4;\\nuniform sampler2D u_blurTexture5;\\nuniform float u_bloomStrength;\\nuniform float u_bloomRadius;\\nuniform float u_bloomFactors[NUMMIPS];\\nuniform vec3 u_bloomTintColors[NUMMIPS];\\nfloat lerpBloomFactor(const in float factor) {\\nfloat mirrorFactor = 1.2 - factor;\\nreturn mix(factor, mirrorFactor, u_bloomRadius);\\n}\\nvoid main() {\\nvec4 color = u_bloomStrength * (\\nlerpBloomFactor(u_bloomFactors[0]) * vec4(u_bloomTintColors[0], 1.0) * texture2D(u_blurTexture1, v_uv) +\\nlerpBloomFactor(u_bloomFactors[1]) * vec4(u_bloomTintColors[1], 1.0) * texture2D(u_blurTexture2, v_uv) +\\nlerpBloomFactor(u_bloomFactors[2]) * vec4(u_bloomTintColors[2], 1.0) * texture2D(u_blurTexture3, v_uv) +\\nlerpBloomFactor(u_bloomFactors[3]) * vec4(u_bloomTintColors[3], 1.0) * texture2D(u_blurTexture4, v_uv) +\\nlerpBloomFactor(u_bloomFactors[4]) * vec4(u_bloomTintColors[4], 1.0) * texture2D(u_blurTexture5, v_uv)\\n);\\ngl_FragColor = clamp(color, 0.0, 1.0);\\n}\"},gaussianBlur:{\"gaussianBlur.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nuniform vec2 u_texSize;\\nuniform vec2 u_direction;\\nvarying vec2 v_uv;\\n#define KERNEL_RADIUS RADIUS\\n#define SIGMA RADIUS\\nfloat gaussianPdf(in float x, in float sigma) {\\nreturn 0.39894 * exp(-0.5 * x * x / ( sigma * sigma)) / sigma;\\n}\\nvoid main() {\\nvec2 invSize = 1.0 / u_texSize;\\nfloat fSigma = float(SIGMA);\\nfloat weightSum = gaussianPdf(0.0, fSigma);\\nvec4 pixelColorSum = texture2D(u_colorTexture, v_uv) * weightSum;\\nfor (int i = 1; i < KERNEL_RADIUS; i ++) {\\nfloat x = float(i);\\nfloat w = gaussianPdf(x, fSigma);\\nvec2 uvOffset = u_direction * invSize * x;\\nvec4 sample1 = texture2D(u_colorTexture, v_uv + uvOffset);\\nvec4 sample2 = texture2D(u_colorTexture, v_uv - uvOffset);\\npixelColorSum += (sample1 + sample2) * w;\\nweightSum += 2.0 * w;\\n}\\ngl_FragColor = pixelColorSum /weightSum;\\n}\"},luminosityHighPass:{\"luminosityHighPass.frag\":\"precision mediump float;\\nuniform sampler2D u_texture;\\nuniform vec3 u_defaultColor;\\nuniform float u_defaultOpacity;\\nuniform float u_luminosityThreshold;\\nuniform float u_smoothWidth;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec4 texel = texture2D(u_texture, v_uv);\\nvec3 luma = vec3(0.299, 0.587, 0.114);\\nfloat v = dot(texel.xyz, luma);\\nvec4 outputColor = vec4(u_defaultColor.rgb, u_defaultOpacity);\\nfloat alpha = smoothstep(u_luminosityThreshold, u_luminosityThreshold + u_smoothWidth, v);\\ngl_FragColor = mix(outputColor, texel, alpha);\\n}\"}},blur:{gaussianBlur:{\"gaussianBlur.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nuniform vec2 u_texSize;\\nuniform vec2 u_direction;\\nuniform float u_sigma;\\nvarying vec2 v_uv;\\n#define KERNEL_RADIUS RADIUS\\nfloat gaussianPdf(in float x, in float sigma) {\\nreturn 0.39894 * exp(-0.5 * x * x / ( sigma * sigma)) / sigma;\\n}\\nvoid main() {\\nvec2 invSize = 1.0 / u_texSize;\\nfloat fSigma = u_sigma;\\nfloat weightSum = gaussianPdf(0.0, fSigma);\\nvec4 pixelColorSum = texture2D(u_colorTexture, v_uv) * weightSum;\\nfor (int i = 1; i < KERNEL_RADIUS; i ++) {\\nfloat x = float(i);\\nfloat w = gaussianPdf(x, fSigma);\\nvec2 uvOffset = u_direction * invSize * x;\\nvec4 sample1 = texture2D(u_colorTexture, v_uv + uvOffset);\\nvec4 sample2 = texture2D(u_colorTexture, v_uv - uvOffset);\\npixelColorSum += (sample1 + sample2) * w;\\nweightSum += 2.0 * w;\\n}\\ngl_FragColor = pixelColorSum /weightSum;\\n}\"},\"radial-blur\":{\"radial-blur.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nvarying vec2 v_uv;\\nconst float sampleDist = 1.0;\\nconst float sampleStrength = 2.2;\\nvoid main(void) {\\nfloat samples[10];\\nsamples[0] = -0.08;\\nsamples[1] = -0.05;\\nsamples[2] = -0.03;\\nsamples[3] = -0.02;\\nsamples[4] = -0.01;\\nsamples[5] = 0.01;\\nsamples[6] = 0.02;\\nsamples[7] = 0.03;\\nsamples[8] = 0.05;\\nsamples[9] = 0.08;\\nvec2 dir = 0.5 - v_uv;\\nfloat dist = sqrt(dir.x * dir.x + dir.y * dir.y);\\ndir = dir / dist;\\nvec4 color = texture2D(u_colorTexture,v_uv);\\nvec4 sum = color;\\nfor (int i = 0; i < 10; i++) {\\nsum += texture2D(u_colorTexture, v_uv + dir * samples[i] * sampleDist);\\n}\\nsum *= 1.0 / 11.0;\\nfloat t = dist * sampleStrength;\\nt = clamp(t, 0.0, 1.0);\\ngl_FragColor = mix(color, sum, t);\\n}\"}},dra:{\"dra.frag\":\"precision mediump float;\\nuniform sampler2D u_minColor;\\nuniform sampler2D u_maxColor;\\nuniform sampler2D u_texture;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec4 minColor = texture2D(u_minColor, vec2(0.5));\\nvec4 maxColor = texture2D(u_maxColor, vec2(0.5));\\nvec4 color = texture2D(u_texture, v_uv);\\nvec3 minColorUnpremultiply = minColor.rgb / minColor.a;\\nvec3 maxColorUnpremultiply = maxColor.rgb / maxColor.a;\\nvec3 colorUnpremultiply = color.rgb / color.a;\\nvec3 range = maxColorUnpremultiply - minColorUnpremultiply;\\ngl_FragColor = vec4(color.a * (colorUnpremultiply - minColorUnpremultiply) / range, color.a);\\n}\",\"min-max\":{\"min-max.frag\":\"#extension GL_EXT_draw_buffers : require\\nprecision mediump float;\\n#define CELL_SIZE 2\\nuniform sampler2D u_minTexture;\\nuniform sampler2D u_maxTexture;\\nuniform vec2 u_srcResolution;\\nuniform vec2 u_dstResolution;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec2 srcPixel = floor(gl_FragCoord.xy) * float(CELL_SIZE);\\nvec2 onePixel = vec2(1.0) / u_srcResolution;\\nvec2 uv = (srcPixel + 0.5) / u_srcResolution;\\nvec4 minColor = vec4(1.0);\\nvec4 maxColor = vec4(0.0);\\nfor (int y = 0; y < CELL_SIZE; ++y) {\\nfor (int x = 0; x < CELL_SIZE; ++x) {\\nvec2 offset = uv + vec2(x, y) * onePixel;\\nminColor = min(minColor, texture2D(u_minTexture, offset));\\nmaxColor = max(maxColor, texture2D(u_maxTexture, offset));\\n}\\n}\\ngl_FragData[0] = minColor;\\ngl_FragData[1] = maxColor;\\n}\"}},\"drop-shadow\":{composite:{\"composite.frag\":\"precision mediump float;\\nuniform sampler2D u_layerFBOTexture;\\nuniform sampler2D u_blurTexture;\\nuniform vec4 u_shadowColor;\\nuniform vec2 u_shadowOffset;\\nuniform highp mat3 u_displayViewMat3;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec3 offset = u_displayViewMat3 * vec3(u_shadowOffset, 0.0);\\nvec4 layerColor = texture2D(u_layerFBOTexture, v_uv);\\nvec4 blurColor = texture2D(u_blurTexture, v_uv - offset.xy / 2.0);\\ngl_FragColor = ((1.0 - layerColor.a) * blurColor.a * u_shadowColor + layerColor);\\n}\"}},\"edge-detect\":{\"frei-chen\":{\"frei-chen.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nuniform vec2 u_texSize;\\nvarying vec2 v_uv;\\nvec2 texel = vec2(1.0 / u_texSize.x, 1.0 / u_texSize.y);\\nmat3 G[9];\\nconst mat3 g0 = mat3( 0.3535533845424652, 0, -0.3535533845424652, 0.5, 0, -0.5, 0.3535533845424652, 0, -0.3535533845424652 );\\nconst mat3 g1 = mat3( 0.3535533845424652, 0.5, 0.3535533845424652, 0, 0, 0, -0.3535533845424652, -0.5, -0.3535533845424652 );\\nconst mat3 g2 = mat3( 0, 0.3535533845424652, -0.5, -0.3535533845424652, 0, 0.3535533845424652, 0.5, -0.3535533845424652, 0 );\\nconst mat3 g3 = mat3( 0.5, -0.3535533845424652, 0, -0.3535533845424652, 0, 0.3535533845424652, 0, 0.3535533845424652, -0.5 );\\nconst mat3 g4 = mat3( 0, -0.5, 0, 0.5, 0, 0.5, 0, -0.5, 0 );\\nconst mat3 g5 = mat3( -0.5, 0, 0.5, 0, 0, 0, 0.5, 0, -0.5 );\\nconst mat3 g6 = mat3( 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.6666666865348816, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204 );\\nconst mat3 g7 = mat3( -0.3333333432674408, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, 0.6666666865348816, 0.1666666716337204, -0.3333333432674408, 0.1666666716337204, -0.3333333432674408 );\\nconst mat3 g8 = mat3( 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408 );\\nvoid main() {\\nG[0] = g0,\\nG[1] = g1,\\nG[2] = g2,\\nG[3] = g3,\\nG[4] = g4,\\nG[5] = g5,\\nG[6] = g6,\\nG[7] = g7,\\nG[8] = g8;\\nmat3 I;\\nfloat cnv[9];\\nvec3 sample;\\nfor (float i = 0.0; i < 3.0; i++) {\\nfor (float j = 0.0; j < 3.0; j++) {\\nsample = texture2D(u_colorTexture, v_uv + texel * vec2(i - 1.0,j - 1.0)).rgb;\\nI[int(i)][int(j)] = length(sample);\\n}\\n}\\nfor (int i = 0; i < 9; i++) {\\nfloat dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\\ncnv[i] = dp3 * dp3;\\n}\\nfloat M = (cnv[0] + cnv[1]) + (cnv[2] + cnv[3]);\\nfloat S = (cnv[4] + cnv[5]) + (cnv[6] + cnv[7]) + (cnv[8] + M);\\ngl_FragColor = vec4(vec3(sqrt(M / S)), texture2D(u_colorTexture, v_uv).a);\\n}\"},sobel:{\"sobel.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nvarying vec2 v_uv;\\nuniform vec2 u_texSize;\\nvec2 texel = vec2(1.0 / u_texSize.x, 1.0 / u_texSize.y);\\nmat3 G[2];\\nconst mat3 g0 = mat3( 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 );\\nconst mat3 g1 = mat3( 1.0, 0.0, -1.0, 2.0, 0.0, -2.0, 1.0, 0.0, -1.0 );\\nvoid main() {\\nmat3 I;\\nfloat cnv[2];\\nvec3 sample;\\nG[0] = g0;\\nG[1] = g1;\\nfor (float i = 0.0; i < 3.0; i++) {\\nfor (float j = 0.0; j < 3.0; j++) {\\nsample = texture2D( u_colorTexture, v_uv + texel * vec2(i-1.0,j-1.0) ).rgb;\\nI[int(i)][int(j)] = length(sample);\\n}\\n}\\nfor (int i = 0; i < 2; i++) {\\nfloat dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\\ncnv[i] = dp3 * dp3;\\n}\\ngl_FragColor = vec4(vec3(0.5 * sqrt(cnv[0] * cnv[0] + cnv[1] * cnv[1])), texture2D(u_colorTexture, v_uv).a);\\n}\"}},\"edge-enhance\":{\"edge-enhance.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nvarying vec2 v_uv;\\nuniform vec2 u_texSize;\\nvec2 texel = vec2(1.0 / u_texSize.x, 1.0 / u_texSize.y);\\nmat3 G[2];\\nconst mat3 g0 = mat3( 1.0, 0.0, -1.0, 1.0, 0.0, -1.0, 1.0, 0.0, -1.0 );\\nconst mat3 g1 = mat3( 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0 );\\nvoid main() {\\nmat3 I;\\nfloat cnv[2];\\nvec3 sample;\\nG[0] = g0;\\nG[1] = g1;\\nfor (float i = 0.0; i < 3.0; i++) {\\nfor (float j = 0.0; j < 3.0; j++) {\\nsample = texture2D( u_colorTexture, v_uv + texel * vec2(i-1.0,j-1.0) ).rgb;\\nI[int(i)][int(j)] = length(sample);\\n}\\n}\\nfor (int i = 0; i < 2; i++) {\\nfloat dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\\ncnv[i] = dp3 * dp3;\\n}\\nvec4 color = texture2D(u_colorTexture, v_uv);\\ngl_FragColor = vec4(0.5 * sqrt(cnv[0] * cnv[0] + cnv[1] * cnv[1]) * color);\\n}\"},filterEffect:{\"filterEffect.frag\":\"precision mediump float;\\nuniform sampler2D u_colorTexture;\\nuniform mat4 u_coefficients;\\nvarying vec2 v_uv;\\nvoid main() {\\nvec4 color = texture2D(u_colorTexture, v_uv);\\nvec4 rgbw = u_coefficients * vec4(color.a > 0.0 ? color.rgb / color.a : vec3(0.0), 1.0);\\nfloat a = color.a;\\ngl_FragColor = vec4(a * rgbw.rgb, a);\\n}\"},pp:{\"pp.vert\":\"precision mediump float;\\nattribute vec2 a_position;\\nvarying vec2 v_uv;\\nvoid main() {\\ngl_Position = vec4(a_position, 0.0, 1.0);\\nv_uv = (a_position + 1.0) / 2.0;\\n}\"}},raster:{bitmap:{\"bitmap.frag\":\"precision mediump float;\\nvarying highp vec2 v_texcoord;\\nuniform sampler2D u_texture;\\nuniform highp vec2 u_coordScale;\\nuniform lowp float u_opacity;\\n#include \\nvoid main() {\\n#ifdef BICUBIC\\nvec4 color = sampleBicubicBSpline(u_texture, v_texcoord, u_coordScale);\\n#else\\nvec4 color = texture2D(u_texture, v_texcoord);\\n#endif\\ngl_FragColor = vec4(color.rgb * u_opacity, color.a * u_opacity);\\n}\",\"bitmap.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp vec2 u_coordScale;\\nvarying highp vec2 v_texcoord;\\nvoid main()\\n{\\nv_texcoord = a_pos;\\ngl_Position = vec4(u_dvsMat3 * vec3(a_pos * u_coordScale, 1.0), 1.0);\\n}\"},common:{\"common.glsl\":\"uniform sampler2D u_image;\\nuniform int u_bandCount;\\nuniform bool u_flipY;\\nuniform float u_opacity;\\nuniform int u_resampling;\\nuniform vec2 u_srcImageSize;\\n#ifdef APPLY_PROJECTION\\n#include \\n#endif\\n#ifdef BICUBIC\\n#include \\n#endif\\n#ifdef BILINEAR\\n#include \\n#endif\\nvec2 getPixelLocation(vec2 coords) {\\nvec2 targetLocation = u_flipY ? vec2(coords.s, 1.0 - coords.t) : coords;\\n#ifdef APPLY_PROJECTION\\ntargetLocation = projectPixelLocation(targetLocation);\\n#endif\\nreturn targetLocation;\\n}\\nbool isOutside(vec2 coords){\\nif (coords.t>1.00001 ||coords.t<-0.00001 || coords.s>1.00001 ||coords.s<-0.00001) {\\nreturn true;\\n} else {\\nreturn false;\\n}\\n}\\nvec4 getPixel(vec2 pixelLocation) {\\n#ifdef BICUBIC\\nvec4 color = sampleBicubicBSpline(u_image, pixelLocation, u_srcImageSize);\\n#elif defined(BILINEAR)\\nvec4 color = sampleBilinear(u_image, pixelLocation, u_srcImageSize);\\n#else\\nvec4 color = texture2D(u_image, pixelLocation);\\n#endif\\nreturn color;\\n}\",\"common.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp vec2 u_coordScale;\\nuniform highp float u_scale;\\nuniform highp vec2 u_offset;\\nvarying highp vec2 v_texcoord;\\nvoid main()\\n{\\nv_texcoord = a_pos * u_scale + u_offset;\\ngl_Position = vec4(u_dvsMat3 * vec3(a_pos * u_coordScale, 1.0), 1.0);\\n}\",\"contrastBrightness.glsl\":\"uniform float u_contrastOffset;\\nuniform float u_brightnessOffset;\\nvec4 adjustContrastBrightness(vec4 currentPixel, bool isFloat) {\\nvec4 pixelValue = isFloat ? currentPixel * 255.0 : currentPixel;\\nfloat maxI = 255.0;\\nfloat mid = 128.0;\\nfloat c = u_contrastOffset;\\nfloat b = u_brightnessOffset;\\nvec4 v;\\nif (c > 0.0 && c < 100.0) {\\nv = (200.0 * pixelValue - 100.0 * maxI + 2.0 * maxI * b) / (2.0 * (100.0 - c)) + mid;\\n} else if (c <= 0.0 && c > -100.0) {\\nv = (200.0 * pixelValue - 100.0 * maxI + 2.0 * maxI * b) * (100.0 + c) / 20000.0 + mid;\\n} else if (c == 100.0) {\\nv = (200.0 * pixelValue - 100.0 * maxI + (maxI + 1.0) * (100.0 - c) + 2.0 * maxI * b);\\nv = (sign(v) + 1.0) / 2.0;\\n} else if (c == -100.0) {\\nv = vec4(mid, mid, mid, currentPixel.a);\\n}\\nreturn vec4(v.r / 255.0, v.g / 255.0, v.b / 255.0, currentPixel.a);\\n}\",\"inverse.glsl\":\"float invertValue(float value) {\\nfloat s = sign(value);\\nreturn (s * s) / (value + abs(s) - 1.0);\\n}\",\"mirror.glsl\":\"vec2 mirror(vec2 pos) {\\nvec2 pos1 = abs(pos);\\nreturn step(pos1, vec2(1.0, 1.0)) * pos1 + step(1.0, pos1) * (2.0 - pos1);\\n}\",\"projection.glsl\":\"uniform sampler2D u_transformGrid;\\nuniform vec2 u_transformSpacing;\\nuniform vec2 u_transformGridSize;\\nuniform vec2 u_targetImageSize;\\nvec2 projectPixelLocation(vec2 coords) {\\n#ifdef LOOKUP_PROJECTION\\nvec4 pv = texture2D(u_transformGrid, coords);\\nreturn vec2(pv.r, pv.g);\\n#endif\\nvec2 index_image = floor(coords * u_targetImageSize);\\nvec2 oneTransformPixel = vec2(0.25 / u_transformGridSize.s, 1.0 / u_transformGridSize.t);\\nvec2 index_transform = floor(index_image / u_transformSpacing) / u_transformGridSize;\\nvec2 pos = fract((index_image + vec2(0.5, 0.5)) / u_transformSpacing);\\nvec2 srcLocation;\\nvec2 transform_location = index_transform + oneTransformPixel * 0.5;\\nif (pos.s <= pos.t) {\\nvec4 ll_abc = texture2D(u_transformGrid, vec2(transform_location.s, transform_location.t));\\nvec4 ll_def = texture2D(u_transformGrid, vec2(transform_location.s + oneTransformPixel.s, transform_location.t));\\nsrcLocation.s = dot(ll_abc.rgb, vec3(pos, 1.0));\\nsrcLocation.t = dot(ll_def.rgb, vec3(pos, 1.0));\\n} else {\\nvec4 ur_abc = texture2D(u_transformGrid, vec2(transform_location.s + 2.0 * oneTransformPixel.s, transform_location.t));\\nvec4 ur_def = texture2D(u_transformGrid, vec2(transform_location.s + 3.0 * oneTransformPixel.s, transform_location.t));\\nsrcLocation.s = dot(ur_abc.rgb, vec3(pos, 1.0));\\nsrcLocation.t = dot(ur_def.rgb, vec3(pos, 1.0));\\n}\\nreturn srcLocation;\\n}\"},flow:{\"getFadeOpacity.glsl\":\"uniform float u_decayRate;\\nuniform float u_fadeToZero;\\nfloat getFadeOpacity(float x) {\\nfloat cutOff = mix(0.0, exp(-u_decayRate), u_fadeToZero);\\nreturn (exp(-u_decayRate * x) - cutOff) / (1.0 - cutOff);\\n}\",\"getFragmentColor.glsl\":\"vec4 getFragmentColor(vec4 color, float dist, float size, float featheringSize) {\\nfloat featheringStart = clamp(0.5 - featheringSize / size, 0.0, 0.5);\\nif (dist > featheringStart) {\\ncolor *= 1.0 - (dist - featheringStart) / (0.5 - featheringStart);\\n}\\nreturn color;\\n}\",imagery:{\"imagery.frag\":\"precision highp float;\\nvarying vec2 v_texcoord;\\nuniform sampler2D u_texture;\\nuniform float u_Min;\\nuniform float u_Max;\\nuniform float u_featheringSize;\\n#include \\nfloat getIntensity(float v) {\\nreturn u_Min + v * (u_Max - u_Min);\\n}\\nvoid main(void) {\\nvec4 sampled = texture2D(u_texture, v_texcoord);\\nfloat intensity = getIntensity(sampled.r);\\ngl_FragColor = getColor(intensity);\\ngl_FragColor.a *= getOpacity(sampled.r);\\ngl_FragColor.a *= sampled.a;\\ngl_FragColor.rgb *= gl_FragColor.a;\\n}\",\"imagery.vert\":\"attribute vec2 a_position;\\nattribute vec2 a_texcoord;\\nuniform mat3 u_dvsMat3;\\nvarying vec2 v_texcoord;\\nvoid main(void) {\\nvec2 xy = (u_dvsMat3 * vec3(a_position, 1.0)).xy;\\ngl_Position = vec4(xy, 0.0, 1.0);\\nv_texcoord = a_texcoord;\\n}\"},particles:{\"particles.frag\":\"precision highp float;\\nvarying vec4 v_color;\\nvarying vec2 v_texcoord;\\nvarying float v_size;\\nuniform float u_featheringSize;\\n#include \\nvoid main(void) {\\ngl_FragColor = getFragmentColor(v_color, length(v_texcoord - 0.5), v_size, u_featheringSize);\\n}\",\"particles.vert\":\"attribute vec4 a_xyts0;\\nattribute vec4 a_xyts1;\\nattribute vec4 a_typeIdDurationSeed;\\nattribute vec4 a_extrudeInfo;\\nuniform mat3 u_dvsMat3;\\nuniform mat3 u_displayViewMat3;\\nuniform float u_time;\\nuniform float u_trailLength;\\nuniform float u_flowSpeed;\\nvarying vec4 v_color;\\nvarying vec2 v_texcoord;\\nvarying float v_size;\\nuniform float u_featheringSize;\\nuniform float u_introFade;\\n#include \\n#include \\nvoid main(void) {\\nvec2 position0 = a_xyts0.xy;\\nfloat t0 = a_xyts0.z;\\nfloat speed0 = a_xyts0.w;\\nvec2 position1 = a_xyts1.xy;\\nfloat t1 = a_xyts1.z;\\nfloat speed1 = a_xyts1.w;\\nfloat type = a_typeIdDurationSeed.x;\\nfloat id = a_typeIdDurationSeed.y;\\nfloat duration = a_typeIdDurationSeed.z;\\nfloat seed = a_typeIdDurationSeed.w;\\nvec2 e0 = a_extrudeInfo.xy;\\nvec2 e1 = a_extrudeInfo.zw;\\nfloat animationPeriod = duration + u_trailLength;\\nfloat scaledTime = u_time * u_flowSpeed;\\nfloat randomizedTime = scaledTime + seed * animationPeriod;\\nfloat t = mod(randomizedTime, animationPeriod);\\nfloat fUnclamped = (t - t0) / (t1 - t0);\\nfloat f = clamp(fUnclamped, 0.0, 1.0);\\nfloat clampedTime = mix(t0, t1, f);\\nfloat speed = mix(speed0, speed1, f);\\nvec2 extrude;\\nvec2 position;\\nfloat fadeOpacity;\\nfloat introOpacity;\\nif (type == 2.0) {\\nif (fUnclamped < 0.0 || (fUnclamped > 1.0 && t1 != duration)) {\\ngl_Position = vec4(0.0, 0.0, -2.0, 1.0);\\nreturn;\\n}\\nvec2 ortho = mix(e0, e1, f);\\nvec2 parallel;\\nparallel = normalize(position1 - position0) * 0.5;\\nif (id == 1.0) {\\nextrude = ortho;\\nv_texcoord = vec2(0.5, 0.0);\\n} else if (id == 2.0) {\\nextrude = -ortho;\\nv_texcoord = vec2(0.5, 1.0);\\n} else if (id == 3.0) {\\nextrude = ortho + parallel;\\nv_texcoord = vec2(1.0, 0.0);\\n} else if (id == 4.0) {\\nextrude = -ortho + parallel;\\nv_texcoord = vec2(1.0, 1.0);\\n}\\nfadeOpacity = getFadeOpacity((t - clampedTime) / u_trailLength);\\nintroOpacity = 1.0 - exp(-clampedTime);\\nv_size = getSize(speed);\\nv_color = getColor(speed);\\nv_color.a *= getOpacity(speed);\\nposition = mix(position0, position1, f);\\n} else {\\nif (fUnclamped < 0.0) {\\ngl_Position = vec4(0.0, 0.0, -2.0, 1.0);\\nreturn;\\n}\\nif (id == 1.0) {\\nextrude = e0;\\nv_texcoord = vec2(0.5, 0.0);\\nfadeOpacity = getFadeOpacity((t - t0) / u_trailLength);\\nintroOpacity = 1.0 - exp(-t0);\\nv_size = getSize(speed0);\\nv_color = getColor(speed0);\\nv_color.a *= getOpacity(speed0);\\nposition = position0;\\n} else if (id == 2.0) {\\nextrude = -e0;\\nv_texcoord = vec2(0.5, 1.0);\\nfadeOpacity = getFadeOpacity((t - t0) / u_trailLength);\\nintroOpacity = 1.0 - exp(-t0);\\nv_size = getSize(speed0);\\nv_color = getColor(speed0);\\nv_color.a *= getOpacity(speed0);\\nposition = position0;\\n} else if (id == 3.0) {\\nextrude = mix(e0, e1, f);\\nv_texcoord = vec2(0.5, 0.0);\\nfadeOpacity = getFadeOpacity((t - clampedTime) / u_trailLength);\\nintroOpacity = 1.0 - exp(-clampedTime);\\nv_size = getSize(speed);\\nv_color = getColor(speed);\\nv_color.a *= getOpacity(speed);\\nposition = mix(position0, position1, f);\\n} else if (id == 4.0) {\\nextrude = -mix(e0, e1, f);\\nv_texcoord = vec2(0.5, 1.0);\\nfadeOpacity = getFadeOpacity((t - clampedTime) / u_trailLength);\\nintroOpacity = 1.0 - exp(-clampedTime);\\nv_size = getSize(speed);\\nv_color = getColor(speed);\\nv_color.a *= getOpacity(speed);\\nposition = mix(position0, position1, f);\\n}\\n}\\nvec2 xy = (u_dvsMat3 * vec3(position, 1.0) + u_displayViewMat3 * vec3(extrude * v_size, 0.0)).xy;\\ngl_Position = vec4(xy, 0.0, 1.0);\\nv_color.a *= fadeOpacity;\\nv_color.a *= mix(1.0, introOpacity, u_introFade);\\nv_color.rgb *= v_color.a;\\n}\"},streamlines:{\"streamlines.frag\":\"precision highp float;\\nvarying float v_side;\\nvarying float v_time;\\nvarying float v_totalTime;\\nvarying float v_timeSeed;\\nvarying vec4 v_color;\\nvarying float v_size;\\nuniform float u_time;\\nuniform float u_trailLength;\\nuniform float u_flowSpeed;\\nuniform float u_featheringSize;\\nuniform float u_introFade;\\n#include \\n#include \\nvoid main(void) {\\nfloat t = mod(v_timeSeed * (v_totalTime + u_trailLength) + u_time * u_flowSpeed, v_totalTime + u_trailLength) - v_time;\\nvec4 color = v_color * step(0.0, t) * getFadeOpacity(t / u_trailLength);\\ncolor *= mix(1.0, 1.0 - exp(-v_time), u_introFade);\\ngl_FragColor = getFragmentColor(color, length((v_side + 1.0) / 2.0 - 0.5), v_size, u_featheringSize);\\n}\",\"streamlines.vert\":\"attribute vec3 a_positionAndSide;\\nattribute vec3 a_timeInfo;\\nattribute vec2 a_extrude;\\nattribute float a_speed;\\nuniform mat3 u_dvsMat3;\\nuniform mat3 u_displayViewMat3;\\nvarying float v_time;\\nvarying float v_totalTime;\\nvarying float v_timeSeed;\\nvarying vec4 v_color;\\nvarying float v_side;\\nvarying float v_size;\\nuniform float u_featheringSize;\\n#include \\nvoid main(void) {\\nvec4 lineColor = getColor(a_speed);\\nfloat lineOpacity = getOpacity(a_speed);\\nfloat lineSize = getSize(a_speed);\\nvec2 position = a_positionAndSide.xy;\\nv_side = a_positionAndSide.z;\\nvec2 xy = (u_dvsMat3 * vec3(position, 1.0) + u_displayViewMat3 * vec3(a_extrude * lineSize, 0.0)).xy;\\ngl_Position = vec4(xy, 0.0, 1.0);\\nv_time = a_timeInfo.x;\\nv_totalTime = a_timeInfo.y;\\nv_timeSeed = a_timeInfo.z;\\nv_color = lineColor;\\nv_color.a *= lineOpacity;\\nv_color.rgb *= v_color.a;\\nv_size = lineSize;\\n}\"},\"vv.glsl\":\"#define MAX_STOPS 8\\n#ifdef VV_COLOR\\nuniform float u_color_stops[MAX_STOPS];\\nuniform vec4 u_color_values[MAX_STOPS];\\nuniform int u_color_count;\\n#else\\nuniform vec4 u_color;\\n#endif\\n#ifdef VV_OPACITY\\nuniform float u_opacity_stops[MAX_STOPS];\\nuniform float u_opacity_values[MAX_STOPS];\\nuniform int u_opacity_count;\\n#else\\nuniform float u_opacity;\\n#endif\\n#ifdef VV_SIZE\\nuniform float u_size_stops[MAX_STOPS];\\nuniform float u_size_values[MAX_STOPS];\\nuniform int u_size_count;\\n#else\\nuniform float u_size;\\n#endif\\nuniform float u_featheringOffset;\\nvec4 getColor(float x) {\\n#ifdef VV_COLOR\\nvec4 color = u_color_values[0];\\n{\\nfor (int i = 1; i < MAX_STOPS; i++) {\\nif (i >= u_color_count) {\\nbreak;\\n}\\nfloat x1 = u_color_stops[i - 1];\\nif (x < x1) {\\nbreak;\\n}\\nfloat x2 = u_color_stops[i];\\nvec4 y2 = u_color_values[i];\\nif (x < x2) {\\nvec4 y1 = u_color_values[i - 1];\\ncolor = y1 + (y2 - y1) * (x - x1) / (x2 - x1);\\n} else {\\ncolor = y2;\\n}\\n}\\n}\\n#else\\nvec4 color = u_color;\\n#endif\\nreturn color;\\n}\\nfloat getOpacity(float x) {\\n#ifdef VV_OPACITY\\nfloat opacity = u_opacity_values[0];\\n{\\nfor (int i = 1; i < MAX_STOPS; i++) {\\nif (i >= u_opacity_count) {\\nbreak;\\n}\\nfloat x1 = u_opacity_stops[i - 1];\\nif (x < x1) {\\nbreak;\\n}\\nfloat x2 = u_opacity_stops[i];\\nfloat y2 = u_opacity_values[i];\\nif (x < x2) {\\nfloat y1 = u_opacity_values[i - 1];\\nopacity = y1 + (y2 - y1) * (x - x1) / (x2 - x1);\\n} else {\\nopacity = y2;\\n}\\n}\\n}\\n#else\\nfloat opacity = u_opacity;\\n#endif\\nreturn opacity;\\n}\\nfloat getSize(float x) {\\n#ifdef VV_SIZE\\nfloat size = u_size_values[0];\\n{\\nfor (int i = 1; i < MAX_STOPS; i++) {\\nif (i >= u_size_count) {\\nbreak;\\n}\\nfloat x1 = u_size_stops[i - 1];\\nif (x < x1) {\\nbreak;\\n}\\nfloat x2 = u_size_stops[i];\\nfloat y2 = u_size_values[i];\\nif (x < x2) {\\nfloat y1 = u_size_values[i - 1];\\nsize = y1 + (y2 - y1) * (x - x1) / (x2 - x1);\\n} else {\\nsize = y2;\\n}\\n}\\n}\\n#else\\nfloat size = u_size;\\n#endif\\nreturn size + 2.0 * u_featheringSize * u_featheringOffset;\\n}\"},hillshade:{\"hillshade.frag\":\"precision mediump float;\\nvarying highp vec2 v_texcoord;\\n#include \\nuniform int u_hillshadeType;\\nuniform float u_sinZcosAs[6];\\nuniform float u_sinZsinAs[6];\\nuniform float u_cosZs[6];\\nuniform float u_weights[6];\\nuniform vec2 u_factor;\\nuniform float u_minValue;\\nuniform float u_maxValue;\\n#include \\nfloat getNeighborHoodAlpha(float a, float b, float c, float d, float e, float f, float g, float h, float i){\\nif (a == 0.0 || a == 0.0 || a==0.0 || a == 0.0 || a == 0.0 || a==0.0 || a == 0.0 || a == 0.0 || a==0.0) {\\nreturn 0.0;\\n}\\nelse {\\nreturn e;\\n}\\n}\\nvec3 rgb2hsv(vec3 c) {\\nvec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\\nvec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\\nvec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\\nfloat d = q.x - min(q.w, q.y);\\nfloat e = 1.0e-10;\\nreturn vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);\\n}\\nvec3 hsv2rgb(vec3 c) {\\nvec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\\nvec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\\nreturn c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\\n}\\nvec4 overlay(float val, float minValue, float maxValue, float hillshade) {\\nval = clamp((val - minValue) / (maxValue - minValue), 0.0, 1.0);\\nvec4 rgb = colorize(vec4(val, val, val, 1.0), 255.0);\\nvec3 hsv = rgb2hsv(rgb.xyz);\\nhsv.z = hillshade;\\nreturn vec4(hsv2rgb(hsv), 1.0) * rgb.a;\\n}\\nvoid main() {\\nvec2 pixelLocation = getPixelLocation(v_texcoord);\\nif (isOutside(pixelLocation)) {\\ngl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\\nreturn;\\n}\\nvec4 currentPixel = getPixel(pixelLocation);\\nif (currentPixel.a == 0.0) {\\ngl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\\nreturn;\\n}\\nvec2 axy = vec2(-1.0, -1.0);\\nvec2 bxy = vec2(0.0, -1.0);\\nvec2 cxy = vec2(1.0, -1.0);\\nvec2 dxy = vec2(-1.0, 0.0);\\nvec2 fxy = vec2(1.0, 0.0);\\nvec2 gxy = vec2(-1.0, 1.0);\\nvec2 hxy = vec2(0.0, 1.0);\\nvec2 ixy = vec2(1.0, 1.0);\\nvec2 onePixel = 1.0 / u_srcImageSize;\\nif (pixelLocation.s < onePixel.s) {\\naxy[0] = 1.0;\\ndxy[0] = 1.0;\\ngxy[0] = 1.0;\\n}\\nif (pixelLocation.t < onePixel.t) {\\naxy[1] = 1.0;\\nbxy[1] = 1.0;\\ncxy[1] = 1.0;\\n}\\nif (pixelLocation.s > 1.0 - onePixel.s) {\\ncxy[0] = -1.0;\\nfxy[0] = -1.0;\\nixy[0] = -1.0;\\n}\\nif (pixelLocation.t > 1.0 - onePixel.t) {\\ngxy[1] = -1.0;\\nhxy[1] = -1.0;\\nixy[1] = -1.0;\\n}\\nvec4 va = texture2D(u_image, pixelLocation + onePixel * axy);\\nvec4 vb = texture2D(u_image, pixelLocation + onePixel * bxy);\\nvec4 vc = texture2D(u_image, pixelLocation + onePixel * cxy);\\nvec4 vd = texture2D(u_image, pixelLocation + onePixel * dxy);\\nvec4 ve = texture2D(u_image, pixelLocation);\\nvec4 vf = texture2D(u_image, pixelLocation + onePixel * fxy);\\nvec4 vg = texture2D(u_image, pixelLocation + onePixel * gxy);\\nvec4 vh = texture2D(u_image, pixelLocation + onePixel * hxy);\\nvec4 vi = texture2D(u_image, pixelLocation + onePixel * ixy);\\nfloat dzx = (vc + 2.0 * vf + vi - va - 2.0 * vd - vg).r * u_factor.s;\\nfloat dzy = (vg + 2.0 * vh + vi - va - 2.0 * vb - vc).r * u_factor.t;\\nfloat dzd = sqrt(1.0 + dzx * dzx + dzy * dzy);\\nfloat hillshade = 0.0;\\nif (u_hillshadeType == 0){\\nfloat cosDelta = u_sinZsinAs[0] * dzy - u_sinZcosAs[0] * dzx;\\nfloat z = (u_cosZs[0] + cosDelta) / dzd;\\nif (z < 0.0) z = 0.0;\\nhillshade = z;\\n} else {\\nfor (int k = 0; k < 6; k++) {\\nfloat cosDelta = u_sinZsinAs[k] * dzy - u_sinZcosAs[k] * dzx;\\nfloat z = (u_cosZs[k] + cosDelta) / dzd;\\nif (z < 0.0) z = 0.0;\\nhillshade = hillshade + z * u_weights[k];\\nif (k == 5) break;\\n}\\n}\\nfloat alpha = getNeighborHoodAlpha(va.a, vb.a, vc.a, vd.a, ve.a, vf.a, vg.a, vh.a, vi.a);\\n#ifdef APPLY_COLORMAP\\ngl_FragColor = overlay(ve.r, u_minValue, u_maxValue, hillshade) * alpha * u_opacity;\\n#else\\ngl_FragColor = vec4(hillshade, hillshade, hillshade, 1.0) * alpha * u_opacity;\\n#endif\\n}\"},lut:{\"colorize.glsl\":\"uniform sampler2D u_colormap;\\nuniform float u_colormapOffset;\\nuniform float u_colormapMaxIndex;\\nvec4 colorize(vec4 currentPixel, float scaleFactor) {\\nfloat clrIndex = clamp(currentPixel.r * scaleFactor - u_colormapOffset, 0.0, u_colormapMaxIndex);\\nvec2 clrPosition = vec2((clrIndex + 0.5) / (u_colormapMaxIndex + 1.0), 0.0);\\nvec4 color = texture2D(u_colormap, clrPosition);\\nvec4 result = vec4(color.rgb, color.a * currentPixel.a);\\nreturn result;\\n}\",\"lut.frag\":\"precision mediump float;\\nvarying highp vec2 v_texcoord;\\n#include \\n#include \\nvoid main() {\\nvec2 pixelLocation = getPixelLocation(v_texcoord);\\nif (isOutside(pixelLocation)) {\\ngl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\\nreturn;\\n}\\nvec4 currentPixel = getPixel(pixelLocation);\\nvec4 result = colorize(currentPixel, 1.0);\\ngl_FragColor = vec4(result.xyz, 1.0) * result.a * u_opacity;\\n}\"},magdir:{\"magdir.frag\":\"precision mediump float;\\nvarying vec4 v_color;\\nuniform lowp float u_opacity;\\nvoid main() {\\ngl_FragColor = v_color * u_opacity;\\n}\",\"magdir.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nattribute vec2 a_offset;\\nattribute vec2 a_vv;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp vec2 u_coordScale;\\nuniform vec2 u_symbolSize;\\nuniform vec2 u_symbolPercentRange;\\nuniform vec2 u_dataRange;\\nuniform float u_rotation;\\nuniform vec4 u_colors[12];\\nvarying vec4 v_color;\\nvoid main()\\n{\\nfloat angle = a_offset.y + u_rotation;\\n#ifndef ROTATION_GEOGRAPHIC\\nangle = 3.14159265359 * 2.0 - angle - 3.14159265359 / 2.0;\\n#endif\\nvec2 offset = vec2(cos(angle), sin(angle)) * a_offset.x;\\n#ifdef DATA_RANGE\\nfloat valuePercentage = clamp((a_vv.y - u_dataRange.x) / (u_dataRange.y - u_dataRange.x), 0.0, 1.0);\\nfloat sizeRatio = u_symbolPercentRange.x + valuePercentage * (u_symbolPercentRange.y - u_symbolPercentRange.x);\\nfloat sizePercentage = clamp(sizeRatio, u_symbolPercentRange.x, u_symbolPercentRange.y);\\n#else\\nfloat sizePercentage = (u_symbolPercentRange.x + u_symbolPercentRange.y) / 2.0;\\n#endif\\nvec2 pos = a_pos + offset * sizePercentage * u_symbolSize;\\nv_color = u_colors[int(a_vv.x)];\\ngl_Position = vec4(u_dvsMat3 * vec3(pos * u_coordScale, 1.0), 1.0);\\n}\"},reproject:{\"reproject.frag\":\"precision mediump float;\\nvarying vec2 v_texcoord;\\n#include \\nvoid main() {\\nvec2 pixelLocation = getPixelLocation(v_texcoord);\\nif (isOutside(pixelLocation)) {\\ngl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\\nreturn;\\n}\\nvec4 currentPixel = getPixel(pixelLocation);\\ngl_FragColor = vec4(currentPixel.rgb, 1.0) * currentPixel.a * u_opacity;\\n}\",\"reproject.vert\":\"precision mediump float;\\nattribute vec2 a_position;\\nvarying highp vec2 v_texcoord;\\nvoid main()\\n{\\nv_texcoord = a_position;\\ngl_Position = vec4(2.0 * (a_position - 0.5), 0.0, 1.0);\\n}\"},rfx:{aspect:{\"aspect.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform vec2 u_cellSize;\\nuniform vec2 u_srcImageSize;\\n#include \\nconst float pi = 3.14159265359;\\nvoid main() {\\nvec2 axy = vec2(-1.0, -1.0);\\nvec2 bxy = vec2(0.0, -1.0);\\nvec2 cxy = vec2(1.0, -1.0);\\nvec2 dxy = vec2(-1.0, 0.0);\\nvec2 fxy = vec2(1.0, 0.0);\\nvec2 gxy = vec2(-1.0, 1.0);\\nvec2 hxy = vec2(0.0, 1.0);\\nvec2 ixy = vec2(1.0, 1.0);\\nvec2 onePixel = 1.0 / u_srcImageSize;\\nvec4 va = texture2D(u_image, mirror(v_texcoord + onePixel * axy));\\nvec4 vb = texture2D(u_image, mirror(v_texcoord + onePixel * bxy));\\nvec4 vc = texture2D(u_image, mirror(v_texcoord + onePixel * cxy));\\nvec4 vd = texture2D(u_image, mirror(v_texcoord + onePixel * dxy));\\nvec4 ve = texture2D(u_image, mirror(v_texcoord + onePixel * vec2(0, 0)));\\nvec4 vf = texture2D(u_image, mirror(v_texcoord + onePixel * fxy));\\nvec4 vg = texture2D(u_image, mirror(v_texcoord + onePixel * gxy));\\nvec4 vh = texture2D(u_image, mirror(v_texcoord + onePixel * hxy));\\nvec4 vi = texture2D(u_image, mirror(v_texcoord + onePixel * ixy));\\nfloat dzx = (vc + 2.0 * vf + vi - va - 2.0 * vd - vg).r / (8.0 * u_cellSize[0]);\\nfloat dzy = -(vg + 2.0 * vh + vi - va - 2.0 * vb - vc).r / (8.0 * u_cellSize[1]);\\nfloat alpha = va.a * vb.a * vc.a * vd.a * ve.a * vf.a * vg.a * vh.a * vi.a * sign(abs(dzx) + abs(dzy));\\nfloat aspect_rad = (dzx == 0.0) ? (step(0.0, dzy) * 0.5 * pi + step(dzy, 0.0) * 1.5 * pi) : mod((2.5 * pi + atan(dzy, -dzx)), 2.0 * pi);\\nfloat aspect = aspect_rad * 180.0 / pi;\\ngl_FragColor = vec4(aspect, aspect, aspect, 1.0) * alpha;\\n}\"},bandarithmetic:{\"bandarithmetic.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform mediump mat3 u_bandIndexMat3;\\nuniform float u_adjustments[3];\\n#include \\nvoid main() {\\nvec4 pv = texture2D(u_image, v_texcoord);\\nvec3 pv2 = u_bandIndexMat3 * pv.rgb;\\nfloat nir = pv2.r;\\nfloat red = pv2.g;\\nfloat index;\\n#ifdef NDXI\\nindex = (nir - red) * invertValue(nir + red);\\n#elif defined(SR)\\nindex = nir * invertValue(red);\\n#elif defined(CI)\\nindex = nir * invertValue(red) - 1.0;\\n#elif defined(SAVI)\\nindex = (nir - red) * invertValue(nir + red + u_adjustments[0]) * (1.0 + u_adjustments[0]);\\n#elif defined(TSAVI)\\nfloat s = u_adjustments[0];\\nfloat a = u_adjustments[1];\\nfloat x = u_adjustments[2];\\nfloat y = -a * s + x * (1.0 + s * s);\\nindex = (s * (nir - s * red - a)) * invertValue(a * nir + red + y);\\n#elif defined(MAVI)\\nindex = 0.5 * (2.0 * (nir + 1.0) - sqrt(pow((2.0 * nir + 1.0), 2.0) - 8.0 * (nir - red)));\\n#elif defined(GEMI)\\nfloat eta = (2.0 * (nir * nir - red * red) + 1.5 * nir + 0.5 * red) * invertValue(nir + red + 0.5);\\nindex = eta * (1.0 - 0.25 * eta) - (red - 0.125) * invertValue(1.0 - red);\\n#elif defined(PVI)\\nfloat a = u_adjustments[0];\\nfloat b = u_adjustments[1];\\nfloat y = sqrt(1.0 + a * a);\\nindex = (nir - a * red - b) * invertValue(y);\\n#elif defined(VARI)\\nindex = (pv2.g - pv2.r) * invertValue(pv2.g + pv2.r - pv2.b);\\n#elif defined(MTVI2)\\nfloat green = pv2.b;\\nfloat v = pow(sqrt((2.0 * nir + 1.0), 2.0) - 6.0 * nir - 5.0 * sqrt(red) - 0.5);\\nindex = 1.5 * (1.2 * (nir - green) - 2.5 * (red - green)) * v;\\n#elif defined(RTVICORE)\\nfloat green = pv2.b;\\nindex = 100.0 * (nir - red) - 10.0 * (nir - green);\\n#elif defined(EVI)\\nfloat blue = pv2.b;\\nfloat denom = nir + 6.0 * red - 7.5 * blue + 1.0;\\nindex = (2.5 * (nir - red)) * invertValue(denom);\\n#elif defined(WNDWI)\\nfloat g = pv2.r;\\nfloat n = pv2.g;\\nfloat s = pv2.s;\\nfloat a = u_adjustments[0];\\nfloat denom = g + a * n + (1.0 - a) * s;\\nindex = (g - a * n - (1 - a) * s) * invertValue(denom);\\n#elif defined(BAI)\\nindex = invertValue(pow((0.1 - red), 2.0) + pow((0.06 - nir), 2.0));\\n#else\\ngl_FragColor = pv;\\nreturn;\\n#endif\\ngl_FragColor = vec4(index, index, index, pv.a);\\n}\"},compositeband:{\"compositeband.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nuniform sampler2D u_image1;\\nuniform sampler2D u_image2;\\nvarying vec2 v_texcoord;\\nvoid main() {\\nvec4 p0 = texture2D(u_image, v_texcoord);\\nvec4 p1 = texture2D(u_image1, v_texcoord);\\nvec4 p2 = texture2D(u_image2, v_texcoord);\\ngl_FragColor = vec4(p0.r, p1.r, p2.r, p0.a * p1.a * p2.a);\\n}\"},convolution:{\"convolution.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform vec2 u_srcImageSize;\\n#define KERNEL_SIZE_ROWS ROWS\\n#define KERNEL_SIZE_COLS COLS\\nuniform vec2 u_clampRange;\\nuniform float u_kernel[25];\\n#include \\nvoid main() {\\nvec3 rgb = vec3(0.0, 0.0, 0.0);\\nvec2 resolution = 1.0 / u_srcImageSize;\\nfloat rowOffset = -float(floor(float(KERNEL_SIZE_ROWS) / 2.0));\\nfloat colOffset = -float(floor(float(KERNEL_SIZE_COLS) / 2.0));\\nfloat alpha = 1.0;\\nfor (int row = 0; row < KERNEL_SIZE_ROWS; row++) {\\nfloat pos_row = rowOffset + float(row);\\nfor (int col = 0; col < KERNEL_SIZE_COLS; col++) {\\nvec2 pos = v_texcoord + vec2(colOffset + float(col), pos_row) * resolution;\\nvec4 pv = texture2D(u_image, mirror(pos));\\nrgb += pv.rgb * u_kernel[row * KERNEL_SIZE_COLS + col];\\nalpha *= pv.a;\\n}\\n}\\nrgb = clamp(rgb, u_clampRange.s, u_clampRange.t);\\ngl_FragColor = vec4(rgb * alpha, alpha);\\n}\"},extractband:{\"extractband.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform mediump mat3 u_bandIndexMat3;\\nvoid main() {\\nvec4 pv = texture2D(u_image, v_texcoord);\\nvec3 pv2 = u_bandIndexMat3 * pv.rgb;\\ngl_FragColor = vec4(pv2, pv.a);\\n}\"},local:{\"local.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nuniform sampler2D u_image1;\\n#ifdef ONE_CONSTANT\\nuniform float u_image1Const;\\n#ifdef TWO_CONSTANT\\nuniform float u_image2Const;\\n#endif\\nuniform mat3 u_imageSwap;\\n#endif\\nvarying vec2 v_texcoord;\\nuniform vec2 u_domainRange;\\n#include \\nvoid main() {\\nvec4 pv0 = texture2D(u_image, v_texcoord);\\nfloat a = pv0.r;\\n#ifdef TWO_IMAGES\\n#ifdef ONE_CONSTANT\\nfloat b = u_image1Const;\\nvec3 abc = u_imageSwap * vec3(a, b, 0);\\na = abc.s;\\nb = abc.t;\\n#else\\nvec4 pv1 = texture2D(u_image1, v_texcoord);\\nfloat b = pv1.r;\\n#endif\\n#elif defined(CONDITIONAL)\\n#ifdef TWO_CONSTANT\\nfloat b = u_image1Const;\\nfloat c = u_image2Const;\\nvec3 abc = u_imageSwap * vec3(a, b, c);\\na = abc.s;\\nb = abc.t;\\nc = abc.p;\\n#elif defined(ONE_CONSTANT)\\nvec4 pv1 = texture2D(u_image1, v_texcoord);\\nfloat b = pv1.r;\\nfloat c = u_image1Const;\\nvec3 abc = u_imageSwap * vec3(a, b, c);\\na = abc.s;\\nb = abc.t;\\nc = abc.p;\\n#else\\nvec4 pv1 = texture2D(u_image1, v_texcoord);\\nvec4 pv2 = texture2D(u_image2, v_texcoord);\\nfloat b = pv1.r;\\nfloat c = pv2.r;\\n#endif\\n#endif\\nfloat result = a;\\nfloat alpha = pv0.a;\\n#ifdef PLUS\\nresult = a + b;\\n#elif defined(MINUS)\\nresult = a - b;\\n#elif defined(TIMES)\\nresult = a * b;\\n#elif defined(DIVIDE)\\nresult = a * invertValue(b);\\nalpha *= float(abs(sign(b)));\\n#elif defined(FLOATDIVIDE)\\nresult = a * invertValue(b);\\nalpha *= float(abs(sign(b)));\\n#elif defined(FLOORDIVIDE)\\nresult = floor(a * invertValue(b));\\nalpha *= float(abs(sign(b)));\\n#elif defined(SQUARE)\\nresult = a * a;\\n#elif defined(SQRT)\\nresult = sqrt(a);\\n#elif defined(POWER)\\nresult = pow(a, b);\\n#elif defined(LN)\\nresult = a <= 0.0 ? 0.0: log(a);\\nalpha *= float(a > 0.0);\\n#elif defined(LOG_1_0)\\nresult = a <= 0.0 ? 0.0: log2(a) * invertValue(log2(10.0));\\nalpha *= float(a > 0.0);\\n#elif defined(LOG_2)\\nresult = a <= 0.0 ? 0.0: log2(a);\\nalpha *= float(a > 0.0);\\n#elif defined(EXP)\\nresult = exp(a);\\n#elif defined(EXP_1_0)\\nresult = pow(10.0, a);\\n#elif defined(EXP_2)\\nresult = pow(2.0, a);\\n#elif defined(ROUNDDOWN)\\nresult = floor(a);\\n#elif defined(ROUNDUP)\\nresult = ceil(a);\\n#elif defined(INT)\\nresult = float(sign(a)) * floor(abs(a));\\n#elif defined(MOD)\\nresult = mod(a, b);\\n#elif defined(NEGATE)\\nresult = -a;\\n#elif defined(ABS)\\nresult = abs(a);\\n#elif defined(ACOS)\\nresult = abs(a) > 1.0 ? 0.0: acos(a);\\nalpha *= step(abs(a), 1.00001);\\n#elif defined(ACOSH)\\nresult = acosh(a);\\n#elif defined(POLYFILLACOSH)\\nresult = log(a + sqrt(a * a - 1.0));\\n#elif defined(ASIN)\\nresult = abs(a) > 1.0 ? 0.0: asin(a);\\nalpha *= step(abs(a), 1.00001);\\n#elif defined(ASINH)\\nresult = asinh(a);\\n#elif defined(POLYFILLASINH)\\nresult = log(a + sqrt(a * a + 1.0));\\n#elif defined(ATAN)\\nresult = atan(a);\\n#elif defined(ATANH)\\nresult = abs(a) > 1.0 ? 0.0: atanh(a);\\nalpha *= step(abs(a), 1.0);\\n#elif defined(POLYFILLATANH)\\nresult = a == 1.0 ? 0.0 : 0.5 * log((1.0 + a)/(1.0 -a));\\n#elif defined(ATAN_2)\\nresult = atan(a, b);\\n#elif defined(COS)\\nresult = cos(a);\\n#elif defined(COSH)\\nresult = cosh(a);\\n#elif defined(POLYFILLCOSH)\\nfloat halfexp = exp(a) / 2.0;\\nresult = halfexp + 1.0 / halfexp;\\n#elif defined(SIN)\\nresult = sin(a);\\n#elif defined(SINH)\\nresult = sinh(a);\\n#elif defined(POLYFILLSINH)\\nfloat halfexp = exp(a) / 2.0;\\nresult = halfexp - 1.0 / halfexp;\\n#elif defined(TAN)\\nresult = tan(a);\\n#elif defined(TANH)\\nresult = tanh(a);\\n#elif defined(POLYFILLTANH)\\nfloat expx = exp(a);\\nresult = (expx - 1.0 / expx) / (expx + 1.0 / expx);\\n#elif defined(BITWISEAND)\\nresult = a & b;\\n#elif defined(BITWISEOR)\\nresult = a | b;\\n#elif defined(BITWISELEFTSHIFT)\\nresult = a << b;\\n#elif defined(BITWISERIGHTSHIFT)\\nresult = a >> b;\\n#elif defined(BITWISENOT)\\nresult = ~a;\\n#elif defined(BITWISEXOR)\\nresult = a ^ b;\\n#elif defined(BOOLEANAND)\\nresult = float((a != 0.0) && (b != 0.0));\\n#elif defined(BOOLEANNOT)\\nresult = float(a == 0.0);\\n#elif defined(BOOLEANOR)\\nresult = float((a != 0.0) || (b != 0.0));\\n#elif defined(BOOLEANXOR)\\nresult = float((a != 0.0) ^^ (b != 0.0));\\n#elif defined(GREATERTHAN)\\nresult = float(a > b);\\n#elif defined(GREATERTHANEQUAL)\\nresult = float(a >= b);\\n#elif defined(LESSTHAN)\\nresult = float(a < b);\\n#elif defined(LESSTHANEQUAL)\\nresult = float(a <= b);\\n#elif defined(EQUALTO)\\nresult = float(a == b);\\n#elif defined(NOTEQUAL)\\nresult = float(a != b);\\n#elif defined(ISNULL)\\nresult = float(alpha == 0.0);\\nalpha = 1.0;\\n#elif defined(SETNULL)\\nfloat maskValue = float(a == 0.0);\\nresult = maskValue * b;\\nalpha *= maskValue;\\n#elif defined(CONDITIONAL)\\nfloat weight = float(abs(sign(a)));\\nresult = weight * b + (1.0 - weight) * c;\\n#endif\\nbool isInvalid = result < u_domainRange.s || result > u_domainRange.t;\\nresult = isInvalid ? 0.0 : result;\\nalpha *= float(!isInvalid);\\n#ifdef ROUND_OUTPUT\\nresult = floor(result + 0.5);\\n#endif\\ngl_FragColor = vec4(result, result, result, alpha);\\n}\"},mask:{\"mask.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\n#define LEN_INCLUDED_RANGES 6\\n#define LEN_NODATA_VALUES 6\\nuniform highp float u_includedRanges[6];\\nuniform highp float u_noDataValues[6];\\nfloat maskFactor(float bandValue, float fromValue, float to) {\\nfloat factor = 1.0;\\nfor (int i = 0; i < LEN_NODATA_VALUES; i++) {\\nfactor *= float(u_noDataValues[i] != bandValue);\\n}\\nfactor *= step(fromValue, bandValue) * step(bandValue, to);\\nreturn factor;\\n}\\nvoid main() {\\nvec4 pv = texture2D(u_image, v_texcoord);\\nfloat redFactor = maskFactor(pv.r, u_includedRanges[0], u_includedRanges[1]);\\n#ifdef MULTI_BAND\\nfloat greenFactor = maskFactor(pv.g, u_includedRanges[2], u_includedRanges[3]);\\nfloat blueFactor = maskFactor(pv.b, u_includedRanges[4], u_includedRanges[5]);\\nfloat maskFactor = redFactor * greenFactor * blueFactor;\\ngl_FragColor = pv * maskFactor;\\n#else\\ngl_FragColor = pv * redFactor;\\n#endif\\n}\"},ndvi:{\"ndvi.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform mediump mat3 u_bandIndexMat3;\\n#include \\nvoid main() {\\nvec4 pv = texture2D(u_image, v_texcoord);\\nvec3 pv2 = u_bandIndexMat3 * pv.rgb;\\nfloat nir = pv2.r;\\nfloat red = pv2.g;\\nfloat index = (nir - red) * invertValue(nir + red);\\n#ifdef SCALED\\nindex = floor((index + 1.0) * 100.0 + 0.5);\\n#endif\\ngl_FragColor = vec4(index, index, index, pv.a);\\n}\"},remap:{\"remap.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\n#define LEN_REMAP_RANGES 18\\n#define LEN_NODATA_RANGES 12\\nuniform highp float u_rangeMaps[18];\\nuniform highp float u_noDataRanges[12];\\nuniform highp float u_unmatchMask;\\nuniform vec2 u_clampRange;\\nvoid main() {\\nvec4 pv = texture2D(u_image, v_texcoord);\\nfloat factor = 1.0;\\nfloat bandValue = pv.r;\\nfor (int i = 0; i < LEN_NODATA_RANGES; i+=2) {\\nfloat inside = 1.0 - step(u_noDataRanges[i], bandValue) * step(bandValue, u_noDataRanges[i+1]);\\nfactor *= inside;\\n}\\nfloat mapValue = 0.0;\\nfloat includeMask = 0.0;\\nfor (int i = 0; i < LEN_REMAP_RANGES; i+=3) {\\nfloat stepMask = step(u_rangeMaps[i], bandValue) * step(bandValue, u_rangeMaps[i+1]);\\nincludeMask = (1.0 - stepMask) * includeMask + stepMask;\\nmapValue = (1.0 - stepMask) * mapValue + stepMask * u_rangeMaps[i+2];\\n}\\nbandValue = factor * (mapValue + (1.0 - includeMask) * u_unmatchMask * pv.r);\\nfloat bandMask = factor * max(u_unmatchMask, includeMask);\\nbandValue = clamp(bandValue, u_clampRange.s, u_clampRange.t);\\ngl_FragColor = vec4(bandValue, bandValue, bandValue, bandMask * pv.a);\\n}\"},slope:{\"slope.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying vec2 v_texcoord;\\nuniform vec2 u_cellSize;\\nuniform float u_zFactor;\\nuniform vec2 u_srcImageSize;\\nuniform float u_pixelSizePower;\\nuniform float u_pixelSizeFactor;\\n#include \\nvoid main() {\\nvec2 axy = vec2(-1.0, -1.0);\\nvec2 bxy = vec2(0.0, -1.0);\\nvec2 cxy = vec2(1.0, -1.0);\\nvec2 dxy = vec2(-1.0, 0.0);\\nvec2 fxy = vec2(1.0, 0.0);\\nvec2 gxy = vec2(-1.0, 1.0);\\nvec2 hxy = vec2(0.0, 1.0);\\nvec2 ixy = vec2(1.0, 1.0);\\nvec2 onePixel = 1.0 / u_srcImageSize;\\nvec4 va = texture2D(u_image, mirror(v_texcoord + onePixel * axy));\\nvec4 vb = texture2D(u_image, mirror(v_texcoord + onePixel * bxy));\\nvec4 vc = texture2D(u_image, mirror(v_texcoord + onePixel * cxy));\\nvec4 vd = texture2D(u_image, mirror(v_texcoord + onePixel * dxy));\\nvec4 ve = texture2D(u_image, mirror(v_texcoord + onePixel * vec2(0, 0)));\\nvec4 vf = texture2D(u_image, mirror(v_texcoord + onePixel * fxy));\\nvec4 vg = texture2D(u_image, mirror(v_texcoord + onePixel * gxy));\\nvec4 vh = texture2D(u_image, mirror(v_texcoord + onePixel * hxy));\\nvec4 vi = texture2D(u_image, mirror(v_texcoord + onePixel * ixy));\\nfloat xf = (u_zFactor + pow(u_cellSize[0], u_pixelSizePower) * u_pixelSizeFactor) / (8.0 * u_cellSize[0]);\\nfloat yf = (u_zFactor + pow(u_cellSize[1], u_pixelSizePower) * u_pixelSizeFactor) / (8.0 * u_cellSize[1]);\\nfloat dzx = (vc + 2.0 * vf + vi - va - 2.0 * vd - vg).r * xf;\\nfloat dzy = -(vg + 2.0 * vh + vi - va - 2.0 * vb - vc).r * yf;\\nfloat alpha = va.a * vb.a * vc.a * vd.a * ve.a * vf.a * vg.a * vh.a * vi.a;\\nfloat rise2run = sqrt(dzx * dzx + dzy * dzy);\\n#ifdef PERCENT_RISE\\nfloat percentRise = rise2run * 100.0;\\ngl_FragColor = vec4(percentRise, percentRise, percentRise, alpha);\\n#else\\nfloat degree = atan(rise2run) * 57.2957795;\\ngl_FragColor = vec4(degree, degree, degree, alpha);\\n#endif\\n}\"},stretch:{\"stretch.frag\":\"precision mediump float;\\nuniform sampler2D u_image;\\nvarying highp vec2 v_texcoord;\\nuniform float u_minCutOff[3];\\nuniform float u_maxCutOff[3];\\nuniform float u_minOutput;\\nuniform float u_maxOutput;\\nuniform float u_factor[3];\\nuniform float u_gamma[3];\\nuniform float u_gammaCorrection[3];\\nfloat stretchOneValue(float val, float minCutOff, float maxCutOff, float minOutput, float maxOutput, float factor, float gamma, float gammaCorrection) {\\nval = clamp(val, minCutOff, maxCutOff);\\nfloat stretchedVal;\\n#ifdef USE_GAMMA\\nfloat tempf = 1.0;\\nfloat outRange = maxOutput - minOutput;\\nfloat relativeVal = (val - minCutOff) / (maxCutOff - minCutOff);\\ntempf -= step(1.0, gamma) * sign(gamma - 1.0) * pow(1.0 / outRange, relativeVal * gammaCorrection);\\nstretchedVal = tempf * outRange * pow(relativeVal, 1.0 / gamma) + minOutput;\\nstretchedVal = clamp(stretchedVal, minOutput, maxOutput);\\n#else\\nstretchedVal = minOutput + (val - minCutOff) * factor;\\n#endif\\n#ifdef ROUND_OUTPUT\\nstretchedVal = floor(stretchedVal + 0.5);\\n#endif\\nreturn stretchedVal;\\n}\\nvoid main() {\\nvec4 currentPixel = texture2D(u_image, v_texcoord);\\nfloat redVal = stretchOneValue(currentPixel.r, u_minCutOff[0], u_maxCutOff[0], u_minOutput, u_maxOutput, u_factor[0], u_gamma[0], u_gammaCorrection[0]);\\n#ifdef MULTI_BAND\\nfloat greenVal = stretchOneValue(currentPixel.g, u_minCutOff[1], u_maxCutOff[1], u_minOutput, u_maxOutput, u_factor[1], u_gamma[1], u_gammaCorrection[1]);\\nfloat blueVal = stretchOneValue(currentPixel.b, u_minCutOff[2], u_maxCutOff[2], u_minOutput, u_maxOutput, u_factor[2], u_gamma[2], u_gammaCorrection[2]);\\ngl_FragColor = vec4(redVal, greenVal, blueVal, currentPixel.a);\\n#else\\ngl_FragColor = vec4(redVal, redVal, redVal, currentPixel.a);\\n#endif\\n}\"},vs:{\"vs.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp vec2 u_coordScale;\\nvarying highp vec2 v_texcoord;\\nvoid main()\\n{\\nv_texcoord = a_pos;\\ngl_Position = vec4(u_dvsMat3 * vec3(a_pos * u_coordScale, 1.0), 1.0);\\n}\"}},scalar:{\"scalar.frag\":\"precision mediump float;\\nuniform lowp float u_opacity;\\nvarying vec2 v_pos;\\nconst vec4 outlineColor = vec4(0.2, 0.2, 0.2, 1.0);\\nconst float outlineSize = 0.02;\\nconst float innerRadius = 0.25;\\nconst float outerRadius = 0.42;\\nconst float innerSquareLength = 0.15;\\nvoid main() {\\nmediump float dist = length(v_pos);\\nmediump float fillalpha1 = smoothstep(outerRadius, outerRadius + outlineSize, dist);\\nfillalpha1 *= (1.0-smoothstep(outerRadius + outlineSize, outerRadius + 0.1 + outlineSize, dist));\\n#ifdef INNER_CIRCLE\\nmediump float fillalpha2 = smoothstep(innerRadius, innerRadius + outlineSize, dist);\\nfillalpha2 *= (1.0-smoothstep(innerRadius + outlineSize, innerRadius + 0.1 + outlineSize, dist));\\n#else\\nmediump float fillalpha2 = (abs(v_pos.x) < innerSquareLength ? 1.0 : 0.0) * (abs(v_pos.y) < innerSquareLength ? 1.0 : 0.0);\\n#endif\\ngl_FragColor = (fillalpha2 + fillalpha1) * outlineColor * u_opacity;\\n}\",\"scalar.vert\":\"precision mediump float;\\nattribute vec2 a_pos;\\nattribute vec2 a_offset;\\nattribute vec2 a_vv;\\nuniform highp mat3 u_dvsMat3;\\nuniform highp vec2 u_coordScale;\\nuniform vec2 u_symbolSize;\\nuniform vec2 u_symbolPercentRange;\\nuniform vec2 u_dataRange;\\nvarying vec2 v_pos;\\nvoid main()\\n{\\n#ifdef DATA_RANGE\\nfloat valuePercentage = clamp((a_vv.y - u_dataRange.x) / (u_dataRange.y - u_dataRange.x), 0.0, 1.0);\\nfloat sizeRatio = u_symbolPercentRange.x + valuePercentage * (u_symbolPercentRange.y - u_symbolPercentRange.x);\\nfloat sizePercentage = clamp(sizeRatio, u_symbolPercentRange.x, u_symbolPercentRange.y);\\n#else\\nfloat sizePercentage = (u_symbolPercentRange.x + u_symbolPercentRange.y) / 2.0;\\n#endif\\nvec2 size = u_symbolSize * sizePercentage;\\nvec2 pos = a_pos + a_offset * size;\\nv_pos = a_offset;\\ngl_Position = vec4(u_dvsMat3 * vec3(pos * u_coordScale, 1.0), 1.0);\\n}\"},stretch:{\"stretch.frag\":\"precision mediump float;\\nvarying highp vec2 v_texcoord;\\n#include \\nuniform float u_minCutOff[3];\\nuniform float u_maxCutOff[3];\\nuniform float u_minOutput;\\nuniform float u_maxOutput;\\nuniform float u_factor[3];\\nuniform bool u_useGamma;\\nuniform float u_gamma[3];\\nuniform float u_gammaCorrection[3];\\n#include \\nfloat stretchOneValue(float val, float minCutOff, float maxCutOff, float minOutput, float maxOutput, float factor, bool useGamma, float gamma, float gammaCorrection) {\\nif (val >= maxCutOff) {\\nreturn maxOutput;\\n} else if (val <= minCutOff) {\\nreturn minOutput;\\n}\\nfloat stretchedVal;\\nif (useGamma) {\\nfloat tempf = 1.0;\\nfloat outRange = maxOutput - minOutput;\\nfloat relativeVal = (val - minCutOff) / (maxCutOff - minCutOff);\\nif (gamma > 1.0) {\\ntempf -= pow(1.0 / outRange, relativeVal * gammaCorrection);\\n}\\nstretchedVal = (tempf * outRange * pow(relativeVal, 1.0 / gamma) + minOutput) / 255.0;\\n} else {\\nstretchedVal = minOutput + (val - minCutOff) * factor;\\n}\\nreturn stretchedVal;\\n}\\nvoid main() {\\nvec2 pixelLocation = getPixelLocation(v_texcoord);\\nif (isOutside(pixelLocation)) {\\ngl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\\nreturn;\\n}\\nvec4 currentPixel = getPixel(pixelLocation);\\n#ifdef NOOP\\ngl_FragColor = vec4(currentPixel.rgb, 1.0) * currentPixel.a * u_opacity;\\nreturn;\\n#endif\\nif (u_bandCount == 1) {\\nfloat grayVal = stretchOneValue(currentPixel.r, u_minCutOff[0], u_maxCutOff[0], u_minOutput, u_maxOutput, u_factor[0], u_useGamma, u_gamma[0], u_gammaCorrection[0]);\\n#ifdef APPLY_COLORMAP\\nvec4 result = colorize(vec4(grayVal, grayVal, grayVal, 1.0), u_useGamma ? 255.0 : 1.0);\\ngl_FragColor = vec4(result.xyz, 1.0) * result.a * currentPixel.a * u_opacity;\\n#else\\ngl_FragColor = vec4(grayVal, grayVal, grayVal, 1.0) * currentPixel.a * u_opacity;\\n#endif\\n} else {\\nfloat redVal = stretchOneValue(currentPixel.r, u_minCutOff[0], u_maxCutOff[0], u_minOutput, u_maxOutput, u_factor[0], u_useGamma, u_gamma[0], u_gammaCorrection[0]);\\nfloat greenVal = stretchOneValue(currentPixel.g, u_minCutOff[1], u_maxCutOff[1], u_minOutput, u_maxOutput, u_factor[1], u_useGamma, u_gamma[1], u_gammaCorrection[1]);\\nfloat blueVal = stretchOneValue(currentPixel.b, u_minCutOff[2], u_maxCutOff[2], u_minOutput, u_maxOutput, u_factor[2], u_useGamma, u_gamma[2], u_gammaCorrection[2]);\\ngl_FragColor = vec4(redVal, greenVal, blueVal, 1.0) * currentPixel.a * u_opacity;\\n}\\n}\"}},stencil:{\"stencil.frag\":\"void main() {\\ngl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\\n}\",\"stencil.vert\":\"attribute vec2 a_pos;\\nuniform mat3 u_worldExtent;\\nvoid main() {\\ngl_Position = vec4(u_worldExtent * vec3(a_pos, 1.0), 1.0);\\n}\"},tileInfo:{\"tileInfo.frag\":\"uniform mediump sampler2D u_texture;\\nvarying mediump vec2 v_tex;\\nvoid main(void) {\\nlowp vec4 color = texture2D(u_texture, v_tex);\\ngl_FragColor = 0.75 * color;\\n}\",\"tileInfo.vert\":\"attribute vec2 a_pos;\\nuniform highp mat3 u_dvsMat3;\\nuniform mediump float u_depth;\\nuniform mediump vec2 u_coord_ratio;\\nuniform mediump vec2 u_delta;\\nuniform mediump vec2 u_dimensions;\\nvarying mediump vec2 v_tex;\\nvoid main() {\\nmediump vec2 offset = u_coord_ratio * vec2(u_delta + a_pos * u_dimensions);\\nvec3 v_pos = u_dvsMat3 * vec3(offset, 1.0);\\ngl_Position = vec4(v_pos.xy, 0.0, 1.0);\\nv_tex = a_pos;\\n}\"},util:{\"atan2.glsl\":\"float atan2(in float y, in float x) {\\nfloat t0, t1, t2, t3, t4;\\nt3 = abs(x);\\nt1 = abs(y);\\nt0 = max(t3, t1);\\nt1 = min(t3, t1);\\nt3 = 1.0 / t0;\\nt3 = t1 * t3;\\nt4 = t3 * t3;\\nt0 = - 0.013480470;\\nt0 = t0 * t4 + 0.057477314;\\nt0 = t0 * t4 - 0.121239071;\\nt0 = t0 * t4 + 0.195635925;\\nt0 = t0 * t4 - 0.332994597;\\nt0 = t0 * t4 + 0.999995630;\\nt3 = t0 * t3;\\nt3 = (abs(y) > abs(x)) ? 1.570796327 - t3 : t3;\\nt3 = x < 0.0 ? 3.141592654 - t3 : t3;\\nt3 = y < 0.0 ? -t3 : t3;\\nreturn t3;\\n}\",\"encoding.glsl\":\"const vec4 rgba2float_factors = vec4(\\n255.0 / (256.0),\\n255.0 / (256.0 * 256.0),\\n255.0 / (256.0 * 256.0 * 256.0),\\n255.0 / (256.0 * 256.0 * 256.0 * 256.0)\\n);\\nfloat rgba2float(vec4 rgba) {\\nreturn dot(rgba, rgba2float_factors);\\n}\"}};export{e as default};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport r from\"./shaderRepository.js\";import{ShaderCompiler as e}from\"../../../../../webgl/ShaderCompiler.js\";function o(e){let o=r;return e.split(\"/\").forEach((r=>{o&&(o=o[r])})),o}const t=new e(o);function n(r){return t.resolveIncludes(r)}export{n as resolveIncludes};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport{Program as r}from\"./Program.js\";function e(e,t,a=\"\"){return new r(e,a+t.shaders.vertexShader,a+t.shaders.fragmentShader,t.attributes)}export{e as createProgram};\n","/*\nAll material copyright ESRI, All Rights Reserved, unless otherwise specified.\nSee https://js.arcgis.com/4.26/esri/copyright.txt for details.\n*/\nimport e from\"../../core/Error.js\";import{unwrapOrThrow as t}from\"../../core/maybe.js\";import{PixelType as r,TextureSamplingMode as a,PixelFormat as o,SizedPixelFormat as l}from\"./enums.js\";function n(n,i){const{textureFloat:f,colorBufferFloat:s}=n.capabilities,u=f?.textureFloat,m=f?.textureFloatLinear,_=f?.textureHalfFloat,p=f?.textureHalfFloatLinear,d=f?.HALF_FLOAT,x=s?.textureFloat,b=s?.textureHalfFloat,c=s?.floatBlend,h=t(n.driverTest).floatBufferBlend.result;if(!u&&!_)throw new e(\"heatmap:missing-texture-float\",\"HeatmapRenderer requires WebGL2 or the WebGL1 extension OES_texture_float or OES_texture_half_float.\");if(!x&&!b)throw new e(\"heatmap:missing-color-buffer-float\",\"HeatmapRenderer requires the WebGL extension EXT_color_buffer_float or EXT_color_buffer_half_float or WEBGL_color_buffer_float.\");if(!(c&&h||b))throw new e(\"heatmap:missing-float-blend\",\"HeatmapRenderer requires the WebGL extension EXT_float_blend or EXT_color_buffer_half_float.\"+(h?\"\":\" This device claims support for EXT_float_blend, but does not actually support it.\"));const E=u&&x&&c&&h,F=_&&b,R=m,L=p,T=!!s?.R32F,w=!!s?.R16F;if(E&&(R||!L))return R||i.warnOnce(\"Missing WebGL extension OES_texture_float_linear. Heatmap quality may be reduced.\"),{dataType:r.FLOAT,samplingMode:R?a.LINEAR:a.NEAREST,pixelFormat:T?o.RED:o.RGBA,internalFormat:T?l.R32F:o.RGBA};if(F)return L||i.warnOnce(\"Missing WebGL extension OES_texture_half_float_linear. Heatmap quality may be reduced.\"),{dataType:d,samplingMode:L?a.LINEAR:a.NEAREST,pixelFormat:w?o.RED:o.RGBA,internalFormat:w?l.R16F:o.RGBA};throw new e(\"heatmap:missing-hardware-support\",\"HeatmapRenderer requires WebGL extensions that allow it to render and blend to float or half float textures.\")}export{n as loadHeatmapTextureConfiguration};\n"],"names":["d","o","constructor","super","arguments","this","_color","t","dispose","_program","prepareState","_ref","context","r","setStencilTestEnabled","setBlendingEnabled","setFaceCullingEnabled","setColorMask","setStencilOp","i","setStencilWriteMask","setStencilFunction","m","draw","s","state","requestRender","allowDelayedRender","f","geometry","location","name","count","type","p","g","getVAO","attributes","bufferLayouts","indexBuffer","l","a","e","compiled","useProgram","setUniform2fv","setUniform4fv","setUniformMatrix3fv","displayMat3","bindVAO","drawElements","n","size","_desc","vsPath","fsPath","Map","setBlendFunctionSeparate","painter","isReady","computedOpacity","u","dvsMat3","isWrapAround","perspectiveTransform","texture","timeline","begin","_","materialManager","getProgram","v","tex","y","bindTexture","setUniform1i","setUniform1f","A","drawArrays","end","c","getGeometryType","supportsSymbology","drawGeometry","rendererInfo","requiredLevel","passOptions","E","S","materialKey","data","N","T","shader","I","vertexLayout","U","hittestAttributes","x","programSpec","normalized","symbologyType","splice","L","h","_getTriangleDesc","G","O","b","getMaterialProgram","_setSharedUniforms","setUniform2f","key","col","row","textureBinding","textureManager","bindTextures","level","D","pixelRatio","_setSizeVVUniforms","_setColorAndOpacityVVUniforms","R","target","w","indexCount","j","indexFrom","Uint32Array","BYTES_PER_ELEMENT","_drawFills","_drawMarkers","rendererSchema","colors","defaultColor","othersColor","outlineColor","holePercentage","sectorThreshold","outlineWidth","mapAligned","Math","abs","round","displayLevel","displayViewMat3","floor","rotation","_setRotationVVUniforms","marker","line","fill","text","label","B","clip","stencil","bitmap","overlay","tileInfo","vtlBackground","vtlFill","vtlLine","vtlCircle","vtlSymbol","dotDensity","_dotTextureSize","_dotTextures","_dotSamplers","Int32Array","_dotVAO","_dotDesc","_disposeTextures","_dotFBO","_drawDotLocations","_drawDotDensity","_createDotDensityMesh","divisor","offset","stride","max","dotSize","window","devicePixelRatio","getViewport","dotScale","activeDots","backgroundColor","dotValue","setViewport","getBoundFramebufferObject","_createFBO","bindFramebuffer","setClearColor","clear","gl","COLOR_BUFFER_BIT","STENCIL_BUFFER_BIT","scale","setUniformMatrix4fv","_bindDotDensityTextures","width","height","colorTexture","pixelFormat","dataType","samplingMode","wrapMode","colorTarget","depthStencilTarget","internalFormat","length","_createDotDensityTextures","seed","setUniform1iv","Int16Array","F","_seed","_allocDotDensityTexture","Float32Array","getFloat","heatmap","pieChart","_rctx","_vertexBuffer","Uint16Array","_vao","_count","bind","unbind","coords","lengths","push","slice","undefined","_cache","vertices","indices","primitiveType","isMapSpace","static","_ref2","fromScreenExtent","xmin","ymin","xmax","ymax","path","_s$geometry","fromPolygon","fromMapExtent","error","concat","fromRect","toScreen","_ref3","destroy","vertexBuffers","elementType","getIndexBuffer","getVertexBuffers","Object","keys","reduce","parseFloat","_clip","stage","_handle","version","_invalidate","ready","_destroyGL","mesh","vao","remove","_lastWidth","_lastHeight","_createMesh","_createTransforms","dvs","_createScreenRect","left","right","top","bottom","clips","_clips","children","forEach","_updateClippingInfo","beforeRender","updateTransforms","doRender","createRenderParams","globalOpacity","profiler","drawPhase","recordContainerStart","beforeRenderLayer","_clippingInfos","renderChildren","compositeLayer","recordContainerEnd","_renderPasses","prepareRenderPasses","render","requireFBO","requiresDedicatedFBO","registerRenderPass","brushes","setTransform","onAttach","onDetach","items","map","nearest","defines","mips","bilinear","bicubic","trilinear","resolution","isSourceScaled","_quad","renderingOptions","source","blendFunction","stencilRef","coordScale","transforms","M","setSamplingProfile","brushEffect","loadQualityProfile","referenceScale","radius","isFieldActive","createOptions","_prevFBO","_accumulateOutputTexture","_accumulateFramebuffer","detachDepthStencilBuffer","_accumulateOutputStencilBuffer","_resolveGradientTexture","_tileQuad","_prevViewport","_loadResources","_updateResources","setBlendFunction","minDensity","densityRange","PI","_this$_accumulateOutp","_this$_accumulateOutp2","_this$_accumulateFram","_this$_resolveGradien","_this$_tileQuad","shadingRate","requiresSharedStencilBuffer","getSharedStencilBuffer","gradientHash","gradient","_prevGradientHash","resize","setData","depthStencilAttachment","descriptor","errorOnce","blitFramebuffer","_qualityProfile","_this$_outlineProgram","_this$_tileInfoProgra","_this$_outlineVertexA","_this$_tileInfoVertex","_outlineProgram","_tileInfoProgram","_outlineVertexArrayObject","_tileInfoVertexArrayObject","_canvas","_loadWGLResources","rangeX","rangeY","_getTexture","Int8Array","triangleCountReportedInDebug","triangleCount","document","createElement","setAttribute","id","getContext","font","textAlign","textBaseline","clearRect","fillStyle","fillRect","fillText","_initialized","_solidProgram","_solidVertexArrayObject","setDepthWriteEnabled","setDepthTestEnabled","_initialize","setStencilFunctionSeparate","_computeDesc","includes","commit","getGeometry","attributeView","forEachCommand","position","distance","tileMat3","viewMat3","vvSizeMinMaxValue","vvSizeScaleStops","vvSizeScaleStopsValue","vvSizeFieldStops","getSizeVVFieldStops","setUniform1fv","values","sizes","vvSizeUnitValue","vvSizeUnitValueToPixelsRatio","vvColor","vvColorValues","vvColors","vvOpacity","vvOpacityValues","vvOpacities","vvRotation","vvMaterialParameters","vvRotationType","findIndex","join","get","strides","set","shaders","vertexShader","fragmentShader","background","bitBlit","blend","debug","dot","filtering","fx","integrate","heatmapResolve","highlight","magnifier","materials","hittest","icon","heatmapAccumulate","pie","shared","blit","bloom","composite","gaussianBlur","luminosityHighPass","blur","dra","sobel","filterEffect","pp","raster","common","flow","imagery","particles","streamlines","hillshade","lut","magdir","reproject","rfx","aspect","bandarithmetic","compositeband","convolution","extractband","local","mask","ndvi","remap","slope","stretch","vs","scalar","util","split","resolveIncludes","textureFloat","colorBufferFloat","capabilities","textureFloatLinear","textureHalfFloat","textureHalfFloatLinear","HALF_FLOAT","floatBlend","driverTest","floatBufferBlend","result","R32F","R16F","warnOnce"],"sourceRoot":""}