textmode.js 0.1.6-beta.4 → 0.1.6-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/textmode.esm.js +1487 -4016
- package/dist/textmode.esm.min.js +1486 -4014
- package/dist/textmode.umd.js +19 -19
- package/dist/textmode.umd.min.js +18 -18
- package/dist/types/ColorPalette.d.ts +1 -5
- package/dist/types/Textmode.d.ts +0 -10
- package/dist/types/export/image/ImageDataExtractor.d.ts +1 -1
- package/dist/types/export/image/ImageExporter.d.ts +1 -1
- package/dist/types/export/image/ImageFileHandler.d.ts +1 -7
- package/dist/types/export/svg/SVGContentGenerator.d.ts +1 -1
- package/dist/types/export/svg/SVGDataExtractor.d.ts +1 -1
- package/dist/types/export/svg/SVGPathGenerator.d.ts +0 -5
- package/dist/types/export/txt/TXTDataExtractor.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/rendering/index.d.ts +0 -5
- package/dist/types/rendering/webgl/Framebuffer.d.ts +2 -9
- package/dist/types/rendering/webgl/Renderer.d.ts +2 -12
- package/dist/types/rendering/webgl/Shader.d.ts +5 -12
- package/dist/types/rendering/webgl/StateCache.d.ts +0 -2
- package/dist/types/rendering/webgl/geometries/BaseGeometry.d.ts +40 -0
- package/dist/types/rendering/webgl/geometries/Line.d.ts +6 -26
- package/dist/types/rendering/webgl/geometries/Rectangle.d.ts +8 -18
- package/dist/types/rendering/webgl/geometries/index.d.ts +3 -0
- package/dist/types/textmode/Canvas.d.ts +0 -11
- package/dist/types/textmode/ConversionPipeline.d.ts +12 -9
- package/dist/types/textmode/Grid.d.ts +1 -6
- package/dist/types/textmode/Textmodifier.d.ts +28 -610
- package/dist/types/textmode/converters/FeatureConverter.d.ts +24 -0
- package/dist/types/textmode/mixins/ConversionMixin.d.ts +63 -0
- package/dist/types/textmode/mixins/ExportMixin.d.ts +155 -0
- package/dist/types/textmode/mixins/FontMixin.d.ts +49 -0
- package/dist/types/textmode/mixins/RenderingMixin.d.ts +409 -0
- package/dist/types/textmode/mixins/TextmodifierMixin.d.ts +39 -0
- package/dist/types/textmode/mixins/index.d.ts +5 -0
- package/package.json +3 -1
- package/dist/types/rendering/webgl/shapes/LineShape.d.ts +0 -20
- package/dist/types/rendering/webgl/shapes/RectangleShape.d.ts +0 -20
- package/dist/types/rendering/webgl/shapes/Shape.d.ts +0 -21
- package/dist/types/types/index.d.ts +0 -4
package/dist/textmode.umd.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
var UA=Object.defineProperty;var FA=(I,P,b)=>P in I?UA(I,P,{enumerable:!0,configurable:!0,writable:!0,value:b}):I[P]=b;var g=(I,P,b)=>FA(I,typeof P!="symbol"?P+"":P,b);var A,t;A=this,t=function(I){class P extends Error{constructor(B,s,Q={}){super(P.t(B,Q));g(this,"A");g(this,"context");this.name="TextmodeError",this.A=s,this.context=Q}static t(B,s){let Q=B;if(s&&Object.keys(s).length>0){Q+=`
|
|
2
2
|
|
|
3
|
-
📋 Context:`;for(const[i,
|
|
4
|
-
- ${i}: ${
|
|
3
|
+
📋 Context:`;for(const[i,E]of Object.entries(s))Q+=`
|
|
4
|
+
- ${i}: ${P.i(E)}`}return Q+=`
|
|
5
5
|
|
|
6
|
-
`,
|
|
7
|
-
`,r}static formatValue(e){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return`"${e}"`;if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=5?`[${e.map(t=>d.formatValue(t)).join(", ")}]`:`[${e.slice(0,3).map(t=>d.formatValue(t)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const t=Object.keys(e);return t.length===0?"{}":t.length<=3?`{ ${t.map(s=>`${s}: ${d.formatValue(e[s])}`).join(", ")} }`:`{ ${t.slice(0,2).map(i=>`${i}: ${d.formatValue(e[i])}`).join(", ")}, ... +${t.length-2} more }`}return String(e)}}var F=(n=>(n[n.SILENT=0]="SILENT",n[n.WARNING=1]="WARNING",n[n.ERROR=2]="ERROR",n[n.THROW=3]="THROW",n))(F||{});const y=class y{constructor(){o(this,"_options",{globalLevel:3})}static getInstance(){return y._instance||(y._instance=new y),y._instance}_handle(A,e,t){const r="[textmode.js]";switch(this._options.globalLevel){case 0:return!1;case 1:return console.group(`%c${r} Oops! (╯°□°)╯︵ Something went wrong in your code.`,"color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;"),console.warn(d.createFormattedMessage(A,e)),console.groupEnd(),!1;case 2:return console.group(`%c${r} Oops! (╯°□°)╯︵ Something went wrong in your code.`,"color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;"),console.error(d.createFormattedMessage(A,e)),console.groupEnd(),!1;case 3:default:const i=new d(A,t,e);throw console.group(`%c${r} Oops! (╯°□°)╯︵ Something went wrong in your code.`,"color: #d32f2f; font-weight: bold; background: #ffcdd2; padding: 2px 6px; border-radius: 3px;"),i}}validate(A,e,t){return A?!0:(this._handle(e,t),!1)}setGlobalLevel(A){this._options.globalLevel=A}};o(y,"_instance",null);let V=y;const C=V.getInstance(),$=new WeakMap,sA=new WeakMap;function Y(n,A){$.set(n,A)}function J(n){return $.get(n)}function k(n,A){sA.set(n,A)}const G=class G{constructor(A,e,t=e,r={}){o(this,"gl");o(this,"_framebuffer");o(this,"_texture");o(this,"_width");o(this,"_height");o(this,"options");o(this,"previousState",null);o(this,"_pixels",null);o(this,"_isFromCanvasSource",!1);this.gl=A,this._width=e,this._height=t,this.options={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...r},this._texture=this.createTexture(),this._framebuffer=A.createFramebuffer(),this.attachTexture()}getMaxTextureUnits(){let A=G.maxTextureUnitsMap.get(this.gl);return A===void 0&&(A=this.gl.getParameter(this.gl.MAX_TEXTURE_IMAGE_UNITS),G.maxTextureUnitsMap.set(this.gl,A)),A}unbindTextureAcrossUnits(A){const e=this.gl,t=e.getParameter(e.ACTIVE_TEXTURE),r=this.getMaxTextureUnits();for(let i=0;i<r;i++)e.activeTexture(e.TEXTURE0+i),e.getParameter(e.TEXTURE_BINDING_2D)===A&&e.bindTexture(e.TEXTURE_2D,null);e.activeTexture(t)}createTexture(){const{gl:A}=this,e=A.createTexture();A.bindTexture(A.TEXTURE_2D,e);const t=this.options.filter==="linear"?A.LINEAR:A.NEAREST,r=this.options.wrap==="repeat"?A.REPEAT:A.CLAMP_TO_EDGE;return A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MIN_FILTER,t),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_MAG_FILTER,t),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_S,r),A.texParameteri(A.TEXTURE_2D,A.TEXTURE_WRAP_T,r),this.updateTextureSize(),e}updateTextureSize(){const{gl:A}=this,e=A.RGBA,t=A.RGBA,r=this.options.type==="float"?A.FLOAT:A.UNSIGNED_BYTE;A.texImage2D(A.TEXTURE_2D,0,e,this._width,this._height,0,t,r,null)}attachTexture(){const{gl:A}=this;A.bindFramebuffer(A.FRAMEBUFFER,this._framebuffer),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,this._texture,0),A.bindFramebuffer(A.FRAMEBUFFER,null)}update(A){const{gl:e}=this;if(A instanceof HTMLVideoElement&&A.readyState<2)return;e.bindTexture(e.TEXTURE_2D,this._texture);const t=e.getParameter(e.UNPACK_FLIP_Y_WEBGL);e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t?1:0),e.bindTexture(e.TEXTURE_2D,null),this._isFromCanvasSource=!1}updatePixels(A,e,t){const{gl:r}=this;r.bindTexture(r.TEXTURE_2D,this._texture),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,A),r.bindTexture(r.TEXTURE_2D,null),this._isFromCanvasSource=!1}resize(A,e){const{gl:t}=this;this._width=A,this._height=e,this._pixels=null,t.bindTexture(t.TEXTURE_2D,this._texture),this.updateTextureSize(),t.bindTexture(t.TEXTURE_2D,null)}begin(){const{gl:A}=this;this.previousState={framebuffer:A.getParameter(A.FRAMEBUFFER_BINDING),viewport:A.getParameter(A.VIEWPORT)},A.bindFramebuffer(A.FRAMEBUFFER,this._framebuffer),A.viewport(0,0,this._width,this._height),this.unbindTextureAcrossUnits(this._texture),k(A,!0),Y(A,[0,0,this._width,this._height]),this._isFromCanvasSource=!1}end(){if(!this.previousState)return;const{gl:A}=this;A.bindFramebuffer(A.FRAMEBUFFER,this.previousState.framebuffer),A.viewport(...this.previousState.viewport),k(A,!!this.previousState.framebuffer),Y(A,this.previousState.viewport),this.previousState=null}loadPixels(){const{gl:A}=this;this._pixels||(this._pixels=new Uint8Array(this._width*this._height*4));const e=A.getParameter(A.FRAMEBUFFER_BINDING);A.bindFramebuffer(A.FRAMEBUFFER,this._framebuffer),A.readPixels(0,0,this._width,this._height,A.RGBA,A.UNSIGNED_BYTE,this._pixels),A.bindFramebuffer(A.FRAMEBUFFER,e)}get(A,e,t,r){const{gl:i}=this;if(A===void 0&&e===void 0){const s=new Uint8Array(this._width*this._height*4),a=i.getParameter(i.FRAMEBUFFER_BINDING);return i.bindFramebuffer(i.FRAMEBUFFER,this._framebuffer),i.readPixels(0,0,this._width,this._height,i.RGBA,i.UNSIGNED_BYTE,s),i.bindFramebuffer(i.FRAMEBUFFER,a),s}else if(t===void 0&&r===void 0){(A<0||e<0||A>=this._width||e>=this._height)&&(console.warn("The x and y values passed to Framebuffer.get are outside of its range and will be clamped."),A=Math.max(0,Math.min(A,this._width-1)),e=Math.max(0,Math.min(e,this._height-1)));const s=new Uint8Array(4),a=i.getParameter(i.FRAMEBUFFER_BINDING);return i.bindFramebuffer(i.FRAMEBUFFER,this._framebuffer),i.readPixels(A,e,1,1,i.RGBA,i.UNSIGNED_BYTE,s),i.bindFramebuffer(i.FRAMEBUFFER,a),[s[0],s[1],s[2],s[3]]}else{A=Math.max(0,Math.min(A,this._width-1)),e=Math.max(0,Math.min(e,this._height-1)),t=Math.max(1,Math.min(t,this._width-A)),r=Math.max(1,Math.min(r,this._height-e));const s=new Uint8Array(t*r*4),a=i.getParameter(i.FRAMEBUFFER_BINDING);return i.bindFramebuffer(i.FRAMEBUFFER,this._framebuffer),i.readPixels(A,e,t,r,i.RGBA,i.UNSIGNED_BYTE,s),i.bindFramebuffer(i.FRAMEBUFFER,a),s}}dispose(){const{gl:A}=this;this._framebuffer&&(A.deleteFramebuffer(this._framebuffer),this._framebuffer=null),this._texture&&(A.deleteTexture(this._texture),this._texture=null),this._pixels=null}get framebuffer(){return this._framebuffer}get texture(){return this._texture}get width(){return this._width}get height(){return this._height}get pixels(){return this._pixels}get isFromCanvasSource(){return this._isFromCanvasSource}};o(G,"maxTextureUnitsMap",new WeakMap);let z=G;class _{constructor(A,e,t){o(this,"gl");o(this,"program");o(this,"uniformLocations",new Map);o(this,"attributeLocations",new Map);o(this,"textureUnitCounter",0);this.gl=A,this.program=this.createProgram(e,t),this.cacheLocations()}createProgram(A,e){const t=this.createShader(this.gl.VERTEX_SHADER,A),r=this.createShader(this.gl.FRAGMENT_SHADER,e),i=this.gl.createProgram();if(this.gl.attachShader(i,t),this.gl.attachShader(i,r),this.gl.linkProgram(i),!this.gl.getProgramParameter(i,this.gl.LINK_STATUS)){const s=this.gl.getProgramInfoLog(i);throw new Error(`Shader program link error: ${s}`)}return this.gl.deleteShader(t),this.gl.deleteShader(r),i}createShader(A,e){const t=this.gl.createShader(A);if(this.gl.shaderSource(t,e),this.gl.compileShader(t),!this.gl.getShaderParameter(t,this.gl.COMPILE_STATUS)){const r=this.gl.getShaderInfoLog(t);throw this.gl.deleteShader(t),new Error(`Shader compilation error: ${r}`)}return t}cacheLocations(){const A=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_UNIFORMS);for(let t=0;t<A;t++){const r=this.gl.getActiveUniform(this.program,t);if(r){const i=this.gl.getUniformLocation(this.program,r.name);i&&this.uniformLocations.set(r.name,i)}}const e=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_ATTRIBUTES);for(let t=0;t<e;t++){const r=this.gl.getActiveAttrib(this.program,t);if(r){const i=this.gl.getAttribLocation(this.program,r.name);this.attributeLocations.set(r.name,i)}}}use(){this.gl.useProgram(this.program),this.resetTextureUnits()}setUniform(A,e){const t=this.uniformLocations.get(A);if(!t)return;const r=this.getUniformInfo(A);if(typeof e=="number")r&&r.type===this.gl.INT?this.gl.uniform1i(t,Math.floor(e)):this.gl.uniform1f(t,e);else if(typeof e=="boolean")this.gl.uniform1i(t,e?1:0);else if(Array.isArray(e))if(r&&(r.type===this.gl.INT_VEC2||r.type===this.gl.INT_VEC3||r.type===this.gl.INT_VEC4)){const i=e.map(s=>Math.floor(s));switch(i.length){case 2:this.gl.uniform2iv(t,i);break;case 3:this.gl.uniform3iv(t,i);break;case 4:this.gl.uniform4iv(t,i);break;default:console.warn(`Unsupported array length ${i.length} for uniform '${A}'`)}}else switch(e.length){case 2:this.gl.uniform2f(t,e[0],e[1]);break;case 3:this.gl.uniform3f(t,e[0],e[1],e[2]);break;case 4:this.gl.uniform4f(t,e[0],e[1],e[2],e[3]);break;default:console.warn(`Unsupported array length ${e.length} for uniform '${A}'`)}else if(e instanceof WebGLTexture){const i=this.getNextTextureUnit();this.gl.uniform1i(t,i),this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(this.gl.TEXTURE_2D,e)}else if(e&&typeof e=="object"&&"texture"in e){const i=this.getNextTextureUnit();this.gl.uniform1i(t,i),this.gl.activeTexture(this.gl.TEXTURE0+i),this.gl.bindTexture(this.gl.TEXTURE_2D,e.texture)}else console.warn(`Unsupported uniform type for '${A}':`,typeof e)}getUniformInfo(A){const e=this.gl.getProgramParameter(this.program,this.gl.ACTIVE_UNIFORMS);for(let t=0;t<e;t++){const r=this.gl.getActiveUniform(this.program,t);if(r&&r.name===A)return r}return null}getNextTextureUnit(){return this.textureUnitCounter++}hasUniform(A){return this.uniformLocations.has(A)}hasAttribute(A){return this.attributeLocations.has(A)}get glProgram(){return this.program}dispose(){this.program&&(this.gl.deleteProgram(this.program),this.program=null),this.uniformLocations.clear(),this.attributeLocations.clear(),this.textureUnitCounter=0}resetTextureUnits(){this.textureUnitCounter=0}}var w="attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;uniform float u_rotation;uniform vec2 u_center;uniform float u_aspectRatio;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){v_uv=a_texCoord;vec2 pos=a_position;pos-=u_center;pos.x*=u_aspectRatio;pos=rotate2D(-u_rotation)*pos;pos.x/=u_aspectRatio;pos+=u_center;gl_Position=vec4(pos,0.0,1.0);}",aA="precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}",oA="precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}";class nA{constructor(A){o(this,"gl");o(this,"imageShader");o(this,"solidColorShader");o(this,"currentShader",null);o(this,"attribCache");o(this,"currentFillColor",[1,1,1,1]);o(this,"fillMode",!0);o(this,"currentStrokeColor",[0,0,0,1]);o(this,"currentStrokeWeight",1);o(this,"strokeMode",!0);o(this,"currentRotation",0);o(this,"stateStack",[]);o(this,"unitBuffer",null);o(this,"bytesPerVertex",16);o(this,"scratchFramebuffer",null);this.gl=A,this.imageShader=new _(this.gl,w,aA),this.solidColorShader=new _(this.gl,w,oA),this.attribCache=new Map,this.gl.enable(this.gl.BLEND),this.gl.blendEquation(this.gl.FUNC_ADD),this.gl.blendFunc(this.gl.ONE,this.gl.ONE_MINUS_SRC_ALPHA),Y(this.gl,[0,0,this.gl.canvas.width,this.gl.canvas.height]),k(this.gl,!1)}shader(A){this.currentShader!==A&&(this.currentShader=A,A.use())}fill(A,e,t,r){if(this.fillMode=!0,e===void 0&&t===void 0&&r===void 0){const i=A/255;this.currentFillColor=[i,i,i,1]}else if(t!==void 0&&r===void 0)this.currentFillColor=[A/255,e/255,t/255,1];else if(t!==void 0&&r!==void 0)this.currentFillColor=[A/255,e/255,t/255,r/255];else throw new Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)")}stroke(A,e,t,r){if(this.strokeMode=!0,e===void 0&&t===void 0&&r===void 0){const i=A/255;this.currentStrokeColor=[i,i,i,1]}else if(t!==void 0&&r===void 0)this.currentStrokeColor=[A/255,e/255,t/255,1];else if(t!==void 0&&r!==void 0)this.currentStrokeColor=[A/255,e/255,t/255,r/255];else throw new Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)")}strokeWeight(A){if(A<0)throw new Error("Stroke weight must be non-negative");this.currentStrokeWeight=A}noStroke(){this.strokeMode=!1}noFill(){this.fillMode=!1}rotate(A){this.currentRotation=A}push(){this.stateStack.push({fillColor:[...this.currentFillColor],fillMode:this.fillMode,strokeColor:[...this.currentStrokeColor],strokeWeight:this.currentStrokeWeight,strokeMode:this.strokeMode,rotation:this.currentRotation})}pop(){const A=this.stateStack.pop();A?(this.currentFillColor=A.fillColor,this.fillMode=A.fillMode,this.currentStrokeColor=A.strokeColor,this.currentStrokeWeight=A.strokeWeight,this.strokeMode=A.strokeMode,this.currentRotation=A.rotation):console.warn("pop() called without matching push()")}reset(){this.currentShader=null,this.stateStack=[],this.currentRotation=0}createShader(A,e){return new _(this.gl,A,e)}createFilterShader(A){return new _(this.gl,w,A)}setUniform(A,e){this.currentShader.setUniform(A,e)}rect(A,e,t,r){if(this.currentShader!==null){if(this.currentRotation!==0){const{centerX:l,centerY:c,radians:m,aspectRatio:u}=this.calculateRotationParams(A,e,t,r);this.setUniform("u_rotation",m),this.setUniform("u_center",[l,c]),this.setUniform("u_aspectRatio",u)}else this.setUniform("u_rotation",0),this.setUniform("u_center",[0,0]),this.setUniform("u_aspectRatio",1);this.drawRectImmediate(A,e,t,r),this.currentShader=null;return}const s=this.solidColorShader,a=this.currentRotation!==0;let g=0,B=0,E=0,h=1;if(a){const l=this.calculateRotationParams(A,e,t,r);g=l.centerX,B=l.centerY,E=l.radians,h=l.aspectRatio}this.fillMode&&(this.shader(s),this.setUniform("u_color",this.currentFillColor),a&&(this.setUniform("u_rotation",E),this.setUniform("u_center",[g,B]),this.setUniform("u_aspectRatio",h)),this.drawRectImmediate(A,e,t,r)),this.strokeMode&&this.currentStrokeWeight>0&&(this.shader(s),this.setUniform("u_color",this.currentStrokeColor),a&&(this.setUniform("u_rotation",E),this.setUniform("u_center",[g,B]),this.setUniform("u_aspectRatio",h)),this.drawRectStrokeImmediate(A,e,t,r,this.currentStrokeWeight))}line(A,e,t,r){if(this.currentShader!==null){const D=(A+t)/2,I=(e+r)/2,P=Math.abs(t-A)||1,p=Math.abs(r-e)||1;if(this.currentRotation!==0){const{centerX:T,centerY:b,radians:v,aspectRatio:x}=this.calculateRotationParams(D-P/2,I-p/2,P,p);this.setUniform("u_rotation",v),this.setUniform("u_center",[T,b]),this.setUniform("u_aspectRatio",x)}else this.setUniform("u_rotation",0),this.setUniform("u_center",[0,0]),this.setUniform("u_aspectRatio",1);const O=this.currentStrokeWeight>0?this.currentStrokeWeight:1;this.drawLineImmediate(A,e,t,r,O),this.currentShader=null;return}if(!this.strokeMode||this.currentStrokeWeight<=0)return;const s=this.solidColorShader,a=(A+t)/2,g=(e+r)/2,B=Math.abs(t-A)||1,E=Math.abs(r-e)||1,h=this.currentRotation!==0;let l=0,c=0,m=0,u=1;if(h){const D=this.calculateRotationParams(a-B/2,g-E/2,B,E);l=D.centerX,c=D.centerY,m=D.radians,u=D.aspectRatio}this.shader(s),this.setUniform("u_color",this.currentStrokeColor),h&&(this.setUniform("u_rotation",m),this.setUniform("u_center",[l,c]),this.setUniform("u_aspectRatio",u)),this.drawLineImmediate(A,e,t,r,this.currentStrokeWeight)}calculateRotationParams(A,e,t,r){const i=J(this.gl)||[0,0,this.gl.canvas.width,this.gl.canvas.height],s=i[2],a=i[3],g=s/a,B=A+t/2,E=e+r/2,h=B/s*2-1,l=1-E/a*2,c=this.currentRotation*Math.PI/180;return{centerX:h,centerY:l,radians:c,aspectRatio:g}}createFramebuffer(A,e,t={}){return new z(this.gl,A,e,t)}background(A,e=A,t=A,r=255){this.clear(A/255,e/255,t/255,r/255)}clear(A=0,e=0,t=0,r=0){this.gl.clearColor(A,e,t,r),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}resetViewport(){this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),Y(this.gl,[0,0,this.gl.canvas.width,this.gl.canvas.height]),k(this.gl,!1)}get context(){return this.gl}dispose(){this.scratchFramebuffer&&(this.scratchFramebuffer.dispose(),this.scratchFramebuffer=null),this.imageShader.dispose(),this.solidColorShader.dispose(),this.imageShader=null,this.solidColorShader=null,this.currentShader=null,this.stateStack=[]}image(A,e,t,r,i){const s=this.gl,a=r??A.width,g=i??A.height,B=s.getParameter(s.FRAMEBUFFER_BINDING);if(B&&A.framebuffer===B){(!this.scratchFramebuffer||this.scratchFramebuffer.width!==a||this.scratchFramebuffer.height!==g)&&(this.scratchFramebuffer&&this.scratchFramebuffer.dispose(),this.scratchFramebuffer=this.createFramebuffer(a,g)),this.scratchFramebuffer.begin(),this.clear(0,0,0,0),this.shader(this.imageShader),this.setUniform("u_texture",A.texture),this.setUniform("u_rotation",0),this.setUniform("u_center",[0,0]),this.setUniform("u_aspectRatio",1),this.drawRectImmediate(0,0,a,g),this.scratchFramebuffer.end(),this.shader(this.imageShader);const h=this.currentRotation!==0?this.calculateRotationParams(e,t,a,g):{centerX:0,centerY:0,radians:0,aspectRatio:1};this.setUniform("u_texture",this.scratchFramebuffer.texture),this.setUniform("u_rotation",h.radians),this.setUniform("u_center",[h.centerX,h.centerY]),this.setUniform("u_aspectRatio",h.aspectRatio),this.drawRectImmediate(e,t,a,g),s.bindTexture(s.TEXTURE_2D,null),this.currentShader=null;return}this.shader(this.imageShader),this.setUniform("u_texture",A.texture);const E=this.currentRotation!==0?this.calculateRotationParams(e,t,a,g):{centerX:0,centerY:0,radians:0,aspectRatio:1};this.setUniform("u_rotation",E.radians),this.setUniform("u_center",[E.centerX,E.centerY]),this.setUniform("u_aspectRatio",E.aspectRatio),this.drawRectImmediate(e,t,a,g),s.bindTexture(s.TEXTURE_2D,null),this.currentShader=null}ensureUnitBuffer(){if(this.unitBuffer)return;const A=this.gl;this.unitBuffer=A.createBuffer(),A.bindBuffer(A.ARRAY_BUFFER,this.unitBuffer)}enableAttribs(){const A=this.gl,e=A.getParameter(A.CURRENT_PROGRAM);let t=this.attribCache.get(e);return t||(t={a_position:A.getAttribLocation(e,"a_position"),a_texCoord:A.getAttribLocation(e,"a_texCoord")},this.attribCache.set(e,t)),A.enableVertexAttribArray(t.a_position),A.vertexAttribPointer(t.a_position,2,A.FLOAT,!1,this.bytesPerVertex,0),A.enableVertexAttribArray(t.a_texCoord),A.vertexAttribPointer(t.a_texCoord,2,A.FLOAT,!1,this.bytesPerVertex,8),{positionLoc:t.a_position,texLoc:t.a_texCoord}}disableAttribs(A,e){const t=this.gl;t.disableVertexAttribArray(A),t.disableVertexAttribArray(e)}uploadQuadNDC(A,e,t,r){const i=this.gl;this.ensureUnitBuffer(),i.bindBuffer(i.ARRAY_BUFFER,this.unitBuffer);const s=0,a=0,g=1,B=1,E=new Float32Array([A,r,0,s,t,r,1,a,A,e,0,g,A,e,0,g,t,r,1,a,t,e,1,B]);i.bufferData(i.ARRAY_BUFFER,E,i.DYNAMIC_DRAW)}toNDC(A,e){const t=this.gl,r=J(t)||[0,0,t.canvas.width,t.canvas.height],i=r[2],s=r[3],a=A/i*2-1,g=1-e/s*2;return{nx:a,ny:g}}drawRectImmediate(A,e,t,r){const i=this.toNDC(A,e),s=this.toNDC(A+t,e+r);this.uploadQuadNDC(i.nx,i.ny,s.nx,s.ny);const a=this.enableAttribs();this.gl.drawArrays(this.gl.TRIANGLES,0,6),this.disableAttribs(a.positionLoc,a.texLoc)}drawRectStrokeImmediate(A,e,t,r,i){this.drawRectImmediate(A,e,t,i),this.drawRectImmediate(A+t-i,e,i,r),this.drawRectImmediate(A,e+r-i,t,i),this.drawRectImmediate(A,e,i,r)}drawLineImmediate(A,e,t,r,i){const s=t-A,a=r-e,g=Math.hypot(s,a);if(g===0){this.drawRectImmediate(A-i/2,e-i/2,i,i);return}const B=s/g,h=-(a/g),l=B,c=i/2,m=A+h*c,u=e+l*c,D=A-h*c,I=e-l*c,P=t+h*c,p=r+l*c,O=t-h*c,T=r-l*c,b=this.toNDC(m,u),v=this.toNDC(D,I),x=this.toNDC(P,p),rA=this.toNDC(O,T),S=this.gl;this.ensureUnitBuffer(),S.bindBuffer(S.ARRAY_BUFFER,this.unitBuffer);const YA=new Float32Array([b.nx,b.ny,0,0,v.nx,v.ny,0,1,x.nx,x.ny,1,0,v.nx,v.ny,0,1,rA.nx,rA.ny,1,1,x.nx,x.ny,1,0]);S.bufferData(S.ARRAY_BUFFER,YA,S.DYNAMIC_DRAW);const iA=this.enableAttribs();S.drawArrays(S.TRIANGLES,0,6),this.disableAttribs(iA.positionLoc,iA.texLoc)}}var Q={};Q.parse=function(n){var A=function(i,s,a,g){var B=Q.T,E={cmap:B.cmap,head:B.head,hhea:B.hhea,maxp:B.maxp,hmtx:B.hmtx,loca:B.loca,glyf:B.glyf},h={_data:i,_index:s,_offset:a};for(var l in E){var c=Q.findTable(i,l,a);if(c){var m=c[0],u=g[m];u==null&&(u=E[l].parseTab(i,m,c[1],h)),h[l]=g[m]=u}}return h},e=new Uint8Array(n),t={},r=A(e,0,0,t);return[r]},Q.findTable=function(n,A,e){for(var t=Q.B,r=t.readUshort(n,e+4),i=e+12,s=0;s<r;s++){var a=t.readASCII(n,i,4);t.readUint(n,i+4);var g=t.readUint(n,i+8),B=t.readUint(n,i+12);if(a==A)return[g,B];i+=16}return null},Q.T={},Q.B={readShort:function(n,A){var e=Q.B.t.uint16;return e[0]=n[A]<<8|n[A+1],Q.B.t.int16[0]},readUshort:function(n,A){return n[A]<<8|n[A+1]},readUshorts:function(n,A,e){for(var t=[],r=0;r<e;r++)t.push(Q.B.readUshort(n,A+r*2));return t},readUint:function(n,A){var e=Q.B.t.uint8;return e[3]=n[A],e[2]=n[A+1],e[1]=n[A+2],e[0]=n[A+3],Q.B.t.uint32[0]},readASCII:function(n,A,e){for(var t="",r=0;r<e;r++)t+=String.fromCharCode(n[A+r]);return t},t:function(){var n=new ArrayBuffer(8);return{uint8:new Uint8Array(n),int16:new Int16Array(n),uint16:new Uint16Array(n),uint32:new Uint32Array(n)}}()},Q.T.cmap={parseTab:function(n,A,e){var t={tables:[],ids:{},off:A};n=new Uint8Array(n.buffer,A,e),A=0;var r=Q.B,i=r.readUshort,s=Q.T.cmap;i(n,A),A+=2;var a=i(n,A);A+=2;for(var g=[],B=0;B<a;B++){var E=i(n,A);A+=2;var h=i(n,A);A+=2;var l=r.readUint(n,A);A+=4;var c="p"+E+"e"+h,m=g.indexOf(l);if(m==-1){m=t.tables.length;var u={};g.push(l);var D=u.format=i(n,l);D==4?u=s.parse4(n,l,u):D==12&&(u=s.parse12(n,l,u)),t.tables.push(u)}t.ids[c]!=null&&console.log("multiple tables for one platform+encoding: "+c),t.ids[c]=m}return t},parse4:function(n,A,e){var t=Q.B,r=t.readUshort,i=t.readUshorts,s=A;A+=2;var a=r(n,A);A+=2,r(n,A),A+=2;var g=r(n,A);A+=2;var B=g>>>1;e.searchRange=r(n,A),A+=2,e.entrySelector=r(n,A),A+=2,e.rangeShift=r(n,A),A+=2,e.endCount=i(n,A,B),A+=B*2,A+=2,e.startCount=i(n,A,B),A+=B*2,e.idDelta=[];for(var E=0;E<B;E++)e.idDelta.push(t.readShort(n,A)),A+=2;return e.idRangeOffset=i(n,A,B),A+=B*2,e.glyphIdArray=i(n,A,s+a-A>>1),e},parse12:function(n,A,e){var t=Q.B,r=t.readUint;A+=4,r(n,A),A+=4,r(n,A),A+=4;var i=r(n,A)*3;A+=4;for(var s=e.groups=new Uint32Array(i),a=0;a<i;a+=3)s[a]=r(n,A+(a<<2)),s[a+1]=r(n,A+(a<<2)+4),s[a+2]=r(n,A+(a<<2)+8);return e}},Q.T.head={parseTab:function(n,A,e){var t=Q.B,r={};return A+=18,r.unitsPerEm=t.readUshort(n,A),A+=2,A+=16,r.xMin=t.readShort(n,A),A+=2,r.yMin=t.readShort(n,A),A+=2,r.xMax=t.readShort(n,A),A+=2,r.yMax=t.readShort(n,A),A+=2,A+=6,r.indexToLocFormat=t.readShort(n,A),r}},Q.T.hhea={parseTab:function(n,A,e){var t=Q.B,r={};A+=4;for(var i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],s=0;s<i.length;s++){var a=i[s],g=a=="advanceWidthMax"||a=="numberOfHMetrics"?t.readUshort:t.readShort;r[a]=g(n,A+s*2)}return r}},Q.T.hmtx={parseTab:function(n,A,e,t){for(var r=Q.B,i=[],s=[],a=t.maxp.numGlyphs,g=t.hhea.numberOfHMetrics,B=0,E=0,h=0;h<g;)B=r.readUshort(n,A+(h<<2)),E=r.readShort(n,A+(h<<2)+2),i.push(B),s.push(E),h++;for(;h<a;)i.push(B),s.push(E),h++;return{aWidth:i,lsBearing:s}}},Q.T.maxp={parseTab:function(n,A,e){var t=Q.B,r=t.readUshort,i={};return t.readUint(n,A),A+=4,i.numGlyphs=r(n,A),A+=2,i}},Q.T.loca={parseTab:function(n,A,e,t){var r=Q.B,i=[],s=t.head.indexToLocFormat,a=t.maxp.numGlyphs+1;if(s==0)for(var g=0;g<a;g++)i.push(r.readUshort(n,A+(g<<1))<<1);if(s==1)for(var g=0;g<a;g++)i.push(r.readUint(n,A+(g<<2)));return i}},Q.T.glyf={parseTab:function(n,A,e,t){for(var r=[],i=t.maxp.numGlyphs,s=0;s<i;s++)r.push(null);return r},_parseGlyf:function(n,A){var e=Q.B,t=n._data,r=n.loca;if(r[A]==r[A+1])return null;var i=Q.findTable(t,"glyf",n._offset)[0]+r[A],s={};if(s.noc=e.readShort(t,i),i+=2,s.xMin=e.readShort(t,i),i+=2,s.yMin=e.readShort(t,i),i+=2,s.xMax=e.readShort(t,i),i+=2,s.yMax=e.readShort(t,i),i+=2,s.xMin>=s.xMax||s.yMin>=s.yMax)return null;if(s.noc>0){s.endPts=[];for(var a=0;a<s.noc;a++)s.endPts.push(e.readUshort(t,i)),i+=2;var g=e.readUshort(t,i);if(i+=2,t.length-i<g)return null;i+=g;var B=s.endPts[s.noc-1]+1;s.flags=[];for(var a=0;a<B;a++){var E=t[i];if(i++,s.flags.push(E),E&8){var h=t[i];i++;for(var l=0;l<h;l++)s.flags.push(E),a++}}s.xs=[];for(var a=0;a<B;a++){var c=(s.flags[a]&2)!=0,m=(s.flags[a]&16)!=0;c?(s.xs.push(m?t[i]:-t[i]),i++):m?s.xs.push(0):(s.xs.push(e.readShort(t,i)),i+=2)}s.ys=[];for(var a=0;a<B;a++){var c=(s.flags[a]&4)!=0,m=(s.flags[a]&32)!=0;c?(s.ys.push(m?t[i]:-t[i]),i++):m?s.ys.push(0):(s.ys.push(e.readShort(t,i)),i+=2)}for(var u=0,D=0,a=0;a<B;a++)u+=s.xs[a],D+=s.ys[a],s.xs[a]=u,s.ys[a]=D}else s.parts=[];return s}},typeof module<"u"&&module.exports?module.exports=Q:typeof window<"u"&&(window.Typr=Q);const gA=`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
8
|
-
`;class BA{extractCharacters(A){var t;const e=[];return(t=A==null?void 0:A.cmap)!=null&&t.tables?(A.cmap.tables.forEach(r=>{if(r.format===4){const i=this._extractCharactersFromFormat4Table(r);e.push(...i)}else if(r.format===12){const i=this._extractCharactersFromFormat12Table(r);e.push(...i)}}),[...new Set(e)]):[]}_extractCharactersFromFormat4Table(A){const e=[];if(!A.startCount||!A.endCount||!A.idRangeOffset||!A.idDelta)return e;for(let t=0;t<A.startCount.length;t++){const r=A.startCount[t],i=A.endCount[t];if(!(r===65535&&i===65535)){for(let s=r;s<=i;s++)if(this._calculateGlyphIndexFormat4(A,s,t)>0){const g=String.fromCodePoint(s);e.push(g)}}}return e}_extractCharactersFromFormat12Table(A){const e=[];if(!A.groups)return e;for(let t=0;t<A.groups.length;t+=3){const r=A.groups[t],i=A.groups[t+1],s=A.groups[t+2];for(let a=r;a<=i;a++)if(s+(a-r)>0){const B=String.fromCodePoint(a);e.push(B)}}return e}_calculateGlyphIndexFormat4(A,e,t){if(A.idRangeOffset[t]===0)return e+A.idDelta[t]&65535;{const r=A.idRangeOffset[t]/2+(e-A.startCount[t])-(A.startCount.length-t);if(r>=0&&A.glyphIdArray&&r<A.glyphIdArray.length){const i=A.glyphIdArray[r];if(i!==0)return i+A.idDelta[t]&65535}}return 0}filterProblematicCharacters(A){return A.filter(e=>this._isValidCharacter(e))}_isValidCharacter(A){const e=A.codePointAt(0)||0;return!(e>=0&&e<=31&&e!==9&&e!==10&&e!==13||e>=127&&e<=159)}}class EA{constructor(A){o(this,"_textureCanvas");o(this,"_textureContext");o(this,"_renderer");this._renderer=A,this._textureCanvas=document.createElement("canvas"),this._textureContext=this._textureCanvas.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(A,e,t,r){const i=A.length,s=Math.ceil(Math.sqrt(i)),a=Math.ceil(i/s),g=e.width*s,B=e.height*a;this._setupCanvas(g,B,t,r),this._renderCharactersToCanvas(A,e,s,t),this._applyBlackWhiteThreshold();const E=this._renderer.createFramebuffer(g,B,{filter:"nearest"});return E.update(this._textureCanvas),{framebuffer:E,columns:s,rows:a}}_setupCanvas(A,e,t,r){this._textureCanvas.width=A,this._textureCanvas.height=e,this._textureCanvas.style.width=A+"px",this._textureCanvas.style.height=A+"px",this._textureContext.imageSmoothingEnabled=!1,this._textureCanvas.style.imageRendering="pixelated",this._textureContext.fillStyle="black",this._textureContext.fillRect(0,0,A,e),this._textureContext.font=`${t}px ${r}`,this._textureContext.textBaseline="top",this._textureContext.textAlign="left",this._textureContext.fillStyle="white"}_renderCharactersToCanvas(A,e,t,r){for(let i=0;i<A.length;i++){const s=i%t,a=Math.floor(i/t),g=s*e.width+e.width*.5,B=a*e.height+e.height*.5,E=Math.round(g-e.width*.5),h=Math.round(B-r*.5);this._textureContext.fillText(A[i].character,E,h)}}_applyBlackWhiteThreshold(A=128){const e=this._textureContext.getImageData(0,0,this._textureCanvas.width,this._textureCanvas.height),t=e.data;for(let r=0;r<t.length;r+=4){const i=.299*t[r]+.587*t[r+1]+.114*t[r+2],s=A+32,a=i>s?255:0;t[r]=a,t[r+1]=a,t[r+2]=a}this._textureContext.putImageData(e,0,0)}}class hA{constructor(){o(this,"_tempCanvas");o(this,"_tempContext");this._tempCanvas=document.createElement("canvas"),this._tempContext=this._tempCanvas.getContext("2d")}calculateMaxGlyphDimensions(A,e,t){this._tempContext.font=`${e}px ${t}`;let r=0,i=0;for(const s of A){const a=this._tempContext.measureText(s),g=a.width,B=a.actualBoundingBoxAscent+a.actualBoundingBoxDescent;g>0&&(r=Math.max(r,g),i=Math.max(i,B))}return{width:Math.ceil(r),height:Math.ceil(i)}}}class lA{createCharacterObjects(A,e){return A.map((t,r)=>{const i=t.codePointAt(0)||0,s=this._generateCharacterColor(r);let a=0;if(e.hmtx&&e.hmtx.aWidth){const g=this._getGlyphIndex(e,i);g>0&&e.hmtx.aWidth[g]!==void 0&&(a=e.hmtx.aWidth[g])}return{character:t,unicode:i,color:s,advanceWidth:a}})}_getGlyphIndex(A,e){const t=A.cmap;if(!t||!t.tables)return 0;for(const r of t.tables)if(r.format===4){for(let i=0;i<r.startCount.length;i++)if(e>=r.startCount[i]&&e<=r.endCount[i]){if(r.idRangeOffset[i]===0)return e+r.idDelta[i]&65535;{const s=r.idRangeOffset[i]/2+(e-r.startCount[i])-(r.startCount.length-i);if(s>=0&&s<r.glyphIdArray.length){const a=r.glyphIdArray[s];if(a!==0)return a+r.idDelta[i]&65535}}}}return 0}_generateCharacterColor(A){const e=A%256,t=Math.floor(A/256)%256,r=Math.floor(A/65536)%256;return[e,t,r]}getCharacterColor(A,e){if(!C.validate(typeof A=="string"&&A.length===1,"Character must be a single character string.",{method:"getCharacterColor",providedValue:A}))return[0,0,0];const t=e.find(r=>r.character===A);return t?t.color:[0,0,0]}getCharacterColors(A,e){return C.validate(typeof A=="string"&&A.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:A})?A.split("").map(t=>this.getCharacterColor(t,e)||[0,0,0]):[[0,0,0]]}}class K{constructor(A,e=16){o(this,"_font");o(this,"_characters",[]);o(this,"_fontFramebuffer");o(this,"_fontSize",16);o(this,"_textureColumns",0);o(this,"_textureRows",0);o(this,"_maxGlyphDimensions",{width:0,height:0});o(this,"_fontFace");o(this,"_fontFamilyName","UrsaFont");o(this,"_characterExtractor");o(this,"_textureAtlas");o(this,"_metricsCalculator");o(this,"_characterColorMapper");this._fontSize=e,this._characterExtractor=new BA,this._textureAtlas=new EA(A),this._metricsCalculator=new hA,this._characterColorMapper=new lA}async initialize(A){let e;if(A){const t=await fetch(A);if(!t.ok)throw new d(`Failed to load font file: ${t.status} ${t.statusText}`);e=await t.arrayBuffer()}else e=await(await fetch(gA)).arrayBuffer();await this._loadFontFace(e),this._font=Q.parse(e)[0],await this._initializeFont()}setFontSize(A){if(A===void 0)return this._fontSize;this._fontSize=A,this._maxGlyphDimensions=this._metricsCalculator.calculateMaxGlyphDimensions(this._characters.map(t=>t.character),this._fontSize,this._fontFamilyName);const e=this._textureAtlas.createTextureAtlas(this._characters,this._maxGlyphDimensions,this._fontSize,this._fontFamilyName);this._fontFramebuffer=e.framebuffer,this._textureColumns=e.columns,this._textureRows=e.rows}async loadFont(A){try{const e=await fetch(A);if(!e.ok)throw new d(`Failed to load font file: ${e.status} ${e.statusText}`);const t=await e.arrayBuffer();await this._loadFontFace(t);const r=Q.parse(t);if(!r||r.length===0)throw new Error("Failed to parse font file");this._font=r[0],await this._initializeFont()}catch(e){throw new d(`Failed to load font: ${e instanceof Error?e.message:"Unknown error"}`,e)}}async _loadFontFace(A){const e=Date.now();this._fontFamilyName=this._fontFamilyName==="UrsaFont"?"UrsaFont":`CustomFont_${e}`,this._fontFace=new FontFace(this._fontFamilyName,A),await this._fontFace.load(),document.fonts.add(this._fontFace)}async _initializeFont(){const A=this._characterExtractor.extractCharacters(this._font),e=this._characterExtractor.filterProblematicCharacters(A);this._characters=this._characterColorMapper.createCharacterObjects(e,this._font),this._maxGlyphDimensions=this._metricsCalculator.calculateMaxGlyphDimensions(e,this._fontSize,this._fontFamilyName);const t=this._textureAtlas.createTextureAtlas(this._characters,this._maxGlyphDimensions,this._fontSize,this._fontFamilyName);this._fontFramebuffer=t.framebuffer,this._textureColumns=t.columns,this._textureRows=t.rows}getCharacterColor(A){return this._characterColorMapper.getCharacterColor(A,this._characters)}getCharacterColors(A){return this._characterColorMapper.getCharacterColors(A,this._characters)}hasAllCharacters(A){if(typeof A!="string"||A.length===0)return!1;const e=new Set(this._characters.map(t=>t.character));for(const t of A)if(!e.has(t))return!1;return!0}get fontFramebuffer(){return this._fontFramebuffer}get characters(){return this._characters}get textureColumns(){return this._textureColumns}get textureRows(){return this._textureRows}get maxGlyphDimensions(){return this._maxGlyphDimensions}dispose(){this._fontFramebuffer.dispose(),document.fonts.delete(this._fontFace),this._fontFramebuffer=null,this._fontFace=null,this._font=null,this._characters=[],this._maxGlyphDimensions={width:0,height:0},this._textureColumns=0,this._textureRows=0}get fontSize(){return this._fontSize}get font(){return this._font}}class j{constructor(A,e,t){o(this,"_cols");o(this,"_rows");o(this,"_width");o(this,"_height");o(this,"_offsetX");o(this,"_offsetY");o(this,"_fixedDimensions",!1);o(this,"_canvas");o(this,"_cellWidth");o(this,"_cellHeight");this._canvas=A,this._cellWidth=e,this._cellHeight=t,this.reset()}reset(){if(!this._fixedDimensions){const A=this._canvas.width,e=this._canvas.height;[this._cols,this._rows]=[Math.floor(A/this._cellWidth),Math.floor(e/this._cellHeight)]}this._resizeGrid()}_resizeGrid(){const A=this._canvas.width,e=this._canvas.height;this._width=this._cols*this._cellWidth,this._height=this._rows*this._cellHeight,this._offsetX=Math.floor((A-this._width)/2),this._offsetY=Math.floor((e-this._height)/2)}resizeCellPixelDimensions(A,e){[this._cellWidth,this._cellHeight]=[A,e],this.reset()}resizeGridDimensions(A,e){this._fixedDimensions=!0,[this._cols,this._rows]=[A,e],this._resizeGrid()}resetGridDimensions(){this._fixedDimensions=!1,this.reset()}resize(){this._fixedDimensions?this._resizeGrid():this.reset()}fixedDimensions(A){if(A===void 0)return this._fixedDimensions;this._fixedDimensions=A}get cellWidth(){return this._cellWidth}get cellHeight(){return this._cellHeight}dispose(){this._canvas=null,this._cols=0,this._rows=0,this._width=0,this._height=0,this._offsetX=0,this._offsetY=0,this._cellWidth=0,this._cellHeight=0}get cols(){return this._cols}get rows(){return this._rows}get width(){return this._width}get height(){return this._height}get offsetX(){return this._offsetX}get offsetY(){return this._offsetY}}class Z{constructor(A,e=!1,t={}){o(this,"_canvas");o(this,"captureSource");o(this,"_isStandalone");o(this,"resizeObserver");o(this,"onTransformChange");this.captureSource=A,this._isStandalone=e,this._canvas=this.createCanvas(t.width,t.height),e&&this.setupTransformObserver()}createCanvas(A,e){var r;const t=document.createElement("canvas");if(t.className="textmodeCanvas",t.style.imageRendering="pixelated",this._isStandalone)t.width=A||800,t.height=e||600,document.body.appendChild(t);else{const i=this.captureSource.getBoundingClientRect();let s=Math.round(i.width),a=Math.round(i.height);if(this.captureSource instanceof HTMLVideoElement){const E=this.captureSource;(s===0||a===0)&&E.videoWidth>0&&E.videoHeight>0&&(s=E.videoWidth,a=E.videoHeight)}t.width=s,t.height=a,t.style.position="absolute",t.style.pointerEvents="none";const g=window.getComputedStyle(this.captureSource);let B=parseInt(g.zIndex||"0",10);isNaN(B)&&(B=0),t.style.zIndex=(B+1).toString(),this.positionOverlayCanvas(t),(r=this.captureSource.parentNode)==null||r.insertBefore(t,this.captureSource.nextSibling)}return t}positionOverlayCanvas(A){const e=this.captureSource.getBoundingClientRect();let t=this.captureSource.offsetParent;if(t&&t!==document.body){const r=t.getBoundingClientRect();A.style.top=e.top-r.top+"px",A.style.left=e.left-r.left+"px"}else A.style.top=e.top+window.scrollY+"px",A.style.left=e.left+window.scrollX+"px"}resize(A,e){if(this._isStandalone)this._canvas.width=A??this._canvas.width,this._canvas.height=e??this._canvas.height;else{const t=this.captureSource.getBoundingClientRect();let r=Math.round(t.width),i=Math.round(t.height);if(this.captureSource instanceof HTMLVideoElement){const s=this.captureSource;(r===0||i===0)&&s.videoWidth>0&&s.videoHeight>0&&(r=s.videoWidth,i=s.videoHeight)}this._canvas.width=r,this._canvas.height=i,this.positionOverlayCanvas(this._canvas)}}getWebGLContext(){const A={alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"},e=this._canvas.getContext("webgl2",A)||this._canvas.getContext("webgl",A);if(!e)throw new d("WebGL context could not be created. Ensure your browser supports WebGL.");return e}getEffectiveRenderingDimensions(){return this._canvas?{width:this._canvas.width,height:this._canvas.height}:{width:0,height:0}}isTransformed(){if(!this._canvas||!this._isStandalone)return!1;const A=this._canvas.getBoundingClientRect(),e=Math.round(A.width),t=Math.round(A.height);return e!==this._canvas.width||t!==this._canvas.height}setupTransformObserver(){typeof ResizeObserver>"u"||(this.resizeObserver=new ResizeObserver(A=>{for(const e of A){const t=e.contentRect,r=Math.round(t.width),i=Math.round(t.height);this.onTransformChange&&(r!==this._canvas.width||i!==this._canvas.height)&&this.onTransformChange()}}),this.resizeObserver.observe(this._canvas))}dispose(){if(this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=void 0),this._canvas){const A=this._canvas.getContext("webgl")||this._canvas.getContext("webgl2");if(A){const e=A.getExtension("WEBGL_lose_context");e&&e.loseContext()}this._canvas.parentNode&&this._canvas.parentNode.removeChild(this._canvas),this._canvas=null}this.captureSource=null}get canvas(){return this._canvas}get width(){return this._canvas.width}get height(){return this._canvas.height}}class R{constructor(A,e,t,r={}){o(this,"renderer");o(this,"fontManager");o(this,"grid");o(this,"_characterFramebuffer");o(this,"_primaryColorFramebuffer");o(this,"_secondaryColorFramebuffer");o(this,"_rotationFramebuffer");o(this,"_transformFramebuffer");o(this,"_options");this.renderer=A,this.fontManager=e,this.grid=t,this._options=r,this._characterFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows),this._primaryColorFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows),this._secondaryColorFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows),this._rotationFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows),this._transformFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows)}resize(){this._characterFramebuffer.resize(this.grid.cols,this.grid.rows),this._primaryColorFramebuffer.resize(this.grid.cols,this.grid.rows),this._secondaryColorFramebuffer.resize(this.grid.cols,this.grid.rows),this._rotationFramebuffer.resize(this.grid.cols,this.grid.rows),this._transformFramebuffer.resize(this.grid.cols,this.grid.rows)}enabled(A){this._options.enabled=A}enable(){this.enabled(!0)}disable(){this.enabled(!1)}dispose(){this._characterFramebuffer.dispose(),this._primaryColorFramebuffer.dispose(),this._secondaryColorFramebuffer.dispose(),this._rotationFramebuffer.dispose(),this._transformFramebuffer.dispose(),this._characterFramebuffer=null,this._primaryColorFramebuffer=null,this._secondaryColorFramebuffer=null,this._rotationFramebuffer=null,this._transformFramebuffer=null}get characterFramebuffer(){return this._characterFramebuffer}get primaryColorFramebuffer(){return this._primaryColorFramebuffer}get secondaryColorFramebuffer(){return this._secondaryColorFramebuffer}get rotationFramebuffer(){return this._rotationFramebuffer}get transformFramebuffer(){return this._transformFramebuffer}get options(){return this._options}}class QA{constructor(A,e){o(this,"_framebuffer");o(this,"_renderer");o(this,"_colors");this._renderer=A,this._colors=e;const t=Math.max(this._colors.length,1);this._framebuffer=this._renderer.createFramebuffer(t,1),this._updateFramebuffer()}_updateFramebuffer(){if(!this._framebuffer)return;const A=Math.max(this._colors.length,1),e=1;this._framebuffer.width!==A&&this._framebuffer.resize(A,e);const t=new Uint8Array(A*e*4);for(let r=0;r<A;r++){const i=r<this._colors.length?this._colors[r]:[0,0,0],s=r*4;t[s]=i[0],t[s+1]=i[1],t[s+2]=i[2],t[s+3]=255}this._framebuffer.updatePixels(t,A,e)}setColors(A){this._colors=A,this._updateFramebuffer()}get colors(){return this._colors}get framebuffer(){return this._framebuffer}get texture(){return this._framebuffer.texture}}class L extends R{constructor(e,t,r,i={}){super(e,t,r,i);o(this,"palette");this.palette=new QA(this.renderer,this.fontManager.getCharacterColors(" .:-=+*%@#"))}characters(e){C.validate(this.fontManager.hasAllCharacters(e),"One or more characters do not exist in the current font.",{method:"characters",providedValue:e})&&(this._options.characters=e,this.palette.setColors(this.fontManager.getCharacterColors(e)))}characterColor(e,t,r,i=255){let s,a,g,B;if(typeof e=="string"){const E=this.parseHexColor(e);if(!E){C.validate(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:"characterColor",providedValue:e});return}[s,a,g,B]=E}else if(s=e,a=t!==void 0?t:e,g=r!==void 0?r:e,B=i,!C.validate([s,a,g,B].every(E=>E>=0&&E<=255),"Character color values must be between 0 and 255",{method:"characterColor",providedValues:{r:s,g:a,b:g,a:B}}))return;this._options.characterColor=[s/255,a/255,g/255,B/255]}characterColorMode(e){C.validate(["sampled","fixed"].includes(e),"Invalid character color mode. Must be 'sampled' or 'fixed'.",{method:"characterColorMode",providedValue:e})&&(this._options.characterColorMode=e)}cellColor(e,t,r,i=255){let s,a,g,B;if(typeof e=="string"){const E=this.parseHexColor(e);if(!E){C.validate(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:"cellColor",providedValue:e});return}[s,a,g,B]=E}else if(s=e,a=t!==void 0?t:e,g=r!==void 0?r:e,B=i,!C.validate([s,a,g,B].every(E=>E>=0&&E<=255),"Cell color values must be between 0 and 255",{method:"cellColor",providedValues:{r:s,g:a,b:g,a:B}}))return;this._options.cellColor=[s/255,a/255,g/255,B/255]}cellColorMode(e){C.validate(["sampled","fixed"].includes(e),"Invalid cell color mode. Must be 'sampled' or 'fixed'.",{method:"cellColorMode",providedValue:e})&&(this._options.cellColorMode=e)}invert(e){C.validate(typeof e=="boolean"||typeof e=="number"&&Number.isInteger(e),"Invert must be a boolean value or an integer (0 for false, any other number for true).",{method:"invert",providedValue:e})&&(this._options.invert=!!e)}rotation(e){if(!C.validate(typeof e=="number","Rotation angle must be a number.",{method:"rotation",providedValue:e}))return;e=e%360,e<0&&(e+=360);const t=e*255/360,r=Math.floor(t)/255,i=Math.round(t-r);this._options.rotation=[r,i,0,1]}flipHorizontally(e){C.validate(typeof e=="boolean"||typeof e=="number"&&Number.isInteger(e),"Flip horizontally must be a boolean value or an integer (0 for false, any other number for true).",{method:"flipHorizontally",providedValue:e})&&(this._options.flipHorizontally=!!e)}flipVertically(e){C.validate(typeof e=="boolean"||typeof e=="number"&&Number.isInteger(e),"Flip vertically must be a boolean value or an integer (0 for false, any other number for true).",{method:"flipVertically",providedValue:e})&&(this._options.flipVertically=!!e)}parseHexColor(e){if(e=e.replace(/^#/,""),!/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(e))return null;e.length===3&&(e=e.split("").map(s=>s+s).join(""));const t=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),i=parseInt(e.slice(4,6),16);return[t,r,i,255]}}var cA="precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;vec4 color=texture2D(u_sketchTexture,cellCenter);float brightness=dot(color.rgb,vec3(0.299,0.587,0.114));float brightnessValue=brightness*255.0;if(brightnessValue>=u_brightnessRange.x&&brightnessValue<=u_brightnessRange.y){gl_FragColor=color;}else{gl_FragColor=vec4(0.0);}}",uA="precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_fillColor;uniform bool u_useFixedColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){if(u_useFixedColor){gl_FragColor=u_fillColor;}else{gl_FragColor=sampleColor;}}else{gl_FragColor=vec4(0.0);}}",dA="precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}",fA="precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotationColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotationColor;}else{gl_FragColor=vec4(0.0);}}",CA="precision lowp float;uniform sampler2D u_colorSampleFramebuffer;uniform sampler2D u_charPaletteTexture;uniform vec2 u_charPaletteSize;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec4 color=texture2D(u_colorSampleFramebuffer,v_uv);if(color.a==0.0){gl_FragColor=vec4(0.0);return;}float brightness=dot(color.rgb,vec3(0.299,0.587,0.114))*255.0;vec2 range=u_brightnessRange;if(brightness<range.x||brightness>range.y){gl_FragColor=vec4(0.0);return;}float t=(brightness-range.x)/(range.y-range.x);float idx=clamp(floor(t*u_charPaletteSize.x),0.0,u_charPaletteSize.x-1.0);vec3 charColor=texture2D(u_charPaletteTexture,vec2((idx+0.5)/u_charPaletteSize.x,0.0)).rgb;gl_FragColor=vec4(charColor,1.0);}";const mA={enabled:!0,characters:" .:-=+*%@#",characterColor:[1,1,1,1],characterColorMode:"sampled",cellColor:[0,0,0,1],cellColorMode:"fixed",invert:!1,rotation:[0,0,0,255],flipHorizontally:!1,flipVertically:!1,brightnessRange:[0,255]};class H extends L{constructor(e,t,r){super(e,t,r,{...mA});o(this,"sampleShader");o(this,"colorFillShader");o(this,"charMappingShader");o(this,"transformFillShader");o(this,"rotationFillShader");o(this,"sampleFramebuffer");this.sampleShader=new _(e.context,w,cA),this.colorFillShader=new _(e.context,w,uA),this.transformFillShader=new _(e.context,w,dA),this.rotationFillShader=new _(e.context,w,fA),this.charMappingShader=new _(e.context,w,CA),this.sampleFramebuffer=this.renderer.createFramebuffer(this.grid.cols,this.grid.rows)}convert(e){this.sampleFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this.sampleShader),this.renderer.setUniform("u_sketchTexture",e),this.renderer.setUniform("u_gridCellDimensions",[this.grid.cols,this.grid.rows]),this.renderer.setUniform("u_brightnessRange",this._options.brightnessRange),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this.sampleFramebuffer.end(),this._primaryColorFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this.colorFillShader),this.renderer.setUniform("u_sampleTexture",this.sampleFramebuffer.texture),this.renderer.setUniform("u_fillColor",this._options.characterColor),this.renderer.setUniform("u_useFixedColor",this._options.characterColorMode==="fixed"),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this._primaryColorFramebuffer.end(),this._secondaryColorFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this.colorFillShader),this.renderer.setUniform("u_sampleTexture",this.sampleFramebuffer.texture),this.renderer.setUniform("u_fillColor",this._options.cellColor),this.renderer.setUniform("u_useFixedColor",this._options.cellColorMode==="fixed"),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this._secondaryColorFramebuffer.end(),this._transformFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this.transformFillShader),this.renderer.setUniform("u_sampleTexture",this.sampleFramebuffer.texture),this.renderer.setUniform("u_invert",this._options.invert),this.renderer.setUniform("u_flipHorizontally",this._options.flipHorizontally),this.renderer.setUniform("u_flipVertically",this._options.flipVertically),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this._transformFramebuffer.end(),this._rotationFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this.rotationFillShader),this.renderer.setUniform("u_sampleTexture",this.sampleFramebuffer.texture),this.renderer.setUniform("u_rotationColor",this._options.rotation),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this._rotationFramebuffer.end(),this._characterFramebuffer.begin(),this.renderer.clear(0,0,0,0),this.renderer.shader(this.charMappingShader),this.renderer.setUniform("u_colorSampleFramebuffer",this.sampleFramebuffer.texture),this.renderer.setUniform("u_charPaletteTexture",this.palette.texture),this.renderer.setUniform("u_charPaletteSize",[this.palette.colors.length,1]),this.renderer.setUniform("u_brightnessRange",this._options.brightnessRange),this.renderer.rect(0,0,this.grid.cols,this.grid.rows),this._characterFramebuffer.end()}resize(){super.resize(),this.sampleFramebuffer.resize(this.grid.cols,this.grid.rows)}brightnessRange(e){C.validate(Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number"&&t>=0&&t<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",providedValue:e})&&(this._options.brightnessRange=e)}}const DA=Object.freeze(Object.defineProperty({__proto__:null,TextmodeBrightnessConverter:H,TextmodeConverter:R,TextmodeFeatureConverter:L},Symbol.toStringTag,{value:"Module"}));var pA="precision mediump float;uniform sampler2D u_characterTexture;uniform vec2 u_charsetDimensions;uniform sampler2D u_primaryColorTexture;uniform sampler2D u_secondaryColorTexture;uniform sampler2D u_transformTexture;uniform sampler2D u_asciiCharacterTexture;uniform sampler2D u_rotationTexture;uniform sampler2D u_captureTexture;uniform vec2 u_captureDimensions;uniform int u_backgroundMode;uniform vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){vec2 adjustedCoord=gl_FragCoord.xy/u_gridPixelDimensions;vec2 gridCoord=adjustedCoord*u_gridCellDimensions;vec2 cellCoord=floor(gridCoord);vec2 charIndexTexCoord=(cellCoord+0.5)/u_gridCellDimensions;vec4 primaryColor=texture2D(u_primaryColorTexture,charIndexTexCoord);vec4 secondaryColor=texture2D(u_secondaryColorTexture,charIndexTexCoord);vec4 transformColor=texture2D(u_transformTexture,charIndexTexCoord);bool isInverted=transformColor.r>0.5;bool flipHorizontal=transformColor.g>0.5;bool flipVertical=transformColor.b>0.5;vec4 encodedIndexVec=texture2D(u_asciiCharacterTexture,charIndexTexCoord);if(encodedIndexVec.a<0.01){gl_FragColor=(u_backgroundMode==0)? vec4(0.0):texture2D(u_captureTexture,gl_FragCoord.xy/u_captureDimensions);return;}int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}";class q{constructor(A,e,t){o(this,"renderer");o(this,"font");o(this,"grid");o(this,"converters");o(this,"_resultFramebuffer");o(this,"_asciiShader");o(this,"_characterFramebuffer");o(this,"_primaryColorFramebuffer");o(this,"_secondaryColorFramebuffer");o(this,"_rotationFramebuffer");o(this,"_transformFramebuffer");this.renderer=A,this.font=e,this.grid=t,this._asciiShader=this.renderer.createShader(w,pA),this.converters=[{name:"brightness",converter:new H(A,e,t)},{name:"custom",converter:new R(A,e,t)}],this._characterFramebuffer=this.renderer.createFramebuffer(t.cols,t.rows),this._primaryColorFramebuffer=this.renderer.createFramebuffer(t.cols,t.rows),this._secondaryColorFramebuffer=this.renderer.createFramebuffer(t.cols,t.rows),this._rotationFramebuffer=this.renderer.createFramebuffer(t.cols,t.rows),this._transformFramebuffer=this.renderer.createFramebuffer(t.cols,t.rows),this._resultFramebuffer=this.renderer.createFramebuffer(this.grid.width,this.grid.height)}render(A){for(const t of this.converters){const r=t.converter;r.options.enabled&&r instanceof L&&r.convert(A)}const e=(t,r)=>{t.begin(),this.renderer.clear();for(const i of this.converters){const s=i.converter;s.options.enabled&&this.renderer.image(r(s),0,0)}t.end()};e(this._characterFramebuffer,t=>t.characterFramebuffer),e(this._primaryColorFramebuffer,t=>t.primaryColorFramebuffer),e(this._secondaryColorFramebuffer,t=>t.secondaryColorFramebuffer),e(this._rotationFramebuffer,t=>t.rotationFramebuffer),e(this._transformFramebuffer,t=>t.transformFramebuffer),this._resultFramebuffer.begin(),this.renderer.clear(),this.renderer.shader(this._asciiShader),this.renderer.setUniform("u_characterTexture",this.font.fontFramebuffer),this.renderer.setUniform("u_charsetDimensions",[this.font.textureColumns,this.font.textureRows]),this.renderer.setUniform("u_asciiCharacterTexture",this._characterFramebuffer.texture),this.renderer.setUniform("u_primaryColorTexture",this._primaryColorFramebuffer.texture),this.renderer.setUniform("u_secondaryColorTexture",this._secondaryColorFramebuffer.texture),this.renderer.setUniform("u_transformTexture",this._transformFramebuffer.texture),this.renderer.setUniform("u_rotationTexture",this._rotationFramebuffer.texture),this.renderer.setUniform("u_captureTexture",A.texture),this.renderer.setUniform("u_backgroundMode",!1),this.renderer.setUniform("u_captureDimensions",[A.width,A.height]),this.renderer.setUniform("u_gridCellDimensions",[this.grid.cols,this.grid.rows]),this.renderer.setUniform("u_gridPixelDimensions",[this.grid.width,this.grid.height]),this.renderer.rect(0,0,this._resultFramebuffer.width,this._resultFramebuffer.height),this._resultFramebuffer.end()}get(A){if(!C.validate(typeof A=="string"&&A.length>0,"Converter name must be a non-empty string.",{method:"converter",providedValue:A}))return;const e=this.converters.find(r=>r.name===A),t=e==null?void 0:e.converter;if(C.validate(t instanceof R,`Converter "${A}" is not a valid TextmodeConverter.`,{method:"converter",providedValue:A,converterInstance:t}))return t}add(A,e){if(!C.validate(typeof A=="string"&&A.length>0,"Converter name must be a non-empty string.",{method:"add",providedValue:A})||!C.validate(e==="brightness"||e==="custom",`Converter type must be either "brightness" or "custom". Provided: ${e}`,{method:"add",providedValue:e}))return;let t;return e==="brightness"?t=new H(this.renderer,this.font,this.grid):t=new R(this.renderer,this.font,this.grid),this.converters.push({name:A,converter:t}),t}remove(A){if(!C.validate(typeof A=="string"||A instanceof R,"Parameter must be either a string (converter name) or a TextmodeConverter instance.",{method:"remove",providedValue:A}))return;let e=-1;if(typeof A=="string"){if(!C.validate(A.length>0,"Converter name must be a non-empty string.",{method:"remove",providedValue:A}))return;e=this.converters.findIndex(t=>t.name===A)}else e=this.converters.findIndex(t=>t.converter===A);C.validate(e!==-1,typeof A=="string"?`Converter with name "${A}" not found in pipeline.`:"Converter instance not found in pipeline.",{method:"remove",providedValue:A,convertersCount:this.converters.length})&&this.converters.splice(e,1)}get texture(){return this._resultFramebuffer}resize(){this._resultFramebuffer.resize(this.grid.width,this.grid.height),this._characterFramebuffer.resize(this.grid.cols,this.grid.rows),this._primaryColorFramebuffer.resize(this.grid.cols,this.grid.rows),this._secondaryColorFramebuffer.resize(this.grid.cols,this.grid.rows),this._rotationFramebuffer.resize(this.grid.cols,this.grid.rows),this._transformFramebuffer.resize(this.grid.cols,this.grid.rows);for(const A of this.converters)A.converter.resize()}hasEnabledConverters(){return this.converters.some(A=>A.converter.options.enabled)}disable(){for(const A of this.converters)A.converter.disable()}enable(){for(const A of this.converters)A.converter.enable()}dispose(){for(const A of this.converters)A.converter.dispose();this._characterFramebuffer.dispose(),this._primaryColorFramebuffer.dispose(),this._secondaryColorFramebuffer.dispose(),this._rotationFramebuffer.dispose(),this._transformFramebuffer.dispose(),this._resultFramebuffer.dispose(),this._asciiShader.dispose(),this.converters=[],this._characterFramebuffer=null,this._primaryColorFramebuffer=null,this._secondaryColorFramebuffer=null,this._rotationFramebuffer=null,this._transformFramebuffer=null,this._resultFramebuffer=null,this._asciiShader=null}get characterFramebuffer(){return this._characterFramebuffer}get primaryColorFramebuffer(){return this._primaryColorFramebuffer}get secondaryColorFramebuffer(){return this._secondaryColorFramebuffer}get rotationFramebuffer(){return this._rotationFramebuffer}get transformFramebuffer(){return this._transformFramebuffer}}class N{extractFramebufferData(A){const e=A.get("brightness"),t=e==null?void 0:e.characterFramebuffer,r=e==null?void 0:e.primaryColorFramebuffer,i=e==null?void 0:e.secondaryColorFramebuffer,s=e==null?void 0:e.transformFramebuffer,a=e==null?void 0:e.rotationFramebuffer;return t==null||t.loadPixels(),r==null||r.loadPixels(),i==null||i.loadPixels(),s==null||s.loadPixels(),a==null||a.loadPixels(),{characterPixels:(t==null?void 0:t.pixels)||new Uint8Array(0),primaryColorPixels:(r==null?void 0:r.pixels)||new Uint8Array(0),secondaryColorPixels:(i==null?void 0:i.pixels)||new Uint8Array(0),transformPixels:(s==null?void 0:s.pixels)||new Uint8Array(0),rotationPixels:(a==null?void 0:a.pixels)||new Uint8Array(0)}}getCharacterIndex(A,e){const t=A[e],r=A[e+1];return t+(r<<8)}pixelsToRGBA(A,e){return{r:A[e],g:A[e+1],b:A[e+2],a:A[e+3]}}}class W{createBlob(A,e){return new Blob([A],{type:e})}downloadFile(A,e,t){try{const r=this.createBlob(A,t),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=e,s.style.display="none",s.rel="noopener",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)}catch(r){throw console.error("Failed to download file:",r),new Error(`File download failed: ${r instanceof Error?r.message:"Unknown error"}`)}}generateTimestamp(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}generateDateTimeString(){const A=new Date,e=A.toISOString().split("T")[0],t=A.toTimeString().split(" ")[0].replace(/:/g,"-");return{date:e,time:t}}sanitizeFilename(A){return A.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}generateDefaultFilename(){return`'textmode-export'-${this.generateTimestamp()}`}}class PA extends N{extractTransformData(A,e,t){const r=A[t],i=A[t+1],s=A[t+2],a=r===255,g=i===255,B=s===255,E=e[t],h=e[t+1],l=E+h/255,c=Math.round(l*360/255*100)/100;return{isInverted:a,flipHorizontal:g,flipVertical:B,rotation:c}}calculateCellPosition(A,e,t){return{x:A,y:e,cellX:A*t.cellWidth,cellY:e*t.cellHeight}}extractSVGCellData(A,e){const t=[];let r=0;for(let i=0;i<e.rows;i++)for(let s=0;s<e.cols;s++){const a=r*4,g=this.getCharacterIndex(A.characterPixels,a);let B=this.pixelsToRGBA(A.primaryColorPixels,a),E=this.pixelsToRGBA(A.secondaryColorPixels,a);const h=this.extractTransformData(A.transformPixels,A.rotationPixels,a);if(h.isInverted){const c=B;B=E,E=c}const l=this.calculateCellPosition(s,i,e);t.push({charIndex:g,primaryColor:B,secondaryColor:E,transform:h,position:l}),r++}return t}}class _A{getGlyphIndex(A,e){const t=A.cmap;if(!t||!t.tables)return 0;for(const r of t.tables)if(r.format===4){for(let i=0;i<r.startCount.length;i++)if(e>=r.startCount[i]&&e<=r.endCount[i]){if(r.idRangeOffset[i]===0)return e+r.idDelta[i]&65535;{const s=r.idRangeOffset[i]/2+(e-r.startCount[i])-(r.startCount.length-i);if(s>=0&&s<r.glyphIdArray.length){const a=r.glyphIdArray[s];if(a!==0)return a+r.idDelta[i]&65535}}}}return 0}createEmptyPath(){return{getBoundingBox:()=>({x1:0,y1:0,x2:0,y2:0}),toSVG:()=>""}}createGlyphPath(A,e,t,r,i){if(!e||!e.xs||e.xs.length===0)return this.createEmptyPath();const s=i/A.head.unitsPerEm;return{getBoundingBox:()=>({x1:t+e.xMin*s,y1:r+-e.yMax*s,x2:t+e.xMax*s,y2:r+-e.yMin*s}),toSVG:()=>this.glyphToSVGPath(e,t,r,s)}}glyphToSVGPath(A,e,t,r){if(!A||!A.xs)return"";const{xs:i,ys:s,endPts:a,flags:g}=A;if(!i||!s||!a||!g)return"";let B="",E=0;for(let h=0;h<a.length;h++){const l=a[h];if(!(l<E)){if(l>=E){const c=e+i[E]*r,m=t-s[E]*r;B+=`M${c.toFixed(2)},${m.toFixed(2)}`;let u=E+1;for(;u<=l;)if((g[u]&1)!==0){const I=e+i[u]*r,P=t-s[u]*r;B+=`L${I.toFixed(2)},${P.toFixed(2)}`,u++}else{const I=e+i[u]*r,P=t-s[u]*r;let p=u+1>l?E:u+1;if((g[p]&1)!==0){const T=e+i[p]*r,b=t-s[p]*r;B+=`Q${I.toFixed(2)},${P.toFixed(2)} ${T.toFixed(2)},${b.toFixed(2)}`,u=p+1}else{const T=e+i[p]*r,b=t-s[p]*r,v=(I+T)/2,x=(P+b)/2;B+=`Q${I.toFixed(2)},${P.toFixed(2)} ${v.toFixed(2)},${x.toFixed(2)}`,u=p}}B+="Z"}E=l+1}}return B}generateCharacterPath(A,e,t,r,i){try{const s=A.codePointAt(0)||0,a=this.getGlyphIndex(e,s);if(a===0)return this.createEmptyPath();let g=null;try{e.glyf&&e.glyf[a]!==null?g=e.glyf[a]:Q&&Q.T&&Q.T.glyf&&Q.T.glyf._parseGlyf&&(g=Q.T.glyf._parseGlyf(e,a),e.glyf&&g&&(e.glyf[a]=g))}catch(B){console.warn(`Failed to parse glyph ${a}:`,B)}return g?this.createGlyphPath(e,g,t,r,i):this.createEmptyPath()}catch(s){return console.warn(`Failed to generate path for character "${A}":`,s),this.createEmptyPath()}}generatePositionedCharacterPath(A,e,t,r,i,s,a,g){try{const B=a/e.head.unitsPerEm,E=g*B,h=t+(i-E)/2,l=r+(s+a*.7)/2;return this.generateCharacterPath(A,e,h,l,a).toSVG()||null}catch(B){return console.warn(`Failed to generate positioned character path for "${A}":`,B),null}}}class wA{constructor(){o(this,"pathGenerator");this.pathGenerator=new _A}generateSVGHeader(A){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
6
|
+
`,Q+="↓".repeat(24)+`
|
|
7
|
+
`,Q}static i(B){if(B===null)return"null";if(B===void 0)return"undefined";if(typeof B=="string")return`"${B}"`;if(typeof B=="number"||typeof B=="boolean")return B+"";if(Array.isArray(B))return B.length===0?"[]":B.length<=5?`[${B.map(s=>P.i(s)).join(", ")}]`:`[${B.slice(0,3).map(s=>P.i(s)).join(", ")}, ... +${B.length-3} more]`;if(typeof B=="object"){const s=Object.keys(B);return s.length===0?"{}":s.length<=3?`{ ${s.map(Q=>`${Q}: ${P.i(B[Q])}`).join(", ")} }`:`{ ${s.slice(0,2).map(Q=>`${Q}: ${P.i(B[Q])}`).join(", ")}, ... +${s.length-2} more }`}return B+""}}var b=(o=>(o[o.SILENT=0]="SILENT",o[o.WARNING=1]="WARNING",o[o.ERROR=2]="ERROR",o[o.THROW=3]="THROW",o))(b||{});const _=class _{constructor(){g(this,"h",{D:3})}static l(){return _.o||(_.o=new _),_.o}C(e,B,s){const Q="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",i="color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";switch(this.h.D){case 0:return!1;case 1:return console.group(Q,i),console.warn(P.t(e,B)),console.groupEnd(),!1;case 2:return console.group(Q,i),console.error(P.t(e,B)),console.groupEnd(),!1;default:throw new P(e,s,B)}}validate(e,B,s){return!!e||(this.C(B,s),!1)}u(e){this.h.D=e}};g(_,"o",null);let k=_;const d=k.l(),N=new WeakMap;function F(o,e){N.set(o,e)}function J(o){return N.get(o)}class X{constructor(e,B,s=B,Q={}){g(this,"P");g(this,"I");g(this,"m");g(this,"p");g(this,"v");g(this,"options");g(this,"_",null);g(this,"M",null);this.P=e,this.p=B,this.v=s,this.options={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...Q},this.m=this.createTexture(),this.I=e.createFramebuffer(),this.G()}F(e){const{P:B}=this,s=B.getParameter(B.FRAMEBUFFER_BINDING);B.bindFramebuffer(B.FRAMEBUFFER,this.I);try{return e()}finally{B.bindFramebuffer(B.FRAMEBUFFER,s)}}createTexture(){const{P:e}=this,B=e.createTexture();e.bindTexture(e.TEXTURE_2D,B);const s=this.options.filter==="linear"?e.LINEAR:e.NEAREST,Q=this.options.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE;return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,s),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,s),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,Q),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,Q),this.Y(),B}Y(){const{P:e}=this,B=this.options.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.p,this.v,0,e.RGBA,B,null)}G(){const{P:e}=this;e.bindFramebuffer(e.FRAMEBUFFER,this.I),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.m,0),e.bindFramebuffer(e.FRAMEBUFFER,null)}update(e){const{P:B}=this;B.bindTexture(B.TEXTURE_2D,this.m),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,e),B.bindTexture(B.TEXTURE_2D,null)}S(e,B,s){const{P:Q}=this;Q.bindTexture(Q.TEXTURE_2D,this.m),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,B,s,0,Q.RGBA,Q.UNSIGNED_BYTE,e),Q.bindTexture(Q.TEXTURE_2D,null)}resize(e,B){const{P:s}=this;this.p=e,this.v=B,this.M=null,s.bindTexture(s.TEXTURE_2D,this.m),this.Y(),s.bindTexture(s.TEXTURE_2D,null)}O(){const{P:e}=this;this._={framebuffer:e.getParameter(e.FRAMEBUFFER_BINDING),viewport:e.getParameter(e.VIEWPORT)},e.bindFramebuffer(e.FRAMEBUFFER,this.I),e.viewport(0,0,this.p,this.v),F(e,[0,0,this.p,this.v])}end(){if(!this._)return;const{P:e}=this;e.bindFramebuffer(e.FRAMEBUFFER,this._.framebuffer),e.viewport(...this._.viewport),F(e,this._.viewport),this._=null}U(){const{P:e}=this;this.M||(this.M=new Uint8Array(this.p*this.v*4)),this.F(()=>{e.readPixels(0,0,this.p,this.v,e.RGBA,e.UNSIGNED_BYTE,this.M)})}get(e,B,s,Q){const{P:i}=this;if(e===void 0&&B===void 0){const E=new Uint8Array(this.p*this.v*4);return this.F(()=>(i.readPixels(0,0,this.p,this.v,i.RGBA,i.UNSIGNED_BYTE,E),E))}if(s===void 0&&Q===void 0){(e<0||B<0||e>=this.p||B>=this.v)&&(console.warn("The x and y values passed to Framebuffer.get are outside of its range and will be clamped."),e=Math.max(0,Math.min(e,this.p-1)),B=Math.max(0,Math.min(B,this.v-1)));const E=new Uint8Array(4);return this.F(()=>(i.readPixels(e,B,1,1,i.RGBA,i.UNSIGNED_BYTE,E),[E[0],E[1],E[2],E[3]]))}{e=Math.max(0,Math.min(e,this.p-1)),B=Math.max(0,Math.min(B,this.v-1)),s=Math.max(1,Math.min(s,this.p-e)),Q=Math.max(1,Math.min(Q,this.v-B));const E=new Uint8Array(s*Q*4);return this.F(()=>(i.readPixels(e,B,s,Q,i.RGBA,i.UNSIGNED_BYTE,E),E))}}dispose(){this.I&&this.P.deleteFramebuffer(this.I),this.m&&this.P.deleteTexture(this.m)}get framebuffer(){return this.I}get texture(){return this.m}get width(){return this.p}get height(){return this.v}get k(){return this.M}}class v{constructor(e,B,s){g(this,"P");g(this,"V");g(this,"H",new Map);g(this,"R",new Map);g(this,"$",0);g(this,"J");this.P=e,this.V=this.createProgram(B,s),this.J=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.L()}L(){const e=this.P.getProgramParameter(this.V,this.P.ACTIVE_UNIFORMS);for(let B=0;B<e;B++){const s=this.P.getActiveUniform(this.V,B);if(s){const Q=this.P.getUniformLocation(this.V,s.name);Q&&(this.H.set(s.name,Q),this.R.set(s.name,s.type))}}}createProgram(e,B){const s=this.createShader(this.P.VERTEX_SHADER,e),Q=this.createShader(this.P.FRAGMENT_SHADER,B),i=this.P.createProgram();if(this.P.attachShader(i,s),this.P.attachShader(i,Q),this.P.linkProgram(i),!this.P.getProgramParameter(i,this.P.LINK_STATUS)){const E=this.P.getProgramInfoLog(i);throw Error("Shader program link error: "+E)}return this.P.deleteShader(s),this.P.deleteShader(Q),i}createShader(e,B){const s=this.P.createShader(e);if(this.P.shaderSource(s,B),this.P.compileShader(s),!this.P.getShaderParameter(s,this.P.COMPILE_STATUS)){const Q=this.P.getShaderInfoLog(s);throw this.P.deleteShader(s),Error("Shader compilation error: "+Q)}return s}K(){this.P.useProgram(this.V),this.W()}j(e,B){const s=this.H.get(e);if(s)if(typeof B=="number")this.Z(e)?this.P.uniform1i(s,Math.floor(B)):this.P.uniform1f(s,B);else if(typeof B=="boolean")this.P.uniform1i(s,B?1:0);else if(Array.isArray(B))switch(B.length){case 2:this.P.uniform2f(s,B[0],B[1]);break;case 3:this.P.uniform3f(s,B[0],B[1],B[2]);break;case 4:this.P.uniform4f(s,B[0],B[1],B[2],B[3]);break;default:console.warn(`Unsupported array length ${B.length} for uniform '${e}'`)}else if(B instanceof WebGLTexture){const Q=this.N();this.P.uniform1i(s,Q),this.P.activeTexture(this.P.TEXTURE0+Q),this.P.bindTexture(this.P.TEXTURE_2D,B)}else if(B instanceof X){const Q=this.N();this.P.uniform1i(s,Q),this.P.activeTexture(this.P.TEXTURE0+Q),this.P.bindTexture(this.P.TEXTURE_2D,B.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof B)}N(){return this.$>=this.J&&console.warn(`Exceeded maximum texture units (${this.J}). Texture may not render correctly.`),this.$++}Z(e){const B=this.R.get(e);return!!B&&(B===this.P.INT||B===this.P.INT_VEC2||B===this.P.INT_VEC3||B===this.P.INT_VEC4||B===this.P.SAMPLER_2D||B===this.P.SAMPLER_CUBE)}get X(){return this.V}dispose(){this.P.deleteProgram(this.V)}W(){this.$=0}}class W{constructor(e){g(this,"P");g(this,"q",null);g(this,"AA",16);g(this,"tA",new Map);this.P=e}eA(){if(this.q)return;const e=this.P;this.q=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.q)}BA(){const e=this.P,B=e.getParameter(e.CURRENT_PROGRAM);let s=this.tA.get(B);return s||(s={QA:e.getAttribLocation(B,"a_position"),sA:e.getAttribLocation(B,"a_texCoord")},this.tA.set(B,s)),e.enableVertexAttribArray(s.QA),e.vertexAttribPointer(s.QA,2,e.FLOAT,!1,this.AA,0),e.enableVertexAttribArray(s.sA),e.vertexAttribPointer(s.sA,2,e.FLOAT,!1,this.AA,8),{iA:s.QA,EA:s.sA}}rA(e,B){const s=this.P;s.disableVertexAttribArray(e),s.disableVertexAttribArray(B)}gA(e,B){const s=this.P,Q=J(s)||[0,0,s.canvas.width,s.canvas.height];return{oA:e/Q[2]*2-1,nA:1-B/Q[3]*2}}hA(e,B,s,Q){const i=this.P;this.eA(),i.bindBuffer(i.ARRAY_BUFFER,this.q);const E=new Float32Array([e,Q,0,0,s,Q,1,0,e,B,0,1,e,B,0,1,s,Q,1,0,s,B,1,1]);i.bufferData(i.ARRAY_BUFFER,E,i.DYNAMIC_DRAW)}dispose(){this.q&&this.P.deleteBuffer(this.q)}}class QA extends W{constructor(e){super(e)}aA(e,B,s,Q){const i=this.gA(e,B),E=this.gA(e+s,B+Q);this.hA(i.oA,i.nA,E.oA,E.nA);const r=this.BA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.rA(r.iA,r.EA)}DA(e,B,s,Q,i){this.aA(e,B,s,i),this.aA(e+s-i,B,i,Q),this.aA(e,B+Q-i,s,i),this.aA(e,B,i,Q)}}class iA extends W{constructor(e){super(e)}draw(e,B,s,Q,i){const E=s-e,r=Q-B,n=Math.hypot(E,r);if(n===0){const a=i/2,D=this.gA(e-a,B-a),l=this.gA(e+a,B+a);this.hA(D.oA,D.nA,l.oA,l.nA)}else{const a=-r/n,D=E/n,l=i/2,u=e+a*l,w=B+D*l,c=e-a*l,f=B-D*l,p=s+a*l,m=Q+D*l,y=s-a*l,M=Q-D*l,O=this.gA(u,w),T=this.gA(c,f),R=this.gA(p,m),sA=this.gA(y,M),U=this.P;this.eA(),U.bindBuffer(U.ARRAY_BUFFER,this.q);const GA=new Float32Array([O.oA,O.nA,0,0,T.oA,T.nA,0,1,R.oA,R.nA,1,0,T.oA,T.nA,0,1,sA.oA,sA.nA,1,1,R.oA,R.nA,1,0]);U.bufferData(U.ARRAY_BUFFER,GA,U.DYNAMIC_DRAW)}const h=this.BA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.rA(h.iA,h.EA)}}var x="attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;uniform float u_rotation;uniform vec2 u_center;uniform float u_aspectRatio;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){v_uv=a_texCoord;vec2 pos=a_position;pos-=u_center;pos.x*=u_aspectRatio;pos=rotate2D(-u_rotation)*pos;pos.x/=u_aspectRatio;pos+=u_center;gl_Position=vec4(pos,0.0,1.0);}";class EA{constructor(e){g(this,"P");g(this,"lA");g(this,"CA");g(this,"cA",null);g(this,"uA");g(this,"PA");g(this,"IA",[1,1,1,1]);g(this,"wA",!0);g(this,"fA",[0,0,0,1]);g(this,"dA",1);g(this,"mA",!0);g(this,"pA",0);g(this,"vA",[]);this.P=e,this.lA=new v(this.P,x,"precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}"),this.CA=new v(this.P,x,"precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"),this.uA=new QA(this.P),this.PA=new iA(this.P),this.P.enable(this.P.BLEND),this.P.blendEquation(this.P.FUNC_ADD),this.P.blendFunc(this.P.ONE,this.P.ONE_MINUS_SRC_ALPHA),F(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}bA(e){this.cA!==e&&(this.cA=e,e.K())}fill(e,B,s,Q){if(this.wA=!0,B===void 0&&s===void 0&&Q===void 0){const i=e/255;this.IA=[i,i,i,1]}else if(s!==void 0&&Q===void 0)this.IA=[e/255,B/255,s/255,1];else{if(s===void 0||Q===void 0)throw Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)");this.IA=[e/255,B/255,s/255,Q/255]}}stroke(e,B,s,Q){if(this.mA=!0,B===void 0&&s===void 0&&Q===void 0){const i=e/255;this.fA=[i,i,i,1]}else if(s!==void 0&&Q===void 0)this.fA=[e/255,B/255,s/255,1];else{if(s===void 0||Q===void 0)throw Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)");this.fA=[e/255,B/255,s/255,Q/255]}}xA(e){if(e<0)throw Error("Stroke weight must be non-negative");this.dA=e}_A(){this.mA=!1}yA(){this.wA=!1}rotate(e){this.pA=e}push(){this.vA.push({MA:[...this.IA],wA:this.wA,GA:[...this.fA],xA:this.dA,mA:this.mA,rotation:this.pA})}pop(){const e=this.vA.pop();e?(this.IA=e.MA,this.wA=e.wA,this.fA=e.GA,this.dA=e.xA,this.mA=e.mA,this.pA=e.rotation):console.warn("pop() called without matching push()")}reset(){this.cA=null,this.vA=[],this.pA=0}createShader(e,B){return new v(this.P,e,B)}FA(e){return new v(this.P,x,e)}j(e,B){this.cA.j(e,B)}rect(e,B,s,Q){if(this.cA!==null){const{YA:D,TA:l,SA:u,aspectRatio:w}=this.OA(e,B,s,Q);return this.j("u_rotation",u),this.j("u_center",[D,l]),this.j("u_aspectRatio",w),this.uA.aA(e,B,s,Q),void(this.cA=null)}const i=this.CA;let E=0,r=0,n=0,h=1;const a=this.OA(e,B,s,Q);E=a.YA,r=a.TA,n=a.SA,h=a.aspectRatio,this.wA&&(this.bA(i),this.j("u_color",this.IA),this.j("u_rotation",n),this.j("u_center",[E,r]),this.j("u_aspectRatio",h),this.uA.aA(e,B,s,Q)),this.mA&&this.dA>0&&(this.bA(i),this.j("u_color",this.fA),this.j("u_rotation",n),this.j("u_center",[E,r]),this.j("u_aspectRatio",h),this.uA.DA(e,B,s,Q,this.dA)),this.cA=null}line(e,B,s,Q){if(this.cA!==null){const c=(e+s)/2,f=(B+Q)/2,p=Math.abs(s-e)||1,m=Math.abs(Q-B)||1,{YA:y,TA:M,SA:O,aspectRatio:T}=this.OA(c-p/2,f-m/2,p,m);this.j("u_rotation",O),this.j("u_center",[y,M]),this.j("u_aspectRatio",T);const R=this.dA>0?this.dA:1;return this.PA.draw(e,B,s,Q,R),void(this.cA=null)}if(!this.mA||this.dA<=0)return;const i=this.CA,E=(e+s)/2,r=(B+Q)/2,n=Math.abs(s-e)||1,h=Math.abs(Q-B)||1,a=this.pA!==0;let D=0,l=0,u=0,w=1;if(a){const c=this.OA(E-n/2,r-h/2,n,h);D=c.YA,l=c.TA,u=c.SA,w=c.aspectRatio}this.bA(i),this.j("u_color",this.fA),a&&(this.j("u_rotation",u),this.j("u_center",[D,l]),this.j("u_aspectRatio",w)),this.PA.draw(e,B,s,Q,this.dA)}OA(e,B,s,Q){const i=J(this.P)||[0,0,this.P.canvas.width,this.P.canvas.height],E=i[2],r=i[3],n=E/r;return{YA:(e+s/2)/E*2-1,TA:1-(B+Q/2)/r*2,SA:this.pA*Math.PI/180,aspectRatio:n}}createFramebuffer(e,B,s={}){return new X(this.P,e,B,s)}background(e,B=e,s=e,Q=255){this.clear(e/255,B/255,s/255,Q/255)}clear(e=0,B=0,s=0,Q=0){this.P.clearColor(e,B,s,Q),this.P.clear(this.P.COLOR_BUFFER_BIT)}UA(){this.P.viewport(0,0,this.P.canvas.width,this.P.canvas.height),F(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}get context(){return this.P}dispose(){this.lA.dispose(),this.CA.dispose(),this.uA.dispose(),this.PA.dispose()}image(e,B,s,Q,i){const E=this.P,r=Q??e.width,n=i??e.height;this.bA(this.lA),this.j("u_texture",e.texture);const h=this.OA(B,s,r,n);this.j("u_rotation",h.SA),this.j("u_center",[h.YA,h.TA]),this.j("u_aspectRatio",h.aspectRatio),this.uA.aA(B,s,r,n),E.bindTexture(E.TEXTURE_2D,null),this.cA=null}}var S,C={parse:function(o){var e=function(B,s,Q,i){var E=C.T,r={cmap:E.cmap,head:E.head,hhea:E.hhea,maxp:E.maxp,hmtx:E.hmtx,loca:E.loca,glyf:E.glyf},n={_data:B,_index:s,_offset:Q};for(var h in r){var a=C.findTable(B,h,Q);if(a){var D=a[0],l=i[D];l==null&&(l=r[h].kA(B,D,a[1],n)),n[h]=i[D]=l}}return n}(new Uint8Array(o),0,0,{});return[e]},findTable:function(o,e,B){for(var s=C.B,Q=s.VA(o,B+4),i=B+12,E=0;E<Q;E++){var r=s.HA(o,i,4);s.RA(o,i+4);var n=s.RA(o,i+8),h=s.RA(o,i+12);if(r==e)return[n,h];i+=16}return null},T:{}};C.B={$A:function(o,e){return C.B.zA.uint16[0]=o[e]<<8|o[e+1],C.B.zA.int16[0]},VA:function(o,e){return o[e]<<8|o[e+1]},JA:function(o,e,B){for(var s=[],Q=0;Q<B;Q++)s.push(C.B.VA(o,e+2*Q));return s},RA:function(o,e){var B=C.B.zA.uint8;return B[3]=o[e],B[2]=o[e+1],B[1]=o[e+2],B[0]=o[e+3],C.B.zA.uint32[0]},HA:function(o,e,B){for(var s="",Q=0;Q<B;Q++)s+=String.fromCharCode(o[e+Q]);return s},zA:(S=new ArrayBuffer(8),{uint8:new Uint8Array(S),int16:new Int16Array(S),uint16:new Uint16Array(S),uint32:new Uint32Array(S)})},C.T.cmap={kA:function(o,e,B){var s={LA:[],KA:{},off:e};o=new Uint8Array(o.buffer,e,B),e=0;var Q=C.B,i=Q.VA,E=C.T.cmap;i(o,e);var r=i(o,e+=2);e+=2;for(var n=[],h=0;h<r;h++){var a=i(o,e),D=i(o,e+=2);e+=2;var l=Q.RA(o,e);e+=4;var u="p"+a+"e"+D,w=n.indexOf(l);if(w==-1){w=s.LA.length;var c={};n.push(l);var f=c.format=i(o,l);f==4?c=E.WA(o,l,c):f==12&&(c=E.jA(o,l,c)),s.LA.push(c)}s.KA[u]!=null&&console.log("multiple tables for one platform+encoding: "+u),s.KA[u]=w}return s},WA:function(o,e,B){var s=C.B,Q=s.VA,i=s.JA,E=e,r=Q(o,e+=2);Q(o,e+=2);var n=Q(o,e+=2);e+=2;var h=n>>>1;B.ZA=Q(o,e),e+=2,B.NA=Q(o,e),e+=2,B.XA=Q(o,e),e+=2,B.qA=i(o,e,h),e+=2*h,e+=2,B.At=i(o,e,h),e+=2*h,B.tt=[];for(var a=0;a<h;a++)B.tt.push(s.$A(o,e)),e+=2;return B.et=i(o,e,h),e+=2*h,B.Bt=i(o,e,E+r-e>>1),B},jA:function(o,e,B){var s=C.B.RA;s(o,e+=4),s(o,e+=4);var Q=3*s(o,e+=4);e+=4;for(var i=B.groups=new Uint32Array(Q),E=0;E<Q;E+=3)i[E]=s(o,e+(E<<2)),i[E+1]=s(o,e+(E<<2)+4),i[E+2]=s(o,e+(E<<2)+8);return B}},C.T.head={kA:function(o,e,B){var s=C.B,Q={};return e+=18,Q.unitsPerEm=s.VA(o,e),e+=2,e+=16,Q.xMin=s.$A(o,e),e+=2,Q.yMin=s.$A(o,e),e+=2,Q.xMax=s.$A(o,e),e+=2,Q.yMax=s.$A(o,e),e+=2,e+=6,Q.indexToLocFormat=s.$A(o,e),Q}},C.T.hhea={kA:function(o,e,B){var s=C.B,Q={};e+=4;for(var i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],E=0;E<i.length;E++){var r=i[E],n=r=="advanceWidthMax"||r=="numberOfHMetrics"?s.VA:s.$A;Q[r]=n(o,e+2*E)}return Q}},C.T.hmtx={kA:function(o,e,B,s){for(var Q=C.B,i=[],E=[],r=s.maxp.numGlyphs,n=s.hhea.numberOfHMetrics,h=0,a=0,D=0;D<n;)h=Q.VA(o,e+(D<<2)),a=Q.$A(o,e+(D<<2)+2),i.push(h),E.push(a),D++;for(;D<r;)i.push(h),E.push(a),D++;return{Qt:i,st:E}}},C.T.maxp={kA:function(o,e,B){var s=C.B,Q=s.VA,i={};return s.RA(o,e),e+=4,i.numGlyphs=Q(o,e),e+=2,i}},C.T.loca={kA:function(o,e,B,s){var Q=C.B,i=[],E=s.head.indexToLocFormat,r=s.maxp.numGlyphs+1;if(E==0)for(var n=0;n<r;n++)i.push(Q.VA(o,e+(n<<1))<<1);if(E==1)for(n=0;n<r;n++)i.push(Q.RA(o,e+(n<<2)));return i}},C.T.glyf={kA:function(o,e,B,s){for(var Q=[],i=s.maxp.numGlyphs,E=0;E<i;E++)Q.push(null);return Q},it:function(o,e){var B=C.B,s=o._data,Q=o.loca;if(Q[e]==Q[e+1])return null;var i=C.findTable(s,"glyf",o._offset)[0]+Q[e],E={};if(E.Et=B.$A(s,i),i+=2,E.xMin=B.$A(s,i),i+=2,E.yMin=B.$A(s,i),i+=2,E.xMax=B.$A(s,i),i+=2,E.yMax=B.$A(s,i),i+=2,E.xMin>=E.xMax||E.yMin>=E.yMax)return null;if(E.Et>0){E.rt=[];for(var r=0;r<E.Et;r++)E.rt.push(B.VA(s,i)),i+=2;var n=B.VA(s,i);if(i+=2,s.length-i<n)return null;i+=n;var h=E.rt[E.Et-1]+1;for(E.flags=[],r=0;r<h;r++){var a=s[i];if(i++,E.flags.push(a),8&a){var D=s[i];i++;for(var l=0;l<D;l++)E.flags.push(a),r++}}for(E.gt=[],r=0;r<h;r++){var u=!!(2&E.flags[r]),w=!!(16&E.flags[r]);u?(E.gt.push(w?s[i]:-s[i]),i++):w?E.gt.push(0):(E.gt.push(B.$A(s,i)),i+=2)}for(E.ot=[],r=0;r<h;r++)u=!!(4&E.flags[r]),w=!!(32&E.flags[r]),u?(E.ot.push(w?s[i]:-s[i]),i++):w?E.ot.push(0):(E.ot.push(B.$A(s,i)),i+=2);var c=0,f=0;for(r=0;r<h;r++)c+=E.gt[r],f+=E.ot[r],E.gt[r]=c,E.ot[r]=f}else E.nt=[];return E}},typeof module<"u"&&module.exports?module.exports=C:typeof window<"u"&&(window.Typr=C);class rA{ht(e){var s;const B=[];return(s=e==null?void 0:e.cmap)!=null&&s.LA?(e.cmap.LA.forEach(Q=>{if(Q.format===4){const i=this.Dt(Q);B.push(...i)}else if(Q.format===12){const i=this.lt(Q);B.push(...i)}}),[...new Set(B)]):[]}Dt(e){const B=[];if(!(e.At&&e.qA&&e.et&&e.tt))return B;for(let s=0;s<e.At.length;s++){const Q=e.At[s],i=e.qA[s];if(Q!==65535||i!==65535){for(let E=Q;E<=i;E++)if(this.Ct(e,E,s)>0){const r=String.fromCodePoint(E);B.push(r)}}}return B}lt(e){const B=[];if(!e.groups)return B;for(let s=0;s<e.groups.length;s+=3){const Q=e.groups[s],i=e.groups[s+1],E=e.groups[s+2];for(let r=Q;r<=i;r++)if(E+(r-Q)>0){const n=String.fromCodePoint(r);B.push(n)}}return B}Ct(e,B,s){if(e.et[s]===0)return B+e.tt[s]&65535;{const Q=e.et[s]/2+(B-e.At[s])-(e.At.length-s);if(Q>=0&&e.Bt&&Q<e.Bt.length){const i=e.Bt[Q];if(i!==0)return i+e.tt[s]&65535}}return 0}ct(e){return e.filter(B=>this.ut(B))}ut(e){const B=e.codePointAt(0)||0;return!(B>=0&&B<=31&&B!==9&&B!==10&&B!==13||B>=127&&B<=159)}}class gA{constructor(e){g(this,"Pt");g(this,"It");g(this,"wt");this.wt=e,this.Pt=document.createElement("canvas"),this.It=this.Pt.getContext("2d",{ft:!0,alpha:!1})}dt(e,B,s,Q){const i=e.length,E=Math.ceil(Math.sqrt(i)),r=Math.ceil(i/E),n=B.width*E,h=B.height*r;this.vt(n,h,s,Q),this.bt(e,B,E,s),this.xt();const a=this.wt.createFramebuffer(n,h,{filter:"nearest"});return a.update(this.Pt),{framebuffer:a,columns:E,rows:r}}vt(e,B,s,Q){this.Pt.width=e,this.Pt.height=B,this.Pt.style.width=e+"px",this.Pt.style.height=e+"px",this.It.imageSmoothingEnabled=!1,this.Pt.style.imageRendering="pixelated",this.It.fillStyle="black",this.It.fillRect(0,0,e,B),this.It.font=`${s}px ${Q}`,this.It.textBaseline="top",this.It.textAlign="left",this.It.fillStyle="white"}bt(e,B,s,Q){for(let i=0;i<e.length;i++){const E=i%s,r=Math.floor(i/s),n=E*B.width+.5*B.width,h=r*B.height+.5*B.height,a=Math.round(n-.5*B.width),D=Math.round(h-.5*Q);this.It.fillText(e[i]._t,a,D)}}xt(e=128){const B=this.It.getImageData(0,0,this.Pt.width,this.Pt.height),s=B.data;for(let Q=0;Q<s.length;Q+=4){const i=.299*s[Q]+.587*s[Q+1]+.114*s[Q+2]>e+32?255:0;s[Q]=i,s[Q+1]=i,s[Q+2]=i}this.It.putImageData(B,0,0)}}class oA{constructor(){g(this,"yt");g(this,"Mt");this.yt=document.createElement("canvas"),this.Mt=this.yt.getContext("2d")}Gt(e,B,s){this.Mt.font=`${B}px ${s}`;let Q=0,i=0;for(const E of e){const r=this.Mt.measureText(E);Q=Math.max(Q,r.width),i=Math.max(i,r.actualBoundingBoxAscent+r.actualBoundingBoxDescent)}return{width:Q,height:i}}}class nA{Ft(e,B){return e.map((s,Q)=>{const i=s.codePointAt(0)||0,E=this.Yt(Q);let r=0;if(B.hmtx&&B.hmtx.Qt){const n=this.Tt(B,i);n>0&&B.hmtx.Qt[n]!==void 0&&(r=B.hmtx.Qt[n])}return{_t:s,unicode:i,color:E,St:r}})}Tt(e,B){const s=e.cmap;if(!s||!s.LA)return 0;for(const Q of s.LA)if(Q.format===4){for(let i=0;i<Q.At.length;i++)if(B>=Q.At[i]&&B<=Q.qA[i]){if(Q.et[i]===0)return B+Q.tt[i]&65535;{const E=Q.et[i]/2+(B-Q.At[i])-(Q.At.length-i);if(E>=0&&E<Q.Bt.length){const r=Q.Bt[E];if(r!==0)return r+Q.tt[i]&65535}}}}return 0}Yt(e){return[e%256,Math.floor(e/256)%256,Math.floor(e/65536)%256]}Ot(e,B){if(!d.validate(typeof e=="string","Character must be a string.",{method:"getCharacterColor",Ut:e}))return[0,0,0];const s=B.find(Q=>Q._t===e);return s?s.color:[0,0,0]}kt(e,B){return d.validate(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",Ut:e})?e.split("").map(s=>this.Ot(s,B)||[0,0,0]):[[0,0,0]]}}class K{constructor(e,B=16){g(this,"Vt");g(this,"Ht",[]);g(this,"Rt");g(this,"$t",16);g(this,"zt",0);g(this,"Jt",0);g(this,"Lt",{width:0,height:0});g(this,"Kt");g(this,"Wt","UrsaFont");g(this,"jt");g(this,"Zt");g(this,"Nt");g(this,"Xt");this.$t=B,this.jt=new rA,this.Zt=new gA(e),this.Nt=new oA,this.Xt=new nA}async initialize(e){let B;if(e){const s=await fetch(e);if(!s.ok)throw new P(`Failed to load font file: ${s.status} ${s.statusText}`);B=await s.arrayBuffer()}else B=await(await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
8
|
+
`)).arrayBuffer();await this.qt(B),this.Vt=C.parse(B)[0],await this.Ae()}te(e){if(e===void 0)return this.$t;this.$t=e,this.Lt=this.Nt.Gt(this.Ht.map(s=>s._t),this.$t,this.Wt);const B=this.Zt.dt(this.Ht,this.Lt,this.$t,this.Wt);this.Rt=B.framebuffer,this.zt=B.columns,this.Jt=B.rows}async ee(e){try{const B=await fetch(e);if(!B.ok)throw new P(`Failed to load font file: ${B.status} ${B.statusText}`);const s=await B.arrayBuffer();await this.qt(s);const Q=C.parse(s);if(!Q||Q.length===0)throw Error("Failed to parse font file");this.Vt=Q[0],await this.Ae()}catch(B){throw new P("Failed to load font: "+(B instanceof Error?B.message:"Unknown error"),B)}}async qt(e){const B=Date.now();this.Wt=this.Wt==="UrsaFont"?"UrsaFont":"CustomFont_"+B,this.Kt=new FontFace(this.Wt,e),await this.Kt.load(),document.fonts.add(this.Kt)}async Ae(){const e=this.jt.ht(this.Vt),B=this.jt.ct(e);this.Ht=this.Xt.Ft(B,this.Vt),this.Lt=this.Nt.Gt(B,this.$t,this.Wt);const s=this.Zt.dt(this.Ht,this.Lt,this.$t,this.Wt);this.Rt=s.framebuffer,this.zt=s.columns,this.Jt=s.rows}Ot(e){return this.Xt.Ot(e,this.Ht)}kt(e){return this.Xt.kt(e,this.Ht)}Be(e){if(typeof e!="string"||e.length===0)return!1;const B=new Set(this.Ht.map(s=>s._t));for(const s of e)if(!B.has(s))return!1;return!0}get Qe(){return this.Rt}get se(){return this.Ht}get ie(){return this.zt}get Ee(){return this.Jt}get re(){return this.Lt}dispose(){this.Rt.dispose(),document.fonts.delete(this.Kt)}get fontSize(){return this.$t}get font(){return this.Vt}}class Z{constructor(e,B,s){g(this,"ge");g(this,"oe");g(this,"p");g(this,"v");g(this,"ne");g(this,"he");g(this,"ae",!1);g(this,"De");g(this,"le");g(this,"Ce");this.De=e,this.le=B,this.Ce=s,this.reset()}reset(){this.ae||(this.ge=Math.floor(this.De.width/this.le),this.oe=Math.floor(this.De.height/this.Ce)),this.ce()}ce(){this.p=this.ge*this.le,this.v=this.oe*this.Ce,this.ne=Math.floor((this.De.width-this.p)/2),this.he=Math.floor((this.De.height-this.v)/2)}ue(e,B){this.le=e,this.Ce=B,this.reset()}Pe(e,B){this.ae=!0,this.ge=e,this.oe=B,this.ce()}Ie(){this.ae=!1,this.reset()}resize(){this.ae?this.ce():this.reset()}we(e){if(e===void 0)return this.ae;this.ae=e}get fe(){return this.le}get de(){return this.Ce}get cols(){return this.ge}get rows(){return this.oe}get width(){return this.p}get height(){return this.v}get offsetX(){return this.ne}get offsetY(){return this.he}}class q{constructor(e,B=!1,s={}){g(this,"De");g(this,"me");g(this,"pe");g(this,"ve");g(this,"be");this.me=e,this.pe=B,this.De=this.xe(s.width,s.height),B&&this._e()}xe(e,B){var Q;const s=document.createElement("canvas");if(s.className="textmodeCanvas",s.style.imageRendering="pixelated",this.pe)s.width=e||800,s.height=B||600,document.body.appendChild(s);else{const i=this.me.getBoundingClientRect();let E=Math.round(i.width),r=Math.round(i.height);if(this.me instanceof HTMLVideoElement){const a=this.me;(E===0||r===0)&&a.videoWidth>0&&a.videoHeight>0&&(E=a.videoWidth,r=a.videoHeight)}s.width=E,s.height=r,s.style.position="absolute",s.style.pointerEvents="none";const n=window.getComputedStyle(this.me);let h=parseInt(n.zIndex||"0",10);isNaN(h)&&(h=0),s.style.zIndex=""+(h+1),this.ye(s),(Q=this.me.parentNode)==null||Q.insertBefore(s,this.me.nextSibling)}return s}ye(e){const B=this.me.getBoundingClientRect();let s=this.me.offsetParent;if(s&&s!==document.body){const Q=s.getBoundingClientRect();e.style.top=B.top-Q.top+"px",e.style.left=B.left-Q.left+"px"}else e.style.top=B.top+window.scrollY+"px",e.style.left=B.left+window.scrollX+"px"}resize(e,B){if(this.pe)this.De.width=e??this.De.width,this.De.height=B??this.De.height;else{const s=this.me.getBoundingClientRect();let Q=Math.round(s.width),i=Math.round(s.height);if(this.me instanceof HTMLVideoElement){const E=this.me;(Q===0||i===0)&&E.videoWidth>0&&E.videoHeight>0&&(Q=E.videoWidth,i=E.videoHeight)}this.De.width=Q,this.De.height=i,this.ye(this.De)}}Me(){const e={alpha:!1,premultipliedAlpha:!1,Ge:!0,antialias:!1,Fe:!1,Ye:!1,powerPreference:"high-performance"},B=this.De.getContext("webgl2",e)||this.De.getContext("webgl",e);if(!B)throw new P("WebGL context could not be created. Ensure your browser supports WebGL.");return B}_e(){this.ve=new ResizeObserver(e=>{for(const B of e){const s=B.contentRect;!this.be||Math.round(s.width)===this.De.width&&Math.round(s.height)===this.De.height||this.be()}}),this.ve.observe(this.De)}dispose(){if(this.ve&&this.ve.disconnect(),this.De){const e=this.De.getContext("webgl")||this.De.getContext("webgl2");if(e){const B=e.getExtension("WEBGL_lose_context");B&&B.Te()}this.De.parentNode&&this.De.parentNode.removeChild(this.De)}}get canvas(){return this.De}get width(){return this.De.width}get height(){return this.De.height}}class G{constructor(e,B,s,Q={}){g(this,"Se");g(this,"Oe");g(this,"grid");g(this,"Ue");g(this,"ke");g(this,"Ve");g(this,"He");g(this,"Re");g(this,"h");this.Se=e,this.Oe=B,this.grid=s,this.h=Q;const i=this.grid.cols,E=this.grid.rows;this.Ue=this.Se.createFramebuffer(i,E),this.ke=this.Se.createFramebuffer(i,E),this.Ve=this.Se.createFramebuffer(i,E),this.He=this.Se.createFramebuffer(i,E),this.Re=this.Se.createFramebuffer(i,E)}resize(){const e=this.grid.cols,B=this.grid.rows;this.Ue.resize(e,B),this.ke.resize(e,B),this.Ve.resize(e,B),this.He.resize(e,B),this.Re.resize(e,B)}enabled(e){this.h.enabled=e}enable(){this.enabled(!0)}disable(){this.enabled(!1)}dispose(){this.Ue.dispose(),this.ke.dispose(),this.Ve.dispose(),this.He.dispose(),this.Re.dispose()}get $e(){return this.Ue}get ze(){return this.ke}get Je(){return this.Ve}get Le(){return this.He}get Ke(){return this.Re}get options(){return this.h}}class hA{constructor(e,B){g(this,"I");g(this,"wt");g(this,"We");this.wt=e,this.We=B;const s=Math.max(this.We.length,1);this.I=this.wt.createFramebuffer(s,1),this.je()}je(){const e=this.We.length;this.I.width!==e&&this.I.resize(e,1);const B=new Uint8Array(1*e*4);for(let s=0;s<e;s++){const Q=this.We[s],i=4*s;B[i]=Q[0],B[i+1]=Q[1],B[i+2]=Q[2],B[i+3]=255}this.I.S(B,e,1)}Ze(e){this.We=e,this.je()}get Ne(){return this.We}get framebuffer(){return this.I}get texture(){return this.I.texture}}class j extends G{constructor(B,s,Q,i={}){super(B,s,Q,i);g(this,"palette");this.palette=new hA(this.Se,this.Oe.kt(" .:-=+*%@#"))}se(B){d.validate(this.Oe.Be(B),"One or more characters do not exist in the current font.",{method:"characters",Ut:B})&&(this.h.se=B,this.palette.Ze(this.Oe.kt(B)))}Xe(B,s,Q,i=255){const E=this.qe(B,"characterColor",s,Q,i);E&&(this.h.Xe=E)}AB(B){this.tB(B,"characterColorMode")}eB(B,s,Q,i=255){const E=this.qe(B,"cellColor",s,Q,i);E&&(this.h.eB=E)}BB(B){this.tB(B,"cellColorMode")}QB(B){this.sB(B,"invert","Invert")}rotation(B){if(!d.validate(typeof B=="number","Rotation angle must be a number.",{method:"rotation",Ut:B}))return;(B%=360)<0&&(B+=360);const s=255*B/360,Q=Math.floor(s)/255,i=Math.round(s-Q);this.h.rotation=[Q,i,0,1]}iB(B){this.sB(B,"flipHorizontally","Flip horizontally")}EB(B){this.sB(B,"flipVertically","Flip vertically")}qe(B,s,Q,i,E=255){let r,n,h,a;if(typeof B=="string"){const D=this.rB(B);if(!D)return d.validate(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:s,Ut:B}),null;[r,n,h,a]=D}else if(r=B,n=Q!==void 0?Q:B,h=i!==void 0?i:B,a=E,!d.validate([r,n,h,a].every(D=>D>=0&&D<=255),s.charAt(0).toUpperCase()+s.slice(1)+" color values must be between 0 and 255",{method:s,gB:{r,g:n,b:h,a}}))return null;return[r/255,n/255,h/255,a/255]}tB(B,s){d.validate(["sampled","fixed"].includes(B),"Invalid color mode. Must be 'sampled' or 'fixed'.",{method:s,Ut:B})&&(this.h[s]=B)}sB(B,s,Q){d.validate(typeof B=="boolean"||typeof B=="number"&&Number.isInteger(B),Q+" must be a boolean value or an integer (0 for false, any other number for true).",{method:s,Ut:B})&&(this.h[s]=!!B)}rB(B){return B=B.replace(/^#/,""),/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(B)?(B.length===3&&(B=B.split("").map(s=>s+s).join("")),[parseInt(B.slice(0,2),16),parseInt(B.slice(2,4),16),parseInt(B.slice(4,6),16),255]):null}}const aA={enabled:!0,se:" .:-=+*%@#",Xe:[1,1,1,1],AB:"sampled",eB:[0,0,0,1],BB:"fixed",QB:!1,rotation:[0,0,0,255],iB:!1,EB:!1,oB:[0,255]};class $ extends j{constructor(B,s,Q){super(B,s,Q,{...aA});g(this,"nB");g(this,"hB");g(this,"aB");g(this,"DB");g(this,"lB");g(this,"CB");this.nB=new v(B.context,x,"precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;vec4 color=texture2D(u_sketchTexture,cellCenter);float brightness=dot(color.rgb,vec3(0.299,0.587,0.114));float brightnessValue=brightness*255.0;if(brightnessValue>=u_brightnessRange.x&&brightnessValue<=u_brightnessRange.y){gl_FragColor=color;}else{gl_FragColor=vec4(0.0);}}"),this.hB=new v(B.context,x,"precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_fillColor;uniform bool u_useFixedColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){if(u_useFixedColor){gl_FragColor=u_fillColor;}else{gl_FragColor=sampleColor;}}else{gl_FragColor=vec4(0.0);}}"),this.DB=new v(B.context,x,"precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}"),this.lB=new v(B.context,x,"precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotationColor;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotationColor;}else{gl_FragColor=vec4(0.0);}}"),this.aB=new v(B.context,x,"precision lowp float;uniform sampler2D u_colorSampleFramebuffer;uniform sampler2D u_charPaletteTexture;uniform vec2 u_charPaletteSize;uniform vec2 u_brightnessRange;varying vec2 v_uv;void main(){vec4 color=texture2D(u_colorSampleFramebuffer,v_uv);if(color.a==0.0){gl_FragColor=vec4(0.0);return;}float brightness=dot(color.rgb,vec3(0.299,0.587,0.114))*255.0;vec2 range=u_brightnessRange;if(brightness<range.x||brightness>range.y){gl_FragColor=vec4(0.0);return;}float t=(brightness-range.x)/(range.y-range.x);float idx=clamp(floor(t*u_charPaletteSize.x),0.0,u_charPaletteSize.x-1.0);vec3 charColor=texture2D(u_charPaletteTexture,vec2((idx+0.5)/u_charPaletteSize.x,0.0)).rgb;gl_FragColor=vec4(charColor,1.0);}"),this.CB=this.Se.createFramebuffer(this.grid.cols,this.grid.rows)}cB(B){const s=this.grid.cols,Q=this.grid.rows;this.CB.O(),this.Se.clear(),this.Se.bA(this.nB),this.Se.j("u_sketchTexture",B),this.Se.j("u_gridCellDimensions",[s,Q]),this.Se.j("u_brightnessRange",this.h.oB),this.Se.rect(0,0,s,Q),this.CB.end(),this.ke.O(),this.Se.clear(),this.Se.bA(this.hB),this.Se.j("u_sampleTexture",this.CB),this.Se.j("u_fillColor",this.h.Xe),this.Se.j("u_useFixedColor",this.h.AB==="fixed"),this.Se.rect(0,0,s,Q),this.ke.end(),this.Ve.O(),this.Se.clear(),this.Se.bA(this.hB),this.Se.j("u_sampleTexture",this.CB),this.Se.j("u_fillColor",this.h.eB),this.Se.j("u_useFixedColor",this.h.BB==="fixed"),this.Se.rect(0,0,s,Q),this.Ve.end(),this.Re.O(),this.Se.clear(),this.Se.bA(this.DB),this.Se.j("u_sampleTexture",this.CB),this.Se.j("u_invert",this.h.QB),this.Se.j("u_flipHorizontally",this.h.iB),this.Se.j("u_flipVertically",this.h.EB),this.Se.rect(0,0,s,Q),this.Re.end(),this.He.O(),this.Se.clear(),this.Se.bA(this.lB),this.Se.j("u_sampleTexture",this.CB),this.Se.j("u_rotationColor",this.h.rotation),this.Se.rect(0,0,s,Q),this.He.end(),this.Ue.O(),this.Se.clear(),this.Se.bA(this.aB),this.Se.j("u_colorSampleFramebuffer",this.CB),this.Se.j("u_charPaletteTexture",this.palette.texture),this.Se.j("u_charPaletteSize",[this.palette.Ne.length,1]),this.Se.j("u_brightnessRange",this.h.oB),this.Se.rect(0,0,s,Q),this.Ue.end()}resize(){super.resize(),this.CB.resize(this.grid.cols,this.grid.rows)}oB(B){d.validate(Array.isArray(B)&&B.length===2&&B.every(s=>typeof s=="number"&&s>=0&&s<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",Ut:B})&&(this.h.oB=B)}}const DA=Object.freeze(Object.defineProperty({__proto__:null,uB:$,PB:G,IB:j},Symbol.toStringTag,{value:"Module"}));class AA{constructor(e,B,s){g(this,"Se");g(this,"font");g(this,"grid");g(this,"wB");g(this,"fB");g(this,"dB");g(this,"mB");g(this,"pB");g(this,"Ue");g(this,"ke");g(this,"Ve");g(this,"He");g(this,"Re");this.Se=e,this.font=B,this.grid=s,this.pB=this.Se.createShader(x,"precision mediump float;uniform sampler2D u_characterTexture;uniform vec2 u_charsetDimensions;uniform sampler2D u_primaryColorTexture;uniform sampler2D u_secondaryColorTexture;uniform sampler2D u_transformTexture;uniform sampler2D u_asciiCharacterTexture;uniform sampler2D u_rotationTexture;uniform sampler2D u_captureTexture;uniform vec2 u_captureDimensions;uniform int u_backgroundMode;uniform vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;mat2 rotate2D(float angle){float s=sin(angle);float c=cos(angle);return mat2(c,-s,s,c);}void main(){vec2 adjustedCoord=gl_FragCoord.xy/u_gridPixelDimensions;vec2 gridCoord=adjustedCoord*u_gridCellDimensions;vec2 cellCoord=floor(gridCoord);vec2 charIndexTexCoord=(cellCoord+0.5)/u_gridCellDimensions;vec4 primaryColor=texture2D(u_primaryColorTexture,charIndexTexCoord);vec4 secondaryColor=texture2D(u_secondaryColorTexture,charIndexTexCoord);vec4 transformColor=texture2D(u_transformTexture,charIndexTexCoord);bool isInverted=transformColor.r>0.5;bool flipHorizontal=transformColor.g>0.5;bool flipVertical=transformColor.b>0.5;vec4 encodedIndexVec=texture2D(u_asciiCharacterTexture,charIndexTexCoord);if(encodedIndexVec.a<0.01){gl_FragColor=(u_backgroundMode==0)? vec4(0.0):texture2D(u_captureTexture,gl_FragCoord.xy/u_captureDimensions);return;}int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"),this.fB=new $(e,B,s),this.dB=new G(e,B,s),this.wB=[this.fB,this.dB],this.Ue=this.Se.createFramebuffer(s.cols,s.rows),this.ke=this.Se.createFramebuffer(s.cols,s.rows),this.Ve=this.Se.createFramebuffer(s.cols,s.rows),this.He=this.Se.createFramebuffer(s.cols,s.rows),this.Re=this.Se.createFramebuffer(s.cols,s.rows),this.mB=this.Se.createFramebuffer(this.grid.width,this.grid.height)}vB(e){for(const s of this.wB)s.options.enabled&&s instanceof j&&s.cB(e);const B=(s,Q)=>{s.O(),this.Se.clear();for(const i of this.wB)i.options.enabled&&this.Se.image(Q(i),0,0);s.end()};B(this.Ue,s=>s.$e),B(this.ke,s=>s.ze),B(this.Ve,s=>s.Je),B(this.He,s=>s.Le),B(this.Re,s=>s.Ke),this.mB.O(),this.Se.clear(),this.Se.bA(this.pB),this.Se.j("u_characterTexture",this.font.Qe),this.Se.j("u_charsetDimensions",[this.font.ie,this.font.Ee]),this.Se.j("u_asciiCharacterTexture",this.Ue.texture),this.Se.j("u_primaryColorTexture",this.ke.texture),this.Se.j("u_secondaryColorTexture",this.Ve.texture),this.Se.j("u_transformTexture",this.Re.texture),this.Se.j("u_rotationTexture",this.He.texture),this.Se.j("u_captureTexture",e.texture),this.Se.j("u_backgroundMode",!1),this.Se.j("u_captureDimensions",[e.width,e.height]),this.Se.j("u_gridCellDimensions",[this.grid.cols,this.grid.rows]),this.Se.j("u_gridPixelDimensions",[this.grid.width,this.grid.height]),this.Se.rect(0,0,this.mB.width,this.mB.height),this.mB.end()}add(e){if(!d.validate(e==="brightness"||e==="custom",'Converter type must be either "brightness" or "custom". Provided: '+e,{method:"add",Ut:e}))return;let B;return B=e==="brightness"?new $(this.Se,this.font,this.grid):new G(this.Se,this.font,this.grid),this.wB.push(B),B}remove(e){if(!d.validate(e instanceof G,"Parameter must be a TextmodeConverter instance.",{method:"remove",Ut:e}))return;const B=this.wB.indexOf(e);d.validate(B!==-1,"Converter instance not found in pipeline.",{method:"remove",Ut:e,bB:this.wB.length})&&this.wB.splice(B,1)}get texture(){return this.mB}resize(){this.mB.resize(this.grid.width,this.grid.height);const e=this.grid.cols,B=this.grid.rows;this.Ue.resize(e,B),this.ke.resize(e,B),this.Ve.resize(e,B),this.He.resize(e,B),this.Re.resize(e,B);for(const s of this.wB)s.resize()}xB(){return this.wB.some(e=>e.options.enabled)}disable(){for(const e of this.wB)e.disable()}enable(){for(const e of this.wB)e.enable()}dispose(){for(const e of this.wB)e.dispose();this.Ue.dispose(),this.ke.dispose(),this.Ve.dispose(),this.He.dispose(),this.Re.dispose(),this.mB.dispose(),this.pB.dispose()}get $e(){return this.Ue}get ze(){return this.ke}get Je(){return this.Ve}get Le(){return this.He}get Ke(){return this.Re}}const lA=o=>class extends o{fill(e,B,s,Q){this.wt.fill(e,B,s,Q)}stroke(e,B,s,Q){this.wt.stroke(e,B,s,Q)}xA(e){this.wt.xA(e)}_A(){this.wt._A()}yA(){this.wt.yA()}rotate(e){this.wt.rotate(e)}push(){this.wt.push()}pop(){this.wt.pop()}rect(e,B,s=1,Q=1){this.wt.rect(e,B,s,Q)}line(e,B,s,Q){this.wt.line(e,B,s,Q)}background(e,B=e,s=e,Q=255){this.wt.background(e,B,s,Q)}createShader(e,B){return this.wt.createShader(e,B)}FA(e){return this.wt.FA(e)}bA(e){this.wt.bA(e)}j(e,B){this.wt.j(e,B)}};class V{_B(e){const B=e.get("brightness"),s=B==null?void 0:B.$e,Q=B==null?void 0:B.ze,i=B==null?void 0:B.Je,E=B==null?void 0:B.Ke,r=B==null?void 0:B.Le;return s==null||s.U(),Q==null||Q.U(),i==null||i.U(),E==null||E.U(),r==null||r.U(),{yB:(s==null?void 0:s.k)||new Uint8Array(0),MB:(Q==null?void 0:Q.k)||new Uint8Array(0),GB:(i==null?void 0:i.k)||new Uint8Array(0),FB:(E==null?void 0:E.k)||new Uint8Array(0),YB:(r==null?void 0:r.k)||new Uint8Array(0)}}TB(e,B){return e[B]+(e[B+1]<<8)}SB(e,B){return{r:e[B],g:e[B+1],b:e[B+2],a:e[B+3]}}}class L{OB(e,B){return new Blob([e],{type:B})}UB(e,B,s){try{const Q=this.OB(e,s),i=URL.createObjectURL(Q),E=document.createElement("a");E.href=i,E.download=B,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(i)}catch(Q){throw console.error("Failed to download file:",Q),Error("File download failed: "+(Q instanceof Error?Q.message:"Unknown error"))}}kB(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}VB(){const e=new Date;return{HB:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}RB(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}$B(){return"'textmode-export'-"+this.kB()}}class CA extends V{zB(e,B,s){const Q=e[s]===255,i=e[s+1]===255,E=e[s+2]===255,r=B[s],n=B[s+1];return{JB:Q,LB:i,KB:E,rotation:Math.round(360*(r+n/255)/255*100)/100}}WB(e,B,s){return{x:e,y:B,jB:e*s.fe,ZB:B*s.de}}NB(e,B){const s=[];let Q=0;for(let i=0;i<B.rows;i++)for(let E=0;E<B.cols;E++){const r=4*Q,n=this.TB(e.yB,r);let h=this.SB(e.MB,r),a=this.SB(e.GB,r);const D=this.zB(e.FB,e.YB,r);if(D.JB){const u=h;h=a,a=u}const l=this.WB(E,i,B);s.push({charIndex:n,XB:h,qB:a,transform:D,position:l}),Q++}return s}}class cA{AQ(e,B){const s=e.cmap;for(const Q of s.LA)if(Q.format===4){for(let i=0;i<Q.At.length;i++)if(B>=Q.At[i]&&B<=Q.qA[i]){if(Q.et[i]===0)return B+Q.tt[i]&65535;{const E=Q.et[i]/2+(B-Q.At[i])-(Q.At.length-i);if(E>=0&&E<Q.Bt.length){const r=Q.Bt[E];if(r!==0)return r+Q.tt[i]&65535}}}}return 0}tQ(e,B,s,Q,i){const E=i/e.head.unitsPerEm;return{eQ:()=>({x1:s+B.xMin*E,y1:Q+-B.yMax*E,x2:s+B.xMax*E,y2:Q+-B.yMin*E}),BQ:()=>this.QQ(B,s,Q,E)}}QQ(e,B,s,Q){if(!e||!e.gt)return"";const{gt:i,ot:E,rt:r,flags:n}=e;if(!(i&&E&&r&&n))return"";let h="",a=0;for(let D=0;D<r.length;D++){const l=r[D];if(!(l<a)){if(l>=a){const u=B+i[a]*Q,w=s-E[a]*Q;h+=`M${u.toFixed(2)},${w.toFixed(2)}`;let c=a+1;for(;c<=l;)if(1&n[c]){const f=B+i[c]*Q,p=s-E[c]*Q;h+=`L${f.toFixed(2)},${p.toFixed(2)}`,c++}else{const f=B+i[c]*Q,p=s-E[c]*Q;let m=c+1>l?a:c+1;if(1&n[m]){const y=B+i[m]*Q,M=s-E[m]*Q;h+=`Q${f.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${M.toFixed(2)}`,c=m+1}else{const y=(f+(B+i[m]*Q))/2,M=(p+(s-E[m]*Q))/2;h+=`Q${f.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${M.toFixed(2)}`,c=m}}h+="Z"}a=l+1}}return h}sQ(e,B,s,Q,i){const E=e.codePointAt(0)||0,r=this.AQ(B,E);let n=null;return B.glyf&&B.glyf[r]!==null?n=B.glyf[r]:C&&C.T&&C.T.glyf&&C.T.glyf.it&&(n=C.T.glyf.it(B,r),B.glyf&&n&&(B.glyf[r]=n)),this.tQ(B,n,s,Q,i)}iQ(e,B,s,Q,i,E,r,n){const h=s+(i-n*(r/B.head.unitsPerEm))/2,a=Q+(E+.7*r)/2;return this.sQ(e,B,h,a,r).BQ()||null}}class PA{constructor(){g(this,"EQ");this.EQ=new cA}rQ(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
9
9
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
10
|
-
<svg width="${
|
|
10
|
+
<svg width="${e.width}" height="${e.height}" viewBox="0 0 ${e.width} ${e.height}"
|
|
11
11
|
xmlns="http://www.w3.org/2000/svg" version="1.1">
|
|
12
12
|
<title>textmode art generated via textmode.js</title>
|
|
13
|
-
<desc>textmode art visualization generated by textmode.js library</desc>`}
|
|
13
|
+
<desc>textmode art visualization generated by textmode.js library</desc>`}gQ(){return`
|
|
14
14
|
</g>
|
|
15
|
-
</svg>`}
|
|
16
|
-
<rect width="${
|
|
17
|
-
<rect x="${
|
|
18
|
-
<rect x="${
|
|
19
|
-
<path id="${`path-${
|
|
20
|
-
<path d="${
|
|
21
|
-
<g${
|
|
22
|
-
</g>`):i+=
|
|
23
|
-
<g id="ascii-cells">`;for(const
|
|
24
|
-
`).replace(/[ \t]+$/gm,"")}}class
|
|
15
|
+
</svg>`}oQ(e,B){if(!B.nQ)return"";const s=B.backgroundColor,Q=`rgba(${s[0]},${s[1]},${s[2]},${s[3]/255})`;return`
|
|
16
|
+
<rect width="${e.width}" height="${e.height}" fill="${Q}" />`}hQ(e){return`rgba(${e.r},${e.g},${e.b},${e.a/255})`}aQ(e,B){const{transform:s,position:Q}=e,i=Q.jB+B.fe/2,E=Q.ZB+B.de/2,r=[];if(s.LB||s.KB){const n=s.LB?-1:1,h=s.KB?-1:1;r.push(`translate(${i} ${E})`),r.push(`scale(${n} ${h})`),r.push(`translate(${-i} ${-E})`)}return s.rotation&&r.push(`rotate(${s.rotation} ${i} ${E})`),r.length?` transform="${r.join(" ")}"`:""}DQ(e,B,s){if(!s.nQ||e.qB.a===0)return"";const{position:Q}=e,i=this.hQ(e.qB);return s.lQ==="stroke"?`
|
|
17
|
+
<rect x="${Q.jB}" y="${Q.ZB}" width="${B.fe}" height="${B.de}" stroke="${i}" fill="none" stroke-width="${s.strokeWidth}" />`:`
|
|
18
|
+
<rect x="${Q.jB}" y="${Q.ZB}" width="${B.fe}" height="${B.de}" fill="${i}" />`}sQ(e,B,s,Q){const i=s.se[e.charIndex];if(!i)return"";const E=this.EQ.iQ(i._t,s.font,e.position.jB,e.position.ZB,B.fe,B.de,s.fontSize,i.St);if(!E)return"";const r=this.hQ(e.XB);return Q.lQ==="stroke"?`
|
|
19
|
+
<path id="${`path-${e.charIndex}-${e.position.jB}-${e.position.ZB}`.replace(/\./g,"-")}" d="${E}" stroke="${r}" stroke-width="${Q.strokeWidth}" fill="none" />`:`
|
|
20
|
+
<path d="${E}" fill="${r}" />`}CQ(e,B,s,Q){let i="";i+=this.DQ(e,B,Q);const E=this.aQ(e,B),r=this.sQ(e,B,s,Q);return r&&(E?(i+=`
|
|
21
|
+
<g${E}>`,i+=r,i+=`
|
|
22
|
+
</g>`):i+=r),i}cQ(e,B,s,Q){let i=this.rQ(B);i+=this.oQ(B,Q),i+=`
|
|
23
|
+
<g id="ascii-cells">`;for(const E of e)i+=this.CQ(E,B,s,Q);return i+=this.gQ(),i}uQ(e){return e.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
|
|
24
|
+
`).replace(/[ \t]+$/gm,"")}}class uA extends L{PQ(e){return this.OB(e,"image/svg+xml;charset=utf-8")}IQ(e,B){this.UB(e,this.RB(B)+".svg","image/svg+xml;charset=utf-8")}wQ(e,B){this.IQ(e,B||this.$B())}}class tA{constructor(){g(this,"fQ");g(this,"dQ");g(this,"mQ");this.fQ=new CA,this.dQ=new PA,this.mQ=new uA}pQ(e){return{nQ:e.nQ??!0,lQ:e.lQ??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0]}}vQ(e,B={}){const s=this.pQ(B),Q=this.fQ._B(e.bQ),i=this.fQ.NB(Q,e.grid),E=this.dQ.cQ(i,e.grid,e.font,s);return this.dQ.uQ(E)}wQ(e,B={}){const s=this.vQ(e,B),Q=B.filename||this.mQ.$B();this.mQ.wQ(s,Q)}}class IA extends V{xQ(e,B,s,Q=" "){var r;const i=[];let E=0;for(let n=0;n<B.rows;n++){const h=[];for(let a=0;a<B.cols;a++){const D=4*E,l=this.TB(e.yB,D),u=((r=s.se[l])==null?void 0:r._t)||Q;h.push(u),E++}i.push(h)}return i}}class wA{_Q(e,B){const s=[];for(const i of e){let E=i.join("");B.yQ||(E=E.replace(/\s+$/,"")),s.push(E)}const Q=B.MQ==="crlf"?`\r
|
|
25
25
|
`:`
|
|
26
|
-
`;return t.join(r)}}class xA extends W{saveTXT(A,e){try{const t=this.ensureValidFilename(e);this.downloadFile(A,t,"text/plain;charset=utf-8")}catch(t){throw console.error("Failed to save TXT file:",t),new Error(`TXT file save failed: ${t instanceof Error?t.message:"Unknown error"}`)}}ensureValidFilename(A){let e=this.sanitizeFilename(A);return e===".txt"||e.length<=4?this.generateDefaultFilename():e}}class eA{constructor(){o(this,"dataExtractor");o(this,"contentGenerator");o(this,"fileHandler");this.dataExtractor=new bA,this.contentGenerator=new vA,this.fileHandler=new xA}applyDefaultOptions(A){return{preserveTrailingSpaces:A.preserveTrailingSpaces??!1,lineEnding:A.lineEnding??"lf",emptyCharacter:A.emptyCharacter??" "}}generateTXT(A,e={}){const t=this.applyDefaultOptions(e),r=this.dataExtractor.extractFramebufferData(A.pipeline),i=this.dataExtractor.extractCharacterGrid(r,A.grid,A.font,t.emptyCharacter);return this.contentGenerator.generateTXTContent(i,t)}saveTXT(A,e={}){try{const t=this.generateTXT(A,e),r=e.filename||this.fileHandler.generateDefaultFilename();this.fileHandler.saveTXT(t,r)}catch(t){throw console.error("Failed to save TXT:",t),new Error(`TXT save failed: ${t instanceof Error?t.message:"Unknown error"}`)}}}class FA extends N{captureCanvasData(A,e=1,t="transparent"){const r=A.canvas;if(e===1&&t==="transparent")return r;const i=document.createElement("canvas"),s=i.getContext("2d"),a=Math.round(r.width*e),g=Math.round(r.height*e);return i.width=a,i.height=g,t!=="transparent"&&(s.fillStyle=t,s.fillRect(0,0,a,g)),s.imageSmoothingEnabled=!1,s.drawImage(r,0,0,r.width,r.height,0,0,a,g),i}}class yA{generateImageData(A,e){const t=this.getMimeType(e.format);return e.format==="png"?A.toDataURL(t):A.toDataURL(t,e.quality)}async generateImageBlob(A,e){return new Promise((t,r)=>{const i=this.getMimeType(e.format),s=a=>{a?t(a):r(new Error(`Failed to generate ${e.format.toUpperCase()} blob`))};e.format==="png"?A.toBlob(s,i):A.toBlob(s,i,e.quality)})}getMimeType(A){switch(A){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw new Error(`Unsupported image format: ${A}`)}}}const tA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},X={png:".png",jpg:".jpg",webp:".webp"};class TA extends W{saveImage(A,e,t){try{const r=X[t];typeof A=="string"?this.saveImageFromDataURL(A,this.sanitizeFilename(e)+r):this.saveImageFromBlob(A,this.sanitizeFilename(e)+r)}catch(r){throw console.error(`Failed to save ${t.toUpperCase()} image:`,r),new Error(`Image save failed: ${r instanceof Error?r.message:"Unknown error"}`)}}saveImageFromDataURL(A,e){const t=document.createElement("a");t.href=A,t.download=e,t.style.display="none",t.rel="noopener",document.body.appendChild(t),t.click(),document.body.removeChild(t)}saveImageFromBlob(A,e){const t=URL.createObjectURL(A);try{const r=document.createElement("a");r.href=t,r.download=e,r.style.display="none",r.rel="noopener",document.body.appendChild(r),r.click(),document.body.removeChild(r)}finally{URL.revokeObjectURL(t)}}validateSaveSupport(A){return A in tA&&A in X}getMimeType(A){return tA[A]}getFileExtension(A){return X[A]}}class SA{constructor(){o(this,"dataExtractor");o(this,"contentGenerator");o(this,"fileHandler");this.dataExtractor=new FA,this.contentGenerator=new yA,this.fileHandler=new TA}applyDefaultOptions(A){return{format:A.format??"png",quality:A.quality??1,scale:A.scale??1,backgroundColor:A.backgroundColor??"transparent"}}validateOptions(A){if(console.log("Validating image export options:",A),!this.fileHandler.validateSaveSupport(A.format))throw new Error(`Saving '${A.format}' files is not supported`);if(A.quality<0||A.quality>1)throw new Error("Image quality must be between 0.0 and 1.0");if(A.scale<=0)throw new Error("Scale factor must be greater than 0");A.scale>10&&console.warn("Large scale factors may result in very large files and slow performance"),A.format==="jpg"&&A.backgroundColor==="transparent"&&(A.backgroundColor="black")}generateImage(A,e={}){const t=this.applyDefaultOptions(e);if(this.validateOptions(t),t.scale===1&&t.backgroundColor==="transparent")return this.contentGenerator.generateImageData(A.canvas,t);const r=this.dataExtractor.captureCanvasData(A,t.scale,t.backgroundColor);return this.contentGenerator.generateImageData(r,t)}async generateImageBlob(A,e={}){const t=this.applyDefaultOptions(e);if(this.validateOptions(t),t.scale===1&&t.backgroundColor==="transparent")return await this.contentGenerator.generateImageBlob(A.canvas,t);const r=this.dataExtractor.captureCanvasData(A,t.scale,t.backgroundColor);return await this.contentGenerator.generateImageBlob(r,t)}async saveImage(A,e={}){try{const t=await this.generateImageBlob(A,e),r=e.format??"png",i=e.filename||this.fileHandler.generateDefaultFilename();this.fileHandler.saveImage(t,i,r)}catch(t){throw console.error("Failed to save image:",t),new Error(`Image save failed: ${t instanceof Error?t.message:"Unknown error"}`)}}}class M{constructor(A=null,e={}){o(this,"captureSource");o(this,"textmodeCanvas");o(this,"_renderer");o(this,"_canvasFramebuffer");o(this,"_font");o(this,"_grid");o(this,"resizeObserver");o(this,"_mode");o(this,"_frameRateLimit");o(this,"animationFrameId",null);o(this,"lastFrameTime",0);o(this,"frameInterval");o(this,"_isLooping",!0);o(this,"_frameRate",0);o(this,"lastRenderTime",0);o(this,"_frameCount",0);o(this,"frameTimeHistory",[]);o(this,"frameTimeHistorySize",10);o(this,"_pipeline");o(this,"_isDisposed",!1);o(this,"_standalone",!1);o(this,"_drawCallback",()=>{});o(this,"_resizedCallback",()=>{});o(this,"_windowResizeListener",null);o(this,"_printDebug",!1);this.captureSource=A,this._standalone=A===null,this._mode=e.renderMode??"auto",this._frameRateLimit=e.frameRate??60,this.frameInterval=1e3/this._frameRateLimit}static async create(A=null,e={}){const t=new M(A,e),r=t._standalone?e:void 0;t.textmodeCanvas=new Z(t.captureSource,t._standalone,r),t._renderer=new nA(t.textmodeCanvas.getWebGLContext());let i,s;t._standalone?(i=e.width||800,s=e.height||600):(i=t.textmodeCanvas.width||800,s=t.textmodeCanvas.height||600),t._canvasFramebuffer=t._renderer.createFramebuffer(i,s),t._font=new K(t._renderer,e.fontSize??16),await t._font.initialize(e.fontSource);const a=t._font.maxGlyphDimensions;return t._grid=new j(t.textmodeCanvas.canvas,a.width,a.height),t._pipeline=new q(t._renderer,t._font,t._grid),t.setupEventListeners(),t.startAutoRendering(),t}setupEventListeners(){this._windowResizeListener=()=>{this._standalone?this._resizedCallback():this.resize()},window.addEventListener("resize",this._windowResizeListener),window.ResizeObserver&&this.captureSource&&!this._standalone&&(this.resizeObserver=new ResizeObserver(()=>{this.resize()}),this.resizeObserver.observe(this.captureSource))}toString(A={}){return new eA().generateTXT(this,A)}saveStrings(A={}){new eA().saveTXT(this,A)}toSVG(A={}){return new AA().generateSVG(this,A)}saveSVG(A={}){new AA().saveSVG(this,A)}async saveCanvas(A,e="png",t={}){await new SA().saveImage(this.textmodeCanvas,{...t,filename:A,format:e})}async loadFont(A){return this._font.loadFont(A).then(()=>{const e=this._font.maxGlyphDimensions;this._grid.resizeCellPixelDimensions(e.width,e.height),this._pipeline.resize()})}render(){if(this.measureFrameRate(),this._frameCount++,this._isDisposed){console.warn("Cannot render: Required resources have been disposed");return}if(this._standalone?this._canvasFramebuffer&&(this._canvasFramebuffer.begin(),this._drawCallback(),this._renderer&&this._renderer.reset(),this._canvasFramebuffer&&this._canvasFramebuffer.end()):this.captureSource&&this._canvasFramebuffer&&this._canvasFramebuffer.update(this.captureSource),!this._pipeline||!this._renderer){console.warn("Cannot complete render: Pipeline or renderer has been disposed");return}if(this._pipeline.render(this._canvasFramebuffer),this._pipeline.hasEnabledConverters()?(this._renderer.background(0),this._renderer.image(this._pipeline.texture,this._grid.offsetX,this._grid.offsetY,this._pipeline.texture.width,this._pipeline.texture.height)):(this._renderer.clear(),this._renderer.image(this._canvasFramebuffer,this._grid.offsetX,this._grid.offsetY,this._canvasFramebuffer.width,this._canvasFramebuffer.height)),this._printDebug){let A=0;this._renderer.image(this._pipeline.characterFramebuffer,A,0,this._pipeline.characterFramebuffer.width,this._pipeline.characterFramebuffer.height),A+=this._pipeline.characterFramebuffer.width,this._renderer.image(this._pipeline.primaryColorFramebuffer,A,0,this._pipeline.primaryColorFramebuffer.width,this._pipeline.primaryColorFramebuffer.height),A+=this._pipeline.primaryColorFramebuffer.width,this._renderer.image(this._pipeline.secondaryColorFramebuffer,A,0,this._pipeline.secondaryColorFramebuffer.width,this._pipeline.secondaryColorFramebuffer.height),A+=this._pipeline.secondaryColorFramebuffer.width,this._renderer.image(this._pipeline.transformFramebuffer,A,0,this._pipeline.transformFramebuffer.width,this._pipeline.transformFramebuffer.height),A+=this._pipeline.transformFramebuffer.width,this._renderer.image(this._pipeline.rotationFramebuffer,A,0,this._pipeline.rotationFramebuffer.width,this._pipeline.rotationFramebuffer.height)}}resize(){this.textmodeCanvas.resize(),this._canvasFramebuffer.resize(this.textmodeCanvas.width,this.textmodeCanvas.height),this._grid.resize(),this._pipeline.resize(),this._renderer.resetViewport(),this._mode!=="manual"&&this.render()}startAutoRendering(){if(this._mode!=="auto"||!this._isLooping)return;this.lastFrameTime=performance.now();const A=e=>{if(!this._isLooping){this.animationFrameId=null;return}const t=e-this.lastFrameTime;t>=this.frameInterval&&(this.render(),this.lastFrameTime=e-t%this.frameInterval),this._isLooping&&(this.animationFrameId=requestAnimationFrame(A))};this.animationFrameId=requestAnimationFrame(A)}measureFrameRate(){const A=performance.now();if(this.lastRenderTime>0){const e=A-this.lastRenderTime;this.frameTimeHistory.push(e),this.frameTimeHistory.length>this.frameTimeHistorySize&&this.frameTimeHistory.shift();const t=this.frameTimeHistory.reduce((r,i)=>r+i,0)/this.frameTimeHistory.length;this._frameRate=1e3/t}this.lastRenderTime=A}stopAutoRendering(){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}renderMode(A){this._mode!==A&&(this.stopAutoRendering(),this._mode=A,A==="auto"&&this._isLooping&&this.startAutoRendering())}frameRate(A){if(A===void 0)return this._frameRate;this._frameRateLimit=A,this.frameInterval=1e3/A,this._mode==="auto"&&this._isLooping&&(this.stopAutoRendering(),this.startAutoRendering())}noLoop(){this._isLooping&&(this._isLooping=!1,this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null))}loop(){this._isLooping||(this._isLooping=!0,this._mode==="auto"&&this.startAutoRendering())}redraw(A=1){if(C.validate(typeof A=="number"&&A>0&&Number.isInteger(A),"Redraw count must be a positive integer.",{method:"redraw",providedValue:A}))for(let e=0;e<A;e++)this.render()}isLooping(){return this._mode==="auto"&&this._isLooping}fontSize(A){C.validate(typeof A=="number"&&A>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:A})&&this._font.fontSize!==A&&(this._font.setFontSize(A),this._grid.resizeCellPixelDimensions(this._font.maxGlyphDimensions.width,this._font.maxGlyphDimensions.height),this._pipeline.resize(),this._renderer.resetViewport())}draw(A){this._drawCallback=A}windowResized(A){this._resizedCallback=A}resizeCanvas(A,e){this.textmodeCanvas.resize(A,e),this._canvasFramebuffer.resize(this.textmodeCanvas.width,this.textmodeCanvas.height),this._grid.resize(),this._pipeline.resize(),this._renderer.resetViewport(),this._mode!=="manual"&&this.render()}converter(A){return this._pipeline.get(A)}fill(A,e,t,r){this._renderer.fill(A,e,t,r)}stroke(A,e,t,r){this._renderer.stroke(A,e,t,r)}strokeWeight(A){this._renderer.strokeWeight(A)}noStroke(){this._renderer.noStroke()}noFill(){this._renderer.noFill()}rotate(A){this._renderer.rotate(A)}push(){this._renderer.push()}pop(){this._renderer.pop()}rect(A,e,t=1,r=1){this._renderer.rect(A,e,t,r)}line(A,e,t,r){this._renderer.line(A,e,t,r)}background(A,e=A,t=A,r=255){this._renderer.background(A,e,t,r)}createShader(A,e){return this._renderer.createShader(A,e)}createFilterShader(A){return this._renderer.createFilterShader(A)}shader(A){this._renderer.shader(A)}setUniform(A,e){this._renderer.setUniform(A,e)}destroy(){this._isDisposed=!0,this.stopAutoRendering(),this._windowResizeListener&&(window.removeEventListener("resize",this._windowResizeListener),this._windowResizeListener=null),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this._pipeline.dispose(),this._font.dispose(),this._grid.dispose(),this._canvasFramebuffer.dispose(),this._renderer.dispose(),this.textmodeCanvas.dispose(),this.captureSource=null,this.textmodeCanvas=null,this._renderer=null,this._canvasFramebuffer=null,this._font=null,this._grid=null,this._pipeline=null,this.resizeObserver=null,this._drawCallback=()=>{},this._resizedCallback=()=>{},this.animationFrameId=null,this.lastFrameTime=0,this.lastRenderTime=0,this._frameCount=0,this._frameRate=0,this.frameTimeHistory=[],this._isLooping=!1}debug(A){this._printDebug=A}get grid(){return this._grid}get font(){return this._font}get mode(){return this._mode}get pipeline(){return this._pipeline}get frameCount(){return this._frameCount}set frameCount(A){this._frameCount=A}get width(){return this.textmodeCanvas.width}get height(){return this.textmodeCanvas.height}get isDisposed(){return this._isDisposed}}class U{static async create(A,e={}){if(A instanceof HTMLCanvasElement||A instanceof HTMLVideoElement)return M.create(A,e);{const t=A||{};return M.create(null,t)}}static setErrorLevel(A){C.setGlobalLevel(A)}static get version(){return"0.1.6-beta.4"}constructor(){throw new Error("Textmode is a static class and cannot be instantiated.")}}const RA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),MA=U.create,UA=U.setErrorLevel,GA=U.version;f.TextmodeCanvas=Z,f.TextmodeConversionPipeline=q,f.TextmodeErrorLevel=F,f.TextmodeFont=K,f.TextmodeGrid=j,f.Textmodifier=M,f.converters=DA,f.create=MA,f.default=U,f.export=RA,f.setErrorLevel=UA,f.textmode=U,f.version=GA,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
26
|
+
`;return s.join(Q)}}class dA extends L{GQ(e,B){const s=this.FQ(B);this.UB(e,s,"text/plain;charset=utf-8")}FQ(e){let B=this.RB(e);return B===".txt"||B.length<=4?this.$B():B}}class eA{constructor(){g(this,"fQ");g(this,"dQ");g(this,"mQ");this.fQ=new IA,this.dQ=new wA,this.mQ=new dA}pQ(e){return{yQ:e.yQ??!1,MQ:e.MQ??"lf",YQ:e.YQ??" "}}TQ(e,B={}){const s=this.pQ(B),Q=this.fQ._B(e.bQ),i=this.fQ.xQ(Q,e.grid,e.font,s.YQ);return this.dQ._Q(i,s)}GQ(e,B={}){const s=this.TQ(e,B),Q=B.filename||this.mQ.$B();this.mQ.GQ(s,Q)}}class fA extends V{SQ(e,B=1,s="transparent"){const Q=e.canvas;if(B===1&&s==="transparent")return Q;const i=document.createElement("canvas"),E=i.getContext("2d"),r=Math.round(Q.width*B),n=Math.round(Q.height*B);return i.width=r,i.height=n,s!=="transparent"&&(E.fillStyle=s,E.fillRect(0,0,r,n)),E.imageSmoothingEnabled=!1,E.drawImage(Q,0,0,Q.width,Q.height,0,0,r,n),i}}class mA{OQ(e,B){const s=this.UQ(B.format);return B.format==="png"?e.toDataURL(s):e.toDataURL(s,B.kQ)}async VQ(e,B){return new Promise((s,Q)=>{const i=this.UQ(B.format),E=r=>{r?s(r):Q(Error(`Failed to generate ${B.format.toUpperCase()} blob`))};B.format==="png"?e.toBlob(E,i):e.toBlob(E,i,B.kQ)})}UQ(e){switch(e){case"png":return"image/png";case"jpg":return"image/jpeg";case"webp":return"image/webp";default:throw Error("Unsupported image format: "+e)}}}const BA={HQ:"image/png",RQ:"image/jpeg",$Q:"image/webp"},z={HQ:".png",RQ:".jpg",$Q:".webp"};class pA extends L{zQ(e,B,s){this.JQ(e,this.RB(B)+z[s])}JQ(e,B){const s=URL.createObjectURL(e);try{const Q=document.createElement("a");Q.href=s,Q.download=B,Q.style.display="none",Q.rel="noopener",document.body.appendChild(Q),Q.click(),document.body.removeChild(Q)}finally{URL.revokeObjectURL(s)}}LQ(e){return e in BA&&e in z}UQ(e){return BA[e]}KQ(e){return z[e]}}class vA{constructor(){g(this,"fQ");g(this,"dQ");g(this,"mQ");this.fQ=new fA,this.dQ=new mA,this.mQ=new pA}pQ(e){return{format:e.format??"png",kQ:e.kQ??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent"}}WQ(e){if(console.log("Validating image export options:",e),!this.mQ.LQ(e.format))throw Error(`Saving '${e.format}' files is not supported`);if(e.kQ<0||e.kQ>1)throw Error("Image quality must be between 0.0 and 1.0");if(e.scale<=0)throw Error("Scale factor must be greater than 0");e.scale>10&&console.warn("Large scale factors may result in very large files and slow performance"),e.format==="jpg"&&e.backgroundColor==="transparent"&&(e.backgroundColor="black")}jQ(e,B={}){const s=this.pQ(B);if(this.WQ(s),s.scale===1&&s.backgroundColor==="transparent")return this.dQ.OQ(e.canvas,s);const Q=this.fQ.SQ(e,s.scale,s.backgroundColor);return this.dQ.OQ(Q,s)}async VQ(e,B={}){const s=this.pQ(B);if(this.WQ(s),s.scale===1&&s.backgroundColor==="transparent")return await this.dQ.VQ(e.canvas,s);const Q=this.fQ.SQ(e,s.scale,s.backgroundColor);return await this.dQ.VQ(Q,s)}async zQ(e,B={}){const s=await this.VQ(e,B),Q=B.format??"png",i=B.filename||this.mQ.$B();this.mQ.zQ(s,i,Q)}}const xA=o=>class extends o{toString(e={}){return new eA().TQ(this,e)}ZQ(e={}){new eA().GQ(this,e)}BQ(e={}){return new tA().vQ(this,e)}wQ(e={}){new tA().wQ(this,e)}async NQ(e,B="png",s={}){await new vA().zQ(this.XQ,{...s,filename:e,format:B})}},bA=o=>class extends o{async ee(e){return this.Vt.ee(e).then(()=>{const B=this.Vt.re;this.qQ.ue(B.width,B.height),this.As.resize()})}fontSize(e){if(!d.validate(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",Ut:e})||this.Vt.fontSize===e)return;this.Vt.te(e);const B=this.Vt.re;this.qQ.ue(B.width,B.height),this.As.resize(),this.wt.UA()}},_A=o=>class extends o{ts(e){return this.As.add(e)}es(e){this.As.remove(e)}};class yA{constructor(){g(this,"wt");g(this,"Vt");g(this,"As");g(this,"XQ");g(this,"qQ")}}class H extends function(B,...s){return s.reduce((Q,i)=>i(Q),B)}(yA,lA,xA,bA,_A){constructor(B=null,s={}){super();g(this,"me");g(this,"Bs");g(this,"ve");g(this,"Qs");g(this,"ss");g(this,"Es",null);g(this,"rs",0);g(this,"gs");g(this,"ns",!0);g(this,"hs",0);g(this,"Ds",0);g(this,"ls",0);g(this,"Cs",[]);g(this,"cs",10);g(this,"us",!1);g(this,"Ps",!1);g(this,"Is",()=>{});g(this,"ws",()=>{});g(this,"fs");g(this,"ds",!1);this.me=B,this.Ps=B===null,this.Qs=s.ps??"auto",this.ss=s.vs??60,this.gs=1e3/this.ss}static async create(B=null,s={}){const Q=new this(B,s),i=Q.Ps?s:void 0;let E,r;Q.XQ=new q(Q.me,Q.Ps,i),Q.wt=new EA(Q.XQ.Me()),Q.Ps?(E=s.width||800,r=s.height||600):(E=Q.XQ.width||800,r=Q.XQ.height||600),Q.Bs=Q.wt.createFramebuffer(E,r),Q.Vt=new K(Q.wt,s.fontSize??16),await Q.Vt.initialize(s.bs);const n=Q.Vt.re;return Q.qQ=new Z(Q.XQ.canvas,n.width,n.height),Q.As=new AA(Q.wt,Q.Vt,Q.qQ),Q.xs(),Q._s(),Q}xs(){this.fs=()=>{this.Ps?this.ws():this.resize()},window.addEventListener("resize",this.fs),window.ResizeObserver&&this.me&&!this.Ps&&(this.ve=new ResizeObserver(()=>{this.resize()}),this.ve.observe(this.me))}vB(){if(this.ys(),this.ls++,this.us)console.warn("Cannot render: Required resources have been disposed");else if(this.Ps?(this.Bs.O(),this.Is(),this.Bs.end()):this.Bs.update(this.me),this.As.xB()?(this.As.vB(this.Bs),this.wt.background(0),this.wt.image(this.As.texture,this.qQ.offsetX,this.qQ.offsetY,this.As.texture.width,this.As.texture.height)):(this.wt.clear(),this.wt.image(this.Bs,this.qQ.offsetX,this.qQ.offsetY,this.Bs.width,this.Bs.height)),this.ds){let B=0;this.wt.image(this.As.$e,B,0,this.As.$e.width,this.As.$e.height),B+=this.As.$e.width,this.wt.image(this.As.ze,B,0,this.As.ze.width,this.As.ze.height),B+=this.As.ze.width,this.wt.image(this.As.Je,B,0,this.As.Je.width,this.As.Je.height),B+=this.As.Je.width,this.wt.image(this.As.Ke,B,0,this.As.Ke.width,this.As.Ke.height),B+=this.As.Ke.width,this.wt.image(this.As.Le,B,0,this.As.Le.width,this.As.Le.height)}}resize(){this.XQ.resize(),this.Bs.resize(this.XQ.width,this.XQ.height),this.qQ.resize(),this.As.resize(),this.wt.UA(),this.Qs!=="manual"&&this.vB()}_s(){if(this.Qs!=="auto"||!this.ns)return;this.rs=performance.now();const B=s=>{if(!this.ns)return void(this.Es=null);const Q=s-this.rs;Q>=this.gs&&(this.vB(),this.rs=s-Q%this.gs),this.ns&&(this.Es=requestAnimationFrame(B))};this.Es=requestAnimationFrame(B)}ys(){const B=performance.now();if(this.Ds>0){const s=B-this.Ds;this.Cs.push(s),this.Cs.length>this.cs&&this.Cs.shift();const Q=this.Cs.reduce((i,E)=>i+E,0)/this.Cs.length;this.hs=1e3/Q}this.Ds=B}Ms(){this.Es&&(cancelAnimationFrame(this.Es),this.Es=null)}ps(B){this.Qs!==B&&(this.Ms(),this.Qs=B,B==="auto"&&this.ns&&this._s())}vs(B){if(B===void 0)return this.hs;this.ss=B,this.gs=1e3/B,this.Qs==="auto"&&this.ns&&(this.Ms(),this._s())}Gs(){this.ns&&(this.ns=!1,this.Es&&(cancelAnimationFrame(this.Es),this.Es=null))}loop(){this.ns||(this.ns=!0,this.Qs==="auto"&&this._s())}Fs(B=1){if(d.validate(typeof B=="number"&&B>0&&Number.isInteger(B),"Redraw count must be a positive integer.",{method:"redraw",Ut:B}))for(let s=0;s<B;s++)this.vB()}Ys(){return this.Qs==="auto"&&this.ns}draw(B){this.Is=B}Ts(B){this.ws=B}Ss(B,s){this.XQ.resize(B,s),this.Bs.resize(this.XQ.width,this.XQ.height),this.qQ.resize(),this.As.resize(),this.wt.UA(),this.Qs!=="manual"&&this.vB()}destroy(){this.us||(this.Ms(),window.removeEventListener("resize",this.fs),this.ve&&this.ve.disconnect(),this.As.dispose(),this.Vt.dispose(),this.Bs.dispose(),this.wt.dispose(),this.us=!0)}debug(B){this.ds=B}get grid(){return this.qQ}get font(){return this.Vt}get mode(){return this.Qs}get bQ(){return this.As}get frameCount(){return this.ls}set frameCount(B){this.ls=B}get width(){return this.XQ.width}get height(){return this.XQ.height}get Os(){return this.us}}class Y{static async create(e,B={}){if(e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement)return H.create(e,B);{const s=e||{};return H.create(null,s)}}static Us(e){d.u(e)}static get version(){return"0.1.6-beta.6"}}const MA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),TA=Y.create,RA=Y.Us,SA=Y.version;I.ks=q,I.Vs=AA,I.Hs=b,I.Rs=K,I.$s=Z,I.zs=H,I.wB=DA,I.create=TA,I.Js=MA,I.Us=RA,I.Ls=Y,I.version=SA,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?t(exports):typeof define=="function"&&define.amd?define(["exports"],t):t((A=typeof globalThis<"u"?globalThis:A||self).Ls={});
|