textmode.js 0.0.10-beta.5 → 0.1.0

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.
@@ -1,12 +1,12 @@
1
1
  var BA = Object.defineProperty;
2
- var sA = (i, A, r) => A in i ? BA(i, A, { enumerable: !0, configurable: !0, writable: !0, value: r }) : i[A] = r;
3
- var h = (i, A, r) => sA(i, typeof A != "symbol" ? A + "" : A, r);
2
+ var oA = (i, A, r) => A in i ? BA(i, A, { enumerable: !0, configurable: !0, writable: !0, value: r }) : i[A] = r;
3
+ var E = (i, A, r) => oA(i, typeof A != "symbol" ? A + "" : A, r);
4
4
  class T extends Error {
5
5
  constructor(r, e, t = {}) {
6
6
  const n = T.createFormattedMessage(r, t);
7
7
  super(n);
8
- h(this, "originalError");
9
- h(this, "context");
8
+ E(this, "originalError");
9
+ E(this, "context");
10
10
  this.name = "TextmodeError", this.originalError = e, this.context = t;
11
11
  }
12
12
  /**
@@ -19,9 +19,9 @@ class T extends Error {
19
19
 
20
20
  📋 Context:`;
21
21
  for (const [n, a] of Object.entries(e)) {
22
- const B = T.formatValue(a);
22
+ const s = T.formatValue(a);
23
23
  t += `
24
- - ${n}: ${B}`;
24
+ - ${n}: ${s}`;
25
25
  }
26
26
  }
27
27
  return t += `
@@ -47,15 +47,15 @@ class T extends Error {
47
47
  }
48
48
  }
49
49
  var gA = /* @__PURE__ */ ((i) => (i[i.SILENT = 0] = "SILENT", i[i.WARNING = 1] = "WARNING", i[i.ERROR = 2] = "ERROR", i[i.THROW = 3] = "THROW", i))(gA || {});
50
- const Y = class Y {
50
+ const z = class z {
51
51
  constructor() {
52
- h(this, "_options", {
52
+ E(this, "_options", {
53
53
  globalLevel: 3
54
54
  /* THROW */
55
55
  });
56
56
  }
57
57
  static getInstance() {
58
- return Y._instance || (Y._instance = new Y()), Y._instance;
58
+ return z._instance || (z._instance = new z()), z._instance;
59
59
  }
60
60
  /**
61
61
  * Handle an error based on the configured settings
@@ -103,19 +103,19 @@ const Y = class Y {
103
103
  this._options.globalLevel = A;
104
104
  }
105
105
  };
106
- h(Y, "_instance", null);
107
- let AA = Y;
108
- const y = AA.getInstance();
106
+ E(z, "_instance", null);
107
+ let rA = z;
108
+ const F = rA.getInstance();
109
109
  class EA {
110
110
  constructor(A, r, e = r, t = {}) {
111
- h(this, "gl");
112
- h(this, "_framebuffer");
113
- h(this, "_texture");
114
- h(this, "_width");
115
- h(this, "_height");
116
- h(this, "options");
117
- h(this, "previousState", null);
118
- h(this, "_pixels", null);
111
+ E(this, "gl");
112
+ E(this, "_framebuffer");
113
+ E(this, "_texture");
114
+ E(this, "_width");
115
+ E(this, "_height");
116
+ E(this, "options");
117
+ E(this, "previousState", null);
118
+ E(this, "_pixels", null);
119
119
  this.gl = A, this._width = r, this._height = e, this.options = {
120
120
  filter: "nearest",
121
121
  wrap: "clamp",
@@ -188,16 +188,16 @@ class EA {
188
188
  get(A, r, e, t) {
189
189
  const { gl: n } = this;
190
190
  if (A === void 0 && r === void 0) {
191
- const a = new Uint8Array(this._width * this._height * 4), B = n.getParameter(n.FRAMEBUFFER_BINDING);
192
- return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(0, 0, this._width, this._height, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, B), a;
191
+ const a = new Uint8Array(this._width * this._height * 4), s = n.getParameter(n.FRAMEBUFFER_BINDING);
192
+ return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(0, 0, this._width, this._height, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, s), a;
193
193
  } else if (e === void 0 && t === void 0) {
194
194
  (A < 0 || r < 0 || A >= this._width || r >= this._height) && (console.warn("The x and y values passed to Framebuffer.get are outside of its range and will be clamped."), A = Math.max(0, Math.min(A, this._width - 1)), r = Math.max(0, Math.min(r, this._height - 1)));
195
- const a = new Uint8Array(4), B = n.getParameter(n.FRAMEBUFFER_BINDING);
196
- return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(A, r, 1, 1, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, B), [a[0], a[1], a[2], a[3]];
195
+ const a = new Uint8Array(4), s = n.getParameter(n.FRAMEBUFFER_BINDING);
196
+ return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(A, r, 1, 1, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, s), [a[0], a[1], a[2], a[3]];
197
197
  } else {
198
198
  A = Math.max(0, Math.min(A, this._width - 1)), r = Math.max(0, Math.min(r, this._height - 1)), e = Math.max(1, Math.min(e, this._width - A)), t = Math.max(1, Math.min(t, this._height - r));
199
- const a = new Uint8Array(e * t * 4), B = n.getParameter(n.FRAMEBUFFER_BINDING);
200
- return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(A, r, e, t, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, B), a;
199
+ const a = new Uint8Array(e * t * 4), s = n.getParameter(n.FRAMEBUFFER_BINDING);
200
+ return n.bindFramebuffer(n.FRAMEBUFFER, this._framebuffer), n.readPixels(A, r, e, t, n.RGBA, n.UNSIGNED_BYTE, a), n.bindFramebuffer(n.FRAMEBUFFER, s), a;
201
201
  }
202
202
  }
203
203
  // Getters
@@ -217,101 +217,100 @@ class EA {
217
217
  return this._pixels;
218
218
  }
219
219
  }
220
- class QA {
221
- constructor(A, r, e, t, n) {
220
+ class aA {
221
+ constructor(A, r, e, t, n, a = {}) {
222
222
  /** The WebGL rendering context */
223
- h(this, "gl");
224
- /** The buffer containing the rectangle vertices */
225
- h(this, "buffer");
226
- /** The number of vertices in the rectangle */
227
- h(this, "numVertices");
223
+ E(this, "gl");
224
+ /** The vertex buffer containing position and optional texture coordinates */
225
+ E(this, "vertexBuffer");
226
+ /** The number of vertices in this geometry (always 6 for two triangles) */
227
+ E(this, "vertexCount", 6);
228
+ /** The rendering mode: textured or solid color */
229
+ E(this, "renderMode");
230
+ /** Bytes per vertex: 8 for position-only, 16 for position+texture */
231
+ E(this, "bytesPerVertex");
228
232
  this.gl = A;
229
- const a = A.getParameter(A.VIEWPORT), B = a[2], s = a[3];
230
- if (B <= 0 || s <= 0)
231
- throw new Error(`Invalid viewport dimensions: ${B}x${s}`);
232
- const E = r / B * 2 - 1, g = 1 - e / s * 2, c = (r + t) / B * 2 - 1, Q = 1 - (e + n) / s * 2;
233
- (E < -1 || E > 1 || c < -1 || c > 1 || g < -1 || g > 1 || Q < -1 || Q > 1) && console.warn(`Rectangle coordinates outside NDC range: x1=${E}, y1=${g}, x2=${c}, y2=${Q}`);
234
- const u = A.getParameter(A.FRAMEBUFFER_BINDING) !== null ? new Float32Array([
235
- E,
236
- Q,
237
- 0,
233
+ const s = a.textured ?? !0;
234
+ this.renderMode = s ? "textured" : "solid", this.bytesPerVertex = s ? 16 : 8;
235
+ const B = A.getParameter(A.VIEWPORT), g = B[2], o = B[3], u = A.getParameter(A.FRAMEBUFFER_BINDING) !== null, h = r / g * 2 - 1, c = (r + t) / g * 2 - 1;
236
+ let D, l;
237
+ u ? (D = e / o * 2 - 1, l = (e + n) / o * 2 - 1) : (D = 1 - e / o * 2, l = 1 - (e + n) / o * 2);
238
+ const C = this.generateVertices(h, D, c, l, s);
239
+ this.vertexBuffer = A.createBuffer(), A.bindBuffer(A.ARRAY_BUFFER, this.vertexBuffer), A.bufferData(A.ARRAY_BUFFER, C, A.STATIC_DRAW);
240
+ }
241
+ /**
242
+ * Generate vertex data for the rectangle
243
+ * @private
244
+ */
245
+ generateVertices(A, r, e, t, n) {
246
+ return n ? new Float32Array([
247
+ A,
248
+ t,
238
249
  0,
250
+ 1,
239
251
  // bottom-left
240
- c,
241
- Q,
252
+ e,
253
+ t,
254
+ 1,
242
255
  1,
243
- 0,
244
256
  // bottom-right
245
- E,
246
- g,
257
+ A,
258
+ r,
259
+ 0,
247
260
  0,
248
- 1,
249
261
  // top-left
250
- E,
251
- g,
262
+ A,
263
+ r,
264
+ 0,
252
265
  0,
253
- 1,
254
266
  // top-left
255
- c,
256
- Q,
267
+ e,
268
+ t,
269
+ 1,
257
270
  1,
258
- 0,
259
271
  // bottom-right
260
- c,
261
- g,
272
+ e,
273
+ r,
262
274
  1,
263
- 1
275
+ 0
264
276
  // top-right
265
277
  ]) : new Float32Array([
266
- E,
267
- Q,
268
- 0,
269
- 1,
278
+ A,
279
+ t,
270
280
  // bottom-left
271
- c,
272
- Q,
273
- 1,
274
- 1,
281
+ e,
282
+ t,
275
283
  // bottom-right
276
- E,
277
- g,
278
- 0,
279
- 0,
284
+ A,
285
+ r,
280
286
  // top-left
281
- E,
282
- g,
283
- 0,
284
- 0,
287
+ A,
288
+ r,
285
289
  // top-left
286
- c,
287
- Q,
288
- 1,
289
- 1,
290
+ e,
291
+ t,
290
292
  // bottom-right
291
- c,
292
- g,
293
- 1,
294
- 0
293
+ e,
294
+ r
295
295
  // top-right
296
296
  ]);
297
- this.numVertices = 6, this.buffer = A.createBuffer(), A.bindBuffer(A.ARRAY_BUFFER, this.buffer), A.bufferData(A.ARRAY_BUFFER, u, A.STATIC_DRAW);
298
297
  }
299
298
  /**
300
- * Draw the quad using attribute locations from the current shader
299
+ * Render the rectangle using the appropriate vertex attributes
301
300
  */
302
- draw() {
303
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);
304
- let A = 0, r = 1;
305
- this.gl.enableVertexAttribArray(A), this.gl.vertexAttribPointer(A, 2, this.gl.FLOAT, !1, 16, 0), this.gl.enableVertexAttribArray(r), this.gl.vertexAttribPointer(r, 2, this.gl.FLOAT, !1, 16, 8), this.gl.drawArrays(this.gl.TRIANGLES, 0, this.numVertices), this.gl.disableVertexAttribArray(A), this.gl.disableVertexAttribArray(r);
301
+ render() {
302
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuffer);
303
+ const A = 0, r = 1;
304
+ this.gl.enableVertexAttribArray(A), this.gl.vertexAttribPointer(A, 2, this.gl.FLOAT, !1, this.bytesPerVertex, 0), this.renderMode === "textured" && (this.gl.enableVertexAttribArray(r), this.gl.vertexAttribPointer(r, 2, this.gl.FLOAT, !1, this.bytesPerVertex, 8)), this.gl.drawArrays(this.gl.TRIANGLES, 0, this.vertexCount), this.gl.disableVertexAttribArray(A), this.renderMode === "textured" && this.gl.disableVertexAttribArray(r);
306
305
  }
307
306
  }
308
- class X {
307
+ class R {
309
308
  constructor(A, r, e) {
310
- h(this, "gl");
311
- h(this, "program");
312
- h(this, "uniformLocations", /* @__PURE__ */ new Map());
313
- h(this, "attributeLocations", /* @__PURE__ */ new Map());
314
- h(this, "textureUnitCounter", 0);
309
+ E(this, "gl");
310
+ E(this, "program");
311
+ E(this, "uniformLocations", /* @__PURE__ */ new Map());
312
+ E(this, "attributeLocations", /* @__PURE__ */ new Map());
313
+ E(this, "textureUnitCounter", 0);
315
314
  this.gl = A, this.program = this.createProgram(r, e), this.cacheLocations();
316
315
  }
317
316
  createProgram(A, r) {
@@ -324,7 +323,11 @@ class X {
324
323
  }
325
324
  createShader(A, r) {
326
325
  const e = this.gl.createShader(A);
327
- return this.gl.shaderSource(e, r), this.gl.compileShader(e), e;
326
+ if (this.gl.shaderSource(e, r), this.gl.compileShader(e), !this.gl.getShaderParameter(e, this.gl.COMPILE_STATUS)) {
327
+ const t = this.gl.getShaderInfoLog(e);
328
+ throw this.gl.deleteShader(e), new Error(`Shader compilation error: ${t}`);
329
+ }
330
+ return e;
328
331
  }
329
332
  cacheLocations() {
330
333
  const A = this.gl.getProgramParameter(this.program, this.gl.ACTIVE_UNIFORMS);
@@ -355,6 +358,10 @@ class X {
355
358
  */
356
359
  setUniform(A, r) {
357
360
  const e = this.uniformLocations.get(A);
361
+ if (!e) {
362
+ console.warn(`Uniform '${A}' not found in shader`);
363
+ return;
364
+ }
358
365
  if (typeof r == "number")
359
366
  this.gl.uniform1f(e, r);
360
367
  else if (typeof r == "boolean")
@@ -392,14 +399,18 @@ class X {
392
399
  this.textureUnitCounter = 0;
393
400
  }
394
401
  }
395
- var J = "attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}", oA = "precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}";
396
- class hA {
402
+ var O = "attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_uv;void main(){v_uv=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}", QA = "precision lowp float;uniform sampler2D u_texture;varying vec2 v_uv;void main(){gl_FragColor=texture2D(u_texture,v_uv);}", hA = "precision lowp float;uniform vec4 u_color;void main(){gl_FragColor=u_color;}";
403
+ class lA {
397
404
  constructor(A) {
398
- h(this, "gl");
399
- h(this, "imageShader");
400
- h(this, "currentShader", null);
401
- h(this, "currentBlendMode", "normal");
402
- this.gl = A, this.imageShader = new X(this.gl, J, oA), this.gl.enable(this.gl.BLEND), this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
405
+ E(this, "gl");
406
+ E(this, "imageShader");
407
+ E(this, "solidColorShader");
408
+ E(this, "currentShader", null);
409
+ E(this, "currentBlendMode", "normal");
410
+ // Fill state management
411
+ E(this, "currentFillColor", [1, 1, 1, 1]);
412
+ E(this, "fillMode", !1);
413
+ this.gl = A, this.imageShader = new R(this.gl, O, QA), this.solidColorShader = new R(this.gl, O, hA), this.gl.enable(this.gl.BLEND), this.gl.blendEquation(this.gl.FUNC_ADD), this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
403
414
  }
404
415
  /**
405
416
  * Set the current shader (p5.js-like API)
@@ -407,8 +418,30 @@ class hA {
407
418
  shader(A) {
408
419
  this.currentShader = A, A.use();
409
420
  }
421
+ /**
422
+ * Set fill color for subsequent shape drawing (p5.js-like API)
423
+ * This only stores the color state and sets the fill mode.
424
+ * No WebGL operations should happen here.
425
+ */
426
+ fill(A, r, e, t) {
427
+ if (this.fillMode = !0, r === void 0 && e === void 0 && t === void 0) {
428
+ const n = A / 255;
429
+ this.currentFillColor = [n, n, n, 1];
430
+ } else if (e !== void 0 && t === void 0)
431
+ this.currentFillColor = [A / 255, r / 255, e / 255, 1];
432
+ else if (e !== void 0 && t !== void 0)
433
+ this.currentFillColor = [A / 255, r / 255, e / 255, t / 255];
434
+ else
435
+ throw new Error("Invalid fill parameters. Use fill(gray), fill(r,g,b), or fill(r,g,b,a)");
436
+ }
437
+ /**
438
+ * Reset fill mode - called automatically after each frame
439
+ */
440
+ reset() {
441
+ this.fillMode = !1;
442
+ }
410
443
  createShader(A, r) {
411
- return new X(this.gl, A, r);
444
+ return new R(this.gl, A, r);
412
445
  }
413
446
  /**
414
447
  * Set a uniform value for the current shader (p5.js-like API)
@@ -417,10 +450,18 @@ class hA {
417
450
  this.currentShader.setUniform(A, r);
418
451
  }
419
452
  /**
420
- * Draw a rectangle with the current shader (p5.js-like API)
453
+ * Draw a rectangle with the current shader or fill color (p5.js-like API)
421
454
  */
422
455
  rect(A, r, e, t) {
423
- new QA(this.gl, A, r, e, t).draw();
456
+ if (this.fillMode && this.currentShader === null) {
457
+ const n = this.currentBlendMode;
458
+ this.setBlendMode(
459
+ "premultiplied"
460
+ /* PREMULTIPLIED */
461
+ ), this.shader(this.solidColorShader), this.setUniform("u_color", this.currentFillColor), new aA(this.gl, A, r, e, t, { textured: !1 }).render(), this.setBlendMode(n);
462
+ } else
463
+ new aA(this.gl, A, r, e, t, { textured: !0 }).render();
464
+ this.currentShader = null;
424
465
  }
425
466
  /**
426
467
  * Create a new framebuffer
@@ -477,119 +518,119 @@ class hA {
477
518
  ), this.shader(this.imageShader), this.setUniform("u_texture", A.texture), this.rect(r, e, t ?? A.width, n ?? A.height), this.setBlendMode(a);
478
519
  }
479
520
  }
480
- var o = {};
481
- o.parse = function(i) {
482
- var A = o.B, r = function(m, w, p, v) {
483
- var D = o.T, _ = {
484
- cmap: D.cmap,
485
- head: D.head,
486
- hhea: D.hhea,
487
- maxp: D.maxp,
488
- hmtx: D.hmtx,
489
- name: D.name,
490
- "OS/2": D.OS2,
491
- post: D.post,
492
- loca: D.loca,
493
- kern: D.kern,
494
- glyf: D.glyf,
495
- "CFF ": D.CFF,
521
+ var Q = {};
522
+ Q.parse = function(i) {
523
+ var A = Q.B, r = function(I, v, p, w) {
524
+ var d = Q.T, f = {
525
+ cmap: d.cmap,
526
+ head: d.head,
527
+ hhea: d.hhea,
528
+ maxp: d.maxp,
529
+ hmtx: d.hmtx,
530
+ name: d.name,
531
+ "OS/2": d.OS2,
532
+ post: d.post,
533
+ loca: d.loca,
534
+ kern: d.kern,
535
+ glyf: d.glyf,
536
+ "CFF ": d.CFF,
496
537
  /*
497
538
  "GPOS",
498
539
  "GSUB",
499
540
  "GDEF",*/
500
- GSUB: D.GSUB,
501
- CBLC: D.CBLC,
502
- CBDT: D.CBDT,
503
- "SVG ": D.SVG,
504
- COLR: D.colr,
505
- CPAL: D.cpal,
506
- sbix: D.sbix,
507
- fvar: D.fvar,
508
- gvar: D.gvar,
509
- avar: D.avar,
510
- HVAR: D.HVAR
541
+ GSUB: d.GSUB,
542
+ CBLC: d.CBLC,
543
+ CBDT: d.CBDT,
544
+ "SVG ": d.SVG,
545
+ COLR: d.colr,
546
+ CPAL: d.cpal,
547
+ sbix: d.sbix,
548
+ fvar: d.fvar,
549
+ gvar: d.gvar,
550
+ avar: d.avar,
551
+ HVAR: d.HVAR
511
552
  //"VORG",
512
- }, x = { _data: m, _index: w, _offset: p };
513
- for (var U in _) {
514
- var F = o.findTable(m, U, p);
515
- if (F) {
516
- var S = F[0], b = v[S];
517
- b == null && (b = _[U].parseTab(m, S, F[1], x)), x[U] = v[S] = b;
553
+ }, _ = { _data: I, _index: v, _offset: p };
554
+ for (var b in f) {
555
+ var U = Q.findTable(I, b, p);
556
+ if (U) {
557
+ var S = U[0], y = w[S];
558
+ y == null && (y = f[b].parseTab(I, S, U[1], _)), _[b] = w[S] = y;
518
559
  }
519
560
  }
520
- return x;
561
+ return _;
521
562
  };
522
- function e(m) {
523
- var w = A.readUshort(m, 12), p = A.readUint(m, 16), v = new Uint8Array(p), D = 12 + w * 16;
524
- A.writeASCII(v, 0, "OTTO"), A.writeUshort(v, 4, w);
525
- for (var _ = 44, x = 0; x < w; x++) {
526
- var U = A.readASCII(m, _, 4), F = A.readUint(m, _ + 4), S = A.readUint(m, _ + 8), b = A.readUint(m, _ + 12);
527
- _ += 20;
528
- var f = m.slice(F, F + S);
529
- S != b && (f = pako.inflate(f));
530
- var G = 12 + x * 16;
531
- A.writeASCII(v, G, U), A.writeUint(v, G + 8, D), A.writeUint(v, G + 12, b), v.set(f, D), D += b;
563
+ function e(I) {
564
+ var v = A.readUshort(I, 12), p = A.readUint(I, 16), w = new Uint8Array(p), d = 12 + v * 16;
565
+ A.writeASCII(w, 0, "OTTO"), A.writeUshort(w, 4, v);
566
+ for (var f = 44, _ = 0; _ < v; _++) {
567
+ var b = A.readASCII(I, f, 4), U = A.readUint(I, f + 4), S = A.readUint(I, f + 8), y = A.readUint(I, f + 12);
568
+ f += 20;
569
+ var x = I.slice(U, U + S);
570
+ S != y && (x = pako.inflate(x));
571
+ var G = 12 + _ * 16;
572
+ A.writeASCII(w, G, b), A.writeUint(w, G + 8, d), A.writeUint(w, G + 12, y), w.set(x, d), d += y;
532
573
  }
533
- return v;
574
+ return w;
534
575
  }
535
576
  var t = new Uint8Array(i);
536
577
  t[0] == 119 && (t = e(t));
537
578
  var n = {}, a = A.readASCII(t, 0, 4);
538
579
  if (a == "ttcf") {
539
- var B = 4;
540
- A.readUshort(t, B), B += 2, A.readUshort(t, B), B += 2;
541
- var s = A.readUint(t, B);
542
- B += 4;
543
- for (var E = [], g = 0; g < s; g++) {
544
- var c = A.readUint(t, B);
545
- B += 4, E.push(r(t, g, c, n));
580
+ var s = 4;
581
+ A.readUshort(t, s), s += 2, A.readUshort(t, s), s += 2;
582
+ var B = A.readUint(t, s);
583
+ s += 4;
584
+ for (var g = [], o = 0; o < B; o++) {
585
+ var u = A.readUint(t, s);
586
+ s += 4, g.push(r(t, o, u, n));
546
587
  }
547
- return E;
548
- }
549
- var Q = r(t, 0, 0, n), u = Q.fvar;
550
- if (u) {
551
- for (var P = [Q], g = 0; g < u[1].length; g++) {
552
- var l = u[1][g], C = {};
553
- P.push(C);
554
- for (var d in Q) C[d] = Q[d];
555
- C._index = g;
556
- var I = C.name = JSON.parse(JSON.stringify(C.name));
557
- I.fontSubfamily = l[0], l[3] == null && (l[3] = (I.fontFamily + "-" + I.fontSubfamily).replaceAll(" ", "")), I.postScriptName = l[3];
588
+ return g;
589
+ }
590
+ var h = r(t, 0, 0, n), c = h.fvar;
591
+ if (c) {
592
+ for (var D = [h], o = 0; o < c[1].length; o++) {
593
+ var l = c[1][o], C = {};
594
+ D.push(C);
595
+ for (var P in h) C[P] = h[P];
596
+ C._index = o;
597
+ var m = C.name = JSON.parse(JSON.stringify(C.name));
598
+ m.fontSubfamily = l[0], l[3] == null && (l[3] = (m.fontFamily + "-" + m.fontSubfamily).replaceAll(" ", "")), m.postScriptName = l[3];
558
599
  }
559
- return P;
600
+ return D;
560
601
  }
561
- return [Q];
602
+ return [h];
562
603
  };
563
- o.findTable = function(i, A, r) {
564
- for (var e = o.B, t = e.readUshort(i, r + 4), n = r + 12, a = 0; a < t; a++) {
565
- var B = e.readASCII(i, n, 4);
604
+ Q.findTable = function(i, A, r) {
605
+ for (var e = Q.B, t = e.readUshort(i, r + 4), n = r + 12, a = 0; a < t; a++) {
606
+ var s = e.readASCII(i, n, 4);
566
607
  e.readUint(i, n + 4);
567
- var s = e.readUint(i, n + 8), E = e.readUint(i, n + 12);
568
- if (B == A) return [s, E];
608
+ var B = e.readUint(i, n + 8), g = e.readUint(i, n + 12);
609
+ if (s == A) return [B, g];
569
610
  n += 16;
570
611
  }
571
612
  return null;
572
613
  };
573
- o.T = {};
574
- o.B = {
614
+ Q.T = {};
615
+ Q.B = {
575
616
  readFixed: function(i, A) {
576
617
  return (i[A] << 8 | i[A + 1]) + (i[A + 2] << 8 | i[A + 3]) / (256 * 256 + 4);
577
618
  },
578
619
  readF2dot14: function(i, A) {
579
- var r = o.B.readShort(i, A);
620
+ var r = Q.B.readShort(i, A);
580
621
  return r / 16384;
581
622
  },
582
623
  readInt: function(i, A) {
583
- var r = o.B.t.uint8;
584
- return r[0] = i[A + 3], r[1] = i[A + 2], r[2] = i[A + 1], r[3] = i[A], o.B.t.int32[0];
624
+ var r = Q.B.t.uint8;
625
+ return r[0] = i[A + 3], r[1] = i[A + 2], r[2] = i[A + 1], r[3] = i[A], Q.B.t.int32[0];
585
626
  },
586
627
  readInt8: function(i, A) {
587
- var r = o.B.t.uint8;
588
- return r[0] = i[A], o.B.t.int8[0];
628
+ var r = Q.B.t.uint8;
629
+ return r[0] = i[A], Q.B.t.int8[0];
589
630
  },
590
631
  readShort: function(i, A) {
591
- var r = o.B.t.uint16;
592
- return r[0] = i[A] << 8 | i[A + 1], o.B.t.int16[0];
632
+ var r = Q.B.t.uint16;
633
+ return r[0] = i[A] << 8 | i[A + 1], Q.B.t.int16[0];
593
634
  },
594
635
  readUshort: function(i, A) {
595
636
  return i[A] << 8 | i[A + 1];
@@ -599,20 +640,20 @@ o.B = {
599
640
  },
600
641
  readUshorts: function(i, A, r) {
601
642
  for (var e = [], t = 0; t < r; t++) {
602
- var n = o.B.readUshort(i, A + t * 2);
643
+ var n = Q.B.readUshort(i, A + t * 2);
603
644
  e.push(n);
604
645
  }
605
646
  return e;
606
647
  },
607
648
  readUint: function(i, A) {
608
- var r = o.B.t.uint8;
609
- return r[3] = i[A], r[2] = i[A + 1], r[1] = i[A + 2], r[0] = i[A + 3], o.B.t.uint32[0];
649
+ var r = Q.B.t.uint8;
650
+ return r[3] = i[A], r[2] = i[A + 1], r[1] = i[A + 2], r[0] = i[A + 3], Q.B.t.uint32[0];
610
651
  },
611
652
  writeUint: function(i, A, r) {
612
653
  i[A] = r >> 24 & 255, i[A + 1] = r >> 16 & 255, i[A + 2] = r >> 8 & 255, i[A + 3] = r >> 0 & 255;
613
654
  },
614
655
  readUint64: function(i, A) {
615
- return o.B.readUint(i, A) * 4294967296 + o.B.readUint(i, A + 4);
656
+ return Q.B.readUint(i, A) * 4294967296 + Q.B.readUint(i, A + 4);
616
657
  },
617
658
  readASCII: function(i, A, r) {
618
659
  for (var e = "", t = 0; t < r; t++) e += String.fromCharCode(i[A + t]);
@@ -631,8 +672,8 @@ o.B = {
631
672
  },
632
673
  _tdec: window.TextDecoder ? new window.TextDecoder() : null,
633
674
  readUTF8: function(i, A, r) {
634
- var e = o.B._tdec;
635
- return e && A == 0 && r == i.length ? e.decode(i) : o.B.readASCII(i, A, r);
675
+ var e = Q.B._tdec;
676
+ return e && A == 0 && r == i.length ? e.decode(i) : Q.B.readASCII(i, A, r);
636
677
  },
637
678
  readBytes: function(i, A, r) {
638
679
  for (var e = [], t = 0; t < r; t++) e.push(i[A + t]);
@@ -656,57 +697,57 @@ o.B = {
656
697
  };
657
698
  }()
658
699
  };
659
- o.T.CFF = {
700
+ Q.T.CFF = {
660
701
  parseTab: function(i, A, r) {
661
- var e = o.B, t = o.T.CFF;
702
+ var e = Q.B, t = Q.T.CFF;
662
703
  i = new Uint8Array(i.buffer, A, r), A = 0, i[A], A++, i[A], A++, i[A], A++, i[A], A++;
663
704
  var n = [];
664
705
  A = t.readIndex(i, A, n);
665
- for (var a = [], B = 0; B < n.length - 1; B++) a.push(e.readASCII(i, A + n[B], n[B + 1] - n[B]));
706
+ for (var a = [], s = 0; s < n.length - 1; s++) a.push(e.readASCII(i, A + n[s], n[s + 1] - n[s]));
666
707
  A += n[n.length - 1];
667
- var s = [];
668
- A = t.readIndex(i, A, s);
669
- for (var E = [], B = 0; B < s.length - 1; B++) E.push(t.readDict(i, A + s[B], A + s[B + 1]));
670
- A += s[s.length - 1];
671
- var g = E[0], c = [];
672
- A = t.readIndex(i, A, c);
673
- for (var Q = [], B = 0; B < c.length - 1; B++) Q.push(e.readASCII(i, A + c[B], c[B + 1] - c[B]));
674
- if (A += c[c.length - 1], t.readSubrs(i, A, g), g.CharStrings && (g.CharStrings = t.readBytes(i, g.CharStrings)), g.ROS) {
675
- A = g.FDArray;
676
- var u = [];
677
- A = t.readIndex(i, A, u), g.FDArray = [];
678
- for (var B = 0; B < u.length - 1; B++) {
679
- var P = t.readDict(i, A + u[B], A + u[B + 1]);
680
- t._readFDict(i, P, Q), g.FDArray.push(P);
708
+ var B = [];
709
+ A = t.readIndex(i, A, B);
710
+ for (var g = [], s = 0; s < B.length - 1; s++) g.push(t.readDict(i, A + B[s], A + B[s + 1]));
711
+ A += B[B.length - 1];
712
+ var o = g[0], u = [];
713
+ A = t.readIndex(i, A, u);
714
+ for (var h = [], s = 0; s < u.length - 1; s++) h.push(e.readASCII(i, A + u[s], u[s + 1] - u[s]));
715
+ if (A += u[u.length - 1], t.readSubrs(i, A, o), o.CharStrings && (o.CharStrings = t.readBytes(i, o.CharStrings)), o.ROS) {
716
+ A = o.FDArray;
717
+ var c = [];
718
+ A = t.readIndex(i, A, c), o.FDArray = [];
719
+ for (var s = 0; s < c.length - 1; s++) {
720
+ var D = t.readDict(i, A + c[s], A + c[s + 1]);
721
+ t._readFDict(i, D, h), o.FDArray.push(D);
681
722
  }
682
- A += u[u.length - 1], A = g.FDSelect, g.FDSelect = [];
723
+ A += c[c.length - 1], A = o.FDSelect, o.FDSelect = [];
683
724
  var l = i[A];
684
725
  if (A++, l == 3) {
685
726
  var C = e.readUshort(i, A);
686
727
  A += 2;
687
- for (var B = 0; B < C + 1; B++)
688
- g.FDSelect.push(e.readUshort(i, A), i[A + 2]), A += 3;
728
+ for (var s = 0; s < C + 1; s++)
729
+ o.FDSelect.push(e.readUshort(i, A), i[A + 2]), A += 3;
689
730
  } else throw l;
690
731
  }
691
- return g.charset && (g.charset = t.readCharset(i, g.charset, g.CharStrings.length)), t._readFDict(i, g, Q), g;
732
+ return o.charset && (o.charset = t.readCharset(i, o.charset, o.CharStrings.length)), t._readFDict(i, o, h), o;
692
733
  },
693
734
  _readFDict: function(i, A, r) {
694
- var e = o.T.CFF, t;
735
+ var e = Q.T.CFF, t;
695
736
  A.Private && (t = A.Private[1], A.Private = e.readDict(i, t, t + A.Private[0]), A.Private.Subrs && e.readSubrs(i, t + A.Private.Subrs, A.Private));
696
737
  for (var n in A) ["FamilyName", "FontName", "FullName", "Notice", "version", "Copyright"].indexOf(n) != -1 && (A[n] = r[A[n] - 426 + 35]);
697
738
  },
698
739
  readSubrs: function(i, A, r) {
699
- r.Subrs = o.T.CFF.readBytes(i, A);
740
+ r.Subrs = Q.T.CFF.readBytes(i, A);
700
741
  var e, t = r.Subrs.length + 1;
701
742
  t < 1240 ? e = 107 : t < 33900 ? e = 1131 : e = 32768, r.Bias = e;
702
743
  },
703
744
  readBytes: function(i, A) {
704
- o.B;
745
+ Q.B;
705
746
  var r = [];
706
- A = o.T.CFF.readIndex(i, A, r);
747
+ A = Q.T.CFF.readIndex(i, A, r);
707
748
  for (var e = [], t = r.length - 1, n = i.byteOffset + A, a = 0; a < t; a++) {
708
- var B = r[a];
709
- e.push(new Uint8Array(i.buffer, n + B, r[a + 1] - B));
749
+ var s = r[a];
750
+ e.push(new Uint8Array(i.buffer, n + s, r[a + 1] - s));
710
751
  }
711
752
  return e;
712
753
  },
@@ -973,7 +1014,7 @@ o.T.CFF = {
973
1014
  return -1;
974
1015
  },
975
1016
  glyphBySE: function(i, A) {
976
- return A < 0 || A > 255 ? -1 : o.T.CFF.glyphByUnicode(i, o.T.CFF.tableSE[A]);
1017
+ return A < 0 || A > 255 ? -1 : Q.T.CFF.glyphByUnicode(i, Q.T.CFF.tableSE[A]);
977
1018
  },
978
1019
  /*readEncoding : function(data, offset, num)
979
1020
  {
@@ -1007,26 +1048,26 @@ o.T.CFF = {
1007
1048
  return array;
1008
1049
  },*/
1009
1050
  readCharset: function(i, A, r) {
1010
- var e = o.B, t = [".notdef"], n = i[A];
1051
+ var e = Q.B, t = [".notdef"], n = i[A];
1011
1052
  if (A++, n == 0)
1012
1053
  for (var a = 0; a < r; a++) {
1013
- var B = e.readUshort(i, A);
1014
- A += 2, t.push(B);
1054
+ var s = e.readUshort(i, A);
1055
+ A += 2, t.push(s);
1015
1056
  }
1016
1057
  else if (n == 1 || n == 2)
1017
1058
  for (; t.length < r; ) {
1018
- var B = e.readUshort(i, A);
1059
+ var s = e.readUshort(i, A);
1019
1060
  A += 2;
1020
- var s = 0;
1021
- n == 1 ? (s = i[A], A++) : (s = e.readUshort(i, A), A += 2);
1022
- for (var a = 0; a <= s; a++)
1023
- t.push(B), B++;
1061
+ var B = 0;
1062
+ n == 1 ? (B = i[A], A++) : (B = e.readUshort(i, A), A += 2);
1063
+ for (var a = 0; a <= B; a++)
1064
+ t.push(s), s++;
1024
1065
  }
1025
1066
  else throw "error: format: " + n;
1026
1067
  return t;
1027
1068
  },
1028
1069
  readIndex: function(i, A, r) {
1029
- var e = o.B, t = e.readUshort(i, A) + 1;
1070
+ var e = Q.B, t = e.readUshort(i, A) + 1;
1030
1071
  A += 2;
1031
1072
  var n = i[A];
1032
1073
  if (A++, n == 1) for (var a = 0; a < t; a++) r.push(i[A + a]);
@@ -1037,40 +1078,40 @@ o.T.CFF = {
1037
1078
  return A += t * n, A - 1;
1038
1079
  },
1039
1080
  getCharString: function(i, A, r) {
1040
- var e = o.B, t = i[A], n = i[A + 1];
1081
+ var e = Q.B, t = i[A], n = i[A + 1];
1041
1082
  i[A + 2], i[A + 3], i[A + 4];
1042
- var a = 1, B = null, s = null;
1043
- t <= 20 && (B = t, a = 1), t == 12 && (B = t * 100 + n, a = 2), 21 <= t && t <= 27 && (B = t, a = 1), t == 28 && (s = e.readShort(i, A + 1), a = 3), 29 <= t && t <= 31 && (B = t, a = 1), 32 <= t && t <= 246 && (s = t - 139, a = 1), 247 <= t && t <= 250 && (s = (t - 247) * 256 + n + 108, a = 2), 251 <= t && t <= 254 && (s = -(t - 251) * 256 - n - 108, a = 2), t == 255 && (s = e.readInt(i, A + 1) / 65535, a = 5), r.val = s ?? "o" + B, r.size = a;
1083
+ var a = 1, s = null, B = null;
1084
+ t <= 20 && (s = t, a = 1), t == 12 && (s = t * 100 + n, a = 2), 21 <= t && t <= 27 && (s = t, a = 1), t == 28 && (B = e.readShort(i, A + 1), a = 3), 29 <= t && t <= 31 && (s = t, a = 1), 32 <= t && t <= 246 && (B = t - 139, a = 1), 247 <= t && t <= 250 && (B = (t - 247) * 256 + n + 108, a = 2), 251 <= t && t <= 254 && (B = -(t - 251) * 256 - n - 108, a = 2), t == 255 && (B = e.readInt(i, A + 1) / 65535, a = 5), r.val = B ?? "o" + s, r.size = a;
1044
1085
  },
1045
1086
  readCharString: function(i, A, r) {
1046
- for (var e = A + r, t = o.B, n = []; A < e; ) {
1047
- var a = i[A], B = i[A + 1];
1087
+ for (var e = A + r, t = Q.B, n = []; A < e; ) {
1088
+ var a = i[A], s = i[A + 1];
1048
1089
  i[A + 2], i[A + 3], i[A + 4];
1049
- var s = 1, E = null, g = null;
1050
- a <= 20 && (E = a, s = 1), a == 12 && (E = a * 100 + B, s = 2), (a == 19 || a == 20) && (E = a, s = 2), 21 <= a && a <= 27 && (E = a, s = 1), a == 28 && (g = t.readShort(i, A + 1), s = 3), 29 <= a && a <= 31 && (E = a, s = 1), 32 <= a && a <= 246 && (g = a - 139, s = 1), 247 <= a && a <= 250 && (g = (a - 247) * 256 + B + 108, s = 2), 251 <= a && a <= 254 && (g = -(a - 251) * 256 - B - 108, s = 2), a == 255 && (g = t.readInt(i, A + 1) / 65535, s = 5), n.push(g ?? "o" + E), A += s;
1090
+ var B = 1, g = null, o = null;
1091
+ a <= 20 && (g = a, B = 1), a == 12 && (g = a * 100 + s, B = 2), (a == 19 || a == 20) && (g = a, B = 2), 21 <= a && a <= 27 && (g = a, B = 1), a == 28 && (o = t.readShort(i, A + 1), B = 3), 29 <= a && a <= 31 && (g = a, B = 1), 32 <= a && a <= 246 && (o = a - 139, B = 1), 247 <= a && a <= 250 && (o = (a - 247) * 256 + s + 108, B = 2), 251 <= a && a <= 254 && (o = -(a - 251) * 256 - s - 108, B = 2), a == 255 && (o = t.readInt(i, A + 1) / 65535, B = 5), n.push(o ?? "o" + g), A += B;
1051
1092
  }
1052
1093
  return n;
1053
1094
  },
1054
1095
  readDict: function(i, A, r) {
1055
- for (var e = o.B, t = {}, n = []; A < r; ) {
1056
- var a = i[A], B = i[A + 1];
1096
+ for (var e = Q.B, t = {}, n = []; A < r; ) {
1097
+ var a = i[A], s = i[A + 1];
1057
1098
  i[A + 2], i[A + 3], i[A + 4];
1058
- var s = 1, E = null, g = null;
1059
- if (a == 28 && (g = e.readShort(i, A + 1), s = 3), a == 29 && (g = e.readInt(i, A + 1), s = 5), 32 <= a && a <= 246 && (g = a - 139, s = 1), 247 <= a && a <= 250 && (g = (a - 247) * 256 + B + 108, s = 2), 251 <= a && a <= 254 && (g = -(a - 251) * 256 - B - 108, s = 2), a == 255)
1060
- throw g = e.readInt(i, A + 1) / 65535, s = 5, "unknown number";
1099
+ var B = 1, g = null, o = null;
1100
+ if (a == 28 && (o = e.readShort(i, A + 1), B = 3), a == 29 && (o = e.readInt(i, A + 1), B = 5), 32 <= a && a <= 246 && (o = a - 139, B = 1), 247 <= a && a <= 250 && (o = (a - 247) * 256 + s + 108, B = 2), 251 <= a && a <= 254 && (o = -(a - 251) * 256 - s - 108, B = 2), a == 255)
1101
+ throw o = e.readInt(i, A + 1) / 65535, B = 5, "unknown number";
1061
1102
  if (a == 30) {
1062
- var c = [];
1063
- for (s = 1; ; ) {
1064
- var Q = i[A + s];
1065
- s++;
1066
- var u = Q >> 4, P = Q & 15;
1067
- if (u != 15 && c.push(u), P != 15 && c.push(P), P == 15) break;
1103
+ var u = [];
1104
+ for (B = 1; ; ) {
1105
+ var h = i[A + B];
1106
+ B++;
1107
+ var c = h >> 4, D = h & 15;
1108
+ if (c != 15 && u.push(c), D != 15 && u.push(D), D == 15) break;
1068
1109
  }
1069
- for (var l = "", C = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"], d = 0; d < c.length; d++) l += C[c[d]];
1070
- g = parseFloat(l);
1110
+ for (var l = "", C = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"], P = 0; P < u.length; P++) l += C[u[P]];
1111
+ o = parseFloat(l);
1071
1112
  }
1072
1113
  if (a <= 21) {
1073
- var I = [
1114
+ var m = [
1074
1115
  "version",
1075
1116
  "Notice",
1076
1117
  "FullName",
@@ -1094,8 +1135,8 @@ o.T.CFF = {
1094
1135
  "defaultWidthX",
1095
1136
  "nominalWidthX"
1096
1137
  ];
1097
- if (E = I[a], s = 1, a == 12) {
1098
- var I = [
1138
+ if (g = m[a], B = 1, a == 12) {
1139
+ var m = [
1099
1140
  "Copyright",
1100
1141
  "isFixedPitch",
1101
1142
  "ItalicAngle",
@@ -1136,43 +1177,43 @@ o.T.CFF = {
1136
1177
  "FDSelect",
1137
1178
  "FontName"
1138
1179
  ];
1139
- E = I[B], s = 2;
1180
+ g = m[s], B = 2;
1140
1181
  }
1141
1182
  }
1142
- E != null ? (t[E] = n.length == 1 ? n[0] : n, n = []) : n.push(g), A += s;
1183
+ g != null ? (t[g] = n.length == 1 ? n[0] : n, n = []) : n.push(o), A += B;
1143
1184
  }
1144
1185
  return t;
1145
1186
  }
1146
1187
  };
1147
- o.T.cmap = {
1188
+ Q.T.cmap = {
1148
1189
  parseTab: function(i, A, r) {
1149
1190
  var e = { tables: [], ids: {}, off: A };
1150
1191
  i = new Uint8Array(i.buffer, A, r), A = 0;
1151
- var t = o.B, n = t.readUshort, a = o.T.cmap;
1192
+ var t = Q.B, n = t.readUshort, a = Q.T.cmap;
1152
1193
  n(i, A), A += 2;
1153
- var B = n(i, A);
1194
+ var s = n(i, A);
1154
1195
  A += 2;
1155
- for (var s = [], E = 0; E < B; E++) {
1156
- var g = n(i, A);
1196
+ for (var B = [], g = 0; g < s; g++) {
1197
+ var o = n(i, A);
1157
1198
  A += 2;
1158
- var c = n(i, A);
1199
+ var u = n(i, A);
1159
1200
  A += 2;
1160
- var Q = t.readUint(i, A);
1201
+ var h = t.readUint(i, A);
1161
1202
  A += 4;
1162
- var u = "p" + g + "e" + c, P = s.indexOf(Q);
1163
- if (P == -1) {
1164
- P = e.tables.length;
1203
+ var c = "p" + o + "e" + u, D = B.indexOf(h);
1204
+ if (D == -1) {
1205
+ D = e.tables.length;
1165
1206
  var l = {};
1166
- s.push(Q);
1167
- var C = l.format = n(i, Q);
1168
- C == 0 ? l = a.parse0(i, Q, l) : C == 4 ? l = a.parse4(i, Q, l) : C == 6 ? l = a.parse6(i, Q, l) : C == 12 && (l = a.parse12(i, Q, l)), e.tables.push(l);
1207
+ B.push(h);
1208
+ var C = l.format = n(i, h);
1209
+ C == 0 ? l = a.parse0(i, h, l) : C == 4 ? l = a.parse4(i, h, l) : C == 6 ? l = a.parse6(i, h, l) : C == 12 && (l = a.parse12(i, h, l)), e.tables.push(l);
1169
1210
  }
1170
- e.ids[u] != null && console.log("multiple tables for one platform+encoding: " + u), e.ids[u] = P;
1211
+ e.ids[c] != null && console.log("multiple tables for one platform+encoding: " + c), e.ids[c] = D;
1171
1212
  }
1172
1213
  return e;
1173
1214
  },
1174
1215
  parse0: function(i, A, r) {
1175
- var e = o.B;
1216
+ var e = Q.B;
1176
1217
  A += 2;
1177
1218
  var t = e.readUshort(i, A);
1178
1219
  A += 2, e.readUshort(i, A), A += 2, r.map = [];
@@ -1180,20 +1221,20 @@ o.T.cmap = {
1180
1221
  return r;
1181
1222
  },
1182
1223
  parse4: function(i, A, r) {
1183
- var e = o.B, t = e.readUshort, n = e.readUshorts, a = A;
1224
+ var e = Q.B, t = e.readUshort, n = e.readUshorts, a = A;
1184
1225
  A += 2;
1185
- var B = t(i, A);
1186
- A += 2, t(i, A), A += 2;
1187
1226
  var s = t(i, A);
1227
+ A += 2, t(i, A), A += 2;
1228
+ var B = t(i, A);
1188
1229
  A += 2;
1189
- var E = s >>> 1;
1190
- r.searchRange = t(i, A), A += 2, r.entrySelector = t(i, A), A += 2, r.rangeShift = t(i, A), A += 2, r.endCount = n(i, A, E), A += E * 2, A += 2, r.startCount = n(i, A, E), A += E * 2, r.idDelta = [];
1191
- for (var g = 0; g < E; g++)
1230
+ var g = B >>> 1;
1231
+ r.searchRange = t(i, A), A += 2, r.entrySelector = t(i, A), A += 2, r.rangeShift = t(i, A), A += 2, r.endCount = n(i, A, g), A += g * 2, A += 2, r.startCount = n(i, A, g), A += g * 2, r.idDelta = [];
1232
+ for (var o = 0; o < g; o++)
1192
1233
  r.idDelta.push(e.readShort(i, A)), A += 2;
1193
- return r.idRangeOffset = n(i, A, E), A += E * 2, r.glyphIdArray = n(i, A, a + B - A >> 1), r;
1234
+ return r.idRangeOffset = n(i, A, g), A += g * 2, r.glyphIdArray = n(i, A, a + s - A >> 1), r;
1194
1235
  },
1195
1236
  parse6: function(i, A, r) {
1196
- var e = o.B;
1237
+ var e = Q.B;
1197
1238
  A += 2, e.readUshort(i, A), A += 2, e.readUshort(i, A), A += 2, r.firstCode = e.readUshort(i, A), A += 2;
1198
1239
  var t = e.readUshort(i, A);
1199
1240
  A += 2, r.glyphIdArray = [];
@@ -1202,131 +1243,131 @@ o.T.cmap = {
1202
1243
  return r;
1203
1244
  },
1204
1245
  parse12: function(i, A, r) {
1205
- var e = o.B, t = e.readUint;
1246
+ var e = Q.B, t = e.readUint;
1206
1247
  A += 4, t(i, A), A += 4, t(i, A), A += 4;
1207
1248
  var n = t(i, A) * 3;
1208
1249
  A += 4;
1209
- for (var a = r.groups = new Uint32Array(n), B = 0; B < n; B += 3)
1210
- a[B] = t(i, A + (B << 2)), a[B + 1] = t(i, A + (B << 2) + 4), a[B + 2] = t(i, A + (B << 2) + 8);
1250
+ for (var a = r.groups = new Uint32Array(n), s = 0; s < n; s += 3)
1251
+ a[s] = t(i, A + (s << 2)), a[s + 1] = t(i, A + (s << 2) + 4), a[s + 2] = t(i, A + (s << 2) + 8);
1211
1252
  return r;
1212
1253
  }
1213
1254
  };
1214
- o.T.CBLC = {
1255
+ Q.T.CBLC = {
1215
1256
  parseTab: function(i, A, r) {
1216
- var e = o.B, t = A;
1257
+ var e = Q.B, t = A;
1217
1258
  e.readUshort(i, A), A += 2, e.readUshort(i, A), A += 2;
1218
1259
  var n = e.readUint(i, A);
1219
1260
  A += 4;
1220
- for (var a = [], B = 0; B < n; B++) {
1221
- var s = e.readUint(i, A);
1261
+ for (var a = [], s = 0; s < n; s++) {
1262
+ var B = e.readUint(i, A);
1222
1263
  A += 4, e.readUint(i, A), A += 4, e.readUint(i, A), A += 4, A += 4, A += 2 * 12, e.readUshort(i, A), A += 2, e.readUshort(i, A), A += 2, A += 4;
1223
- for (var E = t + s, g = 0; g < 3; g++) {
1224
- var c = e.readUshort(i, E);
1225
- E += 2;
1226
- var Q = e.readUshort(i, E);
1227
- E += 2;
1228
- var u = e.readUint(i, E);
1229
- E += 4;
1230
- var P = Q - c + 1, l = t + s + u, C = e.readUshort(i, l);
1264
+ for (var g = t + B, o = 0; o < 3; o++) {
1265
+ var u = e.readUshort(i, g);
1266
+ g += 2;
1267
+ var h = e.readUshort(i, g);
1268
+ g += 2;
1269
+ var c = e.readUint(i, g);
1270
+ g += 4;
1271
+ var D = h - u + 1, l = t + B + c, C = e.readUshort(i, l);
1231
1272
  if (l += 2, C != 1) throw C;
1232
- var d = e.readUshort(i, l);
1273
+ var P = e.readUshort(i, l);
1233
1274
  l += 2;
1234
- var I = e.readUint(i, l);
1275
+ var m = e.readUint(i, l);
1235
1276
  l += 4;
1236
- for (var m = [], w = 0; w < P; w++) {
1237
- var p = e.readUint(i, l + w * 4);
1238
- m.push(I + p);
1277
+ for (var I = [], v = 0; v < D; v++) {
1278
+ var p = e.readUint(i, l + v * 4);
1279
+ I.push(m + p);
1239
1280
  }
1240
- a.push([c, Q, d, m]);
1281
+ a.push([u, h, P, I]);
1241
1282
  }
1242
1283
  }
1243
1284
  return a;
1244
1285
  }
1245
1286
  };
1246
- o.T.CBDT = {
1287
+ Q.T.CBDT = {
1247
1288
  parseTab: function(i, A, r) {
1248
- return o.B, new Uint8Array(i.buffer, i.byteOffset + A, r);
1289
+ return Q.B, new Uint8Array(i.buffer, i.byteOffset + A, r);
1249
1290
  }
1250
1291
  };
1251
- o.T.glyf = {
1292
+ Q.T.glyf = {
1252
1293
  parseTab: function(i, A, r, e) {
1253
1294
  for (var t = [], n = e.maxp.numGlyphs, a = 0; a < n; a++) t.push(null);
1254
1295
  return t;
1255
1296
  },
1256
1297
  _parseGlyf: function(i, A) {
1257
- var r = o.B, e = i._data, t = i.loca;
1298
+ var r = Q.B, e = i._data, t = i.loca;
1258
1299
  if (t[A] == t[A + 1]) return null;
1259
- var n = o.findTable(e, "glyf", i._offset)[0] + t[A], a = {};
1300
+ var n = Q.findTable(e, "glyf", i._offset)[0] + t[A], a = {};
1260
1301
  if (a.noc = r.readShort(e, n), n += 2, a.xMin = r.readShort(e, n), n += 2, a.yMin = r.readShort(e, n), n += 2, a.xMax = r.readShort(e, n), n += 2, a.yMax = r.readShort(e, n), n += 2, a.xMin >= a.xMax || a.yMin >= a.yMax) return null;
1261
1302
  if (a.noc > 0) {
1262
1303
  a.endPts = [];
1263
- for (var B = 0; B < a.noc; B++)
1304
+ for (var s = 0; s < a.noc; s++)
1264
1305
  a.endPts.push(r.readUshort(e, n)), n += 2;
1265
- var s = r.readUshort(e, n);
1266
- if (n += 2, e.length - n < s) return null;
1267
- a.instructions = r.readBytes(e, n, s), n += s;
1268
- var E = a.endPts[a.noc - 1] + 1;
1306
+ var B = r.readUshort(e, n);
1307
+ if (n += 2, e.length - n < B) return null;
1308
+ a.instructions = r.readBytes(e, n, B), n += B;
1309
+ var g = a.endPts[a.noc - 1] + 1;
1269
1310
  a.flags = [];
1270
- for (var B = 0; B < E; B++) {
1271
- var g = e[n];
1272
- if (n++, a.flags.push(g), (g & 8) != 0) {
1273
- var c = e[n];
1311
+ for (var s = 0; s < g; s++) {
1312
+ var o = e[n];
1313
+ if (n++, a.flags.push(o), (o & 8) != 0) {
1314
+ var u = e[n];
1274
1315
  n++;
1275
- for (var Q = 0; Q < c; Q++)
1276
- a.flags.push(g), B++;
1316
+ for (var h = 0; h < u; h++)
1317
+ a.flags.push(o), s++;
1277
1318
  }
1278
1319
  }
1279
1320
  a.xs = [];
1280
- for (var B = 0; B < E; B++) {
1281
- var u = (a.flags[B] & 2) != 0, P = (a.flags[B] & 16) != 0;
1282
- u ? (a.xs.push(P ? e[n] : -e[n]), n++) : P ? a.xs.push(0) : (a.xs.push(r.readShort(e, n)), n += 2);
1321
+ for (var s = 0; s < g; s++) {
1322
+ var c = (a.flags[s] & 2) != 0, D = (a.flags[s] & 16) != 0;
1323
+ c ? (a.xs.push(D ? e[n] : -e[n]), n++) : D ? a.xs.push(0) : (a.xs.push(r.readShort(e, n)), n += 2);
1283
1324
  }
1284
1325
  a.ys = [];
1285
- for (var B = 0; B < E; B++) {
1286
- var u = (a.flags[B] & 4) != 0, P = (a.flags[B] & 32) != 0;
1287
- u ? (a.ys.push(P ? e[n] : -e[n]), n++) : P ? a.ys.push(0) : (a.ys.push(r.readShort(e, n)), n += 2);
1326
+ for (var s = 0; s < g; s++) {
1327
+ var c = (a.flags[s] & 4) != 0, D = (a.flags[s] & 32) != 0;
1328
+ c ? (a.ys.push(D ? e[n] : -e[n]), n++) : D ? a.ys.push(0) : (a.ys.push(r.readShort(e, n)), n += 2);
1288
1329
  }
1289
- for (var l = 0, C = 0, B = 0; B < E; B++)
1290
- l += a.xs[B], C += a.ys[B], a.xs[B] = l, a.ys[B] = C;
1330
+ for (var l = 0, C = 0, s = 0; s < g; s++)
1331
+ l += a.xs[s], C += a.ys[s], a.xs[s] = l, a.ys[s] = C;
1291
1332
  } else {
1292
- var d = 1, I = 2, m = 8, w = 32, p = 64, v = 128, D = 256;
1333
+ var P = 1, m = 2, I = 8, v = 32, p = 64, w = 128, d = 256;
1293
1334
  a.parts = [];
1294
- var _;
1335
+ var f;
1295
1336
  do {
1296
- _ = r.readUshort(e, n), n += 2;
1297
- var x = { m: { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 }, p1: -1, p2: -1 };
1298
- if (a.parts.push(x), x.glyphIndex = r.readUshort(e, n), n += 2, _ & d) {
1299
- var U = r.readShort(e, n);
1337
+ f = r.readUshort(e, n), n += 2;
1338
+ var _ = { m: { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 }, p1: -1, p2: -1 };
1339
+ if (a.parts.push(_), _.glyphIndex = r.readUshort(e, n), n += 2, f & P) {
1340
+ var b = r.readShort(e, n);
1300
1341
  n += 2;
1301
- var F = r.readShort(e, n);
1342
+ var U = r.readShort(e, n);
1302
1343
  n += 2;
1303
1344
  } else {
1304
- var U = r.readInt8(e, n);
1345
+ var b = r.readInt8(e, n);
1305
1346
  n++;
1306
- var F = r.readInt8(e, n);
1347
+ var U = r.readInt8(e, n);
1307
1348
  n++;
1308
1349
  }
1309
- _ & I ? (x.m.tx = U, x.m.ty = F) : (x.p1 = U, x.p2 = F), _ & m ? (x.m.a = x.m.d = r.readF2dot14(e, n), n += 2) : _ & p ? (x.m.a = r.readF2dot14(e, n), n += 2, x.m.d = r.readF2dot14(e, n), n += 2) : _ & v && (x.m.a = r.readF2dot14(e, n), n += 2, x.m.b = r.readF2dot14(e, n), n += 2, x.m.c = r.readF2dot14(e, n), n += 2, x.m.d = r.readF2dot14(e, n), n += 2);
1310
- } while (_ & w);
1311
- if (_ & D) {
1350
+ f & m ? (_.m.tx = b, _.m.ty = U) : (_.p1 = b, _.p2 = U), f & I ? (_.m.a = _.m.d = r.readF2dot14(e, n), n += 2) : f & p ? (_.m.a = r.readF2dot14(e, n), n += 2, _.m.d = r.readF2dot14(e, n), n += 2) : f & w && (_.m.a = r.readF2dot14(e, n), n += 2, _.m.b = r.readF2dot14(e, n), n += 2, _.m.c = r.readF2dot14(e, n), n += 2, _.m.d = r.readF2dot14(e, n), n += 2);
1351
+ } while (f & v);
1352
+ if (f & d) {
1312
1353
  var S = r.readUshort(e, n);
1313
1354
  n += 2, a.instr = [];
1314
- for (var B = 0; B < S; B++)
1355
+ for (var s = 0; s < S; s++)
1315
1356
  a.instr.push(e[n]), n++;
1316
1357
  }
1317
1358
  }
1318
1359
  return a;
1319
1360
  }
1320
1361
  };
1321
- o.T.head = {
1362
+ Q.T.head = {
1322
1363
  parseTab: function(i, A, r) {
1323
- var e = o.B, t = {};
1364
+ var e = Q.B, t = {};
1324
1365
  return e.readFixed(i, A), A += 4, t.fontRevision = e.readFixed(i, A), A += 4, e.readUint(i, A), A += 4, e.readUint(i, A), A += 4, t.flags = e.readUshort(i, A), A += 2, t.unitsPerEm = e.readUshort(i, A), A += 2, t.created = e.readUint64(i, A), A += 8, t.modified = e.readUint64(i, A), A += 8, t.xMin = e.readShort(i, A), A += 2, t.yMin = e.readShort(i, A), A += 2, t.xMax = e.readShort(i, A), A += 2, t.yMax = e.readShort(i, A), A += 2, t.macStyle = e.readUshort(i, A), A += 2, t.lowestRecPPEM = e.readUshort(i, A), A += 2, t.fontDirectionHint = e.readShort(i, A), A += 2, t.indexToLocFormat = e.readShort(i, A), A += 2, t.glyphDataFormat = e.readShort(i, A), A += 2, t;
1325
1366
  }
1326
1367
  };
1327
- o.T.hhea = {
1368
+ Q.T.hhea = {
1328
1369
  parseTab: function(i, A, r) {
1329
- var e = o.B, t = {};
1370
+ var e = Q.B, t = {};
1330
1371
  e.readFixed(i, A), A += 4;
1331
1372
  for (var n = [
1332
1373
  "ascender",
@@ -1346,91 +1387,91 @@ o.T.hhea = {
1346
1387
  "metricDataFormat",
1347
1388
  "numberOfHMetrics"
1348
1389
  ], a = 0; a < n.length; a++) {
1349
- var B = n[a], s = B == "advanceWidthMax" || B == "numberOfHMetrics" ? e.readUshort : e.readShort;
1350
- t[B] = s(i, A + a * 2);
1390
+ var s = n[a], B = s == "advanceWidthMax" || s == "numberOfHMetrics" ? e.readUshort : e.readShort;
1391
+ t[s] = B(i, A + a * 2);
1351
1392
  }
1352
1393
  return t;
1353
1394
  }
1354
1395
  };
1355
- o.T.hmtx = {
1396
+ Q.T.hmtx = {
1356
1397
  parseTab: function(i, A, r, e) {
1357
- for (var t = o.B, n = [], a = [], B = e.maxp.numGlyphs, s = e.hhea.numberOfHMetrics, E = 0, g = 0, c = 0; c < s; )
1358
- E = t.readUshort(i, A + (c << 2)), g = t.readShort(i, A + (c << 2) + 2), n.push(E), a.push(g), c++;
1359
- for (; c < B; )
1360
- n.push(E), a.push(g), c++;
1398
+ for (var t = Q.B, n = [], a = [], s = e.maxp.numGlyphs, B = e.hhea.numberOfHMetrics, g = 0, o = 0, u = 0; u < B; )
1399
+ g = t.readUshort(i, A + (u << 2)), o = t.readShort(i, A + (u << 2) + 2), n.push(g), a.push(o), u++;
1400
+ for (; u < s; )
1401
+ n.push(g), a.push(o), u++;
1361
1402
  return { aWidth: n, lsBearing: a };
1362
1403
  }
1363
1404
  };
1364
- o.T.kern = {
1405
+ Q.T.kern = {
1365
1406
  parseTab: function(i, A, r, e) {
1366
- var t = o.B, n = o.T.kern, a = t.readUshort(i, A);
1407
+ var t = Q.B, n = Q.T.kern, a = t.readUshort(i, A);
1367
1408
  if (a == 1) return n.parseV1(i, A, r, e);
1368
- var B = t.readUshort(i, A + 2);
1409
+ var s = t.readUshort(i, A + 2);
1369
1410
  A += 4;
1370
- for (var s = { glyph1: [], rval: [] }, E = 0; E < B; E++) {
1411
+ for (var B = { glyph1: [], rval: [] }, g = 0; g < s; g++) {
1371
1412
  A += 2;
1372
1413
  var r = t.readUshort(i, A);
1373
1414
  A += 2;
1374
- var g = t.readUshort(i, A);
1415
+ var o = t.readUshort(i, A);
1375
1416
  A += 2;
1376
- var c = g >>> 8;
1377
- c &= 15, c == 0 && (A = n.readFormat0(i, A, s));
1417
+ var u = o >>> 8;
1418
+ u &= 15, u == 0 && (A = n.readFormat0(i, A, B));
1378
1419
  }
1379
- return s;
1420
+ return B;
1380
1421
  },
1381
1422
  parseV1: function(i, A, r, e) {
1382
- var t = o.B, n = o.T.kern;
1423
+ var t = Q.B, n = Q.T.kern;
1383
1424
  t.readFixed(i, A);
1384
1425
  var a = t.readUint(i, A + 4);
1385
1426
  A += 8;
1386
- for (var B = { glyph1: [], rval: [] }, s = 0; s < a; s++) {
1427
+ for (var s = { glyph1: [], rval: [] }, B = 0; B < a; B++) {
1387
1428
  t.readUint(i, A), A += 4;
1388
- var E = t.readUshort(i, A);
1429
+ var g = t.readUshort(i, A);
1389
1430
  A += 2, t.readUshort(i, A), A += 2;
1390
- var g = E & 255;
1391
- g == 0 && (A = n.readFormat0(i, A, B));
1431
+ var o = g & 255;
1432
+ o == 0 && (A = n.readFormat0(i, A, s));
1392
1433
  }
1393
- return B;
1434
+ return s;
1394
1435
  },
1395
1436
  readFormat0: function(i, A, r) {
1396
- var e = o.B, t = e.readUshort, n = -1, a = t(i, A);
1437
+ var e = Q.B, t = e.readUshort, n = -1, a = t(i, A);
1397
1438
  t(i, A + 2), t(i, A + 4), t(i, A + 6), A += 8;
1398
- for (var B = 0; B < a; B++) {
1399
- var s = t(i, A);
1439
+ for (var s = 0; s < a; s++) {
1440
+ var B = t(i, A);
1400
1441
  A += 2;
1401
- var E = t(i, A);
1442
+ var g = t(i, A);
1402
1443
  A += 2;
1403
- var g = e.readShort(i, A);
1404
- A += 2, s != n && (r.glyph1.push(s), r.rval.push({ glyph2: [], vals: [] }));
1405
- var c = r.rval[r.rval.length - 1];
1406
- c.glyph2.push(E), c.vals.push(g), n = s;
1444
+ var o = e.readShort(i, A);
1445
+ A += 2, B != n && (r.glyph1.push(B), r.rval.push({ glyph2: [], vals: [] }));
1446
+ var u = r.rval[r.rval.length - 1];
1447
+ u.glyph2.push(g), u.vals.push(o), n = B;
1407
1448
  }
1408
1449
  return A;
1409
1450
  }
1410
1451
  };
1411
- o.T.loca = {
1452
+ Q.T.loca = {
1412
1453
  parseTab: function(i, A, r, e) {
1413
- var t = o.B, n = [], a = e.head.indexToLocFormat, B = e.maxp.numGlyphs + 1;
1414
- if (a == 0) for (var s = 0; s < B; s++) n.push(t.readUshort(i, A + (s << 1)) << 1);
1415
- if (a == 1) for (var s = 0; s < B; s++) n.push(t.readUint(i, A + (s << 2)));
1454
+ var t = Q.B, n = [], a = e.head.indexToLocFormat, s = e.maxp.numGlyphs + 1;
1455
+ if (a == 0) for (var B = 0; B < s; B++) n.push(t.readUshort(i, A + (B << 1)) << 1);
1456
+ if (a == 1) for (var B = 0; B < s; B++) n.push(t.readUint(i, A + (B << 2)));
1416
1457
  return n;
1417
1458
  }
1418
1459
  };
1419
- o.T.maxp = {
1460
+ Q.T.maxp = {
1420
1461
  parseTab: function(i, A, r) {
1421
- var e = o.B, t = e.readUshort, n = {};
1462
+ var e = Q.B, t = e.readUshort, n = {};
1422
1463
  return e.readUint(i, A), A += 4, n.numGlyphs = t(i, A), A += 2, n;
1423
1464
  }
1424
1465
  };
1425
- o.T.name = {
1466
+ Q.T.name = {
1426
1467
  parseTab: function(i, A, r) {
1427
- var e = o.B, t = {};
1468
+ var e = Q.B, t = {};
1428
1469
  e.readUshort(i, A), A += 2;
1429
1470
  var n = e.readUshort(i, A);
1430
1471
  A += 2;
1431
1472
  var a = e.readUshort(i, A);
1432
1473
  A += 2;
1433
- for (var B = A - 6 + a, s = [
1474
+ for (var s = A - 6 + a, B = [
1434
1475
  "copyright",
1435
1476
  "fontFamily",
1436
1477
  "fontSubfamily",
@@ -1456,28 +1497,28 @@ o.T.name = {
1456
1497
  "wwsSubfamilyName",
1457
1498
  "lightPalette",
1458
1499
  "darkPalette"
1459
- ], E = e.readUshort, g = 0; g < n; g++) {
1460
- var c = E(i, A);
1500
+ ], g = e.readUshort, o = 0; o < n; o++) {
1501
+ var u = g(i, A);
1461
1502
  A += 2;
1462
- var Q = E(i, A);
1503
+ var h = g(i, A);
1463
1504
  A += 2;
1464
- var u = E(i, A);
1505
+ var c = g(i, A);
1465
1506
  A += 2;
1466
- var P = E(i, A);
1507
+ var D = g(i, A);
1467
1508
  A += 2;
1468
- var l = E(i, A);
1509
+ var l = g(i, A);
1469
1510
  A += 2;
1470
- var C = E(i, A);
1511
+ var C = g(i, A);
1471
1512
  A += 2;
1472
- var d = B + C, I;
1473
- c == 0 || c == 3 && Q == 0 || c == 1 && Q == 25 ? I = e.readUnicode(i, d, l / 2) : Q == 0 ? I = e.readASCII(i, d, l) : Q == 1 || Q == 3 || Q == 4 || Q == 5 || Q == 10 ? I = e.readUnicode(i, d, l / 2) : c == 1 ? (I = e.readASCII(i, d, l), console.log("reading unknown MAC encoding " + Q + " as ASCII")) : (console.log("unknown encoding " + Q + ", platformID: " + c), I = e.readASCII(i, d, l));
1474
- var m = "p" + c + "," + u.toString(16);
1475
- t[m] == null && (t[m] = {});
1476
- var w = s[P];
1477
- w == null && (w = "_" + P), t[m][w] = I, t[m]._lang = u;
1513
+ var P = s + C, m;
1514
+ u == 0 || u == 3 && h == 0 || u == 1 && h == 25 ? m = e.readUnicode(i, P, l / 2) : h == 0 ? m = e.readASCII(i, P, l) : h == 1 || h == 3 || h == 4 || h == 5 || h == 10 ? m = e.readUnicode(i, P, l / 2) : u == 1 ? (m = e.readASCII(i, P, l), console.log("reading unknown MAC encoding " + h + " as ASCII")) : (console.log("unknown encoding " + h + ", platformID: " + u), m = e.readASCII(i, P, l));
1515
+ var I = "p" + u + "," + c.toString(16);
1516
+ t[I] == null && (t[I] = {});
1517
+ var v = B[D];
1518
+ v == null && (v = "_" + D), t[I][v] = m, t[I]._lang = c;
1478
1519
  }
1479
- var p = o.T.name.selectOne(t), v = "fontFamily";
1480
- if (p[v] == null) for (var D in t) t[D][v] != null && (p[v] = t[D][v]);
1520
+ var p = Q.T.name.selectOne(t), w = "fontFamily";
1521
+ if (p[w] == null) for (var d in t) t[d][w] != null && (p[w] = t[d][w]);
1481
1522
  return p;
1482
1523
  },
1483
1524
  selectOne: function(i) {
@@ -1494,11 +1535,11 @@ o.T.name = {
1494
1535
  return console.log("returning name table with languageID " + e._lang), e[A] == null && e.ID != null && (e[A] = e.ID), e;
1495
1536
  }
1496
1537
  };
1497
- o.T.OS2 = {
1538
+ Q.T.OS2 = {
1498
1539
  parseTab: function(i, A, r) {
1499
- var e = o.B, t = e.readUshort(i, A);
1540
+ var e = Q.B, t = e.readUshort(i, A);
1500
1541
  A += 2;
1501
- var n = o.T.OS2, a = {};
1542
+ var n = Q.T.OS2, a = {};
1502
1543
  if (t == 0) n.version0(i, A, a);
1503
1544
  else if (t == 1) n.version1(i, A, a);
1504
1545
  else if (t == 2 || t == 3 || t == 4) n.version2(i, A, a);
@@ -1507,327 +1548,327 @@ o.T.OS2 = {
1507
1548
  return a;
1508
1549
  },
1509
1550
  version0: function(i, A, r) {
1510
- var e = o.B;
1551
+ var e = Q.B;
1511
1552
  return r.xAvgCharWidth = e.readShort(i, A), A += 2, r.usWeightClass = e.readUshort(i, A), A += 2, r.usWidthClass = e.readUshort(i, A), A += 2, r.fsType = e.readUshort(i, A), A += 2, r.ySubscriptXSize = e.readShort(i, A), A += 2, r.ySubscriptYSize = e.readShort(i, A), A += 2, r.ySubscriptXOffset = e.readShort(i, A), A += 2, r.ySubscriptYOffset = e.readShort(i, A), A += 2, r.ySuperscriptXSize = e.readShort(i, A), A += 2, r.ySuperscriptYSize = e.readShort(i, A), A += 2, r.ySuperscriptXOffset = e.readShort(i, A), A += 2, r.ySuperscriptYOffset = e.readShort(i, A), A += 2, r.yStrikeoutSize = e.readShort(i, A), A += 2, r.yStrikeoutPosition = e.readShort(i, A), A += 2, r.sFamilyClass = e.readShort(i, A), A += 2, r.panose = e.readBytes(i, A, 10), A += 10, r.ulUnicodeRange1 = e.readUint(i, A), A += 4, r.ulUnicodeRange2 = e.readUint(i, A), A += 4, r.ulUnicodeRange3 = e.readUint(i, A), A += 4, r.ulUnicodeRange4 = e.readUint(i, A), A += 4, r.achVendID = e.readASCII(i, A, 4), A += 4, r.fsSelection = e.readUshort(i, A), A += 2, r.usFirstCharIndex = e.readUshort(i, A), A += 2, r.usLastCharIndex = e.readUshort(i, A), A += 2, r.sTypoAscender = e.readShort(i, A), A += 2, r.sTypoDescender = e.readShort(i, A), A += 2, r.sTypoLineGap = e.readShort(i, A), A += 2, r.usWinAscent = e.readUshort(i, A), A += 2, r.usWinDescent = e.readUshort(i, A), A += 2, A;
1512
1553
  },
1513
1554
  version1: function(i, A, r) {
1514
- var e = o.B;
1515
- return A = o.T.OS2.version0(i, A, r), r.ulCodePageRange1 = e.readUint(i, A), A += 4, r.ulCodePageRange2 = e.readUint(i, A), A += 4, A;
1555
+ var e = Q.B;
1556
+ return A = Q.T.OS2.version0(i, A, r), r.ulCodePageRange1 = e.readUint(i, A), A += 4, r.ulCodePageRange2 = e.readUint(i, A), A += 4, A;
1516
1557
  },
1517
1558
  version2: function(i, A, r) {
1518
- var e = o.B, t = e.readUshort;
1519
- return A = o.T.OS2.version1(i, A, r), r.sxHeight = e.readShort(i, A), A += 2, r.sCapHeight = e.readShort(i, A), A += 2, r.usDefault = t(i, A), A += 2, r.usBreak = t(i, A), A += 2, r.usMaxContext = t(i, A), A += 2, A;
1559
+ var e = Q.B, t = e.readUshort;
1560
+ return A = Q.T.OS2.version1(i, A, r), r.sxHeight = e.readShort(i, A), A += 2, r.sCapHeight = e.readShort(i, A), A += 2, r.usDefault = t(i, A), A += 2, r.usBreak = t(i, A), A += 2, r.usMaxContext = t(i, A), A += 2, A;
1520
1561
  },
1521
1562
  version5: function(i, A, r) {
1522
- var e = o.B.readUshort;
1523
- return A = o.T.OS2.version2(i, A, r), r.usLowerOpticalPointSize = e(i, A), A += 2, r.usUpperOpticalPointSize = e(i, A), A += 2, A;
1563
+ var e = Q.B.readUshort;
1564
+ return A = Q.T.OS2.version2(i, A, r), r.usLowerOpticalPointSize = e(i, A), A += 2, r.usUpperOpticalPointSize = e(i, A), A += 2, A;
1524
1565
  }
1525
1566
  };
1526
- o.T.post = {
1567
+ Q.T.post = {
1527
1568
  parseTab: function(i, A, r) {
1528
- var e = o.B, t = {};
1569
+ var e = Q.B, t = {};
1529
1570
  return t.version = e.readFixed(i, A), A += 4, t.italicAngle = e.readFixed(i, A), A += 4, t.underlinePosition = e.readShort(i, A), A += 2, t.underlineThickness = e.readShort(i, A), A += 2, t;
1530
1571
  }
1531
1572
  };
1532
- o.T.SVG = {
1573
+ Q.T.SVG = {
1533
1574
  parseTab: function(i, A, r) {
1534
- var e = o.B, t = { entries: [], svgs: [] }, n = A;
1575
+ var e = Q.B, t = { entries: [], svgs: [] }, n = A;
1535
1576
  e.readUshort(i, A), A += 2;
1536
1577
  var a = e.readUint(i, A);
1537
1578
  A += 4, e.readUint(i, A), A += 4, A = a + n;
1538
- var B = e.readUshort(i, A);
1579
+ var s = e.readUshort(i, A);
1539
1580
  A += 2;
1540
- for (var s = 0; s < B; s++) {
1541
- var E = e.readUshort(i, A);
1542
- A += 2;
1581
+ for (var B = 0; B < s; B++) {
1543
1582
  var g = e.readUshort(i, A);
1544
1583
  A += 2;
1545
- var c = e.readUint(i, A);
1584
+ var o = e.readUshort(i, A);
1585
+ A += 2;
1586
+ var u = e.readUint(i, A);
1546
1587
  A += 4;
1547
- var Q = e.readUint(i, A);
1588
+ var h = e.readUint(i, A);
1548
1589
  A += 4;
1549
- var u = new Uint8Array(i.buffer, n + c + a, Q);
1550
- u[0] == 31 && u[1] == 139 && u[2] == 8 && (u = pako.inflate(u));
1551
- for (var P = e.readUTF8(u, 0, u.length), l = E; l <= g; l++)
1590
+ var c = new Uint8Array(i.buffer, n + u + a, h);
1591
+ c[0] == 31 && c[1] == 139 && c[2] == 8 && (c = pako.inflate(c));
1592
+ for (var D = e.readUTF8(c, 0, c.length), l = g; l <= o; l++)
1552
1593
  t.entries[l] = t.svgs.length;
1553
- t.svgs.push(P);
1594
+ t.svgs.push(D);
1554
1595
  }
1555
1596
  return t;
1556
1597
  }
1557
1598
  };
1558
- o.T.sbix = {
1599
+ Q.T.sbix = {
1559
1600
  parseTab: function(i, A, r, e) {
1560
- for (var t = e.maxp.numGlyphs, n = A, a = o.B, B = a.readUint(i, A + 4), s = [], E = B - 1; E < B; E++)
1561
- for (var g = n + a.readUint(i, A + 8 + E * 4), c = 0; c < t; c++) {
1562
- var Q = a.readUint(i, g + 4 + c * 4), u = a.readUint(i, g + 4 + c * 4 + 4);
1563
- if (Q == u) {
1564
- s[c] = null;
1601
+ for (var t = e.maxp.numGlyphs, n = A, a = Q.B, s = a.readUint(i, A + 4), B = [], g = s - 1; g < s; g++)
1602
+ for (var o = n + a.readUint(i, A + 8 + g * 4), u = 0; u < t; u++) {
1603
+ var h = a.readUint(i, o + 4 + u * 4), c = a.readUint(i, o + 4 + u * 4 + 4);
1604
+ if (h == c) {
1605
+ B[u] = null;
1565
1606
  continue;
1566
1607
  }
1567
- var P = g + Q, l = a.readASCII(i, P + 4, 4);
1608
+ var D = o + h, l = a.readASCII(i, D + 4, 4);
1568
1609
  if (l != "png ") throw l;
1569
- s[c] = new Uint8Array(i.buffer, i.byteOffset + P + 8, u - Q - 8);
1610
+ B[u] = new Uint8Array(i.buffer, i.byteOffset + D + 8, c - h - 8);
1570
1611
  }
1571
- return s;
1612
+ return B;
1572
1613
  }
1573
1614
  };
1574
- o.T.colr = {
1615
+ Q.T.colr = {
1575
1616
  parseTab: function(i, A, r) {
1576
- var e = o.B, t = A;
1617
+ var e = Q.B, t = A;
1577
1618
  A += 2;
1578
1619
  var n = e.readUshort(i, A);
1579
1620
  A += 2;
1580
1621
  var a = e.readUint(i, A);
1581
1622
  A += 4;
1582
- var B = e.readUint(i, A);
1623
+ var s = e.readUint(i, A);
1583
1624
  A += 4;
1584
- var s = e.readUshort(i, A);
1625
+ var B = e.readUshort(i, A);
1585
1626
  A += 2;
1586
- for (var E = {}, g = t + a, c = 0; c < n; c++)
1587
- E["g" + e.readUshort(i, g)] = [e.readUshort(i, g + 2), e.readUshort(i, g + 4)], g += 6;
1588
- var Q = [];
1589
- g = t + B;
1590
- for (var c = 0; c < s; c++)
1591
- Q.push(e.readUshort(i, g), e.readUshort(i, g + 2)), g += 4;
1592
- return [E, Q];
1627
+ for (var g = {}, o = t + a, u = 0; u < n; u++)
1628
+ g["g" + e.readUshort(i, o)] = [e.readUshort(i, o + 2), e.readUshort(i, o + 4)], o += 6;
1629
+ var h = [];
1630
+ o = t + s;
1631
+ for (var u = 0; u < B; u++)
1632
+ h.push(e.readUshort(i, o), e.readUshort(i, o + 2)), o += 4;
1633
+ return [g, h];
1593
1634
  }
1594
1635
  };
1595
- o.T.cpal = {
1636
+ Q.T.cpal = {
1596
1637
  parseTab: function(i, A, r) {
1597
- var e = o.B, t = A, n = e.readUshort(i, A);
1638
+ var e = Q.B, t = A, n = e.readUshort(i, A);
1598
1639
  if (A += 2, n == 0) {
1599
1640
  e.readUshort(i, A), A += 2, e.readUshort(i, A), A += 2;
1600
1641
  var a = e.readUshort(i, A);
1601
1642
  A += 2;
1602
- var B = e.readUint(i, A);
1603
- return A += 4, new Uint8Array(i.buffer, t + B, a * 4);
1643
+ var s = e.readUint(i, A);
1644
+ return A += 4, new Uint8Array(i.buffer, t + s, a * 4);
1604
1645
  } else throw n;
1605
1646
  }
1606
1647
  };
1607
- o.T.GSUB = {
1648
+ Q.T.GSUB = {
1608
1649
  parseTab: function(i, A, r, e) {
1609
- var t = o.B, n = t.readUshort;
1650
+ var t = Q.B, n = t.readUshort;
1610
1651
  t.readUint;
1611
1652
  var a = A;
1612
1653
  n(i, a), a += 2, n(i, a), a += 2, n(i, a), a += 2;
1613
- var B = n(i, a);
1614
- a += 2, n(i, a), a += 2, a = A + B;
1615
- var s = {}, E = n(i, a);
1654
+ var s = n(i, a);
1655
+ a += 2, n(i, a), a += 2, a = A + s;
1656
+ var B = {}, g = n(i, a);
1616
1657
  a += 2;
1617
- for (var g = 0; g < E; g++) {
1618
- var c = t.readASCII(i, a, 4);
1619
- a += 4, n(i, a), a += 2, s[c] = !0;
1658
+ for (var o = 0; o < g; o++) {
1659
+ var u = t.readASCII(i, a, 4);
1660
+ a += 4, n(i, a), a += 2, B[u] = !0;
1620
1661
  }
1621
- return s;
1662
+ return B;
1622
1663
  }
1623
1664
  };
1624
- o.T.fvar = {
1665
+ Q.T.fvar = {
1625
1666
  parseTab: function(i, A, r, e) {
1626
- var t = e.name, n = A, a = o.B, B = [], s = [];
1667
+ var t = e.name, n = A, a = Q.B, s = [], B = [];
1627
1668
  n += 8;
1628
- var E = a.readUshort(i, n);
1629
- n += 2, n += 2;
1630
1669
  var g = a.readUshort(i, n);
1670
+ n += 2, n += 2;
1671
+ var o = a.readUshort(i, n);
1631
1672
  n += 2;
1632
- var c = a.readUshort(i, n);
1673
+ var u = a.readUshort(i, n);
1633
1674
  n += 2;
1634
- for (var Q = 0; Q < E; Q++) {
1635
- var u = a.readASCII(i, n, 4), P = a.readFixed(i, n + 4), l = a.readFixed(i, n + 8), C = a.readFixed(i, n + 12), d = a.readUshort(i, n + 16), I = a.readUshort(i, n + 18);
1636
- B.push([u, P, l, C, d, t["_" + I]]), n += 20;
1675
+ for (var h = 0; h < g; h++) {
1676
+ var c = a.readASCII(i, n, 4), D = a.readFixed(i, n + 4), l = a.readFixed(i, n + 8), C = a.readFixed(i, n + 12), P = a.readUshort(i, n + 16), m = a.readUshort(i, n + 18);
1677
+ s.push([c, D, l, C, P, t["_" + m]]), n += 20;
1637
1678
  }
1638
- for (var Q = 0; Q < g; Q++) {
1639
- for (var m = a.readUshort(i, n), w = null, d = a.readUshort(i, n + 2), p = [], v = 0; v < E; v++) p.push(a.readFixed(i, n + 4 + v * 4));
1640
- n += 4 + E * 4, (c & 3) == 2 && (w = a.readUshort(i, n), n += 2), s.push([t["_" + m], d, p, w]);
1679
+ for (var h = 0; h < o; h++) {
1680
+ for (var I = a.readUshort(i, n), v = null, P = a.readUshort(i, n + 2), p = [], w = 0; w < g; w++) p.push(a.readFixed(i, n + 4 + w * 4));
1681
+ n += 4 + g * 4, (u & 3) == 2 && (v = a.readUshort(i, n), n += 2), B.push([t["_" + I], P, p, v]);
1641
1682
  }
1642
- return [B, s];
1683
+ return [s, B];
1643
1684
  }
1644
1685
  };
1645
- o.T.gvar = function() {
1646
- var i = 32768, A = 16384, r = 8192, e = 128, t = 64, n = 128, a = 32768, B = o.B;
1647
- function s(Q, u, P) {
1648
- for (var l = [], C = 0; C < P; C++) l.push(B.readF2dot14(Q, u + C * 2));
1686
+ Q.T.gvar = function() {
1687
+ var i = 32768, A = 16384, r = 8192, e = 128, t = 64, n = 128, a = 32768, s = Q.B;
1688
+ function B(h, c, D) {
1689
+ for (var l = [], C = 0; C < D; C++) l.push(s.readF2dot14(h, c + C * 2));
1649
1690
  return l;
1650
1691
  }
1651
- function E(Q, u, P, l, C) {
1652
- for (var d = [], I = 0; I < P; I++) {
1653
- var m = B.readUshort(Q, u);
1654
- u += 2;
1655
- var w = B.readUshort(Q, u), p = w & 61440;
1656
- w = w & 4095, u += 2;
1657
- var v = null, D = null, _ = null;
1658
- p & i && (v = s(Q, u, l), u += l * 2), p & A && (D = s(Q, u, l), u += l * 2), p & A && (_ = s(Q, u, l), u += l * 2), d.push([m, w, p, D, v, _]);
1692
+ function g(h, c, D, l, C) {
1693
+ for (var P = [], m = 0; m < D; m++) {
1694
+ var I = s.readUshort(h, c);
1695
+ c += 2;
1696
+ var v = s.readUshort(h, c), p = v & 61440;
1697
+ v = v & 4095, c += 2;
1698
+ var w = null, d = null, f = null;
1699
+ p & i && (w = B(h, c, l), c += l * 2), p & A && (d = B(h, c, l), c += l * 2), p & A && (f = B(h, c, l), c += l * 2), P.push([I, v, p, d, w, f]);
1659
1700
  }
1660
- return d;
1661
- }
1662
- function g(Q, u, P) {
1663
- var l = Q[u];
1664
- if (u++, l == 0) return [[], u];
1665
- 127 < l && (l = (l & 127) << 8 | Q[u++]);
1666
- for (var C = [], d = 0; C.length < l; ) {
1667
- var I = Q[u];
1668
- u++;
1669
- var m = (I & n) != 0;
1670
- I = (I & 127) + 1;
1671
- for (var w = 0; w < I; w++) {
1701
+ return P;
1702
+ }
1703
+ function o(h, c, D) {
1704
+ var l = h[c];
1705
+ if (c++, l == 0) return [[], c];
1706
+ 127 < l && (l = (l & 127) << 8 | h[c++]);
1707
+ for (var C = [], P = 0; C.length < l; ) {
1708
+ var m = h[c];
1709
+ c++;
1710
+ var I = (m & n) != 0;
1711
+ m = (m & 127) + 1;
1712
+ for (var v = 0; v < m; v++) {
1672
1713
  var p = 0;
1673
- m ? (p = B.readUshort(Q, u), u += 2) : (p = Q[u], u++), d += p, C.push(d);
1714
+ I ? (p = s.readUshort(h, c), c += 2) : (p = h[c], c++), P += p, C.push(P);
1674
1715
  }
1675
1716
  }
1676
- return [C, u];
1717
+ return [C, c];
1677
1718
  }
1678
- function c(Q, u, P, l) {
1679
- var C = u + 4, d = B.readUshort(Q, C);
1719
+ function u(h, c, D, l) {
1720
+ var C = c + 4, P = s.readUshort(h, C);
1680
1721
  C += 2;
1681
- var I = B.readUshort(Q, C);
1722
+ var m = s.readUshort(h, C);
1682
1723
  C += 2;
1683
- var m = B.readUint(Q, C);
1724
+ var I = s.readUint(h, C);
1684
1725
  C += 4;
1685
- var w = B.readUshort(Q, C);
1686
- C += 2, B.readUshort(Q, C), C += 2;
1687
- var p = B.readUint(Q, C);
1726
+ var v = s.readUshort(h, C);
1727
+ C += 2, s.readUshort(h, C), C += 2;
1728
+ var p = s.readUint(h, C);
1688
1729
  C += 4;
1689
- for (var v = [], D = 0; D < w + 1; D++) v.push(B.readUint(Q, C + D * 4));
1690
- var _ = [], x = [], U = [];
1691
- C = u + m;
1692
- for (var D = 0; D < I; D++) {
1693
- var F = s(Q, C + D * d * 2, d), S = [], b = [];
1694
- _.push(F), x.push(S), U.push(b);
1695
- for (var f = 0; f < d; f++)
1696
- S[f] = Math.min(F[f], 0), b[f] = Math.max(F[f], 0);
1730
+ for (var w = [], d = 0; d < v + 1; d++) w.push(s.readUint(h, C + d * 4));
1731
+ var f = [], _ = [], b = [];
1732
+ C = c + I;
1733
+ for (var d = 0; d < m; d++) {
1734
+ var U = B(h, C + d * P * 2, P), S = [], y = [];
1735
+ f.push(U), _.push(S), b.push(y);
1736
+ for (var x = 0; x < P; x++)
1737
+ S[x] = Math.min(U[x], 0), y[x] = Math.max(U[x], 0);
1697
1738
  }
1698
- for (var G = new Int8Array(Q.buffer), V = [], D = 0; D < w; D++) {
1699
- C = u + p + v[D];
1700
- var z = B.readUshort(Q, C);
1739
+ for (var G = new Int8Array(h.buffer), N = [], d = 0; d < v; d++) {
1740
+ C = c + p + w[d];
1741
+ var H = s.readUshort(h, C);
1701
1742
  C += 2;
1702
- var W = z & a;
1703
- z &= 4095;
1704
- var K = B.readUshort(Q, C);
1743
+ var K = H & a;
1744
+ H &= 4095;
1745
+ var Z = s.readUshort(h, C);
1705
1746
  C += 2;
1706
- var Z = E(Q, C, z, d), N = [];
1707
- V.push(N), C = u + p + v[D] + K;
1708
- var R = null;
1709
- if (W) {
1710
- var O = g(Q, C);
1711
- R = O[0], C = O[1];
1747
+ var q = g(h, C, H, P), L = [];
1748
+ N.push(L), C = c + p + w[d] + Z;
1749
+ var Y = null;
1750
+ if (K) {
1751
+ var V = o(h, C);
1752
+ Y = V[0], C = V[1];
1712
1753
  }
1713
- for (var k = 0; k < z; k++) {
1714
- var M = Z[k], aA = C + M[0], H = R;
1754
+ for (var $ = 0; $ < H; $++) {
1755
+ var M = q[$], sA = C + M[0], W = Y;
1715
1756
  if (M[2] & r) {
1716
- var O = g(Q, C);
1717
- H = O[0], C = O[1];
1757
+ var V = o(h, C);
1758
+ W = V[0], C = V[1];
1718
1759
  }
1719
- for (var L = []; C < aA; ) {
1720
- var q = Q[C++], $ = (q & 63) + 1;
1721
- if (q & e)
1722
- for (var f = 0; f < $; f++) L.push(0);
1723
- else if (q & t) {
1724
- for (var f = 0; f < $; f++) L.push(B.readShort(Q, C + f * 2));
1725
- C += $ * 2;
1760
+ for (var X = []; C < sA; ) {
1761
+ var j = h[C++], J = (j & 63) + 1;
1762
+ if (j & e)
1763
+ for (var x = 0; x < J; x++) X.push(0);
1764
+ else if (j & t) {
1765
+ for (var x = 0; x < J; x++) X.push(s.readShort(h, C + x * 2));
1766
+ C += J * 2;
1726
1767
  } else {
1727
- for (var f = 0; f < $; f++) L.push(G[C + f]);
1728
- C += $;
1768
+ for (var x = 0; x < J; x++) X.push(G[C + x]);
1769
+ C += J;
1729
1770
  }
1730
1771
  }
1731
- var j = M[1];
1732
- if (N.push([[
1733
- M[3] ? M[3] : x[j],
1734
- M[4] ? M[4] : _[j],
1735
- M[5] ? M[5] : U[j]
1736
- ], L, H.length == 0 ? null : H]), H.length != 0 && H.length * 2 != L.length) throw "e";
1772
+ var AA = M[1];
1773
+ if (L.push([[
1774
+ M[3] ? M[3] : _[AA],
1775
+ M[4] ? M[4] : f[AA],
1776
+ M[5] ? M[5] : b[AA]
1777
+ ], X, W.length == 0 ? null : W]), W.length != 0 && W.length * 2 != X.length) throw "e";
1737
1778
  }
1738
1779
  }
1739
- return V;
1780
+ return N;
1740
1781
  }
1741
- return { parseTab: c };
1782
+ return { parseTab: u };
1742
1783
  }();
1743
- o.T.avar = {
1784
+ Q.T.avar = {
1744
1785
  parseTab: function(i, A, r, e) {
1745
- var t = A, n = o.B, a = [];
1786
+ var t = A, n = Q.B, a = [];
1746
1787
  t += 6;
1747
- var B = n.readUshort(i, t);
1788
+ var s = n.readUshort(i, t);
1748
1789
  t += 2;
1749
- for (var s = 0; s < B; s++) {
1750
- var E = n.readUshort(i, t);
1790
+ for (var B = 0; B < s; B++) {
1791
+ var g = n.readUshort(i, t);
1751
1792
  t += 2;
1752
- var g = [];
1753
- a.push(g);
1754
- for (var c = 0; c < E; c++) {
1755
- var Q = n.readF2dot14(i, t), u = n.readF2dot14(i, t + 2);
1756
- t += 4, g.push(Q, u);
1793
+ var o = [];
1794
+ a.push(o);
1795
+ for (var u = 0; u < g; u++) {
1796
+ var h = n.readF2dot14(i, t), c = n.readF2dot14(i, t + 2);
1797
+ t += 4, o.push(h, c);
1757
1798
  }
1758
1799
  }
1759
1800
  return a;
1760
1801
  }
1761
1802
  };
1762
- o.T.HVAR = {
1803
+ Q.T.HVAR = {
1763
1804
  parseTab: function(i, A, r, e) {
1764
- var t = A, n = A, a = o.B;
1765
- t += 4;
1766
- var B = a.readUint(i, t);
1805
+ var t = A, n = A, a = Q.B;
1767
1806
  t += 4;
1768
1807
  var s = a.readUint(i, t);
1769
1808
  t += 4;
1770
- var E = a.readUint(i, t);
1809
+ var B = a.readUint(i, t);
1771
1810
  t += 4;
1772
1811
  var g = a.readUint(i, t);
1773
- if (t += 4, E != 0 || g != 0) throw E;
1774
- t = n + B;
1775
- var c = t, G = a.readUshort(i, t);
1812
+ t += 4;
1813
+ var o = a.readUint(i, t);
1814
+ if (t += 4, g != 0 || o != 0) throw g;
1815
+ t = n + s;
1816
+ var u = t, G = a.readUshort(i, t);
1776
1817
  if (t += 2, G != 1) throw "e";
1777
- var Q = a.readUint(i, t);
1818
+ var h = a.readUint(i, t);
1778
1819
  t += 4;
1779
- var u = a.readUshort(i, t);
1820
+ var c = a.readUshort(i, t);
1780
1821
  t += 2;
1781
- for (var P = [], l = 0; l < u; l++) P.push(a.readUint(i, t + l * 4));
1782
- t += u * 4, t = c + Q;
1822
+ for (var D = [], l = 0; l < c; l++) D.push(a.readUint(i, t + l * 4));
1823
+ t += c * 4, t = u + h;
1783
1824
  var C = a.readUshort(i, t);
1784
1825
  t += 2;
1785
- var d = a.readUshort(i, t);
1826
+ var P = a.readUshort(i, t);
1786
1827
  t += 2;
1787
- for (var I = [], l = 0; l < d; l++) {
1788
- var m = [[], [], []];
1789
- I.push(m);
1790
- for (var w = 0; w < C; w++)
1791
- m[0].push(a.readF2dot14(i, t + 0)), m[1].push(a.readF2dot14(i, t + 2)), m[2].push(a.readF2dot14(i, t + 4)), t += 6;
1828
+ for (var m = [], l = 0; l < P; l++) {
1829
+ var I = [[], [], []];
1830
+ m.push(I);
1831
+ for (var v = 0; v < C; v++)
1832
+ I[0].push(a.readF2dot14(i, t + 0)), I[1].push(a.readF2dot14(i, t + 2)), I[2].push(a.readF2dot14(i, t + 4)), t += 6;
1792
1833
  }
1793
- for (var p = new Int8Array(i.buffer), v = [], l = 0; l < P.length; l++) {
1794
- t = n + B + P[l];
1795
- var D = [];
1796
- v.push(D);
1797
- var _ = a.readUshort(i, t);
1834
+ for (var p = new Int8Array(i.buffer), w = [], l = 0; l < D.length; l++) {
1835
+ t = n + s + D[l];
1836
+ var d = [];
1837
+ w.push(d);
1838
+ var f = a.readUshort(i, t);
1798
1839
  t += 2;
1799
- var x = a.readUshort(i, t);
1800
- if (t += 2, x & 32768) throw "e";
1801
- var d = a.readUshort(i, t);
1840
+ var _ = a.readUshort(i, t);
1841
+ if (t += 2, _ & 32768) throw "e";
1842
+ var P = a.readUshort(i, t);
1802
1843
  t += 2;
1803
- for (var U = [], w = 0; w < d; w++) U.push(a.readUshort(i, t + w * 2));
1804
- t += d * 2;
1805
- for (var F = 0; F < _; F++) {
1806
- for (var S = [], b = 0; b < d; b++)
1807
- S.push(b < x ? a.readShort(i, t) : p[t]), t += b < x ? 2 : 1;
1808
- var f = new Array(I.length);
1809
- f.fill(0), D.push(f);
1810
- for (var w = 0; w < U.length; w++) f[U[w]] = S[w];
1844
+ for (var b = [], v = 0; v < P; v++) b.push(a.readUshort(i, t + v * 2));
1845
+ t += P * 2;
1846
+ for (var U = 0; U < f; U++) {
1847
+ for (var S = [], y = 0; y < P; y++)
1848
+ S.push(y < _ ? a.readShort(i, t) : p[t]), t += y < _ ? 2 : 1;
1849
+ var x = new Array(m.length);
1850
+ x.fill(0), d.push(x);
1851
+ for (var v = 0; v < b.length; v++) x[b[v]] = S[v];
1811
1852
  }
1812
1853
  }
1813
- t = n + s;
1854
+ t = n + B;
1814
1855
  var G = i[t++];
1815
1856
  if (G != 0) throw "e";
1816
- var V = i[t++], z = a.readUshort(i, t);
1857
+ var N = i[t++], H = a.readUshort(i, t);
1817
1858
  t += 2;
1818
- for (var W = 15, K = 48, Z = ((V & K) >> 4) + 1, N = [], l = 0; l < z; l++) {
1819
- var R = 0;
1820
- Z == 1 ? R = i[t++] : (R = a.readUshort(i, t), t += 2);
1821
- var O = R >> (V & W) + 1, k = R & (1 << (V & W) + 1) - 1;
1822
- N.push(v[O][k]);
1859
+ for (var K = 15, Z = 48, q = ((N & Z) >> 4) + 1, L = [], l = 0; l < H; l++) {
1860
+ var Y = 0;
1861
+ q == 1 ? Y = i[t++] : (Y = a.readUshort(i, t), t += 2);
1862
+ var V = Y >> (N & K) + 1, $ = Y & (1 << (N & K) + 1) - 1;
1863
+ L.push(w[V][$]);
1823
1864
  }
1824
- return [I, N];
1865
+ return [m, L];
1825
1866
  }
1826
1867
  };
1827
- typeof module < "u" && module.exports ? module.exports = o : typeof window < "u" && (window.Typr = o);
1828
- const lA = `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
1868
+ typeof module < "u" && module.exports ? module.exports = Q : typeof window < "u" && (window.Typr = Q);
1869
+ const cA = `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
1829
1870
  `;
1830
- class cA {
1871
+ class uA {
1831
1872
  /**
1832
1873
  * Extracts all available characters from a font's cmap tables.
1833
1874
  * @param font The parsed font object from Typr
@@ -1860,8 +1901,8 @@ class cA {
1860
1901
  if (!(t === 65535 && n === 65535)) {
1861
1902
  for (let a = t; a <= n; a++)
1862
1903
  if (this._calculateGlyphIndexFormat4(A, a, e) > 0) {
1863
- const s = String.fromCodePoint(a);
1864
- r.push(s);
1904
+ const B = String.fromCodePoint(a);
1905
+ r.push(B);
1865
1906
  }
1866
1907
  }
1867
1908
  }
@@ -1878,10 +1919,10 @@ class cA {
1878
1919
  return r;
1879
1920
  for (let e = 0; e < A.groups.length; e += 3) {
1880
1921
  const t = A.groups[e], n = A.groups[e + 1], a = A.groups[e + 2];
1881
- for (let B = t; B <= n; B++)
1882
- if (a + (B - t) > 0) {
1883
- const E = String.fromCodePoint(B);
1884
- r.push(E);
1922
+ for (let s = t; s <= n; s++)
1923
+ if (a + (s - t) > 0) {
1924
+ const g = String.fromCodePoint(s);
1925
+ r.push(g);
1885
1926
  }
1886
1927
  }
1887
1928
  return r;
@@ -1924,15 +1965,15 @@ class cA {
1924
1965
  return !(r >= 0 && r <= 31 && r !== 9 && r !== 10 && r !== 13 || r >= 127 && r <= 159);
1925
1966
  }
1926
1967
  }
1927
- class uA {
1968
+ class CA {
1928
1969
  /**
1929
1970
  * Creates a new TextureAtlasCreation instance.
1930
1971
  * @param renderer The WebGL renderer instance
1931
1972
  */
1932
1973
  constructor(A) {
1933
- h(this, "_textureCanvas");
1934
- h(this, "_textureContext");
1935
- h(this, "_renderer");
1974
+ E(this, "_textureCanvas");
1975
+ E(this, "_textureContext");
1976
+ E(this, "_renderer");
1936
1977
  this._renderer = A, this._textureCanvas = document.createElement("canvas"), this._textureContext = this._textureCanvas.getContext("2d", { willReadFrequently: !0, alpha: !1 });
1937
1978
  }
1938
1979
  /**
@@ -1944,13 +1985,13 @@ class uA {
1944
1985
  * @returns Object containing framebuffer, columns, and rows
1945
1986
  */
1946
1987
  createTextureAtlas(A, r, e, t) {
1947
- const n = A.length, a = Math.ceil(Math.sqrt(n)), B = Math.ceil(n / a), s = r.width * a, E = r.height * B;
1948
- this._setupCanvas(s, E, e, t), this._renderCharactersToCanvas(A, r, a, e), this._applyBlackWhiteThreshold();
1949
- const g = this._renderer.createFramebuffer(s, E, { filter: "nearest" });
1950
- return g.update(this._textureCanvas), {
1951
- framebuffer: g,
1988
+ const n = A.length, a = Math.ceil(Math.sqrt(n)), s = Math.ceil(n / a), B = r.width * a, g = r.height * s;
1989
+ this._setupCanvas(B, g, e, t), this._renderCharactersToCanvas(A, r, a, e), this._applyBlackWhiteThreshold();
1990
+ const o = this._renderer.createFramebuffer(B, g, { filter: "nearest" });
1991
+ return o.update(this._textureCanvas), {
1992
+ framebuffer: o,
1952
1993
  columns: a,
1953
- rows: B
1994
+ rows: s
1954
1995
  };
1955
1996
  }
1956
1997
  /**
@@ -1974,8 +2015,8 @@ class uA {
1974
2015
  */
1975
2016
  _renderCharactersToCanvas(A, r, e, t) {
1976
2017
  for (let n = 0; n < A.length; n++) {
1977
- const a = n % e, B = Math.floor(n / e), s = a * r.width + r.width * 0.5, E = B * r.height + r.height * 0.5, g = Math.round(s - r.width * 0.5), c = Math.round(E - t * 0.5);
1978
- this._textureContext.fillText(A[n].character, g, c);
2018
+ const a = n % e, s = Math.floor(n / e), B = a * r.width + r.width * 0.5, g = s * r.height + r.height * 0.5, o = Math.round(B - r.width * 0.5), u = Math.round(g - t * 0.5);
2019
+ this._textureContext.fillText(A[n].character, o, u);
1979
2020
  }
1980
2021
  }
1981
2022
  /**
@@ -1987,19 +2028,19 @@ class uA {
1987
2028
  _applyBlackWhiteThreshold(A = 128) {
1988
2029
  const r = this._textureContext.getImageData(0, 0, this._textureCanvas.width, this._textureCanvas.height), e = r.data;
1989
2030
  for (let t = 0; t < e.length; t += 4) {
1990
- const n = 0.299 * e[t] + 0.587 * e[t + 1] + 0.114 * e[t + 2], a = A + 32, B = n > a ? 255 : 0;
1991
- e[t] = B, e[t + 1] = B, e[t + 2] = B;
2031
+ const n = 0.299 * e[t] + 0.587 * e[t + 1] + 0.114 * e[t + 2], a = A + 32, s = n > a ? 255 : 0;
2032
+ e[t] = s, e[t + 1] = s, e[t + 2] = s;
1992
2033
  }
1993
2034
  this._textureContext.putImageData(r, 0, 0);
1994
2035
  }
1995
2036
  }
1996
- class CA {
2037
+ class dA {
1997
2038
  /**
1998
2039
  * Creates a new MetricsCalculation instance.
1999
2040
  */
2000
2041
  constructor() {
2001
- h(this, "_tempCanvas");
2002
- h(this, "_tempContext");
2042
+ E(this, "_tempCanvas");
2043
+ E(this, "_tempContext");
2003
2044
  this._tempCanvas = document.createElement("canvas"), this._tempContext = this._tempCanvas.getContext("2d");
2004
2045
  }
2005
2046
  /**
@@ -2014,8 +2055,8 @@ class CA {
2014
2055
  this._tempContext.font = `${r}px ${e}`;
2015
2056
  let t = 0, n = 0;
2016
2057
  for (const a of A) {
2017
- const B = this._tempContext.measureText(a), s = B.width, E = B.actualBoundingBoxAscent + B.actualBoundingBoxDescent;
2018
- s > 0 && (t = Math.max(t, s), n = Math.max(n, E));
2058
+ const s = this._tempContext.measureText(a), B = s.width, g = s.actualBoundingBoxAscent + s.actualBoundingBoxDescent;
2059
+ B > 0 && (t = Math.max(t, B), n = Math.max(n, g));
2019
2060
  }
2020
2061
  return {
2021
2062
  width: Math.ceil(t),
@@ -2033,16 +2074,16 @@ class DA {
2033
2074
  createCharacterObjects(A, r) {
2034
2075
  return A.map((e, t) => {
2035
2076
  const n = e.codePointAt(0) || 0, a = this._generateCharacterColor(t);
2036
- let B = 0;
2077
+ let s = 0;
2037
2078
  if (r.hmtx && r.hmtx.aWidth) {
2038
- const s = this._getGlyphIndex(r, n);
2039
- s > 0 && r.hmtx.aWidth[s] !== void 0 && (B = r.hmtx.aWidth[s]);
2079
+ const B = this._getGlyphIndex(r, n);
2080
+ B > 0 && r.hmtx.aWidth[B] !== void 0 && (s = r.hmtx.aWidth[B]);
2040
2081
  }
2041
2082
  return {
2042
2083
  character: e,
2043
2084
  unicode: n,
2044
2085
  color: a,
2045
- advanceWidth: B
2086
+ advanceWidth: s
2046
2087
  };
2047
2088
  });
2048
2089
  }
@@ -2065,9 +2106,9 @@ class DA {
2065
2106
  {
2066
2107
  const a = t.idRangeOffset[n] / 2 + (r - t.startCount[n]) - (t.startCount.length - n);
2067
2108
  if (a >= 0 && a < t.glyphIdArray.length) {
2068
- const B = t.glyphIdArray[a];
2069
- if (B !== 0)
2070
- return B + t.idDelta[n] & 65535;
2109
+ const s = t.glyphIdArray[a];
2110
+ if (s !== 0)
2111
+ return s + t.idDelta[n] & 65535;
2071
2112
  }
2072
2113
  }
2073
2114
  }
@@ -2090,6 +2131,12 @@ class DA {
2090
2131
  * @returns RGB color as a tuple [r, g, b], or [0, 0, 0] if not found
2091
2132
  */
2092
2133
  getCharacterColor(A, r) {
2134
+ if (!F.validate(
2135
+ typeof A == "string" && A.length === 1,
2136
+ "Character must be a single character string.",
2137
+ { method: "getCharacterColor", providedValue: A }
2138
+ ))
2139
+ return [0, 0, 0];
2093
2140
  const e = r.find((t) => t.character === A);
2094
2141
  return e ? e.color : [0, 0, 0];
2095
2142
  }
@@ -2100,10 +2147,14 @@ class DA {
2100
2147
  * @returns Array of RGB colors for each character
2101
2148
  */
2102
2149
  getCharacterColors(A, r) {
2103
- return A.split("").map((e) => this.getCharacterColor(e, r) || [0, 0, 0]);
2150
+ return F.validate(
2151
+ typeof A == "string" && A.length > 0,
2152
+ "Characters must be a string with at least one character.",
2153
+ { method: "getCharacterColors", providedValue: A }
2154
+ ) ? A.split("").map((e) => this.getCharacterColor(e, r) || [0, 0, 0]) : [[0, 0, 0]];
2104
2155
  }
2105
2156
  }
2106
- class dA {
2157
+ class PA {
2107
2158
  /**
2108
2159
  * Creates a new TextmodeFont instance.
2109
2160
  * @param renderer Renderer instance for texture creation
@@ -2111,21 +2162,21 @@ class dA {
2111
2162
  * @ignore
2112
2163
  */
2113
2164
  constructor(A, r = 16) {
2114
- h(this, "_font");
2115
- h(this, "_characters", []);
2116
- h(this, "_fontFramebuffer");
2117
- h(this, "_fontSize", 16);
2118
- h(this, "_textureColumns", 0);
2119
- h(this, "_textureRows", 0);
2120
- h(this, "_maxGlyphDimensions", { width: 0, height: 0 });
2121
- h(this, "_fontFace");
2122
- h(this, "_fontFamilyName", "UrsaFont");
2165
+ E(this, "_font");
2166
+ E(this, "_characters", []);
2167
+ E(this, "_fontFramebuffer");
2168
+ E(this, "_fontSize", 16);
2169
+ E(this, "_textureColumns", 0);
2170
+ E(this, "_textureRows", 0);
2171
+ E(this, "_maxGlyphDimensions", { width: 0, height: 0 });
2172
+ E(this, "_fontFace");
2173
+ E(this, "_fontFamilyName", "UrsaFont");
2123
2174
  // Component classes
2124
- h(this, "_characterExtractor");
2125
- h(this, "_textureAtlas");
2126
- h(this, "_metricsCalculator");
2127
- h(this, "_characterColorMapper");
2128
- this._fontSize = r, this._characterExtractor = new cA(), this._textureAtlas = new uA(A), this._metricsCalculator = new CA(), this._characterColorMapper = new DA();
2175
+ E(this, "_characterExtractor");
2176
+ E(this, "_textureAtlas");
2177
+ E(this, "_metricsCalculator");
2178
+ E(this, "_characterColorMapper");
2179
+ this._fontSize = r, this._characterExtractor = new uA(), this._textureAtlas = new CA(A), this._metricsCalculator = new dA(), this._characterColorMapper = new DA();
2129
2180
  }
2130
2181
  /**
2131
2182
  * Initializes the font manager by loading the font and creating the texture atlas.
@@ -2133,8 +2184,8 @@ class dA {
2133
2184
  * @ignore
2134
2185
  */
2135
2186
  async initialize() {
2136
- const r = await (await fetch(lA)).arrayBuffer();
2137
- await this._loadFontFace(r), this._font = o.parse(r)[0], await this._initializeFont();
2187
+ const r = await (await fetch(cA)).arrayBuffer();
2188
+ await this._loadFontFace(r), this._font = Q.parse(r)[0], await this._initializeFont();
2138
2189
  }
2139
2190
  /**
2140
2191
  * Sets the font size for rendering.
@@ -2169,7 +2220,7 @@ class dA {
2169
2220
  throw new T(`Failed to load font file: ${r.status} ${r.statusText}`);
2170
2221
  const e = await r.arrayBuffer();
2171
2222
  await this._loadFontFace(e);
2172
- const t = o.parse(e);
2223
+ const t = Q.parse(e);
2173
2224
  if (!t || t.length === 0)
2174
2225
  throw new Error("Failed to parse font file");
2175
2226
  this._font = t[0], await this._initializeFont();
@@ -2209,11 +2260,7 @@ class dA {
2209
2260
  * @returns The RGB color as an array `[r, g, b]`.
2210
2261
  */
2211
2262
  getCharacterColor(A) {
2212
- return y.validate(
2213
- typeof A == "string" && A.length === 1,
2214
- "Character must be a single character string.",
2215
- { providedValue: A, method: "getCharacterColor" }
2216
- ) ? this._characterColorMapper.getCharacterColor(A, this._characters) : [0, 0, 0];
2263
+ return this._characterColorMapper.getCharacterColor(A, this._characters);
2217
2264
  }
2218
2265
  /**
2219
2266
  * Get the colors associated with a string of characters.
@@ -2222,11 +2269,7 @@ class dA {
2222
2269
  * Each color is represented as an array `[r, g, b]`.
2223
2270
  */
2224
2271
  getCharacterColors(A) {
2225
- return y.validate(
2226
- typeof A == "string" && A.length > 0,
2227
- "Characters must be a string with at least one character.",
2228
- { providedValue: A, method: "getCharacterColors" }
2229
- ) ? this._characterColorMapper.getCharacterColors(A, this._characters) : [[0, 0, 0]];
2272
+ return this._characterColorMapper.getCharacterColors(A, this._characters);
2230
2273
  }
2231
2274
  /**
2232
2275
  * Checks if all characters in the given string exist in the font.
@@ -2251,10 +2294,6 @@ class dA {
2251
2294
  get characters() {
2252
2295
  return this._characters;
2253
2296
  }
2254
- /** Returns a string representation of all characters in the font. */
2255
- get charactersString() {
2256
- return this._characters.map((A) => A.character).join("");
2257
- }
2258
2297
  /** Returns the number of columns in the texture atlas. */
2259
2298
  get textureColumns() {
2260
2299
  return this._textureColumns;
@@ -2272,7 +2311,7 @@ class dA {
2272
2311
  return this._fontSize;
2273
2312
  }
2274
2313
  }
2275
- class PA {
2314
+ class mA {
2276
2315
  /**
2277
2316
  * Create a new grid instance.
2278
2317
  * @param canvas The canvas element used to determine the grid dimensions.
@@ -2282,25 +2321,25 @@ class PA {
2282
2321
  */
2283
2322
  constructor(A, r, e) {
2284
2323
  /** The number of columns in the grid. */
2285
- h(this, "_cols");
2324
+ E(this, "_cols");
2286
2325
  /** The number of rows in the grid. */
2287
- h(this, "_rows");
2326
+ E(this, "_rows");
2288
2327
  /** The total width of the grid in pixels. */
2289
- h(this, "_width");
2328
+ E(this, "_width");
2290
2329
  /** The total height of the grid in pixels. */
2291
- h(this, "_height");
2330
+ E(this, "_height");
2292
2331
  /** The offset to the outer canvas on the x-axis when centering the grid. */
2293
- h(this, "_offsetX");
2332
+ E(this, "_offsetX");
2294
2333
  /** The offset to the outer canvas on the y-axis when centering the grid. */
2295
- h(this, "_offsetY");
2334
+ E(this, "_offsetY");
2296
2335
  /** Whether the grid dimensions are fixed, or responsive based on the canvas dimensions. */
2297
- h(this, "_fixedDimensions", !1);
2336
+ E(this, "_fixedDimensions", !1);
2298
2337
  /** The canvas element used to determine the grid dimensions. */
2299
- h(this, "_canvas");
2338
+ E(this, "_canvas");
2300
2339
  /** The width of each cell in the grid. */
2301
- h(this, "_cellWidth");
2340
+ E(this, "_cellWidth");
2302
2341
  /** The height of each cell in the grid. */
2303
- h(this, "_cellHeight");
2342
+ E(this, "_cellHeight");
2304
2343
  this._canvas = A, this._cellWidth = r, this._cellHeight = e, this.reset();
2305
2344
  }
2306
2345
  /**
@@ -2402,8 +2441,8 @@ class PA {
2402
2441
  }
2403
2442
  class IA {
2404
2443
  constructor(A) {
2405
- h(this, "webglCanvas");
2406
- h(this, "captureCanvas");
2444
+ E(this, "webglCanvas");
2445
+ E(this, "captureCanvas");
2407
2446
  this.captureCanvas = A, this.webglCanvas = this.createOverlayCanvas();
2408
2447
  }
2409
2448
  generateUniqueCanvasId() {
@@ -2413,12 +2452,12 @@ class IA {
2413
2452
  return r;
2414
2453
  }
2415
2454
  createOverlayCanvas() {
2416
- var B;
2455
+ var s;
2417
2456
  const A = document.createElement("canvas"), r = this.captureCanvas.getBoundingClientRect(), e = Math.round(r.width), t = Math.round(r.height);
2418
2457
  A.width = e, A.height = t, A.className = "textmodeCanvas", A.id = this.generateUniqueCanvasId(), A.style.position = "absolute", A.style.pointerEvents = "none";
2419
2458
  const n = window.getComputedStyle(this.captureCanvas);
2420
2459
  let a = parseInt(n.zIndex || "0", 10);
2421
- return isNaN(a) && (a = 0), A.style.zIndex = (a + 1).toString(), A.style.width = e + "px", A.style.height = t + "px", this.positionOverlayCanvas(A), (B = this.captureCanvas.parentNode) == null || B.insertBefore(A, this.captureCanvas.nextSibling), A;
2460
+ return isNaN(a) && (a = 0), A.style.zIndex = (a + 1).toString(), A.style.width = e + "px", A.style.height = t + "px", this.positionOverlayCanvas(A), (s = this.captureCanvas.parentNode) == null || s.insertBefore(A, this.captureCanvas.nextSibling), A;
2422
2461
  }
2423
2462
  positionOverlayCanvas(A) {
2424
2463
  const r = this.captureCanvas.getBoundingClientRect();
@@ -2461,17 +2500,25 @@ class IA {
2461
2500
  return this.webglCanvas.height;
2462
2501
  }
2463
2502
  }
2464
- class rA {
2503
+ class k {
2504
+ /**
2505
+ * Creates a new TextmodeConverter instance.
2506
+ * @param renderer Renderer instance for texture creation
2507
+ * @param fontManager Font manager for character extraction and color mapping
2508
+ * @param grid Grid instance for managing textmode layout
2509
+ * @param options Additional options for the converter
2510
+ * @ignore
2511
+ */
2465
2512
  constructor(A, r, e, t = {}) {
2466
- h(this, "renderer");
2467
- h(this, "fontManager");
2468
- h(this, "grid");
2469
- h(this, "_characterFramebuffer");
2470
- h(this, "_primaryColorFramebuffer");
2471
- h(this, "_secondaryColorFramebuffer");
2472
- h(this, "_rotationFramebuffer");
2473
- h(this, "_transformFramebuffer");
2474
- h(this, "options");
2513
+ E(this, "renderer");
2514
+ E(this, "fontManager");
2515
+ E(this, "grid");
2516
+ E(this, "_characterFramebuffer");
2517
+ E(this, "_primaryColorFramebuffer");
2518
+ E(this, "_secondaryColorFramebuffer");
2519
+ E(this, "_rotationFramebuffer");
2520
+ E(this, "_transformFramebuffer");
2521
+ E(this, "options");
2475
2522
  this.renderer = A, this.fontManager = r, this.grid = e, this.options = t, this._characterFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows), this._primaryColorFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows), this._secondaryColorFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows), this._rotationFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows), this._transformFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows);
2476
2523
  }
2477
2524
  /**
@@ -2481,23 +2528,28 @@ class rA {
2481
2528
  resize() {
2482
2529
  this._characterFramebuffer.resize(this.grid.cols, this.grid.rows), this._primaryColorFramebuffer.resize(this.grid.cols, this.grid.rows), this._secondaryColorFramebuffer.resize(this.grid.cols, this.grid.rows), this._rotationFramebuffer.resize(this.grid.cols, this.grid.rows), this._transformFramebuffer.resize(this.grid.cols, this.grid.rows);
2483
2530
  }
2531
+ /** Returns the framebuffer containing character data. */
2484
2532
  get characterFramebuffer() {
2485
2533
  return this._characterFramebuffer;
2486
2534
  }
2535
+ /** Returns the framebuffer containing primary color data. */
2487
2536
  get primaryColorFramebuffer() {
2488
2537
  return this._primaryColorFramebuffer;
2489
2538
  }
2539
+ /** Returns the framebuffer containing secondary color data. */
2490
2540
  get secondaryColorFramebuffer() {
2491
2541
  return this._secondaryColorFramebuffer;
2492
2542
  }
2543
+ /** Returns the framebuffer containing rotation data. */
2493
2544
  get rotationFramebuffer() {
2494
2545
  return this._rotationFramebuffer;
2495
2546
  }
2547
+ /** Returns the framebuffer containing transformation data. */
2496
2548
  get transformFramebuffer() {
2497
2549
  return this._transformFramebuffer;
2498
2550
  }
2499
2551
  }
2500
- class mA {
2552
+ class vA {
2501
2553
  /**
2502
2554
  * Create a new color palette instance.
2503
2555
  * @param renderer The renderer instance.
@@ -2505,9 +2557,9 @@ class mA {
2505
2557
  */
2506
2558
  constructor(A, r) {
2507
2559
  /** The framebuffer used to store the color palette. */
2508
- h(this, "_framebuffer");
2509
- h(this, "_renderer");
2510
- h(this, "_colors");
2560
+ E(this, "_framebuffer");
2561
+ E(this, "_renderer");
2562
+ E(this, "_colors");
2511
2563
  this._renderer = A, this._colors = r;
2512
2564
  const e = Math.max(this._colors.length, 1);
2513
2565
  this._framebuffer = this._renderer.createFramebuffer(e, 1), this._updateFramebuffer();
@@ -2552,32 +2604,33 @@ class mA {
2552
2604
  return this._framebuffer.texture;
2553
2605
  }
2554
2606
  }
2555
- class iA extends rA {
2607
+ class tA extends k {
2556
2608
  constructor(r, e, t, n = {}) {
2557
2609
  super(r, e, t, n);
2558
- h(this, "palette");
2559
- this.palette = new mA(this.renderer, this.fontManager.getCharacterColors(" .:-=+*%@#"));
2610
+ E(this, "palette");
2611
+ this.palette = new vA(this.renderer, this.fontManager.getCharacterColors(" .:-=+*%@#"));
2560
2612
  }
2561
2613
  /**
2562
- * Sets the characters used for brightness mapping.
2563
- * @param characters The characters to use for brightness mapping, ordered from darkest to brightest.
2614
+ * Sets the characters used for mapping.
2615
+ * @param characters The characters to use for mapping, usually ordered from darkest to brightest.
2564
2616
  */
2565
2617
  characters(r) {
2566
- y.validate(
2618
+ F.validate(
2567
2619
  this.fontManager.hasAllCharacters(r),
2568
2620
  "One or more characters do not exist in the current font.",
2569
2621
  { method: "characters", providedValue: r }
2570
2622
  ) && (this.options.characters = r, this.palette.setColors(this.fontManager.getCharacterColors(r)));
2571
2623
  }
2572
2624
  /**
2573
- * Sets a fixed color for characters if `characterColorMode` is `fixed`.
2625
+ * Sets the color of the characters affected by the converter.
2626
+ * This is only used when `characterColorMode` is set to `'fixed'`.
2574
2627
  * @param r Red component (0-255).
2575
2628
  * @param g Green component (0-255).
2576
2629
  * @param b Blue component (0-255).
2577
2630
  * @param a Alpha component (0-255).
2578
2631
  */
2579
2632
  characterColor(r, e = r, t = r, n = 255) {
2580
- y.validate(
2633
+ F.validate(
2581
2634
  [r, e, t, n].every((a) => a >= 0 && a <= 255),
2582
2635
  "Character color values must be between 0 and 255",
2583
2636
  { method: "characterColor", providedValues: { r, g: e, b: t, a: n } }
@@ -2590,45 +2643,46 @@ class iA extends rA {
2590
2643
  * @param mode The color mode to use for characters.
2591
2644
  */
2592
2645
  characterColorMode(r) {
2593
- y.validate(
2646
+ F.validate(
2594
2647
  ["sampled", "fixed"].includes(r),
2595
2648
  "Invalid character color mode. Must be 'sampled' or 'fixed'.",
2596
2649
  { method: "characterColorMode", providedValue: r }
2597
2650
  ) && (this.options.characterColorMode = r);
2598
2651
  }
2599
2652
  /**
2600
- * Sets the cell color if `backgroundColorMode` is `fixed`.
2653
+ * Sets the cell color for all cells affected by the converter.
2654
+ * This is only used when `cellColorMode` is set to `'fixed'`.
2601
2655
  * @param r Red component (0-255).
2602
2656
  * @param g Green component (0-255).
2603
2657
  * @param b Blue component (0-255).
2604
2658
  * @param a Alpha component (0-255).
2605
2659
  */
2606
2660
  cellColor(r, e = r, t = r, n = 255) {
2607
- y.validate(
2661
+ F.validate(
2608
2662
  [r, e, t, n].every((a) => a >= 0 && a <= 255),
2609
2663
  "Cell color values must be between 0 and 255",
2610
2664
  { method: "cellColor", providedValues: { r, g: e, b: t, a: n } }
2611
- ) && (this.options.backgroundColor = [r, e, t, n]);
2665
+ ) && (this.options.cellColor = [r, e, t, n]);
2612
2666
  }
2613
2667
  /**
2614
- * Sets the background color mode.
2668
+ * Sets the cell color mode.
2615
2669
  * - `'sampled'`: Uses sampled colors from the source texture.
2616
- * - `'fixed'`: Uses a fixed color set by `backgroundColor()`.
2670
+ * - `'fixed'`: Uses a fixed color set via {@link cellColor}.
2617
2671
  * @param mode The color mode to use for background cells.
2618
2672
  */
2619
2673
  cellColorMode(r) {
2620
- y.validate(
2674
+ F.validate(
2621
2675
  ["sampled", "fixed"].includes(r),
2622
2676
  "Invalid cell color mode. Must be 'sampled' or 'fixed'.",
2623
2677
  { method: "cellColorMode", providedValue: r }
2624
- ) && (this.options.backgroundColorMode = r);
2678
+ ) && (this.options.cellColorMode = r);
2625
2679
  }
2626
2680
  /**
2627
2681
  * Swaps the character and cell color.
2628
2682
  * @param invert If `true`, the character color becomes the cell color and vice versa.
2629
2683
  */
2630
2684
  invert(r) {
2631
- y.validate(
2685
+ F.validate(
2632
2686
  typeof r == "boolean" || typeof r == "number" && Number.isInteger(r),
2633
2687
  "Invert must be a boolean value or an integer (0 for false, any other number for true).",
2634
2688
  { method: "invert", providedValue: r }
@@ -2639,18 +2693,22 @@ class iA extends rA {
2639
2693
  * @param angle The rotation angle in degrees.
2640
2694
  */
2641
2695
  rotation(r) {
2642
- y.validate(
2696
+ if (!F.validate(
2643
2697
  typeof r == "number",
2644
2698
  "Rotation angle must be a number.",
2645
2699
  { method: "rotation", providedValue: r }
2646
- ) && (this.options.rotation = r);
2700
+ ))
2701
+ return;
2702
+ r = r % 360, r < 0 && (r += 360);
2703
+ const e = r * 255 / 360, t = Math.floor(e) / 255, n = Math.round(e - t);
2704
+ this.options.rotation = [t, n, 0, 1];
2647
2705
  }
2648
2706
  /**
2649
2707
  * Flips the characters horizontally.
2650
2708
  * @param flip If `true`, characters are flipped horizontally. If `false`, no flip is applied.
2651
2709
  */
2652
2710
  flipHorizontally(r) {
2653
- y.validate(
2711
+ F.validate(
2654
2712
  typeof r == "boolean" || typeof r == "number" && Number.isInteger(r),
2655
2713
  "Flip horizontally must be a boolean value or an integer (0 for false, any other number for true).",
2656
2714
  { method: "flipHorizontally", providedValue: r }
@@ -2661,15 +2719,15 @@ class iA extends rA {
2661
2719
  * @param flip If `true`, characters are flipped vertically. If `false`, no flip is applied.
2662
2720
  */
2663
2721
  flipVertically(r) {
2664
- y.validate(
2722
+ F.validate(
2665
2723
  typeof r == "boolean" || typeof r == "number" && Number.isInteger(r),
2666
2724
  "Flip vertically must be a boolean value or an integer (0 for false, any other number for true).",
2667
2725
  { method: "flipVertically", providedValue: r }
2668
2726
  ) && (this.options.flipVertically = !!r);
2669
2727
  }
2670
2728
  }
2671
- var wA = "precision lowp float;uniform sampler2D u_sketchTexture;uniform vec2 u_gridCellDimensions;varying vec2 v_uv;void main(){vec2 cellCenter=(floor(v_uv*u_gridCellDimensions)+vec2(0.5))/u_gridCellDimensions;gl_FragColor=texture2D(u_sketchTexture,cellCenter);}", vA = "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);}";
2672
- const pA = {
2729
+ var wA = "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);}}", pA = "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);}}", _A = "precision lowp float;uniform sampler2D u_sampleTexture;uniform bool u_invert;uniform bool u_flipHorizontally;uniform bool u_flipVertically;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){float invertValue=u_invert ? 1.0 : 0.0;float flipHValue=u_flipHorizontally ? 1.0 : 0.0;float flipVValue=u_flipVertically ? 1.0 : 0.0;gl_FragColor=vec4(invertValue,flipHValue,flipVValue,1.0);}else{gl_FragColor=vec4(0.0);}}", fA = "precision lowp float;uniform sampler2D u_sampleTexture;uniform vec4 u_rotation;varying vec2 v_uv;void main(){vec4 sampleColor=texture2D(u_sampleTexture,v_uv);if(sampleColor.a>0.0){gl_FragColor=u_rotation;}else{gl_FragColor=vec4(0.0);}}", xA = "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);}";
2730
+ const FA = {
2673
2731
  /** Enable/disable the renderer */
2674
2732
  enabled: !0,
2675
2733
  /** Characters used for brightness mapping (from darkest to brightest) */
@@ -2679,13 +2737,13 @@ const pA = {
2679
2737
  /** Character color mode */
2680
2738
  characterColorMode: "sampled",
2681
2739
  /** Cell background color. Only used when `characterColorMode` is set to `fixed` */
2682
- backgroundColor: [0, 0, 0, 255],
2740
+ cellColor: [0, 0, 0, 255],
2683
2741
  /** Background color mode */
2684
- backgroundColorMode: "fixed",
2742
+ cellColorMode: "fixed",
2685
2743
  /** Swap the cells ASCII character colors with it's cell background colors */
2686
2744
  invert: !1,
2687
2745
  /** Rotation angle of all characters in the grid in degrees */
2688
- rotation: 0,
2746
+ rotation: [0, 0, 0, 255],
2689
2747
  /** Flip the ASCII characters horizontally */
2690
2748
  flipHorizontally: !1,
2691
2749
  /** Flip the ASCII characters vertically */
@@ -2693,20 +2751,26 @@ const pA = {
2693
2751
  /** Range of brightness values to map to ASCII characters */
2694
2752
  brightnessRange: [0, 255]
2695
2753
  };
2696
- class nA extends iA {
2754
+ class eA extends tA {
2755
+ /**
2756
+ * Creates a new TextmodeBrightnessConverter instance.
2757
+ * @param renderer Renderer instance for texture creation
2758
+ * @param fontManager Font manager for character extraction and color mapping
2759
+ * @param grid Grid manager for layout and positioning
2760
+ * @ignore
2761
+ */
2697
2762
  constructor(r, e, t) {
2698
- super(r, e, t, { ...pA });
2699
- h(this, "sampleShader");
2700
- h(this, "charMappingShader");
2701
- h(this, "sampleFramebuffer");
2702
- this.sampleShader = new X(r.context, J, wA), this.charMappingShader = new X(r.context, J, vA), this.sampleFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows);
2763
+ super(r, e, t, { ...FA });
2764
+ E(this, "sampleShader");
2765
+ E(this, "colorFillShader");
2766
+ E(this, "charMappingShader");
2767
+ E(this, "transformFillShader");
2768
+ E(this, "rotationFillShader");
2769
+ E(this, "sampleFramebuffer");
2770
+ this.sampleShader = new R(r.context, O, wA), this.colorFillShader = new R(r.context, O, pA), this.transformFillShader = new R(r.context, O, _A), this.rotationFillShader = new R(r.context, O, fA), this.charMappingShader = new R(r.context, O, xA), this.sampleFramebuffer = this.renderer.createFramebuffer(this.grid.cols, this.grid.rows);
2703
2771
  }
2704
2772
  convert(r) {
2705
- this.sampleFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.sampleShader), this.renderer.setUniform("u_sketchTexture", r), this.renderer.setUniform("u_gridCellDimensions", [this.grid.cols, this.grid.rows]), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this.sampleFramebuffer.end(), this._primaryColorFramebuffer.begin(), this.options.characterColorMode === "fixed" ? this.renderer.background(this.options.characterColor[0], this.options.characterColor[1], this.options.characterColor[2], this.options.characterColor[3]) : (this.renderer.clear(), this.renderer.image(this.sampleFramebuffer, 0, 0, this.grid.cols, this.grid.rows)), this._primaryColorFramebuffer.end(), this._secondaryColorFramebuffer.begin(), this.options.backgroundColorMode === "fixed" ? this.renderer.background(this.options.backgroundColor[0], this.options.backgroundColor[1], this.options.backgroundColor[2], this.options.backgroundColor[3]) : (this.renderer.clear(), this.renderer.image(this.sampleFramebuffer, 0, 0, this.grid.cols, this.grid.rows)), this._secondaryColorFramebuffer.end(), this._transformFramebuffer.begin(), this.renderer.background(
2706
- this.options.invert ? 255 : 0,
2707
- this.options.flipHorizontally ? 255 : 0,
2708
- this.options.flipVertically ? 255 : 0
2709
- ), this._transformFramebuffer.end(), this._rotationFramebuffer.begin(), this.renderer.background(this.options.rotation, this.options.rotation, this.options.rotation), this._rotationFramebuffer.end(), this._characterFramebuffer.begin(), this.renderer.clear(0, 0, 0, 0), this.renderer.shader(this.charMappingShader), this.renderer.setUniform("u_colorSampleFramebuffer", this.sampleFramebuffer.texture), this.renderer.setUniform("u_charPaletteTexture", this.palette.texture), this.renderer.setUniform("u_charPaletteSize", [this.palette.colors.length, 1]), this.renderer.setUniform("u_textureSize", [this.grid.cols, this.grid.rows]), this.renderer.setUniform("u_brightnessRange", this.options.brightnessRange), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._characterFramebuffer.end();
2773
+ this.sampleFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.sampleShader), this.renderer.setUniform("u_sketchTexture", r), this.renderer.setUniform("u_gridCellDimensions", [this.grid.cols, this.grid.rows]), this.renderer.setUniform("u_brightnessRange", this.options.brightnessRange), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this.sampleFramebuffer.end(), this._primaryColorFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.colorFillShader), this.renderer.setUniform("u_sampleTexture", this.sampleFramebuffer.texture), this.renderer.setUniform("u_fillColor", this.options.characterColor), this.renderer.setUniform("u_useFixedColor", this.options.characterColorMode === "fixed"), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._primaryColorFramebuffer.end(), this._secondaryColorFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.colorFillShader), this.renderer.setUniform("u_sampleTexture", this.sampleFramebuffer.texture), this.renderer.setUniform("u_fillColor", this.options.cellColor), this.renderer.setUniform("u_useFixedColor", this.options.cellColorMode === "fixed"), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._secondaryColorFramebuffer.end(), this._transformFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.transformFillShader), this.renderer.setUniform("u_sampleTexture", this.sampleFramebuffer.texture), this.renderer.setUniform("u_invert", this.options.invert), this.renderer.setUniform("u_flipHorizontally", this.options.flipHorizontally), this.renderer.setUniform("u_flipVertically", this.options.flipVertically), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._transformFramebuffer.end(), this._rotationFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this.rotationFillShader), this.renderer.setUniform("u_sampleTexture", this.sampleFramebuffer.texture), this.renderer.setUniform("u_rotation", this.options.rotation), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._rotationFramebuffer.end(), this._characterFramebuffer.begin(), this.renderer.clear(0, 0, 0, 0), this.renderer.shader(this.charMappingShader), this.renderer.setUniform("u_colorSampleFramebuffer", this.sampleFramebuffer.texture), this.renderer.setUniform("u_charPaletteTexture", this.palette.texture), this.renderer.setUniform("u_charPaletteSize", [this.palette.colors.length, 1]), this.renderer.setUniform("u_brightnessRange", this.options.brightnessRange), this.renderer.rect(0, 0, this.grid.cols, this.grid.rows), this._characterFramebuffer.end();
2710
2774
  }
2711
2775
  resize() {
2712
2776
  super.resize(), this.sampleFramebuffer.resize(this.grid.cols, this.grid.rows);
@@ -2719,86 +2783,182 @@ class nA extends iA {
2719
2783
  * @param range Array of two numbers `[min, max]`, where `min` is darkest and `max` is brightest.
2720
2784
  */
2721
2785
  brightnessRange(r) {
2722
- y.validate(
2786
+ F.validate(
2723
2787
  Array.isArray(r) && r.length === 2 && r.every((e) => typeof e == "number" && e >= 0 && e <= 255),
2724
2788
  "Brightness range must be an array of two numbers between 0 and 255.",
2725
2789
  { method: "brightnessRange", providedValue: r }
2726
2790
  ) && (this.options.brightnessRange = r);
2727
2791
  }
2728
2792
  }
2729
- const TA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2793
+ const OA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2730
2794
  __proto__: null,
2731
- TextmodeBrightnessConverter: nA,
2732
- TextmodeConverter: rA,
2733
- TextmodeFeatureConverter: iA
2795
+ TextmodeBrightnessConverter: eA,
2796
+ TextmodeConverter: k,
2797
+ TextmodeFeatureConverter: tA
2734
2798
  }, Symbol.toStringTag, { value: "Module" }));
2735
- var xA = "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);vec2 charCoord=vec2(charCol,charRow)/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);}";
2736
- class _A {
2799
+ var UA = "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);vec2 charCoord=vec2(charCol,charRow)/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);}";
2800
+ class bA {
2801
+ /**
2802
+ * Creates an instance of TextmodeConversionPipeline.
2803
+ * @param renderer The renderer to use for the pipeline.
2804
+ * @param font The textmode font to use.
2805
+ * @param grid The textmode grid to use.
2806
+ * @ignore
2807
+ */
2737
2808
  constructor(A, r, e) {
2738
- h(this, "renderer");
2739
- h(this, "font");
2740
- h(this, "grid");
2741
- h(this, "converters");
2742
- h(this, "_resultFramebuffer");
2743
- h(this, "_asciiShader");
2744
- h(this, "_characterFramebuffer");
2745
- h(this, "_primaryColorFramebuffer");
2746
- h(this, "_secondaryColorFramebuffer");
2747
- h(this, "_rotationFramebuffer");
2748
- h(this, "_transformFramebuffer");
2749
- this.renderer = A, this.font = r, this.grid = e, this._asciiShader = this.renderer.createShader(J, xA), this.converters = {
2750
- brightness: new nA(A, r, e)
2751
- }, this._characterFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._primaryColorFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._secondaryColorFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._rotationFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._transformFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._resultFramebuffer = this.renderer.createFramebuffer(this.grid.width, this.grid.height);
2752
- }
2809
+ E(this, "renderer");
2810
+ E(this, "font");
2811
+ E(this, "grid");
2812
+ E(this, "converters");
2813
+ E(this, "_resultFramebuffer");
2814
+ E(this, "_asciiShader");
2815
+ E(this, "_characterFramebuffer");
2816
+ E(this, "_primaryColorFramebuffer");
2817
+ E(this, "_secondaryColorFramebuffer");
2818
+ E(this, "_rotationFramebuffer");
2819
+ E(this, "_transformFramebuffer");
2820
+ this.renderer = A, this.font = r, this.grid = e, this._asciiShader = this.renderer.createShader(O, UA), this.converters = [
2821
+ { name: "brightness", converter: new eA(A, r, e) },
2822
+ { name: "custom", converter: new k(A, r, e) }
2823
+ ], this._characterFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._primaryColorFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._secondaryColorFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._rotationFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._transformFramebuffer = this.renderer.createFramebuffer(e.cols, e.rows), this._resultFramebuffer = this.renderer.createFramebuffer(this.grid.width, this.grid.height);
2824
+ }
2825
+ /**
2826
+ * Performs the conversion process by applying all converters in the pipeline.
2827
+ * @param sourceFramebuffer The source framebuffer to convert.
2828
+ * @ignore
2829
+ */
2753
2830
  render(A) {
2754
- for (const e of Object.values(this.converters))
2755
- e.convert(A);
2831
+ for (const e of this.converters) {
2832
+ const t = e.converter;
2833
+ t instanceof tA && t.convert(A);
2834
+ }
2756
2835
  const r = (e, t) => {
2757
2836
  e.begin(), this.renderer.clear();
2758
- for (const n of Object.values(this.converters))
2759
- this.renderer.image(t(n), 0, 0);
2837
+ for (const n of this.converters)
2838
+ this.renderer.image(t(n.converter), 0, 0);
2760
2839
  e.end();
2761
2840
  };
2762
2841
  r(this._characterFramebuffer, (e) => e.characterFramebuffer), r(this._primaryColorFramebuffer, (e) => e.primaryColorFramebuffer), r(this._secondaryColorFramebuffer, (e) => e.secondaryColorFramebuffer), r(this._rotationFramebuffer, (e) => e.rotationFramebuffer), r(this._transformFramebuffer, (e) => e.transformFramebuffer), this._resultFramebuffer.begin(), this.renderer.clear(), this.renderer.shader(this._asciiShader), this.renderer.setUniform("u_characterTexture", this.font.fontFramebuffer), this.renderer.setUniform("u_charsetDimensions", [this.font.textureColumns, this.font.textureRows]), this.renderer.setUniform("u_asciiCharacterTexture", this._characterFramebuffer.texture), this.renderer.setUniform("u_primaryColorTexture", this._primaryColorFramebuffer.texture), this.renderer.setUniform("u_secondaryColorTexture", this._secondaryColorFramebuffer.texture), this.renderer.setUniform("u_transformTexture", this._transformFramebuffer.texture), this.renderer.setUniform("u_rotationTexture", this._rotationFramebuffer.texture), this.renderer.setUniform("u_captureTexture", A.texture), this.renderer.setUniform("u_backgroundMode", !1), this.renderer.setUniform("u_captureDimensions", [A.width, A.height]), this.renderer.setUniform("u_gridCellDimensions", [this.grid.cols, this.grid.rows]), this.renderer.setUniform("u_gridPixelDimensions", [this.grid.width, this.grid.height]), this.renderer.rect(0, 0, this._resultFramebuffer.width, this._resultFramebuffer.height), this._resultFramebuffer.end();
2763
2842
  }
2843
+ /**
2844
+ * Retrieves a converter by name. Useful for accessing the pre-defined converters in the pipeline.
2845
+ * @param name The name of the converter to retrieve.
2846
+ * @returns The requested {@link TextmodeConverter} instance or `void` if not found.
2847
+ */
2764
2848
  get(A) {
2765
- if (!y.validate(
2849
+ if (!F.validate(
2766
2850
  typeof A == "string" && A.length > 0,
2767
2851
  "Converter name must be a non-empty string.",
2768
2852
  { method: "converter", providedValue: A }
2769
2853
  ))
2770
2854
  return;
2771
- const r = this.converters[A];
2772
- if (y.validate(
2773
- r instanceof rA,
2855
+ const r = this.converters.find((t) => t.name === A), e = r == null ? void 0 : r.converter;
2856
+ if (F.validate(
2857
+ e instanceof k,
2774
2858
  `Converter "${A}" is not a valid TextmodeConverter.`,
2775
- { method: "converter", providedValue: A, converterInstance: r }
2859
+ { method: "converter", providedValue: A, converterInstance: e }
2776
2860
  ))
2777
- return r;
2861
+ return e;
2862
+ }
2863
+ /**
2864
+ * Adds a new converter to the pipeline.
2865
+ * @param name A unique name for the converter.
2866
+ * @param type The type of converter to add. Can be either "brightness" or "custom".
2867
+ * @returns The newly created {@link TextmodeConverter} instance or `void` if the addition failed.
2868
+ */
2869
+ add(A, r) {
2870
+ if (!F.validate(
2871
+ typeof A == "string" && A.length > 0,
2872
+ "Converter name must be a non-empty string.",
2873
+ { method: "add", providedValue: A }
2874
+ ) || !F.validate(
2875
+ r === "brightness" || r === "custom",
2876
+ `Converter type must be either "brightness" or "custom". Provided: ${r}`,
2877
+ { method: "add", providedValue: r }
2878
+ ))
2879
+ return;
2880
+ let e;
2881
+ return r === "brightness" ? e = new eA(this.renderer, this.font, this.grid) : e = new k(this.renderer, this.font, this.grid), this.converters.push({ name: A, converter: e }), e;
2882
+ }
2883
+ /**
2884
+ * Removes a converter from the pipeline by name or instance.
2885
+ * @param nameOrInstance The unique name of the converter or the converter instance to remove.
2886
+ * @returns `true` if the converter was successfully removed, `false` otherwise.
2887
+ */
2888
+ remove(A) {
2889
+ if (!F.validate(
2890
+ typeof A == "string" || A instanceof k,
2891
+ "Parameter must be either a string (converter name) or a TextmodeConverter instance.",
2892
+ { method: "remove", providedValue: A }
2893
+ ))
2894
+ return !1;
2895
+ let r = -1;
2896
+ if (typeof A == "string") {
2897
+ if (!F.validate(
2898
+ A.length > 0,
2899
+ "Converter name must be a non-empty string.",
2900
+ { method: "remove", providedValue: A }
2901
+ ))
2902
+ return !1;
2903
+ r = this.converters.findIndex((e) => e.name === A);
2904
+ } else
2905
+ r = this.converters.findIndex((e) => e.converter === A);
2906
+ return F.validate(
2907
+ r !== -1,
2908
+ typeof A == "string" ? `Converter with name "${A}" not found in pipeline.` : "Converter instance not found in pipeline.",
2909
+ { method: "remove", providedValue: A, convertersCount: this.converters.length }
2910
+ ) ? (this.converters.splice(r, 1), !0) : !1;
2778
2911
  }
2912
+ /**
2913
+ * Returns the framebuffer containing the textmode conversion result.
2914
+ */
2779
2915
  get texture() {
2780
2916
  return this._resultFramebuffer;
2781
2917
  }
2918
+ /**
2919
+ * Resizes all internal framebuffers.
2920
+ * @ignore
2921
+ */
2782
2922
  resize() {
2783
2923
  this._resultFramebuffer.resize(this.grid.width, this.grid.height), this._characterFramebuffer.resize(this.grid.cols, this.grid.rows), this._primaryColorFramebuffer.resize(this.grid.cols, this.grid.rows), this._secondaryColorFramebuffer.resize(this.grid.cols, this.grid.rows), this._rotationFramebuffer.resize(this.grid.cols, this.grid.rows), this._transformFramebuffer.resize(this.grid.cols, this.grid.rows);
2784
- for (const A of Object.values(this.converters))
2785
- A.resize();
2924
+ for (const A of this.converters)
2925
+ A.converter.resize();
2926
+ }
2927
+ /** Returns the character framebuffer containing the combined result of all converters. @ignore */
2928
+ get characterFramebuffer() {
2929
+ return this._characterFramebuffer;
2930
+ }
2931
+ /** Returns the primary color framebuffer containing the combined result of all converters. @ignore */
2932
+ get primaryColorFramebuffer() {
2933
+ return this._primaryColorFramebuffer;
2934
+ }
2935
+ /** Returns the secondary color framebuffer containing the combined result of all converters. @ignore */
2936
+ get secondaryColorFramebuffer() {
2937
+ return this._secondaryColorFramebuffer;
2938
+ }
2939
+ /** Returns the rotation framebuffer containing the combined result of all converters. @ignore */
2940
+ get rotationFramebuffer() {
2941
+ return this._rotationFramebuffer;
2942
+ }
2943
+ /** Returns the transform framebuffer containing the combined result of all converters. @ignore */
2944
+ get transformFramebuffer() {
2945
+ return this._transformFramebuffer;
2786
2946
  }
2787
2947
  }
2788
- class fA {
2948
+ class yA {
2789
2949
  /**
2790
2950
  * Extracts pixel data from all framebuffers needed for SVG export
2791
2951
  * @param pipeline The conversion pipeline containing framebuffers
2792
2952
  * @returns Object containing all pixel data arrays
2793
2953
  */
2794
2954
  extractFramebufferData(A) {
2795
- const r = A.get("brightness"), e = r == null ? void 0 : r.characterFramebuffer, t = r == null ? void 0 : r.primaryColorFramebuffer, n = r == null ? void 0 : r.secondaryColorFramebuffer, a = r == null ? void 0 : r.transformFramebuffer, B = r == null ? void 0 : r.rotationFramebuffer;
2796
- return e == null || e.loadPixels(), t == null || t.loadPixels(), n == null || n.loadPixels(), a == null || a.loadPixels(), B == null || B.loadPixels(), {
2955
+ const r = A.get("brightness"), e = r == null ? void 0 : r.characterFramebuffer, t = r == null ? void 0 : r.primaryColorFramebuffer, n = r == null ? void 0 : r.secondaryColorFramebuffer, a = r == null ? void 0 : r.transformFramebuffer, s = r == null ? void 0 : r.rotationFramebuffer;
2956
+ return e == null || e.loadPixels(), t == null || t.loadPixels(), n == null || n.loadPixels(), a == null || a.loadPixels(), s == null || s.loadPixels(), {
2797
2957
  characterPixels: (e == null ? void 0 : e.pixels) || new Uint8Array(0),
2798
2958
  primaryColorPixels: (t == null ? void 0 : t.pixels) || new Uint8Array(0),
2799
2959
  secondaryColorPixels: (n == null ? void 0 : n.pixels) || new Uint8Array(0),
2800
2960
  transformPixels: (a == null ? void 0 : a.pixels) || new Uint8Array(0),
2801
- rotationPixels: (B == null ? void 0 : B.pixels) || new Uint8Array(0)
2961
+ rotationPixels: (s == null ? void 0 : s.pixels) || new Uint8Array(0)
2802
2962
  };
2803
2963
  }
2804
2964
  /**
@@ -2850,12 +3010,12 @@ class fA {
2850
3010
  * @returns Transform data object
2851
3011
  */
2852
3012
  extractTransformData(A, r, e) {
2853
- const t = A[e], n = A[e + 1], a = A[e + 2], B = t === 255, s = n === 255, E = a === 255, g = r[e], c = r[e + 1], Q = g + c / 255, u = Math.round(Q * 360 / 255 * 100) / 100;
3013
+ const t = A[e], n = A[e + 1], a = A[e + 2], s = t === 255, B = n === 255, g = a === 255, o = r[e], u = r[e + 1], h = o + u / 255, c = Math.round(h * 360 / 255 * 100) / 100;
2854
3014
  return {
2855
- isInverted: B,
2856
- flipHorizontal: s,
2857
- flipVertical: E,
2858
- rotation: u
3015
+ isInverted: s,
3016
+ flipHorizontal: B,
3017
+ flipVertical: g,
3018
+ rotation: c
2859
3019
  };
2860
3020
  }
2861
3021
  /**
@@ -2884,26 +3044,26 @@ class fA {
2884
3044
  const t = [];
2885
3045
  let n = 0;
2886
3046
  for (let a = 0; a < r.rows; a++)
2887
- for (let B = 0; B < r.cols; B++) {
2888
- const s = n * 4, E = A.characterPixels[s], g = A.characterPixels[s + 1];
2889
- let c = E + (g << 8);
2890
- c >= e.characters.length && (c = e.characters.length - 1);
2891
- let Q = this.pixelsToRGBA(A.primaryColorPixels, s), u = this.pixelsToRGBA(A.secondaryColorPixels, s);
2892
- const P = this.extractTransformData(
3047
+ for (let s = 0; s < r.cols; s++) {
3048
+ const B = n * 4, g = A.characterPixels[B], o = A.characterPixels[B + 1];
3049
+ let u = g + (o << 8);
3050
+ u >= e.characters.length && (u = e.characters.length - 1);
3051
+ let h = this.pixelsToRGBA(A.primaryColorPixels, B), c = this.pixelsToRGBA(A.secondaryColorPixels, B);
3052
+ const D = this.extractTransformData(
2893
3053
  A.transformPixels,
2894
3054
  A.rotationPixels,
2895
- s
3055
+ B
2896
3056
  );
2897
- if (P.isInverted) {
2898
- const C = Q;
2899
- Q = u, u = C;
3057
+ if (D.isInverted) {
3058
+ const C = h;
3059
+ h = c, c = C;
2900
3060
  }
2901
- const l = this.calculateCellPosition(B, a, r);
3061
+ const l = this.calculateCellPosition(s, a, r);
2902
3062
  t.push({
2903
- charIndex: c,
2904
- primaryColor: Q,
2905
- secondaryColor: u,
2906
- transform: P,
3063
+ charIndex: u,
3064
+ primaryColor: h,
3065
+ secondaryColor: c,
3066
+ transform: D,
2907
3067
  position: l
2908
3068
  }), n++;
2909
3069
  }
@@ -2927,7 +3087,7 @@ class fA {
2927
3087
  return A.characterPixels.length !== t ? (console.error("Pixel data length does not match grid dimensions"), !1) : !0;
2928
3088
  }
2929
3089
  }
2930
- class FA {
3090
+ class SA {
2931
3091
  /**
2932
3092
  * Gets the glyph index for a given Unicode code point in a Typr.js font
2933
3093
  * @param fontData The Typr.js font data
@@ -2946,9 +3106,9 @@ class FA {
2946
3106
  {
2947
3107
  const a = t.idRangeOffset[n] / 2 + (r - t.startCount[n]) - (t.startCount.length - n);
2948
3108
  if (a >= 0 && a < t.glyphIdArray.length) {
2949
- const B = t.glyphIdArray[a];
2950
- if (B !== 0)
2951
- return B + t.idDelta[n] & 65535;
3109
+ const s = t.glyphIdArray[a];
3110
+ if (s !== 0)
3111
+ return s + t.idDelta[n] & 65535;
2952
3112
  }
2953
3113
  }
2954
3114
  }
@@ -2998,37 +3158,37 @@ class FA {
2998
3158
  */
2999
3159
  glyphToSVGPath(A, r, e, t) {
3000
3160
  if (!A || !A.xs) return "";
3001
- const { xs: n, ys: a, endPts: B, flags: s } = A;
3002
- if (!n || !a || !B || !s) return "";
3003
- let E = "", g = 0;
3004
- for (let c = 0; c < B.length; c++) {
3005
- const Q = B[c];
3006
- if (!(Q < g)) {
3007
- if (Q >= g) {
3008
- const u = r + n[g] * t, P = e - a[g] * t;
3009
- E += `M${u.toFixed(2)},${P.toFixed(2)}`;
3010
- let l = g + 1;
3011
- for (; l <= Q; )
3012
- if ((s[l] & 1) !== 0) {
3013
- const d = r + n[l] * t, I = e - a[l] * t;
3014
- E += `L${d.toFixed(2)},${I.toFixed(2)}`, l++;
3161
+ const { xs: n, ys: a, endPts: s, flags: B } = A;
3162
+ if (!n || !a || !s || !B) return "";
3163
+ let g = "", o = 0;
3164
+ for (let u = 0; u < s.length; u++) {
3165
+ const h = s[u];
3166
+ if (!(h < o)) {
3167
+ if (h >= o) {
3168
+ const c = r + n[o] * t, D = e - a[o] * t;
3169
+ g += `M${c.toFixed(2)},${D.toFixed(2)}`;
3170
+ let l = o + 1;
3171
+ for (; l <= h; )
3172
+ if ((B[l] & 1) !== 0) {
3173
+ const P = r + n[l] * t, m = e - a[l] * t;
3174
+ g += `L${P.toFixed(2)},${m.toFixed(2)}`, l++;
3015
3175
  } else {
3016
- const d = r + n[l] * t, I = e - a[l] * t;
3017
- let m = l + 1 > Q ? g : l + 1;
3018
- if ((s[m] & 1) !== 0) {
3019
- const p = r + n[m] * t, v = e - a[m] * t;
3020
- E += `Q${d.toFixed(2)},${I.toFixed(2)} ${p.toFixed(2)},${v.toFixed(2)}`, l = m + 1;
3176
+ const P = r + n[l] * t, m = e - a[l] * t;
3177
+ let I = l + 1 > h ? o : l + 1;
3178
+ if ((B[I] & 1) !== 0) {
3179
+ const p = r + n[I] * t, w = e - a[I] * t;
3180
+ g += `Q${P.toFixed(2)},${m.toFixed(2)} ${p.toFixed(2)},${w.toFixed(2)}`, l = I + 1;
3021
3181
  } else {
3022
- const p = r + n[m] * t, v = e - a[m] * t, D = (d + p) / 2, _ = (I + v) / 2;
3023
- E += `Q${d.toFixed(2)},${I.toFixed(2)} ${D.toFixed(2)},${_.toFixed(2)}`, l = m;
3182
+ const p = r + n[I] * t, w = e - a[I] * t, d = (P + p) / 2, f = (m + w) / 2;
3183
+ g += `Q${P.toFixed(2)},${m.toFixed(2)} ${d.toFixed(2)},${f.toFixed(2)}`, l = I;
3024
3184
  }
3025
3185
  }
3026
- E += "Z";
3186
+ g += "Z";
3027
3187
  }
3028
- g = Q + 1;
3188
+ o = h + 1;
3029
3189
  }
3030
3190
  }
3031
- return E;
3191
+ return g;
3032
3192
  }
3033
3193
  /**
3034
3194
  * Generates an SVG path for a character glyph
@@ -3041,16 +3201,16 @@ class FA {
3041
3201
  */
3042
3202
  generateCharacterPath(A, r, e, t, n) {
3043
3203
  try {
3044
- const a = A.codePointAt(0) || 0, B = this.getGlyphIndex(r, a);
3045
- if (B === 0)
3204
+ const a = A.codePointAt(0) || 0, s = this.getGlyphIndex(r, a);
3205
+ if (s === 0)
3046
3206
  return this.createEmptyPath();
3047
- let s = null;
3207
+ let B = null;
3048
3208
  try {
3049
- r.glyf && r.glyf[B] !== null ? s = r.glyf[B] : o && o.T && o.T.glyf && o.T.glyf._parseGlyf && (s = o.T.glyf._parseGlyf(r, B), r.glyf && s && (r.glyf[B] = s));
3050
- } catch (E) {
3051
- console.warn(`Failed to parse glyph ${B}:`, E);
3209
+ r.glyf && r.glyf[s] !== null ? B = r.glyf[s] : Q && Q.T && Q.T.glyf && Q.T.glyf._parseGlyf && (B = Q.T.glyf._parseGlyf(r, s), r.glyf && B && (r.glyf[s] = B));
3210
+ } catch (g) {
3211
+ console.warn(`Failed to parse glyph ${s}:`, g);
3052
3212
  }
3053
- return s ? this.createGlyphPath(r, s, e, t, n) : this.createEmptyPath();
3213
+ return B ? this.createGlyphPath(r, B, e, t, n) : this.createEmptyPath();
3054
3214
  } catch (a) {
3055
3215
  return console.warn(`Failed to generate path for character "${A}":`, a), this.createEmptyPath();
3056
3216
  }
@@ -3067,19 +3227,19 @@ class FA {
3067
3227
  * @param advanceWidth Character advance width
3068
3228
  * @returns SVG path data string or null if generation fails
3069
3229
  */
3070
- generatePositionedCharacterPath(A, r, e, t, n, a, B, s) {
3230
+ generatePositionedCharacterPath(A, r, e, t, n, a, s, B) {
3071
3231
  try {
3072
- const E = B / r.head.unitsPerEm, g = s * E, c = e + (n - g) / 2, Q = t + (a + B * 0.7) / 2;
3073
- return this.generateCharacterPath(A, r, c, Q, B).toSVG() || null;
3074
- } catch (E) {
3075
- return console.warn(`Failed to generate positioned character path for "${A}":`, E), null;
3232
+ const g = s / r.head.unitsPerEm, o = B * g, u = e + (n - o) / 2, h = t + (a + s * 0.7) / 2;
3233
+ return this.generateCharacterPath(A, r, u, h, s).toSVG() || null;
3234
+ } catch (g) {
3235
+ return console.warn(`Failed to generate positioned character path for "${A}":`, g), null;
3076
3236
  }
3077
3237
  }
3078
3238
  }
3079
- class UA {
3239
+ class TA {
3080
3240
  constructor() {
3081
- h(this, "pathGenerator");
3082
- this.pathGenerator = new FA();
3241
+ E(this, "pathGenerator");
3242
+ this.pathGenerator = new SA();
3083
3243
  }
3084
3244
  /**
3085
3245
  * Generates the SVG header with metadata
@@ -3131,12 +3291,12 @@ class UA {
3131
3291
  * @returns Transform attribute string or empty string
3132
3292
  */
3133
3293
  generateTransformAttribute(A, r) {
3134
- const { transform: e, position: t } = A, n = t.cellX + r.cellWidth / 2, a = t.cellY + r.cellHeight / 2, B = [];
3294
+ const { transform: e, position: t } = A, n = t.cellX + r.cellWidth / 2, a = t.cellY + r.cellHeight / 2, s = [];
3135
3295
  if (e.flipHorizontal || e.flipVertical) {
3136
- const s = e.flipHorizontal ? -1 : 1, E = e.flipVertical ? -1 : 1;
3137
- B.push(`translate(${n} ${a})`), B.push(`scale(${s} ${E})`), B.push(`translate(${-n} ${-a})`);
3296
+ const B = e.flipHorizontal ? -1 : 1, g = e.flipVertical ? -1 : 1;
3297
+ s.push(`translate(${n} ${a})`), s.push(`scale(${B} ${g})`), s.push(`translate(${-n} ${-a})`);
3138
3298
  }
3139
- return e.rotation && B.push(`rotate(${e.rotation} ${n} ${a})`), B.length ? ` transform="${B.join(" ")}"` : "";
3299
+ return e.rotation && s.push(`rotate(${e.rotation} ${n} ${a})`), s.length ? ` transform="${s.join(" ")}"` : "";
3140
3300
  }
3141
3301
  /**
3142
3302
  * Generates background rectangle for a cell
@@ -3177,10 +3337,10 @@ class UA {
3177
3337
  );
3178
3338
  if (!a)
3179
3339
  return "";
3180
- const B = this.rgbaToColorString(A.primaryColor);
3340
+ const s = this.rgbaToColorString(A.primaryColor);
3181
3341
  return t.drawMode === "stroke" ? `
3182
- <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${a}" stroke="${B}" stroke-width="${t.strokeWidth}" fill="none" />` : `
3183
- <path d="${a}" fill="${B}" />`;
3342
+ <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${a}" stroke="${s}" stroke-width="${t.strokeWidth}" fill="none" />` : `
3343
+ <path d="${a}" fill="${s}" />`;
3184
3344
  }
3185
3345
  /**
3186
3346
  * Generates complete SVG content for a single cell
@@ -3193,10 +3353,10 @@ class UA {
3193
3353
  generateCellContent(A, r, e, t) {
3194
3354
  let n = "";
3195
3355
  n += this.generateCellBackground(A, r, t);
3196
- const a = this.generateTransformAttribute(A, r), B = this.generateCharacterPath(A, r, e, t);
3197
- return B && (a ? (n += `
3198
- <g${a}>`, n += B, n += `
3199
- </g>`) : n += B), n;
3356
+ const a = this.generateTransformAttribute(A, r), s = this.generateCharacterPath(A, r, e, t);
3357
+ return s && (a ? (n += `
3358
+ <g${a}>`, n += s, n += `
3359
+ </g>`) : n += s), n;
3200
3360
  }
3201
3361
  /**
3202
3362
  * Generates the complete SVG content from cell data
@@ -3224,7 +3384,7 @@ class UA {
3224
3384
  `).replace(/[ \t]+$/gm, "");
3225
3385
  }
3226
3386
  }
3227
- class bA {
3387
+ class GA {
3228
3388
  /**
3229
3389
  * Generates a default filename for SVG export
3230
3390
  * @param prefix Optional prefix for the filename
@@ -3310,12 +3470,12 @@ class bA {
3310
3470
  return !A || typeof A != "string" ? (console.error("SVG content is empty or not a string"), !1) : !A.includes("<svg") || !A.includes("</svg>") ? (console.error("SVG content does not contain valid SVG tags"), !1) : (A.startsWith("<?xml") || console.warn("SVG content missing XML declaration"), !0);
3311
3471
  }
3312
3472
  }
3313
- class yA {
3473
+ class MA {
3314
3474
  constructor() {
3315
- h(this, "dataExtractor");
3316
- h(this, "contentGenerator");
3317
- h(this, "fileHandler");
3318
- this.dataExtractor = new fA(), this.contentGenerator = new UA(), this.fileHandler = new bA();
3475
+ E(this, "dataExtractor");
3476
+ E(this, "contentGenerator");
3477
+ E(this, "fileHandler");
3478
+ this.dataExtractor = new yA(), this.contentGenerator = new TA(), this.fileHandler = new GA();
3319
3479
  }
3320
3480
  /**
3321
3481
  * Applies default values to SVG export options
@@ -3340,17 +3500,17 @@ class yA {
3340
3500
  const e = this.applyDefaultOptions(r), t = this.dataExtractor.extractFramebufferData(A.pipeline), n = this.dataExtractor.extractGridInfo(A.grid), a = this.dataExtractor.extractFontInfo(A.font);
3341
3501
  if (!this.dataExtractor.validateExportData(t, n, a))
3342
3502
  throw new Error("Invalid data extracted from textmodifier");
3343
- const B = this.dataExtractor.extractSVGCellData(
3503
+ const s = this.dataExtractor.extractSVGCellData(
3344
3504
  t,
3345
3505
  n,
3346
3506
  a
3347
- ), s = this.contentGenerator.generateSVGContent(
3348
- B,
3507
+ ), B = this.contentGenerator.generateSVGContent(
3508
+ s,
3349
3509
  n,
3350
3510
  a,
3351
3511
  e
3352
3512
  );
3353
- return this.contentGenerator.optimizeSVGContent(s);
3513
+ return this.contentGenerator.optimizeSVGContent(B);
3354
3514
  }
3355
3515
  /**
3356
3516
  * Exports SVG content to a downloadable file
@@ -3369,28 +3529,29 @@ class yA {
3369
3529
  }
3370
3530
  }
3371
3531
  }
3372
- class eA {
3532
+ class iA {
3373
3533
  constructor(A, r = {}) {
3374
3534
  /** The canvas element to capture content from */
3375
- h(this, "captureCanvas");
3535
+ E(this, "captureCanvas");
3376
3536
  /** Our WebGL overlay canvas manager */
3377
- h(this, "textmodeCanvas");
3537
+ E(this, "textmodeCanvas");
3378
3538
  /** Core WebGL renderer */
3379
- h(this, "renderer");
3380
- h(this, "canvasFramebuffer");
3381
- h(this, "_font");
3382
- h(this, "_grid");
3383
- h(this, "resizeObserver");
3539
+ E(this, "renderer");
3540
+ E(this, "canvasFramebuffer");
3541
+ E(this, "_font");
3542
+ E(this, "_grid");
3543
+ E(this, "resizeObserver");
3384
3544
  // Auto-rendering properties
3385
- h(this, "_mode");
3386
- h(this, "_frameRateLimit");
3387
- h(this, "animationFrameId", null);
3388
- h(this, "lastFrameTime", 0);
3389
- h(this, "frameInterval");
3390
- h(this, "_frameRate", 0);
3391
- h(this, "lastRenderTime", 0);
3392
- h(this, "_pipeline");
3393
- this.captureCanvas = A, this.textmodeCanvas = new IA(A), this._mode = r.renderMode ?? "auto", this._frameRateLimit = r.frameRate ?? 120, this.frameInterval = 1e3 / this._frameRateLimit, this.renderer = new hA(this.textmodeCanvas.getWebGLContext()), this.canvasFramebuffer = this.renderer.createFramebuffer(this.textmodeCanvas.width, this.textmodeCanvas.height), this._font = new dA(this.renderer, r.fontSize ?? 16);
3545
+ E(this, "_mode");
3546
+ E(this, "_frameRateLimit");
3547
+ E(this, "animationFrameId", null);
3548
+ E(this, "lastFrameTime", 0);
3549
+ E(this, "frameInterval");
3550
+ E(this, "_frameRate", 0);
3551
+ E(this, "lastRenderTime", 0);
3552
+ E(this, "_frameCount", 0);
3553
+ E(this, "_pipeline");
3554
+ this.captureCanvas = A, this.textmodeCanvas = new IA(A), this._mode = r.renderMode ?? "auto", this._frameRateLimit = r.frameRate ?? 120, this.frameInterval = 1e3 / this._frameRateLimit, this.renderer = new lA(this.textmodeCanvas.getWebGLContext()), this.canvasFramebuffer = this.renderer.createFramebuffer(this.textmodeCanvas.width, this.textmodeCanvas.height), this._font = new PA(this.renderer, r.fontSize ?? 16);
3394
3555
  }
3395
3556
  /**
3396
3557
  * Static factory method for creating and initializing a Textmodifier instance.
@@ -3399,10 +3560,10 @@ class eA {
3399
3560
  * @ignore
3400
3561
  */
3401
3562
  static async create(A, r = {}) {
3402
- const e = new eA(A, r);
3563
+ const e = new iA(A, r);
3403
3564
  await e._font.initialize();
3404
3565
  const t = e._font.maxGlyphDimensions;
3405
- return e._grid = new PA(e.captureCanvas, t.width, t.height), e._pipeline = new _A(e.renderer, e._font, e._grid), e.setupEventListeners(), e.startAutoRendering(), e;
3566
+ return e._grid = new mA(e.captureCanvas, t.width, t.height), e._pipeline = new bA(e.renderer, e._font, e._grid), e.setupEventListeners(), e.startAutoRendering(), e;
3406
3567
  }
3407
3568
  setupEventListeners() {
3408
3569
  window.addEventListener("resize", this.resize.bind(this)), window.ResizeObserver && (this.resizeObserver = new ResizeObserver(() => {
@@ -3410,15 +3571,47 @@ class eA {
3410
3571
  }), this.resizeObserver.observe(this.captureCanvas));
3411
3572
  }
3412
3573
  /**
3413
- * Export the current ASCII art as an SVG file.
3574
+ * Export the current textmode rendering to an SVG file.
3414
3575
  * @param options Options for SVG export
3576
+ *
3577
+ * @example
3578
+ * ```javascript
3579
+ * // Fetch a canvas element to apply textmode rendering to
3580
+ * const canvas = document.querySelector('canvas#myCanvas');
3581
+ *
3582
+ * // Create a Textmodifier instance
3583
+ * const textmodifier = await textmode.create(canvas, {renderMode: 'manual'});
3584
+ *
3585
+ * // Render a single frame
3586
+ * textmodifier.render();
3587
+ *
3588
+ * // Export the current rendering to an SVG file
3589
+ * textmodifier.saveSVG({
3590
+ * filename: 'my_textmode_rendering',
3591
+ * });
3592
+ * ```
3415
3593
  */
3416
3594
  saveSVG(A = {}) {
3417
- new yA().saveSVG(this, A);
3595
+ new MA().saveSVG(this, A);
3418
3596
  }
3419
3597
  /**
3420
3598
  * Update the font used for rendering.
3421
3599
  * @param fontUrl The URL of the font to load.
3600
+ *
3601
+ * @example
3602
+ * ```javascript
3603
+ * // Fetch a canvas element to apply textmode rendering to
3604
+ * const canvas = document.querySelector('canvas#myCanvas');
3605
+ *
3606
+ * // Create a Textmodifier instance
3607
+ * const textmodifier = await textmode.create(canvas);
3608
+ *
3609
+ * // Load a custom font from a URL
3610
+ * textmodifier.loadFont('https://example.com/fonts/myfont.ttf');
3611
+ *
3612
+ * // Local font example
3613
+ * // textmodifier.loadFont('./fonts/myfont.ttf');
3614
+ * ```
3422
3615
  */
3423
3616
  async loadFont(A) {
3424
3617
  return this._font.loadFont(A).then(() => {
@@ -3431,9 +3624,41 @@ class eA {
3431
3624
  *
3432
3625
  * **Note:** In `'auto'` mode, this is called automatically.
3433
3626
  * In `'manual'` mode, you need to call this method when you want to update the textmode rendering.
3627
+ *
3628
+ * @example
3629
+ * ```javascript
3630
+ * // p5.js example
3631
+ *
3632
+ * let textmodifier;
3633
+ *
3634
+ * // p5.js setup function
3635
+ * async function setup() {
3636
+ *
3637
+ * // Create a p5.js canvas
3638
+ * const canvas = createCanvas(800, 600);
3639
+ *
3640
+ * // Create a Textmodifier instance
3641
+ * textmodifier = await textmode.create(canvas.elt);
3642
+ *
3643
+ * // Update the rendering mode to 'manual'
3644
+ * textmodifier.renderMode('manual');
3645
+ * }
3646
+ *
3647
+ * // p5.js draw function
3648
+ * function draw() {
3649
+ *
3650
+ * // Draw something on the p5.js canvas
3651
+ * background(220);
3652
+ * fill(255, 0, 0);
3653
+ * rect(50, 50, 100, 100);
3654
+ *
3655
+ * // Apply textmode rendering
3656
+ * textmodifier.render();
3657
+ * }
3658
+ * ```
3434
3659
  */
3435
3660
  render() {
3436
- this.measureFrameRate(), this.canvasFramebuffer.update(this.captureCanvas), this._pipeline.render(this.canvasFramebuffer), this.renderer.background(0, 0, 0, 1), this.renderer.image(this._pipeline.texture, this._grid.offsetX, this._grid.offsetY, this._pipeline.texture.width, this._pipeline.texture.height);
3661
+ this.measureFrameRate(), this._frameCount++, this.canvasFramebuffer.update(this.captureCanvas), this._pipeline.render(this.canvasFramebuffer), this.renderer.background(0, 0, 0, 1), this.renderer.image(this._pipeline.texture, this._grid.offsetX, this._grid.offsetY, this._pipeline.texture.width, this._pipeline.texture.height), this.renderer.reset();
3437
3662
  }
3438
3663
  resize() {
3439
3664
  this.textmodeCanvas.resize(), this.canvasFramebuffer.resize(this.textmodeCanvas.width, this.textmodeCanvas.height), this._grid.resize(), this._pipeline.resize(), this.renderer.resetViewport(), this._mode !== "manual" && this.render();
@@ -3466,7 +3691,28 @@ class eA {
3466
3691
  this.animationFrameId && (cancelAnimationFrame(this.animationFrameId), this.animationFrameId = null);
3467
3692
  }
3468
3693
  /**
3469
- * Change the rendering mode.
3694
+ * Update the rendering mode.
3695
+ *
3696
+ * If called without arguments, returns the current mode.
3697
+ *
3698
+ * - `'manual'`: Requires manual [render](#render) calls
3699
+ * - `'auto'`: Automatically renders using [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame)
3700
+ *
3701
+ * @param mode The new rendering mode to set.
3702
+ *
3703
+ * @example
3704
+ * ```javascript
3705
+ * // Fetch a canvas element to apply textmode rendering to
3706
+ * const canvas = document.querySelector('canvas#myCanvas');
3707
+ *
3708
+ * // Create a Textmodifier instance
3709
+ * const textmodifier = await textmode.create(canvas);
3710
+ *
3711
+ * // Update the rendering mode to 'manual'
3712
+ * textmodifier.renderMode('manual');
3713
+ *
3714
+ * // Now you need to call textmodifier.render() manually in your animation loop
3715
+ * ```
3470
3716
  */
3471
3717
  renderMode(A) {
3472
3718
  if (this._mode !== A) {
@@ -3478,12 +3724,42 @@ class eA {
3478
3724
  /**
3479
3725
  * Set the maximum frame rate for auto rendering. If called without arguments, returns the current measured frame rate.
3480
3726
  * @param fps The maximum frames per second for auto rendering.
3727
+ *
3728
+ * @example
3729
+ * ```javascript
3730
+ * // Fetch a canvas element to apply textmode rendering to
3731
+ * const canvas = document.querySelector('canvas#myCanvas');
3732
+ *
3733
+ * // Create a Textmodifier instance
3734
+ * const textmodifier = await textmode.create(canvas);
3735
+ *
3736
+ * // Set the maximum frame rate to 60 FPS
3737
+ * textmodifier.frameRate(60);
3738
+ * ```
3481
3739
  */
3482
3740
  frameRate(A) {
3483
3741
  if (A === void 0)
3484
3742
  return this._frameRate;
3485
3743
  this._frameRateLimit = A, this.frameInterval = 1e3 / A;
3486
3744
  }
3745
+ /**
3746
+ * Get or set the font size used for rendering.
3747
+ * If called without arguments, returns the current font size.
3748
+ * @param size The font size to set. If undefined, returns the current font size.
3749
+ * @returns `void` if setting the size, or the current font size if called without arguments.
3750
+ *
3751
+ * @example
3752
+ * ```javascript
3753
+ * // Fetch a canvas element to apply textmode rendering to
3754
+ * const canvas = document.querySelector('canvas#myCanvas');
3755
+ *
3756
+ * // Create a Textmodifier instance
3757
+ * const textmodifier = await textmode.create(canvas);
3758
+ *
3759
+ * // Set the font size to 24
3760
+ * textmodifier.fontSize(24);
3761
+ * ```
3762
+ */
3487
3763
  fontSize(A) {
3488
3764
  if (A === void 0)
3489
3765
  return this._font.fontSize;
@@ -3493,6 +3769,22 @@ class eA {
3493
3769
  * Get a specific converter by name.
3494
3770
  * @param name The name of the converter to retrieve.
3495
3771
  * @returns The requested `TextmodeConverter` instance.
3772
+ *
3773
+ * @example
3774
+ * ```javascript
3775
+ * // Fetch a canvas element to apply textmode rendering to
3776
+ * const canvas = document.querySelector('canvas#myCanvas');
3777
+ *
3778
+ * // Create a Textmodifier instance
3779
+ * const textmodifier = await textmode.create(canvas);
3780
+ *
3781
+ * // Get the pre-defined brightness converter from the pipeline
3782
+ * const brightnessConverter = textmodifier.converter('brightness');
3783
+ *
3784
+ * // Update properties of the brightness converter
3785
+ * brightnessConverter.invert(true);
3786
+ * brightnessConverter.characters(" .,;:*");
3787
+ * ```
3496
3788
  */
3497
3789
  converter(A) {
3498
3790
  return this._pipeline.get(A);
@@ -3513,45 +3805,69 @@ class eA {
3513
3805
  get pipeline() {
3514
3806
  return this._pipeline;
3515
3807
  }
3808
+ /** Get the current frame count. */
3809
+ get frameCount() {
3810
+ return this._frameCount;
3811
+ }
3516
3812
  }
3517
- class tA {
3813
+ class nA {
3518
3814
  /**
3519
3815
  * Create a {@link Textmodifier} instance to apply textmode rendering to a given canvas.
3520
3816
  * @param canvas The HTML canvas element to capture content from.
3521
3817
  * @param opts Optional configuration options for the Textmodifier instance.
3522
3818
  * @returns A Promise that resolves to a Textmodifier instance.
3819
+ *
3820
+ * @example
3821
+ * ```javascript
3822
+ * // Fetch a canvas element to apply textmode rendering to
3823
+ * const canvas = document.querySelector('canvas#myCanvas');
3824
+ *
3825
+ * // Create a Textmodifier instance with default options
3826
+ * const textmodifier = await textmode.create(canvas);
3827
+ * ```
3523
3828
  */
3524
3829
  static async create(A, r = {}) {
3525
- return eA.create(A, r);
3830
+ return iA.create(A, r);
3526
3831
  }
3527
3832
  /**
3528
3833
  * Set the global error handling level for the library. This applies to all `Textmodifier` instances.
3529
3834
  * @param level The error handling level to set.
3835
+ *
3836
+ * @example
3837
+ * ```javascript
3838
+ * // Set error level to WARNING
3839
+ * textmode.setErrorLevel(TextmodeErrorLevel.WARNING);
3840
+ * ```
3530
3841
  */
3531
3842
  static setErrorLevel(A) {
3532
- y.setGlobalLevel(A);
3843
+ F.setGlobalLevel(A);
3533
3844
  }
3534
3845
  /**
3535
- * The current version of the library.
3846
+ * Returns the current version of the `textmode.js` library.
3847
+ *
3848
+ * @example
3849
+ * ```javascript
3850
+ * console.log(textmode.version); // "1.0.0"
3851
+ * ```
3536
3852
  */
3537
3853
  static get version() {
3538
- return "0.0.10-beta.5";
3854
+ return "0.1.0";
3539
3855
  }
3540
3856
  constructor() {
3541
3857
  throw new Error("Textmode is a static class and cannot be instantiated.");
3542
3858
  }
3543
3859
  }
3544
- const GA = tA.create, MA = tA.setErrorLevel, RA = tA.version;
3860
+ const YA = nA.create, VA = nA.setErrorLevel, zA = nA.version;
3545
3861
  export {
3546
- yA as SVGExporter,
3547
3862
  IA as TextmodeCanvas,
3548
- TA as TextmodeConverters,
3863
+ bA as TextmodeConversionPipeline,
3864
+ OA as TextmodeConverters,
3549
3865
  gA as TextmodeErrorLevel,
3550
- dA as TextmodeFont,
3551
- PA as TextmodeGrid,
3552
- eA as Textmodifier,
3553
- GA as create,
3554
- MA as setErrorLevel,
3555
- tA as textmode,
3556
- RA as version
3866
+ PA as TextmodeFont,
3867
+ mA as TextmodeGrid,
3868
+ iA as Textmodifier,
3869
+ YA as create,
3870
+ VA as setErrorLevel,
3871
+ nA as textmode,
3872
+ zA as version
3557
3873
  };