@pixerate/editor 0.112.0 → 0.114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/dist/animation-editor/index.cjs +60 -54
- package/dist/animation-editor/index.cjs.map +1 -1
- package/dist/animation-editor/index.d.cts +3 -3
- package/dist/animation-editor/index.d.ts +3 -3
- package/dist/animation-editor/index.js +14 -8
- package/dist/animation-editor/index.js.map +1 -1
- package/dist/builtin-CY97ppKM.d.cts +354 -0
- package/dist/builtin-CY97ppKM.d.ts +354 -0
- package/dist/canvas/index.cjs +3 -3
- package/dist/canvas/index.cjs.map +1 -1
- package/dist/canvas/index.js +9 -9
- package/dist/chunk-26PGXHY7.cjs +753 -0
- package/dist/chunk-26PGXHY7.cjs.map +1 -0
- package/dist/chunk-2OJACTPR.cjs +929 -0
- package/dist/chunk-2OJACTPR.cjs.map +1 -0
- package/dist/chunk-3UFGNHSP.js +929 -0
- package/dist/chunk-3UFGNHSP.js.map +1 -0
- package/dist/{chunk-YGIMK4NX.cjs → chunk-5OVJHMZQ.cjs} +757 -825
- package/dist/chunk-5OVJHMZQ.cjs.map +1 -0
- package/dist/chunk-643B2HKC.cjs +534 -0
- package/dist/chunk-643B2HKC.cjs.map +1 -0
- package/dist/chunk-6FCKOS2B.js +534 -0
- package/dist/chunk-6FCKOS2B.js.map +1 -0
- package/dist/chunk-BRLYOPLT.js +2574 -0
- package/dist/chunk-BRLYOPLT.js.map +1 -0
- package/dist/{chunk-LQEEDHOP.js → chunk-C6C5PDKU.js} +759 -761
- package/dist/chunk-C6C5PDKU.js.map +1 -0
- package/dist/chunk-DFQEX3AM.cjs +781 -0
- package/dist/chunk-DFQEX3AM.cjs.map +1 -0
- package/dist/{chunk-CZOXTEMN.js → chunk-EUVSQ25B.js} +336 -404
- package/dist/chunk-EUVSQ25B.js.map +1 -0
- package/dist/chunk-G5NMLUVF.cjs +2574 -0
- package/dist/chunk-G5NMLUVF.cjs.map +1 -0
- package/dist/chunk-LKCYANMW.js +781 -0
- package/dist/chunk-LKCYANMW.js.map +1 -0
- package/dist/{chunk-W3GXSUSQ.cjs → chunk-LPLCWZTM.cjs} +5087 -1283
- package/dist/chunk-LPLCWZTM.cjs.map +1 -0
- package/dist/chunk-MMVHBKMM.js +753 -0
- package/dist/chunk-MMVHBKMM.js.map +1 -0
- package/dist/{chunk-POGBUYWE.cjs → chunk-ST7E3NEE.cjs} +857 -859
- package/dist/chunk-ST7E3NEE.cjs.map +1 -0
- package/dist/{chunk-7VOHOPLW.cjs → chunk-TCKIXI46.cjs} +59 -59
- package/dist/{chunk-7VOHOPLW.cjs.map → chunk-TCKIXI46.cjs.map} +1 -1
- package/dist/{chunk-XIOMMGPD.cjs → chunk-TFOPHZ3U.cjs} +1 -1
- package/dist/chunk-TFOPHZ3U.cjs.map +1 -0
- package/dist/{chunk-Z4BC6M74.js → chunk-UBIXVXPR.js} +2 -2
- package/dist/{chunk-BLWCAQCW.js → chunk-VXR7XWMF.js} +4574 -770
- package/dist/chunk-VXR7XWMF.js.map +1 -0
- package/dist/{chunk-HNS7UHCM.js → chunk-XK5LZKBD.js} +1 -1
- package/dist/chunk-XK5LZKBD.js.map +1 -0
- package/dist/cms/index.cjs +146 -0
- package/dist/cms/index.cjs.map +1 -0
- package/dist/cms/index.d.cts +51 -0
- package/dist/cms/index.d.ts +51 -0
- package/dist/cms/index.js +146 -0
- package/dist/{export-DNu_Jr8p.d.ts → export-_1dUKwpF.d.ts} +326 -195
- package/dist/{export-DBba-buV.d.cts → export-b6NjCZ5-.d.cts} +326 -195
- package/dist/image-editor/index.cjs +2377 -1291
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +149 -97
- package/dist/image-editor/index.d.ts +149 -97
- package/dist/image-editor/index.js +1343 -257
- package/dist/image-editor/index.js.map +1 -1
- package/dist/opentype-BZEOSOX3.d.ts +188 -0
- package/dist/opentype-Dpe75vL5.d.cts +188 -0
- package/dist/paint/index.cjs +63 -4
- package/dist/paint/index.cjs.map +1 -1
- package/dist/paint/index.d.cts +30 -3
- package/dist/paint/index.d.ts +30 -3
- package/dist/paint/index.js +62 -3
- package/dist/paint-editor/index.cjs +146 -145
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +9 -8
- package/dist/paint-editor/index.d.ts +9 -8
- package/dist/paint-editor/index.js +6 -5
- package/dist/paint-editor/index.js.map +1 -1
- package/dist/raster/index.cjs +53 -3
- package/dist/raster/index.cjs.map +1 -1
- package/dist/raster/index.d.cts +62 -91
- package/dist/raster/index.d.ts +62 -91
- package/dist/raster/index.js +59 -9
- package/dist/{render-BEriFuqK.d.cts → render-B1K_OoLy.d.cts} +87 -2
- package/dist/{render-tjzKaik-.d.ts → render-CrmHOgpo.d.ts} +87 -2
- package/dist/{blending-aOE6Y3UE.d.cts → retouch-Bxkuc0KH.d.cts} +219 -2
- package/dist/{blending-DXl06NSx.d.ts → retouch-Do6tBs2H.d.ts} +219 -2
- package/dist/{surface-C8RRg_Bh.d.ts → surface-Cn30xIV6.d.cts} +6 -1
- package/dist/{surface-C8RRg_Bh.d.cts → surface-Cn30xIV6.d.ts} +6 -1
- package/dist/{svg-D_cfkhlB.d.cts → svg-BnRj0q8i.d.cts} +16 -4
- package/dist/{svg-wIaKLrU0.d.ts → svg-CmmBFfGT.d.ts} +16 -4
- package/dist/{types-DtL_qLFz.d.ts → types-1SUQKDAw.d.ts} +273 -4
- package/dist/{types-DyQq-WPY.d.cts → types-yINF17Ta.d.cts} +273 -4
- package/dist/vector/index.cjs +12170 -7343
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +1579 -16
- package/dist/vector/index.d.ts +1579 -16
- package/dist/vector/index.js +6303 -1476
- package/dist/vector/index.js.map +1 -1
- package/dist/warp-B39VsOtd.d.cts +348 -0
- package/dist/warp-DMN30aY6.d.ts +348 -0
- package/dist/zlib-dxQdgHyN.d.cts +95 -0
- package/dist/zlib-dxQdgHyN.d.ts +95 -0
- package/package.json +6 -1
- package/skills/pixerate-image-editor/SKILL.md +34 -34
- package/skills/pixerate-image-editor/references/color-management.md +37 -0
- package/skills/pixerate-image-editor/references/photoshop-files.md +39 -0
- package/skills/pixerate-image-editor/references/retouching.md +36 -0
- package/skills/pixerate-vector/SKILL.md +154 -5
- package/dist/chunk-BLWCAQCW.js.map +0 -1
- package/dist/chunk-CZOXTEMN.js.map +0 -1
- package/dist/chunk-FTBZPI77.cjs +0 -1
- package/dist/chunk-FTBZPI77.cjs.map +0 -1
- package/dist/chunk-HNS7UHCM.js.map +0 -1
- package/dist/chunk-JLYX4V57.cjs +0 -2001
- package/dist/chunk-JLYX4V57.cjs.map +0 -1
- package/dist/chunk-KB2YBCVS.js +0 -2001
- package/dist/chunk-KB2YBCVS.js.map +0 -1
- package/dist/chunk-LQEEDHOP.js.map +0 -1
- package/dist/chunk-POGBUYWE.cjs.map +0 -1
- package/dist/chunk-VKK5VS2T.js +0 -1
- package/dist/chunk-W3GXSUSQ.cjs.map +0 -1
- package/dist/chunk-XIOMMGPD.cjs.map +0 -1
- package/dist/chunk-YGIMK4NX.cjs.map +0 -1
- package/dist/homography-CZ-tFjay.d.cts +0 -50
- package/dist/homography-Ctfjoc1b.d.ts +0 -50
- package/dist/warp-CWHZzE3x.d.ts +0 -118
- package/dist/warp-D5jz_tN7.d.cts +0 -118
- /package/dist/{chunk-Z4BC6M74.js.map → chunk-UBIXVXPR.js.map} +0 -0
- /package/dist/{chunk-VKK5VS2T.js.map → cms/index.js.map} +0 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class; var _class2; var _class3;// src/raster/zlib.ts
|
|
2
|
+
var LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];
|
|
3
|
+
var LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
|
|
4
|
+
var DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];
|
|
5
|
+
var DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
|
|
6
|
+
var CL_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
|
|
7
|
+
var ZlibError = class extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "ZlibError";
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
function buildHuffman(lengths, n) {
|
|
14
|
+
const counts = new Uint16Array(16);
|
|
15
|
+
for (let i = 0; i < n; i++) counts[lengths[i]]++;
|
|
16
|
+
counts[0] = 0;
|
|
17
|
+
const offs = new Uint16Array(16);
|
|
18
|
+
for (let i = 1; i < 16; i++) offs[i] = offs[i - 1] + counts[i - 1];
|
|
19
|
+
const symbols = new Uint16Array(n);
|
|
20
|
+
for (let i = 0; i < n; i++) if (lengths[i]) symbols[offs[lengths[i]]++] = i;
|
|
21
|
+
return { counts, symbols };
|
|
22
|
+
}
|
|
23
|
+
var fixedLit = null;
|
|
24
|
+
var fixedDist = null;
|
|
25
|
+
function fixedTables() {
|
|
26
|
+
if (!fixedLit || !fixedDist) {
|
|
27
|
+
const l = new Uint8Array(288);
|
|
28
|
+
for (let i = 0; i < 144; i++) l[i] = 8;
|
|
29
|
+
for (let i = 144; i < 256; i++) l[i] = 9;
|
|
30
|
+
for (let i = 256; i < 280; i++) l[i] = 7;
|
|
31
|
+
for (let i = 280; i < 288; i++) l[i] = 8;
|
|
32
|
+
fixedLit = buildHuffman(l, 288);
|
|
33
|
+
const d = new Uint8Array(30).fill(5);
|
|
34
|
+
fixedDist = buildHuffman(d, 30);
|
|
35
|
+
}
|
|
36
|
+
return [fixedLit, fixedDist];
|
|
37
|
+
}
|
|
38
|
+
var BitReader = (_class = class {
|
|
39
|
+
constructor(data) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);
|
|
40
|
+
this.data = data;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
__init() {this.pos = 0}
|
|
44
|
+
__init2() {this.bit = 0}
|
|
45
|
+
__init3() {this.bits = 0}
|
|
46
|
+
need(n) {
|
|
47
|
+
while (this.bits < n) {
|
|
48
|
+
if (this.pos >= this.data.length) throw new ZlibError("Unexpected end of compressed data");
|
|
49
|
+
this.bit |= this.data[this.pos++] << this.bits;
|
|
50
|
+
this.bits += 8;
|
|
51
|
+
}
|
|
52
|
+
const v = this.bit & (1 << n) - 1;
|
|
53
|
+
this.bit >>>= n;
|
|
54
|
+
this.bits -= n;
|
|
55
|
+
return v;
|
|
56
|
+
}
|
|
57
|
+
decode(h) {
|
|
58
|
+
let code = 0;
|
|
59
|
+
let first = 0;
|
|
60
|
+
let index = 0;
|
|
61
|
+
for (let len = 1; len < 16; len++) {
|
|
62
|
+
code |= this.need(1);
|
|
63
|
+
const count = h.counts[len];
|
|
64
|
+
if (code - count < first) return h.symbols[index + (code - first)];
|
|
65
|
+
index += count;
|
|
66
|
+
first += count;
|
|
67
|
+
first <<= 1;
|
|
68
|
+
code <<= 1;
|
|
69
|
+
}
|
|
70
|
+
throw new ZlibError("Invalid Huffman code");
|
|
71
|
+
}
|
|
72
|
+
align() {
|
|
73
|
+
this.bit = 0;
|
|
74
|
+
this.bits = 0;
|
|
75
|
+
}
|
|
76
|
+
}, _class);
|
|
77
|
+
var Output = (_class2 = class {
|
|
78
|
+
constructor(hint, max) {;_class2.prototype.__init4.call(this);
|
|
79
|
+
this.max = max;
|
|
80
|
+
this.buf = new Uint8Array(Math.max(1024, Math.min(hint, max)));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
__init4() {this.len = 0}
|
|
85
|
+
ensure(n) {
|
|
86
|
+
if (this.len + n > this.max) throw new ZlibError(`Decompressed data exceeds ${this.max} bytes`);
|
|
87
|
+
if (this.len + n <= this.buf.length) return;
|
|
88
|
+
let size = this.buf.length * 2;
|
|
89
|
+
while (size < this.len + n) size *= 2;
|
|
90
|
+
const next = new Uint8Array(Math.min(size, Math.max(this.max, this.len + n)));
|
|
91
|
+
next.set(this.buf.subarray(0, this.len));
|
|
92
|
+
this.buf = next;
|
|
93
|
+
}
|
|
94
|
+
}, _class2);
|
|
95
|
+
function inflateRaw(data, options = {}) {
|
|
96
|
+
const max = _nullishCoalesce(options.maxOutput, () => ( 512 * 1024 * 1024));
|
|
97
|
+
const out = new Output(_nullishCoalesce(options.sizeHint, () => ( data.length * 4)), max);
|
|
98
|
+
const br = new BitReader(data);
|
|
99
|
+
let final = 0;
|
|
100
|
+
while (!final) {
|
|
101
|
+
final = br.need(1);
|
|
102
|
+
const type = br.need(2);
|
|
103
|
+
if (type === 0) {
|
|
104
|
+
br.align();
|
|
105
|
+
if (br.pos + 4 > data.length) throw new ZlibError("Unexpected end of compressed data");
|
|
106
|
+
const len = data[br.pos] | data[br.pos + 1] << 8;
|
|
107
|
+
const nlen = data[br.pos + 2] | data[br.pos + 3] << 8;
|
|
108
|
+
br.pos += 4;
|
|
109
|
+
if ((len ^ 65535) !== nlen) throw new ZlibError("Stored block length mismatch");
|
|
110
|
+
if (br.pos + len > data.length) throw new ZlibError("Unexpected end of compressed data");
|
|
111
|
+
out.ensure(len);
|
|
112
|
+
out.buf.set(data.subarray(br.pos, br.pos + len), out.len);
|
|
113
|
+
out.len += len;
|
|
114
|
+
br.pos += len;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
let lit;
|
|
118
|
+
let dist;
|
|
119
|
+
if (type === 1) [lit, dist] = fixedTables();
|
|
120
|
+
else if (type === 2) {
|
|
121
|
+
const hlit = br.need(5) + 257;
|
|
122
|
+
const hdist = br.need(5) + 1;
|
|
123
|
+
const hclen = br.need(4) + 4;
|
|
124
|
+
const cl = new Uint8Array(19);
|
|
125
|
+
for (let i2 = 0; i2 < hclen; i2++) cl[CL_ORDER[i2]] = br.need(3);
|
|
126
|
+
const clh = buildHuffman(cl, 19);
|
|
127
|
+
const lengths = new Uint8Array(hlit + hdist);
|
|
128
|
+
let i = 0;
|
|
129
|
+
while (i < hlit + hdist) {
|
|
130
|
+
const sym = br.decode(clh);
|
|
131
|
+
if (sym < 16) lengths[i++] = sym;
|
|
132
|
+
else {
|
|
133
|
+
let rep = 0;
|
|
134
|
+
let val = 0;
|
|
135
|
+
if (sym === 16) {
|
|
136
|
+
if (i === 0) throw new ZlibError("Repeat with no previous length");
|
|
137
|
+
val = lengths[i - 1];
|
|
138
|
+
rep = 3 + br.need(2);
|
|
139
|
+
} else if (sym === 17) rep = 3 + br.need(3);
|
|
140
|
+
else rep = 11 + br.need(7);
|
|
141
|
+
if (i + rep > hlit + hdist) throw new ZlibError("Too many code lengths");
|
|
142
|
+
while (rep--) lengths[i++] = val;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
lit = buildHuffman(lengths.subarray(0, hlit), hlit);
|
|
146
|
+
dist = buildHuffman(lengths.subarray(hlit), hdist);
|
|
147
|
+
} else throw new ZlibError("Invalid block type");
|
|
148
|
+
for (; ; ) {
|
|
149
|
+
const sym = br.decode(lit);
|
|
150
|
+
if (sym < 256) {
|
|
151
|
+
out.ensure(1);
|
|
152
|
+
out.buf[out.len++] = sym;
|
|
153
|
+
} else if (sym === 256) break;
|
|
154
|
+
else {
|
|
155
|
+
const li = sym - 257;
|
|
156
|
+
if (li >= 29) throw new ZlibError("Invalid length symbol");
|
|
157
|
+
const len = LENGTH_BASE[li] + br.need(LENGTH_EXTRA[li]);
|
|
158
|
+
const di = br.decode(dist);
|
|
159
|
+
if (di >= 30) throw new ZlibError("Invalid distance symbol");
|
|
160
|
+
const d = DIST_BASE[di] + br.need(DIST_EXTRA[di]);
|
|
161
|
+
if (d > out.len) throw new ZlibError("Distance too far back");
|
|
162
|
+
out.ensure(len);
|
|
163
|
+
const buf = out.buf;
|
|
164
|
+
let p = out.len;
|
|
165
|
+
for (let k = 0; k < len; k++, p++) buf[p] = buf[p - d];
|
|
166
|
+
out.len = p;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return out.buf.slice(0, out.len);
|
|
171
|
+
}
|
|
172
|
+
function adler32(data) {
|
|
173
|
+
let a = 1;
|
|
174
|
+
let b = 0;
|
|
175
|
+
const n = data.length;
|
|
176
|
+
let i = 0;
|
|
177
|
+
while (i < n) {
|
|
178
|
+
const end = Math.min(n, i + 3800);
|
|
179
|
+
for (; i < end; i++) {
|
|
180
|
+
a += data[i];
|
|
181
|
+
b += a;
|
|
182
|
+
}
|
|
183
|
+
a %= 65521;
|
|
184
|
+
b %= 65521;
|
|
185
|
+
}
|
|
186
|
+
return (b << 16 | a) >>> 0;
|
|
187
|
+
}
|
|
188
|
+
function inflate(data, options = {}) {
|
|
189
|
+
if (data.length < 6) throw new ZlibError("Truncated zlib stream");
|
|
190
|
+
const cmf = data[0];
|
|
191
|
+
const flg = data[1];
|
|
192
|
+
if ((cmf & 15) !== 8 || (cmf << 8 | flg) % 31 !== 0) throw new ZlibError("Not a zlib stream");
|
|
193
|
+
if (flg & 32) throw new ZlibError("Preset dictionaries are not supported");
|
|
194
|
+
const out = inflateRaw(data.subarray(2), options);
|
|
195
|
+
if (options.verify !== false && data.length >= 6) {
|
|
196
|
+
const t = data.length - 4;
|
|
197
|
+
const want = (data[t] << 24 | data[t + 1] << 16 | data[t + 2] << 8 | data[t + 3]) >>> 0;
|
|
198
|
+
if (adler32(out) !== want) throw new ZlibError("Adler-32 mismatch");
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
}
|
|
202
|
+
var BitWriter = (_class3 = class {
|
|
203
|
+
|
|
204
|
+
__init5() {this.len = 0}
|
|
205
|
+
__init6() {this.bit = 0}
|
|
206
|
+
__init7() {this.bits = 0}
|
|
207
|
+
constructor(hint) {;_class3.prototype.__init5.call(this);_class3.prototype.__init6.call(this);_class3.prototype.__init7.call(this);
|
|
208
|
+
this.buf = new Uint8Array(Math.max(1024, hint));
|
|
209
|
+
}
|
|
210
|
+
grow() {
|
|
211
|
+
const next = new Uint8Array(this.buf.length * 2);
|
|
212
|
+
next.set(this.buf);
|
|
213
|
+
this.buf = next;
|
|
214
|
+
}
|
|
215
|
+
write(value, n) {
|
|
216
|
+
this.bit |= value << this.bits;
|
|
217
|
+
this.bits += n;
|
|
218
|
+
while (this.bits >= 8) {
|
|
219
|
+
if (this.len >= this.buf.length) this.grow();
|
|
220
|
+
this.buf[this.len++] = this.bit & 255;
|
|
221
|
+
this.bit >>>= 8;
|
|
222
|
+
this.bits -= 8;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
flush() {
|
|
226
|
+
if (this.bits > 0) {
|
|
227
|
+
if (this.len >= this.buf.length) this.grow();
|
|
228
|
+
this.buf[this.len++] = this.bit & 255;
|
|
229
|
+
}
|
|
230
|
+
this.bit = 0;
|
|
231
|
+
this.bits = 0;
|
|
232
|
+
}
|
|
233
|
+
bytes() {
|
|
234
|
+
return this.buf.slice(0, this.len);
|
|
235
|
+
}
|
|
236
|
+
}, _class3);
|
|
237
|
+
function codeLengths(freqs, maxBits) {
|
|
238
|
+
const n = freqs.length;
|
|
239
|
+
const lengths = new Uint8Array(n);
|
|
240
|
+
const f = Float64Array.from(freqs);
|
|
241
|
+
for (; ; ) {
|
|
242
|
+
const nodes = [];
|
|
243
|
+
for (let i = 0; i < n; i++) if (f[i] > 0) nodes.push({ w: f[i], sym: i });
|
|
244
|
+
lengths.fill(0);
|
|
245
|
+
if (nodes.length === 0) return lengths;
|
|
246
|
+
if (nodes.length === 1) {
|
|
247
|
+
lengths[nodes[0].sym] = 1;
|
|
248
|
+
return lengths;
|
|
249
|
+
}
|
|
250
|
+
const heap = nodes.map((_, i) => i);
|
|
251
|
+
const less = (a, b) => nodes[a].w < nodes[b].w || nodes[a].w === nodes[b].w && a < b;
|
|
252
|
+
const down = (i) => {
|
|
253
|
+
for (; ; ) {
|
|
254
|
+
const l = 2 * i + 1;
|
|
255
|
+
const r = l + 1;
|
|
256
|
+
let m = i;
|
|
257
|
+
if (l < heap.length && less(heap[l], heap[m])) m = l;
|
|
258
|
+
if (r < heap.length && less(heap[r], heap[m])) m = r;
|
|
259
|
+
if (m === i) return;
|
|
260
|
+
[heap[i], heap[m]] = [heap[m], heap[i]];
|
|
261
|
+
i = m;
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
const up = (i) => {
|
|
265
|
+
while (i > 0) {
|
|
266
|
+
const p = i - 1 >> 1;
|
|
267
|
+
if (!less(heap[i], heap[p])) return;
|
|
268
|
+
[heap[i], heap[p]] = [heap[p], heap[i]];
|
|
269
|
+
i = p;
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
for (let i = (heap.length >> 1) - 1; i >= 0; i--) down(i);
|
|
273
|
+
const pop = () => {
|
|
274
|
+
const top = heap[0];
|
|
275
|
+
const last = heap.pop();
|
|
276
|
+
if (heap.length) {
|
|
277
|
+
heap[0] = last;
|
|
278
|
+
down(0);
|
|
279
|
+
}
|
|
280
|
+
return top;
|
|
281
|
+
};
|
|
282
|
+
while (heap.length > 1) {
|
|
283
|
+
const a = pop();
|
|
284
|
+
const b = pop();
|
|
285
|
+
nodes.push({ w: nodes[a].w + nodes[b].w, sym: -1, left: a, right: b });
|
|
286
|
+
heap.push(nodes.length - 1);
|
|
287
|
+
up(heap.length - 1);
|
|
288
|
+
}
|
|
289
|
+
let maxLen = 0;
|
|
290
|
+
const stack = [[heap[0], 0]];
|
|
291
|
+
while (stack.length) {
|
|
292
|
+
const [i, d] = stack.pop();
|
|
293
|
+
const node = nodes[i];
|
|
294
|
+
if (node.sym >= 0) {
|
|
295
|
+
lengths[node.sym] = d;
|
|
296
|
+
if (d > maxLen) maxLen = d;
|
|
297
|
+
} else {
|
|
298
|
+
stack.push([node.left, d + 1], [node.right, d + 1]);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (maxLen <= maxBits) return lengths;
|
|
302
|
+
for (let i = 0; i < n; i++) if (f[i] > 0) f[i] = Math.floor(f[i] / 2) + 1;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function canonicalCodes(lengths) {
|
|
306
|
+
const blCount = new Uint16Array(16);
|
|
307
|
+
for (const l of lengths) blCount[l]++;
|
|
308
|
+
blCount[0] = 0;
|
|
309
|
+
const next = new Uint16Array(16);
|
|
310
|
+
let code = 0;
|
|
311
|
+
for (let bits = 1; bits < 16; bits++) {
|
|
312
|
+
code = code + blCount[bits - 1] << 1;
|
|
313
|
+
next[bits] = code;
|
|
314
|
+
}
|
|
315
|
+
const codes = new Uint16Array(lengths.length);
|
|
316
|
+
for (let i = 0; i < lengths.length; i++) {
|
|
317
|
+
const len = lengths[i];
|
|
318
|
+
if (!len) continue;
|
|
319
|
+
let c = next[len]++;
|
|
320
|
+
let r = 0;
|
|
321
|
+
for (let k = 0; k < len; k++) {
|
|
322
|
+
r = r << 1 | c & 1;
|
|
323
|
+
c >>= 1;
|
|
324
|
+
}
|
|
325
|
+
codes[i] = r;
|
|
326
|
+
}
|
|
327
|
+
return codes;
|
|
328
|
+
}
|
|
329
|
+
function lengthSymbol(len) {
|
|
330
|
+
let i = 28;
|
|
331
|
+
while (LENGTH_BASE[i] > len) i--;
|
|
332
|
+
return i;
|
|
333
|
+
}
|
|
334
|
+
function distSymbol(d) {
|
|
335
|
+
let i = 29;
|
|
336
|
+
while (DIST_BASE[i] > d) i--;
|
|
337
|
+
return i;
|
|
338
|
+
}
|
|
339
|
+
var WINDOW = 32768;
|
|
340
|
+
var HASH_BITS = 15;
|
|
341
|
+
var HASH_SIZE = 1 << HASH_BITS;
|
|
342
|
+
var MAX_CHAIN = 24;
|
|
343
|
+
var MAX_MATCH = 258;
|
|
344
|
+
var BLOCK_SYMBOLS = 65536;
|
|
345
|
+
function deflateRaw(data, level = 1) {
|
|
346
|
+
const w = new BitWriter(Math.ceil(data.length / 2) + 64);
|
|
347
|
+
const n = data.length;
|
|
348
|
+
if (level === 0 || n === 0) {
|
|
349
|
+
let pos = 0;
|
|
350
|
+
do {
|
|
351
|
+
const len = Math.min(65535, n - pos);
|
|
352
|
+
const final = pos + len >= n ? 1 : 0;
|
|
353
|
+
w.write(final, 1);
|
|
354
|
+
w.write(0, 2);
|
|
355
|
+
w.flush();
|
|
356
|
+
w.write(len & 65535, 16);
|
|
357
|
+
w.write(~len & 65535, 16);
|
|
358
|
+
for (let i2 = 0; i2 < len; i2++) w.write(data[pos + i2], 8);
|
|
359
|
+
pos += len;
|
|
360
|
+
} while (pos < n);
|
|
361
|
+
return w.bytes();
|
|
362
|
+
}
|
|
363
|
+
const head = new Int32Array(HASH_SIZE).fill(-1);
|
|
364
|
+
const prev = new Int32Array(WINDOW);
|
|
365
|
+
const litLen = new Uint16Array(BLOCK_SYMBOLS);
|
|
366
|
+
const dists = new Uint16Array(BLOCK_SYMBOLS);
|
|
367
|
+
let count = 0;
|
|
368
|
+
const hash = (i2) => (data[i2] << 10 ^ data[i2 + 1] << 5 ^ data[i2 + 2]) * 2654435761 >>> 32 - HASH_BITS;
|
|
369
|
+
const insert = (i2) => {
|
|
370
|
+
if (i2 + 2 >= n) return;
|
|
371
|
+
const h = hash(i2);
|
|
372
|
+
prev[i2 & WINDOW - 1] = head[h];
|
|
373
|
+
head[h] = i2;
|
|
374
|
+
};
|
|
375
|
+
const flushBlock = (final) => {
|
|
376
|
+
const litFreq = new Uint32Array(286);
|
|
377
|
+
const distFreq = new Uint32Array(30);
|
|
378
|
+
for (let k = 0; k < count; k++) {
|
|
379
|
+
if (dists[k] === 0) litFreq[litLen[k]]++;
|
|
380
|
+
else {
|
|
381
|
+
litFreq[257 + lengthSymbol(litLen[k])]++;
|
|
382
|
+
distFreq[distSymbol(dists[k])]++;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
litFreq[256] = 1;
|
|
386
|
+
let anyDist = false;
|
|
387
|
+
for (const v of distFreq) if (v) anyDist = true;
|
|
388
|
+
if (!anyDist) distFreq[0] = 1;
|
|
389
|
+
const litLengths = codeLengths(litFreq, 15);
|
|
390
|
+
const distLengths = codeLengths(distFreq, 15);
|
|
391
|
+
let hlit = 286;
|
|
392
|
+
while (hlit > 257 && !litLengths[hlit - 1]) hlit--;
|
|
393
|
+
let hdist = 30;
|
|
394
|
+
while (hdist > 1 && !distLengths[hdist - 1]) hdist--;
|
|
395
|
+
const all = new Uint8Array(hlit + hdist);
|
|
396
|
+
all.set(litLengths.subarray(0, hlit));
|
|
397
|
+
all.set(distLengths.subarray(0, hdist), hlit);
|
|
398
|
+
const clSyms = [];
|
|
399
|
+
const clExtra = [];
|
|
400
|
+
for (let i2 = 0; i2 < all.length; ) {
|
|
401
|
+
const v = all[i2];
|
|
402
|
+
let run = 1;
|
|
403
|
+
while (i2 + run < all.length && all[i2 + run] === v) run++;
|
|
404
|
+
if (v === 0 && run >= 3) {
|
|
405
|
+
const r = Math.min(run, 138);
|
|
406
|
+
if (r >= 11) {
|
|
407
|
+
clSyms.push(18);
|
|
408
|
+
clExtra.push(r - 11);
|
|
409
|
+
} else {
|
|
410
|
+
clSyms.push(17);
|
|
411
|
+
clExtra.push(r - 3);
|
|
412
|
+
}
|
|
413
|
+
i2 += r;
|
|
414
|
+
} else if (v !== 0 && run >= 4) {
|
|
415
|
+
clSyms.push(v);
|
|
416
|
+
clExtra.push(0);
|
|
417
|
+
const r = Math.min(run - 1, 6);
|
|
418
|
+
clSyms.push(16);
|
|
419
|
+
clExtra.push(r - 3);
|
|
420
|
+
i2 += r + 1;
|
|
421
|
+
} else {
|
|
422
|
+
clSyms.push(v);
|
|
423
|
+
clExtra.push(0);
|
|
424
|
+
i2++;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const clFreq = new Uint32Array(19);
|
|
428
|
+
for (const s of clSyms) clFreq[s]++;
|
|
429
|
+
const clLengths = codeLengths(clFreq, 7);
|
|
430
|
+
let hclen = 19;
|
|
431
|
+
while (hclen > 4 && !clLengths[CL_ORDER[hclen - 1]]) hclen--;
|
|
432
|
+
const clCodes = canonicalCodes(clLengths);
|
|
433
|
+
const litCodes = canonicalCodes(litLengths);
|
|
434
|
+
const distCodes = canonicalCodes(distLengths);
|
|
435
|
+
w.write(final ? 1 : 0, 1);
|
|
436
|
+
w.write(2, 2);
|
|
437
|
+
w.write(hlit - 257, 5);
|
|
438
|
+
w.write(hdist - 1, 5);
|
|
439
|
+
w.write(hclen - 4, 4);
|
|
440
|
+
for (let i2 = 0; i2 < hclen; i2++) w.write(clLengths[CL_ORDER[i2]], 3);
|
|
441
|
+
for (let i2 = 0; i2 < clSyms.length; i2++) {
|
|
442
|
+
const s = clSyms[i2];
|
|
443
|
+
w.write(clCodes[s], clLengths[s]);
|
|
444
|
+
if (s === 16) w.write(clExtra[i2], 2);
|
|
445
|
+
else if (s === 17) w.write(clExtra[i2], 3);
|
|
446
|
+
else if (s === 18) w.write(clExtra[i2], 7);
|
|
447
|
+
}
|
|
448
|
+
for (let k = 0; k < count; k++) {
|
|
449
|
+
const d = dists[k];
|
|
450
|
+
if (d === 0) {
|
|
451
|
+
const s = litLen[k];
|
|
452
|
+
w.write(litCodes[s], litLengths[s]);
|
|
453
|
+
} else {
|
|
454
|
+
const len = litLen[k];
|
|
455
|
+
const li = lengthSymbol(len);
|
|
456
|
+
w.write(litCodes[257 + li], litLengths[257 + li]);
|
|
457
|
+
if (LENGTH_EXTRA[li]) w.write(len - LENGTH_BASE[li], LENGTH_EXTRA[li]);
|
|
458
|
+
const di = distSymbol(d);
|
|
459
|
+
w.write(distCodes[di], distLengths[di]);
|
|
460
|
+
if (DIST_EXTRA[di]) w.write(d - DIST_BASE[di], DIST_EXTRA[di]);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
w.write(litCodes[256], litLengths[256]);
|
|
464
|
+
count = 0;
|
|
465
|
+
};
|
|
466
|
+
let i = 0;
|
|
467
|
+
while (i < n) {
|
|
468
|
+
let bestLen = 0;
|
|
469
|
+
let bestDist = 0;
|
|
470
|
+
if (i + 2 < n) {
|
|
471
|
+
let cand = head[hash(i)];
|
|
472
|
+
let chain = MAX_CHAIN;
|
|
473
|
+
const limit = Math.min(MAX_MATCH, n - i);
|
|
474
|
+
while (cand >= 0 && i - cand <= WINDOW - 1 && chain-- > 0) {
|
|
475
|
+
if (data[cand + bestLen] === data[i + bestLen]) {
|
|
476
|
+
let l = 0;
|
|
477
|
+
while (l < limit && data[cand + l] === data[i + l]) l++;
|
|
478
|
+
if (l > bestLen) {
|
|
479
|
+
bestLen = l;
|
|
480
|
+
bestDist = i - cand;
|
|
481
|
+
if (l === limit) break;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
const next = prev[cand & WINDOW - 1];
|
|
485
|
+
if (next >= cand) break;
|
|
486
|
+
cand = next;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
if (bestLen >= 3) {
|
|
490
|
+
litLen[count] = bestLen;
|
|
491
|
+
dists[count] = bestDist;
|
|
492
|
+
count++;
|
|
493
|
+
const end = i + bestLen;
|
|
494
|
+
const insertEnd = bestLen > 64 ? i + 64 : end;
|
|
495
|
+
for (let k = i; k < insertEnd; k++) insert(k);
|
|
496
|
+
for (let k = Math.max(insertEnd, end - 3); k < end; k++) insert(k);
|
|
497
|
+
i = end;
|
|
498
|
+
} else {
|
|
499
|
+
litLen[count] = data[i];
|
|
500
|
+
dists[count] = 0;
|
|
501
|
+
count++;
|
|
502
|
+
insert(i);
|
|
503
|
+
i++;
|
|
504
|
+
}
|
|
505
|
+
if (count >= BLOCK_SYMBOLS - 1 && i < n) flushBlock(false);
|
|
506
|
+
}
|
|
507
|
+
flushBlock(true);
|
|
508
|
+
w.flush();
|
|
509
|
+
return w.bytes();
|
|
510
|
+
}
|
|
511
|
+
function deflate(data, level = 1) {
|
|
512
|
+
const raw = deflateRaw(data, level);
|
|
513
|
+
const out = new Uint8Array(raw.length + 6);
|
|
514
|
+
out[0] = 120;
|
|
515
|
+
out[1] = 1;
|
|
516
|
+
out.set(raw, 2);
|
|
517
|
+
const a = adler32(data);
|
|
518
|
+
const t = out.length - 4;
|
|
519
|
+
out[t] = a >>> 24;
|
|
520
|
+
out[t + 1] = a >>> 16 & 255;
|
|
521
|
+
out[t + 2] = a >>> 8 & 255;
|
|
522
|
+
out[t + 3] = a & 255;
|
|
523
|
+
return out;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
exports.ZlibError = ZlibError; exports.inflateRaw = inflateRaw; exports.adler32 = adler32; exports.inflate = inflate; exports.deflateRaw = deflateRaw; exports.deflate = deflate;
|
|
534
|
+
//# sourceMappingURL=chunk-643B2HKC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/chunk-643B2HKC.cjs","../src/raster/zlib.ts"],"names":["i"],"mappings":"AAAA;ACeA,IAAM,YAAA,EAAc,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AACtI,IAAM,aAAA,EAAe,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAC3G,IAAM,UAAA,EAAY,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AAC/J,IAAM,WAAA,EAAa,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AACpH,IAAM,SAAA,EAAW,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA;AAE3E,IAAM,UAAA,EAAN,MAAA,QAAwB,MAAM;AAAA,EACnC,WAAA,CAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,KAAA,EAAO,WAAA;AAAA,EACd;AACF,CAAA;AAWA,SAAS,YAAA,CAAa,OAAA,EAA4B,CAAA,EAAoB;AACpE,EAAA,MAAM,OAAA,EAAS,IAAI,WAAA,CAAY,EAAE,CAAA;AACjC,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,CAAA,EAAA,EAAK,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA;AAC7C,EAAA,MAAA,CAAO,CAAC,EAAA,EAAI,CAAA;AACZ,EAAA,MAAM,KAAA,EAAO,IAAI,WAAA,CAAY,EAAE,CAAA;AAC/B,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,EAAA,EAAI,IAAA,CAAK,EAAA,EAAI,CAAC,EAAA,EAAI,MAAA,CAAO,EAAA,EAAI,CAAC,CAAA;AACjE,EAAA,MAAM,QAAA,EAAU,IAAI,WAAA,CAAY,CAAC,CAAA;AACjC,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,CAAA,EAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA;AAC1E,EAAA,OAAO,EAAE,MAAA,EAAQ,QAAQ,CAAA;AAC3B;AAEA,IAAI,SAAA,EAA2B,IAAA;AAC/B,IAAI,UAAA,EAA4B,IAAA;AAChC,SAAS,WAAA,CAAA,EAAkC;AACzC,EAAA,GAAA,CAAI,CAAC,SAAA,GAAY,CAAC,SAAA,EAAW;AAC3B,IAAA,MAAM,EAAA,EAAI,IAAI,UAAA,CAAW,GAAG,CAAA;AAC5B,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA;AACrC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA;AACvC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA;AACvC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA;AACvC,IAAA,SAAA,EAAW,YAAA,CAAa,CAAA,EAAG,GAAG,CAAA;AAC9B,IAAA,MAAM,EAAA,EAAI,IAAI,UAAA,CAAW,EAAE,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA;AACnC,IAAA,UAAA,EAAY,YAAA,CAAa,CAAA,EAAG,EAAE,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,CAAC,QAAA,EAAU,SAAS,CAAA;AAC7B;AAEA,IAAM,UAAA,YAAN,MAAgB;AAAA,EAId,WAAA,CAAqB,IAAA,EAAkB;AAAlB,IAAA,IAAA,CAAA,KAAA,EAAA,IAAA;AAAA,EAAmB;AAAA,EAAnB;AAAA,iBAHrB,IAAA,EAAM,EAAA;AAAA,kBACN,IAAA,EAAM,EAAA;AAAA,kBACN,KAAA,EAAO,EAAA;AAAA,EAEP,IAAA,CAAK,CAAA,EAAmB;AACtB,IAAA,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,CAAA,EAAG;AACpB,MAAA,GAAA,CAAI,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,MAAM,IAAI,SAAA,CAAU,mCAAmC,CAAA;AACzF,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,EAAA,GAAK,IAAA,CAAK,IAAA;AAC1C,MAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,IACf;AACA,IAAA,MAAM,EAAA,EAAI,IAAA,CAAK,IAAA,EAAA,CAAQ,EAAA,GAAK,CAAA,EAAA,EAAK,CAAA;AACjC,IAAA,IAAA,CAAK,IAAA,KAAS,CAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,IAAA,OAAO,CAAA;AAAA,EACT;AAAA,EACA,MAAA,CAAO,CAAA,EAAoB;AACzB,IAAA,IAAI,KAAA,EAAO,CAAA;AACX,IAAA,IAAI,MAAA,EAAQ,CAAA;AACZ,IAAA,IAAI,MAAA,EAAQ,CAAA;AACZ,IAAA,IAAA,CAAA,IAAS,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,EAAA,EAAI,GAAA,EAAA,EAAO;AACjC,MAAA,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA;AACnB,MAAA,MAAM,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA;AAC1B,MAAA,GAAA,CAAI,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAA,CAAS,KAAA,EAAO,KAAA,CAAM,CAAA;AACjE,MAAA,MAAA,GAAS,KAAA;AACT,MAAA,MAAA,GAAS,KAAA;AACT,MAAA,MAAA,IAAU,CAAA;AACV,MAAA,KAAA,IAAS,CAAA;AAAA,IACX;AACA,IAAA,MAAM,IAAI,SAAA,CAAU,sBAAsB,CAAA;AAAA,EAC5C;AAAA,EACA,KAAA,CAAA,EAAc;AACZ,IAAA,IAAA,CAAK,IAAA,EAAM,CAAA;AACX,IAAA,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,EACd;AACF,UAAA;AAEA,IAAM,OAAA,aAAN,MAAa;AAAA,EAGX,WAAA,CAAY,IAAA,EAAuB,GAAA,EAAa;AAAb,IAAA,IAAA,CAAA,IAAA,EAAA,GAAA;AACjC,IAAA,IAAA,CAAK,IAAA,EAAM,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,GAAG,CAAC,CAAC,CAAA;AAAA,EAC/D;AAAA,EAFmC;AAAA,EAFnC;AAAA,kBACA,IAAA,EAAM,EAAA;AAAA,EAIN,MAAA,CAAO,CAAA,EAAiB;AACtB,IAAA,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM,EAAA,EAAI,IAAA,CAAK,GAAA,EAAK,MAAM,IAAI,SAAA,CAAU,CAAA,0BAAA,EAA6B,IAAA,CAAK,GAAG,CAAA,MAAA,CAAQ,CAAA;AAC9F,IAAA,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,MAAA;AACrC,IAAA,IAAI,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,CAAA;AAC7B,IAAA,MAAA,CAAO,KAAA,EAAO,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,KAAA,GAAQ,CAAA;AACpC,IAAA,MAAM,KAAA,EAAO,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,EAAK,IAAA,CAAK,IAAA,EAAM,CAAC,CAAC,CAAC,CAAA;AAC5E,IAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,CAAA,EAAG,IAAA,CAAK,GAAG,CAAC,CAAA;AACvC,IAAA,IAAA,CAAK,IAAA,EAAM,IAAA;AAAA,EACb;AACF,WAAA;AAGO,SAAS,UAAA,CAAW,IAAA,EAAkB,QAAA,EAAqD,CAAC,CAAA,EAAe;AAChH,EAAA,MAAM,IAAA,mBAAM,OAAA,CAAQ,SAAA,UAAa,IAAA,EAAM,KAAA,EAAO,MAAA;AAC9C,EAAA,MAAM,IAAA,EAAM,IAAI,MAAA,kBAAO,OAAA,CAAQ,QAAA,UAAY,IAAA,CAAK,OAAA,EAAS,GAAA,EAAG,GAAG,CAAA;AAC/D,EAAA,MAAM,GAAA,EAAK,IAAI,SAAA,CAAU,IAAI,CAAA;AAC7B,EAAA,IAAI,MAAA,EAAQ,CAAA;AACZ,EAAA,MAAA,CAAO,CAAC,KAAA,EAAO;AACb,IAAA,MAAA,EAAQ,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AACjB,IAAA,MAAM,KAAA,EAAO,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AACtB,IAAA,GAAA,CAAI,KAAA,IAAS,CAAA,EAAG;AACd,MAAA,EAAA,CAAG,KAAA,CAAM,CAAA;AACT,MAAA,GAAA,CAAI,EAAA,CAAG,IAAA,EAAM,EAAA,EAAI,IAAA,CAAK,MAAA,EAAQ,MAAM,IAAI,SAAA,CAAU,mCAAmC,CAAA;AACrF,MAAA,MAAM,IAAA,EAAM,IAAA,CAAK,EAAA,CAAG,GAAG,EAAA,EAAK,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAC,EAAA,GAAK,CAAA;AAChD,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAC,EAAA,EAAK,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,CAAC,EAAA,GAAK,CAAA;AACrD,MAAA,EAAA,CAAG,IAAA,GAAO,CAAA;AACV,MAAA,GAAA,CAAA,CAAK,IAAA,EAAM,KAAA,EAAA,IAAY,IAAA,EAAM,MAAM,IAAI,SAAA,CAAU,8BAA8B,CAAA;AAC/E,MAAA,GAAA,CAAI,EAAA,CAAG,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,MAAA,EAAQ,MAAM,IAAI,SAAA,CAAU,mCAAmC,CAAA;AACvF,MAAA,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA;AACd,MAAA,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,GAAA,EAAK,EAAA,CAAG,IAAA,EAAM,GAAG,CAAA,EAAG,GAAA,CAAI,GAAG,CAAA;AACxD,MAAA,GAAA,CAAI,IAAA,GAAO,GAAA;AACX,MAAA,EAAA,CAAG,IAAA,GAAO,GAAA;AACV,MAAA,QAAA;AAAA,IACF;AACA,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,GAAA,CAAI,KAAA,IAAS,CAAA,EAAG,CAAC,GAAA,EAAK,IAAI,EAAA,EAAI,WAAA,CAAY,CAAA;AAAA,IAAA,KAAA,GAAA,CACjC,KAAA,IAAS,CAAA,EAAG;AACnB,MAAA,MAAM,KAAA,EAAO,EAAA,CAAG,IAAA,CAAK,CAAC,EAAA,EAAI,GAAA;AAC1B,MAAA,MAAM,MAAA,EAAQ,EAAA,CAAG,IAAA,CAAK,CAAC,EAAA,EAAI,CAAA;AAC3B,MAAA,MAAM,MAAA,EAAQ,EAAA,CAAG,IAAA,CAAK,CAAC,EAAA,EAAI,CAAA;AAC3B,MAAA,MAAM,GAAA,EAAK,IAAI,UAAA,CAAW,EAAE,CAAA;AAC5B,MAAA,IAAA,CAAA,IAASA,GAAAA,EAAI,CAAA,EAAGA,GAAAA,EAAI,KAAA,EAAOA,EAAAA,EAAAA,EAAK,EAAA,CAAG,QAAA,CAASA,EAAC,CAAC,EAAA,EAAI,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AAC3D,MAAA,MAAM,IAAA,EAAM,YAAA,CAAa,EAAA,EAAI,EAAE,CAAA;AAC/B,MAAA,MAAM,QAAA,EAAU,IAAI,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA;AAC3C,MAAA,IAAI,EAAA,EAAI,CAAA;AACR,MAAA,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO;AACvB,QAAA,MAAM,IAAA,EAAM,EAAA,CAAG,MAAA,CAAO,GAAG,CAAA;AACzB,QAAA,GAAA,CAAI,IAAA,EAAM,EAAA,EAAI,OAAA,CAAQ,CAAA,EAAG,EAAA,EAAI,GAAA;AAAA,QAAA,KACxB;AACH,UAAA,IAAI,IAAA,EAAM,CAAA;AACV,UAAA,IAAI,IAAA,EAAM,CAAA;AACV,UAAA,GAAA,CAAI,IAAA,IAAQ,EAAA,EAAI;AACd,YAAA,GAAA,CAAI,EAAA,IAAM,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,gCAAgC,CAAA;AACjE,YAAA,IAAA,EAAM,OAAA,CAAQ,EAAA,EAAI,CAAC,CAAA;AACnB,YAAA,IAAA,EAAM,EAAA,EAAI,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AAAA,UACrB,EAAA,KAAA,GAAA,CAAW,IAAA,IAAQ,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AAAA,UAAA,KACrC,IAAA,EAAM,GAAA,EAAK,EAAA,CAAG,IAAA,CAAK,CAAC,CAAA;AACzB,UAAA,GAAA,CAAI,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAM,IAAI,SAAA,CAAU,uBAAuB,CAAA;AACvE,UAAA,MAAA,CAAO,GAAA,EAAA,EAAO,OAAA,CAAQ,CAAA,EAAG,EAAA,EAAI,GAAA;AAAA,QAC/B;AAAA,MACF;AACA,MAAA,IAAA,EAAM,YAAA,CAAa,OAAA,CAAQ,QAAA,CAAS,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,CAAA;AAClD,MAAA,KAAA,EAAO,YAAA,CAAa,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,EAAG,KAAK,CAAA;AAAA,IACnD,EAAA,KAAO,MAAM,IAAI,SAAA,CAAU,oBAAoB,CAAA;AAC/C,IAAA,IAAA,CAAA,EAAA,EAAA,EAAS;AACP,MAAA,MAAM,IAAA,EAAM,EAAA,CAAG,MAAA,CAAO,GAAG,CAAA;AACzB,MAAA,GAAA,CAAI,IAAA,EAAM,GAAA,EAAK;AACb,QAAA,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA;AACZ,QAAA,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,EAAA,EAAI,GAAA;AAAA,MACvB,EAAA,KAAA,GAAA,CAAW,IAAA,IAAQ,GAAA,EAAK,KAAA;AAAA,MAAA,KACnB;AACH,QAAA,MAAM,GAAA,EAAK,IAAA,EAAM,GAAA;AACjB,QAAA,GAAA,CAAI,GAAA,GAAM,EAAA,EAAI,MAAM,IAAI,SAAA,CAAU,uBAAuB,CAAA;AACzD,QAAA,MAAM,IAAA,EAAM,WAAA,CAAY,EAAE,EAAA,EAAI,EAAA,CAAG,IAAA,CAAK,YAAA,CAAa,EAAE,CAAC,CAAA;AACtD,QAAA,MAAM,GAAA,EAAK,EAAA,CAAG,MAAA,CAAO,IAAI,CAAA;AACzB,QAAA,GAAA,CAAI,GAAA,GAAM,EAAA,EAAI,MAAM,IAAI,SAAA,CAAU,yBAAyB,CAAA;AAC3D,QAAA,MAAM,EAAA,EAAI,SAAA,CAAU,EAAE,EAAA,EAAI,EAAA,CAAG,IAAA,CAAK,UAAA,CAAW,EAAE,CAAC,CAAA;AAChD,QAAA,GAAA,CAAI,EAAA,EAAI,GAAA,CAAI,GAAA,EAAK,MAAM,IAAI,SAAA,CAAU,uBAAuB,CAAA;AAC5D,QAAA,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA;AACd,QAAA,MAAM,IAAA,EAAM,GAAA,CAAI,GAAA;AAChB,QAAA,IAAI,EAAA,EAAI,GAAA,CAAI,GAAA;AACZ,QAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,CAAA,EAAA,EAAK,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA,CAAI,EAAA,EAAI,CAAC,CAAA;AACrD,QAAA,GAAA,CAAI,IAAA,EAAM,CAAA;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,GAAA,CAAI,GAAG,CAAA;AACjC;AAGO,SAAS,OAAA,CAAQ,IAAA,EAA0B;AAChD,EAAA,IAAI,EAAA,EAAI,CAAA;AACR,EAAA,IAAI,EAAA,EAAI,CAAA;AACR,EAAA,MAAM,EAAA,EAAI,IAAA,CAAK,MAAA;AACf,EAAA,IAAI,EAAA,EAAI,CAAA;AACR,EAAA,MAAA,CAAO,EAAA,EAAI,CAAA,EAAG;AACZ,IAAA,MAAM,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAA,EAAI,IAAI,CAAA;AAChC,IAAA,IAAA,CAAA,EAAO,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AACnB,MAAA,EAAA,GAAK,IAAA,CAAK,CAAC,CAAA;AACX,MAAA,EAAA,GAAK,CAAA;AAAA,IACP;AACA,IAAA,EAAA,GAAK,KAAA;AACL,IAAA,EAAA,GAAK,KAAA;AAAA,EACP;AACA,EAAA,OAAA,CAAS,EAAA,GAAK,GAAA,EAAM,CAAA,EAAA,IAAO,CAAA;AAC7B;AAGO,SAAS,OAAA,CAAQ,IAAA,EAAkB,QAAA,EAAuE,CAAC,CAAA,EAAe;AAC/H,EAAA,GAAA,CAAI,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,uBAAuB,CAAA;AAChE,EAAA,MAAM,IAAA,EAAM,IAAA,CAAK,CAAC,CAAA;AAClB,EAAA,MAAM,IAAA,EAAM,IAAA,CAAK,CAAC,CAAA;AAClB,EAAA,GAAA,CAAA,CAAK,IAAA,EAAM,EAAA,EAAA,IAAQ,EAAA,GAAA,CAAO,IAAA,GAAO,EAAA,EAAK,GAAA,EAAA,EAAO,GAAA,IAAO,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,mBAAmB,CAAA;AAC9F,EAAA,GAAA,CAAI,IAAA,EAAM,EAAA,EAAI,MAAM,IAAI,SAAA,CAAU,uCAAuC,CAAA;AACzE,EAAA,MAAM,IAAA,EAAM,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,EAAG,OAAO,CAAA;AAChD,EAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,IAAW,MAAA,GAAS,IAAA,CAAK,OAAA,GAAU,CAAA,EAAG;AAChD,IAAA,MAAM,EAAA,EAAI,IAAA,CAAK,OAAA,EAAS,CAAA;AACxB,IAAA,MAAM,KAAA,EAAA,CAAS,IAAA,CAAK,CAAC,EAAA,GAAK,GAAA,EAAO,IAAA,CAAK,EAAA,EAAI,CAAC,EAAA,GAAK,GAAA,EAAO,IAAA,CAAK,EAAA,EAAI,CAAC,EAAA,GAAK,EAAA,EAAK,IAAA,CAAK,EAAA,EAAI,CAAC,CAAA,EAAA,IAAO,CAAA;AAC5F,IAAA,GAAA,CAAI,OAAA,CAAQ,GAAG,EAAA,IAAM,IAAA,EAAM,MAAM,IAAI,SAAA,CAAU,mBAAmB,CAAA;AAAA,EACpE;AACA,EAAA,OAAO,GAAA;AACT;AAMA,IAAM,UAAA,aAAN,MAAgB;AAAA,EACd;AAAA,kBACA,IAAA,EAAM,EAAA;AAAA,kBACN,IAAA,EAAM,EAAA;AAAA,kBACN,KAAA,EAAO,EAAA;AAAA,EACP,WAAA,CAAY,IAAA,EAAc;AACxB,IAAA,IAAA,CAAK,IAAA,EAAM,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EAChD;AAAA,EACQ,IAAA,CAAA,EAAa;AACnB,IAAA,MAAM,KAAA,EAAO,IAAI,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA;AAC/C,IAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AACjB,IAAA,IAAA,CAAK,IAAA,EAAM,IAAA;AAAA,EACb;AAAA,EACA,KAAA,CAAM,KAAA,EAAe,CAAA,EAAiB;AACpC,IAAA,IAAA,CAAK,IAAA,GAAO,MAAA,GAAS,IAAA,CAAK,IAAA;AAC1B,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,IAAA,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,CAAA,EAAG;AACrB,MAAA,GAAA,CAAI,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,CAAA;AAC3C,MAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,EAAK,EAAA,EAAI,IAAA,CAAK,IAAA,EAAM,GAAA;AAClC,MAAA,IAAA,CAAK,IAAA,KAAS,CAAA;AACd,MAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,IACf;AAAA,EACF;AAAA,EACA,KAAA,CAAA,EAAc;AACZ,IAAA,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,CAAA,EAAG;AACjB,MAAA,GAAA,CAAI,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,CAAA;AAC3C,MAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,EAAK,EAAA,EAAI,IAAA,CAAK,IAAA,EAAM,GAAA;AAAA,IACpC;AACA,IAAA,IAAA,CAAK,IAAA,EAAM,CAAA;AACX,IAAA,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,EACd;AAAA,EACA,KAAA,CAAA,EAAoB;AAClB,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA;AAAA,EACnC;AACF,WAAA;AAGA,SAAS,WAAA,CAAY,KAAA,EAAoB,OAAA,EAA6B;AACpE,EAAA,MAAM,EAAA,EAAI,KAAA,CAAM,MAAA;AAChB,EAAA,MAAM,QAAA,EAAU,IAAI,UAAA,CAAW,CAAC,CAAA;AAChC,EAAA,MAAM,EAAA,EAAI,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA;AACjC,EAAA,IAAA,CAAA,EAAA,EAAA,EAAS;AACP,IAAA,MAAM,MAAA,EAA0E,CAAC,CAAA;AACjF,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,CAAA,EAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,EAAG,GAAA,EAAK,EAAE,CAAC,CAAA;AACxE,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AACd,IAAA,GAAA,CAAI,KAAA,CAAM,OAAA,IAAW,CAAA,EAAG,OAAO,OAAA;AAC/B,IAAA,GAAA,CAAI,KAAA,CAAM,OAAA,IAAW,CAAA,EAAG;AACtB,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,GAAG,EAAA,EAAI,CAAA;AACxB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAM,KAAA,EAAiB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,EAAA,GAAM,CAAC,CAAA;AAC5C,IAAA,MAAM,KAAA,EAAO,CAAC,CAAA,EAAW,CAAA,EAAA,GAAc,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA,GAAM,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA,IAAM,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA,GAAK,EAAA,EAAI,CAAA;AACpG,IAAA,MAAM,KAAA,EAAO,CAAC,CAAA,EAAA,GAAc;AAC1B,MAAA,IAAA,CAAA,EAAA,EAAA,EAAS;AACP,QAAA,MAAM,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA;AAClB,QAAA,MAAM,EAAA,EAAI,EAAA,EAAI,CAAA;AACd,QAAA,IAAI,EAAA,EAAI,CAAA;AACR,QAAA,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA;AACnD,QAAA,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA;AACnD,QAAA,GAAA,CAAI,EAAA,IAAM,CAAA,EAAG,MAAA;AACb,QAAA,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,EAAA,EAAI,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AACtC,QAAA,EAAA,EAAI,CAAA;AAAA,MACN;AAAA,IACF,CAAA;AACA,IAAA,MAAM,GAAA,EAAK,CAAC,CAAA,EAAA,GAAc;AACxB,MAAA,MAAA,CAAO,EAAA,EAAI,CAAA,EAAG;AACZ,QAAA,MAAM,EAAA,EAAK,EAAA,EAAI,EAAA,GAAM,CAAA;AACrB,QAAA,GAAA,CAAI,CAAC,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,MAAA;AAC7B,QAAA,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,EAAA,EAAI,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA;AACtC,QAAA,EAAA,EAAI,CAAA;AAAA,MACN;AAAA,IACF,CAAA;AACA,IAAA,IAAA,CAAA,IAAS,EAAA,EAAA,CAAK,IAAA,CAAK,OAAA,GAAU,CAAA,EAAA,EAAK,CAAA,EAAG,EAAA,GAAK,CAAA,EAAG,CAAA,EAAA,EAAK,IAAA,CAAK,CAAC,CAAA;AACxD,IAAA,MAAM,IAAA,EAAM,CAAA,EAAA,GAAM;AAChB,MAAA,MAAM,IAAA,EAAM,IAAA,CAAK,CAAC,CAAA;AAClB,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA;AACtB,MAAA,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,CAAC,EAAA,EAAI,IAAA;AACV,QAAA,IAAA,CAAK,CAAC,CAAA;AAAA,MACR;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG;AACtB,MAAA,MAAM,EAAA,EAAI,GAAA,CAAI,CAAA;AACd,MAAA,MAAM,EAAA,EAAI,GAAA,CAAI,CAAA;AACd,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,CAAE,EAAA,EAAI,KAAA,CAAM,CAAC,CAAA,CAAE,CAAA,EAAG,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,EAAE,CAAC,CAAA;AACrE,MAAA,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAC1B,MAAA,EAAA,CAAG,IAAA,CAAK,OAAA,EAAS,CAAC,CAAA;AAAA,IACpB;AACA,IAAA,IAAI,OAAA,EAAS,CAAA;AACb,IAAA,MAAM,MAAA,EAAiC,CAAC,CAAC,IAAA,CAAK,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA;AACpD,IAAA,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ;AACnB,MAAA,MAAM,CAAC,CAAA,EAAG,CAAC,EAAA,EAAI,KAAA,CAAM,GAAA,CAAI,CAAA;AACzB,MAAA,MAAM,KAAA,EAAO,KAAA,CAAM,CAAC,CAAA;AACpB,MAAA,GAAA,CAAI,IAAA,CAAK,IAAA,GAAO,CAAA,EAAG;AACjB,QAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,EAAA,EAAI,CAAA;AACpB,QAAA,GAAA,CAAI,EAAA,EAAI,MAAA,EAAQ,OAAA,EAAS,CAAA;AAAA,MAC3B,EAAA,KAAO;AACL,QAAA,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,CAAK,IAAA,EAAO,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC,IAAA,CAAK,KAAA,EAAQ,EAAA,EAAI,CAAC,CAAC,CAAA;AAAA,MACtD;AAAA,IACF;AACA,IAAA,GAAA,CAAI,OAAA,GAAU,OAAA,EAAS,OAAO,OAAA;AAE9B,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,CAAA,EAAA,EAAK,GAAA,CAAI,CAAA,CAAE,CAAC,EAAA,EAAI,CAAA,EAAG,CAAA,CAAE,CAAC,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,CAAC,EAAA,EAAI,CAAC,EAAA,EAAI,CAAA;AAAA,EAC1E;AACF;AAGA,SAAS,cAAA,CAAe,OAAA,EAAkC;AACxD,EAAA,MAAM,QAAA,EAAU,IAAI,WAAA,CAAY,EAAE,CAAA;AAClC,EAAA,IAAA,CAAA,MAAW,EAAA,GAAK,OAAA,EAAS,OAAA,CAAQ,CAAC,CAAA,EAAA;AAClC,EAAA,OAAA,CAAQ,CAAC,EAAA,EAAI,CAAA;AACb,EAAA,MAAM,KAAA,EAAO,IAAI,WAAA,CAAY,EAAE,CAAA;AAC/B,EAAA,IAAI,KAAA,EAAO,CAAA;AACX,EAAA,IAAA,CAAA,IAAS,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,EAAA,EAAI,IAAA,EAAA,EAAQ;AACpC,IAAA,KAAA,EAAQ,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,CAAC,EAAA,GAAM,CAAA;AACrC,IAAA,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA;AAAA,EACf;AACA,EAAA,MAAM,MAAA,EAAQ,IAAI,WAAA,CAAY,OAAA,CAAQ,MAAM,CAAA;AAC5C,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,OAAA,CAAQ,MAAA,EAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA;AACrB,IAAA,GAAA,CAAI,CAAC,GAAA,EAAK,QAAA;AACV,IAAA,IAAI,EAAA,EAAI,IAAA,CAAK,GAAG,CAAA,EAAA;AAChB,IAAA,IAAI,EAAA,EAAI,CAAA;AACR,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAC5B,MAAA,EAAA,EAAK,EAAA,GAAK,EAAA,EAAM,EAAA,EAAI,CAAA;AACpB,MAAA,EAAA,IAAM,CAAA;AAAA,IACR;AACA,IAAA,KAAA,CAAM,CAAC,EAAA,EAAI,CAAA;AAAA,EACb;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,YAAA,CAAa,GAAA,EAAqB;AACzC,EAAA,IAAI,EAAA,EAAI,EAAA;AACR,EAAA,MAAA,CAAO,WAAA,CAAY,CAAC,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA;AAC7B,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,UAAA,CAAW,CAAA,EAAmB;AACrC,EAAA,IAAI,EAAA,EAAI,EAAA;AACR,EAAA,MAAA,CAAO,SAAA,CAAU,CAAC,EAAA,EAAI,CAAA,EAAG,CAAA,EAAA;AACzB,EAAA,OAAO,CAAA;AACT;AAEA,IAAM,OAAA,EAAS,KAAA;AACf,IAAM,UAAA,EAAY,EAAA;AAClB,IAAM,UAAA,EAAY,EAAA,GAAK,SAAA;AACvB,IAAM,UAAA,EAAY,EAAA;AAClB,IAAM,UAAA,EAAY,GAAA;AAClB,IAAM,cAAA,EAAgB,KAAA;AAGf,SAAS,UAAA,CAAW,IAAA,EAAkB,MAAA,EAAe,CAAA,EAAe;AACzE,EAAA,MAAM,EAAA,EAAI,IAAI,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA;AACvD,EAAA,MAAM,EAAA,EAAI,IAAA,CAAK,MAAA;AACf,EAAA,GAAA,CAAI,MAAA,IAAU,EAAA,GAAK,EAAA,IAAM,CAAA,EAAG;AAC1B,IAAA,IAAI,IAAA,EAAM,CAAA;AACV,IAAA,GAAG;AACD,MAAA,MAAM,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,EAAA,EAAI,GAAG,CAAA;AACnC,MAAA,MAAM,MAAA,EAAQ,IAAA,EAAM,IAAA,GAAO,EAAA,EAAI,EAAA,EAAI,CAAA;AACnC,MAAA,CAAA,CAAE,KAAA,CAAM,KAAA,EAAO,CAAC,CAAA;AAChB,MAAA,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACZ,MAAA,CAAA,CAAE,KAAA,CAAM,CAAA;AACR,MAAA,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,KAAA,EAAQ,EAAE,CAAA;AACxB,MAAA,CAAA,CAAE,KAAA,CAAM,CAAC,IAAA,EAAM,KAAA,EAAQ,EAAE,CAAA;AACzB,MAAA,IAAA,CAAA,IAASA,GAAAA,EAAI,CAAA,EAAGA,GAAAA,EAAI,GAAA,EAAKA,EAAAA,EAAAA,EAAK,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,IAAA,EAAMA,EAAC,CAAA,EAAG,CAAC,CAAA;AACtD,MAAA,IAAA,GAAO,GAAA;AAAA,IACT,EAAA,MAAA,CAAS,IAAA,EAAM,CAAA,CAAA;AACf,IAAA,OAAO,CAAA,CAAE,KAAA,CAAM,CAAA;AAAA,EACjB;AAEA,EAAA,MAAM,KAAA,EAAO,IAAI,UAAA,CAAW,SAAS,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,CAAA;AAC9C,EAAA,MAAM,KAAA,EAAO,IAAI,UAAA,CAAW,MAAM,CAAA;AAElC,EAAA,MAAM,OAAA,EAAS,IAAI,WAAA,CAAY,aAAa,CAAA;AAC5C,EAAA,MAAM,MAAA,EAAQ,IAAI,WAAA,CAAY,aAAa,CAAA;AAC3C,EAAA,IAAI,MAAA,EAAQ,CAAA;AACZ,EAAA,MAAM,KAAA,EAAO,CAACA,EAAAA,EAAAA,GAAAA,CAAiB,IAAA,CAAKA,EAAC,EAAA,GAAK,GAAA,EAAO,IAAA,CAAKA,GAAAA,EAAI,CAAC,EAAA,GAAK,EAAA,EAAK,IAAA,CAAKA,GAAAA,EAAI,CAAC,CAAA,EAAA,EAAK,WAAA,IAAiB,GAAA,EAAK,SAAA;AAC1G,EAAA,MAAM,OAAA,EAAS,CAACA,EAAAA,EAAAA,GAAc;AAC5B,IAAA,GAAA,CAAIA,GAAAA,EAAI,EAAA,GAAK,CAAA,EAAG,MAAA;AAChB,IAAA,MAAM,EAAA,EAAI,IAAA,CAAKA,EAAC,CAAA;AAChB,IAAA,IAAA,CAAKA,GAAAA,EAAK,OAAA,EAAS,CAAE,EAAA,EAAI,IAAA,CAAK,CAAC,CAAA;AAC/B,IAAA,IAAA,CAAK,CAAC,EAAA,EAAIA,EAAAA;AAAA,EACZ,CAAA;AAEA,EAAA,MAAM,WAAA,EAAa,CAAC,KAAA,EAAA,GAAmB;AACrC,IAAA,MAAM,QAAA,EAAU,IAAI,WAAA,CAAY,GAAG,CAAA;AACnC,IAAA,MAAM,SAAA,EAAW,IAAI,WAAA,CAAY,EAAE,CAAA;AACnC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,MAAA,GAAA,CAAI,KAAA,CAAM,CAAC,EAAA,IAAM,CAAA,EAAG,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAC,CAAA,EAAA;AAAA,MAAA,KAChC;AACH,QAAA,OAAA,CAAQ,IAAA,EAAM,YAAA,CAAa,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,EAAA;AACrC,QAAA,QAAA,CAAS,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA,EAAA;AAAA,MAC/B;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,GAAG,EAAA,EAAI,CAAA;AACf,IAAA,IAAI,QAAA,EAAU,KAAA;AACd,IAAA,IAAA,CAAA,MAAW,EAAA,GAAK,QAAA,EAAU,GAAA,CAAI,CAAA,EAAG,QAAA,EAAU,IAAA;AAC3C,IAAA,GAAA,CAAI,CAAC,OAAA,EAAS,QAAA,CAAS,CAAC,EAAA,EAAI,CAAA;AAC5B,IAAA,MAAM,WAAA,EAAa,WAAA,CAAY,OAAA,EAAS,EAAE,CAAA;AAC1C,IAAA,MAAM,YAAA,EAAc,WAAA,CAAY,QAAA,EAAU,EAAE,CAAA;AAC5C,IAAA,IAAI,KAAA,EAAO,GAAA;AACX,IAAA,MAAA,CAAO,KAAA,EAAO,IAAA,GAAO,CAAC,UAAA,CAAW,KAAA,EAAO,CAAC,CAAA,EAAG,IAAA,EAAA;AAC5C,IAAA,IAAI,MAAA,EAAQ,EAAA;AACZ,IAAA,MAAA,CAAO,MAAA,EAAQ,EAAA,GAAK,CAAC,WAAA,CAAY,MAAA,EAAQ,CAAC,CAAA,EAAG,KAAA,EAAA;AAC7C,IAAA,MAAM,IAAA,EAAM,IAAI,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA;AACvC,IAAA,GAAA,CAAI,GAAA,CAAI,UAAA,CAAW,QAAA,CAAS,CAAA,EAAG,IAAI,CAAC,CAAA;AACpC,IAAA,GAAA,CAAI,GAAA,CAAI,WAAA,CAAY,QAAA,CAAS,CAAA,EAAG,KAAK,CAAA,EAAG,IAAI,CAAA;AAE5C,IAAA,MAAM,OAAA,EAAmB,CAAC,CAAA;AAC1B,IAAA,MAAM,QAAA,EAAoB,CAAC,CAAA;AAC3B,IAAA,IAAA,CAAA,IAASA,GAAAA,EAAI,CAAA,EAAGA,GAAAA,EAAI,GAAA,CAAI,MAAA,EAAA,EAAU;AAChC,MAAA,MAAM,EAAA,EAAI,GAAA,CAAIA,EAAC,CAAA;AACf,MAAA,IAAI,IAAA,EAAM,CAAA;AACV,MAAA,MAAA,CAAOA,GAAAA,EAAI,IAAA,EAAM,GAAA,CAAI,OAAA,GAAU,GAAA,CAAIA,GAAAA,EAAI,GAAG,EAAA,IAAM,CAAA,EAAG,GAAA,EAAA;AACnD,MAAA,GAAA,CAAI,EAAA,IAAM,EAAA,GAAK,IAAA,GAAO,CAAA,EAAG;AACvB,QAAA,MAAM,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAA;AAC3B,QAAA,GAAA,CAAI,EAAA,GAAK,EAAA,EAAI;AACX,UAAA,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACd,UAAA,OAAA,CAAQ,IAAA,CAAK,EAAA,EAAI,EAAE,CAAA;AAAA,QACrB,EAAA,KAAO;AACL,UAAA,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACd,UAAA,OAAA,CAAQ,IAAA,CAAK,EAAA,EAAI,CAAC,CAAA;AAAA,QACpB;AACA,QAAAA,GAAAA,GAAK,CAAA;AAAA,MACP,EAAA,KAAA,GAAA,CAAW,EAAA,IAAM,EAAA,GAAK,IAAA,GAAO,CAAA,EAAG;AAC9B,QAAA,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AACb,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AACd,QAAA,MAAM,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AAC7B,QAAA,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AACd,QAAA,OAAA,CAAQ,IAAA,CAAK,EAAA,EAAI,CAAC,CAAA;AAClB,QAAAA,GAAAA,GAAK,EAAA,EAAI,CAAA;AAAA,MACX,EAAA,KAAO;AACL,QAAA,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AACb,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AACd,QAAAA,EAAAA,EAAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,MAAM,OAAA,EAAS,IAAI,WAAA,CAAY,EAAE,CAAA;AACjC,IAAA,IAAA,CAAA,MAAW,EAAA,GAAK,MAAA,EAAQ,MAAA,CAAO,CAAC,CAAA,EAAA;AAChC,IAAA,MAAM,UAAA,EAAY,WAAA,CAAY,MAAA,EAAQ,CAAC,CAAA;AACvC,IAAA,IAAI,MAAA,EAAQ,EAAA;AACZ,IAAA,MAAA,CAAO,MAAA,EAAQ,EAAA,GAAK,CAAC,SAAA,CAAU,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAC,CAAA,EAAG,KAAA,EAAA;AACrD,IAAA,MAAM,QAAA,EAAU,cAAA,CAAe,SAAS,CAAA;AACxC,IAAA,MAAM,SAAA,EAAW,cAAA,CAAe,UAAU,CAAA;AAC1C,IAAA,MAAM,UAAA,EAAY,cAAA,CAAe,WAAW,CAAA;AAE5C,IAAA,CAAA,CAAE,KAAA,CAAM,MAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,CAAC,CAAA;AACxB,IAAA,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACZ,IAAA,CAAA,CAAE,KAAA,CAAM,KAAA,EAAO,GAAA,EAAK,CAAC,CAAA;AACrB,IAAA,CAAA,CAAE,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AACpB,IAAA,CAAA,CAAE,KAAA,CAAM,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AACpB,IAAA,IAAA,CAAA,IAASA,GAAAA,EAAI,CAAA,EAAGA,GAAAA,EAAI,KAAA,EAAOA,EAAAA,EAAAA,EAAK,CAAA,CAAE,KAAA,CAAM,SAAA,CAAU,QAAA,CAASA,EAAC,CAAC,CAAA,EAAG,CAAC,CAAA;AACjE,IAAA,IAAA,CAAA,IAASA,GAAAA,EAAI,CAAA,EAAGA,GAAAA,EAAI,MAAA,CAAO,MAAA,EAAQA,EAAAA,EAAAA,EAAK;AACtC,MAAA,MAAM,EAAA,EAAI,MAAA,CAAOA,EAAC,CAAA;AAClB,MAAA,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAA;AAChC,MAAA,GAAA,CAAI,EAAA,IAAM,EAAA,EAAI,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQA,EAAC,CAAA,EAAG,CAAC,CAAA;AAAA,MAAA,KAAA,GAAA,CAC1B,EAAA,IAAM,EAAA,EAAI,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQA,EAAC,CAAA,EAAG,CAAC,CAAA;AAAA,MAAA,KAAA,GAAA,CAC/B,EAAA,IAAM,EAAA,EAAI,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQA,EAAC,CAAA,EAAG,CAAC,CAAA;AAAA,IAC1C;AACA,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,MAAA,MAAM,EAAA,EAAI,KAAA,CAAM,CAAC,CAAA;AACjB,MAAA,GAAA,CAAI,EAAA,IAAM,CAAA,EAAG;AACX,QAAA,MAAM,EAAA,EAAI,MAAA,CAAO,CAAC,CAAA;AAClB,QAAA,CAAA,CAAE,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,EAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAAA,MACpC,EAAA,KAAO;AACL,QAAA,MAAM,IAAA,EAAM,MAAA,CAAO,CAAC,CAAA;AACpB,QAAA,MAAM,GAAA,EAAK,YAAA,CAAa,GAAG,CAAA;AAC3B,QAAA,CAAA,CAAE,KAAA,CAAM,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA,EAAG,UAAA,CAAW,IAAA,EAAM,EAAE,CAAC,CAAA;AAChD,QAAA,GAAA,CAAI,YAAA,CAAa,EAAE,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,IAAA,EAAM,WAAA,CAAY,EAAE,CAAA,EAAG,YAAA,CAAa,EAAE,CAAC,CAAA;AACrE,QAAA,MAAM,GAAA,EAAK,UAAA,CAAW,CAAC,CAAA;AACvB,QAAA,CAAA,CAAE,KAAA,CAAM,SAAA,CAAU,EAAE,CAAA,EAAG,WAAA,CAAY,EAAE,CAAC,CAAA;AACtC,QAAA,GAAA,CAAI,UAAA,CAAW,EAAE,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,EAAA,EAAI,SAAA,CAAU,EAAE,CAAA,EAAG,UAAA,CAAW,EAAE,CAAC,CAAA;AAAA,MAC/D;AAAA,IACF;AACA,IAAA,CAAA,CAAE,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG,UAAA,CAAW,GAAG,CAAC,CAAA;AACtC,IAAA,MAAA,EAAQ,CAAA;AAAA,EACV,CAAA;AAEA,EAAA,IAAI,EAAA,EAAI,CAAA;AACR,EAAA,MAAA,CAAO,EAAA,EAAI,CAAA,EAAG;AACZ,IAAA,IAAI,QAAA,EAAU,CAAA;AACd,IAAA,IAAI,SAAA,EAAW,CAAA;AACf,IAAA,GAAA,CAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG;AACb,MAAA,IAAI,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA;AACvB,MAAA,IAAI,MAAA,EAAQ,SAAA;AACZ,MAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,EAAA,EAAI,CAAC,CAAA;AACvC,MAAA,MAAA,CAAO,KAAA,GAAQ,EAAA,GAAK,EAAA,EAAI,KAAA,GAAQ,OAAA,EAAS,EAAA,GAAK,KAAA,GAAA,EAAU,CAAA,EAAG;AACzD,QAAA,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,OAAO,EAAA,IAAM,IAAA,CAAK,EAAA,EAAI,OAAO,CAAA,EAAG;AAC9C,UAAA,IAAI,EAAA,EAAI,CAAA;AACR,UAAA,MAAA,CAAO,EAAA,EAAI,MAAA,GAAS,IAAA,CAAK,KAAA,EAAO,CAAC,EAAA,IAAM,IAAA,CAAK,EAAA,EAAI,CAAC,CAAA,EAAG,CAAA,EAAA;AACpD,UAAA,GAAA,CAAI,EAAA,EAAI,OAAA,EAAS;AACf,YAAA,QAAA,EAAU,CAAA;AACV,YAAA,SAAA,EAAW,EAAA,EAAI,IAAA;AACf,YAAA,GAAA,CAAI,EAAA,IAAM,KAAA,EAAO,KAAA;AAAA,UACnB;AAAA,QACF;AACA,QAAA,MAAM,KAAA,EAAO,IAAA,CAAK,KAAA,EAAQ,OAAA,EAAS,CAAE,CAAA;AACrC,QAAA,GAAA,CAAI,KAAA,GAAQ,IAAA,EAAM,KAAA;AAClB,QAAA,KAAA,EAAO,IAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,GAAA,CAAI,QAAA,GAAW,CAAA,EAAG;AAChB,MAAA,MAAA,CAAO,KAAK,EAAA,EAAI,OAAA;AAChB,MAAA,KAAA,CAAM,KAAK,EAAA,EAAI,QAAA;AACf,MAAA,KAAA,EAAA;AACA,MAAA,MAAM,IAAA,EAAM,EAAA,EAAI,OAAA;AAEhB,MAAA,MAAM,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,GAAA;AAC1C,MAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,SAAA,EAAW,CAAA,EAAA,EAAK,MAAA,CAAO,CAAC,CAAA;AAC5C,MAAA,IAAA,CAAA,IAAS,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,SAAA,EAAW,IAAA,EAAM,CAAC,CAAA,EAAG,EAAA,EAAI,GAAA,EAAK,CAAA,EAAA,EAAK,MAAA,CAAO,CAAC,CAAA;AACjE,MAAA,EAAA,EAAI,GAAA;AAAA,IACN,EAAA,KAAO;AACL,MAAA,MAAA,CAAO,KAAK,EAAA,EAAI,IAAA,CAAK,CAAC,CAAA;AACtB,MAAA,KAAA,CAAM,KAAK,EAAA,EAAI,CAAA;AACf,MAAA,KAAA,EAAA;AACA,MAAA,MAAA,CAAO,CAAC,CAAA;AACR,MAAA,CAAA,EAAA;AAAA,IACF;AACA,IAAA,GAAA,CAAI,MAAA,GAAS,cAAA,EAAgB,EAAA,GAAK,EAAA,EAAI,CAAA,EAAG,UAAA,CAAW,KAAK,CAAA;AAAA,EAC3D;AAEA,EAAA,UAAA,CAAW,IAAI,CAAA;AACf,EAAA,CAAA,CAAE,KAAA,CAAM,CAAA;AACR,EAAA,OAAO,CAAA,CAAE,KAAA,CAAM,CAAA;AACjB;AAGO,SAAS,OAAA,CAAQ,IAAA,EAAkB,MAAA,EAAe,CAAA,EAAe;AACtE,EAAA,MAAM,IAAA,EAAM,UAAA,CAAW,IAAA,EAAM,KAAK,CAAA;AAClC,EAAA,MAAM,IAAA,EAAM,IAAI,UAAA,CAAW,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA;AACzC,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA;AACT,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA;AACT,EAAA,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,CAAC,CAAA;AACd,EAAA,MAAM,EAAA,EAAI,OAAA,CAAQ,IAAI,CAAA;AACtB,EAAA,MAAM,EAAA,EAAI,GAAA,CAAI,OAAA,EAAS,CAAA;AACvB,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,EAAA,IAAM,EAAA;AACf,EAAA,GAAA,CAAI,EAAA,EAAI,CAAC,EAAA,EAAK,EAAA,IAAM,GAAA,EAAM,GAAA;AAC1B,EAAA,GAAA,CAAI,EAAA,EAAI,CAAC,EAAA,EAAK,EAAA,IAAM,EAAA,EAAK,GAAA;AACzB,EAAA,GAAA,CAAI,EAAA,EAAI,CAAC,EAAA,EAAI,EAAA,EAAI,GAAA;AACjB,EAAA,OAAO,GAAA;AACT;ADtDA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACF,iLAAC","file":"/home/runner/work/editor/editor/packages/core/dist/chunk-643B2HKC.cjs","sourcesContent":[null,"/**\n * Synchronous zlib (RFC 1950) and raw deflate (RFC 1951), dependency-free, for the image editor's\n * layer PNGs and PSD ZIP channels. `CompressionStream` is asynchronous and not everywhere, and\n * layer pixels must serialize inside the synchronous `toJSON()`.\n *\n * - `inflate` handles stored, fixed and dynamic blocks and refuses to produce more than\n * `maxOutput` bytes (a decompression bomb guard).\n * - `deflate` is a greedy LZ77 (hash chains, 32 KiB window) with one dynamic Huffman block per\n * 64 Ki symbols. It favours simplicity over the last few percent of ratio.\n */\n\n// ---------------------------------------------------------------------------\n// Shared tables\n// ---------------------------------------------------------------------------\n\nconst LENGTH_BASE = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258];\nconst LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\nconst DIST_BASE = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];\nconst DIST_EXTRA = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\nconst CL_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\nexport class ZlibError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ZlibError';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Inflate\n// ---------------------------------------------------------------------------\n\ninterface Huffman {\n counts: Uint16Array;\n symbols: Uint16Array;\n}\n\nfunction buildHuffman(lengths: ArrayLike<number>, n: number): Huffman {\n const counts = new Uint16Array(16);\n for (let i = 0; i < n; i++) counts[lengths[i]]++;\n counts[0] = 0;\n const offs = new Uint16Array(16);\n for (let i = 1; i < 16; i++) offs[i] = offs[i - 1] + counts[i - 1];\n const symbols = new Uint16Array(n);\n for (let i = 0; i < n; i++) if (lengths[i]) symbols[offs[lengths[i]]++] = i;\n return { counts, symbols };\n}\n\nlet fixedLit: Huffman | null = null;\nlet fixedDist: Huffman | null = null;\nfunction fixedTables(): [Huffman, Huffman] {\n if (!fixedLit || !fixedDist) {\n const l = new Uint8Array(288);\n for (let i = 0; i < 144; i++) l[i] = 8;\n for (let i = 144; i < 256; i++) l[i] = 9;\n for (let i = 256; i < 280; i++) l[i] = 7;\n for (let i = 280; i < 288; i++) l[i] = 8;\n fixedLit = buildHuffman(l, 288);\n const d = new Uint8Array(30).fill(5);\n fixedDist = buildHuffman(d, 30);\n }\n return [fixedLit, fixedDist];\n}\n\nclass BitReader {\n pos = 0;\n bit = 0;\n bits = 0;\n constructor(readonly data: Uint8Array) {}\n need(n: number): number {\n while (this.bits < n) {\n if (this.pos >= this.data.length) throw new ZlibError('Unexpected end of compressed data');\n this.bit |= this.data[this.pos++] << this.bits;\n this.bits += 8;\n }\n const v = this.bit & ((1 << n) - 1);\n this.bit >>>= n;\n this.bits -= n;\n return v;\n }\n decode(h: Huffman): number {\n let code = 0;\n let first = 0;\n let index = 0;\n for (let len = 1; len < 16; len++) {\n code |= this.need(1);\n const count = h.counts[len];\n if (code - count < first) return h.symbols[index + (code - first)];\n index += count;\n first += count;\n first <<= 1;\n code <<= 1;\n }\n throw new ZlibError('Invalid Huffman code');\n }\n align(): void {\n this.bit = 0;\n this.bits = 0;\n }\n}\n\nclass Output {\n buf: Uint8Array;\n len = 0;\n constructor(hint: number, readonly max: number) {\n this.buf = new Uint8Array(Math.max(1024, Math.min(hint, max)));\n }\n ensure(n: number): void {\n if (this.len + n > this.max) throw new ZlibError(`Decompressed data exceeds ${this.max} bytes`);\n if (this.len + n <= this.buf.length) return;\n let size = this.buf.length * 2;\n while (size < this.len + n) size *= 2;\n const next = new Uint8Array(Math.min(size, Math.max(this.max, this.len + n)));\n next.set(this.buf.subarray(0, this.len));\n this.buf = next;\n }\n}\n\n/** Inflates raw deflate data (no zlib header). */\nexport function inflateRaw(data: Uint8Array, options: { maxOutput?: number; sizeHint?: number } = {}): Uint8Array {\n const max = options.maxOutput ?? 512 * 1024 * 1024;\n const out = new Output(options.sizeHint ?? data.length * 4, max);\n const br = new BitReader(data);\n let final = 0;\n while (!final) {\n final = br.need(1);\n const type = br.need(2);\n if (type === 0) {\n br.align();\n if (br.pos + 4 > data.length) throw new ZlibError('Unexpected end of compressed data');\n const len = data[br.pos] | (data[br.pos + 1] << 8);\n const nlen = data[br.pos + 2] | (data[br.pos + 3] << 8);\n br.pos += 4;\n if ((len ^ 0xffff) !== nlen) throw new ZlibError('Stored block length mismatch');\n if (br.pos + len > data.length) throw new ZlibError('Unexpected end of compressed data');\n out.ensure(len);\n out.buf.set(data.subarray(br.pos, br.pos + len), out.len);\n out.len += len;\n br.pos += len;\n continue;\n }\n let lit: Huffman;\n let dist: Huffman;\n if (type === 1) [lit, dist] = fixedTables();\n else if (type === 2) {\n const hlit = br.need(5) + 257;\n const hdist = br.need(5) + 1;\n const hclen = br.need(4) + 4;\n const cl = new Uint8Array(19);\n for (let i = 0; i < hclen; i++) cl[CL_ORDER[i]] = br.need(3);\n const clh = buildHuffman(cl, 19);\n const lengths = new Uint8Array(hlit + hdist);\n let i = 0;\n while (i < hlit + hdist) {\n const sym = br.decode(clh);\n if (sym < 16) lengths[i++] = sym;\n else {\n let rep = 0;\n let val = 0;\n if (sym === 16) {\n if (i === 0) throw new ZlibError('Repeat with no previous length');\n val = lengths[i - 1];\n rep = 3 + br.need(2);\n } else if (sym === 17) rep = 3 + br.need(3);\n else rep = 11 + br.need(7);\n if (i + rep > hlit + hdist) throw new ZlibError('Too many code lengths');\n while (rep--) lengths[i++] = val;\n }\n }\n lit = buildHuffman(lengths.subarray(0, hlit), hlit);\n dist = buildHuffman(lengths.subarray(hlit), hdist);\n } else throw new ZlibError('Invalid block type');\n for (;;) {\n const sym = br.decode(lit);\n if (sym < 256) {\n out.ensure(1);\n out.buf[out.len++] = sym;\n } else if (sym === 256) break;\n else {\n const li = sym - 257;\n if (li >= 29) throw new ZlibError('Invalid length symbol');\n const len = LENGTH_BASE[li] + br.need(LENGTH_EXTRA[li]);\n const di = br.decode(dist);\n if (di >= 30) throw new ZlibError('Invalid distance symbol');\n const d = DIST_BASE[di] + br.need(DIST_EXTRA[di]);\n if (d > out.len) throw new ZlibError('Distance too far back');\n out.ensure(len);\n const buf = out.buf;\n let p = out.len;\n for (let k = 0; k < len; k++, p++) buf[p] = buf[p - d];\n out.len = p;\n }\n }\n }\n return out.buf.slice(0, out.len);\n}\n\n/** Adler-32 checksum (zlib trailer). */\nexport function adler32(data: Uint8Array): number {\n let a = 1;\n let b = 0;\n const n = data.length;\n let i = 0;\n while (i < n) {\n const end = Math.min(n, i + 3800);\n for (; i < end; i++) {\n a += data[i];\n b += a;\n }\n a %= 65521;\n b %= 65521;\n }\n return ((b << 16) | a) >>> 0;\n}\n\n/** Inflates zlib data (header, deflate stream, Adler-32 trailer). */\nexport function inflate(data: Uint8Array, options: { maxOutput?: number; sizeHint?: number; verify?: boolean } = {}): Uint8Array {\n if (data.length < 6) throw new ZlibError('Truncated zlib stream');\n const cmf = data[0];\n const flg = data[1];\n if ((cmf & 15) !== 8 || ((cmf << 8) | flg) % 31 !== 0) throw new ZlibError('Not a zlib stream');\n if (flg & 32) throw new ZlibError('Preset dictionaries are not supported');\n const out = inflateRaw(data.subarray(2), options);\n if (options.verify !== false && data.length >= 6) {\n const t = data.length - 4;\n const want = ((data[t] << 24) | (data[t + 1] << 16) | (data[t + 2] << 8) | data[t + 3]) >>> 0;\n if (adler32(out) !== want) throw new ZlibError('Adler-32 mismatch');\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Deflate\n// ---------------------------------------------------------------------------\n\nclass BitWriter {\n buf: Uint8Array;\n len = 0;\n bit = 0;\n bits = 0;\n constructor(hint: number) {\n this.buf = new Uint8Array(Math.max(1024, hint));\n }\n private grow(): void {\n const next = new Uint8Array(this.buf.length * 2);\n next.set(this.buf);\n this.buf = next;\n }\n write(value: number, n: number): void {\n this.bit |= value << this.bits;\n this.bits += n;\n while (this.bits >= 8) {\n if (this.len >= this.buf.length) this.grow();\n this.buf[this.len++] = this.bit & 255;\n this.bit >>>= 8;\n this.bits -= 8;\n }\n }\n flush(): void {\n if (this.bits > 0) {\n if (this.len >= this.buf.length) this.grow();\n this.buf[this.len++] = this.bit & 255;\n }\n this.bit = 0;\n this.bits = 0;\n }\n bytes(): Uint8Array {\n return this.buf.slice(0, this.len);\n }\n}\n\n/** Code lengths (≤ maxBits) for symbol frequencies, by Huffman's algorithm with frequency flattening. */\nfunction codeLengths(freqs: Uint32Array, maxBits: number): Uint8Array {\n const n = freqs.length;\n const lengths = new Uint8Array(n);\n const f = Float64Array.from(freqs);\n for (;;) {\n const nodes: Array<{ w: number; sym: number; left?: number; right?: number }> = [];\n for (let i = 0; i < n; i++) if (f[i] > 0) nodes.push({ w: f[i], sym: i });\n lengths.fill(0);\n if (nodes.length === 0) return lengths;\n if (nodes.length === 1) {\n lengths[nodes[0].sym] = 1;\n return lengths;\n }\n // Simple binary heap of node indexes by weight.\n const heap: number[] = nodes.map((_, i) => i);\n const less = (a: number, b: number) => nodes[a].w < nodes[b].w || (nodes[a].w === nodes[b].w && a < b);\n const down = (i: number) => {\n for (;;) {\n const l = 2 * i + 1;\n const r = l + 1;\n let m = i;\n if (l < heap.length && less(heap[l], heap[m])) m = l;\n if (r < heap.length && less(heap[r], heap[m])) m = r;\n if (m === i) return;\n [heap[i], heap[m]] = [heap[m], heap[i]];\n i = m;\n }\n };\n const up = (i: number) => {\n while (i > 0) {\n const p = (i - 1) >> 1;\n if (!less(heap[i], heap[p])) return;\n [heap[i], heap[p]] = [heap[p], heap[i]];\n i = p;\n }\n };\n for (let i = (heap.length >> 1) - 1; i >= 0; i--) down(i);\n const pop = () => {\n const top = heap[0];\n const last = heap.pop()!;\n if (heap.length) {\n heap[0] = last;\n down(0);\n }\n return top;\n };\n while (heap.length > 1) {\n const a = pop();\n const b = pop();\n nodes.push({ w: nodes[a].w + nodes[b].w, sym: -1, left: a, right: b });\n heap.push(nodes.length - 1);\n up(heap.length - 1);\n }\n let maxLen = 0;\n const stack: Array<[number, number]> = [[heap[0], 0]];\n while (stack.length) {\n const [i, d] = stack.pop()!;\n const node = nodes[i];\n if (node.sym >= 0) {\n lengths[node.sym] = d;\n if (d > maxLen) maxLen = d;\n } else {\n stack.push([node.left!, d + 1], [node.right!, d + 1]);\n }\n }\n if (maxLen <= maxBits) return lengths;\n // Too deep: flatten the distribution and retry.\n for (let i = 0; i < n; i++) if (f[i] > 0) f[i] = Math.floor(f[i] / 2) + 1;\n }\n}\n\n/** Canonical codes for code lengths, bit-reversed for LSB-first output. */\nfunction canonicalCodes(lengths: Uint8Array): Uint16Array {\n const blCount = new Uint16Array(16);\n for (const l of lengths) blCount[l]++;\n blCount[0] = 0;\n const next = new Uint16Array(16);\n let code = 0;\n for (let bits = 1; bits < 16; bits++) {\n code = (code + blCount[bits - 1]) << 1;\n next[bits] = code;\n }\n const codes = new Uint16Array(lengths.length);\n for (let i = 0; i < lengths.length; i++) {\n const len = lengths[i];\n if (!len) continue;\n let c = next[len]++;\n let r = 0;\n for (let k = 0; k < len; k++) {\n r = (r << 1) | (c & 1);\n c >>= 1;\n }\n codes[i] = r;\n }\n return codes;\n}\n\nfunction lengthSymbol(len: number): number {\n let i = 28;\n while (LENGTH_BASE[i] > len) i--;\n return i;\n}\n\nfunction distSymbol(d: number): number {\n let i = 29;\n while (DIST_BASE[i] > d) i--;\n return i;\n}\n\nconst WINDOW = 32768;\nconst HASH_BITS = 15;\nconst HASH_SIZE = 1 << HASH_BITS;\nconst MAX_CHAIN = 24;\nconst MAX_MATCH = 258;\nconst BLOCK_SYMBOLS = 65536;\n\n/** Raw deflate (no zlib header). `level` 0 stores the data uncompressed. */\nexport function deflateRaw(data: Uint8Array, level: 0 | 1 = 1): Uint8Array {\n const w = new BitWriter(Math.ceil(data.length / 2) + 64);\n const n = data.length;\n if (level === 0 || n === 0) {\n let pos = 0;\n do {\n const len = Math.min(65535, n - pos);\n const final = pos + len >= n ? 1 : 0;\n w.write(final, 1);\n w.write(0, 2);\n w.flush();\n w.write(len & 0xffff, 16);\n w.write(~len & 0xffff, 16);\n for (let i = 0; i < len; i++) w.write(data[pos + i], 8);\n pos += len;\n } while (pos < n);\n return w.bytes();\n }\n\n const head = new Int32Array(HASH_SIZE).fill(-1);\n const prev = new Int32Array(WINDOW);\n // Symbols of the current block: literal (0..255) or length/distance pairs.\n const litLen = new Uint16Array(BLOCK_SYMBOLS);\n const dists = new Uint16Array(BLOCK_SYMBOLS);\n let count = 0;\n const hash = (i: number) => (((data[i] << 10) ^ (data[i + 1] << 5) ^ data[i + 2]) * 2654435761) >>> (32 - HASH_BITS);\n const insert = (i: number) => {\n if (i + 2 >= n) return;\n const h = hash(i);\n prev[i & (WINDOW - 1)] = head[h];\n head[h] = i;\n };\n\n const flushBlock = (final: boolean) => {\n const litFreq = new Uint32Array(286);\n const distFreq = new Uint32Array(30);\n for (let k = 0; k < count; k++) {\n if (dists[k] === 0) litFreq[litLen[k]]++;\n else {\n litFreq[257 + lengthSymbol(litLen[k])]++;\n distFreq[distSymbol(dists[k])]++;\n }\n }\n litFreq[256] = 1;\n let anyDist = false;\n for (const v of distFreq) if (v) anyDist = true;\n if (!anyDist) distFreq[0] = 1;\n const litLengths = codeLengths(litFreq, 15);\n const distLengths = codeLengths(distFreq, 15);\n let hlit = 286;\n while (hlit > 257 && !litLengths[hlit - 1]) hlit--;\n let hdist = 30;\n while (hdist > 1 && !distLengths[hdist - 1]) hdist--;\n const all = new Uint8Array(hlit + hdist);\n all.set(litLengths.subarray(0, hlit));\n all.set(distLengths.subarray(0, hdist), hlit);\n // Run-length encode the code lengths.\n const clSyms: number[] = [];\n const clExtra: number[] = [];\n for (let i = 0; i < all.length; ) {\n const v = all[i];\n let run = 1;\n while (i + run < all.length && all[i + run] === v) run++;\n if (v === 0 && run >= 3) {\n const r = Math.min(run, 138);\n if (r >= 11) {\n clSyms.push(18);\n clExtra.push(r - 11);\n } else {\n clSyms.push(17);\n clExtra.push(r - 3);\n }\n i += r;\n } else if (v !== 0 && run >= 4) {\n clSyms.push(v);\n clExtra.push(0);\n const r = Math.min(run - 1, 6);\n clSyms.push(16);\n clExtra.push(r - 3);\n i += r + 1;\n } else {\n clSyms.push(v);\n clExtra.push(0);\n i++;\n }\n }\n const clFreq = new Uint32Array(19);\n for (const s of clSyms) clFreq[s]++;\n const clLengths = codeLengths(clFreq, 7);\n let hclen = 19;\n while (hclen > 4 && !clLengths[CL_ORDER[hclen - 1]]) hclen--;\n const clCodes = canonicalCodes(clLengths);\n const litCodes = canonicalCodes(litLengths);\n const distCodes = canonicalCodes(distLengths);\n\n w.write(final ? 1 : 0, 1);\n w.write(2, 2);\n w.write(hlit - 257, 5);\n w.write(hdist - 1, 5);\n w.write(hclen - 4, 4);\n for (let i = 0; i < hclen; i++) w.write(clLengths[CL_ORDER[i]], 3);\n for (let i = 0; i < clSyms.length; i++) {\n const s = clSyms[i];\n w.write(clCodes[s], clLengths[s]);\n if (s === 16) w.write(clExtra[i], 2);\n else if (s === 17) w.write(clExtra[i], 3);\n else if (s === 18) w.write(clExtra[i], 7);\n }\n for (let k = 0; k < count; k++) {\n const d = dists[k];\n if (d === 0) {\n const s = litLen[k];\n w.write(litCodes[s], litLengths[s]);\n } else {\n const len = litLen[k];\n const li = lengthSymbol(len);\n w.write(litCodes[257 + li], litLengths[257 + li]);\n if (LENGTH_EXTRA[li]) w.write(len - LENGTH_BASE[li], LENGTH_EXTRA[li]);\n const di = distSymbol(d);\n w.write(distCodes[di], distLengths[di]);\n if (DIST_EXTRA[di]) w.write(d - DIST_BASE[di], DIST_EXTRA[di]);\n }\n }\n w.write(litCodes[256], litLengths[256]);\n count = 0;\n };\n\n let i = 0;\n while (i < n) {\n let bestLen = 0;\n let bestDist = 0;\n if (i + 2 < n) {\n let cand = head[hash(i)];\n let chain = MAX_CHAIN;\n const limit = Math.min(MAX_MATCH, n - i);\n while (cand >= 0 && i - cand <= WINDOW - 1 && chain-- > 0) {\n if (data[cand + bestLen] === data[i + bestLen]) {\n let l = 0;\n while (l < limit && data[cand + l] === data[i + l]) l++;\n if (l > bestLen) {\n bestLen = l;\n bestDist = i - cand;\n if (l === limit) break;\n }\n }\n const next = prev[cand & (WINDOW - 1)];\n if (next >= cand) break;\n cand = next;\n }\n }\n if (bestLen >= 3) {\n litLen[count] = bestLen;\n dists[count] = bestDist;\n count++;\n const end = i + bestLen;\n // Insert every position of long runs only up to a cap, which keeps solid areas fast.\n const insertEnd = bestLen > 64 ? i + 64 : end;\n for (let k = i; k < insertEnd; k++) insert(k);\n for (let k = Math.max(insertEnd, end - 3); k < end; k++) insert(k);\n i = end;\n } else {\n litLen[count] = data[i];\n dists[count] = 0;\n count++;\n insert(i);\n i++;\n }\n if (count >= BLOCK_SYMBOLS - 1 && i < n) flushBlock(false);\n }\n // The final block may hold only the end-of-block symbol.\n flushBlock(true);\n w.flush();\n return w.bytes();\n}\n\n/** zlib stream: header, raw deflate, Adler-32. */\nexport function deflate(data: Uint8Array, level: 0 | 1 = 1): Uint8Array {\n const raw = deflateRaw(data, level);\n const out = new Uint8Array(raw.length + 6);\n out[0] = 0x78;\n out[1] = 0x01;\n out.set(raw, 2);\n const a = adler32(data);\n const t = out.length - 4;\n out[t] = a >>> 24;\n out[t + 1] = (a >>> 16) & 255;\n out[t + 2] = (a >>> 8) & 255;\n out[t + 3] = a & 255;\n return out;\n}\n"]}
|