@pinkparrot/qsafe-sig 0.0.2 → 0.0.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/.vscode/launch.json +20 -0
- package/README.md +2 -1
- package/benchmark.mjs +45 -0
- package/binary-writer-reader.mjs +20 -0
- package/constants.mjs +56 -0
- package/dist/qsafe-sig.browser.min.js +3102 -0
- package/package.json +18 -5
- package/publish.bat +22 -0
- package/qsafeHelper.mjs +28 -0
- package/test-helpers.mjs +21 -0
- package/test.mjs +83 -0
|
@@ -0,0 +1,3102 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
// node_modules/@noble/hashes/utils.js
|
|
9
|
+
function isBytes(a) {
|
|
10
|
+
return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
|
|
11
|
+
}
|
|
12
|
+
function anumber(n, title = "") {
|
|
13
|
+
if (!Number.isSafeInteger(n) || n < 0) {
|
|
14
|
+
const prefix = title && `"${title}" `;
|
|
15
|
+
throw new Error(`${prefix}expected integer >= 0, got ${n}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function abytes(value, length, title = "") {
|
|
19
|
+
const bytes = isBytes(value);
|
|
20
|
+
const len = value?.length;
|
|
21
|
+
const needsLen = length !== void 0;
|
|
22
|
+
if (!bytes || needsLen && len !== length) {
|
|
23
|
+
const prefix = title && `"${title}" `;
|
|
24
|
+
const ofLen = needsLen ? ` of length ${length}` : "";
|
|
25
|
+
const got = bytes ? `length=${len}` : `type=${typeof value}`;
|
|
26
|
+
throw new Error(prefix + "expected Uint8Array" + ofLen + ", got " + got);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function ahash(h) {
|
|
31
|
+
if (typeof h !== "function" || typeof h.create !== "function")
|
|
32
|
+
throw new Error("Hash must wrapped by utils.createHasher");
|
|
33
|
+
anumber(h.outputLen);
|
|
34
|
+
anumber(h.blockLen);
|
|
35
|
+
}
|
|
36
|
+
function aexists(instance, checkFinished = true) {
|
|
37
|
+
if (instance.destroyed)
|
|
38
|
+
throw new Error("Hash instance has been destroyed");
|
|
39
|
+
if (checkFinished && instance.finished)
|
|
40
|
+
throw new Error("Hash#digest() has already been called");
|
|
41
|
+
}
|
|
42
|
+
function aoutput(out, instance) {
|
|
43
|
+
abytes(out, void 0, "digestInto() output");
|
|
44
|
+
const min = instance.outputLen;
|
|
45
|
+
if (out.length < min) {
|
|
46
|
+
throw new Error('"digestInto() output" expected to be of length >=' + min);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function clean(...arrays) {
|
|
50
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
51
|
+
arrays[i].fill(0);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function createView(arr) {
|
|
55
|
+
return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
56
|
+
}
|
|
57
|
+
function rotr(word, shift) {
|
|
58
|
+
return word << 32 - shift | word >>> shift;
|
|
59
|
+
}
|
|
60
|
+
var hasHexBuiltin = /* @__PURE__ */ (() => (
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function"
|
|
63
|
+
))();
|
|
64
|
+
var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
65
|
+
function bytesToHex(bytes) {
|
|
66
|
+
abytes(bytes);
|
|
67
|
+
if (hasHexBuiltin)
|
|
68
|
+
return bytes.toHex();
|
|
69
|
+
let hex = "";
|
|
70
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
71
|
+
hex += hexes[bytes[i]];
|
|
72
|
+
}
|
|
73
|
+
return hex;
|
|
74
|
+
}
|
|
75
|
+
var asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };
|
|
76
|
+
function asciiToBase16(ch) {
|
|
77
|
+
if (ch >= asciis._0 && ch <= asciis._9)
|
|
78
|
+
return ch - asciis._0;
|
|
79
|
+
if (ch >= asciis.A && ch <= asciis.F)
|
|
80
|
+
return ch - (asciis.A - 10);
|
|
81
|
+
if (ch >= asciis.a && ch <= asciis.f)
|
|
82
|
+
return ch - (asciis.a - 10);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
function hexToBytes(hex) {
|
|
86
|
+
if (typeof hex !== "string")
|
|
87
|
+
throw new Error("hex string expected, got " + typeof hex);
|
|
88
|
+
if (hasHexBuiltin)
|
|
89
|
+
return Uint8Array.fromHex(hex);
|
|
90
|
+
const hl = hex.length;
|
|
91
|
+
const al = hl / 2;
|
|
92
|
+
if (hl % 2)
|
|
93
|
+
throw new Error("hex string expected, got unpadded hex of length " + hl);
|
|
94
|
+
const array = new Uint8Array(al);
|
|
95
|
+
for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {
|
|
96
|
+
const n1 = asciiToBase16(hex.charCodeAt(hi));
|
|
97
|
+
const n2 = asciiToBase16(hex.charCodeAt(hi + 1));
|
|
98
|
+
if (n1 === void 0 || n2 === void 0) {
|
|
99
|
+
const char = hex[hi] + hex[hi + 1];
|
|
100
|
+
throw new Error('hex string expected, got non-hex character "' + char + '" at index ' + hi);
|
|
101
|
+
}
|
|
102
|
+
array[ai] = n1 * 16 + n2;
|
|
103
|
+
}
|
|
104
|
+
return array;
|
|
105
|
+
}
|
|
106
|
+
function concatBytes(...arrays) {
|
|
107
|
+
let sum = 0;
|
|
108
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
109
|
+
const a = arrays[i];
|
|
110
|
+
abytes(a);
|
|
111
|
+
sum += a.length;
|
|
112
|
+
}
|
|
113
|
+
const res = new Uint8Array(sum);
|
|
114
|
+
for (let i = 0, pad = 0; i < arrays.length; i++) {
|
|
115
|
+
const a = arrays[i];
|
|
116
|
+
res.set(a, pad);
|
|
117
|
+
pad += a.length;
|
|
118
|
+
}
|
|
119
|
+
return res;
|
|
120
|
+
}
|
|
121
|
+
function createHasher(hashCons, info = {}) {
|
|
122
|
+
const hashC = (msg, opts) => hashCons(opts).update(msg).digest();
|
|
123
|
+
const tmp = hashCons(void 0);
|
|
124
|
+
hashC.outputLen = tmp.outputLen;
|
|
125
|
+
hashC.blockLen = tmp.blockLen;
|
|
126
|
+
hashC.create = (opts) => hashCons(opts);
|
|
127
|
+
Object.assign(hashC, info);
|
|
128
|
+
return Object.freeze(hashC);
|
|
129
|
+
}
|
|
130
|
+
function randomBytes(bytesLength = 32) {
|
|
131
|
+
const cr = typeof globalThis === "object" ? globalThis.crypto : null;
|
|
132
|
+
if (typeof cr?.getRandomValues !== "function")
|
|
133
|
+
throw new Error("crypto.getRandomValues must be defined");
|
|
134
|
+
return cr.getRandomValues(new Uint8Array(bytesLength));
|
|
135
|
+
}
|
|
136
|
+
var oidNist = (suffix) => ({
|
|
137
|
+
oid: Uint8Array.from([6, 9, 96, 134, 72, 1, 101, 3, 4, 2, suffix])
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// node_modules/@noble/hashes/hmac.js
|
|
141
|
+
var _HMAC = class {
|
|
142
|
+
oHash;
|
|
143
|
+
iHash;
|
|
144
|
+
blockLen;
|
|
145
|
+
outputLen;
|
|
146
|
+
finished = false;
|
|
147
|
+
destroyed = false;
|
|
148
|
+
constructor(hash, key) {
|
|
149
|
+
ahash(hash);
|
|
150
|
+
abytes(key, void 0, "key");
|
|
151
|
+
this.iHash = hash.create();
|
|
152
|
+
if (typeof this.iHash.update !== "function")
|
|
153
|
+
throw new Error("Expected instance of class which extends utils.Hash");
|
|
154
|
+
this.blockLen = this.iHash.blockLen;
|
|
155
|
+
this.outputLen = this.iHash.outputLen;
|
|
156
|
+
const blockLen = this.blockLen;
|
|
157
|
+
const pad = new Uint8Array(blockLen);
|
|
158
|
+
pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);
|
|
159
|
+
for (let i = 0; i < pad.length; i++)
|
|
160
|
+
pad[i] ^= 54;
|
|
161
|
+
this.iHash.update(pad);
|
|
162
|
+
this.oHash = hash.create();
|
|
163
|
+
for (let i = 0; i < pad.length; i++)
|
|
164
|
+
pad[i] ^= 54 ^ 92;
|
|
165
|
+
this.oHash.update(pad);
|
|
166
|
+
clean(pad);
|
|
167
|
+
}
|
|
168
|
+
update(buf) {
|
|
169
|
+
aexists(this);
|
|
170
|
+
this.iHash.update(buf);
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
173
|
+
digestInto(out) {
|
|
174
|
+
aexists(this);
|
|
175
|
+
abytes(out, this.outputLen, "output");
|
|
176
|
+
this.finished = true;
|
|
177
|
+
this.iHash.digestInto(out);
|
|
178
|
+
this.oHash.update(out);
|
|
179
|
+
this.oHash.digestInto(out);
|
|
180
|
+
this.destroy();
|
|
181
|
+
}
|
|
182
|
+
digest() {
|
|
183
|
+
const out = new Uint8Array(this.oHash.outputLen);
|
|
184
|
+
this.digestInto(out);
|
|
185
|
+
return out;
|
|
186
|
+
}
|
|
187
|
+
_cloneInto(to) {
|
|
188
|
+
to ||= Object.create(Object.getPrototypeOf(this), {});
|
|
189
|
+
const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;
|
|
190
|
+
to = to;
|
|
191
|
+
to.finished = finished;
|
|
192
|
+
to.destroyed = destroyed;
|
|
193
|
+
to.blockLen = blockLen;
|
|
194
|
+
to.outputLen = outputLen;
|
|
195
|
+
to.oHash = oHash._cloneInto(to.oHash);
|
|
196
|
+
to.iHash = iHash._cloneInto(to.iHash);
|
|
197
|
+
return to;
|
|
198
|
+
}
|
|
199
|
+
clone() {
|
|
200
|
+
return this._cloneInto();
|
|
201
|
+
}
|
|
202
|
+
destroy() {
|
|
203
|
+
this.destroyed = true;
|
|
204
|
+
this.oHash.destroy();
|
|
205
|
+
this.iHash.destroy();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
var hmac = (hash, key, message) => new _HMAC(hash, key).update(message).digest();
|
|
209
|
+
hmac.create = (hash, key) => new _HMAC(hash, key);
|
|
210
|
+
|
|
211
|
+
// node_modules/@noble/hashes/hkdf.js
|
|
212
|
+
function extract(hash, ikm, salt) {
|
|
213
|
+
ahash(hash);
|
|
214
|
+
if (salt === void 0)
|
|
215
|
+
salt = new Uint8Array(hash.outputLen);
|
|
216
|
+
return hmac(hash, salt, ikm);
|
|
217
|
+
}
|
|
218
|
+
var HKDF_COUNTER = /* @__PURE__ */ Uint8Array.of(0);
|
|
219
|
+
var EMPTY_BUFFER = /* @__PURE__ */ Uint8Array.of();
|
|
220
|
+
function expand(hash, prk, info, length = 32) {
|
|
221
|
+
ahash(hash);
|
|
222
|
+
anumber(length, "length");
|
|
223
|
+
const olen = hash.outputLen;
|
|
224
|
+
if (length > 255 * olen)
|
|
225
|
+
throw new Error("Length must be <= 255*HashLen");
|
|
226
|
+
const blocks = Math.ceil(length / olen);
|
|
227
|
+
if (info === void 0)
|
|
228
|
+
info = EMPTY_BUFFER;
|
|
229
|
+
else
|
|
230
|
+
abytes(info, void 0, "info");
|
|
231
|
+
const okm = new Uint8Array(blocks * olen);
|
|
232
|
+
const HMAC = hmac.create(hash, prk);
|
|
233
|
+
const HMACTmp = HMAC._cloneInto();
|
|
234
|
+
const T = new Uint8Array(HMAC.outputLen);
|
|
235
|
+
for (let counter = 0; counter < blocks; counter++) {
|
|
236
|
+
HKDF_COUNTER[0] = counter + 1;
|
|
237
|
+
HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T).update(info).update(HKDF_COUNTER).digestInto(T);
|
|
238
|
+
okm.set(T, olen * counter);
|
|
239
|
+
HMAC._cloneInto(HMACTmp);
|
|
240
|
+
}
|
|
241
|
+
HMAC.destroy();
|
|
242
|
+
HMACTmp.destroy();
|
|
243
|
+
clean(T, HKDF_COUNTER);
|
|
244
|
+
return okm.slice(0, length);
|
|
245
|
+
}
|
|
246
|
+
var hkdf = (hash, ikm, salt, info, length) => expand(hash, extract(hash, ikm, salt), info, length);
|
|
247
|
+
|
|
248
|
+
// node_modules/@noble/hashes/_md.js
|
|
249
|
+
function Chi(a, b, c) {
|
|
250
|
+
return a & b ^ ~a & c;
|
|
251
|
+
}
|
|
252
|
+
function Maj(a, b, c) {
|
|
253
|
+
return a & b ^ a & c ^ b & c;
|
|
254
|
+
}
|
|
255
|
+
var HashMD = class {
|
|
256
|
+
blockLen;
|
|
257
|
+
outputLen;
|
|
258
|
+
padOffset;
|
|
259
|
+
isLE;
|
|
260
|
+
// For partial updates less than block size
|
|
261
|
+
buffer;
|
|
262
|
+
view;
|
|
263
|
+
finished = false;
|
|
264
|
+
length = 0;
|
|
265
|
+
pos = 0;
|
|
266
|
+
destroyed = false;
|
|
267
|
+
constructor(blockLen, outputLen, padOffset, isLE) {
|
|
268
|
+
this.blockLen = blockLen;
|
|
269
|
+
this.outputLen = outputLen;
|
|
270
|
+
this.padOffset = padOffset;
|
|
271
|
+
this.isLE = isLE;
|
|
272
|
+
this.buffer = new Uint8Array(blockLen);
|
|
273
|
+
this.view = createView(this.buffer);
|
|
274
|
+
}
|
|
275
|
+
update(data) {
|
|
276
|
+
aexists(this);
|
|
277
|
+
abytes(data);
|
|
278
|
+
const { view, buffer, blockLen } = this;
|
|
279
|
+
const len = data.length;
|
|
280
|
+
for (let pos = 0; pos < len; ) {
|
|
281
|
+
const take = Math.min(blockLen - this.pos, len - pos);
|
|
282
|
+
if (take === blockLen) {
|
|
283
|
+
const dataView = createView(data);
|
|
284
|
+
for (; blockLen <= len - pos; pos += blockLen)
|
|
285
|
+
this.process(dataView, pos);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
buffer.set(data.subarray(pos, pos + take), this.pos);
|
|
289
|
+
this.pos += take;
|
|
290
|
+
pos += take;
|
|
291
|
+
if (this.pos === blockLen) {
|
|
292
|
+
this.process(view, 0);
|
|
293
|
+
this.pos = 0;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
this.length += data.length;
|
|
297
|
+
this.roundClean();
|
|
298
|
+
return this;
|
|
299
|
+
}
|
|
300
|
+
digestInto(out) {
|
|
301
|
+
aexists(this);
|
|
302
|
+
aoutput(out, this);
|
|
303
|
+
this.finished = true;
|
|
304
|
+
const { buffer, view, blockLen, isLE } = this;
|
|
305
|
+
let { pos } = this;
|
|
306
|
+
buffer[pos++] = 128;
|
|
307
|
+
clean(this.buffer.subarray(pos));
|
|
308
|
+
if (this.padOffset > blockLen - pos) {
|
|
309
|
+
this.process(view, 0);
|
|
310
|
+
pos = 0;
|
|
311
|
+
}
|
|
312
|
+
for (let i = pos; i < blockLen; i++)
|
|
313
|
+
buffer[i] = 0;
|
|
314
|
+
view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);
|
|
315
|
+
this.process(view, 0);
|
|
316
|
+
const oview = createView(out);
|
|
317
|
+
const len = this.outputLen;
|
|
318
|
+
if (len % 4)
|
|
319
|
+
throw new Error("_sha2: outputLen must be aligned to 32bit");
|
|
320
|
+
const outLen = len / 4;
|
|
321
|
+
const state = this.get();
|
|
322
|
+
if (outLen > state.length)
|
|
323
|
+
throw new Error("_sha2: outputLen bigger than state");
|
|
324
|
+
for (let i = 0; i < outLen; i++)
|
|
325
|
+
oview.setUint32(4 * i, state[i], isLE);
|
|
326
|
+
}
|
|
327
|
+
digest() {
|
|
328
|
+
const { buffer, outputLen } = this;
|
|
329
|
+
this.digestInto(buffer);
|
|
330
|
+
const res = buffer.slice(0, outputLen);
|
|
331
|
+
this.destroy();
|
|
332
|
+
return res;
|
|
333
|
+
}
|
|
334
|
+
_cloneInto(to) {
|
|
335
|
+
to ||= new this.constructor();
|
|
336
|
+
to.set(...this.get());
|
|
337
|
+
const { blockLen, buffer, length, finished, destroyed, pos } = this;
|
|
338
|
+
to.destroyed = destroyed;
|
|
339
|
+
to.finished = finished;
|
|
340
|
+
to.length = length;
|
|
341
|
+
to.pos = pos;
|
|
342
|
+
if (length % blockLen)
|
|
343
|
+
to.buffer.set(buffer);
|
|
344
|
+
return to;
|
|
345
|
+
}
|
|
346
|
+
clone() {
|
|
347
|
+
return this._cloneInto();
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
var SHA256_IV = /* @__PURE__ */ Uint32Array.from([
|
|
351
|
+
1779033703,
|
|
352
|
+
3144134277,
|
|
353
|
+
1013904242,
|
|
354
|
+
2773480762,
|
|
355
|
+
1359893119,
|
|
356
|
+
2600822924,
|
|
357
|
+
528734635,
|
|
358
|
+
1541459225
|
|
359
|
+
]);
|
|
360
|
+
var SHA512_IV = /* @__PURE__ */ Uint32Array.from([
|
|
361
|
+
1779033703,
|
|
362
|
+
4089235720,
|
|
363
|
+
3144134277,
|
|
364
|
+
2227873595,
|
|
365
|
+
1013904242,
|
|
366
|
+
4271175723,
|
|
367
|
+
2773480762,
|
|
368
|
+
1595750129,
|
|
369
|
+
1359893119,
|
|
370
|
+
2917565137,
|
|
371
|
+
2600822924,
|
|
372
|
+
725511199,
|
|
373
|
+
528734635,
|
|
374
|
+
4215389547,
|
|
375
|
+
1541459225,
|
|
376
|
+
327033209
|
|
377
|
+
]);
|
|
378
|
+
|
|
379
|
+
// node_modules/@noble/hashes/_u64.js
|
|
380
|
+
var U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
|
|
381
|
+
var _32n = /* @__PURE__ */ BigInt(32);
|
|
382
|
+
function fromBig(n, le = false) {
|
|
383
|
+
if (le)
|
|
384
|
+
return { h: Number(n & U32_MASK64), l: Number(n >> _32n & U32_MASK64) };
|
|
385
|
+
return { h: Number(n >> _32n & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
|
|
386
|
+
}
|
|
387
|
+
function split(lst, le = false) {
|
|
388
|
+
const len = lst.length;
|
|
389
|
+
let Ah = new Uint32Array(len);
|
|
390
|
+
let Al = new Uint32Array(len);
|
|
391
|
+
for (let i = 0; i < len; i++) {
|
|
392
|
+
const { h, l } = fromBig(lst[i], le);
|
|
393
|
+
[Ah[i], Al[i]] = [h, l];
|
|
394
|
+
}
|
|
395
|
+
return [Ah, Al];
|
|
396
|
+
}
|
|
397
|
+
var shrSH = (h, _l, s) => h >>> s;
|
|
398
|
+
var shrSL = (h, l, s) => h << 32 - s | l >>> s;
|
|
399
|
+
var rotrSH = (h, l, s) => h >>> s | l << 32 - s;
|
|
400
|
+
var rotrSL = (h, l, s) => h << 32 - s | l >>> s;
|
|
401
|
+
var rotrBH = (h, l, s) => h << 64 - s | l >>> s - 32;
|
|
402
|
+
var rotrBL = (h, l, s) => h >>> s - 32 | l << 64 - s;
|
|
403
|
+
function add(Ah, Al, Bh, Bl) {
|
|
404
|
+
const l = (Al >>> 0) + (Bl >>> 0);
|
|
405
|
+
return { h: Ah + Bh + (l / 2 ** 32 | 0) | 0, l: l | 0 };
|
|
406
|
+
}
|
|
407
|
+
var add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);
|
|
408
|
+
var add3H = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;
|
|
409
|
+
var add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);
|
|
410
|
+
var add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;
|
|
411
|
+
var add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
|
|
412
|
+
var add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;
|
|
413
|
+
|
|
414
|
+
// node_modules/@noble/hashes/sha2.js
|
|
415
|
+
var SHA256_K = /* @__PURE__ */ Uint32Array.from([
|
|
416
|
+
1116352408,
|
|
417
|
+
1899447441,
|
|
418
|
+
3049323471,
|
|
419
|
+
3921009573,
|
|
420
|
+
961987163,
|
|
421
|
+
1508970993,
|
|
422
|
+
2453635748,
|
|
423
|
+
2870763221,
|
|
424
|
+
3624381080,
|
|
425
|
+
310598401,
|
|
426
|
+
607225278,
|
|
427
|
+
1426881987,
|
|
428
|
+
1925078388,
|
|
429
|
+
2162078206,
|
|
430
|
+
2614888103,
|
|
431
|
+
3248222580,
|
|
432
|
+
3835390401,
|
|
433
|
+
4022224774,
|
|
434
|
+
264347078,
|
|
435
|
+
604807628,
|
|
436
|
+
770255983,
|
|
437
|
+
1249150122,
|
|
438
|
+
1555081692,
|
|
439
|
+
1996064986,
|
|
440
|
+
2554220882,
|
|
441
|
+
2821834349,
|
|
442
|
+
2952996808,
|
|
443
|
+
3210313671,
|
|
444
|
+
3336571891,
|
|
445
|
+
3584528711,
|
|
446
|
+
113926993,
|
|
447
|
+
338241895,
|
|
448
|
+
666307205,
|
|
449
|
+
773529912,
|
|
450
|
+
1294757372,
|
|
451
|
+
1396182291,
|
|
452
|
+
1695183700,
|
|
453
|
+
1986661051,
|
|
454
|
+
2177026350,
|
|
455
|
+
2456956037,
|
|
456
|
+
2730485921,
|
|
457
|
+
2820302411,
|
|
458
|
+
3259730800,
|
|
459
|
+
3345764771,
|
|
460
|
+
3516065817,
|
|
461
|
+
3600352804,
|
|
462
|
+
4094571909,
|
|
463
|
+
275423344,
|
|
464
|
+
430227734,
|
|
465
|
+
506948616,
|
|
466
|
+
659060556,
|
|
467
|
+
883997877,
|
|
468
|
+
958139571,
|
|
469
|
+
1322822218,
|
|
470
|
+
1537002063,
|
|
471
|
+
1747873779,
|
|
472
|
+
1955562222,
|
|
473
|
+
2024104815,
|
|
474
|
+
2227730452,
|
|
475
|
+
2361852424,
|
|
476
|
+
2428436474,
|
|
477
|
+
2756734187,
|
|
478
|
+
3204031479,
|
|
479
|
+
3329325298
|
|
480
|
+
]);
|
|
481
|
+
var SHA256_W = /* @__PURE__ */ new Uint32Array(64);
|
|
482
|
+
var SHA2_32B = class extends HashMD {
|
|
483
|
+
constructor(outputLen) {
|
|
484
|
+
super(64, outputLen, 8, false);
|
|
485
|
+
}
|
|
486
|
+
get() {
|
|
487
|
+
const { A, B, C, D, E, F, G, H } = this;
|
|
488
|
+
return [A, B, C, D, E, F, G, H];
|
|
489
|
+
}
|
|
490
|
+
// prettier-ignore
|
|
491
|
+
set(A, B, C, D, E, F, G, H) {
|
|
492
|
+
this.A = A | 0;
|
|
493
|
+
this.B = B | 0;
|
|
494
|
+
this.C = C | 0;
|
|
495
|
+
this.D = D | 0;
|
|
496
|
+
this.E = E | 0;
|
|
497
|
+
this.F = F | 0;
|
|
498
|
+
this.G = G | 0;
|
|
499
|
+
this.H = H | 0;
|
|
500
|
+
}
|
|
501
|
+
process(view, offset) {
|
|
502
|
+
for (let i = 0; i < 16; i++, offset += 4)
|
|
503
|
+
SHA256_W[i] = view.getUint32(offset, false);
|
|
504
|
+
for (let i = 16; i < 64; i++) {
|
|
505
|
+
const W15 = SHA256_W[i - 15];
|
|
506
|
+
const W2 = SHA256_W[i - 2];
|
|
507
|
+
const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ W15 >>> 3;
|
|
508
|
+
const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ W2 >>> 10;
|
|
509
|
+
SHA256_W[i] = s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16] | 0;
|
|
510
|
+
}
|
|
511
|
+
let { A, B, C, D, E, F, G, H } = this;
|
|
512
|
+
for (let i = 0; i < 64; i++) {
|
|
513
|
+
const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);
|
|
514
|
+
const T1 = H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i] | 0;
|
|
515
|
+
const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);
|
|
516
|
+
const T2 = sigma0 + Maj(A, B, C) | 0;
|
|
517
|
+
H = G;
|
|
518
|
+
G = F;
|
|
519
|
+
F = E;
|
|
520
|
+
E = D + T1 | 0;
|
|
521
|
+
D = C;
|
|
522
|
+
C = B;
|
|
523
|
+
B = A;
|
|
524
|
+
A = T1 + T2 | 0;
|
|
525
|
+
}
|
|
526
|
+
A = A + this.A | 0;
|
|
527
|
+
B = B + this.B | 0;
|
|
528
|
+
C = C + this.C | 0;
|
|
529
|
+
D = D + this.D | 0;
|
|
530
|
+
E = E + this.E | 0;
|
|
531
|
+
F = F + this.F | 0;
|
|
532
|
+
G = G + this.G | 0;
|
|
533
|
+
H = H + this.H | 0;
|
|
534
|
+
this.set(A, B, C, D, E, F, G, H);
|
|
535
|
+
}
|
|
536
|
+
roundClean() {
|
|
537
|
+
clean(SHA256_W);
|
|
538
|
+
}
|
|
539
|
+
destroy() {
|
|
540
|
+
this.set(0, 0, 0, 0, 0, 0, 0, 0);
|
|
541
|
+
clean(this.buffer);
|
|
542
|
+
}
|
|
543
|
+
};
|
|
544
|
+
var _SHA256 = class extends SHA2_32B {
|
|
545
|
+
// We cannot use array here since array allows indexing by variable
|
|
546
|
+
// which means optimizer/compiler cannot use registers.
|
|
547
|
+
A = SHA256_IV[0] | 0;
|
|
548
|
+
B = SHA256_IV[1] | 0;
|
|
549
|
+
C = SHA256_IV[2] | 0;
|
|
550
|
+
D = SHA256_IV[3] | 0;
|
|
551
|
+
E = SHA256_IV[4] | 0;
|
|
552
|
+
F = SHA256_IV[5] | 0;
|
|
553
|
+
G = SHA256_IV[6] | 0;
|
|
554
|
+
H = SHA256_IV[7] | 0;
|
|
555
|
+
constructor() {
|
|
556
|
+
super(32);
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
var K512 = /* @__PURE__ */ (() => split([
|
|
560
|
+
"0x428a2f98d728ae22",
|
|
561
|
+
"0x7137449123ef65cd",
|
|
562
|
+
"0xb5c0fbcfec4d3b2f",
|
|
563
|
+
"0xe9b5dba58189dbbc",
|
|
564
|
+
"0x3956c25bf348b538",
|
|
565
|
+
"0x59f111f1b605d019",
|
|
566
|
+
"0x923f82a4af194f9b",
|
|
567
|
+
"0xab1c5ed5da6d8118",
|
|
568
|
+
"0xd807aa98a3030242",
|
|
569
|
+
"0x12835b0145706fbe",
|
|
570
|
+
"0x243185be4ee4b28c",
|
|
571
|
+
"0x550c7dc3d5ffb4e2",
|
|
572
|
+
"0x72be5d74f27b896f",
|
|
573
|
+
"0x80deb1fe3b1696b1",
|
|
574
|
+
"0x9bdc06a725c71235",
|
|
575
|
+
"0xc19bf174cf692694",
|
|
576
|
+
"0xe49b69c19ef14ad2",
|
|
577
|
+
"0xefbe4786384f25e3",
|
|
578
|
+
"0x0fc19dc68b8cd5b5",
|
|
579
|
+
"0x240ca1cc77ac9c65",
|
|
580
|
+
"0x2de92c6f592b0275",
|
|
581
|
+
"0x4a7484aa6ea6e483",
|
|
582
|
+
"0x5cb0a9dcbd41fbd4",
|
|
583
|
+
"0x76f988da831153b5",
|
|
584
|
+
"0x983e5152ee66dfab",
|
|
585
|
+
"0xa831c66d2db43210",
|
|
586
|
+
"0xb00327c898fb213f",
|
|
587
|
+
"0xbf597fc7beef0ee4",
|
|
588
|
+
"0xc6e00bf33da88fc2",
|
|
589
|
+
"0xd5a79147930aa725",
|
|
590
|
+
"0x06ca6351e003826f",
|
|
591
|
+
"0x142929670a0e6e70",
|
|
592
|
+
"0x27b70a8546d22ffc",
|
|
593
|
+
"0x2e1b21385c26c926",
|
|
594
|
+
"0x4d2c6dfc5ac42aed",
|
|
595
|
+
"0x53380d139d95b3df",
|
|
596
|
+
"0x650a73548baf63de",
|
|
597
|
+
"0x766a0abb3c77b2a8",
|
|
598
|
+
"0x81c2c92e47edaee6",
|
|
599
|
+
"0x92722c851482353b",
|
|
600
|
+
"0xa2bfe8a14cf10364",
|
|
601
|
+
"0xa81a664bbc423001",
|
|
602
|
+
"0xc24b8b70d0f89791",
|
|
603
|
+
"0xc76c51a30654be30",
|
|
604
|
+
"0xd192e819d6ef5218",
|
|
605
|
+
"0xd69906245565a910",
|
|
606
|
+
"0xf40e35855771202a",
|
|
607
|
+
"0x106aa07032bbd1b8",
|
|
608
|
+
"0x19a4c116b8d2d0c8",
|
|
609
|
+
"0x1e376c085141ab53",
|
|
610
|
+
"0x2748774cdf8eeb99",
|
|
611
|
+
"0x34b0bcb5e19b48a8",
|
|
612
|
+
"0x391c0cb3c5c95a63",
|
|
613
|
+
"0x4ed8aa4ae3418acb",
|
|
614
|
+
"0x5b9cca4f7763e373",
|
|
615
|
+
"0x682e6ff3d6b2b8a3",
|
|
616
|
+
"0x748f82ee5defb2fc",
|
|
617
|
+
"0x78a5636f43172f60",
|
|
618
|
+
"0x84c87814a1f0ab72",
|
|
619
|
+
"0x8cc702081a6439ec",
|
|
620
|
+
"0x90befffa23631e28",
|
|
621
|
+
"0xa4506cebde82bde9",
|
|
622
|
+
"0xbef9a3f7b2c67915",
|
|
623
|
+
"0xc67178f2e372532b",
|
|
624
|
+
"0xca273eceea26619c",
|
|
625
|
+
"0xd186b8c721c0c207",
|
|
626
|
+
"0xeada7dd6cde0eb1e",
|
|
627
|
+
"0xf57d4f7fee6ed178",
|
|
628
|
+
"0x06f067aa72176fba",
|
|
629
|
+
"0x0a637dc5a2c898a6",
|
|
630
|
+
"0x113f9804bef90dae",
|
|
631
|
+
"0x1b710b35131c471b",
|
|
632
|
+
"0x28db77f523047d84",
|
|
633
|
+
"0x32caab7b40c72493",
|
|
634
|
+
"0x3c9ebe0a15c9bebc",
|
|
635
|
+
"0x431d67c49c100d4c",
|
|
636
|
+
"0x4cc5d4becb3e42b6",
|
|
637
|
+
"0x597f299cfc657e2a",
|
|
638
|
+
"0x5fcb6fab3ad6faec",
|
|
639
|
+
"0x6c44198c4a475817"
|
|
640
|
+
].map((n) => BigInt(n))))();
|
|
641
|
+
var SHA512_Kh = /* @__PURE__ */ (() => K512[0])();
|
|
642
|
+
var SHA512_Kl = /* @__PURE__ */ (() => K512[1])();
|
|
643
|
+
var SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);
|
|
644
|
+
var SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);
|
|
645
|
+
var SHA2_64B = class extends HashMD {
|
|
646
|
+
constructor(outputLen) {
|
|
647
|
+
super(128, outputLen, 16, false);
|
|
648
|
+
}
|
|
649
|
+
// prettier-ignore
|
|
650
|
+
get() {
|
|
651
|
+
const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
|
|
652
|
+
return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];
|
|
653
|
+
}
|
|
654
|
+
// prettier-ignore
|
|
655
|
+
set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {
|
|
656
|
+
this.Ah = Ah | 0;
|
|
657
|
+
this.Al = Al | 0;
|
|
658
|
+
this.Bh = Bh | 0;
|
|
659
|
+
this.Bl = Bl | 0;
|
|
660
|
+
this.Ch = Ch | 0;
|
|
661
|
+
this.Cl = Cl | 0;
|
|
662
|
+
this.Dh = Dh | 0;
|
|
663
|
+
this.Dl = Dl | 0;
|
|
664
|
+
this.Eh = Eh | 0;
|
|
665
|
+
this.El = El | 0;
|
|
666
|
+
this.Fh = Fh | 0;
|
|
667
|
+
this.Fl = Fl | 0;
|
|
668
|
+
this.Gh = Gh | 0;
|
|
669
|
+
this.Gl = Gl | 0;
|
|
670
|
+
this.Hh = Hh | 0;
|
|
671
|
+
this.Hl = Hl | 0;
|
|
672
|
+
}
|
|
673
|
+
process(view, offset) {
|
|
674
|
+
for (let i = 0; i < 16; i++, offset += 4) {
|
|
675
|
+
SHA512_W_H[i] = view.getUint32(offset);
|
|
676
|
+
SHA512_W_L[i] = view.getUint32(offset += 4);
|
|
677
|
+
}
|
|
678
|
+
for (let i = 16; i < 80; i++) {
|
|
679
|
+
const W15h = SHA512_W_H[i - 15] | 0;
|
|
680
|
+
const W15l = SHA512_W_L[i - 15] | 0;
|
|
681
|
+
const s0h = rotrSH(W15h, W15l, 1) ^ rotrSH(W15h, W15l, 8) ^ shrSH(W15h, W15l, 7);
|
|
682
|
+
const s0l = rotrSL(W15h, W15l, 1) ^ rotrSL(W15h, W15l, 8) ^ shrSL(W15h, W15l, 7);
|
|
683
|
+
const W2h = SHA512_W_H[i - 2] | 0;
|
|
684
|
+
const W2l = SHA512_W_L[i - 2] | 0;
|
|
685
|
+
const s1h = rotrSH(W2h, W2l, 19) ^ rotrBH(W2h, W2l, 61) ^ shrSH(W2h, W2l, 6);
|
|
686
|
+
const s1l = rotrSL(W2h, W2l, 19) ^ rotrBL(W2h, W2l, 61) ^ shrSL(W2h, W2l, 6);
|
|
687
|
+
const SUMl = add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);
|
|
688
|
+
const SUMh = add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);
|
|
689
|
+
SHA512_W_H[i] = SUMh | 0;
|
|
690
|
+
SHA512_W_L[i] = SUMl | 0;
|
|
691
|
+
}
|
|
692
|
+
let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
|
|
693
|
+
for (let i = 0; i < 80; i++) {
|
|
694
|
+
const sigma1h = rotrSH(Eh, El, 14) ^ rotrSH(Eh, El, 18) ^ rotrBH(Eh, El, 41);
|
|
695
|
+
const sigma1l = rotrSL(Eh, El, 14) ^ rotrSL(Eh, El, 18) ^ rotrBL(Eh, El, 41);
|
|
696
|
+
const CHIh = Eh & Fh ^ ~Eh & Gh;
|
|
697
|
+
const CHIl = El & Fl ^ ~El & Gl;
|
|
698
|
+
const T1ll = add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);
|
|
699
|
+
const T1h = add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);
|
|
700
|
+
const T1l = T1ll | 0;
|
|
701
|
+
const sigma0h = rotrSH(Ah, Al, 28) ^ rotrBH(Ah, Al, 34) ^ rotrBH(Ah, Al, 39);
|
|
702
|
+
const sigma0l = rotrSL(Ah, Al, 28) ^ rotrBL(Ah, Al, 34) ^ rotrBL(Ah, Al, 39);
|
|
703
|
+
const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch;
|
|
704
|
+
const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl;
|
|
705
|
+
Hh = Gh | 0;
|
|
706
|
+
Hl = Gl | 0;
|
|
707
|
+
Gh = Fh | 0;
|
|
708
|
+
Gl = Fl | 0;
|
|
709
|
+
Fh = Eh | 0;
|
|
710
|
+
Fl = El | 0;
|
|
711
|
+
({ h: Eh, l: El } = add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));
|
|
712
|
+
Dh = Ch | 0;
|
|
713
|
+
Dl = Cl | 0;
|
|
714
|
+
Ch = Bh | 0;
|
|
715
|
+
Cl = Bl | 0;
|
|
716
|
+
Bh = Ah | 0;
|
|
717
|
+
Bl = Al | 0;
|
|
718
|
+
const All = add3L(T1l, sigma0l, MAJl);
|
|
719
|
+
Ah = add3H(All, T1h, sigma0h, MAJh);
|
|
720
|
+
Al = All | 0;
|
|
721
|
+
}
|
|
722
|
+
({ h: Ah, l: Al } = add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));
|
|
723
|
+
({ h: Bh, l: Bl } = add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));
|
|
724
|
+
({ h: Ch, l: Cl } = add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));
|
|
725
|
+
({ h: Dh, l: Dl } = add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));
|
|
726
|
+
({ h: Eh, l: El } = add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));
|
|
727
|
+
({ h: Fh, l: Fl } = add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));
|
|
728
|
+
({ h: Gh, l: Gl } = add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));
|
|
729
|
+
({ h: Hh, l: Hl } = add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));
|
|
730
|
+
this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);
|
|
731
|
+
}
|
|
732
|
+
roundClean() {
|
|
733
|
+
clean(SHA512_W_H, SHA512_W_L);
|
|
734
|
+
}
|
|
735
|
+
destroy() {
|
|
736
|
+
clean(this.buffer);
|
|
737
|
+
this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
738
|
+
}
|
|
739
|
+
};
|
|
740
|
+
var _SHA512 = class extends SHA2_64B {
|
|
741
|
+
Ah = SHA512_IV[0] | 0;
|
|
742
|
+
Al = SHA512_IV[1] | 0;
|
|
743
|
+
Bh = SHA512_IV[2] | 0;
|
|
744
|
+
Bl = SHA512_IV[3] | 0;
|
|
745
|
+
Ch = SHA512_IV[4] | 0;
|
|
746
|
+
Cl = SHA512_IV[5] | 0;
|
|
747
|
+
Dh = SHA512_IV[6] | 0;
|
|
748
|
+
Dl = SHA512_IV[7] | 0;
|
|
749
|
+
Eh = SHA512_IV[8] | 0;
|
|
750
|
+
El = SHA512_IV[9] | 0;
|
|
751
|
+
Fh = SHA512_IV[10] | 0;
|
|
752
|
+
Fl = SHA512_IV[11] | 0;
|
|
753
|
+
Gh = SHA512_IV[12] | 0;
|
|
754
|
+
Gl = SHA512_IV[13] | 0;
|
|
755
|
+
Hh = SHA512_IV[14] | 0;
|
|
756
|
+
Hl = SHA512_IV[15] | 0;
|
|
757
|
+
constructor() {
|
|
758
|
+
super(64);
|
|
759
|
+
}
|
|
760
|
+
};
|
|
761
|
+
var sha256 = /* @__PURE__ */ createHasher(
|
|
762
|
+
() => new _SHA256(),
|
|
763
|
+
/* @__PURE__ */ oidNist(1)
|
|
764
|
+
);
|
|
765
|
+
var sha512 = /* @__PURE__ */ createHasher(
|
|
766
|
+
() => new _SHA512(),
|
|
767
|
+
/* @__PURE__ */ oidNist(3)
|
|
768
|
+
);
|
|
769
|
+
|
|
770
|
+
// binary-writer-reader.mjs
|
|
771
|
+
var BinaryWriter = class {
|
|
772
|
+
cursor = 0;
|
|
773
|
+
view;
|
|
774
|
+
constructor(size) {
|
|
775
|
+
this.view = new Uint8Array(size);
|
|
776
|
+
}
|
|
777
|
+
writeByte(b) {
|
|
778
|
+
this.view[this.cursor++] = b;
|
|
779
|
+
}
|
|
780
|
+
writeU16BE(v) {
|
|
781
|
+
this.view[this.cursor++] = v >> 8 & 255;
|
|
782
|
+
this.view[this.cursor++] = v & 255;
|
|
783
|
+
}
|
|
784
|
+
writeBytes(buf) {
|
|
785
|
+
this.view.set(buf, this.cursor);
|
|
786
|
+
this.cursor += buf.length;
|
|
787
|
+
}
|
|
788
|
+
getBytes() {
|
|
789
|
+
return this.view;
|
|
790
|
+
}
|
|
791
|
+
};
|
|
792
|
+
var BinaryReader = class {
|
|
793
|
+
cursor = 0;
|
|
794
|
+
view;
|
|
795
|
+
constructor(buf) {
|
|
796
|
+
this.view = new Uint8Array(buf);
|
|
797
|
+
}
|
|
798
|
+
readByte() {
|
|
799
|
+
return this.view[this.cursor++];
|
|
800
|
+
}
|
|
801
|
+
readU16BE() {
|
|
802
|
+
return this.view[this.cursor++] << 8 | this.view[this.cursor++];
|
|
803
|
+
}
|
|
804
|
+
read(n) {
|
|
805
|
+
const s = this.cursor;
|
|
806
|
+
this.cursor += n;
|
|
807
|
+
return this.view.slice(s, this.cursor);
|
|
808
|
+
}
|
|
809
|
+
};
|
|
810
|
+
|
|
811
|
+
// node_modules/@pinkparrot/qsafe-mayo-wasm/dist/mayo.browser.min.js
|
|
812
|
+
var __create = Object.create;
|
|
813
|
+
var __defProp = Object.defineProperty;
|
|
814
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
815
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
816
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
817
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
818
|
+
var __require2 = /* @__PURE__ */ ((x) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
819
|
+
get: (a, b) => (typeof __require !== "undefined" ? __require : a)[b]
|
|
820
|
+
}) : x)(function(x) {
|
|
821
|
+
if (typeof __require !== "undefined") return __require.apply(this, arguments);
|
|
822
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
823
|
+
});
|
|
824
|
+
var __commonJS = (cb, mod2) => function __require22() {
|
|
825
|
+
return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
|
|
826
|
+
};
|
|
827
|
+
var __copyProps = (to, from, except, desc) => {
|
|
828
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
829
|
+
for (let key of __getOwnPropNames(from))
|
|
830
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
831
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
832
|
+
}
|
|
833
|
+
return to;
|
|
834
|
+
};
|
|
835
|
+
var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(
|
|
836
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
837
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
838
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
839
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
840
|
+
isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target,
|
|
841
|
+
mod2
|
|
842
|
+
));
|
|
843
|
+
var require_mayo1 = __commonJS({
|
|
844
|
+
"dist/mayo1.cjs"(exports, module) {
|
|
845
|
+
var Mayo1Module2 = (() => {
|
|
846
|
+
var _scriptName = globalThis.document?.currentScript?.src;
|
|
847
|
+
return async function(moduleArg = {}) {
|
|
848
|
+
var moduleRtn;
|
|
849
|
+
var Module = moduleArg;
|
|
850
|
+
var ENVIRONMENT_IS_WEB = !!globalThis.window;
|
|
851
|
+
var ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;
|
|
852
|
+
var ENVIRONMENT_IS_NODE = globalThis.process?.versions?.node && globalThis.process?.type != "renderer";
|
|
853
|
+
var arguments_ = [];
|
|
854
|
+
var thisProgram = "./this.program";
|
|
855
|
+
var quit_ = (status, toThrow) => {
|
|
856
|
+
throw toThrow;
|
|
857
|
+
};
|
|
858
|
+
if (typeof __filename != "undefined") {
|
|
859
|
+
_scriptName = __filename;
|
|
860
|
+
} else if (ENVIRONMENT_IS_WORKER) {
|
|
861
|
+
_scriptName = self.location.href;
|
|
862
|
+
}
|
|
863
|
+
var scriptDirectory = "";
|
|
864
|
+
var readAsync, readBinary;
|
|
865
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
866
|
+
var fs = __require2("node:fs");
|
|
867
|
+
scriptDirectory = __dirname + "/";
|
|
868
|
+
readBinary = (filename) => {
|
|
869
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
870
|
+
var ret = fs.readFileSync(filename);
|
|
871
|
+
return ret;
|
|
872
|
+
};
|
|
873
|
+
readAsync = async (filename, binary = true) => {
|
|
874
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
875
|
+
var ret = fs.readFileSync(filename, binary ? void 0 : "utf8");
|
|
876
|
+
return ret;
|
|
877
|
+
};
|
|
878
|
+
if (process.argv.length > 1) {
|
|
879
|
+
thisProgram = process.argv[1].replace(/\\/g, "/");
|
|
880
|
+
}
|
|
881
|
+
arguments_ = process.argv.slice(2);
|
|
882
|
+
quit_ = (status, toThrow) => {
|
|
883
|
+
process.exitCode = status;
|
|
884
|
+
throw toThrow;
|
|
885
|
+
};
|
|
886
|
+
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
887
|
+
try {
|
|
888
|
+
scriptDirectory = new URL(".", _scriptName).href;
|
|
889
|
+
} catch {
|
|
890
|
+
}
|
|
891
|
+
{
|
|
892
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
893
|
+
readBinary = (url) => {
|
|
894
|
+
var xhr = new XMLHttpRequest();
|
|
895
|
+
xhr.open("GET", url, false);
|
|
896
|
+
xhr.responseType = "arraybuffer";
|
|
897
|
+
xhr.send(null);
|
|
898
|
+
return new Uint8Array(xhr.response);
|
|
899
|
+
};
|
|
900
|
+
}
|
|
901
|
+
readAsync = async (url) => {
|
|
902
|
+
if (isFileURI(url)) {
|
|
903
|
+
return new Promise((resolve, reject) => {
|
|
904
|
+
var xhr = new XMLHttpRequest();
|
|
905
|
+
xhr.open("GET", url, true);
|
|
906
|
+
xhr.responseType = "arraybuffer";
|
|
907
|
+
xhr.onload = () => {
|
|
908
|
+
if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
|
|
909
|
+
resolve(xhr.response);
|
|
910
|
+
return;
|
|
911
|
+
}
|
|
912
|
+
reject(xhr.status);
|
|
913
|
+
};
|
|
914
|
+
xhr.onerror = reject;
|
|
915
|
+
xhr.send(null);
|
|
916
|
+
});
|
|
917
|
+
}
|
|
918
|
+
var response = await fetch(url, { credentials: "same-origin" });
|
|
919
|
+
if (response.ok) {
|
|
920
|
+
return response.arrayBuffer();
|
|
921
|
+
}
|
|
922
|
+
throw new Error(response.status + " : " + response.url);
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
} else {
|
|
926
|
+
}
|
|
927
|
+
var out = console.log.bind(console);
|
|
928
|
+
var err = console.error.bind(console);
|
|
929
|
+
var wasmBinary;
|
|
930
|
+
var ABORT = false;
|
|
931
|
+
var EXITSTATUS;
|
|
932
|
+
var isFileURI = (filename) => filename.startsWith("file://");
|
|
933
|
+
function binaryDecode(bin) {
|
|
934
|
+
for (var i = 0, l = bin.length, o = new Uint8Array(l), c; i < l; ++i) {
|
|
935
|
+
c = bin.charCodeAt(i);
|
|
936
|
+
o[i] = ~c >> 8 & c;
|
|
937
|
+
}
|
|
938
|
+
return o;
|
|
939
|
+
}
|
|
940
|
+
var readyPromiseResolve, readyPromiseReject;
|
|
941
|
+
var runtimeInitialized = false;
|
|
942
|
+
function updateMemoryViews() {
|
|
943
|
+
var b = wasmMemory.buffer;
|
|
944
|
+
HEAP8 = new Int8Array(b);
|
|
945
|
+
HEAP16 = new Int16Array(b);
|
|
946
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
|
|
947
|
+
HEAPU16 = new Uint16Array(b);
|
|
948
|
+
HEAP32 = new Int32Array(b);
|
|
949
|
+
HEAPU32 = new Uint32Array(b);
|
|
950
|
+
HEAPF32 = new Float32Array(b);
|
|
951
|
+
HEAPF64 = new Float64Array(b);
|
|
952
|
+
HEAP64 = new BigInt64Array(b);
|
|
953
|
+
HEAPU64 = new BigUint64Array(b);
|
|
954
|
+
}
|
|
955
|
+
function preRun() {
|
|
956
|
+
if (Module["preRun"]) {
|
|
957
|
+
if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
|
|
958
|
+
while (Module["preRun"].length) {
|
|
959
|
+
addOnPreRun(Module["preRun"].shift());
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
callRuntimeCallbacks(onPreRuns);
|
|
963
|
+
}
|
|
964
|
+
function initRuntime() {
|
|
965
|
+
runtimeInitialized = true;
|
|
966
|
+
wasmExports["i"]();
|
|
967
|
+
}
|
|
968
|
+
function postRun() {
|
|
969
|
+
if (Module["postRun"]) {
|
|
970
|
+
if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
|
|
971
|
+
while (Module["postRun"].length) {
|
|
972
|
+
addOnPostRun(Module["postRun"].shift());
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
callRuntimeCallbacks(onPostRuns);
|
|
976
|
+
}
|
|
977
|
+
function abort(what) {
|
|
978
|
+
Module["onAbort"]?.(what);
|
|
979
|
+
what = "Aborted(" + what + ")";
|
|
980
|
+
err(what);
|
|
981
|
+
ABORT = true;
|
|
982
|
+
what += ". Build with -sASSERTIONS for more info.";
|
|
983
|
+
var e = new WebAssembly.RuntimeError(what);
|
|
984
|
+
readyPromiseReject?.(e);
|
|
985
|
+
throw e;
|
|
986
|
+
}
|
|
987
|
+
var wasmBinaryFile;
|
|
988
|
+
function findWasmBinary() {
|
|
989
|
+
return binaryDecode('\0asm\0\0\05\n`\x7F\x7F\x7F\x7F`\x7F\0`\x7F\x7F`\0\x7F`\0\0`\x7F\x7F\0`\x7F\x7F\x7F\0`\x7F|\x7F`\x7F\x7F\x7F\x7F\0`\x7F|\0+\x07aa\0ab\0ac\0ad\0ae\0\x07af\0ag\0\0\b\0 \0p\x80\x80 \x7FA\xC0\x92\x80\v\x079h\0i\0j\0k\0\bl\0m\0n\0o\0p\0\x1Bq\0r\0s\0t\0\vu\0 \0A\v\f\n\xC1\xF1\xE0 \x07\x7F{#\0A\xD0k"$\0@A\xC8\b"E\r\0 Ak-\0\0AqE\r\0 A\0A\xC8\v "@ A\x88O@@ \xFD\0\0 \xFD\0\0\0\xFDQ\xFD\v\0 \xFD\0 \xFD\0\0\xFDQ\xFD\v \xFD\0 \xFD\0\0 \xFDQ\xFD\v \xFD\00 \xFD\0\x000\xFDQ\xFD\v0 \xFD\0@ \xFD\0\0@\xFDQ\xFD\v@ \xFD\0P \xFD\0\0P\xFDQ\xFD\vP \xFD\0` \xFD\0\0`\xFDQ\xFD\v` \xFD\0p \xFD\0\0p\xFDQ\xFD\vp )\x80 )\0\x80\x857\x80 \r A\x88j! A\x88k"A\x87K\r\0\v\v A\x88n!\b A\0A\x88\xFC\v\0@ E\r\0@ AI\r\0 kAI\r\0 \xFD\0\0\0\xFD\v\0@ A\xF0q"\x07AF\r\0 \xFD\0\0\xFD\v \x07A F\r\0 \xFD\0\0 \xFD\v \x07A0F\r\0 \xFD\0\x000\xFD\v0 \x07A\xC0\0F\r\0 \xFD\0\0@\xFD\v@ \x07A\xD0\0F\r\0 \xFD\0\0P\xFD\vP \x07A\xE0\0F\r\0 \xFD\0\0`\xFD\v` \x07A\xF0\0F\r\0 \xFD\0\0p\xFD\vp\v \x07F\r\v \x07! Aq" @@ j j-\0\0:\0\0 Aj! \nAj"\n G\r\0\v\v \x07 kA|K\r\0@ j j-\0\0:\0\0 Aj"\x07j \x07j-\0\0:\0\0 Aj"\x07j \x07j-\0\0:\0\0 Aj"\x07j \x07j-\0\0:\0\0 Aj" G\r\0\v\v jA:\0\0 -\0\x87A\x80r:\0\x87 \xFD\0\0 \xFD\0\0\xFDQ\xFD\v\0 \xFD\0 \xFD\0\xFDQ\xFD\v \xFD\0 \xFD\0 \xFDQ\xFD\v \xFD\00 \xFD\00\xFDQ\xFD\v0 \xFD\0@ \xFD\0@\xFDQ\xFD\v@ \xFD\0P \xFD\0P\xFDQ\xFD\vP \xFD\0` \xFD\0`\xFDQ\xFD\v` \xFD\0p \xFD\0p\xFDQ\xFD\vp )\x80 )\x80\x857\x80 A\x88O@ \0! \b!@ \r )\x007\0\0 )\b7\0\b )7\0 )7\0 ) 7\0 )(7\0( )07\x000 )87\x008 )@7\0@ )H7\0H )P7\0P )X7\0X )`7\0` )h7\0h )p7\0p )x7\0x )\x807\0\x80 A\x88j! Ak"\r\0\v\v@ \bA\x88l"F\r\0 \r \xFD\0\0!\v \xFD\0\xFD\v \v\xFD\v\0 \xFD\0 !\v \xFD\00\xFD\v0 \v\xFD\v \xFD\0@!\v \xFD\0P\xFD\vP \v\xFD\v@ \xFD\0`!\v \xFD\0p\xFD\vp \v\xFD\v` )\x807\x80 k"E\r\0 \0 j \xFC\n\0\0\v \v A\xD0j$\0\vA\xEF\0\0\0\v\xC1\'\v\x7F#\0Ak"\n$\0@@@@@@@@@@ \0A\xF4M@A\xF4\f(\0"A \0A\vjA\xF8q \0A\vI\x1B"Av"\0v"Aq@@ A\x7FsAq \0j"At"A\x9C\rj"\0 (\xA4\r"(\b"F@A\xF4\f A~ wq6\0\f\v \x006\f \0 6\b\v A\bj!\0 Ar6 j" (Ar6\f\v\v A\xFC\f(\0"\bM\r @@A \0t"A\0 kr \0tqh"At"A\x9C\rj" (\xA4\r"\0(\b"F@A\xF4\f A~ wq"6\0\f\v 6\f 6\b\v \0 Ar6 \0 j"\x07 k"Ar6 \0 j 6\0 \b@ \bAxqA\x9C\rj!A\x88\r(\0!\x7F A \bAvt"qE@A\xF4\f r6\0 \f\v (\b\v! 6\b 6\f 6\f 6\b\v \0A\bj!\0A\x88\r \x076\0A\xFC\f 6\0\f\v\vA\xF8\f(\0"\vE\r \vhAt(\xA4"(Axq k! !@@ ("\0E@ ("\0E\r\v \0(Axq k" I"\x1B! \0 \x1B! \0!\f\v\v (! (\f"\0G@ (\b" \x006\f \0 6\b\f\n\v ("\x7F Aj ("E\r Aj\v!@ !\x07 "\0Aj! \0("\r\0 \0Aj! \0("\r\0\v \x07A\x006\0\f \vA\x7F! \0A\xBF\x7FK\r\0 \0A\vj"Axq!A\xF8\f(\0"\x07E\r\0A!\bA\0 k! \0A\xF4\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtkA>j!\b\v@@@ \bAt(\xA4"E@A\0!\0\f\vA\0!\0 A \bAvkA\0 \bAG\x1Bt!@@ (Axq k" O\r\0 ! "\r\0A\0! !\0\f\v \0 (" AvAqj("F\x1B \0 \x1B!\0 At! \r\0\v\v \0 rE@A\0!A \bt"\0A\0 \0kr \x07q"\0E\r \0hAt(\xA4!\0\v \0E\r\v@ \0(Axq k" I! \x1B! \0 \x1B! \0("\x7F \0(\v"\0\r\0\v\v E\r\0 A\xFC\f(\0 kO\r\0 (!\b (\f"\0G@ (\b" \x006\f \0 6\b\f\b\v ("\x7F Aj ("E\r Aj\v!@ ! "\0Aj! \0("\r\0 \0Aj! \0("\r\0\v A\x006\0\f\x07\v A\xFC\f(\0"M@A\x88\r(\0!\0@ k"AO@ \0 j" Ar6 \0 j 6\0 \0 Ar6\f\v \0 Ar6 \0 j" (Ar6A\0!A\0!\vA\xFC\f 6\0A\x88\r 6\0 \0A\bj!\0\f \v A\x80\r(\0"I@A\x80\r k"6\0A\x8C\rA\x8C\r(\0"\0 j"6\0 Ar6 \0 Ar6 \0A\bj!\0\f \vA\0!\0 A/j"\x7FA\xCC(\0@A\xD4(\0\f\vA\xD8B\x7F7\0A\xD0B\x80\xA0\x80\x80\x80\x807\0A\xCC \nA\fjApqA\xD8\xAA\xD5\xAAs6\0A\xE0A\x006\0A\xB0A\x006\0A\x80 \v"j"A\0 k"\x07q" M\r\bA\xAC(\0"@A\xA4(\0"\b j" \bM\r I\r \v@A\xB0-\0\0AqE@@@@@A\x8C\r(\0"@A\xB4!\0@ \0(\0"\b M@ \b \0(jI\r\v \0(\b"\0\r\0\v\vA\0 "A\x7FF\r !A\xD0(\0"\0Ak" q@ k jA\0 \0kqj!\v M\rA\xAC(\0"\0@A\xA4(\0" j"\x07 M\r \0 \x07I\r\v "\0 G\r\f\v k \x07q" " \0(\0 \0(jF\r !\0\v \0A\x7FF\r A0j M@ \0!\f\vA\xD4(\0" kjA\0 kq" A\x7FF\r j! \0!\f\v A\x7FG\r\vA\xB0A\xB0(\0Ar6\0\v !A\0 !\0 A\x7FF\r \0A\x7FF\r \0 M\r \0 k" A(jM\r\vA\xA4A\xA4(\0 j"\x006\0A\xA8(\0 \0I@A\xA8 \x006\0\v@A\x8C\r(\0"@A\xB4!\0@ \0(\0" \0("jF\r \0(\b"\0\r\0\v\f\vA\x84\r(\0"\0A\0 \0 M\x1BE@A\x84\r 6\0\vA\0!\0A\xB8 6\0A\xB4 6\0A\x94\rA\x7F6\0A\x98\rA\xCC(\x006\0A\xC0A\x006\0@ \0At" A\x9C\rj"6\xA4\r 6\xA8\r \0Aj"\0A G\r\0\vA\x80\r A(k"\0Ax kA\x07q"k"6\0A\x8C\r j"6\0 Ar6 \0 jA(6A\x90\rA\xDC(\x006\0\f\v M\r K\r \0(\fA\bq\r \0 j6A\x8C\r Ax kA\x07q"\0j"6\0A\x80\rA\x80\r(\0 j" \0k"\x006\0 \0Ar6 jA(6A\x90\rA\xDC(\x006\0\f\vA\0!\0\f\vA\0!\0\f\vA\x84\r(\0 K@A\x84\r 6\0\v j!A\xB4!\0@@ \0(\0"G@ \0(\b"\0\r\f\v\v \0-\0\fA\bqE\r\vA\xB4!\0@@ \0(\0" M@ \0(j"I\r\v \0(\b!\0\f\v\vA\x80\r A(k"\0Ax kA\x07q"k"\x076\0A\x8C\r j"6\0 \x07Ar6 \0 jA(6A\x90\rA\xDC(\x006\0 A\' kA\x07qjA/k"\0 \0 AjI\x1B"A\x1B6 A\xBC)\x007 A\xB4)\x007\bA\xBC A\bj6\0A\xB8 6\0A\xB4 6\0A\xC0A\x006\0 Aj!\0@ \0A\x076 \0A\bj \0Aj!\0 I\r\0\v F\r\0 (A~q6 k"Ar6 6\0\x7F A\xFFM@ A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\fA\f!A\b\f\vA!\0 A\xFF\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtrA>s!\0\v \x006 B\x007 \0AtA\xA4j!@@A\xF8\f(\0"A \0t"qE@A\xF8\f r6\0 6\0\f\v A \0AvkA\0 \0AG\x1Bt!\0 (\0!@ "(Axq F\r \0Av! \0At!\0 Aqj"("\r\0\v 6\v 6A\b! "!\0A\f\f\v (\b"\0 6\f 6\b \x006\bA\0!\0A!A\f\v j 6\0 j \x006\0\vA\x80\r(\0"\0 M\r\0A\x80\r \0 k"6\0A\x8C\rA\x8C\r(\0"\0 j"6\0 Ar6 \0 Ar6 \0A\bj!\0\f\vA\xF0\fA06\0A\0!\0\f\v \0 6\0 \0 \0( j6 Ax kA\x07qj"\b Ar6 Ax kA\x07qj" \bj"k!\x07@A\x8C\r(\0 F@A\x8C\r 6\0A\x80\rA\x80\r(\0 \x07j"\x006\0 \0Ar6\f\vA\x88\r(\0 F@A\x88\r 6\0A\xFC\fA\xFC\f(\0 \x07j"\x006\0 \0Ar6 \0 j \x006\0\f\v ("\0AqAF@ \0Axq! (\f!@ \0A\xFFM@ (\b" F@A\xF4\fA\xF4\f(\0A~ \0Avwq6\0\f\v 6\f 6\b\f\v (!@ G@ (\b"\0 6\f \x006\b\f\v@ ("\0\x7F Aj ("\0E\r Aj\v!@ ! \0"Aj! \0("\0\r\0 Aj! ("\0\r\0\v A\x006\0\f\vA\0!\v E\r\0@ ("\0At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ \0wq6\0\f\v@ (F@ 6\f\v 6\v E\r\v 6 ("\0@ \x006 \0 6\v ("\0E\r\0 \x006 \0 6\v \x07 j!\x07 j"(!\0\v \0A~q6 \x07Ar6 \x07j \x076\0 \x07A\xFFM@ \x07A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A \x07Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\f\vA! \x07A\xFF\xFF\xFF\x07M@ \x07A& \x07A\bvg"\0kvAq \0AtrA>s!\v 6 B\x007 AtA\xA4j!\0@@A\xF8\f(\0"A t"qE@A\xF8\f r6\0 \0 6\0\f\v \x07A AvkA\0 AG\x1Bt! \0(\0!@ "\0(Axq \x07F\r Av! At! \0 Aqj"("\r\0\v 6\v \x006 6\f 6\b\f\v \0(\b" 6\f \0 6\b A\x006 \x006\f 6\b\v \bA\bj!\0\f\v@ \bE\r\0@ ("At"(\xA4 F@ A\xA4j \x006\0 \0\rA\xF8\f \x07A~ wq"\x076\0\f\v@ \b(F@ \b \x006\f\v \b \x006\v \0E\r\v \0 \b6 ("@ \0 6 \x006\v ("E\r\0 \0 6 \x006\v@ AM@ j"\0Ar6 \0 j"\0 \0(Ar6\f\v Ar6 j" Ar6 j 6\0 A\xFFM@ A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\f\vA!\0 A\xFF\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtrA>s!\0\v \x006 B\x007 \0AtA\xA4j!@@ \x07A \0t"qE@A\xF8\f \x07r6\0 6\0 6\f\v A \0AvkA\0 \0AG\x1Bt!\0 (\0!@ "(Axq F\r \0Av! \0At!\0 Aqj"\x07("\r\0\v \x07 6 6\v 6\f 6\b\f\v (\b"\0 6\f 6\b A\x006 6\f \x006\b\v A\bj!\0\f\v@ E\r\0@ ("At"(\xA4 F@ A\xA4j \x006\0 \0\rA\xF8\f \vA~ wq6\0\f\v@ (F@ \x006\f\v \x006\v \0E\r\v \0 6 ("@ \0 6 \x006\v ("E\r\0 \0 6 \x006\v@ AM@ j"\0Ar6 \0 j"\0 \0(Ar6\f\v Ar6 j" Ar6 j 6\0 \b@ \bAxqA\x9C\rj!\0A\x88\r(\0!\x7FA \bAvt"\x07 qE@A\xF4\f \x07r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\vA\x88\r 6\0A\xFC\f 6\0\v A\bj!\0\v \nAj$\0 \0\vT\x7F~@A\xD4\v(\0"\xAD \0\xADB\x07|B\xF8\xFF\xFF\xFF\x83|"B\xFF\xFF\xFF\xFFX@ \xA7"\0?\0AtM\r \0\r\vA\xF0\fA06\0A\x7F\vA\xD4\v \x006\0 \v\xB4~ \0 \0)8"B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)0"B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \0)("B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0) "B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\bB\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \0)"\x07B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)" B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\nB\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \0)\b"\vB\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)\0"\fB\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\rB\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\0 \0 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 \x07B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \fB\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 \vB\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"\x07B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847( \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \x07B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\b \0 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \bB\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \nB\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \rB\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x8470 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847 \0 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x8478 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\v\xDF\v\b\x7F@ \0E\r\0 \0A\bk" \0Ak(\0"Axq"\0j!@ Aq\r\0 AqE\r (\0"k"A\x84\r(\0I\r \0 j!\0@@@A\x88\r(\0 G@ (\f! A\xFFM@ (\b"G\rA\xF4\fA\xF4\f(\0A~ Avwq6\0\f\v (!\x07 G@ (\b" 6\f 6\b\f\v ("\x7F Aj ("E\r Aj\v!@ ! "Aj! ("\r\0 Aj! ("\r\0\v A\x006\0\f\v ("AqAG\rA\xFC\f \x006\0 A~q6 \0Ar6 \x006\0\v 6\f 6\b\f\vA\0!\v \x07E\r\0@ ("At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ wq6\0\f\v@ \x07(F@ \x07 6\f\v \x07 6\v E\r\v \x076 ("@ 6 6\v ("E\r\0 6 6\v O\r\0 ("AqE\r\0@@@@ AqE@A\x8C\r(\0 F@A\x8C\r 6\0A\x80\rA\x80\r(\0 \0j"\x006\0 \0Ar6 A\x88\r(\0G\rA\xFC\fA\x006\0A\x88\rA\x006\0\vA\x88\r(\0"\x07 F@A\x88\r 6\0A\xFC\fA\xFC\f(\0 \0j"\x006\0 \0Ar6 \0 j \x006\0\v Axq \0j!\0 (\f! A\xFFM@ (\b" F@A\xF4\fA\xF4\f(\0A~ Avwq6\0\f\v 6\f 6\b\f\v (!\b G@ (\b" 6\f 6\b\f\v ("\x7F Aj ("E\r Aj\v!@ ! "Aj! ("\r\0 Aj! ("\r\0\v A\x006\0\f\v A~q6 \0Ar6 \0 j \x006\0\f\vA\0!\v \bE\r\0@ ("At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ wq6\0\f\v@ \b(F@ \b 6\f\v \b 6\v E\r\v \b6 ("@ 6 6\v ("E\r\0 6 6\v \0Ar6 \0 j \x006\0 \x07G\r\0A\xFC\f \x006\0\v \0A\xFFM@ \0A\xF8qA\x9C\rj!\x7FA\xF4\f(\0"A \0Avt"\0qE@A\xF4\f \0 r6\0 \f\v (\b\v!\0 6\b \0 6\f 6\f \x006\b\vA! \0A\xFF\xFF\xFF\x07M@ \0A& \0A\bvg"kvAq AtrA>s!\v 6 B\x007 AtA\xA4j!\x7F@\x7FA\xF8\f(\0"A t"qE@A\xF8\f r6\0 6\0A!A\b\f\v \0A AvkA\0 AG\x1Bt! (\0!@ "(Axq \0F\r Av! At! Aqj"("\r\0\v 6A! !A\b\v!\0 "\f\v (\b" 6\f 6\bA!\0A\b!A\0\v! j 6\0 6\f \0 j 6\0A\x94\rA\x94\r(\0Ak"\0A\x7F \0\x1B6\0\v\v\xC0\x1B~ \0 \0)\b"\x07 \0)8"\x85"\r \0)" \0) "\b\x85"\x85" \0)\x85" \0)0"\x85" \x85"\n \0)\0"\x85" \x07 \0)( \x85"\x85"\x07\x85" \x85"\x85"\x83\x85 \n\x83"\v\x85 \n\x85" \b\x85"\f\x85"\x85" \x83 \f\x83"\x85"\x85" \x85" \x07 \x83\x85 \r\x83"\x85 \r\x85 \x85"\x83" \x83 \x85" \x07 \b\x85" \x83 \x85 \x85 \v\x85\x85"\v\x85 \x85" \x07\x85"\x83\x85\x85 \x85\x85" \x85\x83"\b \x85 \x83" \x85" \x83 \b\x85"\b\x85" \x83"\x85 \x85"\x85 \v \x85"\x83 \v\x85"\x83 \x85" \x85" \b\x85"\v\x85"\x83" \v \f\x83\x85"\f \x07\x83"\x07\x85"\x85"\x1B \x83" \x85"\x83" \v\x83\x85\x85"\x8578 \0 \f \x83"\f \x83\x85" \n\x83\x85"\n \r\x83"\r \b\x83"\x85\x85"\x85\x85B\x7F\x857\0 \0 \n \x1B \x83\x85"\n\x85" 7 \0 \f\x85 \n\x857 \0 \x83\x85 \x85" \x83\x85\x85" \b \x83\x85\x857 \0 \r\x85 \x85B\x7F\x857\b \0 \x07\x85" \x83\x85 \x85\x85B\x7F\x857( \0 \x85B\x7F\x8570\v\xD8\f.~\x7F \0)\xC0! \0)\xB8! \0)\xB0! \0)\xA8!\b \0)\xA0! \0)\x98! \0)\x90! \0)\x88! \0)\x80!\n \0)x! \0)p! \0)h! \0)`! \0)X! \0)P!\v \0)H! \0)@!\r \0)8! \0)0! \0)(!\x07 \0) !\x1B \0)!\f \0)! \0)\b! \0)\0!@ \x85 \x85 \r\x85 \f\x85" \x85 \v\x85 \x07\x85 \x85"B\x89\x85" \x1B\x85B\x1B\x89" \x85 \x85 \x85 \x85"B\x89\x85" \x85B\n\x89" \x85 \x85 \x85 \x1B\x85" \b \n\x85 \x85 \x85 \x85"!B\x89\x85" \x07\x85B$\x89"\x07B\x7F\x85\x83\x85"" \x85B\x89"\x1B B\x89\x85"\x85B\x89" ! B\x89\x85"\x85B\x89"B\x7F\x85\x83\x85"!\x85 \f\x85B\x89"\f \v\x85B\x89"\v \x85B\x89"B\x7F\x85\x83\x85"#\x85 \x85B>\x89" \x85B\'\x89" \r\x85B7\x89" B\x7F\x85\x83\x85"$\x85 \x85" /At"0)\x80\b \x85B+\x89" \x85B,\x89"B\x7F\x85\x83\x85\x85"%\x85"\rB\x89 \x85B\x89" \x85B8\x89"B\x7F\x85\x83\x85"& \x85B\x89" \x85B\x89"B\x7F\x85\x83\x85"\' \x85B)\x89" \b \x85B\x89"\bB\x7F\x85\x83\x85" \x85B\b\x89" \x1B \x85B\x89"B\x7F\x85\x83\x85"( \n \x85B-\x89"\n \f \x85B=\x89"B\x7F\x85\x83\x85"\x85\x85\x85\x85")\x85" \b B\x7F\x85\x83\x85"\x85B\x89" \r B\x7F\x85\x83 \x85"* B\x7F\x85\x83 \x85" \b B\x7F\x85\x83\x85"+ \nB\x7F\x85\x83 \v\x85", B\x7F\x85\x83\x85"-\x85\x85\x85\x85"\bB\x89\x85"\r \n \vB\x7F\x85\x83\x85"\n\x85B,\x89" % \x07 B\x7F\x85\x83 \x85" \fB\x7F\x85\x83 \x85" \x1BB\x7F\x85\x83 \x85"\v B\x7F\x85\x83\x85". \x85\x85\x85\x85" B\x7F\x85\x83 \x85" B\x7F\x85\x83 \x85" B\x7F\x85\x83 \x07\x85" \n B\x7F\x85\x83\x85"\x85\x85\x85\x85" B\x89\x85"\x85"B\x7F\x85\x83\x85!\x1B \r \x85B\x89" B\x89 \b\x85"\f \x85B7\x89" )B\x89 \x85"\x85B>\x89" B\x7F\x85\x83\x85! "\x85B)\x89"\b B\x7F\x85\x83\x85! \v \x85B\'\x89" \bB\x7F\x85\x83\x85! \b B\x7F\x85\x83 \x85!\b B\x7F\x85\x83 \x85! \f\x85B8\x89" #\x85B$\x89" .\x85B\x1B\x89"B\x7F\x85\x83\x85! -\x85B\x89"\n B\x7F\x85\x83\x85! \r\x85B\n\x89" \nB\x7F\x85\x83\x85! \n B\x7F\x85\x83 \x85!\n B\x7F\x85\x83\x85! $\x85B\x89" ,\x85B\x89"\v \r\x85B\x89"B\x7F\x85\x83\x85! \x85B\b\x89" B\x7F\x85\x83\x85! \f (\x85B\x89"\x07 B\x7F\x85\x83\x85! \x07B\x7F\x85\x83 \v\x85! \x07 \vB\x7F\x85\x83\x85!\v +\x85B=\x89" \x85B\x89"\x07 \f \'\x85B\x89"B\x7F\x85\x83\x85! \r \x85B-\x89" B\x7F\x85\x83\x85!\r !\x85B\x89" B\x7F\x85\x83\x85! \x07 B\x7F\x85\x83\x85! \x07B\x7F\x85\x83 \x85!\x07 \f &\x85B\x89" B\x7F\x85\x83\x85!\f *\x85B+\x89" B\x7F\x85\x83\x85! B\x7F\x85\x83\x85! 0)\x88\b B\x7F\x85\x83\x85 \x85! /AI /Aj!/\r\0\v \0 7\xC0 \0 7\xB8 \0 7\xB0 \0 \b7\xA8 \0 7\xA0 \0 7\x98 \0 7\x90 \0 7\x88 \0 \n7\x80 \0 7x \0 7p \0 7h \0 7` \0 7X \0 \v7P \0 7H \0 \r7@ \0 78 \0 70 \0 \x077( \0 \x1B7 \0 \f7 \0 7 \0 7\b \0 7\0\v\xB2\f \x7F~{#\0A\xE0k"$\0A\xC0\b"\x07@ \xFD\0\0\0\xFD\v\xF0 (\xFC!A!@ A\xF0j Atj" \x7F B\x0078 \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v( \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\b Aw\xAD7\0 \n \f \n -\0\xC0 (\0s\v Ak(\0s"6\0A\0 Aj" AF"\x1B! j! Aj"A,G\r\0\vA\0!A\0!@ A\xF0j Atj"5\f"\vB\x86 \v\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\x86 \vB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5"\vB\x86 \v\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\b\x86 \v\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x84"\v7\xD0 5\b"\fB\x86 \f\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\fB\x86 \fB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5\0"\fB\x86 \f\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\fB\b\x86 \f\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x84"\f7\xB0 \v7\xE8 \v7\xE0 \v7\xD8 \f7\xC8 \f7\xC0 \f7\xB8 A\xB0j\n Atj \xFD\0\xB0"\r \xFD\0\xD0"\xFD\r\0\x07\x1B\xFD\f""""""""\xFDN \r \xFD\r\b \n\v\f\r\xFD\f""""""""\xFDN\xFDP \xFD\0\xC0"\r \xFD\0\xE0"\xFD\r\0\x07\xFD\fDDDDDDDDDDDDDDDD\xFDN\xFDP \r \xFD\r\b \n\v\f\r\x1B\xFD\f\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\xFDN\xFDP\xFD\v\0 Aj! A(I Aj!\r\0\vA\0!@ \x07 Atj" Atj\xFD\0\0"\rA\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5" \rA\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5"\xFD\r\b \n\v\f\r\x1B\xFD\v0 \r\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5" \rA\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5"\r\xFD\r\b \n\v\f\r\x1B\xFD\v \xFD\r\0\x07\xFD\v \r\xFD\r\0\x07\xFD\v\0 Aj"AG\r\0\v B\x80\x80\x80\x80\x80\x80\x80\x807\x98 B\x007\x90 B\x007\xA0 B\x007\xF0 \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xF8 B\x80\x80\x80\x80\x80\x80\x80\x807\xA8 B\x80\x80\x80\x80\x80\x80\x80\x807\x88A!A!A!A\0!A\xEF\xE8\b!\b@ \0" A\xF0j" \x07 Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\xAC Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\x9C Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\x8C Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\xFC A@k!\0 \bA\x80J \bA@j!\b\r\0\v \x07A\0!A\0! \0 kAO@ \xFD\0\0\xFD\v\0@ \xFD\0\xFD\v\0PA !\v@ \0 j j-\0\0:\0\0 Aj! Aj"AG\r\0\v@ \0 j j-\0\0:\0\0 \0 Aj"j j-\0\0:\0\0 \0 Aj"j j-\0\0:\0\0 \0 Aj"j j-\0\0:\0\0 Aj"A/G\r\0\v \x07\v A\xE0j$\0\vA\xEF\0\0\0\v\xBB~{\x7F#\0A@j"$\0 58!\f 50!\r 5<! 54! 5(! 5 ! 5,!\b 5$! 5!\n 5!\v 5! 5! 5\b!\x07 5\0! 5\f"B\x86 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5"B\x86 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 \x07 \x07B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847\0 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847( \n \nB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 \v \vB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847\b \b \bB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x8470 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x8478 \f \fB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 \r \rB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 \n \xFD\0\0 \xFD\0\0\xFDQ\xFD\v\0 \xFD\0 \xFD\0\xFDQ\xFD\v \xFD\0 \xFD\0 \xFDQ\xFD\v \xFD\00 \xFD\00\xFDQ\xFD\v0A!@ \f \xFD\00"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP"\xFD"B0\x89" \x85"\x07 Atj")\0 \xFD\0\0"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP"\xFD\0"B0\x89" \x85"B \x89\x85 \x85\x857\0 )\b \xFD"B0\x89" \x85"B \x89\x85 \x85 \x85\x85 \x857\b ) \xFD\0"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP"\xFD\0"B0\x89" \x85"B \x89\x85 \x85\x857 ) \xFD"B0\x89" \x85"B \x89\x85 \x85 \x85\x85 \x857 ) \xFD\0 "A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP"\xFD\0"B0\x89" \x85"B \x89\x85 \x85 \x85\x85 \x857 )( \xFD"B0\x89" \x85"B \x89\x85 \x85\x857( )0 \xFD\0"B0\x89" \x85"B \x89\x85 \x85\x8570 )8 \x07B \x89\x85 \x85 \x8578 Aj"A\nG\r\0\v \f \xFD\0\0"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP \xFD\0\x80\xFDQ\xFD\v\0 \xFD\0"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP \xFD\0\x90\xFDQ\xFD\v \xFD\0 "A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP \xFD\0\xA0\xFDQ\xFD\v \xFD\00"A\xFD\xCD\xFD\f\0\0\xFF\0\0\0\0\0\0\xFF\0\0\0\0\xFDN \xFD\f\xFF\xFF\0\0\0\0\0\0\xFF\xFF\0\0\0\0\0\0\xFDN\xFDP A\f\xFD\xCB\xFD\f\0\0\0\xF0\0\0\0\0\0\0\0\xF0\0\0\0\0\xFDN\xFDP A\b\xFD\xCD\xFD\f\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\0\xFDN\xFDP A\b\xFD\xCB\xFD\f\0\0\0\0\0\xFF\0\0\0\0\0\0\0\xFF\0\0\xFDN\xFDP A\f\xFD\xCD\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDN\xFDP A\xFD\xCB\xFD\f\0\0\0\0\0\0\xF0\xFF\0\0\0\0\0\0\xF0\xFF\xFDN\xFDP \xFD\0\xB0\xFDQ\xFD\v0 \n )\0!\b ) ! )\b!\n )(!\v )! )0! )!\x07 \0 )8"B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0< \0 \x07B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \x07B\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\x008 \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0, \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0( \0 \vB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \vB\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0 \0 \nB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \nB\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0 \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0\f \0 \bB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \bB\x80\xFE\x83\x80\x80\xE0?\x83\x84"B\b\x88 B\x88\x84>\0\b \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\x004 \0 \x07B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\x000 \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0$ \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0 \0 \vB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0 \0 \nB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0 \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0 \0 \bB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0\0 A@k$\0\v\xBD(~\f\x7F{ \0A\x90j"\f \f)\0 \0A\xC8j")\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \0 \0)\x98 \0)\xD0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\x98 \0 \0)\xA0 \0)\xD8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA0 \0 \0)\xA8 \0)\xE0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA8 \0 \0)\xB0 \0)\xE8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB0 \0A\xE0j"\b \0A\xB8j"\xFD\0\0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \b\xFD\0\0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\0 \0 \0\xFD\0\xC8"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0\xF0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\xF0 \0 \0)\x80 \0)\xD8"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x80 \0A\x98j"\x07 O \f \0A\xC0j"\vOr"@ \x07 \f\xFD\0\0"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \x07\xFD\0\0\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\0 \0 \0\xFD\0\xA0"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\xA8\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\xA8A!\v \x07 At"j" )\0 \fj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 E@ Ar!@ \x07 At"j" )\0 \fj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \x07 A\bj"j" )\0 \fj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 Aj"AG\r\0\v\vA\0! \x07 \bM \0A\xF0j" \0A\x88j"Or" @ \0\xFD\0\xE0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \xFD\0\0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\0 \0 \0\xFD\0\xF0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0\x80\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\x80A!\v At"j"\n \n)\0 \bj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 E@ Ar!@ At" j" )\0 \b j)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 A\bj" j" )\0 \b j)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 Aj"AG\r\0\v\v \0A\xB0j" )\0 \0)\x98"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \0 \0)\xB8 \0)\xA0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB8 \0 \0)\xC0 \0)\xA8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC0 \0 \0)\xC8 \0)\xB0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC8 \0 \0)\xD0 \0)\xB8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xD0A\0! \0A\xF8\0j"\b \x07O \0A\xA0j"\x07Or"@ \b \0\xFD\0\xF0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \b\xFD\0\0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\0 \0 \0\xFD\0\x80"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0\x88\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\x88A!\v \b At"\nj"\r \r)\0 \nj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 E@ Ar!@ \b At"j"\n \n)\0 j)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 \b A\bj"j"\n \n)\0 j)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 Aj"AG\r\0\v\v \0A\xD8j" \0\xFD\0\xB0"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \xFD\0\0\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\0 \0 \0\xFD\0\xC0"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\xE8\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\xE8 \0 \0)\xF8 \0)\xD0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xF8 \0 \0)\xC0 \0)x"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xC0 \0 \0)\xC8 \0)\x80"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xC8 \0 \0)\xD0 \0)\x88"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xD0 \0 \0)\xD8 \0)\x90"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xD8 \0 \0)\xE0 \0)\x98"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xE0A\0! \0A\x80jO Or"@ \0 \xFD\0\0"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\x88\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\x88 \0 \0\xFD\0\xE8"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\x98\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\x98A!\v At"\nj"\r \r)\0 \nj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 E@ Ar!@ At"j"\n \n)\0 j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 A\bj"j"\n \n)\0 j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 Aj"AG\r\0\v\vA\0! \x07 \0A\xE8j"O \v Or"@ \0 \0\xFD\0\xC0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0\xA0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\xA0 \0 \0\xFD\0\xD0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0\xB0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\xB0A!\v \x07 At"\nj"\r \r)\0 \n \vj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 E@ Ar!@ \x07 At"j"\n \n)\0 \vj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 \x07 A\bj"j"\n \n)\0 \vj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 Aj"AG\r\0\v\vA\0! O \fOr"\v@ \0 \0\xFD\0\x88"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\xE8\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\xE8 \0 \0\xFD\0\x98"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0\xF8\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v\xF8A!\v At" j" )\0 j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \vE@ Ar!@ At"\vj" )\0 \vj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \vA\bj"\vj" )\0 \vj)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 Aj"AG\r\0\v\vA\0! \0A\xD0\0j" O \x07 \bOr"\b@ \0\xFD\0\xA0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \xFD\0\0\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v\0 \0 \0\xFD\0\xB0"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0`\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v`A!\v At"\vj" )\0 \x07 \vj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 \bE@ Ar!@ At"\bj"\v \v)\0 \x07 \bj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 \bA\bj"\bj"\v \v)\0 \x07 \bj)\0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\0 Aj"AG\r\0\v\vA\0! \f \0A(j"\fM Or"@ \0 \0\xFD\0\xE8"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\0(\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v( \0 \0\xFD\0\xF8"\xFD\f\xFDN\xFD\f \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\xFD\xD5 \0\xFD\08\xFDQ A\xFD\xCD\xFD\fwwwwwwwwwwwwwwww\xFDN\xFDQ\xFD\v8A!\v \f At"\x07j"\b \b)\0 \x07j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 E@ Ar!@ \f At"j"\x07 \x07)\0 j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 \f A\bj"j"\x07 \x07)\0 j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\0 Aj"AG\r\0\v\v \0 \0\xFD\0P"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\0(\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v( \0 \0\xFD\0`"A\xFD\xCB\xFD\f\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xFDN \0\xFD\08\xFDQ A\xFD\xCD\xFD\f\xFDN\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xD5\xFDQ\xFD\v8 \0 \0)H \0)p"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857H \0)(7\0 \0)07\b \0)87 \0)@7 \0)H7 \v\xB9 \x7F~{#\0A\xD0\0k!@ \0 A(lj"A j ) B\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837\0 )HB\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837H )pB\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837p )\x98B\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837\x98 Aj"A\xE4\0G\r\0\v A\0A\xC8\0\xFC\v\0A\n!@ " Ak"A\nl!\n !@ )"B\x86 )"\fB<\x88\x847 \fB\x86 )\b"\fB<\x88\x847 \fB\x86 )\0"\fB<\x88\x847\bA\x88-\0\0"\b!\x07 \fB\x86"\f7\0 -\0 \b \rB4\x88\xA7"sAqs:\0 \f\xA7 \x07sAt"\x07A\xF0\0q"\vAvr \x07A\bqr \vAvs \bsAts:\0\0 \rB\x86 B<\x88\x84! \0 \njA(lj"\xFD\0\0!~ G@ \0 A\nl jA(lj"\x07\xFD\0\0 \xFD\0\0\xFDQ \xFDQ\xFD\v\0 \x07\xFD\0 \xFD\0\xFDQ \xFD\0\xFDQ\xFD\v \x07) ) \x85\f\v \xFD\0\0\xFDQ\xFD\v\0 \xFD\0 \xFD\0\xFDQ\xFD\v ) \v \x85!\r Aj"A\nG\r\0\v AO\r\0\v \r7 A\0! A\xCE\0jI A\xCE\0j KqE@@ At"\0j" A\xF0\xFF\xFF\xFF\x07qj\xFD\0\0"\xFD\f\xFDN \0 j"\0\xFD\0\0\0" \0\xFD\0\0"\xFD\r\0\b\n\f\xFDQ" \xFD\r\x07 \v\r\x1B A\xFDm\xFDQ"\xFD\r\b \n\v\x1B\f\r\xFD\v\0 \xFD\r\0\x07\xFD\v\0\0 Aj"A G\r\0\vA\xC0\0!\v@ j j-\0\0 Avj-\0\0"\0Aqs:\0\0 Ar"j j-\0\0 \0Avs:\0\0 A\xCC\0I Aj!\r\0\v\v\xF2\x7F~@ E\r\0 \0 :\0\0 \0 j"Ak :\0\0 AI\r\0 \0 :\0 \0 :\0 Ak :\0\0 Ak :\0\0 A\x07I\r\0 \0 :\0 Ak :\0\0 A I\r\0 \0A\0 \0kAq"j" A\xFFqA\x81\x82\x84\bl"6\0 kA|q"j"Ak 6\0 A I\r\0 6\b 6 A\bk 6\0 A\fk 6\0 AI\r\0 6 6 6 6\f Ak 6\0 Ak 6\0 Ak 6\0 Ak 6\0 AqAr"k"A I\r\0 \xADB\x81\x80\x80\x80~! j!@ 7 7 7\b 7\0 A j! A k"AK\r\0\v\v \0\v\b\0A\xE4(\0\v]\x7FA\xE4(\0\x7FA\0A\xE8 \x006\0A\xE4 \0\b"\x006\0A\xECA\xC6\b6\0A\xF0A\b6\0A\xF4A\x8C\v\b"6\0 EA\xF0(\0E \0EA\xEC(\0Errr\v\v\r\0 \0A\x80j\0\v\0\0\ve\x7F \0D\0\0\0\0\0\0\0\0@A\xBC(\0A\x1BAA \0AF\x1B \0AF\x1B"\0AkvAq@A\xBCA\xBC(\0A \0Aktr6\0\f\v \0At(\xD0 "@ \0 \0\v\v\v\xB9\v\x7F{~#\0A\xF0\xDE\xC2k"$\0\x7FAA\xE4(\0"\x07E\r\0AA\xE8(\0 \0I\r\0A\xEC(\0!A\xF4(\0! A\xB0\x828jA\0A\x9C\xFC\v\0 A\xF0\0j"A\0A\x80\xF37\xFC\v\0 B\x007\xB0\xE7@ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xA0\xE7@ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\x90\xE7@A\xF9!@ A\xF0\0j" Ak"\bA\'lj")\07\0\x8F\xE7@ \xFD\0\0\xFD\v\x80\xE7@ \xFD\0\0\0"\f\xFD\v\xF0\xE6@ \bA(l j" \f\xFD\v\0 )\x90\xE7@7 \xFD\0\x80\xE7@\xFD\v AIE@ Ak"A\'l j")\07\0\x8F\xE7@ \xFD\0\0\xFD\v\x80\xE7@ \xFD\0\0\0"\f\xFD\v\xF0\xE6@ A(l j" \f\xFD\v\0 )\x90\xE7@7 \xFD\0\x80\xE7@\xFD\v\f\v\v B\x007\xB0\xE7@ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xA0\xE7@ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\x90\xE7@ Aj! A\xD8\x86 j!\bA$!@ A\'l j"A\'k")\07\0\x8F\xE7@ \xFD\0\0\xFD\v\x80\xE7@ \xFD\0\0\0"\f\xFD\v\xF0\xE6@ A(l \bj" A(k" \f\xFD\v\0 )\x90\xE7@7 \xFD\0\x80\xE7@\xFD\v A\xCE\0k")\07\x80\xE7@ )\07\x88\xE7@ )\07\0\x8F\xE7@ \xFD\0\0\0"\f\xFD\v\xF0\xE6@ A\xD0\0k" \f\xFD\v\0 )\x90\xE7@7 \xFD\0\x80\xE7@\xFD\v AG Ak!\r\0\v A \x07 \0\x07 )\0\xBE70 \xFD\0\0\xAE\xFD\v A\xE0\x858jA\' A8\x07 -\0\x80\x868"\0Av:\0\x91\x858 \0Aq:\0\x90\x858 -\0\x81\x868"\0Av:\0\x93\x858 \0Aq:\0\x92\x858 -\0\x82\x868"\0Av:\0\x95\x858 \0Aq:\0\x94\x858 -\0\x83\x868"\0Av:\0\x97\x858 \0Aq:\0\x96\x858 -\0\x84\x868"\0Av:\0\x99\x858 \0Aq:\0\x98\x858 \xFD\0\xE0\x858"\f\xFD\f\xFDN"\r \fA\xFDm"\f\xFD\r\b \n\v\x1B\f\r\xFD\v\xE0\x848 \r \f\xFD\r\0\x07\xFD\v\xD0\x848 \xFD\0\xF0\x858"\f\xFD\f\xFDN"\r \fA\xFDm"\f\xFD\r\b \n\v\x1B\f\r\xFD\v\x80\x858 \r \f\xFD\r\0\x07\xFD\v\xF0\x848 -\0\x85\x868"\0Av:\0\x9B\x858 \0Aq:\0\x9A\x858 -\0\x86\x868"\0Av:\0\x9D\x858 \0Aq:\0\x9C\x858A\0!@ A\xF0\xF37j Atj"\0 j\xFD\0\0\0"\f\xFD\f\xFDN"\r \fA\xFDm"\f\xFD\r\b \n\v\x1B\f\r\xFD\v \0 \r \f\xFD\r\0\x07\xFD\v\0 Aj"A\xA0G\r\0\v -\0\xA0"\0Av:\0\xB1\xFA7 \0Aq:\0\xB0\xFA7 -\0\xA1"\0Av:\0\xB3\xFA7 \0Aq:\0\xB2\xFA7 -\0\xA2"\0Av:\0\xB5\xFA7 \0Aq:\0\xB4\xFA7 -\0\xA3"\0Av:\0\xB7\xFA7 \0Aq:\0\xB6\xFA7 -\0\xA4"\0Av:\0\xB9\xFA7 \0Aq:\0\xB8\xFA7 -\0\xA5"\0Av:\0\xBB\xFA7 \0Aq:\0\xBA\xFA7 -\0\xA6"\0Av:\0\xBD\xFA7 \0Aq:\0\xBC\xFA7 -\0\xA7"\0Av:\0\xBF\xFA7 \0Aq:\0\xBE\xFA7 -\0\xA8"\0Av:\0\xC1\xFA7 \0Aq:\0\xC0\xFA7 -\0\xA9"\0Av:\0\xC3\xFA7 \0Aq:\0\xC2\xFA7 -\0\xAA"\0Av:\0\xC5\xFA7 \0Aq:\0\xC4\xFA7 -\0\xAB"\0Av:\0\xC7\xFA7 \0Aq:\0\xC6\xFA7 -\0\xAC"\0Av:\0\xC9\xFA7 \0Aq:\0\xC8\xFA7 -\0\xAD"\0Av:\0\xCB\xFA7 \0Aq:\0\xCA\xFA7A\0! A\xB0\x868jA\0A\x80\xD1\0\xFC\v\0 A\xB0\xD78jA\0A\xC0\x8F\b\xFC\v\0 A\xF0\xE6\xC0\0jA\0A\x80\xF8\x81\xFC\v\0 A\xBE\xF47j! A\xD8\xC3\x07j! A\0!@ A\nl!\x07 !@ A\xF0\0j A(lj"\0\xFD\0!\f \0\xFD\0\0!\r \0) ! A\xF0\xF37j j!\nA\0!@ A\xF0\xE6\xC0\0j \n A\xD6\0lj-\0\0 \x07jAtjA(lj"\0 \0\xFD\0\0 \r\xFDQ\xFD\v\0 \0 \0\xFD\0 \f\xFDQ\xFD\v \0 \0) \x857 Aj"A\nG\r\0\v Aj! Aj"A\xCE\0G\r\0\v At!\nA\0!@ j!\v \njA(lj"\0\xFD\0!\f \0\xFD\0\0!\r \0) !A\0!@ A\xF0\xE6\xC0\0j \v A\xD6\0lj-\0\0 \x07jAtjA(lj"\0 \0\xFD\0\0 \r\xFDQ\xFD\v\0 \0 \0\xFD\0 \f\xFDQ\xFD\v \0 \0) \x857 Aj"A\nG\r\0\v Aj"A\bG\r\0\vA\xCE\0!\0 Aj"A\xCE\0G\r\0\vA\0!@ \0A\nl!\x07 \0!@ \b A(lj"\xFD\0!\f \xFD\0\0!\r ) ! A\xF0\xF37j j!A\0!@ A\xF0\xE6\xC0\0j A\xD6\0lj-\0\0 \x07jAtjA(lj" \xFD\0\0 \r\xFDQ\xFD\v\0 \xFD\0 \f\xFDQ\xFD\v ) \x857 Aj"A\nG\r\0\v Aj! Aj"A\xD6\0G\r\0\v \0Aj"\0A\xD6\0G\r\0\vA\0!@ A\xF0\xE6\xC0\0j"\0 A\x80lj A\xB0\xD78j A(lj Aj"A\xDCG\r\0\vA\0! \0A\0A\x80\x90\n\xFC\v\0@ A\nl!\b A\xF0\xF37j A\xD6\0lj!\x07A\0!@ A\nl! \x07j-\0\0! A\0!@ A\xF0\xE6\xC0\0j \bjAt jA(lj"\0 \0\xFD\0\0 A\xB0\xD78j jA(lj"\xFD\0\0\xFDQ\xFD\v\0 \0 \0\xFD\0 \xFD\0\xFDQ\xFD\v \0 \0) ) \x857 Aj"A\nG\r\0\v Aj"A\xD6\0G\r\0\v Aj"A\nG\r\0\vA\0!@ A\xF0\xE6\xC0\0j"\0 A\x80lj A\xB0\x868j" A(lj Aj"A\xE4\0G\r\0\v \0A\0A\x8E\xFC\v\0 \0 A\xB0\x828j )\xB0\x828 )\xD0\x848\x85 A\xC0\x828j)\0 A\xE0\x848j)\0\x85\x84 A\xD0\x828j)\0 A\xF0\x848j)\0\x85 A\xE0\x828j)\0 A\x80\x858j)\0\x85\x84\x84 A\xEE\x828j)\0 A\x8E\x858j)\0\x85\x84 )\xB8\x828 )\xD8\x848\x85 A\xC8\x828j)\0 A\xE8\x848j)\0\x85\x84 A\xD8\x828j)\0 A\xF8\x848j)\0\x85 A\xE8\x828j)\0 A\x88\x858j)\0\x85\x84\x84 A\xF6\x828j)\0 A\x96\x858j)\0\x85\x84\x84B\0R\v A\xF0\xDE\xC2j$\0\v\xBD\x98\x7F-{~#\0"! A\xA0\xF6\xC1\0kA`q"$\0A\xE4(\0"E@ $\0A\vA\xE8(\0 \0I@ $\0A\vA\0!A\xEC(\0!A\xF0(\0!\n A\xA0\xB48jA\0A\xD0\xE6\xFC\v\0 A\x90\xA48jA\0A\xCD\xFC\v\0 A\xE0\xB2:jA\xC8 \nA\x07 A\xF0\xB2:j! A\x98\x918j!@ Atj" j\xFD\0\0"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v \xFD\r\0\x07\xFD\v\0 Aj"A\xB0G\r\0\v -\0\xA0\xB5:"Av:\0\xF9\x958 Aq:\0\xF8\x958 -\0\xA1\xB5:"Av:\0\xFB\x958 Aq:\0\xFA\x958 -\0\xA2\xB5:"Av:\0\xFD\x958 Aq:\0\xFC\x958 -\0\xA3\xB5:"Av:\0\xFF\x958 Aq:\0\xFE\x958 -\0\xA4\xB5:"Av:\0\x81\x968 Aq:\0\x80\x968 -\0\xA5\xB5:"Av:\0\x83\x968 Aq:\0\x82\x968 -\0\xA6\xB5:"Av:\0\x85\x968 Aq:\0\x84\x968 -\0\xA7\xB5:"Av:\0\x87\x968 Aq:\0\x86\x968 A\xA0\xF4\0j A\xE0\xB2:j B\x007` \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\vP \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v@A\xF9!@ A\xA0\xF4\0j"\b Ak"A\'lj")\07\0? \xFD\0\0\xFD\v0 \xFD\0\0\0"\xFD\v A(l \bj" \xFD\v\0 )@7 \xFD\00\xFD\v AIE@ Ak"A\'l \bj")\07\0? \xFD\0\0\xFD\v0 \xFD\0\0\0"\xFD\v A(l \bj" \xFD\v\0 )@7 \xFD\00\xFD\v\f\v\v A\x88\xB7\bj!A\0!A\0!\b@ At!\v !@ G@ At! A\xA0\xF4\0j \bA(lj! A\0!\x07@ \x07 \vj"A(lj!\r \x07 j"\fj-\0\0!A\0!@ \r At"j" )\0 j)\0"FB\0A\x88-\0\0 s"Aq\x1B\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F \xAD"GB>\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F GB=\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 GB<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v \fA(lj!\r j-\0\0!A\0!@ \r At"\fj" )\0 \fj)\0"FB\0A\x88-\0\0 s"\fAq\x1B\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F \f\xAD"GB>\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F GB=\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 GB<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v \x07Aj"\x07A\bG\r\0\v\v \bAj!\b Aj"A\xCE\0G\r\0\v Aj"A\xCE\0G\r\0\v A\xE0\xB2:jA\0A\xE4A\xD8\v(\0\0\0 A\x80\xF3\0jA \0\x07 A jA\0A\xE0\xF2\0\xFC\v\0 A\xA0\xF3\0j!\x7F@A\xB8-\0\0@ A\xA0)\x007 A\x90\xFD\0\0\xFD\v\0A\xB8A\0:\0\0\f\v A\0:\0\xE2\xB2: A\xF0\xD2;\0\xE0\xB2: 6 A6AA\xDC\v A\xE0\xB2:j Aj\r\v \n)\07\xC8s \n\xFD\0\0\0\xFD\v\xB8s A\xC0\xAF:jA A\x80\xF3\0j"\0A\xD0\0\x07 )\xD0\xAF:7 \xFD\0\xC0\xAF:\xFD\v\0 A\x90\xB2:jA\' \0A8\x07 -\0\xB0\xB2:"\0Av:\0\xC1\xB1: \0Aq:\0\xC0\xB1: -\0\xB1\xB2:"\0Av:\0\xC3\xB1: \0Aq:\0\xC2\xB1: -\0\xB2\xB2:"\0Av:\0\xC5\xB1: \0Aq:\0\xC4\xB1: -\0\xB3\xB2:"\0Av:\0\xC7\xB1: \0Aq:\0\xC6\xB1: -\0\xB4\xB2:"\0Av:\0\xC9\xB1: \0Aq:\0\xC8\xB1: \xFD\0\x90\xB2:"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v\x90\xB1: \xFD\r\0\x07\xFD\v\x80\xB1: \xFD\0\xA0\xB2:"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v\xB0\xB1: \xFD\r\0\x07\xFD\v\xA0\xB1: -\0\xB5\xB2:"\0Av:\0\xCB\xB1: \0Aq:\0\xCA\xB1: -\0\xB6\xB2:"\0Av:\0\xCD\xB1: \0Aq:\0\xCC\xB1: A\xF0\xB48j"\n A\xBE\xB0:jI A\xF0\xAF:j A\xCE\xE58jIq! A\xE0\xB48j! A\xD0\xB48j! A\xC0\xB48j! A\xB0\xB48j!A\0!@ :\0\xD0s A\xA0\xA8:jA\xAE A\x80\xF3\0jA\xD1\0\x07A\0!@ A\xF0\x9A:j A\xCE\0lj"\0 A\xA0\xA8:j A\'lj"\xFD\0\0\0"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v \0 \xFD\r\0\x07\xFD\v\0 \0 \xFD\0\0"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v0 \0 \xFD\r\0\x07\xFD\v \0 -\0 "Av:\0A \0A@k Aq:\0\0 \0 -\0!"Av:\0C \0 Aq:\0B \0 -\0""Av:\0E \0 Aq:\0D \0 -\0#"Av:\0G \0 Aq:\0F \0 -\0$"Av:\0I \0 Aq:\0H \0 -\0%"Av:\0K \0 Aq:\0J \0 -\0&"Av:\0M \0 Aq:\0LA\0! Aj"A\nG\r\0\v@ At!\0 A\xF0\x9A:j A\xCE\0lj!\bA\0!@ At! \bj-\0\0!A\0!\x07@ \x07 jA(lj!\v A j \0 \x07jA(lj!A\0!@ At"\rj"\f \f)\0 \v \rj)\0"FB\0A\x88-\0\0 s"\rAq\x1B\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F \r\xAD"GB>\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F GB=\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 GB<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v \x07Aj"\x07A\bG\r\0\v Aj"A\xCE\0G\r\0\v Aj"A\nG\r\0\vA\0!\b A\xE0\xB2:jA\0A\xC0\xBE\x07\xFC\v\0A\0!\0@ \bA\nl! \b!@ A\xA0\xF4\0j \0A(lj! A\xF0\x9A:j j!A\0!\x07@ A\xE0\xB2:j \x07jA(lj!\v \x07A\xCE\0lj-\0\0!A\0!@ \v At"\rj"\f \f)\0 \rj)\0"FB\0A\x88-\0\0 s"\rAq\x1B\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F \r\xAD"GB>\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F GB=\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 GB<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v \x07Aj"\x07A\nG\r\0\v \0Aj!\0 Aj"A\xCE\0G\r\0\vA\0! \bAj"\bA\xCE\0G\r\0\v@ A\nl!\0 A\xF0\x9A:j A\xCE\0lj!\bA\0!@ A\nl! \bj-\0\0!A\0!\x07@ A\xA0\xB48j \0 \x07jA(lj!\v A\xE0\xB2:j \x07 jA(lj!A\0!@ \v At"\rj"\f \f)\0 \rj)\0"FB\0A\x88-\0\0 s"\rAq\x1B\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F \r\xAD"GB>\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"F GB=\x86B?\x87\x83\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ FB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 GB<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v \x07Aj"\x07A\nG\r\0\v Aj"A\xCE\0G\r\0\v Aj"A\nG\r\0\v A\xA0\xB48j A\x80\xB1:j A\xF0\xAF:jA\0! A\xE0\xB2:jA\0A\x80\xEA\xFC\v\0A\0!\0@ A j \0A(lj"A j ) B\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837\0 )HB\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837H )pB\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837p )\x98B\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x837\x98 \0Aj"\0A\xD0\0G\r\0\vA\0!A\0!\b@ A j \bA\xC0lj!\r A\xE0\xB2:j \bAtj!\fA\n!\0@ A\x80l!\x07A\0!A\xC0\0 k\xAD!G A j \0Ak"\0A\xC0lj! \xAD!F@ A\0L@@ A(lj"\xFD\0@! \xFD\0! \xFD\00! \f Atj \x07j" \xFD\0\0 \xFD\0\0" \xFD\0 "\x1B\xFD\r\0\x07\x1B F\xA7"\xFD\xCB\xFDQ\xFD\v\0 \xFD\0\x80 \xFD\r\b \n\v\f\r \xFD\xCB\xFDQ\xFD\v\x80 A\x80\nj"\v \v\xFD\0\0 \xFD\r\0\x07\x1B \xFD\xCB\xFDQ\xFD\v\0 A\x80j"\v \v\xFD\0\0 \xFD\r\b \n\v\f\r \xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \x1B \xFD\r\0\x07\x1B \xFD\xCB\xFDQ\xFD\v\0 Aj"A\bG\r\0\f\v\0\vA\0! @ A(lj"\xFD\0@! \xFD\0! \xFD\00! \f Atj \x07j"A\x80j \xFD\0\x80 \xFD\0\0" \xFD\0 "\x1B\xFD\r\0\x07\x1B" G\xA7"\xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 F\xA7"\v\xFD\xCB\xFDQ\xFD\v\0 \xFD\0\x80 \xFD\r\b \n\v\f\r" \v\xFD\xCB\xFDQ\xFD\v\x80 A\x80\nj" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \xFD\r\0\x07\x1B" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \xFD\r\b \n\v\f\r" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \x1B \xFD\r\0\x07\x1B" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 Aj" A\bG\r\0\v\v@ \0 \bF\r\0A\0! A\xE0\xB2:j \0Atj! A\0L@@ \r A(lj"\xFD\0@! \xFD\0! \xFD\00! Atj \x07j" \xFD\0\0 \xFD\0\0" \xFD\0 "\x1B\xFD\r\0\x07\x1B F\xA7"\xFD\xCB\xFDQ\xFD\v\0 \xFD\0\x80 \xFD\r\b \n\v\f\r \xFD\xCB\xFDQ\xFD\v\x80 A\x80\nj"\v \v\xFD\0\0 \xFD\r\0\x07\x1B \xFD\xCB\xFDQ\xFD\v\0 A\x80j"\v \v\xFD\0\0 \xFD\r\b \n\v\f\r \xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \x1B \xFD\r\0\x07\x1B \xFD\xCB\xFDQ\xFD\v\0 Aj"A\bG\r\0\f\v\0\vA\0! @ \r A(lj"\xFD\0@! \xFD\0! \xFD\00! Atj \x07j"A\x80j \xFD\0\x80 \xFD\0\0" \xFD\0 "\x1B\xFD\r\0\x07\x1B" G\xA7"\xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 F\xA7"\v\xFD\xCB\xFDQ\xFD\v\0 \xFD\0\x80 \xFD\r\b \n\v\f\r" \v\xFD\xCB\xFDQ\xFD\v\x80 A\x80\nj" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \xFD\r\0\x07\x1B" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \xFD\r\b \n\v\f\r" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 \xFD\0\0 \x1B \xFD\r\0\x07\x1B" \v\xFD\xCB\xFDQ\xFD\v\0 A\x80j" \xFD\0\0 \xFD\xCD\xFDQ\xFD\v\0 Aj" A\bG\r\0\v\vA\0 Aj" A\xC0\0F"\x1B! j! \0 \bK\r\0\v \bAj"\bA\nG\r\0\vA\0!\0@ A\xE0\xB2:j \0A\x07tj" \xFD]@\xFDW\xC0"A\xFD\xCD" \xFD]H\xFDW\xC8"\xFD\f\xFDR"A\b\xFD\xCD"\x1B \xFD]P\xFDW\xD0"A\xFD\xCD"" \xFD]X\xFDW\xD8" \xFD\f\xFDR"!\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"\'A\xFD\xCD"( \xFD]`\xFDW\xE0"#A\xFD\xCD"$ \xFD]h\xFDW\xE8"%\xFD\f\xFDR"A\b\xFD\xCD") \xFD]p\xFDW\xF0"&A\xFD\xCD"* \xFD]x\xFDW\xF8"+\xFD\f\xFDR",\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR":\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"-\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN \xFD]\0\xFDW\x80".A\xFD\xCD"/ \xFD]\b\xFDW\x88"0\xFD\f\xFDR"1A\b\xFD\xCD"2 \xFD]\xFDW\x90"3A\xFD\xCD"4 \xFD]\xFDW\x98"5\xFD\f\xFDR"6\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR";A\xFD\xCD"< \xFD] \xFDW\xA0"7A\xFD\xCD"8 \xFD](\xFDW\xA8"9\xFD\f\xFDR"=A\b\xFD\xCD"> \xFD]0\xFDW\xB0"?A\xFD\xCD"@ \xFD]8\xFDW\xB8"A\xFD\f\xFDR"B\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"C\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"DA \xFD\xCD\xFDQ"E -\xFDQ"-\xFD[\xF8 ! \x1B\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB \xFDQ"A\xFD\xCD"\x1B , )\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB \xFDQ"!\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN 6 2\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB 1\xFDQ")A\xFD\xCD", B >\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB =\xFDQ"1\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"2A \xFD\xCD\xFDQ"6 \xFDQ" \xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"A\b\xFD\xCD" " \xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"A\xFD\xCD"" # $ %\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ" A\b\xFD\xCD"# & * +\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"$\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"%\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"&\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN . / 0\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"*A\b\xFD\xCD"+ 3 4 5\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ".\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"/A\xFD\xCD"0 7 8 9\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"3A\b\xFD\xCD"4 ? @ A\xFDQ\xFD\f\xFDNA\xFD\xCB\xFDQ"5\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDR"7\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"8A \xFD\xCD\xFDQ"9 &\xFDQ"&\xFD\r\0\x07\xFD\vh &\xFD\r\b \n\v\f\r\x1B\xFD\v\xE8 9A \xFD\xCB 8\xFDQ" EA \xFD\xCB D\xFDQ"&\xFD\r\b \n\v\f\r\x1B\xFD\v\xB0 &\xFD\r\0\x07\xFD\v0 ! \x1B\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB \xFDQ"\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN 1 ,\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB )\xFDQ"\x1BA \xFD\xCD\xFDQ"!A \xFD\xCB \x1B\xFDQ"\x1B\xFD[\x88 ! \xFDQ" % "\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB \xFDQ"\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN 7 0\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB /\xFDQ""A \xFD\xCD\xFDQ"! \xFDQ"\xFD\r\b \n\v\f\r\x1B\xFD\v\xC8 \xFD\r\0\x07\xFD\vH : (\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB \'\xFDQ"\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN C <\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB ;\xFDQ"A \xFD\xCD\xFDQ"\' \xFDQ" \xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB \xFDQ"A\xFD\xCD" $ #\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB \xFDQ"\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR" \xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN . +\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB *\xFDQ"(A\xFD\xCD"# 5 4\xFDQ\xFD\f\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFDNA\b\xFD\xCB 3\xFDQ"$\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDR"%A \xFD\xCD\xFDQ" \xFDQ" \xFD\r\b \n\v\f\r\x1B\xFD\v\xD8 \xFD\r\0\x07\xFD\vX !A \xFD\xCB "\xFDQ" \'A \xFD\xCB \xFDQ"\xFD\r\b \n\v\f\r\x1B\xFD\v\x90 \xFD\r\0\x07\xFD\v A \xFD\xCB %\xFDQ" 6A \xFD\xCB 2\xFDQ"\xFD\r\b \n\v\f\r\x1B\xFD\v\xA0 \xFD\r\0\x07\xFD\v \xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB \xFDQ"\xFD\f\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\xFDN $ #\xFDQ\xFD\f\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFF\xFF\0\0\xFDNA\xFD\xCB (\xFDQ"A \xFD\xCD\xFDQ" \xFDQ"\xFD[\xC0 \xFD[@\0 A \xFD\xCB \xFDQ" \x1B\xFD\r\0\x07\xFD\v\0 - \xFD\r\0\x07\x1B\xFD\vx \0Aj"\0A,G\r\0\v )\xD8\xDF:"F )\xD0\xDF:"GB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"H F\x85"F )\xC8\xDF:"J )\xC0\xDF:"IB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"O J\x85"JB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"WB\b\x86 J\x85"J )\xB8\xDF:"P )\xB0\xDF:"LB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"K P\x85"P )\xA8\xDF:"M )\xA0\xDF:"QB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"R M\x85"MB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"XB\b\x86 M\x85"MB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"ZB\x86 M\x85"MB\xFF\xFF\xFF\xFF\x83 )\x98\xDF:"S )\x90\xDF:"TB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"Y S\x85"S )\x88\xDF:"U )\x80\xDF:"NB\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"[ U\x85"UB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"_B\b\x86 U\x85"U )\xF8\xDE:"\\ )\xF0\xDE:"]B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"^ \\\x85"\\ )\xE8\xDE:"V )\xE0\xDE:"`B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"a V\x85"VB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"bB\b\x86 V\x85"VB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"cB\x86 V\x85"VB \x88\x85"d M\x857\xA8\xDF: G HB\x86\x85"G I OB\x86\x85"HB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"IB\b\x86 H\x85"H L KB\x86\x85"O Q RB\x86\x85"LB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"KB\b\x86 L\x85"LB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"MB\x86 L\x85"LB\xFF\xFF\xFF\xFF\x83 T YB\x86\x85"Q N [B\x86\x85"RB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"TB\b\x86 R\x85"R ] ^B\x86\x85"Y ` aB\x86\x85"NB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"[B\b\x86 N\x85"NB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"]B\x86 N\x85"NB \x88\x85"^ L\x857\xA0\xDF: dB \x86 V\x857\xE8\xDE: ^B \x86 N\x857\xE0\xDE: G I\x85"G K O\x85"IB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"OB\x86 I\x85"IB\xFF\xFF\xFF\xFF\x83 Q T\x85"L Y [\x85"KB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"QB\x86 K\x85"KB \x88\x85"T I\x857\xB0\xDF: TB \x86 K\x857\xF0\xDE: F W\x85"F P X\x85"IB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"WB\x86 I\x85"IB\xFF\xFF\xFF\xFF\x83 S _\x85"P \\ b\x85"KB\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"XB\x86 K\x85"KB \x88\x85"S I\x857\xB8\xDF: SB \x86 K\x857\xF8\xDE: H M\x85"HB\xFF\xFF\xFF\xFF\x83 R ]\x85"IB \x88\x85"K H\x857\xC0\xDF: KB \x86 I\x857\x80\xDF: J Z\x85"HB\xFF\xFF\xFF\xFF\x83 U c\x85"JB \x88\x85"I H\x857\xC8\xDF: IB \x86 J\x857\x88\xDF: G O\x85"GB\xFF\xFF\xFF\xFF\x83 L Q\x85"HB \x88\x85"J G\x857\xD0\xDF: JB \x86 H\x857\x90\xDF: F W\x85"FB\xFF\xFF\xFF\xFF\x83 P X\x85"GB \x88\x85"H F\x857\xD8\xDF: HB \x86 G\x857\x98\xDF:A\0!A\x88-\0\0"At""\0A\x7FsAq"Av \0Aqr Avs\xAD!I At"\b"\0A0qA s"Av \0A\fqr Avs\xAD!O At""\0A\xF0\0qA\xC0\0s"Av \0A\bqr Avs\xAD!W "\0Aq \0Aq"\0Avr \0AvsAs\xAD!P \b"\0A\fq \0A0q"\0Avr \0AvsAs\xAD!L "\0A\bq \0A\xF0\0q"\0Avr \0AvsA\bs\xAD!K "\0Aq \0Aq"\0Avr \0AvsAs\xAD!M \b"\0A\fq \0A0q"\0Avr \0AvsAs\xAD!Q "\0A\bq \0A\xF0\0q"\0Avr \0AvsA\bs\xAD!R "\0Aq"Av \0Aqr Avs\xAD!X \b"\0A0q"Av \0A\fqr Avs\xAD!Z "\0A\xF0\0q"Av \0A\bqr Avs\xAD!SA\x881\0\0B\x83!T Aq"\0A\bs\xAD!Y \0As\xAD"N!U@ A\xE0\xB2:j Atj!\0A\xCE\0!@ \0 A\xCE\0k"AvA\x80lj AqAtj" )\0 \0 AvA\x80lj AqAtj)\0"FB\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83"G Y~\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83"H I~\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83"J O~\x85 FB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83"F W~\x857\0 \0 A\xCD\0k"AvA\x80lj AqAtj" F K~ )\0 J L~ H P~ G U~\x85\x85\x85\x857\0 \0 A\xCC\0k"AvA\x80lj AqAtj" )\0 F R~ J Q~ H M~ G N~\x85\x85\x85\x857\0 \0 A\xCB\0k"AvA\x80lj AqAtj" )\0 F S~ J Z~ H X~ G T~\x85\x85\x85\x857\0 Aj"A\x85G\r\0\v A\xC0\0IA\0!A\xCE\0! Aj!\r\0\v@ A\xE0\xB2:j A(lj!\bA\0!@ A\xA0\xB48j jA\xD1\0lj"\0 \b Atj"-\0\0"\x07Av:\0 \0 \x07Aq:\0\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0 \0 -\0"\x07Av:\0\x07 \0 \x07Aq:\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0\b \0 -\0"\x07Av:\0\v \0 \x07Aq:\0\n \0 -\0"\x07Av:\0\r \0 \x07Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 Aj" G\r\0\v \bA\x80j!\x07A\0!@ jA\xD1\0lj"\0 \x07 Atj"-\0\0"Av:\0 \0 Aq:\0\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0\x07 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0\b \0 -\0"Av:\0\v \0 Aq:\0\n \0 -\0"Av:\0\r \0 Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 Aj" G\r\0\v \bA\x80j!\x07A\0!@ jA\xD1\0lj"\0 \x07 Atj"-\0\0"Av:\0 \0 Aq:\0\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0\x07 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0\b \0 -\0"Av:\0\v \0 Aq:\0\n \0 -\0"Av:\0\r \0 Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 Aj" G\r\0\v \bA\x80j!\x07A\0!@ jA\xD1\0lj"\0 \x07 Atj"-\0\0"Av:\0 \0 Aq:\0\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0\x07 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0\b \0 -\0"Av:\0\v \0 Aq:\0\n \0 -\0"Av:\0\r \0 Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 Aj" G\r\0\v \bA\x80j!\bA\0!@ jA\xD1\0lj"\0 \b Atj"-\0\0"\x07Av:\0 \0 \x07Aq:\0\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0 \0 -\0"\x07Av:\0\x07 \0 \x07Aq:\0 \0 -\0"\x07Av:\0 \0 \x07Aq:\0\b \0 -\0"\x07Av:\0\v \0 \x07Aq:\0\n \0 -\0"\x07Av:\0\r \0 \x07Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 Aj" G\r\0\v Ak! A>I Aj!\r\0\v\xFD\f\f\0\0\0\r\0\0\0\0\0\0\0\0\0!\xFD\f\b\0\0\0 \0\0\0\n\0\0\0\v\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\x07\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0!A\0!@ \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5\xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xAE"\x1B\xFD\x1B\0 jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5\xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xAE"\x1B\xFD\x1B\0 jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5\xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xAE"\x1B\xFD\x1B\0 jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5\xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xAE"\x1B\xFD\x1B\0 jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \x1B\xFD\x1B jA\x9F\xB48jA\0:\0\0 \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! Aj"A\xC0\0G\r\0\vA\0! A\0:\0\xCD\xE58 A\0:\0\xFC\xE48 A\0:\0\xAB\xE48 A\0:\0\xDA\xE38 A\0:\0\x89\xE38 A\0:\0\xB8\xE28 A\0:\0\xE7\xE18 A\0:\0\x96\xE18 A\0:\0\xC5\xE08 A\0:\0\xF4\xDF8 A\0:\0\xA3\xDF8 A\0:\0\xD2\xDE8 A\0:\0\x81\xDE8 A\0:\0\xB0\xDD8 \xFD\0\xA6\xAB:"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v\xA0\xA48 \xFD\r\0\x07\xFD\v\x90\xA48 \xFD\0\xB6\xAB:"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v\xC0\xA48 \xFD\r\0\x07\xFD\v\xB0\xA48 -\0\xC6\xAB:"\0Av:\0\xD1\xA48 \0Aq:\0\xD0\xA48 -\0\xC7\xAB:"\0Av:\0\xD3\xA48 \0Aq:\0\xD2\xA48 -\0\xC8\xAB:"\0Av:\0\xD5\xA48 \0Aq:\0\xD4\xA48 -\0\xC9\xAB:"\0Av:\0\xD7\xA48 \0Aq:\0\xD6\xA48 -\0\xCA\xAB:"\0Av:\0\xD9\xA48 \0Aq:\0\xD8\xA48 -\0\xCB\xAB:"\0Av:\0\xDB\xA48 \0Aq:\0\xDA\xA48 -\0\xCC\xAB:"\0Av:\0\xDD\xA48 \0Aq:\0\xDC\xA48 -\0\xCD\xAB:"\0Av:\0\xDF\xA48 \0Aq:\0\xDE\xA48 \xFD\0\x90\xA48\xFD\v\xE0\xA58 \xFD\0\xA0\xA48\xFD\v\xF0\xA58 \xFD\0\xB0\xA48\xFD\v\x80\xA68 \xFD\0\xC0\xA48\xFD\v\x90\xA68 \xFD\0\xD0\xA48\xFD\v\xA0\xA68\xFD\f\f\0\0\0\r\0\0\0\0\0\0\0\0\0!\xFD\f\b\0\0\0 \0\0\0\n\0\0\0\v\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\x07\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0!@ \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\x1B\xFD\x1B\0jA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\x1B\xFD\x1B\0jA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\x1B\xFD\x1B\0jA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\x1B\xFD\x1B\0jA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \n \x1B\xFD\x1BjA\0:\0\0 \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! Aj"A\xC0\0G\r\0\vA\0!\b A\0:\0\xCD\xE58 A\0:\0\xFC\xE48 A\0:\0\xAB\xE48 A\0:\0\xDA\xE38 A\0:\0\x89\xE38 A\0:\0\xB8\xE28 A\0:\0\xE7\xE18 A\0:\0\x96\xE18 A\0:\0\xC5\xE08 A\0:\0\xF4\xDF8 A\0:\0\xA3\xDF8 A\0:\0\xD2\xDE8 A\0:\0\x81\xDE8 A\0:\0\xB0\xDD8 A\xB0\xF1\xC1\0j!\x07 A\xA0\xB48j!\0@ A\x90\xA48j! A\0!A\0!@ -\0\0"A\0 \0 j-\0\0A\x88-\0\0s"Aq\x1B Aqls Aqls A\bqls"A\xF0qAvs Aqs AvAqs! Aj! A\xD0\0G Aj!\r\0\v \x07 :\0\0 \0A\xD1\0j!\0 \x07Aj!\x07 \bAj"\bA\xCE\0G\r\0\vA\0!\0@ @A\0!\f\v\xFD\f\f\0\0\0\r\0\0\0\0\0\0\0\0\0!\xFD\f\b\0\0\0 \0\0\0\n\0\0\0\v\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\x07\0\0\0!\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0!\x1B@ \n \x1B\xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\xFD\x1B\0j A\xB0\xF1\xC1\0j \0j\xFD\0\0 A\xF0\xAF:j \0j\xFD\0\0\xFDQ"\xFDX\0\0\0 \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0 \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\xFD\x1B\0j \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0\x07 \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\xFD\x1B\0j \xFDX\0\0\b \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0\n \n \xFD\x1Bj \xFDX\0\0\v \n \xFD\fQ\0\0\0Q\0\0\0Q\0\0\0Q\0\0\0\xFD\xB5"\xFD\x1B\0j \xFDX\0\0\f \n \xFD\x1Bj \xFDX\0\0\r \n \xFD\x1Bj \xFDX\0\0 \n \xFD\x1Bj \xFDX\0\0 \x1B\xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE!\x1B \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE! \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xAE!A\xC0\0! \0Aj"\0A\xC0\0G\r\0\v\v@ \n A\xD1\0lj A\xB0\xF1\xC1\0j" j-\0\0 A\xF0\xAF:j" j-\0\0s:\0\0 \n Ar"\0A\xD1\0lj \0 j-\0\0 \0 j-\0\0s:\0\0 Aj"A\xCE\0G\r\0\vA\0! A\xE0\xB2:jA\0A\xB0\xF3\0\xFC\v\0@ A\xE0\xB2:j A0lj! A\xA0\xB48j A\xD1\0lj!\0A\0!@ j \0 Atj"\b\xFD\0\0\0" \b\xFD\0\0"\xFD\r\x07 \v\r\x1BA\xFDk \xFD\r\0\b\n\f\xFDP\xFD\v\0 Aj"A G\r\0\v \0-\0@ \0-\0AAtr:\0 \0-\0B \0-\0CAtr:\0! \0-\0D \0-\0EAtr:\0" \0-\0F \0-\0GAtr:\0# \0-\0H \0-\0IAtr:\0$ \0-\0J \0-\0KAtr:\0% \0-\0L \0-\0MAtr:\0& \0-\0N \0-\0OAtr:\0\' \0-\0P:\0(A\0! Aj"A\xCE\0G\r\0\vA\0! @ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xC0\xF5A \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xB0\xF5A \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xA0\xF5A \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xA0\xF4A \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xB0\xF4A \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v\xC0\xF4AB\x7F!FA\0!A AL\x1BAk"\0A- A-N\x1BA j"\bL@ AtA<q\xAD!G A\xA0\xF5\xC1\0j AvA\xF8\xFF\xFF\xFF\x07qj!\x07 \0!@ \xFD\0\xA0\xF5A A\xE0\xB2:j A0lj"\xFD\0\0A\x80)\0"NB\x7FB\0 J\x1B\x85 F\x83 NB\x7FB\0 sA\0L\x1B\x85\x84\xFD"\xFDN\xFDQ\xFD\v\xA0\xF5A \xFD\0\xB0\xF5A \xFD\0 \xFDN\xFDQ\xFD\v\xB0\xF5A \xFD\0\xC0\xF5A \xFD\0 \xFDN\xFDQ\xFD\v\xC0\xF5AA\x80)\0B\0B\x7F \x07)\0 G\x88\xA7Aq"\x1B\x85!F \bI Aj!\r\0\v\v \xFD\0\xA0\xF5A"\xFD\f\xFDN A\0A\x88-\0\0" s"Aq\x1B Aq ls Aq ls A\bq ls"Aq Avs AvAqs"A\0 s""Aq\x1B Aq ls Aq ls A\bq ls"Aq A\xF0qAvs AvAqs"A\0 s"\bAq\x1B \bAq ls \bAq ls \bA\bq ls"\bA\xFFq"\x07Av s \bs" \x07Avs"\bAq A\0 "Aq\x1B Aqls Aqls A\bqls"Aq A\xF0qAvs AvAqs"l A\0 Aq\x1Bs \bAq ls \bA\bq ls"Aq A\xF0qAvs AvAqsA\x81\x84\x90\xC0\0l"A\xF0\xE1\xC3\x87\x07q"Av Avs s"A\xFFq\xAD\xFD"\xFD\xD5 \xFD\0\xA0\xF4A\xFDQ A\xFD\xCD\xFD\f\xFDN A\bvAq\xAD\xFD"\xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN AvAq\xAD\xFD"\xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN AvAq\xAD\xFD"\x1B\xFD\xD5\xFDQ\xFD\v\xA0\xF4A \xFD\0\xB0\xF5A"\xFD\f\xFDN \xFD\xD5 \xFD\0\xB0\xF4A\xFDQ A\xFD\xCD\xFD\f\xFDN \xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN \xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN \x1B\xFD\xD5\xFDQ\xFD\v\xB0\xF4A \xFD\0\xC0\xF5A"\xFD\f\xFDN \xFD\xD5 \xFD\0\xC0\xF4A\xFDQ A\xFD\xCD\xFD\f\xFDN \xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN \xFD\xD5\xFDQ A\xFD\xCD\xFD\f\xFDN \x1B\xFD\xD5\xFDQ\xFD\v\xC0\xF4AA\xCD\0 A\xCD\0N\x1B"\b \0N@ \xFD\0\xC0\xF4A! \xFD\0\xB0\xF4A! \xFD\0\xA0\xF4A!\x1B \0!@ A\xE0\xB2:j A0lj" \x1BA\x80)\0B\x7FB\0 sA\0J\x1B\x85 F\x84"GB\x7F\x85\xFD"\xFDN \xFD\0\0 G\xFD"\xFDN\xFD\xCE\xFD\v\0 \xFDN \xFD\0 \xFDN\xFD\xCE\xFD\v \xFDN \xFD\0 \xFDN\xFD\xCE\xFD\v \bI Aj!\r\0\v\v \xFD\0\xC0\xF4A"\xFD\f\xFDN!\x1B \xFD\0\xB0\xF4A"\xFD\f\xFDN! \xFD\0\xA0\xF4A"\xFD\f\xFDN!" A\xFD\xCD\xFD\f\xFDN! A\xFD\xCD\xFD\f\xFDN!! A\xFD\xCD\xFD\f\xFDN!\' A\xFD\xCD\xFD\f\xFDN!( A\xFD\xCD\xFD\f\xFDN!# A\xFD\xCD\xFD\f\xFDN!$ A\xFD\xCD\xFD\f\xFDN!% A\xFD\xCD\xFD\f\xFDN! A\xFD\xCD\xFD\f\xFDN!) AtA<q\xAD!G AvAt!\b@ A\xE0\xB2:j \0A0lj" " \bj)\0 G\x88\xA7AqA\x81\x84\x90\xC0\0lA\0 \0 J\x1B"A\xF0\xE1\xC3\x87\x07q"\x07Av \x07Avs s"A\xFFq\xAD\xFD"\xFD\xD5 \xFD\0\0\xFDQ ) A\bvAq\xAD\xFD"\xFD\xD5\xFDQ AvAq\xAD\xFD"\xFD\xD5\xFDQ % AvAq\xAD\xFD"\xFD\xD5\xFDQ\xFD\v\0 \xFD\xD5 \xFD\0\xFDQ $ \xFD\xD5\xFDQ # \xFD\xD5\xFDQ ( \xFD\xD5\xFDQ\xFD\v \x1B \xFD\xD5 \xFD\0 \xFDQ \' \xFD\xD5\xFDQ ! \xFD\xD5\xFDQ \xFD\xD5\xFDQ\xFD\v \0A\xCD\0I \0Aj!\0\r\0\v F\xA7jAj! A\xD0\0F Aj!E\r\0\vA\0! @ A\xE0\xB2:j A0lj!\0A\0!@ A\xC0\xF2\xC1\0j" Atj" \0 j\xFD\0\0"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v \xFD\r\0\x07\xFD\v\0 Aj"A0G\r\0\v A\xA0\xB48j A\xD1\0lj A\xD1\0\xFC\n\0\0 Aj" A\xCE\0G\r\0\v A\0A\xDCA\xD8\v(\0\0\0 A\xA0\xF5\xC1\0jA\0A\xE8\0A\xD8\v(\0\0\0 A\xA0\xF4\xC1\0jA\0A\xE8\0A\xD8\v(\0\0\0 A\xE0\xB2:jA\0A\xB0\xF3\0A\xD8\v(\0\0\0@ \xFD\0\0\xBD\xE58 \xFD\0\0\xAD\xE58 \xFD\0\0\x9D\xE58 \xFD\0\0\x8D\xE58 \xFD\0\0\xFD\xE48\xFDP\xFDP\xFDP\xFDP" \xFD\r\b \n\v\f\r\0\0\0\0\0\0\0\0\xFDP" \xFD\r\x07\0\0\0\0\0\0\0\0\0\0\0\0\xFDP" \xFD\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDP" \xFD\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFDP\xFD\0@A\xCE\0!@A\xD0\0 Ak"\0A A\xCF\0 knj" A\xD0\0N\x1B!\n A\xA0\xB48j A\xD1\0lj"Ak! A\xD1\0k!A\0!\x07 \0! AM@ -\0\0!A\0!@ A\xE0\xA58j \0j" -\0\0A\x88-\0\0A\x7FA\0 \0 j-\0\0\x1Bs" A\x7Fsq qs:\0\0 A\xFFq r! \0 \nI \0Aj!\0\r\0\v\f@ A\xE0\xA58j j"A\x88-\0\0A\x7FA\0 j-\0\0\x1Bs \x07A\x7Fsq"\v -\0\0q" -\0\0s:\0\0 A\bq\xAD!G Aq\xAD!H Aq\xAD!J Aq\xAD!IA\0!@ A\xA0\xB48j A\xD1\0lj"A\xD0\0j -\0P j"\b1\0QB\b\x86 \b1\0\0\x84 \b1\0\xA2B\x86\x84 \b1\0\xF3B\x86\x84 \b1\0\xC4B \x86\x84 \b1\0\x95B(\x86\x84 \b1\0\xE6B0\x86\x85 \b1\0\xB7B8\x86\x85"F I~ F J~\x85 F H~\x85 F G~\x85"FB\x88 FB\x88B\x8E\x9C\xB8\xF0\xE0\xC1\x83\x87\x83\x85 F\x85"F\xA7"\bAqs:\0\0 -\0\xA1 \bA\bvAqs:\0\xA1 -\0\xF2 \bAvAqs:\0\xF2 -\0\xC3 \bAvAqs:\0\xC3 -\0\x94 FB \x88\xA7Aqs:\0\x94 -\0\xE5 FB(\x88\xA7Aqs:\0\xE5 -\0\xB6 FB0\x88\xA7Aqs:\0\xB6 -\0\x87 FB8\x88\xA7Aqs:\0\x87 A\bj" \0I\r\0\v \x07 \vA\xFFqr!\x07 \nI Aj!\r\0\v \0!\f\v\0\v\0\v A jA\0A\xE0\xF2\0\xFC\v\0 A\xA0\xB48jA\0A\xD0\xE6\xFC\v\0 Aj"A\x80G\r\v\vA\0!\b@ A\xE0\xA58j \bAtj"-\0\x07!\0 -\0!\n -\0! -\0!\x07 -\0! -\0!\v -\0! -\0\0! A\xC0\xF2\xC1\0j!A\0!\r !@ A\0A\x88-\0\0"\f -\0\0s"Aq\x1B Aq ls Aq ls A\bq ls"A\xF0qAv Aqs AvAqs A\0 -\0 \fs"Aq\x1B Aq ls Aq ls A\bq ls"A\xF0qAvs Aqs AvAqs \vA\0 -\0 \fs"Aq\x1B Aq \vls Aq \vls A\bq \vls"A\xF0qAvs Aqs AvAqs A\0 -\0 \fs"Aq\x1B Aq ls Aq ls A\bq ls"A\xF0qAvs Aqs AvAqs \x07A\0 -\0 \fs"Aq\x1B Aq \x07ls Aq \x07ls A\bq \x07ls"A\xF0qAvs Aqs AvAqs A\0 -\0 \fs"Aq\x1B Aq ls Aq ls A\bq ls"A\xF0qAvs Aqs AvAqs \nA\0 -\0 \fs"Aq\x1B Aq \nls Aq \nls A\bq \nls"A\xF0qAvs Aqs AvAqs \0A\0 \f -\0\x07s"Aq\x1B Aq \0ls Aq \0ls A\bq \0ls"A\xF0qAvs Aqs AvAqs:\0\0 A\bj! Aj! \rAj"\rA\xCE\0G\r\0\v A\xE0\xB2:j \bA\xD6\0lj"\0 \xFD\0\xC0\xF2A A\xF0\x9A:j \bA\xCE\0lj"\xFD\0\0\xFDQ\xFD\v\0 \0 \xFD\0\xD0\xF2A \xFD\0\xFDQ\xFD\v \0 \xFD\0\xE0\xF2A \xFD\0 \xFDQ\xFD\v \0 \xFD\0\xF0\xF2A \xFD\00\xFDQ\xFD\v0 \0 -\0\x80\xF3A -\0@s:\0@ \0 -\0\x81\xF3A -\0As:\0A \0 -\0\x82\xF3A -\0Bs:\0B \0 -\0\x83\xF3A -\0Cs:\0C \0 -\0\x84\xF3A -\0Ds:\0D \0 -\0\x85\xF3A -\0Es:\0E \0 -\0\x86\xF3A -\0Fs:\0F \0 -\0\x87\xF3A -\0Gs:\0G \0 -\0\x88\xF3A -\0Hs:\0H \0 -\0\x89\xF3A -\0Is:\0I \0 -\0\x8A\xF3A -\0Js:\0J \0 -\0\x8B\xF3A -\0Ks:\0K \0 -\0\x8C\xF3A -\0Ls:\0L \0 -\0\x8D\xF3A -\0Ms:\0M \0 )\x007N \bAj"\bA\nG\r\0\vA\0!@ j A\xE0\xB2:j Atj"\0\xFD\0\0" \0\xFD\0"\xFD\r\x07 \v\r\x1BA\xFDk \xFD\r\0\b\n\f\xFDP\xFD\v\0\0 Aj"A\xA0G\r\0\v -\0\xA0\xB9: -\0\xA1\xB9:Atr:\0\xA0 -\0\xA2\xB9: -\0\xA3\xB9:Atr:\0\xA1 -\0\xA4\xB9: -\0\xA5\xB9:Atr:\0\xA2 -\0\xA6\xB9: -\0\xA7\xB9:Atr:\0\xA3 -\0\xA8\xB9: -\0\xA9\xB9:Atr:\0\xA4 -\0\xAA\xB9: -\0\xAB\xB9:Atr:\0\xA5 -\0\xAC\xB9: -\0\xAD\xB9:Atr:\0\xA6 -\0\xAE\xB9: -\0\xAF\xB9:Atr:\0\xA7 -\0\xB0\xB9: -\0\xB1\xB9:Atr:\0\xA8 -\0\xB2\xB9: -\0\xB3\xB9:Atr:\0\xA9 -\0\xB4\xB9: -\0\xB5\xB9:Atr:\0\xAA -\0\xB6\xB9: -\0\xB7\xB9:Atr:\0\xAB -\0\xB8\xB9: -\0\xB9\xB9:Atr:\0\xAC -\0\xBA\xB9: -\0\xBB\xB9:Atr:\0\xAD )\xC0\xAF:7\0\xAE \xFD\0\xC8\xAF:\xFD\v\0\xB6A\xF8A:\0\0A\0\v A\xA0\xA8:jA\0A\x9C\x07A\xD8\v(\0\0\0 A\xF0\x9A:jA\0A\xA8\rA\xD8\v(\0\0\0 A\xA0\xB48jA\0A\xD0\xE6A\xD8\v(\0\0\0 A\x90\xA48jA\0A\xCDA\xD8\v(\0\0\0 A\0A\xEEA\xD8\v(\0\0\0 A\xA0\xF4\0jA\0A\xE8\xAF7A\xD8\v(\0\0\0 A\xC0\xF2\xC1\0jA\0A\x8EA\xD8\v(\0\0\0 A\x80\xF3\0jA\0A\x91A\xD8\v(\0\0\0 A jA\0A\xE0\xF2\0A\xD8\v(\0\0\0 $\0\v\xA9\f\x7F~{#\0A\xC0\xAF9k"$\0A\xA0 \0)\07\0A\x90 \0\xFD\0\0\0\xFD\v\0A\xB8A:\0\0 A\x80\xE9\0jA\0A\xC8\xA2\xFC\v\0 \0\xFD\0\0\0! \0)\07\0 \xFD\v\0\0A\xB8A\0:\0\0 A\xD0\xA89jA\xC8 A\x07 A\xE0\xA89j!\0 A\xB8\xCE j!\r@ A\x90\xD6\0j Atj" \0 j\xFD\0\0"\xFD\f\xFDN" A\xFDm"\xFD\r\b \n\v\x1B\f\r\xFD\v \xFD\r\0\x07\xFD\v\0 Aj"A\xB0G\r\0\v -\0\x90\xAB9"\0Av:\0\xF1Z \0Aq:\0\xF0Z -\0\x91\xAB9"\0Av:\0\xF3Z \0Aq:\0\xF2Z -\0\x92\xAB9"\0Av:\0\xF5Z \0Aq:\0\xF4Z -\0\x93\xAB9"\0Av:\0\xF7Z \0Aq:\0\xF6Z -\0\x94\xAB9"\0Av:\0\xF9Z \0Aq:\0\xF8Z -\0\x95\xAB9"\0Av:\0\xFBZ \0Aq:\0\xFAZ -\0\x96\xAB9"\0Av:\0\xFDZ \0Aq:\0\xFCZ -\0\x97\xAB9"\0Av:\0\xFFZ \0Aq:\0\xFEZ A\xD0\x8Bj A\xD0\xA89j B\x007@ \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v0 \xFD\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\v A\xF9!@ A\xD0\x8Bj" Ak"A\'lj"\0)\07\0 \0\xFD\0\0\xFD\v \0\xFD\0\0\0"\xFD\v\0 A(l j"\0 \xFD\v\0 \0 ) 7 \0 \xFD\0\xFD\v AIE@ Ak"A\'l j"\0)\07\0 \0\xFD\0\0\xFD\v \0\xFD\0\0\0"\xFD\v\0 A(l j"\0 \xFD\v\0 \0 ) 7 \0 \xFD\0\xFD\v\f\v\vA\0!\0@ \0At!\b \0!@ A\x90\xD6\0j Atj! A\xD0\x8Bj A(lj!\nA\0!@ \r \bjA(lj!\v j-\0\0!\fA\0!@ \v At"\x07j" )\0 \x07 \nj)\0"B\0A\x88-\0\0 \fs"\x07Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \x07\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v Aj"A\bG\r\0\v Aj! Aj"A\xCE\0G\r\0\v \0Aj"\0A\xCE\0G\r\0\vA\0!\0@ \0At! A\x90\xD6\0j \0j!\bA\0!@ \b At" j-\0\0!\nA\0!@ \r jA(lj!\v A\x80\xE9\0j jA(lj!\fA\0!@ \f At"\x07j" )\0 \x07 \vj)\0"B\0A\x88-\0\0 \ns"\x07Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \x07\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 Aj"AG\r\0\v Aj"A\bG\r\0\v Aj"A\xCE\0G\r\0\v \0Aj"\0A\bG\r\0\v \xFD\0\xD0\xA89\xFD\v\0\0 A\xE8\xFA\0j!\bA\0!\0 A\x80\xE9\0jk! A\0!@ A(l"j" \b \0A(ljO\x7FA A\x80\xE9\0j \0A\xE8lj \0AXljA\xC0jO\v!\n \0At!\v \0A\x98}lj jAI!\f \0!@ A(lj! A\x80\xE9\0j \vjA(lj!@ \fE@ \xFD\0\0\xFD\v\0 \xFD\0\xFD\v\f\v )\x007\0 )\b7\b )7 )7\v ) 7 @ \0 F\r\0 A\x80\xE9\0j At \0jA(lj! \n@ \xFD\0\0 \xFD\0\0\xFDQ\xFD\v\0 \xFD\0 \xFD\0\xFDQ\xFD\v ) ) \x857 \f\v )\0 )\0\x857\0 )\b )\b\x857\b ) )\x857 ) )\x857 ) ) \x857 \v Aj! Aj"A\bG\r\0\v \0Aj"\0A\bG\r\0\v Aj!\0A\0!@ \0 A\'lj" A(lj")\07\0 \xFD\0\0\xFD\v\0 \xFD\0\0\0\xFD\v\0\0 \0 Ar"A\'lj" A(lj")\07\0 \xFD\0\0\xFD\v\0 \xFD\0\0\0\xFD\v\0\0 Aj"A$G\r\0\v A\x90\xD6\0jA\0A\xEEA\xD8\v(\0\0\0 \rA\0A\x80\xC3A\xD8\v(\0\0\0 A\x80\xE9\0jA\0A\xC8\xA2A\xD8\v(\0\0\0 A\xC0\xAF9j$\0A\0\v\0A\xC6A\0A\xF8-\0\0\x1B\v\b\0A\xF4(\0\v\b\0A\xF0(\0\v\b\0A\xEC(\0\v\0\v\v\xBF\0A\x80\b\v\xCA\0\0\0\0\0\0\0\x82\x80\0\0\0\0\0\0\x8A\x80\0\0\0\0\0\x80\0\x80\0\x80\0\0\0\x80\x8B\x80\0\0\0\0\0\0\0\0\x80\0\0\0\0\x81\x80\0\x80\0\0\0\x80 \x80\0\0\0\0\0\x80\x8A\0\0\0\0\0\0\0\x88\0\0\0\0\0\0\0 \x80\0\x80\0\0\0\0\n\0\0\x80\0\0\0\0\x8B\x80\0\x80\0\0\0\0\x8B\0\0\0\0\0\0\x80\x89\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\0\x80\n\x80\0\0\0\0\0\0\n\0\0\x80\0\0\0\x80\x81\x80\0\x80\0\0\0\x80\x80\x80\0\0\0\0\0\x80\0\0\x80\0\0\0\0\b\x80\0\x80\0\0\0\x80\b @\x80\x1B6\0A\xD4 \v9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\xB0\n\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\xD4\v\v@ @\0');
|
|
990
|
+
}
|
|
991
|
+
function getBinarySync(file) {
|
|
992
|
+
return file;
|
|
993
|
+
}
|
|
994
|
+
async function getWasmBinary(binaryFile) {
|
|
995
|
+
return getBinarySync(binaryFile);
|
|
996
|
+
}
|
|
997
|
+
async function instantiateArrayBuffer(binaryFile, imports) {
|
|
998
|
+
try {
|
|
999
|
+
var binary = await getWasmBinary(binaryFile);
|
|
1000
|
+
var instance = await WebAssembly.instantiate(binary, imports);
|
|
1001
|
+
return instance;
|
|
1002
|
+
} catch (reason) {
|
|
1003
|
+
err(`failed to asynchronously prepare wasm: ${reason}`);
|
|
1004
|
+
abort(reason);
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
async function instantiateAsync(binary, binaryFile, imports) {
|
|
1008
|
+
return instantiateArrayBuffer(binaryFile, imports);
|
|
1009
|
+
}
|
|
1010
|
+
function getWasmImports() {
|
|
1011
|
+
var imports = { a: wasmImports };
|
|
1012
|
+
return imports;
|
|
1013
|
+
}
|
|
1014
|
+
async function createWasm() {
|
|
1015
|
+
function receiveInstance(instance, module2) {
|
|
1016
|
+
wasmExports = instance.exports;
|
|
1017
|
+
assignWasmExports(wasmExports);
|
|
1018
|
+
updateMemoryViews();
|
|
1019
|
+
return wasmExports;
|
|
1020
|
+
}
|
|
1021
|
+
function receiveInstantiationResult(result2) {
|
|
1022
|
+
return receiveInstance(result2["instance"]);
|
|
1023
|
+
}
|
|
1024
|
+
var info = getWasmImports();
|
|
1025
|
+
if (Module["instantiateWasm"]) {
|
|
1026
|
+
return new Promise((resolve, reject) => {
|
|
1027
|
+
Module["instantiateWasm"](info, (inst, mod2) => {
|
|
1028
|
+
resolve(receiveInstance(inst, mod2));
|
|
1029
|
+
});
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
wasmBinaryFile ??= findWasmBinary();
|
|
1033
|
+
var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
|
|
1034
|
+
var exports2 = receiveInstantiationResult(result);
|
|
1035
|
+
return exports2;
|
|
1036
|
+
}
|
|
1037
|
+
class ExitStatus {
|
|
1038
|
+
name = "ExitStatus";
|
|
1039
|
+
constructor(status) {
|
|
1040
|
+
this.message = `Program terminated with exit(${status})`;
|
|
1041
|
+
this.status = status;
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
var HEAP16;
|
|
1045
|
+
var HEAP32;
|
|
1046
|
+
var HEAP64;
|
|
1047
|
+
var HEAP8;
|
|
1048
|
+
var HEAPF32;
|
|
1049
|
+
var HEAPF64;
|
|
1050
|
+
var HEAPU16;
|
|
1051
|
+
var HEAPU32;
|
|
1052
|
+
var HEAPU64;
|
|
1053
|
+
var HEAPU8;
|
|
1054
|
+
var callRuntimeCallbacks = (callbacks) => {
|
|
1055
|
+
while (callbacks.length > 0) {
|
|
1056
|
+
callbacks.shift()(Module);
|
|
1057
|
+
}
|
|
1058
|
+
};
|
|
1059
|
+
var onPostRuns = [];
|
|
1060
|
+
var addOnPostRun = (cb) => onPostRuns.push(cb);
|
|
1061
|
+
var onPreRuns = [];
|
|
1062
|
+
var addOnPreRun = (cb) => onPreRuns.push(cb);
|
|
1063
|
+
var noExitRuntime = true;
|
|
1064
|
+
var __abort_js = () => abort("");
|
|
1065
|
+
var runtimeKeepaliveCounter = 0;
|
|
1066
|
+
var __emscripten_runtime_keepalive_clear = () => {
|
|
1067
|
+
noExitRuntime = false;
|
|
1068
|
+
runtimeKeepaliveCounter = 0;
|
|
1069
|
+
};
|
|
1070
|
+
var timers = {};
|
|
1071
|
+
var handleException = (e) => {
|
|
1072
|
+
if (e instanceof ExitStatus || e == "unwind") {
|
|
1073
|
+
return EXITSTATUS;
|
|
1074
|
+
}
|
|
1075
|
+
quit_(1, e);
|
|
1076
|
+
};
|
|
1077
|
+
var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
|
|
1078
|
+
var _proc_exit = (code) => {
|
|
1079
|
+
EXITSTATUS = code;
|
|
1080
|
+
if (!keepRuntimeAlive()) {
|
|
1081
|
+
Module["onExit"]?.(code);
|
|
1082
|
+
ABORT = true;
|
|
1083
|
+
}
|
|
1084
|
+
quit_(code, new ExitStatus(code));
|
|
1085
|
+
};
|
|
1086
|
+
var exitJS = (status, implicit) => {
|
|
1087
|
+
EXITSTATUS = status;
|
|
1088
|
+
_proc_exit(status);
|
|
1089
|
+
};
|
|
1090
|
+
var _exit = exitJS;
|
|
1091
|
+
var maybeExit = () => {
|
|
1092
|
+
if (!keepRuntimeAlive()) {
|
|
1093
|
+
try {
|
|
1094
|
+
_exit(EXITSTATUS);
|
|
1095
|
+
} catch (e) {
|
|
1096
|
+
handleException(e);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
};
|
|
1100
|
+
var callUserCallback = (func) => {
|
|
1101
|
+
if (ABORT) {
|
|
1102
|
+
return;
|
|
1103
|
+
}
|
|
1104
|
+
try {
|
|
1105
|
+
return func();
|
|
1106
|
+
} catch (e) {
|
|
1107
|
+
handleException(e);
|
|
1108
|
+
} finally {
|
|
1109
|
+
maybeExit();
|
|
1110
|
+
}
|
|
1111
|
+
};
|
|
1112
|
+
var _emscripten_get_now = () => performance.now();
|
|
1113
|
+
var __setitimer_js = (which, timeout_ms) => {
|
|
1114
|
+
if (timers[which]) {
|
|
1115
|
+
clearTimeout(timers[which].id);
|
|
1116
|
+
delete timers[which];
|
|
1117
|
+
}
|
|
1118
|
+
if (!timeout_ms) return 0;
|
|
1119
|
+
var id = setTimeout(() => {
|
|
1120
|
+
delete timers[which];
|
|
1121
|
+
callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
|
|
1122
|
+
}, timeout_ms);
|
|
1123
|
+
timers[which] = { id, timeout_ms };
|
|
1124
|
+
return 0;
|
|
1125
|
+
};
|
|
1126
|
+
var readEmAsmArgsArray = [];
|
|
1127
|
+
var readEmAsmArgs = (sigPtr, buf) => {
|
|
1128
|
+
readEmAsmArgsArray.length = 0;
|
|
1129
|
+
var ch;
|
|
1130
|
+
while (ch = HEAPU8[sigPtr++]) {
|
|
1131
|
+
var wide = ch != 105;
|
|
1132
|
+
wide &= ch != 112;
|
|
1133
|
+
buf += wide && buf % 8 ? 4 : 0;
|
|
1134
|
+
readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >> 2] : ch == 106 ? HEAP64[buf >> 3] : ch == 105 ? HEAP32[buf >> 2] : HEAPF64[buf >> 3]);
|
|
1135
|
+
buf += wide ? 8 : 4;
|
|
1136
|
+
}
|
|
1137
|
+
return readEmAsmArgsArray;
|
|
1138
|
+
};
|
|
1139
|
+
var runEmAsmFunction = (code, sigPtr, argbuf) => {
|
|
1140
|
+
var args = readEmAsmArgs(sigPtr, argbuf);
|
|
1141
|
+
return ASM_CONSTS[code](...args);
|
|
1142
|
+
};
|
|
1143
|
+
var _emscripten_asm_const_int = (code, sigPtr, argbuf) => runEmAsmFunction(code, sigPtr, argbuf);
|
|
1144
|
+
var abortOnCannotGrowMemory = (requestedSize) => {
|
|
1145
|
+
abort("OOM");
|
|
1146
|
+
};
|
|
1147
|
+
var _emscripten_resize_heap = (requestedSize) => {
|
|
1148
|
+
var oldSize = HEAPU8.length;
|
|
1149
|
+
requestedSize >>>= 0;
|
|
1150
|
+
abortOnCannotGrowMemory(requestedSize);
|
|
1151
|
+
};
|
|
1152
|
+
{
|
|
1153
|
+
if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
|
|
1154
|
+
if (Module["print"]) out = Module["print"];
|
|
1155
|
+
if (Module["printErr"]) err = Module["printErr"];
|
|
1156
|
+
if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
|
|
1157
|
+
if (Module["arguments"]) arguments_ = Module["arguments"];
|
|
1158
|
+
if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
|
|
1159
|
+
if (Module["preInit"]) {
|
|
1160
|
+
if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
|
|
1161
|
+
while (Module["preInit"].length > 0) {
|
|
1162
|
+
Module["preInit"].shift()();
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
var ASM_CONSTS = { 1500: ($0, $1) => {
|
|
1167
|
+
try {
|
|
1168
|
+
var arr = new Uint8Array($1);
|
|
1169
|
+
globalThis.crypto.getRandomValues(arr);
|
|
1170
|
+
Module.HEAPU8.set(arr, $0);
|
|
1171
|
+
return 0;
|
|
1172
|
+
} catch (e) {
|
|
1173
|
+
return -1;
|
|
1174
|
+
}
|
|
1175
|
+
} };
|
|
1176
|
+
var _mayo_init_buffers, _malloc, _get_msg_buf, _get_sig_buf, _get_sk_buf, _get_pk_buf, _get_sig_len, _keypair_from_seed, _sign, _verify, _free, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;
|
|
1177
|
+
function assignWasmExports(wasmExports2) {
|
|
1178
|
+
_mayo_init_buffers = Module["_mayo_init_buffers"] = wasmExports2["j"];
|
|
1179
|
+
_malloc = Module["_malloc"] = wasmExports2["k"];
|
|
1180
|
+
_get_msg_buf = Module["_get_msg_buf"] = wasmExports2["l"];
|
|
1181
|
+
_get_sig_buf = Module["_get_sig_buf"] = wasmExports2["m"];
|
|
1182
|
+
_get_sk_buf = Module["_get_sk_buf"] = wasmExports2["n"];
|
|
1183
|
+
_get_pk_buf = Module["_get_pk_buf"] = wasmExports2["o"];
|
|
1184
|
+
_get_sig_len = Module["_get_sig_len"] = wasmExports2["p"];
|
|
1185
|
+
_keypair_from_seed = Module["_keypair_from_seed"] = wasmExports2["q"];
|
|
1186
|
+
_sign = Module["_sign"] = wasmExports2["r"];
|
|
1187
|
+
_verify = Module["_verify"] = wasmExports2["s"];
|
|
1188
|
+
_free = Module["_free"] = wasmExports2["t"];
|
|
1189
|
+
__emscripten_timeout = wasmExports2["u"];
|
|
1190
|
+
memory = wasmMemory = wasmExports2["h"];
|
|
1191
|
+
__indirect_function_table = wasmExports2["__indirect_function_table"];
|
|
1192
|
+
}
|
|
1193
|
+
var wasmImports = { d: __abort_js, c: __emscripten_runtime_keepalive_clear, e: __setitimer_js, g: _emscripten_asm_const_int, f: _emscripten_resize_heap, a: _exit, b: _proc_exit };
|
|
1194
|
+
function run() {
|
|
1195
|
+
preRun();
|
|
1196
|
+
function doRun() {
|
|
1197
|
+
Module["calledRun"] = true;
|
|
1198
|
+
if (ABORT) return;
|
|
1199
|
+
initRuntime();
|
|
1200
|
+
readyPromiseResolve?.(Module);
|
|
1201
|
+
Module["onRuntimeInitialized"]?.();
|
|
1202
|
+
postRun();
|
|
1203
|
+
}
|
|
1204
|
+
if (Module["setStatus"]) {
|
|
1205
|
+
Module["setStatus"]("Running...");
|
|
1206
|
+
setTimeout(() => {
|
|
1207
|
+
setTimeout(() => Module["setStatus"](""), 1);
|
|
1208
|
+
doRun();
|
|
1209
|
+
}, 1);
|
|
1210
|
+
} else {
|
|
1211
|
+
doRun();
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
var wasmExports;
|
|
1215
|
+
wasmExports = await createWasm();
|
|
1216
|
+
run();
|
|
1217
|
+
if (runtimeInitialized) {
|
|
1218
|
+
moduleRtn = Module;
|
|
1219
|
+
} else {
|
|
1220
|
+
moduleRtn = new Promise((resolve, reject) => {
|
|
1221
|
+
readyPromiseResolve = resolve;
|
|
1222
|
+
readyPromiseReject = reject;
|
|
1223
|
+
});
|
|
1224
|
+
}
|
|
1225
|
+
;
|
|
1226
|
+
return moduleRtn;
|
|
1227
|
+
};
|
|
1228
|
+
})();
|
|
1229
|
+
if (typeof exports === "object" && typeof module === "object") {
|
|
1230
|
+
module.exports = Mayo1Module2;
|
|
1231
|
+
module.exports.default = Mayo1Module2;
|
|
1232
|
+
} else if (typeof define === "function" && define["amd"]) define([], () => Mayo1Module2);
|
|
1233
|
+
}
|
|
1234
|
+
});
|
|
1235
|
+
var require_mayo2 = __commonJS({
|
|
1236
|
+
"dist/mayo2.cjs"(exports, module) {
|
|
1237
|
+
var Mayo2Module2 = (() => {
|
|
1238
|
+
var _scriptName = globalThis.document?.currentScript?.src;
|
|
1239
|
+
return async function(moduleArg = {}) {
|
|
1240
|
+
var moduleRtn;
|
|
1241
|
+
var Module = moduleArg;
|
|
1242
|
+
var ENVIRONMENT_IS_WEB = !!globalThis.window;
|
|
1243
|
+
var ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;
|
|
1244
|
+
var ENVIRONMENT_IS_NODE = globalThis.process?.versions?.node && globalThis.process?.type != "renderer";
|
|
1245
|
+
var arguments_ = [];
|
|
1246
|
+
var thisProgram = "./this.program";
|
|
1247
|
+
var quit_ = (status, toThrow) => {
|
|
1248
|
+
throw toThrow;
|
|
1249
|
+
};
|
|
1250
|
+
if (typeof __filename != "undefined") {
|
|
1251
|
+
_scriptName = __filename;
|
|
1252
|
+
} else if (ENVIRONMENT_IS_WORKER) {
|
|
1253
|
+
_scriptName = self.location.href;
|
|
1254
|
+
}
|
|
1255
|
+
var scriptDirectory = "";
|
|
1256
|
+
var readAsync, readBinary;
|
|
1257
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
1258
|
+
var fs = __require2("node:fs");
|
|
1259
|
+
scriptDirectory = __dirname + "/";
|
|
1260
|
+
readBinary = (filename) => {
|
|
1261
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
1262
|
+
var ret = fs.readFileSync(filename);
|
|
1263
|
+
return ret;
|
|
1264
|
+
};
|
|
1265
|
+
readAsync = async (filename, binary = true) => {
|
|
1266
|
+
filename = isFileURI(filename) ? new URL(filename) : filename;
|
|
1267
|
+
var ret = fs.readFileSync(filename, binary ? void 0 : "utf8");
|
|
1268
|
+
return ret;
|
|
1269
|
+
};
|
|
1270
|
+
if (process.argv.length > 1) {
|
|
1271
|
+
thisProgram = process.argv[1].replace(/\\/g, "/");
|
|
1272
|
+
}
|
|
1273
|
+
arguments_ = process.argv.slice(2);
|
|
1274
|
+
quit_ = (status, toThrow) => {
|
|
1275
|
+
process.exitCode = status;
|
|
1276
|
+
throw toThrow;
|
|
1277
|
+
};
|
|
1278
|
+
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
1279
|
+
try {
|
|
1280
|
+
scriptDirectory = new URL(".", _scriptName).href;
|
|
1281
|
+
} catch {
|
|
1282
|
+
}
|
|
1283
|
+
{
|
|
1284
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
1285
|
+
readBinary = (url) => {
|
|
1286
|
+
var xhr = new XMLHttpRequest();
|
|
1287
|
+
xhr.open("GET", url, false);
|
|
1288
|
+
xhr.responseType = "arraybuffer";
|
|
1289
|
+
xhr.send(null);
|
|
1290
|
+
return new Uint8Array(xhr.response);
|
|
1291
|
+
};
|
|
1292
|
+
}
|
|
1293
|
+
readAsync = async (url) => {
|
|
1294
|
+
if (isFileURI(url)) {
|
|
1295
|
+
return new Promise((resolve, reject) => {
|
|
1296
|
+
var xhr = new XMLHttpRequest();
|
|
1297
|
+
xhr.open("GET", url, true);
|
|
1298
|
+
xhr.responseType = "arraybuffer";
|
|
1299
|
+
xhr.onload = () => {
|
|
1300
|
+
if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
|
|
1301
|
+
resolve(xhr.response);
|
|
1302
|
+
return;
|
|
1303
|
+
}
|
|
1304
|
+
reject(xhr.status);
|
|
1305
|
+
};
|
|
1306
|
+
xhr.onerror = reject;
|
|
1307
|
+
xhr.send(null);
|
|
1308
|
+
});
|
|
1309
|
+
}
|
|
1310
|
+
var response = await fetch(url, { credentials: "same-origin" });
|
|
1311
|
+
if (response.ok) {
|
|
1312
|
+
return response.arrayBuffer();
|
|
1313
|
+
}
|
|
1314
|
+
throw new Error(response.status + " : " + response.url);
|
|
1315
|
+
};
|
|
1316
|
+
}
|
|
1317
|
+
} else {
|
|
1318
|
+
}
|
|
1319
|
+
var out = console.log.bind(console);
|
|
1320
|
+
var err = console.error.bind(console);
|
|
1321
|
+
var wasmBinary;
|
|
1322
|
+
var ABORT = false;
|
|
1323
|
+
var EXITSTATUS;
|
|
1324
|
+
var isFileURI = (filename) => filename.startsWith("file://");
|
|
1325
|
+
function binaryDecode(bin) {
|
|
1326
|
+
for (var i = 0, l = bin.length, o = new Uint8Array(l), c; i < l; ++i) {
|
|
1327
|
+
c = bin.charCodeAt(i);
|
|
1328
|
+
o[i] = ~c >> 8 & c;
|
|
1329
|
+
}
|
|
1330
|
+
return o;
|
|
1331
|
+
}
|
|
1332
|
+
var readyPromiseResolve, readyPromiseReject;
|
|
1333
|
+
var runtimeInitialized = false;
|
|
1334
|
+
function updateMemoryViews() {
|
|
1335
|
+
var b = wasmMemory.buffer;
|
|
1336
|
+
HEAP8 = new Int8Array(b);
|
|
1337
|
+
HEAP16 = new Int16Array(b);
|
|
1338
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
|
|
1339
|
+
HEAPU16 = new Uint16Array(b);
|
|
1340
|
+
HEAP32 = new Int32Array(b);
|
|
1341
|
+
HEAPU32 = new Uint32Array(b);
|
|
1342
|
+
HEAPF32 = new Float32Array(b);
|
|
1343
|
+
HEAPF64 = new Float64Array(b);
|
|
1344
|
+
HEAP64 = new BigInt64Array(b);
|
|
1345
|
+
HEAPU64 = new BigUint64Array(b);
|
|
1346
|
+
}
|
|
1347
|
+
function preRun() {
|
|
1348
|
+
if (Module["preRun"]) {
|
|
1349
|
+
if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
|
|
1350
|
+
while (Module["preRun"].length) {
|
|
1351
|
+
addOnPreRun(Module["preRun"].shift());
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1354
|
+
callRuntimeCallbacks(onPreRuns);
|
|
1355
|
+
}
|
|
1356
|
+
function initRuntime() {
|
|
1357
|
+
runtimeInitialized = true;
|
|
1358
|
+
wasmExports["i"]();
|
|
1359
|
+
}
|
|
1360
|
+
function postRun() {
|
|
1361
|
+
if (Module["postRun"]) {
|
|
1362
|
+
if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
|
|
1363
|
+
while (Module["postRun"].length) {
|
|
1364
|
+
addOnPostRun(Module["postRun"].shift());
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1367
|
+
callRuntimeCallbacks(onPostRuns);
|
|
1368
|
+
}
|
|
1369
|
+
function abort(what) {
|
|
1370
|
+
Module["onAbort"]?.(what);
|
|
1371
|
+
what = "Aborted(" + what + ")";
|
|
1372
|
+
err(what);
|
|
1373
|
+
ABORT = true;
|
|
1374
|
+
what += ". Build with -sASSERTIONS for more info.";
|
|
1375
|
+
var e = new WebAssembly.RuntimeError(what);
|
|
1376
|
+
readyPromiseReject?.(e);
|
|
1377
|
+
throw e;
|
|
1378
|
+
}
|
|
1379
|
+
var wasmBinaryFile;
|
|
1380
|
+
function findWasmBinary() {
|
|
1381
|
+
return binaryDecode('\0asm\0\0\05\n`\x7F\x7F\x7F\x7F`\x7F\0`\x7F\x7F`\0\x7F`\0\0`\x7F\x7F\0`\x7F\x7F\x7F\0`\x7F|\x7F`\x7F\x7F\x7F\x7F\0`\x7F|\0+\x07aa\0ab\0ac\0ad\0ae\0\x07af\0ag\0\0\x1B\b\0 \0p\x80\x80 \x7FA\xC0\x92\x80\v\x079h\0i\0 j\0k\0 l\0m\0n\0o\0p\0q\0\x1Br\0s\0t\0\fu\0 \0A\v\f\n\xF8\xC6\xCF~ \0 \0)\xC0 \0)\xA0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC0 \0 \0)\xC8 \0)\xA8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC8 \0 \0)\xD0 \0)\xB0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xD0 \0 \0)\xD8 \0)\xB8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xD8 \0 \0)\x80 \0)\xE0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x80 \0 \0)\x88 \0)\xE8"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x88 \0 \0)\x90 \0)\xF0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x90 \0 \0)\x98 \0)\xF8"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x98 \0 \0)\xE0 \0)\xC0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xE0 \0 \0)\xE8 \0)\xC8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xE8 \0 \0)\xF0 \0)\xD0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xF0 \0 \0)\xF8 \0)\xD8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xF8 \0 \0)\xC0 \0)\x80"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xC0 \0 \0)\xC8 \0)\x88"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xC8 \0 \0)\xD0 \0)\x90"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xD0 \0 \0)\xD8 \0)\x98"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\xD8 \0 \0)\xC0 \0)\xE0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC0 \0 \0)\xC8 \0)\xE8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xC8 \0 \0)\xD0 \0)\xF0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xD0 \0 \0)\xD8 \0)\xF8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xD8 \0 \0)` \0)\xC0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857` \0 \0)h \0)\xC8"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857h \0 \0)p \0)\xD0"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857p \0 \0)x \0)\xD8"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857x \0 \0)\xE0 \0)\xC0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xE0 \0 \0)\xE8 \0)\xC8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xE8 \0 \0)\xF0 \0)\xD0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xF0 \0 \0)\xF8 \0)\xD8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xF8 \0 \0)\x80 \0)`"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x80 \0 \0)\x88 \0)h"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x88 \0 \0)\x90 \0)p"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x90 \0 \0)\x98 \0)x"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x98 \0 \0)\xA0 \0)\xE0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA0 \0 \0)\xA8 \0)\xE8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA8 \0 \0)\xB0 \0)\xF0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB0 \0 \0)\xB8 \0)\xF8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB8 \0 \0)\x80 \0)\x80"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x80 \0 \0)\x88 \0)\x88"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x88 \0 \0)\x90 \0)\x90"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x90 \0 \0)\x98 \0)\x98"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857\x98 \0 \0)\xA0 \0)\xA0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA0 \0 \0)\xA8 \0)\xA8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xA8 \0 \0)\xB0 \0)\xB0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB0 \0 \0)\xB8 \0)\xB8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x857\xB8 \0 \0)@ \0)\x80"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857@ \0 \0)H \0)\x88"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857H \0 \0)P \0)\x90"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857P \0 \0)X \0)\x98"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857X \0 \0) \0)\xA0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x85"7 \0 \0)( \0)\xA8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x85"7( \0 \0)0 \0)\xB0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x85"70 \0 \0)8 \0)\xB8"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B ~\x85 B\x88B\xF7\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7\0\x83\x85"78 \0 \0)@"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x85"7 \0 \0)H"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x857( \0 \0)P"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83 \x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x8570 \0 \0)X"B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83 \x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~\x8578 7\0 \0)(7\b \0)07 \0)87\v\x9D\n\x07\x7F#\0A\xD0k"$\0@A\xC8 "\x07E\r\0 \x07Ak-\0\0AqE\r\0 \x07A\0A\xC8\v \x07"@ A\x88O@@ )\0 )\0\0\x857\0 )\b )\0\b\x857\b ) )\0\x857 ) )\0\x857 ) )\0 \x857 )( )\0(\x857( )0 )\x000\x8570 )8 )\x008\x8578 )@ )\0@\x857@ )H )\0H\x857H )P )\0P\x857P )X )\0X\x857X )` )\0`\x857` )h )\0h\x857h )p )\0p\x857p )x )\0x\x857x )\x80 )\0\x80\x857\x80 A\x88j! A\x88k"A\x87K\r\0\v\v A\x88n!\x07 A\0A\x88\xFC\v\0@ E\r\0 Aq!\n AO@ A\xFCq! @ j j-\0\0:\0\0 Ar"\bj \bj-\0\0:\0\0 Ar"\bj \bj-\0\0:\0\0 Ar"\bj \bj-\0\0:\0\0 Aj" G\r\0\v \nE\r\vA\0! @ j j-\0\0:\0\0 Aj! Aj" \nG\r\0\v\v jA:\0\0 -\0\x87A\x80r:\0\x87 )\0 )\0\x857\0 )\b )\b\x857\b ) )\x857 ) )\x857 ) ) \x857 )( )(\x857( )0 )0\x8570 )8 )8\x8578 )@ )@\x857@ )H )H\x857H )P )P\x857P )X )X\x857X )` )`\x857` )h )h\x857h )p )p\x857p )x )x\x857x )\x80 )\x80\x857\x80 A\x88O@ \0! \x07!@ )\x007\0\0 )\b7\0\b )7\0 )7\0 ) 7\0 )(7\0( )07\x000 )87\x008 )@7\0@ )H7\0H )P7\0P )X7\0X )`7\0` )h7\0h )p7\0p )x7\0x )\x807\0\x80 A\x88j! Ak"\r\0\v\v@ \x07A\x88l"F\r\0 )\x007\0 )\b7\b )7 )7 ) 7 )(7( )070 )878 )@7@ )H7H )P7P )X7X )`7` )h7h )p7p )x7x )\x807\x80 k"E\r\0 \0 j \xFC\n\0\0\v \f A\xD0j$\0\vA\xEF\0\0\0\v\xC1\'\v\x7F#\0Ak"\n$\0@@@@@@@@@@ \0A\xF4M@A\xF4\f(\0"A \0A\vjA\xF8q \0A\vI\x1B"Av"\0v"Aq@@ A\x7FsAq \0j"At"A\x9C\rj"\0 (\xA4\r"(\b"F@A\xF4\f A~ wq6\0\f\v \x006\f \0 6\b\v A\bj!\0 Ar6 j" (Ar6\f\v\v A\xFC\f(\0"\bM\r @@A \0t"A\0 kr \0tqh"At"A\x9C\rj" (\xA4\r"\0(\b"F@A\xF4\f A~ wq"6\0\f\v 6\f 6\b\v \0 Ar6 \0 j"\x07 k"Ar6 \0 j 6\0 \b@ \bAxqA\x9C\rj!A\x88\r(\0!\x7F A \bAvt"qE@A\xF4\f r6\0 \f\v (\b\v! 6\b 6\f 6\f 6\b\v \0A\bj!\0A\x88\r \x076\0A\xFC\f 6\0\f\v\vA\xF8\f(\0"\vE\r \vhAt(\xA4"(Axq k! !@@ ("\0E@ ("\0E\r\v \0(Axq k" I"\x1B! \0 \x1B! \0!\f\v\v (! (\f"\0G@ (\b" \x006\f \0 6\b\f\n\v ("\x7F Aj ("E\r Aj\v!@ !\x07 "\0Aj! \0("\r\0 \0Aj! \0("\r\0\v \x07A\x006\0\f \vA\x7F! \0A\xBF\x7FK\r\0 \0A\vj"Axq!A\xF8\f(\0"\x07E\r\0A!\bA\0 k! \0A\xF4\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtkA>j!\b\v@@@ \bAt(\xA4"E@A\0!\0\f\vA\0!\0 A \bAvkA\0 \bAG\x1Bt!@@ (Axq k" O\r\0 ! "\r\0A\0! !\0\f\v \0 (" AvAqj("F\x1B \0 \x1B!\0 At! \r\0\v\v \0 rE@A\0!A \bt"\0A\0 \0kr \x07q"\0E\r \0hAt(\xA4!\0\v \0E\r\v@ \0(Axq k" I! \x1B! \0 \x1B! \0("\x7F \0(\v"\0\r\0\v\v E\r\0 A\xFC\f(\0 kO\r\0 (!\b (\f"\0G@ (\b" \x006\f \0 6\b\f\b\v ("\x7F Aj ("E\r Aj\v!@ ! "\0Aj! \0("\r\0 \0Aj! \0("\r\0\v A\x006\0\f\x07\v A\xFC\f(\0"M@A\x88\r(\0!\0@ k"AO@ \0 j" Ar6 \0 j 6\0 \0 Ar6\f\v \0 Ar6 \0 j" (Ar6A\0!A\0!\vA\xFC\f 6\0A\x88\r 6\0 \0A\bj!\0\f \v A\x80\r(\0"I@A\x80\r k"6\0A\x8C\rA\x8C\r(\0"\0 j"6\0 Ar6 \0 Ar6 \0A\bj!\0\f \vA\0!\0 A/j"\x7FA\xCC(\0@A\xD4(\0\f\vA\xD8B\x7F7\0A\xD0B\x80\xA0\x80\x80\x80\x807\0A\xCC \nA\fjApqA\xD8\xAA\xD5\xAAs6\0A\xE0A\x006\0A\xB0A\x006\0A\x80 \v"j"A\0 k"\x07q" M\r\bA\xAC(\0"@A\xA4(\0"\b j" \bM\r I\r \v@A\xB0-\0\0AqE@@@@@A\x8C\r(\0"@A\xB4!\0@ \0(\0"\b M@ \b \0(jI\r\v \0(\b"\0\r\0\v\vA\0\n"A\x7FF\r !A\xD0(\0"\0Ak" q@ k jA\0 \0kqj!\v M\rA\xAC(\0"\0@A\xA4(\0" j"\x07 M\r \0 \x07I\r\v \n"\0 G\r\f\v k \x07q"\n" \0(\0 \0(jF\r !\0\v \0A\x7FF\r A0j M@ \0!\f\vA\xD4(\0" kjA\0 kq"\nA\x7FF\r j! \0!\f\v A\x7FG\r\vA\xB0A\xB0(\0Ar6\0\v \n!A\0\n!\0 A\x7FF\r \0A\x7FF\r \0 M\r \0 k" A(jM\r\vA\xA4A\xA4(\0 j"\x006\0A\xA8(\0 \0I@A\xA8 \x006\0\v@A\x8C\r(\0"@A\xB4!\0@ \0(\0" \0("jF\r \0(\b"\0\r\0\v\f\vA\x84\r(\0"\0A\0 \0 M\x1BE@A\x84\r 6\0\vA\0!\0A\xB8 6\0A\xB4 6\0A\x94\rA\x7F6\0A\x98\rA\xCC(\x006\0A\xC0A\x006\0@ \0At" A\x9C\rj"6\xA4\r 6\xA8\r \0Aj"\0A G\r\0\vA\x80\r A(k"\0Ax kA\x07q"k"6\0A\x8C\r j"6\0 Ar6 \0 jA(6A\x90\rA\xDC(\x006\0\f\v M\r K\r \0(\fA\bq\r \0 j6A\x8C\r Ax kA\x07q"\0j"6\0A\x80\rA\x80\r(\0 j" \0k"\x006\0 \0Ar6 jA(6A\x90\rA\xDC(\x006\0\f\vA\0!\0\f\vA\0!\0\f\vA\x84\r(\0 K@A\x84\r 6\0\v j!A\xB4!\0@@ \0(\0"G@ \0(\b"\0\r\f\v\v \0-\0\fA\bqE\r\vA\xB4!\0@@ \0(\0" M@ \0(j"I\r\v \0(\b!\0\f\v\vA\x80\r A(k"\0Ax kA\x07q"k"\x076\0A\x8C\r j"6\0 \x07Ar6 \0 jA(6A\x90\rA\xDC(\x006\0 A\' kA\x07qjA/k"\0 \0 AjI\x1B"A\x1B6 A\xBC)\x007 A\xB4)\x007\bA\xBC A\bj6\0A\xB8 6\0A\xB4 6\0A\xC0A\x006\0 Aj!\0@ \0A\x076 \0A\bj \0Aj!\0 I\r\0\v F\r\0 (A~q6 k"Ar6 6\0\x7F A\xFFM@ A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\fA\f!A\b\f\vA!\0 A\xFF\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtrA>s!\0\v \x006 B\x007 \0AtA\xA4j!@@A\xF8\f(\0"A \0t"qE@A\xF8\f r6\0 6\0\f\v A \0AvkA\0 \0AG\x1Bt!\0 (\0!@ "(Axq F\r \0Av! \0At!\0 Aqj"("\r\0\v 6\v 6A\b! "!\0A\f\f\v (\b"\0 6\f 6\b \x006\bA\0!\0A!A\f\v j 6\0 j \x006\0\vA\x80\r(\0"\0 M\r\0A\x80\r \0 k"6\0A\x8C\rA\x8C\r(\0"\0 j"6\0 Ar6 \0 Ar6 \0A\bj!\0\f\vA\xF0\fA06\0A\0!\0\f\v \0 6\0 \0 \0( j6 Ax kA\x07qj"\b Ar6 Ax kA\x07qj" \bj"k!\x07@A\x8C\r(\0 F@A\x8C\r 6\0A\x80\rA\x80\r(\0 \x07j"\x006\0 \0Ar6\f\vA\x88\r(\0 F@A\x88\r 6\0A\xFC\fA\xFC\f(\0 \x07j"\x006\0 \0Ar6 \0 j \x006\0\f\v ("\0AqAF@ \0Axq! (\f!@ \0A\xFFM@ (\b" F@A\xF4\fA\xF4\f(\0A~ \0Avwq6\0\f\v 6\f 6\b\f\v (!@ G@ (\b"\0 6\f \x006\b\f\v@ ("\0\x7F Aj ("\0E\r Aj\v!@ ! \0"Aj! \0("\0\r\0 Aj! ("\0\r\0\v A\x006\0\f\vA\0!\v E\r\0@ ("\0At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ \0wq6\0\f\v@ (F@ 6\f\v 6\v E\r\v 6 ("\0@ \x006 \0 6\v ("\0E\r\0 \x006 \0 6\v \x07 j!\x07 j"(!\0\v \0A~q6 \x07Ar6 \x07j \x076\0 \x07A\xFFM@ \x07A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A \x07Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\f\vA! \x07A\xFF\xFF\xFF\x07M@ \x07A& \x07A\bvg"\0kvAq \0AtrA>s!\v 6 B\x007 AtA\xA4j!\0@@A\xF8\f(\0"A t"qE@A\xF8\f r6\0 \0 6\0\f\v \x07A AvkA\0 AG\x1Bt! \0(\0!@ "\0(Axq \x07F\r Av! At! \0 Aqj"("\r\0\v 6\v \x006 6\f 6\b\f\v \0(\b" 6\f \0 6\b A\x006 \x006\f 6\b\v \bA\bj!\0\f\v@ \bE\r\0@ ("At"(\xA4 F@ A\xA4j \x006\0 \0\rA\xF8\f \x07A~ wq"\x076\0\f\v@ \b(F@ \b \x006\f\v \b \x006\v \0E\r\v \0 \b6 ("@ \0 6 \x006\v ("E\r\0 \0 6 \x006\v@ AM@ j"\0Ar6 \0 j"\0 \0(Ar6\f\v Ar6 j" Ar6 j 6\0 A\xFFM@ A\xF8qA\x9C\rj!\0\x7FA\xF4\f(\0"A Avt"qE@A\xF4\f r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\f\vA!\0 A\xFF\xFF\xFF\x07M@ A& A\bvg"\0kvAq \0AtrA>s!\0\v \x006 B\x007 \0AtA\xA4j!@@ \x07A \0t"qE@A\xF8\f \x07r6\0 6\0 6\f\v A \0AvkA\0 \0AG\x1Bt!\0 (\0!@ "(Axq F\r \0Av! \0At!\0 Aqj"\x07("\r\0\v \x07 6 6\v 6\f 6\b\f\v (\b"\0 6\f 6\b A\x006 6\f \x006\b\v A\bj!\0\f\v@ E\r\0@ ("At"(\xA4 F@ A\xA4j \x006\0 \0\rA\xF8\f \vA~ wq6\0\f\v@ (F@ \x006\f\v \x006\v \0E\r\v \0 6 ("@ \0 6 \x006\v ("E\r\0 \0 6 \x006\v@ AM@ j"\0Ar6 \0 j"\0 \0(Ar6\f\v Ar6 j" Ar6 j 6\0 \b@ \bAxqA\x9C\rj!\0A\x88\r(\0!\x7FA \bAvt"\x07 qE@A\xF4\f \x07r6\0 \0\f\v \0(\b\v! \0 6\b 6\f \x006\f 6\b\vA\x88\r 6\0A\xFC\f 6\0\v A\bj!\0\v \nAj$\0 \0\vT\x7F~@A\xD4\v(\0"\xAD \0\xADB\x07|B\xF8\xFF\xFF\xFF\x83|"B\xFF\xFF\xFF\xFFX@ \xA7"\0?\0AtM\r \0\r\vA\xF0\fA06\0A\x7F\vA\xD4\v \x006\0 \v\xB4~ \0 \0)8"B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)0"B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \0)("B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0) "B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\bB\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \0)"\x07B\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)" B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\nB\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \0)\b"\vB\x86B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83 \0)\0"\fB\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83\x84"\rB\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\0 \0 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 \x07B\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\x86B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \fB\x88B\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\0\x83 \vB\xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA\x7F\x83\x84"B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"\x07B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847( \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \x07B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\b \0 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \bB\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 \nB\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 \rB\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x8470 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847 \0 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\xCC\x99\xB3\xE6\xCC\x99\xB3\xE6L\x83 B\x88B\xB3\xE6\xCC\x99\xB3\xE6\xCC\x993\x83\x84"B\x88B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x8478 \0 B\x86B\xF0\xE1\xC3\x87\x8F\x9E\xBC\xF8p\x83 B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83\x847\v\xDF\v\b\x7F@ \0E\r\0 \0A\bk" \0Ak(\0"Axq"\0j!@ Aq\r\0 AqE\r (\0"k"A\x84\r(\0I\r \0 j!\0@@@A\x88\r(\0 G@ (\f! A\xFFM@ (\b"G\rA\xF4\fA\xF4\f(\0A~ Avwq6\0\f\v (!\x07 G@ (\b" 6\f 6\b\f\v ("\x7F Aj ("E\r Aj\v!@ ! "Aj! ("\r\0 Aj! ("\r\0\v A\x006\0\f\v ("AqAG\rA\xFC\f \x006\0 A~q6 \0Ar6 \x006\0\v 6\f 6\b\f\vA\0!\v \x07E\r\0@ ("At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ wq6\0\f\v@ \x07(F@ \x07 6\f\v \x07 6\v E\r\v \x076 ("@ 6 6\v ("E\r\0 6 6\v O\r\0 ("AqE\r\0@@@@ AqE@A\x8C\r(\0 F@A\x8C\r 6\0A\x80\rA\x80\r(\0 \0j"\x006\0 \0Ar6 A\x88\r(\0G\rA\xFC\fA\x006\0A\x88\rA\x006\0\vA\x88\r(\0"\x07 F@A\x88\r 6\0A\xFC\fA\xFC\f(\0 \0j"\x006\0 \0Ar6 \0 j \x006\0\v Axq \0j!\0 (\f! A\xFFM@ (\b" F@A\xF4\fA\xF4\f(\0A~ Avwq6\0\f\v 6\f 6\b\f\v (!\b G@ (\b" 6\f 6\b\f\v ("\x7F Aj ("E\r Aj\v!@ ! "Aj! ("\r\0 Aj! ("\r\0\v A\x006\0\f\v A~q6 \0Ar6 \0 j \x006\0\f\vA\0!\v \bE\r\0@ ("At"(\xA4 F@ A\xA4j 6\0 \rA\xF8\fA\xF8\f(\0A~ wq6\0\f\v@ \b(F@ \b 6\f\v \b 6\v E\r\v \b6 ("@ 6 6\v ("E\r\0 6 6\v \0Ar6 \0 j \x006\0 \x07G\r\0A\xFC\f \x006\0\v \0A\xFFM@ \0A\xF8qA\x9C\rj!\x7FA\xF4\f(\0"A \0Avt"\0qE@A\xF4\f \0 r6\0 \f\v (\b\v!\0 6\b \0 6\f 6\f \x006\b\vA! \0A\xFF\xFF\xFF\x07M@ \0A& \0A\bvg"kvAq AtrA>s!\v 6 B\x007 AtA\xA4j!\x7F@\x7FA\xF8\f(\0"A t"qE@A\xF8\f r6\0 6\0A!A\b\f\v \0A AvkA\0 AG\x1Bt! (\0!@ "(Axq \0F\r Av! At! Aqj"("\r\0\v 6A! !A\b\v!\0 "\f\v (\b" 6\f 6\bA!\0A\b!A\0\v! j 6\0 6\f \0 j 6\0A\x94\rA\x94\r(\0Ak"\0A\x7F \0\x1B6\0\v\v\xC0\x1B~ \0 \0)\b"\x07 \0)8"\x85"\r \0)" \0) "\b\x85"\x85" \0)\x85" \0)0"\x85" \x85"\n \0)\0"\x85" \x07 \0)( \x85"\x85"\x07\x85" \x85"\x85"\x83\x85 \n\x83"\v\x85 \n\x85" \b\x85"\f\x85"\x85" \x83 \f\x83"\x85"\x85" \x85" \x07 \x83\x85 \r\x83"\x85 \r\x85 \x85"\x83" \x83 \x85" \x07 \b\x85" \x83 \x85 \x85 \v\x85\x85"\v\x85 \x85" \x07\x85"\x83\x85\x85 \x85\x85" \x85\x83"\b \x85 \x83" \x85" \x83 \b\x85"\b\x85" \x83"\x85 \x85"\x85 \v \x85"\x83 \v\x85"\x83 \x85" \x85" \b\x85"\v\x85"\x83" \v \f\x83\x85"\f \x07\x83"\x07\x85"\x85"\x1B \x83" \x85"\x83" \v\x83\x85\x85"\x8578 \0 \f \x83"\f \x83\x85" \n\x83\x85"\n \r\x83"\r \b\x83"\x85\x85"\x85\x85B\x7F\x857\0 \0 \n \x1B \x83\x85"\n\x85" 7 \0 \f\x85 \n\x857 \0 \x83\x85 \x85" \x83\x85\x85" \b \x83\x85\x857 \0 \r\x85 \x85B\x7F\x857\b \0 \x07\x85" \x83\x85 \x85\x85B\x7F\x857( \0 \x85B\x7F\x8570\v\xD8\f.~\x7F \0)\xC0! \0)\xB8! \0)\xB0! \0)\xA8!\b \0)\xA0! \0)\x98! \0)\x90! \0)\x88! \0)\x80!\n \0)x! \0)p! \0)h! \0)`! \0)X! \0)P!\v \0)H! \0)@!\r \0)8! \0)0! \0)(!\x07 \0) !\x1B \0)!\f \0)! \0)\b! \0)\0!@ \x85 \x85 \r\x85 \f\x85" \x85 \v\x85 \x07\x85 \x85"B\x89\x85" \x1B\x85B\x1B\x89" \x85 \x85 \x85 \x85"B\x89\x85" \x85B\n\x89" \x85 \x85 \x85 \x1B\x85" \b \n\x85 \x85 \x85 \x85"!B\x89\x85" \x07\x85B$\x89"\x07B\x7F\x85\x83\x85"" \x85B\x89"\x1B B\x89\x85"\x85B\x89" ! B\x89\x85"\x85B\x89"B\x7F\x85\x83\x85"!\x85 \f\x85B\x89"\f \v\x85B\x89"\v \x85B\x89"B\x7F\x85\x83\x85"#\x85 \x85B>\x89" \x85B\'\x89" \r\x85B7\x89" B\x7F\x85\x83\x85"$\x85 \x85" /At"0)\x80\b \x85B+\x89" \x85B,\x89"B\x7F\x85\x83\x85\x85"%\x85"\rB\x89 \x85B\x89" \x85B8\x89"B\x7F\x85\x83\x85"& \x85B\x89" \x85B\x89"B\x7F\x85\x83\x85"\' \x85B)\x89" \b \x85B\x89"\bB\x7F\x85\x83\x85" \x85B\b\x89" \x1B \x85B\x89"B\x7F\x85\x83\x85"( \n \x85B-\x89"\n \f \x85B=\x89"B\x7F\x85\x83\x85"\x85\x85\x85\x85")\x85" \b B\x7F\x85\x83\x85"\x85B\x89" \r B\x7F\x85\x83 \x85"* B\x7F\x85\x83 \x85" \b B\x7F\x85\x83\x85"+ \nB\x7F\x85\x83 \v\x85", B\x7F\x85\x83\x85"-\x85\x85\x85\x85"\bB\x89\x85"\r \n \vB\x7F\x85\x83\x85"\n\x85B,\x89" % \x07 B\x7F\x85\x83 \x85" \fB\x7F\x85\x83 \x85" \x1BB\x7F\x85\x83 \x85"\v B\x7F\x85\x83\x85". \x85\x85\x85\x85" B\x7F\x85\x83 \x85" B\x7F\x85\x83 \x85" B\x7F\x85\x83 \x07\x85" \n B\x7F\x85\x83\x85"\x85\x85\x85\x85" B\x89\x85"\x85"B\x7F\x85\x83\x85!\x1B \r \x85B\x89" B\x89 \b\x85"\f \x85B7\x89" )B\x89 \x85"\x85B>\x89" B\x7F\x85\x83\x85! "\x85B)\x89"\b B\x7F\x85\x83\x85! \v \x85B\'\x89" \bB\x7F\x85\x83\x85! \b B\x7F\x85\x83 \x85!\b B\x7F\x85\x83 \x85! \f\x85B8\x89" #\x85B$\x89" .\x85B\x1B\x89"B\x7F\x85\x83\x85! -\x85B\x89"\n B\x7F\x85\x83\x85! \r\x85B\n\x89" \nB\x7F\x85\x83\x85! \n B\x7F\x85\x83 \x85!\n B\x7F\x85\x83\x85! $\x85B\x89" ,\x85B\x89"\v \r\x85B\x89"B\x7F\x85\x83\x85! \x85B\b\x89" B\x7F\x85\x83\x85! \f (\x85B\x89"\x07 B\x7F\x85\x83\x85! \x07B\x7F\x85\x83 \v\x85! \x07 \vB\x7F\x85\x83\x85!\v +\x85B=\x89" \x85B\x89"\x07 \f \'\x85B\x89"B\x7F\x85\x83\x85! \r \x85B-\x89" B\x7F\x85\x83\x85!\r !\x85B\x89" B\x7F\x85\x83\x85! \x07 B\x7F\x85\x83\x85! \x07B\x7F\x85\x83 \x85!\x07 \f &\x85B\x89" B\x7F\x85\x83\x85!\f *\x85B+\x89" B\x7F\x85\x83\x85! B\x7F\x85\x83\x85! 0)\x88\b B\x7F\x85\x83\x85 \x85! /AI /Aj!/\r\0\v \0 7\xC0 \0 7\xB8 \0 7\xB0 \0 \b7\xA8 \0 7\xA0 \0 7\x98 \0 7\x90 \0 7\x88 \0 \n7\x80 \0 7x \0 7p \0 7h \0 7` \0 7X \0 \v7P \0 7H \0 \r7@ \0 78 \0 70 \0 \x077( \0 \x1B7 \0 \f7 \0 7 \0 7\b \0 7\0\v\xCC \b\x7F~#\0A\xE0k"$\0A\xC0 "\x07@ )\0\b7\xF8 )\0\x007\xF0 (\xFC!A!@ A\xF0j Atj" \x7F B\x0078 B\x0070 B\x007( B\x007 B\x007 B\x007 B\x007\b Aw\xAD7\0 \v \r \v -\0\xC0 (\0s\v Ak(\0s"6\0A\0 Aj" AF"\x1B! j! Aj"A,G\r\0\vA\0!A\0!@ A\xF0j Atj"5\f"\nB\x86 \n\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\nB\x86 \nB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5"\nB\x86 \n\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\nB\b\x86 \n\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x84"\n7\xD0 5\b"\vB\x86 \v\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\x86 \vB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5\0"\vB\x86 \v\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\b\x86 \v\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x84"\v7\xB0 \n7\xE8 \n7\xE0 \n7\xD8 \v7\xC8 \v7\xC0 \v7\xB8 A\xB0j\v Atj" )\xC8B\x88\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x7F\x83 )\xC0B\xC4\x88\x91\xA2\xC4\x88\x91\xA2\xC4\0\x83 )\xB8B\xA2\xC4\x88\x91\xA2\xC4\x88\x91"\x83 )\xB0B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83\x84\x84\x847\0 )\xE8B\x88\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x7F\x83 )\xE0B\xC4\x88\x91\xA2\xC4\x88\x91\xA2\xC4\0\x83 )\xD8B\xA2\xC4\x88\x91\xA2\xC4\x88\x91"\x83 )\xD0B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83\x84\x84\x847\b Aj! A(I Aj!\r\0\vA\0!A\0!@ \x07 Atj" Atj)\0"\nB\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~7\0 \nB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~7 \nB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~7 \nB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~7\b Aj! AG Aj!\r\0\v B\x80\x80\x80\x80\x80\x80\x80\x807\x98 B\x007\x90 B\x007\xA0 B\x007\xF0 B\x007\xF8 B\x007\x80 B\x80\x80\x80\x80\x80\x80\x80\x807\xA8 B\x80\x80\x80\x80\x80\x80\x80\x807\x88A!A!A!A\0!A\x80\x98!@ \0 A\xF0j"\b \x07 Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\xAC Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\x9C Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\x8C Aj"A\xFF\x81\xFC\x07qA\bx AxA\xFF\x81\xFC\x07qr6\xFC \0A@k!\0 A\x80J A@j!\r\0\v \b \x07A\0!@ \0 j j-\0\0:\0\0 \0 Ar"j j-\0\0:\0\0 \0 Ar"j j-\0\0:\0\0 \0 Ar"j j-\0\0:\0\0 Aj"A\xC0\0G\r\0\v \x07\f A\xE0j$\0\vA\xEF\0\0\0\v\xC4~ \0 \0)\0"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847\0 \0 \0)\b"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847\b \0 \0)"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847 \0 \0)"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847 \0 \0) "B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847 \0 \0)("B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x847( \0 \0)0"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x8470 \0 \0)8"B\x88B\x80\x80\xFC\xFF\0\x83 B\xFF\xFF\x83\x84 B\f\x86B\x80\x80\x80\x80\x83\x84 B\b\x88B\x80\x80\x80\x80\xF0\x83\x84 B\b\x86B\x80\x80\x80\x80\x80\xE0?\x83\x84 B\f\x88B\x80\x80\x80\x80\x80\x80\xC0\x07\x83\x84 B\x86B\x80\x80\x80\x80\x80\x80\x80x\x83\x8478\v\xED\x7F~#\0A@j"$\0 58! 50!\n 5<! 54! 5(!\x07 5 !\f 5,!\v 5$!\r 5!\b 5! 5! 5! 5\b! 5\0! 5\f"B\x86 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 5"B\x86 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847\0 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847( \b \bB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\bB\x86 \bB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\bB\b\x86 \b\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847\b \v \vB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\x86 \vB\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 \r \rB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\b\x86 \v\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x8470 \x07 \x07B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\x07B\x86 \x07B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 \f \fB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\x07B\b\x86 \x07\x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83" B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83" B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x8478 B\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 B\b\x86\x84B\x80\xFE\x83\xF8\x8F\xE0\xBF\x80\x7F\x83 \n \nB\x86\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\b\x86 \x84B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83\x847 \v )\0 )\0\x857\0 )\b )\b\x857\b ) )\x857 ) )\x857 ) ) \x857 )( )(\x857( )0 )0\x8570 )8 )8\x8578A!@ \r )8"B0\x89"\n \x85" Atj")\0 )\0"B0\x89"\x07 \x85"B \x89\x85 \x07\x85\x857\0 )\b )\b"B0\x89"\x07 \x85"B \x89\x85\x85 \n\x85\x85 \x07\x857\b ) )"B0\x89"\x07 \x85"B \x89\x85 \x07\x85\x857 ) )"B0\x89"\x07 \x85"B \x89\x85\x85 \n\x85\x85 \x07\x857 ) ) "B0\x89"\x07 \x85"B \x89\x85\x85 \n\x85\x85 \x07\x857 )( )("B0\x89" \x85"B \x89\x85 \x85\x857( )0 )0"B0\x89" \x85"B \x89\x85 \x85\x8570 )8 B \x89\x85 \n\x85 \x8578 Aj"A\nG\r\0\v \r )\0 )\x80\x857\0 )\b )\x88\x857\b ) )\x90\x857 ) )\x98\x857 ) )\xA0\x857 )( )\xA8\x857( )0 )\xB0\x8570 )8 )\xB8\x8578 \v )\0! ) !\n )\b! )(! )!\x07 )0!\f )!\v \0 )8"\rB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \rB\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0< \0 \vB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \vB\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\x008 \0 \fB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \fB\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0, \0 \x07B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \x07B\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0( \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0 \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0 \0 \nB\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 \nB\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0\f \0 B\b\x88B\x80\x80\xFC\x87\x80\x80\xC0\xFF\0\x83 B\x80\xFE\x83\x80\x80\xE0?\x83\x84"\bB\b\x88 \bB\x88\x84>\0\b \0 \rB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"\rB\b\x88 \r\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\rB\x88 \r\x84>\x004 \0 \vB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"\vB\b\x88 \v\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\vB\x88 \v\x84>\x000 \0 \fB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"\fB\b\x88 \f\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\fB\x88 \f\x84>\0$ \0 \x07B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"\x07B\b\x88 \x07\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\x07B\x88 \x07\x84>\0 \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0 \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83" B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83" B\x88 \x84>\0 \0 \nB\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"\nB\b\x88 \n\x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"\nB\x88 \n\x84>\0 \0 B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x88 \x84B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x88 \x84>\0\0 A@k$\0\v\x95 \x7F~#\0A\xD0\0k"A\0A\xC8\0\xFC\v\0 )\b! )!\f )!\rA!\x07@ \0 \x07" Ak"\x07Atj!\n \0 \x07A\x07tj!\v \x07!@A\x88-\0\0! )\0"B\x86"7\0 \xA7 \rB<\x88\xA7"sAt"A\xF0\0q"\bAvr A\bqr \bAvs:\0\0 A\x88-\0\0 s"At"Aq"\b \xA7sAv Aqs \bAvs At" A\xF0\0q"Avr AvsAts:\0 B\x86 B<\x88\x84! \fB\x86 B<\x88\x84! \rB\x86 \fB<\x88\x84!\f \v Atj")\0!\r~ \x07F@ \r )\0\x857\0 ) \f\x85!\r ) \x85!\f )\b \x85\f\v \n A\x07tj")\0 )\0\x85 \r\x857\0 ) )\x85 \f\x85!\r ) )\x85 \x85!\f )\b )\b\x85 \x85\v! Aj"AG\r\0\v AK\r\0\v \f7 \r7 7\bA\0!@ j j-\0\0 Avj-\0\0"\0Aqs:\0\0 Ar"\x07j \x07j-\0\0 \0Avs:\0\0 A>I Aj!\r\0\v\v\xF2\x7F~@ E\r\0 \0 :\0\0 \0 j"Ak :\0\0 AI\r\0 \0 :\0 \0 :\0 Ak :\0\0 Ak :\0\0 A\x07I\r\0 \0 :\0 Ak :\0\0 A I\r\0 \0A\0 \0kAq"j" A\xFFqA\x81\x82\x84\bl"6\0 kA|q"j"Ak 6\0 A I\r\0 6\b 6 A\bk 6\0 A\fk 6\0 AI\r\0 6 6 6 6\f Ak 6\0 Ak 6\0 Ak 6\0 Ak 6\0 AqAr"k"A I\r\0 \xADB\x81\x80\x80\x80~! j!@ 7 7 7\b 7\0 A j! A k"AK\r\0\v\v \0\v\b\0A\xE4(\0\v]\x7FA\xE4(\0\x7FA\0A\xE8 \x006\0A\xE4 \0 "\x006\0A\xECA\xBA 6\0A\xF0A 6\0A\xF4A\xB0& "6\0 EA\xF0(\0E \0EA\xEC(\0Errr\v\v\r\0 \0A\x80j\0\v\0\0\ve\x7F \0D\0\0\0\0\0\0\0\0@A\xBC(\0A\x1BAA \0AF\x1B \0AF\x1B"\0AkvAq@A\xBCA\xBC(\0A \0Aktr6\0\f\v \0At(\xD0 "@ \0 \0\v\v\v\xEB\x7F~#\0A\xF0\xDE\xC2k"$\0\x7FAA\xE4(\0"\bE\r\0AA\xE8(\0 \0I\r\0A\xEC(\0!\x07A\xF4(\0! A\xB0\x828jA\0A\x9C\xFC\v\0 A\xF0\0j"A\0A\x80\xF37\xFC\v\0 Aj! A\xF0\x98j! A\x99!@ At"A k"j" j")\07\0 )\07\0 )\0\b7\0\b )\0\x007\0\0 A@j"j" j")\07\0 )\07\0 )\0\b7\0\b )\0\x007\0\0 Ak"At"j" j")\07\0 )\07\0 )\0\b7\0\b )\0\x007\0\0 AJ !\r\0\v A \b \0\b \x07)\0\xB270 \x07)\0\xAA7( \x07)\0\xA27 A\xE0\x858jA A8\b -\0\xE0\x858"\0Av:\0\xD1\x848 \0Aq:\0\xD0\x848 -\0\xE1\x858"\0Av:\0\xD3\x848 \0Aq:\0\xD2\x848 -\0\xE2\x858"\0Av:\0\xD5\x848 \0Aq:\0\xD4\x848 -\0\xE3\x858"\0Av:\0\xD7\x848 \0Aq:\0\xD6\x848 -\0\xE4\x858"\0Av:\0\xD9\x848 \0Aq:\0\xD8\x848 -\0\xE5\x858"\0Av:\0\xDB\x848 \0Aq:\0\xDA\x848 -\0\xE6\x858"\0Av:\0\xDD\x848 \0Aq:\0\xDC\x848 -\0\xE7\x858"\0Av:\0\xDF\x848 \0Aq:\0\xDE\x848 -\0\xE8\x858"\0Av:\0\xE1\x848 \0Aq:\0\xE0\x848 -\0\xE9\x858"\0Av:\0\xE3\x848 \0Aq:\0\xE2\x848 -\0\xEA\x858"\0Av:\0\xE5\x848 \0Aq:\0\xE4\x848 -\0\xEB\x858"\0Av:\0\xE7\x848 \0Aq:\0\xE6\x848 -\0\xEC\x858"\0Av:\0\xE9\x848 \0Aq:\0\xE8\x848 -\0\xED\x858"\0Av:\0\xEB\x848 \0Aq:\0\xEA\x848 -\0\xEE\x858"\0Av:\0\xED\x848 \0Aq:\0\xEC\x848 -\0\xEF\x858"\0Av:\0\xEF\x848 \0Aq:\0\xEE\x848 -\0\xF0\x858"\0Av:\0\xF1\x848 \0Aq:\0\xF0\x848 -\0\xF1\x858"\0Aq:\0\xF2\x848 \0Av:\0\xF3\x848 -\0\xF2\x858"\0Av:\0\xF5\x848 \0Aq:\0\xF4\x848 -\0\xF3\x858"\0Av:\0\xF7\x848 \0Aq:\0\xF6\x848 -\0\xF4\x858"\0Av:\0\xF9\x848 \0Aq:\0\xF8\x848 -\0\xF5\x858"\0Av:\0\xFB\x848 \0Aq:\0\xFA\x848 -\0\xF6\x858"\0Av:\0\xFD\x848 \0Aq:\0\xFC\x848 -\0\xF7\x858"\0Av:\0\xFF\x848 \0Aq:\0\xFE\x848 -\0\xF8\x858"\0Av:\0\x81\x858 \0Aq:\0\x80\x858 -\0\xF9\x858"\0Av:\0\x83\x858 \0Aq:\0\x82\x858 -\0\xFA\x858"\0Av:\0\x85\x858 \0Aq:\0\x84\x858 -\0\xFB\x858"\0Av:\0\x87\x858 \0Aq:\0\x86\x858 -\0\xFC\x858"\0Av:\0\x89\x858 \0Aq:\0\x88\x858 -\0\xFD\x858"\0Av:\0\x8B\x858 \0Aq:\0\x8A\x858 -\0\xFE\x858"\0Av:\0\x8D\x858 \0Aq:\0\x8C\x858 -\0\xFF\x858"\0Av:\0\x8F\x858 \0Aq:\0\x8E\x858 A\xF0\xF37j!A\0!\0A\0!@ \x07j"-\0\0"Av:\0 Aq:\0\0 -\0"Av:\0 Aq:\0 -\0"Av:\0 Aq:\0 -\0"Av:\0\x07 Aq:\0 A\bj!A\xA0! Aj"A\xA0G\r\0\v@ \x07j-\0\0"Av:\0 Aq:\0\0 Aj! Aj! \0Aj"\0AG\r\0\vA\0! A\xB0\x868jA\0A\x80\xD1\0\xFC\v\0 A\xB0\xD78jA\0A\xC0\x8F\b\xFC\v\0 A\xF0\xE6\xC0\0jA\0A\x80\xF8\x81\xFC\v\0 A\xB0\xF47j!\n A\xF0\x88j!\rA\0!@ A\xF0\xE6\xC0\0j A\vtj"\x07A\x80\fj!\b \x07A\x80\bj!\v \x07A\x80j!\f !\0@ A\xF0\0j Atj")! )! )\b! \x07 A\xF0\xF37j \0j"-\0\0Atj" )\0" )\0\x857\0 )\b\x857\b )\x857 )\x857 \f -\0QAtj" )\0\x857\0 )\b\x857\b )\x857 )\x857 \v -\0\xA2Atj" )\0\x857\0 )\b\x857\b )\x857 )\x857 \b -\0\xF3Atj" )\0\x857\0 )\b\x857\b )\x857 )\x857 Aj! \0Aj"\0A\xC0\0G\r\0\v Al!A\0!@ \r jAtj")! )! )\b! \x07 \nj"-\0\0Atj"\0 )\0" \0)\0\x857\0 \0 \0)\b\x857\b \0 \0)\x857 \0 \0)\x857 \f -\0QAtj"\0 \0)\0\x857\0 \0 \0)\b\x857\b \0 \0)\x857 \0 \0)\x857 \v -\0\xA2Atj"\0 \0)\0\x857\0 \0 \0)\b\x857\b \0 \0)\x857 \0 \0)\x857 \b -\0\xF3Atj"\0 \0)\0\x857\0 \0 \0)\b\x857\b \0 \0)\x857 \0 \0)\x857 Aj"AG\r\0\vA\xC0\0! Aj"A\xC0\0G\r\0\vA\0!@ At"\x07A0r!\b \x07A r!\v \x07Ar!\f !\0@ Atj")! )! )\b! A\xF0\xE6\xC0\0j"\n \x07 A\xF0\xF37j \0j"-\0\0jAtj" )\0" )\0\x857\0 )\b\x857\b )\x857 )\x857 \f -\0QjAt \nj" )\0\x857\0 )\b\x857\b )\x857 )\x857 \v -\0\xA2jAt \nj" )\0\x857\0 )\b\x857\b )\x857 )\x857 \b -\0\xF3jAt \nj" )\b\x857\b )\x857 )\x857 )\0\x857\0 Aj! \0Aj"\0A\xD1\0G\r\0\v Aj"A\xD1\0G\r\0\vA\0!@ A\xF0\xE6\xC0\0j" A tj A\xB0\xD78j Atj\x07 Aj"A\xC4G\r\0\vA\0!\0 A\0A\x80\x90\n\xFC\v\0@ \0At!\x07 A\xF0\xF37j \0A\xD1\0lj! A\0!@ A\xF0\xE6\xC0\0j" \x07 j-\0\0jAtj" )\0 A\xB0\xD78j A\x07tj")\0\x857\0 )\b )\b\x857\b ) )\x857 ) )\x857 )\x80 ) \x857\x80 )\x88 )(\x857\x88 )\x90 )0\x857\x90 )\x98 )8\x857\x98 A\x80\bj" )\0 A@k)\0\x857\0 A\x88\bj" )\0 )H\x857\0 A\x90\bj" )\0 )P\x857\0 A\x98\bj" )\0 )X\x857\0 A\x80\fj" )\0 )`\x857\0 A\x88\fj" )\0 )h\x857\0 A\x90\fj" )\0 )p\x857\0 A\x98\fj" )\0 )x\x857\0 Aj"A\xD1\0G\r\0\v \0Aj"\0AG\r\0\v A\xB0\x868j"\0\x07 A\xF0\xEA\xC0\0j A\xD0\x868j\x07 A\xF0\xEE\xC0\0j A\xF0\x868j\x07 A\xF0\xF2\xC0\0j A\x90\x878j\x07 A\xF0\xF6\xC0\0j A\xB0\x878j\x07 A\xF0\xFA\xC0\0j A\xD0\x878j\x07 A\xF0\xFE\xC0\0j A\xF0\x878j\x07 A\xF0\x82\xC1\0j A\x90\x888j\x07 A\xF0\x86\xC1\0j A\xB0\x888j\x07 A\xF0\x8A\xC1\0j A\xD0\x888j\x07 A\xF0\x8E\xC1\0j A\xF0\x888j\x07 A\xF0\x92\xC1\0j A\x90\x898j\x07 A\xF0\x96\xC1\0j A\xB0\x898j\x07 A\xF0\x9A\xC1\0j A\xD0\x898j\x07 A\xF0\x9E\xC1\0j A\xF0\x898j\x07 A\xF0\xA2\xC1\0j A\x90\x8A8j\x07 A\0A\x8E\xFC\v\0 \0 A\xB0\x828j )\xB0\x828 )\xD0\x848\x85 )\xB8\x828 )\xD8\x848\x85\x84 A\xC0\x828j)\0 A\xE0\x848j)\0\x85 A\xC8\x828j)\0 A\xE8\x848j)\0\x85\x84\x84 A\xD0\x828j)\0 A\xF0\x848j)\0\x85 A\xD8\x828j)\0 A\xF8\x848j)\0\x85\x84 A\xE0\x828j)\0 A\x80\x858j)\0\x85 A\xE8\x828j)\0 A\x88\x858j)\0\x85\x84\x84\x84B\0R\v A\xF0\xDE\xC2j$\0\v\x84\x7F\x7F~#\0"! A\xA0\xF6\xC1\0kA`q"$\0A\xE4(\0"\rE@ $\0A\vA\xE8(\0 \0I@ $\0A\vA\xEC(\0!A\xF0(\0!\b A\xA0\xB48jA\0A\xD0\xE6\xFC\v\0 A\x90\xA48jA\0A\xCD\xFC\v\0 A\xE0\xB2:jA\xB0 \bA\b A\xF0\xB2:j! A\x98\x918j"!@ j"-\0\0"Av:\0 Aq:\0\0 -\0"Av:\0 Aq:\0 -\0"Av:\0 Aq:\0 -\0"Av:\0\x07 Aq:\0 A\bj! Aj"A\xA0G\r\0\v A\xA0\xF4\0j A\xE0\xB2:j A\xA0\xFCj!A\0!@ Al! !@ G@ Al!\n A\xA0\xF4\0j Atj!A\0!@ j"\vAtj" )\0 )\0"B\0 \nj"j-\0\0"\x07A\x88-\0\0s"\fAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \f\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 )\b )\b"B\0 \x07A\x88-\0\0s"\fAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \f\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b ) )"B\0 \x07A\x88-\0\0s"\fAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \f\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 ) )"B\0 \x07A\x88-\0\0s"Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Atj" )\0 )\0"B\0 \v j-\0\0"\x07A\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 )\b )\b"B\0 \x07A\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b ) )"B\0 \x07A\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 ) )"B\0 \x07A\x88-\0\0s"Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Aj"AG\r\0\v\v Aj! Aj"A\xC0\0G\r\0\v Aj"A\xC0\0G\r\0\v A\xE0\xB2:jA\0A\xE4A\xD8\v(\0\0\0 A\x80\xF3\0jA \r \0\b A jA\0A\xE0\xF2\0\xFC\v\0 A\xA0\xF3\0j!\x7F@A\xB8-\0\0@ A\xA0)\x007 A\x98)\x007\b A\x90)\x007\0A\xB8A\0:\0\0\f\v A\0:\0\xE2\xB2: A\xF0\xD2;\0\xE0\xB2: 6 A6AA\xDC\v A\xE0\xB2:j Aj\r\v \b)\07\xC8s \b)\0\b7\0\xC0s \b)\0\x007\xB8s A\xC0\xAF:jA A\x80\xF3\0j"\0A\xD0\0\b )\xD0\xAF:7 )\xC8\xAF:7\b )\xC0\xAF:7\0 A\x90\xB2:jA \0A8\b -\0\x90\xB2:"\0Av:\0\x81\xB1: \0Aq:\0\x80\xB1: -\0\x91\xB2:"\0Av:\0\x83\xB1: \0Aq:\0\x82\xB1: -\0\x92\xB2:"\0Av:\0\x85\xB1: \0Aq:\0\x84\xB1: -\0\x93\xB2:"\0Av:\0\x87\xB1: \0Aq:\0\x86\xB1: -\0\x94\xB2:"\0Av:\0\x89\xB1: \0Aq:\0\x88\xB1: -\0\x95\xB2:"\0Av:\0\x8B\xB1: \0Aq:\0\x8A\xB1: -\0\x96\xB2:"\0Av:\0\x8D\xB1: \0Aq:\0\x8C\xB1: -\0\x97\xB2:"\0Av:\0\x8F\xB1: \0Aq:\0\x8E\xB1: -\0\x98\xB2:"\0Av:\0\x91\xB1: \0Aq:\0\x90\xB1: -\0\x99\xB2:"\0Av:\0\x93\xB1: \0Aq:\0\x92\xB1: -\0\x9A\xB2:"\0Av:\0\x95\xB1: \0Aq:\0\x94\xB1: -\0\x9B\xB2:"\0Av:\0\x97\xB1: \0Aq:\0\x96\xB1: -\0\x9C\xB2:"\0Av:\0\x99\xB1: \0Aq:\0\x98\xB1: -\0\x9D\xB2:"\0Av:\0\x9B\xB1: \0Aq:\0\x9A\xB1: -\0\x9E\xB2:"\0Av:\0\x9D\xB1: \0Aq:\0\x9C\xB1: -\0\x9F\xB2:"\0Av:\0\x9F\xB1: \0Aq:\0\x9E\xB1: -\0\xA0\xB2:"\0Av:\0\xA1\xB1: \0Aq:\0\xA0\xB1: -\0\xA1\xB2:"\0Aq:\0\xA2\xB1: \0Av:\0\xA3\xB1: -\0\xA2\xB2:"\0Av:\0\xA5\xB1: \0Aq:\0\xA4\xB1: -\0\xA3\xB2:"\0Av:\0\xA7\xB1: \0Aq:\0\xA6\xB1: -\0\xA4\xB2:"\0Av:\0\xA9\xB1: \0Aq:\0\xA8\xB1: -\0\xA5\xB2:"\0Av:\0\xAB\xB1: \0Aq:\0\xAA\xB1: -\0\xA6\xB2:"\0Av:\0\xAD\xB1: \0Aq:\0\xAC\xB1: -\0\xA7\xB2:"\0Av:\0\xAF\xB1: \0Aq:\0\xAE\xB1: -\0\xA8\xB2:"\0Av:\0\xB1\xB1: \0Aq:\0\xB0\xB1: -\0\xA9\xB2:"\0Av:\0\xB3\xB1: \0Aq:\0\xB2\xB1: -\0\xAA\xB2:"\0Av:\0\xB5\xB1: \0Aq:\0\xB4\xB1: -\0\xAB\xB2:"\0Av:\0\xB7\xB1: \0Aq:\0\xB6\xB1: -\0\xAC\xB2:"\0Av:\0\xB9\xB1: \0Aq:\0\xB8\xB1: -\0\xAD\xB2:"\0Av:\0\xBB\xB1: \0Aq:\0\xBA\xB1: -\0\xAE\xB2:"\0Av:\0\xBD\xB1: \0Aq:\0\xBC\xB1: -\0\xAF\xB2:"\0Av:\0\xBF\xB1: \0Aq:\0\xBE\xB1: A\xD0\xA48j!\r A\x9B\xD68j! A\xE4\xB48j!\v A\xA0\xA9:j!A\0!@ :\0\xD0s A\xA0\xA8:jA\xA2 A\x80\xF3\0jA\xD1\0\bA\0!@ A\xF0\x9A:j Atj"\0 A\xA0\xA8:j Atj"-\0\0"Av:\0 \0 Aq:\0\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0\x07 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0\b \0 -\0"Av:\0\v \0 Aq:\0\n \0 -\0"Av:\0\r \0 Aq:\0\f \0 -\0\x07"Av:\0 \0 Aq:\0 \0 -\0\b"Av:\0 \0 Aq:\0 \0 -\0 "Av:\0 \0 Aq:\0 \0 -\0\n"Av:\0 \0 Aq:\0 \0 -\0\v"Av:\0 \0 Aq:\0 \0 -\0\f"Av:\0 \0 Aq:\0 \0 -\0\r"Av:\0\x1B \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0 \0 Aq:\0 \0 -\0"Av:\0! \0 Aq:\0 \0 -\0"Aq:\0" \0 Av:\0# \0 -\0"Av:\0% \0 Aq:\0$ \0 -\0"Av:\0\' \0 Aq:\0& \0 -\0"Av:\0) \0 Aq:\0( \0 -\0"Av:\0+ \0 Aq:\0* \0 -\0"Av:\0- \0 Aq:\0, \0 -\0"Av:\0/ \0 Aq:\0. \0 -\0"Av:\x001 \0 Aq:\x000 \0 -\0"Av:\x003 \0 Aq:\x002 \0 -\0"Av:\x005 \0 Aq:\x004 \0 -\0\x1B"Av:\x007 \0 Aq:\x006 \0 -\0"Av:\x009 \0 Aq:\x008 \0 -\0"Av:\0; \0 Aq:\0: \0 -\0"Av:\0= \0 Aq:\0< \0 -\0"Av:\0? \0 Aq:\0>A\0! Aj"AG\r\0\v@ Al!\b A\xF0\x9A:j Atj!A\0! @ Al!\x07 j-\0\0!A\0!@ A j \bjAtj"\0 \0)\0 \x07jAtj")\0"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 \0 \0)\b )\b"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b \0 \0) )"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 \0 \0) )"B\0A\x88-\0\0 s"\0Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \0\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Aj"AG\r\0\v Aj" A\xC0\0G\r\0\v Aj"AG\r\0\vA\0!\b A\xE0\xB2:jA\0A\xC0\xBE\x07\xFC\v\0A\0! @ A\xE0\xB2:j \bA\x07tj! \b!\x07@ A\xA0\xF4\0j Atj"\0)"B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"\x1BB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ \x1BB\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85!) \0)"B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85!, \0)\b"%B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ %B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"#B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ #B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"!B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ !B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85!\' \0)\0" B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85""B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ "B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85"&B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ &B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85!( A\xF0\x9A:j \x07j!A\0!\0@ \0Atj" )\0 B\0 \0Atj-\0\0"A\x88-\0\0s"Aq\x1B\x85 \xAD"B>\x86B?\x87 "\x83\x85 B=\x86B?\x87 &\x83\x85 B<\x86B?\x87 (\x83\x857\0 )\b %B\0 A\x88-\0\0s"Aq\x1B\x85 \xAD"B>\x86B?\x87 #\x83\x85 B=\x86B?\x87 !\x83\x85 B<\x86B?\x87 \'\x83\x857\b ) B\0 A\x88-\0\0s"Aq\x1B\x85 \xAD"B>\x86B?\x87 \x83\x85 B=\x86B?\x87 \x83\x85 B<\x86B?\x87 ,\x83\x857 ) B\0 A\x88-\0\0s"Aq\x1B\x85 \xAD"B>\x86B?\x87 \x83\x85 B=\x86B?\x87 \x1B\x83\x85 B<\x86B?\x87 )\x83\x857 \0Aj"\0AG\r\0\v Aj! \x07Aj"\x07A\xC0\0G\r\0\vA\0! \bAj"\bA\xC0\0G\r\0\v@ A\xA0\xB48j A\x07tj! A\xF0\x9A:j Atj!\bA\0! @ A\xE0\xB2:j A\x07tj!\x07 \b j-\0\0!A\0!@ At"j"\0 \0)\0 \x07j")\0"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 \0 \0)\b )\b"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b \0 \0) )"B\0A\x88-\0\0 s"\nAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \n\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 \0 \0) )"B\0A\x88-\0\0 s"\0Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \0\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Aj"AG\r\0\v Aj" A\xC0\0G\r\0\v Aj"AG\r\0\v A\xA0\xB48j A\x80\xB1:j A\xF0\xAF:jA\0!\b A\xE0\xB2:jA\0A\x80\xEA\xFC\v\0A\0! A\0!@ A j A\xA0lj! A\xE0\xB2:j A\x88lj!\fA!@ A\x80l!A\0! A j Ak"A\xA0lj!\n \b\xAD!@\x7F \bA\0J@A\xC0\0 \bk\xAD!@ \f Atj j"\0 \0)\0 \n Atj")\0"\x1B \x86\x857\0 \0 \0)\x80 \x1B \x88\x857\x80 \0 \0)\x80 )\b"\x1B \x86\x857\x80 \0A\x80\nj"\x07 \x07)\0 \x1B \x88\x857\0 \x07 \x07)\0 )"\x1B \x86\x857\0 \0A\x80j"\x07 \x07)\0 \x1B \x88\x857\0 \x07 \x07)\0 )"\x1B \x86\x857\0 \0A\x80j"\0 \0)\0 \x1B \x88\x857\0 Aj"AG\r\0\v F\r A\xE0\xB2:j A\x88lj" \bA\0L\rA\0!\0@ \0Atj j" )\0 \0Atj"\x07)\0"\x1B \x86\x857\0 )\x80 \x1B \x88\x857\x80 )\x80 \x07)\b"\x1B \x86\x857\x80 A\x80\nj"\n \n)\0 \x1B \x88\x857\0 \n \n)\0 \x07)"\x1B \x86\x857\0 A\x80j"\n \n)\0 \x1B \x88\x857\0 \n \n)\0 \x07)"\x1B \x86\x857\0 A\x80j" )\0 \x1B \x88\x857\0 \0Aj"\0AG\r\0\v\f\v@ \f Atj j"\0 \0)\0 \n Atj")\0 \x86\x857\0 \0 \0)\x80 )\b \x86\x857\x80 \0A\x80\nj"\x07 \x07)\0 ) \x86\x857\0 \0A\x80j"\0 \0)\0 ) \x86\x857\0 Aj"AG\r\0\v F\r A\xE0\xB2:j A\x88lj\v!A\0!\0@ \0Atj j" )\0 \0Atj"\x07)\0 \x86\x857\0 )\x80 \x07)\b \x86\x857\x80 A\x80\nj"\n \n)\0 \x07) \x86\x857\0 A\x80j" )\0 \x07) \x86\x857\0 \0Aj"\0AG\r\0\v\vA\0 \bAj"\0 \0A\xC0\0F"\0\x1B!\b \0 j! I\r\0\v Aj"AG\r\0\vA\0!\0@ A\xE0\xB2:j \0Atj" )x" )p"B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"\x1B \x85" )h" )`"B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83" \x85"B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"%B\b\x86 \x85" )X"# )P"!B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83" #\x85"# )H"" )@"&B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83" "\x85""B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83")B\b\x86 "\x85""B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83",B\x86 "\x85""B\xFF\xFF\xFF\xFF\x83 )8"\' )0"(B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"- \'\x85"\' )("* ) "$B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83". *\x85"*B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"2B\b\x86 *\x85"* )"/ )"0B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"1 /\x85"/ )\b"+ )\0"3B\x88\x85B\x8F\x9E\xBC\xF8\xF0\xE1\xC3\x87\x83"4 +\x85"+B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"5B\b\x86 +\x85"+B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"6B\x86 +\x85"+B \x88\x85"7 "\x857H \x1BB\x86\x85" B\x86\x85"\x1BB\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"B\b\x86 \x1B\x85"\x1B ! B\x86\x85" & B\x86\x85"!B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83" B\b\x86 !\x85"!B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83""B\x86 !\x85"!B\xFF\xFF\xFF\xFF\x83 ( -B\x86\x85"& $ .B\x86\x85"B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83"(B\b\x86 \x85" 0 1B\x86\x85"- 3 4B\x86\x85"$B\b\x88\x85B\xFF\x81\xFC\x87\xF0\x9F\xC0\xFF\0\x83".B\b\x86 $\x85"$B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"0B\x86 $\x85"$B \x88\x85"1 !\x857@ 7B \x86 +\x857\b 1B \x86 $\x857\0 \x85" \x85"B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"B\x86 \x85"B\xFF\xFF\xFF\xFF\x83 & (\x85"! - .\x85" B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"&B\x86 \x85" B \x88\x85"( \x857P (B \x86 \x857 %\x85" # )\x85"B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83"%B\x86 \x85"B\xFF\xFF\xFF\xFF\x83 \' 2\x85"# / 5\x85" B\x88\x85B\xFF\xFF\x83\x80\xF0\xFF?\x83")B\x86 \x85" B \x88\x85"\' \x857X \'B \x86 \x857 \x1B "\x85"\x1BB\xFF\xFF\xFF\xFF\x83 0\x85"B \x88\x85" \x1B\x857` B \x86 \x857 ,\x85"\x1BB\xFF\xFF\xFF\xFF\x83 * 6\x85"B \x88\x85" \x1B\x857h B \x86 \x857( \x85"B\xFF\xFF\xFF\xFF\x83 ! &\x85"\x1BB \x88\x85" \x857p B \x86 \x1B\x8570 %\x85"B\xFF\xFF\xFF\xFF\x83 # )\x85"B \x88\x85"\x1B \x857x \x1BB \x86 \x8578 \0A\x80I \0Aj!\0\r\0\vA\0!A\x88-\0\0"At""\0A\x7FsAq"Av \0Aqr Avs\xAD! At""\0A0qA s"Av \0A\fqr Avs\xAD! At""\0A\xF0\0qA\xC0\0s"Av \0A\bqr Avs\xAD!% "\0Aq"Av \0Aqr Avs\xAD!# "\0A0q"Av \0A\fqr Avs\xAD!! "\0A\xF0\0q"Av \0A\bqr Avs\xAD! "\0Aq \0Aq"\0Avr \0AvsAs\xAD!" "\0A\fq \0A0q"\0Avr \0AvsA\bs\xAD!& "\0A\xF0\0qAs"Av \0A\bqr Avs\xAD! "\0A\x7FsAq"Av \0Aqr Avs\xAD!) "\0A0qA s"Av \0A\fqr Avs\xAD!, "\0A\xF0\0qA\xC0\0s"Av \0A\bqr Avs\xAD!\'A\x881\0\0B\x83!( Aq"\0A\bs\xAD"$!- \0As\xAD!*@ A\xE0\xB2:j Atj!\0A\xC0\0!@ AtA\xF8\0q" \0 A@jAvA\x80ljj" )\0 \0 AvA\x80lj j)\0"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83" -~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83"\x1B ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83" ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83" %~\x857\0 \0 A?k"AvA\x80lj Atj" ~ )\0 !~ \x1B #~ (~\x85\x85\x85\x857\0 \0 A>k"AvA\x80lj Atj" )\0 ~ &~ \x1B "~ *~\x85\x85\x85\x857\0 \0 A=k"AvA\x80lj Atj" )\0 \'~ ,~ \x1B )~ $~\x85\x85\x85\x857\0 Aj"A\xCA\0G\r\0\vA\xC0\0! A\xC0\0IA\0! Aj!\r\0\v@ A\xE0\xB2:j A(lj!A\0!@AA\xC4\0 k"\0 \0AN\x1BAv"\0A\bq!\n \0Aq! Atj!\f A\xA0\xB48j j!A\0!\x07 A<K!@ \f \x07Atj!\b \x07 jA\xC5\0lj!A\0!A\0!\0@ E@@ \bj"\0-\0\0"Av:\0 Aq:\0\0 \0-\0"Av:\0 Aq:\0 \0-\0"Av:\0 Aq:\0 \0-\0"\0Av:\0\x07 \0Aq:\0 A\bj! Aj" \nG\r\0\v !\0 E\r\vA\0!@ \0 \bj-\0\0"Av:\0 Aq:\0\0 \0Aj!\0 Aj! Aj"AG\r\0\v\v \x07Aj"\x07 G\r\0\v A4I Aj!\r\0\v Ak! A0I Aj! \r\0\vA\0!@ A\xA0\xB48j" A\xC5\0lj"\0A\0:\0\xCE \0A\0:\0\x89 \0A\0:\0D ArA\xC5\0l j"A\0:\0\xCE A\0:\0\x89 A\0:\0D AkA\0:\0\0 \0A\0:\0\xA7 A\bj"A\xC0\0G\r\0\v -\0\xA0\xA9:"\0Av:\0\x91\xA48 \0Aq:\0\x90\xA48 -\0\xA1\xA9:"\0Av:\0\x93\xA48 \0Aq:\0\x92\xA48 -\0\xA2\xA9:"\0Av:\0\x95\xA48 \0Aq:\0\x94\xA48 -\0\xA3\xA9:"\0Av:\0\x97\xA48 \0Aq:\0\x96\xA48 -\0\xA4\xA9:"\0Av:\0\x99\xA48 \0Aq:\0\x98\xA48 -\0\xA5\xA9:"\0Av:\0\x9B\xA48 \0Aq:\0\x9A\xA48 -\0\xA6\xA9:"\0Av:\0\x9D\xA48 \0Aq:\0\x9C\xA48 -\0\xA7\xA9:"\0Av:\0\x9F\xA48 \0Aq:\0\x9E\xA48 -\0\xA8\xA9:"\0Av:\0\xA1\xA48 \0Aq:\0\xA0\xA48 -\0\xA9\xA9:"\0Av:\0\xA3\xA48 \0Aq:\0\xA2\xA48 -\0\xAA\xA9:"\0Av:\0\xA5\xA48 \0Aq:\0\xA4\xA48 -\0\xAB\xA9:"\0Av:\0\xA7\xA48 \0Aq:\0\xA6\xA48 -\0\xAC\xA9:"\0Av:\0\xA9\xA48 \0Aq:\0\xA8\xA48 -\0\xAD\xA9:"\0Av:\0\xAB\xA48 \0Aq:\0\xAA\xA48 -\0\xAE\xA9:"\0Av:\0\xAD\xA48 \0Aq:\0\xAC\xA48 -\0\xAF\xA9:"\0Av:\0\xAF\xA48 \0Aq:\0\xAE\xA48 -\0\xB0\xA9:"\0Av:\0\xB1\xA48 \0Aq:\0\xB0\xA48 -\0\xB1\xA9:"\0Aq:\0\xB2\xA48 \0Av:\0\xB3\xA48 -\0\xB2\xA9:"\0Av:\0\xB5\xA48 \0Aq:\0\xB4\xA48 -\0\xB3\xA9:"\0Av:\0\xB7\xA48 \0Aq:\0\xB6\xA48 -\0\xB4\xA9:"\0Av:\0\xB9\xA48 \0Aq:\0\xB8\xA48 -\0\xB5\xA9:"\0Av:\0\xBB\xA48 \0Aq:\0\xBA\xA48 -\0\xB6\xA9:"\0Av:\0\xBD\xA48 \0Aq:\0\xBC\xA48 -\0\xB7\xA9:"\0Av:\0\xBF\xA48 \0Aq:\0\xBE\xA48 -\0\xB8\xA9:"\0Av:\0\xC1\xA48 \0Aq:\0\xC0\xA48 -\0\xB9\xA9:"\0Av:\0\xC3\xA48 \0Aq:\0\xC2\xA48 -\0\xBA\xA9:"\0Av:\0\xC5\xA48 \0Aq:\0\xC4\xA48 -\0\xBB\xA9:"\0Av:\0\xC7\xA48 \0Aq:\0\xC6\xA48 -\0\xBC\xA9:"\0Av:\0\xC9\xA48 \0Aq:\0\xC8\xA48 -\0\xBD\xA9:"\0Av:\0\xCB\xA48 \0Aq:\0\xCA\xA48 -\0\xBE\xA9:"\0Av:\0\xCD\xA48 \0Aq:\0\xCC\xA48 -\0\xBF\xA9:"\0Av:\0\xCF\xA48 \0Aq:\0\xCE\xA48A\0!A ! \r!\0A\0!@ \0 j-\0\0"Av:\0 \0 Aq:\0\0 Aj! \0Aj!\0 Aj"AG\r\0\v@ A\xE0\xA58j" j A\x90\xA48j" j-\0\0:\0\0 Ar"\0j \0 j-\0\0:\0\0 Ar"\0j A\x90\xA48j \0j-\0\0:\0\0 Ar"\0j A\x90\xA48j \0j-\0\0:\0\0 Aj"A\xC4\0G\r\0\vA\0! A\0:\0\xDF\xD68 A\0:\0\x9A\xD68 A\0:\0\xD5\xD58 A\0:\0\x90\xD58 A\0:\0\xCB\xD48 A\0:\0\x86\xD48 A\0:\0\xC1\xD38 A\0:\0\xFC\xD28 A\0:\0\xB7\xD28 A\0:\0\xF2\xD18 A\0:\0\xAD\xD18 A\0:\0\xE8\xD08 A\0:\0\xA3\xD08 A\0:\0\xDE\xCF8 A\0:\0\x99\xCF8 A\0:\0\xD4\xCE8 A\0:\0\x8F\xCE8 A\0:\0\xCA\xCD8 A\0:\0\x85\xCD8 A\0:\0\xC0\xCC8 A\0:\0\xFB\xCB8 A\0:\0\xB6\xCB8 A\0:\0\xF1\xCA8 A\0:\0\xAC\xCA8 A\0:\0\xE7\xC98 A\0:\0\xA2\xC98 A\0:\0\xDD\xC88 A\0:\0\x98\xC88 A\0:\0\xD3\xC78 A\0:\0\x8E\xC78 A\0:\0\xC9\xC68 A\0:\0\x84\xC68 A\0:\0\xBF\xC58 A\0:\0\xFA\xC48 A\0:\0\xB5\xC48 A\0:\0\xF0\xC38 A\0:\0\xAB\xC38 A\0:\0\xE6\xC28 A\0:\0\xA1\xC28 A\0:\0\xDC\xC18 A\0:\0\x97\xC18 A\0:\0\xD2\xC08 A\0:\0\x8D\xC08 A\0:\0\xC8\xBF8 A\0:\0\x83\xBF8 A\0:\0\xBE\xBE8 A\0:\0\xF9\xBD8 A\0:\0\xB4\xBD8 A\0:\0\xEF\xBC8 A\0:\0\xAA\xBC8 A\0:\0\xE5\xBB8 A\0:\0\xA0\xBB8 A\0:\0\xDB\xBA8 A\0:\0\x96\xBA8 A\0:\0\xD1\xB98 A\0:\0\x8C\xB98 A\0:\0\xC7\xB88 A\0:\0\x82\xB88 A\0:\0\xBD\xB78 A\0:\0\xF8\xB68 A\0:\0\xB3\xB68 A\0:\0\xEE\xB58 A\0:\0\xA9\xB58 A\0:\0\xE4\xB48 A\xB0\xF1\xC1\0j!\x07 A\xA0\xB48j!@ A\x90\xA48j!A\0!A\0!@ -\0\0"\0A\0 j-\0\0A\x88-\0\0s"Aq\x1B \0 Aqls \0 Aqls \0 A\bqls"\0A\xF0qAv s \0Aqs \0AvAqs! Aj! A\xC4\0G Aj!\r\0\v \x07 :\0\0 A\xC5\0j! \x07Aj!\x07 Aj" A\xC0\0G\r\0\vA\0!@ \v A\xC5\0lj A\xB0\xF1\xC1\0j" j-\0\0 A\xF0\xAF:j" j-\0\0s:\0\0 \v Ar"\0A\xC5\0lj \0 j-\0\0 \0 j-\0\0s:\0\0 Aj"A\xC0\0G\r\0\vA\0! A\xE0\xB2:jA\0A\xB0\xF3\0\xFC\v\0@ A\xE0\xB2:j A(lj!\0 A\xA0\xB48j A\xC5\0lj!A\0!A\0!@ \0 Avj j"\b-\0At \b-\0\0r:\0\0 \0 Ar"\bAvj \bj"\b-\0At \b-\0\0r:\0\0 Aj! Aj"A"G\r\0\v \0 -\0D:\0"A\0!\b Aj"A\xC0\0G\r\0\vA\0!@ B\x007\xC0\xF5A B\x007\xB8\xF5A B\x007\xB0\xF5A B\x007\xA8\xF5A B\x007\xA0\xF5A B\x007\xA0\xF4A B\x007\xA8\xF4A B\x007\xB0\xF4A B\x007\xB8\xF4A B\x007\xC0\xF4AB\x7F!A\0!A \b \bAL\x1BAk"\0A \b \bAN\x1BA r"L@ \bAtA<q\xAD! A\xA0\xF5\xC1\0j \bAvA\xF8\xFF\xFF\xFF\x07qj!\x07 \0!@ )\xA0\xF5AA\x80)\0"$B\x7FB\0 J\x1B\x85 \x83 $B\x7FB\0 sA\0L\x1B\x85\x84" A\xE0\xB2:j A(lj")\0\x83\x857\xA0\xF5A )\xA8\xF5A )\b \x83\x857\xA8\xF5A )\xB0\xF5A ) \x83\x857\xB0\xF5A )\xB8\xF5A ) \x83\x857\xB8\xF5A )\xC0\xF5A ) \x83\x857\xC0\xF5AA\x80)\0B\0B\x7F \x07)\0 \x88\xA7Aq"\x1B\x85! I Aj!\r\0\v\v )\xA0\xF4A A\0A\x88-\0\0"\x07 s"Aq\x1B Aq ls Aq ls A\bq ls"Aq Avs AvAqs"A\0 \x07s""Aq\x1B Aq ls Aq ls A\bq ls"Aq A\xF0qAvs AvAqs"A\0 \x07s"Aq\x1B Aq ls Aq ls A\bq ls"A\xFFq"Av \x07s s"\x07 Avs"Aq A\0 "Aq\x1B Aqls Aqls A\bqls"Aq A\xF0qAvs AvAqs"l A\0 \x07Aq\x1Bs Aq ls A\bq ls"Aq A\xF0qAvs AvAqsA\x81\x84\x90\xC0\0l"A\xF0\xE1\xC3\x87\x07q"Av Avs s"A\xFFq\xAD" )\xA0\xF5A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83~\x85 A\bvAq\xAD"\x1B B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83~\x85 AvAq\xAD" B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83~\x85 AvAq\xAD" B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83~\x857\xA0\xF4A )\xA8\xF4A )\xA8\xF5A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 \x1B~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x857\xA8\xF4A )\xB0\xF4A )\xB0\xF5A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 \x1B~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x857\xB0\xF4A )\xB8\xF4A )\xB8\xF5A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 \x1B~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x857\xB8\xF4A )\xC0\xF4A )\xC0\xF5A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 \x1B~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83 ~\x857\xC0\xF4AA? \b \bA?N\x1B" \0N@ )\xC0\xF4A! )\xB8\xF4A! )\xB0\xF4A! )\xA8\xF4A!% )\xA0\xF4A!# \0!@ A\xE0\xB2:j A(lj" #A\x80)\0B\x7FB\0 sA\0J\x1B\x85 \x84"B\x7F\x85"\x1B\x83 )\0 \x83\x847\0 \x1B %\x83 )\b \x83\x847\b \x1B \x83 ) \x83\x847 \x1B \x83 ) \x83\x847 \x1B \x83 ) \x83\x847 K Aj!\r\0\v\v )\xC0\xF4A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!% )\xB8\xF4A"\x1BB\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!# )\xB0\xF4A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!! )\xA8\xF4A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83! )\xA0\xF4A"B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!" B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!& B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83! B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!) \x1BB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!, \x1BB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!\' \x1BB\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!( B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!- B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!* B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!$ B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!. B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!2 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!/ B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!0 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83!1 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83! \bAtA<q\xAD!+ \bAvAt!@ A\xE0\xB2:j \0A(lj" )\0 " j)\0 +\x88\xA7AqA\x81\x84\x90\xC0\0lA\0 \0 J\x1B"A\xF0\xE1\xC3\x87\x07q"Av Avs s"A\xFFq\xAD"~\x85 A\bvAq\xAD"\x1B~\x85 1 AvAq\xAD"~\x85 0 AvAq\xAD"~\x857\0 .~ 2~ \x1B /~ )\b ~\x85\x85\x85\x857\b -~ *~ \x1B $~ ) !~\x85\x85\x85\x857 ,~ \'~ \x1B (~ ) #~\x85\x85\x85\x857 &~ ~ \x1B )~ ) %~\x85\x85\x85\x857 \0A?I \0Aj!\0\r\0\v \xA7jAj! \bA\xC4\0F \bAj!\bE\r\0\vA\0!@ A\xE0\xB2:j A(lj!\0A\0!@ A\xC0\xF2\xC1\0j" j" \0 Avj-\0\0"\bAv:\0 \bAq:\0\0 Ar"j"\b \0 Avj-\0\0"Av:\0 \b Aq:\0\0 Aj! A\xCE\0I\r\0\v A\xA0\xB48j A\xC5\0lj A\xC5\0\xFC\n\0\0 Aj"A\xC0\0G\r\0\vA\0! A\0A\xDCA\xD8\v(\0\0\0 A\xA0\xF5\xC1\0jA\0A\xE8\0A\xD8\v(\0\0\0 A\xA0\xF4\xC1\0jA\0A\xE8\0A\xD8\v(\0\0\0 A\xE0\xB2:jA\0A\xB0\xF3\0A\xD8\v(\0\0\0A\0!\0@@@ \0 j"-\0 -\0 -\0 -\0\0 rrrr! \0A\xC0\0F@ A\xFFqE\rA\xC0\0!@A\xC4\0 Ak"A A\xC1\0 knj"\0 \0A\xC4\0N\x1B!\b A\xA0\xB48j A\xC5\0lj"\0Ak! \0A\xC5\0k!\rA\0!\x07 ! AM@ -\0\0!\0A\0!@ A\xE0\xA58j j" -\0\0A\x88-\0\0A\x7FA\0 \rj-\0\0\x1Bs" A\x7Fsq \0qs:\0\0 A\xFFq r! \bI Aj!\r\0\v\f@ A\xE0\xA58j j"A\x88-\0\0A\x7FA\0 \rj-\0\0\x1Bs \x07A\x7Fsq" -\0\0q"\0 -\0\0s:\0\0 \0A\bq\xAD! \0Aq\xAD!\x1B \0Aq\xAD! \0Aq\xAD!A\0!@ A\xA0\xB48j A\xC5\0lj"\0A\xC4\0j \0-\0D \0 j"1\0EB\b\x86 1\0\0\x84 1\0\x8AB\x86\x84 1\0\xCFB\x86\x84 1\0\x94B \x86\x84 1\0\xD9B(\x86\x84 1\0\x9EB0\x86\x85 1\0\xE3B8\x86\x85" ~ ~\x85 \x1B~\x85 ~\x85"B\x88 B\x88B\x8E\x9C\xB8\xF0\xE0\xC1\x83\x87\x83\x85 \x85"\xA7"Aqs:\0\0 \0 \0-\0\x89 A\bvAqs:\0\x89 \0 \0-\0\xCE AvAqs:\0\xCE \0 \0-\0\x93 AvAqs:\0\x93 \0 \0-\0\xD8 B \x88\xA7Aqs:\0\xD8 \0 \0-\0\x9D B(\x88\xA7Aqs:\0\x9D \0 \0-\0\xE2 B0\x88\xA7Aqs:\0\xE2 \0 \0-\0\xA7 B8\x88\xA7Aqs:\0\xA7 A\bj" I\r\0\v \x07 A\xFFqr!\x07 \bI Aj!\r\0\v !\f\v\0\v\0 -\0\x07 -\0 -\0 -\0rrr r! \0A\bj!\0\f\v\0\v\v A jA\0A\xE0\xF2\0\xFC\v\0 A\xA0\xB48jA\0A\xD0\xE6\xFC\v\0 Aj"A\x80G\r\v\vA\0!\b@ A\xE0\xA58j \bAlj!\0 A\xC0\xF2\xC1\0j!\x07A\0!\r !@A\0!A\0! \0!@ -\0\0"A\0 j-\0\0A\x88-\0\0s"Aq\x1B Aqls Aqls A\bqls"A\xF0qAvs Aqs AvAqs! Aj! Aj"AG\r\0\v \x07 :\0\0 Aj! \x07Aj!\x07 \rAj"\rA\xC0\0G\r\0\v A\xE0\xB2:j \bA\xD1\0lj! A\xF0\x9A:j \bAtj!A\0!@ j A\xC0\xF2\xC1\0j" j-\0\0 j-\0\0s:\0\0 Ar"j j-\0\0 j-\0\0s:\0\0 Aj"A\xC0\0G\r\0\v \0-\0:\0P \0)\0\b7\0H \0)\0\x007\0@ \bAj"\bAG\r\0\v A\xE0\xB2:j!A\0!@ j"\0 -\0\0 -\0Atr:\0\0 \0 -\0 -\0Atr:\0 \0 -\0 -\0Atr:\0 \0 -\0 -\0\x07Atr:\0 A\bj!A\xA0!\0 Aj"A\xA0G\r\0\vA\0!@ \0 j -\0\0 -\0Atr:\0\0 Aj! \0Aj!\0 Aj"AG\r\0\v )\xD0\xAF:7\0\xB2 )\xC8\xAF:7\0\xAA )\xC0\xAF:7\0\xA2A\xF8A:\0\0A\0\v A\xA0\xA8:jA\0A\x9C\x07A\xD8\v(\0\0\0 A\xF0\x9A:jA\0A\xA8\rA\xD8\v(\0\0\0 A\xA0\xB48jA\0A\xD0\xE6A\xD8\v(\0\0\0 A\x90\xA48jA\0A\xCDA\xD8\v(\0\0\0 A\0A\xEEA\xD8\v(\0\0\0 A\xA0\xF4\0jA\0A\xE8\xAF7A\xD8\v(\0\0\0 A\xC0\xF2\xC1\0jA\0A\x8EA\xD8\v(\0\0\0 A\x80\xF3\0jA\0A\x91A\xD8\v(\0\0\0 A jA\0A\xE0\xF2\0A\xD8\v(\0\0\0 $\0\v\xAB~\n\x7F#\0A\xC0\xAF9k"\n$\0A\xA0 \0)\07\0A\x98 \0)\0\b7\0A\x90 \0)\0\x007\0A\xB8A:\0\0 \nA\x80\xE9\0jA\0A\xC8\xA2\xFC\v\0 \0)\0\0! \0)\0\b! \0)\07\0 7\0\b 7\0\0A\xB8A\0:\0\0 \nA\xD0\xA89jA\xB0 A\b \nA\xE0\xA89j!\x07 \nA\xD0\x93j! \nA\x90\xD6\0j!\0@ \0 \x07 j"-\0\0"\bAv:\0 \0 \bAq:\0\0 \0 -\0"\bAv:\0 \0 \bAq:\0 \0 -\0"\bAv:\0 \0 \bAq:\0 \0 -\0"Av:\0\x07 \0 Aq:\0 \0A\bj!\0 Aj" A\xA0G\r\0\v \nA\xD0\x8Bj \nA\xD0\xA89jA\0!\0@ \0Al! \0!@ \nA\x90\xD6\0j Alj! \nA\xD0\x8Bj \fAtj!\bA\0! @ jAtj"\x07 \x07)\0 \b)\0"B\0 j-\0\0"\rA\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 \x07 \x07)\b \b)\b"B\0 \rA\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b \x07 \x07) \b)"B\0 \rA\x88-\0\0s"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 \x07 \x07) \b)"B\0 \rA\x88-\0\0s"\x07Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \x07\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Aj" AG\r\0\v \fAj!\f Aj"A\xC0\0G\r\0\v \0Aj"\0A\xC0\0G\r\0\vA\0!\0@ \0Al!\r \nA\x90\xD6\0j \0j!A\0!@ Al"j-\0\0!\bA\0! @ \nA\x80\xE9\0j \rjAtj"\x07 \x07)\0 jAtj"\f)\0"B\0A\x88-\0\0 \bs"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\0 \x07 \x07)\b \f)\b"B\0A\x88-\0\0 \bs"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857\b \x07 \x07) \f)"B\0A\x88-\0\0 \bs"\vAq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \v\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 \x07 \x07) \f)"B\0A\x88-\0\0 \bs"\x07Aq\x1B\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" \x07\xAD"B>\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85" B=\x86B?\x87\x83\x85 B\x88B\x91\xA2\xC4\x88\x91\xA2\xC4\x88\x83B~ B\x86B\xEE\xDD\xBB\xF7\xEE\xDD\xBB\xF7n\x83\x85 B<\x86B?\x87\x83\x857 Aj" AG\r\0\v Aj"A\xC0\0G\r\0\v \0Aj"\0AG\r\0\v \n)\xD8\xA897\0\b \n)\xD0\xA897\0\0A\0!\0A\0!\x07@ \0Al!\f \0!@ \n \x07Atj" \nA\x80\xE9\0j"\v \fjAtj"\b)\0"7\0 \b)\b"7\b \b)"7 \b)"7 \0 G@ Al \0jAt \vj"\b)\0\x857\0 \b)\b\x857\b \b)\x857 \b)\x857\v \x07Aj!\x07 Aj"AG\r\0\v \0Aj"\0AG\r\0\v Aj!\x07A\0! @ \x07 At"\bj"\0 \b \nj")\07\0 \0 )\07\0 \0 )\0\b7\0\b \0 )\0\x007\0\0 \x07 \bA r"j"\0 \nj")\07\0 \0 )\07\0 \0 )\0\b7\0\b \0 )\0\x007\0\0 Aj" A\x98G\r\0\v \n)\x98&7\0\xA8& \n)\x90&7\0\xA0& \n)\x88&7\0\x98& \n)\x80&7\0\x90& \nA\x90\xD6\0jA\0A\xEEA\xD8\v(\0\0\0 A\0A\x80\x90A\xD8\v(\0\0\0 \nA\x80\xE9\0jA\0A\xC8\xA2A\xD8\v(\0\0\0 \nA\xC0\xAF9j$\0A\0\v\0A\xBAA\0A\xF8-\0\0\x1B\v\b\0A\xF4(\0\v\b\0A\xF0(\0\v\b\0A\xEC(\0\v\0\v\v\xBF\0A\x80\b\v\xCA\0\0\0\0\0\0\0\x82\x80\0\0\0\0\0\0\x8A\x80\0\0\0\0\0\x80\0\x80\0\x80\0\0\0\x80\x8B\x80\0\0\0\0\0\0\0\0\x80\0\0\0\0\x81\x80\0\x80\0\0\0\x80 \x80\0\0\0\0\0\x80\x8A\0\0\0\0\0\0\0\x88\0\0\0\0\0\0\0 \x80\0\x80\0\0\0\0\n\0\0\x80\0\0\0\0\x8B\x80\0\x80\0\0\0\0\x8B\0\0\0\0\0\0\x80\x89\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\x80\x80\0\0\0\0\0\0\x80\n\x80\0\0\0\0\0\0\n\0\0\x80\0\0\0\x80\x81\x80\0\x80\0\0\0\x80\x80\x80\0\0\0\0\0\x80\0\0\x80\0\0\0\0\b\x80\0\x80\0\0\0\x80\b @\x80\x1B6\0A\xD4 \v9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\xB0\n\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\xD4\v\v@ @\0');
|
|
1382
|
+
}
|
|
1383
|
+
function getBinarySync(file) {
|
|
1384
|
+
return file;
|
|
1385
|
+
}
|
|
1386
|
+
async function getWasmBinary(binaryFile) {
|
|
1387
|
+
return getBinarySync(binaryFile);
|
|
1388
|
+
}
|
|
1389
|
+
async function instantiateArrayBuffer(binaryFile, imports) {
|
|
1390
|
+
try {
|
|
1391
|
+
var binary = await getWasmBinary(binaryFile);
|
|
1392
|
+
var instance = await WebAssembly.instantiate(binary, imports);
|
|
1393
|
+
return instance;
|
|
1394
|
+
} catch (reason) {
|
|
1395
|
+
err(`failed to asynchronously prepare wasm: ${reason}`);
|
|
1396
|
+
abort(reason);
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
async function instantiateAsync(binary, binaryFile, imports) {
|
|
1400
|
+
return instantiateArrayBuffer(binaryFile, imports);
|
|
1401
|
+
}
|
|
1402
|
+
function getWasmImports() {
|
|
1403
|
+
var imports = { a: wasmImports };
|
|
1404
|
+
return imports;
|
|
1405
|
+
}
|
|
1406
|
+
async function createWasm() {
|
|
1407
|
+
function receiveInstance(instance, module2) {
|
|
1408
|
+
wasmExports = instance.exports;
|
|
1409
|
+
assignWasmExports(wasmExports);
|
|
1410
|
+
updateMemoryViews();
|
|
1411
|
+
return wasmExports;
|
|
1412
|
+
}
|
|
1413
|
+
function receiveInstantiationResult(result2) {
|
|
1414
|
+
return receiveInstance(result2["instance"]);
|
|
1415
|
+
}
|
|
1416
|
+
var info = getWasmImports();
|
|
1417
|
+
if (Module["instantiateWasm"]) {
|
|
1418
|
+
return new Promise((resolve, reject) => {
|
|
1419
|
+
Module["instantiateWasm"](info, (inst, mod2) => {
|
|
1420
|
+
resolve(receiveInstance(inst, mod2));
|
|
1421
|
+
});
|
|
1422
|
+
});
|
|
1423
|
+
}
|
|
1424
|
+
wasmBinaryFile ??= findWasmBinary();
|
|
1425
|
+
var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
|
|
1426
|
+
var exports2 = receiveInstantiationResult(result);
|
|
1427
|
+
return exports2;
|
|
1428
|
+
}
|
|
1429
|
+
class ExitStatus {
|
|
1430
|
+
name = "ExitStatus";
|
|
1431
|
+
constructor(status) {
|
|
1432
|
+
this.message = `Program terminated with exit(${status})`;
|
|
1433
|
+
this.status = status;
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
var HEAP16;
|
|
1437
|
+
var HEAP32;
|
|
1438
|
+
var HEAP64;
|
|
1439
|
+
var HEAP8;
|
|
1440
|
+
var HEAPF32;
|
|
1441
|
+
var HEAPF64;
|
|
1442
|
+
var HEAPU16;
|
|
1443
|
+
var HEAPU32;
|
|
1444
|
+
var HEAPU64;
|
|
1445
|
+
var HEAPU8;
|
|
1446
|
+
var callRuntimeCallbacks = (callbacks) => {
|
|
1447
|
+
while (callbacks.length > 0) {
|
|
1448
|
+
callbacks.shift()(Module);
|
|
1449
|
+
}
|
|
1450
|
+
};
|
|
1451
|
+
var onPostRuns = [];
|
|
1452
|
+
var addOnPostRun = (cb) => onPostRuns.push(cb);
|
|
1453
|
+
var onPreRuns = [];
|
|
1454
|
+
var addOnPreRun = (cb) => onPreRuns.push(cb);
|
|
1455
|
+
var noExitRuntime = true;
|
|
1456
|
+
var __abort_js = () => abort("");
|
|
1457
|
+
var runtimeKeepaliveCounter = 0;
|
|
1458
|
+
var __emscripten_runtime_keepalive_clear = () => {
|
|
1459
|
+
noExitRuntime = false;
|
|
1460
|
+
runtimeKeepaliveCounter = 0;
|
|
1461
|
+
};
|
|
1462
|
+
var timers = {};
|
|
1463
|
+
var handleException = (e) => {
|
|
1464
|
+
if (e instanceof ExitStatus || e == "unwind") {
|
|
1465
|
+
return EXITSTATUS;
|
|
1466
|
+
}
|
|
1467
|
+
quit_(1, e);
|
|
1468
|
+
};
|
|
1469
|
+
var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
|
|
1470
|
+
var _proc_exit = (code) => {
|
|
1471
|
+
EXITSTATUS = code;
|
|
1472
|
+
if (!keepRuntimeAlive()) {
|
|
1473
|
+
Module["onExit"]?.(code);
|
|
1474
|
+
ABORT = true;
|
|
1475
|
+
}
|
|
1476
|
+
quit_(code, new ExitStatus(code));
|
|
1477
|
+
};
|
|
1478
|
+
var exitJS = (status, implicit) => {
|
|
1479
|
+
EXITSTATUS = status;
|
|
1480
|
+
_proc_exit(status);
|
|
1481
|
+
};
|
|
1482
|
+
var _exit = exitJS;
|
|
1483
|
+
var maybeExit = () => {
|
|
1484
|
+
if (!keepRuntimeAlive()) {
|
|
1485
|
+
try {
|
|
1486
|
+
_exit(EXITSTATUS);
|
|
1487
|
+
} catch (e) {
|
|
1488
|
+
handleException(e);
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
};
|
|
1492
|
+
var callUserCallback = (func) => {
|
|
1493
|
+
if (ABORT) {
|
|
1494
|
+
return;
|
|
1495
|
+
}
|
|
1496
|
+
try {
|
|
1497
|
+
return func();
|
|
1498
|
+
} catch (e) {
|
|
1499
|
+
handleException(e);
|
|
1500
|
+
} finally {
|
|
1501
|
+
maybeExit();
|
|
1502
|
+
}
|
|
1503
|
+
};
|
|
1504
|
+
var _emscripten_get_now = () => performance.now();
|
|
1505
|
+
var __setitimer_js = (which, timeout_ms) => {
|
|
1506
|
+
if (timers[which]) {
|
|
1507
|
+
clearTimeout(timers[which].id);
|
|
1508
|
+
delete timers[which];
|
|
1509
|
+
}
|
|
1510
|
+
if (!timeout_ms) return 0;
|
|
1511
|
+
var id = setTimeout(() => {
|
|
1512
|
+
delete timers[which];
|
|
1513
|
+
callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
|
|
1514
|
+
}, timeout_ms);
|
|
1515
|
+
timers[which] = { id, timeout_ms };
|
|
1516
|
+
return 0;
|
|
1517
|
+
};
|
|
1518
|
+
var readEmAsmArgsArray = [];
|
|
1519
|
+
var readEmAsmArgs = (sigPtr, buf) => {
|
|
1520
|
+
readEmAsmArgsArray.length = 0;
|
|
1521
|
+
var ch;
|
|
1522
|
+
while (ch = HEAPU8[sigPtr++]) {
|
|
1523
|
+
var wide = ch != 105;
|
|
1524
|
+
wide &= ch != 112;
|
|
1525
|
+
buf += wide && buf % 8 ? 4 : 0;
|
|
1526
|
+
readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >> 2] : ch == 106 ? HEAP64[buf >> 3] : ch == 105 ? HEAP32[buf >> 2] : HEAPF64[buf >> 3]);
|
|
1527
|
+
buf += wide ? 8 : 4;
|
|
1528
|
+
}
|
|
1529
|
+
return readEmAsmArgsArray;
|
|
1530
|
+
};
|
|
1531
|
+
var runEmAsmFunction = (code, sigPtr, argbuf) => {
|
|
1532
|
+
var args = readEmAsmArgs(sigPtr, argbuf);
|
|
1533
|
+
return ASM_CONSTS[code](...args);
|
|
1534
|
+
};
|
|
1535
|
+
var _emscripten_asm_const_int = (code, sigPtr, argbuf) => runEmAsmFunction(code, sigPtr, argbuf);
|
|
1536
|
+
var abortOnCannotGrowMemory = (requestedSize) => {
|
|
1537
|
+
abort("OOM");
|
|
1538
|
+
};
|
|
1539
|
+
var _emscripten_resize_heap = (requestedSize) => {
|
|
1540
|
+
var oldSize = HEAPU8.length;
|
|
1541
|
+
requestedSize >>>= 0;
|
|
1542
|
+
abortOnCannotGrowMemory(requestedSize);
|
|
1543
|
+
};
|
|
1544
|
+
{
|
|
1545
|
+
if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];
|
|
1546
|
+
if (Module["print"]) out = Module["print"];
|
|
1547
|
+
if (Module["printErr"]) err = Module["printErr"];
|
|
1548
|
+
if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
|
|
1549
|
+
if (Module["arguments"]) arguments_ = Module["arguments"];
|
|
1550
|
+
if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
|
|
1551
|
+
if (Module["preInit"]) {
|
|
1552
|
+
if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
|
|
1553
|
+
while (Module["preInit"].length > 0) {
|
|
1554
|
+
Module["preInit"].shift()();
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
var ASM_CONSTS = { 1500: ($0, $1) => {
|
|
1559
|
+
try {
|
|
1560
|
+
var arr = new Uint8Array($1);
|
|
1561
|
+
globalThis.crypto.getRandomValues(arr);
|
|
1562
|
+
Module.HEAPU8.set(arr, $0);
|
|
1563
|
+
return 0;
|
|
1564
|
+
} catch (e) {
|
|
1565
|
+
return -1;
|
|
1566
|
+
}
|
|
1567
|
+
} };
|
|
1568
|
+
var _mayo_init_buffers, _malloc, _get_msg_buf, _get_sig_buf, _get_sk_buf, _get_pk_buf, _get_sig_len, _keypair_from_seed, _sign, _verify, _free, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;
|
|
1569
|
+
function assignWasmExports(wasmExports2) {
|
|
1570
|
+
_mayo_init_buffers = Module["_mayo_init_buffers"] = wasmExports2["j"];
|
|
1571
|
+
_malloc = Module["_malloc"] = wasmExports2["k"];
|
|
1572
|
+
_get_msg_buf = Module["_get_msg_buf"] = wasmExports2["l"];
|
|
1573
|
+
_get_sig_buf = Module["_get_sig_buf"] = wasmExports2["m"];
|
|
1574
|
+
_get_sk_buf = Module["_get_sk_buf"] = wasmExports2["n"];
|
|
1575
|
+
_get_pk_buf = Module["_get_pk_buf"] = wasmExports2["o"];
|
|
1576
|
+
_get_sig_len = Module["_get_sig_len"] = wasmExports2["p"];
|
|
1577
|
+
_keypair_from_seed = Module["_keypair_from_seed"] = wasmExports2["q"];
|
|
1578
|
+
_sign = Module["_sign"] = wasmExports2["r"];
|
|
1579
|
+
_verify = Module["_verify"] = wasmExports2["s"];
|
|
1580
|
+
_free = Module["_free"] = wasmExports2["t"];
|
|
1581
|
+
__emscripten_timeout = wasmExports2["u"];
|
|
1582
|
+
memory = wasmMemory = wasmExports2["h"];
|
|
1583
|
+
__indirect_function_table = wasmExports2["__indirect_function_table"];
|
|
1584
|
+
}
|
|
1585
|
+
var wasmImports = { d: __abort_js, c: __emscripten_runtime_keepalive_clear, e: __setitimer_js, g: _emscripten_asm_const_int, f: _emscripten_resize_heap, a: _exit, b: _proc_exit };
|
|
1586
|
+
function run() {
|
|
1587
|
+
preRun();
|
|
1588
|
+
function doRun() {
|
|
1589
|
+
Module["calledRun"] = true;
|
|
1590
|
+
if (ABORT) return;
|
|
1591
|
+
initRuntime();
|
|
1592
|
+
readyPromiseResolve?.(Module);
|
|
1593
|
+
Module["onRuntimeInitialized"]?.();
|
|
1594
|
+
postRun();
|
|
1595
|
+
}
|
|
1596
|
+
if (Module["setStatus"]) {
|
|
1597
|
+
Module["setStatus"]("Running...");
|
|
1598
|
+
setTimeout(() => {
|
|
1599
|
+
setTimeout(() => Module["setStatus"](""), 1);
|
|
1600
|
+
doRun();
|
|
1601
|
+
}, 1);
|
|
1602
|
+
} else {
|
|
1603
|
+
doRun();
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
var wasmExports;
|
|
1607
|
+
wasmExports = await createWasm();
|
|
1608
|
+
run();
|
|
1609
|
+
if (runtimeInitialized) {
|
|
1610
|
+
moduleRtn = Module;
|
|
1611
|
+
} else {
|
|
1612
|
+
moduleRtn = new Promise((resolve, reject) => {
|
|
1613
|
+
readyPromiseResolve = resolve;
|
|
1614
|
+
readyPromiseReject = reject;
|
|
1615
|
+
});
|
|
1616
|
+
}
|
|
1617
|
+
;
|
|
1618
|
+
return moduleRtn;
|
|
1619
|
+
};
|
|
1620
|
+
})();
|
|
1621
|
+
if (typeof exports === "object" && typeof module === "object") {
|
|
1622
|
+
module.exports = Mayo2Module2;
|
|
1623
|
+
module.exports.default = Mayo2Module2;
|
|
1624
|
+
} else if (typeof define === "function" && define["amd"]) define([], () => Mayo2Module2);
|
|
1625
|
+
}
|
|
1626
|
+
});
|
|
1627
|
+
var import_mayo1 = __toESM(require_mayo1(), 1);
|
|
1628
|
+
var import_mayo2 = __toESM(require_mayo2(), 1);
|
|
1629
|
+
var DEFAULT_MAX_MSG_SIZE = 200 * 1024;
|
|
1630
|
+
var SIZES = {
|
|
1631
|
+
mayo1: { secretKeySize: 24, publicKeySize: 1420, signatureSize: 454 },
|
|
1632
|
+
mayo2: { secretKeySize: 24, publicKeySize: 4912, signatureSize: 186 }
|
|
1633
|
+
};
|
|
1634
|
+
function alloc(m, size) {
|
|
1635
|
+
const ptr = m._malloc(size);
|
|
1636
|
+
if (ptr === 0) throw new Error(`malloc failed (${size} bytes)`);
|
|
1637
|
+
return ptr;
|
|
1638
|
+
}
|
|
1639
|
+
var MayoSigner = class _MayoSigner {
|
|
1640
|
+
#m = null;
|
|
1641
|
+
#secretKey = null;
|
|
1642
|
+
#secretKeySize;
|
|
1643
|
+
#publicKeySize;
|
|
1644
|
+
#signatureSize;
|
|
1645
|
+
#maxMsgSize = DEFAULT_MAX_MSG_SIZE;
|
|
1646
|
+
#msgPtr = 0;
|
|
1647
|
+
#sigPtr = 0;
|
|
1648
|
+
#skPtr = 0;
|
|
1649
|
+
#pkPtr = 0;
|
|
1650
|
+
/** @param {string} [variant] Default: 'mayo1' */
|
|
1651
|
+
constructor(variant = "mayo1") {
|
|
1652
|
+
if (variant !== "mayo1" && variant !== "mayo2") throw new Error(`Unsupported MAYO variant: ${variant}`);
|
|
1653
|
+
this.variant = variant;
|
|
1654
|
+
({
|
|
1655
|
+
secretKeySize: this.#secretKeySize,
|
|
1656
|
+
publicKeySize: this.#publicKeySize,
|
|
1657
|
+
signatureSize: this.#signatureSize
|
|
1658
|
+
} = SIZES[variant]);
|
|
1659
|
+
}
|
|
1660
|
+
/** Factory — preferred way to instantiate.
|
|
1661
|
+
* @param {string} [variant] Default: 'mayo1' */
|
|
1662
|
+
static async create(variant = "mayo1") {
|
|
1663
|
+
const instance = new _MayoSigner(variant);
|
|
1664
|
+
await instance.init();
|
|
1665
|
+
return instance;
|
|
1666
|
+
}
|
|
1667
|
+
/** Loads the WASM module. Must be called before any crypto operation if not using create(). */
|
|
1668
|
+
async init(maxMsgSize = DEFAULT_MAX_MSG_SIZE) {
|
|
1669
|
+
if (this.#m) return;
|
|
1670
|
+
if (this.variant === "mayo1") this.#m = await (0, import_mayo1.default)();
|
|
1671
|
+
else if (this.variant === "mayo2") this.#m = await (0, import_mayo2.default)();
|
|
1672
|
+
else throw new Error(`Unsupported MAYO variant: ${this.variant}`);
|
|
1673
|
+
if (this.#m._mayo_init_buffers(maxMsgSize) !== 0) throw new Error("mayo_init_buffers failed");
|
|
1674
|
+
this.#maxMsgSize = maxMsgSize;
|
|
1675
|
+
this.#msgPtr = this.#m._get_msg_buf();
|
|
1676
|
+
this.#sigPtr = this.#m._get_sig_buf();
|
|
1677
|
+
this.#skPtr = this.#m._get_sk_buf();
|
|
1678
|
+
this.#pkPtr = this.#m._get_pk_buf();
|
|
1679
|
+
}
|
|
1680
|
+
/** Indicates whether the WASM module is loaded and ready for crypto operations. */
|
|
1681
|
+
get ready() {
|
|
1682
|
+
return this.#m !== null;
|
|
1683
|
+
}
|
|
1684
|
+
#assertReady() {
|
|
1685
|
+
if (!this.#m) throw new Error("MayoSigner not initialized \u2014 call await init() first");
|
|
1686
|
+
}
|
|
1687
|
+
/** Derives a keypair deterministically from a seed, and loads the secret key.
|
|
1688
|
+
* @param {Uint8Array} seed - Must be exactly 24 bytes
|
|
1689
|
+
* @param {boolean} storeSecretKey - Whether to store the secret key internally for subsequent sign() calls. Set to false if you only need to generate keypair.
|
|
1690
|
+
* @returns {Keypair|null} null if key generation failed */
|
|
1691
|
+
keypairFromSeed(seed, storeSecretKey = true) {
|
|
1692
|
+
this.#assertReady();
|
|
1693
|
+
if (!(seed instanceof Uint8Array) || seed.length !== this.#secretKeySize)
|
|
1694
|
+
throw new TypeError(`seed must be a Uint8Array of ${this.#secretKeySize} bytes`);
|
|
1695
|
+
const m = this.#m;
|
|
1696
|
+
const seedPtr = alloc(m, seed.length);
|
|
1697
|
+
const publicKeyPtr = alloc(m, this.#publicKeySize);
|
|
1698
|
+
const secretKeyPtr = alloc(m, this.#secretKeySize);
|
|
1699
|
+
m.HEAPU8.set(seed, seedPtr);
|
|
1700
|
+
const ret = m._keypair_from_seed(seedPtr, publicKeyPtr, secretKeyPtr);
|
|
1701
|
+
const keypair = ret === 0 ? {
|
|
1702
|
+
publicKey: m.HEAPU8.slice(publicKeyPtr, publicKeyPtr + this.#publicKeySize),
|
|
1703
|
+
secretKey: m.HEAPU8.slice(secretKeyPtr, secretKeyPtr + this.#secretKeySize)
|
|
1704
|
+
} : null;
|
|
1705
|
+
m._free(seedPtr);
|
|
1706
|
+
m._free(publicKeyPtr);
|
|
1707
|
+
m._free(secretKeyPtr);
|
|
1708
|
+
if (keypair && storeSecretKey) this.#secretKey = keypair.secretKey;
|
|
1709
|
+
return keypair;
|
|
1710
|
+
}
|
|
1711
|
+
/** Loads a secret key for subsequent sign() calls.
|
|
1712
|
+
* @param {Uint8Array} secretKey - Must be exactly 24 bytes */
|
|
1713
|
+
loadSecretKey(secretKey) {
|
|
1714
|
+
if (!(secretKey instanceof Uint8Array) || secretKey.length !== this.#secretKeySize)
|
|
1715
|
+
throw new TypeError(`secretKey must be a Uint8Array of ${this.#secretKeySize} bytes`);
|
|
1716
|
+
this.#secretKey = secretKey;
|
|
1717
|
+
}
|
|
1718
|
+
/** Signs a message using the loaded secret key.
|
|
1719
|
+
* @param {Uint8Array} msg @returns {Uint8Array|null} signature, or null if signing failed */
|
|
1720
|
+
sign(msg) {
|
|
1721
|
+
this.#assertReady();
|
|
1722
|
+
if (!this.#secretKey) throw new Error("No secret key loaded \u2014 call keypairFromSeed() or loadSecretKey() first");
|
|
1723
|
+
if (!(msg instanceof Uint8Array)) throw new TypeError("msg must be a Uint8Array");
|
|
1724
|
+
const m = this.#m;
|
|
1725
|
+
m.HEAPU8.set(msg, this.#msgPtr);
|
|
1726
|
+
m.HEAPU8.set(this.#secretKey, this.#skPtr);
|
|
1727
|
+
const ret = m._sign(msg.length);
|
|
1728
|
+
if (ret === 2) throw new Error(`Message too large for sign() \u2014 ${msg.length} bytes exceeds max ${this.#maxMsgSize} bytes`);
|
|
1729
|
+
if (ret !== 0) return null;
|
|
1730
|
+
return m.HEAPU8.slice(this.#sigPtr, this.#sigPtr + this.#signatureSize);
|
|
1731
|
+
}
|
|
1732
|
+
/** Verifies a signature against a message and public key.
|
|
1733
|
+
* @param {Uint8Array} msg @param {Uint8Array} signature @param {Uint8Array} publicKey */
|
|
1734
|
+
verify(msg, signature, publicKey) {
|
|
1735
|
+
this.#assertReady();
|
|
1736
|
+
if (!(msg instanceof Uint8Array)) throw new TypeError("msg must be a Uint8Array");
|
|
1737
|
+
if (!(signature instanceof Uint8Array) || signature.length !== this.#signatureSize)
|
|
1738
|
+
throw new TypeError(`signature must be a Uint8Array of ${this.#signatureSize} bytes`);
|
|
1739
|
+
if (!(publicKey instanceof Uint8Array) || publicKey.length !== this.#publicKeySize)
|
|
1740
|
+
throw new TypeError(`publicKey must be a Uint8Array of ${this.#publicKeySize} bytes`);
|
|
1741
|
+
const m = this.#m;
|
|
1742
|
+
m.HEAPU8.set(msg, this.#msgPtr);
|
|
1743
|
+
m.HEAPU8.set(signature, this.#sigPtr);
|
|
1744
|
+
m.HEAPU8.set(publicKey, this.#pkPtr);
|
|
1745
|
+
const ret = m._verify(msg.length);
|
|
1746
|
+
if (ret === 2) throw new Error(`Message too large for verify() \u2014 ${msg.length} bytes exceeds max ${this.#maxMsgSize} bytes`);
|
|
1747
|
+
return ret === 0;
|
|
1748
|
+
}
|
|
1749
|
+
};
|
|
1750
|
+
|
|
1751
|
+
// constants.mjs
|
|
1752
|
+
var PROTOCOL_VERSIONS = {
|
|
1753
|
+
"1": {
|
|
1754
|
+
variants: {
|
|
1755
|
+
/** @type {VariantDesc} */
|
|
1756
|
+
"mayo1": { sigSize: 454, pubKeySize: 1420, seedSize: 24 },
|
|
1757
|
+
/** @type {VariantDesc} */
|
|
1758
|
+
"mayo2": { sigSize: 186, pubKeySize: 4912, seedSize: 24 }
|
|
1759
|
+
},
|
|
1760
|
+
// If a future version needs a different wasm package, add a loader here.
|
|
1761
|
+
// For v1 both variants come from the same @pinkparrot/qsafe-mayo-wasm import.
|
|
1762
|
+
loader: (
|
|
1763
|
+
/** @param {string} variant */
|
|
1764
|
+
async (variant) => await MayoSigner.create(variant)
|
|
1765
|
+
)
|
|
1766
|
+
}
|
|
1767
|
+
};
|
|
1768
|
+
var CURRENT_VERSION = "1";
|
|
1769
|
+
var DEFAULT_VARIANT = "mayo1";
|
|
1770
|
+
var AVAILABLE_VERSIONS = Object.keys(PROTOCOL_VERSIONS);
|
|
1771
|
+
var HKDF_INFO_ED25519 = new TextEncoder().encode("qsafe-ed25519");
|
|
1772
|
+
var HKDF_INFO_MAYO = new TextEncoder().encode("qsafe-mayo");
|
|
1773
|
+
var ED25519_PRIV_SIZE = 32;
|
|
1774
|
+
var ED25519_PUB_SIZE = 32;
|
|
1775
|
+
var ED25519_SIG_SIZE = 64;
|
|
1776
|
+
var HEADER_SIZE = 3;
|
|
1777
|
+
var VARIANT_ID = { "mayo1": 1, "mayo2": 2 };
|
|
1778
|
+
var VARIANT_BY_ID = { 1: "mayo1", 2: "mayo2" };
|
|
1779
|
+
|
|
1780
|
+
// qsafeHelper.mjs
|
|
1781
|
+
var QsafeHelper = class {
|
|
1782
|
+
/** Derives ed25519 + mayo seeds from a master seed via HKDF-SHA256.
|
|
1783
|
+
* @param {Uint8Array} masterSeed @param {number} mayoSeedSize */
|
|
1784
|
+
static deriveSeeds(masterSeed, mayoSeedSize) {
|
|
1785
|
+
const edSeed = hkdf(sha256, masterSeed, void 0, HKDF_INFO_ED25519, ED25519_PRIV_SIZE);
|
|
1786
|
+
const mayoSeed = hkdf(sha256, masterSeed, void 0, HKDF_INFO_MAYO, mayoSeedSize);
|
|
1787
|
+
return { edSeed, mayoSeed };
|
|
1788
|
+
}
|
|
1789
|
+
/** Resolves version + variantId from a signature header. @param {Uint8Array} sig */
|
|
1790
|
+
static parseHeader(sig) {
|
|
1791
|
+
if (sig.length < HEADER_SIZE) return null;
|
|
1792
|
+
const reader = new BinaryReader(sig);
|
|
1793
|
+
const version = String(reader.readU16BE());
|
|
1794
|
+
const variantId = reader.readByte();
|
|
1795
|
+
const variant = VARIANT_BY_ID[variantId];
|
|
1796
|
+
const vProto = PROTOCOL_VERSIONS[version];
|
|
1797
|
+
if (!vProto || !variant || !vProto.variants[variant]) return null;
|
|
1798
|
+
return { version, variant, desc: vProto.variants[variant] };
|
|
1799
|
+
}
|
|
1800
|
+
};
|
|
1801
|
+
|
|
1802
|
+
// node_modules/@noble/curves/utils.js
|
|
1803
|
+
var _0n = /* @__PURE__ */ BigInt(0);
|
|
1804
|
+
var _1n = /* @__PURE__ */ BigInt(1);
|
|
1805
|
+
function abool(value, title = "") {
|
|
1806
|
+
if (typeof value !== "boolean") {
|
|
1807
|
+
const prefix = title && `"${title}" `;
|
|
1808
|
+
throw new Error(prefix + "expected boolean, got type=" + typeof value);
|
|
1809
|
+
}
|
|
1810
|
+
return value;
|
|
1811
|
+
}
|
|
1812
|
+
function abignumber(n) {
|
|
1813
|
+
if (typeof n === "bigint") {
|
|
1814
|
+
if (!isPosBig(n))
|
|
1815
|
+
throw new Error("positive bigint expected, got " + n);
|
|
1816
|
+
} else
|
|
1817
|
+
anumber(n);
|
|
1818
|
+
return n;
|
|
1819
|
+
}
|
|
1820
|
+
function hexToNumber(hex) {
|
|
1821
|
+
if (typeof hex !== "string")
|
|
1822
|
+
throw new Error("hex string expected, got " + typeof hex);
|
|
1823
|
+
return hex === "" ? _0n : BigInt("0x" + hex);
|
|
1824
|
+
}
|
|
1825
|
+
function bytesToNumberBE(bytes) {
|
|
1826
|
+
return hexToNumber(bytesToHex(bytes));
|
|
1827
|
+
}
|
|
1828
|
+
function bytesToNumberLE(bytes) {
|
|
1829
|
+
return hexToNumber(bytesToHex(copyBytes(abytes(bytes)).reverse()));
|
|
1830
|
+
}
|
|
1831
|
+
function numberToBytesBE(n, len) {
|
|
1832
|
+
anumber(len);
|
|
1833
|
+
n = abignumber(n);
|
|
1834
|
+
const res = hexToBytes(n.toString(16).padStart(len * 2, "0"));
|
|
1835
|
+
if (res.length !== len)
|
|
1836
|
+
throw new Error("number too large");
|
|
1837
|
+
return res;
|
|
1838
|
+
}
|
|
1839
|
+
function numberToBytesLE(n, len) {
|
|
1840
|
+
return numberToBytesBE(n, len).reverse();
|
|
1841
|
+
}
|
|
1842
|
+
function copyBytes(bytes) {
|
|
1843
|
+
return Uint8Array.from(bytes);
|
|
1844
|
+
}
|
|
1845
|
+
var isPosBig = (n) => typeof n === "bigint" && _0n <= n;
|
|
1846
|
+
function inRange(n, min, max) {
|
|
1847
|
+
return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;
|
|
1848
|
+
}
|
|
1849
|
+
function aInRange(title, n, min, max) {
|
|
1850
|
+
if (!inRange(n, min, max))
|
|
1851
|
+
throw new Error("expected valid " + title + ": " + min + " <= n < " + max + ", got " + n);
|
|
1852
|
+
}
|
|
1853
|
+
var bitMask = (n) => (_1n << BigInt(n)) - _1n;
|
|
1854
|
+
function validateObject(object, fields = {}, optFields = {}) {
|
|
1855
|
+
if (!object || typeof object !== "object")
|
|
1856
|
+
throw new Error("expected valid options object");
|
|
1857
|
+
function checkField(fieldName, expectedType, isOpt) {
|
|
1858
|
+
const val = object[fieldName];
|
|
1859
|
+
if (isOpt && val === void 0)
|
|
1860
|
+
return;
|
|
1861
|
+
const current = typeof val;
|
|
1862
|
+
if (current !== expectedType || val === null)
|
|
1863
|
+
throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`);
|
|
1864
|
+
}
|
|
1865
|
+
const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt));
|
|
1866
|
+
iter(fields, false);
|
|
1867
|
+
iter(optFields, true);
|
|
1868
|
+
}
|
|
1869
|
+
function memoized(fn) {
|
|
1870
|
+
const map = /* @__PURE__ */ new WeakMap();
|
|
1871
|
+
return (arg, ...args) => {
|
|
1872
|
+
const val = map.get(arg);
|
|
1873
|
+
if (val !== void 0)
|
|
1874
|
+
return val;
|
|
1875
|
+
const computed = fn(arg, ...args);
|
|
1876
|
+
map.set(arg, computed);
|
|
1877
|
+
return computed;
|
|
1878
|
+
};
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1881
|
+
// node_modules/@noble/curves/abstract/modular.js
|
|
1882
|
+
var _0n2 = /* @__PURE__ */ BigInt(0);
|
|
1883
|
+
var _1n2 = /* @__PURE__ */ BigInt(1);
|
|
1884
|
+
var _2n = /* @__PURE__ */ BigInt(2);
|
|
1885
|
+
var _3n = /* @__PURE__ */ BigInt(3);
|
|
1886
|
+
var _4n = /* @__PURE__ */ BigInt(4);
|
|
1887
|
+
var _5n = /* @__PURE__ */ BigInt(5);
|
|
1888
|
+
var _7n = /* @__PURE__ */ BigInt(7);
|
|
1889
|
+
var _8n = /* @__PURE__ */ BigInt(8);
|
|
1890
|
+
var _9n = /* @__PURE__ */ BigInt(9);
|
|
1891
|
+
var _16n = /* @__PURE__ */ BigInt(16);
|
|
1892
|
+
function mod(a, b) {
|
|
1893
|
+
const result = a % b;
|
|
1894
|
+
return result >= _0n2 ? result : b + result;
|
|
1895
|
+
}
|
|
1896
|
+
function pow2(x, power, modulo) {
|
|
1897
|
+
let res = x;
|
|
1898
|
+
while (power-- > _0n2) {
|
|
1899
|
+
res *= res;
|
|
1900
|
+
res %= modulo;
|
|
1901
|
+
}
|
|
1902
|
+
return res;
|
|
1903
|
+
}
|
|
1904
|
+
function invert(number, modulo) {
|
|
1905
|
+
if (number === _0n2)
|
|
1906
|
+
throw new Error("invert: expected non-zero number");
|
|
1907
|
+
if (modulo <= _0n2)
|
|
1908
|
+
throw new Error("invert: expected positive modulus, got " + modulo);
|
|
1909
|
+
let a = mod(number, modulo);
|
|
1910
|
+
let b = modulo;
|
|
1911
|
+
let x = _0n2, y = _1n2, u = _1n2, v = _0n2;
|
|
1912
|
+
while (a !== _0n2) {
|
|
1913
|
+
const q = b / a;
|
|
1914
|
+
const r = b % a;
|
|
1915
|
+
const m = x - u * q;
|
|
1916
|
+
const n = y - v * q;
|
|
1917
|
+
b = a, a = r, x = u, y = v, u = m, v = n;
|
|
1918
|
+
}
|
|
1919
|
+
const gcd = b;
|
|
1920
|
+
if (gcd !== _1n2)
|
|
1921
|
+
throw new Error("invert: does not exist");
|
|
1922
|
+
return mod(x, modulo);
|
|
1923
|
+
}
|
|
1924
|
+
function assertIsSquare(Fp, root, n) {
|
|
1925
|
+
if (!Fp.eql(Fp.sqr(root), n))
|
|
1926
|
+
throw new Error("Cannot find square root");
|
|
1927
|
+
}
|
|
1928
|
+
function sqrt3mod4(Fp, n) {
|
|
1929
|
+
const p1div4 = (Fp.ORDER + _1n2) / _4n;
|
|
1930
|
+
const root = Fp.pow(n, p1div4);
|
|
1931
|
+
assertIsSquare(Fp, root, n);
|
|
1932
|
+
return root;
|
|
1933
|
+
}
|
|
1934
|
+
function sqrt5mod8(Fp, n) {
|
|
1935
|
+
const p5div8 = (Fp.ORDER - _5n) / _8n;
|
|
1936
|
+
const n2 = Fp.mul(n, _2n);
|
|
1937
|
+
const v = Fp.pow(n2, p5div8);
|
|
1938
|
+
const nv = Fp.mul(n, v);
|
|
1939
|
+
const i = Fp.mul(Fp.mul(nv, _2n), v);
|
|
1940
|
+
const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));
|
|
1941
|
+
assertIsSquare(Fp, root, n);
|
|
1942
|
+
return root;
|
|
1943
|
+
}
|
|
1944
|
+
function sqrt9mod16(P) {
|
|
1945
|
+
const Fp_ = Field(P);
|
|
1946
|
+
const tn = tonelliShanks(P);
|
|
1947
|
+
const c1 = tn(Fp_, Fp_.neg(Fp_.ONE));
|
|
1948
|
+
const c2 = tn(Fp_, c1);
|
|
1949
|
+
const c3 = tn(Fp_, Fp_.neg(c1));
|
|
1950
|
+
const c4 = (P + _7n) / _16n;
|
|
1951
|
+
return (Fp, n) => {
|
|
1952
|
+
let tv1 = Fp.pow(n, c4);
|
|
1953
|
+
let tv2 = Fp.mul(tv1, c1);
|
|
1954
|
+
const tv3 = Fp.mul(tv1, c2);
|
|
1955
|
+
const tv4 = Fp.mul(tv1, c3);
|
|
1956
|
+
const e1 = Fp.eql(Fp.sqr(tv2), n);
|
|
1957
|
+
const e2 = Fp.eql(Fp.sqr(tv3), n);
|
|
1958
|
+
tv1 = Fp.cmov(tv1, tv2, e1);
|
|
1959
|
+
tv2 = Fp.cmov(tv4, tv3, e2);
|
|
1960
|
+
const e3 = Fp.eql(Fp.sqr(tv2), n);
|
|
1961
|
+
const root = Fp.cmov(tv1, tv2, e3);
|
|
1962
|
+
assertIsSquare(Fp, root, n);
|
|
1963
|
+
return root;
|
|
1964
|
+
};
|
|
1965
|
+
}
|
|
1966
|
+
function tonelliShanks(P) {
|
|
1967
|
+
if (P < _3n)
|
|
1968
|
+
throw new Error("sqrt is not defined for small field");
|
|
1969
|
+
let Q = P - _1n2;
|
|
1970
|
+
let S = 0;
|
|
1971
|
+
while (Q % _2n === _0n2) {
|
|
1972
|
+
Q /= _2n;
|
|
1973
|
+
S++;
|
|
1974
|
+
}
|
|
1975
|
+
let Z = _2n;
|
|
1976
|
+
const _Fp = Field(P);
|
|
1977
|
+
while (FpLegendre(_Fp, Z) === 1) {
|
|
1978
|
+
if (Z++ > 1e3)
|
|
1979
|
+
throw new Error("Cannot find square root: probably non-prime P");
|
|
1980
|
+
}
|
|
1981
|
+
if (S === 1)
|
|
1982
|
+
return sqrt3mod4;
|
|
1983
|
+
let cc = _Fp.pow(Z, Q);
|
|
1984
|
+
const Q1div2 = (Q + _1n2) / _2n;
|
|
1985
|
+
return function tonelliSlow(Fp, n) {
|
|
1986
|
+
if (Fp.is0(n))
|
|
1987
|
+
return n;
|
|
1988
|
+
if (FpLegendre(Fp, n) !== 1)
|
|
1989
|
+
throw new Error("Cannot find square root");
|
|
1990
|
+
let M = S;
|
|
1991
|
+
let c = Fp.mul(Fp.ONE, cc);
|
|
1992
|
+
let t = Fp.pow(n, Q);
|
|
1993
|
+
let R = Fp.pow(n, Q1div2);
|
|
1994
|
+
while (!Fp.eql(t, Fp.ONE)) {
|
|
1995
|
+
if (Fp.is0(t))
|
|
1996
|
+
return Fp.ZERO;
|
|
1997
|
+
let i = 1;
|
|
1998
|
+
let t_tmp = Fp.sqr(t);
|
|
1999
|
+
while (!Fp.eql(t_tmp, Fp.ONE)) {
|
|
2000
|
+
i++;
|
|
2001
|
+
t_tmp = Fp.sqr(t_tmp);
|
|
2002
|
+
if (i === M)
|
|
2003
|
+
throw new Error("Cannot find square root");
|
|
2004
|
+
}
|
|
2005
|
+
const exponent = _1n2 << BigInt(M - i - 1);
|
|
2006
|
+
const b = Fp.pow(c, exponent);
|
|
2007
|
+
M = i;
|
|
2008
|
+
c = Fp.sqr(b);
|
|
2009
|
+
t = Fp.mul(t, c);
|
|
2010
|
+
R = Fp.mul(R, b);
|
|
2011
|
+
}
|
|
2012
|
+
return R;
|
|
2013
|
+
};
|
|
2014
|
+
}
|
|
2015
|
+
function FpSqrt(P) {
|
|
2016
|
+
if (P % _4n === _3n)
|
|
2017
|
+
return sqrt3mod4;
|
|
2018
|
+
if (P % _8n === _5n)
|
|
2019
|
+
return sqrt5mod8;
|
|
2020
|
+
if (P % _16n === _9n)
|
|
2021
|
+
return sqrt9mod16(P);
|
|
2022
|
+
return tonelliShanks(P);
|
|
2023
|
+
}
|
|
2024
|
+
var isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n2) === _1n2;
|
|
2025
|
+
var FIELD_FIELDS = [
|
|
2026
|
+
"create",
|
|
2027
|
+
"isValid",
|
|
2028
|
+
"is0",
|
|
2029
|
+
"neg",
|
|
2030
|
+
"inv",
|
|
2031
|
+
"sqrt",
|
|
2032
|
+
"sqr",
|
|
2033
|
+
"eql",
|
|
2034
|
+
"add",
|
|
2035
|
+
"sub",
|
|
2036
|
+
"mul",
|
|
2037
|
+
"pow",
|
|
2038
|
+
"div",
|
|
2039
|
+
"addN",
|
|
2040
|
+
"subN",
|
|
2041
|
+
"mulN",
|
|
2042
|
+
"sqrN"
|
|
2043
|
+
];
|
|
2044
|
+
function validateField(field) {
|
|
2045
|
+
const initial = {
|
|
2046
|
+
ORDER: "bigint",
|
|
2047
|
+
BYTES: "number",
|
|
2048
|
+
BITS: "number"
|
|
2049
|
+
};
|
|
2050
|
+
const opts = FIELD_FIELDS.reduce((map, val) => {
|
|
2051
|
+
map[val] = "function";
|
|
2052
|
+
return map;
|
|
2053
|
+
}, initial);
|
|
2054
|
+
validateObject(field, opts);
|
|
2055
|
+
return field;
|
|
2056
|
+
}
|
|
2057
|
+
function FpPow(Fp, num, power) {
|
|
2058
|
+
if (power < _0n2)
|
|
2059
|
+
throw new Error("invalid exponent, negatives unsupported");
|
|
2060
|
+
if (power === _0n2)
|
|
2061
|
+
return Fp.ONE;
|
|
2062
|
+
if (power === _1n2)
|
|
2063
|
+
return num;
|
|
2064
|
+
let p = Fp.ONE;
|
|
2065
|
+
let d = num;
|
|
2066
|
+
while (power > _0n2) {
|
|
2067
|
+
if (power & _1n2)
|
|
2068
|
+
p = Fp.mul(p, d);
|
|
2069
|
+
d = Fp.sqr(d);
|
|
2070
|
+
power >>= _1n2;
|
|
2071
|
+
}
|
|
2072
|
+
return p;
|
|
2073
|
+
}
|
|
2074
|
+
function FpInvertBatch(Fp, nums, passZero = false) {
|
|
2075
|
+
const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : void 0);
|
|
2076
|
+
const multipliedAcc = nums.reduce((acc, num, i) => {
|
|
2077
|
+
if (Fp.is0(num))
|
|
2078
|
+
return acc;
|
|
2079
|
+
inverted[i] = acc;
|
|
2080
|
+
return Fp.mul(acc, num);
|
|
2081
|
+
}, Fp.ONE);
|
|
2082
|
+
const invertedAcc = Fp.inv(multipliedAcc);
|
|
2083
|
+
nums.reduceRight((acc, num, i) => {
|
|
2084
|
+
if (Fp.is0(num))
|
|
2085
|
+
return acc;
|
|
2086
|
+
inverted[i] = Fp.mul(acc, inverted[i]);
|
|
2087
|
+
return Fp.mul(acc, num);
|
|
2088
|
+
}, invertedAcc);
|
|
2089
|
+
return inverted;
|
|
2090
|
+
}
|
|
2091
|
+
function FpLegendre(Fp, n) {
|
|
2092
|
+
const p1mod2 = (Fp.ORDER - _1n2) / _2n;
|
|
2093
|
+
const powered = Fp.pow(n, p1mod2);
|
|
2094
|
+
const yes = Fp.eql(powered, Fp.ONE);
|
|
2095
|
+
const zero = Fp.eql(powered, Fp.ZERO);
|
|
2096
|
+
const no = Fp.eql(powered, Fp.neg(Fp.ONE));
|
|
2097
|
+
if (!yes && !zero && !no)
|
|
2098
|
+
throw new Error("invalid Legendre symbol result");
|
|
2099
|
+
return yes ? 1 : zero ? 0 : -1;
|
|
2100
|
+
}
|
|
2101
|
+
function nLength(n, nBitLength) {
|
|
2102
|
+
if (nBitLength !== void 0)
|
|
2103
|
+
anumber(nBitLength);
|
|
2104
|
+
const _nBitLength = nBitLength !== void 0 ? nBitLength : n.toString(2).length;
|
|
2105
|
+
const nByteLength = Math.ceil(_nBitLength / 8);
|
|
2106
|
+
return { nBitLength: _nBitLength, nByteLength };
|
|
2107
|
+
}
|
|
2108
|
+
var _Field = class {
|
|
2109
|
+
ORDER;
|
|
2110
|
+
BITS;
|
|
2111
|
+
BYTES;
|
|
2112
|
+
isLE;
|
|
2113
|
+
ZERO = _0n2;
|
|
2114
|
+
ONE = _1n2;
|
|
2115
|
+
_lengths;
|
|
2116
|
+
_sqrt;
|
|
2117
|
+
// cached sqrt
|
|
2118
|
+
_mod;
|
|
2119
|
+
constructor(ORDER, opts = {}) {
|
|
2120
|
+
if (ORDER <= _0n2)
|
|
2121
|
+
throw new Error("invalid field: expected ORDER > 0, got " + ORDER);
|
|
2122
|
+
let _nbitLength = void 0;
|
|
2123
|
+
this.isLE = false;
|
|
2124
|
+
if (opts != null && typeof opts === "object") {
|
|
2125
|
+
if (typeof opts.BITS === "number")
|
|
2126
|
+
_nbitLength = opts.BITS;
|
|
2127
|
+
if (typeof opts.sqrt === "function")
|
|
2128
|
+
this.sqrt = opts.sqrt;
|
|
2129
|
+
if (typeof opts.isLE === "boolean")
|
|
2130
|
+
this.isLE = opts.isLE;
|
|
2131
|
+
if (opts.allowedLengths)
|
|
2132
|
+
this._lengths = opts.allowedLengths?.slice();
|
|
2133
|
+
if (typeof opts.modFromBytes === "boolean")
|
|
2134
|
+
this._mod = opts.modFromBytes;
|
|
2135
|
+
}
|
|
2136
|
+
const { nBitLength, nByteLength } = nLength(ORDER, _nbitLength);
|
|
2137
|
+
if (nByteLength > 2048)
|
|
2138
|
+
throw new Error("invalid field: expected ORDER of <= 2048 bytes");
|
|
2139
|
+
this.ORDER = ORDER;
|
|
2140
|
+
this.BITS = nBitLength;
|
|
2141
|
+
this.BYTES = nByteLength;
|
|
2142
|
+
this._sqrt = void 0;
|
|
2143
|
+
Object.preventExtensions(this);
|
|
2144
|
+
}
|
|
2145
|
+
create(num) {
|
|
2146
|
+
return mod(num, this.ORDER);
|
|
2147
|
+
}
|
|
2148
|
+
isValid(num) {
|
|
2149
|
+
if (typeof num !== "bigint")
|
|
2150
|
+
throw new Error("invalid field element: expected bigint, got " + typeof num);
|
|
2151
|
+
return _0n2 <= num && num < this.ORDER;
|
|
2152
|
+
}
|
|
2153
|
+
is0(num) {
|
|
2154
|
+
return num === _0n2;
|
|
2155
|
+
}
|
|
2156
|
+
// is valid and invertible
|
|
2157
|
+
isValidNot0(num) {
|
|
2158
|
+
return !this.is0(num) && this.isValid(num);
|
|
2159
|
+
}
|
|
2160
|
+
isOdd(num) {
|
|
2161
|
+
return (num & _1n2) === _1n2;
|
|
2162
|
+
}
|
|
2163
|
+
neg(num) {
|
|
2164
|
+
return mod(-num, this.ORDER);
|
|
2165
|
+
}
|
|
2166
|
+
eql(lhs, rhs) {
|
|
2167
|
+
return lhs === rhs;
|
|
2168
|
+
}
|
|
2169
|
+
sqr(num) {
|
|
2170
|
+
return mod(num * num, this.ORDER);
|
|
2171
|
+
}
|
|
2172
|
+
add(lhs, rhs) {
|
|
2173
|
+
return mod(lhs + rhs, this.ORDER);
|
|
2174
|
+
}
|
|
2175
|
+
sub(lhs, rhs) {
|
|
2176
|
+
return mod(lhs - rhs, this.ORDER);
|
|
2177
|
+
}
|
|
2178
|
+
mul(lhs, rhs) {
|
|
2179
|
+
return mod(lhs * rhs, this.ORDER);
|
|
2180
|
+
}
|
|
2181
|
+
pow(num, power) {
|
|
2182
|
+
return FpPow(this, num, power);
|
|
2183
|
+
}
|
|
2184
|
+
div(lhs, rhs) {
|
|
2185
|
+
return mod(lhs * invert(rhs, this.ORDER), this.ORDER);
|
|
2186
|
+
}
|
|
2187
|
+
// Same as above, but doesn't normalize
|
|
2188
|
+
sqrN(num) {
|
|
2189
|
+
return num * num;
|
|
2190
|
+
}
|
|
2191
|
+
addN(lhs, rhs) {
|
|
2192
|
+
return lhs + rhs;
|
|
2193
|
+
}
|
|
2194
|
+
subN(lhs, rhs) {
|
|
2195
|
+
return lhs - rhs;
|
|
2196
|
+
}
|
|
2197
|
+
mulN(lhs, rhs) {
|
|
2198
|
+
return lhs * rhs;
|
|
2199
|
+
}
|
|
2200
|
+
inv(num) {
|
|
2201
|
+
return invert(num, this.ORDER);
|
|
2202
|
+
}
|
|
2203
|
+
sqrt(num) {
|
|
2204
|
+
if (!this._sqrt)
|
|
2205
|
+
this._sqrt = FpSqrt(this.ORDER);
|
|
2206
|
+
return this._sqrt(this, num);
|
|
2207
|
+
}
|
|
2208
|
+
toBytes(num) {
|
|
2209
|
+
return this.isLE ? numberToBytesLE(num, this.BYTES) : numberToBytesBE(num, this.BYTES);
|
|
2210
|
+
}
|
|
2211
|
+
fromBytes(bytes, skipValidation = false) {
|
|
2212
|
+
abytes(bytes);
|
|
2213
|
+
const { _lengths: allowedLengths, BYTES, isLE, ORDER, _mod: modFromBytes } = this;
|
|
2214
|
+
if (allowedLengths) {
|
|
2215
|
+
if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {
|
|
2216
|
+
throw new Error("Field.fromBytes: expected " + allowedLengths + " bytes, got " + bytes.length);
|
|
2217
|
+
}
|
|
2218
|
+
const padded = new Uint8Array(BYTES);
|
|
2219
|
+
padded.set(bytes, isLE ? 0 : padded.length - bytes.length);
|
|
2220
|
+
bytes = padded;
|
|
2221
|
+
}
|
|
2222
|
+
if (bytes.length !== BYTES)
|
|
2223
|
+
throw new Error("Field.fromBytes: expected " + BYTES + " bytes, got " + bytes.length);
|
|
2224
|
+
let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);
|
|
2225
|
+
if (modFromBytes)
|
|
2226
|
+
scalar = mod(scalar, ORDER);
|
|
2227
|
+
if (!skipValidation) {
|
|
2228
|
+
if (!this.isValid(scalar))
|
|
2229
|
+
throw new Error("invalid field element: outside of range 0..ORDER");
|
|
2230
|
+
}
|
|
2231
|
+
return scalar;
|
|
2232
|
+
}
|
|
2233
|
+
// TODO: we don't need it here, move out to separate fn
|
|
2234
|
+
invertBatch(lst) {
|
|
2235
|
+
return FpInvertBatch(this, lst);
|
|
2236
|
+
}
|
|
2237
|
+
// We can't move this out because Fp6, Fp12 implement it
|
|
2238
|
+
// and it's unclear what to return in there.
|
|
2239
|
+
cmov(a, b, condition) {
|
|
2240
|
+
return condition ? b : a;
|
|
2241
|
+
}
|
|
2242
|
+
};
|
|
2243
|
+
function Field(ORDER, opts = {}) {
|
|
2244
|
+
return new _Field(ORDER, opts);
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
// node_modules/@noble/curves/abstract/curve.js
|
|
2248
|
+
var _0n3 = /* @__PURE__ */ BigInt(0);
|
|
2249
|
+
var _1n3 = /* @__PURE__ */ BigInt(1);
|
|
2250
|
+
function negateCt(condition, item) {
|
|
2251
|
+
const neg = item.negate();
|
|
2252
|
+
return condition ? neg : item;
|
|
2253
|
+
}
|
|
2254
|
+
function normalizeZ(c, points) {
|
|
2255
|
+
const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));
|
|
2256
|
+
return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));
|
|
2257
|
+
}
|
|
2258
|
+
function validateW(W, bits) {
|
|
2259
|
+
if (!Number.isSafeInteger(W) || W <= 0 || W > bits)
|
|
2260
|
+
throw new Error("invalid window size, expected [1.." + bits + "], got W=" + W);
|
|
2261
|
+
}
|
|
2262
|
+
function calcWOpts(W, scalarBits) {
|
|
2263
|
+
validateW(W, scalarBits);
|
|
2264
|
+
const windows = Math.ceil(scalarBits / W) + 1;
|
|
2265
|
+
const windowSize = 2 ** (W - 1);
|
|
2266
|
+
const maxNumber = 2 ** W;
|
|
2267
|
+
const mask = bitMask(W);
|
|
2268
|
+
const shiftBy = BigInt(W);
|
|
2269
|
+
return { windows, windowSize, mask, maxNumber, shiftBy };
|
|
2270
|
+
}
|
|
2271
|
+
function calcOffsets(n, window, wOpts) {
|
|
2272
|
+
const { windowSize, mask, maxNumber, shiftBy } = wOpts;
|
|
2273
|
+
let wbits = Number(n & mask);
|
|
2274
|
+
let nextN = n >> shiftBy;
|
|
2275
|
+
if (wbits > windowSize) {
|
|
2276
|
+
wbits -= maxNumber;
|
|
2277
|
+
nextN += _1n3;
|
|
2278
|
+
}
|
|
2279
|
+
const offsetStart = window * windowSize;
|
|
2280
|
+
const offset = offsetStart + Math.abs(wbits) - 1;
|
|
2281
|
+
const isZero = wbits === 0;
|
|
2282
|
+
const isNeg = wbits < 0;
|
|
2283
|
+
const isNegF = window % 2 !== 0;
|
|
2284
|
+
const offsetF = offsetStart;
|
|
2285
|
+
return { nextN, offset, isZero, isNeg, isNegF, offsetF };
|
|
2286
|
+
}
|
|
2287
|
+
var pointPrecomputes = /* @__PURE__ */ new WeakMap();
|
|
2288
|
+
var pointWindowSizes = /* @__PURE__ */ new WeakMap();
|
|
2289
|
+
function getW(P) {
|
|
2290
|
+
return pointWindowSizes.get(P) || 1;
|
|
2291
|
+
}
|
|
2292
|
+
function assert0(n) {
|
|
2293
|
+
if (n !== _0n3)
|
|
2294
|
+
throw new Error("invalid wNAF");
|
|
2295
|
+
}
|
|
2296
|
+
var wNAF = class {
|
|
2297
|
+
BASE;
|
|
2298
|
+
ZERO;
|
|
2299
|
+
Fn;
|
|
2300
|
+
bits;
|
|
2301
|
+
// Parametrized with a given Point class (not individual point)
|
|
2302
|
+
constructor(Point, bits) {
|
|
2303
|
+
this.BASE = Point.BASE;
|
|
2304
|
+
this.ZERO = Point.ZERO;
|
|
2305
|
+
this.Fn = Point.Fn;
|
|
2306
|
+
this.bits = bits;
|
|
2307
|
+
}
|
|
2308
|
+
// non-const time multiplication ladder
|
|
2309
|
+
_unsafeLadder(elm, n, p = this.ZERO) {
|
|
2310
|
+
let d = elm;
|
|
2311
|
+
while (n > _0n3) {
|
|
2312
|
+
if (n & _1n3)
|
|
2313
|
+
p = p.add(d);
|
|
2314
|
+
d = d.double();
|
|
2315
|
+
n >>= _1n3;
|
|
2316
|
+
}
|
|
2317
|
+
return p;
|
|
2318
|
+
}
|
|
2319
|
+
/**
|
|
2320
|
+
* Creates a wNAF precomputation window. Used for caching.
|
|
2321
|
+
* Default window size is set by `utils.precompute()` and is equal to 8.
|
|
2322
|
+
* Number of precomputed points depends on the curve size:
|
|
2323
|
+
* 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:
|
|
2324
|
+
* - 𝑊 is the window size
|
|
2325
|
+
* - 𝑛 is the bitlength of the curve order.
|
|
2326
|
+
* For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.
|
|
2327
|
+
* @param point Point instance
|
|
2328
|
+
* @param W window size
|
|
2329
|
+
* @returns precomputed point tables flattened to a single array
|
|
2330
|
+
*/
|
|
2331
|
+
precomputeWindow(point, W) {
|
|
2332
|
+
const { windows, windowSize } = calcWOpts(W, this.bits);
|
|
2333
|
+
const points = [];
|
|
2334
|
+
let p = point;
|
|
2335
|
+
let base = p;
|
|
2336
|
+
for (let window = 0; window < windows; window++) {
|
|
2337
|
+
base = p;
|
|
2338
|
+
points.push(base);
|
|
2339
|
+
for (let i = 1; i < windowSize; i++) {
|
|
2340
|
+
base = base.add(p);
|
|
2341
|
+
points.push(base);
|
|
2342
|
+
}
|
|
2343
|
+
p = base.double();
|
|
2344
|
+
}
|
|
2345
|
+
return points;
|
|
2346
|
+
}
|
|
2347
|
+
/**
|
|
2348
|
+
* Implements ec multiplication using precomputed tables and w-ary non-adjacent form.
|
|
2349
|
+
* More compact implementation:
|
|
2350
|
+
* https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541
|
|
2351
|
+
* @returns real and fake (for const-time) points
|
|
2352
|
+
*/
|
|
2353
|
+
wNAF(W, precomputes, n) {
|
|
2354
|
+
if (!this.Fn.isValid(n))
|
|
2355
|
+
throw new Error("invalid scalar");
|
|
2356
|
+
let p = this.ZERO;
|
|
2357
|
+
let f = this.BASE;
|
|
2358
|
+
const wo = calcWOpts(W, this.bits);
|
|
2359
|
+
for (let window = 0; window < wo.windows; window++) {
|
|
2360
|
+
const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);
|
|
2361
|
+
n = nextN;
|
|
2362
|
+
if (isZero) {
|
|
2363
|
+
f = f.add(negateCt(isNegF, precomputes[offsetF]));
|
|
2364
|
+
} else {
|
|
2365
|
+
p = p.add(negateCt(isNeg, precomputes[offset]));
|
|
2366
|
+
}
|
|
2367
|
+
}
|
|
2368
|
+
assert0(n);
|
|
2369
|
+
return { p, f };
|
|
2370
|
+
}
|
|
2371
|
+
/**
|
|
2372
|
+
* Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.
|
|
2373
|
+
* @param acc accumulator point to add result of multiplication
|
|
2374
|
+
* @returns point
|
|
2375
|
+
*/
|
|
2376
|
+
wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {
|
|
2377
|
+
const wo = calcWOpts(W, this.bits);
|
|
2378
|
+
for (let window = 0; window < wo.windows; window++) {
|
|
2379
|
+
if (n === _0n3)
|
|
2380
|
+
break;
|
|
2381
|
+
const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);
|
|
2382
|
+
n = nextN;
|
|
2383
|
+
if (isZero) {
|
|
2384
|
+
continue;
|
|
2385
|
+
} else {
|
|
2386
|
+
const item = precomputes[offset];
|
|
2387
|
+
acc = acc.add(isNeg ? item.negate() : item);
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
assert0(n);
|
|
2391
|
+
return acc;
|
|
2392
|
+
}
|
|
2393
|
+
getPrecomputes(W, point, transform) {
|
|
2394
|
+
let comp = pointPrecomputes.get(point);
|
|
2395
|
+
if (!comp) {
|
|
2396
|
+
comp = this.precomputeWindow(point, W);
|
|
2397
|
+
if (W !== 1) {
|
|
2398
|
+
if (typeof transform === "function")
|
|
2399
|
+
comp = transform(comp);
|
|
2400
|
+
pointPrecomputes.set(point, comp);
|
|
2401
|
+
}
|
|
2402
|
+
}
|
|
2403
|
+
return comp;
|
|
2404
|
+
}
|
|
2405
|
+
cached(point, scalar, transform) {
|
|
2406
|
+
const W = getW(point);
|
|
2407
|
+
return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);
|
|
2408
|
+
}
|
|
2409
|
+
unsafe(point, scalar, transform, prev) {
|
|
2410
|
+
const W = getW(point);
|
|
2411
|
+
if (W === 1)
|
|
2412
|
+
return this._unsafeLadder(point, scalar, prev);
|
|
2413
|
+
return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);
|
|
2414
|
+
}
|
|
2415
|
+
// We calculate precomputes for elliptic curve point multiplication
|
|
2416
|
+
// using windowed method. This specifies window size and
|
|
2417
|
+
// stores precomputed values. Usually only base point would be precomputed.
|
|
2418
|
+
createCache(P, W) {
|
|
2419
|
+
validateW(W, this.bits);
|
|
2420
|
+
pointWindowSizes.set(P, W);
|
|
2421
|
+
pointPrecomputes.delete(P);
|
|
2422
|
+
}
|
|
2423
|
+
hasCache(elm) {
|
|
2424
|
+
return getW(elm) !== 1;
|
|
2425
|
+
}
|
|
2426
|
+
};
|
|
2427
|
+
function createField(order, field, isLE) {
|
|
2428
|
+
if (field) {
|
|
2429
|
+
if (field.ORDER !== order)
|
|
2430
|
+
throw new Error("Field.ORDER must match order: Fp == p, Fn == n");
|
|
2431
|
+
validateField(field);
|
|
2432
|
+
return field;
|
|
2433
|
+
} else {
|
|
2434
|
+
return Field(order, { isLE });
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
function createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {
|
|
2438
|
+
if (FpFnLE === void 0)
|
|
2439
|
+
FpFnLE = type === "edwards";
|
|
2440
|
+
if (!CURVE || typeof CURVE !== "object")
|
|
2441
|
+
throw new Error(`expected valid ${type} CURVE object`);
|
|
2442
|
+
for (const p of ["p", "n", "h"]) {
|
|
2443
|
+
const val = CURVE[p];
|
|
2444
|
+
if (!(typeof val === "bigint" && val > _0n3))
|
|
2445
|
+
throw new Error(`CURVE.${p} must be positive bigint`);
|
|
2446
|
+
}
|
|
2447
|
+
const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);
|
|
2448
|
+
const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);
|
|
2449
|
+
const _b = type === "weierstrass" ? "b" : "d";
|
|
2450
|
+
const params = ["Gx", "Gy", "a", _b];
|
|
2451
|
+
for (const p of params) {
|
|
2452
|
+
if (!Fp.isValid(CURVE[p]))
|
|
2453
|
+
throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);
|
|
2454
|
+
}
|
|
2455
|
+
CURVE = Object.freeze(Object.assign({}, CURVE));
|
|
2456
|
+
return { CURVE, Fp, Fn };
|
|
2457
|
+
}
|
|
2458
|
+
function createKeygen(randomSecretKey, getPublicKey) {
|
|
2459
|
+
return function keygen(seed) {
|
|
2460
|
+
const secretKey = randomSecretKey(seed);
|
|
2461
|
+
return { secretKey, publicKey: getPublicKey(secretKey) };
|
|
2462
|
+
};
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
// node_modules/@noble/curves/abstract/edwards.js
|
|
2466
|
+
var _0n4 = BigInt(0);
|
|
2467
|
+
var _1n4 = BigInt(1);
|
|
2468
|
+
var _2n2 = BigInt(2);
|
|
2469
|
+
var _8n2 = BigInt(8);
|
|
2470
|
+
function isEdValidXY(Fp, CURVE, x, y) {
|
|
2471
|
+
const x2 = Fp.sqr(x);
|
|
2472
|
+
const y2 = Fp.sqr(y);
|
|
2473
|
+
const left = Fp.add(Fp.mul(CURVE.a, x2), y2);
|
|
2474
|
+
const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));
|
|
2475
|
+
return Fp.eql(left, right);
|
|
2476
|
+
}
|
|
2477
|
+
function edwards(params, extraOpts = {}) {
|
|
2478
|
+
const validated = createCurveFields("edwards", params, extraOpts, extraOpts.FpFnLE);
|
|
2479
|
+
const { Fp, Fn } = validated;
|
|
2480
|
+
let CURVE = validated.CURVE;
|
|
2481
|
+
const { h: cofactor } = CURVE;
|
|
2482
|
+
validateObject(extraOpts, {}, { uvRatio: "function" });
|
|
2483
|
+
const MASK = _2n2 << BigInt(Fn.BYTES * 8) - _1n4;
|
|
2484
|
+
const modP = (n) => Fp.create(n);
|
|
2485
|
+
const uvRatio2 = extraOpts.uvRatio || ((u, v) => {
|
|
2486
|
+
try {
|
|
2487
|
+
return { isValid: true, value: Fp.sqrt(Fp.div(u, v)) };
|
|
2488
|
+
} catch (e) {
|
|
2489
|
+
return { isValid: false, value: _0n4 };
|
|
2490
|
+
}
|
|
2491
|
+
});
|
|
2492
|
+
if (!isEdValidXY(Fp, CURVE, CURVE.Gx, CURVE.Gy))
|
|
2493
|
+
throw new Error("bad curve params: generator point");
|
|
2494
|
+
function acoord(title, n, banZero = false) {
|
|
2495
|
+
const min = banZero ? _1n4 : _0n4;
|
|
2496
|
+
aInRange("coordinate " + title, n, min, MASK);
|
|
2497
|
+
return n;
|
|
2498
|
+
}
|
|
2499
|
+
function aedpoint(other) {
|
|
2500
|
+
if (!(other instanceof Point))
|
|
2501
|
+
throw new Error("EdwardsPoint expected");
|
|
2502
|
+
}
|
|
2503
|
+
const toAffineMemo = memoized((p, iz) => {
|
|
2504
|
+
const { X, Y, Z } = p;
|
|
2505
|
+
const is0 = p.is0();
|
|
2506
|
+
if (iz == null)
|
|
2507
|
+
iz = is0 ? _8n2 : Fp.inv(Z);
|
|
2508
|
+
const x = modP(X * iz);
|
|
2509
|
+
const y = modP(Y * iz);
|
|
2510
|
+
const zz = Fp.mul(Z, iz);
|
|
2511
|
+
if (is0)
|
|
2512
|
+
return { x: _0n4, y: _1n4 };
|
|
2513
|
+
if (zz !== _1n4)
|
|
2514
|
+
throw new Error("invZ was invalid");
|
|
2515
|
+
return { x, y };
|
|
2516
|
+
});
|
|
2517
|
+
const assertValidMemo = memoized((p) => {
|
|
2518
|
+
const { a, d } = CURVE;
|
|
2519
|
+
if (p.is0())
|
|
2520
|
+
throw new Error("bad point: ZERO");
|
|
2521
|
+
const { X, Y, Z, T } = p;
|
|
2522
|
+
const X2 = modP(X * X);
|
|
2523
|
+
const Y2 = modP(Y * Y);
|
|
2524
|
+
const Z2 = modP(Z * Z);
|
|
2525
|
+
const Z4 = modP(Z2 * Z2);
|
|
2526
|
+
const aX2 = modP(X2 * a);
|
|
2527
|
+
const left = modP(Z2 * modP(aX2 + Y2));
|
|
2528
|
+
const right = modP(Z4 + modP(d * modP(X2 * Y2)));
|
|
2529
|
+
if (left !== right)
|
|
2530
|
+
throw new Error("bad point: equation left != right (1)");
|
|
2531
|
+
const XY = modP(X * Y);
|
|
2532
|
+
const ZT = modP(Z * T);
|
|
2533
|
+
if (XY !== ZT)
|
|
2534
|
+
throw new Error("bad point: equation left != right (2)");
|
|
2535
|
+
return true;
|
|
2536
|
+
});
|
|
2537
|
+
class Point {
|
|
2538
|
+
// base / generator point
|
|
2539
|
+
static BASE = new Point(CURVE.Gx, CURVE.Gy, _1n4, modP(CURVE.Gx * CURVE.Gy));
|
|
2540
|
+
// zero / infinity / identity point
|
|
2541
|
+
static ZERO = new Point(_0n4, _1n4, _1n4, _0n4);
|
|
2542
|
+
// 0, 1, 1, 0
|
|
2543
|
+
// math field
|
|
2544
|
+
static Fp = Fp;
|
|
2545
|
+
// scalar field
|
|
2546
|
+
static Fn = Fn;
|
|
2547
|
+
X;
|
|
2548
|
+
Y;
|
|
2549
|
+
Z;
|
|
2550
|
+
T;
|
|
2551
|
+
constructor(X, Y, Z, T) {
|
|
2552
|
+
this.X = acoord("x", X);
|
|
2553
|
+
this.Y = acoord("y", Y);
|
|
2554
|
+
this.Z = acoord("z", Z, true);
|
|
2555
|
+
this.T = acoord("t", T);
|
|
2556
|
+
Object.freeze(this);
|
|
2557
|
+
}
|
|
2558
|
+
static CURVE() {
|
|
2559
|
+
return CURVE;
|
|
2560
|
+
}
|
|
2561
|
+
static fromAffine(p) {
|
|
2562
|
+
if (p instanceof Point)
|
|
2563
|
+
throw new Error("extended point not allowed");
|
|
2564
|
+
const { x, y } = p || {};
|
|
2565
|
+
acoord("x", x);
|
|
2566
|
+
acoord("y", y);
|
|
2567
|
+
return new Point(x, y, _1n4, modP(x * y));
|
|
2568
|
+
}
|
|
2569
|
+
// Uses algo from RFC8032 5.1.3.
|
|
2570
|
+
static fromBytes(bytes, zip215 = false) {
|
|
2571
|
+
const len = Fp.BYTES;
|
|
2572
|
+
const { a, d } = CURVE;
|
|
2573
|
+
bytes = copyBytes(abytes(bytes, len, "point"));
|
|
2574
|
+
abool(zip215, "zip215");
|
|
2575
|
+
const normed = copyBytes(bytes);
|
|
2576
|
+
const lastByte = bytes[len - 1];
|
|
2577
|
+
normed[len - 1] = lastByte & ~128;
|
|
2578
|
+
const y = bytesToNumberLE(normed);
|
|
2579
|
+
const max = zip215 ? MASK : Fp.ORDER;
|
|
2580
|
+
aInRange("point.y", y, _0n4, max);
|
|
2581
|
+
const y2 = modP(y * y);
|
|
2582
|
+
const u = modP(y2 - _1n4);
|
|
2583
|
+
const v = modP(d * y2 - a);
|
|
2584
|
+
let { isValid, value: x } = uvRatio2(u, v);
|
|
2585
|
+
if (!isValid)
|
|
2586
|
+
throw new Error("bad point: invalid y coordinate");
|
|
2587
|
+
const isXOdd = (x & _1n4) === _1n4;
|
|
2588
|
+
const isLastByteOdd = (lastByte & 128) !== 0;
|
|
2589
|
+
if (!zip215 && x === _0n4 && isLastByteOdd)
|
|
2590
|
+
throw new Error("bad point: x=0 and x_0=1");
|
|
2591
|
+
if (isLastByteOdd !== isXOdd)
|
|
2592
|
+
x = modP(-x);
|
|
2593
|
+
return Point.fromAffine({ x, y });
|
|
2594
|
+
}
|
|
2595
|
+
static fromHex(hex, zip215 = false) {
|
|
2596
|
+
return Point.fromBytes(hexToBytes(hex), zip215);
|
|
2597
|
+
}
|
|
2598
|
+
get x() {
|
|
2599
|
+
return this.toAffine().x;
|
|
2600
|
+
}
|
|
2601
|
+
get y() {
|
|
2602
|
+
return this.toAffine().y;
|
|
2603
|
+
}
|
|
2604
|
+
precompute(windowSize = 8, isLazy = true) {
|
|
2605
|
+
wnaf.createCache(this, windowSize);
|
|
2606
|
+
if (!isLazy)
|
|
2607
|
+
this.multiply(_2n2);
|
|
2608
|
+
return this;
|
|
2609
|
+
}
|
|
2610
|
+
// Useful in fromAffine() - not for fromBytes(), which always created valid points.
|
|
2611
|
+
assertValidity() {
|
|
2612
|
+
assertValidMemo(this);
|
|
2613
|
+
}
|
|
2614
|
+
// Compare one point to another.
|
|
2615
|
+
equals(other) {
|
|
2616
|
+
aedpoint(other);
|
|
2617
|
+
const { X: X1, Y: Y1, Z: Z1 } = this;
|
|
2618
|
+
const { X: X2, Y: Y2, Z: Z2 } = other;
|
|
2619
|
+
const X1Z2 = modP(X1 * Z2);
|
|
2620
|
+
const X2Z1 = modP(X2 * Z1);
|
|
2621
|
+
const Y1Z2 = modP(Y1 * Z2);
|
|
2622
|
+
const Y2Z1 = modP(Y2 * Z1);
|
|
2623
|
+
return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;
|
|
2624
|
+
}
|
|
2625
|
+
is0() {
|
|
2626
|
+
return this.equals(Point.ZERO);
|
|
2627
|
+
}
|
|
2628
|
+
negate() {
|
|
2629
|
+
return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T));
|
|
2630
|
+
}
|
|
2631
|
+
// Fast algo for doubling Extended Point.
|
|
2632
|
+
// https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd
|
|
2633
|
+
// Cost: 4M + 4S + 1*a + 6add + 1*2.
|
|
2634
|
+
double() {
|
|
2635
|
+
const { a } = CURVE;
|
|
2636
|
+
const { X: X1, Y: Y1, Z: Z1 } = this;
|
|
2637
|
+
const A = modP(X1 * X1);
|
|
2638
|
+
const B = modP(Y1 * Y1);
|
|
2639
|
+
const C = modP(_2n2 * modP(Z1 * Z1));
|
|
2640
|
+
const D = modP(a * A);
|
|
2641
|
+
const x1y1 = X1 + Y1;
|
|
2642
|
+
const E = modP(modP(x1y1 * x1y1) - A - B);
|
|
2643
|
+
const G = D + B;
|
|
2644
|
+
const F = G - C;
|
|
2645
|
+
const H = D - B;
|
|
2646
|
+
const X3 = modP(E * F);
|
|
2647
|
+
const Y3 = modP(G * H);
|
|
2648
|
+
const T3 = modP(E * H);
|
|
2649
|
+
const Z3 = modP(F * G);
|
|
2650
|
+
return new Point(X3, Y3, Z3, T3);
|
|
2651
|
+
}
|
|
2652
|
+
// Fast algo for adding 2 Extended Points.
|
|
2653
|
+
// https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd
|
|
2654
|
+
// Cost: 9M + 1*a + 1*d + 7add.
|
|
2655
|
+
add(other) {
|
|
2656
|
+
aedpoint(other);
|
|
2657
|
+
const { a, d } = CURVE;
|
|
2658
|
+
const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;
|
|
2659
|
+
const { X: X2, Y: Y2, Z: Z2, T: T2 } = other;
|
|
2660
|
+
const A = modP(X1 * X2);
|
|
2661
|
+
const B = modP(Y1 * Y2);
|
|
2662
|
+
const C = modP(T1 * d * T2);
|
|
2663
|
+
const D = modP(Z1 * Z2);
|
|
2664
|
+
const E = modP((X1 + Y1) * (X2 + Y2) - A - B);
|
|
2665
|
+
const F = D - C;
|
|
2666
|
+
const G = D + C;
|
|
2667
|
+
const H = modP(B - a * A);
|
|
2668
|
+
const X3 = modP(E * F);
|
|
2669
|
+
const Y3 = modP(G * H);
|
|
2670
|
+
const T3 = modP(E * H);
|
|
2671
|
+
const Z3 = modP(F * G);
|
|
2672
|
+
return new Point(X3, Y3, Z3, T3);
|
|
2673
|
+
}
|
|
2674
|
+
subtract(other) {
|
|
2675
|
+
return this.add(other.negate());
|
|
2676
|
+
}
|
|
2677
|
+
// Constant-time multiplication.
|
|
2678
|
+
multiply(scalar) {
|
|
2679
|
+
if (!Fn.isValidNot0(scalar))
|
|
2680
|
+
throw new Error("invalid scalar: expected 1 <= sc < curve.n");
|
|
2681
|
+
const { p, f } = wnaf.cached(this, scalar, (p2) => normalizeZ(Point, p2));
|
|
2682
|
+
return normalizeZ(Point, [p, f])[0];
|
|
2683
|
+
}
|
|
2684
|
+
// Non-constant-time multiplication. Uses double-and-add algorithm.
|
|
2685
|
+
// It's faster, but should only be used when you don't care about
|
|
2686
|
+
// an exposed private key e.g. sig verification.
|
|
2687
|
+
// Does NOT allow scalars higher than CURVE.n.
|
|
2688
|
+
// Accepts optional accumulator to merge with multiply (important for sparse scalars)
|
|
2689
|
+
multiplyUnsafe(scalar, acc = Point.ZERO) {
|
|
2690
|
+
if (!Fn.isValid(scalar))
|
|
2691
|
+
throw new Error("invalid scalar: expected 0 <= sc < curve.n");
|
|
2692
|
+
if (scalar === _0n4)
|
|
2693
|
+
return Point.ZERO;
|
|
2694
|
+
if (this.is0() || scalar === _1n4)
|
|
2695
|
+
return this;
|
|
2696
|
+
return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p), acc);
|
|
2697
|
+
}
|
|
2698
|
+
// Checks if point is of small order.
|
|
2699
|
+
// If you add something to small order point, you will have "dirty"
|
|
2700
|
+
// point with torsion component.
|
|
2701
|
+
// Multiplies point by cofactor and checks if the result is 0.
|
|
2702
|
+
isSmallOrder() {
|
|
2703
|
+
return this.multiplyUnsafe(cofactor).is0();
|
|
2704
|
+
}
|
|
2705
|
+
// Multiplies point by curve order and checks if the result is 0.
|
|
2706
|
+
// Returns `false` is the point is dirty.
|
|
2707
|
+
isTorsionFree() {
|
|
2708
|
+
return wnaf.unsafe(this, CURVE.n).is0();
|
|
2709
|
+
}
|
|
2710
|
+
// Converts Extended point to default (x, y) coordinates.
|
|
2711
|
+
// Can accept precomputed Z^-1 - for example, from invertBatch.
|
|
2712
|
+
toAffine(invertedZ) {
|
|
2713
|
+
return toAffineMemo(this, invertedZ);
|
|
2714
|
+
}
|
|
2715
|
+
clearCofactor() {
|
|
2716
|
+
if (cofactor === _1n4)
|
|
2717
|
+
return this;
|
|
2718
|
+
return this.multiplyUnsafe(cofactor);
|
|
2719
|
+
}
|
|
2720
|
+
toBytes() {
|
|
2721
|
+
const { x, y } = this.toAffine();
|
|
2722
|
+
const bytes = Fp.toBytes(y);
|
|
2723
|
+
bytes[bytes.length - 1] |= x & _1n4 ? 128 : 0;
|
|
2724
|
+
return bytes;
|
|
2725
|
+
}
|
|
2726
|
+
toHex() {
|
|
2727
|
+
return bytesToHex(this.toBytes());
|
|
2728
|
+
}
|
|
2729
|
+
toString() {
|
|
2730
|
+
return `<Point ${this.is0() ? "ZERO" : this.toHex()}>`;
|
|
2731
|
+
}
|
|
2732
|
+
}
|
|
2733
|
+
const wnaf = new wNAF(Point, Fn.BITS);
|
|
2734
|
+
Point.BASE.precompute(8);
|
|
2735
|
+
return Point;
|
|
2736
|
+
}
|
|
2737
|
+
function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
2738
|
+
if (typeof cHash !== "function")
|
|
2739
|
+
throw new Error('"hash" function param is required');
|
|
2740
|
+
validateObject(eddsaOpts, {}, {
|
|
2741
|
+
adjustScalarBytes: "function",
|
|
2742
|
+
randomBytes: "function",
|
|
2743
|
+
domain: "function",
|
|
2744
|
+
prehash: "function",
|
|
2745
|
+
mapToCurve: "function"
|
|
2746
|
+
});
|
|
2747
|
+
const { prehash } = eddsaOpts;
|
|
2748
|
+
const { BASE, Fp, Fn } = Point;
|
|
2749
|
+
const randomBytes2 = eddsaOpts.randomBytes || randomBytes;
|
|
2750
|
+
const adjustScalarBytes2 = eddsaOpts.adjustScalarBytes || ((bytes) => bytes);
|
|
2751
|
+
const domain = eddsaOpts.domain || ((data, ctx, phflag) => {
|
|
2752
|
+
abool(phflag, "phflag");
|
|
2753
|
+
if (ctx.length || phflag)
|
|
2754
|
+
throw new Error("Contexts/pre-hash are not supported");
|
|
2755
|
+
return data;
|
|
2756
|
+
});
|
|
2757
|
+
function modN_LE(hash) {
|
|
2758
|
+
return Fn.create(bytesToNumberLE(hash));
|
|
2759
|
+
}
|
|
2760
|
+
function getPrivateScalar(key) {
|
|
2761
|
+
const len = lengths.secretKey;
|
|
2762
|
+
abytes(key, lengths.secretKey, "secretKey");
|
|
2763
|
+
const hashed = abytes(cHash(key), 2 * len, "hashedSecretKey");
|
|
2764
|
+
const head = adjustScalarBytes2(hashed.slice(0, len));
|
|
2765
|
+
const prefix = hashed.slice(len, 2 * len);
|
|
2766
|
+
const scalar = modN_LE(head);
|
|
2767
|
+
return { head, prefix, scalar };
|
|
2768
|
+
}
|
|
2769
|
+
function getExtendedPublicKey(secretKey) {
|
|
2770
|
+
const { head, prefix, scalar } = getPrivateScalar(secretKey);
|
|
2771
|
+
const point = BASE.multiply(scalar);
|
|
2772
|
+
const pointBytes = point.toBytes();
|
|
2773
|
+
return { head, prefix, scalar, point, pointBytes };
|
|
2774
|
+
}
|
|
2775
|
+
function getPublicKey(secretKey) {
|
|
2776
|
+
return getExtendedPublicKey(secretKey).pointBytes;
|
|
2777
|
+
}
|
|
2778
|
+
function hashDomainToScalar(context = Uint8Array.of(), ...msgs) {
|
|
2779
|
+
const msg = concatBytes(...msgs);
|
|
2780
|
+
return modN_LE(cHash(domain(msg, abytes(context, void 0, "context"), !!prehash)));
|
|
2781
|
+
}
|
|
2782
|
+
function sign(msg, secretKey, options = {}) {
|
|
2783
|
+
msg = abytes(msg, void 0, "message");
|
|
2784
|
+
if (prehash)
|
|
2785
|
+
msg = prehash(msg);
|
|
2786
|
+
const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey);
|
|
2787
|
+
const r = hashDomainToScalar(options.context, prefix, msg);
|
|
2788
|
+
const R = BASE.multiply(r).toBytes();
|
|
2789
|
+
const k = hashDomainToScalar(options.context, R, pointBytes, msg);
|
|
2790
|
+
const s = Fn.create(r + k * scalar);
|
|
2791
|
+
if (!Fn.isValid(s))
|
|
2792
|
+
throw new Error("sign failed: invalid s");
|
|
2793
|
+
const rs = concatBytes(R, Fn.toBytes(s));
|
|
2794
|
+
return abytes(rs, lengths.signature, "result");
|
|
2795
|
+
}
|
|
2796
|
+
const verifyOpts = { zip215: true };
|
|
2797
|
+
function verify(sig, msg, publicKey, options = verifyOpts) {
|
|
2798
|
+
const { context, zip215 } = options;
|
|
2799
|
+
const len = lengths.signature;
|
|
2800
|
+
sig = abytes(sig, len, "signature");
|
|
2801
|
+
msg = abytes(msg, void 0, "message");
|
|
2802
|
+
publicKey = abytes(publicKey, lengths.publicKey, "publicKey");
|
|
2803
|
+
if (zip215 !== void 0)
|
|
2804
|
+
abool(zip215, "zip215");
|
|
2805
|
+
if (prehash)
|
|
2806
|
+
msg = prehash(msg);
|
|
2807
|
+
const mid = len / 2;
|
|
2808
|
+
const r = sig.subarray(0, mid);
|
|
2809
|
+
const s = bytesToNumberLE(sig.subarray(mid, len));
|
|
2810
|
+
let A, R, SB;
|
|
2811
|
+
try {
|
|
2812
|
+
A = Point.fromBytes(publicKey, zip215);
|
|
2813
|
+
R = Point.fromBytes(r, zip215);
|
|
2814
|
+
SB = BASE.multiplyUnsafe(s);
|
|
2815
|
+
} catch (error) {
|
|
2816
|
+
return false;
|
|
2817
|
+
}
|
|
2818
|
+
if (!zip215 && A.isSmallOrder())
|
|
2819
|
+
return false;
|
|
2820
|
+
const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg);
|
|
2821
|
+
const RkA = R.add(A.multiplyUnsafe(k));
|
|
2822
|
+
return RkA.subtract(SB).clearCofactor().is0();
|
|
2823
|
+
}
|
|
2824
|
+
const _size = Fp.BYTES;
|
|
2825
|
+
const lengths = {
|
|
2826
|
+
secretKey: _size,
|
|
2827
|
+
publicKey: _size,
|
|
2828
|
+
signature: 2 * _size,
|
|
2829
|
+
seed: _size
|
|
2830
|
+
};
|
|
2831
|
+
function randomSecretKey(seed = randomBytes2(lengths.seed)) {
|
|
2832
|
+
return abytes(seed, lengths.seed, "seed");
|
|
2833
|
+
}
|
|
2834
|
+
function isValidSecretKey(key) {
|
|
2835
|
+
return isBytes(key) && key.length === Fn.BYTES;
|
|
2836
|
+
}
|
|
2837
|
+
function isValidPublicKey(key, zip215) {
|
|
2838
|
+
try {
|
|
2839
|
+
return !!Point.fromBytes(key, zip215);
|
|
2840
|
+
} catch (error) {
|
|
2841
|
+
return false;
|
|
2842
|
+
}
|
|
2843
|
+
}
|
|
2844
|
+
const utils = {
|
|
2845
|
+
getExtendedPublicKey,
|
|
2846
|
+
randomSecretKey,
|
|
2847
|
+
isValidSecretKey,
|
|
2848
|
+
isValidPublicKey,
|
|
2849
|
+
/**
|
|
2850
|
+
* Converts ed public key to x public key. Uses formula:
|
|
2851
|
+
* - ed25519:
|
|
2852
|
+
* - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`
|
|
2853
|
+
* - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`
|
|
2854
|
+
* - ed448:
|
|
2855
|
+
* - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)`
|
|
2856
|
+
* - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))`
|
|
2857
|
+
*/
|
|
2858
|
+
toMontgomery(publicKey) {
|
|
2859
|
+
const { y } = Point.fromBytes(publicKey);
|
|
2860
|
+
const size = lengths.publicKey;
|
|
2861
|
+
const is25519 = size === 32;
|
|
2862
|
+
if (!is25519 && size !== 57)
|
|
2863
|
+
throw new Error("only defined for 25519 and 448");
|
|
2864
|
+
const u = is25519 ? Fp.div(_1n4 + y, _1n4 - y) : Fp.div(y - _1n4, y + _1n4);
|
|
2865
|
+
return Fp.toBytes(u);
|
|
2866
|
+
},
|
|
2867
|
+
toMontgomerySecret(secretKey) {
|
|
2868
|
+
const size = lengths.secretKey;
|
|
2869
|
+
abytes(secretKey, size);
|
|
2870
|
+
const hashed = cHash(secretKey.subarray(0, size));
|
|
2871
|
+
return adjustScalarBytes2(hashed).subarray(0, size);
|
|
2872
|
+
}
|
|
2873
|
+
};
|
|
2874
|
+
return Object.freeze({
|
|
2875
|
+
keygen: createKeygen(randomSecretKey, getPublicKey),
|
|
2876
|
+
getPublicKey,
|
|
2877
|
+
sign,
|
|
2878
|
+
verify,
|
|
2879
|
+
utils,
|
|
2880
|
+
Point,
|
|
2881
|
+
lengths
|
|
2882
|
+
});
|
|
2883
|
+
}
|
|
2884
|
+
|
|
2885
|
+
// node_modules/@noble/curves/ed25519.js
|
|
2886
|
+
var _1n5 = BigInt(1);
|
|
2887
|
+
var _2n3 = BigInt(2);
|
|
2888
|
+
var _5n2 = BigInt(5);
|
|
2889
|
+
var _8n3 = BigInt(8);
|
|
2890
|
+
var ed25519_CURVE_p = BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed");
|
|
2891
|
+
var ed25519_CURVE = /* @__PURE__ */ (() => ({
|
|
2892
|
+
p: ed25519_CURVE_p,
|
|
2893
|
+
n: BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),
|
|
2894
|
+
h: _8n3,
|
|
2895
|
+
a: BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),
|
|
2896
|
+
d: BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),
|
|
2897
|
+
Gx: BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),
|
|
2898
|
+
Gy: BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")
|
|
2899
|
+
}))();
|
|
2900
|
+
function ed25519_pow_2_252_3(x) {
|
|
2901
|
+
const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);
|
|
2902
|
+
const P = ed25519_CURVE_p;
|
|
2903
|
+
const x2 = x * x % P;
|
|
2904
|
+
const b2 = x2 * x % P;
|
|
2905
|
+
const b4 = pow2(b2, _2n3, P) * b2 % P;
|
|
2906
|
+
const b5 = pow2(b4, _1n5, P) * x % P;
|
|
2907
|
+
const b10 = pow2(b5, _5n2, P) * b5 % P;
|
|
2908
|
+
const b20 = pow2(b10, _10n, P) * b10 % P;
|
|
2909
|
+
const b40 = pow2(b20, _20n, P) * b20 % P;
|
|
2910
|
+
const b80 = pow2(b40, _40n, P) * b40 % P;
|
|
2911
|
+
const b160 = pow2(b80, _80n, P) * b80 % P;
|
|
2912
|
+
const b240 = pow2(b160, _80n, P) * b80 % P;
|
|
2913
|
+
const b250 = pow2(b240, _10n, P) * b10 % P;
|
|
2914
|
+
const pow_p_5_8 = pow2(b250, _2n3, P) * x % P;
|
|
2915
|
+
return { pow_p_5_8, b2 };
|
|
2916
|
+
}
|
|
2917
|
+
function adjustScalarBytes(bytes) {
|
|
2918
|
+
bytes[0] &= 248;
|
|
2919
|
+
bytes[31] &= 127;
|
|
2920
|
+
bytes[31] |= 64;
|
|
2921
|
+
return bytes;
|
|
2922
|
+
}
|
|
2923
|
+
var ED25519_SQRT_M1 = /* @__PURE__ */ BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");
|
|
2924
|
+
function uvRatio(u, v) {
|
|
2925
|
+
const P = ed25519_CURVE_p;
|
|
2926
|
+
const v3 = mod(v * v * v, P);
|
|
2927
|
+
const v7 = mod(v3 * v3 * v, P);
|
|
2928
|
+
const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;
|
|
2929
|
+
let x = mod(u * v3 * pow, P);
|
|
2930
|
+
const vx2 = mod(v * x * x, P);
|
|
2931
|
+
const root1 = x;
|
|
2932
|
+
const root2 = mod(x * ED25519_SQRT_M1, P);
|
|
2933
|
+
const useRoot1 = vx2 === u;
|
|
2934
|
+
const useRoot2 = vx2 === mod(-u, P);
|
|
2935
|
+
const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P);
|
|
2936
|
+
if (useRoot1)
|
|
2937
|
+
x = root1;
|
|
2938
|
+
if (useRoot2 || noRoot)
|
|
2939
|
+
x = root2;
|
|
2940
|
+
if (isNegativeLE(x, P))
|
|
2941
|
+
x = mod(-x, P);
|
|
2942
|
+
return { isValid: useRoot1 || useRoot2, value: x };
|
|
2943
|
+
}
|
|
2944
|
+
var ed25519_Point = /* @__PURE__ */ edwards(ed25519_CURVE, { uvRatio });
|
|
2945
|
+
function ed(opts) {
|
|
2946
|
+
return eddsa(ed25519_Point, sha512, Object.assign({ adjustScalarBytes }, opts));
|
|
2947
|
+
}
|
|
2948
|
+
var ed25519 = /* @__PURE__ */ ed({});
|
|
2949
|
+
|
|
2950
|
+
// index.mjs
|
|
2951
|
+
var QsafeSigner = class _QsafeSigner {
|
|
2952
|
+
// Shared stateless instances for verify() — one per "version:variant", loaded once.
|
|
2953
|
+
// These never have keypairFromSeed() called on them, so they are safe to share.
|
|
2954
|
+
/** @type {Record<string, MayoSigner>} */
|
|
2955
|
+
static #sharedSigners = {};
|
|
2956
|
+
// Per-instance signer for sign() — each QsafeSigner has its own MayoSigner.
|
|
2957
|
+
// MayoSigner stores secretKey internally after keypairFromSeed(), so sharing
|
|
2958
|
+
// across instances would cause one loadMasterKey() to overwrite another's key.
|
|
2959
|
+
/** @type {MayoSigner|null} */
|
|
2960
|
+
#mayoSigner = null;
|
|
2961
|
+
/** @type {Uint8Array|null} */
|
|
2962
|
+
#edPriv = null;
|
|
2963
|
+
#version;
|
|
2964
|
+
#variant;
|
|
2965
|
+
/** @param {string} version @param {'mayo1' | 'mayo2'} variant */
|
|
2966
|
+
constructor(version, variant) {
|
|
2967
|
+
this.#version = version;
|
|
2968
|
+
this.#variant = variant;
|
|
2969
|
+
}
|
|
2970
|
+
/** Creates a signer ready for signing with a single version+variant.
|
|
2971
|
+
* Ideal for signing use-cases. Each instance gets its own MayoSigner.
|
|
2972
|
+
* @param {'mayo1' | 'mayo2'} [variant] - Default: 'mayo1'
|
|
2973
|
+
* @param {'1'} [version] - Protocol version. Default: CURRENT_VERSION */
|
|
2974
|
+
static async create(variant = DEFAULT_VARIANT, version = CURRENT_VERSION) {
|
|
2975
|
+
const proto = PROTOCOL_VERSIONS[version];
|
|
2976
|
+
if (!proto) throw new Error(`Unknown protocol version: ${version}`);
|
|
2977
|
+
if (!proto.variants[variant]) throw new Error(`Unknown variant '${variant}' for version ${version}`);
|
|
2978
|
+
const instance = new _QsafeSigner(version, variant);
|
|
2979
|
+
await instance.#ensureShared(version, variant);
|
|
2980
|
+
instance.#mayoSigner = await proto.loader(variant);
|
|
2981
|
+
return instance;
|
|
2982
|
+
}
|
|
2983
|
+
/** Creates a verifier with all variants of the given versions pre-loaded.
|
|
2984
|
+
* Ideal for validators needing backward-compatible verify().
|
|
2985
|
+
* Calling loadMasterKey() or sign() on a createFull() instance will throw.
|
|
2986
|
+
* @param {string[]} [versions] - Defaults to all known versions. Available: ['1'] */
|
|
2987
|
+
static async createFull(versions = AVAILABLE_VERSIONS) {
|
|
2988
|
+
const instance = new _QsafeSigner(CURRENT_VERSION, DEFAULT_VARIANT);
|
|
2989
|
+
for (const version of versions) {
|
|
2990
|
+
const proto = PROTOCOL_VERSIONS[version];
|
|
2991
|
+
if (!proto) throw new Error(`Unknown protocol version: ${version}`);
|
|
2992
|
+
for (const variant in proto.variants)
|
|
2993
|
+
await instance.#ensureShared(version, variant);
|
|
2994
|
+
}
|
|
2995
|
+
return instance;
|
|
2996
|
+
}
|
|
2997
|
+
/** Generates a cryptographically random master seed. @param {16|24|32} [size] - Seed size in bytes. Default: 32 */
|
|
2998
|
+
static generateMasterKey(size = 32) {
|
|
2999
|
+
if (size !== 16 && size !== 24 && size !== 32) throw new Error("Master key size must be 16, 24 or 32 bytes");
|
|
3000
|
+
const seed = new Uint8Array(size);
|
|
3001
|
+
crypto.getRandomValues(seed);
|
|
3002
|
+
return seed;
|
|
3003
|
+
}
|
|
3004
|
+
/** Checks that a signature buffer has a valid header and correct byte length.
|
|
3005
|
+
* - Zero crypto — safe to call as a fast pre-filter. @param {Uint8Array} signature */
|
|
3006
|
+
static checkFormat(signature) {
|
|
3007
|
+
const h = QsafeHelper.parseHeader(signature);
|
|
3008
|
+
if (h) return signature.length === HEADER_SIZE + ED25519_SIG_SIZE + h.desc.sigSize;
|
|
3009
|
+
else return false;
|
|
3010
|
+
}
|
|
3011
|
+
/** Verifies a hybrid signature. Lazy-loads the required WASM variant if not already cached.
|
|
3012
|
+
* - Works with any protocol version whose descriptors are registered above.
|
|
3013
|
+
* @param {Uint8Array} message
|
|
3014
|
+
* @param {Uint8Array} signature - from sign()
|
|
3015
|
+
* @param {Uint8Array} publicKey - from loadMasterKey() */
|
|
3016
|
+
async verify(message, signature, publicKey) {
|
|
3017
|
+
const h = QsafeHelper.parseHeader(signature);
|
|
3018
|
+
if (!h || !_QsafeSigner.checkFormat(signature)) return false;
|
|
3019
|
+
const sigReader = new BinaryReader(signature);
|
|
3020
|
+
sigReader.read(HEADER_SIZE);
|
|
3021
|
+
const edSig = sigReader.read(ED25519_SIG_SIZE);
|
|
3022
|
+
const mayoSig = sigReader.read(h.desc.sigSize);
|
|
3023
|
+
const pubReader = new BinaryReader(publicKey);
|
|
3024
|
+
const edPub = pubReader.read(ED25519_PUB_SIZE);
|
|
3025
|
+
const mayoPub = pubReader.read(h.desc.pubKeySize);
|
|
3026
|
+
if (!ed25519.verify(edSig, message, edPub)) return false;
|
|
3027
|
+
const signer = await this.#ensureShared(h.version, h.variant);
|
|
3028
|
+
return signer.verify(message, mayoSig, mayoPub);
|
|
3029
|
+
}
|
|
3030
|
+
/** Derives and loads a keypair from a master seed (16–32 bytes).
|
|
3031
|
+
* - After this call, sign() is ready to use.
|
|
3032
|
+
* - Requires a signer created with create(), not createFull().
|
|
3033
|
+
* @param {Uint8Array} masterSeed @returns {Keypair} The generated public + secret key pair */
|
|
3034
|
+
loadMasterKey(masterSeed) {
|
|
3035
|
+
const isValidSize = masterSeed instanceof Uint8Array && (masterSeed.length === 16 || masterSeed.length === 24 || masterSeed.length === 32);
|
|
3036
|
+
if (!isValidSize) throw new TypeError("masterSeed must be a Uint8Array of 16, 24 or 32 bytes");
|
|
3037
|
+
if (!this.#mayoSigner) throw new Error("No signing instance \u2014 use QsafeSigner.create(), not createFull()");
|
|
3038
|
+
const proto = PROTOCOL_VERSIONS[this.#version];
|
|
3039
|
+
const desc = proto.variants[this.#variant];
|
|
3040
|
+
const { edSeed, mayoSeed } = QsafeHelper.deriveSeeds(masterSeed, desc.seedSize);
|
|
3041
|
+
this.#edPriv = edSeed;
|
|
3042
|
+
const mayo = this.#mayoSigner.keypairFromSeed(mayoSeed);
|
|
3043
|
+
if (!mayo || !this.#mayoSigner.ready) throw new Error("MAYO keypair generation failed");
|
|
3044
|
+
const pub = new BinaryWriter(ED25519_PUB_SIZE + desc.pubKeySize);
|
|
3045
|
+
pub.writeBytes(ed25519.getPublicKey(edSeed));
|
|
3046
|
+
pub.writeBytes(mayo.publicKey);
|
|
3047
|
+
const sec = new BinaryWriter(1 + ED25519_PRIV_SIZE + desc.seedSize);
|
|
3048
|
+
sec.writeByte(VARIANT_ID[this.#variant]);
|
|
3049
|
+
sec.writeBytes(edSeed);
|
|
3050
|
+
sec.writeBytes(mayo.secretKey);
|
|
3051
|
+
return { publicKey: pub.getBytes(), secretKey: sec.getBytes() };
|
|
3052
|
+
}
|
|
3053
|
+
/** Signs a message. Requires a prior loadMasterKey() call.
|
|
3054
|
+
* - The same instance can sign many messages without re-loading the key.
|
|
3055
|
+
* @param {Uint8Array} message */
|
|
3056
|
+
sign(message) {
|
|
3057
|
+
if (!this.#edPriv) throw new Error("No key loaded \u2014 call loadMasterKey() first");
|
|
3058
|
+
if (!this.#mayoSigner) throw new Error("No signing instance \u2014 use QsafeSigner.create(), not createFull()");
|
|
3059
|
+
if (!this.#mayoSigner.ready) throw new Error("MAYO signer not ready \u2014 was create() called?");
|
|
3060
|
+
const proto = PROTOCOL_VERSIONS[this.#version];
|
|
3061
|
+
const desc = proto.variants[this.#variant];
|
|
3062
|
+
const edSig = ed25519.sign(message, this.#edPriv);
|
|
3063
|
+
const mayoSig = this.#mayoSigner.sign(message);
|
|
3064
|
+
if (!mayoSig) throw new Error("MAYO sign() returned null");
|
|
3065
|
+
const writer = new BinaryWriter(HEADER_SIZE + ED25519_SIG_SIZE + desc.sigSize);
|
|
3066
|
+
writer.writeU16BE(Number(this.#version));
|
|
3067
|
+
writer.writeByte(VARIANT_ID[this.#variant]);
|
|
3068
|
+
writer.writeBytes(edSig);
|
|
3069
|
+
writer.writeBytes(mayoSig);
|
|
3070
|
+
return writer.getBytes();
|
|
3071
|
+
}
|
|
3072
|
+
/** Loads and caches a shared MayoSigner for version+variant. Idempotent.
|
|
3073
|
+
* These instances are ONLY used for verify() — keypairFromSeed() is never called on them.
|
|
3074
|
+
* @param {string} version @param {'mayo1' | 'mayo2' | string} variant */
|
|
3075
|
+
async #ensureShared(version, variant) {
|
|
3076
|
+
const key = `${version}:${variant}`;
|
|
3077
|
+
if (_QsafeSigner.#sharedSigners[key]) return _QsafeSigner.#sharedSigners[key];
|
|
3078
|
+
const proto = PROTOCOL_VERSIONS[version];
|
|
3079
|
+
const signer = await proto.loader(variant);
|
|
3080
|
+
_QsafeSigner.#sharedSigners[key] = signer;
|
|
3081
|
+
return signer;
|
|
3082
|
+
}
|
|
3083
|
+
};
|
|
3084
|
+
export {
|
|
3085
|
+
AVAILABLE_VERSIONS,
|
|
3086
|
+
CURRENT_VERSION,
|
|
3087
|
+
PROTOCOL_VERSIONS,
|
|
3088
|
+
QsafeSigner,
|
|
3089
|
+
ed25519
|
|
3090
|
+
};
|
|
3091
|
+
/*! Bundled license information:
|
|
3092
|
+
|
|
3093
|
+
@noble/hashes/utils.js:
|
|
3094
|
+
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
3095
|
+
|
|
3096
|
+
@noble/curves/utils.js:
|
|
3097
|
+
@noble/curves/abstract/modular.js:
|
|
3098
|
+
@noble/curves/abstract/curve.js:
|
|
3099
|
+
@noble/curves/abstract/edwards.js:
|
|
3100
|
+
@noble/curves/ed25519.js:
|
|
3101
|
+
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
3102
|
+
*/
|