emf-converter 4.5.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -12,8 +12,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
12
12
  if (typeof require !== "undefined") return require.apply(this, arguments);
13
13
  throw Error('Dynamic require of "' + x + '" is not supported');
14
14
  });
15
- var __commonJS = (cb, mod2) => function __require2() {
16
- return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
15
+ var __commonJS = (cb, mod3) => function __require2() {
16
+ return mod3 || (0, cb[__getOwnPropNames(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports;
17
17
  };
18
18
  var __copyProps = (to, from, except, desc) => {
19
19
  if (from && typeof from === "object" || typeof from === "function") {
@@ -23,13 +23,13 @@ var __copyProps = (to, from, except, desc) => {
23
23
  }
24
24
  return to;
25
25
  };
26
- var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(
26
+ var __toESM = (mod3, isNodeMode, target) => (target = mod3 != null ? __create(__getProtoOf(mod3)) : {}, __copyProps(
27
27
  // If the importer is in node compatibility mode or this is not an ESM
28
28
  // file that has been converted to a CommonJS file using a Babel-
29
29
  // compatible transform (i.e. "__esModule" has not been set), then set
30
30
  // "default" to the CommonJS "module.exports" for node compatibility.
31
- !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target,
32
- mod2
31
+ !mod3 || !mod3.__esModule ? __defProp(target, "default", { value: mod3, enumerable: true }) : target,
32
+ mod3
33
33
  ));
34
34
 
35
35
  // node_modules/jpeg-js/lib/encoder.js
@@ -620,10 +620,10 @@ var require_encoder = __commonJS({
620
620
  0.275899379
621
621
  ];
622
622
  var k = 0;
623
- for (var row = 0; row < 8; row++) {
623
+ for (var row2 = 0; row2 < 8; row2++) {
624
624
  for (var col = 0; col < 8; col++) {
625
- fdtbl_Y[k] = 1 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
626
- fdtbl_UV[k] = 1 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8);
625
+ fdtbl_Y[k] = 1 / (YTable[ZigZag[k]] * aasf[row2] * aasf[col] * 8);
626
+ fdtbl_UV[k] = 1 / (UVTable[ZigZag[k]] * aasf[row2] * aasf[col] * 8);
627
627
  k++;
628
628
  }
629
629
  }
@@ -1008,20 +1008,20 @@ var require_encoder = __commonJS({
1008
1008
  var quadWidth = width * 4;
1009
1009
  var x, y = 0;
1010
1010
  var r, g, b;
1011
- var start, p, col, row, pos;
1011
+ var start, p, col, row2, pos;
1012
1012
  while (y < height) {
1013
1013
  x = 0;
1014
1014
  while (x < quadWidth) {
1015
1015
  start = quadWidth * y + x;
1016
1016
  p = start;
1017
1017
  col = -1;
1018
- row = 0;
1018
+ row2 = 0;
1019
1019
  for (pos = 0; pos < 64; pos++) {
1020
- row = pos >> 3;
1020
+ row2 = pos >> 3;
1021
1021
  col = (pos & 7) * 4;
1022
- p = start + row * quadWidth + col;
1023
- if (y + row >= height) {
1024
- p -= quadWidth * (y + 1 + row - height);
1022
+ p = start + row2 * quadWidth + col;
1023
+ if (y + row2 >= height) {
1024
+ p -= quadWidth * (y + 1 + row2 - height);
1025
1025
  }
1026
1026
  if (x + col >= quadWidth) {
1027
1027
  p -= x + col - quadWidth + 4;
@@ -1369,10 +1369,10 @@ var require_decoder = __commonJS({
1369
1369
  successiveACState = 0;
1370
1370
  }
1371
1371
  }
1372
- function decodeMcu(component2, decode4, mcu2, row, col) {
1372
+ function decodeMcu(component2, decode4, mcu2, row2, col) {
1373
1373
  var mcuRow = mcu2 / mcusPerLine | 0;
1374
1374
  var mcuCol = mcu2 % mcusPerLine;
1375
- var blockRow = mcuRow * component2.v + row;
1375
+ var blockRow = mcuRow * component2.v + row2;
1376
1376
  var blockCol = mcuCol * component2.h + col;
1377
1377
  if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
1378
1378
  return;
@@ -1467,27 +1467,27 @@ var require_decoder = __commonJS({
1467
1467
  for (i2 = 0; i2 < 64; i2++)
1468
1468
  p[i2] = zz[i2] * qt[i2];
1469
1469
  for (i2 = 0; i2 < 8; ++i2) {
1470
- var row = 8 * i2;
1471
- if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 && p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 && p[7 + row] == 0) {
1472
- t = dctSqrt2 * p[0 + row] + 512 >> 10;
1473
- p[0 + row] = t;
1474
- p[1 + row] = t;
1475
- p[2 + row] = t;
1476
- p[3 + row] = t;
1477
- p[4 + row] = t;
1478
- p[5 + row] = t;
1479
- p[6 + row] = t;
1480
- p[7 + row] = t;
1470
+ var row2 = 8 * i2;
1471
+ if (p[1 + row2] == 0 && p[2 + row2] == 0 && p[3 + row2] == 0 && p[4 + row2] == 0 && p[5 + row2] == 0 && p[6 + row2] == 0 && p[7 + row2] == 0) {
1472
+ t = dctSqrt2 * p[0 + row2] + 512 >> 10;
1473
+ p[0 + row2] = t;
1474
+ p[1 + row2] = t;
1475
+ p[2 + row2] = t;
1476
+ p[3 + row2] = t;
1477
+ p[4 + row2] = t;
1478
+ p[5 + row2] = t;
1479
+ p[6 + row2] = t;
1480
+ p[7 + row2] = t;
1481
1481
  continue;
1482
1482
  }
1483
- v0 = dctSqrt2 * p[0 + row] + 128 >> 8;
1484
- v1 = dctSqrt2 * p[4 + row] + 128 >> 8;
1485
- v2 = p[2 + row];
1486
- v3 = p[6 + row];
1487
- v4 = dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128 >> 8;
1488
- v7 = dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128 >> 8;
1489
- v5 = p[3 + row] << 4;
1490
- v6 = p[5 + row] << 4;
1483
+ v0 = dctSqrt2 * p[0 + row2] + 128 >> 8;
1484
+ v1 = dctSqrt2 * p[4 + row2] + 128 >> 8;
1485
+ v2 = p[2 + row2];
1486
+ v3 = p[6 + row2];
1487
+ v4 = dctSqrt1d2 * (p[1 + row2] - p[7 + row2]) + 128 >> 8;
1488
+ v7 = dctSqrt1d2 * (p[1 + row2] + p[7 + row2]) + 128 >> 8;
1489
+ v5 = p[3 + row2] << 4;
1490
+ v6 = p[5 + row2] << 4;
1491
1491
  t = v0 - v1 + 1 >> 1;
1492
1492
  v0 = v0 + v1 + 1 >> 1;
1493
1493
  v1 = t;
@@ -1512,14 +1512,14 @@ var require_decoder = __commonJS({
1512
1512
  t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
1513
1513
  v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
1514
1514
  v6 = t;
1515
- p[0 + row] = v0 + v7;
1516
- p[7 + row] = v0 - v7;
1517
- p[1 + row] = v1 + v6;
1518
- p[6 + row] = v1 - v6;
1519
- p[2 + row] = v2 + v5;
1520
- p[5 + row] = v2 - v5;
1521
- p[3 + row] = v3 + v4;
1522
- p[4 + row] = v3 - v4;
1515
+ p[0 + row2] = v0 + v7;
1516
+ p[7 + row2] = v0 - v7;
1517
+ p[1 + row2] = v1 + v6;
1518
+ p[6 + row2] = v1 - v6;
1519
+ p[2 + row2] = v2 + v5;
1520
+ p[5 + row2] = v2 - v5;
1521
+ p[3 + row2] = v3 + v4;
1522
+ p[4 + row2] = v3 - v4;
1523
1523
  }
1524
1524
  for (i2 = 0; i2 < 8; ++i2) {
1525
1525
  var col = i2;
@@ -1652,10 +1652,10 @@ var require_decoder = __commonJS({
1652
1652
  var blocks = [];
1653
1653
  requestMemoryAllocation(blocksToAllocate * 256);
1654
1654
  for (var i2 = 0; i2 < blocksPerColumnForMcu; i2++) {
1655
- var row = [];
1655
+ var row2 = [];
1656
1656
  for (var j2 = 0; j2 < blocksPerLineForMcu; j2++)
1657
- row.push(new Int32Array(64));
1658
- blocks.push(row);
1657
+ row2.push(new Int32Array(64));
1658
+ blocks.push(row2);
1659
1659
  }
1660
1660
  component2.blocksPerLine = blocksPerLine;
1661
1661
  component2.blocksPerColumn = blocksPerColumn;
@@ -7664,7 +7664,7 @@ var require_UTIF = __commonJS({
7664
7664
  514,
7665
7665
  513
7666
7666
  ];
7667
- var i, c, n, col, row, sum = 0;
7667
+ var i, c, n, col, row2, sum = 0;
7668
7668
  var ljpeg_diff = UTIF3.decode._ljpeg_diff;
7669
7669
  huff[0] = 15;
7670
7670
  for (n = i = 0; i < 18; i++) {
@@ -7672,12 +7672,12 @@ var require_UTIF = __commonJS({
7672
7672
  for (var c = 0; c < lim; c++) huff[++n] = tab[i];
7673
7673
  }
7674
7674
  for (col = raw_width; col--; )
7675
- for (row = 0; row < height + 1; row += 2) {
7676
- if (row == height) row = 1;
7675
+ for (row2 = 0; row2 < height + 1; row2 += 2) {
7676
+ if (row2 == height) row2 = 1;
7677
7677
  sum += ljpeg_diff(inp, prm, huff);
7678
- if (row < height) {
7678
+ if (row2 < height) {
7679
7679
  var clr = sum & 4095;
7680
- UTIF3.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7680
+ UTIF3.decode._putsF(tgt, (row2 * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7681
7681
  }
7682
7682
  }
7683
7683
  return;
@@ -7692,9 +7692,9 @@ var require_UTIF = __commonJS({
7692
7692
  return;
7693
7693
  }
7694
7694
  var pix = new Uint16Array(16);
7695
- var row, col, val, max, min, imax, imin, sh, bit, i, dp;
7695
+ var row2, col, val, max, min, imax, imin, sh, bit, i, dp;
7696
7696
  var data = new Uint8Array(raw_width + 1);
7697
- for (row = 0; row < height; row++) {
7697
+ for (row2 = 0; row2 < height; row2++) {
7698
7698
  for (var j = 0; j < raw_width; j++) data[j] = inp[off++];
7699
7699
  for (dp = 0, col = 0; col < raw_width - 30; dp += 16) {
7700
7700
  max = 2047 & (val = bin.readUint(data, dp));
@@ -7712,7 +7712,7 @@ var require_UTIF = __commonJS({
7712
7712
  }
7713
7713
  for (i = 0; i < 16; i++, col += 2) {
7714
7714
  var clr = pix[i] << 1;
7715
- UTIF3.decode._putsF(tgt, (row * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7715
+ UTIF3.decode._putsF(tgt, (row2 * raw_width + col) * tiff_bps, clr << 16 - tiff_bps);
7716
7716
  }
7717
7717
  col -= col & 1 ? 1 : 31;
7718
7718
  }
@@ -7946,13 +7946,13 @@ var require_UTIF = __commonJS({
7946
7946
  if (csize > 1) step = Math.floor(max / (csize - 1));
7947
7947
  if (ver0 == 68 && ver1 == 32 && step > 0) split = bin.readShort(md, 562);
7948
7948
  var i;
7949
- var row, col;
7949
+ var row2, col;
7950
7950
  var len, shl, diff;
7951
7951
  var hpred = [0, 0];
7952
7952
  var huff = make_decoder(nikon_tree[tree]);
7953
7953
  var prm = [off, 0, 0, 0];
7954
- for (row = 0; row < height; row++) {
7955
- if (split && row == split) {
7954
+ for (row2 = 0; row2 < height; row2++) {
7955
+ if (split && row2 == split) {
7956
7956
  huff = make_decoder(nikon_tree[tree + 1]);
7957
7957
  }
7958
7958
  for (col = 0; col < raw_width; col++) {
@@ -7962,10 +7962,10 @@ var require_UTIF = __commonJS({
7962
7962
  diff = (getbithuff(data, prm, len - shl, 0) << 1) + 1 << shl >>> 1;
7963
7963
  if ((diff & 1 << len - 1) == 0)
7964
7964
  diff -= (1 << len) - (shl == 0 ? 1 : 0);
7965
- if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
7965
+ if (col < 2) hpred[col] = vpred[row2 & 1][col] += diff;
7966
7966
  else hpred[col & 1] += diff;
7967
7967
  var clr = Math.min(Math.max(hpred[col & 1], 0), (1 << tiff_bps) - 1);
7968
- var bti = (row * raw_width + col) * tiff_bps;
7968
+ var bti = (row2 * raw_width + col) * tiff_bps;
7969
7969
  UTIF3.decode._putsF(tgt, bti, clr << 16 - tiff_bps);
7970
7970
  }
7971
7971
  }
@@ -9531,9 +9531,9 @@ function decodeMonoBits(view, bmiOffset, bitsOffset) {
9531
9531
  return null;
9532
9532
  }
9533
9533
  const bits = new Uint8Array(width * height);
9534
- for (let row = 0; row < height; row++) {
9535
- const y = heightRaw > 0 ? height - 1 - row : row;
9536
- const rowOff = bitsOffset + row * stride;
9534
+ for (let row2 = 0; row2 < height; row2++) {
9535
+ const y = heightRaw > 0 ? height - 1 - row2 : row2;
9536
+ const rowOff = bitsOffset + row2 * stride;
9537
9537
  for (let x = 0; x < width; x++) {
9538
9538
  bits[y * width + x] = view.getUint8(rowOff + (x >> 3)) >> 7 - (x & 7) & 1;
9539
9539
  }
@@ -10164,12 +10164,12 @@ function unfilter(raw, offset, stride, rows, bpp) {
10164
10164
  let prev = -1;
10165
10165
  for (let y = 0; y < rows; y++) {
10166
10166
  const filter = raw[offset];
10167
- const row = offset + 1;
10167
+ const row2 = offset + 1;
10168
10168
  for (let i = 0; i < stride; i++) {
10169
- const a = i >= bpp ? raw[row + i - bpp] : 0;
10169
+ const a = i >= bpp ? raw[row2 + i - bpp] : 0;
10170
10170
  const b = prev >= 0 ? raw[prev + i] : 0;
10171
10171
  const c = prev >= 0 && i >= bpp ? raw[prev + i - bpp] : 0;
10172
- let v = raw[row + i];
10172
+ let v = raw[row2 + i];
10173
10173
  switch (filter) {
10174
10174
  case 1:
10175
10175
  v += a;
@@ -10184,10 +10184,10 @@ function unfilter(raw, offset, stride, rows, bpp) {
10184
10184
  v += paeth(a, b, c);
10185
10185
  break;
10186
10186
  }
10187
- raw[row + i] = v & 255;
10187
+ raw[row2 + i] = v & 255;
10188
10188
  }
10189
- prev = row;
10190
- offset = row + stride;
10189
+ prev = row2;
10190
+ offset = row2 + stride;
10191
10191
  }
10192
10192
  return offset;
10193
10193
  }
@@ -10253,41 +10253,41 @@ async function decodePng(bytes) {
10253
10253
  const maxSample = (1 << depth) - 1;
10254
10254
  const keyGray = trns && colorType === 0 && trns.length >= 2 ? trns[0] << 8 | trns[1] : -1;
10255
10255
  const keyRgb = trns && colorType === 2 && trns.length >= 6 ? [trns[0] << 8 | trns[1], trns[2] << 8 | trns[3], trns[4] << 8 | trns[5]] : null;
10256
- const sampleAt = (row, index) => {
10256
+ const sampleAt = (row2, index) => {
10257
10257
  if (depth === 8) {
10258
- return raw[row + index];
10258
+ return raw[row2 + index];
10259
10259
  }
10260
10260
  if (depth === 16) {
10261
- return raw[row + index * 2] << 8 | raw[row + index * 2 + 1];
10261
+ return raw[row2 + index * 2] << 8 | raw[row2 + index * 2 + 1];
10262
10262
  }
10263
10263
  const bit = index * depth;
10264
- return raw[row + (bit >> 3)] >> 8 - depth - (bit & 7) & maxSample;
10264
+ return raw[row2 + (bit >> 3)] >> 8 - depth - (bit & 7) & maxSample;
10265
10265
  };
10266
10266
  const to8 = (v) => depth === 16 ? v >> 8 : depth === 8 ? v : Math.round(v * 255 / maxSample);
10267
- const writeRow = (row, count, y, x0, dx) => {
10267
+ const writeRow = (row2, count, y, x0, dx) => {
10268
10268
  for (let i = 0; i < count; i++) {
10269
10269
  const di = (y * width + x0 + i * dx) * 4;
10270
10270
  if (colorType === 3) {
10271
- const idx = sampleAt(row, i);
10271
+ const idx = sampleAt(row2, i);
10272
10272
  out[di] = palette[idx * 3] ?? 0;
10273
10273
  out[di + 1] = palette[idx * 3 + 1] ?? 0;
10274
10274
  out[di + 2] = palette[idx * 3 + 2] ?? 0;
10275
10275
  out[di + 3] = trns && idx < trns.length ? trns[idx] : 255;
10276
10276
  } else if (colorType === 0 || colorType === 4) {
10277
- const g = sampleAt(row, i * channels);
10277
+ const g = sampleAt(row2, i * channels);
10278
10278
  const v = to8(g);
10279
10279
  out[di] = v;
10280
10280
  out[di + 1] = v;
10281
10281
  out[di + 2] = v;
10282
- out[di + 3] = colorType === 4 ? to8(sampleAt(row, i * channels + 1)) : g === keyGray ? 0 : 255;
10282
+ out[di + 3] = colorType === 4 ? to8(sampleAt(row2, i * channels + 1)) : g === keyGray ? 0 : 255;
10283
10283
  } else {
10284
- const r = sampleAt(row, i * channels);
10285
- const g = sampleAt(row, i * channels + 1);
10286
- const b = sampleAt(row, i * channels + 2);
10284
+ const r = sampleAt(row2, i * channels);
10285
+ const g = sampleAt(row2, i * channels + 1);
10286
+ const b = sampleAt(row2, i * channels + 2);
10287
10287
  out[di] = to8(r);
10288
10288
  out[di + 1] = to8(g);
10289
10289
  out[di + 2] = to8(b);
10290
- out[di + 3] = colorType === 6 ? to8(sampleAt(row, i * channels + 3)) : keyRgb && r === keyRgb[0] && g === keyRgb[1] && b === keyRgb[2] ? 0 : 255;
10290
+ out[di + 3] = colorType === 6 ? to8(sampleAt(row2, i * channels + 3)) : keyRgb && r === keyRgb[0] && g === keyRgb[1] && b === keyRgb[2] ? 0 : 255;
10291
10291
  }
10292
10292
  }
10293
10293
  };
@@ -10586,13 +10586,13 @@ function idctBlock(coef, offset, quant, out, outOffset, stride, ws) {
10586
10586
  idct1d(vec, res);
10587
10587
  for (let r = 0; r < 8; r++) ws[r * 8 + col] = descale(res[r], CONST_BITS - PASS1_BITS);
10588
10588
  }
10589
- for (let row = 0; row < 8; row++) {
10589
+ for (let row2 = 0; row2 < 8; row2++) {
10590
10590
  let ac = 0;
10591
10591
  for (let c = 0; c < 8; c++) {
10592
- vec[c] = ws[row * 8 + c];
10592
+ vec[c] = ws[row2 * 8 + c];
10593
10593
  if (c) ac |= vec[c];
10594
10594
  }
10595
- const o = outOffset + row * stride;
10595
+ const o = outOffset + row2 * stride;
10596
10596
  if (!ac) {
10597
10597
  const x = descale(vec[0], PASS1_BITS + 3) + 128;
10598
10598
  const dc = x < 0 ? 0 : x > 255 ? 255 : x;
@@ -11040,7 +11040,7 @@ function decodeJpegTiff(bytes, page) {
11040
11040
  const x = block % columns * blockWidth, y = Math.floor(block / columns) * blockHeight;
11041
11041
  const copyWidth = Math.min(blockWidth, width - x), copyHeight = Math.min(blockHeight, height - y);
11042
11042
  if (decoded.width !== blockWidth || decoded.height < copyHeight || decoded.height > blockHeight) throw new Error("Invalid TIFF JPEG dimensions");
11043
- for (let row = 0; row < copyHeight; row++) result.set(decoded.data.subarray(row * decoded.width * 4, (row * decoded.width + copyWidth) * 4), ((y + row) * width + x) * 4);
11043
+ for (let row2 = 0; row2 < copyHeight; row2++) result.set(decoded.data.subarray(row2 * decoded.width * 4, (row2 * decoded.width + copyWidth) * 4), ((y + row2) * width + x) * 4);
11044
11044
  }
11045
11045
  return result;
11046
11046
  }
@@ -11198,11 +11198,11 @@ function filterScanlines(input, width, height) {
11198
11198
  const up = new Uint8Array(stride);
11199
11199
  const pae = new Uint8Array(stride);
11200
11200
  for (let y = 0; y < height; y++) {
11201
- const row = y * stride;
11202
- const prev = row - stride;
11201
+ const row2 = y * stride;
11202
+ const prev = row2 - stride;
11203
11203
  const o = y * (stride + 1);
11204
11204
  if (words && y > 0) {
11205
- const w0 = row >> 2;
11205
+ const w0 = row2 >> 2;
11206
11206
  const p0 = prev >> 2;
11207
11207
  let same = true;
11208
11208
  for (let k = 0; k < width; k++) {
@@ -11216,7 +11216,7 @@ function filterScanlines(input, width, height) {
11216
11216
  continue;
11217
11217
  }
11218
11218
  }
11219
- const none = data.subarray(row, row + stride);
11219
+ const none = data.subarray(row2, row2 + stride);
11220
11220
  const noneScore = score(none, stride);
11221
11221
  if (noneScore === 0) {
11222
11222
  out.set(none, o + 1);
@@ -11225,18 +11225,18 @@ function filterScanlines(input, width, height) {
11225
11225
  let subScore = 0;
11226
11226
  let upScore = 0;
11227
11227
  for (let i = 0; i < 4 && i < stride; i++) {
11228
- const x = data[row + i];
11228
+ const x = data[row2 + i];
11229
11229
  sub[i] = x;
11230
11230
  subScore += x < 128 ? x : 256 - x;
11231
11231
  }
11232
11232
  for (let i = 4; i < stride; i++) {
11233
- const v = data[row + i] - data[row + i - 4] & 255;
11233
+ const v = data[row2 + i] - data[row2 + i - 4] & 255;
11234
11234
  sub[i] = v;
11235
11235
  subScore += v < 128 ? v : 256 - v;
11236
11236
  }
11237
11237
  if (y > 0) {
11238
11238
  for (let i = 0; i < stride; i++) {
11239
- const v = data[row + i] - data[prev + i] & 255;
11239
+ const v = data[row2 + i] - data[prev + i] & 255;
11240
11240
  up[i] = v;
11241
11241
  upScore += v < 128 ? v : 256 - v;
11242
11242
  }
@@ -11259,10 +11259,10 @@ function filterScanlines(input, width, height) {
11259
11259
  }
11260
11260
  if (y > 0 && bestScore > stride >> 3) {
11261
11261
  for (let i = 0; i < stride; i++) {
11262
- const a = i >= 4 ? data[row + i - 4] : 0;
11262
+ const a = i >= 4 ? data[row2 + i - 4] : 0;
11263
11263
  const b = data[prev + i];
11264
11264
  const c = i >= 4 ? data[prev + i - 4] : 0;
11265
- pae[i] = data[row + i] - paeth2(a, b, c) & 255;
11265
+ pae[i] = data[row2 + i] - paeth2(a, b, c) & 255;
11266
11266
  }
11267
11267
  const paethScore = score(pae, stride);
11268
11268
  if (paethScore < bestScore) {
@@ -12466,19 +12466,19 @@ function accumulateLine(acc, mark, stride, rows, width, x0, y0, x1, y1) {
12466
12466
  if (top >= bottom) {
12467
12467
  return;
12468
12468
  }
12469
- const add = (row, cell, v) => {
12470
- const i = row * stride + cell;
12469
+ const add = (row2, cell, v) => {
12470
+ const i = row2 * stride + cell;
12471
12471
  acc[i] += v;
12472
12472
  if (!mark[i]) {
12473
12473
  mark[i] = 1;
12474
- touched[row].push(cell);
12474
+ touched[row2].push(cell);
12475
12475
  }
12476
12476
  };
12477
12477
  const dxdy = (x1 - x0) / (y1 - y0);
12478
12478
  let x = Math.min(width, Math.max(0, x0 + (top - y0) * dxdy));
12479
12479
  const rowEnd = Math.ceil(bottom);
12480
- for (let row = Math.floor(top); row < rowEnd; row++) {
12481
- const dy = Math.min(row + 1, bottom) - Math.max(row, top);
12480
+ for (let row2 = Math.floor(top); row2 < rowEnd; row2++) {
12481
+ const dy = Math.min(row2 + 1, bottom) - Math.max(row2, top);
12482
12482
  let xnext = x + dxdy * dy;
12483
12483
  if (xnext < 0) {
12484
12484
  xnext = 0;
@@ -12492,27 +12492,27 @@ function accumulateLine(acc, mark, stride, rows, width, x0, y0, x1, y1) {
12492
12492
  const hiCeil = Math.ceil(hi);
12493
12493
  if (hiCeil <= loFloor + 1) {
12494
12494
  const xmf = 0.5 * (x + xnext) - loFloor;
12495
- add(row, loFloor, d - d * xmf);
12496
- add(row, loFloor + 1, d * xmf);
12495
+ add(row2, loFloor, d - d * xmf);
12496
+ add(row2, loFloor + 1, d * xmf);
12497
12497
  } else {
12498
12498
  const s = 1 / (hi - lo);
12499
12499
  const x0f = lo - loFloor;
12500
12500
  const a0 = 0.5 * s * (1 - x0f) * (1 - x0f);
12501
12501
  const x1f = hi - hiCeil + 1;
12502
12502
  const am = 0.5 * s * x1f * x1f;
12503
- add(row, loFloor, d * a0);
12503
+ add(row2, loFloor, d * a0);
12504
12504
  if (hiCeil === loFloor + 2) {
12505
- add(row, loFloor + 1, d * (1 - a0 - am));
12505
+ add(row2, loFloor + 1, d * (1 - a0 - am));
12506
12506
  } else {
12507
12507
  const a1 = s * (1.5 - x0f);
12508
- add(row, loFloor + 1, d * (a1 - a0));
12508
+ add(row2, loFloor + 1, d * (a1 - a0));
12509
12509
  for (let xi = loFloor + 2; xi < hiCeil - 1; xi++) {
12510
- add(row, xi, d * s);
12510
+ add(row2, xi, d * s);
12511
12511
  }
12512
12512
  const a2 = a1 + (hiCeil - loFloor - 3) * s;
12513
- add(row, hiCeil - 1, d * (1 - a2 - am));
12513
+ add(row2, hiCeil - 1, d * (1 - a2 - am));
12514
12514
  }
12515
- add(row, hiCeil, d * am);
12515
+ add(row2, hiCeil, d * am);
12516
12516
  }
12517
12517
  x = xnext;
12518
12518
  }
@@ -12642,14 +12642,14 @@ function rasterizeRings(rings, rule, bounds, sink) {
12642
12642
  }
12643
12643
  accumulateLine(acc, mark, stride, rows, width, segs[o], ya, segs[o + 2], yb);
12644
12644
  }
12645
- for (let row = 0; row < rows; row++) {
12646
- const cells = touched[row];
12645
+ for (let row2 = 0; row2 < rows; row2++) {
12646
+ const cells = touched[row2];
12647
12647
  if (cells.length === 0) {
12648
12648
  continue;
12649
12649
  }
12650
12650
  cells.sort(byNumber);
12651
- const base = row * stride;
12652
- const y = bandTop + row;
12651
+ const base = row2 * stride;
12652
+ const y = bandTop + row2;
12653
12653
  let sum = 0;
12654
12654
  for (let k = 0; k < cells.length; k++) {
12655
12655
  const cell = cells[k];
@@ -13790,8 +13790,8 @@ var SoftwareRasterCanvas = class {
13790
13790
  readRgba(x, y, w, h) {
13791
13791
  const out = new Uint8ClampedArray(Math.max(0, w * h * 4));
13792
13792
  const { width, height, data } = this;
13793
- for (let row = 0; row < h; row++) {
13794
- const sy = y + row;
13793
+ for (let row2 = 0; row2 < h; row2++) {
13794
+ const sy = y + row2;
13795
13795
  if (sy < 0 || sy >= height) {
13796
13796
  continue;
13797
13797
  }
@@ -13801,7 +13801,7 @@ var SoftwareRasterCanvas = class {
13801
13801
  continue;
13802
13802
  }
13803
13803
  const si = (sy * width + sx) * 4;
13804
- const di = (row * w + col) * 4;
13804
+ const di = (row2 * w + col) * 4;
13805
13805
  const a = data[si + 3];
13806
13806
  if (a === 255) {
13807
13807
  out[di] = data[si];
@@ -13810,10 +13810,10 @@ var SoftwareRasterCanvas = class {
13810
13810
  out[di + 3] = 255;
13811
13811
  } else if (a !== 0) {
13812
13812
  const table = unpremultiplyTable();
13813
- const row2 = a << 8;
13814
- out[di] = table[row2 | data[si]];
13815
- out[di + 1] = table[row2 | data[si + 1]];
13816
- out[di + 2] = table[row2 | data[si + 2]];
13813
+ const row3 = a << 8;
13814
+ out[di] = table[row3 | data[si]];
13815
+ out[di + 1] = table[row3 | data[si + 1]];
13816
+ out[di + 2] = table[row3 | data[si + 2]];
13817
13817
  out[di + 3] = a;
13818
13818
  }
13819
13819
  }
@@ -13830,8 +13830,8 @@ var SoftwareRasterCanvas = class {
13830
13830
  return null;
13831
13831
  }
13832
13832
  let out = null;
13833
- for (let row = 0; row < h; row++) {
13834
- const sy = y + row;
13833
+ for (let row2 = 0; row2 < h; row2++) {
13834
+ const sy = y + row2;
13835
13835
  if (sy < 0 || sy >= this.height) {
13836
13836
  continue;
13837
13837
  }
@@ -13839,7 +13839,7 @@ var SoftwareRasterCanvas = class {
13839
13839
  const sx = x + col;
13840
13840
  if (sx >= 0 && sx < this.width && u[sy * this.width + sx]) {
13841
13841
  out ?? (out = new Uint8Array(w * h));
13842
- out[row * w + col] = 1;
13842
+ out[row2 * w + col] = 1;
13843
13843
  }
13844
13844
  }
13845
13845
  }
@@ -14537,9 +14537,9 @@ var SoftwareRasterContext = class {
14537
14537
  return null;
14538
14538
  }
14539
14539
  const out = new Uint8Array(Math.max(0, w * h));
14540
- for (let row = 0; row < h; row++) {
14540
+ for (let row2 = 0; row2 < h; row2++) {
14541
14541
  for (let col = 0; col < w; col++) {
14542
- out[row * w + col] = clipAt(clip, x + col, y + row);
14542
+ out[row2 * w + col] = clipAt(clip, x + col, y + row2);
14543
14543
  }
14544
14544
  }
14545
14545
  return out;
@@ -14550,8 +14550,8 @@ var SoftwareRasterContext = class {
14550
14550
  }
14551
14551
  const polys = this.flattened();
14552
14552
  const key = `${y}`;
14553
- let row = this.rowCache;
14554
- if (!row || row.key !== key) {
14553
+ let row2 = this.rowCache;
14554
+ if (!row2 || row2.key !== key) {
14555
14555
  const xs = [];
14556
14556
  const dirs = [];
14557
14557
  for (const poly of polys) {
@@ -14581,23 +14581,23 @@ var SoftwareRasterContext = class {
14581
14581
  for (let k = order.length - 1; k >= 0; k--) {
14582
14582
  suffix[k] = suffix[k + 1] + dirs[order[k]];
14583
14583
  }
14584
- row = { key, xs: sortedX, suffixWinding: suffix, count: order.length };
14585
- this.rowCache = row;
14584
+ row2 = { key, xs: sortedX, suffixWinding: suffix, count: order.length };
14585
+ this.rowCache = row2;
14586
14586
  }
14587
14587
  let lo = 0;
14588
- let hi = row.count;
14588
+ let hi = row2.count;
14589
14589
  while (lo < hi) {
14590
14590
  const mid = lo + hi >> 1;
14591
- if (row.xs[mid] > x) {
14591
+ if (row2.xs[mid] > x) {
14592
14592
  hi = mid;
14593
14593
  } else {
14594
14594
  lo = mid + 1;
14595
14595
  }
14596
14596
  }
14597
14597
  if (fillRule === "evenodd") {
14598
- return (row.count - lo & 1) === 1;
14598
+ return (row2.count - lo & 1) === 1;
14599
14599
  }
14600
- return row.suffixWinding[lo] !== 0;
14600
+ return row2.suffixWinding[lo] !== 0;
14601
14601
  }
14602
14602
  isPointInStroke(x, y) {
14603
14603
  const rings = strokeToRings(this.flattened(), this.state.transform, this.strokeParams(), FLATTEN_TOLERANCE);
@@ -14804,8 +14804,8 @@ var SoftwareRasterContext = class {
14804
14804
  const c1 = Math.min(image.width, Math.floor(dirtyX + dirtyW));
14805
14805
  const r1 = Math.min(image.height, Math.floor(dirtyY + dirtyH));
14806
14806
  const src = image.data;
14807
- for (let row = r0; row < r1; row++) {
14808
- const ty = dy + row;
14807
+ for (let row2 = r0; row2 < r1; row2++) {
14808
+ const ty = dy + row2;
14809
14809
  if (ty < 0 || ty >= height) {
14810
14810
  continue;
14811
14811
  }
@@ -14814,7 +14814,7 @@ var SoftwareRasterContext = class {
14814
14814
  if (tx < 0 || tx >= width) {
14815
14815
  continue;
14816
14816
  }
14817
- const si = (row * image.width + col) * 4;
14817
+ const si = (row2 * image.width + col) * 4;
14818
14818
  const di = (ty * width + tx) * 4;
14819
14819
  const a = src[si + 3];
14820
14820
  if (a === 255) {
@@ -16348,7 +16348,7 @@ function gdipHue(r, g, b) {
16348
16348
  const q = (256 - t - (t >= 40 ? 1 : 0)) % 256;
16349
16349
  return q - Math.floor((q + 42) / 86);
16350
16350
  }
16351
- function applyHueSaturationLightness(src, hue, saturation, lightness2) {
16351
+ function applyHueSaturationLightness(src, hue, saturation, lightness) {
16352
16352
  const out = new Uint8ClampedArray(src);
16353
16353
  const shift = Math.round(hue * HUE_CIRCLE / 360);
16354
16354
  const sMul = 1 + saturation / 100;
@@ -16358,7 +16358,7 @@ function applyHueSaturationLightness(src, hue, saturation, lightness2) {
16358
16358
  const b = src[i + 2];
16359
16359
  const max = Math.max(r, g, b);
16360
16360
  const min = Math.min(r, g, b);
16361
- const l = clamp(Math.round(((max + min >> 1) * 100 + 255 * lightness2) / 100), 0, 255);
16361
+ const l = clamp(Math.round(((max + min >> 1) * 100 + 255 * lightness) / 100), 0, 255);
16362
16362
  if (max === min) {
16363
16363
  out[i] = out[i + 1] = out[i + 2] = l;
16364
16364
  continue;
@@ -16465,21 +16465,21 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16465
16465
  const verticalIndex = taps >= edgeHeight ? (y) => Math.max(0, Math.min(h - 1, y)) : (y) => mirror(y, h);
16466
16466
  const out = new Float64Array(w * h * 4);
16467
16467
  for (let y = 0; y < h; y++) {
16468
- const row = y * w * 4;
16468
+ const row2 = y * w * 4;
16469
16469
  for (let x = 0; x < w; x++) {
16470
16470
  let s0 = 0;
16471
16471
  let s1 = 0;
16472
16472
  let s2 = 0;
16473
16473
  let s3 = 0;
16474
16474
  for (let j = -taps; j <= taps; j++) {
16475
- const p = row + horizontalIndex(x + j) * 4;
16475
+ const p = row2 + horizontalIndex(x + j) * 4;
16476
16476
  const kw = k[j + taps];
16477
16477
  s0 += kw * src[p];
16478
16478
  s1 += kw * src[p + 1];
16479
16479
  s2 += kw * src[p + 2];
16480
16480
  s3 += kw * src[p + 3];
16481
16481
  }
16482
- const o = row + x * 4;
16482
+ const o = row2 + x * 4;
16483
16483
  out[o] = Math.round(s0);
16484
16484
  out[o + 1] = Math.round(s1);
16485
16485
  out[o + 2] = Math.round(s2);
@@ -16489,10 +16489,10 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16489
16489
  if (taps > 0 && vRow >= 0 && vRow < h) {
16490
16490
  const horizontal = out.slice();
16491
16491
  const endRow = fullVertical ? h : Math.min(h, vRow + verticalRows);
16492
- for (let row = vRow; row < endRow; row++) {
16492
+ for (let row2 = vRow; row2 < endRow; row2++) {
16493
16493
  const col = new Float64Array(w * 4);
16494
16494
  for (let j = -taps; j <= taps; j++) {
16495
- const yy = row + j;
16495
+ const yy = row2 + j;
16496
16496
  if (vZeroAbove && yy < vRow) {
16497
16497
  continue;
16498
16498
  }
@@ -16501,7 +16501,7 @@ function gdipBlur(src, w, h, radius, vRow = 0, vZeroAbove = false, fullVertical
16501
16501
  col[i] += k[j + taps] * horizontal[base + i];
16502
16502
  }
16503
16503
  }
16504
- out.set(col, row * w * 4);
16504
+ out.set(col, row2 * w * 4);
16505
16505
  }
16506
16506
  }
16507
16507
  return out;
@@ -17105,14 +17105,14 @@ function shapeRowSpans(shape, dom) {
17105
17105
  let active = [];
17106
17106
  let next = 0;
17107
17107
  const xs = [];
17108
- for (let row = dom.y0; row < dom.y1; row++) {
17109
- while (next < edges.length && edges[next].row0 === row) {
17108
+ for (let row2 = dom.y0; row2 < dom.y1; row2++) {
17109
+ while (next < edges.length && edges[next].row0 === row2) {
17110
17110
  active.push(edges[next++]);
17111
17111
  }
17112
- active = active.filter((e) => e.row1 > row);
17112
+ active = active.filter((e) => e.row1 > row2);
17113
17113
  xs.length = 0;
17114
17114
  for (const e of active) {
17115
- xs.push({ x: e.x + (row - e.row0) * e.slope, dir: e.dir });
17115
+ xs.push({ x: e.x + (row2 - e.row0) * e.slope, dir: e.dir });
17116
17116
  }
17117
17117
  xs.sort((a, b) => a.x - b.x);
17118
17118
  const spans = [];
@@ -26402,7 +26402,7 @@ function rasterizeMono(o, dropout, fixedBox) {
26402
26402
  }
26403
26403
  const local = { xs, ys, onCurve: o.onCurve, endPts: o.endPts };
26404
26404
  const data = new Uint8Array(width * height);
26405
- const at = (col, row) => (height - 1 - row) * width + col;
26405
+ const at = (col, row2) => (height - 1 - row2) * width + col;
26406
26406
  const r = new Raster(dropout);
26407
26407
  const P = r.precision;
26408
26408
  if (r.convert(local, false, 0, (height - 1) * P)) {
@@ -26473,9 +26473,9 @@ function rasterizeMono(o, dropout, fixedBox) {
26473
26473
  const e1 = h.ceilPub(x1);
26474
26474
  const e2 = h.floorPub(x2);
26475
26475
  if (e1 === e2) {
26476
- const row = h.truncPub(e1);
26477
- if (row >= 0 && row < height && col >= 0 && col < width) {
26478
- data[at(col, row)] = 1;
26476
+ const row2 = h.truncPub(e1);
26477
+ if (row2 >= 0 && row2 < height && col >= 0 && col < width) {
26478
+ data[at(col, row2)] = 1;
26479
26479
  }
26480
26480
  }
26481
26481
  }
@@ -26516,9 +26516,9 @@ function rasterizeMono(o, dropout, fixedBox) {
26516
26516
  return;
26517
26517
  }
26518
26518
  }
26519
- const row = h.truncPub(pxl);
26520
- if (row >= 0 && row < height && col >= 0 && col < width) {
26521
- data[at(col, row)] = 1;
26519
+ const row2 = h.truncPub(pxl);
26520
+ if (row2 >= 0 && row2 < height && col >= 0 && col < width) {
26521
+ data[at(col, row2)] = 1;
26522
26522
  }
26523
26523
  }
26524
26524
  );
@@ -26597,10 +26597,10 @@ function rasterizeGray(o) {
26597
26597
  const height = box.yMax - box.yMin;
26598
26598
  const data = new Uint8Array(width * height);
26599
26599
  for (let y = 0; y < hi.height; y++) {
26600
- const row = Math.floor(y / k) * width;
26600
+ const row2 = Math.floor(y / k) * width;
26601
26601
  for (let x = 0; x < hi.width; x++) {
26602
26602
  if (hi.data[y * hi.width + x]) {
26603
- data[row + Math.floor(x / k)]++;
26603
+ data[row2 + Math.floor(x / k)]++;
26604
26604
  }
26605
26605
  }
26606
26606
  }
@@ -27403,9 +27403,9 @@ function rasterizeClearType(o) {
27403
27403
  const data = new Uint8Array(n * height);
27404
27404
  for (let y = 0; y < height; y++) {
27405
27405
  sub.fill(0);
27406
- const row = y * hi.width;
27406
+ const row2 = y * hi.width;
27407
27407
  for (let x = 0; x < hi.width; x++) {
27408
- if (hi.data[row + x]) {
27408
+ if (hi.data[row2 + x]) {
27409
27409
  sub[Math.floor(x / S)] += 1;
27410
27410
  }
27411
27411
  }
@@ -30874,12 +30874,94 @@ function handleEmfGdiShapeRecord(rCtx, recType, dataOff, recSize) {
30874
30874
  }
30875
30875
  }
30876
30876
 
30877
+ // src/emf-gdi-illuminant-data.ts
30878
+ var ILLUMINANT_CUBE_DATA = {
30879
+ 1: "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",
30880
+ 2: "eNrtXQuQXVWV3Rfoc5p0Pp1PJ51Pd7o7nU8nAUwEhwilEAcHEAeMH4oMFD8HNSiDgMIEZfiWDDBYfEcqjCgBiu+IolhAEK1kYNDAwBCF4atUGPwAllTi6ACeqXfv2VXv7jp7r/v6vW7C2Lffu791z7nnvr5r7X32Pu9dorFpbBqb/lyncRSoeAWxKKZdebs844m8REK5flePBHl2ol0YSYFEtHOqUp6IKNMKjk1j09iEJppG9awOgsqBpgpUysTkJMYHBOpMYzwLEzUkLiZoSJx1mNUX+qbArda3pIbtohVkfdOEcUzfxqaRnoiol5jAaZL0mGig2Zo8xNksq3Ag6gblZ5jqQdRlVx+mWXCgmr6Z5Sfb8EjrWxif2vlO0zdNw4hopzCmb2/ntKjEf3kzBFooIXHIfA2Iy8FkvbwMNKBhcdZvywP1aUXjrBfwtwfwdzbZAjYLlO+2YUL6Nj3YAjbNEpd3lL6lRG5M30Z6Wl60Pcnv2nJZMAWC9tDKxuXuWsm4XGoVDkRLNCzOFgdTXmiRLQ9R37RjiOYD/g8C/2bArp71TZuV9U3OqFX6ps3G9G0iuL4JtvxJfRMix/G3pPyxvqWFsUX6tm+Z//JWpX0EKpcrkiivBtq7vFfWEN4D9GMvWx7CnpY8UKDltjxEfVNITKHQN+0YorC7XT0tBf2bJcC/WRxs/2gRuL8Xgvu7mr5px0h9k7NAO5K+pYj09upbpf4pWS5Ss/r2wRT/+QAKdIAGxeUHTJTCSk0b4nI/U10Cvd+Wh/A+Wx5oX1B+H1B+hdW5CRT2tpwTCvQe0L/Zy1SfQHva8hCWA/9mmVZznO0B7u/dgX9TVd+0YxYDfjSrb/PB9TXov+1o+hZmk93BQvp2WD35JQ+IwqFJ/vNRFD5sokSHWO4BBTpYE4+4epAtD3SgVnGcfdCMXhAdYMtDoW9a+UC00pYH1jftGNY3jSL0PtC/2ZdsB2YfYL9X2PIQ9tYij5q+idlewL/ZE8RvlpMtYMvA/Y30bXfA38b0TR74dutboEEbDqtJkr9MlyNMdSA6XJYVq5/QhCGuflzuEh/kR63eAwVaZbsXNX0LmrbUZodqWNz4MIhPHGLLQzgYlD/IlodwIIhPfBD0bw6wq5f6JmdhJbDf+5FN0PdrNVv6xrNAYV/g3+wDPp8VZAvY3oD/b4++8Wyk9Y3ok6R1AIrX8aY6EB1rdR4o0DG2exCOTgsDb9FRdveCjrTdi5q+BcsFOcJ2L8LhFn8p5PpmxTc/DuITHwXxjVWAv4fZ1YdDQXziw6B/c4hWNC4/BO7vg4B/c6Dd/UnqW/3sAODffADEb1YC/2Z/YL/fD/jban2TB64A/Ef6dpLkv7ifPmeqQ6ATTTTQGtB/+IztHtCnTHWhcILZe8j1LVgScLztXoRjQXzyGFseavpmlj8K8PdIEJ9Ynb4zeBmOsKunw215KOlb6piP2/JQ0rfUMauA/T7MloeUvpWO+TDwbw4B/s2HQPz1IODfHIjib63VN3mgpm98IJ1R4r9kWqDTAf+/GCyUwmlW5yEQnWrTmz6fLsY7wslAP04y3QMKn7PzEzV9M3sYa8zeB9Fngh3A+JQtD3SC1TmhUOibxvGa/wbiG8eC+MQxoH9zNIhPHAX6N0fa8qDpG8+EvsmNqG+ahAQKnwD++8eBf/NR4N+sAvb7MLIF7FAQn2xM3+SBgc5jeiosP8dUBwpnBzt+cJadXqAv2+4BnalxO+5YC/TjDNs9CKfb7gF9AZQ/DeQ3Tg1WAILC50F882RbHsJJpvdR+G8Wf08E8Yk12t3D/hvo33wKxCdOAP2bT9ryEI4H/D8W5F+OAf7N0Tb/NX3jGR0J/JvVwH4fAfybwwH/PwH8m39S6M1rF6e6BvwiChcFO35woe0e0FeA/3CBTW863w4v0Lkgv3COFnqIr38A5c+y3Yuob1p5Cmda/KdAa0F88wzT+yj8N0tCvgDiG6eB+MSpoH/zedC/ORn0b04C8YnPgfjEiaB/swbY788A/+ZTwL85AfD/k8C/OR7Y72NB/PUY4N/8s+S/uN+vsshPFK4E/L8c8P+yYCUQKHwV5Bcv1XyDuO8SoB8Xkx2AvCjYCYwLQX7zK4C/FwD+ng/ik+cC/p5jVx/+AcQ3zgLxjS8D/p4Jxl+s1ZgTl2eA/s3pwH5/AfRvTgPxiVMB/z8P/JuTgX9zEvBvPgfsN9C3sAbkT78Z7ADAdRIRx3xd7hB9/WsViFuwThOPeMA1QD++pnEzvq623QO6yiwf6Eo7P0mX2+4B65vmYRT6ppWnQJeC/MYltrzk+mbx/yJgvy8E/P2KLQ90AYhvnA/iE+eC/s05oH9zdrAdmLOA/f4yiE+cCfi/FujjGcC/OR34N18E8cnTgH9zm8b/uHGLRf5AdLOJBroJ+A832uFFWg/4fz3ID3zDTk/QdbZ7EL4e7ADktWB8wzqQ37wG5Ce+BvIbV4P45FUgPnkliE9eDvh7WbAHWHwV8PdSEN+4BNjvi0H/5iKLXaxvGkEpqW+ljQtA/+Z8EJ84F/D/HODfnA3yL2cB/+Z7zH+Fx3fZ6QH6jh0epDsB/79l05vu0DyH+Lod5Bdvs6KHFOgWoB83m9FHoptA+RsBf9eTHYC4HuQnvgHyG9eB+ObXg92BuRbEN9cB/l4D+P810L+5GvRvrgL8vxL4N5eD/s1lwH5/FeRfLwX510tAfOJiwP+LAP8vBP7NAyQTAOV7+f40wmu0wQ4P0r12eCDcA/j/fbN8oLtB+e/Z5p3uAvrxHVD+Tk1YWN9AfvIO2z0It1vByUB0K8hP3AL4e7PtHoSbQHzyRg2Lq+tBfON6wN9vAP5fB/j7dcD/a4H9Xgf6N9fY9pv1TZMHuhr4N1eB/s2VID5xOeD/w2QHAB8iOwDwoJU8IAqbTJRoI9CPH9ndg/BDwP8HQH7xfrt82ADyi/fa7kG4B5T/PtkByLtBfuK7ID9xF8hPfAfkJ+4E8c1vgfjmHYC/t5vZUQq3gvjkLYD/Nwf7CyA3gf7NjSA+uR74N9eb7gHQN+6falWQpm+8IfVNblB4QhBfMvVxOz1Aj9nhwfCoRf5A9IjdPaCfAP7/WIstxtfDIL/4kN09oAeBfmwC4xM2gvzkj2z3gvVNk4Cavpnl7wf83WDLQ7gXxCfvAfHJ74P45N0gPvld0/tg/02rgoS+yWXNf7P5/y3Qv7kD8P92YL9vBfp4C7DfNwP/5ibg3zynOf9x8YzJfwpP2+HB8JQdHqQnAf9/Bvi7BYxPfAKUfxzkBx+z3QN6FJR/xEpOFvpmlv8xyE8+bLsH4SGQn3gQ5Cc2Af5vtPnP+qZVQT8ke4DUA7Z7wP6bdvtHfdOqqOmbHYC4B/D/+8B+3w36N98D9vsuEJ/8DohP3gn4/3Ka/3wAvWSnB8JWjf9x40U7PEi/UCBe+3mw/YfnAf+fA/x/BuQHngblnwL5xSfB+ISfgvJbQH7yCZCffByUfwzw91HA30dAfPMnID/xY2C/Hw52AOIhEN94EMQ3NgH7vRH0b34E7PcPAf8fAPb7ftC/2QDik/cCffwdyQRAmU6/JTsA+JodHqRXgzm8kH5jhwfCr+3wAP0S5AdfNkcfUHgJlN+qfXchvl4E+vELMD7hBTC+6XmQn3wO5CefAeWfBvx9CuQnntS0IW79FOQntoD8xBMgP/E4sN+PgfjkoyA++QjIT/zErl7qm1yGhwH/HwLjLx4E/ZtNID75hsl/Cv8byIwQ/gHw/3/s8CBtt8172AbGF74O+Ps7UP63oPxrIL/3Cij/G1D+15qwxN2/BOVfBvnJl2z3IGy13QN6EeQnfgHyEy+A/MTzID75HIhPPgPiG08D+/0U4P+TID75UxDf2AL4/wQYf/E4sN+PAf4/Cvwb7cdJmTMhCZX4KhF5u5ULaXeLQtI/Af6+qfUc4usNML7oj4C/fwD5gd+D8tvB7x9sA+MTXgflf2e7F6xvWvnwGshvvgL4/xuQn/gVyE/8EsQ3Xwb8fwnwfyuIb74I7PcvQHzyBZCfeB70b54D/H0GkPdpEJ94apj8r9eBHRUn68kZQdOvtD5JTP6cqqYioYxJVLPt/GJ90/hHb4LxCW+A8n8E+ck/gPzk70F+crstL7TNdg/C64C/vwP8/S2IT74G8hOvAPv9G7v6en1LVvFLQL6XQXzyJdC/2Qr4/yLwb97Z/P9/jVv/H/73af6Z8v+VNK0vr40yJLIkIAD7/SeQn3gT5DfesKsv9E1res1/A/HN34P45naQn9gG4pOv2+nLqG9aFTV9s8n7GujfvALik2P8G8PfFv9M8b+kOxVseUvpW0iX11hiYiGA+OSfQHzyTZCfeAPw/4+2e5DUt/rl78f4P4aP4SODW/1nrf8p3am0ZjIWgobJ8opMBIHJw8b+v2P4GP7nilP+hFn+Sy3GkQVTNjW5l2eUzdGgOJufhnhZez6FhEqre5OEylv7SUi8DtKgrHj47iq5R2z8jbKfF8fLkvULyuizckf9KmV0mtwn3l/SsPg+v36T5AZllyRxnhFdKXeJrWvLmJzRDXKPWL09vZvnte83pHbzBt2ngXGxMb2bF/RjsVcu/zON8gr9VxLlNaKfyzJi9eXUTl6lPD+dwnmjFr9QDii23pJkrzTxPyOj9nQ5JiR1SpDKctAt2yS43p8qyLOMaEgWFMtlFpjVfh85CfKLVmrCEV8fMtWDso9p8hC3j0qJCi+IshMscaCM/o40qFicLigvFeBsTRji7ML0bn7TZaTpQ7FyjaYMcfZNRRd49RZNG+L82yn285yI7rHlIf/+mKYOtenfNW2Iy8c0ZYjLpxRd4JUXkvznNaKXLfITZa/JPUIFtqdlgadsWPzno4g0/vNU439mVdOd2fX3a1ichkDrl1lozn8FjJTbX5E3loODNH2Lr4/Ij1+QfbUC8tpxGhgXa8qgXNApmjTE95maMrB/YHoPRJdISRBsv0pThjj7F813iLObyBaIfwX6cLfmOMR/yw9s94AezEz606O2e0A/05C48rwlDkT035o0xNVX07rA67Xxc5prkE9vZo0KQPmYZvk/k0aL/2mhWWGJAxHtb4FUez5PUjp4oo9kdvtXg4//OAtk/msoEZ1CmoNWzNZqaJSEc1P6xjhldJG8tQSZr5DnFDKxLgnyLP/9E6v/kN2m8J+378q0zkMx30C2A7FJ8Rt48YjtHtTGN5PlIjxndx/y79ek6V+svWq6B7n9t7oHw+F/6RDE/04N2rH4n9EOwX958AjznyL/NZBy/ptXcBG4vivs2ytbZ4HMfw0lottMNKv9PpWG5rP7kvrGc8o2pjrNvC8j2ixBsdgiQbF8luwAwlbNMYhrr2jcj6vbrM5Bjf/UoAAIvB0Usvhfgxrlv6xtNPivgQX/M/MjWkWjxH9FhU4x0VbzXx4s+S/RkeI/b1Ka/7xp8T9OGwE/NptoxvzXroD5r11f5L+GFvy3/kXbwPU1yn8JI/532vRvKf9Tp1pmXhfzXwtCaPznPUn+l3asAu2vyn+tGcPkP2/n/Leu4Fyb/nQxNcN/9v8R/7VGMv+1Rkb+a2jBf/MCNwJ6bAbXN0L85800/3mz1fyXIPNfK0NEk+mdzn/T/Of5wVbxP3Wm1vBfY/go81+CZf4nm7Hepsew+F+/eZ9Nj5Hkf1bv/2tXsBVc3ytA37YBfXuzOfrn/LfK7Cj8z+idzv90M9aA+CXi/1oQvzjXdm8k/+XRzfA/315vy1vkv3aLF/y3CHAf0LdNVJX/6UZuAdc3Evyv39wG9K0R/qewdiAZw+F/fYX9oAlDoOmV+K/RP+e/naA8GHxKq0D7m+F/bc8awI9TQPyyUf7Lo1vFf60Zo81/ubkJXN9m2/wPl/+8KeN/8mAZ/5NH0zagb29RVf6nkXYQMJgM5GSU+J9pTVihgRb/eVeL+Z9qR0X+awxX+M87avy3HZjzqBH+y7pk/k/WRVX5r11BwX8NLfhvEuA+oG+A/9lmcH1bQP/+WRDfazX/5SYY/5MhYWgH8cLW8l+erJ7/6YYss80/4j/tD8YnjTD/S+N/hst/i+FrQfxytPivNWNY/OdtxH8q8v9V+Z9qxqjwXwML/pvXtw3oW0X+ayynXWm4/C+qnAkcjdbwXzP/Of8zaiX/xfGrQPtX2+a/Iv81HwXxn2gtiF+cB7zAqvzXmlGN/xr9C/5bCnYX8H83gOtrhv9Zff5faeSzwO62mv/y4Leao//o8l82o57/ShOHy3/euRL4J6PFf43ha2zzX+O/yfC1IL7XEP8lSJRdYZtH5r/WyGb5H8f/tYj/EqSsvv+fPNMWQK0q/Lcu4RWgb9upWf7bAb7h8p8rnQn855bwX7sA/v7PaPFfnqrE/7QMVeK/BiL+F+P/G+G/rKsq/zWGa/znHQX/tSso+G8yvEH+y6Ob4X9p/J/WjGdBt3sr6N+3lP/pRpo9/NHkf6ohQ8BDWWabf1qRUUv5L6trjv8Zx/+0XkjOf6uLcgqI77WS/ykZqsh/rZEK/3kH4n/8frAGNsj/VCM3A/I0y/+t4PpeAf377eD63kLmH8T3h8t/rnUm+P9U5L/WyJz/Gqjxv77IStA/aYT/qVOtts2/xn/epfGfd9EpdvpC8l9WJvgvK0P8z7j/rzG8Ev8tBbsNxC8b47+sC/C/NP7f5L/WyIL/Gprmf2m7Sf6Xvv+rfAd2JPjP1Ur+y/PV8z/ZFMT/ZeD7h++llvJfnqtF/NcsfM5/M0I5WvzXZKga/zWGI/4T3Qbil98F91dV/mvN2Azie1X4bynYVqBvr4Lr2w7il28P/7nWRvifbskQiFAss82/wn8ukuJ/ubqq/Ncaudqmf8F/DdT4z7uI6FSgX2eCz/880H+pyn+tkYj/60H84jbQv2+I/xIkyjaB3nE1/muNHA7/y9ut4r/WjCb5nzXIf3m6avzXGpnz3zT/Lea/PNdI8Z/31fhvJyhHi/8aw6+wzX/Bfw1E/Kf898Ea4b+sqyr/tUYy/zUOV+G/qWBbgb69Cq5vO4jvjSz/s7T950ol/+XZ6vmvNATxf5lN/zT/uUyK/6K+qvzXGrnapn/OfytBuQaMTzwV8ONMcP+cB/ovFfmvNRLxn9aD+OXt4P/TCP9TZ6rIf62RBf81Dg+H/2K7VfwfVvAf8T9L+//1dc4E9qXfpn/Of+srxstptPifbshI8Z/3rQHjk0aL/1ojrwD8WAfil63lv6yrKv+1K2gF/20D/xK1iv/pZowk/7N0/79UZUX+a82o8d/8ytJym/5J/tdXuBL4xwcDfqwC/stqDWT+g/FJJ1KD/Be1nQn4cZ59ednFtvmP/NcYnvPfdGDWg/heq/ivNbIa/7VGFvy3LqFR/sujXwXXV5X/WjOGy38uOhnYn5mAP83xP6Mdhf/aMIPVNv3pODA+6UTQ/tHiv+aGXAHiF4j/N1Bj/JeVfRfYlw22+Wf+axyuwn9TwZ4F/fsm+a/9/t9I859LSv7LCuv5nzxVP2jFEPjG8nKb/in+lypcCfyrg0H7R4j/vLNR/svayvyXYIn/6XZcbJt/jf+8i9aB+MUNwH60iv9aIyvxXwNbzX8JSv5LFPA/4/E/2iU0w/9YcDL4/8wE/eN+0Igh8IMFy236N8h/ebKq/NeuIMv9f8vCHwfGJ50I2j+y/M+4/69Z+Jz/VoiixfyXlZX4nzrTBhDf2wTil4j/W0D84jlqFf/TzdgOru8t2/wPl/9cTvJfVsf8106U899qw2IQf2iU//JsVfmvtRLxf7U5OpnoeLv5jfJfnqvE/1RDzrPNf+S/xnCN/7yLaB0Yn3QD8B9bxX+tkZtAfG8z6N83yn95+Evg/hsu/8Xzf7RGIv6j7/9nnSC+1W3LD/VJWGwtIu0HkIv1d6VBXuPf/00/hYl//1v7HmT9738qn8Mqm/4a/3lvo/yX5xpZ/mdUhf9mhuJaaiX/5alK/E8yfAOI720C8UvE/y0gftkq/mvN2A6u7y3AP8T/dmD/OoF9mgE+v7np6nmLFmrUj9MeSZxXid4jNUGsvE/7Yfa4/Kv058ULOjS5lxdEh2tPporzo82nWxF9Wnv2TZxOTj8Ygyf6ew2L07lWIiiLv/+tMTznv52gvBbcHzeA/svtoP9Slf8awzeB+N5m0L9vlP/y8JfA9VXlv9aMt8D1VeW/1sxJoJ4ZoHyvdnlxe74mDHFjN00b4upepjxktK/5eKaM/lKThrg8xBIHIvqYJg9x40iyH1DzSe3pNnH1s9qTceLsNO3ROnHly8mn8vAKZRekn+7F7+xSCySiq7Unj8WP7Drl+YU83Syfjyjukm+LJ6LJe+heLqvchhszuwOzGcQvfgr8syb5n70K4peV+K+Bw+R/fS2TbPeVpoPr7yFbAAZB/2CJRv24/m7TO8jy+ID1gMaVml5mon+gLD9iuwd0BNkCcYztH2SfVhBePVlThjg7w35+b3a2JQ5E9I/ao4Xj+zL78YLZNQrCq9drzz6Ni1uV5yLy4i7t+cvxtYGUB7TG17+Zj38lelTu48dDxulJSj26mqfa84Hlo2fLt/qvys++ljyg1zNZafk2fFMTxor89+CIiaCaLpBfmgPiF/MUOCvHB7XnH8rfB5A6EJ8frmkE0X529yH2DzQPgbK/1ryDuPwE2R2Io8h+QN3fAv/hs9bTtWv+Qdp/4J30JUsciGrPD7We8JldoglHfF9J9gOIrwXPN79Be/5xXNyhaUNcfC/9WGZeox+QpQ5ED9qPl6f/0PQhvp7SwLj6c+3Z1nH5K/HIbPn87NdTD9Wuf0J3u29v98VffOVvnnYqNtp5Vr903vs2r005rOx0/PbjeB8vGXK1l/PjZaG4iLCblCpUQPnfZA2Lf1O5Tgm7YtZlgd65bgnVg965WXFnGfHOxfeccnt4Vrydd70CFbDrkyi/Iz5PtIffjM8vVcu1MurcQqUorwwp9fK0RIKMxWm3cnPl1LaHaJTElykVt8XFu7WyxQFte2lFi0XbX2hl83mbW6FhEd8nXTHjbl/PuxhjsHi9T5avB12b2y8FFlA+W5lqFOOuzVGJ0+31VM/VYCcnmNzuS0fuzDgv6qvy3u/i6oldko98amPcCYzrdIqSlHivSYw4WakpBa3HaZVGzk4oNUZKiXeTlIJMyinOizOWtWKaqFWKxXRLvZx33V4qYlkOZpdArpZh53o0bYu0nJuqlynrnev3mnwV78GkfDGlnVtgiZtzbpGCMmcXm6hzS6X4CbrvXr4cqQXuXbJNYlqelk3mnNtT0754wHs07YsH7C0r5oJx+V5FN3m2r6i9TRyQSV76ssHfSZC7xNF273cW5OY1PmoXvj0VGreV7n95FJOC39JZkKyUB+XNkHjpFLta5/DedTiJl1VmfBmXLXQTXLJiboabKK9ciMUkUUZIietUdI9ZO0XTtsirLqVePmCGLCqEZqZWNKrBHKl8whXq1aQvkrZPqziyckBqakmhfO7fCO0rMX6h86b/NSSUUcrBkpTTx5yu+TeaMMb5HhoaF8t80jtjQrt3S0EWYrKXJX6uxn/J2bIU7CTvWmHAd3Eaudm+K8TkKlP8cMIkK3XUVtpdWgF4satkrzjTOIm7Mpc6kjjD3o8vd0ukyvgJDCr4RIBPqged9Hu875SFRfnJPtVAbr/3U12yAbzqp0lcaEWXBXrnpwtQekIzpPYJtehW1I1pOUupl//meKXiyMu5SWFkUjrfX/rUpFg4Py8lqgw75xdYoHN+EeOxdtmXW6xpX1SDpVrN8b27twVM2Pd26ejv7DUHnO2708gd7btCTP63aKbXpVyApDPiNHK7wr6niRHn4zR2xzo6LPKwfdfq8M5PtHDn/STnTQXp1PD4nly6ryXu/ZQyKHE/VRYW+DTvNAXJ310+3QB+Ty+xTr59zb9INpDf3RoeGzlTgq4sFbO8bGBZLObI1oluXk8Jl6h3vWVQdhHdXKd5dsVfn+a7xdmA5bx55wc15y1KxcKkV8h/rmbfNXJH/14jN/Nfc96Z//Jjl/ZdYy/bd8U5Z/tumnfvxqVufIbZvis42/ckMdi+azd2PGiijUf/XlOI3L83FWSyRR7v/BSAT02Rh9/e+WneJuD0FLu5fbX+g8lu57sBPtN5U2FmSXkR+GyAz0mCjDvf47UGFIteCYrFXG83oE+CAu8H+jggCws1GHSiAfX/HBfjd5Z9t817Yd81cvNJNHKj7nsuQZrprbfvWgeA7bt2jty+a6Y3n49Pm06eRf9ecc7ZvisKUpt1ajc223eAT7HNc+7fa+TxbN+1Oti+a3hu352pIDMA3p32D3iV7bvWgGjfNdz72Ra5vPdzvEbg4t3rbALPdd5UkD6N3XG1XyscFwOi3yLrmOftBg56u4E72933UvwudVSbHZuzzHv94SnTXG/f0857tO+aQtTmHXb33Y93dgdggt29Z/uunaOw71od3vlOgE9W7itp35Psdr6U30y9p9nm13cBfLrFbufZvms42/c0+533s2zz7Gfb5rnevicb0APwXts8+7nAf+jzNoH7vU3QAZPdefzBVJjBNMjHOGTf2+zuO+fnhtt9L+x7OjrvZPwupQDjLOe8Fr/XTG/JvmvsZfuuKQTH7zTzzPE7rY48fmcqyBSz91sfv0vj07R7M6502f6Dm253390M2/y6boDPtP2DfPyERdDZtv/g5tjm2fXY5tn1Av+gD/gH/c528AeA/zDP2QQe1MC4mA/8g10scgv7LsmdzM9J+552zutTDlb3XebnZGt9Mj/HB7F9184R7bvm4PuYn9MUpDabZHff2b5rClHYdw13HL/TzhHjd5qC1Nt3RSG6AD7dcs4dx+80drN/r11kvX1P1zEb4HOAf9DjbAL3pswzrzpfb9+T5+izzbPvB/7BgG2eS/Y9hQ8C/2E+8A/a7O475+e8lua3nHOfzM8J+w7yd+Ms55vtu3YOV47fpRRgAsjfDTc/x7NOM7rO8TtNAYr8vaUQ05yNd9nddzcd4DPs7nu9fU/iM+3uvZsF/IPZdvc9Hz9pKUQPiL/1Av9gLsD7gP/Q722CzrPNsxsE/sF84B8skKDA21LDc1wqPyfJXb9Hi87b+blo3y3zruXneB7jdxo7fT5+eLj5ObbvVgegE+Tvdoj8nIZz/G6E8nPOa/k5Gb/T6sjjd6aC9AD/oBfgc4H/0Af8h37gHwwAfJ5tnjl+pzWg8O+1c3jnFwD/oE0Z+CaDc1ovod3uvsv8nDyTT+fnGHa5f99ofq48/kYzjWzf7fxdq/JzGj7F7L5zfk7DnZ9md++r5ue07n2z+bncvx+N/JyG94L8XSP5uRTeD/yDARB/m5c2z7zq5jubwAvs+EIc32h9Qk4jt/xCTrKX0G7m71wRv9My+M3m52rjb0H+bgLI3030b1d+rjT+TsPz+J3l4FfNz2k4ys91a+SR9l1pYGvyc1oDve/xrcrPpfF+kL8bAP5Bs/m5+d528BcA/2Gh5R84ZN5lF19KQDFK0AoBjLO77+n8XL19B/m74eTn5PgbK4PfaeKO43eaghT+vUYO8f3DFN7S/JzEi/hdY/k5LX5n5+eSsTEef2c1sGp+TsMr5ec0cuX5OXt8T6vyc1oD59vd97J9l3V4X/v+lK0w1uC6dH6uFPvb1e6+y/ycrMR3mPm7kcrP8UzLz/EKx+9GOj+nKYj3KD833fYPWp2fkzjH7xrJz4n4XcX8XFpBOH6nNTD69xXzcxIfjfwcGN+zwNsO/kLgPywC/oPmnPNKuxmdrx9fnx6AP87uvsv8nGyIzM9J3Nv5ueL3ATTnPM/PgfxdS/JzGu5i/G5Hzc8V4+tblJ9L4z3Af+gF43tanZ+TDUT5uXkg/tZIfi6FLwD+w0IQX1jk7QSizM9JCdjV7r5r+Tk+SH5/TsqIzM/JSqz8XLTvdgeg0fycPGiyNXiO43faMd67qf5tzs85Pyr5OQ2fA/yDHpC/6wX+Q7P5uX7bPA8rP1ffwPnAf1gAzPNC4D8s8raDPwT8h3aQwd9VM71s3zXixEUHyN+Nt7vvrqn8XLTvKD9n4VPM6HoyP1d6TwP4OyM/p+Ecv9tR83OFf28RuGp+TvMfBr09gH8+8B/S+TnG2b5r53B+kbcd/CFTXlwpP5ccf+PsDkCHlb/j8TdaB0DLz5XG39j5u0kgf9cJ8nfN5edy+95Ufq7Lj0p+TsM5fteK/FxyAH+z+bm5wD9oVX5Ow+cB/2HQV83PpRUE5ecWAf9gCIzvWQz8g13N6HwyPyfH35gdgPEgfzfBHn4b43da/i7371uRn9PwZvJzJfuuKcR0gGv5Oca7zeh6zb7b/kPV/JyGo/xcD/p+HRjf06L8nNZAjt+1Ij+XxCvl57QG5PE7O4E4BPyDxQAfB74/32F33yvl5yx8IsjfTQL5u06Qvxut/JyGd4Hv308H8bkZ4Pt1VfNzWoCw2fxcDxjf06r8nIb3A/9hANz/80D+rlp+TvsQvFsAxveg/NwQGN+z2Jaf2u+vmg0cB/J3Hdbguvrfv1J8hAkgf1ctP6fhWn6OV/L4nTX8VsnP8Uqz+Tlf//tXSXwG+H5d1fychqP83GzgX88B368D+TlfLT+nNbAWv29Vfi6NDwL/YT7wDxaA8T3N5ueGgP+wGIzvWQLiC+PQ9+tA/m4CyN81l5/zbrj5uZJ91/Cq+TkNd+Xfv2okP1e27yg/p+Ecv9MUJPfvRzs/J+N3poJUzc9pDRwA/sE8EH8bBON7Rjo/twiM71kM/IMlAF8K/IcOu/vuGs3PydlEb/48jszPpb4fb+KTQf5uit19d1NB/q4LfL+uYn5Ow+PzA7RjvJtpD79tdX5O4qOVn9Nwjt9pH0KM31XMz0l8NPJztnlG+TkRv5OLmn23G7gUxBdQfm48+H7dBJC/m2Q53yOcn6u375pCtCQ/p+Hs32vnaCQ/h37/apj5uTneHsDfaH5O4n3Af+gH/kOr83MSR/m5BWB8TyP5uRQ+BPyHxSB/twSM79kN+Acd/BWg1Jd7XO7fOzk4qDT+RhkXb+bnSvbddPDl71+1OD/Hz99QBs9x/E4jRxG/G638XBKfDeJvrcrPKcNvOX6nNdD1Af+hH/gPw8zPMe4Gwfie4eTn6vFFwH8YAv7DYuA/LAH5u6XAf9gN+Acd9Q9FkFqQ859BCfP4nPofFJYjCfPfv5RwSWI66zEJc/7OJ0XI+/j9ee0RHKnxOVIBpqU7J7xR+v36ZH5OI4adn+P3aOfnJO57gP/QC/yHqvk5TUEGgP+A8nODYHzPcPNzMn6nje9ZBPyHIRB/Q/m5JWB8z1LgH+zm7QBhBz8yhB+YwmoQyT5BwFIMJsrCgu6TnCs996lUOPf/5XnLMjNZq5n792mwPr6vleX4fjxzWma65AWX5S33/yVcj3cna2Y8z9+5tER5tv+ysByfIzMvwv5LSRL5OevHN2v2HfgXzebnBkD8rdH8nGzgfOA/LAD+w0JfNT+XxpvNzy0F43t2A/7B7pr8xEWHfHKYLxN6vMQE2ye2iaeTCS2Y1CYfGskHFH+dovrizXjOfw3N/6ZoNfPzPUsXJWXG+Wla1fGT6rLlzU/XtNGxfyDhMp+7tZojXWdKWEjFLC/hshrMSZVloSjG52pV51Nvqijjvvj+TbrmYupLuY28KOx/0n1Lf79OPmCj/Ps4ye/XpbStPj+XYgXjTo6vr5qfczJ+VzU/J3G271oDo33XzuH87gDv4OeClh5DyqQq+J/E4gETSk8XlVqR9w+0svlsklNOHHnVKZ5b6MsHsD7I0vxmfdDkzU9rU+QtErarOLNUMCZ0jf/pE0d8hnJm/uuWqODzTKUsexWz5HmFzMwW4ifJPkdqo8B7NG3k+L8vfx5Shfpk3eIO7ldqZrIPSFBo0DytbJwP2vLmFyRVl6dcHyx5c4skLPqZQ0p8jXctke6bzN8p7hsvdpP6JiRuD8V5YLyDnwXMTwUWdB/PeD3KoHNuQv0ThUtgsZxYBqVWuEmxdk2EOmVpMU2WIC/ibTtFqzkeMNWSt9rzeRV9Y63o0spG0kzX5C2SYkZZ36QXxfqQkrD8NVOrOVJ2dpszHbQ5SenkV+35V5q8FbNeTd4ib+Zq4hdZ0aeVjWTv19B4Gw9o8uY4/6c4hhz/17SR4//OdtAW2vJW8x80eeP8X8ptZK3wS+QFC3ypJm/Fon03W978/wEy0Krr",
30881
+ 3: "eNrtnVuMXNWZ71fZ7XZVLozCbXQSIFLCRTrcRmcwjDQBR5oYIp2AeUgwDwEz0iQ40gQc6YTLA8F+COCHAP3AxZHCxRKQsQTMeARERsARBJC4ShiIFC4jBcwD2HkAO3TV3muto11rfVLtT+v//3ZfbLdzJonT1f2r2rWrev++77/WXrvauQP7n148tHxZWNp8uV/afKo+tHxFtbT59Ghp85VDzgfij3NOqRQVj5q2eJEKRzRzRJ2LXwiIZu4ZdW6Sl16fcLQTwtFOfLEGGxZe8/3/YoVo+rbF9Zaa7Vfs1Tn3pRHf/zFH+584ouNvvjTk+9/imjrnvjzL91842okxRzBxtv/uy7OR7v8Rn3NBjpgN9AASjnYicfTbGXO6/3/zORfgb2Zruv9f0T9W33yFYRfdkTHSA/TIwI9f4eBNiMLBWyQcvYHxKM9f4FGe6umOqml5afHSloSDAyAeXfH9H3NEE6cv4OgRPbzdJC/tonC0E8cM6eEdxxztYeJ0/4+Z5fV9kpd24tjPeX05dpY3qDFHr865eOxspPt/7Gygv4AW11tyzv3trKf7LxztxJij/XfOfbXUv+W2c1E4UEg4wnn7qEZE97WA6Pi7+LXAqpOLX/OIpicWDvZROHoFwtFOxONqeni742peX46r6OEdhaP6KBzVx+OM+nL8iPt5/CjSBn/8kNfHSV7aknBUH0+Y5ft/wizf/xNmaftUXN/XuUleepoThrxBfT35jXYijjna/8TpAfT1WU9/AV8f1rQ+fqOtq8bxmxHwfPx9MzD9Wrz0RgtHhgXhoDzlx6PfYYwnetr+44me15cTa15fTqx5fREOfomZo1+xiydV9PCIJ1U0nsWTRlTPSV6sL8JRfckc7UQ8ecj2v+G8Pp48y+ujcHB4y/bRTghHO5E4os7FU9r9Xe+E4npDzp0y9PQXIBxVkMzRHsYxR9S5eKru3+r46sYRzttH2Ll4WkDypuPzNNTf0+1wGu/vwtERKhzVl/z8aBdjPL3m+eX0mo6P4ukV7Y/C0a9YOPoVh8SRnokj2vAzRry+nDHk9UU4qi9nDHn+ShwdwImz+nKGUV/OnI10/88c0vG9cLQTwtFOjDnb/zOHfHzf5po693fS/0EF+Xu5UbY0nCXDmyKP8axif9ccKSQcOSQcVZAYzgp0eBFWeUTH34RVvL9P8mJ9WVXz+rKq5q9vVc3ry6qazr/EVcb44ewRry9nj9jLc+HsER3/ZY52MXFWX8426svZQ56/zhlGmr+Eo/yVODIwcebnOcNA97/FNW0eP6IT0PEfiv1fvhGO9jBxtv/finrE3roZOnE0Qsgc4YafG5Da6fg+tzx/L79e4Wh4Ec7l/V04EDBzpGfitL6ca9SX8ypeX86reH05r6L5O3FEE2cDoHjeiA2P2lzT8faN+rJ6yOvL6iGvL6uHfHy3esjHdy2uacNHdHwvHDmWOTLQxW/r/q/u+u0hH9+3uKbtxxfr45qo23/bD4uvCUjONo/ArzVGf18TEE5+rQlseNFwNrxw/vyaDS8mebm+nF/TfCMc1ZfE0S4mTuvL+RWvL+cb9eV8o75cwMf3iSOaOK0vF4wirS+TvFRfhKP6IhzVlzFHeibO2mf87pCO71u8lL++y+cP43dHdAI6c/QWjzkdAF3Y6u/apBgubPX3Mi9WBicchYfELwqR9fdwkafjC+Go/ghHFSRzVEGcv8iz4UXDeX25yKgvF9W0P/q1FT0/IxztROKIuhjWVry+rB3x+rJ2xOvL2hGvL2uN+rLWqC9rjfqy1qgvF48Cnb++eEQnqIUjx8KYI5o4Hd9dPKLj+xYv1RfhaP8viXp+tOWCvySw9i8cjRA011g46u8xXBLY+CJxVEESR9vO3DM9Y1hn9Pd1Na8v6/j43q+reX1ZV/P6sq6i+Vs4+v0LRzshHO1E4og2r9+oL+sqmr/DpSM6vheOaoRw5FjiiCZO68ulo0Dri3A0vheO5g8vrTw9vzLmiCZOJ1guj8X2L2+q78KjoxzhMV/vUXjQvFiAhCP/hKMikDhq/y5x9GA35mz+wvn1NT3/KRzthHAkUeZIsRjW8/oS1te0P/or+PheODpEhaNDNHN0iCaOaPP6rhjR8X2ba9rwKtD6IhzVl8zRTiSOaOK0vlxR8fG9cFRf/nnE5w+v1P2/pVn0V6L+PTcO2r9wNMBIHPX3zNn4wl/J5w+FA/+EIz2FowqSORr9Ozfm6MHN8b+h5vVlQ8Xry4aKYeFoF4WjGhHDhoq1fxc2VLS+tHhpfC8cje+Fo/F94kixxNn84YYq0PnDFtd0vH1eX34y4vXlJyNeXxrOzq/8pKrp/l8tb0/RwlhfHVH7F1562OTjI+vv9dWB9nfhqAjUGz0df2SOSkTmCCfOBhD1xprVl0le9EA4KgLCUQXxG2t6/rPhbADhNxr1ZSOfPxSOdkI42onM0S7GsNGoLxuN+rLRqC8bazq+Dz+rAq0viSMDE2f15WeVp37+DPX/3AB/VvETYMLR/OF1AbX/cWGoO3IguXBUAzJHOHOUDhJHs4+Z8/GFcNTfhaMikDkqES5xhBOn9eU6Pn84yUvbEY4kEo4kShzR6Px1Rn25zqgv11d0fC8c7YRwtBOZo12M4XrV/3V9ub6i4/sWL9UX4ai+XG/Ul+uN+nI9qy/RxetRfcmCbtL9vf30tcU3Rf1jzdn5w1BvovOLUTiYfhSOTkFkjvp75ggnTucP6038/IRwNL6oN9P5Q1dtZuP76NLjkWJuzJmA9eaK15fNFa8vm/n8oXCkmN9c8fVbmytaX8JmY/5wM68vwpFiwpFiYXNNF6DFzTUa36cDdHNNL2Bp8dL5CeFofl84OoK2gP6eN19tCaj9c95+PKoBmSOcOJs/rLYEOr6otvD5Q+GoCNRb+Pxh5qiCJI4enDirL67eYowvtvD5Q+Ho9585On6j38LrS8NZffFbavr6Jnlx/kI4Oj+ROXoBiSMaXdhSR1pfttR8fC8c1RfhqL5kjmpE4oi6GLcY9WVLTRfQx5moh/+t/lvNRNT+haP2n3lAswOpf88EhFsc9ffM0Rggc4QzZ+OLGWN8MWOML2aM8cWMUV9mjPHFjFFfZvj5iXrGqC8zRn2ZMerLjFFfZoz6MmPUlxljfDFj1JcZo77MGPVlxqgvM0Z9mTHqywyvL3GG1xfhqEbErRG1//HTV78OlNe/Dqj9Cwfq5/7764CwcDq/WP06IJz4Vj5/KByVCOGoCCSO2n/mCCfO1j+5aisdXwhHDglHONZbjfqylZ+fqLei9U+5vkzyUn0RjuZHhaPxfeJIsRgazs5/bvWRFZCw1fPxvXCwE8LRLgpHu5g4otHFrZ4ucI1bvWf1MW5D/T/112pbRGcHxk9fbYsoHuTHo/6ueNli4WgMIByNARJH8maOcOZ8fLHNGF9s4/4JR5IkjvTMnNWXbcb4Ypsxf7jNOD+xja9/8ttqR9dXbqv5+c9tNa0vLV5aXykczR8KR/XlfqO+3G/Ul/t9YPm7xUv1RTiaP7zfqC/38/oSt7devn6vQrU9ovbflaN4IBxh4bS/j7YHhp1wVCKEoxqQOcKZowFE4qwBVtvp+MJV2+n8oXBUQWK93RhfbDfOT2z39PqtertRX4Sj+iIczR9u9/QC9MxRBXF+e9tP/Sx+O/Iz15ftnn6ARdju6QWuwpGAmSM9Y/y3QC+Qj//G60uLl+YP/zMi98fv68ji/4nWDwnn/V04kFw46sGZI5w5wg3fwdcnjnbot0/19x3G+GKHMb7YEej8YeIIJ07ryw66/mmSl+vLDmN8scOoLzv4+sqGswbvd/D6MsmL4/sdvL4IR7uYOXoBLuzg9SXs4PWlxUv1ZYdRX3YY9eU/Ar9A/knev0ctrt9q4ejhmaP+njk7fzh6ks8vjp40+vuTdH2icIQzRy06c4QzZw1w9CSdPxSODkE32smvv6h28usnE0cVxLl6Z+DrE3by+Qvh6BgUjnZROFLMjzmizjWc1pedRn3ZadSXnby+hMyRgJmjF+DiTl5f4k6j/+/k9SX+Xvf31ssNo9/T/h5Gvw8OxYPm/4bPsYcLR9jF0XORnj9MHOHEaX9/jq9PHD3H1ycKR2MA4ahEZI5w4siwzNkAonrOmD98js5fCEdHaKyf5fUlcYQTp/XlWaO+PMvri3+W1xfhSLHwbIhs/XbDWX0Jz4bA5t8meXH+UDiqL88a9WXMEY3OvRLR8H/cX4ev8P7e4loBeTx6eNO/X+HnF0evoP6fyuPoFTq/6Iav0PGHG74cWfvPHOHMEU6cju9HL9P6IhyVCFe9jD4/Iff3l43xxcvo8xPy/OHLxvji5UDH98LRLtYvxUjnDxNHejr/Eq8vDWf1xb8U+PzhS0Z9ecmoLy/x+hJf4vWl4ay+xJd4fZnkxfXBb8rtooVh+CaLBw1HpSPn9zd5f8+P18eQfM0cTQFmjnDm7Pzh8E0+vzh8k/s3epOP70e7Ih9f7Ip8fLEr8vHFLqO+7Ap8fLHLuL5iV+Dj+128vow5W5+wK/D5w11G/38j8vryRuTzh2/EyNZXhjFHu+hceIPXl/AGry/C0T4IR/sgHNWX+AavL+493f/b/Xn4XkTxQDhyf9yfG47wmL/raH8fvhvp+UPhSPLZdyPDLj8e4cQjmgJMnA0ghu/S8YUbvmuML96JvL68E/n6hHcinz98h9eX6p3I1ye8w1+fcHSEVu8Y9eUdPr7w7/D64v8Y+fj+j/z1CUf7IBwJmDkS0MWGI9r8+2Ok6xPiH3l9EY72Ie4G7ufyNdzN4kHDWTwQjh7u4uzuiOKBcHb+MHGEm/rwoeP9/UOKnXDUwYUjhTJHFSRzpJBzow8jHd+PPqSfz+pGH0Q+vviA6Rld9UHk6xM+QPE89/cPIp2/qD+I6MGal88ffsDrS/0Bmx910f8p0voS/kTbf8Pp+sMW1/ds8+J2hKP6kjmqIM79KdL1Ce7PqL+n+DPcy6YHXJzdy+JB4qhDN+/s7F5H1w8N9zIsHGHnZvfy/p44ws7N7qF4zFkFGe6JvL/viXx8sYd+PJNwVCIyRzhxOr7/xPH1CZ/Qj4921SeRjy8+iXT+InEkYOboBTT99xOj/3/C64v/2PHx/cd0+VAMH/P6Ej/m9SV+zOtLi5cuQPuY15f4l3L/l+HJ7F9YPBCO+rsLs/sZdjFx1GMzR7MDmSPc3Jjd72gDn93P+7tw1KKH+/n4frjP8fnFfY6PL/Y5Pr7YF/n4fh/3r9rHxxeZo2PMVZ/R8jPm7ACtP+P1pf6M6ikc7WL0n9HpRZc4os75T+nwyYVP6fC/xYufr/8pry/hU15f4qe8vrhP6elR5wJyP8Wfyb9OWFof/HnQP2/3b/nrRmj90Gzg/X028POHsx5VjvTlc+94//fs9GLmCCfOxxfeGF/Ujq9fqB0/f1jz+jKqHZ8/rB0fX9S8vlQ1zzd1RfV0dUXbf+ZIwMTZAMJXjo/vK15ffEXbp/MjenrUhRHXM464nnHE60sc0ZcnHO2Di8afzx4afLTEebXEeX2IuV/iPCxxHg8xdwvlzX96pS/5ax/8XL58RW1E3/t/FKl8dfEbUb4rYRf/Z9R08oaL/0u/jNaNGP8xItrciuGfov7h5I0Y/ndEOI3vvh+KNN+K4Yeh5xBujv9/iSUsN53/18iwq/+Pfn3t2/UNgWFX/zIw7OpfBf2jNr8jMNyrfhMUVvyBgB6e+MMBPTw9/2Oh5xh/yuDPR0f5qwZ/E9mU+buO3qH+MPbYHeo9mqvf777o2B3G+amHnHeuLr3pk98Mov5R+7uvRI3b335V//7aOPmPcPKfvf/x7wOiqX7/Y2DYhX8KiI7rR/ieR7T5QQzf94Dm+vFDj2gan/6Ld+gXOOb/6vnv/+eeH183eH78/tLT96/+lafvX32HRzT7j96/9JPqAQ9g+ln1sKcHcPWYZ4e3q54Kjr1/1fOBvn/Vq8HwP/L3793I3r7Gf0TT+7cnIprev30R0V5X/5n+yX+kf/Kf+e2+GijW/uvn0v7rjSn/NW77X/Jb/C8LLv4D/cV/JLj4j/RP/iM65j/1tIFo//WTaf/1kyn/9a60/S/5fYdnh68T/9EBmv1Hh2/yH9HkP62PRf8Fl/1vv3/af/3+vcWPv0n/SxqK/0hS8R8pXO+LVPC6jrQ+1r1I9R77z/iRPF+5rxp+f8Pw+1T+/rb917jJ/4bf3zH8/p7h9/c9erD4jx6c+I9qnv9+avj9c6O/32D095b/mrb9L+2o+I9epPiPJE3+I5r8Z4JXjxl+P2X4/bzh96uG32+x/tLyv1wfxX/wIus9kdbHep+jgtc1G/GX/FffDCLV3x0Z6fun/ddY+a9rSWz7rx/di5P+l/wW/0sPHvv3HdSfst/f4/l97D/z+4ee+u1/xPO77v/6ybT/+sna/muq/C/1918Z+f0OOv4R/9F7MPaf5veHjfz+GM/v9VNGfn+ejx/b/mva9r+Y398LNL/XeX0aErze4yKrj43/dPxf07fP+V6k+rtBRPqP/dP+qztH5b/2O7pvovc3+3sqqq9p/C3+I7/jt1B/yn5/xyP9xX9ExX+W352/zPD7R7y/a//1k/mfG/n9Bs/70y8Nv39l5Pc7jPz+GyO/P2DMbzxs+P2Y4fdTRn9/3ujvrwZeH98K/P17L9IBevIfVcDkP83v+2h7d77m84++F6n+7gvI7yzgkcjv5G/bfy2wa/tf8vtUVF+z32dxv8V/5Hf8jkcPFv/Rg9P79wOe37X/+rm0//q5lP/6uZT/Gjvnb+D5XfxHLVryP3qRaf4PKexcfU/N56cf4Pld+6+fTPuvn0z5r3el7X+pPr4aeH5/y/A7+Y/eAlfvjnQCv97D/S76P3n81fz8hO9RvbX/miv/9caci1/jfk/6X/T71MD9PssjPOk/MtiN+z/z+3tGfv+B4fdlPL9r//WTtf3XtO2/pk2+Ev/Re1DfVNP8Xt9a0/xe31mz8U/jP5/feNA4f/GIMf55zMjvTxn5/fnA5zdeNfJ79h8pnPxHNPlP6+Mew+99ht+14/1lWaT6t/3XXPmv9Vf+lyYK4zcDwy6cRv124SzPsAvf8oiK/0x/Fy408vsPDL8vM/z+kdHff+rp+QvxHzla/8Lw+ybD71trmt/rO2ue3+8x/H7Q8PsRY37jcWP885SR35/n+b1+FfX3/P69ZfT394z+vjvy/r7HyO/7HD/+aj491/K/NBL4AufxqMD0n/S/6Lf4j9YQxNMMv8+i4/PkP3pww9fUTH/tv34u7b/G2n/9XG3/S35fVbP5TVdfU7P2Lv6jwzf7j2jynzXw+k7j/OQ9xvmLB43zk48Yfj9uzF8+zc9P1s8b+f1Vw++3DL/fM/wu+T/Z3/fy9THaf70vyn+9py4si1T/Sf+L/KjA9Bf/EXbxRO539h/h5D/z+1uerk8Ia/jxqf3XGws/MPr7ZUZ+/zH1W/xHjor/SH/xHymc/Gf5/VYjv99p+H2P0d8fNPr7I8b5i8eN+Y2njfmNFwLP768a+f0tI7+/Z/i92/B7Lz+/pvzXu9L2X9Mu/n8xUCz+I7/Ff3QSMfuP1hBk/xFO/lO/zzX8XmP4fSE/Ptv+a+pcuAz1p+y3+I/G51cZfl9j+P2Lmuajxn/a32818vudht/3GH4/aPT3R3h/F//Re1A/HXh+T/6jtyD5z/r7W0Z/1/7r/L6br4/R/utdafuvafMHeKj+Pcn/yG/xHwks/iMcj/MMZ/+R39l/hBu+qqbrC7X/emPaf70x5b/Gbf9L6wsvR/09rx/+sZHfr6qZ/tl/dPgm/6nfNxl+32r09zuN/H6P4feDht+PGH4/HiLt70+j/p7r59h/RJ2rXwt0gX7J/5bf7xn9fbfR3/dGfvzto/r3fE3jkfPLA9Vf/EcCi/8IZ/8RTv4zv0/zDLu4yvD7XKO/rzH8vpD1914Mlxh+X879lv6PBM/5H+mf/Ec0+c/z+02G37caft9pjH/uofmoN+l/Mb8/YuT3xw2/nw48v78QeH5/jZ+f9G8Zfr9n+L2b+93yv5Tf90f6/vma6i/+I/3FfySwc0dzv91xnuLGf+r36TVdX6z91xuL5xp+rzH8voiPz8V/NEfhLzf8/jH3O/mPsHP+mpqev/C/MM5f3GTMb95q+H2nMb9xD81Hk/2/3N8fMfL740Z+b/xn8xsv8PWF/jW+/si/zdcfaf/1rrT919S5sJdfH+T38+uDfM2oc2F5oPpn/5HA2X+Es/8IJ/+536cbfq/ix2fbf017MZxf0/G5+I/89pfUDIv/yNHsP6LZf7Y+4Rp+/kL7rzfmb+YniPxtNe9Pd9U8v9/LG5D4j16k+I8UTv4jmvyn+f0Fw+/X+Poj7b/eFeW/3pW2/6X8vjfy/L6fDn/Ef6S/+I/0d+5Lht9Hc78b/xmOJxl+n274vYr1915s+a8f3KwvPt/I7xcZfl9SMyz+ozmK5D/z+yrD72trfnzeaPh9Mz9B1PZfU9er7zLOT95rnL94yHO/HzH8ftzo708b+f0Fw+/XDL/f5usL/ft8/VHYbeT3vZHn9/00HuX5P0TFf6R/9p8JfDT32x3nKdb+6z1V/mu/Y9t/jV2M53G/xX80CekvMvy+xMjvl9d0/ZG/suL5/WrD72v5Ai/tv36utv+aul59W83z+13G+Yt7jfMXyX90gLr6Uc/9ftzw+2mjv79g5PfX+PrCtv+aOhfej7SBe/l8bZTf9/Lrg3z6fEv0DiX/EW34lKf6N/5TgY/mfrvjmd+96E4y/D7d8Ptsw+/zuN+S/9EkpPR/ZHDyHxnsnF9f0fUJ/sqK9/erDb+vNfr7jUZ+v9nw+zbD77uM8xf3gv4ufo/9Rwdo8p9eX/WEMb/xtOH3C0Z/f83o729H2sC9+I/yu/iP8vteR9cfhf2Onp8M+u1RT2b434tf8vz6v2MMv49Hfufrf05Cfmd/T0f5PX0bzubj83Ce4ff53O/sP8LOrzP8Xm/4faXR3682/L7W8PtG1t97rr7ZyO+3GX7fZawvvLfc3+UHY//Z+OdRvr5Q+6+fyz9jrM98IdIJOP9aZAP03qT/xf4u/qP8vtvR8U/yH9HkP6uPRf8nz79NeX79r/JffxOPoX67eDz1u53/NW72/4ya6S/+I7/Ff4TFf2SwC2srfv3AuoquP/LrDb+vNPy+2sjv1xr5/UY6vznpf7m/32bk97t4fvf38vzuH9L9Xfn9qNHfnzDmN58xzl+8QP124TXD77cNv9/n1w/4jyLP73sdff/Cfu534G9f4z+//vfLht/HGH4fz/2OJ9cMu3hGzbD4j/wW/xHO/iODs/9sffG6iq8/Ws/ze7jS8Ptq2t979bWG3zcaft/M5zfFf+Sov6uY3+UHY/9pfn/I8PtRw+8njP7+TOD9/cUQWQCS/o8cFf+Ro9l/9Ba48FHk/X2v0d/3U/1d5PHIxalA9W/7rxVU/pf8Pt5zv0/mfov/aBJS/Ed+Z/8RduECw++1vL+HdYbf63l/V/7rp+q1/de41+r/pf2U/I8clfE/MtjfxvP72H+W3+818vtDRn5/1PD7CcPvlv8au96k/6WXIf4jR8V/5GjyH9HkP/V7r9Hf9xv9nZdPF1d4qn/L/5Lfxxh+n2D4fTL3W/xHk5DZf+S3C6srfv3ABYbfaw2/1xl+r6f9vdfO/3pPeq3+Xzw+rzXWJ2yqaH73t1T8/MVtRn+/y8jv9xp+P2T090cDPYHe9l9T15v0v5jfxX/wIv3raP1Rb3L+Dymc5v9Zfv+IXx8U/mx8PvZ+o7/z8tn2vzQS+DL3W+b/EBb/kcDiP/Jb/EeTkPEcw+/VFV1fHC4w8vtaw+91ht/rDb+v5Pndb6y439dVNL+L/8hRf0vN/b695n7fzT9gxt9nnL94yBifP8r7e3jCyO/PBJ7fX+TrC8V/9B4k/xFN/tP+/hG/fkD7r59L+6+fK/Llr86t8FR/8R8p6I41/D7B8Ptkw+8zakevHzjH8Ht1RdcXhwuM/r6Wj8+V//qpnL+i4n5vqHh+32j4fZ3h96aKn7+4peb5/XbD77uN+c37jPnN33qe3x81+vsTRn5/Bl0flP1+ka8vTP4j6lx42/D7faO/f2T09z/z6weU/3pX2v6XPiBqnv7LN8B/+Ub8RwKL/wi7eGbFrx84h/sdV1d0fbH2X29M+a/fwZ6/tGL6t/wv+r3B6O8bK6a/+I8Mdn5Tqb/L98l/2t9vN/y+2/D7Ps/ze8t/TV3P/7vnfj9h5PdnjPz+YqDzG+F1vr4w/IGvP9L+6+fS/utd0f7rXWn7r2nzAqn+k/m/LPAR3G/xH+HsPxLYxVMMv8+s+PUD53C/42p+fMYLjPx+seH3pRXDk/6X/d5g9PeNFdM/+48O3+w/W59wi9Hfbzfy+93G+Yv7aH/vtfwv5XfxH/n9hJHfnzHy+4uB5/fX+fUDJf9b+fN9w++PDL//zK8faPlf/AAZqr+L04bfRxh/IexY4y8InVBzv08x/D6z4tcPnGP4vZr7Hb5b8fH5xYbfl1YMi//IYPEfKSr+I+z8dYbfmwy/bzH8vt3o73fz/B7uY/291+r/xf4u/qP8/ju+vjD5jwx2LrwY6PgnvG74/Qd+/YD2Xz+X8l/vSdv/Un7/Cy2f4j96h8R/JLD4j7D4j7BzX+fj88Z/6veZFb9+4BzD729XdHze8r+0vvBi7ne41PD7CiO/bzD83sjXHzX+0/VHm4z8fosx/rndmP+428jv9xl+/xb19+y3+I/y+++M85PPGPn9xUDHP9p//Vzaf/1c8b/49QNt/zV1vcn5v2J+/wu/PijyP8/i3LTh9xGG33/L87v2X+N4iuH3mfz4i/9g+P1tnt8n/S/6fXHFsPiPFHXhCt7fwwbD741Gf7+O+x02GfObtxh+327k97tRfs9+32fk99+i/p79/nejv/+On58M/5efnwwvRjpAD69H2sDDHyJt4PG/+Pri+JGjDVz6P3oLxH8keOR/vqGr/+gvREv/R3fI+R/dwTl3Mjj/pdf/6DsIP7vqsTvE86ri382Wm/H8qvz3u4VfVJX/8LbwSypH/wD45Qb/scGvqtCfH0/8mtb8nr6ji78oc7kRbzL4rTX9A+zxzhKXr64XfiP+FbELDwgv/xX48HBAf8A9Hf+Pad7+Gp/S8//tr/F5NX+gvsZX2ut71F+378U3J8//6430XHxXzg+WNxI/lPUB4F6fyPo/cK/PnEM4/QEDSps/8Nkv/zd9GfP0v758ETzoD1Y61x8MwF0G/cH0mMtdNM18cgtqIw3PuLUF4dPOrRy0H97aQub90j2aG4nrXRxM7t9KvX+TT9DwEpb7TDs3Lbi99XSPlWOu3wB5eOZlLO//NHr+8W/JuRXo9QtvP7/aQMPR7gnvo90bHz8r+mj3mv/23BT67Q4mOdi9QcMRbm703BT63Yy/LHPLS7952cBgzNHW+4P+crccbV14n21AeB8YMuWWFQ/MSY623vw3cbT1QX8F8l9+/w65LcdfHz3/QPxBv0DhA3SEJD/7A3SPMW/5pd+q6bY/egtjXsbC237oe0y3/dC48XdqgDaQ3r+pSdTCmffBBpp/K10+PvUG8q2+S8en3oB86bvm+NIbkC+DzNEGxn4v67MNONcbsA30XG/ANtD8BUq2gTFHGxg0fo8blPqx3Gz8dn22gWW5AaENLJcDvPTgsd/SQMr3Wi4HONjA1GSD0P/6g8GUHOBgA1PSAMAGVjhQGKR/OFBapH9Jfy5W727+l8Ts5H/2u6xuyX/gtxZHnmAg/iODm9e/AvnZ9r98jzFHGxC/kZviN8LJ7+V9tgHtv34rXOovSEDtv95A8h/dQ/uv7yX+ow0Mkv/Mz2USUMEGlkkABRtY1g6gegPJb6RXf4D8ly/Zb7SB/gD5L1+mpIGBDawo+i83kf/ybbG/T943+48SkNHfxX+UQMVvVCGEF1ur7u+G/+V7TPb30gay38XeLBz1Zt3fS/4U/Zdbur/rDWj/u/R3vQHlv94R3d/1BsZ+sw30XI/6qf3XG1iW/UcbaPtf7u9sA+X+LvdA/gtG/V3ugfyXm33U3+Ve0t/RBrL/aAMD7f/Ayvcq4aP+zvyfHFB06++t4571d/0cPN9P9ncj36MS0CnfF+O5+H2I8r3cmm++l1uLm+/1Pcr5fvLmvPK93Oyj/n645HvU3yfzPfA/f1nh0OzAoJ3v9Z2K4/vi/Bibv8r+oykslu/l+adR90b5Xvu90HzP8vfhne/Hfi9j7b9Lvkd+lvv7nPK97u8o3yM7lmi+l5s830t/N/J9O8DqewH/F5Lvtd9gel3398FSzfeoe7fm78AIoJzv5Zb2X385VPmezd91y/fypVu+7w9Q+++Y79EGDlC+l5uHRb5PDQxtYIU1vrf6u+X/3PK9NX+nRwDZfzTDb+V73d8Par4v9nd1AgDle7l1cPO93k453+v5u/nmezR/1zXfs/7eLd+j/t4137P5O5Tv+13m71S+7w/QBsR/tPv9ad3fS+P74gz/fPN9ub8fyHzfRzP8pXzf3tRc832n+bsDle9LNcTK98nv+eZ76e+Lk+9LRWiB+b7xe375Xvq79l+9SJTvW/39kOZ7aWClZ9f+6xgwl3xv9Xc9AqD5fl7zd4b/Vn9fKvlezd8d6nzfY/H8QOT71s0u5+fZBv5/zPeTN6f1Aa7uOa3z/Vz9n+/5+XZ/73p+XleIOeZ7dH6+a74vzd/NLd/rOjfXfK+/TPpfqiHs/Pxi5Xsm+OGe75cnv5FenfI98xPle93f55vvp6WBldt/8r84w1/O99rvheZ7Nn8nfs8137f9Rvlezm92zfddz8+jfN9l/q5bvkf9vWu+Z/N3KN/3u56fVxuY2/n5rvm+1d/7LD8cHvke+bkY+V4d4GoD0wcq3+v+fkDy/djvA5Pvi/1dL89F+R6dn1+sfK/n75CfKN/r/j6XfN++aa2/PVD5nvf3bvkezd91zffs/DzK9/2u5+dVvkeTLCjfy5dpPUGt/k136u9oBc9i53sdRXS+17t6WOX7YhHqcn5+ofkeCF5af4vyPaohSy3f9+d4fn6++V7398XK9/peXfM9Epz633yZ7np+vpwQus7fWfl+vufnxf8+qCFd1t/+leT7bufnQb7vuv52ofle7+fhke+Rnwc334P5O+C/9HcdYNW9VqL+Puk3GgGA9bf6/Dw6Od9x/u5Q5Xvxe4H5fhlqvnM5P9813891/S3K93O5vo7mh4Od7zuen0f5vj/f6+sGc833Vn9frHyP/M9fOvk/z3zfdf5uMfP9XNffytsDSsBByfcons/3+rpDne91f2d+dlt/O998L34vVr7ven2dzvfIzwOV7+XLWLDl6MHJf53vtd8HMt+3+vtc8n2xv+vZufnme31+fq75Xs/foe7dNd8fLtfXzTPfrxwsMN8zPxeS73N/75jv0fxd2X+5eaDz/Urkv3zAxJzyfcnvg5Xv+edndMv3oL+j7t11/e1C8/0Bvb5uaeX7bufnF5rvS9fXLTTfz/f6ugOd78cHMNpAv3gBqfwT/9EM/wHJ93M9P7/Qz8+YQt17Lutv0QaMfN+lvy/q52foDXRaf8v8PMzy/UH6/IyF5vu5nJ9fSL7vp4CLLgAaCzKNLr/j+X7S70OR78XvUr5H629Rvu93vb4O5Pulfn0d2sBC8v3crq9DG1hIvkfn58v5Hp2fL/s/p/W3Szvf6wnq9r+Vc8n3eoaf53vxe1Hy/YKur0MbmM/62675Hs3fLVa+l/m7+eZ76e9t/+d1fn6u+b7Y3+eV7+d3fd3ifn7GIcn3cpPn+9wA2fW/K9H1dZ3yffIbbYDne/F7rvm+NH+30Hw/38/PWGi+73R+nk3vLTDfd1x/izbQ9fo6FM/n9vkZi53vF+v6uoXm+ynm50Lz/Up9gKt79bvM33XL96C/d833qL9Poe59KNff/ne+L+f7pXh93V9bvu+35++sfC8NrLyBfunz463z81IexH9k8GR/75bvF7r+dk75vtjfVYmZa76n19fpDXQ6P9/rL/DzMxaa7+f7+dc63x+sz8841Pm+P7f1t4uT79E50JXFA3yyAS52vtd+T6HefKA+P2O+628Xmu+LMeUA5/ux34uV7xf2+Rnl+jTfz8dbYp+fsbTyfbu/G/l+soHpX7L4jy6/65rvl/L624VeXze/fD85f7dU8v1f6ednHMh8b31+hvR3tPsd8z3aAM/3qr8Xq3jxAG8JsAJdfrdY+f5QfX5G1/4+33wv5+fZx2ct6PPxuq6/HSxSvv/r+nw86e/a//l8fsZC8z3y82Dkex1g1T0WI993Oz/fNd8vdP3tIl9ft6y/wM/PoPlhLvl+QZ+fATbw35+Pt9j5vn2vrvkeCY7yfb9Lfzf8TxNcS/X6umJ/1ycAUL5H5+cPdb4vn59Hgs9p/e1c8/3h8vkZLN93/fyM+Xw+nurvc833ur+DSZau+R79s/J9v7wARf6J/9b5+YVeX7ck8n2phhwu+R58PO4CPz+jtP62W76XL1Pa/7men18S+Z59Pt7ByvflfwvN9/32B8Dp3e8P0stXf/hP/q/pL1MatlYALmv8LkI5PpcjOJC/n4y2nvLpcrBncvwuA4+V43cZevLMewz3p8Z+T26ifY+ppr8XHyv51qFNy/GPNi3HP9o3yb99/bJVf1ypd0z1x5XFHZN8PPYbYfkDzH2E5QKSIpMFpghnv1YgPGhNQBdx6wSzxmqBSQlLA0NY/kAbwjJBjXD7AlGN++0/0KRry2Ag/R2cwEkNsMfw4P8BHFT0qg==",
30882
+ 4: "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",
30883
+ 5: "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",
30884
+ 7: "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",
30885
+ 8: "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"
30886
+ };
30887
+
30877
30888
  // src/emf-gdi-color-adjust.ts
30878
30889
  var CA_NEGATIVE = 1;
30879
30890
  var CA_LOG_FILTER = 2;
30880
30891
  var COLOR_ADJUSTMENT_SIZE = 24;
30892
+ var DEFAULT_COLOR_ADJUSTMENT = {
30893
+ flags: 0,
30894
+ illuminant: 0,
30895
+ redGamma: 1e4,
30896
+ greenGamma: 1e4,
30897
+ blueGamma: 1e4,
30898
+ referenceBlack: 0,
30899
+ referenceWhite: 1e4,
30900
+ contrast: 0,
30901
+ brightness: 0,
30902
+ colorfulness: 0,
30903
+ redGreenTint: 0
30904
+ };
30905
+ var illuminantCubes = /* @__PURE__ */ new Map();
30906
+ function illuminantCube(index) {
30907
+ let cube = illuminantCubes.get(index);
30908
+ if (cube === void 0) {
30909
+ const encoded = ILLUMINANT_CUBE_DATA[index];
30910
+ cube = null;
30911
+ if (encoded) {
30912
+ const bytes = Uint8Array.from(atob(encoded), (c) => c.charCodeAt(0));
30913
+ const planes = inflateZlibSync(bytes);
30914
+ cube = new Uint8Array(32768 * 3);
30915
+ for (let c = 0; c < 3; c++) {
30916
+ for (let i = 0; i < 32768; i++) {
30917
+ const prev = i & 31 ? cube[(i - 1) * 3 + c] : 0;
30918
+ cube[i * 3 + c] = prev + planes[c * 32768 + i] & 255;
30919
+ }
30920
+ }
30921
+ }
30922
+ illuminantCubes.set(index, cube);
30923
+ }
30924
+ return cube;
30925
+ }
30926
+ function hasIlluminant(ca) {
30927
+ return illuminantCube(ca.illuminant) !== null;
30928
+ }
30929
+ var PALETTE = Array.from({ length: 32 }, (_, n) => Math.round(n * 255 / 31));
30930
+ function paletteIndex(v) {
30931
+ const x = clamp012(v) * 255;
30932
+ let n = Math.min(30, Math.floor(x * 31 / 255));
30933
+ while (n < 30 && x >= PALETTE[n + 1]) n++;
30934
+ while (n > 0 && x < PALETTE[n]) n--;
30935
+ return n + Math.min(1, Math.max(0, (x - PALETTE[n]) / (PALETTE[n + 1] - PALETTE[n])));
30936
+ }
30937
+ function lookupIlluminant(cube, r, g, b) {
30938
+ const fr = paletteIndex(r);
30939
+ const fg = paletteIndex(g);
30940
+ const fb = paletteIndex(b);
30941
+ const r0 = Math.min(30, Math.floor(fr));
30942
+ const g0 = Math.min(30, Math.floor(fg));
30943
+ const b0 = Math.min(30, Math.floor(fb));
30944
+ const tr = fr - r0;
30945
+ const tg = fg - g0;
30946
+ const tb = fb - b0;
30947
+ const result = [0, 0, 0];
30948
+ for (let c = 0; c < 3; c++) {
30949
+ let acc = 0;
30950
+ for (let corner = 0; corner < 8; corner++) {
30951
+ const dr = corner & 1;
30952
+ const dg = corner >> 1 & 1;
30953
+ const db = corner >> 2 & 1;
30954
+ const weight = (dr ? tr : 1 - tr) * (dg ? tg : 1 - tg) * (db ? tb : 1 - tb);
30955
+ if (weight !== 0) {
30956
+ acc += weight * cube[(((r0 + dr) * 32 + g0 + dg) * 32 + b0 + db) * 3 + c];
30957
+ }
30958
+ }
30959
+ result[c] = acc / 255;
30960
+ }
30961
+ return result;
30962
+ }
30881
30963
  function isChannelOnlyColorAdjustment(ca) {
30882
- return !!ca && (ca.flags & ~CA_LOG_FILTER) === 0 && (ca.illuminant === 0 || ca.illuminant === 6) && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30964
+ return !!ca && !hasIlluminant(ca) && ca.colorfulness === 0 && ca.redGreenTint === 0;
30883
30965
  }
30884
30966
  function readColorAdjustment(view, off) {
30885
30967
  const ca = {
@@ -30900,19 +30982,19 @@ function readColorAdjustment(view, off) {
30900
30982
  return valid ? ca : null;
30901
30983
  }
30902
30984
  function isIdentityColorAdjustment(ca) {
30903
- return !ca || ca.flags === 0 && ca.redGamma === 1e4 && ca.greenGamma === 1e4 && ca.blueGamma === 1e4 && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30985
+ return !ca || ca.flags === 0 && !hasIlluminant(ca) && ca.redGamma === 1e4 && ca.greenGamma === 1e4 && ca.blueGamma === 1e4 && ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0;
30904
30986
  }
30905
- var CONTRAST_GAIN = 1.88;
30906
- var BRIGHTNESS_GAIN = 78.5;
30907
- var COLORFULNESS_GAIN = 1.335;
30908
- var TINT_RADIANS = -1.135;
30987
+ var CONTRAST_RATE = 0.0148885;
30988
+ var BRIGHTNESS_STEP = 0.95625;
30989
+ var COLORFULNESS_SCALE = 1 / 100;
30990
+ var TINT_RADIANS = -Math.PI / 3;
30909
30991
  var RGB_TO_XYZ = [
30910
30992
  [0.4124, 0.3576, 0.1805],
30911
30993
  [0.2126, 0.7152, 0.0722],
30912
30994
  [0.0193, 0.1192, 0.9505]
30913
30995
  ];
30914
30996
  var XYZ_TO_RGB = invert3(RGB_TO_XYZ);
30915
- var WHITE = RGB_TO_XYZ.map((row) => row[0] + row[1] + row[2]);
30997
+ var WHITE = RGB_TO_XYZ.map((row2) => row2[0] + row2[1] + row2[2]);
30916
30998
  var WHITE_D = WHITE[0] + 15 * WHITE[1] + 3 * WHITE[2];
30917
30999
  var WHITE_U = 4 * WHITE[0] / WHITE_D;
30918
31000
  var WHITE_V = 9 * WHITE[1] / WHITE_D;
@@ -30928,76 +31010,84 @@ function invert3(m) {
30928
31010
  [C / det, (b * g - a * h) / det, (a * e - b * d) / det]
30929
31011
  ];
30930
31012
  }
30931
- function lightness(t) {
30932
- return t > 8856e-6 ? 116 * Math.cbrt(t) - 16 : 903.3 * t;
30933
- }
30934
- function fromLightness(l) {
30935
- return l > 8 ? ((l + 16) / 116) ** 3 : l / 903.3;
30936
- }
30937
31013
  var clamp012 = (v) => v < 0 ? 0 : v > 1 ? 1 : v;
30938
- function colorAdjustmentMapper(ca) {
30939
- if (ca.referenceBlack === 0 && ca.referenceWhite === 1e4 && ca.contrast === 0 && ca.brightness === 0 && ca.colorfulness === 0 && ca.redGreenTint === 0) {
30940
- const tables = [ca.redGamma, ca.greenGamma, ca.blueGamma].map((gamma) => {
30941
- const table = new Uint8Array(256);
30942
- for (let i = 0; i < 256; i++) {
30943
- const input = (ca.flags & CA_NEGATIVE) !== 0 ? 255 - i : i;
30944
- let value = (input / 255) ** (gamma / 1e4);
30945
- if ((ca.flags & CA_LOG_FILTER) !== 0) value = Math.log2(1 + 7 * value) / 3;
30946
- table[i] = Math.round(value * 255);
30947
- }
30948
- return table;
30949
- });
30950
- return (rgb2) => tables[0][rgb2 >> 16 & 255] << 16 | tables[1][rgb2 >> 8 & 255] << 8 | tables[2][rgb2 & 255];
31014
+ var clamp255 = (v) => v < 0 ? 0 : v > 255 ? 255 : v;
31015
+ function adjustChroma(r, g, b, scale, angle) {
31016
+ const x = RGB_TO_XYZ[0][0] * r + RGB_TO_XYZ[0][1] * g + RGB_TO_XYZ[0][2] * b;
31017
+ const y = RGB_TO_XYZ[1][0] * r + RGB_TO_XYZ[1][1] * g + RGB_TO_XYZ[1][2] * b;
31018
+ const z = RGB_TO_XYZ[2][0] * r + RGB_TO_XYZ[2][1] * g + RGB_TO_XYZ[2][2] * b;
31019
+ const d = x + 15 * y + 3 * z;
31020
+ if (d <= 1e-9 || y <= 1e-9) {
31021
+ return [r, g, b];
31022
+ }
31023
+ const du = 4 * x / d - WHITE_U;
31024
+ const dv = 9 * y / d - WHITE_V;
31025
+ const cos = Math.cos(angle) * scale;
31026
+ const sin = Math.sin(angle) * scale;
31027
+ const u = WHITE_U + du * cos - dv * sin;
31028
+ const v = Math.max(1e-6, WHITE_V + du * sin + dv * cos);
31029
+ const x2 = y * 9 * u / (4 * v);
31030
+ const z2 = y * (12 - 3 * u - 20 * v) / (4 * v);
31031
+ const out = [
31032
+ XYZ_TO_RGB[0][0] * x2 + XYZ_TO_RGB[0][1] * y + XYZ_TO_RGB[0][2] * z2,
31033
+ XYZ_TO_RGB[1][0] * x2 + XYZ_TO_RGB[1][1] * y + XYZ_TO_RGB[1][2] * z2,
31034
+ XYZ_TO_RGB[2][0] * x2 + XYZ_TO_RGB[2][1] * y + XYZ_TO_RGB[2][2] * z2
31035
+ ];
31036
+ const lo = Math.min(0, out[0], out[1], out[2]);
31037
+ const hi = Math.max(255, out[0], out[1], out[2]);
31038
+ if (lo < 0 || hi > 255) {
31039
+ const k = 255 / (hi - lo);
31040
+ return [(out[0] - lo) * k, (out[1] - lo) * k, (out[2] - lo) * k];
30951
31041
  }
30952
- const black = ca.referenceBlack / 1e4;
30953
- const span = Math.max(1e-6, ca.referenceWhite / 1e4 - black);
31042
+ return out;
31043
+ }
31044
+ function colorAdjustmentMapper(ca) {
31045
+ const illuminant = illuminantCube(ca.illuminant);
30954
31046
  const gammas = [ca.redGamma / 1e4, ca.greenGamma / 1e4, ca.blueGamma / 1e4];
30955
- const negative = (ca.flags & CA_NEGATIVE) !== 0;
30956
- const linear = gammas.map((gamma) => {
30957
- const table = new Float64Array(256);
30958
- for (let i = 0; i < 256; i++) {
30959
- const v = negative ? 1 - i / 255 : i / 255;
30960
- table[i] = clamp012((v - black) / span) ** gamma;
30961
- }
30962
- return table;
30963
- });
30964
- const chroma = ca.colorfulness < 0 ? 1 + ca.colorfulness / 100 : 1 + COLORFULNESS_GAIN * ca.colorfulness / 100;
31047
+ const black = ca.referenceBlack / 1e4 * 255;
31048
+ const span = Math.max(1e-6, ca.referenceWhite / 1e4 * 255 - black);
31049
+ const gain = Math.exp(CONTRAST_RATE * ca.contrast);
31050
+ const lift = BRIGHTNESS_STEP * ca.brightness;
31051
+ const chroma = ca.colorfulness !== 0 || ca.redGreenTint !== 0;
31052
+ const scale = 1 + COLORFULNESS_SCALE * ca.colorfulness;
30965
31053
  const angle = TINT_RADIANS * ca.redGreenTint / 100;
30966
- const cos = Math.cos(angle) * chroma;
30967
- const sin = Math.sin(angle) * chroma;
30968
- const slope = Math.exp(CONTRAST_GAIN * ca.contrast / 100);
30969
- const offset = 50 - 50 * slope + BRIGHTNESS_GAIN * ca.brightness / 100;
30970
31054
  const log = (ca.flags & CA_LOG_FILTER) !== 0;
30971
- const colour = ca.colorfulness !== 0 || ca.redGreenTint !== 0;
30972
- const out = (v, c) => {
30973
- v = clamp012(fromLightness(slope * lightness(clamp012(v)) + offset)) ** (1 / gammas[c]);
31055
+ const negative = (ca.flags & CA_NEGATIVE) !== 0;
31056
+ const curve = (value, channel) => {
31057
+ let v = 255 * (clamp255(value) / 255) ** gammas[channel];
31058
+ v = (v - black) / span * 255;
31059
+ v = v * gain + lift;
30974
31060
  if (log) {
30975
- v = Math.log2(1 + 7 * v) / 3;
31061
+ v = 255 * Math.log2(1 + 7 * clamp255(v) / 255) / 3;
31062
+ }
31063
+ if (negative) {
31064
+ v = 255 - clamp255(v);
30976
31065
  }
30977
- return Math.round(v * 255);
31066
+ return Math.round(clamp255(v));
30978
31067
  };
31068
+ if (!illuminant && !chroma) {
31069
+ const tables = [0, 1, 2].map((channel) => Uint8Array.from({ length: 256 }, (_, i) => curve(i, channel)));
31070
+ return (rgb2) => tables[0][rgb2 >> 16 & 255] << 16 | tables[1][rgb2 >> 8 & 255] << 8 | tables[2][rgb2 & 255];
31071
+ }
30979
31072
  return (rgb2) => {
30980
- let r = linear[0][rgb2 >> 16 & 255];
30981
- let g = linear[1][rgb2 >> 8 & 255];
30982
- let b = linear[2][rgb2 & 255];
30983
- if (colour) {
30984
- const x = RGB_TO_XYZ[0][0] * r + RGB_TO_XYZ[0][1] * g + RGB_TO_XYZ[0][2] * b;
30985
- const y = RGB_TO_XYZ[1][0] * r + RGB_TO_XYZ[1][1] * g + RGB_TO_XYZ[1][2] * b;
30986
- const z = RGB_TO_XYZ[2][0] * r + RGB_TO_XYZ[2][1] * g + RGB_TO_XYZ[2][2] * b;
30987
- const d = x + 15 * y + 3 * z;
30988
- if (d > 1e-12 && y > 1e-12) {
30989
- const du = 4 * x / d - WHITE_U;
30990
- const dv = 9 * y / d - WHITE_V;
30991
- const u = WHITE_U + du * cos - dv * sin;
30992
- const v = Math.max(1e-6, WHITE_V + du * sin + dv * cos);
30993
- const x2 = y * 9 * u / (4 * v);
30994
- const z2 = y * (12 - 3 * u - 20 * v) / (4 * v);
30995
- r = XYZ_TO_RGB[0][0] * x2 + XYZ_TO_RGB[0][1] * y + XYZ_TO_RGB[0][2] * z2;
30996
- g = XYZ_TO_RGB[1][0] * x2 + XYZ_TO_RGB[1][1] * y + XYZ_TO_RGB[1][2] * z2;
30997
- b = XYZ_TO_RGB[2][0] * x2 + XYZ_TO_RGB[2][1] * y + XYZ_TO_RGB[2][2] * z2;
30998
- }
30999
- }
31000
- return out(r, 0) << 16 | out(g, 1) << 8 | out(b, 2);
31073
+ let c = [rgb2 >> 16 & 255, rgb2 >> 8 & 255, rgb2 & 255];
31074
+ if (illuminant) {
31075
+ const mapped = lookupIlluminant(illuminant, c[0] / 255, c[1] / 255, c[2] / 255);
31076
+ c = [mapped[0] * 255, mapped[1] * 255, mapped[2] * 255];
31077
+ }
31078
+ if (chroma) {
31079
+ c = adjustChroma(clamp255(c[0]), clamp255(c[1]), clamp255(c[2]), scale, angle);
31080
+ }
31081
+ return curve(c[0], 0) << 16 | curve(c[1], 1) << 8 | curve(c[2], 2);
31082
+ };
31083
+ }
31084
+ function splitColorAdjustment(ca) {
31085
+ const neutral = DEFAULT_COLOR_ADJUSTMENT;
31086
+ const palette = { ...neutral, illuminant: ca.illuminant, colorfulness: ca.colorfulness, redGreenTint: ca.redGreenTint };
31087
+ const curves = { ...ca, illuminant: 0, colorfulness: 0, redGreenTint: 0 };
31088
+ return {
31089
+ palette: isIdentityColorAdjustment(palette) ? void 0 : palette,
31090
+ curves: isIdentityColorAdjustment(curves) ? void 0 : curves
31001
31091
  };
31002
31092
  }
31003
31093
  function colorAdjustRgb(rgbs, ca) {
@@ -31042,6 +31132,52 @@ function applyColorAdjustment(pixels, ca) {
31042
31132
  }
31043
31133
  }
31044
31134
 
31135
+ // src/emf-gdi-halftone-dither.ts
31136
+ var THRESHOLDS = [
31137
+ [238, 110, 198, 70, 229, 102, 204, 76, 236, 108, 195, 69, 228, 100, 205, 78],
31138
+ [46, 174, 7, 134, 39, 166, 12, 140, 45, 171, 5, 132, 36, 164, 15, 142],
31139
+ [209, 83, 249, 122, 218, 90, 239, 112, 208, 80, 247, 120, 215, 88, 242, 114],
31140
+ [18, 146, 59, 185, 26, 154, 49, 176, 16, 144, 56, 184, 25, 152, 50, 178],
31141
+ [226, 98, 202, 74, 233, 107, 192, 64, 224, 96, 200, 73, 232, 104, 194, 66],
31142
+ [35, 162, 11, 138, 42, 170, 1, 128, 32, 160, 8, 136, 40, 168, 2, 130],
31143
+ [219, 91, 243, 115, 211, 83, 253, 125, 221, 93, 245, 117, 212, 85, 250, 123],
31144
+ [28, 154, 52, 178, 19, 147, 61, 188, 29, 157, 53, 181, 22, 149, 59, 187],
31145
+ [235, 107, 195, 67, 226, 100, 205, 77, 236, 109, 197, 69, 229, 101, 202, 76],
31146
+ [43, 171, 4, 131, 35, 163, 14, 141, 45, 173, 5, 133, 38, 164, 11, 139],
31147
+ [207, 79, 246, 119, 215, 87, 240, 113, 209, 81, 249, 121, 216, 90, 239, 111],
31148
+ [15, 143, 56, 183, 23, 151, 49, 177, 18, 145, 57, 185, 25, 153, 47, 175],
31149
+ [222, 95, 198, 71, 231, 103, 193, 66, 225, 97, 201, 73, 232, 105, 191, 63],
31150
+ [32, 159, 8, 135, 39, 167, 1, 129, 33, 161, 9, 137, 42, 169, 1, 127],
31151
+ [222, 94, 246, 118, 214, 86, 252, 124, 219, 92, 243, 116, 212, 84, 253, 126],
31152
+ [30, 158, 54, 181, 22, 150, 60, 188, 28, 156, 52, 180, 21, 147, 62, 190]
31153
+ ];
31154
+ var PERIOD_X = 66;
31155
+ var PERIOD_Y = 65;
31156
+ function column(j) {
31157
+ return j < 63 ? j % 16 : j <= 64 ? 14 : 15;
31158
+ }
31159
+ function row(i) {
31160
+ return i < 63 ? i % 16 : i === 63 ? 14 : 15;
31161
+ }
31162
+ var mod2 = (a, m) => (a % m + m) % m;
31163
+ function ditherStartX(destLeft, brushOrgX) {
31164
+ const k = mod2(destLeft - brushOrgX - 2, 65);
31165
+ return k < 63 ? k : k + 1;
31166
+ }
31167
+ function ditherStartY(destTop, brushOrgY) {
31168
+ return mod2(destTop - brushOrgY - 2, PERIOD_Y);
31169
+ }
31170
+ function ditherThreshold(startX, startY, dx, dy) {
31171
+ return THRESHOLDS[row(mod2(startY + dy, PERIOD_Y))][column(mod2(startX + dx, PERIOD_X))];
31172
+ }
31173
+ function paletteLevel(n) {
31174
+ return Math.round(n * 255 / 31);
31175
+ }
31176
+ function ditherQuantize(v, threshold) {
31177
+ const n = Math.floor((31 * v + threshold) / 255);
31178
+ return paletteLevel(n < 0 ? 0 : n > 31 ? 31 : n);
31179
+ }
31180
+
31045
31181
  // src/emf-gdi-stretch.ts
31046
31182
  var BLACKONWHITE = 1;
31047
31183
  var WHITEONBLACK = 2;
@@ -31176,6 +31312,19 @@ function softTent(d) {
31176
31312
  softTentCache.set(key, value);
31177
31313
  return value;
31178
31314
  }
31315
+ function ditherPixels(px, w, h, dither, flipX, flipY, phaseX, phaseY) {
31316
+ for (let y = 0; y < h; y++) {
31317
+ const yy = phaseY ? phaseY[y] : flipY ? h - 1 - y : y;
31318
+ for (let x = 0; x < w; x++) {
31319
+ const xx = phaseX ? phaseX[x] : x;
31320
+ const threshold = ditherThreshold(dither.startX, dither.startY, xx, yy);
31321
+ const o = (y * w + x) * 3;
31322
+ px[o] = ditherQuantize(px[o], threshold);
31323
+ px[o + 1] = ditherQuantize(px[o + 1], threshold);
31324
+ px[o + 2] = ditherQuantize(px[o + 2], threshold);
31325
+ }
31326
+ }
31327
+ }
31179
31328
  var SPECKLE_OVERSHOOT = 4;
31180
31329
  function halftoneDespeckle(px, w, h) {
31181
31330
  const src = px.slice();
@@ -31235,7 +31384,7 @@ function halftoneSharpen(px, w, h) {
31235
31384
  }
31236
31385
  }
31237
31386
  }
31238
- function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSampling = false, directDib = false) {
31387
+ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSampling = false, directDib = false, dither, curves) {
31239
31388
  const W = Math.max(0, Math.round(Math.abs(dw)));
31240
31389
  const H = Math.max(0, Math.round(Math.abs(dh)));
31241
31390
  const SW = Math.round(Math.abs(sw));
@@ -31266,12 +31415,18 @@ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSamplin
31266
31415
  const enlarging = W >= SW && H >= SH && (W > SW || H > SH);
31267
31416
  const reducing = W < SW && H < SH;
31268
31417
  const mixed = W > SW && H < SH || W < SW && H > SH;
31269
- const nearestMixed = mixed && (!adjust || adjustAfterSampling) && (W < SW && W * 2 > SW || H < SH && H * 2 > SH);
31270
- const nativeMixed = mixed && (!adjust || adjustAfterSampling) && Math.min(SW, W) >= 2 && Math.min(SH, H) >= 2 && (W > SW && H * 2 <= SH || H > SH && W * 2 <= SW);
31418
+ const dithered = !!dither && !!adjust && !adjustAfterSampling;
31419
+ const nearestMixed = mixed && (!adjust || adjustAfterSampling || dithered) && (W < SW && W * 2 > SW || H < SH && H * 2 > SH);
31420
+ const nativeMixed = mixed && (!adjust || adjustAfterSampling || dithered) && Math.min(SW, W) >= 2 && Math.min(SH, H) >= 2 && (W > SW && H * 2 <= SH || H > SH && W * 2 <= SW);
31271
31421
  if ((enlarging || nearestMixed) && !directDib) {
31272
31422
  halftoneDespeckle(rect, SW, SH);
31273
31423
  }
31274
- if (adjust && !adjustAfterSampling) {
31424
+ const reducedEven = W < SW ? SW % 2 === 0 && H % SH === 0 : SH % 2 === 0 && W % SW === 0;
31425
+ const ditherAtSource = dithered && (W >= SW && H >= SH || nativeMixed && reducedEven);
31426
+ if (ditherAtSource) {
31427
+ ditherPixels(rect, SW, SH, dither, false, flipY);
31428
+ }
31429
+ if (adjust && !adjustAfterSampling && (!dithered || ditherAtSource)) {
31275
31430
  adjust(rect);
31276
31431
  }
31277
31432
  const sampleW = nativeMixed ? Math.min(SW, W) : W;
@@ -31397,7 +31552,22 @@ function stretchHalftone(src, sx, sy, sw, sh, dw, dh, adjust, adjustAfterSamplin
31397
31552
  }
31398
31553
  }
31399
31554
  }
31555
+ if (dithered && !ditherAtSource) {
31556
+ const phase = (n, src2, dst, selectSource) => Int32Array.from({ length: n }, (_, i) => dst > src2 ? Math.floor(i * src2 / dst) : selectSource ? Math.max(0, Math.min(src2 - 1, Math.floor(((i + 1) * 2 * src2 - dst) / (2 * dst)))) : i);
31557
+ ditherPixels(
31558
+ out,
31559
+ W,
31560
+ H,
31561
+ dither,
31562
+ false,
31563
+ false,
31564
+ nearestMixed ? phase(W, SW, W, true) : void 0,
31565
+ nearestMixed ? phase(H, SH, H, false) : void 0
31566
+ );
31567
+ adjust(out);
31568
+ }
31400
31569
  if (adjust && adjustAfterSampling) adjust(out);
31570
+ if (curves && dithered) curves(out);
31401
31571
  for (let i = 0, o = 0; i < W * H; i++, o += 3) {
31402
31572
  data[i * 4] = out[o];
31403
31573
  data[i * 4 + 1] = out[o + 1];
@@ -31426,7 +31596,7 @@ function patternOperand(rCtx, brush) {
31426
31596
  state.brushOrgY
31427
31597
  );
31428
31598
  }
31429
- function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode) {
31599
+ function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode, brushOrgX, brushOrgY) {
31430
31600
  const dLeft = Math.min(req.dx, req.dx + req.dw) - offsetX;
31431
31601
  const dTop = Math.min(req.dy, req.dy + req.dh) - offsetY;
31432
31602
  const px = mode === HALFTONE ? stretchHalftone(
@@ -31439,7 +31609,9 @@ function drawSourceMapped(target, decoded, req, offsetX, offsetY, mode) {
31439
31609
  req.dh,
31440
31610
  decoded.adjust,
31441
31611
  decoded.adjustAfterSampling,
31442
- req.dibOrigin === "bottom-left"
31612
+ req.dibOrigin === "bottom-left",
31613
+ decoded.adjust && !decoded.adjustAfterSampling ? { startX: ditherStartX(Math.min(req.dx, req.dx + req.dw), brushOrgX), startY: ditherStartY(Math.min(req.dy, req.dy + req.dh), brushOrgY) } : void 0,
31614
+ decoded.curves
31443
31615
  ) : stretchGdi(decoded.pixels, req.sx, req.sy, req.sw, req.sh, req.dw, req.dh, mode);
31444
31616
  if (px.width === 0 || px.height === 0) {
31445
31617
  return;
@@ -31469,13 +31641,17 @@ function decodeSource(rCtx, req) {
31469
31641
  return null;
31470
31642
  }
31471
31643
  const ca = rCtx.state.colorAdjustment;
31472
- const adjust = req.stretch && rCtx.state.stretchBltMode === HALFTONE && ca ? (rgb2) => colorAdjustRgb(rgb2, ca) : void 0;
31644
+ const halftone = req.stretch && rCtx.state.stretchBltMode === HALFTONE && ca;
31645
+ const channelOnly = isChannelOnlyColorAdjustment(ca);
31646
+ const split = halftone && !channelOnly ? splitColorAdjustment(ca) : void 0;
31647
+ const adjust = halftone ? ((rgb2) => colorAdjustRgb(rgb2, split?.palette ?? ca)) : void 0;
31648
+ const curves = split?.curves;
31473
31649
  let { sy } = req;
31474
31650
  if (req.dibOrigin === "bottom-left" && rCtx.view.getInt32(req.source.bmi + 8, true) > 0) {
31475
31651
  sy = image.height - sy - req.sh;
31476
31652
  }
31477
31653
  return {
31478
- decoded: { pixels: image, adjust, adjustAfterSampling: isChannelOnlyColorAdjustment(ca) },
31654
+ decoded: { pixels: image, adjust, adjustAfterSampling: channelOnly, curves: curves ? (rgb2) => colorAdjustRgb(rgb2, curves) : void 0 },
31479
31655
  req: { ...req, sy }
31480
31656
  };
31481
31657
  }
@@ -31548,7 +31724,7 @@ function runTernary(rCtx, req, index, usesP, usesS) {
31548
31724
  if (!decoded) {
31549
31725
  return;
31550
31726
  }
31551
- drawSourceMapped(layer.ctx, decoded.decoded, decoded.req, rect.x, rect.y, rCtx.state.stretchBltMode);
31727
+ drawSourceMapped(layer.ctx, decoded.decoded, decoded.req, rect.x, rect.y, rCtx.state.stretchBltMode, rCtx.state.brushOrgX, rCtx.state.brushOrgY);
31552
31728
  src = canvasGetImageData(layer.ctx, 0, 0, rect.w, rect.h);
31553
31729
  }
31554
31730
  const dst = canvasGetImageData(ctx, rect.x, rect.y, rect.w, rect.h);
@@ -31727,7 +31903,7 @@ function executeBlit(rCtx, request) {
31727
31903
  case "copy": {
31728
31904
  const decoded = decodeSource(rCtx, req);
31729
31905
  if (decoded) {
31730
- drawSourceMapped(ctx, decoded.decoded, decoded.req, 0, 0, rCtx.state.stretchBltMode);
31906
+ drawSourceMapped(ctx, decoded.decoded, decoded.req, 0, 0, rCtx.state.stretchBltMode, rCtx.state.brushOrgX, rCtx.state.brushOrgY);
31731
31907
  }
31732
31908
  return;
31733
31909
  }
@@ -31904,9 +32080,9 @@ function readMask(rCtx, offset, offBmi, cbBmi, offBits, cbBits) {
31904
32080
  return null;
31905
32081
  }
31906
32082
  const out = new Uint8Array(width * height);
31907
- for (let row = 0; row < height; row++) {
31908
- const y = heightRaw > 0 ? height - 1 - row : row;
31909
- const rowOff = bits + row * stride;
32083
+ for (let row2 = 0; row2 < height; row2++) {
32084
+ const y = heightRaw > 0 ? height - 1 - row2 : row2;
32085
+ const rowOff = bits + row2 * stride;
31910
32086
  for (let x = 0; x < width; x++) {
31911
32087
  out[y * width + x] = view.getUint8(rowOff + (x >> 3)) >> 7 - (x & 7) & 1;
31912
32088
  }
@@ -31966,7 +32142,7 @@ function axisMap(rCtx, xDest, yDest, cxDest, cyDest, sx, sy, sw, sh) {
31966
32142
  const baseX = Math.min(sx, sx + sw);
31967
32143
  const baseY = Math.min(sy, sy + sh);
31968
32144
  const col = new Int32Array(x1 - x0);
31969
- const row = new Int32Array(y1 - y0);
32145
+ const row2 = new Int32Array(y1 - y0);
31970
32146
  const mirrored = dw < 0 || dh < 0;
31971
32147
  const pick = (i, len, n) => mirrored ? Math.min(len - 1, Math.floor(i * len / n)) : gdiNearest(i, len, n);
31972
32148
  for (let x = x0; x < x1; x++) {
@@ -31975,9 +32151,9 @@ function axisMap(rCtx, xDest, yDest, cxDest, cyDest, sx, sy, sw, sh) {
31975
32151
  }
31976
32152
  for (let y = y0; y < y1; y++) {
31977
32153
  const k = pick(y - top, ah, H);
31978
- row[y - y0] = sh < 0 !== dh < 0 ? baseY + ah - 1 - k : baseY + k;
32154
+ row2[y - y0] = sh < 0 !== dh < 0 ? baseY + ah - 1 - k : baseY + k;
31979
32155
  }
31980
- return { box: { x: x0, y: y0, w: x1 - x0, h: y1 - y0 }, col, row };
32156
+ return { box: { x: x0, y: y0, w: x1 - x0, h: y1 - y0 }, col, row: row2 };
31981
32157
  }
31982
32158
  function writePixels(rCtx, box, op) {
31983
32159
  const { ctx } = rCtx;
@@ -32066,15 +32242,15 @@ function handleAlphaBlend(rCtx, offset, dataOff, recSize) {
32066
32242
  if (!map) {
32067
32243
  return;
32068
32244
  }
32069
- const { box, col, row } = map;
32245
+ const { box, col, row: row2 } = map;
32070
32246
  if (!canReadBack(rCtx.ctx)) {
32071
32247
  drawAlphaOverlay(rCtx, map, src, sca, srcAlpha);
32072
32248
  return;
32073
32249
  }
32074
- writePixels(rCtx, box, (x, y, d) => alphaBlendPixel(texelAt(src, col[x - box.x], row[y - box.y]), d, sca, srcAlpha));
32250
+ writePixels(rCtx, box, (x, y, d) => alphaBlendPixel(texelAt(src, col[x - box.x], row2[y - box.y]), d, sca, srcAlpha));
32075
32251
  }
32076
32252
  function drawAlphaOverlay(rCtx, map, src, sca, srcAlpha) {
32077
- const { box, col, row } = map;
32253
+ const { box, col, row: row2 } = map;
32078
32254
  const scratch = acquireScratch(box.w, box.h);
32079
32255
  if (!scratch) {
32080
32256
  return;
@@ -32082,7 +32258,7 @@ function drawAlphaOverlay(rCtx, map, src, sca, srcAlpha) {
32082
32258
  const data = new Uint8ClampedArray(box.w * box.h * 4);
32083
32259
  for (let y = 0; y < box.h; y++) {
32084
32260
  for (let x = 0; x < box.w; x++) {
32085
- const s = texelAt(src, col[x], row[y]);
32261
+ const s = texelAt(src, col[x], row2[y]);
32086
32262
  const a = srcAlpha ? (s >>> 24) * sca / 255 : sca;
32087
32263
  const i = (y * box.w + x) * 4;
32088
32264
  const k = srcAlpha && s >>> 24 > 0 ? 255 / (s >>> 24) : 1;
@@ -32117,9 +32293,9 @@ function handleTransparentBlt(rCtx, offset, dataOff, recSize) {
32117
32293
  if (!map) {
32118
32294
  return;
32119
32295
  }
32120
- const { box, col, row } = map;
32296
+ const { box, col, row: row2 } = map;
32121
32297
  writePixels(rCtx, box, (x, y) => {
32122
- const s = texelAt(src, col[x - box.x], row[y - box.y]) & 16777215;
32298
+ const s = texelAt(src, col[x - box.x], row2[y - box.y]) & 16777215;
32123
32299
  return s === key ? -1 : s;
32124
32300
  });
32125
32301
  }
@@ -32150,7 +32326,7 @@ function handleMaskBlt(rCtx, offset, dataOff, recSize) {
32150
32326
  if (!map) {
32151
32327
  return;
32152
32328
  }
32153
- const { box, col, row } = map;
32329
+ const { box, col, row: row2 } = map;
32154
32330
  const needsDest = rop3Operands(fore).usesD || mask !== null && rop3Operands(back).usesD;
32155
32331
  if (needsDest && !canReadBack(rCtx.ctx)) {
32156
32332
  return;
@@ -32160,7 +32336,7 @@ function handleMaskBlt(rCtx, offset, dataOff, recSize) {
32160
32336
  const my0 = Math.min(r.sy, r.sy + r.sh);
32161
32337
  writePixels(rCtx, box, (x, y, d) => {
32162
32338
  const sxp = col[x - box.x];
32163
- const syp = row[y - box.y];
32339
+ const syp = row2[y - box.y];
32164
32340
  let index = fore;
32165
32341
  if (mask) {
32166
32342
  const mx = xMask + sxp - mx0;
@@ -32275,10 +32451,10 @@ function handleSetDibitsToDevice(rCtx, offset, dataOff, recSize) {
32275
32451
  if (!map) {
32276
32452
  return;
32277
32453
  }
32278
- const { box, col, row } = map;
32454
+ const { box, col, row: row2 } = map;
32279
32455
  writePixels(rCtx, box, (x, y) => {
32280
32456
  const i = col[x - box.x];
32281
- const j = row[y - box.y];
32457
+ const j = row2[y - box.y];
32282
32458
  const fromBottom = ySrc + cy - 1 - j;
32283
32459
  const bandRow = topDown ? fullRows - 1 - fromBottom - startScan : scans - 1 - (fromBottom - startScan);
32284
32460
  if (bandRow < 0 || bandRow >= band.height) {
@@ -32500,8 +32676,8 @@ function decodeAnsiRecord(bytes, charSet) {
32500
32676
  const byteLengths = [];
32501
32677
  for (let i = 0; i < bytes.length; i++) {
32502
32678
  const lead = bytes[i];
32503
- const row = JOHAB_ROWS[lead];
32504
- const code = row && i + 1 < bytes.length ? row.charCodeAt(bytes[i + 1]) : 65533;
32679
+ const row2 = JOHAB_ROWS[lead];
32680
+ const code = row2 && i + 1 < bytes.length ? row2.charCodeAt(bytes[i + 1]) : 65533;
32505
32681
  const count = lead < 128 || code === 65533 ? 1 : 2;
32506
32682
  codes.push(lead < 128 ? lead : code);
32507
32683
  byteLengths.push(count);
@@ -38156,23 +38332,23 @@ function spansOf(p, rects) {
38156
38332
  const x0 = Math.round(l * p.kx);
38157
38333
  const x1 = Math.round(r * p.kx);
38158
38334
  for (let y = Math.round(t * p.ky); y < Math.round(b * p.ky); y++) {
38159
- let row = rows.get(y);
38160
- if (!row) {
38161
- row = [];
38162
- rows.set(y, row);
38335
+ let row2 = rows.get(y);
38336
+ if (!row2) {
38337
+ row2 = [];
38338
+ rows.set(y, row2);
38163
38339
  }
38164
- row.push([x0, x1]);
38340
+ row2.push([x0, x1]);
38165
38341
  }
38166
38342
  }
38167
38343
  for (const y of [...rows.keys()].sort((a, b) => a - b)) {
38168
- const row = rows.get(y).sort((a, b) => a[0] - b[0]);
38169
- let [s0, s1] = row[0];
38170
- for (let i = 1; i < row.length; i++) {
38171
- if (row[i][0] <= s1) {
38172
- s1 = Math.max(s1, row[i][1]);
38344
+ const row2 = rows.get(y).sort((a, b) => a[0] - b[0]);
38345
+ let [s0, s1] = row2[0];
38346
+ for (let i = 1; i < row2.length; i++) {
38347
+ if (row2[i][0] <= s1) {
38348
+ s1 = Math.max(s1, row2[i][1]);
38173
38349
  } else {
38174
38350
  spans.add(y, s0, s1);
38175
- [s0, s1] = row[i];
38351
+ [s0, s1] = row2[i];
38176
38352
  }
38177
38353
  }
38178
38354
  spans.add(y, s0, s1);
@@ -38284,8 +38460,8 @@ function devicePixelSpans(p, x, y) {
38284
38460
  const x1 = Math.max(x0 + 1, Math.round((x + 1) * p.kx));
38285
38461
  const y0 = Math.round(y * p.ky);
38286
38462
  const y1 = Math.max(y0 + 1, Math.round((y + 1) * p.ky));
38287
- for (let row = y0; row < y1; row++) {
38288
- spans.add(row, x0, x1);
38463
+ for (let row2 = y0; row2 < y1; row2++) {
38464
+ spans.add(row2, x0, x1);
38289
38465
  }
38290
38466
  return spans;
38291
38467
  }
@@ -38345,14 +38521,14 @@ function wmfExtFloodFill(p, x, y, colorRef, type) {
38345
38521
  if (py + 1 < h) visit(i + w);
38346
38522
  }
38347
38523
  const spans = new SpanList();
38348
- for (let row = 0; row < h; row++) {
38524
+ for (let row2 = 0; row2 < h; row2++) {
38349
38525
  let run = -1;
38350
38526
  for (let col = 0; col <= w; col++) {
38351
- const on = col < w && seen[row * w + col] === 1;
38527
+ const on = col < w && seen[row2 * w + col] === 1;
38352
38528
  if (on && run < 0) {
38353
38529
  run = col;
38354
38530
  } else if (!on && run >= 0) {
38355
- spans.add(row, run, col);
38531
+ spans.add(row2, run, col);
38356
38532
  run = -1;
38357
38533
  }
38358
38534
  }