textmode.js 0.2.1-beta.2 → 0.2.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/textmode.esm.js +282 -287
- package/dist/textmode.esm.min.js +373 -378
- package/dist/textmode.umd.js +5 -5
- package/dist/textmode.umd.min.js +6 -6
- package/dist/types/index.d.ts +2 -2
- package/dist/types/rendering/webgl/Framebuffer.d.ts +23 -12
- package/dist/types/rendering/webgl/Shader.d.ts +1 -1
- package/dist/types/textmode/mixins/AnimationMixin.d.ts +0 -4
- package/dist/types/textmode/mixins/KeyboardMixin.d.ts +74 -18
- package/dist/types/textmode/mixins/MouseMixin.d.ts +100 -7
- package/dist/types/textmode/mixins/RenderingMixin.d.ts +51 -44
- package/package.json +2 -2
package/dist/textmode.esm.js
CHANGED
|
@@ -28,12 +28,12 @@ ${"↓".repeat(24)}
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
var tA = ((E) => (E[E.SILENT = 0] = "SILENT", E[E.WARNING = 1] = "WARNING", E[E.ERROR = 2] = "ERROR", E[E.THROW = 3] = "THROW", E))(tA || {});
|
|
31
|
-
const
|
|
31
|
+
const y = class y {
|
|
32
32
|
constructor() {
|
|
33
33
|
Q(this, "P", { globalLevel: 3 });
|
|
34
34
|
}
|
|
35
35
|
static u() {
|
|
36
|
-
return
|
|
36
|
+
return y.D || (y.D = new y()), y.D;
|
|
37
37
|
}
|
|
38
38
|
I(A, t) {
|
|
39
39
|
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;";
|
|
@@ -55,58 +55,58 @@ const v = class v {
|
|
|
55
55
|
this.P.globalLevel = A;
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
Q(
|
|
59
|
-
let L =
|
|
60
|
-
const M = L.u(),
|
|
58
|
+
Q(y, "D", null);
|
|
59
|
+
let L = y;
|
|
60
|
+
const M = L.u(), V = /* @__PURE__ */ new WeakMap();
|
|
61
61
|
function F(E, A) {
|
|
62
|
-
|
|
62
|
+
V.set(E, A);
|
|
63
63
|
}
|
|
64
64
|
function G(E) {
|
|
65
|
-
return
|
|
65
|
+
return V.get(E);
|
|
66
66
|
}
|
|
67
|
-
class
|
|
67
|
+
class X {
|
|
68
68
|
constructor() {
|
|
69
|
-
Q(this, "
|
|
69
|
+
Q(this, "$", 1);
|
|
70
|
+
Q(this, "G", 0);
|
|
70
71
|
Q(this, "M", 0);
|
|
71
|
-
Q(this, "$", 0);
|
|
72
72
|
Q(this, "Y", 0);
|
|
73
73
|
Q(this, "F", [0, 0, 0]);
|
|
74
74
|
Q(this, "R", [1, 1, 1, 1]);
|
|
75
75
|
Q(this, "S", [0, 0, 0, 1]);
|
|
76
|
-
Q(this, "O", !1);
|
|
77
76
|
Q(this, "L", !1);
|
|
77
|
+
Q(this, "O", !1);
|
|
78
78
|
Q(this, "U", !1);
|
|
79
|
-
Q(this, "
|
|
80
|
-
Q(this, "
|
|
79
|
+
Q(this, "W", [0, 0]);
|
|
80
|
+
Q(this, "H", [0, 0, 0, 1]);
|
|
81
81
|
Q(this, "K", []);
|
|
82
82
|
}
|
|
83
83
|
J() {
|
|
84
|
-
this.K.push({ V: this
|
|
84
|
+
this.K.push({ V: this.$, Z: this.G, N: this.M, X: this.Y, W: [...this.W], L: this.L, O: this.O, U: this.U, AA: [...this.F], tA: [...this.R], eA: [...this.S] });
|
|
85
85
|
}
|
|
86
86
|
sA() {
|
|
87
87
|
const A = this.K.pop();
|
|
88
|
-
A ? (this
|
|
88
|
+
A ? (this.$ = A.V, this.G = A.Z, this.M = A.N, this.Y = A.X, this.W = A.W, this.L = A.L, this.O = A.O, this.U = A.U, this.F = A.AA, this.R = A.tA, this.S = A.eA) : console.warn("pop() called without matching push()");
|
|
89
89
|
}
|
|
90
90
|
iA() {
|
|
91
|
-
this.K = [], this.
|
|
91
|
+
this.K = [], this.G = 0, this.M = 0, this.Y = 0;
|
|
92
92
|
}
|
|
93
93
|
BA(A) {
|
|
94
|
-
A.lineWeight = this
|
|
94
|
+
A.lineWeight = this.$, A.rotationX = this.G, A.rotationY = this.M, A.rotationZ = this.Y, A.character[0] = this.F[0], A.character[1] = this.F[1], A.character[2] = this.F[2], A.charColor[0] = this.R[0], A.charColor[1] = this.R[1], A.charColor[2] = this.R[2], A.charColor[3] = this.R[3], A.bgColor[0] = this.S[0], A.bgColor[1] = this.S[1], A.bgColor[2] = this.S[2], A.bgColor[3] = this.S[3], A.flipHorizontally = this.L, A.flipVertically = this.O, A.invert = this.U, A.charRotation[0] = this.W[0], A.charRotation[1] = this.W[1];
|
|
95
95
|
}
|
|
96
96
|
get lineWeight() {
|
|
97
|
-
return this
|
|
97
|
+
return this.$;
|
|
98
98
|
}
|
|
99
99
|
get canvasBackgroundColor() {
|
|
100
|
-
return this.
|
|
100
|
+
return this.H;
|
|
101
101
|
}
|
|
102
102
|
QA(A) {
|
|
103
|
-
this
|
|
103
|
+
this.$ = Math.abs(A);
|
|
104
104
|
}
|
|
105
105
|
EA(A) {
|
|
106
|
-
this.
|
|
106
|
+
this.G = A;
|
|
107
107
|
}
|
|
108
108
|
rA(A) {
|
|
109
|
-
this
|
|
109
|
+
this.M = A;
|
|
110
110
|
}
|
|
111
111
|
nA(A) {
|
|
112
112
|
this.Y = A;
|
|
@@ -121,20 +121,20 @@ class V {
|
|
|
121
121
|
this.S = [A / 255, t / 255, e / 255, s / 255];
|
|
122
122
|
}
|
|
123
123
|
hA(A) {
|
|
124
|
-
this.
|
|
124
|
+
this.L = A;
|
|
125
125
|
}
|
|
126
126
|
cA(A) {
|
|
127
|
-
this.
|
|
127
|
+
this.O = A;
|
|
128
128
|
}
|
|
129
129
|
CA(A) {
|
|
130
130
|
this.U = A;
|
|
131
131
|
}
|
|
132
132
|
lA(A) {
|
|
133
133
|
const t = 255 * A / 360, e = Math.floor(t) / 255, s = Math.round(t - Math.floor(t));
|
|
134
|
-
this.
|
|
134
|
+
this.W = [e, s];
|
|
135
135
|
}
|
|
136
136
|
DA(A, t, e, s) {
|
|
137
|
-
this.
|
|
137
|
+
this.H = [A / 255, t / 255, e / 255, s / 255];
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
class U {
|
|
@@ -152,11 +152,11 @@ class U {
|
|
|
152
152
|
Q(this, "vA", null);
|
|
153
153
|
Q(this, "yA", !1);
|
|
154
154
|
Q(this, "bA", null);
|
|
155
|
-
this.PA = t, this.uA = e, this.P = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...i }, this.wA = A, this._A = Math.min(Math.max(1, s), 8), this.vA = B, this.yA = !!r, this.bA = this.yA ? new
|
|
155
|
+
this.PA = t, this.uA = e, this.P = { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte", ...i }, this.wA = A, this._A = Math.min(Math.max(1, s), 8), this.vA = B, this.yA = !!r, this.bA = this.yA ? new X() : null;
|
|
156
156
|
const n = A.getParameter(A.MAX_DRAW_BUFFERS), o = A.getParameter(A.MAX_COLOR_ATTACHMENTS);
|
|
157
|
-
this._A = Math.min(this._A, n, o), this.fA = A.createFramebuffer(), this
|
|
157
|
+
this._A = Math.min(this._A, n, o), this.fA = A.createFramebuffer(), this.$A(), this.GA(), this.mA = Array(this._A).fill(null);
|
|
158
158
|
}
|
|
159
|
-
|
|
159
|
+
$A() {
|
|
160
160
|
const A = this.wA, t = this.P.filter === "linear" ? A.LINEAR : A.NEAREST, e = this.P.wrap === "repeat" ? A.REPEAT : A.CLAMP_TO_EDGE, s = this.P.type === "float" ? A.FLOAT : A.UNSIGNED_BYTE;
|
|
161
161
|
for (let i = 0; i < this._A; i++) {
|
|
162
162
|
const B = A.createTexture();
|
|
@@ -164,7 +164,7 @@ class U {
|
|
|
164
164
|
}
|
|
165
165
|
A.bindTexture(A.TEXTURE_2D, null);
|
|
166
166
|
}
|
|
167
|
-
|
|
167
|
+
GA() {
|
|
168
168
|
const A = this.wA;
|
|
169
169
|
if (A.bindFramebuffer(A.FRAMEBUFFER, this.fA), this._A === 1) A.framebufferTexture2D(A.FRAMEBUFFER, A.COLOR_ATTACHMENT0, A.TEXTURE_2D, this.dA[0], 0);
|
|
170
170
|
else {
|
|
@@ -178,7 +178,7 @@ class U {
|
|
|
178
178
|
const t = A.checkFramebufferStatus(A.FRAMEBUFFER);
|
|
179
179
|
t !== A.FRAMEBUFFER_COMPLETE && console.error("GLFramebuffer is not complete:", t), A.bindFramebuffer(A.FRAMEBUFFER, null);
|
|
180
180
|
}
|
|
181
|
-
|
|
181
|
+
MA(A) {
|
|
182
182
|
const t = this.wA;
|
|
183
183
|
t.bindTexture(t.TEXTURE_2D, this.dA[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);
|
|
184
184
|
}
|
|
@@ -221,7 +221,7 @@ class U {
|
|
|
221
221
|
}
|
|
222
222
|
A.bindFramebuffer(A.FRAMEBUFFER, this.pA.framebuffer), A.viewport(...this.pA.viewport), F(A, this.pA.viewport), this.pA = null, this.vA && this.yA && this.bA && ((i = (s = this.vA).SA) == null || i.call(s));
|
|
223
223
|
}
|
|
224
|
-
|
|
224
|
+
kA() {
|
|
225
225
|
const A = this.wA;
|
|
226
226
|
A.deleteFramebuffer(this.fA);
|
|
227
227
|
for (const t of this.dA) A.deleteTexture(t);
|
|
@@ -232,55 +232,40 @@ class U {
|
|
|
232
232
|
get height() {
|
|
233
233
|
return this.uA;
|
|
234
234
|
}
|
|
235
|
-
get pixels() {
|
|
236
|
-
return this.IA;
|
|
237
|
-
}
|
|
238
|
-
get options() {
|
|
239
|
-
return { ...this.P };
|
|
240
|
-
}
|
|
241
|
-
get framebuffer() {
|
|
242
|
-
return this.fA;
|
|
243
|
-
}
|
|
244
|
-
get texture() {
|
|
245
|
-
return this.dA[0];
|
|
246
|
-
}
|
|
247
235
|
get textures() {
|
|
248
236
|
return [...this.dA];
|
|
249
237
|
}
|
|
250
|
-
get attachmentCount() {
|
|
251
|
-
return this._A;
|
|
252
|
-
}
|
|
253
238
|
}
|
|
254
|
-
function
|
|
239
|
+
function k(E) {
|
|
255
240
|
return typeof E == "string" ? E : E.sourceCode;
|
|
256
241
|
}
|
|
257
242
|
class T {
|
|
258
243
|
constructor(A, t, e) {
|
|
259
244
|
Q(this, "wA");
|
|
260
|
-
Q(this, "
|
|
261
|
-
Q(this, "
|
|
262
|
-
Q(this, "
|
|
263
|
-
this.wA = A, this.
|
|
245
|
+
Q(this, "zA");
|
|
246
|
+
Q(this, "LA", /* @__PURE__ */ new Map());
|
|
247
|
+
Q(this, "OA", 0);
|
|
248
|
+
this.wA = A, this.zA = this.TA(k(t), k(e)), this.UA();
|
|
264
249
|
}
|
|
265
|
-
|
|
266
|
-
const A = this.wA.getProgramParameter(this.
|
|
250
|
+
UA() {
|
|
251
|
+
const A = this.wA.getProgramParameter(this.zA, this.wA.ACTIVE_UNIFORMS);
|
|
267
252
|
for (let t = 0; t < A; t++) {
|
|
268
|
-
const e = this.wA.getActiveUniform(this.
|
|
253
|
+
const e = this.wA.getActiveUniform(this.zA, t);
|
|
269
254
|
if (e) {
|
|
270
|
-
const s = this.wA.getUniformLocation(this.
|
|
271
|
-
s && this.
|
|
255
|
+
const s = this.wA.getUniformLocation(this.zA, e.name);
|
|
256
|
+
s && this.LA.set(e.name, s);
|
|
272
257
|
}
|
|
273
258
|
}
|
|
274
259
|
}
|
|
275
|
-
|
|
276
|
-
const e = this.
|
|
260
|
+
TA(A, t) {
|
|
261
|
+
const e = this.WA(this.wA.VERTEX_SHADER, A), s = this.WA(this.wA.FRAGMENT_SHADER, t), i = this.wA.createProgram();
|
|
277
262
|
if (this.wA.attachShader(i, e), this.wA.attachShader(i, s), this.wA.linkProgram(i), !this.wA.getProgramParameter(i, this.wA.LINK_STATUS)) {
|
|
278
263
|
const B = this.wA.getProgramInfoLog(i);
|
|
279
264
|
throw Error("Shader program link error: " + B);
|
|
280
265
|
}
|
|
281
266
|
return this.wA.deleteShader(e), this.wA.deleteShader(s), i;
|
|
282
267
|
}
|
|
283
|
-
|
|
268
|
+
WA(A, t) {
|
|
284
269
|
const e = this.wA.createShader(A);
|
|
285
270
|
if (this.wA.shaderSource(e, t), this.wA.compileShader(e), !this.wA.getShaderParameter(e, this.wA.COMPILE_STATUS)) {
|
|
286
271
|
const s = this.wA.getShaderInfoLog(e);
|
|
@@ -288,23 +273,39 @@ class T {
|
|
|
288
273
|
}
|
|
289
274
|
return e;
|
|
290
275
|
}
|
|
291
|
-
|
|
292
|
-
this.wA.useProgram(this.
|
|
276
|
+
HA() {
|
|
277
|
+
this.wA.useProgram(this.zA), this.KA();
|
|
293
278
|
}
|
|
294
279
|
KA() {
|
|
295
|
-
this.
|
|
280
|
+
this.OA = 0;
|
|
296
281
|
}
|
|
297
282
|
JA(A) {
|
|
298
283
|
for (const [t, e] of Object.entries(A)) this.VA(t, e);
|
|
299
284
|
}
|
|
300
285
|
ZA(A) {
|
|
301
|
-
return this.
|
|
286
|
+
return this.LA.has(A);
|
|
302
287
|
}
|
|
303
288
|
VA(A, t) {
|
|
304
|
-
|
|
289
|
+
var s;
|
|
290
|
+
const e = this.LA.get(A);
|
|
305
291
|
if (e) if (typeof t == "number") this.wA.uniform1f(e, t);
|
|
306
292
|
else if (typeof t == "boolean") this.wA.uniform1i(e, t ? 1 : 0);
|
|
307
|
-
else if (Array.isArray(t))
|
|
293
|
+
else if (Array.isArray(t)) if (Array.isArray(t[0])) {
|
|
294
|
+
const i = t, B = ((s = i[0]) == null ? void 0 : s.length) || 0, r = i.flat();
|
|
295
|
+
switch (B) {
|
|
296
|
+
case 2:
|
|
297
|
+
this.wA.uniform2fv(e, r);
|
|
298
|
+
break;
|
|
299
|
+
case 3:
|
|
300
|
+
this.wA.uniform3fv(e, r);
|
|
301
|
+
break;
|
|
302
|
+
case 4:
|
|
303
|
+
this.wA.uniform4fv(e, r);
|
|
304
|
+
break;
|
|
305
|
+
default:
|
|
306
|
+
return void console.warn(`Unsupported vector array length for '${A}': ${B}`);
|
|
307
|
+
}
|
|
308
|
+
} else switch (t.length) {
|
|
308
309
|
case 2:
|
|
309
310
|
this.wA.uniform2f(e, t[0], t[1]);
|
|
310
311
|
break;
|
|
@@ -318,28 +319,25 @@ class T {
|
|
|
318
319
|
return;
|
|
319
320
|
}
|
|
320
321
|
else if (t instanceof WebGLTexture) {
|
|
321
|
-
const
|
|
322
|
-
this.wA.uniform1i(e,
|
|
322
|
+
const i = this.NA();
|
|
323
|
+
this.wA.uniform1i(e, i), this.wA.activeTexture(this.wA.TEXTURE0 + i), this.wA.bindTexture(this.wA.TEXTURE_2D, t);
|
|
323
324
|
} else if (t instanceof U) {
|
|
324
|
-
const
|
|
325
|
-
this.wA.uniform1i(e,
|
|
326
|
-
} else if (typeof t == "object" && "texture" in t) {
|
|
327
|
-
const s = this.NA();
|
|
328
|
-
this.wA.uniform1i(e, s), this.wA.activeTexture(this.wA.TEXTURE0 + s), this.wA.bindTexture(this.wA.TEXTURE_2D, t.texture);
|
|
325
|
+
const i = this.NA();
|
|
326
|
+
this.wA.uniform1i(e, i), this.wA.activeTexture(this.wA.TEXTURE0 + i), this.wA.bindTexture(this.wA.TEXTURE_2D, t.textures[0]);
|
|
329
327
|
} else console.warn(`Unsupported uniform type for '${A}':`, typeof t);
|
|
330
328
|
}
|
|
331
329
|
NA() {
|
|
332
|
-
return this.
|
|
330
|
+
return this.OA++;
|
|
333
331
|
}
|
|
334
332
|
get XA() {
|
|
335
|
-
return this.
|
|
333
|
+
return this.zA;
|
|
336
334
|
}
|
|
337
|
-
|
|
338
|
-
this.wA.deleteProgram(this.
|
|
335
|
+
kA() {
|
|
336
|
+
this.wA.deleteProgram(this.zA);
|
|
339
337
|
}
|
|
340
338
|
}
|
|
341
339
|
const S = `#version 300 es
|
|
342
|
-
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 k;uniform vec2
|
|
340
|
+
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 k;uniform vec2 t;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 A(float B){float C=sin(B),D=cos(B);return mat3(1,0,0,0,D,-C,0,C,D);}mat3 E(float B){float C=sin(B),D=cos(B);return mat3(D,0,C,0,1,0,-C,0,D);}mat3 F(float B){float C=sin(B),D=cos(B);return mat3(D,-C,0,C,D,0,0,0,1);}vec2 G(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return M*L*H+3.*M*t*I+3.*L*N*J+N*t*K;}vec2 O(float t,vec2 H,vec2 I,vec2 J,vec2 K){float L=1.-t,M=L*L,N=t*t;return-3.*M*H+3.*M*I-6.*L*t*I+6.*L*t*J-3.*N*J+3.*N*K;}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 P;bool Q=length(a_instanceBezierCP1)+length(a_instanceBezierCP2)+length(a_instanceBezierStart)+length(a_instanceBezierEnd)>0.;bool R=a_instanceArcAngles.x!=0.||a_instanceArcAngles.y!=0.;if(Q){float t=a_position.x;vec2 S=G(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);vec2 T=O(t,a_instanceBezierStart,a_instanceBezierCP1,a_instanceBezierCP2,a_instanceBezierEnd);float U=length(T);T=U>0.?T/U:vec2(1,0);P=S+vec2(-T.y,T.x)*a_position.y*a_instanceSize.y;}else if(R){float C=a_instanceArcAngles.x,V=a_instanceArcAngles.y;C=mod(C,6.28318530718);if(C<0.)C+=6.28318530718;V=mod(V,6.28318530718);if(V<0.)V+=6.28318530718;float W=C-V;if(W<=0.)W+=6.28318530718;float X=C-a_position.x*W;vec2 Y=vec2(cos(X),sin(X))*a_position.y;P=Y*a_instanceSize*.5+a_instanceSize*.5+a_instancePosition;}else{P=a_position*a_instanceSize+a_instancePosition;}vec2 Z=(P/t)*2.-1.;Z.y=-Z.y;if(length(a_instanceGlobalRotation)>0.){vec3 a=vec3(Z-a_instanceRotationCenter,0);a.x*=k;if(a_instanceGlobalRotation.x!=0.)a=A(-a_instanceGlobalRotation.x)*a;if(a_instanceGlobalRotation.y!=0.)a=E(-a_instanceGlobalRotation.y)*a;if(a_instanceGlobalRotation.z!=0.)a=F(-a_instanceGlobalRotation.z)*a;a.x/=k;Z=a.xy+a_instanceRotationCenter;}gl_Position=vec4(Z,0,1);}`;
|
|
343
341
|
class eA {
|
|
344
342
|
constructor(A) {
|
|
345
343
|
Q(this, "jA", /* @__PURE__ */ new Map());
|
|
@@ -370,8 +368,8 @@ precision highp float;in vec2 v_uv;in vec3 v_character;in vec4 v_primaryColor;in
|
|
|
370
368
|
st(A, t) {
|
|
371
369
|
return new T(this.wA, A, t);
|
|
372
370
|
}
|
|
373
|
-
|
|
374
|
-
for (const A of this.jA.values()) A.
|
|
371
|
+
kA() {
|
|
372
|
+
for (const A of this.jA.values()) A.kA();
|
|
375
373
|
this.jA.clear();
|
|
376
374
|
}
|
|
377
375
|
}
|
|
@@ -399,7 +397,7 @@ class sA {
|
|
|
399
397
|
gt() {
|
|
400
398
|
this.wA.bindVertexArray(null);
|
|
401
399
|
}
|
|
402
|
-
|
|
400
|
+
kA() {
|
|
403
401
|
const A = this.wA;
|
|
404
402
|
for (const [, t] of this.it) for (const [, e] of t) e && A.deleteVertexArray(e);
|
|
405
403
|
this.it.clear();
|
|
@@ -416,7 +414,7 @@ class iA {
|
|
|
416
414
|
}
|
|
417
415
|
Ct(A, t, e) {
|
|
418
416
|
const { shader: s } = A, i = G(this.wA) || this.wA.getParameter(this.wA.VIEWPORT);
|
|
419
|
-
s.JA({ k: i[2] / i[3],
|
|
417
|
+
s.JA({ k: i[2] / i[3], t: [i[2], i[3]] });
|
|
420
418
|
const B = (o) => {
|
|
421
419
|
if (!o || !o.lt()) return;
|
|
422
420
|
const a = o.unitGeometry, g = o.unitBuffer;
|
|
@@ -440,16 +438,16 @@ class iA {
|
|
|
440
438
|
}
|
|
441
439
|
dt(A, t, e, s) {
|
|
442
440
|
const { x: i, y: B, width: r, height: n, shader: o, uniforms: a } = t;
|
|
443
|
-
if (o === this.vt()) return this.yt(s, o, a, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), void A.shader.
|
|
441
|
+
if (o === this.vt()) return this.yt(s, o, a, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), void A.shader.HA();
|
|
444
442
|
const g = this.bt(Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)));
|
|
445
443
|
g.begin(), this.yt(s, o, a, 0, 0, g.width, g.height, {}), g.end();
|
|
446
444
|
const h = this.vt(), c = { l: g.textures[0], m: g.textures[1], n: g.textures[2], o: g.textures[3], p: g.textures[4], q: [g.width, g.height] };
|
|
447
|
-
this.yt(s, h, c, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), A.shader.
|
|
445
|
+
this.yt(s, h, c, Math.floor(i), Math.floor(B), Math.max(1, Math.floor(r)), Math.max(1, Math.floor(n)), e), A.shader.HA();
|
|
448
446
|
}
|
|
449
447
|
yt(A, t, e, s, i, B, r, n) {
|
|
450
|
-
t.
|
|
448
|
+
t.HA(), t.JA(e);
|
|
451
449
|
const o = this.wA.getParameter(this.wA.VIEWPORT);
|
|
452
|
-
if (t.JA({ k: o[2] / o[3],
|
|
450
|
+
if (t.JA({ k: o[2] / o[3], t: [o[2], o[3]] }), A.ft(), A._t({ x: s, y: i, width: B, height: r }, n), A.lt()) {
|
|
453
451
|
const a = A.unitGeometry, g = A.unitBuffer;
|
|
454
452
|
try {
|
|
455
453
|
this.ot.Bt(t.XA, A.type + "", a, g), A.batch.Dt(t), A.batch.Pt(a.ut, a.It);
|
|
@@ -462,22 +460,22 @@ class iA {
|
|
|
462
460
|
return this.vA.At();
|
|
463
461
|
}
|
|
464
462
|
bt(A, t) {
|
|
465
|
-
return this.ht && this.ct && this.ct.w === A && this.ct.h === t || (this.ht && this.ht.
|
|
463
|
+
return this.ht && this.ct && this.ct.w === A && this.ct.h === t || (this.ht && this.ht.kA(), this.ht = new U(this.wA, A, t, 5), this.ct = { w: A, h: t }), this.ht;
|
|
466
464
|
}
|
|
467
465
|
}
|
|
468
466
|
class BA {
|
|
469
467
|
constructor() {
|
|
470
|
-
Q(this, "
|
|
471
|
-
Q(this, "
|
|
472
|
-
Q(this, "
|
|
468
|
+
Q(this, "$t", []);
|
|
469
|
+
Q(this, "Gt", 1);
|
|
470
|
+
Q(this, "Mt", 0);
|
|
473
471
|
}
|
|
474
472
|
xt(A) {
|
|
475
|
-
if (this
|
|
476
|
-
const e = { id: this.
|
|
477
|
-
this.
|
|
473
|
+
if (this.Mt >= this.$t.length) {
|
|
474
|
+
const e = { id: this.Gt++, type: A, params: {}, state: { V: 1, Z: 0, N: 0, X: 0, character: [0, 0, 0], charColor: [1, 1, 1, 1], bgColor: [0, 0, 0, 1], flipHorizontally: !1, flipVertically: !1, invert: !1, charRotation: [0, 0] } };
|
|
475
|
+
this.$t.push(e);
|
|
478
476
|
}
|
|
479
|
-
const t = this
|
|
480
|
-
switch (t.id = this.
|
|
477
|
+
const t = this.$t[this.Mt];
|
|
478
|
+
switch (t.id = this.Gt++, t.type = A, A) {
|
|
481
479
|
case D.RECTANGLE:
|
|
482
480
|
case D.ELLIPSE:
|
|
483
481
|
t.params && "width" in t.params || (t.params = { x: 0, y: 0, width: 0, height: 0 });
|
|
@@ -500,7 +498,7 @@ class BA {
|
|
|
500
498
|
default:
|
|
501
499
|
t.params || (t.params = {});
|
|
502
500
|
}
|
|
503
|
-
return this
|
|
501
|
+
return this.Mt++, t;
|
|
504
502
|
}
|
|
505
503
|
Yt(A, t, e, s, i) {
|
|
506
504
|
const B = this.xt(D.RECTANGLE);
|
|
@@ -518,51 +516,51 @@ class BA {
|
|
|
518
516
|
const B = this.xt(D.ELLIPSE);
|
|
519
517
|
return B.params.x = A, B.params.y = t, B.params.width = e, B.params.height = s, i.BA(B.state), B.id;
|
|
520
518
|
}
|
|
521
|
-
|
|
519
|
+
kt(A, t, e, s, i, B, r) {
|
|
522
520
|
const n = this.xt(D.ARC);
|
|
523
521
|
return n.params.x = A, n.params.y = t, n.params.width = e, n.params.height = s, n.params.start = i, n.params.stop = B, r.BA(n.state), n.id;
|
|
524
522
|
}
|
|
525
|
-
|
|
523
|
+
zt(A, t, e, s, i, B, r) {
|
|
526
524
|
const n = this.xt(D.TRIANGLE);
|
|
527
525
|
return n.params.x1 = A, n.params.y1 = t, n.params.x2 = e, n.params.y2 = s, n.params.x3 = i, n.params.y3 = B, r.BA(n.state), n.id;
|
|
528
526
|
}
|
|
529
|
-
|
|
527
|
+
Lt(A, t, e, s, i, B, r, n, o, a) {
|
|
530
528
|
const g = this.xt(D.BEZIER_CURVE);
|
|
531
529
|
return g.params.x1 = A, g.params.y1 = t, g.params.cp1x = e, g.params.cp1y = s, g.params.cp2x = i, g.params.cp2y = B, g.params.x2 = r, g.params.y2 = n, g.params.thickness = o, a.BA(g.state), g.id;
|
|
532
530
|
}
|
|
533
531
|
get length() {
|
|
534
|
-
return this
|
|
532
|
+
return this.Mt;
|
|
535
533
|
}
|
|
536
534
|
get isEmpty() {
|
|
537
|
-
return this
|
|
535
|
+
return this.Mt === 0;
|
|
538
536
|
}
|
|
539
|
-
|
|
540
|
-
this
|
|
537
|
+
Ot() {
|
|
538
|
+
this.Mt = 0;
|
|
541
539
|
}
|
|
542
540
|
[Symbol.iterator]() {
|
|
543
541
|
let A = 0;
|
|
544
|
-
const t = this
|
|
542
|
+
const t = this.Mt, e = this.$t;
|
|
545
543
|
return { next: () => A < t ? { value: e[A++], done: !1 } : { value: void 0, done: !0 } };
|
|
546
544
|
}
|
|
547
545
|
}
|
|
548
|
-
const
|
|
549
|
-
static
|
|
546
|
+
const v = class v {
|
|
547
|
+
static Tt(A, t, e = 0) {
|
|
550
548
|
var B, r, n, o, a, g, h, c, l, C;
|
|
551
|
-
const s = t || new Float32Array(
|
|
549
|
+
const s = t || new Float32Array(v.FLOATS_PER_INSTANCE);
|
|
552
550
|
let i = e;
|
|
553
551
|
return s[i++] = A.position[0], s[i++] = A.position[1], s[i++] = A.size[0], s[i++] = A.size[1], s[i++] = A.AA[0], s[i++] = A.AA[1], s[i++] = A.AA[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++] = ((B = A.arcAngles) == null ? void 0 : B[0]) || 0, s[i++] = ((r = A.arcAngles) == null ? void 0 : r[1]) || 0, s[i++] = ((n = A.bezierControlPoint1) == null ? void 0 : n[0]) || 0, s[i++] = ((o = A.bezierControlPoint1) == null ? void 0 : o[1]) || 0, s[i++] = ((a = A.bezierControlPoint2) == null ? void 0 : a[0]) || 0, s[i++] = ((g = A.bezierControlPoint2) == null ? void 0 : g[1]) || 0, s[i++] = ((h = A.bezierStartPoint) == null ? void 0 : h[0]) || 0, s[i++] = ((c = A.bezierStartPoint) == null ? void 0 : c[1]) || 0, s[i++] = ((l = A.bezierEndPoint) == null ? void 0 : l[0]) || 0, s[i++] = ((C = A.bezierEndPoint) == null ? void 0 : C[1]) || 0, s;
|
|
554
552
|
}
|
|
555
|
-
static
|
|
556
|
-
const t = A.length *
|
|
553
|
+
static Ut(A) {
|
|
554
|
+
const t = A.length * v.FLOATS_PER_INSTANCE, e = new Float32Array(t);
|
|
557
555
|
for (let s = 0; s < A.length; s++) {
|
|
558
|
-
const i = s *
|
|
559
|
-
|
|
556
|
+
const i = s * v.FLOATS_PER_INSTANCE;
|
|
557
|
+
v.Tt(A[s], e, i);
|
|
560
558
|
}
|
|
561
559
|
return e;
|
|
562
560
|
}
|
|
563
561
|
};
|
|
564
|
-
Q(
|
|
565
|
-
let x =
|
|
562
|
+
Q(v, "BYTES_PER_INSTANCE", 140), Q(v, "FLOATS_PER_INSTANCE", 35);
|
|
563
|
+
let x = v;
|
|
566
564
|
const P = class P {
|
|
567
565
|
};
|
|
568
566
|
Q(P, "STRIDE", x.BYTES_PER_INSTANCE), Q(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 } });
|
|
@@ -570,45 +568,45 @@ let Y = P;
|
|
|
570
568
|
class rA {
|
|
571
569
|
constructor(A, t = 1e3, e = 1.5) {
|
|
572
570
|
Q(this, "wA");
|
|
573
|
-
Q(this, "
|
|
574
|
-
Q(this, "
|
|
571
|
+
Q(this, "Wt", []);
|
|
572
|
+
Q(this, "Ht");
|
|
575
573
|
Q(this, "Kt");
|
|
576
574
|
Q(this, "Jt", null);
|
|
577
575
|
Q(this, "Vt", !0);
|
|
578
576
|
Q(this, "Zt", 0);
|
|
579
577
|
Q(this, "Nt", /* @__PURE__ */ new Map());
|
|
580
578
|
Q(this, "Xt", null);
|
|
581
|
-
this.wA = A, this.
|
|
579
|
+
this.wA = A, this.Ht = t, this.Kt = e, this.jt();
|
|
582
580
|
}
|
|
583
581
|
_t(A) {
|
|
584
|
-
const t = this.
|
|
585
|
-
return this.
|
|
582
|
+
const t = this.Wt.length;
|
|
583
|
+
return this.Wt.push(A), this.Vt = !0, t;
|
|
586
584
|
}
|
|
587
585
|
get count() {
|
|
588
|
-
return this.
|
|
586
|
+
return this.Wt.length;
|
|
589
587
|
}
|
|
590
588
|
get isEmpty() {
|
|
591
|
-
return this.
|
|
589
|
+
return this.Wt.length === 0;
|
|
592
590
|
}
|
|
593
591
|
clear() {
|
|
594
|
-
this.
|
|
592
|
+
this.Wt.length = 0, this.Vt = !0;
|
|
595
593
|
}
|
|
596
594
|
qt(A) {
|
|
597
|
-
if (A <= this.
|
|
595
|
+
if (A <= this.Ht) return;
|
|
598
596
|
const t = Math.ceil(A * this.Kt);
|
|
599
|
-
this.
|
|
597
|
+
this.Ht = t, this.jt();
|
|
600
598
|
}
|
|
601
599
|
jt() {
|
|
602
600
|
const A = this.wA;
|
|
603
601
|
this.Jt && A.deleteBuffer(this.Jt), this.Jt = A.createBuffer();
|
|
604
|
-
const t = this.
|
|
602
|
+
const t = this.Ht * x.BYTES_PER_INSTANCE;
|
|
605
603
|
A.bindBuffer(A.ARRAY_BUFFER, this.Jt), A.bufferData(A.ARRAY_BUFFER, t, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Vt = !0, this.Zt = 0;
|
|
606
604
|
}
|
|
607
605
|
Ae() {
|
|
608
|
-
if (!this.Vt || this.
|
|
609
|
-
const A = this.wA, t = this.
|
|
606
|
+
if (!this.Vt || this.Wt.length === 0) return;
|
|
607
|
+
const A = this.wA, t = this.Wt.length;
|
|
610
608
|
this.qt(t), (!this.Xt || this.Xt.length < t * x.FLOATS_PER_INSTANCE) && (this.Xt = new Float32Array(t * x.FLOATS_PER_INSTANCE));
|
|
611
|
-
const e = x.
|
|
609
|
+
const e = x.Ut(this.Wt);
|
|
612
610
|
A.bindBuffer(A.ARRAY_BUFFER, this.Jt), t <= this.Zt ? A.bufferSubData(A.ARRAY_BUFFER, 0, e) : A.bufferData(A.ARRAY_BUFFER, e, A.DYNAMIC_DRAW), A.bindBuffer(A.ARRAY_BUFFER, null), this.Vt = !1, this.Zt = t;
|
|
613
611
|
}
|
|
614
612
|
te(A) {
|
|
@@ -625,7 +623,7 @@ class rA {
|
|
|
625
623
|
return t;
|
|
626
624
|
}
|
|
627
625
|
Dt(A) {
|
|
628
|
-
if (!this.Jt || this.
|
|
626
|
+
if (!this.Jt || this.Wt.length === 0) return;
|
|
629
627
|
const t = this.wA, e = A.XA;
|
|
630
628
|
this.Ae();
|
|
631
629
|
const s = this.te(e);
|
|
@@ -640,11 +638,11 @@ class rA {
|
|
|
640
638
|
for (const [, s] of e) t.disableVertexAttribArray(s), t.vertexAttribDivisor(s, 0);
|
|
641
639
|
}
|
|
642
640
|
Pt(A, t) {
|
|
643
|
-
this.
|
|
641
|
+
this.Wt.length !== 0 && this.wA.drawArraysInstanced(A, 0, t, this.Wt.length);
|
|
644
642
|
}
|
|
645
|
-
|
|
643
|
+
kA() {
|
|
646
644
|
const A = this.wA;
|
|
647
|
-
this.Jt && (A.deleteBuffer(this.Jt), this.Jt = null), this.
|
|
645
|
+
this.Jt && (A.deleteBuffer(this.Jt), this.Jt = null), this.Wt.length = 0, this.Nt.clear(), this.Xt = null;
|
|
648
646
|
}
|
|
649
647
|
}
|
|
650
648
|
class b {
|
|
@@ -677,8 +675,8 @@ class b {
|
|
|
677
675
|
lt() {
|
|
678
676
|
return !this.ee.isEmpty;
|
|
679
677
|
}
|
|
680
|
-
|
|
681
|
-
this.ee.
|
|
678
|
+
kA() {
|
|
679
|
+
this.ee.kA(), this.Be && (this.wA.deleteBuffer(this.Be), this.Be = null);
|
|
682
680
|
}
|
|
683
681
|
Ee(A, t, e, s, i) {
|
|
684
682
|
const B = this.re(A, t, e, s, i.rotationX || 0, i.rotationY || 0, i.rotationZ || 0);
|
|
@@ -795,7 +793,7 @@ class uA {
|
|
|
795
793
|
Q(this, "Pe");
|
|
796
794
|
Q(this, "ue");
|
|
797
795
|
Q(this, "K", []);
|
|
798
|
-
this.wA = A, this.ae = new eA(A), this.ue = new
|
|
796
|
+
this.wA = A, this.ae = new eA(A), this.ue = new X(), this.De = new iA(A, this), this.Pe = new BA(), this.Ce = A.createBuffer(), F(this.wA, [0, 0, this.wA.canvas.width, this.wA.canvas.height]);
|
|
799
797
|
}
|
|
800
798
|
Ie(A) {
|
|
801
799
|
let t = this.le.get(A);
|
|
@@ -804,7 +802,7 @@ class uA {
|
|
|
804
802
|
return t = (0, { [D.RECTANGLE]: () => new QA(this.wA, e), [D.LINE]: () => new oA(this.wA, e), [D.ELLIPSE]: () => new aA(this.wA, e), [D.ARC]: () => new cA(this.wA, e), [D.TRIANGLE]: () => new CA(this.wA, e), [D.BEZIER_CURVE]: () => new PA(this.wA, e) }[A])(), this.le.set(A, t), t;
|
|
805
803
|
}
|
|
806
804
|
we(A) {
|
|
807
|
-
this.oe !== A && (this.oe = A, A.
|
|
805
|
+
this.oe !== A && (this.oe = A, A.HA());
|
|
808
806
|
}
|
|
809
807
|
fe(A, t) {
|
|
810
808
|
return this.ae.st(A, t);
|
|
@@ -850,23 +848,23 @@ class uA {
|
|
|
850
848
|
be(A, t, e, s) {
|
|
851
849
|
this.Pe.St(A, t, e, s, this.ue);
|
|
852
850
|
}
|
|
853
|
-
|
|
854
|
-
this.Pe.
|
|
851
|
+
$e(A, t, e, s, i, B) {
|
|
852
|
+
this.Pe.zt(A, t, e, s, i, B, this.ue);
|
|
855
853
|
}
|
|
856
|
-
|
|
854
|
+
Ge(A, t, e, s, i, B, r, n) {
|
|
857
855
|
const o = this.ue.lineWeight;
|
|
858
|
-
this.Pe.
|
|
856
|
+
this.Pe.Lt(A, t, e, s, i, B, r, n, o, this.ue);
|
|
859
857
|
}
|
|
860
|
-
|
|
858
|
+
Me(A, t, e = 1, s = {}) {
|
|
861
859
|
return new U(this.wA, A, t, e, s, this, !0);
|
|
862
860
|
}
|
|
863
861
|
xe(A, t, e, s, i, B) {
|
|
864
|
-
this.Pe.
|
|
862
|
+
this.Pe.kt(A, t, e, s, i, B, this.ue);
|
|
865
863
|
}
|
|
866
864
|
Ye(A, t = A, e = A, s = 255) {
|
|
867
|
-
this.state.DA(A, t, e, s), this.
|
|
865
|
+
this.state.DA(A, t, e, s), this.Ot(A / 255, t / 255, e / 255, s / 255);
|
|
868
866
|
}
|
|
869
|
-
|
|
867
|
+
Ot(A = 0, t = 0, e = 0, s = 0) {
|
|
870
868
|
this.wA.clearColor(A, t, e, s), this.wA.clear(this.wA.COLOR_BUFFER_BIT);
|
|
871
869
|
}
|
|
872
870
|
Fe() {
|
|
@@ -891,12 +889,12 @@ class uA {
|
|
|
891
889
|
const i = /* @__PURE__ */ new Set();
|
|
892
890
|
for (const B of this.Pe) B.type === D.CUSTOM ? i.add(D.RECTANGLE) : i.add(B.type);
|
|
893
891
|
for (const B of i) B !== D.CUSTOM && this.Ie(B);
|
|
894
|
-
this.De.Ct(s, this.Pe, this.le), this.Pe.
|
|
892
|
+
this.De.Ct(s, this.Pe, this.le), this.Pe.Ot();
|
|
895
893
|
}
|
|
896
|
-
|
|
897
|
-
this.wA.deleteBuffer(this.Ce), this.Pe.
|
|
898
|
-
for (const A of this.le.values()) A.
|
|
899
|
-
this.ae.
|
|
894
|
+
kA() {
|
|
895
|
+
this.wA.deleteBuffer(this.Ce), this.Pe.Ot();
|
|
896
|
+
for (const A of this.le.values()) A.kA();
|
|
897
|
+
this.ae.kA();
|
|
900
898
|
}
|
|
901
899
|
}
|
|
902
900
|
const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int16[0]), readUshort: (E, A) => E[A] << 8 | E[A + 1], readUshorts(E, A, t) {
|
|
@@ -978,7 +976,7 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
978
976
|
for (; g < n; ) o = s.readUshort(E, A + (g << 2)), a = s.readShort(E, A + (g << 2) + 2), i.push(o), B.push(a), g++;
|
|
979
977
|
for (; g < r; ) i.push(o), B.push(a), g++;
|
|
980
978
|
return { aWidth: i, lsBearing: B };
|
|
981
|
-
} },
|
|
979
|
+
} }, N = { cmap: wA, head: IA, hhea: fA, maxp: { parseTab(E, A, t) {
|
|
982
980
|
const e = u;
|
|
983
981
|
return e.readUint(E, A), A += 4, { numGlyphs: e.readUshort(E, A) };
|
|
984
982
|
} }, hmtx: dA, loca: { parseTab(E, A, t, e) {
|
|
@@ -993,7 +991,7 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
993
991
|
}, Re(E, A) {
|
|
994
992
|
const t = u, e = E.Se, s = E.loca;
|
|
995
993
|
if (s[A] === s[A + 1]) return null;
|
|
996
|
-
const i = m.findTable(e, "glyf", E.
|
|
994
|
+
const i = m.findTable(e, "glyf", E.ke);
|
|
997
995
|
if (!i) return null;
|
|
998
996
|
let B = i[0] + s[A];
|
|
999
997
|
const r = {};
|
|
@@ -1029,7 +1027,7 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
1029
1027
|
} else r.parts = [], r.endPts = [], r.flags = [], r.xs = [], r.ys = [];
|
|
1030
1028
|
return r;
|
|
1031
1029
|
} } }, m = { parse: (E) => [((A, t, e, s) => {
|
|
1032
|
-
const i =
|
|
1030
|
+
const i = N, B = { Se: A, ze: t, ke: e };
|
|
1033
1031
|
for (const r in i) {
|
|
1034
1032
|
const n = r, o = m.findTable(A, n, e);
|
|
1035
1033
|
if (o) {
|
|
@@ -1050,24 +1048,24 @@ const u = { readShort: (E, A) => (u.t.uint16[0] = E[A] << 8 | E[A + 1], u.t.int1
|
|
|
1050
1048
|
i += 16;
|
|
1051
1049
|
}
|
|
1052
1050
|
return null;
|
|
1053
|
-
}, T:
|
|
1051
|
+
}, T: N, B: u };
|
|
1054
1052
|
class _ {
|
|
1055
1053
|
constructor() {
|
|
1056
|
-
Q(this, "Oe", /* @__PURE__ */ new Map());
|
|
1057
1054
|
Q(this, "Le", /* @__PURE__ */ new Map());
|
|
1055
|
+
Q(this, "Oe", /* @__PURE__ */ new Map());
|
|
1058
1056
|
}
|
|
1059
|
-
|
|
1060
|
-
const e = `${this.
|
|
1061
|
-
if (this.
|
|
1057
|
+
Te(A, t) {
|
|
1058
|
+
const e = `${this.Ue(A)}_${t}`;
|
|
1059
|
+
if (this.Le.has(e)) return this.Le.get(e);
|
|
1062
1060
|
const s = A.cmap;
|
|
1063
|
-
if (!s || !s.tables) return this.
|
|
1061
|
+
if (!s || !s.tables) return this.Le.set(e, 0), 0;
|
|
1064
1062
|
let i = 0;
|
|
1065
|
-
for (const B of s.tables) if (B.format === 4 ? i = this.
|
|
1066
|
-
return this.
|
|
1063
|
+
for (const B of s.tables) if (B.format === 4 ? i = this.We(t, B) : B.format === 12 && (i = this.He(t, B)), i > 0) break;
|
|
1064
|
+
return this.Le.set(e, i), i;
|
|
1067
1065
|
}
|
|
1068
1066
|
Ke(A, t) {
|
|
1069
1067
|
const e = t.codePointAt(0);
|
|
1070
|
-
return e === void 0 ? 0 : this.
|
|
1068
|
+
return e === void 0 ? 0 : this.Te(A, e);
|
|
1071
1069
|
}
|
|
1072
1070
|
Je(A, t) {
|
|
1073
1071
|
const e = A.hmtx;
|
|
@@ -1078,12 +1076,12 @@ class _ {
|
|
|
1078
1076
|
return { ascender: s, descender: i, lineGap: B, lineHeight: s - i + B, unitsPerEm: A.head.unitsPerEm, scale: e };
|
|
1079
1077
|
}
|
|
1080
1078
|
Ze() {
|
|
1081
|
-
this.
|
|
1079
|
+
this.Le.clear(), this.Oe.clear();
|
|
1082
1080
|
}
|
|
1083
|
-
|
|
1084
|
-
return `${A.
|
|
1081
|
+
Ue(A) {
|
|
1082
|
+
return `${A.ke}_${A.Se.length}`;
|
|
1085
1083
|
}
|
|
1086
|
-
|
|
1084
|
+
We(A, t) {
|
|
1087
1085
|
const e = t.endCount.length;
|
|
1088
1086
|
let s = -1;
|
|
1089
1087
|
for (let i = 0; i < e; i++) if (A <= t.endCount[i]) {
|
|
@@ -1101,7 +1099,7 @@ class _ {
|
|
|
1101
1099
|
}
|
|
1102
1100
|
return 0;
|
|
1103
1101
|
}
|
|
1104
|
-
|
|
1102
|
+
He(A, t) {
|
|
1105
1103
|
const e = t.groups.length / 3;
|
|
1106
1104
|
for (let s = 0; s < e; s++) {
|
|
1107
1105
|
const i = t.groups[3 * s], B = t.groups[3 * s + 1], r = t.groups[3 * s + 2];
|
|
@@ -1206,7 +1204,7 @@ class mA {
|
|
|
1206
1204
|
return this.Es.ts(A, t);
|
|
1207
1205
|
}
|
|
1208
1206
|
}
|
|
1209
|
-
class
|
|
1207
|
+
class vA {
|
|
1210
1208
|
constructor(A) {
|
|
1211
1209
|
Q(this, "rs");
|
|
1212
1210
|
Q(this, "ns");
|
|
@@ -1217,8 +1215,8 @@ class yA {
|
|
|
1217
1215
|
createTextureAtlas(A, t, e, s) {
|
|
1218
1216
|
const i = A.length, B = Math.ceil(Math.sqrt(i)), r = Math.ceil(i / B), n = t.width * B, o = t.height * r, a = typeof s == "object" ? s : null;
|
|
1219
1217
|
this.hs(n, o), this.cs(A, t, B, e, a);
|
|
1220
|
-
const g = this.vA
|
|
1221
|
-
return g
|
|
1218
|
+
const g = this.vA.Me(n, o, 1, { filter: "nearest" });
|
|
1219
|
+
return g.MA(this.rs), { framebuffer: g, columns: B, rows: r };
|
|
1222
1220
|
}
|
|
1223
1221
|
hs(A, t) {
|
|
1224
1222
|
this.rs.width = A, this.rs.height = t, this.rs.style.width = A + "px", this.rs.style.height = A + "px", this.ns.imageSmoothingEnabled = !1, this.rs.style.imageRendering = "pixelated", this.ns.fillStyle = "black", this.ns.fillRect(0, 0, A, t), this.ns.textBaseline = "top", this.ns.textAlign = "left", this.ns.fillStyle = "white";
|
|
@@ -1228,12 +1226,12 @@ class yA {
|
|
|
1228
1226
|
for (let r = 0; r < A.length; r++) {
|
|
1229
1227
|
const n = r % e, o = Math.floor(r / e), a = A[r].character, g = this.Cs(i, a);
|
|
1230
1228
|
if (!g) continue;
|
|
1231
|
-
const h = a.codePointAt(0) || 0, c = this.gs.
|
|
1229
|
+
const h = a.codePointAt(0) || 0, c = this.gs.Te(i, h), l = this.ls(i, c) * B, C = n * t.width, f = o * t.height, w = C + 0.5 * t.width, d = f + 0.5 * t.height, p = Math.round(w - 0.5 * t.width), R = Math.round(d - 0.5 * s), Z = p + 0.5 * (t.width - l), j = R + i.hhea.ascender * B;
|
|
1232
1230
|
this.Ds(g, Z, j, B);
|
|
1233
1231
|
}
|
|
1234
1232
|
}
|
|
1235
1233
|
Cs(A, t) {
|
|
1236
|
-
const e = t.codePointAt(0) || 0, s = this.gs.
|
|
1234
|
+
const e = t.codePointAt(0) || 0, s = this.gs.Te(A, e);
|
|
1237
1235
|
if (s === 0) return null;
|
|
1238
1236
|
if (A.glyf && A.glyf[s] !== null) return A.glyf[s];
|
|
1239
1237
|
if (m && m.T && m.T.glyf) {
|
|
@@ -1282,7 +1280,7 @@ class yA {
|
|
|
1282
1280
|
this.ns.fill();
|
|
1283
1281
|
}
|
|
1284
1282
|
}
|
|
1285
|
-
class
|
|
1283
|
+
class yA {
|
|
1286
1284
|
constructor() {
|
|
1287
1285
|
Q(this, "Ne");
|
|
1288
1286
|
this.Ne = new _();
|
|
@@ -1319,7 +1317,7 @@ class xA {
|
|
|
1319
1317
|
const i = e.codePointAt(0) || 0, B = this.Ps(s);
|
|
1320
1318
|
let r = 0;
|
|
1321
1319
|
if (t.hmtx && t.hmtx.aWidth) {
|
|
1322
|
-
const n = this.gs.
|
|
1320
|
+
const n = this.gs.Te(t, i);
|
|
1323
1321
|
n > 0 && t.hmtx.aWidth[n] !== void 0 && (r = t.hmtx.aWidth[n]);
|
|
1324
1322
|
}
|
|
1325
1323
|
return { character: e, unicode: i, color: B, advanceWidth: r };
|
|
@@ -1346,12 +1344,12 @@ class bA {
|
|
|
1346
1344
|
Q(this, "ps", 0);
|
|
1347
1345
|
Q(this, "vs", 0);
|
|
1348
1346
|
Q(this, "bs", { width: 0, height: 0 });
|
|
1347
|
+
Q(this, "$s");
|
|
1349
1348
|
Q(this, "Gs");
|
|
1350
1349
|
Q(this, "Ms");
|
|
1351
|
-
Q(this, "$s");
|
|
1352
1350
|
Q(this, "Ys");
|
|
1353
1351
|
Q(this, "Fs");
|
|
1354
|
-
this._s = t, this.
|
|
1352
|
+
this._s = t, this.Gs = new mA(), this.Ms = new vA(A), this.Ys = new yA(), this.Fs = new xA();
|
|
1355
1353
|
}
|
|
1356
1354
|
async Rs(A) {
|
|
1357
1355
|
let t;
|
|
@@ -1362,15 +1360,15 @@ class bA {
|
|
|
1362
1360
|
} else
|
|
1363
1361
|
t = await (await fetch(`data:font/truetype;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMs+QEyQAAAEoAAAAYGNtYXAg7yVJAAAFjAAACSBnbHlmuHLTdAAAErQAAGi0aGVhZFvXdUwAAACsAAAANmhoZWELAQUCAAAA5AAAACRobXR4BACDgAAAAYgAAAQEbG9jYQAy54AAAA6sAAAECG1heHABIgCCAAABCAAAACBuYW1lVs/OSgAAe2gAAAOicG9zdABpADQAAH8MAAAAIAABAAAAAQAAzOWHqV8PPPUAAAQAAAAAAHxiGCcAAAAAfGIYJwAAAAAEAAQAAAAACAACAAEAAAAAAAEAAAQAAAAAAAQAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAEBAAEAAAEBAIAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAZAABQAEAgACAAAAAAACAAIAAAACAAAzAMwAAAAABAAAAAAAAACAAACLAABw4wAAAAAAAAAAWUFMLgBAACAmawQAAAAAAAQAAAAAAAFRAAAAAAMABAAAAAAgAAAEAAAABAAAAAQAAAAEAAGABAABAAQAAIAEAACABAAAgAQAAIAEAAGABAABAAQAAQAEAACABAABAAQAAIAEAACABAABAAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABAAQAAIAEAAEABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAAGABAAAgAQAAIAEAAGABAAAgAQAAIAEAACABAAAgAQAAIAEAAEABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAAAgAQAAIAEAACABAABgAQAAQAEAACABAAAAAQAAgAEAACABAAAgAQAAIAEAACABAACAAQAAAAEAAIABAABgAQAAgAEAACABAAAgAQAAAAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAIABAADAAQAAAAEAAAABAAAgAQAAYAEAAAABAAAAAQAAIAEAAAA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AIAAAACA/YAAgAAAAIAAAP8AAoABAAAA/4AAAP+A/4AAgAAAAIAAAP8AA4AAAP8AAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAP+AAAD/gAAAAAAAAP8AAAAAgAAAAAAAAP+AAAD/gAAAAAAAAwCAAIAEAAQAABcAHQAjAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAACAAAAAgAAA/4AAAACAAAD9AAAA/4AAAACAAAD/gAAAAIAAgAAAAIAAAACAAAD/AAAAAQAAAP+AAAAEAAAA/4AAAP8AAAD/gAAAAIAAAP8AAAD/gAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAP+AAAD/gAAAAQD+gP8AAAAAgAAAAIAAAAABAYACgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAP6AAAAAAAABAQAAgAMABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/oAAAP+AAAD/gAAAAIAAAACAAAABgAAAAIAAAAAAAAEBAACAAwAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAAAgAAAAIAAAAGAAAAAgAAAAAAABQCAAYADgAQAAAMABwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAIAAAP+AAYAAgAAA/4D/AAEAAAABAAAA/wAAAP8AAAD/AAAAAQD/gACAAAD/gAGAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP+AAAAAAAABAQAAgAOAAwAACwAAAQEBAQEBAQEBAQEBAgAAgAAAAQAAAP8AAAD/gAAA/wAAAAEAAwAAAP8AAAD/gAAA/wAAAAEAAAAAgAAAAAAAAQCAAAACAAGAAAcAAAEBAQEBAQEBAQABAAAA/4AAAP8AAAAAgAGAAAD/AAAA/4AAAACAAAAAAAABAIABgAOAAgAAAwAAAQEBAQCAAwAAAP0AAgAAAP+AAAAAAAABAQAAgAIAAYAAAwAAAQEBAQEAAQAAAP8AAYAAAP8AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAwCAAIADgAQAAAsAEQAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAD/gAAAAIAAgAAAAIAAAACAAAD/gAAA/4AAAAEAAAAEAAAA/4AAAP2AAAD/gAAAAIAAAAKAAAAAAP8AAAAAgAAAAID/AP+AAAD/AAAAAYAAAAABAIAAgAOABAAADQAAAQEBAQEBAQEBAQEBAQEBgAEAAAABAAAA/QAAAAEAAAD/AAAAAIAAAACABAAAAP0AAAD/gAAAAIAAAAGAAAAAgAAAAIAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAAAIAAAACAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAA/wAAAAEAAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/wAAAAEAAAD/AAAA/wAAAACABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAA/4AAAACAAAAAAAABAIAAgAOABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAP+AAAABAAAAAQAAAP8AAAD+AAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAAEAAAD9gAAAAQAAAAGAAAAAgAAAAAEAgACAA4AEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP4AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/gAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAP+AAAABAAAAAAAAAgCAAIADgAQAABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAYAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAP+AAAAAgAAAAoAAAP6A/wAAAAEAAAEAgACAA4AEAAAPAAABAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AEAAAA/oAAAP+AAAD+gAAAAYAAAACAAAABAAAA/4AAAAAAAAMAgACAA4AEAAATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAAAIAAAP+AAAD+AAAA/4AAAACAAAD/gAAAAIAAgAAAAQAAAP8AAAABAAAABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAA/wAAAAEA/oD/AAAAAQAAAAACAIAAgAOABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD+gAAA/4AAAACAAIAAAAEAAAAEAAAA/4AAAP0AAAABAAAAAIAAAAGAAAAAAP6AAAABgAACAQABAAIAA4AAAwAHAAABAQEBAQEBAQEAAQAAAP8AAAABAAAA/wADgAAA/wAAAP+AAAD/AAAAAAIAgACAAgADgAADAAsAAAEBAQEBAQEBAQEBAQEAAQAAAP8AAAABAAAA/4AAAP8AAAAAgAOAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAABAQAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQKAAQAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAACAIABgAOAAwAAAwAHAAABAQEBAQEBAQCAAwAAAP0AAAADAAAA/QADAAAA/4AAAP+AAAD/gAAAAAEAgACAAwAEAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAIAgACAA4AEAAATABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP8AAAD/AAAAAIAAgAEAAAD/AAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAA/4AAAACAAAD+AAAA/wAAAAACAIAAgAOABAAAEQAVAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP6AAAAAgAAA/wAAAAGAAAD+AAAA/4AAAACAAgAAgAAA/4AEAAAA/4AAAP6AAAABAAAAAIAAAP2AAAD/gAAAAIAAAAKAAAD+AAAA/4AAAAAAAAIAgACAA4AEAAAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAAAIAAAACAAAD/AAAA/wAAAP8AAAAAgAAAAIAAAAAAAQAAAAQAAAD/gAAA/4AAAP2AAAABAAAA/wAAAAKAAAAAgAAA/4D/AAAAAQAAAwCAAIADgAQAAAsADwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAAAIAAAP+AAAD9gAEAAAABAAAA/wAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/wAAAP+AAAADAP8AAAABAP6A/wAAAAEAAAAAAQCAAIADgAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP8AAAD/AAAAAQAAAAEAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAACAIAAgAOABAAACwATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAEAAAAAgAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+gAAA/4AAAP+AAAADAP2AAAAAgAAAAYAAAACAAAEAgACAA4AEAAAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/wAAAAEAAAABAAAA/4AAAP4AAAD/gAAAAIAEAAAA/4AAAP+AAAAAgAAA/wAAAP+AAAD/AAAAAIAAAP+AAAD/gAAAAIAAAAKAAAAAAAABAIAAgAOABAAACQAAAQEBAQEBAQEBAQCAAwAAAP4AAAABAAAA/wAAAP8ABAAAAP+AAAD/AAAA/4AAAP6AAAAAAQCAAIADgAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAA/4AAAAGAAAD/gAAA/gAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD9gAAAAQAAAACAAAD+gAAA/4AAAACAAAACgAAAAAEAgACAA4AEAAALAAABAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP8AAAD/AAAA/wAEAAAA/gAAAAIAAAD8gAAAAQAAAP8AAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIADAAAA/wAAAAEAAAD9AAAAAQAAAP8ABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAAAAQCAAIAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAMAAAD/gAAA/4AAAP4AAAD/gAAAAQAAAAEAAAD+gAQAAAD/gAAA/YAAAP+AAAAAgAAAAQAAAP8AAAACgAAAAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAAEAAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAQAAAD/AAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAAAAAQCAAIADgAQAAAUAAAEBAQEBAQCAAQAAAAIAAAD9AAQAAAD9AAAA/4AAAAABAIAAgAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8ABAAAAP+AAAD/gAAAAIAAAACAAAD8gAAAAgAAAP+AAAAAgAAA/gAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAEAAAA/4AAAP+AAAD/gAAAAYAAAPyAAAABAAAAAIAAAACAAAD+AAAAAAAAAgCAAIADgAQAAAsADwAAAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAD/gAAA/gAAAP+AAAAAgACAAAABAAAABAAAAP+AAAD9gAAA/4AAAACAAAACgAAAAAD9gAAAAoAAAgCAAIADgAQAAAkADQAAAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP6AAAD/AAEAAAABAAAABAAAAP+AAAD+gAAA/4AAAP8AAAADAP6AAAABgAAAAAIAgACABAAEAAAPABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAD/gAAAAIAAAAQAAAD/gAAA/gAAAP8AAAAAgAAA/4AAAACAAAACgAAAAAD9gAAAAIAAAACAAAABgAACAIAAgAOABAAAEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAKAAAAAgAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AAQAAAAEAAAAEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAD/AAAAAwD/AAAAAQAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABgAAAAIAAAP+AAAD+AAAA/4AAAAEAAAABAAAA/oAAAP+AAAAAgAQAAAD/gAAA/4AAAACAAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAD/gAAAAQAAAACAAAABAAAAAAAAAQCAAIADgAQAAAcAAAEBAQEBAQEBAIADAAAA/wAAAP8AAAD/AAQAAAD/gAAA/QAAAAMAAAAAAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAP+ABAAAAP0AAAADAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIADgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAD/gAAA/wAAAP+AAAD/gAQAAAD+AAAAAgAAAP4AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAIAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAQAAAP8AAAD/gAAA/4AAAP+AAAD/AAQAAAD+AAAAAIAAAP+AAAACAAAA/IAAAACAAAAAgAAA/4AAAP+AAAAAAAABAIAAgAOABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/AAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP8AAAABAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAA/wAAAAEAAAAAgAAAAIAAAACAAAAAAAABAIAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAACAAAAAAAABAIAAgAOABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADAAAA/4AAAP+AAAD/gAAA/4AAAAIAAAD9AAAAAIAAAACAAAAAgAAAAIAAAP4ABAAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/wAAAAEAAAD+AAQAAAD/gAAA/YAAAP+AAAAAAAABAIAAgAQAA4AAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AA4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADAAQAAAcAAAEBAQEBAQEBAQACAAAA/gAAAAEAAAD/AAQAAAD8gAAAAIAAAAKAAAAAAAABAIACAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAEAAAMAAAEBAQEAgAMAAAD9AAEAAAD/gAAAAAAAAQEAAoACgAQAAAkAAAEBAQEBAQEBAQEBAAEAAAAAgAAA/4AAAP+AAAD/gAQAAAD/gAAA/wAAAACAAAAAgAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQACgAAA/4AAAP+AAAD/AAAAAQAAAP6AAAD/gAAAAIADAAAA/YAAAACAAAABgAAA/oAAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/gAAA/YABAAAAAQAAAAQAAAD/AAAA/4AAAP6AAAD/gAAAAgD+gAAAAYAAAAABAIAAgAOAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP8AAAABAAAAAQAAAP+AAAD+AAAA/4AAAACAAwAAAP+AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAAAAAAIAgACAA4AEAAAJAA0AAAEBAQEBAQEBAQEBAQEBAoABAAAA/YAAAP+AAAAAgAAAAYD/AAAAAQAAAAQAAAD8gAAAAIAAAAGAAAAAgAAA/4D+gAAAAYAAAAACAIAAgAOAAwAADQARAAABAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/gAAAAGAAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP8AAAD/gAAA/4AAAACAAAABgAAAAAD/gAAAAIAAAAABAQAAgAOAA4AACwAAAQEBAQEBAQEBAQEBAYACAAAA/oAAAAEAAAD/AAAA/wAAAACAA4AAAP+AAAD/AAAA/4AAAP8AAAACgAAAAAAAAgCAAIADgAOAAA8AEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP4AAAABgAAA/oAAAP+AAAAAgACAAAABAAAAA4AAAP+AAAD+AAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAAP8AAAABAAABAIAAgAOABAAACwAAAQEBAQEBAQEBAQEBAIABAAAAAYAAAACAAAD/AAAA/wAAAP8ABAAAAP8AAAD/gAAA/gAAAAIAAAD+AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP+AAAD/gAAA/YAAAAACAIAAgAOABAAAAwAPAAABAQEBAQEBAQEBAQEBAQEBAoABAAAA/wAAAAEAAAD/gAAA/gAAAP+AAAABAAAAAQAEAAAA/4AAAP+AAAD+AAAA/4AAAACAAAABAAAA/wAAAAABAIAAgAOAA4AAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAQAAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP8AA4AAAP8AAAAAgAAA/4AAAP8AAAD/gAAA/4AAAACAAAAAgAAA/wAAAAAAAAEBgACAAwAEAAAHAAABAQEBAQEBAQGAAQAAAACAAAD/AAAA/4AEAAAA/QAAAP+AAAAAgAAAAAAAAQCAAIAEAAMAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP8AAAAAgAMAAAD/gAAAAIAAAP+AAAD+AAAAAYAAAP+AAAAAgAAA/oAAAAIAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAABAAAAAIAAAP8AAAD/gAAA/4AAAP8AAwAAAP+AAAAAgAAA/4AAAP4AAAABgAAA/4AAAP8AAAAAAAACAIAAgAOAAwAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADAAAA/4AAAP6AAAD/gAAAAIAAAAGAAAAAAP6AAAABgAACAIAAgAOAAwAACQANAAABAQEBAQEBAQEBAQEBAQCAAoAAAACAAAD/gAAA/oAAAP8AAQAAAAEAAAADAAAA/4AAAP+AAAD/gAAA/wAAAAIA/4AAAACAAAAAAgCAAIAEAAMAAA0AEQAAAQEBAQEBAQEBAQEBAQEBAQEBAQACgAAAAIAAAP+AAAD/AAAA/oAAAP+AAAAAgACAAAABAAAAAwAAAP6AAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAA/4AAAACAAAAAAQEAAIADgAMAAAkAAAEBAQEBAQEBAQEBAAIAAAAAgAAA/wAAAP+AAAD/AAMAAAD/gAAA/wAAAAEAAAD+AAAAAAEAgACABAADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP6AAAABgAAAAIAAAP+AAAD9AAAAAgAAAP6AAAD/gAAAAIADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAP8AAAAAgAAAAQAAAP+AAAD+gAAA/4AAAP+AAAAAgAOAAAD/gAAA/4AAAP6AAAAAgAAA/4AAAP+AAAAAgAAAAYAAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAACAAAAAgAAAAQAAAP+AAAD/gAAA/oAAAP+AAwAAAP4AAAAAgAAAAYAAAP2AAAAAgAAA/4AAAACAAAAAAAABAIAAgAOAAwAADwAAAQEBAQEBAQEBAQEBAQEBAQCAAQAAAAEAAAABAAAA/4AAAP+AAAD/AAAA/4AAAP+AAwAAAP6AAAABgAAA/oAAAP+AAAD/gAAAAIAAAACAAAAAAAABAIAAgAQAAwAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAAAgAAAAIAAAACAAAABAAAA/4AAAP8AAAD/gAAA/wAAAP+AAwAAAP6AAAAAgAAA/4AAAAGAAAD+AAAA/4AAAACAAAD/gAAAAIAAAAAAAAEAgACAA4ADAAAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP8AAAD/AAAAAIAAAACAAAD/gAAA/4ADAAAA/4AAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAD/gAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAIABAAAAAQAAAAEAAAD/gAAA/gAAAAGAAAD+gAAA/4ADAAAA/wAAAAEAAAD+AAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAgACAA4ADAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQCAAwAAAP+AAAD/gAAA/4AAAAGAAAD9AAAAAIAAAACAAAAAgAAA/oADAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIADAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAA/wAAAP+AAAAAgAAAAQAAAP6AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAAAAAIAAAAEAAAAAAAABAYAAgAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPyAAAAAAAABAQAAgAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAGAAAAAgAAAAIAAAP+AAAD/gAAA/oAAAAEAAAAAgAAA/4AAAP8ABAAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAQAAAAAAAAEAgAGAA4ADAAAPAAABAQEBAQEBAQEBAQEBAQEBAQABAAAAAQAAAACAAAD/gAAA/wAAAP8AAAD/gAAAAIADAAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAYAAAAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/AAAA/wAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAABAAAAAQAAAACAAAAAgAAAAAAAAQIAAAAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD8AAAAAAAAAgCAAIADgAQAABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP8AAAABAAAA/4AAAP+AAAABgAAA/QAAAACAAAAAgAAA/wAAAACAAAAAgAGAAIAAAP+ABAAAAP+AAAD/AAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAABAAAAAAAAAP+AAAAAAQCAAIADgAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAEAAAABAAAAAQAAAP+AAAAAgAAA/wAAAAEAAAD/AAAA/wAAAP8AAAABAAAA/wAAAACAAAD/gAQAAAD+gAAAAYAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABACAAIAEAAQAABcAGwAfACMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAoAAAP4AAAABgAAAAIAAAACAAAD/gAAA/YAAAAIAAAD+gAAA/4AAAP+AAAAAgAEAAAAAgAAAAQAAgAAA/4D9AACAAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/wAAAP+AAAAAgAAAAIAAAACAAAAAgAAAAQAAAP8A/4AAAACAAQAAAP+AAAD+gAAA/4AAAAAEAIAAgAQAA4AAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAQIAAAAEAAQAAAkAAAEBAQEBAQEBAQEDgACAAAD+AAAAAIAAAACAAAAAgAQAAAD8AAAAAQAAAAEAAAABAAAAAAgAAAAABAAEAAADAAcACwAPABMAFwAbAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAA/wACAAEAAAD/AP8AAQAAAP8AAgABAAAA/wD9AAEAAAD/AAIAAQAAAP8A/wABAAAA/wACAAEAAAD/AAQAAAD/AAAAAQAAAP8AAAAAAAAA/wAAAAEAAAD/AAAAAAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQIAAAADAAQAAAMAAAEBAQECAAEAAAD/AAQAAAD8AAAAAAAAAgGAAIACgAQAAAMABwAAAQEBAQEBAQEBgAEAAAD/AAAAAQAAAP8ABAAAAP6AAAD/gAAA/oAAAAABAgAAAAQAAgAAAwAAAQEBAQIAAgAAAP4AAgAAAP4AAAAAAAAEAIAAAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+ABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAAABAAAAPwAAAAAAQCAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAoABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAD/gAOAAAD+AAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAA/wAAAAEAAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAAAEAAAA/gAAAP+AAAD/gAAA/4AAAP+ABAAAAPwAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQCAAIAEAAOAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAOAAAD/gAAAAIAAAP8AAAABAAAA/oAAAAGAAAD9AAAAAIAAAP+AAAABAAAA/wAAAAGAAAD+gAAAAAAAAQAAAAACAAQAAAkAAAEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD+AAQAAAD/AAAA/wAAAP8AAAD/AAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQKAAYAAAP8AAAD/AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAEAAAA/wAAAP+AAAD/gAAA/wAAAP8AAAABgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD8AAAAAIAAAACAAAAAgAIAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgAAAAAEAAQAAAMABwAAAQEBAQEBAQEAAAIAAAD+AAIAAgAAAP4ABAAAAP4AAAAAAAAA/gAAAAAEAAACAAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8ABAAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAABAIAAAAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQECAAEAAAD/AAEAAQAAAP8A/wABAAAA/wABAAEAAAD/AAQAAAD/AAAAAAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAEDAAAABAAEAAADAAABAQEBAwABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD9AAAA/wAEAAAA/wAAAP0AAAAAAQAAAAABAAQAAAMAAAEBAQEAAAEAAAD/AAQAAAD8AAAAAAAAAwCAAIADAAOAAAMABwALAAABAQEBAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AAQAAgAAA/4ADgAAA/QAAAAMAAAD9AAAAAwAAAP0AAAAAAAABAYABgAQABAAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAAEAAAD+gAAA/4AAAP+ABAAAAP8AAAD/gAAA/wAAAACAAAAAgAAAAAAAAQAAAYACgAQAAAsAAAEBAQEBAQEBAQEBAQGAAQAAAP+AAAD/gAAA/oAAAAEAAAAAgAQAAAD+gAAA/4AAAP+AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAwABAAAA/AAAAAEAAAABAAAAAQAEAAAA/AAAAAKAAAAAgAAAAIAAAAABAIAAgAMABAAACwAAAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP0AAAD/gAAAAIAAAAEAAAAAgAAAAAAAAQAAAAAEAAQAAAUAAAEBAQEBAQAAAQAAAAMAAAD8AAQAAAD9AAAA/wAAAAACAIAAgAMAAoAACwAPAAABAQEBAQEBAQEBAQEBAQEBAQABgAAAAIAAAP+AAAD+gAAAAQAAAP8A/4AAgAAA/4ACgAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAMABAAACwAPAAABAQEBAQEBAQEBAQEBAQEBAgABAAAA/4AAAP6AAAABAAAA/wAAAAEA/oAAgAAA/4AEAAAA/QAAAP+AAAAAgAAAAQAAAACAAAD/gAAA/wAAAAABAIAAgAQABAAADQAAAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAA/4AAAP6AAAD/gAAAAIAAAAEABAAAAP+AAAD9gAAA/4AAAACAAAABAAAAAIAAAAACAAAAAAQABAAAAwAHAAABAQEBAQEBAQAABAAAAPwAAQAAAAIAAAAEAAAA/AAAAAMA/gAAAAIAAAEAgACABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAD/gAAA/oAAAP+AAAAAgAAAAQAEAAAA/4AAAP+AAAD/gAAA/oAAAP+AAAAAgAAAAQAAAACAAAAAAQAAAAACgAKAAAsAAAEBAQEBAQEBAQEBAQAAAYAAAACAAAAAgAAA/wAAAP+AAAD/AAKAAAD/gAAA/4AAAP6AAAABAAAAAIAAAAAAAAEAAAAABAAEAAAFAAABAQEBAQEAAAQAAAD/AAAA/QAEAAAA/AAAAAMAAAAAAQCAAIAEAAQAABUAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAAIAAAD/AAAAAQAAAP8AAAABAAAA/wAAAP+AAAD+gAAA/4AAAACAAAABAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAAEAAAAAgAAAAAEBgAAABAACgAALAAABAQEBAQEBAQEBAQECgAGAAAD/AAAA/4AAAP8AAAAAgAAAAIACgAAA/wAAAP+AAAD/AAAAAYAAAACAAAAAAAABAAAAAAQABAAAEQAAAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPwABAAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAABAAADAAABAQEBAAAEAAAA/AABAAAA/wAAAAAAAAEAAAAABAAEAAARAAABAQEBAQEBAQEBAQEBAQEBAQEDgACAAAD8AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAEAAAA/AAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAQAAAgAEAAQAAAMAAAEBAQEAAAQAAAD8AAQAAAD+AAAAAAAAAgCAAIACAAOAAAMABwAAAQEBAQEBAQEAgACAAAD/gAEAAIAAAP+AA4AAAP0AAAADAAAA/QAAAAAEAIAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAABAAAAPyAAAADAP+AAAAAgP8A/4AAAACA/wD/gAAAAIAAAQAAAAAEAAQAAAUAAAEBAQEBAQMAAQAAAPwAAAADAAQAAAD8AAAAAQAAAAACAIAAgAQABAAAAwAHAAABAQEBAQEBAQCAA4AAAPyAAYAAAACAAAAEAAAA/IAAAAIA/4AAAACAAAMAgACABAAEAAADAAcACwAAAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgP4A/4AAAACAAAAABAAAAIAEAAQAAAMABwALAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD8AAAABAAAAPwAAAAEAAAA/AAAAAQAAAD8AAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAAYAgACABAAEAAADAAcACwAPABMAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/oAAAACAAAD+gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAID/AP+AAAAAgAAA/4AAAACAAAEAgACAAQADgAADAAABAQEBAIAAgAAA/4ADgAAA/QAAAAAAAAUAgACABAAEAAADAAcACwAPABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAIADgAAA/IAAgAAAAIAAAAGAAAAAgAAA/YAAAACAAAABgAAAAIAAAAQAAAD8gAAAAwD/gAAAAIAAAP+AAAAAgP4A/4AAAACAAAD/gAAAAIAAAAABAAADAAQABAAAAwAAAQEBAQAABAAAAPwABAAAAP8AAAAAAAAHAIAAgAQABAAAAwAHAAsADwATABcAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAA4AAAPyAAIAAAACAAAABgAAAAIAAAP2AAAAAgAAAAYAAAACAAAD9gAAAAIAAAAGAAAAAgAAABAAAAPyAAAADAP+AAAAAgAAA/4AAAACA/wD/gAAAAIAAAP+AAAAAgP8A/4AAAACAAAD/gAAAAIAAAAAEAAAAAAQAAgAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAgABAAAA/wD/AAEAAAD/AAIAAQAAAP8AAgAAAP8AAAABAAAA/wAAAAAAAAD/AAAAAQAAAP8AAAAAAQAAAAAEAAQAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAQAAAD/gAAA/4AAAP+AAAD9gAAAAAEBAAAAAgAEAAADAAABAQEBAQABAAAA/wAEAAAA/AAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQECgAGAAAD8AAAAAIAAAACAAAAAgAAAAQAEAAAA/AAAAAGAAAABAAAAAIAAAACAAAAAAAABAAABAAQAAgAAAwAAAQEBAQAABAAAAPwAAgAAAP8AAAAAAAABAAAAAAQABAAACwAAAQEBAQEBAQEBAQEBAgACAAAA/AAAAACAAAAAgAAAAIAAAACABAAAAPwAAAACAAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEDAAEAAAD8AAAAAQAAAAEAAAABAAIAAAD+AAAAAIAAAACAAAAAgAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAIAAAAAgAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/4AAAP4AAAAAAAADAAAAAAQABAAAGwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAIAAYAAAACAAAD/gAAA/4AAAP+AAAD/gP4AAIAAAACAAAAAgAAAAIAAAP6AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAQAAAP+AAAD+gAAAAIAAAACAAAAAgAAA/oAAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAAAAAQAAAAAEAAIAAAkAAAEBAQEBAQEBAQEAAAEAAAABAAAAAQAAAAEAAAD8AAIAAAD/gAAA/4AAAP+AAAD/gAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAGAAAABAAAAAIAAAACAAAAAgAAA/AAEAAAA/4AAAP+AAAD/gAAA/wAAAP6AAAAAAAAEAAAAgAQABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQCAAYAAAP6AAgABgAAA/oD9gAGAAAD+gAIAAYAAAP6ABAAAAP6AAAABgAAA/oAAAP+AAAD+gAAAAYAAAP6AAAAAAQIAAgAEAAQAAAMAAAEBAQECAAIAAAD+AAQAAAD+AAAAAAAABACAAIAEAAQAAAMABwAjACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAD/AAGAAQAAAP8A/gAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4ABgACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAAAAA/wAAAP+AAAD/gAAAAIAAAACAAAABAAAA/oAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAGAAAD/gAAAAAQAAAAABAAEAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ADgACAAAD/gPyAAIAAAP+AA4AAgAAA/4AEAAAA/4AAAACAAAD/gAAA/QAAAP+AAAAAgAAA/4AAAAABAAAAAAIAAgAAAwAAAQEBAQAAAgAAAP4AAgAAAP4AAAAAAAAEAAAAAAIABAAAAwAHAAsADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAP8AAQABAAAA/wD/AAEAAAD/AAEAAQAAAP8ABAAAAP8AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAQCAAQADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAYABAAAA/4AAAAGAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAOAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAACAAAAAAAABAQABAAOABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACABAAAAP+AAAD/gAAA/wAAAACAAAD+gAAAAYAAAP+AAAABAAAAAIAAAAAAAAEBAAEABAADgAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQIAAQAAAACAAAAAgAAA/4AAAP+AAAD/AAAAAIAAAP6AAAABgAAA/4ADgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAOAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAOAAAD+gAAAAIAAAP8AAAD/gAAA/4AAAACAAAAAgAAAAQAAAP+AAAAAAAABAQAAgAOABAAADwAAAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAA/4AAAP6AAAD/gAAAAIAAAACABAAAAP8AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAAAACAIAAgAOAA4AAAwAJAAABAQEBAQEBAQEBAIADAAAA/QAAgAAAAgAAAP8AAAADgAAA/QAAAAKA/gAAAAEAAAABAAAAAAIAgACABAAEAAAbACcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAD/gAAAAIAAAACAAAAAgAAA/4AAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAA/4D/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAEAAAIABAADAAADAAABAQEBAAAEAAAA/AADAAAA/wAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/gAAA/gAEAAAA/gAAAP+AAAD/gAAA/4AAAP+AAAAAAAABAAACAAIABAAAAwAAAQEBAQAAAgAAAP4ABAAAAP4AAAAAAAACAQAAgAOAA4AAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP8AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAACAAAAAgAAA/wAAAACAAIAAAACAAAADgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgP+AAAAAgAADAAAAAAQABAAACwAnADMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAGAAAD/gAAA/4AAAP+AAAD/gAAAAIACgAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgACAAIAAAP+AAAD+gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAAAYAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAA/oAAAP6AAAD/gAAAAIAAAACAAAAAgAAAAAAAAgCAAIADgAQAAA8AHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAAABAAAAAIAAAP+AAAD/AAAA/wAAAP+AAAAAgAAAAQAAAAEAAAAAgAAA/4AAAP8AAAD/AAAA/4AAAACABAAAAP+AAAAAgAAA/wAAAP+AAAAAgAAA/4AAAAEAAAD+gAAA/4AAAACAAAD/AAAA/4AAAACAAAD/gAAAAQAAAAABAAAAAAQAA4AACwAAAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD8AAAAAIAAAACAA4AAAP+AAAD/gAAA/YAAAAKAAAAAgAAAAAAAAQAAAAACAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAAAAAQIAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDgACAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQCAAIAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP+AAAD/AAAA/4AAAP8AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/oAAAAEAAAD/AAAAAYAAAACAAAAAgAAAAIAAAAAAACAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsAXwBjAGcAawBvAHMAdwB7AH8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gPyAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/YAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D8gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gP2AAIAAAP+AAQAAgAAA/4ABAACAAAD/gAEAAIAAAP+A/IAAgAAA/4ABAACAAAD/gAEAAIAAAP+AAQAAgAAA/4D9gACAAAD/gAEAAIAAAP+AAQAAgAAA/4ABAACAAAD/gAQAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAACAAAD/gAAAAIAAAP+AAAAAAQAAAAAEAAQAAAsAAAEBAQEBAQEBAQEBAQAABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAQAAAD8AAAAAIAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/oAEAAAA/oAAAP8AAAD/gAAA/4AAAP+AAAAAAAABAAABgAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAAAAAKABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP2AAAACAAAAAIAAAACAAAAAAAABAYAAAAQAAoAABQAAAQEBAQEBAYACgAAA/oAAAP8AAoAAAP8AAAD+gAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAAACgAAAAIAAAACAAAAAgAAA/AAEAAAA/wAAAP8AAAD/AAAA/wAAAAACAAAAAAQABAAAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAAAAAEAAAAEAAAA/4AAAP+AAAD/gAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAP8A/wAAAAEAAAEBgAGABAAEAAAFAAABAQEBAQEBgAEAAAABgAAA/YAEAAAA/oAAAP8AAAAAAQAAAAACgAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD+AAAAAoAAAACAAAAAgAAAAAAAAQGAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQGAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAAEAAAAAgAAAAQAAAACAAAAAAAABAAABgAQABAAADwAAAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAgAAAP2AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAAAAAABAAABgAQAAoAAAwAAAQEBAQAABAAAAPwAAoAAAP8AAAAAAAABAYAAAAKABAAAAwAAAQEBAQGAAQAAAP8ABAAAAPwAAAAAAAABAYAAAAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACABAAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAQAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAKAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD+AAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAYAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD9gAAAAgAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQAAAgAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEAAAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAAAAAQAAAYACgAKAAAMAAAEBAQEAAAKAAAD9gAKAAAD/AAAAAAAAAQGAAAACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD9gAAAAAAAAQAAAYAEAAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAABAAAAAIAAAAEAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAQAAAD/gAAA/4AAAACAAAAAgAAA/wAAAP+AAAD/gAAA/4AAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAAJAAABAQEBAQEBAQEBAYACgAAA/AAAAACAAAAAgAAAAIAEAAAA/AAAAAEAAAABAAAAAQAAAAABAAAAAAQABAAAEwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/AAAA/oAAAAEAAAABAAAAAIAAAACABAAAAP6AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAQAAAAAAAAEAAAAABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAQAAAAEAAAD+gAAA/wAAAP+AAAD/gAAA/4AEAAAA/wAAAP8AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAACAAAABAAAAAAAAAQAAAAAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAAEAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQAAAAACgAQAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAP+AAAD/gAAA/4AAAP8AAAAAgAAAAIAAAP+AAAD/gAQAAAD/gAAA/4AAAP+AAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAABAAAAAIAAAAAAAAEAAAAABAAEAAAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQAAAAACgAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAQAAAD9gAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAAAEAAQAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAEAAAAAgAAAAIAAAACAAAD/AAAA/4AAAP+AAAD/gAQAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAAAAAAAAQAAAAAEAAKAAA8AAAEBAQEBAQEBAQEBAQEBAQEBgAKAAAD+AAAA/4AAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/AAAA/4AAAP+AAAD/gAAAAQAAAACAAAAAgAAAAAAAAQGAAYACgAQAAAMAAAEBAQEBgAEAAAD/AAQAAAD9gAAAAAAAAQGAAYAEAAKAAAMAAAEBAQEBgAKAAAD9gAKAAAD/AAAAAAAAAQAAAAAEAAQAAB8AAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAQAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAABAAAAAAQABAAAIwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAABAAAAAIAAAAEAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAA/4AAAP+AAAABAAAAAIAAAAEAAAAAgAAAAAAAAQGAAYACgAKAAAMAAAEBAQEBgAEAAAD/AAKAAAD/AAAAAAAAAQAAAAAEAAKAABcAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAQAAAACAAAAAgAAAAIAAAP8AAAD/gAAA/wAAAP+AAAD/AAAAAIAAAACAAAAAgAKAAAD/gAAA/4AAAP+AAAD/AAAAAIAAAACAAAD/gAAA/4AAAAEAAAAAgAAAAIAAAAAAAAEAAAGAAoAEAAAFAAABAQEBAQEBgAEAAAD9gAAAAYAEAAAA/YAAAAEAAAAAAQAAAAACgAKAAAUAAAEBAQEBAQAAAoAAAP8AAAD+gAKAAAD9gAAAAYAAAAABAAAAAAQABAAAHwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEAAAAAgAAAAQAAAACAAAABAAAA/4AAAP+AAAAAgAAAAIAAAP8AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+ABAAAAP+AAAD/gAAAAIAAAACAAAD/AAAA/4AAAP8AAAD/gAAA/wAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAEAAAAABAAEAAALAAABAQEBAQEBAQEBAQEBgAEAAAABgAAA/oAAAP8AAAD+gAAAAYAEAAAA/oAAAP8AAAD+gAAAAYAAAAEAAAAAAAABAAAAAAQAAoAABwAAAQEBAQEBAQEAAAQAAAD+gAAA/wAAAP6AAoAAAP8AAAD+gAAAAYAAAAAAAAEBgAAABAAEAAAHAAABAQEBAQEBAQGAAQAAAAGAAAD+gAAA/wAEAAAA/oAAAP8AAAD+gAAAAAAAAQAAAAACgAQAAAcAAAEBAQEBAQEBAYABAAAA/wAAAP6AAAABgAQAAAD8AAAAAYAAAAEAAAAAAAABAAABgAQABAAABwAAAQEBAQEBAQEBgAEAAAABgAAA/AAAAAGABAAAAP6AAAD/AAAAAQAAAAAAAAQBAAEAAwADAAADAAcACwAPAAABAQEBAQEBAQEBAQEBAQEBAYABAAAA/wD/gACAAAD/gAGAAIAAAP+A/wABAAAA/wADAAAA/4AAAAAAAAD/AAAAAQAAAP8AAAAAAAAA/4AAAAACAIAAgAOAA4AACwAPAAABAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAP+AAAD+AAAA/4AAAACAAIAAAAEAAAADgAAA/4AAAP4AAAD/gAAAAIAAAAIAAAD/gP8AAAABAAACAAAAAAQABAAAEwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAgAAAACAAAAAgAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAgAAA/4AAAACAAAABAAAAAIAAAP+AAAAEAAAA/4AAAP+AAAD+AAAA/4AAAP+AAAAAgAAAAIAAAAIAAAAAgAAA/4D/gAAA/wAAAP+AAAAAgAAAAQAAAACAABAAAAAABAAEAAADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP+AAIAAAP+AAgAAgAAA/4D9gACAAAD/gAIAAIAAAP+A/YAAgAAA/4ACAACAAAD/gP2AAIAAAP+AAgAAgAAA/4AEAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAQAAAAAAQABAAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D8gACAAAD/gAIAAIAAAP+A/oAAgAAA/4ACAACAAAD/gP6AAIAAAP+AAgAAgAAA/4D+gACAAAD/gAIAAIAAAP+ABAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAAAA/4AAAACAAAD/gAAAAAAAAP+AAAAAgAAA/4AAAAAAAAD/gAAAAIAAAP+AAAAAAwCAAIADgAQAABcAGwAfAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAAEAAAD/AAAAAIAAAP+AAAABAAAA/wAAAP+AAAD/AAAA/4AAAACAAAABAP+AAAAAgAAA/4AAAACAAAAEAAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACAAAAAgAAAAYAAAACAAAD/gP+AAAAAgP8A/4AAAACAAAAAAQCAAIADgAOAAA8AAAEBAQEBAQEBAQEBAQEBAQEBAAIAAAAAgAAA/4AAAP+AAAD/AAAA/4AAAP+AAAAAgAOAAAD/gAAA/wAAAP+AAAD/AAAAAQAAAACAAAABAAAAAAAAAgCAAIADgAOAAAMACQAAAQEBAQEBAQEBAQCAAwAAAP0AAYAAAP8AAAACAAAAA4AAAP0AAAACgP8AAAD/AAAAAgAAAAABAIAAgAOAA4AAAwAAAQEBAQCAAwAAAP0AA4AAAP0AAAAAAAACAIAAgAOAA4AAAwALAAABAQEBAQEBAQEBAQEAgAMAAAD9AACAAAACAAAA/4AAAP8AAAADgAAA/QAAAAKA/gAAAAIAAAD/AAAAAQAAAQAAAAAEAAQAABMAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQACAAAAAIAAAACAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAQAAAD/gAAA/4AAAP4AAAD/gAAA/4AAAACAAAAAgAAAAgAAAACAAAAAAAABAQABAAMAAwAACwAAAQEBAQEBAQEBAQEBAYABAAAAAIAAAP+AAAD/AAAA/4AAAACAAwAAAP+AAAD/AAAA/4AAAACAAAABAAAAAAAAAQCAAQAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAQAAAP+AAAD/gAAAAIAAAP8AAAD/gAAA/wAAAACAAAD/gAAA/4AAAAEAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAAAgAAA/4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+AAAAAIAAAAGAAAAAgAAA/gAAAAGAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgAAA/4AAAACA/4D/gAAAAIAABgCAAIAEAAQAAAMABwALAA8AEwAXAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgAOAAAD8gAEAAAAAgAAAAIAAAACAAAD+gAAAAYAAAP4AAAAAgAAAAYAAAACAAAAEAAAA/IAAAAMA/wAAAAEAAAD/AAAAAQD+gP+AAAAAgP+A/4AAAACAAAD/gAAAAIAABgCAAIAEAAQAABMAFwAbAB8AIwAnAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgAAgAAAAIAAAAEAAAD/AAAA/4AAAP+AAAD/gAAA/wAAAAEAAAAAgAAAAAAAgAAA/oAAgAAA/4ACAACAAAD/gP4AAIAAAP+AAgAAgAAA/4AEAAAA/wAAAP+AAAD/gAAA/4AAAP8AAAABAAAAAIAAAACAAAAAgAAA/4D/gAAAAIABAAAA/4AAAACAAAD/gAAA/oAAAP+AAAAAgAAA/4AAAAACAQAAgAOABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYABgAAAAIAAAP+AAAD/gAAAAIAAAP+AAAD/gAAA/4AAAACAAAD/gAAAAQAAAP8A/4AAgAAA/4AEAAAA/4AAAP8AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAAEAAAAAAAAA/wAAAAACAIAAgAQABAAAFwAbAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAYACgAAA/4AAAP+AAAD/gAAAAIAAAP+AAAD+gAAAAQAAAP8AAAABAAAAAIAAAP8A/wAAgAAA/4AEAAAA/gAAAAEAAAD/gAAA/4AAAP8AAAD/gAAAAIAAAAEAAAAAgAAAAIAAAACAAAD+gAAA/wAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIAAIAAAACAAAAAgAAAAIAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAAAgAAAAIAAAACABAAAAP+AAAD/gAAA/4AAAP8AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABAAAAAIAAAACAAAAAAAABAIAAgAQABAAAGwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQGAAYAAAP+AAAAAgAAAAQAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/4AAAP8AAAABAAAAAIAAAP+ABAAAAP8AAAD/gAAAAIAAAP6AAAAAgAAA/wAAAP+AAAAAgAAAAQAAAP+AAAABgAAA/4AAAACAAAAAAAABAIAAgAQABAAAFwAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAAAAIAAAAEAAAAAgAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAA/4AAAACABAAAAP+AAAAAgAAA/4AAAP6AAAD/gAAA/4AAAP+AAAAAgAAAAIAAAACAAAABgAAAAAAAAQCAAIAEAAQAABsAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAACAAAAAgAAAAIAAAACAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAQAAAD/gAAA/4AAAP+AAAD/gAAA/4AAAP+AAAD/gAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAQEAAIADgAQAAAsAAAEBAQEBAQEBAQEBAQIAAYAAAP8AAAD/gAAA/wAAAACAAAAAgAQAAAD/AAAA/gAAAP+AAAABAAAAAIAAAAAAAAEAgACABAAEAAATAAABAQEBAQEBAQEBAQEBAQEBAQEBAQGAAoAAAP+AAAD/AAAAAIAAAACAAAD+gAAA/4AAAP8AAAAAgAAAAIAEAAAA/QAAAP+AAAABAAAAAIAAAAEAAAD+AAAA/4AAAAEAAAAAgAAAAAAAAAAYASYAAQAAAAAAAAAIAAAAAQAAAAAAAQAIAAgAAQAAAAAAAgAHABAAAQAAAAAAAwAIABcAAQAAAAAABAAQAB8AAQAAAAAABQALAC8AAQAAAAAABgAIADoAAQAAAAAACQAJAEIAAQAAAAAACgA6AEsAAQAAAAAADQARAIUAAQAAAAAADgAyAJYAAQAAAAAAEwAMAMgAAwABBAkAAAAQANQAAwABBAkAAQAQAOQAAwABBAkAAgAOAPQAAwABBAkAAwAQAQIAAwABBAkABAAgARIAAwABBAkABQAWATIAAwABBAkABgAQAUgAAwABBAkACQASAVgAAwABBAkACgB0AWoAAwABBAkADQAiAd4AAwABBAkADgBkAgAAAwABBAkAEwAYAmQoYykgMjAyMlVyc2FGb250UmVndWxhclVyc2FGb250VXJzYUZvbnQgUmVndWxhclZlcnNpb24gMS4wVXJzYUZvbnRVcnNhRnJhbmtBbiBvcGVuIGxpY2VuY2UgZ2VuZXJhbCBwdXJwb3NlIHRleHRtb2RlIGZvbnQgYnkgVXJzYUZyYW5rQ0MwIDEuMCBVbml2ZXJzYWxodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL0hlbGxvIFdvcmxkIQAoAGMAKQAgADIAMAAyADIAVQByAHMAYQBGAG8AbgB0AFIAZQBnAHUAbABhAHIAVQByAHMAYQBGAG8AbgB0AFUAcgBzAGEARgBvAG4AdAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwAFUAcgBzAGEARgBvAG4AdABVAHIAcwBhAEYAcgBhAG4AawBBAG4AIABvAHAAZQBuACAAbABpAGMAZQBuAGMAZQAgAGcAZQBuAGUAcgBhAGwAIABwAHUAcgBwAG8AcwBlACAAdABlAHgAdABtAG8AZABlACAAZgBvAG4AdAAgAGIAeQAgAFUAcgBzAGEARgByAGEAbgBrAEMAQwAwACAAMQAuADAAIABVAG4AaQB2AGUAcgBzAGEAbABoAHQAdABwAHMAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAHAAdQBiAGwAaQBjAGQAbwBtAGEAaQBuAC8AegBlAHIAbwAvADEALgAwAC8ASABlAGwAbABvACAAVwBvAHIAbABkACEAAAADAAAAAAAAAGYAMwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\r
|
|
1364
1362
|
`)).arrayBuffer();
|
|
1365
|
-
await this.Ss(t), this.ws = m.parse(t)[0], await this.
|
|
1363
|
+
await this.Ss(t), this.ws = m.parse(t)[0], await this.ks();
|
|
1366
1364
|
}
|
|
1367
|
-
|
|
1365
|
+
zs(A) {
|
|
1368
1366
|
if (A === void 0) return this._s;
|
|
1369
1367
|
this._s = A, this.bs = this.Ys.calculateMaxGlyphDimensions(this.fs.map((e) => e.character), this._s, this.ws);
|
|
1370
|
-
const t = this
|
|
1368
|
+
const t = this.Ms.createTextureAtlas(this.fs, this.bs, this._s, this.ws);
|
|
1371
1369
|
this.ds = t.framebuffer, this.ps = t.columns, this.vs = t.rows;
|
|
1372
1370
|
}
|
|
1373
|
-
async
|
|
1371
|
+
async Ls(A) {
|
|
1374
1372
|
try {
|
|
1375
1373
|
const t = await fetch(A);
|
|
1376
1374
|
if (!t.ok) throw new I(`Failed to load font file: ${t.status} ${t.statusText}`);
|
|
@@ -1378,19 +1376,19 @@ class bA {
|
|
|
1378
1376
|
await this.Ss(e);
|
|
1379
1377
|
const s = m.parse(e);
|
|
1380
1378
|
if (!s || s.length === 0) throw Error("Failed to parse font file");
|
|
1381
|
-
this.ws = s[0], await this.
|
|
1379
|
+
this.ws = s[0], await this.ks();
|
|
1382
1380
|
} catch (t) {
|
|
1383
1381
|
throw new I("Failed to load font: " + (t instanceof Error ? t.message : "Unknown error"), t);
|
|
1384
1382
|
}
|
|
1385
1383
|
}
|
|
1386
1384
|
async Ss(A) {
|
|
1387
1385
|
const t = Date.now();
|
|
1388
|
-
this
|
|
1386
|
+
this.$s = new FontFace("CustomFont_" + t, A), await this.$s.load(), document.fonts.add(this.$s);
|
|
1389
1387
|
}
|
|
1390
|
-
async
|
|
1391
|
-
const A = this.
|
|
1388
|
+
async ks() {
|
|
1389
|
+
const A = this.Gs.extractCharacters(this.ws), t = this.Gs.filterProblematicCharacters(A);
|
|
1392
1390
|
this.fs = this.Fs.createCharacterObjects(t, this.ws), this.bs = this.Ys.calculateMaxGlyphDimensions(t, this._s, this.ws);
|
|
1393
|
-
const e = this
|
|
1391
|
+
const e = this.Ms.createTextureAtlas(this.fs, this.bs, this._s, this.ws);
|
|
1394
1392
|
this.ds = e.framebuffer, this.ps = e.columns, this.vs = e.rows;
|
|
1395
1393
|
}
|
|
1396
1394
|
us(A) {
|
|
@@ -1399,8 +1397,8 @@ class bA {
|
|
|
1399
1397
|
Is(A) {
|
|
1400
1398
|
return this.Fs.Is(A, this.fs);
|
|
1401
1399
|
}
|
|
1402
|
-
|
|
1403
|
-
this.ds.
|
|
1400
|
+
kA() {
|
|
1401
|
+
this.ds.kA(), document.fonts.delete(this.$s);
|
|
1404
1402
|
}
|
|
1405
1403
|
get fontFramebuffer() {
|
|
1406
1404
|
return this.ds;
|
|
@@ -1426,19 +1424,19 @@ class bA {
|
|
|
1426
1424
|
}
|
|
1427
1425
|
class RA {
|
|
1428
1426
|
constructor(A, t, e) {
|
|
1429
|
-
Q(this, "
|
|
1430
|
-
Q(this, "
|
|
1427
|
+
Q(this, "Os");
|
|
1428
|
+
Q(this, "Ts");
|
|
1431
1429
|
Q(this, "PA");
|
|
1432
1430
|
Q(this, "uA");
|
|
1433
|
-
Q(this, "
|
|
1434
|
-
Q(this, "Hs");
|
|
1431
|
+
Q(this, "Us");
|
|
1435
1432
|
Q(this, "Ws");
|
|
1433
|
+
Q(this, "Hs");
|
|
1436
1434
|
Q(this, "Ks");
|
|
1437
1435
|
Q(this, "Js");
|
|
1438
|
-
this.
|
|
1436
|
+
this.Hs = A, this.Ks = t, this.Js = e, this.iA();
|
|
1439
1437
|
}
|
|
1440
1438
|
iA() {
|
|
1441
|
-
this.
|
|
1439
|
+
this.Os = Math.floor(this.Hs.width / this.Ks), this.Ts = Math.floor(this.Hs.height / this.Js), this.PA = this.Os * this.Ks, this.uA = this.Ts * this.Js, this.Us = Math.floor((this.Hs.width - this.PA) / 2), this.Ws = Math.floor((this.Hs.height - this.uA) / 2);
|
|
1442
1440
|
}
|
|
1443
1441
|
Vs(A, t) {
|
|
1444
1442
|
this.Ks = A, this.Js = t, this.iA();
|
|
@@ -1450,10 +1448,10 @@ class RA {
|
|
|
1450
1448
|
return this.Js;
|
|
1451
1449
|
}
|
|
1452
1450
|
get cols() {
|
|
1453
|
-
return this.
|
|
1451
|
+
return this.Os;
|
|
1454
1452
|
}
|
|
1455
1453
|
get rows() {
|
|
1456
|
-
return this.
|
|
1454
|
+
return this.Ts;
|
|
1457
1455
|
}
|
|
1458
1456
|
get width() {
|
|
1459
1457
|
return this.PA;
|
|
@@ -1462,48 +1460,48 @@ class RA {
|
|
|
1462
1460
|
return this.uA;
|
|
1463
1461
|
}
|
|
1464
1462
|
get offsetX() {
|
|
1465
|
-
return this.
|
|
1463
|
+
return this.Us;
|
|
1466
1464
|
}
|
|
1467
1465
|
get offsetY() {
|
|
1468
|
-
return this.
|
|
1466
|
+
return this.Ws;
|
|
1469
1467
|
}
|
|
1470
1468
|
}
|
|
1471
1469
|
class TA {
|
|
1472
1470
|
constructor(A = {}) {
|
|
1473
|
-
Q(this, "
|
|
1471
|
+
Q(this, "Hs");
|
|
1474
1472
|
Q(this, "Zs");
|
|
1475
1473
|
Q(this, "Ns");
|
|
1476
|
-
A.canvas ? (this.
|
|
1474
|
+
A.canvas ? (this.Hs = A.canvas, this.Ns = !1) : (this.Hs = this.Xs(A.width, A.height), this.Ns = !0), this.Hs.style.imageRendering = "pixelated";
|
|
1477
1475
|
}
|
|
1478
1476
|
Xs(A, t) {
|
|
1479
1477
|
const e = document.createElement("canvas");
|
|
1480
1478
|
return e.className = "textmodeCanvas", e.style.imageRendering = "pixelated", e.width = A || 800, e.height = t || 600, document.body.appendChild(e), e;
|
|
1481
1479
|
}
|
|
1482
1480
|
js(A, t) {
|
|
1483
|
-
this.
|
|
1481
|
+
this.Hs.width = A ?? this.Hs.width, this.Hs.height = t ?? this.Hs.height;
|
|
1484
1482
|
}
|
|
1485
1483
|
qs() {
|
|
1486
|
-
const A = this.
|
|
1484
|
+
const A = this.Hs.getContext("webgl2", { alpha: !0, premultipliedAlpha: !1, preserveDrawingBuffer: !0, antialias: !1, depth: !1, stencil: !1, powerPreference: "high-performance" });
|
|
1487
1485
|
if (!A) throw new I("`textmode.js` requires WebGL2 support.");
|
|
1488
1486
|
return A;
|
|
1489
1487
|
}
|
|
1490
|
-
|
|
1488
|
+
kA() {
|
|
1491
1489
|
this.Zs && this.Zs.disconnect();
|
|
1492
|
-
const A = this.
|
|
1490
|
+
const A = this.Hs.getContext("webgl") || this.Hs.getContext("webgl2");
|
|
1493
1491
|
if (A) {
|
|
1494
1492
|
const t = A.getExtension("WEBGL_lose_context");
|
|
1495
1493
|
t && t.loseContext();
|
|
1496
1494
|
}
|
|
1497
|
-
this.Ns && this.
|
|
1495
|
+
this.Ns && this.Hs.parentNode && this.Hs.parentNode.removeChild(this.Hs);
|
|
1498
1496
|
}
|
|
1499
1497
|
get canvas() {
|
|
1500
|
-
return this.
|
|
1498
|
+
return this.Hs;
|
|
1501
1499
|
}
|
|
1502
1500
|
get width() {
|
|
1503
|
-
return this.
|
|
1501
|
+
return this.Hs.width;
|
|
1504
1502
|
}
|
|
1505
1503
|
get height() {
|
|
1506
|
-
return this.
|
|
1504
|
+
return this.Hs.height;
|
|
1507
1505
|
}
|
|
1508
1506
|
}
|
|
1509
1507
|
class MA {
|
|
@@ -1613,15 +1611,15 @@ class FA {
|
|
|
1613
1611
|
bi() {
|
|
1614
1612
|
return this.ai;
|
|
1615
1613
|
}
|
|
1616
|
-
|
|
1614
|
+
$i() {
|
|
1617
1615
|
const A = [];
|
|
1618
1616
|
for (const [t, e] of this.gi) e.isPressed && A.push(t);
|
|
1619
1617
|
return A;
|
|
1620
1618
|
}
|
|
1621
|
-
|
|
1619
|
+
Gi() {
|
|
1622
1620
|
return { ctrl: this.pi("Control"), shift: this.pi("Shift"), alt: this.pi("Alt"), meta: this.pi("Meta") };
|
|
1623
1621
|
}
|
|
1624
|
-
|
|
1622
|
+
Mi() {
|
|
1625
1623
|
this.gi.clear(), this.oi = null, this.ai = null;
|
|
1626
1624
|
}
|
|
1627
1625
|
Ii(A) {
|
|
@@ -1648,49 +1646,49 @@ class FA {
|
|
|
1648
1646
|
}
|
|
1649
1647
|
class GA {
|
|
1650
1648
|
constructor(A) {
|
|
1651
|
-
Q(this, "
|
|
1649
|
+
Q(this, "Hs");
|
|
1652
1650
|
Q(this, "xi");
|
|
1653
1651
|
Q(this, "Yi", { x: -1, y: -1 });
|
|
1654
1652
|
Q(this, "Fi", { x: -1, y: -1 });
|
|
1655
1653
|
Q(this, "Ri", null);
|
|
1656
1654
|
Q(this, "Si");
|
|
1657
|
-
Q(this, "zi");
|
|
1658
1655
|
Q(this, "ki");
|
|
1659
|
-
Q(this, "
|
|
1656
|
+
Q(this, "zi");
|
|
1660
1657
|
Q(this, "Li");
|
|
1661
|
-
Q(this, "
|
|
1662
|
-
Q(this, "Ci", !1);
|
|
1658
|
+
Q(this, "Oi");
|
|
1663
1659
|
Q(this, "Ti");
|
|
1664
|
-
Q(this, "
|
|
1660
|
+
Q(this, "Ci", !1);
|
|
1661
|
+
Q(this, "Ui");
|
|
1665
1662
|
Q(this, "Wi");
|
|
1663
|
+
Q(this, "Hi");
|
|
1666
1664
|
Q(this, "Ki");
|
|
1667
1665
|
Q(this, "Ji");
|
|
1668
|
-
this.
|
|
1666
|
+
this.Hs = A;
|
|
1669
1667
|
}
|
|
1670
1668
|
Rs(A) {
|
|
1671
1669
|
this.xi = A, this.Vi();
|
|
1672
1670
|
}
|
|
1673
1671
|
ui() {
|
|
1674
1672
|
if (this.Ci) return;
|
|
1675
|
-
const A = this.
|
|
1673
|
+
const A = this.Hs.canvas;
|
|
1676
1674
|
this.Si = (t) => {
|
|
1677
1675
|
this.Zi(t), this.Ni(t);
|
|
1678
|
-
}, this.
|
|
1676
|
+
}, this.ki = () => {
|
|
1679
1677
|
this.Fi = { ...this.Yi }, this.Yi.x = -1, this.Yi.y = -1, this.Ri = null;
|
|
1680
|
-
}, this.
|
|
1678
|
+
}, this.zi = (t) => {
|
|
1681
1679
|
this.Zi(t), this.Xi(t);
|
|
1682
|
-
}, this.Oi = (t) => {
|
|
1683
|
-
this.Zi(t), this.ji(t);
|
|
1684
1680
|
}, this.Li = (t) => {
|
|
1681
|
+
this.Zi(t), this.ji(t);
|
|
1682
|
+
}, this.Oi = (t) => {
|
|
1685
1683
|
this.Zi(t), this.qi(t);
|
|
1686
|
-
}, this.
|
|
1684
|
+
}, this.Ti = (t) => {
|
|
1687
1685
|
this.Zi(t), this.AB(t);
|
|
1688
|
-
}, A.addEventListener("mousemove", this.Si, { passive: !0 }), A.addEventListener("mouseleave", this.
|
|
1686
|
+
}, A.addEventListener("mousemove", this.Si, { passive: !0 }), A.addEventListener("mouseleave", this.ki, { passive: !0 }), A.addEventListener("mousedown", this.zi, { passive: !0 }), A.addEventListener("mouseup", this.Li, { passive: !0 }), A.addEventListener("click", this.Oi, { passive: !0 }), A.addEventListener("wheel", this.Ti, { passive: !1 }), this.Ci = !0;
|
|
1689
1687
|
}
|
|
1690
1688
|
fi() {
|
|
1691
1689
|
if (!this.Ci) return;
|
|
1692
|
-
const A = this.
|
|
1693
|
-
A.removeEventListener("mousemove", this.Si), A.removeEventListener("mouseleave", this.
|
|
1690
|
+
const A = this.Hs.canvas;
|
|
1691
|
+
A.removeEventListener("mousemove", this.Si), A.removeEventListener("mouseleave", this.ki), A.removeEventListener("mousedown", this.zi), A.removeEventListener("mouseup", this.Li), A.removeEventListener("click", this.Oi), A.removeEventListener("wheel", this.Ti), this.Ci = !1;
|
|
1694
1692
|
}
|
|
1695
1693
|
Vi() {
|
|
1696
1694
|
if (this.Ci) try {
|
|
@@ -1703,13 +1701,13 @@ class GA {
|
|
|
1703
1701
|
}
|
|
1704
1702
|
}
|
|
1705
1703
|
tB(A) {
|
|
1706
|
-
this.
|
|
1704
|
+
this.Ui = A;
|
|
1707
1705
|
}
|
|
1708
1706
|
di(A) {
|
|
1709
|
-
this.
|
|
1707
|
+
this.Wi = A;
|
|
1710
1708
|
}
|
|
1711
1709
|
_i(A) {
|
|
1712
|
-
this.
|
|
1710
|
+
this.Hi = A;
|
|
1713
1711
|
}
|
|
1714
1712
|
eB(A) {
|
|
1715
1713
|
this.Ki = A;
|
|
@@ -1727,21 +1725,21 @@ class GA {
|
|
|
1727
1725
|
}
|
|
1728
1726
|
}
|
|
1729
1727
|
Xi(A) {
|
|
1730
|
-
if (this.
|
|
1728
|
+
if (this.Wi) {
|
|
1731
1729
|
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
|
|
1732
|
-
this.
|
|
1730
|
+
this.Wi(t);
|
|
1733
1731
|
}
|
|
1734
1732
|
}
|
|
1735
1733
|
ji(A) {
|
|
1736
|
-
if (this.
|
|
1734
|
+
if (this.Hi) {
|
|
1737
1735
|
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
|
|
1738
|
-
this.
|
|
1736
|
+
this.Hi(t);
|
|
1739
1737
|
}
|
|
1740
1738
|
}
|
|
1741
1739
|
qi(A) {
|
|
1742
|
-
if (this.
|
|
1740
|
+
if (this.Ui) {
|
|
1743
1741
|
const t = { position: { ...this.Yi }, previousPosition: { ...this.Fi }, button: A.button, originalEvent: A };
|
|
1744
|
-
this.
|
|
1742
|
+
this.Ui(t);
|
|
1745
1743
|
}
|
|
1746
1744
|
}
|
|
1747
1745
|
AB(A) {
|
|
@@ -1751,7 +1749,7 @@ class GA {
|
|
|
1751
1749
|
}
|
|
1752
1750
|
}
|
|
1753
1751
|
Zi(A) {
|
|
1754
|
-
const t = this.
|
|
1752
|
+
const t = this.Hs.canvas;
|
|
1755
1753
|
this.Fi = { ...this.Yi }, this.Ri = { x: A.clientX, y: A.clientY };
|
|
1756
1754
|
const e = t.getBoundingClientRect(), s = A.clientX - e.left, i = A.clientY - e.top, B = t.width / e.width, r = i * (t.height / e.height), n = s * B - this.xi.offsetX, o = r - this.xi.offsetY, a = Math.floor(n / this.xi.cellWidth), g = Math.floor(o / this.xi.cellHeight);
|
|
1757
1755
|
a >= 0 && a < this.xi.cols && g >= 0 && g < this.xi.rows ? (this.Yi.x = a, this.Yi.y = g) : (this.Yi.x = -1, this.Yi.y = -1);
|
|
@@ -1819,10 +1817,10 @@ const YA = (E) => class extends E {
|
|
|
1819
1817
|
this.vA.be(A, t, e / 2, s / 2);
|
|
1820
1818
|
}
|
|
1821
1819
|
triangle(A, t, e, s, i, B) {
|
|
1822
|
-
this.vA
|
|
1820
|
+
this.vA.$e(A, t, e, s, i, B);
|
|
1823
1821
|
}
|
|
1824
1822
|
bezierCurve(A, t, e, s, i, B, r, n) {
|
|
1825
|
-
this.vA.
|
|
1823
|
+
this.vA.Ge(A, t, e, s, i, B, r, n);
|
|
1826
1824
|
}
|
|
1827
1825
|
arc(A, t, e, s, i, B) {
|
|
1828
1826
|
this.vA.xe(A, t, e, s, i, B);
|
|
@@ -1840,7 +1838,7 @@ const YA = (E) => class extends E {
|
|
|
1840
1838
|
return this.vA.et(A);
|
|
1841
1839
|
}
|
|
1842
1840
|
createFramebuffer(A) {
|
|
1843
|
-
return this.vA
|
|
1841
|
+
return this.vA.Me(A.width, A.height, 5, { filter: "nearest", wrap: "clamp", format: "rgba", type: "unsigned_byte" });
|
|
1844
1842
|
}
|
|
1845
1843
|
image(A, t, e, s, i) {
|
|
1846
1844
|
this.vA.pe(A, t, e, s ?? A.width, i ?? A.height);
|
|
@@ -2036,19 +2034,19 @@ class LA {
|
|
|
2036
2034
|
for (const B of A) i.push(this.yB(B, t, e, s));
|
|
2037
2035
|
return i.push(this._B()), i.join("");
|
|
2038
2036
|
}
|
|
2039
|
-
|
|
2037
|
+
$B(A) {
|
|
2040
2038
|
return A.replace(/<path[^>]*d=""[^>]*\/>/g, "").replace(/\s+/g, " ").replace(/> </g, "><");
|
|
2041
2039
|
}
|
|
2042
2040
|
}
|
|
2043
2041
|
class UA extends W {
|
|
2044
|
-
|
|
2042
|
+
GB(A) {
|
|
2045
2043
|
return this.rB(A, "image/svg+xml;charset=utf-8");
|
|
2046
2044
|
}
|
|
2047
|
-
|
|
2045
|
+
MB(A, t) {
|
|
2048
2046
|
this.nB(A, this.aB(t) + ".svg", "image/svg+xml;charset=utf-8");
|
|
2049
2047
|
}
|
|
2050
2048
|
xB(A, t) {
|
|
2051
|
-
this
|
|
2049
|
+
this.MB(A, t || this.hB());
|
|
2052
2050
|
}
|
|
2053
2051
|
}
|
|
2054
2052
|
class J {
|
|
@@ -2061,16 +2059,16 @@ class J {
|
|
|
2061
2059
|
SB(A) {
|
|
2062
2060
|
return { includeBackgroundRectangles: A.includeBackgroundRectangles ?? !0, drawMode: A.drawMode ?? "fill", strokeWidth: A.strokeWidth ?? 1, backgroundColor: A.backgroundColor ?? [0, 0, 0, 0], filename: A.filename || this.RB.hB() };
|
|
2063
2061
|
}
|
|
2064
|
-
|
|
2062
|
+
kB(A, t = {}) {
|
|
2065
2063
|
const e = this.YB.lB(this.YB.BB(A.pipeline), A.grid), s = this.FB.bB(e, A.grid, A.font, this.SB(t));
|
|
2066
|
-
return this.FB
|
|
2064
|
+
return this.FB.$B(s);
|
|
2067
2065
|
}
|
|
2068
2066
|
xB(A, t = {}) {
|
|
2069
|
-
this.RB.xB(this.
|
|
2067
|
+
this.RB.xB(this.kB(A, t), t.filename);
|
|
2070
2068
|
}
|
|
2071
2069
|
}
|
|
2072
2070
|
class OA extends O {
|
|
2073
|
-
|
|
2071
|
+
zB(A, t, e, s = " ") {
|
|
2074
2072
|
var r;
|
|
2075
2073
|
const i = [];
|
|
2076
2074
|
let B = 0;
|
|
@@ -2086,7 +2084,7 @@ class OA extends O {
|
|
|
2086
2084
|
}
|
|
2087
2085
|
}
|
|
2088
2086
|
class WA {
|
|
2089
|
-
|
|
2087
|
+
LB(A, t) {
|
|
2090
2088
|
const e = [];
|
|
2091
2089
|
for (const i of A) {
|
|
2092
2090
|
let B = i.join("");
|
|
@@ -2099,11 +2097,11 @@ class WA {
|
|
|
2099
2097
|
}
|
|
2100
2098
|
}
|
|
2101
2099
|
class zA extends W {
|
|
2102
|
-
|
|
2103
|
-
const e = this.
|
|
2100
|
+
OB(A, t) {
|
|
2101
|
+
const e = this.TB(t);
|
|
2104
2102
|
this.nB(A, e, "text/plain;charset=utf-8");
|
|
2105
2103
|
}
|
|
2106
|
-
|
|
2104
|
+
TB(A) {
|
|
2107
2105
|
let t = this.aB(A);
|
|
2108
2106
|
return t === ".txt" || t.length <= 4 ? this.hB() : t;
|
|
2109
2107
|
}
|
|
@@ -2118,16 +2116,16 @@ class K {
|
|
|
2118
2116
|
SB(A) {
|
|
2119
2117
|
return { preserveTrailingSpaces: A.preserveTrailingSpaces ?? !1, lineEnding: A.lineEnding ?? "lf", emptyCharacter: A.emptyCharacter ?? " ", filename: A.filename || this.RB.hB() };
|
|
2120
2118
|
}
|
|
2121
|
-
|
|
2122
|
-
const e = this.SB(t), s = this.YB.
|
|
2123
|
-
return this.FB.
|
|
2119
|
+
UB(A, t = {}) {
|
|
2120
|
+
const e = this.SB(t), s = this.YB.zB(this.YB.BB(A.pipeline), A.grid, A.font, e.emptyCharacter);
|
|
2121
|
+
return this.FB.LB(s, e);
|
|
2124
2122
|
}
|
|
2125
|
-
|
|
2126
|
-
this.RB.
|
|
2123
|
+
OB(A, t = {}) {
|
|
2124
|
+
this.RB.OB(this.UB(A, t), t.filename);
|
|
2127
2125
|
}
|
|
2128
2126
|
}
|
|
2129
|
-
class
|
|
2130
|
-
|
|
2127
|
+
class kA extends O {
|
|
2128
|
+
WB(A, t = 1, e = "transparent") {
|
|
2131
2129
|
const s = A.canvas;
|
|
2132
2130
|
if (t === 1 && e === "transparent") return s;
|
|
2133
2131
|
const i = document.createElement("canvas"), B = i.getContext("2d"), r = Math.round(s.width * t), n = Math.round(s.height * t);
|
|
@@ -2135,7 +2133,7 @@ class NA extends O {
|
|
|
2135
2133
|
}
|
|
2136
2134
|
}
|
|
2137
2135
|
class HA {
|
|
2138
|
-
|
|
2136
|
+
HB(A, t) {
|
|
2139
2137
|
const e = this.KB(t.format);
|
|
2140
2138
|
return t.format === "png" ? A.toDataURL(e) : A.toDataURL(e, t.quality);
|
|
2141
2139
|
}
|
|
@@ -2160,7 +2158,7 @@ class HA {
|
|
|
2160
2158
|
}
|
|
2161
2159
|
}
|
|
2162
2160
|
}
|
|
2163
|
-
const
|
|
2161
|
+
const NA = { png: "image/png", jpg: "image/jpeg", webp: "image/webp" }, $ = { png: ".png", jpg: ".jpg", webp: ".webp" };
|
|
2164
2162
|
class JA extends W {
|
|
2165
2163
|
VB(A, t, e) {
|
|
2166
2164
|
this.ZB(A, this.aB(t) + $[e]);
|
|
@@ -2175,7 +2173,7 @@ class JA extends W {
|
|
|
2175
2173
|
}
|
|
2176
2174
|
}
|
|
2177
2175
|
NB(A) {
|
|
2178
|
-
return A in
|
|
2176
|
+
return A in NA && A in $;
|
|
2179
2177
|
}
|
|
2180
2178
|
}
|
|
2181
2179
|
class KA {
|
|
@@ -2183,7 +2181,7 @@ class KA {
|
|
|
2183
2181
|
Q(this, "YB");
|
|
2184
2182
|
Q(this, "FB");
|
|
2185
2183
|
Q(this, "RB");
|
|
2186
|
-
this.YB = new
|
|
2184
|
+
this.YB = new kA(), this.FB = new HA(), this.RB = new JA();
|
|
2187
2185
|
}
|
|
2188
2186
|
SB(A) {
|
|
2189
2187
|
return { format: A.format ?? "png", quality: A.quality ?? 1, scale: A.scale ?? 1, backgroundColor: A.backgroundColor ?? "transparent", filename: A.filename || this.RB.hB() };
|
|
@@ -2196,7 +2194,7 @@ class KA {
|
|
|
2196
2194
|
}
|
|
2197
2195
|
async JB(A, t) {
|
|
2198
2196
|
if (t.scale === 1 && t.backgroundColor === "transparent") return await this.FB.JB(A.canvas, t);
|
|
2199
|
-
const e = this.YB.
|
|
2197
|
+
const e = this.YB.WB(A, t.scale, t.backgroundColor);
|
|
2200
2198
|
return await this.FB.JB(e, t);
|
|
2201
2199
|
}
|
|
2202
2200
|
async VB(A, t = {}) {
|
|
@@ -2211,34 +2209,34 @@ const $A = (E) => class extends E {
|
|
|
2211
2209
|
this.vA.FA(this.qB);
|
|
2212
2210
|
}
|
|
2213
2211
|
toString(A = {}) {
|
|
2214
|
-
return this.jB(), new K().
|
|
2212
|
+
return this.jB(), new K().UB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
|
|
2215
2213
|
}
|
|
2216
2214
|
saveStrings(A = {}) {
|
|
2217
|
-
this.jB(), new K().
|
|
2215
|
+
this.jB(), new K().OB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
|
|
2218
2216
|
}
|
|
2219
2217
|
toSVG(A = {}) {
|
|
2220
|
-
return this.jB(), new J().
|
|
2218
|
+
return this.jB(), new J().kB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
|
|
2221
2219
|
}
|
|
2222
2220
|
saveSVG(A = {}) {
|
|
2223
2221
|
this.jB(), new J().xB({ pipeline: this.AQ, grid: this.xi, font: this.ws }, A);
|
|
2224
2222
|
}
|
|
2225
2223
|
async saveCanvas(A = {}) {
|
|
2226
|
-
await new KA().VB(this.
|
|
2224
|
+
await new KA().VB(this.Hs, A);
|
|
2227
2225
|
}
|
|
2228
|
-
},
|
|
2226
|
+
}, VA = (E) => class extends E {
|
|
2229
2227
|
async loadFont(A) {
|
|
2230
|
-
return this.ws.
|
|
2228
|
+
return this.ws.Ls(A).then(() => {
|
|
2231
2229
|
const t = this.ws.maxGlyphDimensions;
|
|
2232
2230
|
this.xi.Vs(t.width, t.height), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi();
|
|
2233
2231
|
});
|
|
2234
2232
|
}
|
|
2235
2233
|
fontSize(A) {
|
|
2236
2234
|
if (!M._(typeof A == "number" && A > 0, "Font size must be a positive number greater than 0.", { method: "fontSize", providedValue: A }) || this.ws.fontSize === A) return;
|
|
2237
|
-
this.ws.
|
|
2235
|
+
this.ws.zs(A);
|
|
2238
2236
|
const t = this.ws.maxGlyphDimensions;
|
|
2239
2237
|
this.xi.Vs(t.width, t.height), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi();
|
|
2240
2238
|
}
|
|
2241
|
-
},
|
|
2239
|
+
}, XA = (E) => class extends E {
|
|
2242
2240
|
get frameCount() {
|
|
2243
2241
|
return this.eQ.frameCount;
|
|
2244
2242
|
}
|
|
@@ -2295,9 +2293,6 @@ const $A = (E) => class extends E {
|
|
|
2295
2293
|
isKeyPressed(A) {
|
|
2296
2294
|
return this.iQ.pi(A);
|
|
2297
2295
|
}
|
|
2298
|
-
clearKeyStates() {
|
|
2299
|
-
this.iQ.$i();
|
|
2300
|
-
}
|
|
2301
2296
|
get lastKeyPressed() {
|
|
2302
2297
|
return this.iQ.yi();
|
|
2303
2298
|
}
|
|
@@ -2305,17 +2300,17 @@ const $A = (E) => class extends E {
|
|
|
2305
2300
|
return this.iQ.bi();
|
|
2306
2301
|
}
|
|
2307
2302
|
get pressedKeys() {
|
|
2308
|
-
return this.iQ
|
|
2303
|
+
return this.iQ.$i();
|
|
2309
2304
|
}
|
|
2310
2305
|
get modifierState() {
|
|
2311
|
-
return this.iQ.
|
|
2306
|
+
return this.iQ.Gi();
|
|
2312
2307
|
}
|
|
2313
2308
|
};
|
|
2314
2309
|
class qA {
|
|
2315
2310
|
constructor() {
|
|
2316
2311
|
Q(this, "vA");
|
|
2317
2312
|
Q(this, "ws");
|
|
2318
|
-
Q(this, "
|
|
2313
|
+
Q(this, "Hs");
|
|
2319
2314
|
Q(this, "xi");
|
|
2320
2315
|
Q(this, "eQ");
|
|
2321
2316
|
Q(this, "tQ");
|
|
@@ -2329,7 +2324,7 @@ class qA {
|
|
|
2329
2324
|
}
|
|
2330
2325
|
class At extends function(t, ...e) {
|
|
2331
2326
|
return e.reduce((s, i) => i(s), t);
|
|
2332
|
-
}(qA, YA, $A,
|
|
2327
|
+
}(qA, YA, $A, VA, XA, ZA, jA) {
|
|
2333
2328
|
constructor(t = {}) {
|
|
2334
2329
|
super();
|
|
2335
2330
|
Q(this, "QQ", !1);
|
|
@@ -2340,25 +2335,25 @@ class At extends function(t, ...e) {
|
|
|
2340
2335
|
Q(this, "nQ", () => {
|
|
2341
2336
|
});
|
|
2342
2337
|
Q(this, "gQ");
|
|
2343
|
-
this.
|
|
2338
|
+
this.Hs = new TA(t), this.vA = new uA(this.Hs.qs()), this.ws = new bA(this.vA, t.fontSize ?? 16), this.eQ = new MA(t.frameRate ?? 60), this.tQ = new GA(this.Hs), this.iQ = new FA(), this.qB = this.vA.YA(), this.BQ = this.vA.tt(), this.oQ(t);
|
|
2344
2339
|
}
|
|
2345
2340
|
async oQ(t) {
|
|
2346
2341
|
await this.ws.Rs(t.fontSource);
|
|
2347
2342
|
const e = this.ws.maxGlyphDimensions;
|
|
2348
|
-
this.xi = new RA(this.
|
|
2343
|
+
this.xi = new RA(this.Hs.canvas, e.width, e.height), this.tQ.Rs(this.xi), this.AQ = this.vA.Me(this.xi.cols, this.xi.rows, 5), this.aQ(), this.EQ(), this.eQ.start(() => this.sQ());
|
|
2349
2344
|
}
|
|
2350
2345
|
aQ() {
|
|
2351
2346
|
this.gQ = () => {
|
|
2352
2347
|
this.nQ();
|
|
2353
2348
|
}, window.addEventListener("resize", this.gQ), this.tQ.ui(), this.iQ.ui(), window.addEventListener("blur", () => {
|
|
2354
|
-
this.iQ
|
|
2349
|
+
this.iQ.Mi();
|
|
2355
2350
|
});
|
|
2356
2351
|
}
|
|
2357
2352
|
sQ() {
|
|
2358
2353
|
if (this.eQ.measureFrameRate(), this.eQ.incrementFrame(), this.QQ) return;
|
|
2359
2354
|
this.AQ.begin(), this.vA.we(this.qB), this.rQ(), this.vA.FA(this.qB), this.AQ.end();
|
|
2360
2355
|
const t = this.vA.state.canvasBackgroundColor;
|
|
2361
|
-
this.vA.
|
|
2356
|
+
this.vA.Ot(t[0], t[1], t[2], t[3]), this.vA.we(this.BQ), this.BQ.JA({ a: this.ws.fontFramebuffer, b: [this.ws.textureColumns, this.ws.textureRows], c: this.AQ.textures[0], d: this.AQ.textures[1], e: this.AQ.textures[2], f: this.AQ.textures[4], g: this.AQ.textures[3], h: [this.xi.cols, this.xi.rows], i: [this.xi.width, this.xi.height], j: [this.xi.offsetX, this.xi.offsetY], k: this.xi.width / this.xi.height }), this.vA.me(this.xi.offsetX, this.xi.offsetY, this.xi.width, this.xi.height);
|
|
2362
2357
|
}
|
|
2363
2358
|
setup(t) {
|
|
2364
2359
|
this.EQ = t;
|
|
@@ -2370,10 +2365,10 @@ class At extends function(t, ...e) {
|
|
|
2370
2365
|
this.nQ = t;
|
|
2371
2366
|
}
|
|
2372
2367
|
resizeCanvas(t, e) {
|
|
2373
|
-
this.
|
|
2368
|
+
this.Hs.js(t, e), this.xi.iA(), this.AQ.resize(this.xi.cols, this.xi.rows), this.vA.Fe(), this.tQ.Vi(), this.sQ();
|
|
2374
2369
|
}
|
|
2375
2370
|
destroy() {
|
|
2376
|
-
this.QQ || (this.eQ.stop(), window.removeEventListener("resize", this.gQ), this.tQ.fi(), this.iQ.fi(), this.ws.
|
|
2371
|
+
this.QQ || (this.eQ.stop(), window.removeEventListener("resize", this.gQ), this.tQ.fi(), this.iQ.fi(), this.ws.kA(), this.vA.kA(), this.QQ = !0);
|
|
2377
2372
|
}
|
|
2378
2373
|
get grid() {
|
|
2379
2374
|
return this.xi;
|
|
@@ -2382,13 +2377,13 @@ class At extends function(t, ...e) {
|
|
|
2382
2377
|
return this.ws;
|
|
2383
2378
|
}
|
|
2384
2379
|
get width() {
|
|
2385
|
-
return this.
|
|
2380
|
+
return this.Hs.width;
|
|
2386
2381
|
}
|
|
2387
2382
|
get height() {
|
|
2388
|
-
return this.
|
|
2383
|
+
return this.Hs.height;
|
|
2389
2384
|
}
|
|
2390
2385
|
get canvas() {
|
|
2391
|
-
return this.
|
|
2386
|
+
return this.Hs.canvas;
|
|
2392
2387
|
}
|
|
2393
2388
|
get isDisposed() {
|
|
2394
2389
|
return this.QQ;
|
|
@@ -2407,15 +2402,15 @@ class z {
|
|
|
2407
2402
|
M.v(A);
|
|
2408
2403
|
}
|
|
2409
2404
|
static get version() {
|
|
2410
|
-
return "0.2.1-beta.
|
|
2405
|
+
return "0.2.1-beta.3";
|
|
2411
2406
|
}
|
|
2412
2407
|
}
|
|
2413
2408
|
const et = Object.freeze(Object.defineProperty({ __proto__: null }, Symbol.toStringTag, { value: "Module" })), st = z.create, it = z.setErrorLevel, Bt = z.version;
|
|
2414
2409
|
export {
|
|
2415
|
-
U as GLFramebuffer,
|
|
2416
2410
|
TA as TextmodeCanvas,
|
|
2417
2411
|
tA as TextmodeErrorLevel,
|
|
2418
2412
|
bA as TextmodeFont,
|
|
2413
|
+
U as TextmodeFramebuffer,
|
|
2419
2414
|
RA as TextmodeGrid,
|
|
2420
2415
|
At as Textmodifier,
|
|
2421
2416
|
st as create,
|