textmode.js 0.2.0 → 0.2.1-beta.1

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,6 +1,6 @@
1
- var Z = Object.defineProperty;
2
- var K = (E, A, t) => A in E ? Z(E, A, { enumerable: !0, configurable: !0, writable: !0, value: t }) : E[A] = t;
3
- var n = (E, A, t) => K(E, typeof A != "symbol" ? A + "" : A, t);
1
+ var J = Object.defineProperty;
2
+ var Z = (E, A, t) => A in E ? J(E, A, { enumerable: !0, configurable: !0, writable: !0, value: t }) : E[A] = t;
3
+ var n = (E, A, t) => Z(E, typeof A != "symbol" ? A + "" : A, t);
4
4
  class m extends Error {
5
5
  constructor(A, t = {}) {
6
6
  super(m.A(A, t)), this.name = "TextmodeError";
@@ -11,9 +11,9 @@ class m extends Error {
11
11
  e += `
12
12
 
13
13
  📋 Context:`;
14
- for (const [s, r] of Object.entries(t))
14
+ for (const [s, i] of Object.entries(t))
15
15
  e += `
16
- - ${s}: ${m.i(r)}`;
16
+ - ${s}: ${m.i(i)}`;
17
17
  }
18
18
  return e += `
19
19
 
@@ -34,16 +34,16 @@ class m extends Error {
34
34
  }
35
35
  }
36
36
  var q = ((E) => (E[E.SILENT = 0] = "SILENT", E[E.WARNING = 1] = "WARNING", E[E.ERROR = 2] = "ERROR", E[E.THROW = 3] = "THROW", E))(q || {});
37
- const v = class v {
37
+ const x = class x {
38
38
  constructor() {
39
- n(this, "C", { globalLevel: 3 });
39
+ n(this, "l", { globalLevel: 3 });
40
40
  }
41
- static D() {
42
- return v.o || (v.o = new v()), v.o;
41
+ static C() {
42
+ return x.o || (x.o = new x()), x.o;
43
43
  }
44
- l(A, t) {
44
+ D(A, t) {
45
45
  const e = "%c[textmode.js] Oops! (╯°□°)╯︵ Something went wrong in your code.", s = "color: #f44336; font-weight: bold; background: #ffebee; padding: 2px 6px; border-radius: 3px;";
46
- switch (this.C.globalLevel) {
46
+ switch (this.l.globalLevel) {
47
47
  case 0:
48
48
  return !1;
49
49
  case 1:
@@ -54,27 +54,27 @@ const v = class v {
54
54
  throw new m(A, t);
55
55
  }
56
56
  }
57
- P(A, t, e) {
58
- return !!A || (this.l(t, e), !1);
57
+ u(A, t, e) {
58
+ return !!A || (this.D(t, e), !1);
59
59
  }
60
- u(A) {
61
- this.C.globalLevel = A;
60
+ P(A) {
61
+ this.l.globalLevel = A;
62
62
  }
63
63
  };
64
- n(v, "o", null);
65
- let S = v;
66
- const _ = S.D(), V = /* @__PURE__ */ new WeakMap();
67
- function G(E, A) {
64
+ n(x, "o", null);
65
+ let Y = x;
66
+ const G = Y.C(), V = /* @__PURE__ */ new WeakMap();
67
+ function M(E, A) {
68
68
  V.set(E, A);
69
69
  }
70
- function R(E) {
70
+ function b(E) {
71
71
  return V.get(E);
72
72
  }
73
73
  class U {
74
- constructor(A, t, e = t, s = 1, r = {}) {
74
+ constructor(A, t, e = t, s = 1, i = {}) {
75
75
  n(this, "I");
76
76
  n(this, "p");
77
- n(this, "C");
77
+ n(this, "l");
78
78
  n(this, "_", null);
79
79
  n(this, "m");
80
80
  n(this, "v");
@@ -82,71 +82,71 @@ class U {
82
82
  n(this, "$");
83
83
  n(this, "M", null);
84
84
  n(this, "Y", []);
85
- this.I = t, this.p = e, this.C = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...r }, this.m = A, this.$ = Math.min(Math.max(1, s), 8);
86
- const i = A.getParameter(A.MAX_DRAW_BUFFERS), B = A.getParameter(A.MAX_COLOR_ATTACHMENTS);
87
- this.$ = Math.min(this.$, i, B), this.v = A.createFramebuffer(), this.R(), this.S(), this.Y = Array(this.$).fill(null);
85
+ this.I = t, this.p = e, this.l = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...i }, this.m = A, this.$ = Math.min(Math.max(1, s), 8);
86
+ const r = A.getParameter(A.MAX_DRAW_BUFFERS), B = A.getParameter(A.MAX_COLOR_ATTACHMENTS);
87
+ this.$ = Math.min(this.$, r, B), this.v = A.createFramebuffer(), this.R(), this.F(), this.Y = Array(this.$).fill(null);
88
88
  }
89
89
  R() {
90
- const A = this.m, t = this.C.filter === "linear" ? A.LINEAR : A.NEAREST, e = this.C.wrap === "repeat" ? A.REPEAT : A.CLAMP_TO_EDGE, s = this.C.type === "float" ? A.FLOAT : A.UNSIGNED_BYTE;
91
- for (let r = 0; r < this.$; r++) {
92
- const i = A.createTexture();
93
- A.bindTexture(A.TEXTURE_2D, i), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MIN_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MAG_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_S, e), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_T, e), A.texImage2D(A.TEXTURE_2D, 0, A.RGBA, this.I, this.p, 0, A.RGBA, s, null), this.G.push(i);
90
+ const A = this.m, t = this.l.filter === "linear" ? A.LINEAR : A.NEAREST, e = this.l.wrap === "repeat" ? A.REPEAT : A.CLAMP_TO_EDGE, s = this.l.type === "float" ? A.FLOAT : A.UNSIGNED_BYTE;
91
+ for (let i = 0; i < this.$; i++) {
92
+ const r = A.createTexture();
93
+ A.bindTexture(A.TEXTURE_2D, r), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MIN_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_MAG_FILTER, t), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_S, e), A.texParameteri(A.TEXTURE_2D, A.TEXTURE_WRAP_T, e), A.texImage2D(A.TEXTURE_2D, 0, A.RGBA, this.I, this.p, 0, A.RGBA, s, null), this.G.push(r);
94
94
  }
95
95
  A.bindTexture(A.TEXTURE_2D, null);
96
96
  }
97
- S() {
97
+ F() {
98
98
  const A = this.m;
99
99
  if (A.bindFramebuffer(A.FRAMEBUFFER, this.v), this.$ === 1) A.framebufferTexture2D(A.FRAMEBUFFER, A.COLOR_ATTACHMENT0, A.TEXTURE_2D, this.G[0], 0);
100
100
  else {
101
101
  const e = [];
102
102
  for (let s = 0; s < this.$; s++) {
103
- const r = A.COLOR_ATTACHMENT0 + s;
104
- A.framebufferTexture2D(A.FRAMEBUFFER, r, A.TEXTURE_2D, this.G[s], 0), e.push(r);
103
+ const i = A.COLOR_ATTACHMENT0 + s;
104
+ A.framebufferTexture2D(A.FRAMEBUFFER, i, A.TEXTURE_2D, this.G[s], 0), e.push(i);
105
105
  }
106
106
  A.drawBuffers(e);
107
107
  }
108
108
  const t = A.checkFramebufferStatus(A.FRAMEBUFFER);
109
109
  t !== A.FRAMEBUFFER_COMPLETE && console.error("GLFramebuffer is not complete:", t), A.bindFramebuffer(A.FRAMEBUFFER, null);
110
110
  }
111
- F(A) {
111
+ S(A) {
112
112
  const t = this.m;
113
113
  t.bindTexture(t.TEXTURE_2D, this.G[0]), t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL, 1), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, A), t.bindTexture(t.TEXTURE_2D, null);
114
114
  }
115
115
  O(A, t) {
116
116
  this.I = A, this.p = t, this._ = null, this.Y = Array(this.$).fill(null);
117
- const e = this.m, s = this.C.type === "float" ? e.FLOAT : e.UNSIGNED_BYTE;
118
- for (const r of this.G) e.bindTexture(e.TEXTURE_2D, r), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, this.I, this.p, 0, e.RGBA, s, null);
117
+ const e = this.m, s = this.l.type === "float" ? e.FLOAT : e.UNSIGNED_BYTE;
118
+ for (const i of this.G) e.bindTexture(e.TEXTURE_2D, i), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, this.I, this.p, 0, e.RGBA, s, null);
119
119
  e.bindTexture(e.TEXTURE_2D, null);
120
120
  }
121
- U(A) {
121
+ k(A) {
122
122
  const t = this.m;
123
123
  if (A < 0 || A >= this.$) throw Error(`GLFramebuffer: attachment index ${A} out of range (count=${this.$})`);
124
124
  const e = this.Y[A];
125
125
  if (e) return e;
126
- const s = this.I, r = this.p, i = new Uint8Array(s * r * 4), B = t.getParameter(t.READ_FRAMEBUFFER_BINDING);
127
- t.bindFramebuffer(t.READ_FRAMEBUFFER, this.v), t.readBuffer(t.COLOR_ATTACHMENT0 + A), t.readPixels(0, 0, s, r, t.RGBA, t.UNSIGNED_BYTE, i), t.bindFramebuffer(t.READ_FRAMEBUFFER, B);
128
- const Q = 4 * s, o = new Uint8Array(i.length);
129
- for (let h = 0; h < r; h++) {
130
- const a = (r - 1 - h) * Q, g = h * Q;
131
- o.set(i.subarray(a, a + Q), g);
126
+ const s = this.I, i = this.p, r = new Uint8Array(s * i * 4), B = t.getParameter(t.READ_FRAMEBUFFER_BINDING);
127
+ t.bindFramebuffer(t.READ_FRAMEBUFFER, this.v), t.readBuffer(t.COLOR_ATTACHMENT0 + A), t.readPixels(0, 0, s, i, t.RGBA, t.UNSIGNED_BYTE, r), t.bindFramebuffer(t.READ_FRAMEBUFFER, B);
128
+ const o = 4 * s, Q = new Uint8Array(r.length);
129
+ for (let g = 0; g < i; g++) {
130
+ const a = (i - 1 - g) * o, h = g * o;
131
+ Q.set(r.subarray(a, a + o), h);
132
132
  }
133
- return this.Y[A] = o, o;
133
+ return this.Y[A] = Q, Q;
134
134
  }
135
135
  L() {
136
- for (let A = 0; A < this.$; A++) this.U(A);
136
+ for (let A = 0; A < this.$; A++) this.k(A);
137
137
  }
138
- k() {
138
+ U() {
139
139
  const A = this.m;
140
140
  this.M = { framebuffer: A.getParameter(A.FRAMEBUFFER_BINDING), viewport: A.getParameter(A.VIEWPORT) }, A.bindFramebuffer(A.FRAMEBUFFER, this.v), this.Y = Array(this.$).fill(null);
141
141
  for (let t = 0; t < this.$; t++) A.clearBufferfv(A.COLOR, t, new Float32Array([0, 0, 0, 0]));
142
- A.viewport(0, 0, this.I, this.p), G(A, [0, 0, this.I, this.p]);
142
+ A.viewport(0, 0, this.I, this.p), M(A, [0, 0, this.I, this.p]);
143
143
  }
144
- H() {
144
+ W() {
145
145
  if (!this.M) return;
146
146
  const A = this.m;
147
- A.bindFramebuffer(A.FRAMEBUFFER, this.M.framebuffer), A.viewport(...this.M.viewport), G(A, this.M.viewport), this.M = null;
147
+ A.bindFramebuffer(A.FRAMEBUFFER, this.M.framebuffer), A.viewport(...this.M.viewport), M(A, this.M.viewport), this.M = null;
148
148
  }
149
- W() {
149
+ H() {
150
150
  const A = this.m;
151
151
  this.v && A.deleteFramebuffer(this.v);
152
152
  for (const t of this.G) A.deleteTexture(t);
@@ -162,7 +162,7 @@ class U {
162
162
  return this._;
163
163
  }
164
164
  get options() {
165
- return { ...this.C };
165
+ return { ...this.l };
166
166
  }
167
167
  get framebuffer() {
168
168
  return this.v;
@@ -180,33 +180,33 @@ class U {
180
180
  return this.Y[A] ?? null;
181
181
  }
182
182
  }
183
- class z {
183
+ class L {
184
184
  constructor(A, t, e) {
185
185
  n(this, "m");
186
- n(this, "J");
186
+ n(this, "K");
187
+ n(this, "J", /* @__PURE__ */ new Map());
187
188
  n(this, "V", /* @__PURE__ */ new Map());
188
- n(this, "K", /* @__PURE__ */ new Map());
189
189
  n(this, "Z", 0);
190
190
  n(this, "j");
191
- this.m = A, this.J = this.X(t, e), this.j = A.getParameter(A.MAX_TEXTURE_IMAGE_UNITS), this.N();
191
+ this.m = A, this.K = this.N(t, e), this.j = A.getParameter(A.MAX_TEXTURE_IMAGE_UNITS), this.X();
192
192
  }
193
- N() {
194
- const A = this.m.getProgramParameter(this.J, this.m.ACTIVE_UNIFORMS);
193
+ X() {
194
+ const A = this.m.getProgramParameter(this.K, this.m.ACTIVE_UNIFORMS);
195
195
  for (let t = 0; t < A; t++) {
196
- const e = this.m.getActiveUniform(this.J, t);
196
+ const e = this.m.getActiveUniform(this.K, t);
197
197
  if (e) {
198
- const s = this.m.getUniformLocation(this.J, e.name);
199
- s && (this.V.set(e.name, s), this.K.set(e.name, e.type));
198
+ const s = this.m.getUniformLocation(this.K, e.name);
199
+ s && (this.J.set(e.name, s), this.V.set(e.name, e.type));
200
200
  }
201
201
  }
202
202
  }
203
- X(A, t) {
204
- const e = this.q(this.m.VERTEX_SHADER, A), s = this.q(this.m.FRAGMENT_SHADER, t), r = this.m.createProgram();
205
- if (this.m.attachShader(r, e), this.m.attachShader(r, s), this.m.linkProgram(r), !this.m.getProgramParameter(r, this.m.LINK_STATUS)) {
206
- const i = this.m.getProgramInfoLog(r);
207
- throw Error("Shader program link error: " + i);
203
+ N(A, t) {
204
+ const e = this.q(this.m.VERTEX_SHADER, A), s = this.q(this.m.FRAGMENT_SHADER, t), i = this.m.createProgram();
205
+ if (this.m.attachShader(i, e), this.m.attachShader(i, s), this.m.linkProgram(i), !this.m.getProgramParameter(i, this.m.LINK_STATUS)) {
206
+ const r = this.m.getProgramInfoLog(i);
207
+ throw Error("Shader program link error: " + r);
208
208
  }
209
- return this.m.deleteShader(e), this.m.deleteShader(s), r;
209
+ return this.m.deleteShader(e), this.m.deleteShader(s), i;
210
210
  }
211
211
  q(A, t) {
212
212
  const e = this.m.createShader(A);
@@ -217,20 +217,20 @@ class z {
217
217
  return e;
218
218
  }
219
219
  AA() {
220
- this.m.useProgram(this.J), this.tA();
220
+ this.m.useProgram(this.K), this.tA();
221
221
  }
222
222
  tA() {
223
223
  this.Z = 0;
224
224
  }
225
225
  eA(A) {
226
- for (const [t, e] of Object.entries(A)) this.BA(t, e);
226
+ for (const [t, e] of Object.entries(A)) this.sA(t, e);
227
227
  }
228
- sA(A) {
229
- return this.V.has(A);
228
+ iA(A) {
229
+ return this.J.has(A);
230
230
  }
231
- BA(A, t) {
232
- if (this.m.getParameter(this.m.CURRENT_PROGRAM) !== this.J) return void console.warn(`Attempting to set uniform '${A}' on shader that is not currently bound`);
233
- const e = this.V.get(A);
231
+ sA(A, t) {
232
+ if (this.m.getParameter(this.m.CURRENT_PROGRAM) !== this.K) return void console.warn(`Attempting to set uniform '${A}' on shader that is not currently bound`);
233
+ const e = this.J.get(A);
234
234
  if (e) if (typeof t == "number") this.m.uniform1f(e, t);
235
235
  else if (typeof t == "boolean") this.m.uniform1i(e, t ? 1 : 0);
236
236
  else if (Array.isArray(t)) switch (t.length) {
@@ -247,29 +247,29 @@ class z {
247
247
  console.warn(`Unsupported array length ${t.length} for uniform '${A}'`);
248
248
  }
249
249
  else if (t instanceof WebGLTexture) {
250
- const s = this.iA();
250
+ const s = this.BA();
251
251
  this.m.uniform1i(e, s), this.m.activeTexture(this.m.TEXTURE0 + s), this.m.bindTexture(this.m.TEXTURE_2D, t);
252
252
  } else if (t instanceof U) {
253
- const s = this.iA();
253
+ const s = this.BA();
254
254
  this.m.uniform1i(e, s), this.m.activeTexture(this.m.TEXTURE0 + s), this.m.bindTexture(this.m.TEXTURE_2D, t.texture);
255
255
  } else if (typeof t == "object" && "texture" in t) {
256
- const s = this.iA();
256
+ const s = this.BA();
257
257
  this.m.uniform1i(e, s), this.m.activeTexture(this.m.TEXTURE0 + s), this.m.bindTexture(this.m.TEXTURE_2D, t.texture);
258
258
  } else console.warn(`Unsupported uniform type for '${A}':`, typeof t);
259
259
  }
260
- iA() {
260
+ BA() {
261
261
  return this.Z >= this.j && console.warn(`Exceeded maximum texture units (${this.j}). Texture may not render correctly.`), this.Z++;
262
262
  }
263
- get QA() {
264
- return this.J;
263
+ get rA() {
264
+ return this.K;
265
265
  }
266
- W() {
267
- this.m.deleteProgram(this.J);
266
+ H() {
267
+ this.m.deleteProgram(this.K);
268
268
  }
269
269
  }
270
270
  class AA {
271
271
  constructor() {
272
- n(this, "rA", 1);
272
+ n(this, "QA", 1);
273
273
  n(this, "EA", 0);
274
274
  n(this, "nA", 0);
275
275
  n(this, "oA", 0);
@@ -277,33 +277,33 @@ class AA {
277
277
  n(this, "aA", [1, 1, 1, 1]);
278
278
  n(this, "hA", [0, 0, 0, 1]);
279
279
  n(this, "cA", !1);
280
+ n(this, "lA", !1);
280
281
  n(this, "CA", !1);
281
- n(this, "DA", !1);
282
- n(this, "lA", [0, 0]);
283
- n(this, "PA", [0, 0, 0, 1]);
284
- n(this, "uA", []);
282
+ n(this, "DA", [0, 0]);
283
+ n(this, "uA", [0, 0, 0, 1]);
284
+ n(this, "PA", []);
285
285
  }
286
286
  IA() {
287
- this.uA.push({ lineWeight: this.rA, rotationX: this.EA, rotationY: this.nA, rotationZ: this.oA, charRotation: [...this.lA], flipHorizontally: this.cA, flipVertically: this.CA, invert: this.DA, character: [...this.gA], charColor: [...this.aA], cellColor: [...this.hA] });
287
+ this.PA.push({ lineWeight: this.QA, rotationX: this.EA, rotationY: this.nA, rotationZ: this.oA, charRotation: [...this.DA], flipHorizontally: this.cA, flipVertically: this.lA, invert: this.CA, character: [...this.gA], charColor: [...this.aA], cellColor: [...this.hA] });
288
288
  }
289
289
  wA() {
290
- const A = this.uA.pop();
291
- A ? (this.rA = A.lineWeight, this.EA = A.rotationX, this.nA = A.rotationY, this.oA = A.rotationZ, this.lA = A.charRotation, this.cA = A.flipHorizontally, this.CA = A.flipVertically, this.DA = A.invert, this.gA = A.character, this.aA = A.charColor, this.hA = A.cellColor) : console.warn("pop() called without matching push()");
290
+ const A = this.PA.pop();
291
+ A ? (this.QA = A.lineWeight, this.EA = A.rotationX, this.nA = A.rotationY, this.oA = A.rotationZ, this.DA = A.charRotation, this.cA = A.flipHorizontally, this.lA = A.flipVertically, this.CA = A.invert, this.gA = A.character, this.aA = A.charColor, this.hA = A.cellColor) : console.warn("pop() called without matching push()");
292
292
  }
293
293
  fA() {
294
- this.uA = [], this.EA = 0, this.nA = 0, this.oA = 0;
294
+ this.PA = [], this.EA = 0, this.nA = 0, this.oA = 0;
295
295
  }
296
296
  dA(A) {
297
- A.lineWeight = this.rA, A.rotationX = this.EA, A.rotationY = this.nA, A.rotationZ = this.oA, A.character[0] = this.gA[0], A.character[1] = this.gA[1], A.character[2] = this.gA[2], A.charColor[0] = this.aA[0], A.charColor[1] = this.aA[1], A.charColor[2] = this.aA[2], A.charColor[3] = this.aA[3], A.bgColor[0] = this.hA[0], A.bgColor[1] = this.hA[1], A.bgColor[2] = this.hA[2], A.bgColor[3] = this.hA[3], A.flipHorizontally = this.cA, A.flipVertically = this.CA, A.invert = this.DA, A.charRotation[0] = this.lA[0], A.charRotation[1] = this.lA[1];
297
+ A.lineWeight = this.QA, A.rotationX = this.EA, A.rotationY = this.nA, A.rotationZ = this.oA, A.character[0] = this.gA[0], A.character[1] = this.gA[1], A.character[2] = this.gA[2], A.charColor[0] = this.aA[0], A.charColor[1] = this.aA[1], A.charColor[2] = this.aA[2], A.charColor[3] = this.aA[3], A.bgColor[0] = this.hA[0], A.bgColor[1] = this.hA[1], A.bgColor[2] = this.hA[2], A.bgColor[3] = this.hA[3], A.flipHorizontally = this.cA, A.flipVertically = this.lA, A.invert = this.CA, A.charRotation[0] = this.DA[0], A.charRotation[1] = this.DA[1];
298
298
  }
299
299
  get lineWeight() {
300
- return this.rA;
300
+ return this.QA;
301
301
  }
302
302
  get canvasBackgroundColor() {
303
- return this.PA;
303
+ return this.uA;
304
304
  }
305
305
  pA(A) {
306
- this.rA = Math.abs(A);
306
+ this.QA = Math.abs(A);
307
307
  }
308
308
  _A(A) {
309
309
  this.EA = A;
@@ -314,10 +314,10 @@ class AA {
314
314
  vA(A) {
315
315
  this.oA = A;
316
316
  }
317
- xA(A) {
317
+ yA(A) {
318
318
  this.gA = A;
319
319
  }
320
- yA(A, t, e, s = 255) {
320
+ xA(A, t, e, s = 255) {
321
321
  this.aA = [A / 255, t / 255, e / 255, s / 255];
322
322
  }
323
323
  bA(A, t, e, s = 255) {
@@ -327,125 +327,125 @@ class AA {
327
327
  this.cA = A;
328
328
  }
329
329
  $A(A) {
330
- this.CA = A;
330
+ this.lA = A;
331
331
  }
332
332
  MA(A) {
333
- this.DA = A;
333
+ this.CA = A;
334
334
  }
335
335
  YA(A) {
336
336
  const t = 255 * A / 360, e = Math.floor(t) / 255, s = Math.round(t - Math.floor(t));
337
- this.lA = [e, s];
337
+ this.DA = [e, s];
338
338
  }
339
- zA(A, t, e, s) {
340
- this.PA = [A / 255, t / 255, e / 255, s / 255];
339
+ RA(A, t, e, s) {
340
+ this.uA = [A / 255, t / 255, e / 255, s / 255];
341
341
  }
342
342
  }
343
- var L = `#version 300 es
343
+ var z = `#version 300 es
344
344
  in vec2 a_position;in vec2 a_texCoord;in vec2 a_instancePosition;in vec2 a_instanceSize;in vec3 a_instanceCharacter;in vec4 a_instancePrimaryColor;in vec4 a_instanceSecondaryColor;in vec2 a_instanceRotation;in vec3 a_instanceTransform;in vec3 a_instanceGlobalRotation;in vec2 a_instanceRotationCenter;in vec2 a_instanceBezierCP1;in vec2 a_instanceBezierCP2;in vec2 a_instanceBezierStart;in vec2 a_instanceBezierEnd;in vec2 a_instanceArcAngles;uniform float u_aspectRatio;uniform vec2 u_viewportSize;out vec2 v_uv;out vec3 v_character;out vec4 v_primaryColor;out vec4 v_secondaryColor;out vec2 v_rotation;out vec3 v_transform;mat3 rotateX(float a){float s=sin(a),c=cos(a);return mat3(1,0,0,0,c,-s,0,s,c);}mat3 rotateY(float a){float s=sin(a),c=cos(a);return mat3(c,0,s,0,1,0,-s,0,c);}mat3 rotateZ(float a){float s=sin(a),c=cos(a);return mat3(c,-s,0,s,c,0,0,0,1);}vec2 evaluateBezier(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return u2*u*p0+3.*u2*t*p1+3.*u*t2*p2+t2*t*p3;}vec2 evaluateBezierDerivative(float t,vec2 p0,vec2 p1,vec2 p2,vec2 p3){float u=1.-t,u2=u*u,t2=t*t;return-3.*u2*p0+3.*u2*p1-6.*u*t*p1+6.*u*t*p2-3.*t2*p2+3.*t2*p3;}void main(){v_uv=a_texCoord;v_character=a_instanceCharacter;v_primaryColor=a_instancePrimaryColor;v_secondaryColor=a_instanceSecondaryColor;v_rotation=a_instanceRotation;v_transform=a_instanceTransform;vec2 worldPosition;bool isBezier=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool isArc=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(isBezier){float t=a_position.x;vec2 curvePoint=evaluateBezier(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 tangent=evaluateBezierDerivative(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float tLen=length(tangent);tangent=tLen>0.?tangent/tLen:vec2(1,0);worldPosition=curvePoint+vec2(-tangent.y,tangent.x)*a_position.y*a_instanceSize.y;}else if(isArc){float s=a_instanceArcAngles.x,e=a_instanceArcAngles.y;s=mod(s,6.28318530718);if(s<0.)s+=6.28318530718;e=mod(e,6.28318530718);if(e<0.)e+=6.28318530718;float d=s-e;if(d<=0.)d+=6.28318530718;float angle=s-a_position.x*d;vec2 local=vec2(cos(angle),sin(angle))*a_position.y;worldPosition=local*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{worldPosition=a_position*a_instanceSize+a_instancePosition;}vec2 ndc=(worldPosition/u_viewportSize)*2.-1.;ndc.y=-ndc.y;if(length(a_instanceGlobalRotation)>0.){vec3 pos3D=vec3(ndc-a_instanceRotationCenter,0);pos3D.x*=u_aspectRatio;if(a_instanceGlobalRotation.x!=0.)pos3D=rotateX(-a_instanceGlobalRotation.x)*pos3D;if(a_instanceGlobalRotation.y!=0.)pos3D=rotateY(-a_instanceGlobalRotation.y)*pos3D;if(a_instanceGlobalRotation.z!=0.)pos3D=rotateZ(-a_instanceGlobalRotation.z)*pos3D;pos3D.x/=u_aspectRatio;ndc=pos3D.xy+a_instanceRotationCenter;}gl_Position=vec4(ndc,0,1);}`, D = ((E) => (E.RECTANGLE = "rectangle", E.LINE = "line", E.ELLIPSE = "ellipse", E.ARC = "arc", E.TRIANGLE = "triangle", E.BEZIER_CURVE = "bezier_curve", E.CUSTOM = "custom", E))(D || {});
345
345
  class tA {
346
346
  constructor(A) {
347
347
  n(this, "m");
348
- n(this, "RA", /* @__PURE__ */ new Map());
348
+ n(this, "zA", /* @__PURE__ */ new Map());
349
349
  this.m = A;
350
350
  }
351
- SA(A, t, e, s) {
352
- const r = this.m;
353
- let i = this.RA.get(A);
354
- i || (i = /* @__PURE__ */ new Map(), this.RA.set(A, i));
355
- let B = i.get(t) || null;
351
+ FA(A, t, e, s) {
352
+ const i = this.m;
353
+ let r = this.zA.get(A);
354
+ r || (r = /* @__PURE__ */ new Map(), this.zA.set(A, r));
355
+ let B = r.get(t) || null;
356
356
  if (!B) {
357
- B = r.createVertexArray(), i.set(t, B), r.bindVertexArray(B), r.bindBuffer(r.ARRAY_BUFFER, s);
358
- const Q = r.getAttribLocation(A, "a_position");
359
- Q !== -1 && (r.enableVertexAttribArray(Q), r.vertexAttribPointer(Q, e.attributes.position.size, r.FLOAT, !1, e.stride, e.attributes.position.offset), r.vertexAttribDivisor(Q, 0));
360
- const o = r.getAttribLocation(A, "a_texCoord");
361
- o !== -1 && (r.enableVertexAttribArray(o), r.vertexAttribPointer(o, e.attributes.texCoord.size, r.FLOAT, !1, e.stride, e.attributes.texCoord.offset), r.vertexAttribDivisor(o, 0));
357
+ B = i.createVertexArray(), r.set(t, B), i.bindVertexArray(B), i.bindBuffer(i.ARRAY_BUFFER, s);
358
+ const o = i.getAttribLocation(A, "a_position");
359
+ o !== -1 && (i.enableVertexAttribArray(o), i.vertexAttribPointer(o, e.attributes.position.size, i.FLOAT, !1, e.stride, e.attributes.position.offset), i.vertexAttribDivisor(o, 0));
360
+ const Q = i.getAttribLocation(A, "a_texCoord");
361
+ Q !== -1 && (i.enableVertexAttribArray(Q), i.vertexAttribPointer(Q, e.attributes.texCoord.size, i.FLOAT, !1, e.stride, e.attributes.texCoord.offset), i.vertexAttribDivisor(Q, 0));
362
362
  }
363
- r.bindVertexArray(B);
363
+ i.bindVertexArray(B);
364
364
  }
365
- TA() {
365
+ SA() {
366
366
  this.m.bindVertexArray(null);
367
367
  }
368
- W() {
368
+ H() {
369
369
  const A = this.m;
370
- for (const [, t] of this.RA) for (const [, e] of t) e && A.deleteVertexArray(e);
371
- this.RA.clear();
370
+ for (const [, t] of this.zA) for (const [, e] of t) e && A.deleteVertexArray(e);
371
+ this.zA.clear();
372
372
  }
373
373
  }
374
374
  class eA {
375
375
  constructor(A) {
376
- n(this, "FA");
376
+ n(this, "TA");
377
377
  n(this, "m");
378
378
  n(this, "OA", null);
379
- n(this, "UA", null);
379
+ n(this, "kA", null);
380
380
  n(this, "LA", null);
381
- this.m = A, this.FA = new tA(A);
381
+ this.m = A, this.TA = new tA(A);
382
382
  }
383
- kA(A, t, e) {
384
- const { shader: s } = A, r = R(this.m) || this.m.getParameter(this.m.VIEWPORT), i = { u_aspectRatio: r[2] / r[3], u_viewportSize: [r[2], r[3]] }, B = {};
385
- for (const [a, g] of Object.entries(i)) s.sA(a) && (B[a] = g);
383
+ UA(A, t, e) {
384
+ const { shader: s } = A, i = b(this.m) || this.m.getParameter(this.m.VIEWPORT), r = { u_aspectRatio: i[2] / i[3], u_viewportSize: [i[2], i[3]] }, B = {};
385
+ for (const [a, h] of Object.entries(r)) s.iA(a) && (B[a] = h);
386
386
  Object.keys(B).length > 0 && s.eA(B);
387
- const Q = (a) => {
388
- if (!a || !a.HA()) return;
389
- const g = a.unitGeometry, l = a.unitBuffer;
387
+ const o = (a) => {
388
+ if (!a || !a.WA()) return;
389
+ const h = a.unitGeometry, l = a.unitBuffer;
390
390
  try {
391
- this.FA.SA(s.QA, a.type + "", g, l), a.batch.WA(s), a.batch.JA(g.primitiveType, g.vertexCount);
391
+ this.TA.FA(s.rA, a.type + "", h, l), a.batch.HA(s), a.batch.KA(h.primitiveType, h.vertexCount);
392
392
  } finally {
393
- a.batch.VA(s), this.FA.TA(), a.KA();
393
+ a.batch.JA(s), this.TA.SA(), a.VA();
394
394
  }
395
395
  };
396
- let o = null, h = null;
396
+ let Q = null, g = null;
397
397
  for (const a of t) {
398
398
  if (a.type === D.CUSTOM) {
399
- h && (Q(h), o = null, h = null), this.ZA(A, a.params, a.state, e.get(D.RECTANGLE) || null);
399
+ g && (o(g), Q = null, g = null), this.ZA(A, a.params, a.state, e.get(D.RECTANGLE) || null);
400
400
  continue;
401
401
  }
402
- o !== null && a.type !== o && (Q(h), o = null, h = null);
403
- let g = h;
404
- g && a.type === o || (g = e.get(a.type) || null, h = g, o = a.type), g && g.jA(a.params, a.state);
402
+ Q !== null && a.type !== Q && (o(g), Q = null, g = null);
403
+ let h = g;
404
+ h && a.type === Q || (h = e.get(a.type) || null, g = h, Q = a.type), h && h.jA(a.params, a.state);
405
405
  }
406
- Q(h);
406
+ o(g);
407
407
  }
408
408
  ZA(A, t, e, s) {
409
409
  if (!s) return;
410
- const { x: r, y: i, width: B, height: Q, shader: o, uniforms: h } = t, a = this.m;
411
- o.AA(), s.KA();
412
- const g = this.XA(Math.max(1, Math.floor(B)), Math.max(1, Math.floor(Q)));
413
- g.k(), o.AA(), h && Object.keys(h).length && o.eA(h);
410
+ const { x: i, y: r, width: B, height: o, shader: Q, uniforms: g } = t, a = this.m;
411
+ Q.AA(), s.VA();
412
+ const h = this.NA(Math.max(1, Math.floor(B)), Math.max(1, Math.floor(o)));
413
+ h.U(), Q.AA(), g && Object.keys(g).length && Q.eA(g);
414
414
  {
415
- const u = R(a) || a.getParameter(a.VIEWPORT);
416
- o.sA("u_aspectRatio") && o.BA("u_aspectRatio", u[2] / u[3]), o.sA("u_viewportSize") && o.BA("u_viewportSize", [u[2], u[3]]);
415
+ const u = b(a) || a.getParameter(a.VIEWPORT);
416
+ Q.iA("u_aspectRatio") && Q.sA("u_aspectRatio", u[2] / u[3]), Q.iA("u_viewportSize") && Q.sA("u_viewportSize", [u[2], u[3]]);
417
417
  }
418
418
  const l = { ...e, rotationX: 0, rotationY: 0, rotationZ: 0 };
419
- if (s.jA({ x: 0, y: 0, width: g.width, height: g.height }, l), s.HA()) {
420
- const u = s.unitGeometry, M = s.unitBuffer;
419
+ if (s.jA({ x: 0, y: 0, width: h.width, height: h.height }, l), s.WA()) {
420
+ const u = s.unitGeometry, _ = s.unitBuffer;
421
421
  try {
422
- this.FA.SA(o.QA, s.type + "", u, M), s.batch.WA(o), s.batch.JA(u.primitiveType, u.vertexCount);
422
+ this.TA.FA(Q.rA, s.type + "", u, _), s.batch.HA(Q), s.batch.KA(u.primitiveType, u.vertexCount);
423
423
  } finally {
424
- s.batch.VA(o), this.FA.TA(), s.KA();
424
+ s.batch.JA(Q), this.TA.SA(), s.VA();
425
425
  }
426
426
  }
427
- g.H();
428
- const c = this.NA();
429
- c.AA(), c.eA({ u_src0: g.textures[0], u_src1: g.textures[1], u_src2: g.textures[2], u_src3: g.textures[3], u_src4: g.textures[4], u_srcSize: [g.width, g.height] });
430
- const C = R(a) || a.getParameter(a.VIEWPORT);
431
- c.sA("u_aspectRatio") && c.BA("u_aspectRatio", C[2] / C[3]), c.sA("u_viewportSize") && c.BA("u_viewportSize", [C[2], C[3]]);
432
- const d = Math.floor(r), I = Math.floor(i), w = Math.max(1, Math.floor(B)), p = Math.max(1, Math.floor(Q));
433
- if (s.jA({ x: d, y: I, width: w, height: p }, e), s.HA()) {
434
- const u = s.unitGeometry, M = s.unitBuffer;
427
+ h.W();
428
+ const c = this.XA();
429
+ c.AA(), c.eA({ u_src0: h.textures[0], u_src1: h.textures[1], u_src2: h.textures[2], u_src3: h.textures[3], u_src4: h.textures[4], u_srcSize: [h.width, h.height] });
430
+ const C = b(a) || a.getParameter(a.VIEWPORT);
431
+ c.iA("u_aspectRatio") && c.sA("u_aspectRatio", C[2] / C[3]), c.iA("u_viewportSize") && c.sA("u_viewportSize", [C[2], C[3]]);
432
+ const d = Math.floor(i), I = Math.floor(r), w = Math.max(1, Math.floor(B)), p = Math.max(1, Math.floor(o));
433
+ if (s.jA({ x: d, y: I, width: w, height: p }, e), s.WA()) {
434
+ const u = s.unitGeometry, _ = s.unitBuffer;
435
435
  try {
436
- this.FA.SA(c.QA, s.type + "", u, M), s.batch.WA(c), s.batch.JA(u.primitiveType, u.vertexCount);
436
+ this.TA.FA(c.rA, s.type + "", u, _), s.batch.HA(c), s.batch.KA(u.primitiveType, u.vertexCount);
437
437
  } finally {
438
- s.batch.VA(c), this.FA.TA(), s.KA();
438
+ s.batch.JA(c), this.TA.SA(), s.VA();
439
439
  }
440
440
  }
441
441
  A.shader.AA();
442
442
  }
443
- NA() {
444
- return this.OA || (this.OA = new z(this.m, L, `#version 300 es
443
+ XA() {
444
+ return this.OA || (this.OA = new L(this.m, z, `#version 300 es
445
445
  precision highp float;in vec2 v_uv;uniform sampler2D u_src0;uniform sampler2D u_src1;uniform sampler2D u_src2;uniform sampler2D u_src3;uniform sampler2D u_src4;uniform vec2 u_srcSize;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){vec2 uvTex=v_uv*u_srcSize;vec2 uvQ=(floor(uvTex)+0.5f)/u_srcSize;o_character=texture(u_src0,uvQ);o_primaryColor=texture(u_src1,uvQ);o_secondaryColor=texture(u_src2,uvQ);o_rotation=texture(u_src3,uvQ);o_transform=texture(u_src4,uvQ);}`)), this.OA;
446
446
  }
447
- XA(A, t) {
448
- return this.UA && this.LA && this.LA.w === A && this.LA.h === t || (this.UA && this.UA.W(), this.UA = new U(this.m, A, t, 5), this.LA = { w: A, h: t }), this.UA;
447
+ NA(A, t) {
448
+ return this.kA && this.LA && this.LA.w === A && this.LA.h === t || (this.kA && this.kA.H(), this.kA = new U(this.m, A, t, 5), this.LA = { w: A, h: t }), this.kA;
449
449
  }
450
450
  }
451
451
  class sA {
@@ -485,33 +485,33 @@ class sA {
485
485
  }
486
486
  return this.tt++, t;
487
487
  }
488
- Bt(A, t, e, s, r) {
489
- const i = this.et(D.RECTANGLE);
490
- return i.params.x = A, i.params.y = t, i.params.width = e, i.params.height = s, r.dA(i.state), i.id;
488
+ st(A, t, e, s, i) {
489
+ const r = this.et(D.RECTANGLE);
490
+ return r.params.x = A, r.params.y = t, r.params.width = e, r.params.height = s, i.dA(r.state), r.id;
491
491
  }
492
- st(A, t, e, s, r, i, B) {
493
- const Q = this.et(D.CUSTOM);
494
- return Q.params.x = A, Q.params.y = t, Q.params.width = e, Q.params.height = s, Q.params.shader = r, Q.params.uniforms = i, B.dA(Q.state), Q.id;
492
+ it(A, t, e, s, i, r, B) {
493
+ const o = this.et(D.CUSTOM);
494
+ return o.params.x = A, o.params.y = t, o.params.width = e, o.params.height = s, o.params.shader = i, o.params.uniforms = r, B.dA(o.state), o.id;
495
495
  }
496
- it(A, t, e, s, r, i) {
496
+ Bt(A, t, e, s, i, r) {
497
497
  const B = this.et(D.LINE);
498
- return B.params.x1 = A, B.params.y1 = t, B.params.x2 = e, B.params.y2 = s, B.params.thickness = r, i.dA(B.state), B.id;
498
+ return B.params.x1 = A, B.params.y1 = t, B.params.x2 = e, B.params.y2 = s, B.params.thickness = i, r.dA(B.state), B.id;
499
499
  }
500
- Qt(A, t, e, s, r) {
501
- const i = this.et(D.ELLIPSE);
502
- return i.params.x = A, i.params.y = t, i.params.width = e, i.params.height = s, r.dA(i.state), i.id;
500
+ rt(A, t, e, s, i) {
501
+ const r = this.et(D.ELLIPSE);
502
+ return r.params.x = A, r.params.y = t, r.params.width = e, r.params.height = s, i.dA(r.state), r.id;
503
503
  }
504
- rt(A, t, e, s, r, i, B) {
505
- const Q = this.et(D.ARC);
506
- return Q.params.x = A, Q.params.y = t, Q.params.width = e, Q.params.height = s, Q.params.start = r, Q.params.stop = i, B.dA(Q.state), Q.id;
504
+ Qt(A, t, e, s, i, r, B) {
505
+ const o = this.et(D.ARC);
506
+ return o.params.x = A, o.params.y = t, o.params.width = e, o.params.height = s, o.params.start = i, o.params.stop = r, B.dA(o.state), o.id;
507
507
  }
508
- Et(A, t, e, s, r, i, B) {
509
- const Q = this.et(D.TRIANGLE);
510
- return Q.params.x1 = A, Q.params.y1 = t, Q.params.x2 = e, Q.params.y2 = s, Q.params.x3 = r, Q.params.y3 = i, B.dA(Q.state), Q.id;
508
+ Et(A, t, e, s, i, r, B) {
509
+ const o = this.et(D.TRIANGLE);
510
+ return o.params.x1 = A, o.params.y1 = t, o.params.x2 = e, o.params.y2 = s, o.params.x3 = i, o.params.y3 = r, B.dA(o.state), o.id;
511
511
  }
512
- nt(A, t, e, s, r, i, B, Q, o, h) {
512
+ nt(A, t, e, s, i, r, B, o, Q, g) {
513
513
  const a = this.et(D.BEZIER_CURVE);
514
- return a.params.x1 = A, a.params.y1 = t, a.params.cp1x = e, a.params.cp1y = s, a.params.cp2x = r, a.params.cp2y = i, a.params.x2 = B, a.params.y2 = Q, a.params.thickness = o, h.dA(a.state), a.id;
514
+ return a.params.x1 = A, a.params.y1 = t, a.params.cp1x = e, a.params.cp1y = s, a.params.cp2x = i, a.params.cp2y = r, a.params.x2 = B, a.params.y2 = o, a.params.thickness = Q, g.dA(a.state), a.id;
515
515
  }
516
516
  get length() {
517
517
  return this.tt;
@@ -528,44 +528,44 @@ class sA {
528
528
  return { next: () => A < t ? { value: e[A++], done: !1 } : { value: void 0, done: !0 } };
529
529
  }
530
530
  }
531
- const x = class x {
531
+ const v = class v {
532
532
  static gt(A, t, e = 0) {
533
- var i, B, Q, o, h, a, g, l, c, C;
534
- const s = t || new Float32Array(x.FLOATS_PER_INSTANCE);
535
- let r = e;
536
- return s[r++] = A.position[0], s[r++] = A.position[1], s[r++] = A.size[0], s[r++] = A.size[1], s[r++] = A.character[0], s[r++] = A.character[1], s[r++] = A.character[2], s[r++] = A.primaryColor[0], s[r++] = A.primaryColor[1], s[r++] = A.primaryColor[2], s[r++] = A.primaryColor[3], s[r++] = A.secondaryColor[0], s[r++] = A.secondaryColor[1], s[r++] = A.secondaryColor[2], s[r++] = A.secondaryColor[3], s[r++] = A.rotation[0], s[r++] = A.rotation[1], s[r++] = A.transform[0], s[r++] = A.transform[1], s[r++] = A.transform[2], s[r++] = A.globalRotationX, s[r++] = A.globalRotationY, s[r++] = A.globalRotationZ, s[r++] = A.rotationCenter[0], s[r++] = A.rotationCenter[1], s[r++] = ((i = A.arcAngles) == null ? void 0 : i[0]) || 0, s[r++] = ((B = A.arcAngles) == null ? void 0 : B[1]) || 0, s[r++] = ((Q = A.bezierControlPoint1) == null ? void 0 : Q[0]) || 0, s[r++] = ((o = A.bezierControlPoint1) == null ? void 0 : o[1]) || 0, s[r++] = ((h = A.bezierControlPoint2) == null ? void 0 : h[0]) || 0, s[r++] = ((a = A.bezierControlPoint2) == null ? void 0 : a[1]) || 0, s[r++] = ((g = A.bezierStartPoint) == null ? void 0 : g[0]) || 0, s[r++] = ((l = A.bezierStartPoint) == null ? void 0 : l[1]) || 0, s[r++] = ((c = A.bezierEndPoint) == null ? void 0 : c[0]) || 0, s[r++] = ((C = A.bezierEndPoint) == null ? void 0 : C[1]) || 0, s;
533
+ var r, B, o, Q, g, a, h, l, c, C;
534
+ const s = t || new Float32Array(v.FLOATS_PER_INSTANCE);
535
+ let i = e;
536
+ return s[i++] = A.position[0], s[i++] = A.position[1], s[i++] = A.size[0], s[i++] = A.size[1], s[i++] = A.character[0], s[i++] = A.character[1], s[i++] = A.character[2], s[i++] = A.primaryColor[0], s[i++] = A.primaryColor[1], s[i++] = A.primaryColor[2], s[i++] = A.primaryColor[3], s[i++] = A.secondaryColor[0], s[i++] = A.secondaryColor[1], s[i++] = A.secondaryColor[2], s[i++] = A.secondaryColor[3], s[i++] = A.rotation[0], s[i++] = A.rotation[1], s[i++] = A.transform[0], s[i++] = A.transform[1], s[i++] = A.transform[2], s[i++] = A.globalRotationX, s[i++] = A.globalRotationY, s[i++] = A.globalRotationZ, s[i++] = A.rotationCenter[0], s[i++] = A.rotationCenter[1], s[i++] = ((r = A.arcAngles) == null ? void 0 : r[0]) || 0, s[i++] = ((B = A.arcAngles) == null ? void 0 : B[1]) || 0, s[i++] = ((o = A.bezierControlPoint1) == null ? void 0 : o[0]) || 0, s[i++] = ((Q = A.bezierControlPoint1) == null ? void 0 : Q[1]) || 0, s[i++] = ((g = A.bezierControlPoint2) == null ? void 0 : g[0]) || 0, s[i++] = ((a = A.bezierControlPoint2) == null ? void 0 : a[1]) || 0, s[i++] = ((h = A.bezierStartPoint) == null ? void 0 : h[0]) || 0, s[i++] = ((l = A.bezierStartPoint) == null ? void 0 : l[1]) || 0, s[i++] = ((c = A.bezierEndPoint) == null ? void 0 : c[0]) || 0, s[i++] = ((C = A.bezierEndPoint) == null ? void 0 : C[1]) || 0, s;
537
537
  }
538
538
  static ht(A) {
539
- const t = A.length * x.FLOATS_PER_INSTANCE, e = new Float32Array(t);
539
+ const t = A.length * v.FLOATS_PER_INSTANCE, e = new Float32Array(t);
540
540
  for (let s = 0; s < A.length; s++) {
541
- const r = s * x.FLOATS_PER_INSTANCE;
542
- x.gt(A[s], e, r);
541
+ const i = s * v.FLOATS_PER_INSTANCE;
542
+ v.gt(A[s], e, i);
543
543
  }
544
544
  return e;
545
545
  }
546
546
  };
547
- n(x, "BYTES_PER_INSTANCE", 140), n(x, "FLOATS_PER_INSTANCE", 35);
548
- let b = x;
547
+ n(v, "BYTES_PER_INSTANCE", 140), n(v, "FLOATS_PER_INSTANCE", 35);
548
+ let R = v;
549
549
  const P = class P {
550
550
  };
551
- n(P, "STRIDE", b.BYTES_PER_INSTANCE), n(P, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 132, divisor: 1 } });
552
- let Y = P;
553
- class rA {
551
+ n(P, "STRIDE", R.BYTES_PER_INSTANCE), n(P, "ATTRIBUTES", { a_instancePosition: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 0, divisor: 1 }, a_instanceSize: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 8, divisor: 1 }, a_instanceCharacter: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 16, divisor: 1 }, a_instancePrimaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 28, divisor: 1 }, a_instanceSecondaryColor: { location: -1, size: 4, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 44, divisor: 1 }, a_instanceRotation: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 60, divisor: 1 }, a_instanceTransform: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 68, divisor: 1 }, a_instanceGlobalRotation: { location: -1, size: 3, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 80, divisor: 1 }, a_instanceRotationCenter: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 92, divisor: 1 }, a_instanceArcAngles: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 100, divisor: 1 }, a_instanceBezierCP1: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 108, divisor: 1 }, a_instanceBezierCP2: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 116, divisor: 1 }, a_instanceBezierStart: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 124, divisor: 1 }, a_instanceBezierEnd: { location: -1, size: 2, type: WebGL2RenderingContext.FLOAT, normalized: !1, stride: P.STRIDE, offset: 132, divisor: 1 } });
552
+ let F = P;
553
+ class iA {
554
554
  constructor(A, t = 1e3, e = 1.5) {
555
555
  n(this, "m");
556
556
  n(this, "ct", []);
557
+ n(this, "lt");
557
558
  n(this, "Ct");
558
- n(this, "Dt");
559
- n(this, "lt", null);
560
- n(this, "Pt", !0);
561
- n(this, "ut", 0);
559
+ n(this, "Dt", null);
560
+ n(this, "ut", !0);
561
+ n(this, "Pt", 0);
562
562
  n(this, "It", /* @__PURE__ */ new Map());
563
563
  n(this, "wt", null);
564
- this.m = A, this.Ct = t, this.Dt = e, this.ft();
564
+ this.m = A, this.lt = t, this.Ct = e, this.ft();
565
565
  }
566
566
  jA(A) {
567
567
  const t = this.ct.length;
568
- return this.ct.push(A), this.Pt = !0, t;
568
+ return this.ct.push(A), this.ut = !0, t;
569
569
  }
570
570
  get count() {
571
571
  return this.ct.length;
@@ -574,76 +574,76 @@ class rA {
574
574
  return this.ct.length === 0;
575
575
  }
576
576
  clear() {
577
- this.ct.length = 0, this.Pt = !0;
577
+ this.ct.length = 0, this.ut = !0;
578
578
  }
579
579
  dt(A) {
580
- if (A <= this.Ct) return;
581
- const t = Math.ceil(A * this.Dt);
582
- this.Ct = t, this.ft();
580
+ if (A <= this.lt) return;
581
+ const t = Math.ceil(A * this.Ct);
582
+ this.lt = t, this.ft();
583
583
  }
584
584
  ft() {
585
585
  const A = this.m;
586
- this.lt && A.deleteBuffer(this.lt), this.lt = A.createBuffer();
587
- const t = this.Ct * b.BYTES_PER_INSTANCE;
588
- A.bindBuffer(A.ARRAY_BUFFER, this.lt), A.bufferData(A.ARRAY_BUFFER, t, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Pt = !0, this.ut = 0;
586
+ this.Dt && A.deleteBuffer(this.Dt), this.Dt = A.createBuffer();
587
+ const t = this.lt * R.BYTES_PER_INSTANCE;
588
+ A.bindBuffer(A.ARRAY_BUFFER, this.Dt), A.bufferData(A.ARRAY_BUFFER, t, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.ut = !0, this.Pt = 0;
589
589
  }
590
590
  _t() {
591
- if (!this.Pt || this.ct.length === 0) return;
591
+ if (!this.ut || this.ct.length === 0) return;
592
592
  const A = this.m, t = this.ct.length;
593
- this.dt(t), (!this.wt || this.wt.length < t * b.FLOATS_PER_INSTANCE) && (this.wt = new Float32Array(t * b.FLOATS_PER_INSTANCE));
594
- const e = b.ht(this.ct);
595
- A.bindBuffer(A.ARRAY_BUFFER, this.lt), t <= this.ut ? A.bufferSubData(A.ARRAY_BUFFER, 0, e) : A.bufferData(A.ARRAY_BUFFER, e, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Pt = !1, this.ut = t;
593
+ this.dt(t), (!this.wt || this.wt.length < t * R.FLOATS_PER_INSTANCE) && (this.wt = new Float32Array(t * R.FLOATS_PER_INSTANCE));
594
+ const e = R.ht(this.ct);
595
+ A.bindBuffer(A.ARRAY_BUFFER, this.Dt), t <= this.Pt ? A.bufferSubData(A.ARRAY_BUFFER, 0, e) : A.bufferData(A.ARRAY_BUFFER, e, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.ut = !1, this.Pt = t;
596
596
  }
597
597
  vt(A) {
598
598
  let t = this.It.get(A);
599
599
  if (!t) {
600
600
  t = /* @__PURE__ */ new Map();
601
601
  const e = this.m;
602
- for (const s in Y.ATTRIBUTES) {
603
- const r = e.getAttribLocation(A, s);
604
- r !== -1 && t.set(s, r);
602
+ for (const s in F.ATTRIBUTES) {
603
+ const i = e.getAttribLocation(A, s);
604
+ i !== -1 && t.set(s, i);
605
605
  }
606
606
  this.It.set(A, t);
607
607
  }
608
608
  return t;
609
609
  }
610
- WA(A) {
611
- if (!this.lt || this.ct.length === 0) return;
612
- const t = this.m, e = A.QA;
610
+ HA(A) {
611
+ if (!this.Dt || this.ct.length === 0) return;
612
+ const t = this.m, e = A.rA;
613
613
  this._t();
614
614
  const s = this.vt(e);
615
- t.bindBuffer(t.ARRAY_BUFFER, this.lt);
616
- for (const [r, i] of s) {
617
- const B = Y.ATTRIBUTES[r];
618
- B && (t.enableVertexAttribArray(i), t.vertexAttribPointer(i, B.size, B.type, B.normalized, B.stride, B.offset), t.vertexAttribDivisor(i, B.divisor));
615
+ t.bindBuffer(t.ARRAY_BUFFER, this.Dt);
616
+ for (const [i, r] of s) {
617
+ const B = F.ATTRIBUTES[i];
618
+ B && (t.enableVertexAttribArray(r), t.vertexAttribPointer(r, B.size, B.type, B.normalized, B.stride, B.offset), t.vertexAttribDivisor(r, B.divisor));
619
619
  }
620
620
  }
621
- VA(A) {
622
- const t = this.m, e = this.vt(A.QA);
621
+ JA(A) {
622
+ const t = this.m, e = this.vt(A.rA);
623
623
  for (const [, s] of e) t.disableVertexAttribArray(s), t.vertexAttribDivisor(s, 0);
624
624
  }
625
- JA(A, t) {
625
+ KA(A, t) {
626
626
  this.ct.length !== 0 && this.m.drawArraysInstanced(A, 0, t, this.ct.length);
627
627
  }
628
- W() {
628
+ H() {
629
629
  const A = this.m;
630
- this.lt && (A.deleteBuffer(this.lt), this.lt = null), this.ct.length = 0, this.It.clear(), this.wt = null;
630
+ this.Dt && (A.deleteBuffer(this.Dt), this.Dt = null), this.ct.length = 0, this.It.clear(), this.wt = null;
631
631
  }
632
632
  }
633
633
  class T {
634
634
  constructor(A, t, e, s) {
635
635
  n(this, "m");
636
- n(this, "xt");
637
636
  n(this, "yt");
637
+ n(this, "xt");
638
638
  n(this, "bt");
639
639
  n(this, "Gt", null);
640
- this.m = A, this.xt = t, this.yt = e, this.bt = s;
641
- const r = this.m.createBuffer();
642
- if (!r) throw Error("Failed to create unit geometry buffer");
643
- this.m.bindBuffer(this.m.ARRAY_BUFFER, r), this.m.bufferData(this.m.ARRAY_BUFFER, this.bt.vertices, this.m.STATIC_DRAW), this.m.bindBuffer(this.m.ARRAY_BUFFER, null), this.Gt = r;
640
+ this.m = A, this.yt = t, this.xt = e, this.bt = s;
641
+ const i = this.m.createBuffer();
642
+ if (!i) throw Error("Failed to create unit geometry buffer");
643
+ this.m.bindBuffer(this.m.ARRAY_BUFFER, i), this.m.bufferData(this.m.ARRAY_BUFFER, this.bt.vertices, this.m.STATIC_DRAW), this.m.bindBuffer(this.m.ARRAY_BUFFER, null), this.Gt = i;
644
644
  }
645
645
  get type() {
646
- return this.yt;
646
+ return this.xt;
647
647
  }
648
648
  get unitGeometry() {
649
649
  return this.bt;
@@ -652,69 +652,69 @@ class T {
652
652
  return this.Gt;
653
653
  }
654
654
  get batch() {
655
- return this.xt;
655
+ return this.yt;
656
656
  }
657
- KA() {
658
- this.xt.clear();
657
+ VA() {
658
+ this.yt.clear();
659
659
  }
660
- HA() {
661
- return !this.xt.isEmpty;
660
+ WA() {
661
+ return !this.yt.isEmpty;
662
662
  }
663
- W() {
664
- this.xt.W(), this.Gt && (this.m.deleteBuffer(this.Gt), this.Gt = null);
663
+ H() {
664
+ this.yt.H(), this.Gt && (this.m.deleteBuffer(this.Gt), this.Gt = null);
665
665
  }
666
- $t(A, t, e, s, r) {
667
- const i = this.Mt(A, t, e, s, r.rotationX || 0, r.rotationY || 0, r.rotationZ || 0);
668
- return { position: [A, t], size: [e, s], character: r.character || [0, 0, 0], primaryColor: r.charColor || [1, 1, 1, 1], secondaryColor: r.bgColor || [0, 0, 0, 1], rotation: r.charRotation || [0, 0], transform: [r.invert ? 1 : 0, r.flipHorizontally ? 1 : 0, r.flipVertically ? 1 : 0], globalRotationX: i.radiansX, globalRotationY: i.radiansY, globalRotationZ: i.radiansZ, rotationCenter: [i.centerX, i.centerY] };
666
+ $t(A, t, e, s, i) {
667
+ const r = this.Mt(A, t, e, s, i.rotationX || 0, i.rotationY || 0, i.rotationZ || 0);
668
+ return { position: [A, t], size: [e, s], character: i.character || [0, 0, 0], primaryColor: i.charColor || [1, 1, 1, 1], secondaryColor: i.bgColor || [0, 0, 0, 1], rotation: i.charRotation || [0, 0], transform: [i.invert ? 1 : 0, i.flipHorizontally ? 1 : 0, i.flipVertically ? 1 : 0], globalRotationX: r.radiansX, globalRotationY: r.radiansY, globalRotationZ: r.radiansZ, rotationCenter: [r.centerX, r.centerY] };
669
669
  }
670
670
  Yt(A, t) {
671
- const e = R(this.m) || [0, 0, this.m.canvas.width, this.m.canvas.height];
671
+ const e = b(this.m) || [0, 0, this.m.canvas.width, this.m.canvas.height];
672
672
  return { nx: A / e[2] * 2 - 1, ny: 1 - t / e[3] * 2 };
673
673
  }
674
- zt(A, t, e) {
674
+ Rt(A, t, e) {
675
675
  const s = this.Yt(t, e);
676
676
  A.rotationCenter = [s.nx, s.ny];
677
677
  }
678
- Mt(A, t, e, s, r, i, B) {
679
- const Q = R(this.m) || [0, 0, this.m.canvas.width, this.m.canvas.height], o = Q[2], h = Q[3];
680
- return { centerX: (A + e / 2) / o * 2 - 1, centerY: 1 - (t + s / 2) / h * 2, radiansX: -r * Math.PI / 180, radiansY: -i * Math.PI / 180, radiansZ: -B * Math.PI / 180, aspectRatio: o / h };
678
+ Mt(A, t, e, s, i, r, B) {
679
+ const o = b(this.m) || [0, 0, this.m.canvas.width, this.m.canvas.height], Q = o[2], g = o[3];
680
+ return { centerX: (A + e / 2) / Q * 2 - 1, centerY: 1 - (t + s / 2) / g * 2, radiansX: -i * Math.PI / 180, radiansY: -r * Math.PI / 180, radiansZ: -B * Math.PI / 180, aspectRatio: Q / g };
681
681
  }
682
682
  }
683
- const iA = { vertices: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]), vertexCount: 6, primitiveType: WebGL2RenderingContext.TRIANGLES, stride: 16, attributes: { position: { size: 2, offset: 0 }, texCoord: { size: 2, offset: 8 } } };
683
+ const rA = { vertices: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]), vertexCount: 6, primitiveType: WebGL2RenderingContext.TRIANGLES, stride: 16, attributes: { position: { size: 2, offset: 0 }, texCoord: { size: 2, offset: 8 } } };
684
684
  class BA extends T {
685
685
  constructor(A, t) {
686
- super(A, t, D.RECTANGLE, iA);
686
+ super(A, t, D.RECTANGLE, rA);
687
687
  }
688
688
  jA(A, t) {
689
689
  const e = this.$t(A.x, A.y, A.width, A.height, t);
690
- return this.xt.jA(e);
690
+ return this.yt.jA(e);
691
691
  }
692
692
  }
693
693
  const EA = { vertices: new Float32Array([0, -0.5, 0, 0, 1, -0.5, 1, 0, 0, 0.5, 0, 1, 0, 0.5, 0, 1, 1, -0.5, 1, 0, 1, 0.5, 1, 1]), vertexCount: 6, primitiveType: WebGL2RenderingContext.TRIANGLES, stride: 16, attributes: { position: { size: 2, offset: 0 }, texCoord: { size: 2, offset: 8 } } };
694
- class QA extends T {
694
+ class nA extends T {
695
695
  constructor(A, t) {
696
696
  super(A, t, D.LINE, EA);
697
697
  }
698
698
  jA(A, t) {
699
- const e = A.x2 - A.x1, s = A.y2 - A.y1, r = Math.hypot(e, s), i = Math.atan2(s, e), B = A.thickness || t.lineWeight || 1, Q = A.x1 + e / 2, o = A.y1 + s / 2, h = Q - r / 2, a = o, g = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: (t.rotationZ || 0) + 180 * i / Math.PI, lineWeight: B }, l = this.$t(h, a, r, B, g);
700
- return this.zt(l, Q, o), this.xt.jA(l);
699
+ const e = A.x2 - A.x1, s = A.y2 - A.y1, i = Math.hypot(e, s), r = Math.atan2(s, e), B = A.thickness || t.lineWeight || 1, o = A.x1 + e / 2, Q = A.y1 + s / 2, g = o - i / 2, a = Q, h = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: (t.rotationZ || 0) + 180 * r / Math.PI, lineWeight: B }, l = this.$t(g, a, i, B, h);
700
+ return this.Rt(l, o, Q), this.yt.jA(l);
701
701
  }
702
702
  }
703
- const nA = { vertices: function(E = 32) {
703
+ const oA = { vertices: function(E = 32) {
704
704
  const A = [], t = 2 * Math.PI / E;
705
705
  for (let e = 0; e < E; e++) {
706
- const s = e * t, r = (e + 1) % E * t, i = Math.cos(s), B = Math.sin(s), Q = 0.5 * (i + 1), o = 0.5 * (B + 1), h = Math.cos(r), a = Math.sin(r), g = 0.5 * (h + 1), l = 0.5 * (a + 1);
707
- A.push(0, 0, 0.5, 0.5, i, B, Q, o, h, a, g, l);
706
+ const s = e * t, i = (e + 1) % E * t, r = Math.cos(s), B = Math.sin(s), o = 0.5 * (r + 1), Q = 0.5 * (B + 1), g = Math.cos(i), a = Math.sin(i), h = 0.5 * (g + 1), l = 0.5 * (a + 1);
707
+ A.push(0, 0, 0.5, 0.5, r, B, o, Q, g, a, h, l);
708
708
  }
709
709
  return new Float32Array(A);
710
710
  }(32), vertexCount: 96, primitiveType: WebGL2RenderingContext.TRIANGLES, stride: 16, attributes: { position: { size: 2, offset: 0 }, texCoord: { size: 2, offset: 8 } } };
711
- class oA extends T {
711
+ class QA extends T {
712
712
  constructor(A, t) {
713
- super(A, t, D.ELLIPSE, nA);
713
+ super(A, t, D.ELLIPSE, oA);
714
714
  }
715
715
  jA(A, t) {
716
716
  const e = this.$t(A.x, A.y, A.width, A.height, t);
717
- return this.zt(e, A.x, A.y), this.xt.jA(e);
717
+ return this.Rt(e, A.x, A.y), this.yt.jA(e);
718
718
  }
719
719
  }
720
720
  let aA = { vertices: function(E) {
@@ -730,8 +730,8 @@ class gA extends T {
730
730
  super(A, t, D.ARC, aA);
731
731
  }
732
732
  jA(A, t) {
733
- const e = A.x - A.width / 2, s = A.y - A.height / 2, r = A.start * Math.PI / 180, i = A.stop * Math.PI / 180, B = this.$t(e, s, A.width, A.height, t);
734
- return this.zt(B, A.x, A.y), B.arcAngles = [r, i], this.xt.jA(B);
733
+ const e = A.x - A.width / 2, s = A.y - A.height / 2, i = A.start * Math.PI / 180, r = A.stop * Math.PI / 180, B = this.$t(e, s, A.width, A.height, t);
734
+ return this.Rt(B, A.x, A.y), B.arcAngles = [i, r], this.yt.jA(B);
735
735
  }
736
736
  }
737
737
  const hA = { vertices: new Float32Array([0, 0, 0, 0, 1, 0, 1, 0, 0.5, 1, 0.5, 1]), vertexCount: 3, primitiveType: WebGL2RenderingContext.TRIANGLES, stride: 16, attributes: { position: { size: 2, offset: 0 }, texCoord: { size: 2, offset: 8 } } };
@@ -740,13 +740,13 @@ class cA extends T {
740
740
  super(A, t, D.TRIANGLE, hA);
741
741
  }
742
742
  jA(A, t) {
743
- const e = Math.min(A.x1, A.x2, A.x3), s = Math.max(A.x1, A.x2, A.x3), r = Math.min(A.y1, A.y2, A.y3), i = s - e, B = Math.max(A.y1, A.y2, A.y3) - r, Q = this.$t(e, r, i, B, t), o = e + 0.5 * i, h = r + B * (1 / 3);
744
- return this.zt(Q, o, h), this.xt.jA(Q);
743
+ const e = Math.min(A.x1, A.x2, A.x3), s = Math.max(A.x1, A.x2, A.x3), i = Math.min(A.y1, A.y2, A.y3), r = s - e, B = Math.max(A.y1, A.y2, A.y3) - i, o = this.$t(e, i, r, B, t), Q = e + 0.5 * r, g = i + B * (1 / 3);
744
+ return this.Rt(o, Q, g), this.yt.jA(o);
745
745
  }
746
746
  }
747
- function k(E, A, t, e, s) {
748
- const r = 1 - E, i = r * r, B = E * E;
749
- return i * r * A + 3 * i * E * t + 3 * r * B * e + B * E * s;
747
+ function W(E, A, t, e, s) {
748
+ const i = 1 - E, r = i * i, B = E * E;
749
+ return r * i * A + 3 * r * E * t + 3 * i * B * e + B * E * s;
750
750
  }
751
751
  const lA = { vertices: function(E = 16) {
752
752
  const A = [];
@@ -761,102 +761,102 @@ class CA extends T {
761
761
  super(A, t, D.BEZIER_CURVE, lA);
762
762
  }
763
763
  jA(A, t) {
764
- const e = t.lineWeight || 1, s = k(0.5, A.x1, A.cp1x, A.cp2x, A.x2), r = k(0.5, A.y1, A.cp1y, A.cp2y, A.y2), i = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: t.rotationZ || 0, lineWeight: e }, B = this.$t(0, 0, 1, e, i);
765
- return this.zt(B, s, r), B.bezierStartPoint = [A.x1, A.y1], B.bezierControlPoint1 = [A.cp1x, A.cp1y], B.bezierControlPoint2 = [A.cp2x, A.cp2y], B.bezierEndPoint = [A.x2, A.y2], this.xt.jA(B);
764
+ const e = t.lineWeight || 1, s = W(0.5, A.x1, A.cp1x, A.cp2x, A.x2), i = W(0.5, A.y1, A.cp1y, A.cp2y, A.y2), r = { character: t.character, charColor: t.charColor, bgColor: t.bgColor, charRotation: t.charRotation, flipHorizontally: t.flipHorizontally, flipVertically: t.flipVertically, invert: t.invert, rotationX: t.rotationX || 0, rotationY: t.rotationY || 0, rotationZ: t.rotationZ || 0, lineWeight: e }, B = this.$t(0, 0, 1, e, r);
765
+ return this.Rt(B, s, i), B.bezierStartPoint = [A.x1, A.y1], B.bezierControlPoint1 = [A.cp1x, A.cp1y], B.bezierControlPoint2 = [A.cp2x, A.cp2y], B.bezierEndPoint = [A.x2, A.y2], this.yt.jA(B);
766
766
  }
767
767
  }
768
768
  class DA {
769
769
  constructor(A) {
770
770
  n(this, "m");
771
- n(this, "Rt", null);
772
- n(this, "St", null);
773
- n(this, "Tt", {});
771
+ n(this, "zt", null);
774
772
  n(this, "Ft", null);
773
+ n(this, "St", {});
774
+ n(this, "Tt", null);
775
775
  n(this, "Ot", /* @__PURE__ */ new Map());
776
- n(this, "Ut");
777
- n(this, "Lt");
778
776
  n(this, "kt");
779
- this.m = A, this.kt = new AA(), this.Ut = new eA(A), this.Lt = new sA(), this.Ft = A.createBuffer(), G(this.m, [0, 0, this.m.canvas.width, this.m.canvas.height]);
777
+ n(this, "Lt");
778
+ n(this, "Ut");
779
+ this.m = A, this.Ut = new AA(), this.kt = new eA(A), this.Lt = new sA(), this.Tt = A.createBuffer(), M(this.m, [0, 0, this.m.canvas.width, this.m.canvas.height]);
780
780
  }
781
- Ht(A) {
781
+ Wt(A) {
782
782
  let t = this.Ot.get(A);
783
783
  if (t) return t;
784
- const e = new rA(this.m);
785
- return t = (0, { [D.RECTANGLE]: () => new BA(this.m, e), [D.LINE]: () => new QA(this.m, e), [D.ELLIPSE]: () => new oA(this.m, e), [D.ARC]: () => new gA(this.m, e), [D.TRIANGLE]: () => new cA(this.m, e), [D.BEZIER_CURVE]: () => new CA(this.m, e) }[A])(), this.Ot.set(A, t), t;
784
+ const e = new iA(this.m);
785
+ return t = (0, { [D.RECTANGLE]: () => new BA(this.m, e), [D.LINE]: () => new nA(this.m, e), [D.ELLIPSE]: () => new QA(this.m, e), [D.ARC]: () => new gA(this.m, e), [D.TRIANGLE]: () => new cA(this.m, e), [D.BEZIER_CURVE]: () => new CA(this.m, e) }[A])(), this.Ot.set(A, t), t;
786
786
  }
787
- Wt(A) {
788
- this.Rt !== A && (this.Rt = A, A.AA());
787
+ Ht(A) {
788
+ this.zt !== A && (this.zt = A, A.AA());
789
789
  }
790
- Jt(A, t) {
791
- return new z(this.m, A, t);
790
+ Kt(A, t) {
791
+ return new L(this.m, A, t);
792
792
  }
793
- Vt(A) {
794
- this.St = A, A && (this.Tt = {});
793
+ Jt(A) {
794
+ this.Ft = A, A && (this.St = {});
795
795
  }
796
- Kt(A, t) {
797
- this.Tt[A] = t;
796
+ Vt(A, t) {
797
+ this.St[A] = t;
798
798
  }
799
799
  Zt(A) {
800
- Object.assign(this.Tt, A);
800
+ Object.assign(this.St, A);
801
801
  }
802
802
  jt(A) {
803
- return new z(this.m, L, A);
803
+ return new L(this.m, z, A);
804
804
  }
805
- Xt(A, t, e, s) {
805
+ Nt(A, t, e, s) {
806
806
  var C;
807
- const r = this.m, i = r.canvas.width, B = r.canvas.height, Q = A / i * 2 - 1, o = (A + e) / i * 2 - 1, h = 1 - t / B * 2, a = 1 - (t + s) / B * 2, g = new Float32Array([Q, a, o, a, Q, h, o, a, o, h, Q, h]);
808
- r.bindBuffer(r.ARRAY_BUFFER, this.Ft), r.bufferData(r.ARRAY_BUFFER, g, r.DYNAMIC_DRAW);
809
- const l = ((C = this.Rt) == null ? void 0 : C.QA) || r.getParameter(r.CURRENT_PROGRAM), c = l ? r.getAttribLocation(l, "a_position") : -1;
810
- c !== -1 && (r.enableVertexAttribArray(c), r.vertexAttribPointer(c, 2, r.FLOAT, !1, 8, 0)), r.drawArrays(r.TRIANGLES, 0, 6), c !== -1 && r.disableVertexAttribArray(c);
807
+ const i = this.m, r = i.canvas.width, B = i.canvas.height, o = A / r * 2 - 1, Q = (A + e) / r * 2 - 1, g = 1 - t / B * 2, a = 1 - (t + s) / B * 2, h = new Float32Array([o, a, Q, a, o, g, Q, a, Q, g, o, g]);
808
+ i.bindBuffer(i.ARRAY_BUFFER, this.Tt), i.bufferData(i.ARRAY_BUFFER, h, i.DYNAMIC_DRAW);
809
+ const l = ((C = this.zt) == null ? void 0 : C.rA) || i.getParameter(i.CURRENT_PROGRAM), c = l ? i.getAttribLocation(l, "a_position") : -1;
810
+ c !== -1 && (i.enableVertexAttribArray(c), i.vertexAttribPointer(c, 2, i.FLOAT, !1, 8, 0)), i.drawArrays(i.TRIANGLES, 0, 6), c !== -1 && i.disableVertexAttribArray(c);
811
811
  }
812
- Nt(A, t, e, s) {
813
- this.St ? (this.Lt.st(A, t, e, s, this.St, { ...this.Tt }, this.kt), this.St = null, this.Tt = {}) : this.Lt.Bt(A, t, e, s, this.kt);
812
+ Xt(A, t, e, s) {
813
+ this.Ft ? (this.Lt.it(A, t, e, s, this.Ft, { ...this.St }, this.Ut), this.Ft = null, this.St = {}) : this.Lt.st(A, t, e, s, this.Ut);
814
814
  }
815
815
  qt(A, t, e, s) {
816
- this.Lt.it(A, t, e, s, this.kt.lineWeight, this.kt);
816
+ this.Lt.Bt(A, t, e, s, this.Ut.lineWeight, this.Ut);
817
817
  }
818
818
  Ae(A, t, e, s) {
819
- this.Lt.Qt(A, t, e, s, this.kt);
819
+ this.Lt.rt(A, t, e, s, this.Ut);
820
820
  }
821
- te(A, t, e, s, r, i) {
822
- this.Lt.Et(A, t, e, s, r, i, this.kt);
821
+ te(A, t, e, s, i, r) {
822
+ this.Lt.Et(A, t, e, s, i, r, this.Ut);
823
823
  }
824
- ee(A, t, e, s, r, i, B, Q) {
825
- const o = this.kt.lineWeight;
826
- this.Lt.nt(A, t, e, s, r, i, B, Q, o, this.kt);
824
+ ee(A, t, e, s, i, r, B, o) {
825
+ const Q = this.Ut.lineWeight;
826
+ this.Lt.nt(A, t, e, s, i, r, B, o, Q, this.Ut);
827
827
  }
828
- Be(A, t, e = 1, s = {}) {
828
+ se(A, t, e = 1, s = {}) {
829
829
  return new U(this.m, A, t, e, s);
830
830
  }
831
- se(A, t, e, s, r, i) {
832
- this.Lt.rt(A, t, e, s, r, i, this.kt);
831
+ ie(A, t, e, s, i, r) {
832
+ this.Lt.Qt(A, t, e, s, i, r, this.Ut);
833
833
  }
834
- ie(A, t = A, e = A, s = 255) {
835
- this.state.zA(A, t, e, s), this.ot(A / 255, t / 255, e / 255, s / 255);
834
+ Be(A, t = A, e = A, s = 255) {
835
+ this.state.RA(A, t, e, s), this.ot(A / 255, t / 255, e / 255, s / 255);
836
836
  }
837
837
  ot(A = 0, t = 0, e = 0, s = 0) {
838
838
  this.m.clearColor(A, t, e, s), this.m.clear(this.m.COLOR_BUFFER_BIT);
839
839
  }
840
- Qe() {
841
- this.m.viewport(0, 0, this.m.canvas.width, this.m.canvas.height), G(this.m, [0, 0, this.m.canvas.width, this.m.canvas.height]);
840
+ re() {
841
+ this.m.viewport(0, 0, this.m.canvas.width, this.m.canvas.height), M(this.m, [0, 0, this.m.canvas.width, this.m.canvas.height]);
842
842
  }
843
843
  get context() {
844
844
  return this.m;
845
845
  }
846
846
  get state() {
847
- return this.kt;
847
+ return this.Ut;
848
848
  }
849
- re(A) {
850
- const t = A, e = R(this.m) ?? this.m.getParameter(this.m.VIEWPORT), s = { shader: t, gl: this.m, viewport: e };
851
- this.Wt(t);
852
- const r = /* @__PURE__ */ new Set();
853
- for (const i of this.Lt) i.type === D.CUSTOM ? r.add(D.RECTANGLE) : r.add(i.type);
854
- for (const i of r) i !== D.CUSTOM && this.Ht(i);
855
- this.Ut.kA(s, this.Lt, this.Ot), this.Lt.ot();
849
+ Qe(A) {
850
+ const t = A, e = b(this.m) ?? this.m.getParameter(this.m.VIEWPORT), s = { shader: t, gl: this.m, viewport: e };
851
+ this.Ht(t);
852
+ const i = /* @__PURE__ */ new Set();
853
+ for (const r of this.Lt) r.type === D.CUSTOM ? i.add(D.RECTANGLE) : i.add(r.type);
854
+ for (const r of i) r !== D.CUSTOM && this.Wt(r);
855
+ this.kt.UA(s, this.Lt, this.Ot), this.Lt.ot();
856
856
  }
857
- W() {
858
- this.m.deleteBuffer(this.Ft), this.Lt.ot();
859
- for (const A of this.Ot.values()) A.W();
857
+ H() {
858
+ this.m.deleteBuffer(this.Tt), this.Lt.ot();
859
+ for (const A of this.Ot.values()) A.H();
860
860
  }
861
861
  }
862
862
  const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int16[0]), readUshort: (E, A) => E[A] << 8 | E[A + 1], readUshorts(E, A, t) {
@@ -876,196 +876,196 @@ const f = { readShort: (E, A) => (f.t.uint16[0] = E[A] << 8 | E[A + 1], f.t.int1
876
876
  })() }, uA = { parseTab(E, A, t) {
877
877
  const e = { tables: [], ids: {}, off: A };
878
878
  E = new Uint8Array(E.buffer, A, t), A = 0;
879
- const s = f, r = s.readUshort, i = r(E, A += 2);
879
+ const s = f, i = s.readUshort, r = i(E, A += 2);
880
880
  A += 2;
881
881
  const B = [];
882
- for (let Q = 0; Q < i; Q++) {
883
- const o = r(E, A), h = r(E, A += 2);
882
+ for (let o = 0; o < r; o++) {
883
+ const Q = i(E, A), g = i(E, A += 2);
884
884
  A += 2;
885
885
  const a = s.readUint(E, A);
886
886
  A += 4;
887
- const g = `p${o}e${h}`;
887
+ const h = `p${Q}e${g}`;
888
888
  let l = B.indexOf(a);
889
889
  if (l === -1) {
890
890
  let c;
891
891
  l = e.tables.length, B.push(a);
892
- const C = r(E, a);
892
+ const C = i(E, a);
893
893
  c = C === 4 ? this.parse4(E, a) : C === 12 ? this.parse12(E, a) : { format: C }, e.tables.push(c);
894
894
  }
895
- e.ids[g] != null && console.warn("Multiple tables for one platform+encoding: " + g), e.ids[g] = l;
895
+ e.ids[h] != null && console.warn("Multiple tables for one platform+encoding: " + h), e.ids[h] = l;
896
896
  }
897
897
  return e;
898
898
  }, parse4(E, A) {
899
- const t = f, e = t.readUshort, s = t.readUshorts, r = A, i = e(E, A += 2);
899
+ const t = f, e = t.readUshort, s = t.readUshorts, i = A, r = e(E, A += 2);
900
900
  A += 2;
901
- const B = e(E, A += 2) >>> 1, Q = { format: 4, searchRange: e(E, A += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
902
- A += 2, Q.entrySelector = e(E, A), A += 2, Q.rangeShift = e(E, A), A += 2, Q.endCount = s(E, A, B), A += 2 * B, A += 2, Q.startCount = s(E, A, B), A += 2 * B;
903
- for (let o = 0; o < B; o++) Q.idDelta.push(t.readShort(E, A)), A += 2;
904
- return Q.idRangeOffset = s(E, A, B), A += 2 * B, Q.glyphIdArray = s(E, A, r + i - A >> 1), Q;
901
+ const B = e(E, A += 2) >>> 1, o = { format: 4, searchRange: e(E, A += 2), entrySelector: 0, rangeShift: 0, endCount: [], startCount: [], idDelta: [], idRangeOffset: [], glyphIdArray: [] };
902
+ A += 2, o.entrySelector = e(E, A), A += 2, o.rangeShift = e(E, A), A += 2, o.endCount = s(E, A, B), A += 2 * B, A += 2, o.startCount = s(E, A, B), A += 2 * B;
903
+ for (let Q = 0; Q < B; Q++) o.idDelta.push(t.readShort(E, A)), A += 2;
904
+ return o.idRangeOffset = s(E, A, B), A += 2 * B, o.glyphIdArray = s(E, A, i + r - A >> 1), o;
905
905
  }, parse12(E, A) {
906
906
  const t = f.readUint;
907
907
  t(E, A += 4), t(E, A += 4);
908
908
  const e = t(E, A += 4);
909
909
  A += 4;
910
910
  const s = new Uint32Array(3 * e);
911
- for (let r = 0; r < 3 * e; r += 3) s[r] = t(E, A + (r << 2)), s[r + 1] = t(E, A + (r << 2) + 4), s[r + 2] = t(E, A + (r << 2) + 8);
911
+ for (let i = 0; i < 3 * e; i += 3) s[i] = t(E, A + (i << 2)), s[i + 1] = t(E, A + (i << 2) + 4), s[i + 2] = t(E, A + (i << 2) + 8);
912
912
  return { format: 12, groups: s };
913
913
  } }, PA = { parseTab(E, A, t) {
914
914
  const e = f;
915
915
  A += 18;
916
916
  const s = e.readUshort(E, A);
917
917
  A += 2, A += 16;
918
- const r = e.readShort(E, A);
919
- A += 2;
920
918
  const i = e.readShort(E, A);
921
919
  A += 2;
920
+ const r = e.readShort(E, A);
921
+ A += 2;
922
922
  const B = e.readShort(E, A);
923
923
  A += 2;
924
- const Q = e.readShort(E, A);
925
- return A += 2, A += 6, { unitsPerEm: s, xMin: r, yMin: i, xMax: B, yMax: Q, indexToLocFormat: e.readShort(E, A) };
924
+ const o = e.readShort(E, A);
925
+ return A += 2, A += 6, { unitsPerEm: s, xMin: i, yMin: r, xMax: B, yMax: o, indexToLocFormat: e.readShort(E, A) };
926
926
  } }, IA = { parseTab(E, A, t) {
927
927
  const e = f;
928
928
  A += 4;
929
- const s = ["ascender", "descender", "lineGap", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "res0", "res1", "res2", "res3", "metricDataFormat", "numberOfHMetrics"], r = {};
930
- for (let i = 0; i < s.length; i++) {
931
- const B = s[i], Q = B === "advanceWidthMax" || B === "numberOfHMetrics" ? e.readUshort : e.readShort;
932
- r[B] = Q(E, A + 2 * i);
929
+ const s = ["ascender", "descender", "lineGap", "advanceWidthMax", "minLeftSideBearing", "minRightSideBearing", "xMaxExtent", "caretSlopeRise", "caretSlopeRun", "caretOffset", "res0", "res1", "res2", "res3", "metricDataFormat", "numberOfHMetrics"], i = {};
930
+ for (let r = 0; r < s.length; r++) {
931
+ const B = s[r], o = B === "advanceWidthMax" || B === "numberOfHMetrics" ? e.readUshort : e.readShort;
932
+ i[B] = o(E, A + 2 * r);
933
933
  }
934
- return r;
934
+ return i;
935
935
  } }, fA = { parseTab(E, A, t, e) {
936
- const s = f, r = [], i = [], B = e.maxp.numGlyphs, Q = e.hhea.numberOfHMetrics;
937
- let o = 0, h = 0, a = 0;
938
- for (; a < Q; ) o = s.readUshort(E, A + (a << 2)), h = s.readShort(E, A + (a << 2) + 2), r.push(o), i.push(h), a++;
939
- for (; a < B; ) r.push(o), i.push(h), a++;
940
- return { aWidth: r, lsBearing: i };
936
+ const s = f, i = [], r = [], B = e.maxp.numGlyphs, o = e.hhea.numberOfHMetrics;
937
+ let Q = 0, g = 0, a = 0;
938
+ for (; a < o; ) Q = s.readUshort(E, A + (a << 2)), g = s.readShort(E, A + (a << 2) + 2), i.push(Q), r.push(g), a++;
939
+ for (; a < B; ) i.push(Q), r.push(g), a++;
940
+ return { aWidth: i, lsBearing: r };
941
941
  } }, N = { cmap: uA, head: PA, hhea: IA, maxp: { parseTab(E, A, t) {
942
942
  const e = f;
943
943
  return e.readUint(E, A), A += 4, { numGlyphs: e.readUshort(E, A) };
944
944
  } }, hmtx: fA, loca: { parseTab(E, A, t, e) {
945
- const s = f, r = [], i = e.head.indexToLocFormat, B = e.maxp.numGlyphs + 1;
946
- if (i === 0) for (let Q = 0; Q < B; Q++) r.push(s.readUshort(E, A + (Q << 1)) << 1);
947
- else if (i === 1) for (let Q = 0; Q < B; Q++) r.push(s.readUint(E, A + (Q << 2)));
948
- return r;
945
+ const s = f, i = [], r = e.head.indexToLocFormat, B = e.maxp.numGlyphs + 1;
946
+ if (r === 0) for (let o = 0; o < B; o++) i.push(s.readUshort(E, A + (o << 1)) << 1);
947
+ else if (r === 1) for (let o = 0; o < B; o++) i.push(s.readUint(E, A + (o << 2)));
948
+ return i;
949
949
  } }, glyf: { parseTab(E, A, t, e) {
950
- const s = [], r = e.maxp.numGlyphs;
951
- for (let i = 0; i < r; i++) s.push(null);
950
+ const s = [], i = e.maxp.numGlyphs;
951
+ for (let r = 0; r < i; r++) s.push(null);
952
952
  return s;
953
953
  }, Ee(E, A) {
954
954
  const t = f, e = E.ne, s = E.loca;
955
955
  if (s[A] === s[A + 1]) return null;
956
- const r = y.findTable(e, "glyf", E.oe);
957
- if (!r) return null;
958
- let i = r[0] + s[A];
956
+ const i = y.findTable(e, "glyf", E.oe);
957
+ if (!i) return null;
958
+ let r = i[0] + s[A];
959
959
  const B = {};
960
- if (B.noc = t.readShort(e, i), i += 2, B.xMin = t.readShort(e, i), i += 2, B.yMin = t.readShort(e, i), i += 2, B.xMax = t.readShort(e, i), i += 2, B.yMax = t.readShort(e, i), i += 2, B.xMin >= B.xMax || B.yMin >= B.yMax) return null;
960
+ if (B.noc = t.readShort(e, r), r += 2, B.xMin = t.readShort(e, r), r += 2, B.yMin = t.readShort(e, r), r += 2, B.xMax = t.readShort(e, r), r += 2, B.yMax = t.readShort(e, r), r += 2, B.xMin >= B.xMax || B.yMin >= B.yMax) return null;
961
961
  if (B.noc > 0) {
962
962
  B.endPts = [];
963
- for (let g = 0; g < B.noc; g++) B.endPts.push(t.readUshort(e, i)), i += 2;
964
- const Q = t.readUshort(e, i);
965
- if (i += 2, e.length - i < Q) return null;
966
- i += Q;
967
- const o = B.endPts[B.noc - 1] + 1;
963
+ for (let h = 0; h < B.noc; h++) B.endPts.push(t.readUshort(e, r)), r += 2;
964
+ const o = t.readUshort(e, r);
965
+ if (r += 2, e.length - r < o) return null;
966
+ r += o;
967
+ const Q = B.endPts[B.noc - 1] + 1;
968
968
  B.flags = [];
969
- for (let g = 0; g < o; g++) {
970
- const l = e[i];
971
- if (i++, B.flags.push(l), 8 & l) {
972
- const c = e[i];
973
- i++;
974
- for (let C = 0; C < c; C++) B.flags.push(l), g++;
969
+ for (let h = 0; h < Q; h++) {
970
+ const l = e[r];
971
+ if (r++, B.flags.push(l), 8 & l) {
972
+ const c = e[r];
973
+ r++;
974
+ for (let C = 0; C < c; C++) B.flags.push(l), h++;
975
975
  }
976
976
  }
977
977
  B.xs = [];
978
- for (let g = 0; g < o; g++) {
979
- const l = B.flags[g], c = !!(16 & l);
980
- 2 & l ? (B.xs.push(c ? e[i] : -e[i]), i++) : c ? B.xs.push(0) : (B.xs.push(t.readShort(e, i)), i += 2);
978
+ for (let h = 0; h < Q; h++) {
979
+ const l = B.flags[h], c = !!(16 & l);
980
+ 2 & l ? (B.xs.push(c ? e[r] : -e[r]), r++) : c ? B.xs.push(0) : (B.xs.push(t.readShort(e, r)), r += 2);
981
981
  }
982
982
  B.ys = [];
983
- for (let g = 0; g < o; g++) {
984
- const l = B.flags[g], c = !!(32 & l);
985
- 4 & l ? (B.ys.push(c ? e[i] : -e[i]), i++) : c ? B.ys.push(0) : (B.ys.push(t.readShort(e, i)), i += 2);
983
+ for (let h = 0; h < Q; h++) {
984
+ const l = B.flags[h], c = !!(32 & l);
985
+ 4 & l ? (B.ys.push(c ? e[r] : -e[r]), r++) : c ? B.ys.push(0) : (B.ys.push(t.readShort(e, r)), r += 2);
986
986
  }
987
- let h = 0, a = 0;
988
- for (let g = 0; g < o; g++) h += B.xs[g], a += B.ys[g], B.xs[g] = h, B.ys[g] = a;
987
+ let g = 0, a = 0;
988
+ for (let h = 0; h < Q; h++) g += B.xs[h], a += B.ys[h], B.xs[h] = g, B.ys[h] = a;
989
989
  } else B.parts = [], B.endPts = [], B.flags = [], B.xs = [], B.ys = [];
990
990
  return B;
991
991
  } } }, y = { parse: (E) => [((A, t, e, s) => {
992
- const r = N, i = { ne: A, ge: t, oe: e };
993
- for (const B in r) {
994
- const Q = B, o = y.findTable(A, Q, e);
995
- if (o) {
996
- const [h, a] = o;
997
- let g = s[h];
998
- g == null && (g = r[Q].parseTab(A, h, a, i), s[h] = g), i[Q] = g;
992
+ const i = N, r = { ne: A, ge: t, oe: e };
993
+ for (const B in i) {
994
+ const o = B, Q = y.findTable(A, o, e);
995
+ if (Q) {
996
+ const [g, a] = Q;
997
+ let h = s[g];
998
+ h == null && (h = i[o].parseTab(A, g, a, r), s[g] = h), r[o] = h;
999
999
  }
1000
1000
  }
1001
- return i;
1001
+ return r;
1002
1002
  })(new Uint8Array(E), 0, 0, {})], findTable(E, A, t) {
1003
1003
  const e = f, s = e.readUshort(E, t + 4);
1004
- let r = t + 12;
1005
- for (let i = 0; i < s; i++) {
1006
- const B = e.readASCII(E, r, 4);
1007
- e.readUint(E, r + 4);
1008
- const Q = e.readUint(E, r + 8), o = e.readUint(E, r + 12);
1009
- if (B === A) return [Q, o];
1010
- r += 16;
1004
+ let i = t + 12;
1005
+ for (let r = 0; r < s; r++) {
1006
+ const B = e.readASCII(E, i, 4);
1007
+ e.readUint(E, i + 4);
1008
+ const o = e.readUint(E, i + 8), Q = e.readUint(E, i + 12);
1009
+ if (B === A) return [o, Q];
1010
+ i += 16;
1011
1011
  }
1012
1012
  return null;
1013
1013
  }, T: N, B: f };
1014
- class F {
1014
+ class S {
1015
1015
  constructor() {
1016
1016
  n(this, "ae", /* @__PURE__ */ new Map());
1017
1017
  n(this, "he", /* @__PURE__ */ new Map());
1018
1018
  }
1019
1019
  ce(A, t) {
1020
- const e = `${this.Ce(A)}_${t}`;
1020
+ const e = `${this.le(A)}_${t}`;
1021
1021
  if (this.ae.has(e)) return this.ae.get(e);
1022
1022
  const s = A.cmap;
1023
1023
  if (!s || !s.tables) return this.ae.set(e, 0), 0;
1024
- let r = 0;
1025
- for (const i of s.tables) if (i.format === 4 ? r = this.De(t, i) : i.format === 12 && (r = this.le(t, i)), r > 0) break;
1026
- return this.ae.set(e, r), r;
1024
+ let i = 0;
1025
+ for (const r of s.tables) if (r.format === 4 ? i = this.Ce(t, r) : r.format === 12 && (i = this.De(t, r)), i > 0) break;
1026
+ return this.ae.set(e, i), i;
1027
1027
  }
1028
- Pe(A, t) {
1028
+ ue(A, t) {
1029
1029
  const e = t.codePointAt(0);
1030
1030
  return e === void 0 ? 0 : this.ce(A, e);
1031
1031
  }
1032
- ue(A, t) {
1032
+ Pe(A, t) {
1033
1033
  const e = A.hmtx;
1034
1034
  return e && e.aWidth && e.aWidth.length !== 0 ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
1035
1035
  }
1036
1036
  Ie(A, t) {
1037
- const e = t / A.head.unitsPerEm, s = A.hhea.ascender * e, r = A.hhea.descender * e, i = A.hhea.lineGap * e;
1038
- return { ascender: s, descender: r, lineGap: i, lineHeight: s - r + i, unitsPerEm: A.head.unitsPerEm, scale: e };
1037
+ const e = t / A.head.unitsPerEm, s = A.hhea.ascender * e, i = A.hhea.descender * e, r = A.hhea.lineGap * e;
1038
+ return { ascender: s, descender: i, lineGap: r, lineHeight: s - i + r, unitsPerEm: A.head.unitsPerEm, scale: e };
1039
1039
  }
1040
1040
  we() {
1041
1041
  this.ae.clear(), this.he.clear();
1042
1042
  }
1043
- Ce(A) {
1043
+ le(A) {
1044
1044
  return `${A.oe}_${A.ne.length}`;
1045
1045
  }
1046
- De(A, t) {
1046
+ Ce(A, t) {
1047
1047
  const e = t.endCount.length;
1048
1048
  let s = -1;
1049
- for (let r = 0; r < e; r++) if (A <= t.endCount[r]) {
1050
- s = r;
1049
+ for (let i = 0; i < e; i++) if (A <= t.endCount[i]) {
1050
+ s = i;
1051
1051
  break;
1052
1052
  }
1053
1053
  if (s === -1 || A < t.startCount[s]) return 0;
1054
1054
  if (t.idRangeOffset[s] === 0) return A + t.idDelta[s] & 65535;
1055
1055
  {
1056
- const r = t.idRangeOffset[s] / 2 + (A - t.startCount[s]) - (e - s);
1057
- if (r >= 0 && r < t.glyphIdArray.length) {
1058
- const i = t.glyphIdArray[r];
1059
- return i === 0 ? 0 : i + t.idDelta[s] & 65535;
1056
+ const i = t.idRangeOffset[s] / 2 + (A - t.startCount[s]) - (e - s);
1057
+ if (i >= 0 && i < t.glyphIdArray.length) {
1058
+ const r = t.glyphIdArray[i];
1059
+ return r === 0 ? 0 : r + t.idDelta[s] & 65535;
1060
1060
  }
1061
1061
  }
1062
1062
  return 0;
1063
1063
  }
1064
- le(A, t) {
1064
+ De(A, t) {
1065
1065
  const e = t.groups.length / 3;
1066
1066
  for (let s = 0; s < e; s++) {
1067
- const r = t.groups[3 * s], i = t.groups[3 * s + 1], B = t.groups[3 * s + 2];
1068
- if (A >= r && A <= i) return B + (A - r);
1067
+ const i = t.groups[3 * s], r = t.groups[3 * s + 1], B = t.groups[3 * s + 2];
1068
+ if (A >= i && A <= r) return B + (A - i);
1069
1069
  }
1070
1070
  return 0;
1071
1071
  }
@@ -1080,36 +1080,36 @@ class dA {
1080
1080
  const t = [];
1081
1081
  return (e = A.cmap) != null && e.tables ? (A.cmap.tables.forEach((s) => {
1082
1082
  if (s.format === 4) {
1083
- const r = this.pe(s);
1084
- t.push(...r);
1083
+ const i = this.pe(s);
1084
+ t.push(...i);
1085
1085
  } else if (s.format === 12) {
1086
- const r = this._e(s);
1087
- t.push(...r);
1086
+ const i = this._e(s);
1087
+ t.push(...i);
1088
1088
  }
1089
1089
  }), [...new Set(t)]) : [];
1090
1090
  }
1091
1091
  me(A, t) {
1092
- return this.fe.Pe(A, t) > 0;
1092
+ return this.fe.ue(A, t) > 0;
1093
1093
  }
1094
1094
  ve(A, t) {
1095
1095
  for (const e of t) if (!this.me(A, e)) return !1;
1096
1096
  return !0;
1097
1097
  }
1098
- xe(A, t) {
1098
+ ye(A, t) {
1099
1099
  return t.filter((e) => this.me(A, e));
1100
1100
  }
1101
- ye(A) {
1101
+ xe(A) {
1102
1102
  return A.filter((t) => this.be(t));
1103
1103
  }
1104
1104
  pe(A) {
1105
1105
  const t = [];
1106
1106
  if (!(A.startCount && A.endCount && A.idRangeOffset && A.idDelta)) return t;
1107
1107
  for (let e = 0; e < A.startCount.length; e++) {
1108
- const s = A.startCount[e], r = A.endCount[e];
1109
- if (s !== 65535 || r !== 65535) {
1110
- for (let i = s; i <= r; i++)
1111
- if (this.Ge(A, i, e) > 0) try {
1112
- const B = String.fromCodePoint(i);
1108
+ const s = A.startCount[e], i = A.endCount[e];
1109
+ if (s !== 65535 || i !== 65535) {
1110
+ for (let r = s; r <= i; r++)
1111
+ if (this.Ge(A, r, e) > 0) try {
1112
+ const B = String.fromCodePoint(r);
1113
1113
  t.push(B);
1114
1114
  } catch {
1115
1115
  }
@@ -1121,11 +1121,11 @@ class dA {
1121
1121
  const t = [];
1122
1122
  if (!A.groups) return t;
1123
1123
  for (let e = 0; e < A.groups.length; e += 3) {
1124
- const s = A.groups[e], r = A.groups[e + 1], i = A.groups[e + 2];
1125
- for (let B = s; B <= r; B++)
1126
- if (i + (B - s) > 0) try {
1127
- const Q = String.fromCodePoint(B);
1128
- t.push(Q);
1124
+ const s = A.groups[e], i = A.groups[e + 1], r = A.groups[e + 2];
1125
+ for (let B = s; B <= i; B++)
1126
+ if (r + (B - s) > 0) try {
1127
+ const o = String.fromCodePoint(B);
1128
+ t.push(o);
1129
1129
  } catch {
1130
1130
  }
1131
1131
  }
@@ -1136,8 +1136,8 @@ class dA {
1136
1136
  {
1137
1137
  const s = A.idRangeOffset[e] / 2 + (t - A.startCount[e]) - (A.startCount.length - e);
1138
1138
  if (s >= 0 && A.glyphIdArray && s < A.glyphIdArray.length) {
1139
- const r = A.glyphIdArray[s];
1140
- if (r !== 0) return r + A.idDelta[e] & 65535;
1139
+ const i = A.glyphIdArray[s];
1140
+ if (i !== 0) return i + A.idDelta[e] & 65535;
1141
1141
  }
1142
1142
  }
1143
1143
  return 0;
@@ -1150,14 +1150,14 @@ class dA {
1150
1150
  class wA {
1151
1151
  constructor() {
1152
1152
  n(this, "$e");
1153
- const A = new F();
1153
+ const A = new S();
1154
1154
  this.$e = new dA(A);
1155
1155
  }
1156
1156
  extractCharacters(A) {
1157
1157
  return this.$e.de(A);
1158
1158
  }
1159
1159
  filterProblematicCharacters(A) {
1160
- return this.$e.ye(A);
1160
+ return this.$e.xe(A);
1161
1161
  }
1162
1162
  characterExists(A, t) {
1163
1163
  return this.$e.me(A, t);
@@ -1170,35 +1170,35 @@ class mA {
1170
1170
  constructor(A) {
1171
1171
  n(this, "Me");
1172
1172
  n(this, "Ye");
1173
- n(this, "ze");
1174
1173
  n(this, "Re");
1175
- this.ze = A, this.Re = new F(), this.Me = document.createElement("canvas"), this.Ye = this.Me.getContext("2d", { willReadFrequently: !0, alpha: !1 });
1174
+ n(this, "ze");
1175
+ this.Re = A, this.ze = new S(), this.Me = document.createElement("canvas"), this.Ye = this.Me.getContext("2d", { willReadFrequently: !0, alpha: !1 });
1176
1176
  }
1177
1177
  createTextureAtlas(A, t, e, s) {
1178
- const r = A.length, i = Math.ceil(Math.sqrt(r)), B = Math.ceil(r / i), Q = t.width * i, o = t.height * B, h = typeof s == "object" ? s : null;
1179
- this.Se(Q, o), this.Te(A, t, i, e, h);
1180
- const a = this.ze.Be(Q, o, 1, { filter: "nearest" });
1181
- return a.F(this.Me), { framebuffer: a, columns: i, rows: B };
1178
+ const i = A.length, r = Math.ceil(Math.sqrt(i)), B = Math.ceil(i / r), o = t.width * r, Q = t.height * B, g = typeof s == "object" ? s : null;
1179
+ this.Fe(o, Q), this.Se(A, t, r, e, g);
1180
+ const a = this.Re.se(o, Q, 1, { filter: "nearest" });
1181
+ return a.S(this.Me), { framebuffer: a, columns: r, rows: B };
1182
1182
  }
1183
- Se(A, t) {
1183
+ Fe(A, t) {
1184
1184
  this.Me.width = A, this.Me.height = t, this.Me.style.width = A + "px", this.Me.style.height = A + "px", this.Ye.imageSmoothingEnabled = !1, this.Me.style.imageRendering = "pixelated", this.Ye.fillStyle = "black", this.Ye.fillRect(0, 0, A, t), this.Ye.textBaseline = "top", this.Ye.textAlign = "left", this.Ye.fillStyle = "white";
1185
1185
  }
1186
- Te(A, t, e, s, r) {
1187
- const i = s / r.head.unitsPerEm;
1186
+ Se(A, t, e, s, i) {
1187
+ const r = s / i.head.unitsPerEm;
1188
1188
  for (let B = 0; B < A.length; B++) {
1189
- const Q = B % e, o = Math.floor(B / e), h = A[B].character, a = this.Fe(r, h);
1189
+ const o = B % e, Q = Math.floor(B / e), g = A[B].character, a = this.Te(i, g);
1190
1190
  if (!a) continue;
1191
- const g = h.codePointAt(0) || 0, l = this.Re.ce(r, g), c = this.Oe(r, l) * i, C = Q * t.width, d = o * t.height, I = C + 0.5 * t.width, w = d + 0.5 * t.height, p = Math.round(I - 0.5 * t.width), u = Math.round(w - 0.5 * s), M = p + 0.5 * (t.width - c), j = u + r.hhea.ascender * i;
1192
- this.Ue(a, M, j, i);
1191
+ const h = g.codePointAt(0) || 0, l = this.ze.ce(i, h), c = this.Oe(i, l) * r, C = o * t.width, d = Q * t.height, I = C + 0.5 * t.width, w = d + 0.5 * t.height, p = Math.round(I - 0.5 * t.width), u = Math.round(w - 0.5 * s), _ = p + 0.5 * (t.width - c), j = u + i.hhea.ascender * r;
1192
+ this.ke(a, _, j, r);
1193
1193
  }
1194
1194
  }
1195
- Fe(A, t) {
1196
- const e = t.codePointAt(0) || 0, s = this.Re.ce(A, e);
1195
+ Te(A, t) {
1196
+ const e = t.codePointAt(0) || 0, s = this.ze.ce(A, e);
1197
1197
  if (s === 0) return null;
1198
1198
  if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
1199
1199
  if (y && y.T && y.T.glyf) {
1200
- const r = y.T.glyf.Ee(A, s);
1201
- return A.glyf && r && (A.glyf[s] = r), r;
1200
+ const i = y.T.glyf.Ee(A, s);
1201
+ return A.glyf && i && (A.glyf[s] = i), i;
1202
1202
  }
1203
1203
  return null;
1204
1204
  }
@@ -1206,37 +1206,37 @@ class mA {
1206
1206
  const e = A.hmtx;
1207
1207
  return e && e.aWidth ? t < e.aWidth.length ? e.aWidth[t] : e.aWidth[e.aWidth.length - 1] : 0;
1208
1208
  }
1209
- Ue(A, t, e, s) {
1209
+ ke(A, t, e, s) {
1210
1210
  if (!A || !A.xs || A.noc === 0) return;
1211
- const { xs: r, ys: i, endPts: B, flags: Q } = A;
1212
- if (!(r && i && B && Q)) return;
1211
+ const { xs: i, ys: r, endPts: B, flags: o } = A;
1212
+ if (!(i && r && B && o)) return;
1213
1213
  this.Ye.beginPath();
1214
- let o = 0;
1215
- for (let h = 0; h < B.length; h++) {
1216
- const a = B[h];
1217
- if (!(a < o)) {
1218
- if (a >= o) {
1219
- const g = t + r[o] * s, l = e - i[o] * s;
1220
- this.Ye.moveTo(g, l);
1221
- let c = o + 1;
1214
+ let Q = 0;
1215
+ for (let g = 0; g < B.length; g++) {
1216
+ const a = B[g];
1217
+ if (!(a < Q)) {
1218
+ if (a >= Q) {
1219
+ const h = t + i[Q] * s, l = e - r[Q] * s;
1220
+ this.Ye.moveTo(h, l);
1221
+ let c = Q + 1;
1222
1222
  for (; c <= a; )
1223
- if (1 & Q[c]) {
1224
- const C = t + r[c] * s, d = e - i[c] * s;
1223
+ if (1 & o[c]) {
1224
+ const C = t + i[c] * s, d = e - r[c] * s;
1225
1225
  this.Ye.lineTo(C, d), c++;
1226
1226
  } else {
1227
- const C = t + r[c] * s, d = e - i[c] * s;
1228
- let I = c + 1 > a ? o : c + 1;
1229
- if (1 & Q[I]) {
1230
- const w = t + r[I] * s, p = e - i[I] * s;
1227
+ const C = t + i[c] * s, d = e - r[c] * s;
1228
+ let I = c + 1 > a ? Q : c + 1;
1229
+ if (1 & o[I]) {
1230
+ const w = t + i[I] * s, p = e - r[I] * s;
1231
1231
  this.Ye.quadraticCurveTo(C, d, w, p), c = I + 1;
1232
1232
  } else {
1233
- const w = (C + (t + r[I] * s)) / 2, p = (d + (e - i[I] * s)) / 2;
1233
+ const w = (C + (t + i[I] * s)) / 2, p = (d + (e - r[I] * s)) / 2;
1234
1234
  this.Ye.quadraticCurveTo(C, d, w, p), c = I;
1235
1235
  }
1236
1236
  }
1237
1237
  this.Ye.closePath();
1238
1238
  }
1239
- o = a + 1;
1239
+ Q = a + 1;
1240
1240
  }
1241
1241
  }
1242
1242
  this.Ye.fill();
@@ -1245,22 +1245,22 @@ class mA {
1245
1245
  class pA {
1246
1246
  constructor() {
1247
1247
  n(this, "fe");
1248
- this.fe = new F();
1248
+ this.fe = new S();
1249
1249
  }
1250
1250
  calculateMaxGlyphDimensions(A, t, e) {
1251
1251
  let s = 0;
1252
- const r = this.fe.Ie(e, t), i = r.lineHeight;
1252
+ const i = this.fe.Ie(e, t), r = i.lineHeight;
1253
1253
  for (const B of A) {
1254
- const Q = this.fe.Pe(e, B);
1255
- if (Q === 0) continue;
1256
- const o = this.fe.ue(e, Q) * r.scale;
1257
- s = Math.max(s, o);
1254
+ const o = this.fe.ue(e, B);
1255
+ if (o === 0) continue;
1256
+ const Q = this.fe.Pe(e, o) * i.scale;
1257
+ s = Math.max(s, Q);
1258
1258
  }
1259
- return { width: Math.ceil(s), height: Math.ceil(i) };
1259
+ return { width: Math.ceil(s), height: Math.ceil(r) };
1260
1260
  }
1261
1261
  getCharacterAdvanceWidth(A, t, e) {
1262
- const s = this.fe.Ie(e, t), r = this.fe.Pe(e, A);
1263
- return this.fe.ue(e, r) * s.scale;
1262
+ const s = this.fe.Ie(e, t), i = this.fe.ue(e, A);
1263
+ return this.fe.Pe(e, i) * s.scale;
1264
1264
  }
1265
1265
  getFontMetrics(A, t) {
1266
1266
  return this.fe.Ie(t, A);
@@ -1271,49 +1271,49 @@ class pA {
1271
1271
  }
1272
1272
  class yA {
1273
1273
  constructor() {
1274
- n(this, "Re");
1275
- this.Re = new F();
1274
+ n(this, "ze");
1275
+ this.ze = new S();
1276
1276
  }
1277
1277
  createCharacterObjects(A, t) {
1278
1278
  return A.map((e, s) => {
1279
- const r = e.codePointAt(0) || 0, i = this.Le(s);
1279
+ const i = e.codePointAt(0) || 0, r = this.Le(s);
1280
1280
  let B = 0;
1281
1281
  if (t.hmtx && t.hmtx.aWidth) {
1282
- const Q = this.Re.ce(t, r);
1283
- Q > 0 && t.hmtx.aWidth[Q] !== void 0 && (B = t.hmtx.aWidth[Q]);
1282
+ const o = this.ze.ce(t, i);
1283
+ o > 0 && t.hmtx.aWidth[o] !== void 0 && (B = t.hmtx.aWidth[o]);
1284
1284
  }
1285
- return { character: e, unicode: r, color: i, advanceWidth: B };
1285
+ return { character: e, unicode: i, color: r, advanceWidth: B };
1286
1286
  });
1287
1287
  }
1288
1288
  Le(A) {
1289
1289
  return [A % 256 / 255, Math.floor(A / 256) % 256 / 255, Math.floor(A / 65536) % 256 / 255];
1290
1290
  }
1291
- ke(A, t) {
1292
- if (!_.P(typeof A == "string", "Character must be a string.", { method: "getCharacterColor", providedValue: A })) return [0, 0, 0];
1291
+ Ue(A, t) {
1292
+ if (!G.u(typeof A == "string", "Character must be a string.", { method: "getCharacterColor", providedValue: A })) return [0, 0, 0];
1293
1293
  const e = t.find((s) => s.character === A);
1294
1294
  return e ? e.color : [0, 0, 0];
1295
1295
  }
1296
- He(A, t) {
1297
- return _.P(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.ke(e, t) || [0, 0, 0]) : [[0, 0, 0]];
1296
+ We(A, t) {
1297
+ return G.u(typeof A == "string" && A.length > 0, "Characters must be a string with at least one character.", { method: "getCharacterColors", providedValue: A }) ? Array.from(A).map((e) => this.Ue(e, t) || [0, 0, 0]) : [[0, 0, 0]];
1298
1298
  }
1299
1299
  }
1300
- class xA {
1300
+ class vA {
1301
1301
  constructor(A, t = 16) {
1302
- n(this, "We");
1303
- n(this, "Je", []);
1304
- n(this, "Ve");
1305
- n(this, "Ke", 16);
1302
+ n(this, "He");
1303
+ n(this, "Ke", []);
1304
+ n(this, "Je");
1305
+ n(this, "Ve", 16);
1306
1306
  n(this, "Ze", 0);
1307
1307
  n(this, "je", 0);
1308
- n(this, "Xe", { width: 0, height: 0 });
1309
- n(this, "Ne");
1308
+ n(this, "Ne", { width: 0, height: 0 });
1309
+ n(this, "Xe");
1310
1310
  n(this, "qe");
1311
- n(this, "AB");
1312
- n(this, "tB");
1313
- n(this, "eB");
1314
- this.Ke = t, this.qe = new wA(), this.AB = new mA(A), this.tB = new pA(), this.eB = new yA();
1311
+ n(this, "As");
1312
+ n(this, "ts");
1313
+ n(this, "es");
1314
+ this.Ve = t, this.qe = new wA(), this.As = new mA(A), this.ts = new pA(), this.es = new yA();
1315
1315
  }
1316
- async BB(A) {
1316
+ async ss(A) {
1317
1317
  let t;
1318
1318
  if (A) {
1319
1319
  const e = await fetch(A);
@@ -1322,51 +1322,51 @@ class xA {
1322
1322
  } else
1323
1323
  t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAABAAAgAQAAIAEAACABAAAAAQAAIAEAAAABAAAAAQAAIAEAAGABAAAAAQAAAAEAAAABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAAAQAAIAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAEABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAACAAQAAIAEAAAABAAAAAQAAAAEAACABAABAAQAAQAEAAEABAABAAQAAIAEAACABAAAAAQAAAAEAAAABAABAAQAAAAEAACABAAAAAQAAAAEAAIABAAAgAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAYAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAABgAQAAAAEAAGABAABgAQAAAAEAAAABAABgAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAYAEAAAABAAAAAQAAQAEAACABAAAAAQAAAAEAAAABAAAgAQAAIAEAACABAAAgAQAAIAEAAAABAABAAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAAAAAIAAAADAAAAFAADAAEAAASaAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEhgAAAJ4AgAAGAB4AfgCjAKUApwCsALIAtwC9AL8AxwDJANEA1gDcAOIA7wD0APcA/AD/AZIDkwOYA6MDpgOpA7EDtQPAA8QDxiAiIDwgfyCnIZUhqCIaIh8iKSJIImEiZSMCIxAjISUAJQIlDCUQJRQlGCUcJSQlLCU0JTwlbCWAJYQliCWMJZMloSWsJbIluiW8JcQlyyXZJjwmQCZCJmAmYyZmJmv//wAAACAAoQClAKcAqgCwALUAugC/AMQAyQDRANYA3ADfAOQA8QD2APkA/wGSA5MDmAOjA6YDqQOxA7QDwAPDA8YgIiA8IH8gpyGQIagiGSIeIikiSCJhImQjAiMQIyAlACUCJQwlECUUJRglHCUkJSwlNCU8JVAlgCWEJYgljCWQJaAlrCWyJbolvCXEJcsl2CY6JkAmQiZgJmMmZSZq////4v/A/7//vv+8/7n/t/+1/7T/sP+v/6j/pP+f/53/nP+b/5r/mf+X/wX9Bf0B/Pf89fzz/Oz86vzg/N783eCC4GngJ+AA3xjfBt6W3pPeit5s3lTeUt223andmtu827vbstuv26zbqdum25/bmNuR24rbd9tk22HbXttb21jbTNtC2z3bNts12y7bKNsc2rzaudq42pvamdqY2pUAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAABwAAABIAAAAegAAALwAAADuAAAA9wAAARQAAAExAAABWgAAAW0AAAF7AAABhAAAAY0AAAGvAAAB0gAAAecAAAIOAAACNQAAAk8AAAJsAAACjgAAAqYAAALOAAAC5gAAAvQAAAMHAAADLgAAAzwAAANjAAADhQAAA6UAAAPCAAAD4AAAA/0AAAQaAAAEPAAABEwAAARrAAAEfgAABJEAAASpAAAE0AAABNsAAAT4AAAFFQAABS0AAAVDAAAFZQAABYcAAAWuAAAFvAAABc8AAAXnAAAGBAAABisAAAZDAAAGZQAABnMAAAaVAAAGowAABsUAAAbOAAAG3gAABvYAAAcMAAAHKQAABz8AAAdaAAAHbQAAB4oAAAedAAAHqwAAB8MAAAfgAAAH7gAACAsAAAgjAAAIOwAACFEAAAhsAAAIfAAACJkAAAi2AAAIzgAACOYAAAkDAAAJKgAACUIAAAlfAAAJfAAACYUAAAmiAAAJugAACdcAAAngAAAKBwAACi4AAApgAAAKeQAACokAAAq4AAAKwQAACs8AAArYAAAK8QAACw4AAAshAAALSAAAC1gAAAt1AAALjQAAC5sAAAu0AAALzQAAC9YAAAvhAAAL6gAAC/4AAAwRAAAMJAAADDQAAAxHAAAMUgAADGoAAAyCAAAMlwAADKUAAAy/AAAM0gAADN0AAAz8AAANDwAADSkAAA0yAAANTAAADVUAAA1jAAANfAAADYcAAA2VAAANqQAADcIAAA3mAAAN7wAADg4AAA4XAAAOQQAADloAAA5qAAAOcwAADoYAAA6PAAAOogAADrIAAA7FAAAPCwAADxsAAA8uAAAPRwAAD1AAAA+HAAAPoAAAD6kAAA/CAAAP3wAAD/wAABAZAAAQNgAAEE4AABBfAAAQlQAAEJ4AABCxAAAQugAAEOEAABEnAAARUwAAEWYAABF+AAARlgAAEbgAABJrAAASfgAAEpEAABKpAAASwQAAEswAABLcAAATCAAAExMAABMrAAATQwAAE1sAABNzAAATmgAAE8YAABPeAAAT5wAAE/AAABQSAAAUKgAAFEIAABRaAAAUYwAAFGwAABSOAAAUngAAFLsAABTYAAAU/wAAFSEAABVNAAAVZQAAFX0AABWVAAAVngAAFacAABXTAAAWBAAAFg0AABYvAAAWOgAAFkUAABZxAAAWhAAAFpIAABagAAAWrgAAFrwAABbVAAAW7QAAFxkAABd0AAAXzwAAF/wAABgUAAAYJQAAGC4AABhBAAAYXgAAGHEAABiYAAAYvAAAGOAAABkYAAAZPwAAGWYAABmNAAAZtAAAGdYAABn9AAAaEAAAGi0AAIBgACAAoAEAAADAAcAAAEBAQEBAQEBAYABAAAA/wAAAAEAAAD/AAQAAAD+AAAA/4AAAP8AAAAAAgEAAoADgAQAAAMABwAAAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8ABAAAAP6AAAABgAAA/oAAAAACAIAAgAQAA4AAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAABAAAAAIAAAP+AAAAAgAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAA/4AAAACAAQAAAACAAAADgAAA/4AAAACAAAD/gAAA/4AAAP8AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAABAAAAAIAAAP+A/wAAAAEAAAMAgACABAAEAAAbAB8AIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAABAAAAAIAAAP+AAAD/AAAA/4AAAP8AAAABAAAA/wAAAP+AAAAAgAAAAQD/gAAAAIAAAACAAAAAgAAABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAABQCAAIAEAAOAAAUAHQAjACkALwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAA/4AAAP+AAgABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACA/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
1324
1324
  `)).arrayBuffer();
1325
- await this.sB(t), this.We = y.parse(t)[0], await this.iB();
1325
+ await this.Bs(t), this.He = y.parse(t)[0], await this.rs();
1326
1326
  }
1327
- QB(A) {
1328
- if (A === void 0) return this.Ke;
1329
- this.Ke = A, this.Xe = this.tB.calculateMaxGlyphDimensions(this.Je.map((e) => e.character), this.Ke, this.We);
1330
- const t = this.AB.createTextureAtlas(this.Je, this.Xe, this.Ke, this.We);
1331
- this.Ve = t.framebuffer, this.Ze = t.columns, this.je = t.rows;
1327
+ Qs(A) {
1328
+ if (A === void 0) return this.Ve;
1329
+ this.Ve = A, this.Ne = this.ts.calculateMaxGlyphDimensions(this.Ke.map((e) => e.character), this.Ve, this.He);
1330
+ const t = this.As.createTextureAtlas(this.Ke, this.Ne, this.Ve, this.He);
1331
+ this.Je = t.framebuffer, this.Ze = t.columns, this.je = t.rows;
1332
1332
  }
1333
- async rB(A) {
1333
+ async Es(A) {
1334
1334
  try {
1335
1335
  const t = await fetch(A);
1336
1336
  if (!t.ok) throw new m(`Failed to load font file: ${t.status} ${t.statusText}`);
1337
1337
  const e = await t.arrayBuffer();
1338
- await this.sB(e);
1338
+ await this.Bs(e);
1339
1339
  const s = y.parse(e);
1340
1340
  if (!s || s.length === 0) throw Error("Failed to parse font file");
1341
- this.We = s[0], await this.iB();
1341
+ this.He = s[0], await this.rs();
1342
1342
  } catch (t) {
1343
1343
  throw new m("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
1344
1344
  }
1345
1345
  }
1346
- async sB(A) {
1346
+ async Bs(A) {
1347
1347
  const t = Date.now();
1348
- this.Ne = new FontFace("CustomFont_" + t, A), await this.Ne.load(), document.fonts.add(this.Ne);
1348
+ this.Xe = new FontFace("CustomFont_" + t, A), await this.Xe.load(), document.fonts.add(this.Xe);
1349
1349
  }
1350
- async iB() {
1351
- const A = this.qe.extractCharacters(this.We), t = this.qe.filterProblematicCharacters(A);
1352
- this.Je = this.eB.createCharacterObjects(t, this.We), this.Xe = this.tB.calculateMaxGlyphDimensions(t, this.Ke, this.We);
1353
- const e = this.AB.createTextureAtlas(this.Je, this.Xe, this.Ke, this.We);
1354
- this.Ve = e.framebuffer, this.Ze = e.columns, this.je = e.rows;
1350
+ async rs() {
1351
+ const A = this.qe.extractCharacters(this.He), t = this.qe.filterProblematicCharacters(A);
1352
+ this.Ke = this.es.createCharacterObjects(t, this.He), this.Ne = this.ts.calculateMaxGlyphDimensions(t, this.Ve, this.He);
1353
+ const e = this.As.createTextureAtlas(this.Ke, this.Ne, this.Ve, this.He);
1354
+ this.Je = e.framebuffer, this.Ze = e.columns, this.je = e.rows;
1355
1355
  }
1356
- ke(A) {
1357
- return this.eB.ke(A, this.Je);
1356
+ Ue(A) {
1357
+ return this.es.Ue(A, this.Ke);
1358
1358
  }
1359
- He(A) {
1360
- return this.eB.He(A, this.Je);
1359
+ We(A) {
1360
+ return this.es.We(A, this.Ke);
1361
1361
  }
1362
- W() {
1363
- this.Ve.W(), document.fonts.delete(this.Ne);
1362
+ H() {
1363
+ this.Je.H(), document.fonts.delete(this.Xe);
1364
1364
  }
1365
1365
  get fontFramebuffer() {
1366
- return this.Ve;
1366
+ return this.Je;
1367
1367
  }
1368
1368
  get characters() {
1369
- return this.Je;
1369
+ return this.Ke;
1370
1370
  }
1371
1371
  get textureColumns() {
1372
1372
  return this.Ze;
@@ -1375,45 +1375,45 @@ class xA {
1375
1375
  return this.je;
1376
1376
  }
1377
1377
  get maxGlyphDimensions() {
1378
- return this.Xe;
1378
+ return this.Ne;
1379
1379
  }
1380
1380
  get fontSize() {
1381
- return this.Ke;
1381
+ return this.Ve;
1382
1382
  }
1383
1383
  get font() {
1384
- return this.We;
1384
+ return this.He;
1385
1385
  }
1386
1386
  }
1387
- class vA {
1387
+ class xA {
1388
1388
  constructor(A, t, e) {
1389
- n(this, "EB");
1390
- n(this, "nB");
1389
+ n(this, "ns");
1390
+ n(this, "gs");
1391
1391
  n(this, "I");
1392
1392
  n(this, "p");
1393
- n(this, "oB");
1394
- n(this, "gB");
1395
- n(this, "aB");
1396
- n(this, "hB");
1397
- n(this, "cB");
1398
- this.aB = A, this.hB = t, this.cB = e, this.fA();
1393
+ n(this, "hs");
1394
+ n(this, "cs");
1395
+ n(this, "ls");
1396
+ n(this, "Cs");
1397
+ n(this, "Ds");
1398
+ this.ls = A, this.Cs = t, this.Ds = e, this.fA();
1399
1399
  }
1400
1400
  fA() {
1401
- this.EB = Math.floor(this.aB.width / this.hB), this.nB = Math.floor(this.aB.height / this.cB), this.I = this.EB * this.hB, this.p = this.nB * this.cB, this.oB = Math.floor((this.aB.width - this.I) / 2), this.gB = Math.floor((this.aB.height - this.p) / 2);
1401
+ this.ns = Math.floor(this.ls.width / this.Cs), this.gs = Math.floor(this.ls.height / this.Ds), this.I = this.ns * this.Cs, this.p = this.gs * this.Ds, this.hs = Math.floor((this.ls.width - this.I) / 2), this.cs = Math.floor((this.ls.height - this.p) / 2);
1402
1402
  }
1403
- CB(A, t) {
1404
- this.hB = A, this.cB = t, this.fA();
1403
+ us(A, t) {
1404
+ this.Cs = A, this.Ds = t, this.fA();
1405
1405
  }
1406
1406
  get cellWidth() {
1407
- return this.hB;
1407
+ return this.Cs;
1408
1408
  }
1409
1409
  get cellHeight() {
1410
- return this.cB;
1410
+ return this.Ds;
1411
1411
  }
1412
1412
  get cols() {
1413
- return this.EB;
1413
+ return this.ns;
1414
1414
  }
1415
1415
  get rows() {
1416
- return this.nB;
1416
+ return this.gs;
1417
1417
  }
1418
1418
  get width() {
1419
1419
  return this.I;
@@ -1422,340 +1422,525 @@ class vA {
1422
1422
  return this.p;
1423
1423
  }
1424
1424
  get offsetX() {
1425
- return this.oB;
1425
+ return this.hs;
1426
1426
  }
1427
1427
  get offsetY() {
1428
- return this.gB;
1428
+ return this.cs;
1429
1429
  }
1430
1430
  }
1431
- class bA {
1431
+ class RA {
1432
1432
  constructor(A = {}) {
1433
- n(this, "aB");
1434
- n(this, "DB");
1435
- n(this, "lB");
1436
- A.canvas ? (this.aB = A.canvas, this.lB = !1) : (this.aB = this.PB(A.width, A.height), this.lB = !0), this.aB.style.imageRendering = "pixelated";
1433
+ n(this, "ls");
1434
+ n(this, "Ps");
1435
+ n(this, "Is");
1436
+ A.canvas ? (this.ls = A.canvas, this.Is = !1) : (this.ls = this.ws(A.width, A.height), this.Is = !0), this.ls.style.imageRendering = "pixelated";
1437
1437
  }
1438
- PB(A, t) {
1438
+ ws(A, t) {
1439
1439
  const e = document.createElement("canvas");
1440
1440
  return e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", e.width = A || 800, e.height = t || 600, document.body.appendChild(e), e;
1441
1441
  }
1442
1442
  O(A, t) {
1443
- this.aB.width = A ?? this.aB.width, this.aB.height = t ?? this.aB.height;
1443
+ this.ls.width = A ?? this.ls.width, this.ls.height = t ?? this.ls.height;
1444
1444
  }
1445
- uB() {
1446
- const A = this.aB.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
1445
+ fs() {
1446
+ const A = this.ls.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
1447
1447
  if (!A) throw new m("`textmode.js` requires WebGL2 support.");
1448
1448
  return A;
1449
1449
  }
1450
- W() {
1451
- this.DB && this.DB.disconnect();
1452
- const A = this.aB.getContext("webgl") || this.aB.getContext("webgl2");
1450
+ H() {
1451
+ this.Ps && this.Ps.disconnect();
1452
+ const A = this.ls.getContext("webgl") || this.ls.getContext("webgl2");
1453
1453
  if (A) {
1454
1454
  const t = A.getExtension("WEBGL_lose_context");
1455
1455
  t && t.loseContext();
1456
1456
  }
1457
- this.lB && this.aB.parentNode && this.aB.parentNode.removeChild(this.aB);
1457
+ this.Is && this.ls.parentNode && this.ls.parentNode.removeChild(this.ls);
1458
1458
  }
1459
1459
  get canvas() {
1460
- return this.aB;
1460
+ return this.ls;
1461
1461
  }
1462
1462
  get width() {
1463
- return this.aB.width;
1463
+ return this.ls.width;
1464
1464
  }
1465
1465
  get height() {
1466
- return this.aB.height;
1466
+ return this.ls.height;
1467
1467
  }
1468
1468
  }
1469
- class RA {
1469
+ class bA {
1470
1470
  constructor(A = 60) {
1471
- n(this, "IB");
1472
- n(this, "wB");
1473
- n(this, "fB", null);
1474
- n(this, "dB", 0);
1475
- n(this, "pB", !0);
1476
- n(this, "_B", 0);
1477
- n(this, "mB", 0);
1478
- n(this, "vB", []);
1479
- n(this, "xB", 10);
1480
- n(this, "yB", 0);
1481
- this.IB = A, this.wB = 1e3 / A;
1471
+ n(this, "ds");
1472
+ n(this, "ps");
1473
+ n(this, "_s", null);
1474
+ n(this, "vs", 0);
1475
+ n(this, "bs", !0);
1476
+ n(this, "Gs", 0);
1477
+ n(this, "$s", 0);
1478
+ n(this, "Ms", []);
1479
+ n(this, "Ys", 10);
1480
+ n(this, "Rs", 0);
1481
+ this.ds = A, this.ps = 1e3 / A;
1482
1482
  }
1483
1483
  start(A) {
1484
- if (!this.pB) return;
1485
- this.dB = performance.now();
1484
+ if (!this.bs) return;
1485
+ this.vs = performance.now();
1486
1486
  const t = (e) => {
1487
- if (!this.pB) return void (this.fB = null);
1488
- const s = e - this.dB;
1489
- s >= this.wB && (A(), this.dB = e - s % this.wB), this.pB && (this.fB = requestAnimationFrame(t));
1487
+ if (!this.bs) return void (this._s = null);
1488
+ const s = e - this.vs;
1489
+ s >= this.ps && (A(), this.vs = e - s % this.ps), this.bs && (this._s = requestAnimationFrame(t));
1490
1490
  };
1491
- this.fB = requestAnimationFrame(t);
1491
+ this._s = requestAnimationFrame(t);
1492
1492
  }
1493
1493
  stop() {
1494
- this.fB && (cancelAnimationFrame(this.fB), this.fB = null);
1494
+ this._s && (cancelAnimationFrame(this._s), this._s = null);
1495
1495
  }
1496
1496
  pause() {
1497
- this.pB && (this.pB = !1, this.stop());
1497
+ this.bs && (this.bs = !1, this.stop());
1498
1498
  }
1499
1499
  resume(A) {
1500
- this.pB || (this.pB = !0, this.start(A));
1500
+ this.bs || (this.bs = !0, this.start(A));
1501
1501
  }
1502
1502
  frameRate(A, t) {
1503
- if (A === void 0) return this._B;
1504
- this.IB = A, this.wB = 1e3 / A, this.pB && t && (this.stop(), this.start(t));
1503
+ if (A === void 0) return this.Gs;
1504
+ this.ds = A, this.ps = 1e3 / A, this.bs && t && (this.stop(), this.start(t));
1505
1505
  }
1506
1506
  measureFrameRate() {
1507
1507
  const A = performance.now();
1508
- if (this.mB > 0) {
1509
- const t = A - this.mB;
1510
- this.vB.push(t), this.vB.length > this.xB && this.vB.shift();
1511
- const e = this.vB.reduce((s, r) => s + r, 0) / this.vB.length;
1512
- this._B = 1e3 / e;
1508
+ if (this.$s > 0) {
1509
+ const t = A - this.$s;
1510
+ this.Ms.push(t), this.Ms.length > this.Ys && this.Ms.shift();
1511
+ const e = this.Ms.reduce((s, i) => s + i, 0) / this.Ms.length;
1512
+ this.Gs = 1e3 / e;
1513
1513
  }
1514
- this.mB = A;
1514
+ this.$s = A;
1515
1515
  }
1516
1516
  get isLooping() {
1517
- return this.pB;
1517
+ return this.bs;
1518
1518
  }
1519
1519
  get frameRateLimit() {
1520
- return this.IB;
1520
+ return this.ds;
1521
1521
  }
1522
1522
  get currentFrameRate() {
1523
- return this._B;
1523
+ return this.Gs;
1524
1524
  }
1525
1525
  get frameCount() {
1526
- return this.yB;
1526
+ return this.Rs;
1527
1527
  }
1528
1528
  set frameCount(A) {
1529
- this.yB = A;
1529
+ this.Rs = A;
1530
1530
  }
1531
1531
  incrementFrame() {
1532
- this.yB++;
1532
+ this.Rs++;
1533
1533
  }
1534
1534
  resetFrameCount() {
1535
- this.yB = 0;
1535
+ this.Rs = 0;
1536
1536
  }
1537
1537
  }
1538
- const TA = (E) => class extends E {
1538
+ class TA {
1539
+ constructor(A) {
1540
+ n(this, "ls");
1541
+ n(this, "zs");
1542
+ n(this, "Fs", { x: -1, y: -1 });
1543
+ n(this, "Ss", { x: -1, y: -1 });
1544
+ n(this, "Ts", null);
1545
+ n(this, "Os");
1546
+ n(this, "ks");
1547
+ n(this, "Ls");
1548
+ n(this, "Us");
1549
+ n(this, "Ws");
1550
+ n(this, "Hs");
1551
+ n(this, "Ks", !1);
1552
+ n(this, "Js");
1553
+ n(this, "Vs");
1554
+ n(this, "Zs");
1555
+ n(this, "js");
1556
+ n(this, "Ns");
1557
+ this.ls = A;
1558
+ }
1559
+ ss(A) {
1560
+ this.zs = A, this.Xs();
1561
+ }
1562
+ qs() {
1563
+ if (this.Ks) return;
1564
+ const A = this.ls.canvas;
1565
+ this.Os = (t) => {
1566
+ this.Ai(t), this.ti(t);
1567
+ }, this.ks = () => {
1568
+ this.Ss = { ...this.Fs }, this.Fs.x = -1, this.Fs.y = -1, this.Ts = null;
1569
+ }, this.Ls = (t) => {
1570
+ this.Ai(t), this.ei(t);
1571
+ }, this.Us = (t) => {
1572
+ this.Ai(t), this.si(t);
1573
+ }, this.Ws = (t) => {
1574
+ this.Ai(t), this.ii(t);
1575
+ }, this.Hs = (t) => {
1576
+ this.Ai(t), this.Bi(t);
1577
+ }, A.addEventListener("mousemove", this.Os, { passive: !0 }), A.addEventListener("mouseleave", this.ks, { passive: !0 }), A.addEventListener("mousedown", this.Ls, { passive: !0 }), A.addEventListener("mouseup", this.Us, { passive: !0 }), A.addEventListener("click", this.Ws, { passive: !0 }), A.addEventListener("wheel", this.Hs, { passive: !1 }), this.Ks = !0;
1578
+ }
1579
+ ri() {
1580
+ if (!this.Ks) return;
1581
+ const A = this.ls.canvas;
1582
+ A.removeEventListener("mousemove", this.Os), A.removeEventListener("mouseleave", this.ks), A.removeEventListener("mousedown", this.Ls), A.removeEventListener("mouseup", this.Us), A.removeEventListener("click", this.Ws), A.removeEventListener("wheel", this.Hs), this.Ks = !1;
1583
+ }
1584
+ Xs() {
1585
+ if (this.Ks) try {
1586
+ if (this.Ts) {
1587
+ const A = new MouseEvent("mousemove", { clientX: this.Ts.x, clientY: this.Ts.y, bubbles: !1, cancelable: !1 });
1588
+ this.Ai(A);
1589
+ } else this.Fs.x !== -1 && this.Fs.y !== -1 && (this.Fs.x >= this.zs.cols || this.Fs.y >= this.zs.rows) && (this.Fs.x = -1, this.Fs.y = -1);
1590
+ } catch {
1591
+ this.Fs.x = -1, this.Fs.y = -1;
1592
+ }
1593
+ }
1594
+ Qi(A) {
1595
+ this.Js = A;
1596
+ }
1597
+ Ei(A) {
1598
+ this.Vs = A;
1599
+ }
1600
+ ni(A) {
1601
+ this.Zs = A;
1602
+ }
1603
+ oi(A) {
1604
+ this.js = A;
1605
+ }
1606
+ gi(A) {
1607
+ this.Ns = A;
1608
+ }
1609
+ ai() {
1610
+ return { x: this.Fs.x, y: this.Fs.y };
1611
+ }
1612
+ ti(A) {
1613
+ if (this.js) {
1614
+ const t = { position: { ...this.Fs }, previousPosition: { ...this.Ss }, originalEvent: A };
1615
+ this.js(t);
1616
+ }
1617
+ }
1618
+ ei(A) {
1619
+ if (this.Vs) {
1620
+ const t = { position: { ...this.Fs }, previousPosition: { ...this.Ss }, button: A.button, originalEvent: A };
1621
+ this.Vs(t);
1622
+ }
1623
+ }
1624
+ si(A) {
1625
+ if (this.Zs) {
1626
+ const t = { position: { ...this.Fs }, previousPosition: { ...this.Ss }, button: A.button, originalEvent: A };
1627
+ this.Zs(t);
1628
+ }
1629
+ }
1630
+ ii(A) {
1631
+ if (this.Js) {
1632
+ const t = { position: { ...this.Fs }, previousPosition: { ...this.Ss }, button: A.button, originalEvent: A };
1633
+ this.Js(t);
1634
+ }
1635
+ }
1636
+ Bi(A) {
1637
+ if (this.Ns) {
1638
+ const t = { position: { ...this.Fs }, previousPosition: { ...this.Ss }, delta: { x: A.deltaX, y: A.deltaY }, originalEvent: A };
1639
+ this.Ns(t);
1640
+ }
1641
+ }
1642
+ Ai(A) {
1643
+ const t = this.ls.canvas;
1644
+ this.Ss = { ...this.Fs }, this.Ts = { x: A.clientX, y: A.clientY };
1645
+ const e = t.getBoundingClientRect(), s = A.clientX - e.left, i = A.clientY - e.top, r = t.width / e.width, B = i * (t.height / e.height), o = s * r - this.zs.offsetX, Q = B - this.zs.offsetY, g = Math.floor(o / this.zs.cellWidth), a = Math.floor(Q / this.zs.cellHeight);
1646
+ g >= 0 && g < this.zs.cols && a >= 0 && a < this.zs.rows ? (this.Fs.x = g, this.Fs.y = a) : (this.Fs.x = -1, this.Fs.y = -1);
1647
+ }
1648
+ }
1649
+ class _A {
1650
+ constructor() {
1651
+ n(this, "hi", /* @__PURE__ */ new Map());
1652
+ n(this, "ci", null);
1653
+ n(this, "li", null);
1654
+ n(this, "Ci");
1655
+ n(this, "Di");
1656
+ n(this, "Ks", !1);
1657
+ n(this, "ui");
1658
+ n(this, "Pi");
1659
+ n(this, "Ii", { ArrowUp: "UP_ARROW", ArrowDown: "DOWN_ARROW", ArrowLeft: "LEFT_ARROW", ArrowRight: "RIGHT_ARROW", F1: "F1", F2: "F2", F3: "F3", F4: "F4", F5: "F5", F6: "F6", F7: "F7", F8: "F8", F9: "F9", F10: "F10", F11: "F11", F12: "F12", Enter: "ENTER", Return: "RETURN", Tab: "TAB", Escape: "ESCAPE", Backspace: "BACKSPACE", Delete: "DELETE", Insert: "INSERT", Home: "HOME", End: "END", PageUp: "PAGE_UP", PageDown: "PAGE_DOWN", Shift: "SHIFT", Control: "CONTROL", Alt: "ALT", Meta: "META", " ": "SPACE" });
1660
+ }
1661
+ qs() {
1662
+ this.Ks || (this.Ci = (A) => {
1663
+ this.wi(A);
1664
+ }, this.Di = (A) => {
1665
+ this.fi(A);
1666
+ }, window.addEventListener("keydown", this.Ci, { passive: !1 }), window.addEventListener("keyup", this.Di, { passive: !1 }), this.Ks = !0);
1667
+ }
1668
+ ri() {
1669
+ this.Ks && (window.removeEventListener("keydown", this.Ci), window.removeEventListener("keyup", this.Di), this.Ks = !1, this.hi.clear(), this.ci = null, this.li = null);
1670
+ }
1671
+ Ei(A) {
1672
+ this.ui = A;
1673
+ }
1674
+ ni(A) {
1675
+ this.Pi = A;
1676
+ }
1677
+ di(A) {
1678
+ const t = this.pi(A), e = this.hi.get(A) || this.hi.get(t);
1679
+ return (e == null ? void 0 : e.isPressed) || !1;
1680
+ }
1681
+ _i() {
1682
+ return this.ci;
1683
+ }
1684
+ mi() {
1685
+ return this.li;
1686
+ }
1687
+ yi() {
1688
+ const A = [];
1689
+ for (const [t, e] of this.hi) e.isPressed && A.push(t);
1690
+ return A;
1691
+ }
1692
+ xi() {
1693
+ return { ctrl: this.di("Control"), shift: this.di("Shift"), alt: this.di("Alt"), meta: this.di("Meta") };
1694
+ }
1695
+ bi() {
1696
+ this.hi.clear(), this.ci = null, this.li = null;
1697
+ }
1698
+ wi(A) {
1699
+ const t = A.key, e = Date.now();
1700
+ this.hi.has(t) || this.hi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1701
+ const s = this.hi.get(t);
1702
+ if (!s.isPressed && (s.isPressed = !0, s.lastPressTime = e, this.ci = t, this.ui)) {
1703
+ const i = { key: t, keyCode: A.keyCode, ctrlKey: A.ctrlKey, shiftKey: A.shiftKey, altKey: A.altKey, metaKey: A.metaKey, isPressed: !0, originalEvent: A };
1704
+ this.ui(i);
1705
+ }
1706
+ }
1707
+ fi(A) {
1708
+ const t = A.key, e = Date.now();
1709
+ this.hi.has(t) || this.hi.set(t, { isPressed: !1, lastPressTime: 0, lastReleaseTime: 0 });
1710
+ const s = this.hi.get(t);
1711
+ if (s.isPressed = !1, s.lastReleaseTime = e, this.li = t, this.Pi) {
1712
+ const i = { key: t, keyCode: A.keyCode, ctrlKey: A.ctrlKey, shiftKey: A.shiftKey, altKey: A.altKey, metaKey: A.metaKey, isPressed: !1, originalEvent: A };
1713
+ this.Pi(i);
1714
+ }
1715
+ }
1716
+ pi(A) {
1717
+ return this.Ii[A] || A.toLowerCase();
1718
+ }
1719
+ }
1720
+ const GA = (E) => class extends E {
1539
1721
  rotate(A = 0, t = 0, e = 0) {
1540
- this.ze.state._A(A), this.ze.state.mA(t), this.ze.state.vA(e);
1722
+ this.Re.state._A(A), this.Re.state.mA(t), this.Re.state.vA(e);
1541
1723
  }
1542
1724
  rotateX(A) {
1543
- this.ze.state._A(A);
1725
+ this.Re.state._A(A);
1544
1726
  }
1545
1727
  rotateY(A) {
1546
- this.ze.state.mA(A);
1728
+ this.Re.state.mA(A);
1547
1729
  }
1548
1730
  rotateZ(A) {
1549
- this.ze.state.vA(A);
1731
+ this.Re.state.vA(A);
1550
1732
  }
1551
1733
  push() {
1552
- this.ze.state.IA();
1734
+ this.Re.state.IA();
1553
1735
  }
1554
1736
  pop() {
1555
- this.ze.state.wA();
1737
+ this.Re.state.wA();
1556
1738
  }
1557
1739
  rect(A, t, e = 1, s = 1) {
1558
- this.ze.Nt(A, t, e, s);
1740
+ this.Re.Xt(A, t, e, s);
1741
+ }
1742
+ point(A, t) {
1743
+ this.Re.Xt(A, t, 1, 1);
1559
1744
  }
1560
1745
  line(A, t, e, s) {
1561
- this.ze.qt(A, t, e, s);
1746
+ this.Re.qt(A, t, e, s);
1562
1747
  }
1563
1748
  lineWeight(A) {
1564
- this.ze.state.pA(A);
1749
+ this.Re.state.pA(A);
1565
1750
  }
1566
1751
  background(A, t = A, e = A, s = 255) {
1567
- this.ze.ie(A, t, e, s);
1752
+ this.Re.Be(A, t, e, s);
1568
1753
  }
1569
1754
  char(A) {
1570
- this.ze.state.xA(this.We.ke(A));
1755
+ this.Re.state.yA(this.He.Ue(A));
1571
1756
  }
1572
1757
  charColor(A, t, e) {
1573
- this.ze.state.yA(A, t, e);
1758
+ this.Re.state.xA(A, t, e);
1574
1759
  }
1575
1760
  cellColor(A, t, e) {
1576
- this.ze.state.bA(A, t, e);
1761
+ this.Re.state.bA(A, t, e);
1577
1762
  }
1578
1763
  flipX(A) {
1579
- this.ze.state.GA(A);
1764
+ this.Re.state.GA(A);
1580
1765
  }
1581
1766
  flipY(A) {
1582
- this.ze.state.$A(A);
1767
+ this.Re.state.$A(A);
1583
1768
  }
1584
1769
  charRotation(A) {
1585
- this.ze.state.YA(A);
1770
+ this.Re.state.YA(A);
1586
1771
  }
1587
1772
  invert(A) {
1588
- this.ze.state.MA(A);
1773
+ this.Re.state.MA(A);
1589
1774
  }
1590
1775
  clear() {
1591
- this.ze.ie(0, 0, 0, 0);
1776
+ this.Re.Be(0, 0, 0, 0);
1592
1777
  }
1593
1778
  ellipse(A, t, e, s) {
1594
- this.ze.Ae(A, t, e / 2, s / 2);
1779
+ this.Re.Ae(A, t, e / 2, s / 2);
1595
1780
  }
1596
- triangle(A, t, e, s, r, i) {
1597
- this.ze.te(A, t, e, s, r, i);
1781
+ triangle(A, t, e, s, i, r) {
1782
+ this.Re.te(A, t, e, s, i, r);
1598
1783
  }
1599
- bezierCurve(A, t, e, s, r, i, B, Q) {
1600
- this.ze.ee(A, t, e, s, r, i, B, Q);
1784
+ bezierCurve(A, t, e, s, i, r, B, o) {
1785
+ this.Re.ee(A, t, e, s, i, r, B, o);
1601
1786
  }
1602
- arc(A, t, e, s, r, i) {
1603
- this.ze.se(A, t, e, s, r, i);
1787
+ arc(A, t, e, s, i, r) {
1788
+ this.Re.ie(A, t, e, s, i, r);
1604
1789
  }
1605
1790
  shader(A) {
1606
- this.ze.Vt(A);
1791
+ this.Re.Jt(A);
1607
1792
  }
1608
1793
  setUniform(A, t) {
1609
- this.ze.Kt(A, t);
1794
+ this.Re.Vt(A, t);
1610
1795
  }
1611
1796
  setUniforms(A) {
1612
- this.ze.Zt(A);
1797
+ this.Re.Zt(A);
1613
1798
  }
1614
1799
  createFilterShader(A) {
1615
- return this.ze.jt(A);
1800
+ return this.Re.jt(A);
1616
1801
  }
1617
1802
  };
1618
1803
  class O {
1619
- bB(A) {
1620
- const t = A.U(0), e = A.U(1), s = A.U(2), r = A.U(3);
1621
- return { characterPixels: t, primaryColorPixels: e, secondaryColorPixels: s, transformPixels: A.U(4), rotationPixels: r };
1804
+ Gi(A) {
1805
+ const t = A.k(0), e = A.k(1), s = A.k(2), i = A.k(3);
1806
+ return { characterPixels: t, primaryColorPixels: e, secondaryColorPixels: s, transformPixels: A.k(4), rotationPixels: i };
1622
1807
  }
1623
- GB(A, t) {
1808
+ $i(A, t) {
1624
1809
  return A[t] + (A[t + 1] << 8);
1625
1810
  }
1626
- $B(A, t) {
1811
+ Mi(A, t) {
1627
1812
  return { r: A[t], g: A[t + 1], b: A[t + 2], a: A[t + 3] };
1628
1813
  }
1629
1814
  }
1630
- class W {
1631
- MB(A, t) {
1815
+ class H {
1816
+ Yi(A, t) {
1632
1817
  return new Blob([A], { type: t });
1633
1818
  }
1634
- YB(A, t, e) {
1819
+ Ri(A, t, e) {
1635
1820
  try {
1636
- const s = this.MB(A, e), r = URL.createObjectURL(s), i = document.createElement("a");
1637
- i.href = r, i.download = t, i.style.display = "none", i.rel = "noopener", document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(r);
1821
+ const s = this.Yi(A, e), i = URL.createObjectURL(s), r = document.createElement("a");
1822
+ r.href = i, r.download = t, r.style.display = "none", r.rel = "noopener", document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(i);
1638
1823
  } catch (s) {
1639
1824
  throw console.error("Failed to download file:", s), Error("File download failed: " + (s instanceof Error ? s.message : "Unknown error"));
1640
1825
  }
1641
1826
  }
1642
- zB() {
1827
+ zi() {
1643
1828
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-");
1644
1829
  }
1645
- RB() {
1830
+ Fi() {
1646
1831
  const A = /* @__PURE__ */ new Date();
1647
1832
  return { date: A.toISOString().split("T")[0], time: A.toTimeString().split(" ")[0].replace(/:/g, "-") };
1648
1833
  }
1649
- SB(A) {
1834
+ Si(A) {
1650
1835
  return A.replace(/[<>:"/\\|?*]/g, "_").replace(/\s+/g, "_").replace(/_{2,}/g, "_").replace(/^_+|_+$/g, "").substring(0, 255);
1651
1836
  }
1652
- TB() {
1653
- return "textmode-export-" + this.zB();
1837
+ Ti() {
1838
+ return "textmode-export-" + this.zi();
1654
1839
  }
1655
1840
  }
1656
1841
  class MA extends O {
1657
- FB(A, t, e) {
1658
- const s = A[e] === 255, r = A[e + 1] === 255, i = A[e + 2] === 255, B = t[e], Q = t[e + 1];
1659
- return { isInverted: s, flipHorizontal: r, flipVertical: i, rotation: Math.round(360 * (B + Q / 255) / 255 * 100) / 100 };
1842
+ Oi(A, t, e) {
1843
+ const s = A[e] === 255, i = A[e + 1] === 255, r = A[e + 2] === 255, B = t[e], o = t[e + 1];
1844
+ return { isInverted: s, flipHorizontal: i, flipVertical: r, rotation: Math.round(360 * (B + o / 255) / 255 * 100) / 100 };
1660
1845
  }
1661
- OB(A, t, e) {
1846
+ ki(A, t, e) {
1662
1847
  return { x: A, y: t, cellX: A * e.cellWidth, cellY: t * e.cellHeight };
1663
1848
  }
1664
- UB(A, t) {
1849
+ Li(A, t) {
1665
1850
  const e = [];
1666
1851
  let s = 0;
1667
- for (let r = 0; r < t.rows; r++) for (let i = 0; i < t.cols; i++) {
1668
- const B = 4 * s, Q = this.GB(A.characterPixels, B);
1669
- let o = this.$B(A.primaryColorPixels, B), h = this.$B(A.secondaryColorPixels, B);
1670
- const a = this.FB(A.transformPixels, A.rotationPixels, B);
1852
+ for (let i = 0; i < t.rows; i++) for (let r = 0; r < t.cols; r++) {
1853
+ const B = 4 * s, o = this.$i(A.characterPixels, B);
1854
+ let Q = this.Mi(A.primaryColorPixels, B), g = this.Mi(A.secondaryColorPixels, B);
1855
+ const a = this.Oi(A.transformPixels, A.rotationPixels, B);
1671
1856
  if (a.isInverted) {
1672
- const l = o;
1673
- o = h, h = l;
1857
+ const l = Q;
1858
+ Q = g, g = l;
1674
1859
  }
1675
- const g = this.OB(i, r, t);
1676
- e.push({ charIndex: Q, primaryColor: o, secondaryColor: h, transform: a, position: g }), s++;
1860
+ const h = this.ki(r, i, t);
1861
+ e.push({ charIndex: o, primaryColor: Q, secondaryColor: g, transform: a, position: h }), s++;
1677
1862
  }
1678
1863
  return e;
1679
1864
  }
1680
1865
  }
1681
- class _A {
1682
- LB(A, t) {
1866
+ class FA {
1867
+ Ui(A, t) {
1683
1868
  const e = A.cmap;
1684
1869
  for (const s of e.tables) if (s.format === 4) {
1685
- const r = s;
1686
- for (let i = 0; i < r.startCount.length; i++) if (t >= r.startCount[i] && t <= r.endCount[i]) {
1687
- if (r.idRangeOffset[i] === 0) return t + r.idDelta[i] & 65535;
1870
+ const i = s;
1871
+ for (let r = 0; r < i.startCount.length; r++) if (t >= i.startCount[r] && t <= i.endCount[r]) {
1872
+ if (i.idRangeOffset[r] === 0) return t + i.idDelta[r] & 65535;
1688
1873
  {
1689
- const B = r.idRangeOffset[i] / 2 + (t - r.startCount[i]) - (r.startCount.length - i);
1690
- if (B >= 0 && B < r.glyphIdArray.length) {
1691
- const Q = r.glyphIdArray[B];
1692
- if (Q !== 0) return Q + r.idDelta[i] & 65535;
1874
+ const B = i.idRangeOffset[r] / 2 + (t - i.startCount[r]) - (i.startCount.length - r);
1875
+ if (B >= 0 && B < i.glyphIdArray.length) {
1876
+ const o = i.glyphIdArray[B];
1877
+ if (o !== 0) return o + i.idDelta[r] & 65535;
1693
1878
  }
1694
1879
  }
1695
1880
  }
1696
1881
  } else if (s.format === 12) {
1697
- const r = s;
1698
- for (let i = 0; i < r.groups.length; i += 3) {
1699
- const B = r.groups[i], Q = r.groups[i + 1], o = r.groups[i + 2];
1700
- if (t >= B && t <= Q) return o + (t - B);
1882
+ const i = s;
1883
+ for (let r = 0; r < i.groups.length; r += 3) {
1884
+ const B = i.groups[r], o = i.groups[r + 1], Q = i.groups[r + 2];
1885
+ if (t >= B && t <= o) return Q + (t - B);
1701
1886
  }
1702
1887
  }
1703
1888
  return 0;
1704
1889
  }
1705
- kB(A, t, e, s, r) {
1706
- const i = r / A.head.unitsPerEm;
1707
- return { getBoundingBox: () => ({ x1: e + t.xMin * i, y1: s + -t.yMax * i, x2: e + t.xMax * i, y2: s + -t.yMin * i }), toSVG: () => this.HB(t, e, s, i) };
1890
+ Wi(A, t, e, s, i) {
1891
+ const r = i / A.head.unitsPerEm;
1892
+ return { getBoundingBox: () => ({ x1: e + t.xMin * r, y1: s + -t.yMax * r, x2: e + t.xMax * r, y2: s + -t.yMin * r }), toSVG: () => this.Hi(t, e, s, r) };
1708
1893
  }
1709
- HB(A, t, e, s) {
1894
+ Hi(A, t, e, s) {
1710
1895
  if (!A || !A.xs) return "";
1711
- const { xs: r, ys: i, endPts: B, flags: Q } = A;
1712
- if (!(r && i && B && Q)) return "";
1713
- let o = "", h = 0;
1896
+ const { xs: i, ys: r, endPts: B, flags: o } = A;
1897
+ if (!(i && r && B && o)) return "";
1898
+ let Q = "", g = 0;
1714
1899
  for (let a = 0; a < B.length; a++) {
1715
- const g = B[a];
1716
- if (!(g < h)) {
1717
- if (g >= h) {
1718
- const l = t + r[h] * s, c = e - i[h] * s;
1719
- o += `M${l.toFixed(2)},${c.toFixed(2)}`;
1720
- let C = h + 1;
1721
- for (; C <= g; )
1722
- if (1 & Q[C]) {
1723
- const d = t + r[C] * s, I = e - i[C] * s;
1724
- o += `L${d.toFixed(2)},${I.toFixed(2)}`, C++;
1900
+ const h = B[a];
1901
+ if (!(h < g)) {
1902
+ if (h >= g) {
1903
+ const l = t + i[g] * s, c = e - r[g] * s;
1904
+ Q += `M${l.toFixed(2)},${c.toFixed(2)}`;
1905
+ let C = g + 1;
1906
+ for (; C <= h; )
1907
+ if (1 & o[C]) {
1908
+ const d = t + i[C] * s, I = e - r[C] * s;
1909
+ Q += `L${d.toFixed(2)},${I.toFixed(2)}`, C++;
1725
1910
  } else {
1726
- const d = t + r[C] * s, I = e - i[C] * s;
1727
- let w = C + 1 > g ? h : C + 1;
1728
- if (1 & Q[w]) {
1729
- const p = t + r[w] * s, u = e - i[w] * s;
1730
- o += `Q${d.toFixed(2)},${I.toFixed(2)} ${p.toFixed(2)},${u.toFixed(2)}`, C = w + 1;
1911
+ const d = t + i[C] * s, I = e - r[C] * s;
1912
+ let w = C + 1 > h ? g : C + 1;
1913
+ if (1 & o[w]) {
1914
+ const p = t + i[w] * s, u = e - r[w] * s;
1915
+ Q += `Q${d.toFixed(2)},${I.toFixed(2)} ${p.toFixed(2)},${u.toFixed(2)}`, C = w + 1;
1731
1916
  } else {
1732
- const p = (d + (t + r[w] * s)) / 2, u = (I + (e - i[w] * s)) / 2;
1733
- o += `Q${d.toFixed(2)},${I.toFixed(2)} ${p.toFixed(2)},${u.toFixed(2)}`, C = w;
1917
+ const p = (d + (t + i[w] * s)) / 2, u = (I + (e - r[w] * s)) / 2;
1918
+ Q += `Q${d.toFixed(2)},${I.toFixed(2)} ${p.toFixed(2)},${u.toFixed(2)}`, C = w;
1734
1919
  }
1735
1920
  }
1736
- o += "Z";
1921
+ Q += "Z";
1737
1922
  }
1738
- h = g + 1;
1923
+ g = h + 1;
1739
1924
  }
1740
1925
  }
1741
- return o;
1926
+ return Q;
1742
1927
  }
1743
- WB(A, t, e, s, r) {
1744
- const i = A.codePointAt(0) || 0, B = this.LB(t, i);
1745
- let Q = null;
1746
- return t.glyf && t.glyf[B] !== null ? Q = t.glyf[B] : (Q = y.T.glyf.Ee(t, B), t.glyf[B] = Q), this.kB(t, Q, e, s, r);
1928
+ Ki(A, t, e, s, i) {
1929
+ const r = A.codePointAt(0) || 0, B = this.Ui(t, r);
1930
+ let o = null;
1931
+ return t.glyf && t.glyf[B] !== null ? o = t.glyf[B] : (o = y.T.glyf.Ee(t, B), t.glyf[B] = o), this.Wi(t, o, e, s, i);
1747
1932
  }
1748
- JB(A, t, e, s, r, i, B, Q) {
1749
- const o = e + (r - Q * (B / t.head.unitsPerEm)) / 2, h = s + (i + 0.7 * B) / 2;
1750
- return this.WB(A, t, o, h, B).toSVG() || null;
1933
+ Ji(A, t, e, s, i, r, B, o) {
1934
+ const Q = e + (i - o * (B / t.head.unitsPerEm)) / 2, g = s + (r + 0.7 * B) / 2;
1935
+ return this.Ki(A, t, Q, g, B).toSVG() || null;
1751
1936
  }
1752
1937
  }
1753
- class GA {
1938
+ class SA {
1754
1939
  constructor() {
1755
- n(this, "VB");
1756
- this.VB = new _A();
1940
+ n(this, "Vi");
1941
+ this.Vi = new FA();
1757
1942
  }
1758
- KB(A) {
1943
+ Zi(A) {
1759
1944
  return `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1760
1945
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
1761
1946
  <svg width="${A.width}" height="${A.height}" viewBox="0 0 ${A.width} ${A.height}"
@@ -1763,116 +1948,116 @@ class GA {
1763
1948
  <title>textmode art generated via textmode.js</title>
1764
1949
  <desc>textmode art visualization generated by textmode.js library</desc>`;
1765
1950
  }
1766
- ZB() {
1951
+ ji() {
1767
1952
  return `
1768
1953
  </g>
1769
1954
  </svg>`;
1770
1955
  }
1771
- jB(A, t) {
1956
+ Ni(A, t) {
1772
1957
  if (!t.includeBackgroundRectangles) return "";
1773
1958
  const e = t.backgroundColor, s = `rgba(${e[0]},${e[1]},${e[2]},${e[3] / 255})`;
1774
1959
  return `
1775
1960
  <rect width="${A.width}" height="${A.height}" fill="${s}" />`;
1776
1961
  }
1777
- XB(A) {
1962
+ Xi(A) {
1778
1963
  return `rgba(${A.r},${A.g},${A.b},${A.a / 255})`;
1779
1964
  }
1780
- NB(A, t) {
1781
- const { transform: e, position: s } = A, r = s.cellX + t.cellWidth / 2, i = s.cellY + t.cellHeight / 2, B = [];
1965
+ qi(A, t) {
1966
+ const { transform: e, position: s } = A, i = s.cellX + t.cellWidth / 2, r = s.cellY + t.cellHeight / 2, B = [];
1782
1967
  if (e.flipHorizontal || e.flipVertical) {
1783
- const Q = e.flipHorizontal ? -1 : 1, o = e.flipVertical ? -1 : 1;
1784
- B.push(`translate(${r} ${i})`), B.push(`scale(${Q} ${o})`), B.push(`translate(${-r} ${-i})`);
1968
+ const o = e.flipHorizontal ? -1 : 1, Q = e.flipVertical ? -1 : 1;
1969
+ B.push(`translate(${i} ${r})`), B.push(`scale(${o} ${Q})`), B.push(`translate(${-i} ${-r})`);
1785
1970
  }
1786
- return e.rotation && B.push(`rotate(${e.rotation} ${r} ${i})`), B.length ? ` transform="${B.join(" ")}"` : "";
1971
+ return e.rotation && B.push(`rotate(${e.rotation} ${i} ${r})`), B.length ? ` transform="${B.join(" ")}"` : "";
1787
1972
  }
1788
- qB(A, t, e) {
1973
+ AB(A, t, e) {
1789
1974
  if (!e.includeBackgroundRectangles || A.secondaryColor.a === 0) return "";
1790
- const { position: s } = A, r = this.XB(A.secondaryColor);
1975
+ const { position: s } = A, i = this.Xi(A.secondaryColor);
1791
1976
  return e.drawMode === "stroke" ? `
1792
- <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" stroke="${r}" fill="none" stroke-width="${e.strokeWidth}" />` : `
1793
- <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" fill="${r}" />`;
1977
+ <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" stroke="${i}" fill="none" stroke-width="${e.strokeWidth}" />` : `
1978
+ <rect x="${s.cellX}" y="${s.cellY}" width="${t.cellWidth}" height="${t.cellHeight}" fill="${i}" />`;
1794
1979
  }
1795
- WB(A, t, e, s) {
1796
- const r = e.characters[A.charIndex];
1797
- if (!r) return "";
1798
- const i = this.VB.JB(r.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, r.advanceWidth);
1980
+ Ki(A, t, e, s) {
1981
+ const i = e.characters[A.charIndex];
1799
1982
  if (!i) return "";
1800
- const B = this.XB(A.primaryColor);
1983
+ const r = this.Vi.Ji(i.character, e.font, A.position.cellX, A.position.cellY, t.cellWidth, t.cellHeight, e.fontSize, i.advanceWidth);
1984
+ if (!r) return "";
1985
+ const B = this.Xi(A.primaryColor);
1801
1986
  return s.drawMode === "stroke" ? `
1802
- <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${i}" stroke="${B}" stroke-width="${s.strokeWidth}" fill="none" />` : `
1803
- <path d="${i}" fill="${B}" />`;
1804
- }
1805
- As(A, t, e, s) {
1806
- let r = "";
1807
- r += this.qB(A, t, s);
1808
- const i = this.NB(A, t), B = this.WB(A, t, e, s);
1809
- return B && (i ? (r += `
1810
- <g${i}>`, r += B, r += `
1811
- </g>`) : r += B), r;
1812
- }
1813
- ts(A, t, e, s) {
1814
- let r = this.KB(t);
1815
- r += this.jB(t, s), r += `
1987
+ <path id="${`path-${A.charIndex}-${A.position.cellX}-${A.position.cellY}`.replace(/\./g, "-")}" d="${r}" stroke="${B}" stroke-width="${s.strokeWidth}" fill="none" />` : `
1988
+ <path d="${r}" fill="${B}" />`;
1989
+ }
1990
+ tB(A, t, e, s) {
1991
+ let i = "";
1992
+ i += this.AB(A, t, s);
1993
+ const r = this.qi(A, t), B = this.Ki(A, t, e, s);
1994
+ return B && (r ? (i += `
1995
+ <g${r}>`, i += B, i += `
1996
+ </g>`) : i += B), i;
1997
+ }
1998
+ eB(A, t, e, s) {
1999
+ let i = this.Zi(t);
2000
+ i += this.Ni(t, s), i += `
1816
2001
  <g id="ascii-cells">`;
1817
- for (const i of A) r += this.As(i, t, e, s);
1818
- return r += this.ZB(), r;
2002
+ for (const r of A) i += this.tB(r, t, e, s);
2003
+ return i += this.ji(), i;
1819
2004
  }
1820
- es(A) {
2005
+ sB(A) {
1821
2006
  return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\n\s*\n/g, `
1822
2007
  `).replace(/[ \t]+$/gm, "");
1823
2008
  }
1824
2009
  }
1825
- class YA extends W {
1826
- Bs(A) {
1827
- return this.MB(A, "image/svg+xml;charset=utf-8");
2010
+ class YA extends H {
2011
+ iB(A) {
2012
+ return this.Yi(A, "image/svg+xml;charset=utf-8");
1828
2013
  }
1829
- ss(A, t) {
1830
- this.YB(A, this.SB(t) + ".svg", "image/svg+xml;charset=utf-8");
2014
+ BB(A, t) {
2015
+ this.Ri(A, this.Si(t) + ".svg", "image/svg+xml;charset=utf-8");
1831
2016
  }
1832
- Qs(A, t) {
1833
- this.ss(A, t || this.TB());
2017
+ rB(A, t) {
2018
+ this.BB(A, t || this.Ti());
1834
2019
  }
1835
2020
  }
1836
- class H {
2021
+ class $ {
1837
2022
  constructor() {
1838
- n(this, "rs");
1839
- n(this, "Es");
1840
- n(this, "ns");
1841
- this.rs = new MA(), this.Es = new GA(), this.ns = new YA();
2023
+ n(this, "QB");
2024
+ n(this, "EB");
2025
+ n(this, "nB");
2026
+ this.QB = new MA(), this.EB = new SA(), this.nB = new YA();
1842
2027
  }
1843
- gs(A) {
1844
- return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0], filename: A.filename || this.ns.TB() };
2028
+ oB(A) {
2029
+ return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0], filename: A.filename || this.nB.Ti() };
1845
2030
  }
1846
- hs(A, t = {}) {
1847
- const e = this.rs.UB(this.rs.bB(A.pipeline), A.grid), s = this.Es.ts(e, A.grid, A.font, this.gs(t));
1848
- return this.Es.es(s);
2031
+ gB(A, t = {}) {
2032
+ const e = this.QB.Li(this.QB.Gi(A.pipeline), A.grid), s = this.EB.eB(e, A.grid, A.font, this.oB(t));
2033
+ return this.EB.sB(s);
1849
2034
  }
1850
- Qs(A, t = {}) {
1851
- this.ns.Qs(this.hs(A, t), t.filename);
2035
+ rB(A, t = {}) {
2036
+ this.nB.rB(this.gB(A, t), t.filename);
1852
2037
  }
1853
2038
  }
1854
- class FA extends O {
1855
- cs(A, t, e, s = " ") {
2039
+ class LA extends O {
2040
+ aB(A, t, e, s = " ") {
1856
2041
  var B;
1857
- const r = [];
1858
- let i = 0;
1859
- for (let Q = 0; Q < t.rows; Q++) {
1860
- const o = [];
1861
- for (let h = 0; h < t.cols; h++) {
1862
- const a = 4 * i, g = this.GB(A.characterPixels, a), l = ((B = e.characters[g]) == null ? void 0 : B.character) || s;
1863
- o.push(l), i++;
2042
+ const i = [];
2043
+ let r = 0;
2044
+ for (let o = 0; o < t.rows; o++) {
2045
+ const Q = [];
2046
+ for (let g = 0; g < t.cols; g++) {
2047
+ const a = 4 * r, h = this.$i(A.characterPixels, a), l = ((B = e.characters[h]) == null ? void 0 : B.character) || s;
2048
+ Q.push(l), r++;
1864
2049
  }
1865
- r.push(o);
2050
+ i.push(Q);
1866
2051
  }
1867
- return r;
2052
+ return i;
1868
2053
  }
1869
2054
  }
1870
- class SA {
1871
- Cs(A, t) {
2055
+ class UA {
2056
+ hB(A, t) {
1872
2057
  const e = [];
1873
- for (const r of A) {
1874
- let i = r.join("");
1875
- t.preserveTrailingSpaces || (i = i.replace(/\s+$/, "")), e.push(i);
2058
+ for (const i of A) {
2059
+ let r = i.join("");
2060
+ t.preserveTrailingSpaces || (r = r.replace(/\s+$/, "")), e.push(r);
1876
2061
  }
1877
2062
  const s = t.lineEnding === "crlf" ? `\r
1878
2063
  ` : `
@@ -1880,56 +2065,56 @@ class SA {
1880
2065
  return e.join(s);
1881
2066
  }
1882
2067
  }
1883
- class zA extends W {
1884
- Ds(A, t) {
1885
- const e = this.ls(t);
1886
- this.YB(A, e, "text/plain;charset=utf-8");
2068
+ class zA extends H {
2069
+ cB(A, t) {
2070
+ const e = this.lB(t);
2071
+ this.Ri(A, e, "text/plain;charset=utf-8");
1887
2072
  }
1888
- ls(A) {
1889
- let t = this.SB(A);
1890
- return t === ".txt" || t.length <= 4 ? this.TB() : t;
2073
+ lB(A) {
2074
+ let t = this.Si(A);
2075
+ return t === ".txt" || t.length <= 4 ? this.Ti() : t;
1891
2076
  }
1892
2077
  }
1893
- class X {
2078
+ class K {
1894
2079
  constructor() {
1895
- n(this, "rs");
1896
- n(this, "Es");
1897
- n(this, "ns");
1898
- this.rs = new FA(), this.Es = new SA(), this.ns = new zA();
2080
+ n(this, "QB");
2081
+ n(this, "EB");
2082
+ n(this, "nB");
2083
+ this.QB = new LA(), this.EB = new UA(), this.nB = new zA();
1899
2084
  }
1900
- gs(A) {
1901
- return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.ns.TB() };
2085
+ oB(A) {
2086
+ return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.nB.Ti() };
1902
2087
  }
1903
- Ps(A, t = {}) {
1904
- const e = this.gs(t), s = this.rs.cs(this.rs.bB(A.pipeline), A.grid, A.font, e.emptyCharacter);
1905
- return this.Es.Cs(s, e);
2088
+ CB(A, t = {}) {
2089
+ const e = this.oB(t), s = this.QB.aB(this.QB.Gi(A.pipeline), A.grid, A.font, e.emptyCharacter);
2090
+ return this.EB.hB(s, e);
1906
2091
  }
1907
- Ds(A, t = {}) {
1908
- this.ns.Ds(this.Ps(A, t), t.filename);
2092
+ cB(A, t = {}) {
2093
+ this.nB.cB(this.CB(A, t), t.filename);
1909
2094
  }
1910
2095
  }
1911
- class UA extends O {
1912
- us(A, t = 1, e = "transparent") {
2096
+ class OA extends O {
2097
+ DB(A, t = 1, e = "transparent") {
1913
2098
  const s = A.canvas;
1914
2099
  if (t === 1 && e === "transparent") return s;
1915
- const r = document.createElement("canvas"), i = r.getContext("2d"), B = Math.round(s.width * t), Q = Math.round(s.height * t);
1916
- return r.width = B, r.height = Q, e !== "transparent" && (i.fillStyle = e, i.fillRect(0, 0, B, Q)), i.imageSmoothingEnabled = !1, i.drawImage(s, 0, 0, s.width, s.height, 0, 0, B, Q), r;
2100
+ const i = document.createElement("canvas"), r = i.getContext("2d"), B = Math.round(s.width * t), o = Math.round(s.height * t);
2101
+ return i.width = B, i.height = o, e !== "transparent" && (r.fillStyle = e, r.fillRect(0, 0, B, o)), r.imageSmoothingEnabled = !1, r.drawImage(s, 0, 0, s.width, s.height, 0, 0, B, o), i;
1917
2102
  }
1918
2103
  }
1919
- class LA {
1920
- Is(A, t) {
1921
- const e = this.ws(t.format);
2104
+ class HA {
2105
+ uB(A, t) {
2106
+ const e = this.PB(t.format);
1922
2107
  return t.format === "png" ? A.toDataURL(e) : A.toDataURL(e, t.quality);
1923
2108
  }
1924
- async fs(A, t) {
2109
+ async IB(A, t) {
1925
2110
  return new Promise((e, s) => {
1926
- const r = this.ws(t.format), i = (B) => {
2111
+ const i = this.PB(t.format), r = (B) => {
1927
2112
  B ? e(B) : s(Error(`Failed to generate ${t.format.toUpperCase()} blob`));
1928
2113
  };
1929
- t.format === "png" ? A.toBlob(i, r) : A.toBlob(i, r, t.quality);
2114
+ t.format === "png" ? A.toBlob(r, i) : A.toBlob(r, i, t.quality);
1930
2115
  });
1931
2116
  }
1932
- ws(A) {
2117
+ PB(A) {
1933
2118
  switch (A) {
1934
2119
  case "png":
1935
2120
  return "image/png";
@@ -1942,12 +2127,12 @@ class LA {
1942
2127
  }
1943
2128
  }
1944
2129
  }
1945
- const OA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, J = { png: ".png", jpg: ".jpg", webp: ".webp" };
1946
- class WA extends W {
1947
- ds(A, t, e) {
1948
- this.ps(A, this.SB(t) + J[e]);
2130
+ const kA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, X = { png: ".png", jpg: ".jpg", webp: ".webp" };
2131
+ class WA extends H {
2132
+ wB(A, t, e) {
2133
+ this.fB(A, this.Si(t) + X[e]);
1949
2134
  }
1950
- ps(A, t) {
2135
+ fB(A, t) {
1951
2136
  const e = URL.createObjectURL(A);
1952
2137
  try {
1953
2138
  const s = document.createElement("a");
@@ -1956,199 +2141,253 @@ class WA extends W {
1956
2141
  URL.revokeObjectURL(e);
1957
2142
  }
1958
2143
  }
1959
- _s(A) {
1960
- return A in OA && A in J;
2144
+ dB(A) {
2145
+ return A in kA && A in X;
1961
2146
  }
1962
2147
  }
1963
- class $A {
2148
+ class NA {
1964
2149
  constructor() {
1965
- n(this, "rs");
1966
- n(this, "Es");
1967
- n(this, "ns");
1968
- this.rs = new UA(), this.Es = new LA(), this.ns = new WA();
2150
+ n(this, "QB");
2151
+ n(this, "EB");
2152
+ n(this, "nB");
2153
+ this.QB = new OA(), this.EB = new HA(), this.nB = new WA();
1969
2154
  }
1970
- gs(A) {
1971
- return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.ns.TB() };
2155
+ oB(A) {
2156
+ return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.nB.Ti() };
1972
2157
  }
1973
- vs(A) {
1974
- if (!this.ns._s(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
2158
+ pB(A) {
2159
+ if (!this.nB.dB(A.format)) throw Error(`Saving '${A.format}' files is not supported`);
1975
2160
  if (A.quality < 0 || A.quality > 1) throw Error("Image quality must be between 0.0 and 1.0");
1976
2161
  if (A.scale <= 0) throw Error("Scale factor must be greater than 0");
1977
2162
  A.format === "jpg" && A.backgroundColor === "transparent" && (A.backgroundColor = "black");
1978
2163
  }
1979
- async fs(A, t) {
1980
- if (t.scale === 1 && t.backgroundColor === "transparent") return await this.Es.fs(A.canvas, t);
1981
- const e = this.rs.us(A, t.scale, t.backgroundColor);
1982
- return await this.Es.fs(e, t);
2164
+ async IB(A, t) {
2165
+ if (t.scale === 1 && t.backgroundColor === "transparent") return await this.EB.IB(A.canvas, t);
2166
+ const e = this.QB.DB(A, t.scale, t.backgroundColor);
2167
+ return await this.EB.IB(e, t);
1983
2168
  }
1984
- async ds(A, t = {}) {
1985
- const e = this.gs(t);
1986
- this.vs(e);
1987
- const s = await this.fs(A, e);
1988
- this.ns.ds(s, e.filename, e.format);
2169
+ async wB(A, t = {}) {
2170
+ const e = this.oB(t);
2171
+ this.pB(e);
2172
+ const s = await this.IB(A, e);
2173
+ this.nB.wB(s, e.filename, e.format);
1989
2174
  }
1990
2175
  }
1991
- const kA = (E) => class extends E {
1992
- bs() {
1993
- this.ze.re(this.Gs);
2176
+ const $A = (E) => class extends E {
2177
+ _B() {
2178
+ this.Re.Qe(this.mB);
1994
2179
  }
1995
2180
  toString(A = {}) {
1996
- return this.bs(), new X().Ps({ pipeline: this.$s, grid: this.Ms, font: this.We }, A);
2181
+ return this._B(), new K().CB({ pipeline: this.vB, grid: this.zs, font: this.He }, A);
1997
2182
  }
1998
2183
  saveStrings(A = {}) {
1999
- this.bs(), new X().Ds({ pipeline: this.$s, grid: this.Ms, font: this.We }, A);
2184
+ this._B(), new K().cB({ pipeline: this.vB, grid: this.zs, font: this.He }, A);
2000
2185
  }
2001
2186
  toSVG(A = {}) {
2002
- return this.bs(), new H().hs({ pipeline: this.$s, grid: this.Ms, font: this.We }, A);
2187
+ return this._B(), new $().gB({ pipeline: this.vB, grid: this.zs, font: this.He }, A);
2003
2188
  }
2004
2189
  saveSVG(A = {}) {
2005
- this.bs(), new H().Qs({ pipeline: this.$s, grid: this.Ms, font: this.We }, A);
2190
+ this._B(), new $().rB({ pipeline: this.vB, grid: this.zs, font: this.He }, A);
2006
2191
  }
2007
2192
  async saveCanvas(A = {}) {
2008
- await new $A().ds(this.aB, A);
2193
+ await new NA().wB(this.ls, A);
2009
2194
  }
2010
- }, NA = (E) => class extends E {
2195
+ }, KA = (E) => class extends E {
2011
2196
  async loadFont(A) {
2012
- return this.We.rB(A).then(() => {
2013
- const t = this.We.maxGlyphDimensions;
2014
- this.Ms.CB(t.width, t.height), this.$s.O(this.Ms.cols, this.Ms.rows), this.ze.Qe();
2197
+ return this.He.Es(A).then(() => {
2198
+ const t = this.He.maxGlyphDimensions;
2199
+ this.zs.us(t.width, t.height), this.vB.O(this.zs.cols, this.zs.rows), this.Re.re(), this.yB.Xs();
2015
2200
  });
2016
2201
  }
2017
2202
  fontSize(A) {
2018
- if (!_.P(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.We.fontSize === A) return;
2019
- this.We.QB(A);
2020
- const t = this.We.maxGlyphDimensions;
2021
- this.Ms.CB(t.width, t.height), this.$s.O(this.Ms.cols, this.Ms.rows), this.ze.Qe();
2203
+ if (!G.u(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.He.fontSize === A) return;
2204
+ this.He.Qs(A);
2205
+ const t = this.He.maxGlyphDimensions;
2206
+ this.zs.us(t.width, t.height), this.vB.O(this.zs.cols, this.zs.rows), this.Re.re(), this.yB.Xs();
2022
2207
  }
2023
- }, HA = (E) => class extends E {
2208
+ }, XA = (E) => class extends E {
2024
2209
  get frameCount() {
2025
- return this.Ys.frameCount;
2210
+ return this.xB.frameCount;
2026
2211
  }
2027
2212
  set frameCount(A) {
2028
- this.Ys.frameCount = A;
2213
+ this.xB.frameCount = A;
2029
2214
  }
2030
2215
  frameRate(A) {
2031
- return A === void 0 ? this.Ys.currentFrameRate : this.Ys.frameRate(A, () => this.zs());
2216
+ return A === void 0 ? this.xB.currentFrameRate : this.xB.frameRate(A, () => this.bB());
2032
2217
  }
2033
2218
  noLoop() {
2034
- this.Ys.pause();
2219
+ this.xB.pause();
2035
2220
  }
2036
2221
  loop() {
2037
- this.Ys.resume(() => this.zs());
2222
+ this.xB.resume(() => this.bB());
2038
2223
  }
2039
2224
  redraw(A = 1) {
2040
- if (_.P(typeof A == "number" && A > 0 && Number.isInteger(A), "Redraw count must be a positive integer.", { method: "redraw", providedValue: A })) for (let t = 0; t < A; t++) this.zs();
2225
+ if (G.u(typeof A == "number" && A > 0 && Number.isInteger(A), "Redraw count must be a positive integer.", { method: "redraw", providedValue: A })) for (let t = 0; t < A; t++) this.bB();
2041
2226
  }
2042
2227
  isLooping() {
2043
- return this.Ys.isLooping;
2228
+ return this.xB.isLooping;
2229
+ }
2230
+ }, VA = (E) => class extends E {
2231
+ constructor(...A) {
2232
+ super(...A);
2233
+ }
2234
+ mouseClicked(A) {
2235
+ this.yB.Qi(A);
2236
+ }
2237
+ mousePressed(A) {
2238
+ this.yB.Ei(A);
2239
+ }
2240
+ mouseReleased(A) {
2241
+ this.yB.ni(A);
2242
+ }
2243
+ mouseMoved(A) {
2244
+ this.yB.oi(A);
2245
+ }
2246
+ mouseScrolled(A) {
2247
+ this.yB.gi(A);
2248
+ }
2249
+ get mouse() {
2250
+ return this.yB.ai();
2251
+ }
2252
+ }, jA = (E) => class extends E {
2253
+ constructor(...A) {
2254
+ super(...A);
2255
+ }
2256
+ keyPressed(A) {
2257
+ this.GB.Ei(A);
2258
+ }
2259
+ keyReleased(A) {
2260
+ this.GB.ni(A);
2261
+ }
2262
+ isKeyPressed(A) {
2263
+ return this.GB.di(A);
2264
+ }
2265
+ clearKeyStates() {
2266
+ this.GB.bi();
2267
+ }
2268
+ get lastKeyPressed() {
2269
+ return this.GB._i();
2270
+ }
2271
+ get lastKeyReleased() {
2272
+ return this.GB.mi();
2273
+ }
2274
+ get pressedKeys() {
2275
+ return this.GB.yi();
2276
+ }
2277
+ get modifierState() {
2278
+ return this.GB.xi();
2044
2279
  }
2045
2280
  };
2046
- class XA {
2281
+ class JA {
2047
2282
  constructor() {
2048
- n(this, "ze");
2049
- n(this, "We");
2050
- n(this, "aB");
2051
- n(this, "Ms");
2052
- n(this, "Ys");
2053
- n(this, "Gs");
2054
- n(this, "$s");
2055
- n(this, "Rs");
2056
- }
2057
- zs() {
2283
+ n(this, "Re");
2284
+ n(this, "He");
2285
+ n(this, "ls");
2286
+ n(this, "zs");
2287
+ n(this, "xB");
2288
+ n(this, "yB");
2289
+ n(this, "GB");
2290
+ n(this, "mB");
2291
+ n(this, "vB");
2292
+ n(this, "$B");
2293
+ }
2294
+ bB() {
2058
2295
  }
2059
2296
  }
2060
- class JA extends function(t, ...e) {
2061
- return e.reduce((s, r) => r(s), t);
2062
- }(XA, TA, kA, NA, HA) {
2297
+ class ZA extends function(t, ...e) {
2298
+ return e.reduce((s, i) => i(s), t);
2299
+ }(JA, GA, $A, KA, XA, VA, jA) {
2063
2300
  constructor(t = {}) {
2064
2301
  super();
2065
- n(this, "Ss", !1);
2066
- n(this, "Ts", () => {
2302
+ n(this, "MB", !1);
2303
+ n(this, "YB", () => {
2067
2304
  });
2068
- n(this, "Fs", () => {
2305
+ n(this, "RB", () => {
2069
2306
  });
2070
- n(this, "Os", () => {
2307
+ n(this, "zB", () => {
2071
2308
  });
2072
- n(this, "Us");
2073
- this.aB = new bA(t), this.ze = new DA(this.aB.uB()), this.We = new xA(this.ze, t.fontSize ?? 16), this.Ys = new RA(t.frameRate ?? 60), this.Gs = this.ze.Jt(L, `#version 300 es
2074
- precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.0);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.0,1.0);o_transform=vec4(v_transform,1.0);}`), this.Rs = this.ze.Jt("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);}", "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 vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;uniform vec2 u_gridOffsetPixels;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_gridOffsetPixels)/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);int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=-(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"), this.Ls(t);
2309
+ n(this, "FB");
2310
+ this.ls = new RA(t), this.Re = new DA(this.ls.fs()), this.He = new vA(this.Re, t.fontSize ?? 16), this.xB = new bA(t.frameRate ?? 60), this.yB = new TA(this.ls), this.GB = new _A(), this.mB = this.Re.Kt(z, `#version 300 es
2311
+ precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in vec4 v_secondaryColor;in vec2 v_rotation;in vec3 v_transform;layout(location=0)out vec4 o_character;layout(location=1)out vec4 o_primaryColor;layout(location=2)out vec4 o_secondaryColor;layout(location=3)out vec4 o_rotation;layout(location=4)out vec4 o_transform;void main(){o_character=vec4(v_character,1.0);o_primaryColor=v_primaryColor;o_secondaryColor=v_secondaryColor;o_rotation=vec4(v_rotation,0.0,1.0);o_transform=vec4(v_transform,1.0);}`), this.$B = this.Re.Kt("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);}", "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 vec2 u_gridCellDimensions;uniform vec2 u_gridPixelDimensions;uniform vec2 u_gridOffsetPixels;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_gridOffsetPixels)/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);int charIndex=int(encodedIndexVec.r*255.0+0.5)+int(encodedIndexVec.g*255.0+0.5)*256;int charCol=int(mod(float(charIndex),u_charsetDimensions.x));int charRow=charIndex/int(u_charsetDimensions.x);float flippedRow=(u_charsetDimensions.y-1.0)-float(charRow);vec2 charCoord=vec2(float(charCol),flippedRow)/u_charsetDimensions;vec4 rotationColor=texture2D(u_rotationTexture,charIndexTexCoord);float scaledAngle=rotationColor.r*255.0+rotationColor.g;float rotationAngle=-(scaledAngle*360.0/255.0)*0.017453292;vec2 fractionalPart=fract(gridCoord)-0.5;if(flipHorizontal)fractionalPart.x=-fractionalPart.x;if(flipVertical)fractionalPart.y=-fractionalPart.y;fractionalPart=rotate2D(rotationAngle)*fractionalPart+0.5;vec2 cellSize=1.0/u_charsetDimensions;vec2 texCoord=charCoord+fractionalPart*cellSize;vec2 cellMax=charCoord+cellSize;if(any(lessThan(texCoord,charCoord))||any(greaterThan(texCoord,cellMax))){gl_FragColor=isInverted ? primaryColor : secondaryColor;return;}vec4 charTexel=texture2D(u_characterTexture,texCoord);if(isInverted)charTexel.rgb=1.0-charTexel.rgb;gl_FragColor=mix(secondaryColor,primaryColor,charTexel);}"), this.SB(t);
2075
2312
  }
2076
- async Ls(t) {
2077
- await this.We.BB(t.fontSource);
2078
- const e = this.We.maxGlyphDimensions;
2079
- this.Ms = new vA(this.aB.canvas, e.width, e.height), this.$s = this.ze.Be(this.Ms.cols, this.Ms.rows, 5), this.ks(), this.Ts(), this.Ys.start(() => this.zs());
2313
+ async SB(t) {
2314
+ await this.He.ss(t.fontSource);
2315
+ const e = this.He.maxGlyphDimensions;
2316
+ this.zs = new xA(this.ls.canvas, e.width, e.height), this.yB.ss(this.zs), this.vB = this.Re.se(this.zs.cols, this.zs.rows, 5), this.TB(), this.YB(), this.xB.start(() => this.bB());
2080
2317
  }
2081
- ks() {
2082
- this.Us = () => {
2083
- this.Os();
2084
- }, window.addEventListener("resize", this.Us);
2318
+ TB() {
2319
+ this.FB = () => {
2320
+ this.zB();
2321
+ }, window.addEventListener("resize", this.FB), this.yB.qs(), this.GB.qs(), window.addEventListener("blur", () => {
2322
+ this.GB.bi();
2323
+ });
2085
2324
  }
2086
- zs() {
2087
- if (this.Ys.measureFrameRate(), this.Ys.incrementFrame(), this.Ss) return;
2088
- this.$s.k(), this.ze.Wt(this.Gs), this.Fs(), this.ze.re(this.Gs), this.$s.H();
2089
- const t = this.ze.state.canvasBackgroundColor;
2090
- this.ze.ot(t[0], t[1], t[2], t[3]), this.ze.Wt(this.Rs), this.Rs.eA({ u_characterTexture: this.We.fontFramebuffer, u_charsetDimensions: [this.We.textureColumns, this.We.textureRows], u_asciiCharacterTexture: this.$s.textures[0], u_primaryColorTexture: this.$s.textures[1], u_secondaryColorTexture: this.$s.textures[2], u_transformTexture: this.$s.textures[4], u_rotationTexture: this.$s.textures[3], u_gridCellDimensions: [this.Ms.cols, this.Ms.rows], u_gridPixelDimensions: [this.Ms.width, this.Ms.height], u_gridOffsetPixels: [this.Ms.offsetX, this.Ms.offsetY], u_aspectRatio: this.Ms.width / this.Ms.height }), this.ze.Xt(this.Ms.offsetX, this.Ms.offsetY, this.Ms.width, this.Ms.height);
2325
+ bB() {
2326
+ if (this.xB.measureFrameRate(), this.xB.incrementFrame(), this.MB) return;
2327
+ this.vB.U(), this.Re.Ht(this.mB), this.RB(), this.Re.Qe(this.mB), this.vB.W();
2328
+ const t = this.Re.state.canvasBackgroundColor;
2329
+ this.Re.ot(t[0], t[1], t[2], t[3]), this.Re.Ht(this.$B), this.$B.eA({ u_characterTexture: this.He.fontFramebuffer, u_charsetDimensions: [this.He.textureColumns, this.He.textureRows], u_asciiCharacterTexture: this.vB.textures[0], u_primaryColorTexture: this.vB.textures[1], u_secondaryColorTexture: this.vB.textures[2], u_transformTexture: this.vB.textures[4], u_rotationTexture: this.vB.textures[3], u_gridCellDimensions: [this.zs.cols, this.zs.rows], u_gridPixelDimensions: [this.zs.width, this.zs.height], u_gridOffsetPixels: [this.zs.offsetX, this.zs.offsetY], u_aspectRatio: this.zs.width / this.zs.height }), this.Re.Nt(this.zs.offsetX, this.zs.offsetY, this.zs.width, this.zs.height);
2091
2330
  }
2092
2331
  setup(t) {
2093
- this.Ts = t;
2332
+ this.YB = t;
2094
2333
  }
2095
2334
  draw(t) {
2096
- this.Fs = t;
2335
+ this.RB = t;
2097
2336
  }
2098
2337
  windowResized(t) {
2099
- this.Os = t;
2338
+ this.zB = t;
2100
2339
  }
2101
2340
  resizeCanvas(t, e) {
2102
- this.aB.O(t, e), this.Ms.fA(), this.$s.O(this.Ms.cols, this.Ms.rows), this.ze.Qe(), this.zs();
2341
+ this.ls.O(t, e), this.zs.fA(), this.vB.O(this.zs.cols, this.zs.rows), this.Re.re(), this.yB.Xs(), this.bB();
2103
2342
  }
2104
2343
  destroy() {
2105
- this.Ss || (this.Ys.stop(), window.removeEventListener("resize", this.Us), this.We.W(), this.ze.W(), this.Ss = !0);
2344
+ this.MB || (this.xB.stop(), window.removeEventListener("resize", this.FB), this.yB.ri(), this.GB.ri(), this.He.H(), this.Re.H(), this.MB = !0);
2106
2345
  }
2107
2346
  get grid() {
2108
- return this.Ms;
2347
+ return this.zs;
2109
2348
  }
2110
2349
  get font() {
2111
- return this.We;
2350
+ return this.He;
2112
2351
  }
2113
2352
  get width() {
2114
- return this.aB.width;
2353
+ return this.ls.width;
2115
2354
  }
2116
2355
  get height() {
2117
- return this.aB.height;
2356
+ return this.ls.height;
2118
2357
  }
2119
2358
  get canvas() {
2120
- return this.aB.canvas;
2359
+ return this.ls.canvas;
2121
2360
  }
2122
2361
  get isDisposed() {
2123
- return this.Ss;
2362
+ return this.MB;
2124
2363
  }
2125
2364
  get drawFramebuffer() {
2126
- return this.$s;
2365
+ return this.vB;
2127
2366
  }
2128
2367
  }
2129
- class $ {
2368
+ class k {
2130
2369
  constructor() {
2131
2370
  }
2132
2371
  static create(A = {}) {
2133
- return new JA(A);
2372
+ return new ZA(A);
2134
2373
  }
2135
2374
  static setErrorLevel(A) {
2136
- _.u(A);
2375
+ G.P(A);
2137
2376
  }
2138
2377
  static get version() {
2139
- return "0.2.0";
2378
+ return "0.2.1-beta.1";
2140
2379
  }
2141
2380
  }
2142
- const jA = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), ZA = $.create, KA = $.setErrorLevel, qA = $.version;
2381
+ const At = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), tt = k.create, et = k.setErrorLevel, st = k.version;
2143
2382
  export {
2144
- bA as TextmodeCanvas,
2383
+ RA as TextmodeCanvas,
2145
2384
  q as TextmodeErrorLevel,
2146
- xA as TextmodeFont,
2147
- vA as TextmodeGrid,
2148
- JA as Textmodifier,
2149
- ZA as create,
2150
- jA as export,
2151
- KA as setErrorLevel,
2152
- $ as textmode,
2153
- qA as version
2385
+ vA as TextmodeFont,
2386
+ xA as TextmodeGrid,
2387
+ ZA as Textmodifier,
2388
+ tt as create,
2389
+ At as export,
2390
+ et as setErrorLevel,
2391
+ k as textmode,
2392
+ st as version
2154
2393
  };