textmode.js 0.1.9-beta.2 → 0.1.9-beta.4

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.
@@ -2019,6 +2019,9 @@ class X extends function(e, ...r) {
2019
2019
  get frameCount() {
2020
2020
  return this.Zs;
2021
2021
  }
2022
+ get renderer() {
2023
+ return this.ve;
2024
+ }
2022
2025
  set frameCount(e) {
2023
2026
  this.Zs = e;
2024
2027
  }
@@ -2052,12 +2055,13 @@ class H {
2052
2055
  x._(t);
2053
2056
  }
2054
2057
  static get version() {
2055
- return "0.1.9-beta.2";
2058
+ return "0.1.9-beta.4";
2056
2059
  }
2057
2060
  }
2058
2061
  const zt = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), Lt = H.create, Ht = H.setErrorLevel, Vt = H.version;
2059
2062
  export {
2060
2063
  mt as TextmodeCanvas,
2064
+ xt as TextmodeColorPalette,
2061
2065
  wt as TextmodeConversionPipeline,
2062
2066
  rt as TextmodeErrorLevel,
2063
2067
  pt as TextmodeFont,
@@ -4,8 +4,8 @@ var HA=Object.defineProperty;var $A=(d,P,M)=>P in d?HA(d,P,{enumerable:!0,config
4
4
  - ${i}: ${P.i(B)}`}return r+=`
5
5
 
6
6
  `,r+="↓".repeat(24)+`
7
- `,r}static i(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 e+"";if(Array.isArray(e))return e.length===0?"[]":e.length<=5?`[${e.map(s=>P.i(s)).join(", ")}]`:`[${e.slice(0,3).map(s=>P.i(s)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const s=Object.keys(e);return s.length===0?"{}":s.length<=3?`{ ${s.map(r=>`${r}: ${P.i(e[r])}`).join(", ")} }`:`{ ${s.slice(0,2).map(r=>`${r}: ${P.i(e[r])}`).join(", ")}, ... +${s.length-2} more }`}return e+""}}var M=(Q=>(Q[Q.SILENT=0]="SILENT",Q[Q.WARNING=1]="WARNING",Q[Q.ERROR=2]="ERROR",Q[Q.THROW=3]="THROW",Q))(M||{});const T=class T{constructor(){n(this,"h",{globalLevel:3})}static l(){return T.o||(T.o=new T),T.o}D(e,s){const r="%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.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(P.A(e,s)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(P.A(e,s)),console.groupEnd(),!1;default:throw new P(e,s)}}C(e,s,r){return!!e||(this.D(s,r),!1)}u(e){this.h.globalLevel=e}};n(T,"o",null);let k=T;const I=k.l(),X=new WeakMap;function O(Q,e){X.set(Q,e)}function J(Q){return X.get(Q)}class j{constructor(e,s,r=s,i={}){n(this,"P");n(this,"I");n(this,"m");n(this,"p");n(this,"_");n(this,"h");n(this,"v",null);n(this,"M",null);this.P=e,this.p=s,this._=r,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...i},this.m=this.G(),this.I=e.createFramebuffer(),this.F()}$(e){const{P:s}=this,r=s.getParameter(s.FRAMEBUFFER_BINDING);s.bindFramebuffer(s.FRAMEBUFFER,this.I);try{return e()}finally{s.bindFramebuffer(s.FRAMEBUFFER,r)}}G(){const{P:e}=this,s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);const r=this.h.filter==="linear"?e.LINEAR:e.NEAREST,i=this.h.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE;return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,i),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,i),this.Y(),s}Y(){const{P:e}=this,s=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.p,this._,0,e.RGBA,s,null)}F(){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:s}=this;s.bindTexture(s.TEXTURE_2D,this.m),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e),s.bindTexture(s.TEXTURE_2D,null)}updatePixels(e,s,r){const{P:i}=this;i.bindTexture(i.TEXTURE_2D,this.m),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,s,r,0,i.RGBA,i.UNSIGNED_BYTE,e),i.bindTexture(i.TEXTURE_2D,null)}resize(e,s){const{P:r}=this;this.p=e,this._=s,this.M=null,r.bindTexture(r.TEXTURE_2D,this.m),this.Y(),r.bindTexture(r.TEXTURE_2D,null)}begin(){const{P:e}=this;this.v={framebuffer:e.getParameter(e.FRAMEBUFFER_BINDING),viewport:e.getParameter(e.VIEWPORT)},e.bindFramebuffer(e.FRAMEBUFFER,this.I),e.viewport(0,0,this.p,this._),O(e,[0,0,this.p,this._])}end(){if(!this.v)return;const{P:e}=this;e.bindFramebuffer(e.FRAMEBUFFER,this.v.framebuffer),e.viewport(...this.v.viewport),O(e,this.v.viewport),this.v=null}loadPixels(){const{P:e}=this;this.M||(this.M=new Uint8Array(this.p*this._*4)),this.$(()=>{e.readPixels(0,0,this.p,this._,e.RGBA,e.UNSIGNED_BYTE,this.M)})}get(e,s,r,i){const{P:B}=this;if(e===void 0&&s===void 0){const E=new Uint8Array(this.p*this._*4);return this.$(()=>(B.readPixels(0,0,this.p,this._,B.RGBA,B.UNSIGNED_BYTE,E),E))}if(r===void 0&&i===void 0){(e<0||s<0||e>=this.p||s>=this._)&&(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)),s=Math.max(0,Math.min(s,this._-1)));const E=new Uint8Array(4);return this.$(()=>(B.readPixels(e,s,1,1,B.RGBA,B.UNSIGNED_BYTE,E),[E[0],E[1],E[2],E[3]]))}{e=Math.max(0,Math.min(e,this.p-1)),s=Math.max(0,Math.min(s,this._-1)),r=Math.max(1,Math.min(r,this.p-e)),i=Math.max(1,Math.min(i,this._-s));const E=new Uint8Array(r*i*4);return this.$(()=>(B.readPixels(e,s,r,i,B.RGBA,B.UNSIGNED_BYTE,E),E))}}S(){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._}get pixels(){return this.M}}class v{constructor(e,s,r){n(this,"P");n(this,"O");n(this,"U",new Map);n(this,"k",new Map);n(this,"V",0);n(this,"R");this.P=e,this.O=this.H(s,r),this.R=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.L()}L(){const e=this.P.getProgramParameter(this.O,this.P.ACTIVE_UNIFORMS);for(let s=0;s<e;s++){const r=this.P.getActiveUniform(this.O,s);if(r){const i=this.P.getUniformLocation(this.O,r.name);i&&(this.U.set(r.name,i),this.k.set(r.name,r.type))}}}H(e,s){const r=this.J(this.P.VERTEX_SHADER,e),i=this.J(this.P.FRAGMENT_SHADER,s),B=this.P.createProgram();if(this.P.attachShader(B,r),this.P.attachShader(B,i),this.P.linkProgram(B),!this.P.getProgramParameter(B,this.P.LINK_STATUS)){const E=this.P.getProgramInfoLog(B);throw Error("Shader program link error: "+E)}return this.P.deleteShader(r),this.P.deleteShader(i),B}J(e,s){const r=this.P.createShader(e);if(this.P.shaderSource(r,s),this.P.compileShader(r),!this.P.getShaderParameter(r,this.P.COMPILE_STATUS)){const i=this.P.getShaderInfoLog(r);throw this.P.deleteShader(r),Error("Shader compilation error: "+i)}return r}j(){this.P.useProgram(this.O),this.K()}setUniform(e,s){const r=this.U.get(e);if(r)if(typeof s=="number")this.W(e)?this.P.uniform1i(r,Math.floor(s)):this.P.uniform1f(r,s);else if(typeof s=="boolean")this.P.uniform1i(r,s?1:0);else if(Array.isArray(s))switch(s.length){case 2:this.P.uniform2f(r,s[0],s[1]);break;case 3:this.P.uniform3f(r,s[0],s[1],s[2]);break;case 4:this.P.uniform4f(r,s[0],s[1],s[2],s[3]);break;default:console.warn(`Unsupported array length ${s.length} for uniform '${e}'`)}else if(s instanceof WebGLTexture){const i=this.N();this.P.uniform1i(r,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,s)}else if(s instanceof j){const i=this.N();this.P.uniform1i(r,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,s.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof s)}N(){return this.V>=this.R&&console.warn(`Exceeded maximum texture units (${this.R}). Texture may not render correctly.`),this.V++}W(e){const s=this.k.get(e);return!!s&&(s===this.P.INT||s===this.P.INT_VEC2||s===this.P.INT_VEC3||s===this.P.INT_VEC4||s===this.P.SAMPLER_2D||s===this.P.SAMPLER_CUBE)}get glProgram(){return this.O}S(){this.P.deleteProgram(this.O)}K(){this.V=0}}class K{constructor(e){n(this,"P");n(this,"Z",null);n(this,"X",16);n(this,"q",new Map);this.P=e}AA(){if(this.Z)return;const e=this.P;this.Z=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.Z)}tA(){const e=this.P,s=e.getParameter(e.CURRENT_PROGRAM);let r=this.q.get(s);return r||(r={a_position:e.getAttribLocation(s,"a_position"),a_texCoord:e.getAttribLocation(s,"a_texCoord")},this.q.set(s,r)),e.enableVertexAttribArray(r.a_position),e.vertexAttribPointer(r.a_position,2,e.FLOAT,!1,this.X,0),e.enableVertexAttribArray(r.a_texCoord),e.vertexAttribPointer(r.a_texCoord,2,e.FLOAT,!1,this.X,8),{positionLoc:r.a_position,texLoc:r.a_texCoord}}eA(e,s){const r=this.P;r.disableVertexAttribArray(e),r.disableVertexAttribArray(s)}sA(e,s){const r=this.P,i=J(r)||[0,0,r.canvas.width,r.canvas.height];return{nx:e/i[2]*2-1,ny:1-s/i[3]*2}}rA(e,s,r,i){const B=this.P;this.AA(),B.bindBuffer(B.ARRAY_BUFFER,this.Z);const E=new Float32Array([e,i,0,0,r,i,1,0,e,s,0,1,e,s,0,1,r,i,1,0,r,s,1,1]);B.bufferData(B.ARRAY_BUFFER,E,B.DYNAMIC_DRAW)}S(){this.Z&&this.P.deleteBuffer(this.Z)}}class EA extends K{constructor(e){super(e)}BA(e,s,r,i){const B=this.sA(e,s),E=this.sA(e+r,s+i);this.rA(B.nx,B.ny,E.nx,E.ny);const o=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(o.positionLoc,o.texLoc)}iA(e,s,r,i,B){this.BA(e,s,r,B),this.BA(e+r-B,s,B,i),this.BA(e,s+i-B,r,B),this.BA(e,s,B,i)}}class oA extends K{constructor(e){super(e)}QA(e,s,r,i,B){const E=r-e,o=i-s,g=Math.hypot(E,o);if(g===0){const a=B/2,c=this.sA(e-a,s-a),l=this.sA(e+a,s+a);this.rA(c.nx,c.ny,l.nx,l.ny)}else{const a=-o/g,c=E/g,l=B/2,u=e+a*l,C=s+c*l,D=e-a*l,p=s-c*l,f=r+a*l,w=i+c*l,b=r-a*l,y=i-c*l,R=this.sA(u,C),_=this.sA(D,p),F=this.sA(f,w),BA=this.sA(b,y),S=this.P;this.AA(),S.bindBuffer(S.ARRAY_BUFFER,this.Z);const VA=new Float32Array([R.nx,R.ny,0,0,_.nx,_.ny,0,1,F.nx,F.ny,1,0,_.nx,_.ny,0,1,BA.nx,BA.ny,1,1,F.nx,F.ny,1,0]);S.bufferData(S.ARRAY_BUFFER,VA,S.DYNAMIC_DRAW)}const h=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(h.positionLoc,h.texLoc)}}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);}";class QA{constructor(e){n(this,"P");n(this,"EA");n(this,"gA");n(this,"oA",null);n(this,"nA");n(this,"aA");n(this,"hA",[1,1,1,1]);n(this,"lA",!0);n(this,"cA",[0,0,0,1]);n(this,"DA",1);n(this,"CA",!0);n(this,"uA",0);n(this,"PA",[]);this.P=e,this.EA=new v(this.P,W,"precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}"),this.gA=new v(this.P,W,"precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"),this.nA=new EA(this.P),this.aA=new oA(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),O(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}IA(e){this.oA!==e&&(this.oA=e,e.j())}wA(e,s,r,i){if(this.lA=!0,s===void 0&&r===void 0&&i===void 0){const B=e/255;this.hA=[B,B,B,1]}else if(r!==void 0&&i===void 0)this.hA=[e/255,s/255,r/255,1];else{if(r===void 0||i===void 0)throw Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)");this.hA=[e/255,s/255,r/255,i/255]}}fA(e,s,r,i){if(this.CA=!0,s===void 0&&r===void 0&&i===void 0){const B=e/255;this.cA=[B,B,B,1]}else if(r!==void 0&&i===void 0)this.cA=[e/255,s/255,r/255,1];else{if(r===void 0||i===void 0)throw Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)");this.cA=[e/255,s/255,r/255,i/255]}}dA(e){if(e<0)throw Error("Stroke weight must be non-negative");this.DA=e}mA(){this.CA=!1}pA(){this.lA=!1}_A(e){this.uA=e}vA(){this.PA.push({fillColor:[...this.hA],fillMode:this.lA,strokeColor:[...this.cA],strokeWeight:this.DA,strokeMode:this.CA,rotation:this.uA})}bA(){const e=this.PA.pop();e?(this.hA=e.fillColor,this.lA=e.fillMode,this.cA=e.strokeColor,this.DA=e.strokeWeight,this.CA=e.strokeMode,this.uA=e.rotation):console.warn("pop() called without matching push()")}xA(){this.oA=null,this.PA=[],this.uA=0}yA(e,s){return new v(this.P,e,s)}MA(e){return new v(this.P,W,e)}GA(e,s){this.oA.setUniform(e,s)}FA(e,s,r,i){if(this.oA!==null){const{centerX:c,centerY:l,radians:u,aspectRatio:C}=this.$A(e,s,r,i);return this.GA("u_rotation",u),this.GA("u_center",[c,l]),this.GA("u_aspectRatio",C),this.nA.BA(e,s,r,i),void(this.oA=null)}const B=this.gA;let E=0,o=0,g=0,h=1;const a=this.$A(e,s,r,i);E=a.centerX,o=a.centerY,g=a.radians,h=a.aspectRatio,this.lA&&(this.IA(B),this.GA("u_color",this.hA),this.GA("u_rotation",g),this.GA("u_center",[E,o]),this.GA("u_aspectRatio",h),this.nA.BA(e,s,r,i)),this.CA&&this.DA>0&&(this.IA(B),this.GA("u_color",this.cA),this.GA("u_rotation",g),this.GA("u_center",[E,o]),this.GA("u_aspectRatio",h),this.nA.iA(e,s,r,i,this.DA)),this.oA=null}YA(e,s,r,i){if(this.oA!==null){const D=(e+r)/2,p=(s+i)/2,f=Math.abs(r-e)||1,w=Math.abs(i-s)||1,{centerX:b,centerY:y,radians:R,aspectRatio:_}=this.$A(D-f/2,p-w/2,f,w);this.GA("u_rotation",R),this.GA("u_center",[b,y]),this.GA("u_aspectRatio",_);const F=this.DA>0?this.DA:1;return this.aA.QA(e,s,r,i,F),void(this.oA=null)}if(!this.CA||this.DA<=0)return;const B=this.gA,E=(e+r)/2,o=(s+i)/2,g=Math.abs(r-e)||1,h=Math.abs(i-s)||1,a=this.uA!==0;let c=0,l=0,u=0,C=1;if(a){const D=this.$A(E-g/2,o-h/2,g,h);c=D.centerX,l=D.centerY,u=D.radians,C=D.aspectRatio}this.IA(B),this.GA("u_color",this.cA),a&&(this.GA("u_rotation",u),this.GA("u_center",[c,l]),this.GA("u_aspectRatio",C)),this.aA.QA(e,s,r,i,this.DA)}$A(e,s,r,i){const B=J(this.P)||[0,0,this.P.canvas.width,this.P.canvas.height],E=B[2],o=B[3],g=E/o;return{centerX:(e+r/2)/E*2-1,centerY:1-(s+i/2)/o*2,radians:this.uA*Math.PI/180,aspectRatio:g}}TA(e,s,r={}){return new j(this.P,e,s,r)}SA(e,s=e,r=e,i=255){this.OA(e/255,s/255,r/255,i/255)}OA(e=0,s=0,r=0,i=0){this.P.clearColor(e,s,r,i),this.P.clear(this.P.COLOR_BUFFER_BIT)}UA(){this.P.viewport(0,0,this.P.canvas.width,this.P.canvas.height),O(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}get context(){return this.P}S(){this.EA.S(),this.gA.S(),this.nA.S(),this.aA.S()}kA(e,s,r,i,B){const E=this.P,o=i??e.width,g=B??e.height;this.IA(this.EA),this.GA("u_texture",e.texture);const h=this.$A(s,r,o,g);this.GA("u_rotation",h.radians),this.GA("u_center",[h.centerX,h.centerY]),this.GA("u_aspectRatio",h.aspectRatio),this.nA.BA(s,r,o,g),E.bindTexture(E.TEXTURE_2D,null),this.oA=null}}const m={readShort:(Q,e)=>(m.t.uint16[0]=Q[e]<<8|Q[e+1],m.t.int16[0]),readUshort:(Q,e)=>Q[e]<<8|Q[e+1],readUshorts(Q,e,s){const r=[];for(let i=0;i<s;i++)r.push(m.readUshort(Q,e+2*i));return r},readUint(Q,e){const s=m.t.uint8;return s[3]=Q[e],s[2]=Q[e+1],s[1]=Q[e+2],s[0]=Q[e+3],m.t.uint32[0]},readASCII(Q,e,s){let r="";for(let i=0;i<s;i++)r+=String.fromCharCode(Q[e+i]);return r},t:(()=>{const Q=new ArrayBuffer(8);return{uint8:new Uint8Array(Q),int16:new Int16Array(Q),uint16:new Uint16Array(Q),uint32:new Uint32Array(Q)}})()},nA={parseTab(Q,e,s){const r={tables:[],ids:{},off:e};Q=new Uint8Array(Q.buffer,e,s),e=0;const i=m,B=i.readUshort,E=B(Q,e+=2);e+=2;const o=[];for(let g=0;g<E;g++){const h=B(Q,e),a=B(Q,e+=2);e+=2;const c=i.readUint(Q,e);e+=4;const l=`p${h}e${a}`;let u=o.indexOf(c);if(u===-1){let C;u=r.tables.length,o.push(c);const D=B(Q,c);C=D===4?this.parse4(Q,c):D===12?this.parse12(Q,c):{format:D},r.tables.push(C)}r.ids[l]!=null&&console.warn("Multiple tables for one platform+encoding: "+l),r.ids[l]=u}return r},parse4(Q,e){const s=m,r=s.readUshort,i=s.readUshorts,B=e,E=r(Q,e+=2);e+=2;const o=r(Q,e+=2)>>>1,g={format:4,searchRange:r(Q,e+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};e+=2,g.entrySelector=r(Q,e),e+=2,g.rangeShift=r(Q,e),e+=2,g.endCount=i(Q,e,o),e+=2*o,e+=2,g.startCount=i(Q,e,o),e+=2*o;for(let h=0;h<o;h++)g.idDelta.push(s.readShort(Q,e)),e+=2;return g.idRangeOffset=i(Q,e,o),e+=2*o,g.glyphIdArray=i(Q,e,B+E-e>>1),g},parse12(Q,e){const s=m.readUint;s(Q,e+=4),s(Q,e+=4);const r=s(Q,e+=4);e+=4;const i=new Uint32Array(3*r);for(let B=0;B<3*r;B+=3)i[B]=s(Q,e+(B<<2)),i[B+1]=s(Q,e+(B<<2)+4),i[B+2]=s(Q,e+(B<<2)+8);return{format:12,groups:i}}},gA={parseTab(Q,e,s){const r=m;e+=18;const i=r.readUshort(Q,e);e+=2,e+=16;const B=r.readShort(Q,e);e+=2;const E=r.readShort(Q,e);e+=2;const o=r.readShort(Q,e);e+=2;const g=r.readShort(Q,e);return e+=2,e+=6,{unitsPerEm:i,xMin:B,yMin:E,xMax:o,yMax:g,indexToLocFormat:r.readShort(Q,e)}}},hA={parseTab(Q,e,s){const r=m;e+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],B={};for(let E=0;E<i.length;E++){const o=i[E],g=o==="advanceWidthMax"||o==="numberOfHMetrics"?r.readUshort:r.readShort;B[o]=g(Q,e+2*E)}return B}},aA={parseTab(Q,e,s,r){if(!r)throw Error("Font object required for hmtx parsing");const i=m,B=[],E=[],o=r.maxp.numGlyphs,g=r.hhea.numberOfHMetrics;let h=0,a=0,c=0;for(;c<g;)h=i.readUshort(Q,e+(c<<2)),a=i.readShort(Q,e+(c<<2)+2),B.push(h),E.push(a),c++;for(;c<o;)B.push(h),E.push(a),c++;return{aWidth:B,lsBearing:E}}},Z={cmap:nA,head:gA,hhea:hA,maxp:{parseTab(Q,e,s){const r=m;return r.readUint(Q,e),e+=4,{numGlyphs:r.readUshort(Q,e)}}},hmtx:aA,loca:{parseTab(Q,e,s,r){if(!r)throw Error("Font object required for loca parsing");const i=m,B=[],E=r.head.indexToLocFormat,o=r.maxp.numGlyphs+1;if(E===0)for(let g=0;g<o;g++)B.push(i.readUshort(Q,e+(g<<1))<<1);else if(E===1)for(let g=0;g<o;g++)B.push(i.readUint(Q,e+(g<<2)));return B}},glyf:{parseTab(Q,e,s,r){if(!r)throw Error("Font object required for glyf parsing");const i=[],B=r.maxp.numGlyphs;for(let E=0;E<B;E++)i.push(null);return i},VA(Q,e){const s=m,r=Q.RA,i=Q.loca;if(i[e]===i[e+1])return null;const B=x.findTable(r,"glyf",Q.HA);if(!B)return null;let E=B[0]+i[e];const o={};if(o.noc=s.readShort(r,E),E+=2,o.xMin=s.readShort(r,E),E+=2,o.yMin=s.readShort(r,E),E+=2,o.xMax=s.readShort(r,E),E+=2,o.yMax=s.readShort(r,E),E+=2,o.xMin>=o.xMax||o.yMin>=o.yMax)return null;if(o.noc>0){o.endPts=[];for(let l=0;l<o.noc;l++)o.endPts.push(s.readUshort(r,E)),E+=2;const g=s.readUshort(r,E);if(E+=2,r.length-E<g)return null;E+=g;const h=o.endPts[o.noc-1]+1;o.flags=[];for(let l=0;l<h;l++){const u=r[E];if(E++,o.flags.push(u),8&u){const C=r[E];E++;for(let D=0;D<C;D++)o.flags.push(u),l++}}o.xs=[];for(let l=0;l<h;l++){const u=o.flags[l],C=!!(16&u);2&u?(o.xs.push(C?r[E]:-r[E]),E++):C?o.xs.push(0):(o.xs.push(s.readShort(r,E)),E+=2)}o.ys=[];for(let l=0;l<h;l++){const u=o.flags[l],C=!!(32&u);4&u?(o.ys.push(C?r[E]:-r[E]),E++):C?o.ys.push(0):(o.ys.push(s.readShort(r,E)),E+=2)}let a=0,c=0;for(let l=0;l<h;l++)a+=o.xs[l],c+=o.ys[l],o.xs[l]=a,o.ys[l]=c}else o.parts=[],o.endPts=[],o.flags=[],o.xs=[],o.ys=[];return o}}},x={parse:Q=>[((e,s,r,i)=>{const B=Z,E={RA:e,zA:s,HA:r};for(const o in B){const g=o,h=x.findTable(e,g,r);if(h){const[a,c]=h;let l=i[a];l==null&&(l=B[g].parseTab(e,a,c,E),i[a]=l),E[g]=l}}return E})(new Uint8Array(Q),0,0,{})],findTable(Q,e,s){const r=m,i=r.readUshort(Q,s+4);let B=s+12;for(let E=0;E<i;E++){const o=r.readASCII(Q,B,4);r.readUint(Q,B+4);const g=r.readUint(Q,B+8),h=r.readUint(Q,B+12);if(o===e)return[g,h];B+=16}return null},T:Z,B:m};class L{constructor(){n(this,"LA",new Map);n(this,"JA",new Map)}jA(e){const s=this.KA(e);if(this.JA.has(s))return this.JA.get(s);const r=e.cmap;if(!r||!r.tables)return this.JA.set(s,null),null;const i=["p3e1","p3e10","p0e3","p0e4"];for(const E of i)if(r.ids[E]!==void 0){const o=r.tables[r.ids[E]];return this.JA.set(s,o),o}const B=r.tables[0]||null;return this.JA.set(s,B),B}WA(e,s){const r=`${this.KA(e)}_${s}`;if(this.LA.has(r))return this.LA.get(r);const i=this.jA(e);if(!i)return this.LA.set(r,0),0;let B=0;return i.format===4?B=this.NA(s,i):i.format===12&&(B=this.ZA(s,i)),this.LA.set(r,B),B}XA(e,s){const r=s.codePointAt(0);return r===void 0?0:this.WA(e,r)}qA(e,s){const r=e.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}At(e,s){const r=s/e.head.unitsPerEm,i=e.hhea.ascender*r,B=e.hhea.descender*r,E=e.hhea.lineGap*r;return{ascender:i,descender:B,lineGap:E,lineHeight:i-B+E,unitsPerEm:e.head.unitsPerEm,scale:r}}tt(){this.LA.clear(),this.JA.clear()}KA(e){return`${e.HA}_${e.RA.length}`}NA(e,s){const r=s.endCount.length;let i=-1;for(let B=0;B<r;B++)if(e<=s.endCount[B]){i=B;break}if(i===-1||e<s.startCount[i])return 0;if(s.idRangeOffset[i]===0)return e+s.idDelta[i]&65535;{const B=s.idRangeOffset[i]/2+(e-s.startCount[i])-(r-i);if(B>=0&&B<s.glyphIdArray.length){const E=s.glyphIdArray[B];return E===0?0:E+s.idDelta[i]&65535}}return 0}ZA(e,s){const r=s.groups.length/3;for(let i=0;i<r;i++){const B=s.groups[3*i],E=s.groups[3*i+1],o=s.groups[3*i+2];if(e>=B&&e<=E)return o+(e-B)}return 0}}class lA{constructor(e){n(this,"et");this.et=e}st(e){var r;const s=[];return(r=e==null?void 0:e.cmap)!=null&&r.tables?(e.cmap.tables.forEach(i=>{if(i.format===4){const B=this.rt(i);s.push(...B)}else if(i.format===12){const B=this.Bt(i);s.push(...B)}}),[...new Set(s)]):[]}it(e,s){return this.et.XA(e,s)>0}Qt(e,s){for(const r of s)if(!this.it(e,r))return!1;return!0}Et(e,s){return s.filter(r=>this.it(e,r))}gt(e){return e.filter(s=>this.ot(s))}rt(e){const s=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return s;for(let r=0;r<e.startCount.length;r++){const i=e.startCount[r],B=e.endCount[r];if(i!==65535||B!==65535){for(let E=i;E<=B;E++)if(this.nt(e,E,r)>0)try{const o=String.fromCodePoint(E);s.push(o)}catch{}}}return s}Bt(e){const s=[];if(!e.groups)return s;for(let r=0;r<e.groups.length;r+=3){const i=e.groups[r],B=e.groups[r+1],E=e.groups[r+2];for(let o=i;o<=B;o++)if(E+(o-i)>0)try{const g=String.fromCodePoint(o);s.push(g)}catch{}}return s}nt(e,s,r){if(e.idRangeOffset[r]===0)return s+e.idDelta[r]&65535;{const i=e.idRangeOffset[r]/2+(s-e.startCount[r])-(e.startCount.length-r);if(i>=0&&e.glyphIdArray&&i<e.glyphIdArray.length){const B=e.glyphIdArray[i];if(B!==0)return B+e.idDelta[r]&65535}}return 0}ot(e){const s=e.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class cA{constructor(){n(this,"ht");const e=new L;this.ht=new lA(e)}extractCharacters(e){return this.ht.st(e)}filterProblematicCharacters(e){return this.ht.gt(e)}characterExists(e,s){return this.ht.it(e,s)}allCharactersExist(e,s){return this.ht.Qt(e,s)}}class DA{constructor(e){n(this,"lt");n(this,"ct");n(this,"Dt");n(this,"Ct");this.Dt=e,this.Ct=new L,this.lt=document.createElement("canvas"),this.ct=this.lt.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,s,r,i){const B=e.length,E=Math.ceil(Math.sqrt(B)),o=Math.ceil(B/E),g=s.width*E,h=s.height*o,a=typeof i=="object"?i:null;this.ut(g,h),this.Pt(e,s,E,r,a);const c=this.Dt.TA(g,h,{filter:"nearest"});return c.update(this.lt),{framebuffer:c,columns:E,rows:o}}ut(e,s){this.lt.width=e,this.lt.height=s,this.lt.style.width=e+"px",this.lt.style.height=e+"px",this.ct.imageSmoothingEnabled=!1,this.lt.style.imageRendering="pixelated",this.ct.fillStyle="black",this.ct.fillRect(0,0,e,s),this.ct.textBaseline="top",this.ct.textAlign="left",this.ct.fillStyle="white"}Pt(e,s,r,i,B){const E=i/B.head.unitsPerEm;for(let o=0;o<e.length;o++){const g=o%r,h=Math.floor(o/r),a=e[o].character,c=this.It(B,a);if(!c)continue;const l=a.codePointAt(0)||0,u=this.Ct.WA(B,l),C=this.wt(B,u)*E,D=g*s.width,p=h*s.height,f=D+.5*s.width,w=p+.5*s.height,b=Math.round(f-.5*s.width),y=Math.round(w-.5*i),R=b+.5*(s.width-C),_=y+B.hhea.ascender*E;this.ft(c,R,_,E)}}It(e,s){const r=s.codePointAt(0)||0,i=this.Ct.WA(e,r);if(i===0)return null;if(e.glyf&&e.glyf[i]!==null)return e.glyf[i];if(x&&x.T&&x.T.glyf&&x.T.glyf.VA){const B=x.T.glyf.VA(e,i);return e.glyf&&B&&(e.glyf[i]=B),B}return null}wt(e,s){const r=e.hmtx;return r&&r.aWidth?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}ft(e,s,r,i){if(!e||!e.xs||e.noc===0)return;const{xs:B,ys:E,endPts:o,flags:g}=e;if(!(B&&E&&o&&g))return;this.ct.beginPath();let h=0;for(let a=0;a<o.length;a++){const c=o[a];if(!(c<h)){if(c>=h){const l=s+B[h]*i,u=r-E[h]*i;this.ct.moveTo(l,u);let C=h+1;for(;C<=c;)if(1&g[C]){const D=s+B[C]*i,p=r-E[C]*i;this.ct.lineTo(D,p),C++}else{const D=s+B[C]*i,p=r-E[C]*i;let f=C+1>c?h:C+1;if(1&g[f]){const w=s+B[f]*i,b=r-E[f]*i;this.ct.quadraticCurveTo(D,p,w,b),C=f+1}else{const w=(D+(s+B[f]*i))/2,b=(p+(r-E[f]*i))/2;this.ct.quadraticCurveTo(D,p,w,b),C=f}}this.ct.closePath()}h=c+1}}this.ct.fill()}}class CA{constructor(){n(this,"et");this.et=new L}calculateMaxGlyphDimensions(e,s,r){let i=0;const B=this.et.At(r,s),E=B.lineHeight;for(const o of e){const g=this.et.XA(r,o);if(g===0)continue;const h=this.et.qA(r,g)*B.scale;i=Math.max(i,h)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(e,s,r){const i=this.et.At(r,s),B=this.et.XA(r,e);return this.et.qA(r,B)*i.scale}getFontMetrics(e,s){return this.et.At(s,e)}tt(){this.et.tt()}}class uA{constructor(){n(this,"Ct");this.Ct=new L}createCharacterObjects(e,s){return e.map((r,i)=>{const B=r.codePointAt(0)||0,E=this.dt(i);let o=0;if(s.hmtx&&s.hmtx.aWidth){const g=this.Ct.WA(s,B);g>0&&s.hmtx.aWidth[g]!==void 0&&(o=s.hmtx.aWidth[g])}return{character:r,unicode:B,color:E,advanceWidth:o}})}dt(e){return[e%256,Math.floor(e/256)%256,Math.floor(e/65536)%256]}getCharacterColor(e,s){if(!I.C(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const r=s.find(i=>i.character===e);return r?r.color:[0,0,0]}getCharacterColors(e,s){return I.C(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?e.split("").map(r=>this.getCharacterColor(r,s)||[0,0,0]):[[0,0,0]]}}class q{constructor(e,s=16){n(this,"_t");n(this,"vt",[]);n(this,"bt");n(this,"xt",16);n(this,"yt",0);n(this,"Mt",0);n(this,"Gt",{width:0,height:0});n(this,"Ft");n(this,"$t","UrsaFont");n(this,"Yt");n(this,"Tt");n(this,"St");n(this,"Ot");this.xt=s,this.Yt=new cA,this.Tt=new DA(e),this.St=new CA,this.Ot=new uA}async Ut(e){let s;if(e){const r=await fetch(e);if(!r.ok)throw new P(`Failed to load font file: ${r.status} ${r.statusText}`);s=await r.arrayBuffer()}else s=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.kt(s),this._t=x.parse(s)[0],await this.Vt()}Rt(e){if(e===void 0)return this.xt;this.xt=e,this.Gt=this.St.calculateMaxGlyphDimensions(this.vt.map(r=>r.character),this.xt,this._t);const s=this.Tt.createTextureAtlas(this.vt,this.Gt,this.xt,this._t);this.bt=s.framebuffer,this.yt=s.columns,this.Mt=s.rows}async Ht(e){try{const s=await fetch(e);if(!s.ok)throw new P(`Failed to load font file: ${s.status} ${s.statusText}`);const r=await s.arrayBuffer();await this.kt(r);const i=x.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this._t=i[0],await this.Vt()}catch(s){throw new P("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async kt(e){const s=Date.now();this.$t=this.$t==="UrsaFont"?"UrsaFont":"CustomFont_"+s,this.Ft=new FontFace(this.$t,e),await this.Ft.load(),document.fonts.add(this.Ft)}async Vt(){const e=this.Yt.extractCharacters(this._t),s=this.Yt.filterProblematicCharacters(e);this.vt=this.Ot.createCharacterObjects(s,this._t),this.Gt=this.St.calculateMaxGlyphDimensions(s,this.xt,this._t);const r=this.Tt.createTextureAtlas(this.vt,this.Gt,this.xt,this._t);this.bt=r.framebuffer,this.yt=r.columns,this.Mt=r.rows}getCharacterColor(e){return this.Ot.getCharacterColor(e,this.vt)}getCharacterColors(e){return this.Ot.getCharacterColors(e,this.vt)}hasAllCharacters(e){if(typeof e!="string"||e.length===0)return!1;const s=new Set(this.vt.map(r=>r.character));for(const r of e)if(!s.has(r))return!1;return!0}S(){this.bt.S(),document.fonts.delete(this.Ft)}get fontFramebuffer(){return this.bt}get characters(){return this.vt}get textureColumns(){return this.yt}get textureRows(){return this.Mt}get maxGlyphDimensions(){return this.Gt}get fontSize(){return this.xt}get font(){return this._t}}class AA{constructor(e,s,r){n(this,"zt");n(this,"Lt");n(this,"p");n(this,"_");n(this,"Jt");n(this,"jt");n(this,"Kt",!1);n(this,"Wt");n(this,"Nt");n(this,"Zt");this.Wt=e,this.Nt=s,this.Zt=r,this.xA()}xA(){this.Kt||(this.zt=Math.floor(this.Wt.width/this.Nt),this.Lt=Math.floor(this.Wt.height/this.Zt)),this.Xt()}Xt(){this.p=this.zt*this.Nt,this._=this.Lt*this.Zt,this.Jt=Math.floor((this.Wt.width-this.p)/2),this.jt=Math.floor((this.Wt.height-this._)/2)}qt(e,s){this.Nt=e,this.Zt=s,this.xA()}Ae(e,s){this.Kt=!0,this.zt=e,this.Lt=s,this.Xt()}te(){this.Kt=!1,this.xA()}ee(){this.Kt?this.Xt():this.xA()}se(e){if(e===void 0)return this.Kt;this.Kt=e}get cellWidth(){return this.Nt}get cellHeight(){return this.Zt}get cols(){return this.zt}get rows(){return this.Lt}get width(){return this.p}get height(){return this._}get offsetX(){return this.Jt}get offsetY(){return this.jt}}class tA{constructor(e,s=!1,r={}){n(this,"Wt");n(this,"re");n(this,"Be");n(this,"ie");n(this,"onTransformChange");this.re=e,this.Be=s,this.Wt=this.Qe(r.width,r.height),s&&this.setupTransformObserver()}Qe(e,s){var i;const r=document.createElement("canvas");if(r.className="textmodeCanvas",r.style.imageRendering="pixelated",this.Be)r.width=e||800,r.height=s||600,document.body.appendChild(r);else{const B=this.re.getBoundingClientRect();let E=Math.round(B.width),o=Math.round(B.height);if(this.re instanceof HTMLVideoElement){const a=this.re;(E===0||o===0)&&a.videoWidth>0&&a.videoHeight>0&&(E=a.videoWidth,o=a.videoHeight)}r.width=E,r.height=o,r.style.position="absolute",r.style.pointerEvents="none";const g=window.getComputedStyle(this.re);let h=parseInt(g.zIndex||"0",10);isNaN(h)&&(h=0),r.style.zIndex=""+(h+1),this.Ee(r),(i=this.re.parentNode)==null||i.insertBefore(r,this.re.nextSibling)}return r}Ee(e){const s=this.re.getBoundingClientRect();let r=this.re.offsetParent;if(r&&r!==document.body){const i=r.getBoundingClientRect();e.style.top=s.top-i.top+"px",e.style.left=s.left-i.left+"px"}else e.style.top=s.top+window.scrollY+"px",e.style.left=s.left+window.scrollX+"px"}ee(e,s){if(this.Be)this.Wt.width=e??this.Wt.width,this.Wt.height=s??this.Wt.height;else{const r=this.re.getBoundingClientRect();let i=Math.round(r.width),B=Math.round(r.height);if(this.re instanceof HTMLVideoElement){const E=this.re;(i===0||B===0)&&E.videoWidth>0&&E.videoHeight>0&&(i=E.videoWidth,B=E.videoHeight)}this.Wt.width=i,this.Wt.height=B,this.Ee(this.Wt)}}ge(){const e={alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"},s=this.Wt.getContext("webgl2",e)||this.Wt.getContext("webgl",e);if(!s)throw new P("WebGL context could not be created. Ensure your browser supports WebGL.");return s}setupTransformObserver(){this.ie=new ResizeObserver(e=>{for(const s of e){const r=s.contentRect;!this.onTransformChange||Math.round(r.width)===this.Wt.width&&Math.round(r.height)===this.Wt.height||this.onTransformChange()}}),this.ie.observe(this.Wt)}S(){this.ie&&this.ie.disconnect();const e=this.Wt.getContext("webgl")||this.Wt.getContext("webgl2");if(e){const s=e.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.Wt.parentNode&&this.Wt.parentNode.removeChild(this.Wt)}get canvas(){return this.Wt}get width(){return this.Wt.width}get height(){return this.Wt.height}}class G{constructor(e,s,r,i={}){n(this,"Dt");n(this,"oe");n(this,"ne");n(this,"ae");n(this,"he");n(this,"le");n(this,"ce");n(this,"De");n(this,"h");this.Dt=e,this.oe=s,this.ne=r,this.h=i;const B=this.ne.cols,E=this.ne.rows;this.ae=this.Dt.TA(B,E),this.he=this.Dt.TA(B,E),this.le=this.Dt.TA(B,E),this.ce=this.Dt.TA(B,E),this.De=this.Dt.TA(B,E)}ee(){const e=this.ne.cols,s=this.ne.rows;this.ae.resize(e,s),this.he.resize(e,s),this.le.resize(e,s),this.ce.resize(e,s),this.De.resize(e,s)}enabled(e){I.C(typeof e=="boolean"||typeof e=="number"&&Number.isInteger(e),"Enabled must be a boolean value or an integer (0 for false, any other number for true).",{method:"enabled",providedValue:e})&&(this.h.enabled=!!e)}enable(){this.enabled(!0)}disable(){this.enabled(!1)}S(){this.ae.S(),this.he.S(),this.le.S(),this.ce.S(),this.De.S()}get characterFramebuffer(){return this.ae}get primaryColorFramebuffer(){return this.he}get secondaryColorFramebuffer(){return this.le}get rotationFramebuffer(){return this.ce}get transformFramebuffer(){return this.De}get options(){return this.h}}class PA{constructor(e,s){n(this,"I");n(this,"Dt");n(this,"Ce");this.Dt=e,this.Ce=s;const r=Math.max(this.Ce.length,1);this.I=this.Dt.TA(r,1),this.ue()}ue(){const e=this.Ce.length;this.I.width!==e&&this.I.resize(e,1);const s=new Uint8Array(1*e*4);for(let r=0;r<e;r++){const i=this.Ce[r],B=4*r;s[B]=i[0],s[B+1]=i[1],s[B+2]=i[2],s[B+3]=255}this.I.updatePixels(s,e,1)}setColors(e){this.Ce=e,this.ue()}get colors(){return this.Ce}get framebuffer(){return this.I}get texture(){return this.I.texture}}class V extends G{constructor(s,r,i,B={}){super(s,r,i,B);n(this,"Pe");this.Pe=new PA(this.Dt,this.oe.getCharacterColors(" .:-=+*%@#"))}characters(s){I.C(this.oe.hasAllCharacters(s),"One or more characters do not exist in the current font.",{method:"characters",providedValue:s})&&(this.h.characters=s,this.Pe.setColors(this.oe.getCharacterColors(s)))}characterColor(s,r,i,B=255){const E=this.Ie(s,"characterColor",r,i,B);E&&(this.h.characterColor=E)}characterColorMode(s){this.we(s,"characterColorMode")}cellColor(s,r,i,B=255){const E=this.Ie(s,"cellColor",r,i,B);E&&(this.h.cellColor=E)}cellColorMode(s){this.we(s,"cellColorMode")}invert(s){this.fe(s,"invert","Invert")}rotation(s){if(!I.C(typeof s=="number","Rotation angle must be a number.",{method:"rotation",providedValue:s}))return;(s%=360)<0&&(s+=360);const r=255*s/360,i=Math.floor(r)/255,B=Math.round(r-i);this.h.rotation=[i,B,0,1]}flipHorizontally(s){this.fe(s,"flipHorizontally","Flip horizontally")}flipVertically(s){this.fe(s,"flipVertically","Flip vertically")}Ie(s,r,i,B,E=255){let o,g,h,a;if(typeof s=="string"){const c=this.de(s);if(!c)return I.C(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:r,providedValue:s}),null;[o,g,h,a]=c}else if(o=s,g=i!==void 0?i:s,h=B!==void 0?B:s,a=E,!I.C([o,g,h,a].every(c=>c>=0&&c<=255),r.charAt(0).toUpperCase()+r.slice(1)+" color values must be between 0 and 255",{method:r,providedValues:{r:o,g,b:h,a}}))return null;return[o/255,g/255,h/255,a/255]}we(s,r){I.C(["sampled","fixed"].includes(s),"Invalid color mode. Must be 'sampled' or 'fixed'.",{method:r,providedValue:s})&&(this.h[r]=s)}fe(s,r,i){I.C(typeof s=="boolean"||typeof s=="number"&&Number.isInteger(s),i+" must be a boolean value or an integer (0 for false, any other number for true).",{method:r,providedValue:s})&&(this.h[r]=!!s)}de(s){return s=s.replace(/^#/,""),/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(s)?(s.length===3&&(s=s.split("").map(r=>r+r).join("")),[parseInt(s.slice(0,2),16),parseInt(s.slice(2,4),16),parseInt(s.slice(4,6),16),255]):null}}const U=`attribute vec2 a_position;\r
7
+ `,r}static i(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 e+"";if(Array.isArray(e))return e.length===0?"[]":e.length<=5?`[${e.map(s=>P.i(s)).join(", ")}]`:`[${e.slice(0,3).map(s=>P.i(s)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const s=Object.keys(e);return s.length===0?"{}":s.length<=3?`{ ${s.map(r=>`${r}: ${P.i(e[r])}`).join(", ")} }`:`{ ${s.slice(0,2).map(r=>`${r}: ${P.i(e[r])}`).join(", ")}, ... +${s.length-2} more }`}return e+""}}var M=(Q=>(Q[Q.SILENT=0]="SILENT",Q[Q.WARNING=1]="WARNING",Q[Q.ERROR=2]="ERROR",Q[Q.THROW=3]="THROW",Q))(M||{});const T=class T{constructor(){n(this,"h",{globalLevel:3})}static l(){return T.o||(T.o=new T),T.o}D(e,s){const r="%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.globalLevel){case 0:return!1;case 1:return console.group(r,i),console.warn(P.A(e,s)),console.groupEnd(),!1;case 2:return console.group(r,i),console.error(P.A(e,s)),console.groupEnd(),!1;default:throw new P(e,s)}}C(e,s,r){return!!e||(this.D(s,r),!1)}u(e){this.h.globalLevel=e}};n(T,"o",null);let k=T;const I=k.l(),X=new WeakMap;function O(Q,e){X.set(Q,e)}function J(Q){return X.get(Q)}class j{constructor(e,s,r=s,i={}){n(this,"P");n(this,"I");n(this,"m");n(this,"p");n(this,"_");n(this,"h");n(this,"v",null);n(this,"M",null);this.P=e,this.p=s,this._=r,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...i},this.m=this.G(),this.I=e.createFramebuffer(),this.F()}$(e){const{P:s}=this,r=s.getParameter(s.FRAMEBUFFER_BINDING);s.bindFramebuffer(s.FRAMEBUFFER,this.I);try{return e()}finally{s.bindFramebuffer(s.FRAMEBUFFER,r)}}G(){const{P:e}=this,s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);const r=this.h.filter==="linear"?e.LINEAR:e.NEAREST,i=this.h.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE;return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,i),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,i),this.Y(),s}Y(){const{P:e}=this,s=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.p,this._,0,e.RGBA,s,null)}F(){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:s}=this;s.bindTexture(s.TEXTURE_2D,this.m),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,1),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e),s.bindTexture(s.TEXTURE_2D,null)}updatePixels(e,s,r){const{P:i}=this;i.bindTexture(i.TEXTURE_2D,this.m),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,s,r,0,i.RGBA,i.UNSIGNED_BYTE,e),i.bindTexture(i.TEXTURE_2D,null)}resize(e,s){const{P:r}=this;this.p=e,this._=s,this.M=null,r.bindTexture(r.TEXTURE_2D,this.m),this.Y(),r.bindTexture(r.TEXTURE_2D,null)}begin(){const{P:e}=this;this.v={framebuffer:e.getParameter(e.FRAMEBUFFER_BINDING),viewport:e.getParameter(e.VIEWPORT)},e.bindFramebuffer(e.FRAMEBUFFER,this.I),e.viewport(0,0,this.p,this._),O(e,[0,0,this.p,this._])}end(){if(!this.v)return;const{P:e}=this;e.bindFramebuffer(e.FRAMEBUFFER,this.v.framebuffer),e.viewport(...this.v.viewport),O(e,this.v.viewport),this.v=null}loadPixels(){const{P:e}=this;this.M||(this.M=new Uint8Array(this.p*this._*4)),this.$(()=>{e.readPixels(0,0,this.p,this._,e.RGBA,e.UNSIGNED_BYTE,this.M)})}get(e,s,r,i){const{P:B}=this;if(e===void 0&&s===void 0){const E=new Uint8Array(this.p*this._*4);return this.$(()=>(B.readPixels(0,0,this.p,this._,B.RGBA,B.UNSIGNED_BYTE,E),E))}if(r===void 0&&i===void 0){(e<0||s<0||e>=this.p||s>=this._)&&(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)),s=Math.max(0,Math.min(s,this._-1)));const E=new Uint8Array(4);return this.$(()=>(B.readPixels(e,s,1,1,B.RGBA,B.UNSIGNED_BYTE,E),[E[0],E[1],E[2],E[3]]))}{e=Math.max(0,Math.min(e,this.p-1)),s=Math.max(0,Math.min(s,this._-1)),r=Math.max(1,Math.min(r,this.p-e)),i=Math.max(1,Math.min(i,this._-s));const E=new Uint8Array(r*i*4);return this.$(()=>(B.readPixels(e,s,r,i,B.RGBA,B.UNSIGNED_BYTE,E),E))}}S(){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._}get pixels(){return this.M}}class v{constructor(e,s,r){n(this,"P");n(this,"O");n(this,"U",new Map);n(this,"k",new Map);n(this,"V",0);n(this,"R");this.P=e,this.O=this.H(s,r),this.R=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.L()}L(){const e=this.P.getProgramParameter(this.O,this.P.ACTIVE_UNIFORMS);for(let s=0;s<e;s++){const r=this.P.getActiveUniform(this.O,s);if(r){const i=this.P.getUniformLocation(this.O,r.name);i&&(this.U.set(r.name,i),this.k.set(r.name,r.type))}}}H(e,s){const r=this.J(this.P.VERTEX_SHADER,e),i=this.J(this.P.FRAGMENT_SHADER,s),B=this.P.createProgram();if(this.P.attachShader(B,r),this.P.attachShader(B,i),this.P.linkProgram(B),!this.P.getProgramParameter(B,this.P.LINK_STATUS)){const E=this.P.getProgramInfoLog(B);throw Error("Shader program link error: "+E)}return this.P.deleteShader(r),this.P.deleteShader(i),B}J(e,s){const r=this.P.createShader(e);if(this.P.shaderSource(r,s),this.P.compileShader(r),!this.P.getShaderParameter(r,this.P.COMPILE_STATUS)){const i=this.P.getShaderInfoLog(r);throw this.P.deleteShader(r),Error("Shader compilation error: "+i)}return r}j(){this.P.useProgram(this.O),this.K()}setUniform(e,s){const r=this.U.get(e);if(r)if(typeof s=="number")this.W(e)?this.P.uniform1i(r,Math.floor(s)):this.P.uniform1f(r,s);else if(typeof s=="boolean")this.P.uniform1i(r,s?1:0);else if(Array.isArray(s))switch(s.length){case 2:this.P.uniform2f(r,s[0],s[1]);break;case 3:this.P.uniform3f(r,s[0],s[1],s[2]);break;case 4:this.P.uniform4f(r,s[0],s[1],s[2],s[3]);break;default:console.warn(`Unsupported array length ${s.length} for uniform '${e}'`)}else if(s instanceof WebGLTexture){const i=this.N();this.P.uniform1i(r,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,s)}else if(s instanceof j){const i=this.N();this.P.uniform1i(r,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,s.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof s)}N(){return this.V>=this.R&&console.warn(`Exceeded maximum texture units (${this.R}). Texture may not render correctly.`),this.V++}W(e){const s=this.k.get(e);return!!s&&(s===this.P.INT||s===this.P.INT_VEC2||s===this.P.INT_VEC3||s===this.P.INT_VEC4||s===this.P.SAMPLER_2D||s===this.P.SAMPLER_CUBE)}get glProgram(){return this.O}S(){this.P.deleteProgram(this.O)}K(){this.V=0}}class K{constructor(e){n(this,"P");n(this,"Z",null);n(this,"X",16);n(this,"q",new Map);this.P=e}AA(){if(this.Z)return;const e=this.P;this.Z=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.Z)}tA(){const e=this.P,s=e.getParameter(e.CURRENT_PROGRAM);let r=this.q.get(s);return r||(r={a_position:e.getAttribLocation(s,"a_position"),a_texCoord:e.getAttribLocation(s,"a_texCoord")},this.q.set(s,r)),e.enableVertexAttribArray(r.a_position),e.vertexAttribPointer(r.a_position,2,e.FLOAT,!1,this.X,0),e.enableVertexAttribArray(r.a_texCoord),e.vertexAttribPointer(r.a_texCoord,2,e.FLOAT,!1,this.X,8),{positionLoc:r.a_position,texLoc:r.a_texCoord}}eA(e,s){const r=this.P;r.disableVertexAttribArray(e),r.disableVertexAttribArray(s)}sA(e,s){const r=this.P,i=J(r)||[0,0,r.canvas.width,r.canvas.height];return{nx:e/i[2]*2-1,ny:1-s/i[3]*2}}rA(e,s,r,i){const B=this.P;this.AA(),B.bindBuffer(B.ARRAY_BUFFER,this.Z);const E=new Float32Array([e,i,0,0,r,i,1,0,e,s,0,1,e,s,0,1,r,i,1,0,r,s,1,1]);B.bufferData(B.ARRAY_BUFFER,E,B.DYNAMIC_DRAW)}S(){this.Z&&this.P.deleteBuffer(this.Z)}}class oA extends K{constructor(e){super(e)}BA(e,s,r,i){const B=this.sA(e,s),E=this.sA(e+r,s+i);this.rA(B.nx,B.ny,E.nx,E.ny);const o=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(o.positionLoc,o.texLoc)}iA(e,s,r,i,B){this.BA(e,s,r,B),this.BA(e+r-B,s,B,i),this.BA(e,s+i-B,r,B),this.BA(e,s,B,i)}}class QA extends K{constructor(e){super(e)}QA(e,s,r,i,B){const E=r-e,o=i-s,g=Math.hypot(E,o);if(g===0){const a=B/2,c=this.sA(e-a,s-a),l=this.sA(e+a,s+a);this.rA(c.nx,c.ny,l.nx,l.ny)}else{const a=-o/g,c=E/g,l=B/2,u=e+a*l,C=s+c*l,D=e-a*l,p=s-c*l,f=r+a*l,w=i+c*l,b=r-a*l,y=i-c*l,R=this.sA(u,C),_=this.sA(D,p),F=this.sA(f,w),EA=this.sA(b,y),S=this.P;this.AA(),S.bindBuffer(S.ARRAY_BUFFER,this.Z);const VA=new Float32Array([R.nx,R.ny,0,0,_.nx,_.ny,0,1,F.nx,F.ny,1,0,_.nx,_.ny,0,1,EA.nx,EA.ny,1,1,F.nx,F.ny,1,0]);S.bufferData(S.ARRAY_BUFFER,VA,S.DYNAMIC_DRAW)}const h=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(h.positionLoc,h.texLoc)}}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);}";class nA{constructor(e){n(this,"P");n(this,"EA");n(this,"gA");n(this,"oA",null);n(this,"nA");n(this,"aA");n(this,"hA",[1,1,1,1]);n(this,"lA",!0);n(this,"cA",[0,0,0,1]);n(this,"DA",1);n(this,"CA",!0);n(this,"uA",0);n(this,"PA",[]);this.P=e,this.EA=new v(this.P,W,"precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}"),this.gA=new v(this.P,W,"precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"),this.nA=new oA(this.P),this.aA=new QA(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),O(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}IA(e){this.oA!==e&&(this.oA=e,e.j())}wA(e,s,r,i){if(this.lA=!0,s===void 0&&r===void 0&&i===void 0){const B=e/255;this.hA=[B,B,B,1]}else if(r!==void 0&&i===void 0)this.hA=[e/255,s/255,r/255,1];else{if(r===void 0||i===void 0)throw Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)");this.hA=[e/255,s/255,r/255,i/255]}}fA(e,s,r,i){if(this.CA=!0,s===void 0&&r===void 0&&i===void 0){const B=e/255;this.cA=[B,B,B,1]}else if(r!==void 0&&i===void 0)this.cA=[e/255,s/255,r/255,1];else{if(r===void 0||i===void 0)throw Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)");this.cA=[e/255,s/255,r/255,i/255]}}dA(e){if(e<0)throw Error("Stroke weight must be non-negative");this.DA=e}mA(){this.CA=!1}pA(){this.lA=!1}_A(e){this.uA=e}vA(){this.PA.push({fillColor:[...this.hA],fillMode:this.lA,strokeColor:[...this.cA],strokeWeight:this.DA,strokeMode:this.CA,rotation:this.uA})}bA(){const e=this.PA.pop();e?(this.hA=e.fillColor,this.lA=e.fillMode,this.cA=e.strokeColor,this.DA=e.strokeWeight,this.CA=e.strokeMode,this.uA=e.rotation):console.warn("pop() called without matching push()")}xA(){this.oA=null,this.PA=[],this.uA=0}yA(e,s){return new v(this.P,e,s)}MA(e){return new v(this.P,W,e)}GA(e,s){this.oA.setUniform(e,s)}FA(e,s,r,i){if(this.oA!==null){const{centerX:c,centerY:l,radians:u,aspectRatio:C}=this.$A(e,s,r,i);return this.GA("u_rotation",u),this.GA("u_center",[c,l]),this.GA("u_aspectRatio",C),this.nA.BA(e,s,r,i),void(this.oA=null)}const B=this.gA;let E=0,o=0,g=0,h=1;const a=this.$A(e,s,r,i);E=a.centerX,o=a.centerY,g=a.radians,h=a.aspectRatio,this.lA&&(this.IA(B),this.GA("u_color",this.hA),this.GA("u_rotation",g),this.GA("u_center",[E,o]),this.GA("u_aspectRatio",h),this.nA.BA(e,s,r,i)),this.CA&&this.DA>0&&(this.IA(B),this.GA("u_color",this.cA),this.GA("u_rotation",g),this.GA("u_center",[E,o]),this.GA("u_aspectRatio",h),this.nA.iA(e,s,r,i,this.DA)),this.oA=null}YA(e,s,r,i){if(this.oA!==null){const D=(e+r)/2,p=(s+i)/2,f=Math.abs(r-e)||1,w=Math.abs(i-s)||1,{centerX:b,centerY:y,radians:R,aspectRatio:_}=this.$A(D-f/2,p-w/2,f,w);this.GA("u_rotation",R),this.GA("u_center",[b,y]),this.GA("u_aspectRatio",_);const F=this.DA>0?this.DA:1;return this.aA.QA(e,s,r,i,F),void(this.oA=null)}if(!this.CA||this.DA<=0)return;const B=this.gA,E=(e+r)/2,o=(s+i)/2,g=Math.abs(r-e)||1,h=Math.abs(i-s)||1,a=this.uA!==0;let c=0,l=0,u=0,C=1;if(a){const D=this.$A(E-g/2,o-h/2,g,h);c=D.centerX,l=D.centerY,u=D.radians,C=D.aspectRatio}this.IA(B),this.GA("u_color",this.cA),a&&(this.GA("u_rotation",u),this.GA("u_center",[c,l]),this.GA("u_aspectRatio",C)),this.aA.QA(e,s,r,i,this.DA)}$A(e,s,r,i){const B=J(this.P)||[0,0,this.P.canvas.width,this.P.canvas.height],E=B[2],o=B[3],g=E/o;return{centerX:(e+r/2)/E*2-1,centerY:1-(s+i/2)/o*2,radians:this.uA*Math.PI/180,aspectRatio:g}}TA(e,s,r={}){return new j(this.P,e,s,r)}SA(e,s=e,r=e,i=255){this.OA(e/255,s/255,r/255,i/255)}OA(e=0,s=0,r=0,i=0){this.P.clearColor(e,s,r,i),this.P.clear(this.P.COLOR_BUFFER_BIT)}UA(){this.P.viewport(0,0,this.P.canvas.width,this.P.canvas.height),O(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}get context(){return this.P}S(){this.EA.S(),this.gA.S(),this.nA.S(),this.aA.S()}kA(e,s,r,i,B){const E=this.P,o=i??e.width,g=B??e.height;this.IA(this.EA),this.GA("u_texture",e.texture);const h=this.$A(s,r,o,g);this.GA("u_rotation",h.radians),this.GA("u_center",[h.centerX,h.centerY]),this.GA("u_aspectRatio",h.aspectRatio),this.nA.BA(s,r,o,g),E.bindTexture(E.TEXTURE_2D,null),this.oA=null}}const m={readShort:(Q,e)=>(m.t.uint16[0]=Q[e]<<8|Q[e+1],m.t.int16[0]),readUshort:(Q,e)=>Q[e]<<8|Q[e+1],readUshorts(Q,e,s){const r=[];for(let i=0;i<s;i++)r.push(m.readUshort(Q,e+2*i));return r},readUint(Q,e){const s=m.t.uint8;return s[3]=Q[e],s[2]=Q[e+1],s[1]=Q[e+2],s[0]=Q[e+3],m.t.uint32[0]},readASCII(Q,e,s){let r="";for(let i=0;i<s;i++)r+=String.fromCharCode(Q[e+i]);return r},t:(()=>{const Q=new ArrayBuffer(8);return{uint8:new Uint8Array(Q),int16:new Int16Array(Q),uint16:new Uint16Array(Q),uint32:new Uint32Array(Q)}})()},gA={parseTab(Q,e,s){const r={tables:[],ids:{},off:e};Q=new Uint8Array(Q.buffer,e,s),e=0;const i=m,B=i.readUshort,E=B(Q,e+=2);e+=2;const o=[];for(let g=0;g<E;g++){const h=B(Q,e),a=B(Q,e+=2);e+=2;const c=i.readUint(Q,e);e+=4;const l=`p${h}e${a}`;let u=o.indexOf(c);if(u===-1){let C;u=r.tables.length,o.push(c);const D=B(Q,c);C=D===4?this.parse4(Q,c):D===12?this.parse12(Q,c):{format:D},r.tables.push(C)}r.ids[l]!=null&&console.warn("Multiple tables for one platform+encoding: "+l),r.ids[l]=u}return r},parse4(Q,e){const s=m,r=s.readUshort,i=s.readUshorts,B=e,E=r(Q,e+=2);e+=2;const o=r(Q,e+=2)>>>1,g={format:4,searchRange:r(Q,e+=2),entrySelector:0,rangeShift:0,endCount:[],startCount:[],idDelta:[],idRangeOffset:[],glyphIdArray:[]};e+=2,g.entrySelector=r(Q,e),e+=2,g.rangeShift=r(Q,e),e+=2,g.endCount=i(Q,e,o),e+=2*o,e+=2,g.startCount=i(Q,e,o),e+=2*o;for(let h=0;h<o;h++)g.idDelta.push(s.readShort(Q,e)),e+=2;return g.idRangeOffset=i(Q,e,o),e+=2*o,g.glyphIdArray=i(Q,e,B+E-e>>1),g},parse12(Q,e){const s=m.readUint;s(Q,e+=4),s(Q,e+=4);const r=s(Q,e+=4);e+=4;const i=new Uint32Array(3*r);for(let B=0;B<3*r;B+=3)i[B]=s(Q,e+(B<<2)),i[B+1]=s(Q,e+(B<<2)+4),i[B+2]=s(Q,e+(B<<2)+8);return{format:12,groups:i}}},hA={parseTab(Q,e,s){const r=m;e+=18;const i=r.readUshort(Q,e);e+=2,e+=16;const B=r.readShort(Q,e);e+=2;const E=r.readShort(Q,e);e+=2;const o=r.readShort(Q,e);e+=2;const g=r.readShort(Q,e);return e+=2,e+=6,{unitsPerEm:i,xMin:B,yMin:E,xMax:o,yMax:g,indexToLocFormat:r.readShort(Q,e)}}},aA={parseTab(Q,e,s){const r=m;e+=4;const i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],B={};for(let E=0;E<i.length;E++){const o=i[E],g=o==="advanceWidthMax"||o==="numberOfHMetrics"?r.readUshort:r.readShort;B[o]=g(Q,e+2*E)}return B}},lA={parseTab(Q,e,s,r){if(!r)throw Error("Font object required for hmtx parsing");const i=m,B=[],E=[],o=r.maxp.numGlyphs,g=r.hhea.numberOfHMetrics;let h=0,a=0,c=0;for(;c<g;)h=i.readUshort(Q,e+(c<<2)),a=i.readShort(Q,e+(c<<2)+2),B.push(h),E.push(a),c++;for(;c<o;)B.push(h),E.push(a),c++;return{aWidth:B,lsBearing:E}}},Z={cmap:gA,head:hA,hhea:aA,maxp:{parseTab(Q,e,s){const r=m;return r.readUint(Q,e),e+=4,{numGlyphs:r.readUshort(Q,e)}}},hmtx:lA,loca:{parseTab(Q,e,s,r){if(!r)throw Error("Font object required for loca parsing");const i=m,B=[],E=r.head.indexToLocFormat,o=r.maxp.numGlyphs+1;if(E===0)for(let g=0;g<o;g++)B.push(i.readUshort(Q,e+(g<<1))<<1);else if(E===1)for(let g=0;g<o;g++)B.push(i.readUint(Q,e+(g<<2)));return B}},glyf:{parseTab(Q,e,s,r){if(!r)throw Error("Font object required for glyf parsing");const i=[],B=r.maxp.numGlyphs;for(let E=0;E<B;E++)i.push(null);return i},VA(Q,e){const s=m,r=Q.RA,i=Q.loca;if(i[e]===i[e+1])return null;const B=x.findTable(r,"glyf",Q.HA);if(!B)return null;let E=B[0]+i[e];const o={};if(o.noc=s.readShort(r,E),E+=2,o.xMin=s.readShort(r,E),E+=2,o.yMin=s.readShort(r,E),E+=2,o.xMax=s.readShort(r,E),E+=2,o.yMax=s.readShort(r,E),E+=2,o.xMin>=o.xMax||o.yMin>=o.yMax)return null;if(o.noc>0){o.endPts=[];for(let l=0;l<o.noc;l++)o.endPts.push(s.readUshort(r,E)),E+=2;const g=s.readUshort(r,E);if(E+=2,r.length-E<g)return null;E+=g;const h=o.endPts[o.noc-1]+1;o.flags=[];for(let l=0;l<h;l++){const u=r[E];if(E++,o.flags.push(u),8&u){const C=r[E];E++;for(let D=0;D<C;D++)o.flags.push(u),l++}}o.xs=[];for(let l=0;l<h;l++){const u=o.flags[l],C=!!(16&u);2&u?(o.xs.push(C?r[E]:-r[E]),E++):C?o.xs.push(0):(o.xs.push(s.readShort(r,E)),E+=2)}o.ys=[];for(let l=0;l<h;l++){const u=o.flags[l],C=!!(32&u);4&u?(o.ys.push(C?r[E]:-r[E]),E++):C?o.ys.push(0):(o.ys.push(s.readShort(r,E)),E+=2)}let a=0,c=0;for(let l=0;l<h;l++)a+=o.xs[l],c+=o.ys[l],o.xs[l]=a,o.ys[l]=c}else o.parts=[],o.endPts=[],o.flags=[],o.xs=[],o.ys=[];return o}}},x={parse:Q=>[((e,s,r,i)=>{const B=Z,E={RA:e,zA:s,HA:r};for(const o in B){const g=o,h=x.findTable(e,g,r);if(h){const[a,c]=h;let l=i[a];l==null&&(l=B[g].parseTab(e,a,c,E),i[a]=l),E[g]=l}}return E})(new Uint8Array(Q),0,0,{})],findTable(Q,e,s){const r=m,i=r.readUshort(Q,s+4);let B=s+12;for(let E=0;E<i;E++){const o=r.readASCII(Q,B,4);r.readUint(Q,B+4);const g=r.readUint(Q,B+8),h=r.readUint(Q,B+12);if(o===e)return[g,h];B+=16}return null},T:Z,B:m};class L{constructor(){n(this,"LA",new Map);n(this,"JA",new Map)}jA(e){const s=this.KA(e);if(this.JA.has(s))return this.JA.get(s);const r=e.cmap;if(!r||!r.tables)return this.JA.set(s,null),null;const i=["p3e1","p3e10","p0e3","p0e4"];for(const E of i)if(r.ids[E]!==void 0){const o=r.tables[r.ids[E]];return this.JA.set(s,o),o}const B=r.tables[0]||null;return this.JA.set(s,B),B}WA(e,s){const r=`${this.KA(e)}_${s}`;if(this.LA.has(r))return this.LA.get(r);const i=this.jA(e);if(!i)return this.LA.set(r,0),0;let B=0;return i.format===4?B=this.NA(s,i):i.format===12&&(B=this.ZA(s,i)),this.LA.set(r,B),B}XA(e,s){const r=s.codePointAt(0);return r===void 0?0:this.WA(e,r)}qA(e,s){const r=e.hmtx;return r&&r.aWidth&&r.aWidth.length!==0?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}At(e,s){const r=s/e.head.unitsPerEm,i=e.hhea.ascender*r,B=e.hhea.descender*r,E=e.hhea.lineGap*r;return{ascender:i,descender:B,lineGap:E,lineHeight:i-B+E,unitsPerEm:e.head.unitsPerEm,scale:r}}tt(){this.LA.clear(),this.JA.clear()}KA(e){return`${e.HA}_${e.RA.length}`}NA(e,s){const r=s.endCount.length;let i=-1;for(let B=0;B<r;B++)if(e<=s.endCount[B]){i=B;break}if(i===-1||e<s.startCount[i])return 0;if(s.idRangeOffset[i]===0)return e+s.idDelta[i]&65535;{const B=s.idRangeOffset[i]/2+(e-s.startCount[i])-(r-i);if(B>=0&&B<s.glyphIdArray.length){const E=s.glyphIdArray[B];return E===0?0:E+s.idDelta[i]&65535}}return 0}ZA(e,s){const r=s.groups.length/3;for(let i=0;i<r;i++){const B=s.groups[3*i],E=s.groups[3*i+1],o=s.groups[3*i+2];if(e>=B&&e<=E)return o+(e-B)}return 0}}class cA{constructor(e){n(this,"et");this.et=e}st(e){var r;const s=[];return(r=e==null?void 0:e.cmap)!=null&&r.tables?(e.cmap.tables.forEach(i=>{if(i.format===4){const B=this.rt(i);s.push(...B)}else if(i.format===12){const B=this.Bt(i);s.push(...B)}}),[...new Set(s)]):[]}it(e,s){return this.et.XA(e,s)>0}Qt(e,s){for(const r of s)if(!this.it(e,r))return!1;return!0}Et(e,s){return s.filter(r=>this.it(e,r))}gt(e){return e.filter(s=>this.ot(s))}rt(e){const s=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return s;for(let r=0;r<e.startCount.length;r++){const i=e.startCount[r],B=e.endCount[r];if(i!==65535||B!==65535){for(let E=i;E<=B;E++)if(this.nt(e,E,r)>0)try{const o=String.fromCodePoint(E);s.push(o)}catch{}}}return s}Bt(e){const s=[];if(!e.groups)return s;for(let r=0;r<e.groups.length;r+=3){const i=e.groups[r],B=e.groups[r+1],E=e.groups[r+2];for(let o=i;o<=B;o++)if(E+(o-i)>0)try{const g=String.fromCodePoint(o);s.push(g)}catch{}}return s}nt(e,s,r){if(e.idRangeOffset[r]===0)return s+e.idDelta[r]&65535;{const i=e.idRangeOffset[r]/2+(s-e.startCount[r])-(e.startCount.length-r);if(i>=0&&e.glyphIdArray&&i<e.glyphIdArray.length){const B=e.glyphIdArray[i];if(B!==0)return B+e.idDelta[r]&65535}}return 0}ot(e){const s=e.codePointAt(0)||0;return!(s>=0&&s<=31&&s!==9&&s!==10&&s!==13||s>=127&&s<=159)}}class DA{constructor(){n(this,"ht");const e=new L;this.ht=new cA(e)}extractCharacters(e){return this.ht.st(e)}filterProblematicCharacters(e){return this.ht.gt(e)}characterExists(e,s){return this.ht.it(e,s)}allCharactersExist(e,s){return this.ht.Qt(e,s)}}class CA{constructor(e){n(this,"lt");n(this,"ct");n(this,"Dt");n(this,"Ct");this.Dt=e,this.Ct=new L,this.lt=document.createElement("canvas"),this.ct=this.lt.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,s,r,i){const B=e.length,E=Math.ceil(Math.sqrt(B)),o=Math.ceil(B/E),g=s.width*E,h=s.height*o,a=typeof i=="object"?i:null;this.ut(g,h),this.Pt(e,s,E,r,a);const c=this.Dt.TA(g,h,{filter:"nearest"});return c.update(this.lt),{framebuffer:c,columns:E,rows:o}}ut(e,s){this.lt.width=e,this.lt.height=s,this.lt.style.width=e+"px",this.lt.style.height=e+"px",this.ct.imageSmoothingEnabled=!1,this.lt.style.imageRendering="pixelated",this.ct.fillStyle="black",this.ct.fillRect(0,0,e,s),this.ct.textBaseline="top",this.ct.textAlign="left",this.ct.fillStyle="white"}Pt(e,s,r,i,B){const E=i/B.head.unitsPerEm;for(let o=0;o<e.length;o++){const g=o%r,h=Math.floor(o/r),a=e[o].character,c=this.It(B,a);if(!c)continue;const l=a.codePointAt(0)||0,u=this.Ct.WA(B,l),C=this.wt(B,u)*E,D=g*s.width,p=h*s.height,f=D+.5*s.width,w=p+.5*s.height,b=Math.round(f-.5*s.width),y=Math.round(w-.5*i),R=b+.5*(s.width-C),_=y+B.hhea.ascender*E;this.ft(c,R,_,E)}}It(e,s){const r=s.codePointAt(0)||0,i=this.Ct.WA(e,r);if(i===0)return null;if(e.glyf&&e.glyf[i]!==null)return e.glyf[i];if(x&&x.T&&x.T.glyf&&x.T.glyf.VA){const B=x.T.glyf.VA(e,i);return e.glyf&&B&&(e.glyf[i]=B),B}return null}wt(e,s){const r=e.hmtx;return r&&r.aWidth?s<r.aWidth.length?r.aWidth[s]:r.aWidth[r.aWidth.length-1]:0}ft(e,s,r,i){if(!e||!e.xs||e.noc===0)return;const{xs:B,ys:E,endPts:o,flags:g}=e;if(!(B&&E&&o&&g))return;this.ct.beginPath();let h=0;for(let a=0;a<o.length;a++){const c=o[a];if(!(c<h)){if(c>=h){const l=s+B[h]*i,u=r-E[h]*i;this.ct.moveTo(l,u);let C=h+1;for(;C<=c;)if(1&g[C]){const D=s+B[C]*i,p=r-E[C]*i;this.ct.lineTo(D,p),C++}else{const D=s+B[C]*i,p=r-E[C]*i;let f=C+1>c?h:C+1;if(1&g[f]){const w=s+B[f]*i,b=r-E[f]*i;this.ct.quadraticCurveTo(D,p,w,b),C=f+1}else{const w=(D+(s+B[f]*i))/2,b=(p+(r-E[f]*i))/2;this.ct.quadraticCurveTo(D,p,w,b),C=f}}this.ct.closePath()}h=c+1}}this.ct.fill()}}class uA{constructor(){n(this,"et");this.et=new L}calculateMaxGlyphDimensions(e,s,r){let i=0;const B=this.et.At(r,s),E=B.lineHeight;for(const o of e){const g=this.et.XA(r,o);if(g===0)continue;const h=this.et.qA(r,g)*B.scale;i=Math.max(i,h)}return{width:Math.ceil(i),height:Math.ceil(E)}}getCharacterAdvanceWidth(e,s,r){const i=this.et.At(r,s),B=this.et.XA(r,e);return this.et.qA(r,B)*i.scale}getFontMetrics(e,s){return this.et.At(s,e)}tt(){this.et.tt()}}class PA{constructor(){n(this,"Ct");this.Ct=new L}createCharacterObjects(e,s){return e.map((r,i)=>{const B=r.codePointAt(0)||0,E=this.dt(i);let o=0;if(s.hmtx&&s.hmtx.aWidth){const g=this.Ct.WA(s,B);g>0&&s.hmtx.aWidth[g]!==void 0&&(o=s.hmtx.aWidth[g])}return{character:r,unicode:B,color:E,advanceWidth:o}})}dt(e){return[e%256,Math.floor(e/256)%256,Math.floor(e/65536)%256]}getCharacterColor(e,s){if(!I.C(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const r=s.find(i=>i.character===e);return r?r.color:[0,0,0]}getCharacterColors(e,s){return I.C(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?e.split("").map(r=>this.getCharacterColor(r,s)||[0,0,0]):[[0,0,0]]}}class q{constructor(e,s=16){n(this,"_t");n(this,"vt",[]);n(this,"bt");n(this,"xt",16);n(this,"yt",0);n(this,"Mt",0);n(this,"Gt",{width:0,height:0});n(this,"Ft");n(this,"$t","UrsaFont");n(this,"Yt");n(this,"Tt");n(this,"St");n(this,"Ot");this.xt=s,this.Yt=new DA,this.Tt=new CA(e),this.St=new uA,this.Ot=new PA}async Ut(e){let s;if(e){const r=await fetch(e);if(!r.ok)throw new P(`Failed to load font file: ${r.status} ${r.statusText}`);s=await r.arrayBuffer()}else s=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.kt(s),this._t=x.parse(s)[0],await this.Vt()}Rt(e){if(e===void 0)return this.xt;this.xt=e,this.Gt=this.St.calculateMaxGlyphDimensions(this.vt.map(r=>r.character),this.xt,this._t);const s=this.Tt.createTextureAtlas(this.vt,this.Gt,this.xt,this._t);this.bt=s.framebuffer,this.yt=s.columns,this.Mt=s.rows}async Ht(e){try{const s=await fetch(e);if(!s.ok)throw new P(`Failed to load font file: ${s.status} ${s.statusText}`);const r=await s.arrayBuffer();await this.kt(r);const i=x.parse(r);if(!i||i.length===0)throw Error("Failed to parse font file");this._t=i[0],await this.Vt()}catch(s){throw new P("Failed to load font: "+(s instanceof Error?s.message:"Unknown error"),s)}}async kt(e){const s=Date.now();this.$t=this.$t==="UrsaFont"?"UrsaFont":"CustomFont_"+s,this.Ft=new FontFace(this.$t,e),await this.Ft.load(),document.fonts.add(this.Ft)}async Vt(){const e=this.Yt.extractCharacters(this._t),s=this.Yt.filterProblematicCharacters(e);this.vt=this.Ot.createCharacterObjects(s,this._t),this.Gt=this.St.calculateMaxGlyphDimensions(s,this.xt,this._t);const r=this.Tt.createTextureAtlas(this.vt,this.Gt,this.xt,this._t);this.bt=r.framebuffer,this.yt=r.columns,this.Mt=r.rows}getCharacterColor(e){return this.Ot.getCharacterColor(e,this.vt)}getCharacterColors(e){return this.Ot.getCharacterColors(e,this.vt)}hasAllCharacters(e){if(typeof e!="string"||e.length===0)return!1;const s=new Set(this.vt.map(r=>r.character));for(const r of e)if(!s.has(r))return!1;return!0}S(){this.bt.S(),document.fonts.delete(this.Ft)}get fontFramebuffer(){return this.bt}get characters(){return this.vt}get textureColumns(){return this.yt}get textureRows(){return this.Mt}get maxGlyphDimensions(){return this.Gt}get fontSize(){return this.xt}get font(){return this._t}}class AA{constructor(e,s,r){n(this,"zt");n(this,"Lt");n(this,"p");n(this,"_");n(this,"Jt");n(this,"jt");n(this,"Kt",!1);n(this,"Wt");n(this,"Nt");n(this,"Zt");this.Wt=e,this.Nt=s,this.Zt=r,this.xA()}xA(){this.Kt||(this.zt=Math.floor(this.Wt.width/this.Nt),this.Lt=Math.floor(this.Wt.height/this.Zt)),this.Xt()}Xt(){this.p=this.zt*this.Nt,this._=this.Lt*this.Zt,this.Jt=Math.floor((this.Wt.width-this.p)/2),this.jt=Math.floor((this.Wt.height-this._)/2)}qt(e,s){this.Nt=e,this.Zt=s,this.xA()}Ae(e,s){this.Kt=!0,this.zt=e,this.Lt=s,this.Xt()}te(){this.Kt=!1,this.xA()}ee(){this.Kt?this.Xt():this.xA()}se(e){if(e===void 0)return this.Kt;this.Kt=e}get cellWidth(){return this.Nt}get cellHeight(){return this.Zt}get cols(){return this.zt}get rows(){return this.Lt}get width(){return this.p}get height(){return this._}get offsetX(){return this.Jt}get offsetY(){return this.jt}}class tA{constructor(e,s=!1,r={}){n(this,"Wt");n(this,"re");n(this,"Be");n(this,"ie");n(this,"onTransformChange");this.re=e,this.Be=s,this.Wt=this.Qe(r.width,r.height),s&&this.setupTransformObserver()}Qe(e,s){var i;const r=document.createElement("canvas");if(r.className="textmodeCanvas",r.style.imageRendering="pixelated",this.Be)r.width=e||800,r.height=s||600,document.body.appendChild(r);else{const B=this.re.getBoundingClientRect();let E=Math.round(B.width),o=Math.round(B.height);if(this.re instanceof HTMLVideoElement){const a=this.re;(E===0||o===0)&&a.videoWidth>0&&a.videoHeight>0&&(E=a.videoWidth,o=a.videoHeight)}r.width=E,r.height=o,r.style.position="absolute",r.style.pointerEvents="none";const g=window.getComputedStyle(this.re);let h=parseInt(g.zIndex||"0",10);isNaN(h)&&(h=0),r.style.zIndex=""+(h+1),this.Ee(r),(i=this.re.parentNode)==null||i.insertBefore(r,this.re.nextSibling)}return r}Ee(e){const s=this.re.getBoundingClientRect();let r=this.re.offsetParent;if(r&&r!==document.body){const i=r.getBoundingClientRect();e.style.top=s.top-i.top+"px",e.style.left=s.left-i.left+"px"}else e.style.top=s.top+window.scrollY+"px",e.style.left=s.left+window.scrollX+"px"}ee(e,s){if(this.Be)this.Wt.width=e??this.Wt.width,this.Wt.height=s??this.Wt.height;else{const r=this.re.getBoundingClientRect();let i=Math.round(r.width),B=Math.round(r.height);if(this.re instanceof HTMLVideoElement){const E=this.re;(i===0||B===0)&&E.videoWidth>0&&E.videoHeight>0&&(i=E.videoWidth,B=E.videoHeight)}this.Wt.width=i,this.Wt.height=B,this.Ee(this.Wt)}}ge(){const e={alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"},s=this.Wt.getContext("webgl2",e)||this.Wt.getContext("webgl",e);if(!s)throw new P("WebGL context could not be created. Ensure your browser supports WebGL.");return s}setupTransformObserver(){this.ie=new ResizeObserver(e=>{for(const s of e){const r=s.contentRect;!this.onTransformChange||Math.round(r.width)===this.Wt.width&&Math.round(r.height)===this.Wt.height||this.onTransformChange()}}),this.ie.observe(this.Wt)}S(){this.ie&&this.ie.disconnect();const e=this.Wt.getContext("webgl")||this.Wt.getContext("webgl2");if(e){const s=e.getExtension("WEBGL_lose_context");s&&s.loseContext()}this.Wt.parentNode&&this.Wt.parentNode.removeChild(this.Wt)}get canvas(){return this.Wt}get width(){return this.Wt.width}get height(){return this.Wt.height}}class G{constructor(e,s,r,i={}){n(this,"Dt");n(this,"oe");n(this,"ne");n(this,"ae");n(this,"he");n(this,"le");n(this,"ce");n(this,"De");n(this,"h");this.Dt=e,this.oe=s,this.ne=r,this.h=i;const B=this.ne.cols,E=this.ne.rows;this.ae=this.Dt.TA(B,E),this.he=this.Dt.TA(B,E),this.le=this.Dt.TA(B,E),this.ce=this.Dt.TA(B,E),this.De=this.Dt.TA(B,E)}ee(){const e=this.ne.cols,s=this.ne.rows;this.ae.resize(e,s),this.he.resize(e,s),this.le.resize(e,s),this.ce.resize(e,s),this.De.resize(e,s)}enabled(e){I.C(typeof e=="boolean"||typeof e=="number"&&Number.isInteger(e),"Enabled must be a boolean value or an integer (0 for false, any other number for true).",{method:"enabled",providedValue:e})&&(this.h.enabled=!!e)}enable(){this.enabled(!0)}disable(){this.enabled(!1)}S(){this.ae.S(),this.he.S(),this.le.S(),this.ce.S(),this.De.S()}get characterFramebuffer(){return this.ae}get primaryColorFramebuffer(){return this.he}get secondaryColorFramebuffer(){return this.le}get rotationFramebuffer(){return this.ce}get transformFramebuffer(){return this.De}get options(){return this.h}}class eA{constructor(e,s){n(this,"I");n(this,"Dt");n(this,"Ce");this.Dt=e,this.Ce=s;const r=Math.max(this.Ce.length,1);this.I=this.Dt.TA(r,1),this.ue()}ue(){const e=this.Ce.length;this.I.width!==e&&this.I.resize(e,1);const s=new Uint8Array(1*e*4);for(let r=0;r<e;r++){const i=this.Ce[r],B=4*r;s[B]=i[0],s[B+1]=i[1],s[B+2]=i[2],s[B+3]=255}this.I.updatePixels(s,e,1)}setColors(e){this.Ce=e,this.ue()}get colors(){return this.Ce}get framebuffer(){return this.I}get texture(){return this.I.texture}}class V extends G{constructor(s,r,i,B={}){super(s,r,i,B);n(this,"Pe");this.Pe=new eA(this.Dt,this.oe.getCharacterColors(" .:-=+*%@#"))}characters(s){I.C(this.oe.hasAllCharacters(s),"One or more characters do not exist in the current font.",{method:"characters",providedValue:s})&&(this.h.characters=s,this.Pe.setColors(this.oe.getCharacterColors(s)))}characterColor(s,r,i,B=255){const E=this.Ie(s,"characterColor",r,i,B);E&&(this.h.characterColor=E)}characterColorMode(s){this.we(s,"characterColorMode")}cellColor(s,r,i,B=255){const E=this.Ie(s,"cellColor",r,i,B);E&&(this.h.cellColor=E)}cellColorMode(s){this.we(s,"cellColorMode")}invert(s){this.fe(s,"invert","Invert")}rotation(s){if(!I.C(typeof s=="number","Rotation angle must be a number.",{method:"rotation",providedValue:s}))return;(s%=360)<0&&(s+=360);const r=255*s/360,i=Math.floor(r)/255,B=Math.round(r-i);this.h.rotation=[i,B,0,1]}flipHorizontally(s){this.fe(s,"flipHorizontally","Flip horizontally")}flipVertically(s){this.fe(s,"flipVertically","Flip vertically")}Ie(s,r,i,B,E=255){let o,g,h,a;if(typeof s=="string"){const c=this.de(s);if(!c)return I.C(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:r,providedValue:s}),null;[o,g,h,a]=c}else if(o=s,g=i!==void 0?i:s,h=B!==void 0?B:s,a=E,!I.C([o,g,h,a].every(c=>c>=0&&c<=255),r.charAt(0).toUpperCase()+r.slice(1)+" color values must be between 0 and 255",{method:r,providedValues:{r:o,g,b:h,a}}))return null;return[o/255,g/255,h/255,a/255]}we(s,r){I.C(["sampled","fixed"].includes(s),"Invalid color mode. Must be 'sampled' or 'fixed'.",{method:r,providedValue:s})&&(this.h[r]=s)}fe(s,r,i){I.C(typeof s=="boolean"||typeof s=="number"&&Number.isInteger(s),i+" must be a boolean value or an integer (0 for false, any other number for true).",{method:r,providedValue:s})&&(this.h[r]=!!s)}de(s){return s=s.replace(/^#/,""),/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(s)?(s.length===3&&(s=s.split("").map(r=>r+r).join("")),[parseInt(s.slice(0,2),16),parseInt(s.slice(2,4),16),parseInt(s.slice(4,6),16),255]):null}}const U=`attribute vec2 a_position;\r
9
9
  attribute vec2 a_texCoord;\r
10
10
  varying vec2 v_uv;\r
11
11
  \r
@@ -43,7 +43,7 @@ void main() {\r
43
43
  \r
44
44
  gl_Position = vec4(pos, 0.0, 1.0);\r
45
45
  }\r
46
- `,dA={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 V{constructor(s,r,i){super(s,r,i,{...dA});n(this,"me");n(this,"pe");n(this,"_e");n(this,"ve");n(this,"be");n(this,"xe");this.me=new v(s.context,U,"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.pe=new v(s.context,U,"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.ve=new v(s.context,U,"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.be=new v(s.context,U,"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._e=new v(s.context,U,"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.xe=this.Dt.TA(this.ne.cols,this.ne.rows)}ye(s){const r=this.ne.cols,i=this.ne.rows;this.xe.begin(),this.Dt.OA(),this.Dt.IA(this.me),this.Dt.GA("u_sketchTexture",s),this.Dt.GA("u_gridCellDimensions",[r,i]),this.Dt.GA("u_brightnessRange",this.h.brightnessRange),this.Dt.FA(0,0,r,i),this.xe.end(),this.he.begin(),this.Dt.OA(),this.Dt.IA(this.pe),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_fillColor",this.h.characterColor),this.Dt.GA("u_useFixedColor",this.h.characterColorMode==="fixed"),this.Dt.FA(0,0,r,i),this.he.end(),this.le.begin(),this.Dt.OA(),this.Dt.IA(this.pe),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_fillColor",this.h.cellColor),this.Dt.GA("u_useFixedColor",this.h.cellColorMode==="fixed"),this.Dt.FA(0,0,r,i),this.le.end(),this.De.begin(),this.Dt.OA(),this.Dt.IA(this.ve),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_invert",this.h.invert),this.Dt.GA("u_flipHorizontally",this.h.flipHorizontally),this.Dt.GA("u_flipVertically",this.h.flipVertically),this.Dt.FA(0,0,r,i),this.De.end(),this.ce.begin(),this.Dt.OA(),this.Dt.IA(this.be),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_rotationColor",this.h.rotation),this.Dt.FA(0,0,r,i),this.ce.end(),this.ae.begin(),this.Dt.OA(),this.Dt.IA(this._e),this.Dt.GA("u_colorSampleFramebuffer",this.xe),this.Dt.GA("u_charPaletteTexture",this.Pe.texture),this.Dt.GA("u_charPaletteSize",[this.Pe.colors.length,1]),this.Dt.GA("u_brightnessRange",this.h.brightnessRange),this.Dt.FA(0,0,r,i),this.ae.end()}ee(){super.ee(),this.xe.resize(this.ne.cols,this.ne.rows)}brightnessRange(s){I.C(Array.isArray(s)&&s.length===2&&s.every(r=>typeof r=="number"&&r>=0&&r<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",providedValue:s})&&(this.h.brightnessRange=s)}}const IA=Object.freeze(Object.defineProperty({__proto__:null,TextmodeBrightnessConverter:H,TextmodeConverter:G,TextmodeFeatureConverter:V},Symbol.toStringTag,{value:"Module"}));class eA{constructor(e,s,r){n(this,"Dt");n(this,"_t");n(this,"ne");n(this,"Me");n(this,"Ge");n(this,"Fe");n(this,"$e");n(this,"Ye");n(this,"ae");n(this,"he");n(this,"le");n(this,"ce");n(this,"De");this.Dt=e,this._t=s,this.ne=r,this.Ye=this.Dt.yA(W,"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.Ge=new H(e,s,r),this.Fe=new G(e,s,r),this.Me=[this.Ge,this.Fe],this.ae=this.Dt.TA(r.cols,r.rows),this.he=this.Dt.TA(r.cols,r.rows),this.le=this.Dt.TA(r.cols,r.rows),this.ce=this.Dt.TA(r.cols,r.rows),this.De=this.Dt.TA(r.cols,r.rows),this.$e=this.Dt.TA(this.ne.width,this.ne.height)}Te(e){for(const r of this.Me)r.options.enabled&&r instanceof V&&r.ye(e);const s=(r,i)=>{r.begin(),this.Dt.OA();for(const B of this.Me)B.options.enabled&&this.Dt.kA(i(B),0,0);r.end()};s(this.ae,r=>r.characterFramebuffer),s(this.he,r=>r.primaryColorFramebuffer),s(this.le,r=>r.secondaryColorFramebuffer),s(this.ce,r=>r.rotationFramebuffer),s(this.De,r=>r.transformFramebuffer),this.$e.begin(),this.Dt.OA(),this.Dt.IA(this.Ye),this.Dt.GA("u_characterTexture",this._t.fontFramebuffer),this.Dt.GA("u_charsetDimensions",[this._t.textureColumns,this._t.textureRows]),this.Dt.GA("u_asciiCharacterTexture",this.ae.texture),this.Dt.GA("u_primaryColorTexture",this.he.texture),this.Dt.GA("u_secondaryColorTexture",this.le.texture),this.Dt.GA("u_transformTexture",this.De.texture),this.Dt.GA("u_rotationTexture",this.ce.texture),this.Dt.GA("u_captureTexture",e.texture),this.Dt.GA("u_backgroundMode",!1),this.Dt.GA("u_captureDimensions",[e.width,e.height]),this.Dt.GA("u_gridCellDimensions",[this.ne.cols,this.ne.rows]),this.Dt.GA("u_gridPixelDimensions",[this.ne.width,this.ne.height]),this.Dt.FA(0,0,this.$e.width,this.$e.height),this.$e.end()}add(e){if(!I.C(e==="brightness"||e==="custom",'Converter type must be either "brightness" or "custom".',{method:"add",providedValue:e}))return;let s;return s=e==="brightness"?new H(this.Dt,this._t,this.ne):new G(this.Dt,this._t,this.ne),this.Me.push(s),s}remove(e){if(!I.C(e instanceof G,"Parameter must be a TextmodeConverter instance.",{method:"remove",providedValue:e}))return;const s=this.Me.indexOf(e);I.C(s!==-1,"Converter instance not found in pipeline.",{method:"remove",providedValue:e,convertersCount:this.Me.length})&&this.Me.splice(s,1)}swap(e,s){const r=(o,g)=>{if(typeof o=="number")return I.C(Number.isInteger(o)&&o>=0&&o<this.Me.length,g+" index must be a valid integer within the converter array bounds.",{method:"swap",providedValue:o,convertersCount:this.Me.length})?o:null;if(o instanceof G){const h=this.Me.indexOf(o);return I.C(h!==-1,g+" converter instance not found in pipeline.",{method:"swap",providedValue:o,convertersCount:this.Me.length})?h:null}return I.C(!1,g+" parameter must be either an integer index or a TextmodeConverter instance.",{method:"swap",providedValue:o}),null},i=r(e,"First"),B=r(s,"Second");if(i===null||B===null||!I.C(i!==B,"Cannot swap a converter with itself.",{method:"swap",firstIndex:i,secondIndex:B}))return;const E=this.Me[i];this.Me[i]=this.Me[B],this.Me[B]=E}ee(){this.$e.resize(this.ne.width,this.ne.height);const e=this.ne.cols,s=this.ne.rows;this.ae.resize(e,s),this.he.resize(e,s),this.le.resize(e,s),this.ce.resize(e,s),this.De.resize(e,s);for(const r of this.Me)r.ee()}hasEnabledConverters(){return this.Me.some(e=>e.options.enabled)}disable(){for(const e of this.Me)e.disable()}enable(){for(const e of this.Me)e.enable()}S(){for(const e of this.Me)e.S();this.ae.S(),this.he.S(),this.le.S(),this.ce.S(),this.De.S(),this.$e.S(),this.Ye.S()}get texture(){return this.$e}get characterFramebuffer(){return this.ae}get primaryColorFramebuffer(){return this.he}get secondaryColorFramebuffer(){return this.le}get rotationFramebuffer(){return this.ce}get transformFramebuffer(){return this.De}get brightness(){return this.Ge}get custom(){return this.Fe}}const fA=Q=>class extends Q{fill(e,s,r,i){this.Dt.wA(e,s,r,i)}stroke(e,s,r,i){this.Dt.fA(e,s,r,i)}strokeWeight(e){this.Dt.dA(e)}noStroke(){this.Dt.mA()}noFill(){this.Dt.pA()}rotate(e){this.Dt._A(e)}push(){this.Dt.vA()}pop(){this.Dt.bA()}rect(e,s,r=1,i=1){this.Dt.FA(e,s,r,i)}line(e,s,r,i){this.Dt.YA(e,s,r,i)}background(e,s=e,r=e,i=255){this.Dt.SA(e,s,r,i)}createShader(e,s){return this.Dt.yA(e,s)}createFilterShader(e){return this.Dt.MA(e)}shader(e){this.Dt.IA(e)}setUniform(e,s){this.Dt.GA(e,s)}image(e,s,r,i,B){this.Dt.kA(e,s,r,i,B)}clear(){this.Dt.OA()}createFramebuffer(e,s,r={}){return this.Dt.TA(e,s,r)}};class ${Se(e){const s=e.characterFramebuffer,r=e.primaryColorFramebuffer,i=e.secondaryColorFramebuffer,B=e.transformFramebuffer,E=e.rotationFramebuffer;return s==null||s.loadPixels(),r==null||r.loadPixels(),i==null||i.loadPixels(),B==null||B.loadPixels(),E==null||E.loadPixels(),{characterPixels:(s==null?void 0:s.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:(B==null?void 0:B.pixels)||new Uint8Array(0),rotationPixels:(E==null?void 0:E.pixels)||new Uint8Array(0)}}Oe(e,s){return e[s]+(e[s+1]<<8)}Ue(e,s){return{r:e[s],g:e[s+1],b:e[s+2],a:e[s+3]}}}class N{ke(e,s){return new Blob([e],{type:s})}Ve(e,s,r){try{const i=this.ke(e,r),B=URL.createObjectURL(i),E=document.createElement("a");E.href=B,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(B)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}Re(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}He(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}ze(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}Le(){return"'textmode-export'-"+this.Re()}}class wA extends ${Je(e,s,r){const i=e[r]===255,B=e[r+1]===255,E=e[r+2]===255,o=s[r],g=s[r+1];return{isInverted:i,flipHorizontal:B,flipVertical:E,rotation:Math.round(360*(o+g/255)/255*100)/100}}je(e,s,r){return{x:e,y:s,cellX:e*r.cellWidth,cellY:s*r.cellHeight}}Ke(e,s){const r=[];let i=0;for(let B=0;B<s.rows;B++)for(let E=0;E<s.cols;E++){const o=4*i,g=this.Oe(e.characterPixels,o);let h=this.Ue(e.primaryColorPixels,o),a=this.Ue(e.secondaryColorPixels,o);const c=this.Je(e.transformPixels,e.rotationPixels,o);if(c.isInverted){const u=h;h=a,a=u}const l=this.je(E,B,s);r.push({charIndex:g,primaryColor:h,secondaryColor:a,transform:c,position:l}),i++}return r}}class pA{We(e,s){const r=e.cmap;for(const i of r.tables)if(i.format===4){for(let B=0;B<i.startCount.length;B++)if(s>=i.startCount[B]&&s<=i.endCount[B]){if(i.idRangeOffset[B]===0)return s+i.idDelta[B]&65535;{const E=i.idRangeOffset[B]/2+(s-i.startCount[B])-(i.startCount.length-B);if(E>=0&&E<i.glyphIdArray.length){const o=i.glyphIdArray[E];if(o!==0)return o+i.idDelta[B]&65535}}}}return 0}Ne(e,s,r,i,B){const E=B/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+s.xMin*E,y1:i+-s.yMax*E,x2:r+s.xMax*E,y2:i+-s.yMin*E}),toSVG:()=>this.Ze(s,r,i,E)}}Ze(e,s,r,i){if(!e||!e.xs)return"";const{xs:B,ys:E,endPts:o,flags:g}=e;if(!(B&&E&&o&&g))return"";let h="",a=0;for(let c=0;c<o.length;c++){const l=o[c];if(!(l<a)){if(l>=a){const u=s+B[a]*i,C=r-E[a]*i;h+=`M${u.toFixed(2)},${C.toFixed(2)}`;let D=a+1;for(;D<=l;)if(1&g[D]){const p=s+B[D]*i,f=r-E[D]*i;h+=`L${p.toFixed(2)},${f.toFixed(2)}`,D++}else{const p=s+B[D]*i,f=r-E[D]*i;let w=D+1>l?a:D+1;if(1&g[w]){const b=s+B[w]*i,y=r-E[w]*i;h+=`Q${p.toFixed(2)},${f.toFixed(2)} ${b.toFixed(2)},${y.toFixed(2)}`,D=w+1}else{const b=(p+(s+B[w]*i))/2,y=(f+(r-E[w]*i))/2;h+=`Q${p.toFixed(2)},${f.toFixed(2)} ${b.toFixed(2)},${y.toFixed(2)}`,D=w}}h+="Z"}a=l+1}}return h}Xe(e,s,r,i,B){const E=e.codePointAt(0)||0,o=this.We(s,E);let g=null;return s.glyf&&s.glyf[o]!==null?g=s.glyf[o]:x&&x.T&&x.T.glyf&&x.T.glyf.VA&&(g=x.T.glyf.VA(s,o),s.glyf&&g&&(s.glyf[o]=g)),this.Ne(s,g,r,i,B)}qe(e,s,r,i,B,E,o,g){const h=r+(B-g*(o/s.head.unitsPerEm))/2,a=i+(E+.7*o)/2;return this.Xe(e,s,h,a,o).toSVG()||null}}class mA{constructor(){n(this,"As");this.As=new pA}ts(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
46
+ `,dA={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 V{constructor(s,r,i){super(s,r,i,{...dA});n(this,"me");n(this,"pe");n(this,"_e");n(this,"ve");n(this,"be");n(this,"xe");this.me=new v(s.context,U,"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.pe=new v(s.context,U,"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.ve=new v(s.context,U,"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.be=new v(s.context,U,"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._e=new v(s.context,U,"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.xe=this.Dt.TA(this.ne.cols,this.ne.rows)}ye(s){const r=this.ne.cols,i=this.ne.rows;this.xe.begin(),this.Dt.OA(),this.Dt.IA(this.me),this.Dt.GA("u_sketchTexture",s),this.Dt.GA("u_gridCellDimensions",[r,i]),this.Dt.GA("u_brightnessRange",this.h.brightnessRange),this.Dt.FA(0,0,r,i),this.xe.end(),this.he.begin(),this.Dt.OA(),this.Dt.IA(this.pe),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_fillColor",this.h.characterColor),this.Dt.GA("u_useFixedColor",this.h.characterColorMode==="fixed"),this.Dt.FA(0,0,r,i),this.he.end(),this.le.begin(),this.Dt.OA(),this.Dt.IA(this.pe),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_fillColor",this.h.cellColor),this.Dt.GA("u_useFixedColor",this.h.cellColorMode==="fixed"),this.Dt.FA(0,0,r,i),this.le.end(),this.De.begin(),this.Dt.OA(),this.Dt.IA(this.ve),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_invert",this.h.invert),this.Dt.GA("u_flipHorizontally",this.h.flipHorizontally),this.Dt.GA("u_flipVertically",this.h.flipVertically),this.Dt.FA(0,0,r,i),this.De.end(),this.ce.begin(),this.Dt.OA(),this.Dt.IA(this.be),this.Dt.GA("u_sampleTexture",this.xe),this.Dt.GA("u_rotationColor",this.h.rotation),this.Dt.FA(0,0,r,i),this.ce.end(),this.ae.begin(),this.Dt.OA(),this.Dt.IA(this._e),this.Dt.GA("u_colorSampleFramebuffer",this.xe),this.Dt.GA("u_charPaletteTexture",this.Pe.texture),this.Dt.GA("u_charPaletteSize",[this.Pe.colors.length,1]),this.Dt.GA("u_brightnessRange",this.h.brightnessRange),this.Dt.FA(0,0,r,i),this.ae.end()}ee(){super.ee(),this.xe.resize(this.ne.cols,this.ne.rows)}brightnessRange(s){I.C(Array.isArray(s)&&s.length===2&&s.every(r=>typeof r=="number"&&r>=0&&r<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",providedValue:s})&&(this.h.brightnessRange=s)}}const IA=Object.freeze(Object.defineProperty({__proto__:null,TextmodeBrightnessConverter:H,TextmodeConverter:G,TextmodeFeatureConverter:V},Symbol.toStringTag,{value:"Module"}));class sA{constructor(e,s,r){n(this,"Dt");n(this,"_t");n(this,"ne");n(this,"Me");n(this,"Ge");n(this,"Fe");n(this,"$e");n(this,"Ye");n(this,"ae");n(this,"he");n(this,"le");n(this,"ce");n(this,"De");this.Dt=e,this._t=s,this.ne=r,this.Ye=this.Dt.yA(W,"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.Ge=new H(e,s,r),this.Fe=new G(e,s,r),this.Me=[this.Ge,this.Fe],this.ae=this.Dt.TA(r.cols,r.rows),this.he=this.Dt.TA(r.cols,r.rows),this.le=this.Dt.TA(r.cols,r.rows),this.ce=this.Dt.TA(r.cols,r.rows),this.De=this.Dt.TA(r.cols,r.rows),this.$e=this.Dt.TA(this.ne.width,this.ne.height)}Te(e){for(const r of this.Me)r.options.enabled&&r instanceof V&&r.ye(e);const s=(r,i)=>{r.begin(),this.Dt.OA();for(const B of this.Me)B.options.enabled&&this.Dt.kA(i(B),0,0);r.end()};s(this.ae,r=>r.characterFramebuffer),s(this.he,r=>r.primaryColorFramebuffer),s(this.le,r=>r.secondaryColorFramebuffer),s(this.ce,r=>r.rotationFramebuffer),s(this.De,r=>r.transformFramebuffer),this.$e.begin(),this.Dt.OA(),this.Dt.IA(this.Ye),this.Dt.GA("u_characterTexture",this._t.fontFramebuffer),this.Dt.GA("u_charsetDimensions",[this._t.textureColumns,this._t.textureRows]),this.Dt.GA("u_asciiCharacterTexture",this.ae.texture),this.Dt.GA("u_primaryColorTexture",this.he.texture),this.Dt.GA("u_secondaryColorTexture",this.le.texture),this.Dt.GA("u_transformTexture",this.De.texture),this.Dt.GA("u_rotationTexture",this.ce.texture),this.Dt.GA("u_captureTexture",e.texture),this.Dt.GA("u_backgroundMode",!1),this.Dt.GA("u_captureDimensions",[e.width,e.height]),this.Dt.GA("u_gridCellDimensions",[this.ne.cols,this.ne.rows]),this.Dt.GA("u_gridPixelDimensions",[this.ne.width,this.ne.height]),this.Dt.FA(0,0,this.$e.width,this.$e.height),this.$e.end()}add(e){if(!I.C(e==="brightness"||e==="custom",'Converter type must be either "brightness" or "custom".',{method:"add",providedValue:e}))return;let s;return s=e==="brightness"?new H(this.Dt,this._t,this.ne):new G(this.Dt,this._t,this.ne),this.Me.push(s),s}remove(e){if(!I.C(e instanceof G,"Parameter must be a TextmodeConverter instance.",{method:"remove",providedValue:e}))return;const s=this.Me.indexOf(e);I.C(s!==-1,"Converter instance not found in pipeline.",{method:"remove",providedValue:e,convertersCount:this.Me.length})&&this.Me.splice(s,1)}swap(e,s){const r=(o,g)=>{if(typeof o=="number")return I.C(Number.isInteger(o)&&o>=0&&o<this.Me.length,g+" index must be a valid integer within the converter array bounds.",{method:"swap",providedValue:o,convertersCount:this.Me.length})?o:null;if(o instanceof G){const h=this.Me.indexOf(o);return I.C(h!==-1,g+" converter instance not found in pipeline.",{method:"swap",providedValue:o,convertersCount:this.Me.length})?h:null}return I.C(!1,g+" parameter must be either an integer index or a TextmodeConverter instance.",{method:"swap",providedValue:o}),null},i=r(e,"First"),B=r(s,"Second");if(i===null||B===null||!I.C(i!==B,"Cannot swap a converter with itself.",{method:"swap",firstIndex:i,secondIndex:B}))return;const E=this.Me[i];this.Me[i]=this.Me[B],this.Me[B]=E}ee(){this.$e.resize(this.ne.width,this.ne.height);const e=this.ne.cols,s=this.ne.rows;this.ae.resize(e,s),this.he.resize(e,s),this.le.resize(e,s),this.ce.resize(e,s),this.De.resize(e,s);for(const r of this.Me)r.ee()}hasEnabledConverters(){return this.Me.some(e=>e.options.enabled)}disable(){for(const e of this.Me)e.disable()}enable(){for(const e of this.Me)e.enable()}S(){for(const e of this.Me)e.S();this.ae.S(),this.he.S(),this.le.S(),this.ce.S(),this.De.S(),this.$e.S(),this.Ye.S()}get texture(){return this.$e}get characterFramebuffer(){return this.ae}get primaryColorFramebuffer(){return this.he}get secondaryColorFramebuffer(){return this.le}get rotationFramebuffer(){return this.ce}get transformFramebuffer(){return this.De}get brightness(){return this.Ge}get custom(){return this.Fe}}const fA=Q=>class extends Q{fill(e,s,r,i){this.Dt.wA(e,s,r,i)}stroke(e,s,r,i){this.Dt.fA(e,s,r,i)}strokeWeight(e){this.Dt.dA(e)}noStroke(){this.Dt.mA()}noFill(){this.Dt.pA()}rotate(e){this.Dt._A(e)}push(){this.Dt.vA()}pop(){this.Dt.bA()}rect(e,s,r=1,i=1){this.Dt.FA(e,s,r,i)}line(e,s,r,i){this.Dt.YA(e,s,r,i)}background(e,s=e,r=e,i=255){this.Dt.SA(e,s,r,i)}createShader(e,s){return this.Dt.yA(e,s)}createFilterShader(e){return this.Dt.MA(e)}shader(e){this.Dt.IA(e)}setUniform(e,s){this.Dt.GA(e,s)}image(e,s,r,i,B){this.Dt.kA(e,s,r,i,B)}clear(){this.Dt.OA()}createFramebuffer(e,s,r={}){return this.Dt.TA(e,s,r)}};class ${Se(e){const s=e.characterFramebuffer,r=e.primaryColorFramebuffer,i=e.secondaryColorFramebuffer,B=e.transformFramebuffer,E=e.rotationFramebuffer;return s==null||s.loadPixels(),r==null||r.loadPixels(),i==null||i.loadPixels(),B==null||B.loadPixels(),E==null||E.loadPixels(),{characterPixels:(s==null?void 0:s.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:(B==null?void 0:B.pixels)||new Uint8Array(0),rotationPixels:(E==null?void 0:E.pixels)||new Uint8Array(0)}}Oe(e,s){return e[s]+(e[s+1]<<8)}Ue(e,s){return{r:e[s],g:e[s+1],b:e[s+2],a:e[s+3]}}}class N{ke(e,s){return new Blob([e],{type:s})}Ve(e,s,r){try{const i=this.ke(e,r),B=URL.createObjectURL(i),E=document.createElement("a");E.href=B,E.download=s,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(B)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}Re(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}He(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}ze(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}Le(){return"'textmode-export'-"+this.Re()}}class wA extends ${Je(e,s,r){const i=e[r]===255,B=e[r+1]===255,E=e[r+2]===255,o=s[r],g=s[r+1];return{isInverted:i,flipHorizontal:B,flipVertical:E,rotation:Math.round(360*(o+g/255)/255*100)/100}}je(e,s,r){return{x:e,y:s,cellX:e*r.cellWidth,cellY:s*r.cellHeight}}Ke(e,s){const r=[];let i=0;for(let B=0;B<s.rows;B++)for(let E=0;E<s.cols;E++){const o=4*i,g=this.Oe(e.characterPixels,o);let h=this.Ue(e.primaryColorPixels,o),a=this.Ue(e.secondaryColorPixels,o);const c=this.Je(e.transformPixels,e.rotationPixels,o);if(c.isInverted){const u=h;h=a,a=u}const l=this.je(E,B,s);r.push({charIndex:g,primaryColor:h,secondaryColor:a,transform:c,position:l}),i++}return r}}class pA{We(e,s){const r=e.cmap;for(const i of r.tables)if(i.format===4){for(let B=0;B<i.startCount.length;B++)if(s>=i.startCount[B]&&s<=i.endCount[B]){if(i.idRangeOffset[B]===0)return s+i.idDelta[B]&65535;{const E=i.idRangeOffset[B]/2+(s-i.startCount[B])-(i.startCount.length-B);if(E>=0&&E<i.glyphIdArray.length){const o=i.glyphIdArray[E];if(o!==0)return o+i.idDelta[B]&65535}}}}return 0}Ne(e,s,r,i,B){const E=B/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:r+s.xMin*E,y1:i+-s.yMax*E,x2:r+s.xMax*E,y2:i+-s.yMin*E}),toSVG:()=>this.Ze(s,r,i,E)}}Ze(e,s,r,i){if(!e||!e.xs)return"";const{xs:B,ys:E,endPts:o,flags:g}=e;if(!(B&&E&&o&&g))return"";let h="",a=0;for(let c=0;c<o.length;c++){const l=o[c];if(!(l<a)){if(l>=a){const u=s+B[a]*i,C=r-E[a]*i;h+=`M${u.toFixed(2)},${C.toFixed(2)}`;let D=a+1;for(;D<=l;)if(1&g[D]){const p=s+B[D]*i,f=r-E[D]*i;h+=`L${p.toFixed(2)},${f.toFixed(2)}`,D++}else{const p=s+B[D]*i,f=r-E[D]*i;let w=D+1>l?a:D+1;if(1&g[w]){const b=s+B[w]*i,y=r-E[w]*i;h+=`Q${p.toFixed(2)},${f.toFixed(2)} ${b.toFixed(2)},${y.toFixed(2)}`,D=w+1}else{const b=(p+(s+B[w]*i))/2,y=(f+(r-E[w]*i))/2;h+=`Q${p.toFixed(2)},${f.toFixed(2)} ${b.toFixed(2)},${y.toFixed(2)}`,D=w}}h+="Z"}a=l+1}}return h}Xe(e,s,r,i,B){const E=e.codePointAt(0)||0,o=this.We(s,E);let g=null;return s.glyf&&s.glyf[o]!==null?g=s.glyf[o]:x&&x.T&&x.T.glyf&&x.T.glyf.VA&&(g=x.T.glyf.VA(s,o),s.glyf&&g&&(s.glyf[o]=g)),this.Ne(s,g,r,i,B)}qe(e,s,r,i,B,E,o,g){const h=r+(B-g*(o/s.head.unitsPerEm))/2,a=i+(E+.7*o)/2;return this.Xe(e,s,h,a,o).toSVG()||null}}class mA{constructor(){n(this,"As");this.As=new pA}ts(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
47
47
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
48
48
  <svg width="${e.width}" height="${e.height}" viewBox="0 0 ${e.width} ${e.height}"
49
49
  xmlns="http://www.w3.org/2000/svg" version="1.1">
@@ -59,6 +59,6 @@ void main() {\r
59
59
  <g${E}>`,B+=o,B+=`
60
60
  </g>`):B+=o),B}gs(e,s,r,i){let B=this.ts(s);B+=this.ss(s,i),B+=`
61
61
  <g id="ascii-cells">`;for(const E of e)B+=this.Es(E,s,r,i);return B+=this.es(),B}ns(e){return e.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
62
- `).replace(/[ \t]+$/gm,"")}}class xA extends N{hs(e){return this.ke(e,"image/svg+xml;charset=utf-8")}ls(e,s){this.Ve(e,this.ze(s)+".svg","image/svg+xml;charset=utf-8")}cs(e,s){this.ls(e,s||this.Le())}}class sA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new wA,this.Cs=new mA,this.us=new xA}Ps(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0]}}Is(e,s={}){const r=this.Ps(s),i=this.Ds.Se(e.pipeline),B=this.Ds.Ke(i,e.grid),E=this.Cs.gs(B,e.grid,e.font,r);return this.Cs.ns(E)}cs(e,s={}){const r=this.Is(e,s),i=s.filename||this.us.Le();this.us.cs(r,i)}}class bA extends ${ws(e,s,r,i=" "){var o;const B=[];let E=0;for(let g=0;g<s.rows;g++){const h=[];for(let a=0;a<s.cols;a++){const c=4*E,l=this.Oe(e.characterPixels,c),u=((o=r.characters[l])==null?void 0:o.character)||i;h.push(u),E++}B.push(h)}return B}}class vA{fs(e,s){const r=[];for(const B of e){let E=B.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=s.lineEnding==="crlf"?`\r
62
+ `).replace(/[ \t]+$/gm,"")}}class xA extends N{hs(e){return this.ke(e,"image/svg+xml;charset=utf-8")}ls(e,s){this.Ve(e,this.ze(s)+".svg","image/svg+xml;charset=utf-8")}cs(e,s){this.ls(e,s||this.Le())}}class rA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new wA,this.Cs=new mA,this.us=new xA}Ps(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0]}}Is(e,s={}){const r=this.Ps(s),i=this.Ds.Se(e.pipeline),B=this.Ds.Ke(i,e.grid),E=this.Cs.gs(B,e.grid,e.font,r);return this.Cs.ns(E)}cs(e,s={}){const r=this.Is(e,s),i=s.filename||this.us.Le();this.us.cs(r,i)}}class bA extends ${ws(e,s,r,i=" "){var o;const B=[];let E=0;for(let g=0;g<s.rows;g++){const h=[];for(let a=0;a<s.cols;a++){const c=4*E,l=this.Oe(e.characterPixels,c),u=((o=r.characters[l])==null?void 0:o.character)||i;h.push(u),E++}B.push(h)}return B}}class vA{fs(e,s){const r=[];for(const B of e){let E=B.join("");s.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),r.push(E)}const i=s.lineEnding==="crlf"?`\r
63
63
  `:`
64
- `;return r.join(i)}}class yA extends N{ds(e,s){const r=this.ps(s);this.Ve(e,r,"text/plain;charset=utf-8")}ps(e){let s=this.ze(e);return s===".txt"||s.length<=4?this.Le():s}}class rA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new bA,this.Cs=new vA,this.us=new yA}Ps(e){return{preserveTrailingSpaces:e.preserveTrailingSpaces??!1,lineEnding:e.lineEnding??"lf",emptyCharacter:e.emptyCharacter??" "}}_s(e,s={}){const r=this.Ps(s),i=this.Ds.Se(e.pipeline),B=this.Ds.ws(i,e.grid,e.font,r.emptyCharacter);return this.Cs.fs(B,r)}ds(e,s={}){const r=this._s(e,s),i=s.filename||this.us.Le();this.us.ds(r,i)}}class _A extends ${vs(e,s=1,r="transparent"){const i=e.canvas;if(s===1&&r==="transparent")return i;const B=document.createElement("canvas"),E=B.getContext("2d"),o=Math.round(i.width*s),g=Math.round(i.height*s);return B.width=o,B.height=g,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,o,g)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,o,g),B}}class MA{bs(e,s){const r=this.Ms(s.format);return s.format==="png"?e.toDataURL(r):e.toDataURL(r,s.quality)}async Gs(e,s){return new Promise((r,i)=>{const B=this.Ms(s.format),E=o=>{o?r(o):i(Error(`Failed to generate ${s.format.toUpperCase()} blob`))};s.format==="png"?e.toBlob(E,B):e.toBlob(E,B,s.quality)})}Ms(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 TA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},iA={png:".png",jpg:".jpg",webp:".webp"};class GA extends N{Fs(e,s,r){this.$s(e,this.ze(s)+iA[r])}$s(e,s){const r=URL.createObjectURL(e);try{const i=document.createElement("a");i.href=r,i.download=s,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}Ys(e){return e in TA&&e in iA}}class RA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new _A,this.Cs=new MA,this.us=new GA}Ps(e){return{format:e.format??"png",quality:e.quality??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent"}}Ts(e){if(console.log("Validating image export options:",e),!this.us.Ys(e.format))throw Error(`Saving '${e.format}' files is not supported`);if(e.quality<0||e.quality>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")}Ss(e,s={}){const r=this.Ps(s);if(this.Ts(r),r.scale===1&&r.backgroundColor==="transparent")return this.Cs.bs(e.canvas,r);const i=this.Ds.vs(e,r.scale,r.backgroundColor);return this.Cs.bs(i,r)}async Gs(e,s={}){const r=this.Ps(s);if(this.Ts(r),r.scale===1&&r.backgroundColor==="transparent")return await this.Cs.Gs(e.canvas,r);const i=this.Ds.vs(e,r.scale,r.backgroundColor);return await this.Cs.Gs(i,r)}async Fs(e,s={}){const r=await this.Gs(e,s),i=s.format??"png",B=s.filename||this.us.Le();this.us.Fs(r,B,i)}}const FA=Q=>class extends Q{toString(e={}){return new rA()._s({pipeline:this.Os,grid:this.ne,font:this._t},e)}saveStrings(e={}){new rA().ds({pipeline:this.Os,grid:this.ne,font:this._t},e)}toSVG(e={}){return new sA().Is(this,e)}saveSVG(e={}){new sA().cs(this,e)}async saveCanvas(e,s="png",r={}){await new RA().Fs(this.Wt,{...r,filename:e,format:s})}},UA=Q=>class extends Q{async loadFont(e){return this._t.Ht(e).then(()=>{const s=this._t.maxGlyphDimensions;this.ne.qt(s.width,s.height),this.Os.ee()})}fontSize(e){if(!I.C(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:e})||this._t.fontSize===e)return;this._t.Rt(e);const s=this._t.maxGlyphDimensions;this.ne.qt(s.width,s.height),this.Os.ee(),this.Dt.UA()}},YA=Q=>class extends Q{addConverter(e){return this.Os.add(e)}removeConverter(e){this.Os.remove(e)}};class SA{constructor(){n(this,"Dt");n(this,"_t");n(this,"Os");n(this,"Wt");n(this,"ne")}}class z extends function(s,...r){return r.reduce((i,B)=>B(i),s)}(SA,fA,FA,UA,YA){constructor(s=null,r={}){super();n(this,"re");n(this,"Us");n(this,"ie");n(this,"ks");n(this,"Vs");n(this,"Rs",null);n(this,"Hs",0);n(this,"zs");n(this,"Ls",!0);n(this,"Js",0);n(this,"js",0);n(this,"Ks",0);n(this,"Ws",[]);n(this,"Ns",10);n(this,"Zs",!1);n(this,"Xs",!1);n(this,"qs",()=>{});n(this,"Ar",()=>{});n(this,"tr");this.re=s,this.Xs=s===null,this.ks=r.renderMode??"auto",this.Vs=r.frameRate??60,this.zs=1e3/this.Vs}static async create(s=null,r={}){const i=new this(s,r),B=i.Xs?r:void 0;let E,o;i.Wt=new tA(i.re,i.Xs,B),i.Dt=new QA(i.Wt.ge()),i.Xs?(E=r.width||800,o=r.height||600):(E=i.Wt.width||800,o=i.Wt.height||600),i.Us=i.Dt.TA(E,o),i._t=new q(i.Dt,r.fontSize??16),await i._t.Ut(r.fontSource);const g=i._t.maxGlyphDimensions;return i.ne=new AA(i.Wt.canvas,g.width,g.height),i.Os=new eA(i.Dt,i._t,i.ne),i.er(),i.sr(),i}er(){this.tr=()=>{this.Xs?this.Ar():this.rr()},window.addEventListener("resize",this.tr),window.ResizeObserver&&this.re&&!this.Xs&&(this.ie=new ResizeObserver(()=>{this.rr()}),this.ie.observe(this.re))}render(){this.Br(),this.Ks++,this.Zs?console.warn("Cannot render: Required resources have been disposed"):(this.Xs?(this.Us.begin(),this.qs(),this.Us.end()):this.Us.update(this.re),this.Os.hasEnabledConverters()?(this.Os.Te(this.Us),this.Dt.SA(0),this.Dt.kA(this.Os.texture,this.ne.offsetX,this.ne.offsetY,this.Os.texture.width,this.Os.texture.height)):(this.Dt.OA(),this.Dt.kA(this.Us,this.ne.offsetX,this.ne.offsetY,this.Us.width,this.Us.height)))}rr(){this.Wt.ee(),this.Us.resize(this.Wt.width,this.Wt.height),this.ne.ee(),this.Os.ee(),this.Dt.UA(),this.ks!=="manual"&&this.render()}sr(){if(this.ks!=="auto"||!this.Ls)return;this.Hs=performance.now();const s=r=>{if(!this.Ls)return void(this.Rs=null);const i=r-this.Hs;i>=this.zs&&(this.render(),this.Hs=r-i%this.zs),this.Ls&&(this.Rs=requestAnimationFrame(s))};this.Rs=requestAnimationFrame(s)}Br(){const s=performance.now();if(this.js>0){const r=s-this.js;this.Ws.push(r),this.Ws.length>this.Ns&&this.Ws.shift();const i=this.Ws.reduce((B,E)=>B+E,0)/this.Ws.length;this.Js=1e3/i}this.js=s}ir(){this.Rs&&(cancelAnimationFrame(this.Rs),this.Rs=null)}renderMode(s){this.ks!==s&&(this.ir(),this.ks=s,s==="auto"&&this.Ls&&this.sr())}frameRate(s){if(s===void 0)return this.Js;this.Vs=s,this.zs=1e3/s,this.ks==="auto"&&this.Ls&&(this.ir(),this.sr())}noLoop(){this.Ls&&(this.Ls=!1,this.Rs&&(cancelAnimationFrame(this.Rs),this.Rs=null))}loop(){this.Ls||(this.Ls=!0,this.ks==="auto"&&this.sr())}redraw(s=1){if(I.C(typeof s=="number"&&s>0&&Number.isInteger(s),"Redraw count must be a positive integer.",{method:"redraw",providedValue:s}))for(let r=0;r<s;r++)this.render()}isLooping(){return this.ks==="auto"&&this.Ls}draw(s){this.qs=s}windowResized(s){this.Ar=s}resizeCanvas(s,r){this.Xs&&(this.Wt.ee(s,r),this.Us.resize(this.Wt.width,this.Wt.height),this.ne.ee(),this.Os.ee(),this.Dt.UA(),this.ks!=="manual"&&this.render())}destroy(){this.Zs||(this.ir(),window.removeEventListener("resize",this.tr),this.ie&&this.ie.disconnect(),this.Os.S(),this._t.S(),this.Us.S(),this.Dt.S(),this.Zs=!0)}get grid(){return this.ne}get font(){return this._t}get mode(){return this.ks}get pipeline(){return this.Os}get frameCount(){return this.Ks}set frameCount(s){this.Ks=s}get width(){return this.Wt.width}get height(){return this.Wt.height}get canvas(){return this.Wt}get isDisposed(){return this.Zs}}class Y{constructor(){throw new P("Textmode is a static class and cannot be instantiated.")}static async create(e,s={}){if(!(e==null||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||typeof e=="object"))throw new P("First parameter must be HTMLCanvasElement, HTMLVideoElement, or options object.");if(typeof s!="object")throw new P("Second parameter must be an options object.");if(e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement)return z.create(e,s);{const r=e||{};return z.create(null,r)}}static setErrorLevel(e){I.u(e)}static get version(){return"0.1.9-beta.2"}}const OA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),WA=Y.create,LA=Y.setErrorLevel,kA=Y.version;d.TextmodeCanvas=tA,d.TextmodeConversionPipeline=eA,d.TextmodeErrorLevel=M,d.TextmodeFont=q,d.TextmodeGrid=AA,d.Textmodifier=z,d.converters=IA,d.create=WA,d.default=Y,d.export=OA,d.setErrorLevel=LA,d.textmode=Y,d.version=kA,Object.defineProperties(d,{Qr:{value:!0},[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).textmode={});
64
+ `;return r.join(i)}}class yA extends N{ds(e,s){const r=this.ps(s);this.Ve(e,r,"text/plain;charset=utf-8")}ps(e){let s=this.ze(e);return s===".txt"||s.length<=4?this.Le():s}}class iA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new bA,this.Cs=new vA,this.us=new yA}Ps(e){return{preserveTrailingSpaces:e.preserveTrailingSpaces??!1,lineEnding:e.lineEnding??"lf",emptyCharacter:e.emptyCharacter??" "}}_s(e,s={}){const r=this.Ps(s),i=this.Ds.Se(e.pipeline),B=this.Ds.ws(i,e.grid,e.font,r.emptyCharacter);return this.Cs.fs(B,r)}ds(e,s={}){const r=this._s(e,s),i=s.filename||this.us.Le();this.us.ds(r,i)}}class _A extends ${vs(e,s=1,r="transparent"){const i=e.canvas;if(s===1&&r==="transparent")return i;const B=document.createElement("canvas"),E=B.getContext("2d"),o=Math.round(i.width*s),g=Math.round(i.height*s);return B.width=o,B.height=g,r!=="transparent"&&(E.fillStyle=r,E.fillRect(0,0,o,g)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,o,g),B}}class MA{bs(e,s){const r=this.Ms(s.format);return s.format==="png"?e.toDataURL(r):e.toDataURL(r,s.quality)}async Gs(e,s){return new Promise((r,i)=>{const B=this.Ms(s.format),E=o=>{o?r(o):i(Error(`Failed to generate ${s.format.toUpperCase()} blob`))};s.format==="png"?e.toBlob(E,B):e.toBlob(E,B,s.quality)})}Ms(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 TA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},BA={png:".png",jpg:".jpg",webp:".webp"};class GA extends N{Fs(e,s,r){this.$s(e,this.ze(s)+BA[r])}$s(e,s){const r=URL.createObjectURL(e);try{const i=document.createElement("a");i.href=r,i.download=s,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(r)}}Ys(e){return e in TA&&e in BA}}class RA{constructor(){n(this,"Ds");n(this,"Cs");n(this,"us");this.Ds=new _A,this.Cs=new MA,this.us=new GA}Ps(e){return{format:e.format??"png",quality:e.quality??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent"}}Ts(e){if(console.log("Validating image export options:",e),!this.us.Ys(e.format))throw Error(`Saving '${e.format}' files is not supported`);if(e.quality<0||e.quality>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")}Ss(e,s={}){const r=this.Ps(s);if(this.Ts(r),r.scale===1&&r.backgroundColor==="transparent")return this.Cs.bs(e.canvas,r);const i=this.Ds.vs(e,r.scale,r.backgroundColor);return this.Cs.bs(i,r)}async Gs(e,s={}){const r=this.Ps(s);if(this.Ts(r),r.scale===1&&r.backgroundColor==="transparent")return await this.Cs.Gs(e.canvas,r);const i=this.Ds.vs(e,r.scale,r.backgroundColor);return await this.Cs.Gs(i,r)}async Fs(e,s={}){const r=await this.Gs(e,s),i=s.format??"png",B=s.filename||this.us.Le();this.us.Fs(r,B,i)}}const FA=Q=>class extends Q{toString(e={}){return new iA()._s({pipeline:this.Os,grid:this.ne,font:this._t},e)}saveStrings(e={}){new iA().ds({pipeline:this.Os,grid:this.ne,font:this._t},e)}toSVG(e={}){return new rA().Is(this,e)}saveSVG(e={}){new rA().cs(this,e)}async saveCanvas(e,s="png",r={}){await new RA().Fs(this.Wt,{...r,filename:e,format:s})}},UA=Q=>class extends Q{async loadFont(e){return this._t.Ht(e).then(()=>{const s=this._t.maxGlyphDimensions;this.ne.qt(s.width,s.height),this.Os.ee()})}fontSize(e){if(!I.C(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:e})||this._t.fontSize===e)return;this._t.Rt(e);const s=this._t.maxGlyphDimensions;this.ne.qt(s.width,s.height),this.Os.ee(),this.Dt.UA()}},YA=Q=>class extends Q{addConverter(e){return this.Os.add(e)}removeConverter(e){this.Os.remove(e)}};class SA{constructor(){n(this,"Dt");n(this,"_t");n(this,"Os");n(this,"Wt");n(this,"ne")}}class z extends function(s,...r){return r.reduce((i,B)=>B(i),s)}(SA,fA,FA,UA,YA){constructor(s=null,r={}){super();n(this,"re");n(this,"Us");n(this,"ie");n(this,"ks");n(this,"Vs");n(this,"Rs",null);n(this,"Hs",0);n(this,"zs");n(this,"Ls",!0);n(this,"Js",0);n(this,"js",0);n(this,"Ks",0);n(this,"Ws",[]);n(this,"Ns",10);n(this,"Zs",!1);n(this,"Xs",!1);n(this,"qs",()=>{});n(this,"Ar",()=>{});n(this,"tr");this.re=s,this.Xs=s===null,this.ks=r.renderMode??"auto",this.Vs=r.frameRate??60,this.zs=1e3/this.Vs}static async create(s=null,r={}){const i=new this(s,r),B=i.Xs?r:void 0;let E,o;i.Wt=new tA(i.re,i.Xs,B),i.Dt=new nA(i.Wt.ge()),i.Xs?(E=r.width||800,o=r.height||600):(E=i.Wt.width||800,o=i.Wt.height||600),i.Us=i.Dt.TA(E,o),i._t=new q(i.Dt,r.fontSize??16),await i._t.Ut(r.fontSource);const g=i._t.maxGlyphDimensions;return i.ne=new AA(i.Wt.canvas,g.width,g.height),i.Os=new sA(i.Dt,i._t,i.ne),i.er(),i.sr(),i}er(){this.tr=()=>{this.Xs?this.Ar():this.rr()},window.addEventListener("resize",this.tr),window.ResizeObserver&&this.re&&!this.Xs&&(this.ie=new ResizeObserver(()=>{this.rr()}),this.ie.observe(this.re))}render(){this.Br(),this.Ks++,this.Zs?console.warn("Cannot render: Required resources have been disposed"):(this.Xs?(this.Us.begin(),this.qs(),this.Us.end()):this.Us.update(this.re),this.Os.hasEnabledConverters()?(this.Os.Te(this.Us),this.Dt.SA(0),this.Dt.kA(this.Os.texture,this.ne.offsetX,this.ne.offsetY,this.Os.texture.width,this.Os.texture.height)):(this.Dt.OA(),this.Dt.kA(this.Us,this.ne.offsetX,this.ne.offsetY,this.Us.width,this.Us.height)))}rr(){this.Wt.ee(),this.Us.resize(this.Wt.width,this.Wt.height),this.ne.ee(),this.Os.ee(),this.Dt.UA(),this.ks!=="manual"&&this.render()}sr(){if(this.ks!=="auto"||!this.Ls)return;this.Hs=performance.now();const s=r=>{if(!this.Ls)return void(this.Rs=null);const i=r-this.Hs;i>=this.zs&&(this.render(),this.Hs=r-i%this.zs),this.Ls&&(this.Rs=requestAnimationFrame(s))};this.Rs=requestAnimationFrame(s)}Br(){const s=performance.now();if(this.js>0){const r=s-this.js;this.Ws.push(r),this.Ws.length>this.Ns&&this.Ws.shift();const i=this.Ws.reduce((B,E)=>B+E,0)/this.Ws.length;this.Js=1e3/i}this.js=s}ir(){this.Rs&&(cancelAnimationFrame(this.Rs),this.Rs=null)}renderMode(s){this.ks!==s&&(this.ir(),this.ks=s,s==="auto"&&this.Ls&&this.sr())}frameRate(s){if(s===void 0)return this.Js;this.Vs=s,this.zs=1e3/s,this.ks==="auto"&&this.Ls&&(this.ir(),this.sr())}noLoop(){this.Ls&&(this.Ls=!1,this.Rs&&(cancelAnimationFrame(this.Rs),this.Rs=null))}loop(){this.Ls||(this.Ls=!0,this.ks==="auto"&&this.sr())}redraw(s=1){if(I.C(typeof s=="number"&&s>0&&Number.isInteger(s),"Redraw count must be a positive integer.",{method:"redraw",providedValue:s}))for(let r=0;r<s;r++)this.render()}isLooping(){return this.ks==="auto"&&this.Ls}draw(s){this.qs=s}windowResized(s){this.Ar=s}resizeCanvas(s,r){this.Xs&&(this.Wt.ee(s,r),this.Us.resize(this.Wt.width,this.Wt.height),this.ne.ee(),this.Os.ee(),this.Dt.UA(),this.ks!=="manual"&&this.render())}destroy(){this.Zs||(this.ir(),window.removeEventListener("resize",this.tr),this.ie&&this.ie.disconnect(),this.Os.S(),this._t.S(),this.Us.S(),this.Dt.S(),this.Zs=!0)}get grid(){return this.ne}get font(){return this._t}get mode(){return this.ks}get pipeline(){return this.Os}get frameCount(){return this.Ks}get renderer(){return this.Dt}set frameCount(s){this.Ks=s}get width(){return this.Wt.width}get height(){return this.Wt.height}get canvas(){return this.Wt}get isDisposed(){return this.Zs}}class Y{constructor(){throw new P("Textmode is a static class and cannot be instantiated.")}static async create(e,s={}){if(!(e==null||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||typeof e=="object"))throw new P("First parameter must be HTMLCanvasElement, HTMLVideoElement, or options object.");if(typeof s!="object")throw new P("Second parameter must be an options object.");if(e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement)return z.create(e,s);{const r=e||{};return z.create(null,r)}}static setErrorLevel(e){I.u(e)}static get version(){return"0.1.9-beta.4"}}const OA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),WA=Y.create,LA=Y.setErrorLevel,kA=Y.version;d.TextmodeCanvas=tA,d.TextmodeColorPalette=eA,d.TextmodeConversionPipeline=sA,d.TextmodeErrorLevel=M,d.TextmodeFont=q,d.TextmodeGrid=AA,d.Textmodifier=z,d.converters=IA,d.create=WA,d.default=Y,d.export=OA,d.setErrorLevel=LA,d.textmode=Y,d.version=kA,Object.defineProperties(d,{Qr:{value:!0},[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).textmode={});