You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1 lines
197 KiB

{"ast":null,"code":"// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\n\nvar wk = function (c, id, msg, transfer, cb) {\n var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], {\n type: 'text/javascript'\n })));\n var w = new Worker(u);\n\n w.onerror = function (e) {\n return cb(e.error, null);\n };\n\n w.onmessage = function (e) {\n return cb(null, e.data);\n };\n\n w.postMessage(msg, transfer);\n return w;\n}; // aliases for shorter compressed code (most minifers don't do this)\n\n\nvar u8 = Uint8Array,\n u16 = Uint16Array,\n u32 = Uint32Array; // fixed length extra bits\n\nvar fleb = new u8([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,\n/* unused */\n0, 0,\n/* impossible */\n0]); // fixed distance extra bits\n// see fleb note\n\nvar fdeb = new u8([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,\n/* unused */\n0, 0]); // code length index map\n\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); // get base, reverse index map from extra bits\n\nvar freb = function (eb, start) {\n var b = new u16(31);\n\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n } // numbers here are at max 18 bits\n\n\n var r = new u32(b[30]);\n\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = j - b[i] << 5 | i;\n }\n }\n\n return [b, r];\n};\n\nvar _a = freb(fleb, 2),\n fl = _a[0],\n revfl = _a[1]; // we can ignore the fact that the other numbers are wrong; they never happen anyway\n\n\nfl[28] = 258, revfl[258] = 28;\n\nvar _b = freb(fdeb, 0),\n fd = _b[0],\n revfd = _b[1]; // map of value to reverse (assuming 16 bits)\n\n\nvar rev = new u16(32768);\n\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = (i & 0xAAAA) >>> 1 | (i & 0x5555) << 1;\n x = (x & 0xCCCC) >>> 2 | (x & 0x3333) << 2;\n x = (x & 0xF0F0) >>> 4 | (x & 0x0F0F) << 4;\n rev[i] = ((x & 0xFF00) >>> 8 | (x & 0x00FF) << 8) >>> 1;\n} // create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\n\n\nvar hMap = function (cd, mb, r) {\n var s = cd.length; // index\n\n var i = 0; // u16 \"map\": index -> # of codes with bit length = index\n\n var l = new u16(mb); // length of cd must be 288 (total # of codes)\n\n for (; i < s; ++i) ++l[cd[i] - 1]; // u16 \"map\": index -> minimum code for bit length = index\n\n\n var le = new u16(mb);\n\n for (i = 0; i < mb; ++i) {\n le[i] = le[i - 1] + l[i - 1] << 1;\n }\n\n var co;\n\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb); // bits to remove for reverser\n\n var rvb = 15 - mb;\n\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = i << 4 | cd[i]; // free bits\n\n var r_1 = mb - cd[i]; // start value\n\n var v = le[cd[i] - 1]++ << r_1; // m is end value\n\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n\n for (i = 0; i < s; ++i) co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n }\n\n return co;\n}; // fixed length tree\n\n\nvar flt = new u8(288);\n\nfor (var i = 0; i < 144; ++i) flt[i] = 8;\n\nfor (var i = 144; i < 256; ++i) flt[i] = 9;\n\nfor (var i = 256; i < 280; ++i) flt[i] = 7;\n\nfor (var i = 280; i < 288; ++i) flt[i] = 8; // fixed distance tree\n\n\nvar fdt = new u8(32);\n\nfor (var i = 0; i < 32; ++i) fdt[i] = 5; // fixed length map\n\n\nvar flm = /*#__PURE__*/hMap(flt, 9, 0),\n flrm = /*#__PURE__*/hMap(flt, 9, 1); // fixed distance map\n\nvar fdm = /*#__PURE__*/hMap(fdt, 5, 0),\n fdrm = /*#__PURE__*/hMap(fdt, 5, 1); // find max of array\n\nvar max = function (a) {\n var m = a[0];\n\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m) m = a[i];\n }\n\n return m;\n}; // read d, starting at bit p and mask with m\n\n\nvar bits = function (d, p, m) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8) >>> (p & 7) & m;\n}; // read d, starting at bit p continuing for at least 16 bits\n\n\nvar bits16 = function (d, p) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >>> (p & 7);\n}; // get end of byte\n\n\nvar shft = function (p) {\n return (p / 8 >> 0) + (p & 7 && 1);\n}; // typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\n\n\nvar slc = function (v, s, e) {\n if (s == null || s < 0) s = 0;\n if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied\n\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n}; // expands raw DEFLATE data\n\n\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length; // have to estimate size\n\n var noBuf = !buf || st; // no state\n\n var noSt = !st || st.i;\n if (!st) st = {}; // Assumes roughly 33% compression ratio average\n\n if (!buf) buf = new u8(sl * 3); // ensure buffer can fit at least l elements\n\n var cbuf = function (l) {\n var bl = buf.length; // need to increase size to fit\n\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n }; // last chunk bitpos bytes\n\n\n var final = st.f || 0,\n pos = st.p || 0,\n bt = st.b || 0,\n lm = st.l,\n dm = st.d,\n lbt = st.m,\n dbt = st.n; // total bits\n\n var tbts = sl * 8;\n\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1); // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4,\n l = dat[s - 4] | dat[s - 3] << 8,\n t = s + l;\n\n if (t > sl) {\n if (noSt) throw 'unexpected EOF';\n break;\n } // ensure size\n\n\n if (noBuf) cbuf(bt + l); // Copy over uncompressed data\n\n buf.set(dat.subarray(s, t), bt); // Get new bitpos, update byte count\n\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n } else if (type == 1) lm = flrm, dm = fdrm, lbt = 9, dbt = 5;else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257,\n hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14; // length+distance tree\n\n var ldt = new u8(tl); // code length tree\n\n var clt = new u8(19);\n\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n\n pos += hcLen * 3; // code lengths bits\n\n var clb = max(clt),\n clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts) break; // code lengths map\n\n var clm = hMap(clt, clb, 1);\n\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)]; // bits read\n\n pos += r & 15; // symbol\n\n var s = r >>> 4; // code length to copy\n\n if (s < 16) {\n ldt[i++] = s;\n } else {\n // copy count\n var c = 0,\n n = 0;\n if (s == 16) n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];else if (s == 17) n = 3 + bits(dat, pos, 7), pos += 3;else if (s == 18) n = 11 + bits(dat, pos, 127), pos += 7;\n\n while (n--) ldt[i++] = c;\n }\n } // length tree distance tree\n\n\n var lt = ldt.subarray(0, hLit),\n dt = ldt.subarray(hLit); // max length bits\n\n lbt = max(lt); // max dist bits\n\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else throw 'invalid block type';\n\n if (pos > tbts) throw 'unexpected EOF';\n } // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n\n\n if (noBuf) cbuf(bt + 131072);\n var lms = (1 << lbt) - 1,\n dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms],\n sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) throw 'unexpected EOF';\n if (!c) throw 'invalid length/literal';\n if (sym < 256) buf[bt++] = sym;else if (sym == 256) {\n lm = null;\n break;\n } else {\n var add = sym - 254; // no extra bits needed if less\n\n if (sym > 264) {\n // index\n var i = sym - 257,\n b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n } // dist\n\n\n var d = dm[bits16(dat, pos) & dms],\n dsym = d >>> 4;\n if (!d) throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n\n if (pos > tbts) throw 'unexpected EOF';\n if (noBuf) cbuf(bt + 131072);\n var end = bt + add;\n\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n\n bt = end;\n }\n }\n\n st.l = lm, st.p = pos, st.b = bt;\n if (lm) final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n\n return bt == buf.length ? buf : slc(buf, 0, bt);\n}; // starting at p, write the minimum number of bits that can hold v to d\n\n\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n}; // starting at p, write the minimum number of bits (>8) that can hold v to d\n\n\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n}; // creates code lengths from a frequency table\n\n\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n\n for (var i = 0; i < d.length; ++i) {\n if (d[i]) t.push({\n s: i,\n f: d[i]\n });\n }\n\n var s = t.length;\n var t2 = t.slice();\n if (!s) return [new u8(0), 0];\n\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n\n t.sort(function (a, b) {\n return a.f - b.f;\n }); // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n\n t.push({\n s: -1,\n f: 25001\n });\n var l = t[0],\n r = t[1],\n i0 = 0,\n i1 = 1,\n i2 = 2;\n t[0] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n }; // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = {\n s: -1,\n f: l.f + r.f,\n l: l,\n r: r\n };\n }\n\n var maxSym = t2[0].s;\n\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym) maxSym = t2[i].s;\n } // code lengths\n\n\n var tr = new u16(maxSym + 1); // max bits in tree\n\n var mbt = ln(t[i1 - 1], tr, 0);\n\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0,\n dt = 0; // left cost\n\n var lft = mbt - mb,\n cst = 1 << lft;\n t2.sort(function (a, b) {\n return tr[b.s] - tr[a.s] || a.f - b.f;\n });\n\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n\n if (tr[i2_1] > mb) {\n dt += cst - (1 << mbt - tr[i2_1]);\n tr[i2_1] = mb;\n } else break;\n }\n\n dt >>>= lft;\n\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1;else ++i;\n }\n\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n\n mbt = mb;\n }\n\n return [new u8(tr), mbt];\n}; // get the max length and assign length codes\n\n\nvar ln = function (n, l, d) {\n return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n}; // length codes generation\n\n\nvar lc = function (c) {\n var s = c.length; // Note that the semicolon was intentional\n\n while (s && !c[--s]);\n\n var cl = new u16(++s); // ind num streak\n\n var cli = 0,\n cln = c[0],\n cls = 1;\n\n var w = function (v) {\n cl[cli++] = v;\n };\n\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s) ++cls;else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138) w(32754);\n\n if (cls > 2) {\n w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n cls = 0;\n }\n } else if (cls > 3) {\n w(cln), --cls;\n\n for (; cls > 6; cls -= 6) w(8304);\n\n if (cls > 2) w(cls - 3 << 5 | 8208), cls = 0;\n }\n\n while (cls--) w(cln);\n\n cls = 1;\n cln = c[i];\n }\n }\n\n return [cl.subarray(0, cli), s];\n}; // calculate the length of output from tree, code lengths\n\n\nvar clen = function (cf, cl) {\n var l = 0;\n\n for (var i = 0; i < cl.length; ++i) l += cf[i] * cl[i];\n\n return l;\n}; // writes a fixed block\n// returns the new bit pos\n\n\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n\n for (var i = 0; i < s; ++i) out[o + i + 4] = dat[i];\n\n return (o + 4 + s) * 8;\n}; // writes a block\n\n\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n\n var _a = hTree(lf, 15),\n dlt = _a[0],\n mlb = _a[1];\n\n var _b = hTree(df, 15),\n ddt = _b[0],\n mdb = _b[1];\n\n var _c = lc(dlt),\n lclt = _c[0],\n nlc = _c[1];\n\n var _d = lc(ddt),\n lcdt = _d[0],\n ndc = _d[1];\n\n var lcfreq = new u16(19);\n\n for (var i = 0; i < lclt.length; ++i) lcfreq[lclt[i] & 31]++;\n\n for (var i = 0; i < lcdt.length; ++i) lcfreq[lcdt[i] & 31]++;\n\n var _e = hTree(lcfreq, 7),\n lct = _e[0],\n mlcb = _e[1];\n\n var nlcc = 19;\n\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc);\n\n var flen = bl + 5 << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n\n for (var i = 0; i < nlcc; ++i) wbits(out, p + 3 * i, lct[clim[i]]);\n\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15) wbits(out, p, clct[i] >>> 5 & 127), p += clct[i] >>> 12;\n }\n }\n } else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = syms[i] >>> 18 & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7) wbits(out, p, syms[i] >>> 23 & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3) wbits16(out, p, syms[i] >>> 5 & 8191), p += fdeb[dst];\n } else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n\n wbits16(out, p, lm[256]);\n return p + ll[256];\n}; // deflate options (nice << 13) | chain\n\n\nvar deo = /*#__PURE__*/new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); // empty\n\nvar et = /*#__PURE__*/new u8(0); // compresses data into a raw DEFLATE buffer\n\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post); // writing to this writes to the output buffer\n\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n } else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n } else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13,\n c = opt & 8191;\n var msk_1 = (1 << plvl) - 1; // prev 2-byte val map curr 2-byte val map\n\n var prev = new u16(32768),\n head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3),\n bs2_1 = 2 * bs1_1;\n\n var hsh = function (i) {\n return (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1;\n }; // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n\n\n var syms = new u32(25000); // length/literal freq distance freq\n\n var lf = new u16(288),\n df = new u16(32); // l/lcnt exbits index l/lind waitdx bitpos\n\n var lc_1 = 0,\n eb = 0,\n i = 0,\n li = 0,\n wi = 0,\n bs = 0;\n\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i); // index mod 32768\n\n var imod = i & 32767; // previous index with this value\n\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod; // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n\n for (var j = 0; j < 286; ++j) lf[j] = 0;\n\n for (var j = 0; j < 30; ++j) df[j] = 0;\n } // len dist chain\n\n\n var l = 2,\n d = 0,\n ch_1 = c,\n dif = imod - pimod & 32767;\n\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i); // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n\n var ml = Math.min(258, rem);\n\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl);\n\n if (nl > l) {\n l = nl, d = dif; // break out early when we reach \"nice\" (we are satisfied enough)\n\n if (nl > maxn) break; // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j + 32768 & 32767;\n var pti = prev[ti];\n var cd = ti - pti + 32768 & 32767;\n if (cd > md) md = cd, pimod = ti;\n }\n }\n } // check the previous match\n\n\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod + 32768 & 32767;\n }\n } // d will be nonzero only when a match was found\n\n\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n var lin = revfl[l] & 31,\n din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n } else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); // this is the easiest way to avoid needing to maintain state\n\n if (!lst) pos = wfblk(w, pos, et);\n }\n\n return slc(o, 0, pre + shft(pos) + post);\n}; // CRC32 table\n\n\nvar crct = /*#__PURE__*/function () {\n var t = new u32(256);\n\n for (var i = 0; i < 256; ++i) {\n var c = i,\n k = 9;\n\n while (--k) c = (c & 1 && 0xEDB88320) ^ c >>> 1;\n\n t[i] = c;\n }\n\n return t;\n}(); // CRC32\n\n\nvar crc = function () {\n var c = 0xFFFFFFFF;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n\n for (var i = 0; i < d.length; ++i) cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n\n c = cr;\n },\n d: function () {\n return c ^ 0xFFFFFFFF;\n }\n };\n}; // Alder32\n\n\nvar adler = function () {\n var a = 1,\n b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a,\n m = b;\n var l = d.length;\n\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n\n for (; i < e; ++i) n += d[i], m += n;\n\n n %= 65521, m %= 65521;\n }\n\n a = n, b = m;\n },\n d: function () {\n return (a >>> 8 << 16 | (b & 255) << 8 | b >>> 8) + ((a & 255) << 23) * 2;\n }\n };\n};\n\n; // deflate with opts\n\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n}; // Walmart object spread\n\n\nvar mrg = function (a, b) {\n var o = {};\n\n for (var k in a) o[k] = a[k];\n\n for (var k in b) o[k] = b[k];\n\n return o;\n}; // worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\n\n\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i],\n k = ks[i];\n\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n } else {\n fnStr += st_1;\n\n for (var t in v.prototype) fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n } else fnStr += st_1;\n } else td[k] = v;\n }\n\n return [fnStr, td];\n};\n\nvar ch = []; // clone bufs\n\nvar cbfs = function (v) {\n var tl = [];\n\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32) tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n\n return tl;\n}; // use a worker to execute code\n\n\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n\n if (!ch[id]) {\n var fnStr = '',\n td_1 = {},\n m = fns.length - 1;\n\n for (var i = 0; i < m; ++i) _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n}; // base async inflate fn\n\n\nvar bInflt = function () {\n return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8];\n};\n\nvar bDflt = function () {\n return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf];\n}; // gzip extra\n\n\nvar gze = function () {\n return [gzh, gzhl, wbytes, crc, crct];\n}; // gunzip extra\n\n\nvar guze = function () {\n return [gzs, gzl];\n}; // zlib extra\n\n\nvar zle = function () {\n return [zlh, wbytes, adler];\n}; // unzlib extra\n\n\nvar zule = function () {\n return [zlv];\n}; // post buf\n\n\nvar pbf = function (msg) {\n return postMessage(msg, [msg.buffer]);\n}; // get u8\n\n\nvar gu8 = function (o) {\n return o && o.size && new u8(o.size);\n}; // async helper\n\n\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n if (!opts.consume) dat = new u8(dat);\n w.postMessage([dat, opts], [dat.buffer]);\n return function () {\n w.terminate();\n };\n}; // auto stream\n\n\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) {\n return postMessage([dat, final], [dat.buffer]);\n };\n\n return function (ev) {\n return strm.push(ev.data[0], ev.data[1]);\n };\n}; // async stream attach\n\n\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err) w.terminate(), strm.ondata.call(strm, err);else {\n if (dat[1]) w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n\n strm.push = function (d, f) {\n if (t) throw 'stream finished';\n if (!strm.ondata) throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n\n strm.terminate = function () {\n w.terminate();\n };\n}; // read 2 bytes\n\n\nvar b2 = function (d, b) {\n return d[b] | d[b + 1] << 8;\n}; // read 4 bytes\n\n\nvar b4 = function (d, b) {\n return (d[b] | d[b + 1] << 8 | d[b + 2] << 16) + (d[b + 3] << 23) * 2;\n}; // write bytes\n\n\nvar wbytes = function (d, b, v) {\n for (; v; ++b) d[b] = v, v >>>= 8;\n}; // gzip header\n\n\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n\n if (o.mtime != 0) wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n\n if (fn) {\n c[3] = 8;\n\n for (var i = 0; i <= fn.length; ++i) c[i + 10] = fn.charCodeAt(i);\n }\n}; // gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\n\n\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8) throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4) st += d[10] | (d[11] << 8) + 2;\n\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]);\n\n return st + (flg & 2);\n}; // gzip length\n\n\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + 2 * (d[l - 1] << 23);\n}; // gzip header length\n\n\nvar gzhl = function (o) {\n return 10 + (o.filename && o.filename.length + 1 || 0);\n}; // zlib header\n\n\nvar zlh = function (c, o) {\n var lv = o.level,\n fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = fl << 6 | (fl ? 32 - 2 * fl : 1);\n}; // zlib valid\n\n\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31) throw 'invalid zlib data';\n if (d[1] & 32) throw 'invalid zlib data: preset dictionaries not supported';\n};\n\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function') cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n} // zlib footer: -4 to -0 is Adler32\n\n/**\n * Streaming DEFLATE compression\n */\n\n\nvar Deflate = /*#__PURE__*/function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function') cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Deflate.prototype.push = function (chunk, final) {\n if (this.d) throw 'stream finished';\n if (!this.ondata) throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n\n return Deflate;\n}();\n\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\n\nvar AsyncDeflate = /*#__PURE__*/function () {\n function AsyncDeflate(opts, cb) {\n astrmify([bDflt, function () {\n return [astrm, Deflate];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n\n return AsyncDeflate;\n}();\n\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt], function (ev) {\n return pbf(deflateSync(ev.data[0], ev.data[1]));\n }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\n\nexport function deflateSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\n\nvar Inflate = /*#__PURE__*/function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n\n Inflate.prototype.e = function (c) {\n if (this.d) throw 'stream finished';\n if (!this.ondata) throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, this.s.p / 8 >> 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n\n\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n\n return Inflate;\n}();\n\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\n\nvar AsyncInflate = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([bInflt, function () {\n return [astrm, Inflate];\n }], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n\n return AsyncInflate;\n}();\n\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt], function (ev) {\n return pbf(inflateSync(ev.data[0], gu8(ev.data[1])));\n }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function inflateSync(data, out) {\n return inflt(data, out);\n} // before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n\n/**\n * Streaming GZIP compression\n */\n\nvar Gzip = /*#__PURE__*/function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v) gzh(raw, this.o), this.v = 0;\n if (f) wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n\n return Gzip;\n}();\n\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\n\nvar AsyncGzip = /*#__PURE__*/function () {\n function AsyncGzip(opts, cb) {\n astrmify([bDflt, gze, function () {\n return [astrm, Deflate, Gzip];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n\n return AsyncGzip;\n}();\n\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt, gze, function () {\n return [gzipSync];\n }], function (ev) {\n return pbf(gzipSync(ev.data[0], ev.data[1]));\n }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\n\nexport function gzipSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var c = crc(),\n l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8),\n s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\n\nvar Gunzip = /*#__PURE__*/function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n\n if (this.v) {\n var s = gzs(this.p);\n if (s >= this.p.length && !final) return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n\n if (final) {\n if (this.p.length < 8) throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n } // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n\n\n Inflate.prototype.c.call(this, final);\n };\n\n return Gunzip;\n}();\n\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\n\nvar AsyncGunzip = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([bInflt, guze, function () {\n return [astrm, Inflate, Gunzip];\n }], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n\n return AsyncGunzip;\n}();\n\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt, guze, function () {\n return [gunzipSync];\n }], function (ev) {\n return pbf(gunzipSync(ev.data[0]));\n }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\n\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\n\nvar Zlib = /*#__PURE__*/function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v) zlh(raw, this.o), this.v = 0;\n if (f) wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n\n return Zlib;\n}();\n\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\n\nvar AsyncZlib = /*#__PURE__*/function () {\n function AsyncZlib(opts, cb) {\n astrmify([bDflt, zle, function () {\n return [astrm, Deflate, Zlib];\n }], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n\n return AsyncZlib;\n}();\n\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bDflt, zle, function () {\n return [zlibSync];\n }], function (ev) {\n return pbf(zlibSync(ev.data[0], ev.data[1]));\n }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\n\nexport function zlibSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\n\nvar Unzlib = /*#__PURE__*/function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n\n if (this.v) {\n if (this.p.length < 2 && !final) return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n\n if (final) {\n if (this.p.length < 4) throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n } // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n\n\n Inflate.prototype.c.call(this, final);\n };\n\n return Unzlib;\n}();\n\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\n\nvar AsyncUnzlib = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([bInflt, zule, function () {\n return [astrm, Inflate, Unzlib];\n }], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n\n return AsyncUnzlib;\n}();\n\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return cbify(data, opts, [bInflt, zule, function () {\n return [unzlibSync];\n }], function (ev) {\n return pbf(unzlibSync(ev.data[0], gu8(ev.data[1])));\n }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n} // Default algorithm for compression (used because having a known output size allows faster decompression)\n\nexport { gzip as compress, AsyncGzip as AsyncCompress }; // Default algorithm for compression (used because having a known output size allows faster decompression)\n\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\n\nvar Decompress = /*#__PURE__*/function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata) throw 'no stream handler';\n\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n } else this.p = chunk;\n\n if (this.p.length > 2) {\n var _this_1 = this;\n\n var cb = function () {\n _this_1.ondata.apply(_this_1, arguments);\n };\n\n this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(cb) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(cb) : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n } else this.s.push(chunk, final);\n };\n\n return Decompress;\n}();\n\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\n\nvar AsyncDecompress = /*#__PURE__*/function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n\n\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n\n return AsyncDecompress;\n}();\n\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzip(data, opts, cb) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflate(data, opts, cb) : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\n\nexport function decompressSync(data, out) {\n return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzipSync(data, out) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflateSync(data, out) : unzlibSync(data, out);\n} // flatten a directory structure\n\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k],\n n = p + k;\n if (val instanceof u8) t[n] = [val, o];else if (Array.isArray(val)) t[n] = [val[0], mrg(o, val[1])];else fltn(val, n + '/', t, o);\n }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\n\n\nexport function strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined') return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n\n var w = function (v) {\n ar[ai++] = v;\n };\n\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + (l - i << 1));\n n.set(ar);\n ar = n;\n }\n\n var c = str.charCodeAt(i);\n if (c < 128 || latin1) w(c);else if (c < 2048) w(192 | c >>> 6), w(128 | c & 63);else if (c > 55295 && c < 57344) c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >>> 18), w(128 | c >>> 12 & 63), w(128 | c >>> 6 & 63), w(128 | c & 63);else w(224 | c >>> 12), w(128 | c >>> 6 & 63), w(128 | c & 63);\n }\n\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\n\nexport function strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined') return new TextDecoder().decode(dat);\n\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1) r += String.fromCharCode(c);else if (c < 224) r += String.fromCharCode((c & 31) << 6 | dat[i++] & 63);else if (c < 240) r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63);else c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n }\n\n return r;\n}\n; // skip local zip header\n\nvar slzh = function (d, b) {\n return b + 30 + b2(d, b + 26) + b2(d, b + 28);\n}; // read zip header\n\n\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28),\n fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)),\n es = b + 46 + fnl;\n\n var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)],\n sc = _a[0],\n su = _a[1],\n off = _a[2];\n\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n}; // read zip64 extra field\n\n\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2));\n\n return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n}; // write zip header\n\n\nvar wzh = function (d, b, c, cmp, su, fn, u, o, ce, t) {\n var fl = fn.length,\n l = cmp.length;\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null) d[b] = 20, b += 2;\n d[b] = 20, b += 2; // spec compliance? what's that?\n\n d[b++] = t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0), d[b++] = u && 8;\n d[b] = t, b += 2;\n var dt = new Date(o.mtime || Date.now()),\n y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119) throw 'date not in range 1980-2099';\n wbytes(d, b, (y << 24) * 2 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >>> 1);\n b += 4;\n wbytes(d, b, c);\n wbytes(d, b + 4, l);\n wbytes(d, b + 8, su);\n wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n\n if (ce != null) wbytes(d, b += 10, ce), b += 4;\n d.set(fn, b);\n b += fl;\n if (ce == null) d.set(cmp, b);\n}; // write zip footer (end of central directory)\n\n\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n\nexport function zip(data, opts, cb) {\n if (!cb) cb = opts, opts = {};\n if (typeof cb != 'function') throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length,\n o = 0,\n tot = 0;\n var slft = lft,\n files = new Array(lft);\n var term = [];\n\n var tAll = function () {\n for (var i = 0; i < term.length; ++i) term[i]();\n };\n\n var cbf = function () {\n var out = new u8(tot + 22),\n oe = o,\n cdl = tot - o;\n tot = 0;\n\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n\n try {\n wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n } catch (e) {\n return cb(e, null);\n }\n }\n\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n\n if (!lft) cbf();\n\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn],\n file = _a[0],\n p = _a[1];\n var c = crc(),\n m = file.length;\n c.p(file);\n var n = strToU8(fn),\n s = n.length;\n var t = p.level == 0 ? 0 : 8;\n\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n } else {\n var l = d.length;\n files[i] = {\n t: t,\n d: d,\n m: m,\n c: c.d(),\n u: fn.length != l,\n n: n,\n p: p\n };\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n if (! --lft) cbf();\n }\n };\n\n if (n.length > 65535) cbl('filename too long', null);\n if (!t) cbl(null, file);else if (m < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n } catch (e) {\n cbl(e, null);\n }\n } else term.push(deflate(file, p, cbl));\n }; // Cannot use lft because it can decrease\n\n\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\n\nexport function zipSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n\n for (var fn in r) {\n var _a = r[fn],\n file = _a[0],\n p = _a[1];\n var t = p.level == 0 ? 0 : 8;\n var n = strToU8(fn),\n s = n.length;\n if (n.length > 65535) throw 'filename too long';\n var d = t ? deflateSync(file, p) : file,\n l = d.length;\n var c = crc();\n c.p(file);\n files.push({\n t: t,\n d: d,\n m: file.length,\n c: c.d(),\n u: fn.length != s,\n n: n,\n o: o,\n p: p\n });\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n }\n\n var out = new u8(tot + 22),\n oe = o,\n cdl = tot - o;\n\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n }\n\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\n\nexport function unzip(data, cb) {\n if (typeof cb != 'function') throw 'no callback';\n var term = [];\n\n var tAll = function () {\n for (var i = 0; i < term.length; ++i) term[i]();\n };\n\n var files = {};\n var e = data.length - 22;\n\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n\n ;\n var lft = b2(data, e + 8);\n if (!lft) cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) throw 'invalid zip file';\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n\n var _loop_2 = function (i) {\n var _a = zh(data, o, z),\n c_1 = _a[0],\n sc = _a[1],\n su = _a[2],\n fn = _a[3],\n no = _a[4],\n off = _a[5],\n b = slzh(data, off);\n\n o = no;\n\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n } else {\n files[fn] = d;\n if (! --lft) cb(null, files);\n }\n };\n\n if (!c_1) cbl(null, slc(data, b, b + sc));else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n } catch (e) {\n cbl(e, null);\n }\n } else term.push(inflate(infl, {\n size: su\n }, cbl));\n } else cbl('unknown compression type ' + c_1, null);\n };\n\n for (var i = 0; i < c; ++i) {\n _loop_2(i);\n }\n\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\n\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) throw 'invalid zip file';\n }\n\n ;\n var c = b2(data, e + 8);\n if (!c) return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z),\n c_2 = _a[0],\n sc = _a[1],\n su = _a[2],\n fn = _a[3],\n no = _a[4],\n off = _a[5],\n b = slzh(data, off);\n\n o = no;\n if (!c_2) files[fn] = slc(data, b, b + sc);else if (c_2 == 8) files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));else throw 'unknown compression type ' + c_2;\n }\n\n return files;\n}","map":{"version":3,"sources":["/Users/satish.ganga/Desktop/EKAM/ekamv3/skgangaEkam/node_modules/fflate/esm/browser.js"],"names":["ch2","wk","c","id","msg","transfer","cb","u","URL","createObjectURL","Blob","type","w","Worker","onerror","e","error","onmessage","data","postMessage","u8","Uint8Array","u16","Uint16Array","u32","Uint32Array","fleb","fdeb","clim","freb","eb","start","b","i","r","j","_a","fl","revfl","_b","fd","revfd","rev","x","hMap","cd","mb","s","length","l","le","co","rvb","sv","r_1","v","m","flt","fdt","flm","flrm","fdm","fdrm","max","a","bits","d","p","o","bits16","shft","slc","n","set","subarray","inflt","dat","buf","st","sl","noBuf","noSt","cbuf","bl","nbuf","Math","final","f","pos","bt","lm","dm","lbt","dbt","tbts","t","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","lt","dt","lms","dms","mxa","sym","add","dsym","end","wbits","wbits16","hTree","push","t2","slice","sort","i0","i1","i2","maxSym","tr","mbt","ln","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","out","wblk","syms","lf","df","li","bs","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","flen","ftlen","dtlen","ll","dl","llm","lcts","it","clct","len","dst","deo","et","dflt","lvl","plvl","pre","post","lst","floor","opt","msk_1","prev","head","bs1_1","ceil","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","min","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","k","crc","cr","adler","dopt","level","mem","log","mrg","wcln","fn","fnStr","td","toString","ks","indexOf","lastIndexOf","replace","split","st_1","prototype","spInd","ch","cbfs","constructor","buffer","wrkr","fns","init","td_1","bInflt","inflateSync","pbf","gu8","bDflt","deflateSync","gze","gzh","gzhl","wbytes","guze","gzs","gzl","zle","zlh","zule","zlv","size","cbify","opts","err","terminate","consume","astrm","strm","ondata","ev","astrmify","call","b2","b4","filename","mtime","Date","now","charCodeAt","flg","zs","lv","AsyncCmpStrm","Deflate","chunk","AsyncDeflate","deflate","Inflate","bts","AsyncInflate","inflate","Gzip","raw","AsyncGzip","gzip","gzipSync","Gunzip","AsyncGunzip","gunzip","gunzipSync","Zlib","AsyncZlib","zlib","zlibSync","Unzlib","AsyncUnzlib","unzlib","unzlibSync","compress","AsyncCompress","compressSync","Compress","Decompress","G","I","Z","_this_1","apply","arguments","AsyncDecompress","decompress","decompressSync","fltn","val","Array","isArray","strToU8","str","latin1","TextEncoder","encode","ar","ai","strFromU8","TextDecoder","decode","String","fromCharCode","slzh","zh","z","fnl","es","z64e","sc","su","off","wzh","cmp","ce","y","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","wzf","zip","Object","keys","tot","slft","files","term","tAll","cbf","oe","cdl","_loop_1","file","cbl","zipSync","unzip","_loop_2","c_1","no","infl","unzipSync","c_2"],"mappings":"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","sourcesContent":["// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], { type: 'text/javascript' })));\n var w = new Worker(u);\n w.onerror = function (e) { return cb(e.error, null); };\n w.onmessage = function (e) { return cb(null, e.data); };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([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, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([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, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n throw 'invalid block type';\n if (pos > tbts)\n throw 'unexpected EOF';\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw 'unexpected EOF';\n if (!c)\n throw 'invalid length/literal';\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts)\n throw 'unexpected EOF';\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768\n var imod = i & 32767;\n // previous index with this value\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst)\n pos = wfblk(w, pos, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new u32(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = 0xFFFFFFFF;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return c ^ 0xFFFFFFFF; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n if (!opts.consume)\n dat = new u8(dat);\n w.postMessage([dat, opts], [dat.buffer]);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (t)\n throw 'stream finished';\n if (!strm.ondata)\n throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16)) + (d[b + 3] << 23) * 2; };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + (2 * (d[l - 1] << 23));\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n throw 'invalid zlib data';\n if (d[1] & 32)\n throw 'invalid zlib data: preset dictionaries not supported';\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) >> 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = gzs(this.p);\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no stream handler';\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k;\n if (val instanceof u8)\n t[n] = [val, o];\n else if (Array.isArray(val))\n t[n] = [val[0], mrg(o, val[1])];\n else\n fltn(val, n + '/', t, o);\n }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined')\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >>> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined')\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n return r;\n}\n;\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n};\n// write zip header\nvar wzh = function (d, b, c, cmp, su, fn, u, o, ce, t) {\n var fl = fn.length, l = cmp.length;\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b] = 20, b += 2;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0)), d[b++] = u && 8;\n d[b] = t, b += 2;\n var dt = new Date(o.mtime || Date.now()), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n throw 'date not in range 1980-2099';\n wbytes(d, b, ((y << 24) * 2) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1));\n b += 4;\n wbytes(d, b, c);\n wbytes(d, b + 4, l);\n wbytes(d, b + 8, su);\n wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n if (ce != null)\n wbytes(d, b += 10, ce), b += 4;\n d.set(fn, b);\n b += fl;\n if (ce == null)\n d.set(cmp, b);\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n }\n catch (e) {\n return cb(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), m = file.length;\n c.p(file);\n var n = strToU8(fn), s = n.length;\n var t = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n var l = d.length;\n files[i] = {\n t: t,\n d: d,\n m: m,\n c: c.d(),\n u: fn.length != l,\n n: n,\n p: p\n };\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n if (!--lft)\n cbf();\n }\n };\n if (n.length > 65535)\n cbl('filename too long', null);\n if (!t)\n cbl(null, file);\n else if (m < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var t = p.level == 0 ? 0 : 8;\n var n = strToU8(fn), s = n.length;\n if (n.length > 65535)\n throw 'filename too long';\n var d = t ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push({\n t: t,\n d: d,\n m: file.length,\n c: c.d(),\n u: fn.length != s,\n n: n,\n o: o,\n p: p\n });\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\nexport function unzip(data, cb) {\n if (typeof cb != 'function')\n throw 'no callback';\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (!lft)\n cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var _loop_2 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n files[fn] = d;\n if (!--lft)\n cb(null, files);\n }\n };\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl('unknown compression type ' + c_1, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_2(i);\n }\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n throw 'invalid zip file';\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n throw 'unknown compression type ' + c_2;\n }\n return files;\n}\n"]},"metadata":{},"sourceType":"module"}