bok-reader 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bok.es.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { jsxs as ut, Fragment as Ut, jsx as et } from "react/jsx-runtime";
2
2
  import * as kt from "react";
3
- import { useState as ht, useRef as yt, useCallback as Tt, useEffect as dt, useMemo as Xt } from "react";
3
+ import { useState as ht, useRef as yt, useCallback as Tt, useEffect as dt, useMemo as Ht } from "react";
4
4
  import Gt, { createGlobalStyle as qt } from "styled-components";
5
5
  var Ot = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
6
- function $t(X) {
7
- return X && X.__esModule && Object.prototype.hasOwnProperty.call(X, "default") ? X.default : X;
6
+ function $t(H) {
7
+ return H && H.__esModule && Object.prototype.hasOwnProperty.call(H, "default") ? H.default : H;
8
8
  }
9
- function It(X) {
10
- throw new Error('Could not dynamically require "' + X + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
9
+ function It(H) {
10
+ throw new Error('Could not dynamically require "' + H + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
11
11
  }
12
12
  var jt = { exports: {} };
13
13
  /*!
@@ -21,9 +21,9 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js
21
21
  JSZip uses the library pako released under the MIT license :
22
22
  https://github.com/nodeca/pako/blob/main/LICENSE
23
23
  */
24
- (function(X, V) {
24
+ (function(H, Y) {
25
25
  (function(p) {
26
- X.exports = p();
26
+ H.exports = p();
27
27
  })(function() {
28
28
  return function p(A, v, a) {
29
29
  function o(g, w) {
@@ -1397,29 +1397,29 @@ https://github.com/nodeca/pako/blob/main/LICENSE
1397
1397
  t.pending_buf[t.pending++] = N >>> 8 & 255, t.pending_buf[t.pending++] = 255 & N;
1398
1398
  }
1399
1399
  function G(t, N) {
1400
- var R, f, u = t.max_chain_length, k = t.strstart, U = t.prev_length, j = t.nice_match, O = t.strstart > t.w_size - M ? t.strstart - (t.w_size - M) : 0, Z = t.window, $ = t.w_mask, H = t.prev, Y = t.strstart + C, at = Z[k + U - 1], nt = Z[k + U];
1400
+ var R, f, u = t.max_chain_length, k = t.strstart, U = t.prev_length, j = t.nice_match, O = t.strstart > t.w_size - M ? t.strstart - (t.w_size - M) : 0, Z = t.window, $ = t.w_mask, X = t.prev, V = t.strstart + C, at = Z[k + U - 1], nt = Z[k + U];
1401
1401
  t.prev_length >= t.good_match && (u >>= 2), j > t.lookahead && (j = t.lookahead);
1402
1402
  do
1403
1403
  if (Z[(R = N) + U] === nt && Z[R + U - 1] === at && Z[R] === Z[k] && Z[++R] === Z[k + 1]) {
1404
1404
  k += 2, R++;
1405
1405
  do
1406
1406
  ;
1407
- while (Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && k < Y);
1408
- if (f = C - (Y - k), k = Y - C, U < f) {
1407
+ while (Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && Z[++k] === Z[++R] && k < V);
1408
+ if (f = C - (V - k), k = V - C, U < f) {
1409
1409
  if (t.match_start = N, j <= (U = f)) break;
1410
1410
  at = Z[k + U - 1], nt = Z[k + U];
1411
1411
  }
1412
1412
  }
1413
- while ((N = H[N & $]) > O && --u != 0);
1413
+ while ((N = X[N & $]) > O && --u != 0);
1414
1414
  return U <= t.lookahead ? U : t.lookahead;
1415
1415
  }
1416
1416
  function st(t) {
1417
- var N, R, f, u, k, U, j, O, Z, $, H = t.w_size;
1417
+ var N, R, f, u, k, U, j, O, Z, $, X = t.w_size;
1418
1418
  do {
1419
- if (u = t.window_size - t.lookahead - t.strstart, t.strstart >= H + (H - M)) {
1420
- for (o.arraySet(t.window, t.window, H, H, 0), t.match_start -= H, t.strstart -= H, t.block_start -= H, N = R = t.hash_size; f = t.head[--N], t.head[N] = H <= f ? f - H : 0, --R; ) ;
1421
- for (N = R = H; f = t.prev[--N], t.prev[N] = H <= f ? f - H : 0, --R; ) ;
1422
- u += H;
1419
+ if (u = t.window_size - t.lookahead - t.strstart, t.strstart >= X + (X - M)) {
1420
+ for (o.arraySet(t.window, t.window, X, X, 0), t.match_start -= X, t.strstart -= X, t.block_start -= X, N = R = t.hash_size; f = t.head[--N], t.head[N] = X <= f ? f - X : 0, --R; ) ;
1421
+ for (N = R = X; f = t.prev[--N], t.prev[N] = X <= f ? f - X : 0, --R; ) ;
1422
+ u += X;
1423
1423
  }
1424
1424
  if (t.strm.avail_in === 0) break;
1425
1425
  if (U = t.strm, j = t.window, O = t.strstart + t.lookahead, Z = u, $ = void 0, $ = U.avail_in, Z < $ && ($ = Z), R = $ === 0 ? 0 : (U.avail_in -= $, o.arraySet(j, U.input, U.next_in, $, O), U.state.wrap === 1 ? U.adler = l(U.adler, j, $, O) : U.state.wrap === 2 && (U.adler = g(U.adler, j, $, O)), U.next_in += $, U.total_in += $, $), t.lookahead += R, t.lookahead + t.insert >= E) for (k = t.strstart - t.insert, t.ins_h = t.window[k], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[k + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[k + E - 1]) & t.hash_mask, t.prev[k & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = k, k++, t.insert--, !(t.lookahead + t.insert < E)); ) ;
@@ -1545,17 +1545,17 @@ https://github.com/nodeca/pako/blob/main/LICENSE
1545
1545
  }
1546
1546
  return O.insert = 0, Z === b ? (I(O, !0), O.strm.avail_out === 0 ? K : L) : O.last_lit && (I(O, !1), O.strm.avail_out === 0) ? e : P;
1547
1547
  }(f, N) : f.strategy === 3 ? function(O, Z) {
1548
- for (var $, H, Y, at, nt = O.window; ; ) {
1548
+ for (var $, X, V, at, nt = O.window; ; ) {
1549
1549
  if (O.lookahead <= C) {
1550
1550
  if (st(O), O.lookahead <= C && Z === _) return e;
1551
1551
  if (O.lookahead === 0) break;
1552
1552
  }
1553
- if (O.match_length = 0, O.lookahead >= E && 0 < O.strstart && (H = nt[Y = O.strstart - 1]) === nt[++Y] && H === nt[++Y] && H === nt[++Y]) {
1553
+ if (O.match_length = 0, O.lookahead >= E && 0 < O.strstart && (X = nt[V = O.strstart - 1]) === nt[++V] && X === nt[++V] && X === nt[++V]) {
1554
1554
  at = O.strstart + C;
1555
1555
  do
1556
1556
  ;
1557
- while (H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && H === nt[++Y] && Y < at);
1558
- O.match_length = C - (at - Y), O.match_length > O.lookahead && (O.match_length = O.lookahead);
1557
+ while (X === nt[++V] && X === nt[++V] && X === nt[++V] && X === nt[++V] && X === nt[++V] && X === nt[++V] && X === nt[++V] && X === nt[++V] && V < at);
1558
+ O.match_length = C - (at - V), O.match_length > O.lookahead && (O.match_length = O.lookahead);
1559
1559
  }
1560
1560
  if (O.match_length >= E ? ($ = r._tr_tally(O, 1, O.match_length - E), O.lookahead -= O.match_length, O.strstart += O.match_length, O.match_length = 0) : ($ = r._tr_tally(O, 0, O.window[O.strstart]), O.lookahead--, O.strstart++), $ && (I(O, !1), O.strm.avail_out === 0)) return e;
1561
1561
  }
@@ -2135,8 +2135,8 @@ https://github.com/nodeca/pako/blob/main/LICENSE
2135
2135
  var j, O, Z = new Array(c + 1), $ = 0;
2136
2136
  for (j = 1; j <= c; j++) Z[j] = $ = $ + U[j - 1] << 1;
2137
2137
  for (O = 0; O <= k; O++) {
2138
- var H = u[2 * O + 1];
2139
- H !== 0 && (u[2 * O] = st(Z[H]++, H));
2138
+ var X = u[2 * O + 1];
2139
+ X !== 0 && (u[2 * O] = st(Z[X]++, X));
2140
2140
  }
2141
2141
  }
2142
2142
  function rt(u) {
@@ -2158,20 +2158,20 @@ https://github.com/nodeca/pako/blob/main/LICENSE
2158
2158
  u.heap[U] = j;
2159
2159
  }
2160
2160
  function bt(u, k, U) {
2161
- var j, O, Z, $, H = 0;
2162
- if (u.last_lit !== 0) for (; j = u.pending_buf[u.d_buf + 2 * H] << 8 | u.pending_buf[u.d_buf + 2 * H + 1], O = u.pending_buf[u.l_buf + H], H++, j === 0 ? G(u, O, k) : (G(u, (Z = e[O]) + _ + 1, k), ($ = z[Z]) !== 0 && q(u, O -= P[Z], $), G(u, Z = I(--j), U), ($ = F[Z]) !== 0 && q(u, j -= W[Z], $)), H < u.last_lit; ) ;
2161
+ var j, O, Z, $, X = 0;
2162
+ if (u.last_lit !== 0) for (; j = u.pending_buf[u.d_buf + 2 * X] << 8 | u.pending_buf[u.d_buf + 2 * X + 1], O = u.pending_buf[u.l_buf + X], X++, j === 0 ? G(u, O, k) : (G(u, (Z = e[O]) + _ + 1, k), ($ = z[Z]) !== 0 && q(u, O -= P[Z], $), G(u, Z = I(--j), U), ($ = F[Z]) !== 0 && q(u, j -= W[Z], $)), X < u.last_lit; ) ;
2163
2163
  G(u, y, k);
2164
2164
  }
2165
2165
  function _t(u, k) {
2166
- var U, j, O, Z = k.dyn_tree, $ = k.stat_desc.static_tree, H = k.stat_desc.has_stree, Y = k.stat_desc.elems, at = -1;
2167
- for (u.heap_len = 0, u.heap_max = n, U = 0; U < Y; U++) Z[2 * U] !== 0 ? (u.heap[++u.heap_len] = at = U, u.depth[U] = 0) : Z[2 * U + 1] = 0;
2168
- for (; u.heap_len < 2; ) Z[2 * (O = u.heap[++u.heap_len] = at < 2 ? ++at : 0)] = 1, u.depth[O] = 0, u.opt_len--, H && (u.static_len -= $[2 * O + 1]);
2166
+ var U, j, O, Z = k.dyn_tree, $ = k.stat_desc.static_tree, X = k.stat_desc.has_stree, V = k.stat_desc.elems, at = -1;
2167
+ for (u.heap_len = 0, u.heap_max = n, U = 0; U < V; U++) Z[2 * U] !== 0 ? (u.heap[++u.heap_len] = at = U, u.depth[U] = 0) : Z[2 * U + 1] = 0;
2168
+ for (; u.heap_len < 2; ) Z[2 * (O = u.heap[++u.heap_len] = at < 2 ? ++at : 0)] = 1, u.depth[O] = 0, u.opt_len--, X && (u.static_len -= $[2 * O + 1]);
2169
2169
  for (k.max_code = at, U = u.heap_len >> 1; 1 <= U; U--) ot(u, Z, U);
2170
- for (O = Y; U = u.heap[1], u.heap[1] = u.heap[u.heap_len--], ot(u, Z, 1), j = u.heap[1], u.heap[--u.heap_max] = U, u.heap[--u.heap_max] = j, Z[2 * O] = Z[2 * U] + Z[2 * j], u.depth[O] = (u.depth[U] >= u.depth[j] ? u.depth[U] : u.depth[j]) + 1, Z[2 * U + 1] = Z[2 * j + 1] = O, u.heap[1] = O++, ot(u, Z, 1), 2 <= u.heap_len; ) ;
2170
+ for (O = V; U = u.heap[1], u.heap[1] = u.heap[u.heap_len--], ot(u, Z, 1), j = u.heap[1], u.heap[--u.heap_max] = U, u.heap[--u.heap_max] = j, Z[2 * O] = Z[2 * U] + Z[2 * j], u.depth[O] = (u.depth[U] >= u.depth[j] ? u.depth[U] : u.depth[j]) + 1, Z[2 * U + 1] = Z[2 * j + 1] = O, u.heap[1] = O++, ot(u, Z, 1), 2 <= u.heap_len; ) ;
2171
2171
  u.heap[--u.heap_max] = u.heap[1], function(nt, gt) {
2172
- var St, vt, Et, lt, Ct, Rt, wt = gt.dyn_tree, Pt = gt.max_code, Zt = gt.stat_desc.static_tree, Mt = gt.stat_desc.has_stree, Ht = gt.stat_desc.extra_bits, Ft = gt.stat_desc.extra_base, zt = gt.stat_desc.max_length, At = 0;
2172
+ var St, vt, Et, lt, Ct, Rt, wt = gt.dyn_tree, Pt = gt.max_code, Zt = gt.stat_desc.static_tree, Mt = gt.stat_desc.has_stree, Xt = gt.stat_desc.extra_bits, Ft = gt.stat_desc.extra_base, zt = gt.stat_desc.max_length, At = 0;
2173
2173
  for (lt = 0; lt <= c; lt++) nt.bl_count[lt] = 0;
2174
- for (wt[2 * nt.heap[nt.heap_max] + 1] = 0, St = nt.heap_max + 1; St < n; St++) zt < (lt = wt[2 * wt[2 * (vt = nt.heap[St]) + 1] + 1] + 1) && (lt = zt, At++), wt[2 * vt + 1] = lt, Pt < vt || (nt.bl_count[lt]++, Ct = 0, Ft <= vt && (Ct = Ht[vt - Ft]), Rt = wt[2 * vt], nt.opt_len += Rt * (lt + Ct), Mt && (nt.static_len += Rt * (Zt[2 * vt + 1] + Ct)));
2174
+ for (wt[2 * nt.heap[nt.heap_max] + 1] = 0, St = nt.heap_max + 1; St < n; St++) zt < (lt = wt[2 * wt[2 * (vt = nt.heap[St]) + 1] + 1] + 1) && (lt = zt, At++), wt[2 * vt + 1] = lt, Pt < vt || (nt.bl_count[lt]++, Ct = 0, Ft <= vt && (Ct = Xt[vt - Ft]), Rt = wt[2 * vt], nt.opt_len += Rt * (lt + Ct), Mt && (nt.static_len += Rt * (Zt[2 * vt + 1] + Ct)));
2175
2175
  if (At !== 0) {
2176
2176
  do {
2177
2177
  for (lt = zt - 1; nt.bl_count[lt] === 0; ) lt--;
@@ -2182,21 +2182,21 @@ https://github.com/nodeca/pako/blob/main/LICENSE
2182
2182
  }(u, k), ft(Z, at, u.bl_count);
2183
2183
  }
2184
2184
  function t(u, k, U) {
2185
- var j, O, Z = -1, $ = k[1], H = 0, Y = 7, at = 4;
2186
- for ($ === 0 && (Y = 138, at = 3), k[2 * (U + 1) + 1] = 65535, j = 0; j <= U; j++) O = $, $ = k[2 * (j + 1) + 1], ++H < Y && O === $ || (H < at ? u.bl_tree[2 * O] += H : O !== 0 ? (O !== Z && u.bl_tree[2 * O]++, u.bl_tree[2 * x]++) : H <= 10 ? u.bl_tree[2 * S]++ : u.bl_tree[2 * D]++, Z = O, at = (H = 0) === $ ? (Y = 138, 3) : O === $ ? (Y = 6, 3) : (Y = 7, 4));
2185
+ var j, O, Z = -1, $ = k[1], X = 0, V = 7, at = 4;
2186
+ for ($ === 0 && (V = 138, at = 3), k[2 * (U + 1) + 1] = 65535, j = 0; j <= U; j++) O = $, $ = k[2 * (j + 1) + 1], ++X < V && O === $ || (X < at ? u.bl_tree[2 * O] += X : O !== 0 ? (O !== Z && u.bl_tree[2 * O]++, u.bl_tree[2 * x]++) : X <= 10 ? u.bl_tree[2 * S]++ : u.bl_tree[2 * D]++, Z = O, at = (X = 0) === $ ? (V = 138, 3) : O === $ ? (V = 6, 3) : (V = 7, 4));
2187
2187
  }
2188
2188
  function N(u, k, U) {
2189
- var j, O, Z = -1, $ = k[1], H = 0, Y = 7, at = 4;
2190
- for ($ === 0 && (Y = 138, at = 3), j = 0; j <= U; j++) if (O = $, $ = k[2 * (j + 1) + 1], !(++H < Y && O === $)) {
2191
- if (H < at) for (; G(u, O, u.bl_tree), --H != 0; ) ;
2192
- else O !== 0 ? (O !== Z && (G(u, O, u.bl_tree), H--), G(u, x, u.bl_tree), q(u, H - 3, 2)) : H <= 10 ? (G(u, S, u.bl_tree), q(u, H - 3, 3)) : (G(u, D, u.bl_tree), q(u, H - 11, 7));
2193
- Z = O, at = (H = 0) === $ ? (Y = 138, 3) : O === $ ? (Y = 6, 3) : (Y = 7, 4);
2189
+ var j, O, Z = -1, $ = k[1], X = 0, V = 7, at = 4;
2190
+ for ($ === 0 && (V = 138, at = 3), j = 0; j <= U; j++) if (O = $, $ = k[2 * (j + 1) + 1], !(++X < V && O === $)) {
2191
+ if (X < at) for (; G(u, O, u.bl_tree), --X != 0; ) ;
2192
+ else O !== 0 ? (O !== Z && (G(u, O, u.bl_tree), X--), G(u, x, u.bl_tree), q(u, X - 3, 2)) : X <= 10 ? (G(u, S, u.bl_tree), q(u, X - 3, 3)) : (G(u, D, u.bl_tree), q(u, X - 11, 7));
2193
+ Z = O, at = (X = 0) === $ ? (V = 138, 3) : O === $ ? (V = 6, 3) : (V = 7, 4);
2194
2194
  }
2195
2195
  }
2196
2196
  l(W);
2197
2197
  var R = !1;
2198
2198
  function f(u, k, U, j) {
2199
- q(u, (g << 1) + (j ? 1 : 0), 3), function(O, Z, $, H) {
2199
+ q(u, (g << 1) + (j ? 1 : 0), 3), function(O, Z, $, X) {
2200
2200
  it(O), J(O, $), J(O, ~$), a.arraySet(O.pending_buf, O.window, Z, $, O.pending), O.pending += $;
2201
2201
  }(u, k, U);
2202
2202
  }
@@ -2216,20 +2216,20 @@ https://github.com/nodeca/pako/blob/main/LICENSE
2216
2216
  }(), R = !0), u.l_desc = new T(u.dyn_ltree, K), u.d_desc = new T(u.dyn_dtree, L), u.bl_desc = new T(u.bl_tree, Q), u.bi_buf = 0, u.bi_valid = 0, rt(u);
2217
2217
  }, v._tr_stored_block = f, v._tr_flush_block = function(u, k, U, j) {
2218
2218
  var O, Z, $ = 0;
2219
- 0 < u.level ? (u.strm.data_type === 2 && (u.strm.data_type = function(H) {
2220
- var Y, at = 4093624447;
2221
- for (Y = 0; Y <= 31; Y++, at >>>= 1) if (1 & at && H.dyn_ltree[2 * Y] !== 0) return o;
2222
- if (H.dyn_ltree[18] !== 0 || H.dyn_ltree[20] !== 0 || H.dyn_ltree[26] !== 0) return r;
2223
- for (Y = 32; Y < _; Y++) if (H.dyn_ltree[2 * Y] !== 0) return r;
2219
+ 0 < u.level ? (u.strm.data_type === 2 && (u.strm.data_type = function(X) {
2220
+ var V, at = 4093624447;
2221
+ for (V = 0; V <= 31; V++, at >>>= 1) if (1 & at && X.dyn_ltree[2 * V] !== 0) return o;
2222
+ if (X.dyn_ltree[18] !== 0 || X.dyn_ltree[20] !== 0 || X.dyn_ltree[26] !== 0) return r;
2223
+ for (V = 32; V < _; V++) if (X.dyn_ltree[2 * V] !== 0) return r;
2224
2224
  return o;
2225
- }(u)), _t(u, u.l_desc), _t(u, u.d_desc), $ = function(H) {
2226
- var Y;
2227
- for (t(H, H.dyn_ltree, H.l_desc.max_code), t(H, H.dyn_dtree, H.d_desc.max_code), _t(H, H.bl_desc), Y = d - 1; 3 <= Y && H.bl_tree[2 * C[Y] + 1] === 0; Y--) ;
2228
- return H.opt_len += 3 * (Y + 1) + 5 + 5 + 4, Y;
2229
- }(u), O = u.opt_len + 3 + 7 >>> 3, (Z = u.static_len + 3 + 7 >>> 3) <= O && (O = Z)) : O = Z = U + 5, U + 4 <= O && k !== -1 ? f(u, k, U, j) : u.strategy === 4 || Z === O ? (q(u, 2 + (j ? 1 : 0), 3), bt(u, M, h)) : (q(u, 4 + (j ? 1 : 0), 3), function(H, Y, at, nt) {
2225
+ }(u)), _t(u, u.l_desc), _t(u, u.d_desc), $ = function(X) {
2226
+ var V;
2227
+ for (t(X, X.dyn_ltree, X.l_desc.max_code), t(X, X.dyn_dtree, X.d_desc.max_code), _t(X, X.bl_desc), V = d - 1; 3 <= V && X.bl_tree[2 * C[V] + 1] === 0; V--) ;
2228
+ return X.opt_len += 3 * (V + 1) + 5 + 5 + 4, V;
2229
+ }(u), O = u.opt_len + 3 + 7 >>> 3, (Z = u.static_len + 3 + 7 >>> 3) <= O && (O = Z)) : O = Z = U + 5, U + 4 <= O && k !== -1 ? f(u, k, U, j) : u.strategy === 4 || Z === O ? (q(u, 2 + (j ? 1 : 0), 3), bt(u, M, h)) : (q(u, 4 + (j ? 1 : 0), 3), function(X, V, at, nt) {
2230
2230
  var gt;
2231
- for (q(H, Y - 257, 5), q(H, at - 1, 5), q(H, nt - 4, 4), gt = 0; gt < nt; gt++) q(H, H.bl_tree[2 * C[gt] + 1], 3);
2232
- N(H, H.dyn_ltree, Y - 1), N(H, H.dyn_dtree, at - 1);
2231
+ for (q(X, V - 257, 5), q(X, at - 1, 5), q(X, nt - 4, 4), gt = 0; gt < nt; gt++) q(X, X.bl_tree[2 * C[gt] + 1], 3);
2232
+ N(X, X.dyn_ltree, V - 1), N(X, X.dyn_dtree, at - 1);
2233
2233
  }(u, u.l_desc.max_code + 1, u.d_desc.max_code + 1, $ + 1), bt(u, u.dyn_ltree, u.dyn_dtree)), rt(u), j && it(u);
2234
2234
  }, v._tr_tally = function(u, k, U) {
2235
2235
  return u.pending_buf[u.d_buf + 2 * u.last_lit] = k >>> 8 & 255, u.pending_buf[u.d_buf + 2 * u.last_lit + 1] = 255 & k, u.pending_buf[u.l_buf + u.last_lit] = 255 & U, u.last_lit++, k === 0 ? u.dyn_ltree[2 * U]++ : (u.matches++, k--, u.dyn_ltree[2 * (e[U] + _ + 1)]++, u.dyn_dtree[2 * I(k)]++), u.last_lit === u.lit_bufsize - 1;
@@ -2322,9 +2322,9 @@ https://github.com/nodeca/pako/blob/main/LICENSE
2322
2322
  });
2323
2323
  })(jt);
2324
2324
  var Kt = jt.exports;
2325
- const Vt = /* @__PURE__ */ $t(Kt);
2326
- function Yt() {
2327
- const [X, V] = ht(""), [p, A] = ht(!1), [v, a] = ht(""), [o, r] = ht(null);
2325
+ const Yt = /* @__PURE__ */ $t(Kt);
2326
+ function Vt() {
2327
+ const [H, Y] = ht(""), [p, A] = ht(!1), [v, a] = ht(""), [o, r] = ht(null);
2328
2328
  let l = "", g = "";
2329
2329
  const w = yt(null), _ = yt(null), b = {}, i = [
2330
2330
  "text/html",
@@ -2334,7 +2334,7 @@ function Yt() {
2334
2334
  "image/svg+xml"
2335
2335
  ], d = Tt(
2336
2336
  async (E) => {
2337
- A(!0), V(""), a("Loading..."), r(null), _.current && (document.head.removeChild(_.current), URL.revokeObjectURL(_.current.href), _.current = null);
2337
+ A(!0), Y(""), a("Loading..."), r(null), _.current && (document.head.removeChild(_.current), URL.revokeObjectURL(_.current.href), _.current = null);
2338
2338
  try {
2339
2339
  let C;
2340
2340
  if (typeof E == "string") {
@@ -2349,10 +2349,10 @@ function Yt() {
2349
2349
  throw new Error(
2350
2350
  "EPUB source is empty or could not be read."
2351
2351
  );
2352
- w.current = await Vt.loadAsync(C), await n();
2352
+ w.current = await Yt.loadAsync(C), await n();
2353
2353
  } catch (C) {
2354
2354
  const M = C instanceof Error ? C.message : "An unknown error occurred while fetching or loading the EPUB.";
2355
- console.error("Error processing EPUB source:", C), r(M), V(""), a(""), A(!1);
2355
+ console.error("Error processing EPUB source:", C), r(M), Y(""), a(""), A(!1);
2356
2356
  }
2357
2357
  },
2358
2358
  // eslint-disable-next-line
@@ -2437,7 +2437,7 @@ function Yt() {
2437
2437
  }
2438
2438
  }
2439
2439
  }
2440
- F(), V(h);
2440
+ F(), Y(h);
2441
2441
  }
2442
2442
  async function y(E, C) {
2443
2443
  let M = [...E.matchAll(/<style[^>]*>([\s\S]*?)<\/style>/gi)].map((B) => B[1]).join(`
@@ -2551,21 +2551,21 @@ function Yt() {
2551
2551
  }
2552
2552
  return {
2553
2553
  title: v,
2554
- rawContent: X,
2554
+ rawContent: H,
2555
2555
  isLoading: p,
2556
2556
  error: o,
2557
2557
  loadEpub: d,
2558
2558
  setIsLoading: A
2559
2559
  };
2560
2560
  }
2561
- function Wt(X) {
2562
- const [V, p] = ht({
2561
+ function Wt(H) {
2562
+ const [Y, p] = ht({
2563
2563
  width: 0,
2564
2564
  height: 0,
2565
2565
  noOfPages: 1
2566
2566
  });
2567
2567
  return dt(() => {
2568
- const A = X == null ? void 0 : X.current, v = () => {
2568
+ const A = H == null ? void 0 : H.current, v = () => {
2569
2569
  if (A) {
2570
2570
  const a = A.getBoundingClientRect(), o = a.height < a.width;
2571
2571
  p((r) => {
@@ -2586,17 +2586,17 @@ function Wt(X) {
2586
2586
  a.unobserve(A);
2587
2587
  };
2588
2588
  }
2589
- }, [X]), [V.width, V.height, V.noOfPages];
2589
+ }, [H]), [Y.width, Y.height, Y.noOfPages];
2590
2590
  }
2591
- function Jt(X) {
2592
- const [V, p] = ht(0), A = Tt(() => {
2593
- if (X.current) {
2594
- const v = X.current.scrollWidth, a = X.current.scrollLeft, o = v > 0 ? a / v : 0;
2591
+ function Jt(H) {
2592
+ const [Y, p] = ht(0), A = Tt(() => {
2593
+ if (H.current) {
2594
+ const v = H.current.scrollWidth, a = H.current.scrollLeft, o = v > 0 ? a / v : 0;
2595
2595
  p(o);
2596
2596
  }
2597
- }, [X]);
2597
+ }, [H]);
2598
2598
  return dt(() => {
2599
- const v = X.current;
2599
+ const v = H.current;
2600
2600
  if (!v) return;
2601
2601
  let a = null;
2602
2602
  const o = 100, r = () => {
@@ -2607,25 +2607,25 @@ function Jt(X) {
2607
2607
  return v.addEventListener("scroll", r), A(), () => {
2608
2608
  a && clearTimeout(a), v.removeEventListener("scroll", r);
2609
2609
  };
2610
- }, [A, X]), [V, p];
2610
+ }, [A, H]), [Y, p];
2611
2611
  }
2612
- function Qt(X, V, p, A, v) {
2612
+ function Qt(H, Y, p, A, v) {
2613
2613
  let a = "";
2614
2614
  dt(() => {
2615
- V > 1e-7 && (a = JSON.stringify({
2616
- percentRead: V,
2615
+ Y > 1e-7 && (a = JSON.stringify({
2616
+ percentRead: Y,
2617
2617
  padding: p,
2618
2618
  fontSize: A,
2619
2619
  fontFamily: v
2620
- }), localStorage.setItem(X, a));
2621
- }, [X, V, p, A, v]);
2620
+ }), localStorage.setItem(H, a));
2621
+ }, [H, Y, p, A, v]);
2622
2622
  }
2623
- const te = (X, V, p, A) => {
2623
+ const te = (H, Y, p, A) => {
2624
2624
  const [v, a] = Wt(p), o = yt(null), r = yt(""), l = Tt(
2625
2625
  (g, w) => {
2626
- !V && !A && (g / v <= 0.4 && w / a < 0.8 && X(-1), g / v > 0.4 && w / a < 0.8 && X(1));
2626
+ !Y && !A && (g / v <= 0.4 && w / a < 0.8 && H(-1), g / v > 0.4 && w / a < 0.8 && H(1));
2627
2627
  },
2628
- [X, V, v, a, A]
2628
+ [H, Y, v, a, A]
2629
2629
  );
2630
2630
  dt(() => {
2631
2631
  const g = () => {
@@ -2661,18 +2661,18 @@ const te = (X, V, p, A) => {
2661
2661
  return g == null || g.addEventListener("mousedown", w), g == null || g.addEventListener("mouseup", _), () => {
2662
2662
  g == null || g.removeEventListener("mousedown", w), g == null || g.removeEventListener("mouseup", _);
2663
2663
  };
2664
- }, [v, V, l, p]);
2664
+ }, [v, Y, l, p]);
2665
2665
  };
2666
- function ee({ currentPage: X, pages: V }) {
2666
+ function ee({ currentPage: H, pages: Y }) {
2667
2667
  return /* @__PURE__ */ ut("div", { className: "page-number", children: [
2668
- X + 1,
2668
+ H + 1,
2669
2669
  "/",
2670
- V
2670
+ Y
2671
2671
  ] });
2672
2672
  }
2673
2673
  function re({
2674
- content: X,
2675
- title: V,
2674
+ content: H,
2675
+ title: Y,
2676
2676
  setIsLoading: p,
2677
2677
  fontSize: A,
2678
2678
  sidePadding: v,
@@ -2685,7 +2685,7 @@ function re({
2685
2685
  showTutorial: _
2686
2686
  }) {
2687
2687
  const b = yt(null), [i, d, n] = Wt(w), [c, s] = Jt(b), [m, y] = ht(1), [x, S] = ht(0);
2688
- Qt(V, c, v, A, a);
2688
+ Qt(Y, c, v, A, a);
2689
2689
  const D = Tt(
2690
2690
  (z) => {
2691
2691
  y((F) => {
@@ -2708,19 +2708,19 @@ function re({
2708
2708
  w,
2709
2709
  _
2710
2710
  ), dt(() => {
2711
- if (!V) return;
2712
- const z = localStorage.getItem(V);
2711
+ if (!Y) return;
2712
+ const z = localStorage.getItem(Y);
2713
2713
  if (z)
2714
2714
  try {
2715
2715
  const F = JSON.parse(z);
2716
2716
  F && (s(F.percentRead || 0), F.fontSize !== void 0 && r(F.fontSize), F.padding !== void 0 && l(F.padding), F.fontFamily !== void 0 && g(F.fontFamily));
2717
2717
  } catch (F) {
2718
- console.error("Failed to parse local storage for", V, F), s(0);
2718
+ console.error("Failed to parse local storage for", Y, F), s(0);
2719
2719
  }
2720
2720
  else
2721
2721
  s(0);
2722
2722
  y(1);
2723
- }, [V, s, r, l, g]), dt(() => {
2723
+ }, [Y, s, r, l, g]), dt(() => {
2724
2724
  const z = b.current;
2725
2725
  if (!z || i <= 0 || d <= 0) return;
2726
2726
  p(!0);
@@ -2753,8 +2753,8 @@ function re({
2753
2753
  A,
2754
2754
  a,
2755
2755
  n,
2756
- X,
2757
- V,
2756
+ H,
2757
+ Y,
2758
2758
  p
2759
2759
  ]), dt(() => {
2760
2760
  const z = (F) => {
@@ -2768,7 +2768,7 @@ function re({
2768
2768
  "div",
2769
2769
  {
2770
2770
  ref: b,
2771
- dangerouslySetInnerHTML: { __html: X },
2771
+ dangerouslySetInnerHTML: { __html: H },
2772
2772
  className: "book-page"
2773
2773
  }
2774
2774
  ),
@@ -2792,49 +2792,49 @@ var ne = {
2792
2792
  vmax: !0,
2793
2793
  "%": !0
2794
2794
  };
2795
- function ie(X) {
2796
- if (typeof X == "number")
2795
+ function ie(H) {
2796
+ if (typeof H == "number")
2797
2797
  return {
2798
- value: X,
2798
+ value: H,
2799
2799
  unit: "px"
2800
2800
  };
2801
- var V, p = (X.match(/^[0-9.]*/) || "").toString();
2802
- p.includes(".") ? V = parseFloat(p) : V = parseInt(p, 10);
2803
- var A = (X.match(/[^0-9]*$/) || "").toString();
2801
+ var Y, p = (H.match(/^[0-9.]*/) || "").toString();
2802
+ p.includes(".") ? Y = parseFloat(p) : Y = parseInt(p, 10);
2803
+ var A = (H.match(/[^0-9]*$/) || "").toString();
2804
2804
  return ne[A] ? {
2805
- value: V,
2805
+ value: Y,
2806
2806
  unit: A
2807
- } : (console.warn("React Spinners: ".concat(X, " is not a valid css value. Defaulting to ").concat(V, "px.")), {
2808
- value: V,
2807
+ } : (console.warn("React Spinners: ".concat(H, " is not a valid css value. Defaulting to ").concat(Y, "px.")), {
2808
+ value: Y,
2809
2809
  unit: "px"
2810
2810
  });
2811
2811
  }
2812
- var xt = function(X, V, p) {
2813
- var A = "react-spinners-".concat(X, "-").concat(p);
2812
+ var xt = function(H, Y, p) {
2813
+ var A = "react-spinners-".concat(H, "-").concat(p);
2814
2814
  if (typeof window > "u" || !window.document)
2815
2815
  return A;
2816
2816
  var v = document.createElement("style");
2817
2817
  document.head.appendChild(v);
2818
2818
  var a = v.sheet, o = `
2819
2819
  @keyframes `.concat(A, ` {
2820
- `).concat(V, `
2820
+ `).concat(Y, `
2821
2821
  }
2822
2822
  `);
2823
2823
  return a && a.insertRule(o, 0), A;
2824
2824
  }, Bt = function() {
2825
- return Bt = Object.assign || function(X) {
2826
- for (var V, p = 1, A = arguments.length; p < A; p++) {
2827
- V = arguments[p];
2828
- for (var v in V) Object.prototype.hasOwnProperty.call(V, v) && (X[v] = V[v]);
2825
+ return Bt = Object.assign || function(H) {
2826
+ for (var Y, p = 1, A = arguments.length; p < A; p++) {
2827
+ Y = arguments[p];
2828
+ for (var v in Y) Object.prototype.hasOwnProperty.call(Y, v) && (H[v] = Y[v]);
2829
2829
  }
2830
- return X;
2830
+ return H;
2831
2831
  }, Bt.apply(this, arguments);
2832
- }, ae = function(X, V) {
2832
+ }, ae = function(H, Y) {
2833
2833
  var p = {};
2834
- for (var A in X) Object.prototype.hasOwnProperty.call(X, A) && V.indexOf(A) < 0 && (p[A] = X[A]);
2835
- if (X != null && typeof Object.getOwnPropertySymbols == "function")
2836
- for (var v = 0, A = Object.getOwnPropertySymbols(X); v < A.length; v++)
2837
- V.indexOf(A[v]) < 0 && Object.prototype.propertyIsEnumerable.call(X, A[v]) && (p[A[v]] = X[A[v]]);
2834
+ for (var A in H) Object.prototype.hasOwnProperty.call(H, A) && Y.indexOf(A) < 0 && (p[A] = H[A]);
2835
+ if (H != null && typeof Object.getOwnPropertySymbols == "function")
2836
+ for (var v = 0, A = Object.getOwnPropertySymbols(H); v < A.length; v++)
2837
+ Y.indexOf(A[v]) < 0 && Object.prototype.propertyIsEnumerable.call(H, A[v]) && (p[A[v]] = H[A[v]]);
2838
2838
  return p;
2839
2839
  }, pt = [1, 3, 5], se = [
2840
2840
  xt("PropagateLoader", "25% {transform: translateX(-".concat(pt[0], `rem) scale(0.75)}
@@ -2860,8 +2860,8 @@ var xt = function(X, V, p) {
2860
2860
  75% {transform: translateX(`).concat(pt[2], `rem) scale(0.5)}
2861
2861
  95% {transform: translateX(0rem) scale(1)}`), "propogate-5")
2862
2862
  ];
2863
- function oe(X) {
2864
- var V = X.loading, p = V === void 0 ? !0 : V, A = X.color, v = A === void 0 ? "#000000" : A, a = X.speedMultiplier, o = a === void 0 ? 1 : a, r = X.cssOverride, l = r === void 0 ? {} : r, g = X.size, w = g === void 0 ? 15 : g, _ = ae(X, ["loading", "color", "speedMultiplier", "cssOverride", "size"]), b = ie(w), i = b.value, d = b.unit, n = Bt({ display: "inherit", position: "relative" }, l), c = function(s) {
2863
+ function oe(H) {
2864
+ var Y = H.loading, p = Y === void 0 ? !0 : Y, A = H.color, v = A === void 0 ? "#000000" : A, a = H.speedMultiplier, o = a === void 0 ? 1 : a, r = H.cssOverride, l = r === void 0 ? {} : r, g = H.size, w = g === void 0 ? 15 : g, _ = ae(H, ["loading", "color", "speedMultiplier", "cssOverride", "size"]), b = ie(w), i = b.value, d = b.unit, n = Bt({ display: "inherit", position: "relative" }, l), c = function(s) {
2865
2865
  return {
2866
2866
  position: "absolute",
2867
2867
  fontSize: "".concat(i / 3).concat(d),
@@ -2889,17 +2889,17 @@ const Dt = {
2889
2889
  "loading-screen-gon": "_loading-screen-gon_ywqzh_17"
2890
2890
  };
2891
2891
  function le({
2892
- isLoading: X,
2893
- color: V
2892
+ isLoading: H,
2893
+ color: Y
2894
2894
  }) {
2895
2895
  return /* @__PURE__ */ et(
2896
2896
  "div",
2897
2897
  {
2898
- className: X ? Dt["loading-screen"] : Dt["loading-screen-gon"],
2898
+ className: H ? Dt["loading-screen"] : Dt["loading-screen-gon"],
2899
2899
  children: /* @__PURE__ */ et("div", { children: /* @__PURE__ */ et(
2900
2900
  oe,
2901
2901
  {
2902
- color: V || "red"
2902
+ color: Y || "red"
2903
2903
  }
2904
2904
  ) })
2905
2905
  }
@@ -2909,8 +2909,8 @@ function ce() {
2909
2909
  document.fullscreenElement ? document.exitFullscreen && document.exitFullscreen() : document.documentElement.requestFullscreen();
2910
2910
  }
2911
2911
  function ue({
2912
- onClose: X,
2913
- fontSize: V,
2912
+ onClose: H,
2913
+ fontSize: Y,
2914
2914
  padding: p,
2915
2915
  fontFamily: A,
2916
2916
  setFontSize: v,
@@ -2934,11 +2934,11 @@ function ue({
2934
2934
  dt(() => {
2935
2935
  if (l) {
2936
2936
  const z = setTimeout(() => {
2937
- X();
2937
+ H();
2938
2938
  }, 300);
2939
2939
  return () => clearTimeout(z);
2940
2940
  }
2941
- }, [l, X]);
2941
+ }, [l, H]);
2942
2942
  const c = () => {
2943
2943
  n();
2944
2944
  }, s = (z) => {
@@ -2952,9 +2952,9 @@ function ue({
2952
2952
  }, x = () => {
2953
2953
  p - 5 > 0 && (a((z) => z - 5), m(i));
2954
2954
  }, S = () => {
2955
- V < 3 && (v((z) => z + 0.2), m(b));
2955
+ Y < 3 && (v((z) => z + 0.2), m(b));
2956
2956
  }, D = () => {
2957
- V - 0.2 > 0.6 && (v((z) => z - 0.2), m(b));
2957
+ Y - 0.2 > 0.6 && (v((z) => z - 0.2), m(b));
2958
2958
  };
2959
2959
  return /* @__PURE__ */ et(
2960
2960
  "div",
@@ -3003,7 +3003,7 @@ function ue({
3003
3003
  /* @__PURE__ */ et("div", { className: "option-label", children: "Font size" }),
3004
3004
  /* @__PURE__ */ ut("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
3005
3005
  /* @__PURE__ */ et("button", { onClick: D, children: "-" }),
3006
- /* @__PURE__ */ et("span", { ref: b, className: "option-value", children: Math.round(V * 10) }),
3006
+ /* @__PURE__ */ et("span", { ref: b, className: "option-value", children: Math.round(Y * 10) }),
3007
3007
  /* @__PURE__ */ et("button", { onClick: S, children: "+" })
3008
3008
  ] })
3009
3009
  ] }),
@@ -3027,18 +3027,18 @@ const he = "_overlay_1cqa3_53", de = "_fadeOut_1cqa3_80", fe = "_interactionZone
3027
3027
  bounceArrow: ve,
3028
3028
  dismissButton: we
3029
3029
  }, ye = ({
3030
- color: X = "#4fc3f7",
3031
- onDismiss: V
3030
+ color: H = "#4fc3f7",
3031
+ onDismiss: Y
3032
3032
  }) => {
3033
3033
  const [p, A] = ht(!1), v = () => {
3034
- A(!0), setTimeout(V, 400);
3034
+ A(!0), setTimeout(Y, 400);
3035
3035
  };
3036
3036
  return /* @__PURE__ */ ut(
3037
3037
  "div",
3038
3038
  {
3039
3039
  className: `${mt.overlay} ${p ? mt.fadeOut : ""}`,
3040
3040
  onClick: v,
3041
- style: { "--accent-color": X },
3041
+ style: { "--accent-color": H },
3042
3042
  children: [
3043
3043
  /* @__PURE__ */ ut("div", { className: mt.interactionZone, children: [
3044
3044
  /* @__PURE__ */ et("div", { className: mt.iconWrapper, children: /* @__PURE__ */ et("svg", { viewBox: "0 0 24 24", children: /* @__PURE__ */ et("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) }) }),
@@ -3108,7 +3108,11 @@ const he = "_overlay_1cqa3_53", de = "_fadeOut_1cqa3_80", fe = "_interactionZone
3108
3108
  -webkit-column-fill: auto;
3109
3109
  -webkit-column-gap: calc(2 * var(--side-padding));
3110
3110
 
3111
- overflow-x: hidden;
3111
+ /* SAFARI FIX: Auto allows native scroll physics (smooth),
3112
+ overscroll-behavior prevents the 'bounce' that causes page misalignments */
3113
+ overflow-x: auto;
3114
+ overscroll-behavior-x: none;
3115
+
3112
3116
  overflow-y: hidden;
3113
3117
  -webkit-overflow-scrolling: touch;
3114
3118
  box-sizing: border-box;
@@ -3224,18 +3228,19 @@ const he = "_overlay_1cqa3_53", de = "_fadeOut_1cqa3_80", fe = "_interactionZone
3224
3228
  overflow: hidden;
3225
3229
  overflow-y: hidden;
3226
3230
  `;
3227
- function ke(X, V) {
3231
+ function ke(H, Y) {
3228
3232
  const [p, A] = ht(() => {
3229
- const v = localStorage.getItem(X);
3230
- return v === null ? V : v === "true";
3233
+ if (typeof window > "u") return Y;
3234
+ const v = localStorage.getItem(H);
3235
+ return v === null ? Y : v === "true";
3231
3236
  });
3232
3237
  return dt(() => {
3233
- localStorage.setItem(X, p ? "true" : "false");
3234
- }, [X, p]), [p, A];
3238
+ localStorage.setItem(H, p ? "true" : "false");
3239
+ }, [H, p]), [p, A];
3235
3240
  }
3236
3241
  const ze = ({
3237
- epubDataSource: X,
3238
- onTitleChange: V,
3242
+ epubDataSource: H,
3243
+ onTitleChange: Y,
3239
3244
  onLoadingChange: p,
3240
3245
  onError: A,
3241
3246
  className: v,
@@ -3243,7 +3248,7 @@ const ze = ({
3243
3248
  color: o,
3244
3249
  supportedFonts: r = []
3245
3250
  }) => {
3246
- const { title: l, rawContent: g, isLoading: w, error: _, loadEpub: b, setIsLoading: i } = Yt(), [d, n] = ht(!1), [c, s] = ht(1.2), [m, y] = ht(30), [x, S] = ht("Inter"), D = yt(null), [z, F] = ke(
3251
+ const { title: l, rawContent: g, isLoading: w, error: _, loadEpub: b, setIsLoading: i } = Vt(), [d, n] = ht(!1), [c, s] = ht(1.2), [m, y] = ht(30), [x, S] = ht("Inter"), D = yt(null), [z, F] = ke(
3247
3252
  "bokreader_tutorial_shown",
3248
3253
  !1
3249
3254
  ), [E, C] = ht(!z);
@@ -3254,15 +3259,15 @@ const ze = ({
3254
3259
  C(!1), F(!0);
3255
3260
  };
3256
3261
  dt(() => {
3257
- X && b(X);
3258
- }, [X, b]), dt(() => {
3259
- V && V(l);
3260
- }, [l, V]), dt(() => {
3262
+ H && b(H);
3263
+ }, [H, b]), dt(() => {
3264
+ Y && Y(l);
3265
+ }, [l, Y]), dt(() => {
3261
3266
  p && p(w);
3262
3267
  }, [w, p]), dt(() => {
3263
3268
  _ && A && A(_);
3264
3269
  }, [_, A]);
3265
- const h = Xt(
3270
+ const h = Ht(
3266
3271
  () => ({
3267
3272
  "--color-tint": o,
3268
3273
  "--side-padding": `${m}px`,
@@ -3344,7 +3349,7 @@ const ze = ({
3344
3349
  }
3345
3350
  )
3346
3351
  ] }),
3347
- !X && !w && !_ && /* @__PURE__ */ et("div", { style: { padding: "20px", textAlign: "center" }, children: "No EPUB loaded." })
3352
+ !H && !w && !_ && /* @__PURE__ */ et("div", { style: { padding: "20px", textAlign: "center" }, children: "No EPUB loaded." })
3348
3353
  ]
3349
3354
  }
3350
3355
  );