textmode.js 0.1.6-beta.7 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/textmode.umd.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var SA=Object.defineProperty;var WA=(
|
|
1
|
+
var SA=Object.defineProperty;var WA=(I,u,b)=>u in I?SA(I,u,{enumerable:!0,configurable:!0,writable:!0,value:b}):I[u]=b;var g=(I,u,b)=>WA(I,typeof u!="symbol"?u+"":u,b);var A,t;A=this,t=function(I){class u extends Error{constructor(e,r={}){super(u.A(e,r)),this.name="TextmodeError"}static A(e,r){let B=e;if(r&&Object.keys(r).length>0){B+=`
|
|
2
2
|
|
|
3
|
-
📋 Context:`;for(const[s
|
|
4
|
-
- ${
|
|
3
|
+
📋 Context:`;for(const[i,s]of Object.entries(r))B+=`
|
|
4
|
+
- ${i}: ${u.i(s)}`}return B+=`
|
|
5
5
|
|
|
6
6
|
`,B+="↓".repeat(24)+`
|
|
7
|
-
`,B}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(r=>u.i(r)).join(", ")}]`:`[${e.slice(0,3).map(r=>u.i(r)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const r=Object.keys(e);return r.length===0?"{}":r.length<=3?`{ ${r.map(B=>`${B}: ${u.i(e[B])}`).join(", ")} }`:`{ ${r.slice(0,2).map(B=>`${B}: ${u.i(e[B])}`).join(", ")}, ... +${r.length-2} more }`}return e+""}}var v=(o=>(o[o.SILENT=0]="SILENT",o[o.WARNING=1]="WARNING",o[o.ERROR=2]="ERROR",o[o.THROW=3]="THROW",o))(v||{});const b=class b{constructor(){g(this,"h",{globalLevel:3})}static D(){return b.o||(b.o=new b),b.o}l(e,r){const B="%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.",s="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(B,s),console.warn(u.A(e,r)),console.groupEnd(),!1;case 2:return console.group(B,s),console.error(u.A(e,r)),console.groupEnd(),!1;default:throw new u(e,r)}}C(e,r,B){return!!e||(this.l(r,B),!1)}u(e){this.h.globalLevel=e}};g(b,"o",null);let L=b;const f=L.D(),N=new WeakMap;function S(o,e){N.set(o,e)}function V(o){return N.get(o)}class K{constructor(e,r,B=r,s={}){g(this,"P");g(this,"I");g(this,"m");g(this,"p");g(this,"_");g(this,"h");g(this,"v",null);g(this,"M",null);this.P=e,this.p=r,this._=B,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...s},this.m=this.G(),this.I=e.createFramebuffer(),this.F()}Y(e){const{P:r}=this,B=r.getParameter(r.FRAMEBUFFER_BINDING);r.bindFramebuffer(r.FRAMEBUFFER,this.I);try{return e()}finally{r.bindFramebuffer(r.FRAMEBUFFER,B)}}G(){const{P:e}=this,r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);const B=this.h.filter==="linear"?e.LINEAR:e.NEAREST,s=this.h.wrap==="repeat"?e.REPEAT:e.CLAMP_TO_EDGE;return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,s),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,s),this.$(),r}$(){const{P:e}=this,r=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.p,this._,0,e.RGBA,r,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:r}=this;r.bindTexture(r.TEXTURE_2D,this.m),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),r.bindTexture(r.TEXTURE_2D,null)}updatePixels(e,r,B){const{P:s}=this;s.bindTexture(s.TEXTURE_2D,this.m),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,r,B,0,s.RGBA,s.UNSIGNED_BYTE,e),s.bindTexture(s.TEXTURE_2D,null)}resize(e,r){const{P:B}=this;this.p=e,this._=r,this.M=null,B.bindTexture(B.TEXTURE_2D,this.m),this.$(),B.bindTexture(B.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._),S(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),S(e,this.v.viewport),this.v=null}loadPixels(){const{P:e}=this;this.M||(this.M=new Uint8Array(this.p*this._*4)),this.Y(()=>{e.readPixels(0,0,this.p,this._,e.RGBA,e.UNSIGNED_BYTE,this.M)})}get(e,r,B,s){const{P:i}=this;if(e===void 0&&r===void 0){const E=new Uint8Array(this.p*this._*4);return this.Y(()=>(i.readPixels(0,0,this.p,this._,i.RGBA,i.UNSIGNED_BYTE,E),E))}if(B===void 0&&s===void 0){(e<0||r<0||e>=this.p||r>=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)),r=Math.max(0,Math.min(r,this._-1)));const E=new Uint8Array(4);return this.Y(()=>(i.readPixels(e,r,1,1,i.RGBA,i.UNSIGNED_BYTE,E),[E[0],E[1],E[2],E[3]]))}{e=Math.max(0,Math.min(e,this.p-1)),r=Math.max(0,Math.min(r,this._-1)),B=Math.max(1,Math.min(B,this.p-e)),s=Math.max(1,Math.min(s,this._-r));const E=new Uint8Array(B*s*4);return this.Y(()=>(i.readPixels(e,r,B,s,i.RGBA,i.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 x{constructor(e,r,B){g(this,"P");g(this,"O");g(this,"U",new Map);g(this,"k",new Map);g(this,"V",0);g(this,"R");this.P=e,this.O=this.H(r,B),this.R=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.J()}J(){const e=this.P.getProgramParameter(this.O,this.P.ACTIVE_UNIFORMS);for(let r=0;r<e;r++){const B=this.P.getActiveUniform(this.O,r);if(B){const s=this.P.getUniformLocation(this.O,B.name);s&&(this.U.set(B.name,s),this.k.set(B.name,B.type))}}}H(e,r){const B=this.L(this.P.VERTEX_SHADER,e),s=this.L(this.P.FRAGMENT_SHADER,r),i=this.P.createProgram();if(this.P.attachShader(i,B),this.P.attachShader(i,s),this.P.linkProgram(i),!this.P.getProgramParameter(i,this.P.LINK_STATUS)){const E=this.P.getProgramInfoLog(i);throw Error("Shader program link error: "+E)}return this.P.deleteShader(B),this.P.deleteShader(s),i}L(e,r){const B=this.P.createShader(e);if(this.P.shaderSource(B,r),this.P.compileShader(B),!this.P.getShaderParameter(B,this.P.COMPILE_STATUS)){const s=this.P.getShaderInfoLog(B);throw this.P.deleteShader(B),Error("Shader compilation error: "+s)}return B}K(){this.P.useProgram(this.O),this.W()}setUniform(e,r){const B=this.U.get(e);if(B)if(typeof r=="number")this.j(e)?this.P.uniform1i(B,Math.floor(r)):this.P.uniform1f(B,r);else if(typeof r=="boolean")this.P.uniform1i(B,r?1:0);else if(Array.isArray(r))switch(r.length){case 2:this.P.uniform2f(B,r[0],r[1]);break;case 3:this.P.uniform3f(B,r[0],r[1],r[2]);break;case 4:this.P.uniform4f(B,r[0],r[1],r[2],r[3]);break;default:console.warn(`Unsupported array length ${r.length} for uniform '${e}'`)}else if(r instanceof WebGLTexture){const s=this.Z();this.P.uniform1i(B,s),this.P.activeTexture(this.P.TEXTURE0+s),this.P.bindTexture(this.P.TEXTURE_2D,r)}else if(r instanceof K){const s=this.Z();this.P.uniform1i(B,s),this.P.activeTexture(this.P.TEXTURE0+s),this.P.bindTexture(this.P.TEXTURE_2D,r.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof r)}Z(){return this.V>=this.R&&console.warn(`Exceeded maximum texture units (${this.R}). Texture may not render correctly.`),this.V++}j(e){const r=this.k.get(e);return!!r&&(r===this.P.INT||r===this.P.INT_VEC2||r===this.P.INT_VEC3||r===this.P.INT_VEC4||r===this.P.SAMPLER_2D||r===this.P.SAMPLER_CUBE)}get glProgram(){return this.O}S(){this.P.deleteProgram(this.O)}W(){this.V=0}}class X{constructor(e){g(this,"P");g(this,"N",null);g(this,"X",16);g(this,"q",new Map);this.P=e}AA(){if(this.N)return;const e=this.P;this.N=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.N)}tA(){const e=this.P,r=e.getParameter(e.CURRENT_PROGRAM);let B=this.q.get(r);return B||(B={a_position:e.getAttribLocation(r,"a_position"),a_texCoord:e.getAttribLocation(r,"a_texCoord")},this.q.set(r,B)),e.enableVertexAttribArray(B.a_position),e.vertexAttribPointer(B.a_position,2,e.FLOAT,!1,this.X,0),e.enableVertexAttribArray(B.a_texCoord),e.vertexAttribPointer(B.a_texCoord,2,e.FLOAT,!1,this.X,8),{positionLoc:B.a_position,texLoc:B.a_texCoord}}eA(e,r){const B=this.P;B.disableVertexAttribArray(e),B.disableVertexAttribArray(r)}BA(e,r){const B=this.P,s=V(B)||[0,0,B.canvas.width,B.canvas.height];return{nx:e/s[2]*2-1,ny:1-r/s[3]*2}}QA(e,r,B,s){const i=this.P;this.AA(),i.bindBuffer(i.ARRAY_BUFFER,this.N);const E=new Float32Array([e,s,0,0,B,s,1,0,e,r,0,1,e,r,0,1,B,s,1,0,B,r,1,1]);i.bufferData(i.ARRAY_BUFFER,E,i.DYNAMIC_DRAW)}S(){this.N&&this.P.deleteBuffer(this.N)}}class sA extends X{constructor(e){super(e)}sA(e,r,B,s){const i=this.BA(e,r),E=this.BA(e+B,r+s);this.QA(i.nx,i.ny,E.nx,E.ny);const Q=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(Q.positionLoc,Q.texLoc)}rA(e,r,B,s,i){this.sA(e,r,B,i),this.sA(e+B-i,r,i,s),this.sA(e,r+s-i,B,i),this.sA(e,r,i,s)}}class iA extends X{constructor(e){super(e)}iA(e,r,B,s,i){const E=B-e,Q=s-r,n=Math.hypot(E,Q);if(n===0){const h=i/2,l=this.BA(e-h,r-h),c=this.BA(e+h,r+h);this.QA(l.nx,l.ny,c.nx,c.ny)}else{const h=-Q/n,l=E/n,c=i/2,P=e+h*c,I=r+l*c,D=e-h*c,w=r-l*c,p=B+h*c,m=s+l*c,y=B-h*c,_=s-l*c,O=this.BA(P,I),T=this.BA(D,w),G=this.BA(p,m),BA=this.BA(y,_),U=this.P;this.AA(),U.bindBuffer(U.ARRAY_BUFFER,this.N);const UA=new Float32Array([O.nx,O.ny,0,0,T.nx,T.ny,0,1,G.nx,G.ny,1,0,T.nx,T.ny,0,1,BA.nx,BA.ny,1,1,G.nx,G.ny,1,0]);U.bufferData(U.ARRAY_BUFFER,UA,U.DYNAMIC_DRAW)}const a=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(a.positionLoc,a.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 EA{constructor(e){g(this,"P");g(this,"EA");g(this,"gA");g(this,"oA",null);g(this,"nA");g(this,"aA");g(this,"hA",[1,1,1,1]);g(this,"DA",!0);g(this,"lA",[0,0,0,1]);g(this,"CA",1);g(this,"cA",!0);g(this,"uA",0);g(this,"PA",[]);this.P=e,this.EA=new x(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 x(this.P,W,"precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"),this.nA=new sA(this.P),this.aA=new iA(this.P),this.P.enable(this.P.BLEND),this.P.blendEquation(this.P.FUNC_ADD),this.P.blendFunc(this.P.ONE,this.P.ONE_MINUS_SRC_ALPHA),S(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}IA(e){this.oA!==e&&(this.oA=e,e.K())}wA(e,r,B,s){if(this.DA=!0,r===void 0&&B===void 0&&s===void 0){const i=e/255;this.hA=[i,i,i,1]}else if(B!==void 0&&s===void 0)this.hA=[e/255,r/255,B/255,1];else{if(B===void 0||s===void 0)throw Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)");this.hA=[e/255,r/255,B/255,s/255]}}fA(e,r,B,s){if(this.cA=!0,r===void 0&&B===void 0&&s===void 0){const i=e/255;this.lA=[i,i,i,1]}else if(B!==void 0&&s===void 0)this.lA=[e/255,r/255,B/255,1];else{if(B===void 0||s===void 0)throw Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)");this.lA=[e/255,r/255,B/255,s/255]}}dA(e){if(e<0)throw Error("Stroke weight must be non-negative");this.CA=e}mA(){this.cA=!1}pA(){this.DA=!1}_A(e){this.uA=e}vA(){this.PA.push({fillColor:[...this.hA],fillMode:this.DA,strokeColor:[...this.lA],strokeWeight:this.CA,strokeMode:this.cA,rotation:this.uA})}bA(){const e=this.PA.pop();e?(this.hA=e.fillColor,this.DA=e.fillMode,this.lA=e.strokeColor,this.CA=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,r){return new x(this.P,e,r)}MA(e){return new x(this.P,W,e)}GA(e,r){this.oA.setUniform(e,r)}FA(e,r,B,s){if(this.oA!==null){const{centerX:l,centerY:c,radians:P,aspectRatio:I}=this.YA(e,r,B,s);return this.GA("u_rotation",P),this.GA("u_center",[l,c]),this.GA("u_aspectRatio",I),this.nA.sA(e,r,B,s),void(this.oA=null)}const i=this.gA;let E=0,Q=0,n=0,a=1;const h=this.YA(e,r,B,s);E=h.centerX,Q=h.centerY,n=h.radians,a=h.aspectRatio,this.DA&&(this.IA(i),this.GA("u_color",this.hA),this.GA("u_rotation",n),this.GA("u_center",[E,Q]),this.GA("u_aspectRatio",a),this.nA.sA(e,r,B,s)),this.cA&&this.CA>0&&(this.IA(i),this.GA("u_color",this.lA),this.GA("u_rotation",n),this.GA("u_center",[E,Q]),this.GA("u_aspectRatio",a),this.nA.rA(e,r,B,s,this.CA)),this.oA=null}$A(e,r,B,s){if(this.oA!==null){const D=(e+B)/2,w=(r+s)/2,p=Math.abs(B-e)||1,m=Math.abs(s-r)||1,{centerX:y,centerY:_,radians:O,aspectRatio:T}=this.YA(D-p/2,w-m/2,p,m);this.GA("u_rotation",O),this.GA("u_center",[y,_]),this.GA("u_aspectRatio",T);const G=this.CA>0?this.CA:1;return this.aA.iA(e,r,B,s,G),void(this.oA=null)}if(!this.cA||this.CA<=0)return;const i=this.gA,E=(e+B)/2,Q=(r+s)/2,n=Math.abs(B-e)||1,a=Math.abs(s-r)||1,h=this.uA!==0;let l=0,c=0,P=0,I=1;if(h){const D=this.YA(E-n/2,Q-a/2,n,a);l=D.centerX,c=D.centerY,P=D.radians,I=D.aspectRatio}this.IA(i),this.GA("u_color",this.lA),h&&(this.GA("u_rotation",P),this.GA("u_center",[l,c]),this.GA("u_aspectRatio",I)),this.aA.iA(e,r,B,s,this.CA)}YA(e,r,B,s){const i=V(this.P)||[0,0,this.P.canvas.width,this.P.canvas.height],E=i[2],Q=i[3],n=E/Q;return{centerX:(e+B/2)/E*2-1,centerY:1-(r+s/2)/Q*2,radians:this.uA*Math.PI/180,aspectRatio:n}}TA(e,r,B={}){return new K(this.P,e,r,B)}SA(e,r=e,B=e,s=255){this.OA(e/255,r/255,B/255,s/255)}OA(e=0,r=0,B=0,s=0){this.P.clearColor(e,r,B,s),this.P.clear(this.P.COLOR_BUFFER_BIT)}UA(){this.P.viewport(0,0,this.P.canvas.width,this.P.canvas.height),S(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,r,B,s,i){const E=this.P,Q=s??e.width,n=i??e.height;this.IA(this.EA),this.GA("u_texture",e.texture);const a=this.YA(r,B,Q,n);this.GA("u_rotation",a.radians),this.GA("u_center",[a.centerX,a.centerY]),this.GA("u_aspectRatio",a.aspectRatio),this.nA.sA(r,B,Q,n),E.bindTexture(E.TEXTURE_2D,null),this.oA=null}}var M,C={parse:function(o){var e=function(r,B,s,i){var E=C.T,Q={cmap:E.cmap,head:E.head,hhea:E.hhea,maxp:E.maxp,hmtx:E.hmtx,loca:E.loca,glyf:E.glyf},n={_data:r,_index:B,_offset:s};for(var a in Q){var h=C.findTable(r,a,s);if(h){var l=h[0],c=i[l];c==null&&(c=Q[a].parseTab(r,l,h[1],n)),n[a]=i[l]=c}}return n}(new Uint8Array(o),0,0,{});return[e]},findTable:function(o,e,r){for(var B=C.B,s=B.readUshort(o,r+4),i=r+12,E=0;E<s;E++){var Q=B.readASCII(o,i,4);B.readUint(o,i+4);var n=B.readUint(o,i+8),a=B.readUint(o,i+12);if(Q==e)return[n,a];i+=16}return null},T:{}};C.B={readShort:function(o,e){return C.B.t.uint16[0]=o[e]<<8|o[e+1],C.B.t.int16[0]},readUshort:function(o,e){return o[e]<<8|o[e+1]},readUshorts:function(o,e,r){for(var B=[],s=0;s<r;s++)B.push(C.B.readUshort(o,e+2*s));return B},readUint:function(o,e){var r=C.B.t.uint8;return r[3]=o[e],r[2]=o[e+1],r[1]=o[e+2],r[0]=o[e+3],C.B.t.uint32[0]},readASCII:function(o,e,r){for(var B="",s=0;s<r;s++)B+=String.fromCharCode(o[e+s]);return B},t:(M=new ArrayBuffer(8),{uint8:new Uint8Array(M),int16:new Int16Array(M),uint16:new Uint16Array(M),uint32:new Uint32Array(M)})},C.T.cmap={parseTab:function(o,e,r){var B={tables:[],ids:{},off:e};o=new Uint8Array(o.buffer,e,r),e=0;var s=C.B,i=s.readUshort,E=C.T.cmap;i(o,e);var Q=i(o,e+=2);e+=2;for(var n=[],a=0;a<Q;a++){var h=i(o,e),l=i(o,e+=2);e+=2;var c=s.readUint(o,e);e+=4;var P="p"+h+"e"+l,I=n.indexOf(c);if(I==-1){I=B.tables.length;var D={};n.push(c);var w=D.format=i(o,c);w==4?D=E.parse4(o,c,D):w==12&&(D=E.parse12(o,c,D)),B.tables.push(D)}B.ids[P]!=null&&console.log("multiple tables for one platform+encoding: "+P),B.ids[P]=I}return B},parse4:function(o,e,r){var B=C.B,s=B.readUshort,i=B.readUshorts,E=e,Q=s(o,e+=2);s(o,e+=2);var n=s(o,e+=2);e+=2;var a=n>>>1;r.searchRange=s(o,e),e+=2,r.entrySelector=s(o,e),e+=2,r.rangeShift=s(o,e),e+=2,r.endCount=i(o,e,a),e+=2*a,e+=2,r.startCount=i(o,e,a),e+=2*a,r.idDelta=[];for(var h=0;h<a;h++)r.idDelta.push(B.readShort(o,e)),e+=2;return r.idRangeOffset=i(o,e,a),e+=2*a,r.glyphIdArray=i(o,e,E+Q-e>>1),r},parse12:function(o,e,r){var B=C.B.readUint;B(o,e+=4),B(o,e+=4);var s=3*B(o,e+=4);e+=4;for(var i=r.groups=new Uint32Array(s),E=0;E<s;E+=3)i[E]=B(o,e+(E<<2)),i[E+1]=B(o,e+(E<<2)+4),i[E+2]=B(o,e+(E<<2)+8);return r}},C.T.head={parseTab:function(o,e,r){var B=C.B,s={};return e+=18,s.unitsPerEm=B.readUshort(o,e),e+=2,e+=16,s.xMin=B.readShort(o,e),e+=2,s.yMin=B.readShort(o,e),e+=2,s.xMax=B.readShort(o,e),e+=2,s.yMax=B.readShort(o,e),e+=2,e+=6,s.indexToLocFormat=B.readShort(o,e),s}},C.T.hhea={parseTab:function(o,e,r){var B=C.B,s={};e+=4;for(var i=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],E=0;E<i.length;E++){var Q=i[E],n=Q=="advanceWidthMax"||Q=="numberOfHMetrics"?B.readUshort:B.readShort;s[Q]=n(o,e+2*E)}return s}},C.T.hmtx={parseTab:function(o,e,r,B){for(var s=C.B,i=[],E=[],Q=B.maxp.numGlyphs,n=B.hhea.numberOfHMetrics,a=0,h=0,l=0;l<n;)a=s.readUshort(o,e+(l<<2)),h=s.readShort(o,e+(l<<2)+2),i.push(a),E.push(h),l++;for(;l<Q;)i.push(a),E.push(h),l++;return{aWidth:i,lsBearing:E}}},C.T.maxp={parseTab:function(o,e,r){var B=C.B,s=B.readUshort,i={};return B.readUint(o,e),e+=4,i.numGlyphs=s(o,e),e+=2,i}},C.T.loca={parseTab:function(o,e,r,B){var s=C.B,i=[],E=B.head.indexToLocFormat,Q=B.maxp.numGlyphs+1;if(E==0)for(var n=0;n<Q;n++)i.push(s.readUshort(o,e+(n<<1))<<1);if(E==1)for(n=0;n<Q;n++)i.push(s.readUint(o,e+(n<<2)));return i}},C.T.glyf={parseTab:function(o,e,r,B){for(var s=[],i=B.maxp.numGlyphs,E=0;E<i;E++)s.push(null);return s},VA:function(o,e){var r=C.B,B=o._data,s=o.loca;if(s[e]==s[e+1])return null;var i=C.findTable(B,"glyf",o._offset)[0]+s[e],E={};if(E.noc=r.readShort(B,i),i+=2,E.xMin=r.readShort(B,i),i+=2,E.yMin=r.readShort(B,i),i+=2,E.xMax=r.readShort(B,i),i+=2,E.yMax=r.readShort(B,i),i+=2,E.xMin>=E.xMax||E.yMin>=E.yMax)return null;if(E.noc>0){E.endPts=[];for(var Q=0;Q<E.noc;Q++)E.endPts.push(r.readUshort(B,i)),i+=2;var n=r.readUshort(B,i);if(i+=2,B.length-i<n)return null;i+=n;var a=E.endPts[E.noc-1]+1;for(E.flags=[],Q=0;Q<a;Q++){var h=B[i];if(i++,E.flags.push(h),8&h){var l=B[i];i++;for(var c=0;c<l;c++)E.flags.push(h),Q++}}for(E.xs=[],Q=0;Q<a;Q++){var P=!!(2&E.flags[Q]),I=!!(16&E.flags[Q]);P?(E.xs.push(I?B[i]:-B[i]),i++):I?E.xs.push(0):(E.xs.push(r.readShort(B,i)),i+=2)}for(E.ys=[],Q=0;Q<a;Q++)P=!!(4&E.flags[Q]),I=!!(32&E.flags[Q]),P?(E.ys.push(I?B[i]:-B[i]),i++):I?E.ys.push(0):(E.ys.push(r.readShort(B,i)),i+=2);var D=0,w=0;for(Q=0;Q<a;Q++)D+=E.xs[Q],w+=E.ys[Q],E.xs[Q]=D,E.ys[Q]=w}else E.parts=[];return E}},typeof module<"u"&&module.exports?module.exports=C:typeof window<"u"&&(window.Typr=C);class QA{extractCharacters(e){var B;const r=[];return(B=e==null?void 0:e.cmap)!=null&&B.tables?(e.cmap.tables.forEach(s=>{if(s.format===4){const i=this.RA(s);r.push(...i)}else if(s.format===12){const i=this.HA(s);r.push(...i)}}),[...new Set(r)]):[]}RA(e){const r=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return r;for(let B=0;B<e.startCount.length;B++){const s=e.startCount[B],i=e.endCount[B];if(s!==65535||i!==65535){for(let E=s;E<=i;E++)if(this.zA(e,E,B)>0){const Q=String.fromCodePoint(E);r.push(Q)}}}return r}HA(e){const r=[];if(!e.groups)return r;for(let B=0;B<e.groups.length;B+=3){const s=e.groups[B],i=e.groups[B+1],E=e.groups[B+2];for(let Q=s;Q<=i;Q++)if(E+(Q-s)>0){const n=String.fromCodePoint(Q);r.push(n)}}return r}zA(e,r,B){if(e.idRangeOffset[B]===0)return r+e.idDelta[B]&65535;{const s=e.idRangeOffset[B]/2+(r-e.startCount[B])-(e.startCount.length-B);if(s>=0&&e.glyphIdArray&&s<e.glyphIdArray.length){const i=e.glyphIdArray[s];if(i!==0)return i+e.idDelta[B]&65535}}return 0}filterProblematicCharacters(e){return e.filter(r=>this.JA(r))}JA(e){const r=e.codePointAt(0)||0;return!(r>=0&&r<=31&&r!==9&&r!==10&&r!==13||r>=127&&r<=159)}}class oA{constructor(e){g(this,"LA");g(this,"KA");g(this,"WA");this.WA=e,this.LA=document.createElement("canvas"),this.KA=this.LA.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,r,B,s){const i=e.length,E=Math.ceil(Math.sqrt(i)),Q=Math.ceil(i/E),n=r.width*E,a=r.height*Q;this.jA(n,a,B,s),this.ZA(e,r,E,B),this.NA();const h=this.WA.TA(n,a,{filter:"nearest"});return h.update(this.LA),{framebuffer:h,columns:E,rows:Q}}jA(e,r,B,s){this.LA.width=e,this.LA.height=r,this.LA.style.width=e+"px",this.LA.style.height=e+"px",this.KA.imageSmoothingEnabled=!1,this.LA.style.imageRendering="pixelated",this.KA.fillStyle="black",this.KA.fillRect(0,0,e,r),this.KA.font=`${B}px ${s}`,this.KA.textBaseline="top",this.KA.textAlign="left",this.KA.fillStyle="white"}ZA(e,r,B,s){for(let i=0;i<e.length;i++){const E=i%B,Q=Math.floor(i/B),n=E*r.width+.5*r.width,a=Q*r.height+.5*r.height,h=Math.round(n-.5*r.width),l=Math.round(a-.5*s);this.KA.fillText(e[i].character,h,l)}}NA(e=128){const r=this.KA.getImageData(0,0,this.LA.width,this.LA.height),B=r.data;for(let s=0;s<B.length;s+=4){const i=.299*B[s]+.587*B[s+1]+.114*B[s+2]>e+32?255:0;B[s]=i,B[s+1]=i,B[s+2]=i}this.KA.putImageData(r,0,0)}}class gA{constructor(){g(this,"XA");g(this,"qA");this.XA=document.createElement("canvas"),this.qA=this.XA.getContext("2d")}calculateMaxGlyphDimensions(e,r,B){this.qA.font=`${r}px ${B}`;let s=0,i=0;for(const E of e){const Q=this.qA.measureText(E);s=Math.max(s,Q.width),i=Math.max(i,Q.actualBoundingBoxAscent+Q.actualBoundingBoxDescent)}return{width:s,height:i}}}class nA{createCharacterObjects(e,r){return e.map((B,s)=>{const i=B.codePointAt(0)||0,E=this.At(s);let Q=0;if(r.hmtx&&r.hmtx.aWidth){const n=this.tt(r,i);n>0&&r.hmtx.aWidth[n]!==void 0&&(Q=r.hmtx.aWidth[n])}return{character:B,unicode:i,color:E,advanceWidth:Q}})}tt(e,r){const B=e.cmap;if(!B||!B.tables)return 0;for(const s of B.tables)if(s.format===4){for(let i=0;i<s.startCount.length;i++)if(r>=s.startCount[i]&&r<=s.endCount[i]){if(s.idRangeOffset[i]===0)return r+s.idDelta[i]&65535;{const E=s.idRangeOffset[i]/2+(r-s.startCount[i])-(s.startCount.length-i);if(E>=0&&E<s.glyphIdArray.length){const Q=s.glyphIdArray[E];if(Q!==0)return Q+s.idDelta[i]&65535}}}}return 0}At(e){return[e%256,Math.floor(e/256)%256,Math.floor(e/65536)%256]}getCharacterColor(e,r){if(!f.C(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const B=r.find(s=>s.character===e);return B?B.color:[0,0,0]}getCharacterColors(e,r){return f.C(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?e.split("").map(B=>this.getCharacterColor(B,r)||[0,0,0]):[[0,0,0]]}}class j{constructor(e,r=16){g(this,"et");g(this,"Bt",[]);g(this,"Qt");g(this,"st",16);g(this,"rt",0);g(this,"it",0);g(this,"Et",{width:0,height:0});g(this,"gt");g(this,"ot","UrsaFont");g(this,"nt");g(this,"ht");g(this,"Dt");g(this,"lt");this.st=r,this.nt=new QA,this.ht=new oA(e),this.Dt=new gA,this.lt=new nA}async Ct(e){let r;if(e){const B=await fetch(e);if(!B.ok)throw new u(`Failed to load font file: ${B.status} ${B.statusText}`);r=await B.arrayBuffer()}else r=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.ct(r),this.et=C.parse(r)[0],await this.ut()}Pt(e){if(e===void 0)return this.st;this.st=e,this.Et=this.Dt.calculateMaxGlyphDimensions(this.Bt.map(B=>B.character),this.st,this.ot);const r=this.ht.createTextureAtlas(this.Bt,this.Et,this.st,this.ot);this.Qt=r.framebuffer,this.rt=r.columns,this.it=r.rows}async It(e){try{const r=await fetch(e);if(!r.ok)throw new u(`Failed to load font file: ${r.status} ${r.statusText}`);const B=await r.arrayBuffer();await this.ct(B);const
|
|
7
|
+
`,B}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(r=>u.i(r)).join(", ")}]`:`[${e.slice(0,3).map(r=>u.i(r)).join(", ")}, ... +${e.length-3} more]`;if(typeof e=="object"){const r=Object.keys(e);return r.length===0?"{}":r.length<=3?`{ ${r.map(B=>`${B}: ${u.i(e[B])}`).join(", ")} }`:`{ ${r.slice(0,2).map(B=>`${B}: ${u.i(e[B])}`).join(", ")}, ... +${r.length-2} more }`}return e+""}}var b=(o=>(o[o.SILENT=0]="SILENT",o[o.WARNING=1]="WARNING",o[o.ERROR=2]="ERROR",o[o.THROW=3]="THROW",o))(b||{});const v=class v{constructor(){g(this,"h",{globalLevel:3})}static D(){return v.o||(v.o=new v),v.o}l(e,r){const B="%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(B,i),console.warn(u.A(e,r)),console.groupEnd(),!1;case 2:return console.group(B,i),console.error(u.A(e,r)),console.groupEnd(),!1;default:throw new u(e,r)}}C(e,r,B){return!!e||(this.l(r,B),!1)}u(e){this.h.globalLevel=e}};g(v,"o",null);let L=v;const f=L.D(),N=new WeakMap;function S(o,e){N.set(o,e)}function V(o){return N.get(o)}class K{constructor(e,r,B=r,i={}){g(this,"P");g(this,"I");g(this,"m");g(this,"p");g(this,"_");g(this,"h");g(this,"v",null);g(this,"M",null);this.P=e,this.p=r,this._=B,this.h={filter:"nearest",wrap:"clamp",format:"rgba",type:"unsigned_byte",...i},this.m=this.G(),this.I=e.createFramebuffer(),this.F()}Y(e){const{P:r}=this,B=r.getParameter(r.FRAMEBUFFER_BINDING);r.bindFramebuffer(r.FRAMEBUFFER,this.I);try{return e()}finally{r.bindFramebuffer(r.FRAMEBUFFER,B)}}G(){const{P:e}=this,r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);const B=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,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,B),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,i),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,i),this.$(),r}$(){const{P:e}=this,r=this.h.type==="float"?e.FLOAT:e.UNSIGNED_BYTE;e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.p,this._,0,e.RGBA,r,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:r}=this;r.bindTexture(r.TEXTURE_2D,this.m),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),r.bindTexture(r.TEXTURE_2D,null)}updatePixels(e,r,B){const{P:i}=this;i.bindTexture(i.TEXTURE_2D,this.m),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,r,B,0,i.RGBA,i.UNSIGNED_BYTE,e),i.bindTexture(i.TEXTURE_2D,null)}resize(e,r){const{P:B}=this;this.p=e,this._=r,this.M=null,B.bindTexture(B.TEXTURE_2D,this.m),this.$(),B.bindTexture(B.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._),S(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),S(e,this.v.viewport),this.v=null}loadPixels(){const{P:e}=this;this.M||(this.M=new Uint8Array(this.p*this._*4)),this.Y(()=>{e.readPixels(0,0,this.p,this._,e.RGBA,e.UNSIGNED_BYTE,this.M)})}get(e,r,B,i){const{P:s}=this;if(e===void 0&&r===void 0){const E=new Uint8Array(this.p*this._*4);return this.Y(()=>(s.readPixels(0,0,this.p,this._,s.RGBA,s.UNSIGNED_BYTE,E),E))}if(B===void 0&&i===void 0){(e<0||r<0||e>=this.p||r>=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)),r=Math.max(0,Math.min(r,this._-1)));const E=new Uint8Array(4);return this.Y(()=>(s.readPixels(e,r,1,1,s.RGBA,s.UNSIGNED_BYTE,E),[E[0],E[1],E[2],E[3]]))}{e=Math.max(0,Math.min(e,this.p-1)),r=Math.max(0,Math.min(r,this._-1)),B=Math.max(1,Math.min(B,this.p-e)),i=Math.max(1,Math.min(i,this._-r));const E=new Uint8Array(B*i*4);return this.Y(()=>(s.readPixels(e,r,B,i,s.RGBA,s.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 x{constructor(e,r,B){g(this,"P");g(this,"O");g(this,"U",new Map);g(this,"k",new Map);g(this,"V",0);g(this,"R");this.P=e,this.O=this.H(r,B),this.R=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),this.J()}J(){const e=this.P.getProgramParameter(this.O,this.P.ACTIVE_UNIFORMS);for(let r=0;r<e;r++){const B=this.P.getActiveUniform(this.O,r);if(B){const i=this.P.getUniformLocation(this.O,B.name);i&&(this.U.set(B.name,i),this.k.set(B.name,B.type))}}}H(e,r){const B=this.L(this.P.VERTEX_SHADER,e),i=this.L(this.P.FRAGMENT_SHADER,r),s=this.P.createProgram();if(this.P.attachShader(s,B),this.P.attachShader(s,i),this.P.linkProgram(s),!this.P.getProgramParameter(s,this.P.LINK_STATUS)){const E=this.P.getProgramInfoLog(s);throw Error("Shader program link error: "+E)}return this.P.deleteShader(B),this.P.deleteShader(i),s}L(e,r){const B=this.P.createShader(e);if(this.P.shaderSource(B,r),this.P.compileShader(B),!this.P.getShaderParameter(B,this.P.COMPILE_STATUS)){const i=this.P.getShaderInfoLog(B);throw this.P.deleteShader(B),Error("Shader compilation error: "+i)}return B}K(){this.P.useProgram(this.O),this.W()}setUniform(e,r){const B=this.U.get(e);if(B)if(typeof r=="number")this.j(e)?this.P.uniform1i(B,Math.floor(r)):this.P.uniform1f(B,r);else if(typeof r=="boolean")this.P.uniform1i(B,r?1:0);else if(Array.isArray(r))switch(r.length){case 2:this.P.uniform2f(B,r[0],r[1]);break;case 3:this.P.uniform3f(B,r[0],r[1],r[2]);break;case 4:this.P.uniform4f(B,r[0],r[1],r[2],r[3]);break;default:console.warn(`Unsupported array length ${r.length} for uniform '${e}'`)}else if(r instanceof WebGLTexture){const i=this.Z();this.P.uniform1i(B,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,r)}else if(r instanceof K){const i=this.Z();this.P.uniform1i(B,i),this.P.activeTexture(this.P.TEXTURE0+i),this.P.bindTexture(this.P.TEXTURE_2D,r.texture)}else console.warn(`Unsupported uniform type for '${e}':`,typeof r)}Z(){return this.V>=this.R&&console.warn(`Exceeded maximum texture units (${this.R}). Texture may not render correctly.`),this.V++}j(e){const r=this.k.get(e);return!!r&&(r===this.P.INT||r===this.P.INT_VEC2||r===this.P.INT_VEC3||r===this.P.INT_VEC4||r===this.P.SAMPLER_2D||r===this.P.SAMPLER_CUBE)}get glProgram(){return this.O}S(){this.P.deleteProgram(this.O)}W(){this.V=0}}class X{constructor(e){g(this,"P");g(this,"N",null);g(this,"X",16);g(this,"q",new Map);this.P=e}AA(){if(this.N)return;const e=this.P;this.N=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this.N)}tA(){const e=this.P,r=e.getParameter(e.CURRENT_PROGRAM);let B=this.q.get(r);return B||(B={a_position:e.getAttribLocation(r,"a_position"),a_texCoord:e.getAttribLocation(r,"a_texCoord")},this.q.set(r,B)),e.enableVertexAttribArray(B.a_position),e.vertexAttribPointer(B.a_position,2,e.FLOAT,!1,this.X,0),e.enableVertexAttribArray(B.a_texCoord),e.vertexAttribPointer(B.a_texCoord,2,e.FLOAT,!1,this.X,8),{positionLoc:B.a_position,texLoc:B.a_texCoord}}eA(e,r){const B=this.P;B.disableVertexAttribArray(e),B.disableVertexAttribArray(r)}BA(e,r){const B=this.P,i=V(B)||[0,0,B.canvas.width,B.canvas.height];return{nx:e/i[2]*2-1,ny:1-r/i[3]*2}}QA(e,r,B,i){const s=this.P;this.AA(),s.bindBuffer(s.ARRAY_BUFFER,this.N);const E=new Float32Array([e,i,0,0,B,i,1,0,e,r,0,1,e,r,0,1,B,i,1,0,B,r,1,1]);s.bufferData(s.ARRAY_BUFFER,E,s.DYNAMIC_DRAW)}S(){this.N&&this.P.deleteBuffer(this.N)}}class iA extends X{constructor(e){super(e)}sA(e,r,B,i){const s=this.BA(e,r),E=this.BA(e+B,r+i);this.QA(s.nx,s.ny,E.nx,E.ny);const Q=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(Q.positionLoc,Q.texLoc)}rA(e,r,B,i,s){this.sA(e,r,B,s),this.sA(e+B-s,r,s,i),this.sA(e,r+i-s,B,s),this.sA(e,r,s,i)}}class sA extends X{constructor(e){super(e)}iA(e,r,B,i,s){const E=B-e,Q=i-r,n=Math.hypot(E,Q);if(n===0){const h=s/2,l=this.BA(e-h,r-h),c=this.BA(e+h,r+h);this.QA(l.nx,l.ny,c.nx,c.ny)}else{const h=-Q/n,l=E/n,c=s/2,P=e+h*c,d=r+l*c,D=e-h*c,w=r-l*c,p=B+h*c,m=i+l*c,y=B-h*c,_=i-l*c,O=this.BA(P,d),T=this.BA(D,w),G=this.BA(p,m),BA=this.BA(y,_),U=this.P;this.AA(),U.bindBuffer(U.ARRAY_BUFFER,this.N);const UA=new Float32Array([O.nx,O.ny,0,0,T.nx,T.ny,0,1,G.nx,G.ny,1,0,T.nx,T.ny,0,1,BA.nx,BA.ny,1,1,G.nx,G.ny,1,0]);U.bufferData(U.ARRAY_BUFFER,UA,U.DYNAMIC_DRAW)}const a=this.tA();this.P.drawArrays(this.P.TRIANGLES,0,6),this.eA(a.positionLoc,a.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 EA{constructor(e){g(this,"P");g(this,"EA");g(this,"gA");g(this,"oA",null);g(this,"nA");g(this,"aA");g(this,"hA",[1,1,1,1]);g(this,"DA",!0);g(this,"lA",[0,0,0,1]);g(this,"CA",1);g(this,"cA",!0);g(this,"uA",0);g(this,"PA",[]);this.P=e,this.EA=new x(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 x(this.P,W,"precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}"),this.nA=new iA(this.P),this.aA=new sA(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),S(this.P,[0,0,this.P.canvas.width,this.P.canvas.height])}IA(e){this.oA!==e&&(this.oA=e,e.K())}wA(e,r,B,i){if(this.DA=!0,r===void 0&&B===void 0&&i===void 0){const s=e/255;this.hA=[s,s,s,1]}else if(B!==void 0&&i===void 0)this.hA=[e/255,r/255,B/255,1];else{if(B===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,r/255,B/255,i/255]}}fA(e,r,B,i){if(this.cA=!0,r===void 0&&B===void 0&&i===void 0){const s=e/255;this.lA=[s,s,s,1]}else if(B!==void 0&&i===void 0)this.lA=[e/255,r/255,B/255,1];else{if(B===void 0||i===void 0)throw Error("Invalid stroke parameters. Use stroke(gray), stroke(r,g,b), or stroke(r,g,b,a)");this.lA=[e/255,r/255,B/255,i/255]}}dA(e){if(e<0)throw Error("Stroke weight must be non-negative");this.CA=e}mA(){this.cA=!1}pA(){this.DA=!1}_A(e){this.uA=e}vA(){this.PA.push({fillColor:[...this.hA],fillMode:this.DA,strokeColor:[...this.lA],strokeWeight:this.CA,strokeMode:this.cA,rotation:this.uA})}bA(){const e=this.PA.pop();e?(this.hA=e.fillColor,this.DA=e.fillMode,this.lA=e.strokeColor,this.CA=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,r){return new x(this.P,e,r)}MA(e){return new x(this.P,W,e)}GA(e,r){this.oA.setUniform(e,r)}FA(e,r,B,i){if(this.oA!==null){const{centerX:l,centerY:c,radians:P,aspectRatio:d}=this.YA(e,r,B,i);return this.GA("u_rotation",P),this.GA("u_center",[l,c]),this.GA("u_aspectRatio",d),this.nA.sA(e,r,B,i),void(this.oA=null)}const s=this.gA;let E=0,Q=0,n=0,a=1;const h=this.YA(e,r,B,i);E=h.centerX,Q=h.centerY,n=h.radians,a=h.aspectRatio,this.DA&&(this.IA(s),this.GA("u_color",this.hA),this.GA("u_rotation",n),this.GA("u_center",[E,Q]),this.GA("u_aspectRatio",a),this.nA.sA(e,r,B,i)),this.cA&&this.CA>0&&(this.IA(s),this.GA("u_color",this.lA),this.GA("u_rotation",n),this.GA("u_center",[E,Q]),this.GA("u_aspectRatio",a),this.nA.rA(e,r,B,i,this.CA)),this.oA=null}$A(e,r,B,i){if(this.oA!==null){const D=(e+B)/2,w=(r+i)/2,p=Math.abs(B-e)||1,m=Math.abs(i-r)||1,{centerX:y,centerY:_,radians:O,aspectRatio:T}=this.YA(D-p/2,w-m/2,p,m);this.GA("u_rotation",O),this.GA("u_center",[y,_]),this.GA("u_aspectRatio",T);const G=this.CA>0?this.CA:1;return this.aA.iA(e,r,B,i,G),void(this.oA=null)}if(!this.cA||this.CA<=0)return;const s=this.gA,E=(e+B)/2,Q=(r+i)/2,n=Math.abs(B-e)||1,a=Math.abs(i-r)||1,h=this.uA!==0;let l=0,c=0,P=0,d=1;if(h){const D=this.YA(E-n/2,Q-a/2,n,a);l=D.centerX,c=D.centerY,P=D.radians,d=D.aspectRatio}this.IA(s),this.GA("u_color",this.lA),h&&(this.GA("u_rotation",P),this.GA("u_center",[l,c]),this.GA("u_aspectRatio",d)),this.aA.iA(e,r,B,i,this.CA)}YA(e,r,B,i){const s=V(this.P)||[0,0,this.P.canvas.width,this.P.canvas.height],E=s[2],Q=s[3],n=E/Q;return{centerX:(e+B/2)/E*2-1,centerY:1-(r+i/2)/Q*2,radians:this.uA*Math.PI/180,aspectRatio:n}}TA(e,r,B={}){return new K(this.P,e,r,B)}SA(e,r=e,B=e,i=255){this.OA(e/255,r/255,B/255,i/255)}OA(e=0,r=0,B=0,i=0){this.P.clearColor(e,r,B,i),this.P.clear(this.P.COLOR_BUFFER_BIT)}UA(){this.P.viewport(0,0,this.P.canvas.width,this.P.canvas.height),S(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,r,B,i,s){const E=this.P,Q=i??e.width,n=s??e.height;this.IA(this.EA),this.GA("u_texture",e.texture);const a=this.YA(r,B,Q,n);this.GA("u_rotation",a.radians),this.GA("u_center",[a.centerX,a.centerY]),this.GA("u_aspectRatio",a.aspectRatio),this.nA.sA(r,B,Q,n),E.bindTexture(E.TEXTURE_2D,null),this.oA=null}}var M,C={parse:function(o){var e=function(r,B,i,s){var E=C.T,Q={cmap:E.cmap,head:E.head,hhea:E.hhea,maxp:E.maxp,hmtx:E.hmtx,loca:E.loca,glyf:E.glyf},n={_data:r,_index:B,_offset:i};for(var a in Q){var h=C.findTable(r,a,i);if(h){var l=h[0],c=s[l];c==null&&(c=Q[a].parseTab(r,l,h[1],n)),n[a]=s[l]=c}}return n}(new Uint8Array(o),0,0,{});return[e]},findTable:function(o,e,r){for(var B=C.B,i=B.readUshort(o,r+4),s=r+12,E=0;E<i;E++){var Q=B.readASCII(o,s,4);B.readUint(o,s+4);var n=B.readUint(o,s+8),a=B.readUint(o,s+12);if(Q==e)return[n,a];s+=16}return null},T:{}};C.B={readShort:function(o,e){return C.B.t.uint16[0]=o[e]<<8|o[e+1],C.B.t.int16[0]},readUshort:function(o,e){return o[e]<<8|o[e+1]},readUshorts:function(o,e,r){for(var B=[],i=0;i<r;i++)B.push(C.B.readUshort(o,e+2*i));return B},readUint:function(o,e){var r=C.B.t.uint8;return r[3]=o[e],r[2]=o[e+1],r[1]=o[e+2],r[0]=o[e+3],C.B.t.uint32[0]},readASCII:function(o,e,r){for(var B="",i=0;i<r;i++)B+=String.fromCharCode(o[e+i]);return B},t:(M=new ArrayBuffer(8),{uint8:new Uint8Array(M),int16:new Int16Array(M),uint16:new Uint16Array(M),uint32:new Uint32Array(M)})},C.T.cmap={parseTab:function(o,e,r){var B={tables:[],ids:{},off:e};o=new Uint8Array(o.buffer,e,r),e=0;var i=C.B,s=i.readUshort,E=C.T.cmap;s(o,e);var Q=s(o,e+=2);e+=2;for(var n=[],a=0;a<Q;a++){var h=s(o,e),l=s(o,e+=2);e+=2;var c=i.readUint(o,e);e+=4;var P="p"+h+"e"+l,d=n.indexOf(c);if(d==-1){d=B.tables.length;var D={};n.push(c);var w=D.format=s(o,c);w==4?D=E.parse4(o,c,D):w==12&&(D=E.parse12(o,c,D)),B.tables.push(D)}B.ids[P]!=null&&console.log("multiple tables for one platform+encoding: "+P),B.ids[P]=d}return B},parse4:function(o,e,r){var B=C.B,i=B.readUshort,s=B.readUshorts,E=e,Q=i(o,e+=2);i(o,e+=2);var n=i(o,e+=2);e+=2;var a=n>>>1;r.searchRange=i(o,e),e+=2,r.entrySelector=i(o,e),e+=2,r.rangeShift=i(o,e),e+=2,r.endCount=s(o,e,a),e+=2*a,e+=2,r.startCount=s(o,e,a),e+=2*a,r.idDelta=[];for(var h=0;h<a;h++)r.idDelta.push(B.readShort(o,e)),e+=2;return r.idRangeOffset=s(o,e,a),e+=2*a,r.glyphIdArray=s(o,e,E+Q-e>>1),r},parse12:function(o,e,r){var B=C.B.readUint;B(o,e+=4),B(o,e+=4);var i=3*B(o,e+=4);e+=4;for(var s=r.groups=new Uint32Array(i),E=0;E<i;E+=3)s[E]=B(o,e+(E<<2)),s[E+1]=B(o,e+(E<<2)+4),s[E+2]=B(o,e+(E<<2)+8);return r}},C.T.head={parseTab:function(o,e,r){var B=C.B,i={};return e+=18,i.unitsPerEm=B.readUshort(o,e),e+=2,e+=16,i.xMin=B.readShort(o,e),e+=2,i.yMin=B.readShort(o,e),e+=2,i.xMax=B.readShort(o,e),e+=2,i.yMax=B.readShort(o,e),e+=2,e+=6,i.indexToLocFormat=B.readShort(o,e),i}},C.T.hhea={parseTab:function(o,e,r){var B=C.B,i={};e+=4;for(var s=["ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","res0","res1","res2","res3","metricDataFormat","numberOfHMetrics"],E=0;E<s.length;E++){var Q=s[E],n=Q=="advanceWidthMax"||Q=="numberOfHMetrics"?B.readUshort:B.readShort;i[Q]=n(o,e+2*E)}return i}},C.T.hmtx={parseTab:function(o,e,r,B){for(var i=C.B,s=[],E=[],Q=B.maxp.numGlyphs,n=B.hhea.numberOfHMetrics,a=0,h=0,l=0;l<n;)a=i.readUshort(o,e+(l<<2)),h=i.readShort(o,e+(l<<2)+2),s.push(a),E.push(h),l++;for(;l<Q;)s.push(a),E.push(h),l++;return{aWidth:s,lsBearing:E}}},C.T.maxp={parseTab:function(o,e,r){var B=C.B,i=B.readUshort,s={};return B.readUint(o,e),e+=4,s.numGlyphs=i(o,e),e+=2,s}},C.T.loca={parseTab:function(o,e,r,B){var i=C.B,s=[],E=B.head.indexToLocFormat,Q=B.maxp.numGlyphs+1;if(E==0)for(var n=0;n<Q;n++)s.push(i.readUshort(o,e+(n<<1))<<1);if(E==1)for(n=0;n<Q;n++)s.push(i.readUint(o,e+(n<<2)));return s}},C.T.glyf={parseTab:function(o,e,r,B){for(var i=[],s=B.maxp.numGlyphs,E=0;E<s;E++)i.push(null);return i},VA:function(o,e){var r=C.B,B=o._data,i=o.loca;if(i[e]==i[e+1])return null;var s=C.findTable(B,"glyf",o._offset)[0]+i[e],E={};if(E.noc=r.readShort(B,s),s+=2,E.xMin=r.readShort(B,s),s+=2,E.yMin=r.readShort(B,s),s+=2,E.xMax=r.readShort(B,s),s+=2,E.yMax=r.readShort(B,s),s+=2,E.xMin>=E.xMax||E.yMin>=E.yMax)return null;if(E.noc>0){E.endPts=[];for(var Q=0;Q<E.noc;Q++)E.endPts.push(r.readUshort(B,s)),s+=2;var n=r.readUshort(B,s);if(s+=2,B.length-s<n)return null;s+=n;var a=E.endPts[E.noc-1]+1;for(E.flags=[],Q=0;Q<a;Q++){var h=B[s];if(s++,E.flags.push(h),8&h){var l=B[s];s++;for(var c=0;c<l;c++)E.flags.push(h),Q++}}for(E.xs=[],Q=0;Q<a;Q++){var P=!!(2&E.flags[Q]),d=!!(16&E.flags[Q]);P?(E.xs.push(d?B[s]:-B[s]),s++):d?E.xs.push(0):(E.xs.push(r.readShort(B,s)),s+=2)}for(E.ys=[],Q=0;Q<a;Q++)P=!!(4&E.flags[Q]),d=!!(32&E.flags[Q]),P?(E.ys.push(d?B[s]:-B[s]),s++):d?E.ys.push(0):(E.ys.push(r.readShort(B,s)),s+=2);var D=0,w=0;for(Q=0;Q<a;Q++)D+=E.xs[Q],w+=E.ys[Q],E.xs[Q]=D,E.ys[Q]=w}else E.parts=[];return E}},typeof module<"u"&&module.exports?module.exports=C:typeof window<"u"&&(window.Typr=C);class QA{extractCharacters(e){var B;const r=[];return(B=e==null?void 0:e.cmap)!=null&&B.tables?(e.cmap.tables.forEach(i=>{if(i.format===4){const s=this.RA(i);r.push(...s)}else if(i.format===12){const s=this.HA(i);r.push(...s)}}),[...new Set(r)]):[]}RA(e){const r=[];if(!(e.startCount&&e.endCount&&e.idRangeOffset&&e.idDelta))return r;for(let B=0;B<e.startCount.length;B++){const i=e.startCount[B],s=e.endCount[B];if(i!==65535||s!==65535){for(let E=i;E<=s;E++)if(this.zA(e,E,B)>0){const Q=String.fromCodePoint(E);r.push(Q)}}}return r}HA(e){const r=[];if(!e.groups)return r;for(let B=0;B<e.groups.length;B+=3){const i=e.groups[B],s=e.groups[B+1],E=e.groups[B+2];for(let Q=i;Q<=s;Q++)if(E+(Q-i)>0){const n=String.fromCodePoint(Q);r.push(n)}}return r}zA(e,r,B){if(e.idRangeOffset[B]===0)return r+e.idDelta[B]&65535;{const i=e.idRangeOffset[B]/2+(r-e.startCount[B])-(e.startCount.length-B);if(i>=0&&e.glyphIdArray&&i<e.glyphIdArray.length){const s=e.glyphIdArray[i];if(s!==0)return s+e.idDelta[B]&65535}}return 0}filterProblematicCharacters(e){return e.filter(r=>this.JA(r))}JA(e){const r=e.codePointAt(0)||0;return!(r>=0&&r<=31&&r!==9&&r!==10&&r!==13||r>=127&&r<=159)}}class oA{constructor(e){g(this,"LA");g(this,"KA");g(this,"WA");this.WA=e,this.LA=document.createElement("canvas"),this.KA=this.LA.getContext("2d",{willReadFrequently:!0,alpha:!1})}createTextureAtlas(e,r,B,i){const s=e.length,E=Math.ceil(Math.sqrt(s)),Q=Math.ceil(s/E),n=r.width*E,a=r.height*Q;this.jA(n,a,B,i),this.ZA(e,r,E,B),this.NA();const h=this.WA.TA(n,a,{filter:"nearest"});return h.update(this.LA),{framebuffer:h,columns:E,rows:Q}}jA(e,r,B,i){this.LA.width=e,this.LA.height=r,this.LA.style.width=e+"px",this.LA.style.height=e+"px",this.KA.imageSmoothingEnabled=!1,this.LA.style.imageRendering="pixelated",this.KA.fillStyle="black",this.KA.fillRect(0,0,e,r),this.KA.font=`${B}px ${i}`,this.KA.textBaseline="top",this.KA.textAlign="left",this.KA.fillStyle="white"}ZA(e,r,B,i){for(let s=0;s<e.length;s++){const E=s%B,Q=Math.floor(s/B),n=E*r.width+.5*r.width,a=Q*r.height+.5*r.height,h=Math.round(n-.5*r.width),l=Math.round(a-.5*i);this.KA.fillText(e[s].character,h,l)}}NA(e=128){const r=this.KA.getImageData(0,0,this.LA.width,this.LA.height),B=r.data;for(let i=0;i<B.length;i+=4){const s=.299*B[i]+.587*B[i+1]+.114*B[i+2]>e+32?255:0;B[i]=s,B[i+1]=s,B[i+2]=s}this.KA.putImageData(r,0,0)}}class gA{constructor(){g(this,"XA");g(this,"qA");this.XA=document.createElement("canvas"),this.qA=this.XA.getContext("2d")}calculateMaxGlyphDimensions(e,r,B){this.qA.font=`${r}px ${B}`;let i=0,s=0;for(const E of e){const Q=this.qA.measureText(E);i=Math.max(i,Q.width),s=Math.max(s,Q.actualBoundingBoxAscent+Q.actualBoundingBoxDescent)}return{width:i,height:s}}}class nA{createCharacterObjects(e,r){return e.map((B,i)=>{const s=B.codePointAt(0)||0,E=this.At(i);let Q=0;if(r.hmtx&&r.hmtx.aWidth){const n=this.tt(r,s);n>0&&r.hmtx.aWidth[n]!==void 0&&(Q=r.hmtx.aWidth[n])}return{character:B,unicode:s,color:E,advanceWidth:Q}})}tt(e,r){const B=e.cmap;if(!B||!B.tables)return 0;for(const i of B.tables)if(i.format===4){for(let s=0;s<i.startCount.length;s++)if(r>=i.startCount[s]&&r<=i.endCount[s]){if(i.idRangeOffset[s]===0)return r+i.idDelta[s]&65535;{const E=i.idRangeOffset[s]/2+(r-i.startCount[s])-(i.startCount.length-s);if(E>=0&&E<i.glyphIdArray.length){const Q=i.glyphIdArray[E];if(Q!==0)return Q+i.idDelta[s]&65535}}}}return 0}At(e){return[e%256,Math.floor(e/256)%256,Math.floor(e/65536)%256]}getCharacterColor(e,r){if(!f.C(typeof e=="string","Character must be a string.",{method:"getCharacterColor",providedValue:e}))return[0,0,0];const B=r.find(i=>i.character===e);return B?B.color:[0,0,0]}getCharacterColors(e,r){return f.C(typeof e=="string"&&e.length>0,"Characters must be a string with at least one character.",{method:"getCharacterColors",providedValue:e})?e.split("").map(B=>this.getCharacterColor(B,r)||[0,0,0]):[[0,0,0]]}}class j{constructor(e,r=16){g(this,"et");g(this,"Bt",[]);g(this,"Qt");g(this,"st",16);g(this,"rt",0);g(this,"it",0);g(this,"Et",{width:0,height:0});g(this,"gt");g(this,"ot","UrsaFont");g(this,"nt");g(this,"ht");g(this,"Dt");g(this,"lt");this.st=r,this.nt=new QA,this.ht=new oA(e),this.Dt=new gA,this.lt=new nA}async Ct(e){let r;if(e){const B=await fetch(e);if(!B.ok)throw new u(`Failed to load font file: ${B.status} ${B.statusText}`);r=await B.arrayBuffer()}else r=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.ct(r),this.et=C.parse(r)[0],await this.ut()}Pt(e){if(e===void 0)return this.st;this.st=e,this.Et=this.Dt.calculateMaxGlyphDimensions(this.Bt.map(B=>B.character),this.st,this.ot);const r=this.ht.createTextureAtlas(this.Bt,this.Et,this.st,this.ot);this.Qt=r.framebuffer,this.rt=r.columns,this.it=r.rows}async It(e){try{const r=await fetch(e);if(!r.ok)throw new u(`Failed to load font file: ${r.status} ${r.statusText}`);const B=await r.arrayBuffer();await this.ct(B);const i=C.parse(B);if(!i||i.length===0)throw Error("Failed to parse font file");this.et=i[0],await this.ut()}catch(r){throw new u("Failed to load font: "+(r instanceof Error?r.message:"Unknown error"),r)}}async ct(e){const r=Date.now();this.ot=this.ot==="UrsaFont"?"UrsaFont":"CustomFont_"+r,this.gt=new FontFace(this.ot,e),await this.gt.load(),document.fonts.add(this.gt)}async ut(){const e=this.nt.extractCharacters(this.et),r=this.nt.filterProblematicCharacters(e);this.Bt=this.lt.createCharacterObjects(r,this.et),this.Et=this.Dt.calculateMaxGlyphDimensions(r,this.st,this.ot);const B=this.ht.createTextureAtlas(this.Bt,this.Et,this.st,this.ot);this.Qt=B.framebuffer,this.rt=B.columns,this.it=B.rows}getCharacterColor(e){return this.lt.getCharacterColor(e,this.Bt)}getCharacterColors(e){return this.lt.getCharacterColors(e,this.Bt)}hasAllCharacters(e){if(typeof e!="string"||e.length===0)return!1;const r=new Set(this.Bt.map(B=>B.character));for(const B of e)if(!r.has(B))return!1;return!0}S(){this.Qt.S(),document.fonts.delete(this.gt)}get fontFramebuffer(){return this.Qt}get characters(){return this.Bt}get textureColumns(){return this.rt}get textureRows(){return this.it}get maxGlyphDimensions(){return this.Et}get fontSize(){return this.st}get font(){return this.et}}class Z{constructor(e,r,B){g(this,"wt");g(this,"ft");g(this,"p");g(this,"_");g(this,"dt");g(this,"_t");g(this,"vt",!1);g(this,"bt");g(this,"xt");g(this,"yt");this.bt=e,this.xt=r,this.yt=B,this.xA()}xA(){this.vt||(this.wt=Math.floor(this.bt.width/this.xt),this.ft=Math.floor(this.bt.height/this.yt)),this.Mt()}Mt(){this.p=this.wt*this.xt,this._=this.ft*this.yt,this.dt=Math.floor((this.bt.width-this.p)/2),this._t=Math.floor((this.bt.height-this._)/2)}Gt(e,r){this.xt=e,this.yt=r,this.xA()}Ft(e,r){this.vt=!0,this.wt=e,this.ft=r,this.Mt()}Yt(){this.vt=!1,this.xA()}$t(){this.vt?this.Mt():this.xA()}Tt(e){if(e===void 0)return this.vt;this.vt=e}get cellWidth(){return this.xt}get cellHeight(){return this.yt}get cols(){return this.wt}get rows(){return this.ft}get width(){return this.p}get height(){return this._}get offsetX(){return this.dt}get offsetY(){return this._t}}class q{constructor(e,r=!1,B={}){g(this,"bt");g(this,"St");g(this,"Ot");g(this,"Ut");g(this,"onTransformChange");this.St=e,this.Ot=r,this.bt=this.kt(B.width,B.height),r&&this.setupTransformObserver()}kt(e,r){var i;const B=document.createElement("canvas");if(B.className="textmodeCanvas",B.style.imageRendering="pixelated",this.Ot)B.width=e||800,B.height=r||600,document.body.appendChild(B);else{const s=this.St.getBoundingClientRect();let E=Math.round(s.width),Q=Math.round(s.height);if(this.St instanceof HTMLVideoElement){const h=this.St;(E===0||Q===0)&&h.videoWidth>0&&h.videoHeight>0&&(E=h.videoWidth,Q=h.videoHeight)}B.width=E,B.height=Q,B.style.position="absolute",B.style.pointerEvents="none";const n=window.getComputedStyle(this.St);let a=parseInt(n.zIndex||"0",10);isNaN(a)&&(a=0),B.style.zIndex=""+(a+1),this.Vt(B),(i=this.St.parentNode)==null||i.insertBefore(B,this.St.nextSibling)}return B}Vt(e){const r=this.St.getBoundingClientRect();let B=this.St.offsetParent;if(B&&B!==document.body){const i=B.getBoundingClientRect();e.style.top=r.top-i.top+"px",e.style.left=r.left-i.left+"px"}else e.style.top=r.top+window.scrollY+"px",e.style.left=r.left+window.scrollX+"px"}$t(e,r){if(this.Ot)this.bt.width=e??this.bt.width,this.bt.height=r??this.bt.height;else{const B=this.St.getBoundingClientRect();let i=Math.round(B.width),s=Math.round(B.height);if(this.St instanceof HTMLVideoElement){const E=this.St;(i===0||s===0)&&E.videoWidth>0&&E.videoHeight>0&&(i=E.videoWidth,s=E.videoHeight)}this.bt.width=i,this.bt.height=s,this.Vt(this.bt)}}Rt(){const e={alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1,depth:!1,stencil:!1,powerPreference:"high-performance"},r=this.bt.getContext("webgl2",e)||this.bt.getContext("webgl",e);if(!r)throw new u("WebGL context could not be created. Ensure your browser supports WebGL.");return r}setupTransformObserver(){this.Ut=new ResizeObserver(e=>{for(const r of e){const B=r.contentRect;!this.onTransformChange||Math.round(B.width)===this.bt.width&&Math.round(B.height)===this.bt.height||this.onTransformChange()}}),this.Ut.observe(this.bt)}S(){this.Ut&&this.Ut.disconnect();const e=this.bt.getContext("webgl")||this.bt.getContext("webgl2");if(e){const r=e.getExtension("WEBGL_lose_context");r&&r.loseContext()}this.bt.parentNode&&this.bt.parentNode.removeChild(this.bt)}get canvas(){return this.bt}get width(){return this.bt.width}get height(){return this.bt.height}}class R{constructor(e,r,B,i={}){g(this,"WA");g(this,"Ht");g(this,"zt");g(this,"Jt");g(this,"Lt");g(this,"Kt");g(this,"Wt");g(this,"jt");g(this,"h");this.WA=e,this.Ht=r,this.zt=B,this.h=i;const s=this.zt.cols,E=this.zt.rows;this.Jt=this.WA.TA(s,E),this.Lt=this.WA.TA(s,E),this.Kt=this.WA.TA(s,E),this.Wt=this.WA.TA(s,E),this.jt=this.WA.TA(s,E)}$t(){const e=this.zt.cols,r=this.zt.rows;this.Jt.resize(e,r),this.Lt.resize(e,r),this.Kt.resize(e,r),this.Wt.resize(e,r),this.jt.resize(e,r)}enabled(e){this.h.enabled=e}enable(){this.enabled(!0)}disable(){this.enabled(!1)}S(){this.Jt.S(),this.Lt.S(),this.Kt.S(),this.Wt.S(),this.jt.S()}get characterFramebuffer(){return this.Jt}get primaryColorFramebuffer(){return this.Lt}get secondaryColorFramebuffer(){return this.Kt}get rotationFramebuffer(){return this.Wt}get transformFramebuffer(){return this.jt}get options(){return this.h}}class aA{constructor(e,r){g(this,"I");g(this,"WA");g(this,"Zt");this.WA=e,this.Zt=r;const B=Math.max(this.Zt.length,1);this.I=this.WA.TA(B,1),this.Nt()}Nt(){const e=this.Zt.length;this.I.width!==e&&this.I.resize(e,1);const r=new Uint8Array(1*e*4);for(let B=0;B<e;B++){const i=this.Zt[B],s=4*B;r[s]=i[0],r[s+1]=i[1],r[s+2]=i[2],r[s+3]=255}this.I.updatePixels(r,e,1)}setColors(e){this.Zt=e,this.Nt()}get colors(){return this.Zt}get framebuffer(){return this.I}get texture(){return this.I.texture}}class z extends R{constructor(r,B,i,s={}){super(r,B,i,s);g(this,"Xt");this.Xt=new aA(this.WA,this.Ht.getCharacterColors(" .:-=+*%@#"))}characters(r){f.C(this.Ht.hasAllCharacters(r),"One or more characters do not exist in the current font.",{method:"characters",providedValue:r})&&(this.h.characters=r,this.Xt.setColors(this.Ht.getCharacterColors(r)))}characterColor(r,B,i,s=255){const E=this.qt(r,"characterColor",B,i,s);E&&(this.h.characterColor=E)}characterColorMode(r){this.Ae(r,"characterColorMode")}cellColor(r,B,i,s=255){const E=this.qt(r,"cellColor",B,i,s);E&&(this.h.cellColor=E)}cellColorMode(r){this.Ae(r,"cellColorMode")}invert(r){this.te(r,"invert","Invert")}rotation(r){if(!f.C(typeof r=="number","Rotation angle must be a number.",{method:"rotation",providedValue:r}))return;(r%=360)<0&&(r+=360);const B=255*r/360,i=Math.floor(B)/255,s=Math.round(B-i);this.h.rotation=[i,s,0,1]}flipHorizontally(r){this.te(r,"flipHorizontally","Flip horizontally")}flipVertically(r){this.te(r,"flipVertically","Flip vertically")}qt(r,B,i,s,E=255){let Q,n,a,h;if(typeof r=="string"){const l=this.ee(r);if(!l)return f.C(!1,"Invalid hex color format. Use '#FF0000', '#F00', 'FF0000', or 'F00'.",{method:B,providedValue:r}),null;[Q,n,a,h]=l}else if(Q=r,n=i!==void 0?i:r,a=s!==void 0?s:r,h=E,!f.C([Q,n,a,h].every(l=>l>=0&&l<=255),B.charAt(0).toUpperCase()+B.slice(1)+" color values must be between 0 and 255",{method:B,providedValues:{r:Q,g:n,b:a,a:h}}))return null;return[Q/255,n/255,a/255,h/255]}Ae(r,B){f.C(["sampled","fixed"].includes(r),"Invalid color mode. Must be 'sampled' or 'fixed'.",{method:B,providedValue:r})&&(this.h[B]=r)}te(r,B,i){f.C(typeof r=="boolean"||typeof r=="number"&&Number.isInteger(r),i+" must be a boolean value or an integer (0 for false, any other number for true).",{method:B,providedValue:r})&&(this.h[B]=!!r)}ee(r){return r=r.replace(/^#/,""),/^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(r)?(r.length===3&&(r=r.split("").map(B=>B+B).join("")),[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16),255]):null}}const F=`attribute vec2 a_position;\r
|
|
9
9
|
attribute vec2 a_texCoord;\r
|
|
10
10
|
varying vec2 v_uv;\r
|
|
11
11
|
\r
|
|
@@ -43,22 +43,22 @@ void main() {\r
|
|
|
43
43
|
\r
|
|
44
44
|
gl_Position = vec4(pos, 0.0, 1.0);\r
|
|
45
45
|
}\r
|
|
46
|
-
`,hA={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 k extends z{constructor(r,B,s){super(r,B,s,{...hA});g(this,"Be");g(this,"Qe");g(this,"se");g(this,"re");g(this,"ie");g(this,"Ee");this.Be=new x(r.context,F,"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.Qe=new x(r.context,F,"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.re=new x(r.context,F,"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.ie=new x(r.context,F,"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.se=new x(r.context,F,"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.Ee=this.WA.TA(this.zt.cols,this.zt.rows)}ge(r){const B=this.zt.cols,s=this.zt.rows;this.Ee.begin(),this.WA.OA(),this.WA.IA(this.Be),this.WA.GA("u_sketchTexture",r),this.WA.GA("u_gridCellDimensions",[B,s]),this.WA.GA("u_brightnessRange",this.h.brightnessRange),this.WA.FA(0,0,B,s),this.Ee.end(),this.Lt.begin(),this.WA.OA(),this.WA.IA(this.Qe),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_fillColor",this.h.characterColor),this.WA.GA("u_useFixedColor",this.h.characterColorMode==="fixed"),this.WA.FA(0,0,B,s),this.Lt.end(),this.Kt.begin(),this.WA.OA(),this.WA.IA(this.Qe),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_fillColor",this.h.cellColor),this.WA.GA("u_useFixedColor",this.h.cellColorMode==="fixed"),this.WA.FA(0,0,B,s),this.Kt.end(),this.jt.begin(),this.WA.OA(),this.WA.IA(this.re),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_invert",this.h.invert),this.WA.GA("u_flipHorizontally",this.h.flipHorizontally),this.WA.GA("u_flipVertically",this.h.flipVertically),this.WA.FA(0,0,B,s),this.jt.end(),this.Wt.begin(),this.WA.OA(),this.WA.IA(this.ie),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_rotationColor",this.h.rotation),this.WA.FA(0,0,B,s),this.Wt.end(),this.Jt.begin(),this.WA.OA(),this.WA.IA(this.se),this.WA.GA("u_colorSampleFramebuffer",this.Ee),this.WA.GA("u_charPaletteTexture",this.Xt.texture),this.WA.GA("u_charPaletteSize",[this.Xt.colors.length,1]),this.WA.GA("u_brightnessRange",this.h.brightnessRange),this.WA.FA(0,0,B,s),this.Jt.end()}$t(){super.$t(),this.Ee.resize(this.zt.cols,this.zt.rows)}brightnessRange(r){f.C(Array.isArray(r)&&r.length===2&&r.every(B=>typeof B=="number"&&B>=0&&B<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",providedValue:r})&&(this.h.brightnessRange=r)}}const lA=Object.freeze(Object.defineProperty({__proto__:null,TextmodeBrightnessConverter:k,TextmodeConverter:R,TextmodeFeatureConverter:z},Symbol.toStringTag,{value:"Module"}));class AA{constructor(e,r,B){g(this,"WA");g(this,"et");g(this,"zt");g(this,"oe");g(this,"ne");g(this,"ae");g(this,"he");g(this,"De");g(this,"Jt");g(this,"Lt");g(this,"Kt");g(this,"Wt");g(this,"jt");this.WA=e,this.et=r,this.zt=B,this.De=this.WA.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.ne=new k(e,r,B),this.ae=new R(e,r,B),this.oe=[this.ne,this.ae],this.Jt=this.WA.TA(B.cols,B.rows),this.Lt=this.WA.TA(B.cols,B.rows),this.Kt=this.WA.TA(B.cols,B.rows),this.Wt=this.WA.TA(B.cols,B.rows),this.jt=this.WA.TA(B.cols,B.rows),this.he=this.WA.TA(this.zt.width,this.zt.height)}le(e){for(const B of this.oe)B.options.enabled&&B instanceof z&&B.ge(e);const r=(B,s)=>{B.begin(),this.WA.OA();for(const i of this.oe)i.options.enabled&&this.WA.kA(s(i),0,0);B.end()};r(this.Jt,B=>B.characterFramebuffer),r(this.Lt,B=>B.primaryColorFramebuffer),r(this.Kt,B=>B.secondaryColorFramebuffer),r(this.Wt,B=>B.rotationFramebuffer),r(this.jt,B=>B.transformFramebuffer),this.he.begin(),this.WA.OA(),this.WA.IA(this.De),this.WA.GA("u_characterTexture",this.et.fontFramebuffer),this.WA.GA("u_charsetDimensions",[this.et.textureColumns,this.et.textureRows]),this.WA.GA("u_asciiCharacterTexture",this.Jt.texture),this.WA.GA("u_primaryColorTexture",this.Lt.texture),this.WA.GA("u_secondaryColorTexture",this.Kt.texture),this.WA.GA("u_transformTexture",this.jt.texture),this.WA.GA("u_rotationTexture",this.Wt.texture),this.WA.GA("u_captureTexture",e.texture),this.WA.GA("u_backgroundMode",!1),this.WA.GA("u_captureDimensions",[e.width,e.height]),this.WA.GA("u_gridCellDimensions",[this.zt.cols,this.zt.rows]),this.WA.GA("u_gridPixelDimensions",[this.zt.width,this.zt.height]),this.WA.FA(0,0,this.he.width,this.he.height),this.he.end()}add(e){if(!f.C(e==="brightness"||e==="custom",'Converter type must be either "brightness" or "custom".',{method:"add",providedValue:e}))return;let r;return r=e==="brightness"?new k(this.WA,this.et,this.zt):new R(this.WA,this.et,this.zt),this.oe.push(r),r}remove(e){if(!f.C(e instanceof R,"Parameter must be a TextmodeConverter instance.",{method:"remove",providedValue:e}))return;const r=this.oe.indexOf(e);f.C(r!==-1,"Converter instance not found in pipeline.",{method:"remove",providedValue:e,convertersCount:this.oe.length})&&this.oe.splice(r,1)}$t(){this.he.resize(this.zt.width,this.zt.height);const e=this.zt.cols,r=this.zt.rows;this.Jt.resize(e,r),this.Lt.resize(e,r),this.Kt.resize(e,r),this.Wt.resize(e,r),this.jt.resize(e,r);for(const B of this.oe)B.$t()}hasEnabledConverters(){return this.oe.some(e=>e.options.enabled)}disable(){for(const e of this.oe)e.disable()}enable(){for(const e of this.oe)e.enable()}S(){for(const e of this.oe)e.S();this.Jt.S(),this.Lt.S(),this.Kt.S(),this.Wt.S(),this.jt.S(),this.he.S(),this.De.S()}get texture(){return this.he}get characterFramebuffer(){return this.Jt}get primaryColorFramebuffer(){return this.Lt}get secondaryColorFramebuffer(){return this.Kt}get rotationFramebuffer(){return this.Wt}get transformFramebuffer(){return this.jt}get brightness(){return this.ne}get custom(){return this.ae}}const cA=o=>class extends o{fill(e,r,B,s){this.WA.wA(e,r,B,s)}stroke(e,r,B,s){this.WA.fA(e,r,B,s)}strokeWeight(e){this.WA.dA(e)}noStroke(){this.WA.mA()}noFill(){this.WA.pA()}rotate(e){this.WA._A(e)}push(){this.WA.vA()}pop(){this.WA.bA()}rect(e,r,B=1,s=1){this.WA.FA(e,r,B,s)}line(e,r,B,s){this.WA.$A(e,r,B,s)}background(e,r=e,B=e,s=255){this.WA.SA(e,r,B,s)}createShader(e,r){return this.WA.yA(e,r)}createFilterShader(e){return this.WA.MA(e)}shader(e){this.WA.IA(e)}setUniform(e,r){this.WA.GA(e,r)}};class H{Ce(e){const r=e.get("brightness"),B=r==null?void 0:r.characterFramebuffer,s=r==null?void 0:r.primaryColorFramebuffer,i=r==null?void 0:r.secondaryColorFramebuffer,E=r==null?void 0:r.transformFramebuffer,Q=r==null?void 0:r.rotationFramebuffer;return B==null||B.loadPixels(),s==null||s.loadPixels(),i==null||i.loadPixels(),E==null||E.loadPixels(),Q==null||Q.loadPixels(),{characterPixels:(B==null?void 0:B.pixels)||new Uint8Array(0),primaryColorPixels:(s==null?void 0:s.pixels)||new Uint8Array(0),secondaryColorPixels:(i==null?void 0:i.pixels)||new Uint8Array(0),transformPixels:(E==null?void 0:E.pixels)||new Uint8Array(0),rotationPixels:(Q==null?void 0:Q.pixels)||new Uint8Array(0)}}ce(e,r){return e[r]+(e[r+1]<<8)}ue(e,r){return{r:e[r],g:e[r+1],b:e[r+2],a:e[r+3]}}}class ${Pe(e,r){return new Blob([e],{type:r})}Ie(e,r,B){try{const s=this.Pe(e,B),i=URL.createObjectURL(s),E=document.createElement("a");E.href=i,E.download=r,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(i)}catch(s){throw console.error("Failed to download file:",s),Error("File download failed: "+(s instanceof Error?s.message:"Unknown error"))}}we(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}fe(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}de(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}me(){return"'textmode-export'-"+this.we()}}class CA extends H{pe(e,r,B){const s=e[B]===255,i=e[B+1]===255,E=e[B+2]===255,Q=r[B],n=r[B+1];return{isInverted:s,flipHorizontal:i,flipVertical:E,rotation:Math.round(360*(Q+n/255)/255*100)/100}}_e(e,r,B){return{x:e,y:r,cellX:e*B.cellWidth,cellY:r*B.cellHeight}}ve(e,r){const B=[];let s=0;for(let i=0;i<r.rows;i++)for(let E=0;E<r.cols;E++){const Q=4*s,n=this.ce(e.characterPixels,Q);let a=this.ue(e.primaryColorPixels,Q),h=this.ue(e.secondaryColorPixels,Q);const l=this.pe(e.transformPixels,e.rotationPixels,Q);if(l.isInverted){const P=a;a=h,h=P}const c=this._e(E,i,r);B.push({charIndex:n,primaryColor:a,secondaryColor:h,transform:l,position:c}),s++}return B}}class DA{tt(e,r){const B=e.cmap;for(const s of B.tables)if(s.format===4){for(let i=0;i<s.startCount.length;i++)if(r>=s.startCount[i]&&r<=s.endCount[i]){if(s.idRangeOffset[i]===0)return r+s.idDelta[i]&65535;{const E=s.idRangeOffset[i]/2+(r-s.startCount[i])-(s.startCount.length-i);if(E>=0&&E<s.glyphIdArray.length){const Q=s.glyphIdArray[E];if(Q!==0)return Q+s.idDelta[i]&65535}}}}return 0}be(e,r,B,s,i){const E=i/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:B+r.xMin*E,y1:s+-r.yMax*E,x2:B+r.xMax*E,y2:s+-r.yMin*E}),toSVG:()=>this.xe(r,B,s,E)}}xe(e,r,B,s){if(!e||!e.xs)return"";const{xs:i,ys:E,endPts:Q,flags:n}=e;if(!(i&&E&&Q&&n))return"";let a="",h=0;for(let l=0;l<Q.length;l++){const c=Q[l];if(!(c<h)){if(c>=h){const P=r+i[h]*s,I=B-E[h]*s;a+=`M${P.toFixed(2)},${I.toFixed(2)}`;let D=h+1;for(;D<=c;)if(1&n[D]){const w=r+i[D]*s,p=B-E[D]*s;a+=`L${w.toFixed(2)},${p.toFixed(2)}`,D++}else{const w=r+i[D]*s,p=B-E[D]*s;let m=D+1>c?h:D+1;if(1&n[m]){const y=r+i[m]*s,_=B-E[m]*s;a+=`Q${w.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${_.toFixed(2)}`,D=m+1}else{const y=(w+(r+i[m]*s))/2,_=(p+(B-E[m]*s))/2;a+=`Q${w.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${_.toFixed(2)}`,D=m}}a+="Z"}h=c+1}}return a}ye(e,r,B,s,i){const E=e.codePointAt(0)||0,Q=this.tt(r,E);let n=null;return r.glyf&&r.glyf[Q]!==null?n=r.glyf[Q]:C&&C.T&&C.T.glyf&&C.T.glyf.VA&&(n=C.T.glyf.VA(r,Q),r.glyf&&n&&(r.glyf[Q]=n)),this.be(r,n,B,s,i)}Me(e,r,B,s,i,E,Q,n){const a=B+(i-n*(Q/r.head.unitsPerEm))/2,h=s+(E+.7*Q)/2;return this.ye(e,r,a,h,Q).toSVG()||null}}class uA{constructor(){g(this,"Ge");this.Ge=new DA}Fe(e){return`<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
46
|
+
`,hA={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 k extends z{constructor(r,B,i){super(r,B,i,{...hA});g(this,"Be");g(this,"Qe");g(this,"se");g(this,"re");g(this,"ie");g(this,"Ee");this.Be=new x(r.context,F,"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.Qe=new x(r.context,F,"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.re=new x(r.context,F,"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.ie=new x(r.context,F,"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.se=new x(r.context,F,"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.Ee=this.WA.TA(this.zt.cols,this.zt.rows)}ge(r){const B=this.zt.cols,i=this.zt.rows;this.Ee.begin(),this.WA.OA(),this.WA.IA(this.Be),this.WA.GA("u_sketchTexture",r),this.WA.GA("u_gridCellDimensions",[B,i]),this.WA.GA("u_brightnessRange",this.h.brightnessRange),this.WA.FA(0,0,B,i),this.Ee.end(),this.Lt.begin(),this.WA.OA(),this.WA.IA(this.Qe),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_fillColor",this.h.characterColor),this.WA.GA("u_useFixedColor",this.h.characterColorMode==="fixed"),this.WA.FA(0,0,B,i),this.Lt.end(),this.Kt.begin(),this.WA.OA(),this.WA.IA(this.Qe),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_fillColor",this.h.cellColor),this.WA.GA("u_useFixedColor",this.h.cellColorMode==="fixed"),this.WA.FA(0,0,B,i),this.Kt.end(),this.jt.begin(),this.WA.OA(),this.WA.IA(this.re),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_invert",this.h.invert),this.WA.GA("u_flipHorizontally",this.h.flipHorizontally),this.WA.GA("u_flipVertically",this.h.flipVertically),this.WA.FA(0,0,B,i),this.jt.end(),this.Wt.begin(),this.WA.OA(),this.WA.IA(this.ie),this.WA.GA("u_sampleTexture",this.Ee),this.WA.GA("u_rotationColor",this.h.rotation),this.WA.FA(0,0,B,i),this.Wt.end(),this.Jt.begin(),this.WA.OA(),this.WA.IA(this.se),this.WA.GA("u_colorSampleFramebuffer",this.Ee),this.WA.GA("u_charPaletteTexture",this.Xt.texture),this.WA.GA("u_charPaletteSize",[this.Xt.colors.length,1]),this.WA.GA("u_brightnessRange",this.h.brightnessRange),this.WA.FA(0,0,B,i),this.Jt.end()}$t(){super.$t(),this.Ee.resize(this.zt.cols,this.zt.rows)}brightnessRange(r){f.C(Array.isArray(r)&&r.length===2&&r.every(B=>typeof B=="number"&&B>=0&&B<=255),"Brightness range must be an array of two numbers between 0 and 255.",{method:"brightnessRange",providedValue:r})&&(this.h.brightnessRange=r)}}const lA=Object.freeze(Object.defineProperty({__proto__:null,TextmodeBrightnessConverter:k,TextmodeConverter:R,TextmodeFeatureConverter:z},Symbol.toStringTag,{value:"Module"}));class AA{constructor(e,r,B){g(this,"WA");g(this,"et");g(this,"zt");g(this,"oe");g(this,"ne");g(this,"ae");g(this,"he");g(this,"De");g(this,"Jt");g(this,"Lt");g(this,"Kt");g(this,"Wt");g(this,"jt");this.WA=e,this.et=r,this.zt=B,this.De=this.WA.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.ne=new k(e,r,B),this.ae=new R(e,r,B),this.oe=[this.ne,this.ae],this.Jt=this.WA.TA(B.cols,B.rows),this.Lt=this.WA.TA(B.cols,B.rows),this.Kt=this.WA.TA(B.cols,B.rows),this.Wt=this.WA.TA(B.cols,B.rows),this.jt=this.WA.TA(B.cols,B.rows),this.he=this.WA.TA(this.zt.width,this.zt.height)}le(e){for(const B of this.oe)B.options.enabled&&B instanceof z&&B.ge(e);const r=(B,i)=>{B.begin(),this.WA.OA();for(const s of this.oe)s.options.enabled&&this.WA.kA(i(s),0,0);B.end()};r(this.Jt,B=>B.characterFramebuffer),r(this.Lt,B=>B.primaryColorFramebuffer),r(this.Kt,B=>B.secondaryColorFramebuffer),r(this.Wt,B=>B.rotationFramebuffer),r(this.jt,B=>B.transformFramebuffer),this.he.begin(),this.WA.OA(),this.WA.IA(this.De),this.WA.GA("u_characterTexture",this.et.fontFramebuffer),this.WA.GA("u_charsetDimensions",[this.et.textureColumns,this.et.textureRows]),this.WA.GA("u_asciiCharacterTexture",this.Jt.texture),this.WA.GA("u_primaryColorTexture",this.Lt.texture),this.WA.GA("u_secondaryColorTexture",this.Kt.texture),this.WA.GA("u_transformTexture",this.jt.texture),this.WA.GA("u_rotationTexture",this.Wt.texture),this.WA.GA("u_captureTexture",e.texture),this.WA.GA("u_backgroundMode",!1),this.WA.GA("u_captureDimensions",[e.width,e.height]),this.WA.GA("u_gridCellDimensions",[this.zt.cols,this.zt.rows]),this.WA.GA("u_gridPixelDimensions",[this.zt.width,this.zt.height]),this.WA.FA(0,0,this.he.width,this.he.height),this.he.end()}add(e){if(!f.C(e==="brightness"||e==="custom",'Converter type must be either "brightness" or "custom".',{method:"add",providedValue:e}))return;let r;return r=e==="brightness"?new k(this.WA,this.et,this.zt):new R(this.WA,this.et,this.zt),this.oe.push(r),r}remove(e){if(!f.C(e instanceof R,"Parameter must be a TextmodeConverter instance.",{method:"remove",providedValue:e}))return;const r=this.oe.indexOf(e);f.C(r!==-1,"Converter instance not found in pipeline.",{method:"remove",providedValue:e,convertersCount:this.oe.length})&&this.oe.splice(r,1)}$t(){this.he.resize(this.zt.width,this.zt.height);const e=this.zt.cols,r=this.zt.rows;this.Jt.resize(e,r),this.Lt.resize(e,r),this.Kt.resize(e,r),this.Wt.resize(e,r),this.jt.resize(e,r);for(const B of this.oe)B.$t()}hasEnabledConverters(){return this.oe.some(e=>e.options.enabled)}disable(){for(const e of this.oe)e.disable()}enable(){for(const e of this.oe)e.enable()}S(){for(const e of this.oe)e.S();this.Jt.S(),this.Lt.S(),this.Kt.S(),this.Wt.S(),this.jt.S(),this.he.S(),this.De.S()}get texture(){return this.he}get characterFramebuffer(){return this.Jt}get primaryColorFramebuffer(){return this.Lt}get secondaryColorFramebuffer(){return this.Kt}get rotationFramebuffer(){return this.Wt}get transformFramebuffer(){return this.jt}get brightness(){return this.ne}get custom(){return this.ae}}const cA=o=>class extends o{fill(e,r,B,i){this.WA.wA(e,r,B,i)}stroke(e,r,B,i){this.WA.fA(e,r,B,i)}strokeWeight(e){this.WA.dA(e)}noStroke(){this.WA.mA()}noFill(){this.WA.pA()}rotate(e){this.WA._A(e)}push(){this.WA.vA()}pop(){this.WA.bA()}rect(e,r,B=1,i=1){this.WA.FA(e,r,B,i)}line(e,r,B,i){this.WA.$A(e,r,B,i)}background(e,r=e,B=e,i=255){this.WA.SA(e,r,B,i)}createShader(e,r){return this.WA.yA(e,r)}createFilterShader(e){return this.WA.MA(e)}shader(e){this.WA.IA(e)}setUniform(e,r){this.WA.GA(e,r)}};class H{Ce(e){const r=e.get("brightness"),B=r==null?void 0:r.characterFramebuffer,i=r==null?void 0:r.primaryColorFramebuffer,s=r==null?void 0:r.secondaryColorFramebuffer,E=r==null?void 0:r.transformFramebuffer,Q=r==null?void 0:r.rotationFramebuffer;return B==null||B.loadPixels(),i==null||i.loadPixels(),s==null||s.loadPixels(),E==null||E.loadPixels(),Q==null||Q.loadPixels(),{characterPixels:(B==null?void 0:B.pixels)||new Uint8Array(0),primaryColorPixels:(i==null?void 0:i.pixels)||new Uint8Array(0),secondaryColorPixels:(s==null?void 0:s.pixels)||new Uint8Array(0),transformPixels:(E==null?void 0:E.pixels)||new Uint8Array(0),rotationPixels:(Q==null?void 0:Q.pixels)||new Uint8Array(0)}}ce(e,r){return e[r]+(e[r+1]<<8)}ue(e,r){return{r:e[r],g:e[r+1],b:e[r+2],a:e[r+3]}}}class ${Pe(e,r){return new Blob([e],{type:r})}Ie(e,r,B){try{const i=this.Pe(e,B),s=URL.createObjectURL(i),E=document.createElement("a");E.href=s,E.download=r,E.style.display="none",E.rel="noopener",document.body.appendChild(E),E.click(),document.body.removeChild(E),URL.revokeObjectURL(s)}catch(i){throw console.error("Failed to download file:",i),Error("File download failed: "+(i instanceof Error?i.message:"Unknown error"))}}we(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}fe(){const e=new Date;return{date:e.toISOString().split("T")[0],time:e.toTimeString().split(" ")[0].replace(/:/g,"-")}}de(e){return e.replace(/[<>:"/\\|?*]/g,"_").replace(/\s+/g,"_").replace(/_{2,}/g,"_").replace(/^_+|_+$/g,"").substring(0,255)}me(){return"'textmode-export'-"+this.we()}}class CA extends H{pe(e,r,B){const i=e[B]===255,s=e[B+1]===255,E=e[B+2]===255,Q=r[B],n=r[B+1];return{isInverted:i,flipHorizontal:s,flipVertical:E,rotation:Math.round(360*(Q+n/255)/255*100)/100}}_e(e,r,B){return{x:e,y:r,cellX:e*B.cellWidth,cellY:r*B.cellHeight}}ve(e,r){const B=[];let i=0;for(let s=0;s<r.rows;s++)for(let E=0;E<r.cols;E++){const Q=4*i,n=this.ce(e.characterPixels,Q);let a=this.ue(e.primaryColorPixels,Q),h=this.ue(e.secondaryColorPixels,Q);const l=this.pe(e.transformPixels,e.rotationPixels,Q);if(l.isInverted){const P=a;a=h,h=P}const c=this._e(E,s,r);B.push({charIndex:n,primaryColor:a,secondaryColor:h,transform:l,position:c}),i++}return B}}class DA{tt(e,r){const B=e.cmap;for(const i of B.tables)if(i.format===4){for(let s=0;s<i.startCount.length;s++)if(r>=i.startCount[s]&&r<=i.endCount[s]){if(i.idRangeOffset[s]===0)return r+i.idDelta[s]&65535;{const E=i.idRangeOffset[s]/2+(r-i.startCount[s])-(i.startCount.length-s);if(E>=0&&E<i.glyphIdArray.length){const Q=i.glyphIdArray[E];if(Q!==0)return Q+i.idDelta[s]&65535}}}}return 0}be(e,r,B,i,s){const E=s/e.head.unitsPerEm;return{getBoundingBox:()=>({x1:B+r.xMin*E,y1:i+-r.yMax*E,x2:B+r.xMax*E,y2:i+-r.yMin*E}),toSVG:()=>this.xe(r,B,i,E)}}xe(e,r,B,i){if(!e||!e.xs)return"";const{xs:s,ys:E,endPts:Q,flags:n}=e;if(!(s&&E&&Q&&n))return"";let a="",h=0;for(let l=0;l<Q.length;l++){const c=Q[l];if(!(c<h)){if(c>=h){const P=r+s[h]*i,d=B-E[h]*i;a+=`M${P.toFixed(2)},${d.toFixed(2)}`;let D=h+1;for(;D<=c;)if(1&n[D]){const w=r+s[D]*i,p=B-E[D]*i;a+=`L${w.toFixed(2)},${p.toFixed(2)}`,D++}else{const w=r+s[D]*i,p=B-E[D]*i;let m=D+1>c?h:D+1;if(1&n[m]){const y=r+s[m]*i,_=B-E[m]*i;a+=`Q${w.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${_.toFixed(2)}`,D=m+1}else{const y=(w+(r+s[m]*i))/2,_=(p+(B-E[m]*i))/2;a+=`Q${w.toFixed(2)},${p.toFixed(2)} ${y.toFixed(2)},${_.toFixed(2)}`,D=m}}a+="Z"}h=c+1}}return a}ye(e,r,B,i,s){const E=e.codePointAt(0)||0,Q=this.tt(r,E);let n=null;return r.glyf&&r.glyf[Q]!==null?n=r.glyf[Q]:C&&C.T&&C.T.glyf&&C.T.glyf.VA&&(n=C.T.glyf.VA(r,Q),r.glyf&&n&&(r.glyf[Q]=n)),this.be(r,n,B,i,s)}Me(e,r,B,i,s,E,Q,n){const a=B+(s-n*(Q/r.head.unitsPerEm))/2,h=i+(E+.7*Q)/2;return this.ye(e,r,a,h,Q).toSVG()||null}}class uA{constructor(){g(this,"Ge");this.Ge=new DA}Fe(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">
|
|
50
50
|
<title>textmode art generated via textmode.js</title>
|
|
51
51
|
<desc>textmode art visualization generated by textmode.js library</desc>`}Ye(){return`
|
|
52
52
|
</g>
|
|
53
|
-
</svg>`}$e(e,r){if(!r.includeBackgroundRectangles)return"";const B=r.backgroundColor,
|
|
54
|
-
<rect width="${e.width}" height="${e.height}" fill="${
|
|
55
|
-
<rect x="${
|
|
56
|
-
<rect x="${
|
|
57
|
-
<path id="${`path-${e.charIndex}-${e.position.cellX}-${e.position.cellY}`.replace(/\./g,"-")}" d="${E}" stroke="${Q}" stroke-width="${
|
|
58
|
-
<path d="${E}" fill="${Q}" />`}Ue(e,r,B,
|
|
59
|
-
<g${E}>`,
|
|
60
|
-
</g>`):
|
|
61
|
-
<g id="ascii-cells">`;for(const E of e)
|
|
62
|
-
`).replace(/[ \t]+$/gm,"")}}class PA extends ${Re(e){return this.Pe(e,"image/svg+xml;charset=utf-8")}He(e,r){this.Ie(e,this.de(r)+".svg","image/svg+xml;charset=utf-8")}ze(e,r){this.He(e,r||this.me())}}class tA{constructor(){g(this,"Je");g(this,"Le");g(this,"Ke");this.Je=new CA,this.Le=new uA,this.Ke=new PA}We(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0]}}je(e,r={}){const B=this.We(r),
|
|
53
|
+
</svg>`}$e(e,r){if(!r.includeBackgroundRectangles)return"";const B=r.backgroundColor,i=`rgba(${B[0]},${B[1]},${B[2]},${B[3]/255})`;return`
|
|
54
|
+
<rect width="${e.width}" height="${e.height}" fill="${i}" />`}Te(e){return`rgba(${e.r},${e.g},${e.b},${e.a/255})`}Se(e,r){const{transform:B,position:i}=e,s=i.cellX+r.cellWidth/2,E=i.cellY+r.cellHeight/2,Q=[];if(B.flipHorizontal||B.flipVertical){const n=B.flipHorizontal?-1:1,a=B.flipVertical?-1:1;Q.push(`translate(${s} ${E})`),Q.push(`scale(${n} ${a})`),Q.push(`translate(${-s} ${-E})`)}return B.rotation&&Q.push(`rotate(${B.rotation} ${s} ${E})`),Q.length?` transform="${Q.join(" ")}"`:""}Oe(e,r,B){if(!B.includeBackgroundRectangles||e.secondaryColor.a===0)return"";const{position:i}=e,s=this.Te(e.secondaryColor);return B.drawMode==="stroke"?`
|
|
55
|
+
<rect x="${i.cellX}" y="${i.cellY}" width="${r.cellWidth}" height="${r.cellHeight}" stroke="${s}" fill="none" stroke-width="${B.strokeWidth}" />`:`
|
|
56
|
+
<rect x="${i.cellX}" y="${i.cellY}" width="${r.cellWidth}" height="${r.cellHeight}" fill="${s}" />`}ye(e,r,B,i){const s=B.characters[e.charIndex];if(!s)return"";const E=this.Ge.Me(s.character,B.font,e.position.cellX,e.position.cellY,r.cellWidth,r.cellHeight,B.fontSize,s.advanceWidth);if(!E)return"";const Q=this.Te(e.primaryColor);return i.drawMode==="stroke"?`
|
|
57
|
+
<path id="${`path-${e.charIndex}-${e.position.cellX}-${e.position.cellY}`.replace(/\./g,"-")}" d="${E}" stroke="${Q}" stroke-width="${i.strokeWidth}" fill="none" />`:`
|
|
58
|
+
<path d="${E}" fill="${Q}" />`}Ue(e,r,B,i){let s="";s+=this.Oe(e,r,i);const E=this.Se(e,r),Q=this.ye(e,r,B,i);return Q&&(E?(s+=`
|
|
59
|
+
<g${E}>`,s+=Q,s+=`
|
|
60
|
+
</g>`):s+=Q),s}ke(e,r,B,i){let s=this.Fe(r);s+=this.$e(r,i),s+=`
|
|
61
|
+
<g id="ascii-cells">`;for(const E of e)s+=this.Ue(E,r,B,i);return s+=this.Ye(),s}Ve(e){return e.replace(/<path[^>]*d=""[^>]*\/>/g,"").replace(/\n\s*\n/g,`
|
|
62
|
+
`).replace(/[ \t]+$/gm,"")}}class PA extends ${Re(e){return this.Pe(e,"image/svg+xml;charset=utf-8")}He(e,r){this.Ie(e,this.de(r)+".svg","image/svg+xml;charset=utf-8")}ze(e,r){this.He(e,r||this.me())}}class tA{constructor(){g(this,"Je");g(this,"Le");g(this,"Ke");this.Je=new CA,this.Le=new uA,this.Ke=new PA}We(e){return{includeBackgroundRectangles:e.includeBackgroundRectangles??!0,drawMode:e.drawMode??"fill",strokeWidth:e.strokeWidth??1,backgroundColor:e.backgroundColor??[0,0,0,0]}}je(e,r={}){const B=this.We(r),i=this.Je.Ce(e.pipeline),s=this.Je.ve(i,e.grid),E=this.Le.ke(s,e.grid,e.font,B);return this.Le.Ve(E)}ze(e,r={}){const B=this.je(e,r),i=r.filename||this.Ke.me();this.Ke.ze(B,i)}}class IA extends H{Ze(e,r,B,i=" "){var Q;const s=[];let E=0;for(let n=0;n<r.rows;n++){const a=[];for(let h=0;h<r.cols;h++){const l=4*E,c=this.ce(e.characterPixels,l),P=((Q=B.characters[c])==null?void 0:Q.character)||i;a.push(P),E++}s.push(a)}return s}}class dA{Ne(e,r){const B=[];for(const s of e){let E=s.join("");r.preserveTrailingSpaces||(E=E.replace(/\s+$/,"")),B.push(E)}const i=r.lineEnding==="crlf"?`\r
|
|
63
63
|
`:`
|
|
64
|
-
`;return B.join(
|
|
64
|
+
`;return B.join(i)}}class fA extends ${Xe(e,r){const B=this.qe(r);this.Ie(e,B,"text/plain;charset=utf-8")}qe(e){let r=this.de(e);return r===".txt"||r.length<=4?this.me():r}}class eA{constructor(){g(this,"Je");g(this,"Le");g(this,"Ke");this.Je=new IA,this.Le=new dA,this.Ke=new fA}We(e){return{preserveTrailingSpaces:e.preserveTrailingSpaces??!1,lineEnding:e.lineEnding??"lf",emptyCharacter:e.emptyCharacter??" "}}AB(e,r={}){const B=this.We(r),i=this.Je.Ce(e.pipeline),s=this.Je.Ze(i,e.grid,e.font,B.emptyCharacter);return this.Le.Ne(s,B)}Xe(e,r={}){const B=this.AB(e,r),i=r.filename||this.Ke.me();this.Ke.Xe(B,i)}}class wA extends H{tB(e,r=1,B="transparent"){const i=e.canvas;if(r===1&&B==="transparent")return i;const s=document.createElement("canvas"),E=s.getContext("2d"),Q=Math.round(i.width*r),n=Math.round(i.height*r);return s.width=Q,s.height=n,B!=="transparent"&&(E.fillStyle=B,E.fillRect(0,0,Q,n)),E.imageSmoothingEnabled=!1,E.drawImage(i,0,0,i.width,i.height,0,0,Q,n),s}}class mA{eB(e,r){const B=this.BB(r.format);return r.format==="png"?e.toDataURL(B):e.toDataURL(B,r.quality)}async QB(e,r){return new Promise((B,i)=>{const s=this.BB(r.format),E=Q=>{Q?B(Q):i(Error(`Failed to generate ${r.format.toUpperCase()} blob`))};r.format==="png"?e.toBlob(E,s):e.toBlob(E,s,r.quality)})}BB(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 pA={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},rA={png:".png",jpg:".jpg",webp:".webp"};class xA extends ${sB(e,r,B){this.rB(e,this.de(r)+rA[B])}rB(e,r){const B=URL.createObjectURL(e);try{const i=document.createElement("a");i.href=B,i.download=r,i.style.display="none",i.rel="noopener",document.body.appendChild(i),i.click(),document.body.removeChild(i)}finally{URL.revokeObjectURL(B)}}iB(e){return e in pA&&e in rA}}class bA{constructor(){g(this,"Je");g(this,"Le");g(this,"Ke");this.Je=new wA,this.Le=new mA,this.Ke=new xA}We(e){return{format:e.format??"png",quality:e.quality??1,scale:e.scale??1,backgroundColor:e.backgroundColor??"transparent"}}EB(e){if(console.log("Validating image export options:",e),!this.Ke.iB(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")}gB(e,r={}){const B=this.We(r);if(this.EB(B),B.scale===1&&B.backgroundColor==="transparent")return this.Le.eB(e.canvas,B);const i=this.Je.tB(e,B.scale,B.backgroundColor);return this.Le.eB(i,B)}async QB(e,r={}){const B=this.We(r);if(this.EB(B),B.scale===1&&B.backgroundColor==="transparent")return await this.Le.QB(e.canvas,B);const i=this.Je.tB(e,B.scale,B.backgroundColor);return await this.Le.QB(i,B)}async sB(e,r={}){const B=await this.QB(e,r),i=r.format??"png",s=r.filename||this.Ke.me();this.Ke.sB(B,s,i)}}const vA=o=>class extends o{toString(e={}){return new eA().AB(this,e)}saveStrings(e={}){new eA().Xe(this,e)}toSVG(e={}){return new tA().je(this,e)}saveSVG(e={}){new tA().ze(this,e)}async saveCanvas(e,r="png",B={}){await new bA().sB(this.bt,{...B,filename:e,format:r})}},yA=o=>class extends o{async loadFont(e){return this.et.It(e).then(()=>{const r=this.et.maxGlyphDimensions;this.zt.Gt(r.width,r.height),this.oB.$t()})}fontSize(e){if(!f.C(typeof e=="number"&&e>0,"Font size must be a positive number greater than 0.",{method:"fontSize",providedValue:e})||this.et.fontSize===e)return;this.et.Pt(e);const r=this.et.maxGlyphDimensions;this.zt.Gt(r.width,r.height),this.oB.$t(),this.WA.UA()}},_A=o=>class extends o{addConverter(e){return this.oB.add(e)}removeConverter(e){this.oB.remove(e)}};class TA{constructor(){g(this,"WA");g(this,"et");g(this,"oB");g(this,"bt");g(this,"zt")}}class J extends function(r,...B){return B.reduce((i,s)=>s(i),r)}(TA,cA,vA,yA,_A){constructor(r=null,B={}){super();g(this,"St");g(this,"nB");g(this,"Ut");g(this,"aB");g(this,"hB");g(this,"DB",null);g(this,"lB",0);g(this,"CB");g(this,"cB",!0);g(this,"uB",0);g(this,"PB",0);g(this,"IB",0);g(this,"wB",[]);g(this,"fB",10);g(this,"dB",!1);g(this,"mB",!1);g(this,"pB",()=>{});g(this,"_B",()=>{});g(this,"vB");this.St=r,this.mB=r===null,this.aB=B.renderMode??"auto",this.hB=B.frameRate??60,this.CB=1e3/this.hB}static async create(r=null,B={}){const i=new this(r,B),s=i.mB?B:void 0;let E,Q;i.bt=new q(i.captureSource,i.mB,s),i.WA=new EA(i.bt.Rt()),i.mB?(E=B.width||800,Q=B.height||600):(E=i.bt.width||800,Q=i.bt.height||600),i.nB=i.WA.TA(E,Q),i.et=new j(i.WA,B.fontSize??16),await i.et.Ct(B.fontSource);const n=i.et.maxGlyphDimensions;return i.zt=new Z(i.bt.canvas,n.width,n.height),i.oB=new AA(i.WA,i.et,i.zt),i.bB(),i.xB(),i}bB(){this.vB=()=>{this.mB?this._B():this.yB()},window.addEventListener("resize",this.vB),window.ResizeObserver&&this.St&&!this.mB&&(this.Ut=new ResizeObserver(()=>{this.yB()}),this.Ut.observe(this.St))}render(){this.MB(),this.IB++,this.dB?console.warn("Cannot render: Required resources have been disposed"):(this.mB?(this.nB.begin(),this.pB(),this.nB.end()):this.nB.update(this.St),this.oB.hasEnabledConverters()?(this.oB.le(this.nB),this.WA.SA(0),this.WA.kA(this.oB.texture,this.zt.offsetX,this.zt.offsetY,this.oB.texture.width,this.oB.texture.height)):(this.WA.OA(),this.WA.kA(this.nB,this.zt.offsetX,this.zt.offsetY,this.nB.width,this.nB.height)))}yB(){this.bt.$t(),this.nB.resize(this.bt.width,this.bt.height),this.zt.$t(),this.oB.$t(),this.WA.UA(),this.aB!=="manual"&&this.render()}xB(){if(this.aB!=="auto"||!this.cB)return;this.lB=performance.now();const r=B=>{if(!this.cB)return void(this.DB=null);const i=B-this.lB;i>=this.CB&&(this.render(),this.lB=B-i%this.CB),this.cB&&(this.DB=requestAnimationFrame(r))};this.DB=requestAnimationFrame(r)}MB(){const r=performance.now();if(this.PB>0){const B=r-this.PB;this.wB.push(B),this.wB.length>this.fB&&this.wB.shift();const i=this.wB.reduce((s,E)=>s+E,0)/this.wB.length;this.uB=1e3/i}this.PB=r}GB(){this.DB&&(cancelAnimationFrame(this.DB),this.DB=null)}renderMode(r){this.aB!==r&&(this.GB(),this.aB=r,r==="auto"&&this.cB&&this.xB())}frameRate(r){if(r===void 0)return this.uB;this.hB=r,this.CB=1e3/r,this.aB==="auto"&&this.cB&&(this.GB(),this.xB())}noLoop(){this.cB&&(this.cB=!1,this.DB&&(cancelAnimationFrame(this.DB),this.DB=null))}loop(){this.cB||(this.cB=!0,this.aB==="auto"&&this.xB())}redraw(r=1){if(f.C(typeof r=="number"&&r>0&&Number.isInteger(r),"Redraw count must be a positive integer.",{method:"redraw",providedValue:r}))for(let B=0;B<r;B++)this.render()}isLooping(){return this.aB==="auto"&&this.cB}draw(r){this.pB=r}windowResized(r){this._B=r}resizeCanvas(r,B){this.bt.$t(r,B),this.nB.resize(this.bt.width,this.bt.height),this.zt.$t(),this.oB.$t(),this.WA.UA(),this.aB!=="manual"&&this.render()}destroy(){this.dB||(this.GB(),window.removeEventListener("resize",this.vB),this.Ut&&this.Ut.disconnect(),this.oB.S(),this.et.S(),this.nB.S(),this.WA.S(),this.dB=!0)}get grid(){return this.zt}get font(){return this.et}get mode(){return this.aB}get pipeline(){return this.oB}get frameCount(){return this.IB}set frameCount(r){this.IB=r}get width(){return this.bt.width}get height(){return this.bt.height}get canvas(){return this.bt}get isDisposed(){return this.dB}}class Y{static async create(e,r={}){if(e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement)return J.create(e,r);{const B=e||{};return J.create(null,B)}}static setErrorLevel(e){f.u(e)}static get version(){return"0.1.7"}}const GA=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),MA=Y.create,RA=Y.setErrorLevel,FA=Y.version;I.TextmodeCanvas=q,I.TextmodeConversionPipeline=AA,I.TextmodeErrorLevel=b,I.TextmodeFont=j,I.TextmodeGrid=Z,I.Textmodifier=J,I.converters=lA,I.create=MA,I.export=GA,I.setErrorLevel=RA,I.textmode=Y,I.version=FA,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})},typeof exports=="object"&&typeof module<"u"?t(exports):typeof define=="function"&&define.amd?define(["exports"],t):t((A=typeof globalThis<"u"?globalThis:A||self).textmode={});
|