@sync-in/server 2.0.0 → 2.1.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/CHANGELOG.md +18 -0
- package/README.md +38 -28
- package/environment/environment.dist.yaml +4 -0
- package/package.json +17 -17
- package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -1
- package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
- package/server/applications/files/utils/files.js +37 -24
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/notifications/i18n/index.js +5 -0
- package/server/applications/notifications/i18n/index.js.map +1 -1
- package/server/applications/notifications/i18n/nl.js +54 -0
- package/server/applications/notifications/i18n/nl.js.map +1 -0
- package/server/applications/sync/services/sync-clients-manager.service.js +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
- package/server/authentication/providers/oidc/auth-oidc.config.js +5 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -1
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js +10 -7
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -1
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +16 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -1
- package/server/common/i18n.js +1 -0
- package/server/common/i18n.js.map +1 -1
- package/server/infrastructure/database/database.module.js +7 -0
- package/server/infrastructure/database/database.module.js.map +1 -1
- package/server/infrastructure/database/scripts/check-db.js +20 -0
- package/server/infrastructure/database/scripts/check-db.js.map +1 -0
- package/static/3rdpartylicenses.txt +391 -391
- package/static/assets/pdfjs/build/pdf.mjs +512 -417
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +390 -4
- package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.worker.mjs +2378 -401
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/debugger.mjs +6 -15
- package/static/assets/pdfjs/web/locale/be/viewer.ftl +78 -0
- package/static/assets/pdfjs/web/locale/cs/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/cy/viewer.ftl +90 -0
- package/static/assets/pdfjs/web/locale/de/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/el/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +14 -14
- package/static/assets/pdfjs/web/locale/eo/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/eu/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/fi/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/fr/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/gn/viewer.ftl +77 -0
- package/static/assets/pdfjs/web/locale/he/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +87 -0
- package/static/assets/pdfjs/web/locale/hu/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +10 -10
- package/static/assets/pdfjs/web/locale/ia/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/it/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/ja/viewer.ftl +58 -0
- package/static/assets/pdfjs/web/locale/ka/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/km/viewer.ftl +44 -0
- package/static/assets/pdfjs/web/locale/ko/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/nl/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +75 -0
- package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/pl/viewer.ftl +78 -0
- package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/ro/viewer.ftl +81 -3
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +85 -0
- package/static/assets/pdfjs/web/locale/sk/viewer.ftl +83 -1
- package/static/assets/pdfjs/web/locale/sl/viewer.ftl +82 -0
- package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +81 -0
- package/static/assets/pdfjs/web/locale/tg/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/th/viewer.ftl +58 -0
- package/static/assets/pdfjs/web/locale/tr/viewer.ftl +74 -0
- package/static/assets/pdfjs/web/locale/uk/viewer.ftl +144 -0
- package/static/assets/pdfjs/web/locale/vi/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +61 -3
- package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +65 -0
- package/static/assets/pdfjs/web/viewer.css +292 -152
- package/static/assets/pdfjs/web/viewer.html +14 -21
- package/static/assets/pdfjs/web/viewer.mjs +782 -327
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
- package/static/{chunk-7WOPGQXB.js → chunk-25XD7GNL.js} +1 -1
- package/static/{chunk-E5WI5725.js → chunk-2W4Z5VTY.js} +1 -1
- package/static/chunk-2XNPCG4F.js +1 -0
- package/static/chunk-3B2RHO2H.js +1 -0
- package/static/{chunk-UMDRE4S7.js → chunk-3DNAFXGN.js} +1 -1
- package/static/{chunk-OANZITPM.js → chunk-3EPN4WD7.js} +1 -1
- package/static/chunk-4L2WBHB6.js +1 -0
- package/static/chunk-4RYZNAIZ.js +1 -0
- package/static/chunk-5C77PEFA.js +1 -0
- package/static/chunk-5JA3DZWQ.js +1 -0
- package/static/chunk-5MSTJGPE.js +1 -0
- package/static/{chunk-VSBFNFOM.js → chunk-5O7KTREI.js} +1 -1
- package/static/chunk-6KORLSUZ.js +1 -0
- package/static/chunk-6LIHQVPW.js +2 -0
- package/static/{chunk-2CKLZ3FM.js → chunk-72BXGTUG.js} +1 -1
- package/static/chunk-7423QJQN.js +1 -0
- package/static/chunk-77HB4DE6.js +1 -0
- package/static/{chunk-RWAAC3A4.js → chunk-7PVTMTWH.js} +1 -1
- package/static/{chunk-IWWBV6EM.js → chunk-7UIOW5AD.js} +1 -1
- package/static/chunk-7YMONFZZ.js +1 -0
- package/static/chunk-AUPNSQGJ.js +1 -0
- package/static/chunk-AYF6ZI6L.js +5 -0
- package/static/chunk-BEESW4BF.js +1 -0
- package/static/{chunk-2R6IBBPZ.js → chunk-BI3VI6XG.js} +1 -1
- package/static/chunk-BMGKB3JK.js +4 -0
- package/static/chunk-CFXAKPPB.js +563 -0
- package/static/chunk-CGYZG6CB.js +2 -0
- package/static/{chunk-K25E7YGG.js → chunk-CHAYERHQ.js} +1 -1
- package/static/chunk-CLNKPQMZ.js +1 -0
- package/static/{chunk-ISV3BO6R.js → chunk-CVLSRA2W.js} +1 -1
- package/static/chunk-D373HBMN.js +1 -0
- package/static/{chunk-MTRXBVWZ.js → chunk-D43PHZEY.js} +1 -1
- package/static/chunk-D44RAVFK.js +1 -0
- package/static/chunk-DFVVEGWC.js +1 -0
- package/static/chunk-E43LXI27.js +1 -0
- package/static/{chunk-GQFMWVFD.js → chunk-E5M4ZDID.js} +1 -1
- package/static/chunk-F7JS3YWP.js +2 -0
- package/static/chunk-FRWEEOOM.js +1 -0
- package/static/chunk-HIZGSP7R.js +1 -0
- package/static/chunk-HX6ZWXQD.js +1 -0
- package/static/chunk-HZ6LLXLE.js +1 -0
- package/static/{chunk-RLL634K4.js → chunk-IFHFPV5W.js} +1 -1
- package/static/{chunk-KJD3KFF3.js → chunk-JICKUOQ6.js} +1 -1
- package/static/chunk-KY2BW2LP.js +1 -0
- package/static/{chunk-CWYHOPOP.js → chunk-KYA3HPDX.js} +1 -1
- package/static/{chunk-RWCNTCU5.js → chunk-KYLATNX5.js} +1 -1
- package/static/chunk-LCZNSV4Z.js +1 -0
- package/static/{chunk-GVNTC564.js → chunk-MA6DYTMQ.js} +1 -1
- package/static/{chunk-KZS7CTNR.js → chunk-MXH5XYBD.js} +1 -1
- package/static/{chunk-NMTBMHUL.js → chunk-MXIJGSDQ.js} +1 -1
- package/static/{chunk-RS2OFKWP.js → chunk-NE75E3GD.js} +1 -1
- package/static/{chunk-MZQK6LNV.js → chunk-NJKIHMOH.js} +1 -1
- package/static/chunk-NMDGST45.js +1 -0
- package/static/{chunk-CU76ATCF.js → chunk-OF7P4LTI.js} +1 -1
- package/static/chunk-OK5K5CYJ.js +13 -0
- package/static/chunk-OZ6LXMUH.js +1 -0
- package/static/chunk-PFY6YUPS.js +2 -0
- package/static/chunk-PQ2YFCVM.js +1 -0
- package/static/{chunk-Y4AUYQTG.js → chunk-QPX34S6P.js} +4 -4
- package/static/{chunk-27ATUHBH.js → chunk-QQO7S2VY.js} +1 -1
- package/static/chunk-RANZZPRG.js +1 -0
- package/static/{chunk-WN4WXCVK.js → chunk-RNQB2QJB.js} +1 -1
- package/static/{chunk-Q3EGCMF5.js → chunk-S7QYAKG5.js} +1 -1
- package/static/chunk-SCEWOW5C.js +2 -0
- package/static/chunk-SQ2KIOJ7.js +1 -0
- package/static/{chunk-QVRVFYJH.js → chunk-SW5GCGOI.js} +1 -1
- package/static/chunk-SWCYWB2T.js +1 -0
- package/static/{chunk-4FIGEBNL.js → chunk-SWZ3L2LK.js} +1 -1
- package/static/{chunk-TWCGKSYE.js → chunk-TDK62XEQ.js} +1 -1
- package/static/chunk-TH4L5H6P.js +1 -0
- package/static/chunk-U3ZGYOLA.js +1 -0
- package/static/chunk-U6V4Y234.js +1 -0
- package/static/chunk-U7KNV64D.js +2 -0
- package/static/chunk-UC66HJV4.js +1 -0
- package/static/{chunk-7GWW6MJO.js → chunk-V4HAIERK.js} +1 -1
- package/static/chunk-V55LDRV7.js +1 -0
- package/static/{chunk-5CZOSAMZ.js → chunk-WF6D7CQ4.js} +1 -1
- package/static/chunk-WJPVHM7T.js +1 -0
- package/static/chunk-WM4XBDC2.js +1 -0
- package/static/chunk-X2EKQYMZ.js +1 -0
- package/static/{chunk-L5IHUVXL.js → chunk-XEDABMM5.js} +1 -1
- package/static/{chunk-OGE4SAHU.js → chunk-Y3YKVK3K.js} +1 -1
- package/static/{chunk-QIGUDEZF.js → chunk-YEOAMYRK.js} +1 -1
- package/static/{chunk-A4UGPSWX.js → chunk-ZLTL7I7D.js} +1 -1
- package/static/chunk-ZYNBYM7I.js +3 -0
- package/static/index.html +2 -2
- package/static/main-KFUSRCP5.js +5 -0
- package/static/media/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 +0 -0
- package/static/media/inter-cyrillic-wght-normal-JEOLYBOO.woff2 +0 -0
- package/static/media/inter-greek-ext-wght-normal-EOVOK2B5.woff2 +0 -0
- package/static/media/inter-greek-wght-normal-IRE366VL.woff2 +0 -0
- package/static/media/inter-latin-ext-wght-normal-HA22NDSG.woff2 +0 -0
- package/static/media/inter-latin-wght-normal-NRMW37G5.woff2 +0 -0
- package/static/media/inter-vietnamese-wght-normal-CE5GGD3W.woff2 +0 -0
- package/static/styles-66AEF62D.css +1 -0
- package/static/chunk-22TZP6HW.js +0 -1
- package/static/chunk-2QZPX7LO.js +0 -1
- package/static/chunk-4P3JABAP.js +0 -13
- package/static/chunk-677WUBCT.js +0 -1
- package/static/chunk-74CAHBFM.js +0 -1
- package/static/chunk-AHO37FKW.js +0 -1
- package/static/chunk-AQCXMKP3.js +0 -1
- package/static/chunk-B6PDYCRO.js +0 -3
- package/static/chunk-FC5HTKVM.js +0 -1
- package/static/chunk-FOSM7EYI.js +0 -1
- package/static/chunk-GAZO25PI.js +0 -1
- package/static/chunk-GB7ABR5N.js +0 -1
- package/static/chunk-GEHFKZQ5.js +0 -2
- package/static/chunk-HGL3NYP2.js +0 -2
- package/static/chunk-HLIWPWRA.js +0 -1
- package/static/chunk-HNYB3M4S.js +0 -1
- package/static/chunk-HUXAUQMN.js +0 -1
- package/static/chunk-I2XA6PPK.js +0 -1
- package/static/chunk-JV3AGU5B.js +0 -1
- package/static/chunk-K46PUTZB.js +0 -1
- package/static/chunk-KERFLJ56.js +0 -1
- package/static/chunk-KPKSI23S.js +0 -1
- package/static/chunk-L7RRX2M3.js +0 -1
- package/static/chunk-LGWJ2WKU.js +0 -1
- package/static/chunk-LUSVISM6.js +0 -1
- package/static/chunk-MLC7JK2H.js +0 -2
- package/static/chunk-MOHNYW2A.js +0 -1
- package/static/chunk-NCDUOVMW.js +0 -1
- package/static/chunk-NGUAJIGI.js +0 -1
- package/static/chunk-NIPP6JDI.js +0 -1
- package/static/chunk-O4XXMZFX.js +0 -4
- package/static/chunk-OI3ME22C.js +0 -1
- package/static/chunk-QF2NSHZA.js +0 -1
- package/static/chunk-QJVC3SRJ.js +0 -562
- package/static/chunk-QKN6LAAA.js +0 -1
- package/static/chunk-QRFESU5O.js +0 -2
- package/static/chunk-RFJIPIOK.js +0 -2
- package/static/chunk-S5Y64DDS.js +0 -1
- package/static/chunk-SLG5KDU6.js +0 -1
- package/static/chunk-TJ4CVFEL.js +0 -1
- package/static/chunk-VRIOLRYR.js +0 -5
- package/static/chunk-VS4O2XDP.js +0 -1
- package/static/chunk-WX7RXW7K.js +0 -1
- package/static/chunk-XC4POKR3.js +0 -2
- package/static/chunk-Y67J3BOL.js +0 -1
- package/static/chunk-YMIXHRJQ.js +0 -1
- package/static/chunk-ZUNKFAKP.js +0 -1
- package/static/main-QN4UCOC5.js +0 -5
- package/static/styles-46GLIE7Y.css +0 -1
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* pdfjsVersion = 5.
|
|
25
|
-
* pdfjsBuild =
|
|
24
|
+
* pdfjsVersion = 5.5.207
|
|
25
|
+
* pdfjsBuild = 527964698
|
|
26
26
|
*/
|
|
27
27
|
/******/ // The require scope
|
|
28
28
|
/******/ var __webpack_require__ = {};
|
|
@@ -408,6 +408,9 @@ function updateUrlHash(url, hash, allowRel = false) {
|
|
|
408
408
|
}
|
|
409
409
|
return "";
|
|
410
410
|
}
|
|
411
|
+
function stripPath(str) {
|
|
412
|
+
return str.substring(str.lastIndexOf("/") + 1);
|
|
413
|
+
}
|
|
411
414
|
function shadow(obj, prop, value, nonSerializable = false) {
|
|
412
415
|
Object.defineProperty(obj, prop, {
|
|
413
416
|
value,
|
|
@@ -894,6 +897,9 @@ function _isValidExplicitDest(validRef, validName, dest) {
|
|
|
894
897
|
}
|
|
895
898
|
return true;
|
|
896
899
|
}
|
|
900
|
+
const makeArr = () => [];
|
|
901
|
+
const makeMap = () => new Map();
|
|
902
|
+
const makeObj = () => Object.create(null);
|
|
897
903
|
function MathClamp(v, min, max) {
|
|
898
904
|
return Math.min(Math.max(v, min), max);
|
|
899
905
|
}
|
|
@@ -1158,9 +1164,7 @@ class RefSet {
|
|
|
1158
1164
|
}
|
|
1159
1165
|
}
|
|
1160
1166
|
class RefSetCache {
|
|
1161
|
-
|
|
1162
|
-
this._map = new Map();
|
|
1163
|
-
}
|
|
1167
|
+
_map = new Map();
|
|
1164
1168
|
get size() {
|
|
1165
1169
|
return this._map.size;
|
|
1166
1170
|
}
|
|
@@ -1370,7 +1374,7 @@ async function fetchBinaryData(url) {
|
|
|
1370
1374
|
if (!response.ok) {
|
|
1371
1375
|
throw new Error(`Failed to fetch file "${url}" with "${response.statusText}".`);
|
|
1372
1376
|
}
|
|
1373
|
-
return
|
|
1377
|
+
return response.bytes();
|
|
1374
1378
|
}
|
|
1375
1379
|
function getInheritableProperty({
|
|
1376
1380
|
dict,
|
|
@@ -1707,12 +1711,7 @@ function getNewAnnotationsMap(annotationStorage) {
|
|
|
1707
1711
|
if (!key.startsWith(AnnotationEditorPrefix)) {
|
|
1708
1712
|
continue;
|
|
1709
1713
|
}
|
|
1710
|
-
|
|
1711
|
-
if (!annotations) {
|
|
1712
|
-
annotations = [];
|
|
1713
|
-
newAnnotationsByPage.set(value.pageIndex, annotations);
|
|
1714
|
-
}
|
|
1715
|
-
annotations.push(value);
|
|
1714
|
+
newAnnotationsByPage.getOrInsertComputed(value.pageIndex, makeArr).push(value);
|
|
1716
1715
|
}
|
|
1717
1716
|
return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;
|
|
1718
1717
|
}
|
|
@@ -2087,6 +2086,21 @@ function copyRgbaImage(src, dest, alpha01) {
|
|
|
2087
2086
|
}
|
|
2088
2087
|
}
|
|
2089
2088
|
}
|
|
2089
|
+
function isDefaultDecodeHelper(decode, expectedLen) {
|
|
2090
|
+
if (!Array.isArray(decode)) {
|
|
2091
|
+
return true;
|
|
2092
|
+
}
|
|
2093
|
+
const decodeLen = decode.length;
|
|
2094
|
+
if (decodeLen < expectedLen) {
|
|
2095
|
+
warn("Decode map length is too short.");
|
|
2096
|
+
return true;
|
|
2097
|
+
}
|
|
2098
|
+
if (decodeLen > expectedLen) {
|
|
2099
|
+
info("Truncating too long decode map.");
|
|
2100
|
+
decode.length = expectedLen;
|
|
2101
|
+
}
|
|
2102
|
+
return false;
|
|
2103
|
+
}
|
|
2090
2104
|
class ColorSpace {
|
|
2091
2105
|
static #rgbBuf = new Uint8ClampedArray(3);
|
|
2092
2106
|
constructor(name, numComps) {
|
|
@@ -2113,8 +2127,8 @@ class ColorSpace {
|
|
|
2113
2127
|
isPassthrough(bits) {
|
|
2114
2128
|
return false;
|
|
2115
2129
|
}
|
|
2116
|
-
isDefaultDecode(
|
|
2117
|
-
return ColorSpace.isDefaultDecode(
|
|
2130
|
+
isDefaultDecode(decode, bpc) {
|
|
2131
|
+
return ColorSpace.isDefaultDecode(decode, this.numComps);
|
|
2118
2132
|
}
|
|
2119
2133
|
fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {
|
|
2120
2134
|
const count = originalWidth * originalHeight;
|
|
@@ -2174,11 +2188,7 @@ class ColorSpace {
|
|
|
2174
2188
|
return shadow(this, "usesZeroToOneRange", true);
|
|
2175
2189
|
}
|
|
2176
2190
|
static isDefaultDecode(decode, numComps) {
|
|
2177
|
-
if (
|
|
2178
|
-
return true;
|
|
2179
|
-
}
|
|
2180
|
-
if (numComps * 2 !== decode.length) {
|
|
2181
|
-
warn("The decode map is not the correct length");
|
|
2191
|
+
if (isDefaultDecodeHelper(decode, numComps * 2)) {
|
|
2182
2192
|
return true;
|
|
2183
2193
|
}
|
|
2184
2194
|
for (let i = 0, ii = decode.length; i < ii; i += 2) {
|
|
@@ -2241,7 +2251,7 @@ class PatternCS extends ColorSpace {
|
|
|
2241
2251
|
super("Pattern", null);
|
|
2242
2252
|
this.base = baseCS;
|
|
2243
2253
|
}
|
|
2244
|
-
isDefaultDecode(
|
|
2254
|
+
isDefaultDecode(decode, bpc) {
|
|
2245
2255
|
unreachable("Should not call PatternCS.isDefaultDecode");
|
|
2246
2256
|
}
|
|
2247
2257
|
}
|
|
@@ -2291,19 +2301,15 @@ class IndexedCS extends ColorSpace {
|
|
|
2291
2301
|
getOutputLength(inputLength, alpha01) {
|
|
2292
2302
|
return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
|
|
2293
2303
|
}
|
|
2294
|
-
isDefaultDecode(
|
|
2295
|
-
if (
|
|
2296
|
-
return true;
|
|
2297
|
-
}
|
|
2298
|
-
if (decodeMap.length !== 2) {
|
|
2299
|
-
warn("Decode map length is not correct");
|
|
2304
|
+
isDefaultDecode(decode, bpc) {
|
|
2305
|
+
if (isDefaultDecodeHelper(decode, 2)) {
|
|
2300
2306
|
return true;
|
|
2301
2307
|
}
|
|
2302
2308
|
if (!Number.isInteger(bpc) || bpc < 1) {
|
|
2303
2309
|
warn("Bits per component is not correct");
|
|
2304
2310
|
return true;
|
|
2305
2311
|
}
|
|
2306
|
-
return
|
|
2312
|
+
return decode[0] === 0 && decode[1] === (1 << bpc) - 1;
|
|
2307
2313
|
}
|
|
2308
2314
|
}
|
|
2309
2315
|
class DeviceGrayCS extends ColorSpace {
|
|
@@ -2689,7 +2695,7 @@ class LabCS extends ColorSpace {
|
|
|
2689
2695
|
getOutputLength(inputLength, alpha01) {
|
|
2690
2696
|
return inputLength * (3 + alpha01) / 3 | 0;
|
|
2691
2697
|
}
|
|
2692
|
-
isDefaultDecode(
|
|
2698
|
+
isDefaultDecode(decode, bpc) {
|
|
2693
2699
|
return true;
|
|
2694
2700
|
}
|
|
2695
2701
|
get usesZeroToOneRange() {
|
|
@@ -3106,35 +3112,31 @@ class ChunkedStreamManager {
|
|
|
3106
3112
|
this.disableAutoFetch = args.disableAutoFetch;
|
|
3107
3113
|
this.msgHandler = args.msgHandler;
|
|
3108
3114
|
}
|
|
3109
|
-
sendRequest(begin, end) {
|
|
3115
|
+
async sendRequest(begin, end) {
|
|
3110
3116
|
const rangeReader = this.pdfStream.getRangeReader(begin, end);
|
|
3111
3117
|
let chunks = [];
|
|
3112
|
-
|
|
3113
|
-
const
|
|
3118
|
+
while (true) {
|
|
3119
|
+
const {
|
|
3114
3120
|
value,
|
|
3115
3121
|
done
|
|
3116
|
-
}
|
|
3117
|
-
try {
|
|
3118
|
-
if (done) {
|
|
3119
|
-
resolve(arrayBuffersToBytes(chunks));
|
|
3120
|
-
chunks = null;
|
|
3121
|
-
return;
|
|
3122
|
-
}
|
|
3123
|
-
chunks.push(value);
|
|
3124
|
-
rangeReader.read().then(readChunk, reject);
|
|
3125
|
-
} catch (e) {
|
|
3126
|
-
reject(e);
|
|
3127
|
-
}
|
|
3128
|
-
};
|
|
3129
|
-
rangeReader.read().then(readChunk, reject);
|
|
3130
|
-
}).then(data => {
|
|
3122
|
+
} = await rangeReader.read();
|
|
3131
3123
|
if (this.aborted) {
|
|
3124
|
+
chunks = null;
|
|
3132
3125
|
return;
|
|
3133
3126
|
}
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3127
|
+
if (done) {
|
|
3128
|
+
break;
|
|
3129
|
+
}
|
|
3130
|
+
chunks.push(value);
|
|
3131
|
+
}
|
|
3132
|
+
if (chunks.length === 0 && this.disableAutoFetch) {
|
|
3133
|
+
return;
|
|
3134
|
+
}
|
|
3135
|
+
const data = arrayBuffersToBytes(chunks);
|
|
3136
|
+
chunks = null;
|
|
3137
|
+
this.onReceiveData({
|
|
3138
|
+
chunk: data.buffer,
|
|
3139
|
+
begin
|
|
3138
3140
|
});
|
|
3139
3141
|
}
|
|
3140
3142
|
requestAllChunks(noFetch = false) {
|
|
@@ -3294,7 +3296,7 @@ class ChunkedStreamManager {
|
|
|
3294
3296
|
capability.resolve();
|
|
3295
3297
|
}
|
|
3296
3298
|
this.msgHandler.send("DocProgress", {
|
|
3297
|
-
loaded: stream.numChunksLoaded * chunkSize,
|
|
3299
|
+
loaded: MathClamp(stream.numChunksLoaded * chunkSize, stream.progressiveDataLength, length),
|
|
3298
3300
|
total: length
|
|
3299
3301
|
});
|
|
3300
3302
|
}
|
|
@@ -3340,27 +3342,28 @@ function convertBlackAndWhiteToRGBA({
|
|
|
3340
3342
|
const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];
|
|
3341
3343
|
const widthInSource = width >> 3;
|
|
3342
3344
|
const widthRemainder = width & 7;
|
|
3345
|
+
const xorMask = zeroMapping ^ oneMapping;
|
|
3343
3346
|
const srcLength = src.length;
|
|
3344
3347
|
dest = new Uint32Array(dest.buffer);
|
|
3345
3348
|
let destPos = 0;
|
|
3346
|
-
for (let i = 0; i < height; i
|
|
3347
|
-
for (const max = srcPos + widthInSource; srcPos < max; srcPos
|
|
3348
|
-
const elem =
|
|
3349
|
-
dest[destPos
|
|
3350
|
-
dest[destPos
|
|
3351
|
-
dest[destPos
|
|
3352
|
-
dest[destPos
|
|
3353
|
-
dest[destPos
|
|
3354
|
-
dest[destPos
|
|
3355
|
-
dest[destPos
|
|
3356
|
-
dest[destPos
|
|
3349
|
+
for (let i = 0; i < height; ++i) {
|
|
3350
|
+
for (const max = srcPos + widthInSource; srcPos < max; ++srcPos, destPos += 8) {
|
|
3351
|
+
const elem = src[srcPos];
|
|
3352
|
+
dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;
|
|
3353
|
+
dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;
|
|
3354
|
+
dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;
|
|
3355
|
+
dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;
|
|
3356
|
+
dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;
|
|
3357
|
+
dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;
|
|
3358
|
+
dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;
|
|
3359
|
+
dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;
|
|
3357
3360
|
}
|
|
3358
3361
|
if (widthRemainder === 0) {
|
|
3359
3362
|
continue;
|
|
3360
3363
|
}
|
|
3361
3364
|
const elem = srcPos < srcLength ? src[srcPos++] : 255;
|
|
3362
|
-
for (let j = 0; j < widthRemainder; j++) {
|
|
3363
|
-
dest[destPos
|
|
3365
|
+
for (let j = 0; j < widthRemainder; ++j, ++destPos) {
|
|
3366
|
+
dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;
|
|
3364
3367
|
}
|
|
3365
3368
|
}
|
|
3366
3369
|
return {
|
|
@@ -3380,31 +3383,32 @@ function convertRGBToRGBA({
|
|
|
3380
3383
|
const len = width * height * 3;
|
|
3381
3384
|
const len32 = len >> 2;
|
|
3382
3385
|
const src32 = new Uint32Array(src.buffer, srcPos, len32);
|
|
3386
|
+
const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;
|
|
3383
3387
|
if (FeatureTest.isLittleEndian) {
|
|
3384
3388
|
for (; i < len32 - 2; i += 3, destPos += 4) {
|
|
3385
|
-
const s1 = src32[i]
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
dest[destPos] = s1 |
|
|
3389
|
-
dest[destPos + 1] = s1 >>> 24 | s2 << 8 |
|
|
3390
|
-
dest[destPos + 2] = s2 >>> 16 | s3 << 16 |
|
|
3391
|
-
dest[destPos + 3] = s3 >>> 8 |
|
|
3389
|
+
const s1 = src32[i],
|
|
3390
|
+
s2 = src32[i + 1],
|
|
3391
|
+
s3 = src32[i + 2];
|
|
3392
|
+
dest[destPos] = s1 | alphaMask;
|
|
3393
|
+
dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;
|
|
3394
|
+
dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;
|
|
3395
|
+
dest[destPos + 3] = s3 >>> 8 | alphaMask;
|
|
3392
3396
|
}
|
|
3393
3397
|
for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {
|
|
3394
|
-
dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 |
|
|
3398
|
+
dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | alphaMask;
|
|
3395
3399
|
}
|
|
3396
3400
|
} else {
|
|
3397
3401
|
for (; i < len32 - 2; i += 3, destPos += 4) {
|
|
3398
|
-
const s1 = src32[i]
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
dest[destPos] = s1 |
|
|
3402
|
-
dest[destPos + 1] = s1 << 24 | s2 >>> 8 |
|
|
3403
|
-
dest[destPos + 2] = s2 << 16 | s3 >>> 16 |
|
|
3404
|
-
dest[destPos + 3] = s3 << 8 |
|
|
3402
|
+
const s1 = src32[i],
|
|
3403
|
+
s2 = src32[i + 1],
|
|
3404
|
+
s3 = src32[i + 2];
|
|
3405
|
+
dest[destPos] = s1 | alphaMask;
|
|
3406
|
+
dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;
|
|
3407
|
+
dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;
|
|
3408
|
+
dest[destPos + 3] = s3 << 8 | alphaMask;
|
|
3405
3409
|
}
|
|
3406
3410
|
for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {
|
|
3407
|
-
dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 |
|
|
3411
|
+
dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | alphaMask;
|
|
3408
3412
|
}
|
|
3409
3413
|
}
|
|
3410
3414
|
return {
|
|
@@ -3429,7 +3433,7 @@ function grayToRGBA(src, dest) {
|
|
|
3429
3433
|
|
|
3430
3434
|
|
|
3431
3435
|
const MIN_IMAGE_DIM = 2048;
|
|
3432
|
-
const MAX_IMAGE_DIM =
|
|
3436
|
+
const MAX_IMAGE_DIM = 32768;
|
|
3433
3437
|
const MAX_ERROR = 128;
|
|
3434
3438
|
class ImageResizer {
|
|
3435
3439
|
static #goodSquareLength = MIN_IMAGE_DIM;
|
|
@@ -3858,7 +3862,7 @@ async function JBig2(moduleArg = {}) {
|
|
|
3858
3862
|
}
|
|
3859
3863
|
function initRuntime() {
|
|
3860
3864
|
runtimeInitialized = true;
|
|
3861
|
-
wasmExports["
|
|
3865
|
+
wasmExports["j"]();
|
|
3862
3866
|
}
|
|
3863
3867
|
function postRun() {
|
|
3864
3868
|
if (Module["postRun"]) {
|
|
@@ -3958,10 +3962,11 @@ async function JBig2(moduleArg = {}) {
|
|
|
3958
3962
|
return;
|
|
3959
3963
|
}
|
|
3960
3964
|
try {
|
|
3961
|
-
func();
|
|
3962
|
-
maybeExit();
|
|
3965
|
+
return func();
|
|
3963
3966
|
} catch (e) {
|
|
3964
3967
|
handleException(e);
|
|
3968
|
+
} finally {
|
|
3969
|
+
maybeExit();
|
|
3965
3970
|
}
|
|
3966
3971
|
};
|
|
3967
3972
|
var _emscripten_get_now = () => performance.now();
|
|
@@ -3981,6 +3986,9 @@ async function JBig2(moduleArg = {}) {
|
|
|
3981
3986
|
};
|
|
3982
3987
|
return 0;
|
|
3983
3988
|
};
|
|
3989
|
+
function _createImageData(size) {
|
|
3990
|
+
Module.imageData = new Uint8Array(size);
|
|
3991
|
+
}
|
|
3984
3992
|
var getHeapMax = () => 2147483648;
|
|
3985
3993
|
var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
|
|
3986
3994
|
var growMemory = size => {
|
|
@@ -4021,6 +4029,9 @@ async function JBig2(moduleArg = {}) {
|
|
|
4021
4029
|
imageData.set(HEAPU8.subarray(srcStart, srcStart + pitch8), destStart);
|
|
4022
4030
|
}
|
|
4023
4031
|
}
|
|
4032
|
+
function _setLineData(line_ptr, pitch8, offset) {
|
|
4033
|
+
Module.imageData.set(HEAPU8.subarray(line_ptr, line_ptr + pitch8), offset);
|
|
4034
|
+
}
|
|
4024
4035
|
var writeArrayToMemory = (array, buffer) => {
|
|
4025
4036
|
HEAP8.set(array, buffer);
|
|
4026
4037
|
};
|
|
@@ -4037,22 +4048,25 @@ async function JBig2(moduleArg = {}) {
|
|
|
4037
4048
|
}
|
|
4038
4049
|
}
|
|
4039
4050
|
Module["writeArrayToMemory"] = writeArrayToMemory;
|
|
4040
|
-
var _malloc, _free, _jbig2_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;
|
|
4051
|
+
var _malloc, _free, _jbig2_decode, _ccitt_decode, __emscripten_timeout, memory, __indirect_function_table, wasmMemory;
|
|
4041
4052
|
function assignWasmExports(wasmExports) {
|
|
4042
|
-
_malloc = Module["_malloc"] = wasmExports["
|
|
4043
|
-
_free = Module["_free"] = wasmExports["
|
|
4044
|
-
_jbig2_decode = Module["_jbig2_decode"] = wasmExports["
|
|
4045
|
-
|
|
4046
|
-
|
|
4053
|
+
_malloc = Module["_malloc"] = wasmExports["k"];
|
|
4054
|
+
_free = Module["_free"] = wasmExports["l"];
|
|
4055
|
+
_jbig2_decode = Module["_jbig2_decode"] = wasmExports["m"];
|
|
4056
|
+
_ccitt_decode = Module["_ccitt_decode"] = wasmExports["n"];
|
|
4057
|
+
__emscripten_timeout = wasmExports["o"];
|
|
4058
|
+
memory = wasmMemory = wasmExports["i"];
|
|
4047
4059
|
__indirect_function_table = wasmExports["__indirect_function_table"];
|
|
4048
4060
|
}
|
|
4049
4061
|
var wasmImports = {
|
|
4050
4062
|
e: __abort_js,
|
|
4051
4063
|
b: __emscripten_runtime_keepalive_clear,
|
|
4052
4064
|
c: __setitimer_js,
|
|
4065
|
+
g: _createImageData,
|
|
4053
4066
|
d: _emscripten_resize_heap,
|
|
4054
4067
|
a: _proc_exit,
|
|
4055
|
-
|
|
4068
|
+
h: _setImageData,
|
|
4069
|
+
f: _setLineData
|
|
4056
4070
|
};
|
|
4057
4071
|
function run() {
|
|
4058
4072
|
preRun();
|
|
@@ -4088,7 +4102,7 @@ async function JBig2(moduleArg = {}) {
|
|
|
4088
4102
|
return moduleRtn;
|
|
4089
4103
|
}
|
|
4090
4104
|
/* harmony default export */ const jbig2 = (JBig2);
|
|
4091
|
-
;// ./src/core/
|
|
4105
|
+
;// ./src/core/jbig2_ccittFax_wasm.js
|
|
4092
4106
|
|
|
4093
4107
|
|
|
4094
4108
|
|
|
@@ -4097,7 +4111,7 @@ class JBig2Error extends BaseException {
|
|
|
4097
4111
|
super(msg, "Jbig2Error");
|
|
4098
4112
|
}
|
|
4099
4113
|
}
|
|
4100
|
-
class
|
|
4114
|
+
class JBig2CCITTFaxWasmImage {
|
|
4101
4115
|
static #buffer = null;
|
|
4102
4116
|
static #handler = null;
|
|
4103
4117
|
static #modulePromise = null;
|
|
@@ -4139,7 +4153,7 @@ class JBig2WasmImage {
|
|
|
4139
4153
|
this.#handler = null;
|
|
4140
4154
|
}
|
|
4141
4155
|
}
|
|
4142
|
-
static async decode(bytes, width, height, globals) {
|
|
4156
|
+
static async decode(bytes, width, height, globals, CCITTOptions) {
|
|
4143
4157
|
if (!this.#modulePromise) {
|
|
4144
4158
|
const {
|
|
4145
4159
|
promise,
|
|
@@ -4165,12 +4179,16 @@ class JBig2WasmImage {
|
|
|
4165
4179
|
const size = bytes.length;
|
|
4166
4180
|
ptr = module._malloc(size);
|
|
4167
4181
|
module.writeArrayToMemory(bytes, ptr);
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
|
|
4182
|
+
if (CCITTOptions) {
|
|
4183
|
+
module._ccitt_decode(ptr, size, width, height, CCITTOptions.K, CCITTOptions.EndOfLine ? 1 : 0, CCITTOptions.EncodedByteAlign ? 1 : 0, CCITTOptions.BlackIs1 ? 1 : 0, CCITTOptions.Columns, CCITTOptions.Rows);
|
|
4184
|
+
} else {
|
|
4185
|
+
const globalsSize = globals ? globals.length : 0;
|
|
4186
|
+
if (globalsSize > 0) {
|
|
4187
|
+
globalsPtr = module._malloc(globalsSize);
|
|
4188
|
+
module.writeArrayToMemory(globals, globalsPtr);
|
|
4189
|
+
}
|
|
4190
|
+
module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize);
|
|
4172
4191
|
}
|
|
4173
|
-
module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize);
|
|
4174
4192
|
if (!module.imageData) {
|
|
4175
4193
|
throw new JBig2Error("Unknown error");
|
|
4176
4194
|
}
|
|
@@ -4266,12 +4284,49 @@ class DecodeStream extends BaseStream {
|
|
|
4266
4284
|
async getImageData(length, decoderOptions) {
|
|
4267
4285
|
if (!this.canAsyncDecodeImageFromBuffer) {
|
|
4268
4286
|
if (this.isAsyncDecoder) {
|
|
4269
|
-
return this.decodeImage(null, decoderOptions);
|
|
4287
|
+
return this.decodeImage(null, length, decoderOptions);
|
|
4270
4288
|
}
|
|
4271
4289
|
return this.getBytes(length, decoderOptions);
|
|
4272
4290
|
}
|
|
4273
4291
|
const data = await this.stream.asyncGetBytes();
|
|
4274
|
-
return this.decodeImage(data, decoderOptions);
|
|
4292
|
+
return this.decodeImage(data, length, decoderOptions);
|
|
4293
|
+
}
|
|
4294
|
+
async asyncGetBytesFromDecompressionStream(name) {
|
|
4295
|
+
this.stream.reset();
|
|
4296
|
+
const bytes = this.stream.isAsync ? await this.stream.asyncGetBytes() : this.stream.getBytes();
|
|
4297
|
+
try {
|
|
4298
|
+
const {
|
|
4299
|
+
readable,
|
|
4300
|
+
writable
|
|
4301
|
+
} = new DecompressionStream(name);
|
|
4302
|
+
const writer = writable.getWriter();
|
|
4303
|
+
await writer.ready;
|
|
4304
|
+
writer.write(bytes).then(async () => {
|
|
4305
|
+
await writer.ready;
|
|
4306
|
+
await writer.close();
|
|
4307
|
+
}).catch(() => {});
|
|
4308
|
+
const chunks = [];
|
|
4309
|
+
let totalLength = 0;
|
|
4310
|
+
for await (const chunk of readable) {
|
|
4311
|
+
chunks.push(chunk);
|
|
4312
|
+
totalLength += chunk.byteLength;
|
|
4313
|
+
}
|
|
4314
|
+
const data = new Uint8Array(totalLength);
|
|
4315
|
+
let offset = 0;
|
|
4316
|
+
for (const chunk of chunks) {
|
|
4317
|
+
data.set(chunk, offset);
|
|
4318
|
+
offset += chunk.byteLength;
|
|
4319
|
+
}
|
|
4320
|
+
return {
|
|
4321
|
+
decompressed: data,
|
|
4322
|
+
compressed: bytes
|
|
4323
|
+
};
|
|
4324
|
+
} catch {
|
|
4325
|
+
return {
|
|
4326
|
+
decompressed: null,
|
|
4327
|
+
compressed: bytes
|
|
4328
|
+
};
|
|
4329
|
+
}
|
|
4275
4330
|
}
|
|
4276
4331
|
reset() {
|
|
4277
4332
|
this.pos = 0;
|
|
@@ -7489,6 +7544,1982 @@ class AsciiHexStream extends DecodeStream {
|
|
|
7489
7544
|
}
|
|
7490
7545
|
}
|
|
7491
7546
|
|
|
7547
|
+
;// ./external/brotli/decode.js
|
|
7548
|
+
let Options;
|
|
7549
|
+
let makeBrotliDecode = () => {
|
|
7550
|
+
const MAX_HUFFMAN_TABLE_SIZE = Int32Array.from([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]);
|
|
7551
|
+
const CODE_LENGTH_CODE_ORDER = Int32Array.from([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
|
|
7552
|
+
const DISTANCE_SHORT_CODE_INDEX_OFFSET = Int32Array.from([0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3]);
|
|
7553
|
+
const DISTANCE_SHORT_CODE_VALUE_OFFSET = Int32Array.from([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]);
|
|
7554
|
+
const FIXED_TABLE = Int32Array.from([0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040001, 0x020000, 0x020004, 0x020003, 0x030002, 0x020000, 0x020004, 0x020003, 0x040005]);
|
|
7555
|
+
const BLOCK_LENGTH_OFFSET = Int32Array.from([1, 5, 9, 13, 17, 25, 33, 41, 49, 65, 81, 97, 113, 145, 177, 209, 241, 305, 369, 497, 753, 1265, 2289, 4337, 8433, 16625]);
|
|
7556
|
+
const BLOCK_LENGTH_N_BITS = Int32Array.from([2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 24]);
|
|
7557
|
+
const INSERT_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18]);
|
|
7558
|
+
const COPY_LENGTH_N_BITS = Int16Array.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18]);
|
|
7559
|
+
const CMD_LOOKUP = new Int16Array(2816);
|
|
7560
|
+
unpackCommandLookupTable(CMD_LOOKUP);
|
|
7561
|
+
function log2floor(i) {
|
|
7562
|
+
let result = -1;
|
|
7563
|
+
let step = 16;
|
|
7564
|
+
let v = i;
|
|
7565
|
+
while (step > 0) {
|
|
7566
|
+
let next = v >> step;
|
|
7567
|
+
if (next !== 0) {
|
|
7568
|
+
result += step;
|
|
7569
|
+
v = next;
|
|
7570
|
+
}
|
|
7571
|
+
step = step >> 1;
|
|
7572
|
+
}
|
|
7573
|
+
return result + v;
|
|
7574
|
+
}
|
|
7575
|
+
function calculateDistanceAlphabetSize(npostfix, ndirect, maxndistbits) {
|
|
7576
|
+
return 16 + ndirect + 2 * (maxndistbits << npostfix);
|
|
7577
|
+
}
|
|
7578
|
+
function calculateDistanceAlphabetLimit(s, maxDistance, npostfix, ndirect) {
|
|
7579
|
+
if (maxDistance < ndirect + (2 << npostfix)) {
|
|
7580
|
+
return makeError(s, -23);
|
|
7581
|
+
}
|
|
7582
|
+
const offset = (maxDistance - ndirect >> npostfix) + 4;
|
|
7583
|
+
const ndistbits = log2floor(offset) - 1;
|
|
7584
|
+
const group = ndistbits - 1 << 1 | offset >> ndistbits & 1;
|
|
7585
|
+
return (group - 1 << npostfix) + (1 << npostfix) + ndirect + 16;
|
|
7586
|
+
}
|
|
7587
|
+
function unpackCommandLookupTable(cmdLookup) {
|
|
7588
|
+
const insertLengthOffsets = new Int32Array(24);
|
|
7589
|
+
const copyLengthOffsets = new Int32Array(24);
|
|
7590
|
+
copyLengthOffsets[0] = 2;
|
|
7591
|
+
for (let i = 0; i < 23; ++i) {
|
|
7592
|
+
insertLengthOffsets[i + 1] = insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i]);
|
|
7593
|
+
copyLengthOffsets[i + 1] = copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i]);
|
|
7594
|
+
}
|
|
7595
|
+
for (let cmdCode = 0; cmdCode < 704; ++cmdCode) {
|
|
7596
|
+
let rangeIdx = cmdCode >> 6;
|
|
7597
|
+
let distanceContextOffset = -4;
|
|
7598
|
+
if (rangeIdx >= 2) {
|
|
7599
|
+
rangeIdx -= 2;
|
|
7600
|
+
distanceContextOffset = 0;
|
|
7601
|
+
}
|
|
7602
|
+
const insertCode = (0x29850 >> rangeIdx * 2 & 0x3) << 3 | cmdCode >> 3 & 7;
|
|
7603
|
+
const copyCode = (0x26244 >> rangeIdx * 2 & 0x3) << 3 | cmdCode & 7;
|
|
7604
|
+
const copyLengthOffset = copyLengthOffsets[copyCode];
|
|
7605
|
+
const distanceContext = distanceContextOffset + Math.min(copyLengthOffset, 5) - 2;
|
|
7606
|
+
const index = cmdCode * 4;
|
|
7607
|
+
cmdLookup[index] = INSERT_LENGTH_N_BITS[insertCode] | COPY_LENGTH_N_BITS[copyCode] << 8;
|
|
7608
|
+
cmdLookup[index + 1] = insertLengthOffsets[insertCode];
|
|
7609
|
+
cmdLookup[index + 2] = copyLengthOffsets[copyCode];
|
|
7610
|
+
cmdLookup[index + 3] = distanceContext;
|
|
7611
|
+
}
|
|
7612
|
+
}
|
|
7613
|
+
function decodeWindowBits(s) {
|
|
7614
|
+
const largeWindowEnabled = s.isLargeWindow;
|
|
7615
|
+
s.isLargeWindow = 0;
|
|
7616
|
+
if (s.bitOffset >= 16) {
|
|
7617
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7618
|
+
s.bitOffset -= 16;
|
|
7619
|
+
}
|
|
7620
|
+
if (readFewBits(s, 1) === 0) {
|
|
7621
|
+
return 16;
|
|
7622
|
+
}
|
|
7623
|
+
let n = readFewBits(s, 3);
|
|
7624
|
+
if (n !== 0) {
|
|
7625
|
+
return 17 + n;
|
|
7626
|
+
}
|
|
7627
|
+
n = readFewBits(s, 3);
|
|
7628
|
+
if (n !== 0) {
|
|
7629
|
+
if (n === 1) {
|
|
7630
|
+
if (largeWindowEnabled === 0) {
|
|
7631
|
+
return -1;
|
|
7632
|
+
}
|
|
7633
|
+
s.isLargeWindow = 1;
|
|
7634
|
+
if (readFewBits(s, 1) === 1) {
|
|
7635
|
+
return -1;
|
|
7636
|
+
}
|
|
7637
|
+
n = readFewBits(s, 6);
|
|
7638
|
+
if (n < 10 || n > 30) {
|
|
7639
|
+
return -1;
|
|
7640
|
+
}
|
|
7641
|
+
return n;
|
|
7642
|
+
}
|
|
7643
|
+
return 8 + n;
|
|
7644
|
+
}
|
|
7645
|
+
return 17;
|
|
7646
|
+
}
|
|
7647
|
+
function attachDictionaryChunk(s, data) {
|
|
7648
|
+
if (s.runningState !== 1) {
|
|
7649
|
+
return makeError(s, -24);
|
|
7650
|
+
}
|
|
7651
|
+
if (s.cdNumChunks === 0) {
|
|
7652
|
+
s.cdChunks = new Array(16);
|
|
7653
|
+
s.cdChunkOffsets = new Int32Array(16);
|
|
7654
|
+
s.cdBlockBits = -1;
|
|
7655
|
+
}
|
|
7656
|
+
if (s.cdNumChunks === 15) {
|
|
7657
|
+
return makeError(s, -27);
|
|
7658
|
+
}
|
|
7659
|
+
s.cdChunks[s.cdNumChunks] = data;
|
|
7660
|
+
s.cdNumChunks++;
|
|
7661
|
+
s.cdTotalSize += data.length;
|
|
7662
|
+
s.cdChunkOffsets[s.cdNumChunks] = s.cdTotalSize;
|
|
7663
|
+
return 0;
|
|
7664
|
+
}
|
|
7665
|
+
function initState(s) {
|
|
7666
|
+
if (s.runningState !== 0) {
|
|
7667
|
+
return makeError(s, -26);
|
|
7668
|
+
}
|
|
7669
|
+
s.blockTrees = new Int32Array(3091);
|
|
7670
|
+
s.blockTrees[0] = 7;
|
|
7671
|
+
s.distRbIdx = 3;
|
|
7672
|
+
let result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, 3, 120);
|
|
7673
|
+
if (result < 0) {
|
|
7674
|
+
return result;
|
|
7675
|
+
}
|
|
7676
|
+
const maxDistanceAlphabetLimit = result;
|
|
7677
|
+
s.distExtraBits = new Int8Array(maxDistanceAlphabetLimit);
|
|
7678
|
+
s.distOffset = new Int32Array(maxDistanceAlphabetLimit);
|
|
7679
|
+
result = initBitReader(s);
|
|
7680
|
+
if (result < 0) {
|
|
7681
|
+
return result;
|
|
7682
|
+
}
|
|
7683
|
+
s.runningState = 1;
|
|
7684
|
+
return 0;
|
|
7685
|
+
}
|
|
7686
|
+
function close(s) {
|
|
7687
|
+
if (s.runningState === 0) {
|
|
7688
|
+
return makeError(s, -25);
|
|
7689
|
+
}
|
|
7690
|
+
if (s.runningState > 0) {
|
|
7691
|
+
s.runningState = 11;
|
|
7692
|
+
}
|
|
7693
|
+
return 0;
|
|
7694
|
+
}
|
|
7695
|
+
function decodeVarLenUnsignedByte(s) {
|
|
7696
|
+
if (s.bitOffset >= 16) {
|
|
7697
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7698
|
+
s.bitOffset -= 16;
|
|
7699
|
+
}
|
|
7700
|
+
if (readFewBits(s, 1) !== 0) {
|
|
7701
|
+
const n = readFewBits(s, 3);
|
|
7702
|
+
if (n === 0) {
|
|
7703
|
+
return 1;
|
|
7704
|
+
}
|
|
7705
|
+
return readFewBits(s, n) + (1 << n);
|
|
7706
|
+
}
|
|
7707
|
+
return 0;
|
|
7708
|
+
}
|
|
7709
|
+
function decodeMetaBlockLength(s) {
|
|
7710
|
+
if (s.bitOffset >= 16) {
|
|
7711
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7712
|
+
s.bitOffset -= 16;
|
|
7713
|
+
}
|
|
7714
|
+
s.inputEnd = readFewBits(s, 1);
|
|
7715
|
+
s.metaBlockLength = 0;
|
|
7716
|
+
s.isUncompressed = 0;
|
|
7717
|
+
s.isMetadata = 0;
|
|
7718
|
+
if (s.inputEnd !== 0 && readFewBits(s, 1) !== 0) {
|
|
7719
|
+
return 0;
|
|
7720
|
+
}
|
|
7721
|
+
const sizeNibbles = readFewBits(s, 2) + 4;
|
|
7722
|
+
if (sizeNibbles === 7) {
|
|
7723
|
+
s.isMetadata = 1;
|
|
7724
|
+
if (readFewBits(s, 1) !== 0) {
|
|
7725
|
+
return makeError(s, -6);
|
|
7726
|
+
}
|
|
7727
|
+
const sizeBytes = readFewBits(s, 2);
|
|
7728
|
+
if (sizeBytes === 0) {
|
|
7729
|
+
return 0;
|
|
7730
|
+
}
|
|
7731
|
+
for (let i = 0; i < sizeBytes; ++i) {
|
|
7732
|
+
if (s.bitOffset >= 16) {
|
|
7733
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7734
|
+
s.bitOffset -= 16;
|
|
7735
|
+
}
|
|
7736
|
+
const bits = readFewBits(s, 8);
|
|
7737
|
+
if (bits === 0 && i + 1 === sizeBytes && sizeBytes > 1) {
|
|
7738
|
+
return makeError(s, -8);
|
|
7739
|
+
}
|
|
7740
|
+
s.metaBlockLength += bits << i * 8;
|
|
7741
|
+
}
|
|
7742
|
+
} else {
|
|
7743
|
+
for (let i = 0; i < sizeNibbles; ++i) {
|
|
7744
|
+
if (s.bitOffset >= 16) {
|
|
7745
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7746
|
+
s.bitOffset -= 16;
|
|
7747
|
+
}
|
|
7748
|
+
const bits = readFewBits(s, 4);
|
|
7749
|
+
if (bits === 0 && i + 1 === sizeNibbles && sizeNibbles > 4) {
|
|
7750
|
+
return makeError(s, -8);
|
|
7751
|
+
}
|
|
7752
|
+
s.metaBlockLength += bits << i * 4;
|
|
7753
|
+
}
|
|
7754
|
+
}
|
|
7755
|
+
s.metaBlockLength++;
|
|
7756
|
+
if (s.inputEnd === 0) {
|
|
7757
|
+
s.isUncompressed = readFewBits(s, 1);
|
|
7758
|
+
}
|
|
7759
|
+
return 0;
|
|
7760
|
+
}
|
|
7761
|
+
function readSymbol(tableGroup, tableIdx, s) {
|
|
7762
|
+
let offset = tableGroup[tableIdx];
|
|
7763
|
+
const v = s.accumulator32 >>> s.bitOffset;
|
|
7764
|
+
offset += v & 0xFF;
|
|
7765
|
+
const bits = tableGroup[offset] >> 16;
|
|
7766
|
+
const sym = tableGroup[offset] & 0xFFFF;
|
|
7767
|
+
if (bits <= 8) {
|
|
7768
|
+
s.bitOffset += bits;
|
|
7769
|
+
return sym;
|
|
7770
|
+
}
|
|
7771
|
+
offset += sym;
|
|
7772
|
+
const mask = (1 << bits) - 1;
|
|
7773
|
+
offset += (v & mask) >>> 8;
|
|
7774
|
+
s.bitOffset += (tableGroup[offset] >> 16) + 8;
|
|
7775
|
+
return tableGroup[offset] & 0xFFFF;
|
|
7776
|
+
}
|
|
7777
|
+
function readBlockLength(tableGroup, tableIdx, s) {
|
|
7778
|
+
if (s.bitOffset >= 16) {
|
|
7779
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7780
|
+
s.bitOffset -= 16;
|
|
7781
|
+
}
|
|
7782
|
+
const code = readSymbol(tableGroup, tableIdx, s);
|
|
7783
|
+
const n = BLOCK_LENGTH_N_BITS[code];
|
|
7784
|
+
if (s.bitOffset >= 16) {
|
|
7785
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7786
|
+
s.bitOffset -= 16;
|
|
7787
|
+
}
|
|
7788
|
+
return BLOCK_LENGTH_OFFSET[code] + (n <= 16 ? readFewBits(s, n) : readManyBits(s, n));
|
|
7789
|
+
}
|
|
7790
|
+
function moveToFront(v, index) {
|
|
7791
|
+
let i = index;
|
|
7792
|
+
const value = v[i];
|
|
7793
|
+
while (i > 0) {
|
|
7794
|
+
v[i] = v[i - 1];
|
|
7795
|
+
i--;
|
|
7796
|
+
}
|
|
7797
|
+
v[0] = value;
|
|
7798
|
+
}
|
|
7799
|
+
function inverseMoveToFrontTransform(v, vLen) {
|
|
7800
|
+
const mtf = new Int32Array(256);
|
|
7801
|
+
for (let i = 0; i < 256; ++i) {
|
|
7802
|
+
mtf[i] = i;
|
|
7803
|
+
}
|
|
7804
|
+
for (let i = 0; i < vLen; ++i) {
|
|
7805
|
+
const index = v[i] & 0xFF;
|
|
7806
|
+
v[i] = mtf[index];
|
|
7807
|
+
if (index !== 0) {
|
|
7808
|
+
moveToFront(mtf, index);
|
|
7809
|
+
}
|
|
7810
|
+
}
|
|
7811
|
+
}
|
|
7812
|
+
function readHuffmanCodeLengths(codeLengthCodeLengths, numSymbols, codeLengths, s) {
|
|
7813
|
+
let symbol = 0;
|
|
7814
|
+
let prevCodeLen = 8;
|
|
7815
|
+
let repeat = 0;
|
|
7816
|
+
let repeatCodeLen = 0;
|
|
7817
|
+
let space = 32768;
|
|
7818
|
+
const table = new Int32Array(33);
|
|
7819
|
+
const tableIdx = table.length - 1;
|
|
7820
|
+
buildHuffmanTable(table, tableIdx, 5, codeLengthCodeLengths, 18);
|
|
7821
|
+
while (symbol < numSymbols && space > 0) {
|
|
7822
|
+
if (s.halfOffset > 2030) {
|
|
7823
|
+
const result = readMoreInput(s);
|
|
7824
|
+
if (result < 0) {
|
|
7825
|
+
return result;
|
|
7826
|
+
}
|
|
7827
|
+
}
|
|
7828
|
+
if (s.bitOffset >= 16) {
|
|
7829
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7830
|
+
s.bitOffset -= 16;
|
|
7831
|
+
}
|
|
7832
|
+
const p = s.accumulator32 >>> s.bitOffset & 31;
|
|
7833
|
+
s.bitOffset += table[p] >> 16;
|
|
7834
|
+
const codeLen = table[p] & 0xFFFF;
|
|
7835
|
+
if (codeLen < 16) {
|
|
7836
|
+
repeat = 0;
|
|
7837
|
+
codeLengths[symbol++] = codeLen;
|
|
7838
|
+
if (codeLen !== 0) {
|
|
7839
|
+
prevCodeLen = codeLen;
|
|
7840
|
+
space -= 32768 >> codeLen;
|
|
7841
|
+
}
|
|
7842
|
+
} else {
|
|
7843
|
+
const extraBits = codeLen - 14;
|
|
7844
|
+
let newLen = 0;
|
|
7845
|
+
if (codeLen === 16) {
|
|
7846
|
+
newLen = prevCodeLen;
|
|
7847
|
+
}
|
|
7848
|
+
if (repeatCodeLen !== newLen) {
|
|
7849
|
+
repeat = 0;
|
|
7850
|
+
repeatCodeLen = newLen;
|
|
7851
|
+
}
|
|
7852
|
+
const oldRepeat = repeat;
|
|
7853
|
+
if (repeat > 0) {
|
|
7854
|
+
repeat -= 2;
|
|
7855
|
+
repeat = repeat << extraBits;
|
|
7856
|
+
}
|
|
7857
|
+
if (s.bitOffset >= 16) {
|
|
7858
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7859
|
+
s.bitOffset -= 16;
|
|
7860
|
+
}
|
|
7861
|
+
repeat += readFewBits(s, extraBits) + 3;
|
|
7862
|
+
const repeatDelta = repeat - oldRepeat;
|
|
7863
|
+
if (symbol + repeatDelta > numSymbols) {
|
|
7864
|
+
return makeError(s, -2);
|
|
7865
|
+
}
|
|
7866
|
+
for (let i = 0; i < repeatDelta; ++i) {
|
|
7867
|
+
codeLengths[symbol++] = repeatCodeLen;
|
|
7868
|
+
}
|
|
7869
|
+
if (repeatCodeLen !== 0) {
|
|
7870
|
+
space -= repeatDelta << 15 - repeatCodeLen;
|
|
7871
|
+
}
|
|
7872
|
+
}
|
|
7873
|
+
}
|
|
7874
|
+
if (space !== 0) {
|
|
7875
|
+
return makeError(s, -18);
|
|
7876
|
+
}
|
|
7877
|
+
codeLengths.fill(0, symbol, numSymbols);
|
|
7878
|
+
return 0;
|
|
7879
|
+
}
|
|
7880
|
+
function checkDupes(s, symbols, length) {
|
|
7881
|
+
for (let i = 0; i < length - 1; ++i) {
|
|
7882
|
+
for (let j = i + 1; j < length; ++j) {
|
|
7883
|
+
if (symbols[i] === symbols[j]) {
|
|
7884
|
+
return makeError(s, -7);
|
|
7885
|
+
}
|
|
7886
|
+
}
|
|
7887
|
+
}
|
|
7888
|
+
return 0;
|
|
7889
|
+
}
|
|
7890
|
+
function readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {
|
|
7891
|
+
const codeLengths = new Int32Array(alphabetSizeLimit);
|
|
7892
|
+
const symbols = new Int32Array(4);
|
|
7893
|
+
const maxBits = 1 + log2floor(alphabetSizeMax - 1);
|
|
7894
|
+
const numSymbols = readFewBits(s, 2) + 1;
|
|
7895
|
+
for (let i = 0; i < numSymbols; ++i) {
|
|
7896
|
+
if (s.bitOffset >= 16) {
|
|
7897
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7898
|
+
s.bitOffset -= 16;
|
|
7899
|
+
}
|
|
7900
|
+
const symbol = readFewBits(s, maxBits);
|
|
7901
|
+
if (symbol >= alphabetSizeLimit) {
|
|
7902
|
+
return makeError(s, -15);
|
|
7903
|
+
}
|
|
7904
|
+
symbols[i] = symbol;
|
|
7905
|
+
}
|
|
7906
|
+
const result = checkDupes(s, symbols, numSymbols);
|
|
7907
|
+
if (result < 0) {
|
|
7908
|
+
return result;
|
|
7909
|
+
}
|
|
7910
|
+
let histogramId = numSymbols;
|
|
7911
|
+
if (numSymbols === 4) {
|
|
7912
|
+
histogramId += readFewBits(s, 1);
|
|
7913
|
+
}
|
|
7914
|
+
switch (histogramId) {
|
|
7915
|
+
case 1:
|
|
7916
|
+
codeLengths[symbols[0]] = 1;
|
|
7917
|
+
break;
|
|
7918
|
+
case 2:
|
|
7919
|
+
codeLengths[symbols[0]] = 1;
|
|
7920
|
+
codeLengths[symbols[1]] = 1;
|
|
7921
|
+
break;
|
|
7922
|
+
case 3:
|
|
7923
|
+
codeLengths[symbols[0]] = 1;
|
|
7924
|
+
codeLengths[symbols[1]] = 2;
|
|
7925
|
+
codeLengths[symbols[2]] = 2;
|
|
7926
|
+
break;
|
|
7927
|
+
case 4:
|
|
7928
|
+
codeLengths[symbols[0]] = 2;
|
|
7929
|
+
codeLengths[symbols[1]] = 2;
|
|
7930
|
+
codeLengths[symbols[2]] = 2;
|
|
7931
|
+
codeLengths[symbols[3]] = 2;
|
|
7932
|
+
break;
|
|
7933
|
+
case 5:
|
|
7934
|
+
codeLengths[symbols[0]] = 1;
|
|
7935
|
+
codeLengths[symbols[1]] = 2;
|
|
7936
|
+
codeLengths[symbols[2]] = 3;
|
|
7937
|
+
codeLengths[symbols[3]] = 3;
|
|
7938
|
+
break;
|
|
7939
|
+
default:
|
|
7940
|
+
break;
|
|
7941
|
+
}
|
|
7942
|
+
return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);
|
|
7943
|
+
}
|
|
7944
|
+
function readComplexHuffmanCode(alphabetSizeLimit, skip, tableGroup, tableIdx, s) {
|
|
7945
|
+
const codeLengths = new Int32Array(alphabetSizeLimit);
|
|
7946
|
+
const codeLengthCodeLengths = new Int32Array(18);
|
|
7947
|
+
let space = 32;
|
|
7948
|
+
let numCodes = 0;
|
|
7949
|
+
for (let i = skip; i < 18; ++i) {
|
|
7950
|
+
const codeLenIdx = CODE_LENGTH_CODE_ORDER[i];
|
|
7951
|
+
if (s.bitOffset >= 16) {
|
|
7952
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7953
|
+
s.bitOffset -= 16;
|
|
7954
|
+
}
|
|
7955
|
+
const p = s.accumulator32 >>> s.bitOffset & 15;
|
|
7956
|
+
s.bitOffset += FIXED_TABLE[p] >> 16;
|
|
7957
|
+
const v = FIXED_TABLE[p] & 0xFFFF;
|
|
7958
|
+
codeLengthCodeLengths[codeLenIdx] = v;
|
|
7959
|
+
if (v !== 0) {
|
|
7960
|
+
space -= 32 >> v;
|
|
7961
|
+
numCodes++;
|
|
7962
|
+
if (space <= 0) {
|
|
7963
|
+
break;
|
|
7964
|
+
}
|
|
7965
|
+
}
|
|
7966
|
+
}
|
|
7967
|
+
if (space !== 0 && numCodes !== 1) {
|
|
7968
|
+
return makeError(s, -4);
|
|
7969
|
+
}
|
|
7970
|
+
const result = readHuffmanCodeLengths(codeLengthCodeLengths, alphabetSizeLimit, codeLengths, s);
|
|
7971
|
+
if (result < 0) {
|
|
7972
|
+
return result;
|
|
7973
|
+
}
|
|
7974
|
+
return buildHuffmanTable(tableGroup, tableIdx, 8, codeLengths, alphabetSizeLimit);
|
|
7975
|
+
}
|
|
7976
|
+
function readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s) {
|
|
7977
|
+
if (s.halfOffset > 2030) {
|
|
7978
|
+
const result = readMoreInput(s);
|
|
7979
|
+
if (result < 0) {
|
|
7980
|
+
return result;
|
|
7981
|
+
}
|
|
7982
|
+
}
|
|
7983
|
+
if (s.bitOffset >= 16) {
|
|
7984
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
7985
|
+
s.bitOffset -= 16;
|
|
7986
|
+
}
|
|
7987
|
+
const simpleCodeOrSkip = readFewBits(s, 2);
|
|
7988
|
+
if (simpleCodeOrSkip === 1) {
|
|
7989
|
+
return readSimpleHuffmanCode(alphabetSizeMax, alphabetSizeLimit, tableGroup, tableIdx, s);
|
|
7990
|
+
}
|
|
7991
|
+
return readComplexHuffmanCode(alphabetSizeLimit, simpleCodeOrSkip, tableGroup, tableIdx, s);
|
|
7992
|
+
}
|
|
7993
|
+
function decodeContextMap(contextMapSize, contextMap, s) {
|
|
7994
|
+
let result;
|
|
7995
|
+
if (s.halfOffset > 2030) {
|
|
7996
|
+
result = readMoreInput(s);
|
|
7997
|
+
if (result < 0) {
|
|
7998
|
+
return result;
|
|
7999
|
+
}
|
|
8000
|
+
}
|
|
8001
|
+
const numTrees = decodeVarLenUnsignedByte(s) + 1;
|
|
8002
|
+
if (numTrees === 1) {
|
|
8003
|
+
contextMap.fill(0, 0, contextMapSize);
|
|
8004
|
+
return numTrees;
|
|
8005
|
+
}
|
|
8006
|
+
if (s.bitOffset >= 16) {
|
|
8007
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8008
|
+
s.bitOffset -= 16;
|
|
8009
|
+
}
|
|
8010
|
+
const useRleForZeros = readFewBits(s, 1);
|
|
8011
|
+
let maxRunLengthPrefix = 0;
|
|
8012
|
+
if (useRleForZeros !== 0) {
|
|
8013
|
+
maxRunLengthPrefix = readFewBits(s, 4) + 1;
|
|
8014
|
+
}
|
|
8015
|
+
const alphabetSize = numTrees + maxRunLengthPrefix;
|
|
8016
|
+
const tableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSize + 31 >> 5];
|
|
8017
|
+
const table = new Int32Array(tableSize + 1);
|
|
8018
|
+
const tableIdx = table.length - 1;
|
|
8019
|
+
result = readHuffmanCode(alphabetSize, alphabetSize, table, tableIdx, s);
|
|
8020
|
+
if (result < 0) {
|
|
8021
|
+
return result;
|
|
8022
|
+
}
|
|
8023
|
+
let i = 0;
|
|
8024
|
+
while (i < contextMapSize) {
|
|
8025
|
+
if (s.halfOffset > 2030) {
|
|
8026
|
+
result = readMoreInput(s);
|
|
8027
|
+
if (result < 0) {
|
|
8028
|
+
return result;
|
|
8029
|
+
}
|
|
8030
|
+
}
|
|
8031
|
+
if (s.bitOffset >= 16) {
|
|
8032
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8033
|
+
s.bitOffset -= 16;
|
|
8034
|
+
}
|
|
8035
|
+
const code = readSymbol(table, tableIdx, s);
|
|
8036
|
+
if (code === 0) {
|
|
8037
|
+
contextMap[i] = 0;
|
|
8038
|
+
i++;
|
|
8039
|
+
} else if (code <= maxRunLengthPrefix) {
|
|
8040
|
+
if (s.bitOffset >= 16) {
|
|
8041
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8042
|
+
s.bitOffset -= 16;
|
|
8043
|
+
}
|
|
8044
|
+
let reps = (1 << code) + readFewBits(s, code);
|
|
8045
|
+
while (reps !== 0) {
|
|
8046
|
+
if (i >= contextMapSize) {
|
|
8047
|
+
return makeError(s, -3);
|
|
8048
|
+
}
|
|
8049
|
+
contextMap[i] = 0;
|
|
8050
|
+
i++;
|
|
8051
|
+
reps--;
|
|
8052
|
+
}
|
|
8053
|
+
} else {
|
|
8054
|
+
contextMap[i] = code - maxRunLengthPrefix;
|
|
8055
|
+
i++;
|
|
8056
|
+
}
|
|
8057
|
+
}
|
|
8058
|
+
if (s.bitOffset >= 16) {
|
|
8059
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8060
|
+
s.bitOffset -= 16;
|
|
8061
|
+
}
|
|
8062
|
+
if (readFewBits(s, 1) === 1) {
|
|
8063
|
+
inverseMoveToFrontTransform(contextMap, contextMapSize);
|
|
8064
|
+
}
|
|
8065
|
+
return numTrees;
|
|
8066
|
+
}
|
|
8067
|
+
function decodeBlockTypeAndLength(s, treeType, numBlockTypes) {
|
|
8068
|
+
const ringBuffers = s.rings;
|
|
8069
|
+
const offset = 4 + treeType * 2;
|
|
8070
|
+
if (s.bitOffset >= 16) {
|
|
8071
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8072
|
+
s.bitOffset -= 16;
|
|
8073
|
+
}
|
|
8074
|
+
let blockType = readSymbol(s.blockTrees, 2 * treeType, s);
|
|
8075
|
+
const result = readBlockLength(s.blockTrees, 2 * treeType + 1, s);
|
|
8076
|
+
if (blockType === 1) {
|
|
8077
|
+
blockType = ringBuffers[offset + 1] + 1;
|
|
8078
|
+
} else if (blockType === 0) {
|
|
8079
|
+
blockType = ringBuffers[offset];
|
|
8080
|
+
} else {
|
|
8081
|
+
blockType -= 2;
|
|
8082
|
+
}
|
|
8083
|
+
if (blockType >= numBlockTypes) {
|
|
8084
|
+
blockType -= numBlockTypes;
|
|
8085
|
+
}
|
|
8086
|
+
ringBuffers[offset] = ringBuffers[offset + 1];
|
|
8087
|
+
ringBuffers[offset + 1] = blockType;
|
|
8088
|
+
return result;
|
|
8089
|
+
}
|
|
8090
|
+
function decodeLiteralBlockSwitch(s) {
|
|
8091
|
+
s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes);
|
|
8092
|
+
const literalBlockType = s.rings[5];
|
|
8093
|
+
s.contextMapSlice = literalBlockType << 6;
|
|
8094
|
+
s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF;
|
|
8095
|
+
const contextMode = s.contextModes[literalBlockType];
|
|
8096
|
+
s.contextLookupOffset1 = contextMode << 9;
|
|
8097
|
+
s.contextLookupOffset2 = s.contextLookupOffset1 + 256;
|
|
8098
|
+
}
|
|
8099
|
+
function decodeCommandBlockSwitch(s) {
|
|
8100
|
+
s.commandBlockLength = decodeBlockTypeAndLength(s, 1, s.numCommandBlockTypes);
|
|
8101
|
+
s.commandTreeIdx = s.rings[7];
|
|
8102
|
+
}
|
|
8103
|
+
function decodeDistanceBlockSwitch(s) {
|
|
8104
|
+
s.distanceBlockLength = decodeBlockTypeAndLength(s, 2, s.numDistanceBlockTypes);
|
|
8105
|
+
s.distContextMapSlice = s.rings[9] << 2;
|
|
8106
|
+
}
|
|
8107
|
+
function maybeReallocateRingBuffer(s) {
|
|
8108
|
+
let newSize = s.maxRingBufferSize;
|
|
8109
|
+
if (newSize > s.expectedTotalSize) {
|
|
8110
|
+
const minimalNewSize = s.expectedTotalSize;
|
|
8111
|
+
while (newSize >> 1 > minimalNewSize) {
|
|
8112
|
+
newSize = newSize >> 1;
|
|
8113
|
+
}
|
|
8114
|
+
if (s.inputEnd === 0 && newSize < 16384 && s.maxRingBufferSize >= 16384) {
|
|
8115
|
+
newSize = 16384;
|
|
8116
|
+
}
|
|
8117
|
+
}
|
|
8118
|
+
if (newSize <= s.ringBufferSize) {
|
|
8119
|
+
return;
|
|
8120
|
+
}
|
|
8121
|
+
const ringBufferSizeWithSlack = newSize + 37;
|
|
8122
|
+
const newBuffer = new Int8Array(ringBufferSizeWithSlack);
|
|
8123
|
+
const oldBuffer = s.ringBuffer;
|
|
8124
|
+
if (oldBuffer.length !== 0) {
|
|
8125
|
+
newBuffer.set(oldBuffer.subarray(0, s.ringBufferSize), 0);
|
|
8126
|
+
}
|
|
8127
|
+
s.ringBuffer = newBuffer;
|
|
8128
|
+
s.ringBufferSize = newSize;
|
|
8129
|
+
}
|
|
8130
|
+
function readNextMetablockHeader(s) {
|
|
8131
|
+
if (s.inputEnd !== 0) {
|
|
8132
|
+
s.nextRunningState = 10;
|
|
8133
|
+
s.runningState = 12;
|
|
8134
|
+
return 0;
|
|
8135
|
+
}
|
|
8136
|
+
s.literalTreeGroup = new Int32Array(0);
|
|
8137
|
+
s.commandTreeGroup = new Int32Array(0);
|
|
8138
|
+
s.distanceTreeGroup = new Int32Array(0);
|
|
8139
|
+
let result;
|
|
8140
|
+
if (s.halfOffset > 2030) {
|
|
8141
|
+
result = readMoreInput(s);
|
|
8142
|
+
if (result < 0) {
|
|
8143
|
+
return result;
|
|
8144
|
+
}
|
|
8145
|
+
}
|
|
8146
|
+
result = decodeMetaBlockLength(s);
|
|
8147
|
+
if (result < 0) {
|
|
8148
|
+
return result;
|
|
8149
|
+
}
|
|
8150
|
+
if (s.metaBlockLength === 0 && s.isMetadata === 0) {
|
|
8151
|
+
return 0;
|
|
8152
|
+
}
|
|
8153
|
+
if (s.isUncompressed !== 0 || s.isMetadata !== 0) {
|
|
8154
|
+
result = jumpToByteBoundary(s);
|
|
8155
|
+
if (result < 0) {
|
|
8156
|
+
return result;
|
|
8157
|
+
}
|
|
8158
|
+
if (s.isMetadata === 0) {
|
|
8159
|
+
s.runningState = 6;
|
|
8160
|
+
} else {
|
|
8161
|
+
s.runningState = 5;
|
|
8162
|
+
}
|
|
8163
|
+
} else {
|
|
8164
|
+
s.runningState = 3;
|
|
8165
|
+
}
|
|
8166
|
+
if (s.isMetadata !== 0) {
|
|
8167
|
+
return 0;
|
|
8168
|
+
}
|
|
8169
|
+
s.expectedTotalSize += s.metaBlockLength;
|
|
8170
|
+
if (s.expectedTotalSize > 1 << 30) {
|
|
8171
|
+
s.expectedTotalSize = 1 << 30;
|
|
8172
|
+
}
|
|
8173
|
+
if (s.ringBufferSize < s.maxRingBufferSize) {
|
|
8174
|
+
maybeReallocateRingBuffer(s);
|
|
8175
|
+
}
|
|
8176
|
+
return 0;
|
|
8177
|
+
}
|
|
8178
|
+
function readMetablockPartition(s, treeType, numBlockTypes) {
|
|
8179
|
+
let offset = s.blockTrees[2 * treeType];
|
|
8180
|
+
if (numBlockTypes <= 1) {
|
|
8181
|
+
s.blockTrees[2 * treeType + 1] = offset;
|
|
8182
|
+
s.blockTrees[2 * treeType + 2] = offset;
|
|
8183
|
+
return 1 << 28;
|
|
8184
|
+
}
|
|
8185
|
+
const blockTypeAlphabetSize = numBlockTypes + 2;
|
|
8186
|
+
let result = readHuffmanCode(blockTypeAlphabetSize, blockTypeAlphabetSize, s.blockTrees, 2 * treeType, s);
|
|
8187
|
+
if (result < 0) {
|
|
8188
|
+
return result;
|
|
8189
|
+
}
|
|
8190
|
+
offset += result;
|
|
8191
|
+
s.blockTrees[2 * treeType + 1] = offset;
|
|
8192
|
+
const blockLengthAlphabetSize = 26;
|
|
8193
|
+
result = readHuffmanCode(blockLengthAlphabetSize, blockLengthAlphabetSize, s.blockTrees, 2 * treeType + 1, s);
|
|
8194
|
+
if (result < 0) {
|
|
8195
|
+
return result;
|
|
8196
|
+
}
|
|
8197
|
+
offset += result;
|
|
8198
|
+
s.blockTrees[2 * treeType + 2] = offset;
|
|
8199
|
+
return readBlockLength(s.blockTrees, 2 * treeType + 1, s);
|
|
8200
|
+
}
|
|
8201
|
+
function calculateDistanceLut(s, alphabetSizeLimit) {
|
|
8202
|
+
const distExtraBits = s.distExtraBits;
|
|
8203
|
+
const distOffset = s.distOffset;
|
|
8204
|
+
const npostfix = s.distancePostfixBits;
|
|
8205
|
+
const ndirect = s.numDirectDistanceCodes;
|
|
8206
|
+
const postfix = 1 << npostfix;
|
|
8207
|
+
let bits = 1;
|
|
8208
|
+
let half = 0;
|
|
8209
|
+
let i = 16;
|
|
8210
|
+
for (let j = 0; j < ndirect; ++j) {
|
|
8211
|
+
distExtraBits[i] = 0;
|
|
8212
|
+
distOffset[i] = j + 1;
|
|
8213
|
+
++i;
|
|
8214
|
+
}
|
|
8215
|
+
while (i < alphabetSizeLimit) {
|
|
8216
|
+
const base = ndirect + ((2 + half << bits) - 4 << npostfix) + 1;
|
|
8217
|
+
for (let j = 0; j < postfix; ++j) {
|
|
8218
|
+
distExtraBits[i] = bits;
|
|
8219
|
+
distOffset[i] = base + j;
|
|
8220
|
+
++i;
|
|
8221
|
+
}
|
|
8222
|
+
bits = bits + half;
|
|
8223
|
+
half = half ^ 1;
|
|
8224
|
+
}
|
|
8225
|
+
}
|
|
8226
|
+
function readMetablockHuffmanCodesAndContextMaps(s) {
|
|
8227
|
+
s.numLiteralBlockTypes = decodeVarLenUnsignedByte(s) + 1;
|
|
8228
|
+
let result = readMetablockPartition(s, 0, s.numLiteralBlockTypes);
|
|
8229
|
+
if (result < 0) {
|
|
8230
|
+
return result;
|
|
8231
|
+
}
|
|
8232
|
+
s.literalBlockLength = result;
|
|
8233
|
+
s.numCommandBlockTypes = decodeVarLenUnsignedByte(s) + 1;
|
|
8234
|
+
result = readMetablockPartition(s, 1, s.numCommandBlockTypes);
|
|
8235
|
+
if (result < 0) {
|
|
8236
|
+
return result;
|
|
8237
|
+
}
|
|
8238
|
+
s.commandBlockLength = result;
|
|
8239
|
+
s.numDistanceBlockTypes = decodeVarLenUnsignedByte(s) + 1;
|
|
8240
|
+
result = readMetablockPartition(s, 2, s.numDistanceBlockTypes);
|
|
8241
|
+
if (result < 0) {
|
|
8242
|
+
return result;
|
|
8243
|
+
}
|
|
8244
|
+
s.distanceBlockLength = result;
|
|
8245
|
+
if (s.halfOffset > 2030) {
|
|
8246
|
+
result = readMoreInput(s);
|
|
8247
|
+
if (result < 0) {
|
|
8248
|
+
return result;
|
|
8249
|
+
}
|
|
8250
|
+
}
|
|
8251
|
+
if (s.bitOffset >= 16) {
|
|
8252
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8253
|
+
s.bitOffset -= 16;
|
|
8254
|
+
}
|
|
8255
|
+
s.distancePostfixBits = readFewBits(s, 2);
|
|
8256
|
+
s.numDirectDistanceCodes = readFewBits(s, 4) << s.distancePostfixBits;
|
|
8257
|
+
s.contextModes = new Int8Array(s.numLiteralBlockTypes);
|
|
8258
|
+
let i = 0;
|
|
8259
|
+
while (i < s.numLiteralBlockTypes) {
|
|
8260
|
+
const limit = Math.min(i + 96, s.numLiteralBlockTypes);
|
|
8261
|
+
while (i < limit) {
|
|
8262
|
+
if (s.bitOffset >= 16) {
|
|
8263
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8264
|
+
s.bitOffset -= 16;
|
|
8265
|
+
}
|
|
8266
|
+
s.contextModes[i] = readFewBits(s, 2);
|
|
8267
|
+
i++;
|
|
8268
|
+
}
|
|
8269
|
+
if (s.halfOffset > 2030) {
|
|
8270
|
+
result = readMoreInput(s);
|
|
8271
|
+
if (result < 0) {
|
|
8272
|
+
return result;
|
|
8273
|
+
}
|
|
8274
|
+
}
|
|
8275
|
+
}
|
|
8276
|
+
const contextMapLength = s.numLiteralBlockTypes << 6;
|
|
8277
|
+
s.contextMap = new Int8Array(contextMapLength);
|
|
8278
|
+
result = decodeContextMap(contextMapLength, s.contextMap, s);
|
|
8279
|
+
if (result < 0) {
|
|
8280
|
+
return result;
|
|
8281
|
+
}
|
|
8282
|
+
const numLiteralTrees = result;
|
|
8283
|
+
s.trivialLiteralContext = 1;
|
|
8284
|
+
for (let j = 0; j < contextMapLength; ++j) {
|
|
8285
|
+
if (s.contextMap[j] !== j >> 6) {
|
|
8286
|
+
s.trivialLiteralContext = 0;
|
|
8287
|
+
break;
|
|
8288
|
+
}
|
|
8289
|
+
}
|
|
8290
|
+
s.distContextMap = new Int8Array(s.numDistanceBlockTypes << 2);
|
|
8291
|
+
result = decodeContextMap(s.numDistanceBlockTypes << 2, s.distContextMap, s);
|
|
8292
|
+
if (result < 0) {
|
|
8293
|
+
return result;
|
|
8294
|
+
}
|
|
8295
|
+
const numDistTrees = result;
|
|
8296
|
+
s.literalTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(256, numLiteralTrees));
|
|
8297
|
+
result = decodeHuffmanTreeGroup(256, 256, numLiteralTrees, s, s.literalTreeGroup);
|
|
8298
|
+
if (result < 0) {
|
|
8299
|
+
return result;
|
|
8300
|
+
}
|
|
8301
|
+
s.commandTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(704, s.numCommandBlockTypes));
|
|
8302
|
+
result = decodeHuffmanTreeGroup(704, 704, s.numCommandBlockTypes, s, s.commandTreeGroup);
|
|
8303
|
+
if (result < 0) {
|
|
8304
|
+
return result;
|
|
8305
|
+
}
|
|
8306
|
+
let distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 24);
|
|
8307
|
+
let distanceAlphabetSizeLimit = distanceAlphabetSizeMax;
|
|
8308
|
+
if (s.isLargeWindow === 1) {
|
|
8309
|
+
distanceAlphabetSizeMax = calculateDistanceAlphabetSize(s.distancePostfixBits, s.numDirectDistanceCodes, 62);
|
|
8310
|
+
result = calculateDistanceAlphabetLimit(s, 0x7FFFFFFC, s.distancePostfixBits, s.numDirectDistanceCodes);
|
|
8311
|
+
if (result < 0) {
|
|
8312
|
+
return result;
|
|
8313
|
+
}
|
|
8314
|
+
distanceAlphabetSizeLimit = result;
|
|
8315
|
+
}
|
|
8316
|
+
s.distanceTreeGroup = new Int32Array(huffmanTreeGroupAllocSize(distanceAlphabetSizeLimit, numDistTrees));
|
|
8317
|
+
result = decodeHuffmanTreeGroup(distanceAlphabetSizeMax, distanceAlphabetSizeLimit, numDistTrees, s, s.distanceTreeGroup);
|
|
8318
|
+
if (result < 0) {
|
|
8319
|
+
return result;
|
|
8320
|
+
}
|
|
8321
|
+
calculateDistanceLut(s, distanceAlphabetSizeLimit);
|
|
8322
|
+
s.contextMapSlice = 0;
|
|
8323
|
+
s.distContextMapSlice = 0;
|
|
8324
|
+
s.contextLookupOffset1 = s.contextModes[0] * 512;
|
|
8325
|
+
s.contextLookupOffset2 = s.contextLookupOffset1 + 256;
|
|
8326
|
+
s.literalTreeIdx = 0;
|
|
8327
|
+
s.commandTreeIdx = 0;
|
|
8328
|
+
s.rings[4] = 1;
|
|
8329
|
+
s.rings[5] = 0;
|
|
8330
|
+
s.rings[6] = 1;
|
|
8331
|
+
s.rings[7] = 0;
|
|
8332
|
+
s.rings[8] = 1;
|
|
8333
|
+
s.rings[9] = 0;
|
|
8334
|
+
return 0;
|
|
8335
|
+
}
|
|
8336
|
+
function copyUncompressedData(s) {
|
|
8337
|
+
const ringBuffer = s.ringBuffer;
|
|
8338
|
+
let result;
|
|
8339
|
+
if (s.metaBlockLength <= 0) {
|
|
8340
|
+
result = reload(s);
|
|
8341
|
+
if (result < 0) {
|
|
8342
|
+
return result;
|
|
8343
|
+
}
|
|
8344
|
+
s.runningState = 2;
|
|
8345
|
+
return 0;
|
|
8346
|
+
}
|
|
8347
|
+
const chunkLength = Math.min(s.ringBufferSize - s.pos, s.metaBlockLength);
|
|
8348
|
+
result = copyRawBytes(s, ringBuffer, s.pos, chunkLength);
|
|
8349
|
+
if (result < 0) {
|
|
8350
|
+
return result;
|
|
8351
|
+
}
|
|
8352
|
+
s.metaBlockLength -= chunkLength;
|
|
8353
|
+
s.pos += chunkLength;
|
|
8354
|
+
if (s.pos === s.ringBufferSize) {
|
|
8355
|
+
s.nextRunningState = 6;
|
|
8356
|
+
s.runningState = 12;
|
|
8357
|
+
return 0;
|
|
8358
|
+
}
|
|
8359
|
+
result = reload(s);
|
|
8360
|
+
if (result < 0) {
|
|
8361
|
+
return result;
|
|
8362
|
+
}
|
|
8363
|
+
s.runningState = 2;
|
|
8364
|
+
return 0;
|
|
8365
|
+
}
|
|
8366
|
+
function writeRingBuffer(s) {
|
|
8367
|
+
const toWrite = Math.min(s.outputLength - s.outputUsed, s.ringBufferBytesReady - s.ringBufferBytesWritten);
|
|
8368
|
+
if (toWrite !== 0) {
|
|
8369
|
+
s.output.set(s.ringBuffer.subarray(s.ringBufferBytesWritten, s.ringBufferBytesWritten + toWrite), s.outputOffset + s.outputUsed);
|
|
8370
|
+
s.outputUsed += toWrite;
|
|
8371
|
+
s.ringBufferBytesWritten += toWrite;
|
|
8372
|
+
}
|
|
8373
|
+
if (s.outputUsed < s.outputLength) {
|
|
8374
|
+
return 0;
|
|
8375
|
+
}
|
|
8376
|
+
return 2;
|
|
8377
|
+
}
|
|
8378
|
+
function huffmanTreeGroupAllocSize(alphabetSizeLimit, n) {
|
|
8379
|
+
const maxTableSize = MAX_HUFFMAN_TABLE_SIZE[alphabetSizeLimit + 31 >> 5];
|
|
8380
|
+
return n + n * maxTableSize;
|
|
8381
|
+
}
|
|
8382
|
+
function decodeHuffmanTreeGroup(alphabetSizeMax, alphabetSizeLimit, n, s, group) {
|
|
8383
|
+
let next = n;
|
|
8384
|
+
for (let i = 0; i < n; ++i) {
|
|
8385
|
+
group[i] = next;
|
|
8386
|
+
const result = readHuffmanCode(alphabetSizeMax, alphabetSizeLimit, group, i, s);
|
|
8387
|
+
if (result < 0) {
|
|
8388
|
+
return result;
|
|
8389
|
+
}
|
|
8390
|
+
next += result;
|
|
8391
|
+
}
|
|
8392
|
+
return 0;
|
|
8393
|
+
}
|
|
8394
|
+
function calculateFence(s) {
|
|
8395
|
+
let result = s.ringBufferSize;
|
|
8396
|
+
if (s.isEager !== 0) {
|
|
8397
|
+
result = Math.min(result, s.ringBufferBytesWritten + s.outputLength - s.outputUsed);
|
|
8398
|
+
}
|
|
8399
|
+
return result;
|
|
8400
|
+
}
|
|
8401
|
+
function doUseDictionary(s, fence) {
|
|
8402
|
+
if (s.distance > 0x7FFFFFFC) {
|
|
8403
|
+
return makeError(s, -9);
|
|
8404
|
+
}
|
|
8405
|
+
const address = s.distance - s.maxDistance - 1 - s.cdTotalSize;
|
|
8406
|
+
if (address < 0) {
|
|
8407
|
+
const result = initializeCompoundDictionaryCopy(s, -address - 1, s.copyLength);
|
|
8408
|
+
if (result < 0) {
|
|
8409
|
+
return result;
|
|
8410
|
+
}
|
|
8411
|
+
s.runningState = 14;
|
|
8412
|
+
} else {
|
|
8413
|
+
const dictionaryData = data;
|
|
8414
|
+
const wordLength = s.copyLength;
|
|
8415
|
+
if (wordLength > 31) {
|
|
8416
|
+
return makeError(s, -9);
|
|
8417
|
+
}
|
|
8418
|
+
const shift = sizeBits[wordLength];
|
|
8419
|
+
if (shift === 0) {
|
|
8420
|
+
return makeError(s, -9);
|
|
8421
|
+
}
|
|
8422
|
+
let offset = offsets[wordLength];
|
|
8423
|
+
const mask = (1 << shift) - 1;
|
|
8424
|
+
const wordIdx = address & mask;
|
|
8425
|
+
const transformIdx = address >> shift;
|
|
8426
|
+
offset += wordIdx * wordLength;
|
|
8427
|
+
const transforms = RFC_TRANSFORMS;
|
|
8428
|
+
if (transformIdx >= transforms.numTransforms) {
|
|
8429
|
+
return makeError(s, -9);
|
|
8430
|
+
}
|
|
8431
|
+
const len = transformDictionaryWord(s.ringBuffer, s.pos, dictionaryData, offset, wordLength, transforms, transformIdx);
|
|
8432
|
+
s.pos += len;
|
|
8433
|
+
s.metaBlockLength -= len;
|
|
8434
|
+
if (s.pos >= fence) {
|
|
8435
|
+
s.nextRunningState = 4;
|
|
8436
|
+
s.runningState = 12;
|
|
8437
|
+
return 0;
|
|
8438
|
+
}
|
|
8439
|
+
s.runningState = 4;
|
|
8440
|
+
}
|
|
8441
|
+
return 0;
|
|
8442
|
+
}
|
|
8443
|
+
function initializeCompoundDictionary(s) {
|
|
8444
|
+
s.cdBlockMap = new Int8Array(256);
|
|
8445
|
+
let blockBits = 8;
|
|
8446
|
+
while (s.cdTotalSize - 1 >> blockBits !== 0) {
|
|
8447
|
+
blockBits++;
|
|
8448
|
+
}
|
|
8449
|
+
blockBits -= 8;
|
|
8450
|
+
s.cdBlockBits = blockBits;
|
|
8451
|
+
let cursor = 0;
|
|
8452
|
+
let index = 0;
|
|
8453
|
+
while (cursor < s.cdTotalSize) {
|
|
8454
|
+
while (s.cdChunkOffsets[index + 1] < cursor) {
|
|
8455
|
+
index++;
|
|
8456
|
+
}
|
|
8457
|
+
s.cdBlockMap[cursor >> blockBits] = index;
|
|
8458
|
+
cursor += 1 << blockBits;
|
|
8459
|
+
}
|
|
8460
|
+
}
|
|
8461
|
+
function initializeCompoundDictionaryCopy(s, address, length) {
|
|
8462
|
+
if (s.cdBlockBits === -1) {
|
|
8463
|
+
initializeCompoundDictionary(s);
|
|
8464
|
+
}
|
|
8465
|
+
let index = s.cdBlockMap[address >> s.cdBlockBits];
|
|
8466
|
+
while (address >= s.cdChunkOffsets[index + 1]) {
|
|
8467
|
+
index++;
|
|
8468
|
+
}
|
|
8469
|
+
if (s.cdTotalSize > address + length) {
|
|
8470
|
+
return makeError(s, -9);
|
|
8471
|
+
}
|
|
8472
|
+
s.distRbIdx = s.distRbIdx + 1 & 0x3;
|
|
8473
|
+
s.rings[s.distRbIdx] = s.distance;
|
|
8474
|
+
s.metaBlockLength -= length;
|
|
8475
|
+
s.cdBrIndex = index;
|
|
8476
|
+
s.cdBrOffset = address - s.cdChunkOffsets[index];
|
|
8477
|
+
s.cdBrLength = length;
|
|
8478
|
+
s.cdBrCopied = 0;
|
|
8479
|
+
return 0;
|
|
8480
|
+
}
|
|
8481
|
+
function copyFromCompoundDictionary(s, fence) {
|
|
8482
|
+
let pos = s.pos;
|
|
8483
|
+
const origPos = pos;
|
|
8484
|
+
while (s.cdBrLength !== s.cdBrCopied) {
|
|
8485
|
+
const space = fence - pos;
|
|
8486
|
+
const chunkLength = s.cdChunkOffsets[s.cdBrIndex + 1] - s.cdChunkOffsets[s.cdBrIndex];
|
|
8487
|
+
const remChunkLength = chunkLength - s.cdBrOffset;
|
|
8488
|
+
let length = s.cdBrLength - s.cdBrCopied;
|
|
8489
|
+
if (length > remChunkLength) {
|
|
8490
|
+
length = remChunkLength;
|
|
8491
|
+
}
|
|
8492
|
+
if (length > space) {
|
|
8493
|
+
length = space;
|
|
8494
|
+
}
|
|
8495
|
+
s.ringBuffer.set(s.cdChunks[s.cdBrIndex].subarray(s.cdBrOffset, s.cdBrOffset + length), pos);
|
|
8496
|
+
pos += length;
|
|
8497
|
+
s.cdBrOffset += length;
|
|
8498
|
+
s.cdBrCopied += length;
|
|
8499
|
+
if (length === remChunkLength) {
|
|
8500
|
+
s.cdBrIndex++;
|
|
8501
|
+
s.cdBrOffset = 0;
|
|
8502
|
+
}
|
|
8503
|
+
if (pos >= fence) {
|
|
8504
|
+
break;
|
|
8505
|
+
}
|
|
8506
|
+
}
|
|
8507
|
+
return pos - origPos;
|
|
8508
|
+
}
|
|
8509
|
+
function decompress(s) {
|
|
8510
|
+
let result;
|
|
8511
|
+
if (s.runningState === 0) {
|
|
8512
|
+
return makeError(s, -25);
|
|
8513
|
+
}
|
|
8514
|
+
if (s.runningState < 0) {
|
|
8515
|
+
return makeError(s, -28);
|
|
8516
|
+
}
|
|
8517
|
+
if (s.runningState === 11) {
|
|
8518
|
+
return makeError(s, -22);
|
|
8519
|
+
}
|
|
8520
|
+
if (s.runningState === 1) {
|
|
8521
|
+
const windowBits = decodeWindowBits(s);
|
|
8522
|
+
if (windowBits === -1) {
|
|
8523
|
+
return makeError(s, -11);
|
|
8524
|
+
}
|
|
8525
|
+
s.maxRingBufferSize = 1 << windowBits;
|
|
8526
|
+
s.maxBackwardDistance = s.maxRingBufferSize - 16;
|
|
8527
|
+
s.runningState = 2;
|
|
8528
|
+
}
|
|
8529
|
+
let fence = calculateFence(s);
|
|
8530
|
+
let ringBufferMask = s.ringBufferSize - 1;
|
|
8531
|
+
let ringBuffer = s.ringBuffer;
|
|
8532
|
+
while (s.runningState !== 10) {
|
|
8533
|
+
switch (s.runningState) {
|
|
8534
|
+
case 2:
|
|
8535
|
+
if (s.metaBlockLength < 0) {
|
|
8536
|
+
return makeError(s, -10);
|
|
8537
|
+
}
|
|
8538
|
+
result = readNextMetablockHeader(s);
|
|
8539
|
+
if (result < 0) {
|
|
8540
|
+
return result;
|
|
8541
|
+
}
|
|
8542
|
+
fence = calculateFence(s);
|
|
8543
|
+
ringBufferMask = s.ringBufferSize - 1;
|
|
8544
|
+
ringBuffer = s.ringBuffer;
|
|
8545
|
+
continue;
|
|
8546
|
+
case 3:
|
|
8547
|
+
result = readMetablockHuffmanCodesAndContextMaps(s);
|
|
8548
|
+
if (result < 0) {
|
|
8549
|
+
return result;
|
|
8550
|
+
}
|
|
8551
|
+
s.runningState = 4;
|
|
8552
|
+
continue;
|
|
8553
|
+
case 4:
|
|
8554
|
+
if (s.metaBlockLength <= 0) {
|
|
8555
|
+
s.runningState = 2;
|
|
8556
|
+
continue;
|
|
8557
|
+
}
|
|
8558
|
+
if (s.halfOffset > 2030) {
|
|
8559
|
+
result = readMoreInput(s);
|
|
8560
|
+
if (result < 0) {
|
|
8561
|
+
return result;
|
|
8562
|
+
}
|
|
8563
|
+
}
|
|
8564
|
+
if (s.commandBlockLength === 0) {
|
|
8565
|
+
decodeCommandBlockSwitch(s);
|
|
8566
|
+
}
|
|
8567
|
+
s.commandBlockLength--;
|
|
8568
|
+
if (s.bitOffset >= 16) {
|
|
8569
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8570
|
+
s.bitOffset -= 16;
|
|
8571
|
+
}
|
|
8572
|
+
const cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2;
|
|
8573
|
+
const insertAndCopyExtraBits = CMD_LOOKUP[cmdCode];
|
|
8574
|
+
const insertLengthOffset = CMD_LOOKUP[cmdCode + 1];
|
|
8575
|
+
const copyLengthOffset = CMD_LOOKUP[cmdCode + 2];
|
|
8576
|
+
s.distanceCode = CMD_LOOKUP[cmdCode + 3];
|
|
8577
|
+
if (s.bitOffset >= 16) {
|
|
8578
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8579
|
+
s.bitOffset -= 16;
|
|
8580
|
+
}
|
|
8581
|
+
const insertLengthExtraBits = insertAndCopyExtraBits & 0xFF;
|
|
8582
|
+
s.insertLength = insertLengthOffset + (insertLengthExtraBits <= 16 ? readFewBits(s, insertLengthExtraBits) : readManyBits(s, insertLengthExtraBits));
|
|
8583
|
+
if (s.bitOffset >= 16) {
|
|
8584
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8585
|
+
s.bitOffset -= 16;
|
|
8586
|
+
}
|
|
8587
|
+
const copyLengthExtraBits = insertAndCopyExtraBits >> 8;
|
|
8588
|
+
s.copyLength = copyLengthOffset + (copyLengthExtraBits <= 16 ? readFewBits(s, copyLengthExtraBits) : readManyBits(s, copyLengthExtraBits));
|
|
8589
|
+
s.j = 0;
|
|
8590
|
+
s.runningState = 7;
|
|
8591
|
+
continue;
|
|
8592
|
+
case 7:
|
|
8593
|
+
if (s.trivialLiteralContext !== 0) {
|
|
8594
|
+
while (s.j < s.insertLength) {
|
|
8595
|
+
if (s.halfOffset > 2030) {
|
|
8596
|
+
result = readMoreInput(s);
|
|
8597
|
+
if (result < 0) {
|
|
8598
|
+
return result;
|
|
8599
|
+
}
|
|
8600
|
+
}
|
|
8601
|
+
if (s.literalBlockLength === 0) {
|
|
8602
|
+
decodeLiteralBlockSwitch(s);
|
|
8603
|
+
}
|
|
8604
|
+
s.literalBlockLength--;
|
|
8605
|
+
if (s.bitOffset >= 16) {
|
|
8606
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8607
|
+
s.bitOffset -= 16;
|
|
8608
|
+
}
|
|
8609
|
+
ringBuffer[s.pos] = readSymbol(s.literalTreeGroup, s.literalTreeIdx, s);
|
|
8610
|
+
s.pos++;
|
|
8611
|
+
s.j++;
|
|
8612
|
+
if (s.pos >= fence) {
|
|
8613
|
+
s.nextRunningState = 7;
|
|
8614
|
+
s.runningState = 12;
|
|
8615
|
+
break;
|
|
8616
|
+
}
|
|
8617
|
+
}
|
|
8618
|
+
} else {
|
|
8619
|
+
let prevByte1 = ringBuffer[s.pos - 1 & ringBufferMask] & 0xFF;
|
|
8620
|
+
let prevByte2 = ringBuffer[s.pos - 2 & ringBufferMask] & 0xFF;
|
|
8621
|
+
while (s.j < s.insertLength) {
|
|
8622
|
+
if (s.halfOffset > 2030) {
|
|
8623
|
+
result = readMoreInput(s);
|
|
8624
|
+
if (result < 0) {
|
|
8625
|
+
return result;
|
|
8626
|
+
}
|
|
8627
|
+
}
|
|
8628
|
+
if (s.literalBlockLength === 0) {
|
|
8629
|
+
decodeLiteralBlockSwitch(s);
|
|
8630
|
+
}
|
|
8631
|
+
const literalContext = LOOKUP[s.contextLookupOffset1 + prevByte1] | LOOKUP[s.contextLookupOffset2 + prevByte2];
|
|
8632
|
+
const literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF;
|
|
8633
|
+
s.literalBlockLength--;
|
|
8634
|
+
prevByte2 = prevByte1;
|
|
8635
|
+
if (s.bitOffset >= 16) {
|
|
8636
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8637
|
+
s.bitOffset -= 16;
|
|
8638
|
+
}
|
|
8639
|
+
prevByte1 = readSymbol(s.literalTreeGroup, literalTreeIdx, s);
|
|
8640
|
+
ringBuffer[s.pos] = prevByte1;
|
|
8641
|
+
s.pos++;
|
|
8642
|
+
s.j++;
|
|
8643
|
+
if (s.pos >= fence) {
|
|
8644
|
+
s.nextRunningState = 7;
|
|
8645
|
+
s.runningState = 12;
|
|
8646
|
+
break;
|
|
8647
|
+
}
|
|
8648
|
+
}
|
|
8649
|
+
}
|
|
8650
|
+
if (s.runningState !== 7) {
|
|
8651
|
+
continue;
|
|
8652
|
+
}
|
|
8653
|
+
s.metaBlockLength -= s.insertLength;
|
|
8654
|
+
if (s.metaBlockLength <= 0) {
|
|
8655
|
+
s.runningState = 4;
|
|
8656
|
+
continue;
|
|
8657
|
+
}
|
|
8658
|
+
let distanceCode = s.distanceCode;
|
|
8659
|
+
if (distanceCode < 0) {
|
|
8660
|
+
s.distance = s.rings[s.distRbIdx];
|
|
8661
|
+
} else {
|
|
8662
|
+
if (s.halfOffset > 2030) {
|
|
8663
|
+
result = readMoreInput(s);
|
|
8664
|
+
if (result < 0) {
|
|
8665
|
+
return result;
|
|
8666
|
+
}
|
|
8667
|
+
}
|
|
8668
|
+
if (s.distanceBlockLength === 0) {
|
|
8669
|
+
decodeDistanceBlockSwitch(s);
|
|
8670
|
+
}
|
|
8671
|
+
s.distanceBlockLength--;
|
|
8672
|
+
if (s.bitOffset >= 16) {
|
|
8673
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8674
|
+
s.bitOffset -= 16;
|
|
8675
|
+
}
|
|
8676
|
+
const distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF;
|
|
8677
|
+
distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s);
|
|
8678
|
+
if (distanceCode < 16) {
|
|
8679
|
+
const index = s.distRbIdx + DISTANCE_SHORT_CODE_INDEX_OFFSET[distanceCode] & 0x3;
|
|
8680
|
+
s.distance = s.rings[index] + DISTANCE_SHORT_CODE_VALUE_OFFSET[distanceCode];
|
|
8681
|
+
if (s.distance < 0) {
|
|
8682
|
+
return makeError(s, -12);
|
|
8683
|
+
}
|
|
8684
|
+
} else {
|
|
8685
|
+
const extraBits = s.distExtraBits[distanceCode];
|
|
8686
|
+
let bits;
|
|
8687
|
+
if (s.bitOffset + extraBits <= 32) {
|
|
8688
|
+
bits = readFewBits(s, extraBits);
|
|
8689
|
+
} else {
|
|
8690
|
+
if (s.bitOffset >= 16) {
|
|
8691
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8692
|
+
s.bitOffset -= 16;
|
|
8693
|
+
}
|
|
8694
|
+
bits = extraBits <= 16 ? readFewBits(s, extraBits) : readManyBits(s, extraBits);
|
|
8695
|
+
}
|
|
8696
|
+
s.distance = s.distOffset[distanceCode] + (bits << s.distancePostfixBits);
|
|
8697
|
+
}
|
|
8698
|
+
}
|
|
8699
|
+
if (s.maxDistance !== s.maxBackwardDistance && s.pos < s.maxBackwardDistance) {
|
|
8700
|
+
s.maxDistance = s.pos;
|
|
8701
|
+
} else {
|
|
8702
|
+
s.maxDistance = s.maxBackwardDistance;
|
|
8703
|
+
}
|
|
8704
|
+
if (s.distance > s.maxDistance) {
|
|
8705
|
+
s.runningState = 9;
|
|
8706
|
+
continue;
|
|
8707
|
+
}
|
|
8708
|
+
if (distanceCode > 0) {
|
|
8709
|
+
s.distRbIdx = s.distRbIdx + 1 & 0x3;
|
|
8710
|
+
s.rings[s.distRbIdx] = s.distance;
|
|
8711
|
+
}
|
|
8712
|
+
if (s.copyLength > s.metaBlockLength) {
|
|
8713
|
+
return makeError(s, -9);
|
|
8714
|
+
}
|
|
8715
|
+
s.j = 0;
|
|
8716
|
+
s.runningState = 8;
|
|
8717
|
+
continue;
|
|
8718
|
+
case 8:
|
|
8719
|
+
let src = s.pos - s.distance & ringBufferMask;
|
|
8720
|
+
let dst = s.pos;
|
|
8721
|
+
const copyLength = s.copyLength - s.j;
|
|
8722
|
+
const srcEnd = src + copyLength;
|
|
8723
|
+
const dstEnd = dst + copyLength;
|
|
8724
|
+
if (srcEnd < ringBufferMask && dstEnd < ringBufferMask) {
|
|
8725
|
+
if (copyLength < 12 || srcEnd > dst && dstEnd > src) {
|
|
8726
|
+
const numQuads = copyLength + 3 >> 2;
|
|
8727
|
+
for (let k = 0; k < numQuads; ++k) {
|
|
8728
|
+
ringBuffer[dst++] = ringBuffer[src++];
|
|
8729
|
+
ringBuffer[dst++] = ringBuffer[src++];
|
|
8730
|
+
ringBuffer[dst++] = ringBuffer[src++];
|
|
8731
|
+
ringBuffer[dst++] = ringBuffer[src++];
|
|
8732
|
+
}
|
|
8733
|
+
} else {
|
|
8734
|
+
ringBuffer.copyWithin(dst, src, srcEnd);
|
|
8735
|
+
}
|
|
8736
|
+
s.j += copyLength;
|
|
8737
|
+
s.metaBlockLength -= copyLength;
|
|
8738
|
+
s.pos += copyLength;
|
|
8739
|
+
} else {
|
|
8740
|
+
while (s.j < s.copyLength) {
|
|
8741
|
+
ringBuffer[s.pos] = ringBuffer[s.pos - s.distance & ringBufferMask];
|
|
8742
|
+
s.metaBlockLength--;
|
|
8743
|
+
s.pos++;
|
|
8744
|
+
s.j++;
|
|
8745
|
+
if (s.pos >= fence) {
|
|
8746
|
+
s.nextRunningState = 8;
|
|
8747
|
+
s.runningState = 12;
|
|
8748
|
+
break;
|
|
8749
|
+
}
|
|
8750
|
+
}
|
|
8751
|
+
}
|
|
8752
|
+
if (s.runningState === 8) {
|
|
8753
|
+
s.runningState = 4;
|
|
8754
|
+
}
|
|
8755
|
+
continue;
|
|
8756
|
+
case 9:
|
|
8757
|
+
result = doUseDictionary(s, fence);
|
|
8758
|
+
if (result < 0) {
|
|
8759
|
+
return result;
|
|
8760
|
+
}
|
|
8761
|
+
continue;
|
|
8762
|
+
case 14:
|
|
8763
|
+
s.pos += copyFromCompoundDictionary(s, fence);
|
|
8764
|
+
if (s.pos >= fence) {
|
|
8765
|
+
s.nextRunningState = 14;
|
|
8766
|
+
s.runningState = 12;
|
|
8767
|
+
return 2;
|
|
8768
|
+
}
|
|
8769
|
+
s.runningState = 4;
|
|
8770
|
+
continue;
|
|
8771
|
+
case 5:
|
|
8772
|
+
while (s.metaBlockLength > 0) {
|
|
8773
|
+
if (s.halfOffset > 2030) {
|
|
8774
|
+
result = readMoreInput(s);
|
|
8775
|
+
if (result < 0) {
|
|
8776
|
+
return result;
|
|
8777
|
+
}
|
|
8778
|
+
}
|
|
8779
|
+
if (s.bitOffset >= 16) {
|
|
8780
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
8781
|
+
s.bitOffset -= 16;
|
|
8782
|
+
}
|
|
8783
|
+
readFewBits(s, 8);
|
|
8784
|
+
s.metaBlockLength--;
|
|
8785
|
+
}
|
|
8786
|
+
s.runningState = 2;
|
|
8787
|
+
continue;
|
|
8788
|
+
case 6:
|
|
8789
|
+
result = copyUncompressedData(s);
|
|
8790
|
+
if (result < 0) {
|
|
8791
|
+
return result;
|
|
8792
|
+
}
|
|
8793
|
+
continue;
|
|
8794
|
+
case 12:
|
|
8795
|
+
s.ringBufferBytesReady = Math.min(s.pos, s.ringBufferSize);
|
|
8796
|
+
s.runningState = 13;
|
|
8797
|
+
continue;
|
|
8798
|
+
case 13:
|
|
8799
|
+
result = writeRingBuffer(s);
|
|
8800
|
+
if (result !== 0) {
|
|
8801
|
+
return result;
|
|
8802
|
+
}
|
|
8803
|
+
if (s.pos >= s.maxBackwardDistance) {
|
|
8804
|
+
s.maxDistance = s.maxBackwardDistance;
|
|
8805
|
+
}
|
|
8806
|
+
if (s.pos >= s.ringBufferSize) {
|
|
8807
|
+
if (s.pos > s.ringBufferSize) {
|
|
8808
|
+
ringBuffer.copyWithin(0, s.ringBufferSize, s.pos);
|
|
8809
|
+
}
|
|
8810
|
+
s.pos = s.pos & ringBufferMask;
|
|
8811
|
+
s.ringBufferBytesWritten = 0;
|
|
8812
|
+
}
|
|
8813
|
+
s.runningState = s.nextRunningState;
|
|
8814
|
+
continue;
|
|
8815
|
+
default:
|
|
8816
|
+
return makeError(s, -28);
|
|
8817
|
+
}
|
|
8818
|
+
}
|
|
8819
|
+
if (s.runningState !== 10) {
|
|
8820
|
+
return makeError(s, -29);
|
|
8821
|
+
}
|
|
8822
|
+
if (s.metaBlockLength < 0) {
|
|
8823
|
+
return makeError(s, -10);
|
|
8824
|
+
}
|
|
8825
|
+
result = jumpToByteBoundary(s);
|
|
8826
|
+
if (result !== 0) {
|
|
8827
|
+
return result;
|
|
8828
|
+
}
|
|
8829
|
+
result = checkHealth(s, 1);
|
|
8830
|
+
if (result !== 0) {
|
|
8831
|
+
return result;
|
|
8832
|
+
}
|
|
8833
|
+
return 1;
|
|
8834
|
+
}
|
|
8835
|
+
function Transforms(numTransforms, prefixSuffixLen, prefixSuffixCount) {
|
|
8836
|
+
this.numTransforms = 0;
|
|
8837
|
+
this.triplets = new Int32Array(0);
|
|
8838
|
+
this.prefixSuffixStorage = new Int8Array(0);
|
|
8839
|
+
this.prefixSuffixHeads = new Int32Array(0);
|
|
8840
|
+
this.params = new Int16Array(0);
|
|
8841
|
+
this.numTransforms = numTransforms;
|
|
8842
|
+
this.triplets = new Int32Array(numTransforms * 3);
|
|
8843
|
+
this.params = new Int16Array(numTransforms);
|
|
8844
|
+
this.prefixSuffixStorage = new Int8Array(prefixSuffixLen);
|
|
8845
|
+
this.prefixSuffixHeads = new Int32Array(prefixSuffixCount + 1);
|
|
8846
|
+
}
|
|
8847
|
+
const RFC_TRANSFORMS = new Transforms(121, 167, 50);
|
|
8848
|
+
function unpackTransforms(prefixSuffix, prefixSuffixHeads, transforms, prefixSuffixSrc, transformsSrc) {
|
|
8849
|
+
const prefixSuffixBytes = toUtf8Runes(prefixSuffixSrc);
|
|
8850
|
+
const n = prefixSuffixBytes.length;
|
|
8851
|
+
let index = 1;
|
|
8852
|
+
let j = 0;
|
|
8853
|
+
for (let i = 0; i < n; ++i) {
|
|
8854
|
+
const c = prefixSuffixBytes[i];
|
|
8855
|
+
if (c === 35) {
|
|
8856
|
+
prefixSuffixHeads[index++] = j;
|
|
8857
|
+
} else {
|
|
8858
|
+
prefixSuffix[j++] = c;
|
|
8859
|
+
}
|
|
8860
|
+
}
|
|
8861
|
+
for (let i = 0; i < 363; ++i) {
|
|
8862
|
+
transforms[i] = transformsSrc.charCodeAt(i) - 32;
|
|
8863
|
+
}
|
|
8864
|
+
}
|
|
8865
|
+
unpackTransforms(RFC_TRANSFORMS.prefixSuffixStorage, RFC_TRANSFORMS.prefixSuffixHeads, RFC_TRANSFORMS.triplets, "# #s #, #e #.# the #.com/#\xC2\xA0# of # and # in # to #\"#\">#\n#]# for # a # that #. # with #'# from # by #. The # on # as # is #ing #\n\t#:#ed #(# at #ly #=\"# of the #. This #,# not #er #al #='#ful #ive #less #est #ize #ous #", " !! ! , *! &! \" ! ) * * - ! # ! #!*! + ,$ ! - % . / # 0 1 . \" 2 3!* 4% ! # / 5 6 7 8 0 1 & $ 9 + : ; < ' != > ?! 4 @ 4 2 & A *# ( B C& ) % ) !*# *-% A +! *. D! %' & E *6 F G% ! *A *% H! D I!+! J!+ K +- *4! A L!*4 M N +6 O!*% +.! K *G P +%( ! G *D +D Q +# *K!*G!+D!+# +G +A +4!+% +K!+4!*D!+K!*K");
|
|
8866
|
+
function transformDictionaryWord(dst, dstOffset, src, srcOffset, wordLen, transforms, transformIndex) {
|
|
8867
|
+
let offset = dstOffset;
|
|
8868
|
+
const triplets = transforms.triplets;
|
|
8869
|
+
const prefixSuffixStorage = transforms.prefixSuffixStorage;
|
|
8870
|
+
const prefixSuffixHeads = transforms.prefixSuffixHeads;
|
|
8871
|
+
const transformOffset = 3 * transformIndex;
|
|
8872
|
+
const prefixIdx = triplets[transformOffset];
|
|
8873
|
+
const transformType = triplets[transformOffset + 1];
|
|
8874
|
+
const suffixIdx = triplets[transformOffset + 2];
|
|
8875
|
+
let prefix = prefixSuffixHeads[prefixIdx];
|
|
8876
|
+
const prefixEnd = prefixSuffixHeads[prefixIdx + 1];
|
|
8877
|
+
let suffix = prefixSuffixHeads[suffixIdx];
|
|
8878
|
+
const suffixEnd = prefixSuffixHeads[suffixIdx + 1];
|
|
8879
|
+
let omitFirst = transformType - 11;
|
|
8880
|
+
let omitLast = transformType;
|
|
8881
|
+
if (omitFirst < 1 || omitFirst > 9) {
|
|
8882
|
+
omitFirst = 0;
|
|
8883
|
+
}
|
|
8884
|
+
if (omitLast < 1 || omitLast > 9) {
|
|
8885
|
+
omitLast = 0;
|
|
8886
|
+
}
|
|
8887
|
+
while (prefix !== prefixEnd) {
|
|
8888
|
+
dst[offset++] = prefixSuffixStorage[prefix++];
|
|
8889
|
+
}
|
|
8890
|
+
let len = wordLen;
|
|
8891
|
+
if (omitFirst > len) {
|
|
8892
|
+
omitFirst = len;
|
|
8893
|
+
}
|
|
8894
|
+
let dictOffset = srcOffset + omitFirst;
|
|
8895
|
+
len -= omitFirst;
|
|
8896
|
+
len -= omitLast;
|
|
8897
|
+
let i = len;
|
|
8898
|
+
while (i > 0) {
|
|
8899
|
+
dst[offset++] = src[dictOffset++];
|
|
8900
|
+
i--;
|
|
8901
|
+
}
|
|
8902
|
+
if (transformType === 10 || transformType === 11) {
|
|
8903
|
+
let uppercaseOffset = offset - len;
|
|
8904
|
+
if (transformType === 10) {
|
|
8905
|
+
len = 1;
|
|
8906
|
+
}
|
|
8907
|
+
while (len > 0) {
|
|
8908
|
+
const c0 = dst[uppercaseOffset] & 0xFF;
|
|
8909
|
+
if (c0 < 0xC0) {
|
|
8910
|
+
if (c0 >= 97 && c0 <= 122) {
|
|
8911
|
+
dst[uppercaseOffset] = dst[uppercaseOffset] ^ 32;
|
|
8912
|
+
}
|
|
8913
|
+
uppercaseOffset += 1;
|
|
8914
|
+
len -= 1;
|
|
8915
|
+
} else if (c0 < 0xE0) {
|
|
8916
|
+
dst[uppercaseOffset + 1] = dst[uppercaseOffset + 1] ^ 32;
|
|
8917
|
+
uppercaseOffset += 2;
|
|
8918
|
+
len -= 2;
|
|
8919
|
+
} else {
|
|
8920
|
+
dst[uppercaseOffset + 2] = dst[uppercaseOffset + 2] ^ 5;
|
|
8921
|
+
uppercaseOffset += 3;
|
|
8922
|
+
len -= 3;
|
|
8923
|
+
}
|
|
8924
|
+
}
|
|
8925
|
+
} else if (transformType === 21 || transformType === 22) {
|
|
8926
|
+
let shiftOffset = offset - len;
|
|
8927
|
+
const param = transforms.params[transformIndex];
|
|
8928
|
+
let scalar = (param & 0x7FFF) + (0x1000000 - (param & 0x8000));
|
|
8929
|
+
while (len > 0) {
|
|
8930
|
+
let step = 1;
|
|
8931
|
+
const c0 = dst[shiftOffset] & 0xFF;
|
|
8932
|
+
if (c0 < 0x80) {
|
|
8933
|
+
scalar += c0;
|
|
8934
|
+
dst[shiftOffset] = scalar & 0x7F;
|
|
8935
|
+
} else if (c0 < 0xC0) {} else if (c0 < 0xE0) {
|
|
8936
|
+
if (len >= 2) {
|
|
8937
|
+
const c1 = dst[shiftOffset + 1];
|
|
8938
|
+
scalar += c1 & 0x3F | (c0 & 0x1F) << 6;
|
|
8939
|
+
dst[shiftOffset] = 0xC0 | scalar >> 6 & 0x1F;
|
|
8940
|
+
dst[shiftOffset + 1] = c1 & 0xC0 | scalar & 0x3F;
|
|
8941
|
+
step = 2;
|
|
8942
|
+
} else {
|
|
8943
|
+
step = len;
|
|
8944
|
+
}
|
|
8945
|
+
} else if (c0 < 0xF0) {
|
|
8946
|
+
if (len >= 3) {
|
|
8947
|
+
const c1 = dst[shiftOffset + 1];
|
|
8948
|
+
const c2 = dst[shiftOffset + 2];
|
|
8949
|
+
scalar += c2 & 0x3F | (c1 & 0x3F) << 6 | (c0 & 0x0F) << 12;
|
|
8950
|
+
dst[shiftOffset] = 0xE0 | scalar >> 12 & 0x0F;
|
|
8951
|
+
dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 6 & 0x3F;
|
|
8952
|
+
dst[shiftOffset + 2] = c2 & 0xC0 | scalar & 0x3F;
|
|
8953
|
+
step = 3;
|
|
8954
|
+
} else {
|
|
8955
|
+
step = len;
|
|
8956
|
+
}
|
|
8957
|
+
} else if (c0 < 0xF8) {
|
|
8958
|
+
if (len >= 4) {
|
|
8959
|
+
const c1 = dst[shiftOffset + 1];
|
|
8960
|
+
const c2 = dst[shiftOffset + 2];
|
|
8961
|
+
const c3 = dst[shiftOffset + 3];
|
|
8962
|
+
scalar += c3 & 0x3F | (c2 & 0x3F) << 6 | (c1 & 0x3F) << 12 | (c0 & 0x07) << 18;
|
|
8963
|
+
dst[shiftOffset] = 0xF0 | scalar >> 18 & 0x07;
|
|
8964
|
+
dst[shiftOffset + 1] = c1 & 0xC0 | scalar >> 12 & 0x3F;
|
|
8965
|
+
dst[shiftOffset + 2] = c2 & 0xC0 | scalar >> 6 & 0x3F;
|
|
8966
|
+
dst[shiftOffset + 3] = c3 & 0xC0 | scalar & 0x3F;
|
|
8967
|
+
step = 4;
|
|
8968
|
+
} else {
|
|
8969
|
+
step = len;
|
|
8970
|
+
}
|
|
8971
|
+
}
|
|
8972
|
+
shiftOffset += step;
|
|
8973
|
+
len -= step;
|
|
8974
|
+
if (transformType === 21) {
|
|
8975
|
+
len = 0;
|
|
8976
|
+
}
|
|
8977
|
+
}
|
|
8978
|
+
}
|
|
8979
|
+
while (suffix !== suffixEnd) {
|
|
8980
|
+
dst[offset++] = prefixSuffixStorage[suffix++];
|
|
8981
|
+
}
|
|
8982
|
+
return offset - dstOffset;
|
|
8983
|
+
}
|
|
8984
|
+
function getNextKey(key, len) {
|
|
8985
|
+
let step = 1 << len - 1;
|
|
8986
|
+
while ((key & step) !== 0) {
|
|
8987
|
+
step = step >> 1;
|
|
8988
|
+
}
|
|
8989
|
+
return (key & step - 1) + step;
|
|
8990
|
+
}
|
|
8991
|
+
function replicateValue(table, offset, step, end, item) {
|
|
8992
|
+
let pos = end;
|
|
8993
|
+
while (pos > 0) {
|
|
8994
|
+
pos -= step;
|
|
8995
|
+
table[offset + pos] = item;
|
|
8996
|
+
}
|
|
8997
|
+
}
|
|
8998
|
+
function nextTableBitSize(count, len, rootBits) {
|
|
8999
|
+
let bits = len;
|
|
9000
|
+
let left = 1 << bits - rootBits;
|
|
9001
|
+
while (bits < 15) {
|
|
9002
|
+
left -= count[bits];
|
|
9003
|
+
if (left <= 0) {
|
|
9004
|
+
break;
|
|
9005
|
+
}
|
|
9006
|
+
bits++;
|
|
9007
|
+
left = left << 1;
|
|
9008
|
+
}
|
|
9009
|
+
return bits - rootBits;
|
|
9010
|
+
}
|
|
9011
|
+
function buildHuffmanTable(tableGroup, tableIdx, rootBits, codeLengths, codeLengthsSize) {
|
|
9012
|
+
const tableOffset = tableGroup[tableIdx];
|
|
9013
|
+
const sorted = new Int32Array(codeLengthsSize);
|
|
9014
|
+
const count = new Int32Array(16);
|
|
9015
|
+
const offset = new Int32Array(16);
|
|
9016
|
+
for (let sym = 0; sym < codeLengthsSize; ++sym) {
|
|
9017
|
+
count[codeLengths[sym]]++;
|
|
9018
|
+
}
|
|
9019
|
+
offset[1] = 0;
|
|
9020
|
+
for (let len = 1; len < 15; ++len) {
|
|
9021
|
+
offset[len + 1] = offset[len] + count[len];
|
|
9022
|
+
}
|
|
9023
|
+
for (let sym = 0; sym < codeLengthsSize; ++sym) {
|
|
9024
|
+
if (codeLengths[sym] !== 0) {
|
|
9025
|
+
sorted[offset[codeLengths[sym]]++] = sym;
|
|
9026
|
+
}
|
|
9027
|
+
}
|
|
9028
|
+
let tableBits = rootBits;
|
|
9029
|
+
let tableSize = 1 << tableBits;
|
|
9030
|
+
let totalSize = tableSize;
|
|
9031
|
+
if (offset[15] === 1) {
|
|
9032
|
+
for (let k = 0; k < totalSize; ++k) {
|
|
9033
|
+
tableGroup[tableOffset + k] = sorted[0];
|
|
9034
|
+
}
|
|
9035
|
+
return totalSize;
|
|
9036
|
+
}
|
|
9037
|
+
let key = 0;
|
|
9038
|
+
let symbol = 0;
|
|
9039
|
+
let step = 1;
|
|
9040
|
+
for (let len = 1; len <= rootBits; ++len) {
|
|
9041
|
+
step = step << 1;
|
|
9042
|
+
while (count[len] > 0) {
|
|
9043
|
+
replicateValue(tableGroup, tableOffset + key, step, tableSize, len << 16 | sorted[symbol++]);
|
|
9044
|
+
key = getNextKey(key, len);
|
|
9045
|
+
count[len]--;
|
|
9046
|
+
}
|
|
9047
|
+
}
|
|
9048
|
+
const mask = totalSize - 1;
|
|
9049
|
+
let low = -1;
|
|
9050
|
+
let currentOffset = tableOffset;
|
|
9051
|
+
step = 1;
|
|
9052
|
+
for (let len = rootBits + 1; len <= 15; ++len) {
|
|
9053
|
+
step = step << 1;
|
|
9054
|
+
while (count[len] > 0) {
|
|
9055
|
+
if ((key & mask) !== low) {
|
|
9056
|
+
currentOffset += tableSize;
|
|
9057
|
+
tableBits = nextTableBitSize(count, len, rootBits);
|
|
9058
|
+
tableSize = 1 << tableBits;
|
|
9059
|
+
totalSize += tableSize;
|
|
9060
|
+
low = key & mask;
|
|
9061
|
+
tableGroup[tableOffset + low] = tableBits + rootBits << 16 | currentOffset - tableOffset - low;
|
|
9062
|
+
}
|
|
9063
|
+
replicateValue(tableGroup, currentOffset + (key >> rootBits), step, tableSize, len - rootBits << 16 | sorted[symbol++]);
|
|
9064
|
+
key = getNextKey(key, len);
|
|
9065
|
+
count[len]--;
|
|
9066
|
+
}
|
|
9067
|
+
}
|
|
9068
|
+
return totalSize;
|
|
9069
|
+
}
|
|
9070
|
+
function readMoreInput(s) {
|
|
9071
|
+
if (s.endOfStreamReached !== 0) {
|
|
9072
|
+
if (halfAvailable(s) >= -2) {
|
|
9073
|
+
return 0;
|
|
9074
|
+
}
|
|
9075
|
+
return makeError(s, -16);
|
|
9076
|
+
}
|
|
9077
|
+
const readOffset = s.halfOffset << 1;
|
|
9078
|
+
let bytesInBuffer = 4096 - readOffset;
|
|
9079
|
+
s.byteBuffer.copyWithin(0, readOffset, 4096);
|
|
9080
|
+
s.halfOffset = 0;
|
|
9081
|
+
while (bytesInBuffer < 4096) {
|
|
9082
|
+
const spaceLeft = 4096 - bytesInBuffer;
|
|
9083
|
+
const len = readInput(s, s.byteBuffer, bytesInBuffer, spaceLeft);
|
|
9084
|
+
if (len < -1) {
|
|
9085
|
+
return len;
|
|
9086
|
+
}
|
|
9087
|
+
if (len <= 0) {
|
|
9088
|
+
s.endOfStreamReached = 1;
|
|
9089
|
+
s.tailBytes = bytesInBuffer;
|
|
9090
|
+
bytesInBuffer += 1;
|
|
9091
|
+
break;
|
|
9092
|
+
}
|
|
9093
|
+
bytesInBuffer += len;
|
|
9094
|
+
}
|
|
9095
|
+
bytesToNibbles(s, bytesInBuffer);
|
|
9096
|
+
return 0;
|
|
9097
|
+
}
|
|
9098
|
+
function checkHealth(s, endOfStream) {
|
|
9099
|
+
if (s.endOfStreamReached === 0) {
|
|
9100
|
+
return 0;
|
|
9101
|
+
}
|
|
9102
|
+
const byteOffset = (s.halfOffset << 1) + (s.bitOffset + 7 >> 3) - 4;
|
|
9103
|
+
if (byteOffset > s.tailBytes) {
|
|
9104
|
+
return makeError(s, -13);
|
|
9105
|
+
}
|
|
9106
|
+
if (endOfStream !== 0 && byteOffset !== s.tailBytes) {
|
|
9107
|
+
return makeError(s, -17);
|
|
9108
|
+
}
|
|
9109
|
+
return 0;
|
|
9110
|
+
}
|
|
9111
|
+
function readFewBits(s, n) {
|
|
9112
|
+
const v = s.accumulator32 >>> s.bitOffset & (1 << n) - 1;
|
|
9113
|
+
s.bitOffset += n;
|
|
9114
|
+
return v;
|
|
9115
|
+
}
|
|
9116
|
+
function readManyBits(s, n) {
|
|
9117
|
+
const low = readFewBits(s, 16);
|
|
9118
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
9119
|
+
s.bitOffset -= 16;
|
|
9120
|
+
return low | readFewBits(s, n - 16) << 16;
|
|
9121
|
+
}
|
|
9122
|
+
function initBitReader(s) {
|
|
9123
|
+
s.byteBuffer = new Int8Array(4160);
|
|
9124
|
+
s.accumulator32 = 0;
|
|
9125
|
+
s.shortBuffer = new Int16Array(2080);
|
|
9126
|
+
s.bitOffset = 32;
|
|
9127
|
+
s.halfOffset = 2048;
|
|
9128
|
+
s.endOfStreamReached = 0;
|
|
9129
|
+
return prepare(s);
|
|
9130
|
+
}
|
|
9131
|
+
function prepare(s) {
|
|
9132
|
+
if (s.halfOffset > 2030) {
|
|
9133
|
+
const result = readMoreInput(s);
|
|
9134
|
+
if (result !== 0) {
|
|
9135
|
+
return result;
|
|
9136
|
+
}
|
|
9137
|
+
}
|
|
9138
|
+
let health = checkHealth(s, 0);
|
|
9139
|
+
if (health !== 0) {
|
|
9140
|
+
return health;
|
|
9141
|
+
}
|
|
9142
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
9143
|
+
s.bitOffset -= 16;
|
|
9144
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
9145
|
+
s.bitOffset -= 16;
|
|
9146
|
+
return 0;
|
|
9147
|
+
}
|
|
9148
|
+
function reload(s) {
|
|
9149
|
+
if (s.bitOffset === 32) {
|
|
9150
|
+
return prepare(s);
|
|
9151
|
+
}
|
|
9152
|
+
return 0;
|
|
9153
|
+
}
|
|
9154
|
+
function jumpToByteBoundary(s) {
|
|
9155
|
+
const padding = 32 - s.bitOffset & 7;
|
|
9156
|
+
if (padding !== 0) {
|
|
9157
|
+
const paddingBits = readFewBits(s, padding);
|
|
9158
|
+
if (paddingBits !== 0) {
|
|
9159
|
+
return makeError(s, -5);
|
|
9160
|
+
}
|
|
9161
|
+
}
|
|
9162
|
+
return 0;
|
|
9163
|
+
}
|
|
9164
|
+
function halfAvailable(s) {
|
|
9165
|
+
let limit = 2048;
|
|
9166
|
+
if (s.endOfStreamReached !== 0) {
|
|
9167
|
+
limit = s.tailBytes + 1 >> 1;
|
|
9168
|
+
}
|
|
9169
|
+
return limit - s.halfOffset;
|
|
9170
|
+
}
|
|
9171
|
+
function copyRawBytes(s, data, offset, length) {
|
|
9172
|
+
let pos = offset;
|
|
9173
|
+
let len = length;
|
|
9174
|
+
if ((s.bitOffset & 7) !== 0) {
|
|
9175
|
+
return makeError(s, -30);
|
|
9176
|
+
}
|
|
9177
|
+
while (s.bitOffset !== 32 && len !== 0) {
|
|
9178
|
+
data[pos++] = s.accumulator32 >>> s.bitOffset;
|
|
9179
|
+
s.bitOffset += 8;
|
|
9180
|
+
len--;
|
|
9181
|
+
}
|
|
9182
|
+
if (len === 0) {
|
|
9183
|
+
return 0;
|
|
9184
|
+
}
|
|
9185
|
+
const copyNibbles = Math.min(halfAvailable(s), len >> 1);
|
|
9186
|
+
if (copyNibbles > 0) {
|
|
9187
|
+
const readOffset = s.halfOffset << 1;
|
|
9188
|
+
const delta = copyNibbles << 1;
|
|
9189
|
+
data.set(s.byteBuffer.subarray(readOffset, readOffset + delta), pos);
|
|
9190
|
+
pos += delta;
|
|
9191
|
+
len -= delta;
|
|
9192
|
+
s.halfOffset += copyNibbles;
|
|
9193
|
+
}
|
|
9194
|
+
if (len === 0) {
|
|
9195
|
+
return 0;
|
|
9196
|
+
}
|
|
9197
|
+
if (halfAvailable(s) > 0) {
|
|
9198
|
+
if (s.bitOffset >= 16) {
|
|
9199
|
+
s.accumulator32 = s.shortBuffer[s.halfOffset++] << 16 | s.accumulator32 >>> 16;
|
|
9200
|
+
s.bitOffset -= 16;
|
|
9201
|
+
}
|
|
9202
|
+
while (len !== 0) {
|
|
9203
|
+
data[pos++] = s.accumulator32 >>> s.bitOffset;
|
|
9204
|
+
s.bitOffset += 8;
|
|
9205
|
+
len--;
|
|
9206
|
+
}
|
|
9207
|
+
return checkHealth(s, 0);
|
|
9208
|
+
}
|
|
9209
|
+
while (len > 0) {
|
|
9210
|
+
const chunkLen = readInput(s, data, pos, len);
|
|
9211
|
+
if (chunkLen < -1) {
|
|
9212
|
+
return chunkLen;
|
|
9213
|
+
}
|
|
9214
|
+
if (chunkLen <= 0) {
|
|
9215
|
+
return makeError(s, -16);
|
|
9216
|
+
}
|
|
9217
|
+
pos += chunkLen;
|
|
9218
|
+
len -= chunkLen;
|
|
9219
|
+
}
|
|
9220
|
+
return 0;
|
|
9221
|
+
}
|
|
9222
|
+
function bytesToNibbles(s, byteLen) {
|
|
9223
|
+
const byteBuffer = s.byteBuffer;
|
|
9224
|
+
const halfLen = byteLen >> 1;
|
|
9225
|
+
const shortBuffer = s.shortBuffer;
|
|
9226
|
+
for (let i = 0; i < halfLen; ++i) {
|
|
9227
|
+
shortBuffer[i] = byteBuffer[i * 2] & 0xFF | (byteBuffer[i * 2 + 1] & 0xFF) << 8;
|
|
9228
|
+
}
|
|
9229
|
+
}
|
|
9230
|
+
const LOOKUP = new Int32Array(2048);
|
|
9231
|
+
function unpackLookupTable(lookup, utfMap, utfRle) {
|
|
9232
|
+
for (let i = 0; i < 256; ++i) {
|
|
9233
|
+
lookup[i] = i & 0x3F;
|
|
9234
|
+
lookup[512 + i] = i >> 2;
|
|
9235
|
+
lookup[1792 + i] = 2 + (i >> 6);
|
|
9236
|
+
}
|
|
9237
|
+
for (let i = 0; i < 128; ++i) {
|
|
9238
|
+
lookup[1024 + i] = 4 * (utfMap.charCodeAt(i) - 32);
|
|
9239
|
+
}
|
|
9240
|
+
for (let i = 0; i < 64; ++i) {
|
|
9241
|
+
lookup[1152 + i] = i & 1;
|
|
9242
|
+
lookup[1216 + i] = 2 + (i & 1);
|
|
9243
|
+
}
|
|
9244
|
+
let offset = 1280;
|
|
9245
|
+
for (let k = 0; k < 19; ++k) {
|
|
9246
|
+
const value = k & 3;
|
|
9247
|
+
const rep = utfRle.charCodeAt(k) - 32;
|
|
9248
|
+
for (let i = 0; i < rep; ++i) {
|
|
9249
|
+
lookup[offset++] = value;
|
|
9250
|
+
}
|
|
9251
|
+
}
|
|
9252
|
+
for (let i = 0; i < 16; ++i) {
|
|
9253
|
+
lookup[1792 + i] = 1;
|
|
9254
|
+
lookup[2032 + i] = 6;
|
|
9255
|
+
}
|
|
9256
|
+
lookup[1792] = 0;
|
|
9257
|
+
lookup[2047] = 7;
|
|
9258
|
+
for (let i = 0; i < 256; ++i) {
|
|
9259
|
+
lookup[1536 + i] = lookup[1792 + i] << 3;
|
|
9260
|
+
}
|
|
9261
|
+
}
|
|
9262
|
+
unpackLookupTable(LOOKUP, " !! ! \"#$##%#$&'##(#)#++++++++++((&*'##,---,---,-----,-----,-----&#'###.///.///./////./////./////&#'# ", "A/* ': & : $ \x81 @");
|
|
9263
|
+
function State() {
|
|
9264
|
+
this.ringBuffer = new Int8Array(0);
|
|
9265
|
+
this.contextModes = new Int8Array(0);
|
|
9266
|
+
this.contextMap = new Int8Array(0);
|
|
9267
|
+
this.distContextMap = new Int8Array(0);
|
|
9268
|
+
this.distExtraBits = new Int8Array(0);
|
|
9269
|
+
this.output = new Int8Array(0);
|
|
9270
|
+
this.byteBuffer = new Int8Array(0);
|
|
9271
|
+
this.shortBuffer = new Int16Array(0);
|
|
9272
|
+
this.intBuffer = new Int32Array(0);
|
|
9273
|
+
this.rings = new Int32Array(0);
|
|
9274
|
+
this.blockTrees = new Int32Array(0);
|
|
9275
|
+
this.literalTreeGroup = new Int32Array(0);
|
|
9276
|
+
this.commandTreeGroup = new Int32Array(0);
|
|
9277
|
+
this.distanceTreeGroup = new Int32Array(0);
|
|
9278
|
+
this.distOffset = new Int32Array(0);
|
|
9279
|
+
this.accumulator64 = 0;
|
|
9280
|
+
this.runningState = 0;
|
|
9281
|
+
this.nextRunningState = 0;
|
|
9282
|
+
this.accumulator32 = 0;
|
|
9283
|
+
this.bitOffset = 0;
|
|
9284
|
+
this.halfOffset = 0;
|
|
9285
|
+
this.tailBytes = 0;
|
|
9286
|
+
this.endOfStreamReached = 0;
|
|
9287
|
+
this.metaBlockLength = 0;
|
|
9288
|
+
this.inputEnd = 0;
|
|
9289
|
+
this.isUncompressed = 0;
|
|
9290
|
+
this.isMetadata = 0;
|
|
9291
|
+
this.literalBlockLength = 0;
|
|
9292
|
+
this.numLiteralBlockTypes = 0;
|
|
9293
|
+
this.commandBlockLength = 0;
|
|
9294
|
+
this.numCommandBlockTypes = 0;
|
|
9295
|
+
this.distanceBlockLength = 0;
|
|
9296
|
+
this.numDistanceBlockTypes = 0;
|
|
9297
|
+
this.pos = 0;
|
|
9298
|
+
this.maxDistance = 0;
|
|
9299
|
+
this.distRbIdx = 0;
|
|
9300
|
+
this.trivialLiteralContext = 0;
|
|
9301
|
+
this.literalTreeIdx = 0;
|
|
9302
|
+
this.commandTreeIdx = 0;
|
|
9303
|
+
this.j = 0;
|
|
9304
|
+
this.insertLength = 0;
|
|
9305
|
+
this.contextMapSlice = 0;
|
|
9306
|
+
this.distContextMapSlice = 0;
|
|
9307
|
+
this.contextLookupOffset1 = 0;
|
|
9308
|
+
this.contextLookupOffset2 = 0;
|
|
9309
|
+
this.distanceCode = 0;
|
|
9310
|
+
this.numDirectDistanceCodes = 0;
|
|
9311
|
+
this.distancePostfixBits = 0;
|
|
9312
|
+
this.distance = 0;
|
|
9313
|
+
this.copyLength = 0;
|
|
9314
|
+
this.maxBackwardDistance = 0;
|
|
9315
|
+
this.maxRingBufferSize = 0;
|
|
9316
|
+
this.ringBufferSize = 0;
|
|
9317
|
+
this.expectedTotalSize = 0;
|
|
9318
|
+
this.outputOffset = 0;
|
|
9319
|
+
this.outputLength = 0;
|
|
9320
|
+
this.outputUsed = 0;
|
|
9321
|
+
this.ringBufferBytesWritten = 0;
|
|
9322
|
+
this.ringBufferBytesReady = 0;
|
|
9323
|
+
this.isEager = 0;
|
|
9324
|
+
this.isLargeWindow = 0;
|
|
9325
|
+
this.cdNumChunks = 0;
|
|
9326
|
+
this.cdTotalSize = 0;
|
|
9327
|
+
this.cdBrIndex = 0;
|
|
9328
|
+
this.cdBrOffset = 0;
|
|
9329
|
+
this.cdBrLength = 0;
|
|
9330
|
+
this.cdBrCopied = 0;
|
|
9331
|
+
this.cdChunks = new Array(0);
|
|
9332
|
+
this.cdChunkOffsets = new Int32Array(0);
|
|
9333
|
+
this.cdBlockBits = 0;
|
|
9334
|
+
this.cdBlockMap = new Int8Array(0);
|
|
9335
|
+
this.input = new InputStream(new Int8Array(0));
|
|
9336
|
+
this.ringBuffer = new Int8Array(0);
|
|
9337
|
+
this.rings = new Int32Array(10);
|
|
9338
|
+
this.rings[0] = 16;
|
|
9339
|
+
this.rings[1] = 15;
|
|
9340
|
+
this.rings[2] = 11;
|
|
9341
|
+
this.rings[3] = 4;
|
|
9342
|
+
}
|
|
9343
|
+
let data = new Int8Array(0);
|
|
9344
|
+
const offsets = new Int32Array(32);
|
|
9345
|
+
const sizeBits = new Int32Array(32);
|
|
9346
|
+
function setData(newData, newSizeBits) {
|
|
9347
|
+
const dictionaryOffsets = offsets;
|
|
9348
|
+
const dictionarySizeBits = sizeBits;
|
|
9349
|
+
for (let i = 0; i < newSizeBits.length; ++i) {
|
|
9350
|
+
dictionarySizeBits[i] = newSizeBits[i];
|
|
9351
|
+
}
|
|
9352
|
+
let pos = 0;
|
|
9353
|
+
for (let i = 0; i < newSizeBits.length; ++i) {
|
|
9354
|
+
dictionaryOffsets[i] = pos;
|
|
9355
|
+
const bits = dictionarySizeBits[i];
|
|
9356
|
+
if (bits !== 0) {
|
|
9357
|
+
pos += i << (bits & 31);
|
|
9358
|
+
}
|
|
9359
|
+
}
|
|
9360
|
+
for (let i = newSizeBits.length; i < 32; ++i) {
|
|
9361
|
+
dictionaryOffsets[i] = pos;
|
|
9362
|
+
}
|
|
9363
|
+
data = newData;
|
|
9364
|
+
}
|
|
9365
|
+
function unpackDictionaryData(dictionary, data0, data1, skipFlip, sizeBits, sizeBitsData) {
|
|
9366
|
+
const dict = toUsAsciiBytes(data0 + data1);
|
|
9367
|
+
const skipFlipRunes = toUtf8Runes(skipFlip);
|
|
9368
|
+
let offset = 0;
|
|
9369
|
+
const n = skipFlipRunes.length >> 1;
|
|
9370
|
+
for (let i = 0; i < n; ++i) {
|
|
9371
|
+
const skip = skipFlipRunes[2 * i] - 36;
|
|
9372
|
+
const flip = skipFlipRunes[2 * i + 1] - 36;
|
|
9373
|
+
for (let j = 0; j < skip; ++j) {
|
|
9374
|
+
dict[offset] = dict[offset] ^ 3;
|
|
9375
|
+
offset++;
|
|
9376
|
+
}
|
|
9377
|
+
for (let j = 0; j < flip; ++j) {
|
|
9378
|
+
dict[offset] = dict[offset] ^ 236;
|
|
9379
|
+
offset++;
|
|
9380
|
+
}
|
|
9381
|
+
}
|
|
9382
|
+
for (let i = 0; i < sizeBitsData.length; ++i) {
|
|
9383
|
+
sizeBits[i] = sizeBitsData.charCodeAt(i) - 65;
|
|
9384
|
+
}
|
|
9385
|
+
dictionary.set(dict);
|
|
9386
|
+
}
|
|
9387
|
+
const dictionaryData = new Int8Array(122784);
|
|
9388
|
+
const dictionarySizeBits = new Int32Array(25);
|
|
9389
|
+
unpackDictionaryData(dictionaryData, "wjnfgltmojefofewab`h`lgfgbwbpkltlmozpjwf`jwzlsfmivpwojhfeqfftlqhwf{wzfbqlufqalgzolufelqnallhsobzojufojmfkfosklnfpjgfnlqftlqgolmdwkfnujftejmgsbdfgbzpevookfbgwfqnfb`kbqfbeqlnwqvfnbqhbaofvslmkjdkgbwfobmgmftpfufmmf{w`bpfalwkslpwvpfgnbgfkbmgkfqftkbwmbnfOjmhaoldpjyfabpfkfognbhfnbjmvpfq$*#(klogfmgptjwkMftpqfbgtfqfpjdmwbhfkbufdbnfpffm`boosbwktfoosovpnfmvejonsbqwiljmwkjpojpwdllgmffgtbzptfpwilapnjmgboploldlqj`kvpfpobpwwfbnbqnzellghjmdtjoofbpwtbqgafpwejqfSbdfhmltbtbz-smdnlufwkbmolbgdjufpfoemlwfnv`keffgnbmzql`hj`lmlm`follhkjgfgjfgKlnfqvofklpwbib{jmel`ovaobtpofppkboeplnfpv`kylmf233&lmfp`bqfWjnfqb`faovfelvqtffheb`fklsfdbufkbqgolpwtkfmsbqhhfswsbpppkjsqllnKWNOsobmWzsfglmfpbufhffseobdojmhplogejufwllhqbwfwltmivnswkvpgbqh`bqgejofefbqpwbzhjoowkbweboobvwlfufq-`lnwbohpklsulwfgffsnlgfqfpwwvqmalqmabmgefooqlpfvqo+phjmqlof`lnfb`wpbdfpnffwdlog-isdjwfnubqzefowwkfmpfmggqlsUjft`lsz2-3!?,b=pwlsfopfojfpwlvqsb`h-djesbpw`pp<dqbznfbm%dw8qjgfpklwobwfpbjgqlbgubq#effoilkmqj`hslqwebpw$VB.gfbg?,a=sllqajoowzsfV-P-tllgnvpw1s{8JmelqbmhtjgftbmwtbooofbgX3^8sbvotbufpvqf'+$ tbjwnbppbqnpdlfpdbjmobmdsbjg\"..#ol`hvmjwqllwtbohejqntjef{no!plmdwfpw13s{hjmgqltpwlloelmwnbjopbefpwbqnbsp`lqfqbjmeoltabazpsbmpbzp7s{85s{8bqwpellwqfbotjhjkfbwpwfswqjslqd,obhftfbhwlogElqn`bpwebmpabmhufqzqvmpivozwbph2s{8dlbodqftpoltfgdfjg>!pfwp6s{8-ip<73s{je#+pllmpfbwmlmfwvafyfqlpfmwqffgeb`wjmwldjewkbqn2;s{`bnfkjooalogyllnuljgfbpzqjmdejoosfbhjmjw`lpw0s{8ib`hwbdpajwpqloofgjwhmftmfbq?\"..dqltIPLMgvwzMbnfpbofzlv#olwpsbjmibyy`logfzfpejpkttt-qjphwbapsqfu23s{qjpf16s{Aovfgjmd033/abooelqgfbqmtjogal{-ebjqob`hufqpsbjqivmfwf`kje+\"sj`hfujo'+! tbqnolqgglfpsvoo/333jgfbgqbtkvdfpslwevmgavqmkqfe`foohfzpwj`hklvqolppevfo21s{pvjwgfboQPP!bdfgdqfzDFW!fbpfbjnpdjqobjgp;s{8mbuzdqjgwjsp :::tbqpobgz`bqp*8#~sks<kfoowbootklnyk9\t),\x0E\t#233kboo-\t\tB4s{8svpk`kbw3s{8`qft),?,kbpk46s{eobwqbqf#%%#wfoo`bnslmwlobjgnjppphjswfmwejmfnbofdfwpsolw733/\x0E\t\x0E\t`lloeffw-sks?aq=fqj`nlpwdvjgafoogfp`kbjqnbwkbwln,jnd% ;1ov`h`fmw3338wjmzdlmfkwnopfoogqvdEQFFmlgfmj`h<jg>olpfmvooubpwtjmgQPP#tfbqqfozaffmpbnfgvhfmbpb`bsftjpkdvoeW109kjwppolwdbwfhj`haovqwkfz26s{$$*8*8!=npjftjmpajqgplqwafwbpffhW2;9lqgpwqffnboo53s{ebqn\x0ElupalzpX3^-$*8!SLPWafbqhjgp*8~~nbqzwfmg+VH*rvbgyk9\n.pjy....sqls$*8\x0EojewW2:9uj`fbmgzgfaw=QPPsllomf`haoltW259gllqfuboW249ofwpebjolqbosloomlub`lopdfmf#\x0Elxplewqlnfwjooqlpp?k0=slvqebgfsjmh?wq=njmj*\x7F\"+njmfyk9\x04abqpkfbq33*8njoh#..=jqlmeqfggjphtfmwpljosvwp,ip,klozW119JPAMW139bgbnpffp?k1=iplm$/#$`lmwW129#QPPollsbpjbnllm?,s=plvoOJMFelqw`bqwW279?k2=;3s{\"..?:s{8W379njhf975Ymj`fjm`kZlqhqj`fyk9\b$**8svqfnbdfsbqbwlmfalmg904Y\\le\\$^*8333/yk9\x0Bwbmhzbqgaltoavpk965YIbub03s{\t\x7F~\t&@0&907YifeeF[SJ`bpkujpbdloepmltyk9\x05rvfq-`pppj`hnfbwnjm-ajmggfookjqfsj`pqfmw905YKWWS.132elwltloeFMG#{al{967YALGZgj`h8\t~\tf{jw906Yubqpafbw$~*8gjfw:::8bmmf~~?,Xj^-Obmdhn.^tjqfwlzpbggppfbobof{8\t\n~f`klmjmf-lqd336*wlmziftppbmgofdpqlle333*#133tjmfdfbqgldpallwdbqz`vwpwzofwfnswjlm-{no`l`hdbmd'+$-63s{Sk-Gnjp`bobmolbmgfphnjofqzbmvmj{gjp`*8~\tgvpw`ojs*-\t\t43s{.133GUGp4^=?wbsfgfnlj((*tbdffvqlskjolswpklofEBRpbpjm.15WobapsfwpVQO#avoh`llh8~\x0E\tKFBGX3^*baaqivbm+2:;ofpkwtjm?,j=plmzdvzpev`hsjsf\x7F.\t\"331*mgltX2^8X^8\tOld#pbow\x0E\t\n\nabmdwqjnabwk*x\x0E\t33s{\t~*8hl9\0effpbg=\x0Ep9,,#X^8wloosovd+*x\tx\x0E\t#-ip$133sgvboalbw-ISD*8\t~rvlw*8\t\t$*8\t\x0E\t~\x0E1327132613251324132;132:13131312131113101317131613151314131;131:130313021301130013071306130513041320132113221323133:133;133413351336133713301331133213332:::2::;2::42::52::62::72::02::12::22::32:;:2:;;2:;42:;52:;62:;72:;02:;12:;22:;32:4:2:4;2:442:452:462:472:402:412:422:432:5:2:5;2:542:552:562:572:502:512:522:532:6:2:6;2:642:652:662:672:602:612:622:632333231720:73333::::`lnln/Mpfpwffpwbsfqlwlglkb`f`bgbb/]lajfmg/Abbp/Aujgb`bpllwqlelqlplollwqb`vbogjilpjgldqbmwjslwfnbgfafbodlrv/Efpwlmbgbwqfpsl`l`bpbabilwlgbpjmlbdvbsvfpvmlpbmwfgj`fovjpfoobnbzlylmbbnlqsjpllaqb`oj`foolgjlpklqb`bpj<[<\\<Q<\\<R<P=l<\\=l=o=n<\\<Q<Y<S<R<R=n<T<[<Q<R<X<R=n<R<Z<Y<R<Q<T=i<q<\\<Y<Y<]=g<P=g<~=g=m<R<^=g<^<R<q<R<R<]<s<R<W<T<Q<T<L<H<q<Y<p=g=n=g<r<Q<T<P<X<\\<{<\\<x<\\<q=o<r<]=n<Y<t<[<Y<U<Q=o<P<P<N=g=o<Z5m5f4O5j5i4K5i4U5o5h4O5d4]4C5f4K5m5e5k5d5h5i5h5o4K5d5h5k4D4_4K5h4I5j5k5f4O5f5n4C5k5h4G5i4D5k5h5d5h5f4D5h4K5f4D5o4X5f4K5i4O5i5j4F4D5f5h5j4A4D5k5i5i4X5d4Xejqpwujgflojdkwtlqognfgjbtkjwf`olpfaob`hqjdkwpnbooallhpsob`fnvpj`ejfoglqgfqsljmwubovfofufowbaofalbqgklvpfdqlvstlqhpzfbqppwbwfwlgbztbwfqpwbqwpwzofgfbwksltfqsklmfmjdkwfqqlqjmsvwbalvwwfqnpwjwofwllopfufmwol`bowjnfpobqdftlqgpdbnfppklqwpsb`fel`vp`ofbqnlgfoaol`hdvjgfqbgjlpkbqftlnfmbdbjmnlmfzjnbdfmbnfpzlvmdojmfpobwfq`lolqdqffmeqlmw%bns8tbw`kelq`fsqj`fqvofpafdjmbewfqujpjwjppvfbqfbpafoltjmgf{wlwboklvqpobafosqjmwsqfppavjowojmhppsffgpwvgzwqbgfelvmgpfmpfvmgfqpkltmelqnpqbmdfbggfgpwjoonlufgwbhfmbalufeobpkej{fglewfmlwkfqujftp`kf`hofdboqjufqjwfnprvj`hpkbsfkvnbmf{jpwdljmdnlujfwkjqgabpj`sfb`fpwbdftjgwkoldjmjgfbptqlwfsbdfpvpfqpgqjufpwlqfaqfbhplvwkulj`fpjwfpnlmwktkfqfavjogtkj`kfbqwkelqvnwkqffpslqwsbqwz@oj`holtfqojufp`obppobzfqfmwqzpwlqzvpbdfplvmg`lvqwzlvq#ajqwkslsvswzsfpbssozJnbdfafjmdvssfqmlwfpfufqzpkltpnfbmpf{wqbnbw`kwqb`hhmltmfbqozafdbmpvsfqsbsfqmlqwkofbqmdjufmmbnfgfmgfgWfqnpsbqwpDqlvsaqbmgvpjmdtlnbmebopfqfbgzbvgjlwbhfptkjof-`ln,ojufg`bpfpgbjoz`kjogdqfbwivgdfwklpfvmjwpmfufqaqlbg`lbpw`lufqbssofejofp`z`ofp`fmfsobmp`oj`htqjwfrvffmsjf`ffnbjoeqbnflogfqsklwlojnjw`b`kf`jujop`boffmwfqwkfnfwkfqfwlv`kalvmgqlzbobphfgtklofpjm`fpwl`h#mbnfebjwkkfbqwfnswzleefqp`lsfltmfgnjdkwboavnwkjmhaollgbqqbznbilqwqvpw`bmlmvmjlm`lvmwubojgpwlmfPwzofOldjmkbsszl``vqofew9eqfpkrvjwfejonpdqbgfmffgpvqabmejdkwabpjpklufqbvwl8qlvwf-kwnonj{fgejmboZlvq#pojgfwlsj`aqltmbolmfgqbtmpsojwqfb`kQjdkwgbwfpnbq`krvlwfdllgpOjmhpglvawbpzm`wkvnaboolt`kjfezlvwkmlufo23s{8pfqufvmwjokbmgp@kf`hPsb`frvfqzibnfpfrvbowtj`f3/333Pwbqwsbmfoplmdpqlvmgfjdkwpkjewtlqwkslpwpofbgptffhpbuljgwkfpfnjofpsobmfpnbqwboskbsobmwnbqhpqbwfpsobzp`objnpbofpwf{wppwbqptqlmd?,k0=wkjmd-lqd,nvowjkfbqgSltfqpwbmgwlhfmplojg+wkjpaqjmdpkjsppwbeewqjfg`boopevoozeb`wpbdfmwWkjp#,,..=bgnjmfdzswFufmw26s{8Fnbjowqvf!`qlpppsfmwaoldpal{!=mlwfgofbuf`kjmbpjyfpdvfpw?,k7=qlalwkfbuzwqvf/pfufmdqbmg`qjnfpjdmpbtbqfgbm`fskbpf=?\"..fm\\VP% 0:8133s{\\mbnfobwjmfmilzbib{-bwjlmpnjwkV-P-#klogpsfwfqjmgjbmbu!=`kbjmp`lqf`lnfpgljmdsqjlqPkbqf2::3pqlnbmojpwpibsbmeboopwqjboltmfqbdqff?,k1=bavpfbofqwlsfqb!.,,T`bqgpkjoopwfbnpSklwlwqvwk`ofbm-sks<pbjmwnfwboolvjpnfbmwsqlleaqjfeqlt!=dfmqfwqv`hollhpUbovfEqbnf-mfw,..=\t?wqz#x\tubq#nbhfp`lpwpsobjmbgvowrvfpwwqbjmobalqkfosp`bvpfnbdj`nlwlqwkfjq163s{ofbpwpwfsp@lvmw`lvogdobpppjgfpevmgpklwfobtbqgnlvwknlufpsbqjpdjufpgvw`kwf{bpeqvjwmvoo/\x7F\x7FX^8wls!=\t?\"..SLPW!l`fbm?aq,=eollqpsfbhgfswk#pjyfabmhp`bw`k`kbqw13s{8bojdmgfboptlvog63s{8vqo>!sbqhpnlvpfNlpw#---?,bnlmdaqbjmalgz#mlmf8abpfg`bqqzgqbewqfefqsbdf\\klnf-nfwfqgfobzgqfbnsqlufiljmw?,wq=gqvdp?\"..#bsqjojgfboboofmf{b`welqwk`lgfpoldj`Ujft#pffnpaobmhslqwp#+133pbufg\\ojmhdlbopdqbmwdqffhklnfpqjmdpqbwfg03s{8tklpfsbqpf+*8!#Aol`hojmv{ilmfpsj{fo$*8!=*8je+.ofewgbujgklqpfEl`vpqbjpfal{fpWqb`hfnfmw?,fn=abq!=-pq`>wltfqbow>!`baofkfmqz17s{8pfwvsjwbozpkbqsnjmlqwbpwftbmwpwkjp-qfpfwtkffodjqop,`pp,233&8`ovappwveeajaofulwfp#2333hlqfb~*8\x0E\tabmgprvfvf>#x~8;3s{8`hjmdx\x0E\t\n\nbkfbg`ol`hjqjpkojhf#qbwjlpwbwpElqn!zbkll*X3^8Balvwejmgp?,k2=gfavdwbphpVQO#>`foop~*+*821s{8sqjnfwfoopwvqmp3{533-isd!psbjmafb`kwb{fpnj`qlbmdfo..=?,djewppwfuf.ojmhalgz-~*8\t\nnlvmw#+2::EBR?,qldfqeqbmh@obpp1;s{8effgp?k2=?p`lwwwfpwp11s{8gqjmh*#\x7F\x7F#oftjppkboo 30:8#elq#olufgtbpwf33s{8ib9\x0Fnpjnlm?elmwqfsoznffwpvmwfq`kfbswjdkwAqbmg*#\">#gqfpp`ojspqllnplmhfznlajonbjm-Mbnf#sobwfevmmzwqffp`ln,!2-isdtnlgfsbqbnPWBQWofew#jggfm/#132*8\t~\telqn-ujqvp`kbjqwqbmptlqpwSbdfpjwjlmsbw`k?\"..\tl.`b`ejqnpwlvqp/333#bpjbmj((*xbglaf$*X3^jg>23alwk8nfmv#-1-nj-smd!hfujm`lb`k@kjogaqv`f1-isdVQO*(-isd\x7Fpvjwfpoj`fkbqqz213!#ptffwwq=\x0E\tmbnf>gjfdlsbdf#ptjpp..=\t\t eee8!=Old-`ln!wqfbwpkffw*#%%#27s{8poffsmwfmwejofgib9\x0Fojg>!`Mbnf!tlqpfpklwp.al{.gfowb\t%ow8afbqp97;Y?gbwb.qvqbo?,b=#psfmgabhfqpklsp>#!!8sks!=`wjlm20s{8aqjbmkfoolpjyf>l>&1E#iljmnbzaf?jnd#jnd!=/#eipjnd!#!*X3^NWlsAWzsf!mftozGbmph`yf`kwqbjohmltp?,k6=ebr!=yk.`m23*8\t.2!*8wzsf>aovfpwqvozgbujp-ip$8=\x0E\t?\"pwffo#zlv#k1=\x0E\telqn#ifpvp233&#nfmv-\x0E\t\n\x0E\ttbofpqjphpvnfmwggjmda.ojhwfb`kdje!#ufdbpgbmphffpwjpkrjspvlnjplaqfgfpgffmwqfwlglpsvfgfb/]lpfpw/Mwjfmfkbpwblwqlpsbqwfglmgfmvfulkb`fqelqnbnjpnlnfilqnvmglbrv/Ag/Abpp/_olbzvgbef`kbwlgbpwbmwlnfmlpgbwlplwqbppjwjlnv`klbklqbovdbqnbzlqfpwlpklqbpwfmfqbmwfpelwlpfpwbpsb/Apmvfubpbovgelqlpnfgjlrvjfmnfpfpslgfq`kjofpfq/Muf`fpgf`jqilp/Efpwbqufmwbdqvslkf`klfoolpwfmdlbnjdl`lpbpmjufodfmwfnjpnbbjqfpivojlwfnbpkb`jbebulqivmjlojaqfsvmwlavfmlbvwlqbaqjoavfmbwf{wlnbqylpbafqojpwbovfdl`/_nlfmfqlivfdlsfq/Vkbafqfpwlzmvm`bnvifqubolqevfqbojaqldvpwbjdvboulwlp`bplpdv/Absvfglplnlpbujplvpwfggfafmml`kfavp`bebowbfvqlppfqjfgj`kl`vqpl`obuf`bpbpof/_msobylobqdllaqbpujpwbbslzlivmwlwqbwbujpwl`qfbq`bnslkfnlp`jm`l`bqdlsjplplqgfmkb`fm/Mqfbgjp`lsfgql`fq`bsvfgbsbsfonfmlq/Vwjo`obqlilqdf`boofslmfqwbqgfmbgjfnbq`bpjdvffoobppjdol`l`kfnlwlpnbgqf`obpfqfpwlmj/]lrvfgbsbpbqabm`lkjilpujbifsbaol/Epwfujfmfqfjmlgfibqelmgl`bmbomlqwfofwqb`bvpbwlnbqnbmlpovmfpbvwlpujoobufmglsfpbqwjslpwfmdbnbq`loofubsbgqfvmjglubnlpylmbpbnalpabmgbnbqjbbavplnv`kbpvajqqjlibujujqdqbgl`kj`bboo/Ailufmgj`kbfpwbmwbofppbojqpvfolsfplpejmfpoobnbavp`l/Epwboofdbmfdqlsobybkvnlqsbdbqivmwbglaofjpobpalopbab/]lkbaobov`kb/mqfbgj`fmivdbqmlwbpuboofboo/M`bqdbglolqbabilfpw/Edvpwlnfmwfnbqjlejqnb`lpwlej`kbsobwbkldbqbqwfpofzfpbrvfonvpflabpfpsl`lpnjwbg`jfol`kj`lnjfgldbmbqpbmwlfwbsbgfafpsobzbqfgfppjfwf`lqwf`lqfbgvgbpgfpflujfilgfpfbbdvbp%rvlw8glnbjm`lnnlmpwbwvpfufmwpnbpwfqpzpwfnb`wjlmabmmfqqfnlufp`qloovsgbwfdolabonfgjvnejowfqmvnafq`kbmdfqfpvowsvaoj`p`qffm`kllpfmlqnbowqbufojppvfpplvq`fwbqdfwpsqjmdnlgvofnlajofptjw`ksklwlpalqgfqqfdjlmjwpfoepl`jbob`wjuf`lovnmqf`lqgelooltwjwof=fjwkfqofmdwkebnjozeqjfmgobzlvwbvwklq`qfbwfqfujftpvnnfqpfqufqsobzfgsobzfqf{sbmgsloj`zelqnbwglvaofsljmwppfqjfpsfqplmojujmdgfpjdmnlmwkpelq`fpvmjrvftfjdkwsflsoffmfqdzmbwvqfpfbq`kejdvqfkbujmd`vpwlnleepfwofwwfqtjmgltpvanjwqfmgfqdqlvspvsolbgkfbowknfwklgujgflpp`klloevwvqfpkbgltgfabwfubovfpLaif`wlwkfqpqjdkwpofbdvf`kqlnfpjnsofmlwj`fpkbqfgfmgjmdpfbplmqfslqwlmojmfprvbqfavwwlmjnbdfpfmbaofnlujmdobwfpwtjmwfqEqbm`fsfqjlgpwqlmdqfsfbwOlmglmgfwbjoelqnfggfnbmgpf`vqfsbppfgwlddofsob`fpgfuj`fpwbwj``jwjfppwqfbnzfooltbwwb`hpwqffweojdkwkjggfmjmel!=lsfmfgvpfevouboofz`bvpfpofbgfqpf`qfwpf`lmggbnbdfpslqwpf{`fswqbwjmdpjdmfgwkjmdpfeef`wejfogppwbwfpleej`fujpvbofgjwlqulovnfQfslqwnvpfvnnlujfpsbqfmwb``fppnlpwoznlwkfq!#jg>!nbqhfwdqlvmg`kbm`fpvqufzafelqfpznalonlnfmwpsff`knlwjlmjmpjgfnbwwfq@fmwfqlaif`wf{jpwpnjggofFvqlsfdqltwkofdb`znbmmfqfmlvdk`bqffqbmptfqlqjdjmslqwbo`ojfmwpfof`wqbmgln`olpfgwlsj`p`lnjmdebwkfqlswjlmpjnsozqbjpfgfp`bsf`klpfm`kvq`kgfejmfqfbplm`lqmfqlvwsvwnfnlqzjeqbnfsloj`fnlgfopMvnafqgvqjmdleefqppwzofphjoofgojpwfg`boofgpjoufqnbqdjmgfofwfafwwfqaqltpfojnjwpDolabopjmdoftjgdfw`fmwfqavgdfwmltqbs`qfgjw`objnpfmdjmfpbefwz`klj`fpsjqjw.pwzofpsqfbgnbhjmdmffgfgqvppjbsofbpff{wfmwP`qjswaqlhfmbooltp`kbqdfgjujgfeb`wlqnfnafq.abpfgwkflqz`lmejdbqlvmgtlqhfgkfosfg@kvq`kjnsb`wpklvogbotbzpoldl!#alwwlnojpw!=*xubq#sqfej{lqbmdfKfbgfq-svpk+`lvsofdbqgfmaqjgdfobvm`kQfujftwbhjmdujpjlmojwwofgbwjmdAvwwlmafbvwzwkfnfpelqdlwPfbq`kbm`klqbonlpwolbgfg@kbmdfqfwvqmpwqjmdqfolbgNlajofjm`lnfpvssozPlvq`flqgfqpujftfg%maps8`lvqpfBalvw#jpobmg?kwno#`llhjfmbnf>!bnbylmnlgfqmbguj`fjm?,b=9#Wkf#gjboldklvpfpAFDJM#Nf{j`lpwbqwp`fmwqfkfjdkwbggjmdJpobmgbppfwpFnsjqfP`kllofeelqwgjqf`wmfbqoznbmvboPfof`w-\t\tLmfiljmfgnfmv!=SkjojsbtbqgpkbmgofjnslqwLeej`fqfdbqgphjoopmbwjlmPslqwpgfdqfftffhoz#+f-d-afkjmggl`wlqolddfgvmjwfg?,a=?,afdjmpsobmwpbppjpwbqwjpwjppvfg033s{\x7F`bmbgbbdfm`zp`kfnfqfnbjmAqbyjopbnsofoldl!=afzlmg.p`bofb``fswpfqufgnbqjmfEllwfq`bnfqb?,k2=\t\\elqn!ofbufppwqfpp!#,=\x0E\t-dje!#lmolbgolbgfqL{elqgpjpwfqpvqujuojpwfmefnbofGfpjdmpjyf>!bssfbowf{w!=ofufopwkbmhpkjdkfqelq`fgbmjnbobmzlmfBeqj`bbdqffgqf`fmwSflsof?aq#,=tlmgfqsqj`fpwvqmfg\x7F\x7F#x~8nbjm!=jmojmfpvmgbztqbs!=ebjofg`fmpvpnjmvwfafb`lmrvlwfp263s{\x7Ffpwbwfqfnlwffnbjo!ojmhfgqjdkw8pjdmboelqnbo2-kwnopjdmvssqjm`feolbw9-smd!#elqvn-B``fppsbsfqpplvmgpf{wfmgKfjdkwpojgfqVWE.;!%bns8#Afelqf-#TjwkpwvgjlltmfqpnbmbdfsqlejwiRvfqzbmmvbosbqbnpalvdkwebnlvpdlldofolmdfqj((*#xjpqbfopbzjmdgf`jgfklnf!=kfbgfqfmpvqfaqbm`ksjf`fpaol`h8pwbwfgwls!=?qb`jmdqfpjyf..%dw8sb`jwzpf{vboavqfbv-isd!#23/333lawbjmwjwofpbnlvmw/#Jm`-`lnfgznfmv!#ozqj`pwlgbz-jmgffg`lvmwz\\oldl-EbnjozollhfgNbqhfwopf#jeSobzfqwvqhfz*8ubq#elqfpwdjujmdfqqlqpGlnbjm~fopfxjmpfqwAold?,ellwfqoldjm-ebpwfqbdfmwp?algz#23s{#3sqbdnbeqjgbzivmjlqgloobqsob`fg`lufqpsovdjm6/333#sbdf!=alpwlm-wfpw+bubwbqwfpwfg\\`lvmwelqvnpp`kfnbjmgf{/ejoofgpkbqfpqfbgfqbofqw+bssfbqPvanjwojmf!=algz!=\t)#WkfWklvdkpffjmdifqpfzMftp?,ufqjezf{sfqwjmivqztjgwk>@llhjfPWBQW#b`qlpp\\jnbdfwkqfbgmbwjufsl`hfwal{!=\tPzpwfn#Gbujg`bm`fqwbaofpsqlufgBsqjo#qfboozgqjufqjwfn!=nlqf!=albqgp`lolqp`bnsvpejqpw#\x7F\x7F#X^8nfgjb-dvjwbqejmjpktjgwk9pkltfgLwkfq#-sks!#bppvnfobzfqptjoplmpwlqfpqfojfeptfgfm@vpwlnfbpjoz#zlvq#Pwqjmd\t\tTkjowbzolq`ofbq9qfplqweqfm`kwklvdk!*#(#!?algz=avzjmdaqbmgpNfnafqmbnf!=lssjmdpf`wlq6s{8!=upsb`fslpwfqnbilq#`leeffnbqwjmnbwvqfkbssfm?,mbu=hbmpbpojmh!=Jnbdfp>ebopftkjof#kpsb`f3%bns8#\t\tJm##sltfqSlophj.`lolqilqgbmAlwwlnPwbqw#.`lvmw1-kwnomftp!=32-isdLmojmf.qjdkwnjoofqpfmjlqJPAM#33/333#dvjgfpubovf*f`wjlmqfsbjq-{no!##qjdkwp-kwno.aol`hqfdF{s9klufqtjwkjmujqdjmsklmfp?,wq=\x0Evpjmd#\t\nubq#=$*8\t\n?,wg=\t?,wq=\tabkbpbaqbpjodbofdlnbdzbqslophjpqsphj4]4C5d\bTA\nzk\x0BBl\bQ\x7F\x0BUm\x05Gx\bSM\nmC\bTA\twQ\nd}\bW@\bTl\bTF\ti@\tcT\x0BBM\x0B|j\x04BV\tqw\tcC\bWI\npa\tfM\n{Z\x05{X\bTF\bVV\bVK\t\x7Fm\x04kF\t[]\bPm\bTv\nsI\x0Bpg\t[I\bQp\x04mx\x0B_W\n^M\npe\x0BQ}\x0BGu\nel\npe\x04Ch\x04BV\bTA\tSo\nzk\x0BGL\x0BxD\nd[\x05Jz\x05MY\bQp\x04li\nfl\npC\x05{B\x05Nt\x0BwT\ti_\bTg\x04QQ\n|p\x0BXN\bQS\x0BxD\x04QC\bWZ\tpD\x0BVS\bTW\x05Nt\x04Yh\nzu\x04Kj\x05N}\twr\tHa\n_D\tj`\x0BQ}\x0BWp\nxZ\x04{c\tji\tBU\nbD\x04a|\tTn\tpV\nZd\nmC\x0BEV\x05{X\tc}\tTo\bWl\bUd\tIQ\tcg\x0Bxs\nXW\twR\x0Bek\tc}\t]y\tJn\nrp\neg\npV\nz\\\x05{W\npl\nz\\\nzU\tPc\t`{\bV@\nc|\bRw\ti_\bVb\nwX\tHv\x04Su\bTF\x0B_W\x0BWs\x0BsI\x05m\x7F\nTT\ndc\tUS\t}f\tiZ\bWz\tc}\x04MD\tBe\tiD\x0B@@\bTl\bPv\t}t\x04Sw\x04M`\x0BnU\tkW\x0Bed\nqo\x0BxY\tA|\bTz\x0By`\x04BR\x04BM\tia\x04XU\nyu\x04n^\tfL\tiI\nXW\tfD\bWz\bW@\tyj\t\x7Fm\tav\tBN\x0Bb\\\tpD\bTf\nY[\tJn\bQy\t[^\x0BWc\x0Byu\x04Dl\x04CJ\x0BWj\x0BHR\t`V\x0BuW\tQy\np@\x0BGu\x05pl\x04Jm\bW[\nLP\nxC\n`m\twQ\x05ui\x05\x7FR\nbI\twQ\tBZ\tWV\x04BR\npg\tcg\x05ti\x04CW\n_y\tRg\bQa\x0BQB\x0BWc\nYb\x05le\ngE\x04Su\nL[\tQ\x7F\tea\tdj\x0B]W\nb~\x04M`\twL\bTV\bVH\nt\x7F\npl\t|b\x05s_\bU|\bTa\x04oQ\x05lv\x04Sk\x04M`\bTv\x0BK}\nfl\tcC\x04oQ\x04BR\tHk\t|d\bQp\tHK\tBZ\x0BHR\bPv\x0BLx\x0BEZ\bT\x7F\bTv\tiD\x05oD\x05MU\x0BwB\x04Su\x05k`\x04St\ntC\tPl\tKg\noi\tjY\x0BxY\x04h}\nzk\bWZ\t\x7Fm\x0Be`\tTB\tfE\nzk\t`z\x04Yh\nV|\tHK\tAJ\tAJ\bUL\tp\\\tql\nYc\x04Kd\nfy\x04Yh\t[I\x0BDg\x04Jm\n]n\nlb\bUd\n{Z\tlu\tfs\x04oQ\bTW\x04Jm\x0BwB\tea\x04Yh\x04BC\tsb\tTn\nzU\n_y\x0BxY\tQ]\ngw\x04mt\tO\\\ntb\bWW\bQy\tmI\tV[\ny\\\naB\x0BRb\twQ\n]Q\x04QJ\bWg\x0BWa\bQj\ntC\bVH\nYm\x0Bxs\bVK\nel\bWI\x0BxY\x04Cq\ntR\x0BHV\bTl\bVw\tay\bQa\bVV\t}t\tdj\nr|\tp\\\twR\n{i\nTT\t[I\ti[\tAJ\x0Bxs\x0B_W\td{\x0BQ}\tcg\tTz\tA|\tCj\x0BLm\x05N}\x05m\x7F\nbK\tdZ\tp\\\t`V\tsV\np@\tiD\twQ\x0BQ}\bTf\x05ka\x04Jm\x0B@@\bV`\tzp\n@N\x04Sw\tiI\tcg\noi\x04Su\bVw\x04lo\x04Cy\tc}\x0Bb\\\tsU\x04BA\bWI\bTf\nxS\tVp\nd|\bTV\x0BbC\tNo\x05Ju\nTC\t|`\n{Z\tD]\bU|\tc}\x05lm\bTl\tBv\tPl\tc}\bQp\t\x7Fm\nLk\tkj\n@N\x04Sb\x04KO\tj_\tp\\\nzU\bTl\bTg\bWI\tcf\x04XO\bWW\ndz\x04li\tBN\nd[\bWO\x04MD\x0BKC\tdj\tI_\bVV\ny\\\x0BLm\x05xl\txB\tkV\x0Bb\\\x0BJW\x0BVS\tVx\x0BxD\td{\x04MD\bTa\t|`\x0BPz\x04R}\x0BWs\x04BM\nsI\x04CN\bTa\x04Jm\npe\ti_\npV\nrh\tRd\tHv\n~A\nxR\x0BWh\x0BWk\nxS\x0BAz\x0BwX\nbI\x04oQ\tfw\nqI\nV|\nun\x05z\x7F\x0Bpg\td\\\x0BoA\x05{D\ti_\x05xB\bT\x7F\t`V\x05qr\tTT\x04g]\x04CA\x0BuR\tVJ\tT`\npw\x0BRb\tI_\nCx\x04Ro\x0BsI\x04Cj\x04Kh\tBv\tWV\x04BB\x05oD\x05{D\nhc\x04Km\x0B^R\tQE\n{I\np@\nc|\x05Gt\tc}\x04Dl\nzU\x05qN\tsV\x05k}\tHh\x0B|j\nqo\x05u|\tQ]\x0Bek\x05\x7FZ\x04M`\x04St\npe\tdj\bVG\x0BeE\t\x7Fm\x0BWc\x04|I\n[W\tfL\bT\x7F\tBZ\x04Su\x0BKa\x04Cq\x05Nt\x04Y[\nqI\bTv\tfM\ti@\t}f\x04B\\\tQy\x0BBl\bWg\x04XD\x05kc\x0Bx[\bVV\tQ]\t\x7Fa\tPy\x0BxD\nfI\t}f\x05oD\tdj\tSG\x05ls\t~D\x04CN\n{Z\t\\v\n_D\nhc\x0Bx_\x04C[\tAJ\nLM\tVx\x04CI\tbj\tc^\tcF\ntC\x04Sx\twr\x04XA\bU\\\t|a\x0BK\\\bTV\bVj\nd|\tfs\x04CX\ntb\bRw\tVx\tAE\tA|\bT\x7F\x05Nt\x0BDg\tVc\bTl\x04d@\npo\t\x7FM\tcF\npe\tiZ\tBo\bSq\nfH\x04l`\bTx\bWf\tHE\x0BF{\tcO\tfD\nlm\x0BfZ\nlm\x0BeU\tdG\x04BH\bTV\tSi\x05MW\nwX\nz\\\t\\c\x04CX\nd}\tl}\bQp\bTV\tF~\bQ\x7F\t`i\ng@\x05nO\bUd\bTl\nL[\twQ\tji\ntC\t|J\nLU\naB\x0BxY\x04Kj\tAJ\x05uN\ti[\npe\x04Sk\x0BDg\x0Bx]\bVb\bVV\nea\tkV\nqI\bTa\x04Sk\nAO\tpD\ntb\nts\nyi\bVg\ti_\x0B_W\nLk\x05Nt\tyj\tfM\x04R\x7F\tiI\bTl\x0BwX\tsV\x0BMl\nyu\tAJ\bVj\x04KO\tWV\x0BA}\x0BW\x7F\nrp\tiD\x0B|o\x05lv\x0BsI\x04BM\td~\tCU\bVb\x04eV\npC\x0BwT\tj`\tc}\x0Bxs\x0Bps\x0Bvh\tWV\x0BGg\x0BAe\x0BVK\x0B]W\trg\x0BWc\x05F`\tBr\x0Bb\\\tdZ\bQp\nqI\x04kF\nLk\x0BAR\bWI\bTg\tbs\tdw\n{L\n_y\tiZ\bTA\tlg\bVV\bTl\tdk\n`k\ta{\ti_\x05{A\x05wj\twN\x0B@@\bTe\ti_\n_D\twL\nAH\x0BiK\x0Bek\n[]\tp_\tyj\bTv\tUS\t[r\n{I\nps\x05Gt\x0BVK\npl\x04S}\x0BWP\t|d\x04MD\x0BHV\bT\x7F\x04R}\x04M`\bTV\bVH\x05lv\x04Ch\bW[\x04Ke\tR{\x0B^R\tab\tBZ\tVA\tB`\nd|\nhs\x04Ke\tBe\x04Oi\tR{\td\\\x05nB\bWZ\tdZ\tVJ\x05Os\t\x7Fm\x04uQ\x0BhZ\x04Q@\x04QQ\nfI\bW[\x04B\\\x04li\nzU\nMd\x04M`\nxS\bVV\n\\}\x0BxD\t\x7Fm\bTp\x04IS\nc|\tkV\x05i~\tV{\x0BhZ\t|b\bWt\n@R\x0BoA\x0BnU\bWI\tea\tB`\tiD\tc}\tTz\x04BR\x0BQB\x05Nj\tCP\t[I\bTv\t`W\x05uN\x0Bpg\x0Bpg\x0BWc\tiT\tbs\twL\tU_\tc\\\t|h\x0BKa\tNr\tfL\nq|\nzu\nz\\\tNr\bUg\t|b\x04m`\bTv\nyd\nrp\bWf\tUX\x04BV\nzk\nd}\twQ\t}f\x04Ce\x0Bed\bTW\bSB\nxU\tcn\bTb\ne\x7F\ta\\\tSG\bU|\npV\nN\\\x04Kn\x0BnU\tAt\tpD\x0B^R\x0BIr\x04b[\tR{\tdE\x0BxD\x0BWK\x0BWA\bQL\bW@\x04Su\bUd\nDM\tPc\x04CA\x04Dl\x04oQ\tHs\x05wi\x04ub\n\x7Fa\bQp\x05Ob\nLP\bTl\x04Y[\x0BK}\tAJ\bQ\x7F\x04n^\x0BsA\bSM\nqM\bWZ\n^W\x0Bz{\x04S|\tfD\bVK\bTv\bPv\x04BB\tCP\x04dF\tid\x0Bxs\x04mx\x0Bws\tcC\ntC\tyc\x05M`\x0BW\x7F\nrh\bQp\x0BxD\x04\\o\nsI\x04_k\nzu\x04kF\tfD\x04Xs\x04XO\tjp\bTv\x04BS\x05{B\tBr\nzQ\nbI\tc{\x04BD\x04BV\x05nO\bTF\tca\x05Jd\tfL\tPV\tI_\nlK\x04`o\twX\npa\tgu\bP}\x05{^\bWf\n{I\tBN\npa\x04Kl\x0Bpg\tcn\tfL\x0Bvh\x04Cq\bTl\x0BnU\bSq\x04Cm\twR\bUJ\npe\nyd\nYg\x04Cy\x0BKW\tfD\nea\x04oQ\tj_\tBv\x04nM\x0BID\bTa\nzA\x05pl\n]n\bTa\tR{\tfr\n_y\bUg\x05{X\x05kk\x0BxD\x04|I\x05xl\nfy\x04Ce\x0BwB\nLk\x0Bd]\noi\n}h\tQ]\npe\bVw\x04Hk\x04OQ\nzk\tAJ\npV\bPv\ny\\\tA{\x04Oi\bSB\x04XA\x0BeE\tjp\nq}\tiD\x05qN\x0B^R\t\x7Fm\tiZ\tBr\bVg\noi\n\\X\tU_\nc|\x0BHV\bTf\tTn\x04\\N\x04\\N\nuB\x05lv\nyu\tTd\bTf\bPL\x0B]W\tdG\nA`\nw^\ngI\npe\tdw\nz\\\x05ia\bWZ\tcF\x04Jm\n{Z\bWO\x04_k\x04Df\x04RR\td\\\bVV\x0Bxs\x04BN\x05ti\x04lm\tTd\t]y\x0BHV\tSo\x0B|j\x04XX\tA|\x0BZ^\x0BGu\bTW\x05M`\x04kF\x0BhZ\x0BVK\tdG\x0BBl\tay\nxU\x05qE\x05nO\bVw\nqI\x04CX\ne\x7F\tPl\bWO\x0BLm\tdL\x05uH\x04Cm\tdT\x04fn\x0BwB\x05ka\x0BnU\n@M\nyT\tHv\t\\}\x04Kh\td~\x04Yh\x05k}\neR\td\\\bWI\t|b\tHK\tiD\bTW\x05MY\npl\bQ_\twr\x0BAx\tHE\bTg\bSq\x05vp\x0Bb\\\bWO\nOl\nsI\nfy\x0BID\t\\c\n{Z\n^~\npe\nAO\tTT\x0Bxv\x04k_\bWO\x0B|j\x0BwB\tQy\ti@\tPl\tHa\tdZ\x05k}\x04ra\tUT\x0BJc\x0Bed\np@\tQN\nd|\tkj\tHk\x04M`\noi\twr\td\\\nlq\no_\nlb\nL[\tac\x04BB\x04BH\x04Cm\npl\tIQ\bVK\x0Bxs\n`e\x0BiK\npa\x04Oi\tUS\bTp\tfD\nPG\x05kk\x04XA\nz\\\neg\x0BWh\twR\x05qN\nqS\tcn\x04lo\nxS\n^W\tBU\nt\x7F\tHE\tp\\\tfF\tfw\bVV\bW@\tak\x0BVK\x05ls\tVJ\bVV\x0BeE\x04\\o\nyX\nYm\x04M`\x05lL\nd|\nzk\tA{\x05sE\twQ\x04XT\nt\x7F\tPl\t]y\x0BwT\x05{p\x04MD\x0Bb\\\tQ]\x04Kj\tJn\nAH\x0BRb\tBU\tHK\t\\c\nfI\x05m\x7F\nqM\n@R\tSo\noi\x04BT\tHv\n_y\x04Kh\tBZ\t]i\bUJ\tV{\x04Sr\nbI\x0BGg\ta_\bTR\nfI\nfl\t[K\tII\x04S|\x0BuW\tiI\bWI\nqI\x0B|j\x04BV\bVg\bWZ\x04kF\x0Bx]\bTA\tab\tfr\ti@\tJd\tJd\x0Bps\nAO\bTa\x05xu\tiD\nzk\t|d\t|`\bW[\tlP\tdG\bVV\x0Bw}\x0BqO\ti[\bQ\x7F\bTz\x0BVF\twN\x05ts\tdw\bTv\neS\ngi\tNr\x05yS\npe\bVV\bSq\n`m\tyj\tBZ\x0BWX\bSB\tc\\\nUR\t[J\tc_\x04nM\bWQ\x0BAx\nMd\tBr\x05ui\x0BxY\bSM\x0BWc\x0B|j\x0Bxs\t}Q\tBO\bPL\bWW\tfM\nAO\tPc\x0BeU\x04e^\bTg\nqI\tac\bPv\tcF\x04oQ\tQ\x7F\x0BhZ\x05ka\nz\\\tiK\tBU\n`k\tCP\x04S|\x04M`\n{I\tS{\x04_O\tBZ\x04Zi\x04Sk\tps\tp\\\nYu\n]s\nxC\bWt\nbD\tkV\x0BGu\x05yS\nqA\t[r\neK\x04M`\tdZ\x05lL\bUg\bTl\nbD\tUS\x0Bb\\\tpV\ncc\x04S\\\tct\t`z\bPL\x0BWs\nA`\neg\bSq\x05uE\x04CR\x0BDg\t`W\x0Bz{\x0BWc\x04Sk\x04Sk\tbW\bUg\tea\nxZ\tiI\tUX\tVJ\nqn\tS{\x0BRb\bTQ\npl\x05Gt\x0BuW\x05uj\npF\nqI\tfL\t[I\tia\x04XO\nyu\x0BDg\x0Bed\tq{\x04VG\bQ\x7F\x05ka\tVj\tkV\txB\nd|\np@\tQN\tPc\tps\x04]j\tkV\toU\bTp\nzU\x05nB\x0BB]\ta{\bV@\n]n\x04m`\tcz\tR{\x04m`\bQa\x0BwT\bSM\x05MY\x05qN\tdj\x05~s\x0BQ}\x05MY\x0BMB\tBv\twR\bRg\x0BQ}\tql\x0BKC\nrm\x05xu\x04CC\x0BwB\x0Bvh\tBq\x04Xq\npV\ti_\x05Ob\x05uE\nbd\nqo\x0B{i\nC~\tBL\x0BeE\x05uH\bVj\x04Ey\x04Gz\x0BzR\x0B{i\tcf\n{Z\n]n\x04XA\x0BGu\x0BnU\thS\x0BGI\nCc\tHE\bTA\tHB\x04BH\x04Cj\nCc\bTF\tHE\nXI\tA{\bQ\x7F\tc\\\x0BmO\x0BWX\nfH\np@\x05MY\bTF\nlK\tBt\nzU\tTT\x04Km\x0BwT\npV\ndt\x0ByI\tVx\tQ\x7F\tRg\tTd\nzU\bRS\nLM\twA\x04nM\tTn\ndS\t]g\nLc\x0BwB\t}t\t[I\tCP\x04kX\x0BFm\x0BhZ\x05m\x7F\ti[\np@\x0BQ}\x0BW\x7F\t|d\nMO\nMd\tf_\tfD\tcJ\tHz\x0BRb\tio\tPy\x04Y[\nxU\tct\x0B@@\tww\bPv\x04BM\x04FF\ntb\x05v|\x0BKm\tBq\tBq\x04Kh\x04`o\nZd\x04XU\ti]\t|`\tSt\x04B\\\bQ\x7F\x0B_W\tTJ\nqI\t|a\tA{\x0BuP\x04MD\tPl\nxR\tfL\x0Bws\tc{\td\\\bV`\neg\tHK\x05kc\nd|\bVV\ny\\\x05kc\ti]\bVG\t`V\tss\tI_\tAE\tbs\tdu\nel\tpD\x0BW\x7F\nqs\x05lv\bSM\x04Zi\x0BVK\x05ia\x0BQB\tQ\x7F\n{Z\bPt\x0BKl\nlK\nhs\ndS\bVK\x05mf\nd^\tkV\tcO\nc|\bVH\t\\]\bTv\bSq\tmI\x0BDg\tVJ\tcn\ny\\\bVg\bTv\nyX\bTF\t]]\bTp\noi\nhs\x0BeU\nBf\tdj\x05Mr\n|p\t\\g\t]r\bVb\x05{D\nd[\x04XN\tfM\tO\\\x05s_\tcf\tiZ\x04XN\x0BWc\tqv\n`m\tU^\x05oD\nd|\x0BGg\tdE\x0Bwf\x04lo\x04u}\nd|\x05oQ\t`i\x04Oi\x0BxD\ndZ\nCx\x04Yw\nzk\ntb\ngw\tyj\tB`\nyX\x0Bps\ntC\x0BpP\x0Bqw\bPu\bPX\tDm\npw\x05Nj\tss\taG\x0Bxs\bPt\noL\x04Gz\tOk\ti@\ti]\x04eC\tIQ\tii\tdj\x0B@J\t|d\x05uh\bWZ\x0BeU\x0BnU\bTa\tcC\x04g]\nzk\x04Yh\bVK\nLU\np@\ntb\ntR\tCj\x0BNP\ti@\bP{\n\\}\n{c\nwX\tfL\bVG\tc{\t|`\tAJ\t|C\tfD\x05ln\t|d\tbs\nqI\x05{B\x0BAx\np@\nzk\x0BRb\x05Os\x0BWS\x04e^\x0BD_\tBv\x0BWd\bVb\x0Bxs\x0BeE\bRw\n]n\n|p\x0Bg|\tfw\x05kc\bTI\x05ka\n\\T\x04Sp\tju\x0Bps\npe\x05u|\x0BGr\bVe\tCU\x04]M\x04XU\x0BxD\bTa\tIQ\x0BWq\tCU\tam\tdj\bSo\x04Sw\x0BnU\x04Ch\tQ]\x05s_\bPt\tfS\bTa\t\\}\n@O\x04Yc\tUZ\bTx\npe\x0BnU\nzU\t|}\tiD\nz\\\bSM\x0BxD\x04BR\nzQ\tQN\x04]M\x04Yh\nLP\x0BFm\x0BLX\x05vc\x0Bql\x05ka\tHK\bVb\ntC\nCy\bTv\nuV\x04oQ\t`z\t[I\tB`\x0BRb\tyj\tsb\x0BWs\bTl\tkV\x0Bed\ne\x7F\x05lL\x0BxN\t\x7Fm\nJn\tjY\x0BxD\bVb\bSq\x0Byu\twL\x0BXL\bTA\tpg\tAt\tnD\x04XX\twR\npl\nhw\x05yS\nps\tcO\bW[\x0B|j\x04XN\tsV\tp\\\tBe\nb~\nAJ\n]e\x05k`\x05qN\tdw\tWV\tHE\x0BEV\x05Jz\tid\tB`\tzh\x05E]\tfD\bTg\x05qN\bTa\tja\x04Cv\bSM\nhc\bUe\x05t_\tie\x04g]\twQ\nPn\bVB\tjw\bVg\x0BbE\tBZ\x0BRH\bP{\tjp\n\\}\ta_\tcC\t|a\x0BD]\tBZ\ti[\tfD\x0BxW\no_\td\\\n_D\ntb\t\\c\tAJ\nlK\x04oQ\x04lo\x0BLx\x0BM@\bWZ\x04Kn\x0Bpg\nTi\nIv\n|r\x0B@}\x05Jz\x05Lm\x05Wh\x05k}\x05ln\x0BxD\n]s\x04gc\x0Bps\tBr\bTW\x0BBM\x05tZ\nBY\x04DW\tjf\x0BSW\x04C}\nqo\tdE\tmv\tIQ\bPP\bUb\x05lv\x04BC\nzQ\t[I\x0Bgl\nig\bUs\x04BT\x0BbC\bSq\tsU\tiW\nJn\tSY\tHK\trg\npV\x0BID\x0B|j\x04KO\t`S\t|a`vbmglfmujbqnbgqjgavp`bqjmj`jlwjfnslslqrvf`vfmwbfpwbglsvfgfmivfdlp`lmwqbfpw/Mmmlnaqfwjfmfmsfqejonbmfqbbnjdlp`jvgbg`fmwqlbvmrvfsvfgfpgfmwqlsqjnfqsqf`jlpfd/Vmavfmlpuloufqsvmwlppfnbmbkba/Abbdlpwlmvfulpvmjglp`bqolpfrvjslmj/]lpnv`klpbodvmb`lqqfljnbdfmsbqwjqbqqjabnbq/Abklnaqffnsoflufqgbg`bnajlnv`kbpevfqlmsbpbglo/Amfbsbqf`fmvfubp`vqplpfpwbabrvjfqlojaqlp`vbmwlb``fplnjdvfoubqjlp`vbwqlwjfmfpdqvslppfq/Mmfvqlsbnfgjlpeqfmwfb`fq`bgfn/Mplefqwb`l`kfpnlgfoljwbojbofwqbpbod/Vm`lnsqb`vbofpf{jpwf`vfqslpjfmglsqfmpboofdbqujbifpgjmfqlnvq`jbslgq/Msvfpwlgjbqjlsvfaolrvjfqfnbmvfosqlsjl`qjpjp`jfqwlpfdvqlnvfqwfevfmwf`fqqbqdqbmgffef`wlsbqwfpnfgjgbsqlsjbleqf`fwjfqqbf.nbjoubqjbpelqnbpevwvqllaifwlpfdvjqqjfpdlmlqnbpnjpnlp/Vmj`l`bnjmlpjwjlpqby/_mgfajglsqvfabwlofglwfm/Abifp/Vpfpsfql`l`jmblqjdfmwjfmgb`jfmwl`/Mgjykbaobqpfq/Abobwjmbevfqybfpwjoldvfqqbfmwqbq/E{jwlo/_sfybdfmgbu/Agflfujwbqsbdjmbnfwqlpibujfqsbgqfpe/M`jo`bafyb/Mqfbppbojgbfmu/Alibs/_mbavplpajfmfpwf{wlpoofubqsvfgbmevfqwf`ln/Vm`obpfpkvnbmlwfmjglajoablvmjgbgfpw/Mpfgjwbq`qfbgl<X<W=c=k=n<R<V<\\<V<T<W<T=a=n<R<^=m<Y<Y<_<R<S=l<T=n<\\<V<Y=e<Y=o<Z<Y<v<\\<V<]<Y<[<]=g<W<R<Q<T<~=m<Y<S<R<X<A=n<R=n<R<P=k<Y<P<Q<Y=n<W<Y=n=l<\\<[<R<Q<\\<_<X<Y<P<Q<Y<x<W=c<s=l<T<Q<\\=m<Q<T=i=n<Y<P<V=n<R<_<R<X<^<R=n=n<\\<P<M<D<|<P<\\=c<K=n<R<^<\\=m<^<\\<P<Y<P=o<N<\\<V<X<^<\\<Q<\\<P=a=n<T=a=n=o<~<\\<P=n<Y=i<S=l<R=n=o=n<Q<\\<X<X<Q=c<~<R=n=n=l<T<Q<Y<U<~<\\=m<Q<T<P=m<\\<P=n<R=n=l=o<]<r<Q<T<P<T=l<Q<Y<Y<r<r<r<W<T=j=a=n<\\<r<Q<\\<Q<Y<P<X<R<P<P<R<U<X<^<Y<R<Q<R=m=o<X\fHy\fIk\fHU\fId\fHy\fIl\fHT\fIk\fHy\fHR\fHy\fIg\fHx\fH\\\fHF\fH\\\fHD\fIk\fHc\fHy\fHy\fHS\fHA\fIl\fHk\fHT\fHy\fH\\\fHH\fIg\fHU\fIg\fHj\fHF\fHU\fIl\fHC\fHU\fHC\fHR\fHH\fHy\fHI\fHRibdqbm\fHj\fHp\fHp\fIg\fHi\fH@\fHJ\fIg\fH{\fHd\fHp\fHR\fH{\fHc\fHU\fHB\fHk\fHD\fHY\fHU\fHC\fIk\fHI\fIk\fHI\fIl\fHt\fH\\\fHp\fH@\fHJ\fIl\fHy\fHd\fHp\fIl\fHY\fIk\fHD\fHd\fHD\fHc\fHU\fH\\\fHe\fHT\fHB\fIk\fHy\fHB\fHY\fIg\fH^\fIk\fHT\fH@\fHB\fHd\fHJ\fIk\fH\x7F\fH\\\fHj\fHB\fH@\fHT\fHA\fH\\\fH@\fHD\fHv\fH^\fHB\fHD\fHj\fH{\fHT\fIl\fH^\fIl4U5h5e4I5h5e5k4\\4K4N4B4]4U4C4C4K5h5e5k4\\5k4Y5d4]4V5f4]5o4K5j5d5h4K4D5f5j4U4]4Z4\\5h5o5k5j4K5f5d5i5n4K5h4U5h5f4K5j4K5h5o5j4A4F5e5n4D5h5d4A4E4K4B4]5m5n4[4U4D4C4]5o5j4I4\\4K5o5i4K4K4A4C4I5h4K5m5f5k4D4U4Z5o5f5m4D4A4G5d5i5j5d5k5d4O5j4K4@4C4K5h5k4K4_5h5i4U5j4C5h5f4_4U4D4]4Y5h5e5i5j4\\4D5k4K4O5j5k5i4G5h5o5j4F4K5h4K4A5f4G5i4Y4]4X4]4A4A5d5h5d5m5f4K4\\4K5h5o5h5i4]4E4K5j4F4K5h5m4O4D5d4B4K4Y4O5j4F4K5j5k4K5h5f4U4Z5d5d5n4C4K4D5j4B5f4]4D5j4F5h5o5i4X4K4M5d5k5f4K4D5d5n4Y4Y5d5i4K4]5n5i4O4A4C5j4A5j4U4C5i4]4O5f4K4A4E5o4F4D4C5d5j5f4@4D5i5j5k4F4A4F4@5k4E4_5j4E5f4F5i5o4]4E4V4^4E5j5m4_4D5f4F5h5h5k5h5j4K4F5h5o5n5h4D5h5i4K4U5j5k4O5d5h4X5f4M5j5d4]4O5i4K5m5f5o4D5o5h4\\4K4F4]4F4D4D4O5j5k5i4_4K5j5o4D5f4U5m5n4C4A4_5j5h5k5i4X4U4]4O5k5h4X5k4]5n4[4]4[5h4Dsqlejofpfquj`fgfebvowkjnpfoegfwbjop`lmwfmwpvsslqwpwbqwfgnfppbdfpv``fppebpkjlm?wjwof=`lvmwqzb``lvmw`qfbwfgpwlqjfpqfpvowpqvmmjmdsql`fpptqjwjmdlaif`wpujpjaoftfo`lnfbqwj`ofvmhmltmmfwtlqh`lnsbmzgzmbnj`aqltpfqsqjub`zsqlaofnPfquj`fqfpsf`wgjpsobzqfrvfpwqfpfquftfapjwfkjpwlqzeqjfmgplswjlmptlqhjmdufqpjlmnjoojlm`kbmmfotjmglt-bggqfppujpjwfgtfbwkfq`lqqf`wsqlgv`wfgjqf`welqtbqgzlv#`bmqfnlufgpvaif`w`lmwqlobq`kjuf`vqqfmwqfbgjmdojaqbqzojnjwfgnbmbdfqevqwkfqpvnnbqznb`kjmfnjmvwfpsqjubwf`lmwf{wsqldqbnpl`jfwzmvnafqptqjwwfmfmbaofgwqjddfqplvq`fpolbgjmdfofnfmwsbqwmfqejmboozsfqef`wnfbmjmdpzpwfnphffsjmd`vowvqf%rvlw8/ilvqmbosqlif`wpvqeb`fp%rvlw8f{sjqfpqfujftpabobm`fFmdojpk@lmwfmwwkqlvdkSofbpf#lsjmjlm`lmwb`wbufqbdfsqjnbqzujoobdfPsbmjpkdboofqzgf`ojmfnffwjmdnjppjlmslsvobqrvbojwznfbpvqfdfmfqbopsf`jfppfppjlmpf`wjlmtqjwfqp`lvmwfqjmjwjboqfslqwpejdvqfpnfnafqpklogjmdgjpsvwffbqojfqf{sqfppgjdjwbosj`wvqfBmlwkfqnbqqjfgwqbeej`ofbgjmd`kbmdfg`fmwqbouj`wlqzjnbdfp,qfbplmppwvgjfpefbwvqfojpwjmdnvpw#afp`kllopUfqpjlmvpvboozfsjplgfsobzjmddqltjmdlaujlvplufqobzsqfpfmwb`wjlmp?,vo=\x0E\ttqbssfqboqfbgz`fqwbjmqfbojwzpwlqbdfbmlwkfqgfphwlsleefqfgsbwwfqmvmvpvboGjdjwbo`bsjwboTfapjwfebjovqf`lmmf`wqfgv`fgBmgqljggf`bgfpqfdvobq#%bns8#bmjnbopqfofbpfBvwlnbwdfwwjmdnfwklgpmlwkjmdSlsvobq`bswjlmofwwfqp`bswvqfp`jfm`foj`fmpf`kbmdfpFmdobmg>2%bns8Kjpwlqz#>#mft#@fmwqbovsgbwfgPsf`jboMfwtlqhqfrvjqf`lnnfmwtbqmjmd@loofdfwlloabqqfnbjmpaf`bvpffof`wfgGfvwp`kejmbm`ftlqhfqprvj`hozafwtffmf{b`wozpfwwjmdgjpfbpfPl`jfwztfbslmpf{kjajw%ow8\"..@lmwqlo`obppfp`lufqfglvwojmfbwwb`hpgfuj`fp+tjmgltsvqslpfwjwof>!Nlajof#hjoojmdpkltjmdJwbojbmgqlssfgkfbujozfeef`wp.2$^*8\t`lmejqn@vqqfmwbgubm`fpkbqjmdlsfmjmdgqbtjmdajoojlmlqgfqfgDfqnbmzqfobwfg?,elqn=jm`ovgftkfwkfqgfejmfgP`jfm`f`bwboldBqwj`ofavwwlmpobqdfpwvmjelqnilvqmfzpjgfabq@kj`bdlklojgbzDfmfqbosbppbdf/%rvlw8bmjnbwfeffojmdbqqjufgsbppjmdmbwvqboqlvdkoz-\t\tWkf#avw#mlwgfmpjwzAqjwbjm@kjmfpfob`h#lewqjavwfJqfobmg!#gbwb.eb`wlqpqf`fjufwkbw#jpOjaqbqzkvpabmgjm#eb`wbeebjqp@kbqofpqbgj`boaqlvdkwejmgjmdobmgjmd9obmd>!qfwvqm#ofbgfqpsobmmfgsqfnjvnsb`hbdfBnfqj`bFgjwjlm^%rvlw8Nfppbdfmffg#wlubovf>!`lnsof{ollhjmdpwbwjlmafojfufpnboofq.nlajofqf`lqgptbmw#wlhjmg#leEjqfel{zlv#bqfpjnjobqpwvgjfgnb{jnvnkfbgjmdqbsjgoz`ojnbwfhjmdglnfnfqdfgbnlvmwpelvmgfgsjlmffqelqnvobgzmbpwzklt#wl#Pvsslqwqfufmvff`lmlnzQfpvowpaqlwkfqplogjfqobqdfoz`boojmd-%rvlw8B``lvmwFgtbqg#pfdnfmwQlafqw#feelqwpSb`jej`ofbqmfgvs#tjwkkfjdkw9tf#kbufBmdfofpmbwjlmp\\pfbq`kbssojfgb`rvjqfnbppjufdqbmwfg9#ebopfwqfbwfgajddfpwafmfejwgqjujmdPwvgjfpnjmjnvnsfqkbspnlqmjmdpfoojmdjp#vpfgqfufqpfubqjbmw#qlof>!njppjmdb`kjfufsqlnlwfpwvgfmwplnflmff{wqfnfqfpwlqfalwwln9fuloufgboo#wkfpjwfnbsfmdojpktbz#wl##Bvdvpwpznalop@lnsbmznbwwfqpnvpj`bobdbjmpwpfqujmd~*+*8\x0E\tsbznfmwwqlvaof`lm`fsw`lnsbqfsbqfmwpsobzfqpqfdjlmpnlmjwlq#$$Wkf#tjmmjmdf{solqfbgbswfgDboofqzsqlgv`fbajojwzfmkbm`f`bqffqp*-#Wkf#`loof`wPfbq`k#bm`jfmwf{jpwfgellwfq#kbmgofqsqjmwfg`lmplofFbpwfqmf{slqwptjmgltp@kbmmfojoofdbomfvwqbopvddfpw\\kfbgfqpjdmjmd-kwno!=pfwwofgtfpwfqm`bvpjmd.tfahjw`objnfgIvpwj`f`kbswfquj`wjnpWklnbp#nlyjoobsqlnjpfsbqwjfpfgjwjlmlvwpjgf9ebopf/kvmgqfgLoznsj`\\avwwlmbvwklqpqfb`kfg`kqlmj`gfnbmgppf`lmgpsqlwf`wbglswfgsqfsbqfmfjwkfqdqfbwozdqfbwfqlufqboojnsqluf`lnnbmgpsf`jbopfbq`k-tlqpkjsevmgjmdwklvdkwkjdkfpwjmpwfbgvwjojwzrvbqwfq@vowvqfwfpwjmd`ofbqozf{slpfgAqltpfqojafqbo~#`bw`kSqlif`wf{bnsofkjgf+*8EolqjgbbmptfqpbooltfgFnsfqlqgfefmpfpfqjlvpeqffglnPfufqbo.avwwlmEvqwkfqlvw#le#\">#mvoowqbjmfgGfmnbqhuljg+3*,boo-ipsqfufmwQfrvfpwPwfskfm\t\tTkfm#lapfquf?,k1=\x0E\tNlgfqm#sqlujgf!#bow>!alqgfqp-\t\tElq#\t\tNbmz#bqwjpwpsltfqfgsfqelqnej`wjlmwzsf#lenfgj`bowj`hfwplsslpfg@lvm`jotjwmfppivpwj`fDflqdf#Afodjvn---?,b=wtjwwfqmlwbaoztbjwjmdtbqebqf#Lwkfq#qbmhjmdskqbpfpnfmwjlmpvqujufp`klobq?,s=\x0E\t#@lvmwqzjdmlqfgolpp#leivpw#bpDflqdjbpwqbmdf?kfbg=?pwlssfg2$^*8\x0E\tjpobmgpmlwbaofalqgfq9ojpw#le`bqqjfg233/333?,k0=\t#pfufqboaf`lnfppfof`w#tfggjmd33-kwnonlmbq`klee#wkfwfb`kfqkjdkoz#ajloldzojef#lelq#fufmqjpf#le%qbrvl8sovplmfkvmwjmd+wklvdkGlvdobpiljmjmd`jq`ofpElq#wkfBm`jfmwUjfwmbnufkj`ofpv`k#bp`qzpwboubovf#>Tjmgltpfmilzfgb#pnboobppvnfg?b#jg>!elqfjdm#Boo#qjklt#wkfGjpsobzqfwjqfgkltfufqkjggfm8abwwofppffhjmd`bajmfwtbp#mlwollh#bw`lmgv`wdfw#wkfIbmvbqzkbssfmpwvqmjmdb9klufqLmojmf#Eqfm`k#ob`hjmdwzsj`bof{wqb`wfmfnjfpfufm#jedfmfqbwgf`jgfgbqf#mlw,pfbq`kafojfep.jnbdf9ol`bwfgpwbwj`-oldjm!=`lmufqwujlofmwfmwfqfgejqpw!=`jq`vjwEjmobmg`kfnjpwpkf#tbp23s{8!=bp#pv`kgjujgfg?,psbm=tjoo#afojmf#leb#dqfbwnzpwfqz,jmgf{-eboojmdgvf#wl#qbjotbz`loofdfnlmpwfqgfp`fmwjw#tjwkmv`ofbqIftjpk#sqlwfpwAqjwjpkeoltfqpsqfgj`wqfelqnpavwwlm#tkl#tbpof`wvqfjmpwbmwpvj`jgfdfmfqj`sfqjlgpnbqhfwpPl`jbo#ejpkjmd`lnajmfdqbskj`tjmmfqp?aq#,=?az#wkf#MbwvqboSqjub`z`llhjfplvw`lnfqfploufPtfgjpkaqjfeozSfqpjbmpl#nv`k@fmwvqzgfsj`wp`lovnmpklvpjmdp`qjswpmf{w#wlafbqjmdnbssjmdqfujpfgiRvfqz+.tjgwk9wjwof!=wllowjsPf`wjlmgfpjdmpWvqhjpkzlvmdfq-nbw`k+~*+*8\t\tavqmjmdlsfqbwfgfdqffpplvq`f>Qj`kbqg`olpfozsobpwj`fmwqjfp?,wq=\x0E\t`lolq9 vo#jg>!slppfppqloojmdskzpj`pebjojmdf{f`vwf`lmwfpwojmh#wlGfebvow?aq#,=\t9#wqvf/`kbqwfqwlvqjpn`obppj`sql`ffgf{sobjm?,k2=\x0E\tlmojmf-<{no#ufkfosjmdgjbnlmgvpf#wkfbjqojmffmg#..=*-bwwq+qfbgfqpklpwjmd eeeeeeqfbojyfUjm`fmwpjdmbop#pq`>!,Sqlgv`wgfpsjwfgjufqpfwfoojmdSvaoj`#kfog#jmIlpfsk#wkfbwqfbeef`wp?pwzof=b#obqdfglfpm$wobwfq/#Fofnfmwebuj`lm`qfbwlqKvmdbqzBjqslqwpff#wkfpl#wkbwNj`kbfoPzpwfnpSqldqbnp/#bmg##tjgwk>f%rvlw8wqbgjmdofew!=\tsfqplmpDlogfm#Beebjqpdqbnnbqelqnjmdgfpwqlzjgfb#le`bpf#lelogfpw#wkjp#jp-pq`#>#`bqwllmqfdjpwq@lnnlmpNvpojnpTkbw#jpjm#nbmznbqhjmdqfufbopJmgffg/frvbooz,pklt\\blvwgllqfp`bsf+Bvpwqjbdfmfwj`pzpwfn/Jm#wkf#pjwwjmdKf#boplJpobmgpB`bgfnz\t\n\n?\"..Gbmjfo#ajmgjmdaol`h!=jnslpfgvwjojyfBaqbkbn+f{`fswxtjgwk9svwwjmd*-kwno+\x7F\x7F#X^8\tGBWBX#)hjw`kfmnlvmwfgb`wvbo#gjbof`wnbjmoz#\\aobmh$jmpwboof{sfqwpje+wzsfJw#bopl%`lsz8#!=Wfqnpalqm#jmLswjlmpfbpwfqmwbohjmd`lm`fqmdbjmfg#lmdljmdivpwjez`qjwj`peb`wlqzjwp#ltmbppbvowjmujwfgobpwjmdkjp#ltmkqfe>!,!#qfo>!gfufols`lm`fqwgjbdqbngloobqp`ovpwfqsks<jg>bo`lklo*8~*+*8vpjmd#b=?psbm=ufppfopqfujuboBggqfppbnbwfvqbmgqljgboofdfgjoomfpptbohjmd`fmwfqprvbojeznbw`kfpvmjejfgf{wjm`wGfefmpfgjfg#jm\t\n?\"..#`vpwlnpojmhjmdOjwwof#Allh#lefufmjmdnjm-ip<bqf#wkfhlmwbhwwlgbz$p-kwno!#wbqdfw>tfbqjmdBoo#Qjd8\t~*+*8qbjpjmd#Bopl/#`qv`jbobalvw!=gf`obqf..=\t?p`ejqfel{bp#nv`kbssojfpjmgf{/#p/#avw#wzsf#>#\t\x0E\t?\"..wltbqgpQf`lqgpSqjubwfElqfjdmSqfnjfq`klj`fpUjqwvboqfwvqmp@lnnfmwSltfqfgjmojmf8slufqwz`kbnafqOjujmd#ulovnfpBmwklmzoldjm!#QfobwfgF`lmlnzqfb`kfp`vwwjmddqbujwzojef#jm@kbswfq.pkbgltMlwbaof?,wg=\x0E\t#qfwvqmpwbgjvntjgdfwpubqzjmdwqbufopkfog#aztkl#bqftlqh#jmeb`vowzbmdvobqtkl#kbgbjqslqwwltm#le\t\tPlnf#$`oj`h$`kbqdfphfztlqgjw#tjoo`jwz#le+wkjp*8Bmgqft#vmjrvf#`kf`hfglq#nlqf033s{8#qfwvqm8qpjlm>!sovdjmptjwkjm#kfqpfoePwbwjlmEfgfqboufmwvqfsvaojpkpfmw#wlwfmpjlmb`wqfpp`lnf#wlejmdfqpGvhf#lesflsof/f{soljwtkbw#jpkbqnlmzb#nbilq!9!kwwsjm#kjp#nfmv!=\tnlmwkozleej`fq`lvm`jodbjmjmdfufm#jmPvnnbqzgbwf#leolzbowzejwmfppbmg#tbpfnsfqlqpvsqfnfPf`lmg#kfbqjmdQvppjbmolmdfpwBoafqwbobwfqbopfw#le#pnboo!=-bssfmggl#tjwkefgfqboabmh#leafmfbwkGfpsjwf@bsjwbodqlvmgp*/#bmg#sfq`fmwjw#eqln`olpjmd`lmwbjmJmpwfbgejewffmbp#tfoo-zbkll-qfpslmgejdkwfqlap`vqfqfeof`wlqdbmj`>#Nbwk-fgjwjmdlmojmf#sbggjmdb#tkloflmfqqlqzfbq#lefmg#le#abqqjfqtkfm#jwkfbgfq#klnf#leqfpvnfgqfmbnfgpwqlmd=kfbwjmdqfwbjmp`olvgeqtbz#le#Nbq`k#2hmltjmdjm#sbqwAfwtffmofpplmp`olpfpwujqwvboojmhp!=`qlppfgFMG#..=ebnlvp#btbqgfgOj`fmpfKfbowk#ebjqoz#tfbowkznjmjnboBeqj`bm`lnsfwfobafo!=pjmdjmdebqnfqpAqbpjo*gjp`vppqfsob`fDqfdlqzelmw#`lsvqpvfgbssfbqpnbhf#vsqlvmgfgalwk#leaol`hfgpbt#wkfleej`fp`lolvqpje+gl`vtkfm#kffmelq`fsvpk+evBvdvpw#VWE.;!=Ebmwbpzjm#nlpwjmivqfgVpvboozebqnjmd`olpvqflaif`w#gfefm`fvpf#le#Nfgj`bo?algz=\tfujgfmwaf#vpfghfz@lgfpj{wffmJpobnj` 333333fmwjqf#tjgfoz#b`wjuf#+wzsflelmf#`bm`lolq#>psfbhfqf{wfmgpSkzpj`pwfqqbjm?walgz=evmfqboujftjmdnjggof#`qj`hfwsqlskfwpkjewfggl`wlqpQvppfoo#wbqdfw`lnsb`wbodfaqbpl`jbo.avoh#lenbm#bmg?,wg=\t#kf#ofew*-ubo+*ebopf*8oldj`boabmhjmdklnf#wlmbnjmd#Bqjylmb`qfgjwp*8\t~*8\telvmgfqjm#wvqm@loojmpafelqf#Avw#wkf`kbqdfgWjwof!=@bswbjmpsfoofgdlggfppWbd#..=Bggjmd9avw#tbpQf`fmw#sbwjfmwab`h#jm>ebopf%Ojm`lomtf#hmlt@lvmwfqIvgbjpnp`qjsw#bowfqfg$^*8\t##kbp#wkfvm`ofbqFufmw$/alwk#jmmlw#boo\t\t?\"..#sob`jmdkbqg#wl#`fmwfqplqw#le`ojfmwppwqffwpAfqmbqgbppfqwpwfmg#wlebmwbpzgltm#jmkbqalvqEqffglniftfoqz,balvw--pfbq`kofdfmgpjp#nbgfnlgfqm#lmoz#lmlmoz#wljnbdf!#ojmfbq#sbjmwfqbmg#mlwqbqfoz#b`qlmzngfojufqpklqwfq33%bns8bp#nbmztjgwk>!,)#?\"X@wjwof#>le#wkf#oltfpw#sj`hfg#fp`bsfgvpfp#lesflsofp#Svaoj`Nbwwkftwb`wj`pgbnbdfgtbz#elqobtp#lefbpz#wl#tjmgltpwqlmd##pjnsof~`bw`k+pfufmwkjmelal{tfmw#wlsbjmwfg`jwjyfmJ#glm$wqfwqfbw-#Plnf#tt-!*8\talnajmdnbjowl9nbgf#jm-#Nbmz#`bqqjfp\x7F\x7Fx~8tjtlqh#lepzmlmzngfefbwpebulqfglswj`bosbdfWqbvmofpp#pfmgjmdofew!=?`lnP`lqBoo#wkfiRvfqz-wlvqjpw@obppj`ebopf!#Tjokfonpvavqapdfmvjmfajpklsp-psojw+dolabo#elooltpalgz#lemlnjmbo@lmwb`wpf`vobqofew#wl`kjfeoz.kjggfm.abmmfq?,oj=\t\t-#Tkfm#jm#alwkgjpnjppF{solqfbotbzp#ujb#wkfpsb/]lotfoebqfqvojmd#bqqbmdf`bswbjmkjp#plmqvof#lekf#wllhjwpfoe/>3%bns8+`boofgpbnsofpwl#nbhf`ln,sbdNbqwjm#Hfmmfgzb``fswpevoo#lekbmgofgAfpjgfp,,..=?,baof#wlwbqdfwpfppfm`fkjn#wl#jwp#az#`lnnlm-njmfqbowl#wbhftbzp#wlp-lqd,obgujpfgsfmbowzpjnsof9je#wkfzOfwwfqpb#pklqwKfqafqwpwqjhfp#dqlvsp-ofmdwkeojdkwplufqobspoltoz#ofppfq#pl`jbo#?,s=\t\n\njw#jmwlqbmhfg#qbwf#levo=\x0E\t##bwwfnswsbjq#lenbhf#jwHlmwbhwBmwlmjlkbujmd#qbwjmdp#b`wjufpwqfbnpwqbssfg!*-`pp+klpwjofofbg#wlojwwof#dqlvsp/Sj`wvqf..=\x0E\t\x0E\t#qltp>!#laif`wjmufqpf?ellwfq@vpwlnU=?_,p`qploujmd@kbnafqpobufqztlvmgfgtkfqfbp\">#$vmgelq#boosbqwoz#.qjdkw9Bqbajbmab`hfg#`fmwvqzvmjw#lenlajof.Fvqlsf/jp#klnfqjph#legfpjqfg@ojmwlm`lpw#lebdf#le#af`lnf#mlmf#les%rvlw8Njggof#fbg$*X3@qjwj`ppwvgjlp=%`lsz8dqlvs!=bppfnaonbhjmd#sqfppfgtjgdfw-sp9!#<#qfavjowaz#plnfElqnfq#fgjwlqpgfobzfg@bmlmj`kbg#wkfsvpkjmd`obpp>!avw#bqfsbqwjboAbazolmalwwln#`bqqjfq@lnnbmgjwp#vpfBp#tjwk`lvqpfpb#wkjqggfmlwfpbopl#jmKlvpwlm13s{8!=b``vpfgglvaof#dlbo#leEbnlvp#*-ajmg+sqjfpwp#Lmojmfjm#Ivozpw#(#!d`lmpvowgf`jnbokfosevoqfujufgjp#ufqzq$($jswolpjmd#efnbofpjp#boplpwqjmdpgbzp#lebqqjuboevwvqf#?laif`welq`jmdPwqjmd+!#,=\t\n\nkfqf#jpfm`lgfg-##Wkf#aboollmglmf#az,`lnnlmad`lolqobt#le#Jmgjbmbbuljgfgavw#wkf1s{#0s{irvfqz-bewfq#bsloj`z-nfm#bmgellwfq.>#wqvf8elq#vpfp`qffm-Jmgjbm#jnbdf#>ebnjoz/kwws9,,#%maps8gqjufqpfwfqmbopbnf#bpmlwj`fgujftfqp~*+*8\t#jp#nlqfpfbplmpelqnfq#wkf#mftjp#ivpw`lmpfmw#Pfbq`ktbp#wkftkz#wkfpkjssfgaq=?aq=tjgwk9#kfjdkw>nbgf#le`vjpjmfjp#wkbwb#ufqz#Bgnjqbo#ej{fg8mlqnbo#NjppjlmSqfpp/#lmwbqjl`kbqpfwwqz#wl#jmubgfg>!wqvf!psb`jmdjp#nlpwb#nlqf#wlwboozeboo#le~*8\x0E\t##jnnfmpfwjnf#jmpfw#lvwpbwjpezwl#ejmggltm#wlolw#le#Sobzfqpjm#Ivmfrvbmwvnmlw#wkfwjnf#wlgjpwbmwEjmmjpkpq`#>#+pjmdof#kfos#leDfqnbm#obt#bmgobafofgelqfpwp`llhjmdpsb`f!=kfbgfq.tfoo#bpPwbmofzaqjgdfp,dolabo@qlbwjb#Balvw#X3^8\t##jw/#bmgdqlvsfgafjmd#b*xwkqltkf#nbgfojdkwfqfwkj`boEEEEEE!alwwln!ojhf#b#fnsolzpojuf#jmbp#pffmsqjmwfqnlpw#leva.ojmhqfif`wpbmg#vpfjnbdf!=pv``ffgeffgjmdMv`ofbqjmelqnbwl#kfosTlnfm$pMfjwkfqNf{j`bmsqlwfjm?wbaof#az#nbmzkfbowkzobtpvjwgfujpfg-svpk+xpfoofqppjnsoz#Wkqlvdk-`llhjf#Jnbdf+logfq!=vp-ip!=#Pjm`f#vmjufqpobqdfq#lsfm#wl\"..#fmgojfp#jm$^*8\x0E\t##nbqhfwtkl#jp#+!GLN@lnbmbdfglmf#elqwzsfle#Hjmdglnsqlejwpsqlslpfwl#pklt`fmwfq8nbgf#jwgqfppfgtfqf#jmnj{wvqfsqf`jpfbqjpjmdpq`#>#$nbhf#b#pf`vqfgAbswjpwulwjmd#\t\n\nubq#Nbq`k#1dqft#vs@ojnbwf-qfnlufphjoofgtbz#wkf?,kfbg=eb`f#leb`wjmd#qjdkw!=wl#tlqhqfgv`fpkbp#kbgfqf`wfgpklt+*8b`wjlm>allh#lebm#bqfb>>#!kww?kfbgfq\t?kwno=`lmelqneb`jmd#`llhjf-qfoz#lmklpwfg#-`vpwlnkf#tfmwavw#elqpsqfbg#Ebnjoz#b#nfbmplvw#wkfelqvnp-ellwbdf!=Nlajo@ofnfmwp!#jg>!bp#kjdkjmwfmpf..=?\"..efnbof#jp#pffmjnsojfgpfw#wkfb#pwbwfbmg#kjpebpwfpwafpjgfpavwwlm\\alvmgfg!=?jnd#Jmelal{fufmwp/b#zlvmdbmg#bqfMbwjuf#`kfbsfqWjnflvwbmg#kbpfmdjmfptlm#wkf+nlpwozqjdkw9#ejmg#b#.alwwlnSqjm`f#bqfb#lenlqf#lepfbq`k\\mbwvqf/ofdboozsfqjlg/obmg#lelq#tjwkjmgv`fgsqlujmdnjppjofol`boozBdbjmpwwkf#tbzh%rvlw8s{8!=\x0E\tsvpkfg#babmglmmvnfqbo@fqwbjmJm#wkjpnlqf#jmlq#plnfmbnf#jpbmg/#jm`qltmfgJPAM#3.`qfbwfpL`wlafqnbz#mlw`fmwfq#obwf#jmGfefm`ffmb`wfgtjpk#wlaqlbgoz`llojmdlmolbg>jw-#Wkfqf`lufqNfnafqpkfjdkw#bppvnfp?kwno=\tsflsof-jm#lmf#>tjmgltellwfq\\b#dllg#qfhobnblwkfqp/wl#wkjp\\`llhjfsbmfo!=Olmglm/gfejmfp`qvpkfgabswjpn`lbpwbopwbwvp#wjwof!#nluf#wlolpw#jmafwwfq#jnsojfpqjuboqzpfqufqp#PzpwfnSfqkbspfp#bmg#`lmwfmgeoltjmdobpwfg#qjpf#jmDfmfpjpujft#leqjpjmd#pffn#wlavw#jm#ab`hjmdkf#tjoodjufm#bdjujmd#`jwjfp-eolt#le#Obwfq#boo#avwKjdktbzlmoz#azpjdm#lekf#glfpgjeefqpabwwfqz%bns8obpjmdofpwkqfbwpjmwfdfqwbhf#lmqfevpfg`boofg#>VP%bnsPff#wkfmbwjufpaz#wkjppzpwfn-kfbg#le9klufq/ofpajbmpvqmbnfbmg#boo`lnnlm,kfbgfq\\\\sbqbnpKbqubqg,sj{fo-qfnlubopl#olmdqlof#leiljmwozphzp`qbVmj`lgfaq#,=\x0E\tBwobmwbmv`ofvp@lvmwz/svqfoz#`lvmw!=fbpjoz#avjog#blm`oj`hb#djufmsljmwfqk%rvlw8fufmwp#fopf#x\tgjwjlmpmlt#wkf/#tjwk#nbm#tkllqd,Tfalmf#bmg`buboqzKf#gjfgpfbwwof33/333#xtjmgltkbuf#wlje+tjmgbmg#jwpplofoz#n%rvlw8qfmftfgGfwqljwbnlmdpwfjwkfq#wkfn#jmPfmbwlqVp?,b=?Hjmd#leEqbm`jp.sqlgv`kf#vpfgbqw#bmgkjn#bmgvpfg#azp`lqjmdbw#klnfwl#kbufqfobwfpjajojwzeb`wjlmAveebolojmh!=?tkbw#kfeqff#wl@jwz#le`lnf#jmpf`wlqp`lvmwfglmf#gbzmfqulvpprvbqf#~8je+dljm#tkbwjnd!#bojp#lmozpfbq`k,wvfpgbzollpfozPlolnlmpf{vbo#.#?b#kqnfgjvn!GL#MLW#Eqbm`f/tjwk#b#tbq#bmgpf`lmg#wbhf#b#=\x0E\t\x0E\t\x0E\tnbqhfw-kjdktbzglmf#jm`wjujwz!obpw!=laojdfgqjpf#wl!vmgfejnbgf#wl#Fbqoz#sqbjpfgjm#jwp#elq#kjpbwkofwfIvsjwfqZbkll\"#wfqnfg#pl#nbmzqfbooz#p-#Wkf#b#tlnbm<ubovf>gjqf`w#qjdkw!#aj`z`ofb`jmd>!gbz#bmgpwbwjmdQbwkfq/kjdkfq#Leej`f#bqf#mltwjnfp/#tkfm#b#sbz#elqlm#wkjp.ojmh!=8alqgfqbqlvmg#bmmvbo#wkf#Mftsvw#wkf-`ln!#wbhjm#wlb#aqjfe+jm#wkfdqlvsp-8#tjgwkfmyznfppjnsof#jm#obwfxqfwvqmwkfqbszb#sljmwabmmjmdjmhp!=\t+*8!#qfb#sob`f_v330@bbalvw#bwq=\x0E\t\n\n``lvmw#djufp#b?P@QJSWQbjotbzwkfnfp,wlloal{AzJg+!{kvnbmp/tbw`kfpjm#plnf#je#+tj`lnjmd#elqnbwp#Vmgfq#avw#kbpkbmgfg#nbgf#azwkbm#jmefbq#legfmlwfg,jeqbnfofew#jmulowbdfjm#fb`kb%rvlw8abpf#leJm#nbmzvmgfqdlqfdjnfpb`wjlm#?,s=\x0E\t?vpwlnUb8%dw8?,jnslqwplq#wkbwnlpwoz#%bns8qf#pjyf>!?,b=?,kb#`obppsbppjufKlpw#>#TkfwkfqefqwjofUbqjlvp>X^8+ev`bnfqbp,=?,wg=b`wp#bpJm#plnf=\x0E\t\x0E\t?\"lqdbmjp#?aq#,=Afjijmd`bwbo/Lgfvwp`kfvqlsfvfvphbqbdbfjodfpufmphbfpsb/]bnfmpbifvpvbqjlwqbabiln/E{j`ls/Mdjmbpjfnsqfpjpwfnbl`wvaqfgvqbmwfb/]bgjqfnsqfpbnlnfmwlmvfpwqlsqjnfqbwqbu/Epdqb`jbpmvfpwqbsql`fplfpwbglp`bojgbgsfqplmbm/Vnfqlb`vfqgln/Vpj`bnjfnaqllefqwbpbodvmlpsb/Apfpfifnsolgfqf`klbgfn/Mpsqjubglbdqfdbqfmob`fpslpjaofklwfofppfujoobsqjnfql/Vowjnlfufmwlpbq`kjul`vowvqbnvifqfpfmwqbgbbmvm`jlfnabqdlnfq`bgldqbmgfpfpwvgjlnfilqfpefaqfqlgjpf/]lwvqjpnl`/_gjdlslqwbgbfpsb`jlebnjojbbmwlmjlsfqnjwfdvbqgbqbodvmbpsqf`jlpbodvjfmpfmwjglujpjwbpw/Awvol`lml`fqpfdvmgl`lmpfileqbm`jbnjmvwlppfdvmgbwfmfnlpfef`wlpn/Mobdbpfpj/_mqfujpwbdqbmbgb`lnsqbqjmdqfpldbq`/Abb``j/_mf`vbglqrvjfmfpjm`ovplgfafq/Mnbwfqjbklnaqfpnvfpwqbslgq/Abnb/]bmb/Vowjnbfpwbnlplej`jbowbnajfmmjmd/Vmpbovglpslgfnlpnfilqbqslpjwjlmavpjmfppklnfsbdfpf`vqjwzobmdvbdfpwbmgbqg`bnsbjdmefbwvqfp`bwfdlqzf{wfqmbo`kjogqfmqfpfqufgqfpfbq`kf{`kbmdfebulqjwfwfnsobwfnjojwbqzjmgvpwqzpfquj`fpnbwfqjbosqlgv`wpy.jmgf{9`lnnfmwpplewtbqf`lnsofwf`bofmgbqsobwelqnbqwj`ofpqfrvjqfgnlufnfmwrvfpwjlmavjogjmdslojwj`pslppjaofqfojdjlmskzpj`boeffgab`hqfdjpwfqsj`wvqfpgjpbaofgsqlwl`lobvgjfm`fpfwwjmdpb`wjujwzfofnfmwpofbqmjmdbmzwkjmdbapwqb`wsqldqfpplufqujftnbdbyjmff`lmlnj`wqbjmjmdsqfppvqfubqjlvp#?pwqlmd=sqlsfqwzpklssjmdwldfwkfqbgubm`fgafkbujlqgltmolbgefbwvqfgellwaboopfof`wfgObmdvbdfgjpwbm`fqfnfnafqwqb`hjmdsbpptlqgnlgjejfgpwvgfmwpgjqf`wozejdkwjmdmlqwkfqmgbwbabpfefpwjuboaqfbhjmdol`bwjlmjmwfqmfwgqlsgltmsqb`wj`ffujgfm`fevm`wjlmnbqqjbdfqfpslmpfsqlaofnpmfdbwjufsqldqbnpbmbozpjpqfofbpfgabmmfq!=svq`kbpfsloj`jfpqfdjlmbo`qfbwjufbqdvnfmwallhnbqhqfefqqfq`kfnj`bogjujpjlm`booab`hpfsbqbwfsqlif`wp`lmeoj`wkbqgtbqfjmwfqfpwgfojufqznlvmwbjmlawbjmfg>#ebopf8elq+ubq#b``fswfg`bsb`jwz`lnsvwfqjgfmwjwzbjq`qbewfnsolzfgsqlslpfgglnfpwj`jm`ovgfpsqlujgfgklpsjwboufqwj`bo`loobspfbssqlb`ksbqwmfqpoldl!=?bgbvdkwfqbvwklq!#`vowvqboebnjojfp,jnbdfp,bppfnaozsltfqevowfb`kjmdejmjpkfggjpwqj`w`qjwj`bo`dj.ajm,svqslpfpqfrvjqfpfof`wjlmaf`lnjmdsqlujgfpb`bgfnj`f{fq`jpfb`wvbooznfgj`jmf`lmpwbmwb``jgfmwNbdbyjmfgl`vnfmwpwbqwjmdalwwln!=lapfqufg9#%rvlw8f{wfmgfgsqfujlvpPlewtbqf`vpwlnfqgf`jpjlmpwqfmdwkgfwbjofgpojdkwozsobmmjmdwf{wbqfb`vqqfm`zfufqzlmfpwqbjdkwwqbmpefqslpjwjufsqlgv`fgkfqjwbdfpkjssjmdbaplovwfqf`fjufgqfofubmwavwwlm!#ujlofm`fbmztkfqfafmfejwpobvm`kfgqf`fmwozboojbm`felooltfgnvowjsofavoofwjmjm`ovgfgl``vqqfgjmwfqmbo'+wkjp*-qfsvaoj`=?wq=?wg`lmdqfppqf`lqgfgvowjnbwfplovwjlm?vo#jg>!gjp`lufqKlnf?,b=tfapjwfpmfwtlqhpbowklvdkfmwjqfoznfnlqjbonfppbdfp`lmwjmvfb`wjuf!=plnftkbwuj`wlqjbTfpwfqm##wjwof>!Ol`bwjlm`lmwqb`wujpjwlqpGltmolbgtjwklvw#qjdkw!=\tnfbpvqfptjgwk#>#ubqjbaofjmuloufgujqdjmjbmlqnboozkbssfmfgb``lvmwppwbmgjmdmbwjlmboQfdjpwfqsqfsbqfg`lmwqlopb``vqbwfajqwkgbzpwqbwfdzleej`jbodqbskj`p`qjnjmboslppjaoz`lmpvnfqSfqplmbopsfbhjmdubojgbwfb`kjfufg-isd!#,=nb`kjmfp?,k1=\t##hfztlqgpeqjfmgozaqlwkfqp`lnajmfglqjdjmbo`lnslpfgf{sf`wfgbgfrvbwfsbhjpwbmeloolt!#ubovbaof?,obafo=qfobwjufaqjmdjmdjm`qfbpfdlufqmlqsovdjmp,Ojpw#le#Kfbgfq!=!#mbnf>!#+%rvlw8dqbgvbwf?,kfbg=\t`lnnfq`fnbobzpjbgjqf`wlqnbjmwbjm8kfjdkw9p`kfgvof`kbmdjmdab`h#wl#`bwkloj`sbwwfqmp`lolq9# dqfbwfpwpvssojfpqfojbaof?,vo=\t\n\n?pfof`w#`jwjyfmp`olwkjmdtbw`kjmd?oj#jg>!psf`jej``bqqzjmdpfmwfm`f?`fmwfq=`lmwqbpwwkjmhjmd`bw`k+f*plvwkfqmNj`kbfo#nfq`kbmw`bqlvpfosbggjmd9jmwfqjlq-psojw+!ojybwjlmL`wlafq#*xqfwvqmjnsqlufg..%dw8\t\t`lufqbdf`kbjqnbm-smd!#,=pvaif`wpQj`kbqg#tkbwfufqsqlabaozqf`lufqzabpfabooivgdnfmw`lmmf`w--`pp!#,=#tfapjwfqfslqwfggfebvow!,=?,b=\x0E\tfof`wqj`p`lwobmg`qfbwjlmrvbmwjwz-#JPAM#3gjg#mlw#jmpwbm`f.pfbq`k.!#obmd>!psfbhfqp@lnsvwfq`lmwbjmpbq`kjufpnjmjpwfqqfb`wjlmgjp`lvmwJwbojbml`qjwfqjbpwqlmdoz9#$kwws9$p`qjsw$`lufqjmdleefqjmdbssfbqfgAqjwjpk#jgfmwjezEb`fallhmvnfqlvpufkj`ofp`lm`fqmpBnfqj`bmkbmgojmdgju#jg>!Tjoojbn#sqlujgfq\\`lmwfmwb``vqb`zpf`wjlm#bmgfqplmeof{jaof@bwfdlqzobtqfm`f?p`qjsw=obzlvw>!bssqlufg#nb{jnvnkfbgfq!=?,wbaof=Pfquj`fpkbnjowlm`vqqfmw#`bmbgjbm`kbmmfop,wkfnfp,,bqwj`oflswjlmboslqwvdboubovf>!!jmwfqubotjqfofppfmwjwofgbdfm`jfpPfbq`k!#nfbpvqfgwklvpbmgpsfmgjmd%kfoojs8mft#Gbwf!#pjyf>!sbdfMbnfnjggof!#!#,=?,b=kjggfm!=pfrvfm`fsfqplmbolufqeoltlsjmjlmpjoojmljpojmhp!=\t\n?wjwof=ufqpjlmppbwvqgbzwfqnjmbojwfnsqlsfmdjmffqpf`wjlmpgfpjdmfqsqlslpbo>!ebopf!Fpsb/]loqfofbpfppvanjw!#fq%rvlw8bggjwjlmpznswlnplqjfmwfgqfplvq`fqjdkw!=?sofbpvqfpwbwjlmpkjpwlqz-ofbujmd##alqgfq>`lmwfmwp`fmwfq!=-\t\tPlnf#gjqf`wfgpvjwbaofavodbqjb-pklt+*8gfpjdmfgDfmfqbo#`lm`fswpF{bnsofptjoojbnpLqjdjmbo!=?psbm=pfbq`k!=lsfqbwlqqfrvfpwpb#%rvlw8booltjmdGl`vnfmwqfujpjlm-#\t\tWkf#zlvqpfoe@lmwb`w#nj`kjdbmFmdojpk#`lovnajbsqjlqjwzsqjmwjmdgqjmhjmdeb`jojwzqfwvqmfg@lmwfmw#leej`fqpQvppjbm#dfmfqbwf.;;6:.2!jmgj`bwfebnjojbq#rvbojwznbqdjm93#`lmwfmwujftslqw`lmwb`wp.wjwof!=slqwbaof-ofmdwk#fojdjaofjmuloufpbwobmwj`lmolbg>!gfebvow-pvssojfgsbznfmwpdolppbqz\t\tBewfq#dvjgbm`f?,wg=?wgfm`lgjmdnjggof!=`bnf#wl#gjpsobzpp`lwwjpkilmbwkbmnbilqjwztjgdfwp-`ojmj`bowkbjobmgwfb`kfqp?kfbg=\t\nbeef`wfgpvsslqwpsljmwfq8wlPwqjmd?,pnboo=lhobklnbtjoo#af#jmufpwlq3!#bow>!klojgbzpQfplvq`foj`fmpfg#+tkj`k#-#Bewfq#`lmpjgfqujpjwjmdf{solqfqsqjnbqz#pfbq`k!#bmgqljg!rvj`hoz#nffwjmdpfpwjnbwf8qfwvqm#8`lolq9 #kfjdkw>bssqlubo/#%rvlw8#`kf`hfg-njm-ip!nbdmfwj`=?,b=?,kelqf`bpw-#Tkjof#wkvqpgbzgufqwjpf%fb`vwf8kbp@obppfubovbwflqgfqjmdf{jpwjmdsbwjfmwp#Lmojmf#`lolqbglLswjlmp!`bnsafoo?\"..#fmg?,psbm=??aq#,=\x0E\t\\slsvsp\x7Fp`jfm`fp/%rvlw8#rvbojwz#Tjmgltp#bppjdmfgkfjdkw9#?a#`obppof%rvlw8#ubovf>!#@lnsbmzf{bnsofp?jeqbnf#afojfufpsqfpfmwpnbqpkboosbqw#le#sqlsfqoz*-\t\tWkf#wb{lmlnznv`k#le#?,psbm=\t!#gbwb.pqwvdv/Fpp`qlooWl#sqlif`w?kfbg=\x0E\tbwwlqmfzfnskbpjppslmplqpebm`zal{tlqog$p#tjogojef`kf`hfg>pfppjlmpsqldqbnns{8elmw.#Sqlif`wilvqmbopafojfufgub`bwjlmwklnsplmojdkwjmdbmg#wkf#psf`jbo#alqgfq>3`kf`hjmd?,walgz=?avwwlm#@lnsofwf`ofbqej{\t?kfbg=\tbqwj`of#?pf`wjlmejmgjmdpqlof#jm#slsvobq##L`wlafqtfapjwf#f{slpvqfvpfg#wl##`kbmdfplsfqbwfg`oj`hjmdfmwfqjmd`lnnbmgpjmelqnfg#mvnafqp##?,gju=`qfbwjmdlmPvanjwnbqzobmg`loofdfpbmbozwj`ojpwjmdp`lmwb`w-olddfgJmbgujplqzpjaojmdp`lmwfmw!p%rvlw8*p-#Wkjp#sb`hbdfp`kf`hal{pvddfpwpsqfdmbmwwlnlqqltpsb`jmd>j`lm-smdibsbmfpf`lgfabpfavwwlm!=dbnaojmdpv`k#bp#/#tkjof#?,psbm=#njpplvqjpslqwjmdwls92s{#-?,psbm=wfmpjlmptjgwk>!1obyzolbgmlufnafqvpfg#jm#kfjdkw>!`qjsw!=\t%maps8?,?wq=?wg#kfjdkw91,sqlgv`w`lvmwqz#jm`ovgf#ellwfq!#%ow8\"..#wjwof!=?,irvfqz-?,elqn=\t+\x0BBl\bQ\x7F*+\x0BUm\x05Gx*kqubwphjjwbojbmlqln/Nm(ow/Pqh/Kf4K4]4C5dwbnaj/Emmlwj`jbpnfmpbifpsfqplmbpgfqf`klpmb`jlmbopfquj`jl`lmwb`wlvpvbqjlpsqldqbnbdlajfqmlfnsqfpbpbmvm`jlpubofm`jb`lolnajbgfpsv/Epgfslqwfpsqlzf`wlsqlgv`wls/Vaoj`lmlplwqlpkjpwlqjbsqfpfmwfnjoolmfpnfgjbmwfsqfdvmwbbmwfqjlqqf`vqplpsqlaofnbpbmwjbdlmvfpwqlplsjmj/_mjnsqjnjqnjfmwqbpbn/Eqj`bufmgfglqpl`jfgbgqfpsf`wlqfbojybqqfdjpwqlsbobaqbpjmwfq/Epfmwlm`fpfpsf`jbonjfnaqlpqfbojgbg`/_qglabybqbdlybs/Mdjmbppl`jbofpaolrvfbqdfpwj/_mborvjofqpjpwfnbp`jfm`jbp`lnsofwlufqpj/_m`lnsofwbfpwvgjlps/Vaoj`blaifwjulboj`bmwfavp`bglq`bmwjgbgfmwqbgbpb``jlmfpbq`kjulppvsfqjlqnbzlq/Abbofnbmjbevm`j/_m/Vowjnlpkb`jfmglbrvfoolpfgj`j/_mefqmbmglbnajfmwfeb`fallhmvfpwqbp`ojfmwfpsql`fplpabpwbmwfsqfpfmwbqfslqwbq`lmdqfplsvaoj`bq`lnfq`jl`lmwqbwli/_ufmfpgjpwqjwlw/E`mj`b`lmivmwlfmfqd/Abwqbabibqbpwvqjbpqf`jfmwfvwjojybqalofw/Ampboubglq`lqqf`wbwqbabilpsqjnfqlpmfdl`jlpojafqwbggfwboofpsbmwboobsq/_{jnlbonfq/Abbmjnbofprvj/Emfp`lqby/_mpf``j/_mavp`bmglls`jlmfpf{wfqjlq`lm`fswlwlgbu/Abdbofq/Abfp`qjajqnfgj`jmboj`fm`jb`lmpvowbbpsf`wlp`q/Awj`bg/_obqfpivpwj`jbgfafq/Mmsfq/Alglmf`fpjwbnbmwfmfqsfrvf/]lqf`jajgbwqjavmbowfmfqjef`bm`j/_m`bmbqjbpgfp`bqdbgjufqplpnboolq`bqfrvjfqfw/E`mj`lgfafq/Abujujfmgbejmbmybpbgfobmwfevm`jlmb`lmpfilpgje/A`jo`jvgbgfpbmwjdvbpbubmybgbw/Eqnjmlvmjgbgfpp/Mm`kfy`bnsb/]bplewlmj`qfujpwbp`lmwjfmfpf`wlqfpnlnfmwlpeb`vowbg`q/Egjwlgjufqpbppvsvfpwleb`wlqfppfdvmglpsfrvf/]b<_<R<X<\\<Y=m<W<T<Y=m=n=`<]=g<W<R<]=g=n=`=a=n<R<P<y=m<W<T=n<R<_<R<P<Y<Q=c<^=m<Y=i=a=n<R<U<X<\\<Z<Y<]=g<W<T<_<R<X=o<X<Y<Q=`=a=n<R=n<]=g<W<\\=m<Y<]=c<R<X<T<Q=m<Y<]<Y<Q<\\<X<R=m<\\<U=n=h<R=n<R<Q<Y<_<R=m<^<R<T=m<^<R<U<T<_=l=g=n<R<Z<Y<^=m<Y<P=m<^<R=b<W<T=d=`=a=n<T=i<S<R<V<\\<X<Q<Y<U<X<R<P<\\<P<T=l<\\<W<T<]<R=n<Y<P=o=i<R=n=c<X<^=o=i=m<Y=n<T<W=b<X<T<X<Y<W<R<P<T=l<Y=n<Y<]=c=m<^<R<Y<^<T<X<Y=k<Y<_<R=a=n<T<P=m=k<Y=n=n<Y<P=g=j<Y<Q=g=m=n<\\<W<^<Y<X=`=n<Y<P<Y<^<R<X=g=n<Y<]<Y<^=g=d<Y<Q<\\<P<T=n<T<S<\\=n<R<P=o<S=l<\\<^<W<T=j<\\<R<X<Q<\\<_<R<X=g<[<Q<\\=b<P<R<_=o<X=l=o<_<^=m<Y<U<T<X<Y=n<V<T<Q<R<R<X<Q<R<X<Y<W<\\<X<Y<W<Y=m=l<R<V<T=b<Q=c<^<Y=m=`<y=m=n=`=l<\\<[<\\<Q<\\=d<T4K5h5h5k4K5h4F5f4@5i5f4U4B4K4Y4E4K5h4\\5f4U5h5f5k4@4C5f4C4K5h4N5j4K5h4]4C4F4A5o5i4Y5m4A4E5o4K5j4F4K5h5h5f5f5o5d5j4X4D5o4E5m5f5k4K4D5j4K4F4A5d4K4M4O5o4G4]4B5h4K5h4K5h4A4D4C5h5f5h4C4]5d4_4K4Z4V4[4F5o5d5j5k5j4K5o4_4K4A4E5j4K4C5f4K5h4[4D4U5h5f5o4X5o4]4K5f5i5o5j5i5j5k4K4X4]5o4E4]4J5f4_5j4X5f4[5i4K4\\4K4K5h5m5j4X4D4K4D4F4U4D4]4]4A5i4E5o4K5m4E5f5n5d5h5i4]5o4^5o5h5i4E4O4A5i4C5n5h4D5f5f4U5j5f4Y5d4]4E4[4]5f5n4X4K4]5o4@5d4K5h4O4B4]5e5i4U5j4K4K4D4A4G4U4]5d4Z4D4X5o5h5i4_4@5h4D5j4K5j4B4K5h4C5o4F4K4D5o5h5f4E4D4C5d5j4O5f4Z4K5f5d4@4C5m4]5f5n5o4F4D4F4O5m4Z5h5i4[4D4B4K5o4G4]4D4K4]5o4K5m4Z5h4K4A5h5e5j5m4_5k4O5f4K5i4]4C5d4C4O5j5k4K4C5f5j4K4K5h4K5j5i4U4]4Z4F4U5h5i4C4K4B5h5i5i5o5j\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x03\x02\x03\x02\x03\x01\x03\x01\x03\x01\x03\x01\x03\x07\x03\x07\x03\x07\x03\x07\x03\x03\x02\x01\0\x07\x06\x05\x04\x04\x05\x06\x07\0\x01\x02\x03\x0B\n\t\b\x0F\x0E\r\f\f\r\x0E\x0F\b\t\n\x0B\x13\x12\x11\x10\x17\x16\x15\x14\x14\x15\x16\x17\x10\x11\x12\x13\x1B\x1A\x19\x18\x1F\x1E\x1D\x1C\x1C\x1D\x1E\x1F\x18\x19\x1A\x1B\x13\x13\x13\x13\x03\x03\x03\x03\x03\x03\x03\x03\x13\x13\x13\x13\x02\x03\x03\x03\x01\x03\x03\x03\x01\x03\x03\x03\x02\x03\x03\x03\x02\x03\x03\x03\0\x03\x03\x03\x13\x13\x03\x02\x03\x03\x03\x02\x03\x03\x13\x13\x03\x02\x03\x03\x03\x0B\x03\x0B\x03\x0B\x03\x0B\x03\x03\x03\x02\x03\x01\x03\0\x03\x07\x03\x06\x03\x05\x03\x04qfplvq`fp`lvmwqjfprvfpwjlmpfrvjsnfmw`lnnvmjwzbubjobaofkjdkojdkwGWG,{kwnonbqhfwjmdhmltofgdfplnfwkjmd`lmwbjmfqgjqf`wjlmpvap`qjafbgufqwjpf`kbqb`wfq!#ubovf>!?,pfof`w=Bvpwqbojb!#`obpp>!pjwvbwjlmbvwklqjwzelooltjmdsqjnbqjozlsfqbwjlm`kboofmdfgfufolsfgbmlmznlvpevm`wjlm#evm`wjlmp`lnsbmjfppwqv`wvqfbdqffnfmw!#wjwof>!slwfmwjbofgv`bwjlmbqdvnfmwppf`lmgbqz`lszqjdkwobmdvbdfpf{`ovpjuf`lmgjwjlm?,elqn=\x0E\tpwbwfnfmwbwwfmwjlmAjldqbskz~#fopf#x\tplovwjlmptkfm#wkf#Bmbozwj`pwfnsobwfpgbmdfqlvppbwfoojwfgl`vnfmwpsvaojpkfqjnslqwbmwsqlwlwzsfjmeovfm`f%qbrvl8?,feef`wjufdfmfqboozwqbmpelqnafbvwjevowqbmpslqwlqdbmjyfgsvaojpkfgsqlnjmfmwvmwjo#wkfwkvnambjoMbwjlmbo#-el`vp+*8lufq#wkf#njdqbwjlmbmmlvm`fgellwfq!=\tf{`fswjlmofpp#wkbmf{sfmpjufelqnbwjlmeqbnftlqhwfqqjwlqzmgj`bwjlm`vqqfmwoz`obppMbnf`qjwj`jpnwqbgjwjlmfopftkfqfBof{bmgfqbssljmwfgnbwfqjbopaqlbg`bpwnfmwjlmfgbeejojbwf?,lswjlm=wqfbwnfmwgjeefqfmw,gfebvow-Sqfpjgfmwlm`oj`h>!ajldqbskzlwkfqtjpfsfqnbmfmwEqbm/KbjpKlooztllgf{sbmpjlmpwbmgbqgp?,pwzof=\tqfgv`wjlmGf`fnafq#sqfefqqfg@bnaqjgdflsslmfmwpAvpjmfpp#`lmevpjlm=\t?wjwof=sqfpfmwfgf{sobjmfgglfp#mlw#tlqogtjgfjmwfqeb`fslpjwjlmpmftpsbsfq?,wbaof=\tnlvmwbjmpojhf#wkf#fppfmwjboejmbm`jbopfof`wjlmb`wjlm>!,babmglmfgFgv`bwjlmsbqpfJmw+pwbajojwzvmbaof#wl?,wjwof=\tqfobwjlmpMlwf#wkbwfeej`jfmwsfqelqnfgwtl#zfbqpPjm`f#wkfwkfqfelqftqbssfq!=bowfqmbwfjm`qfbpfgAbwwof#lesfq`fjufgwqzjmd#wlmf`fppbqzslqwqbzfgfof`wjlmpFojybafwk?,jeqbnf=gjp`lufqzjmpvqbm`fp-ofmdwk8ofdfmgbqzDfldqbskz`bmgjgbwf`lqslqbwfplnfwjnfppfquj`fp-jmkfqjwfg?,pwqlmd=@lnnvmjwzqfojdjlvpol`bwjlmp@lnnjwwffavjogjmdpwkf#tlqogml#olmdfqafdjmmjmdqfefqfm`f`bmmlw#afeqfrvfm`zwzsj`boozjmwl#wkf#qfobwjuf8qf`lqgjmdsqfpjgfmwjmjwjboozwf`kmjrvfwkf#lwkfqjw#`bm#aff{jpwfm`fvmgfqojmfwkjp#wjnfwfofsklmfjwfnp`lsfsqb`wj`fpbgubmwbdf*8qfwvqm#Elq#lwkfqsqlujgjmdgfnl`qb`zalwk#wkf#f{wfmpjufpveefqjmdpvsslqwfg`lnsvwfqp#evm`wjlmsqb`wj`bopbjg#wkbwjw#nbz#afFmdojpk?,eqln#wkf#p`kfgvofggltmolbgp?,obafo=\tpvpsf`wfgnbqdjm9#3psjqjwvbo?,kfbg=\t\tnj`qlplewdqbgvboozgjp`vppfgkf#af`bnff{f`vwjufirvfqz-ipklvpfklog`lmejqnfgsvq`kbpfgojwfqboozgfpwqlzfgvs#wl#wkfubqjbwjlmqfnbjmjmdjw#jp#mlw`fmwvqjfpIbsbmfpf#bnlmd#wkf`lnsofwfgbodlqjwknjmwfqfpwpqfafoojlmvmgfejmfgfm`lvqbdfqfpjybaofjmuloujmdpfmpjwjufvmjufqpbosqlujpjlm+bowklvdkefbwvqjmd`lmgv`wfg*/#tkj`k#`lmwjmvfg.kfbgfq!=Efaqvbqz#mvnfqlvp#lufqeolt9`lnslmfmweqbdnfmwpf{`foofmw`lopsbm>!wf`kmj`bomfbq#wkf#Bgubm`fg#plvq`f#lef{sqfppfgKlmd#Hlmd#Eb`fallhnvowjsof#nf`kbmjpnfofubwjlmleefmpjuf?,elqn=\t\npslmplqfggl`vnfmw-lq#%rvlw8wkfqf#bqfwklpf#tklnlufnfmwpsql`fppfpgjeej`vowpvanjwwfgqf`lnnfmg`lmujm`fgsqlnlwjmd!#tjgwk>!-qfsob`f+`obppj`bo`lbojwjlmkjp#ejqpwgf`jpjlmpbppjpwbmwjmgj`bwfgfulovwjlm.tqbssfq!fmlvdk#wlbolmd#wkfgfojufqfg..=\x0E\t?\"..Bnfqj`bm#sqlwf`wfgMlufnafq#?,pwzof=?evqmjwvqfJmwfqmfw##lmaovq>!pvpsfmgfgqf`jsjfmwabpfg#lm#Nlqflufq/balojpkfg`loof`wfgtfqf#nbgffnlwjlmbofnfqdfm`zmbqqbwjufbgul`bwfps{8alqgfq`lnnjwwfggjq>!owq!fnsolzffpqfpfbq`k-#pfof`wfgpv``fpplq`vpwlnfqpgjpsobzfgPfswfnafqbgg@obpp+Eb`fallh#pvddfpwfgbmg#obwfqlsfqbwjmdfobalqbwfPlnfwjnfpJmpwjwvwf`fqwbjmozjmpwboofgelooltfqpIfqvpbofnwkfz#kbuf`lnsvwjmddfmfqbwfgsqlujm`fpdvbqbmwffbqajwqbqzqf`ldmjyftbmwfg#wls{8tjgwk9wkflqz#leafkbujlvqTkjof#wkffpwjnbwfgafdbm#wl#jw#af`bnfnbdmjwvgfnvpw#kbufnlqf#wkbmGjqf`wlqzf{wfmpjlmpf`qfwbqzmbwvqboozl``vqqjmdubqjbaofpdjufm#wkfsobwelqn-?,obafo=?ebjofg#wl`lnslvmgphjmgp#le#pl`jfwjfpbolmdpjgf#..%dw8\t\tplvwktfpwwkf#qjdkwqbgjbwjlmnbz#kbuf#vmfp`bsf+pslhfm#jm!#kqfe>!,sqldqbnnflmoz#wkf#`lnf#eqlngjqf`wlqzavqjfg#jmb#pjnjobqwkfz#tfqf?,elmw=?,Mlqtfdjbmpsf`jejfgsqlgv`jmdsbppfmdfq+mft#Gbwfwfnslqbqzej`wjlmboBewfq#wkffrvbwjlmpgltmolbg-qfdvobqozgfufolsfqbaluf#wkfojmhfg#wlskfmlnfmbsfqjlg#lewllowjs!=pvapwbm`fbvwlnbwj`bpsf`w#leBnlmd#wkf`lmmf`wfgfpwjnbwfpBjq#Elq`fpzpwfn#lelaif`wjufjnnfgjbwfnbhjmd#jwsbjmwjmdp`lmrvfqfgbqf#pwjoosql`fgvqfdqltwk#lekfbgfg#azFvqlsfbm#gjujpjlmpnlof`vofpeqbm`kjpfjmwfmwjlmbwwqb`wfg`kjogkllgbopl#vpfggfgj`bwfgpjmdbslqfgfdqff#leebwkfq#le`lmeoj`wp?,b=?,s=\t`bnf#eqlntfqf#vpfgmlwf#wkbwqf`fjujmdF{f`vwjuffufm#nlqfb``fpp#wl`lnnbmgfqSlojwj`bonvpj`jbmpgfoj`jlvpsqjplmfqpbgufmw#leVWE.;!#,=?\"X@GBWBX!=@lmwb`wPlvwkfqm#ad`lolq>!pfqjfp#le-#Jw#tbp#jm#Fvqlsfsfqnjwwfgubojgbwf-bssfbqjmdleej`jboppfqjlvpoz.obmdvbdfjmjwjbwfgf{wfmgjmdolmd.wfqnjmeobwjlmpv`k#wkbwdfw@llhjfnbqhfg#az?,avwwlm=jnsofnfmwavw#jw#jpjm`qfbpfpgltm#wkf#qfrvjqjmdgfsfmgfmw..=\t?\"..#jmwfqujftTjwk#wkf#`lsjfp#le`lmpfmpvptbp#avjowUfmfyvfob+elqnfqozwkf#pwbwfsfqplmmfopwqbwfdj`ebulvq#lejmufmwjlmTjhjsfgjb`lmwjmfmwujqwvbooztkj`k#tbpsqjm`jsof@lnsofwf#jgfmwj`bopklt#wkbwsqjnjwjufbtbz#eqlnnlof`vobqsqf`jpfozgjpploufgVmgfq#wkfufqpjlm>!=%maps8?,Jw#jp#wkf#Wkjp#jp#tjoo#kbuflqdbmjpnpplnf#wjnfEqjfgqj`ktbp#ejqpwwkf#lmoz#eb`w#wkbwelqn#jg>!sqf`fgjmdWf`kmj`boskzpj`jpwl``vqp#jmmbujdbwlqpf`wjlm!=psbm#jg>!plvdkw#wlafolt#wkfpvqujujmd~?,pwzof=kjp#gfbwkbp#jm#wkf`bvpfg#azsbqwjboozf{jpwjmd#vpjmd#wkftbp#djufmb#ojpw#leofufop#lemlwjlm#leLeej`jbo#gjpnjppfgp`jfmwjpwqfpfnaofpgvsoj`bwff{solpjufqf`lufqfgboo#lwkfqdboofqjfpxsbggjmd9sflsof#leqfdjlm#lebggqfppfpbppl`jbwfjnd#bow>!jm#nlgfqmpklvog#afnfwklg#leqfslqwjmdwjnfpwbnsmffgfg#wlwkf#Dqfbwqfdbqgjmdpffnfg#wlujftfg#bpjnsb`w#lmjgfb#wkbwwkf#Tlqogkfjdkw#lef{sbmgjmdWkfpf#bqf`vqqfmw!=`bqfevooznbjmwbjmp`kbqdf#le@obppj`bobggqfppfgsqfgj`wfgltmfqpkjs?gju#jg>!qjdkw!=\x0E\tqfpjgfm`fofbuf#wkf`lmwfmw!=bqf#lewfm##~*+*8\x0E\tsqlabaoz#Sqlefpplq.avwwlm!#qfpslmgfgpbzp#wkbwkbg#wl#afsob`fg#jmKvmdbqjbmpwbwvp#lepfqufp#bpVmjufqpbof{f`vwjlmbddqfdbwfelq#tkj`kjmef`wjlmbdqffg#wlkltfufq/#slsvobq!=sob`fg#lm`lmpwqv`wfof`wlqbopznalo#lejm`ovgjmdqfwvqm#wlbq`kjwf`w@kqjpwjbmsqfujlvp#ojujmd#jmfbpjfq#wlsqlefpplq\t%ow8\"..#feef`w#lebmbozwj`ptbp#wbhfmtkfqf#wkfwllh#lufqafojfe#jmBeqjhbbmpbp#ebq#bpsqfufmwfgtlqh#tjwkb#psf`jbo?ejfogpfw@kqjpwnbpQfwqjfufg\t\tJm#wkf#ab`h#jmwlmlqwkfbpwnbdbyjmfp=?pwqlmd=`lnnjwwffdlufqmjmddqlvsp#lepwlqfg#jmfpwbaojpkb#dfmfqbojwp#ejqpwwkfjq#ltmslsvobwfgbm#laif`w@bqjaafbmboolt#wkfgjpwqj`wptjp`lmpjmol`bwjlm-8#tjgwk9#jmkbajwfgPl`jbojpwIbmvbqz#2?,ellwfq=pjnjobqoz`klj`f#lewkf#pbnf#psf`jej`#avpjmfpp#Wkf#ejqpw-ofmdwk8#gfpjqf#wlgfbo#tjwkpjm`f#wkfvpfqBdfmw`lm`fjufgjmgf{-sksbp#%rvlw8fmdbdf#jmqf`fmwoz/eft#zfbqptfqf#bopl\t?kfbg=\t?fgjwfg#azbqf#hmltm`jwjfp#jmb``fpphfz`lmgfnmfgbopl#kbufpfquj`fp/ebnjoz#leP`kllo#le`lmufqwfgmbwvqf#le#obmdvbdfnjmjpwfqp?,laif`w=wkfqf#jp#b#slsvobqpfrvfm`fpbgul`bwfgWkfz#tfqfbmz#lwkfqol`bwjlm>fmwfq#wkfnv`k#nlqfqfeof`wfgtbp#mbnfglqjdjmbo#b#wzsj`botkfm#wkfzfmdjmffqp`lvog#mlwqfpjgfmwptfgmfpgbzwkf#wkjqg#sqlgv`wpIbmvbqz#1tkbw#wkfzb#`fqwbjmqfb`wjlmpsql`fpplqbewfq#kjpwkf#obpw#`lmwbjmfg!=?,gju=\t?,b=?,wg=gfsfmg#lmpfbq`k!=\tsjf`fp#le`lnsfwjmdQfefqfm`fwfmmfppfftkj`k#kbp#ufqpjlm>?,psbm=#??,kfbgfq=djufp#wkfkjpwlqjbmubovf>!!=sbggjmd93ujft#wkbwwldfwkfq/wkf#nlpw#tbp#elvmgpvapfw#lebwwb`h#lm`kjogqfm/sljmwp#lesfqplmbo#slpjwjlm9boofdfgoz@ofufobmgtbp#obwfqbmg#bewfqbqf#djufmtbp#pwjoop`qloojmdgfpjdm#lenbhfp#wkfnv`k#ofppBnfqj`bmp-\t\tBewfq#/#avw#wkfNvpfvn#leolvjpjbmb+eqln#wkfnjmmfplwbsbqwj`ofpb#sql`fppGlnjmj`bmulovnf#leqfwvqmjmdgfefmpjuf33s{\x7Fqjdknbgf#eqlnnlvpflufq!#pwzof>!pwbwfp#le+tkj`k#jp`lmwjmvfpEqbm`jp`lavjogjmd#tjwklvw#btjwk#plnftkl#tlvogb#elqn#leb#sbqw#leafelqf#jwhmltm#bp##Pfquj`fpol`bwjlm#bmg#lewfmnfbpvqjmdbmg#jw#jpsbsfqab`hubovfp#le\x0E\t?wjwof=>#tjmglt-gfwfqnjmffq%rvlw8#sobzfg#azbmg#fbqoz?,`fmwfq=eqln#wkjpwkf#wkqffsltfq#bmgle#%rvlw8jmmfqKWNO?b#kqfe>!z9jmojmf8@kvq`k#lewkf#fufmwufqz#kjdkleej`jbo#.kfjdkw9#`lmwfmw>!,`dj.ajm,wl#`qfbwfbeqjhbbmpfpsfqbmwleqbm/Kbjpobwujf)Mvojfwvuj)_(`f)Mwjmb(af)Mwjmb\fUh\fT{\fTN\n{I\np@\x04Fr\x0BBl\bQ\x7F\tA{\x0BUm\x05Gx\tA{\x01yp\x06YA\0zX\bTV\bWl\bUd\x04BM\x0BB{\npV\x0B@x\x04B\\\np@\x04Db\x04Gz\tal\npa\tfM\tuD\bV~\x04mx\x0BQ}\ndS\tp\\\bVK\bS]\bU|\x05oD\tkV\x0Bed\x0BHR\nb~\x04M`\nJp\x05oD\x04|Q\nLP\x04Sw\bTl\nAI\nxC\bWt\tBq\x05F`\x04Cm\x0BLm\tKx\t}t\bPv\ny\\\naB\tV\x7F\nZd\x04XU\x04li\tfr\ti@\tBH\x04BD\x04BV\t`V\n[]\tp_\tTn\n~A\nxR\tuD\t`{\bV@\tTn\tHK\tAJ\x0Bxs\x04Zf\nqI\x04Zf\x0BBM\x0B|j\t}t\bSM\nmC\x0BQ}pfquj`jlpbqw/A`volbqdfmwjmbabq`folmb`vborvjfqsvaoj`bglsqlgv`wlpslo/Awj`bqfpsvfpwbtjhjsfgjbpjdvjfmwfa/Vprvfgb`lnvmjgbgpfdvqjgbgsqjm`jsbosqfdvmwbp`lmwfmjglqfpslmgfqufmfyvfobsqlaofnbpgj`jfnaqfqfob`j/_mmlujfnaqfpjnjobqfpsqlzf`wlpsqldqbnbpjmpwjwvwlb`wjujgbgfm`vfmwqbf`lmln/Abjn/Mdfmfp`lmwb`wbqgfp`bqdbqmf`fpbqjlbwfm`j/_mwfo/Eelml`lnjpj/_m`bm`jlmfp`bsb`jgbgfm`lmwqbqbm/Mojpjpebulqjwlpw/Eqnjmlpsqlujm`jbfwjrvfwbpfofnfmwlpevm`jlmfpqfpvowbgl`bq/M`wfqsqlsjfgbgsqjm`jsjlmf`fpjgbgnvmj`jsbo`qfb`j/_mgfp`bqdbpsqfpfm`jb`lnfq`jbolsjmjlmfpfifq`j`jlfgjwlqjbopbobnbm`bdlmy/Mofygl`vnfmwlsfo/A`vobqf`jfmwfpdfmfqbofpwbqqbdlmbsq/M`wj`bmlufgbgfpsqlsvfpwbsb`jfmwfpw/E`mj`bplaifwjulp`lmwb`wlp\fHB\fIk\fHn\fH^\fHS\fHc\fHU\fId\fHn\fH{\fHC\fHR\fHT\fHR\fHI\fHc\fHY\fHn\fH\\\fHU\fIk\fHy\fIg\fHd\fHy\fIm\fHw\fH\\\fHU\fHR\fH@\fHR\fHJ\fHy\fHU\fHR\fHT\fHA\fIl\fHU\fIm\fHc\fH\\\fHU\fIl\fHB\fId\fHn\fHJ\fHS\fHD\fH@\fHR\fHHgjsolgl`p\fHT\fHB\fHC\fH\\\fIn\fHF\fHD\fHR\fHB\fHF\fHH\fHR\fHG\fHS\fH\\\fHx\fHT\fHH\fHH\fH\\\fHU\fH^\fIg\fH{\fHU\fIm\fHj\fH@\fHR\fH\\\fHJ\fIk\fHZ\fHU\fIm\fHd\fHz\fIk\fH^\fHC\fHJ\fHS\fHy\fHR\fHB\fHY\fIk\fH@\fHH\fIl\fHD\fH@\fIl\fHv\fHB\fI`\fHH\fHT\fHR\fH^\fH^\fIk\fHz\fHp\fIe\fH@\fHB\fHJ\fHJ\fHH\fHI\fHR\fHD\fHU\fIl\fHZ\fHU\fH\\\fHi\fH^\fH{\fHy\fHA\fIl\fHD\fH{\fH\\\fHF\fHR\fHT\fH\\\fHR\fHH\fHy\fHS\fHc\fHe\fHT\fIk\fH{\fHC\fIl\fHU\fIn\fHm\fHj\fH{\fIk\fHs\fIl\fHB\fHz\fIg\fHp\fHy\fHR\fH\\\fHi\fHA\fIl\fH{\fHC\fIk\fHH\fIm\fHB\fHY\fIg\fHs\fHJ\fIk\fHn\fHi\fH{\fH\\\fH|\fHT\fIk\fHB\fIk\fH^\fH^\fH{\fHR\fHU\fHR\fH^\fHf\fHF\fH\\\fHv\fHR\fH\\\fH|\fHT\fHR\fHJ\fIk\fH\\\fHp\fHS\fHT\fHJ\fHS\fH^\fH@\fHn\fHJ\fH@\fHD\fHR\fHU\fIn\fHn\fH^\fHR\fHz\fHp\fIl\fHH\fH@\fHs\fHD\fHB\fHS\fH^\fHk\fHT\fIk\fHj\fHD\fIk\fHD\fHC\fHR\fHy\fIm\fH^\fH^\fIe\fH{\fHA\fHR\fH{\fH\\\fIk\fH^\fHp\fH{\fHU\fH\\\fHR\fHB\fH^\fH{\fIk\fHF\fIk\fHp\fHU\fHR\fHI\fHk\fHT\fIl\fHT\fHU\fIl\fHy\fH^\fHR\fHL\fIl\fHy\fHU\fHR\fHm\fHJ\fIn\fH\\\fHH\fHU\fHH\fHT\fHR\fHH\fHC\fHR\fHJ\fHj\fHC\fHR\fHF\fHR\fHy\fHy\fI`\fHD\fHZ\fHR\fHB\fHJ\fIk\fHz\fHC\fHU\fIl\fH\\\fHR\fHC\fHz\fIm\fHJ\fH^\fH{\fIl`bwfdlqjfpf{sfqjfm`f?,wjwof=\x0E\t@lszqjdkw#ibubp`qjsw`lmgjwjlmpfufqzwkjmd?s#`obpp>!wf`kmloldzab`hdqlvmg?b#`obpp>!nbmbdfnfmw%`lsz8#132ibubP`qjsw`kbqb`wfqpaqfbg`qvnawkfnpfoufpklqjylmwbodlufqmnfmw@bojelqmjbb`wjujwjfpgjp`lufqfgMbujdbwjlmwqbmpjwjlm`lmmf`wjlmmbujdbwjlmbssfbqbm`f?,wjwof=?n`kf`hal{!#wf`kmjrvfpsqlwf`wjlmbssbqfmwozbp#tfoo#bpvmw$/#$VB.qfplovwjlmlsfqbwjlmpwfofujpjlmwqbmpobwfgTbpkjmdwlmmbujdbwlq-#>#tjmglt-jnsqfppjlm%ow8aq%dw8ojwfqbwvqfslsvobwjlmad`lolq>! fpsf`jbooz#`lmwfmw>!sqlgv`wjlmmftpofwwfqsqlsfqwjfpgfejmjwjlmofbgfqpkjsWf`kmloldzSbqojbnfmw`lnsbqjplmvo#`obpp>!-jmgf{Le+!`lm`ovpjlmgjp`vppjlm`lnslmfmwpajloldj`boQfulovwjlm\\`lmwbjmfqvmgfqpwllgmlp`qjsw=?sfqnjppjlmfb`k#lwkfqbwnlpskfqf#lmel`vp>!?elqn#jg>!sql`fppjmdwkjp-ubovfdfmfqbwjlm@lmefqfm`fpvapfrvfmwtfoo.hmltmubqjbwjlmpqfsvwbwjlmskfmlnfmlmgjp`jsojmfoldl-smd!#+gl`vnfmw/alvmgbqjfpf{sqfppjlmpfwwofnfmwAb`hdqlvmglvw#le#wkffmwfqsqjpf+!kwwsp9!#vmfp`bsf+!sbpptlqg!#gfnl`qbwj`?b#kqfe>!,tqbssfq!=\tnfnafqpkjsojmdvjpwj`s{8sbggjmdskjolplskzbppjpwbm`fvmjufqpjwzeb`jojwjfpqf`ldmjyfgsqfefqfm`fje#+wzsflenbjmwbjmfgul`bavobqzkzslwkfpjp-pvanjw+*8%bns8maps8bmmlwbwjlmafkjmg#wkfElvmgbwjlmsvaojpkfq!bppvnswjlmjmwqlgv`fg`lqqvswjlmp`jfmwjpwpf{soj`jwozjmpwfbg#legjnfmpjlmp#lm@oj`h>!`lmpjgfqfggfsbqwnfmwl``vsbwjlmpllm#bewfqjmufpwnfmwsqlmlvm`fgjgfmwjejfgf{sfqjnfmwNbmbdfnfmwdfldqbskj`!#kfjdkw>!ojmh#qfo>!-qfsob`f+,gfsqfppjlm`lmefqfm`fsvmjpknfmwfojnjmbwfgqfpjpwbm`fbgbswbwjlmlsslpjwjlmtfoo#hmltmpvssofnfmwgfwfqnjmfgk2#`obpp>!3s{8nbqdjmnf`kbmj`bopwbwjpwj`p`fofaqbwfgDlufqmnfmw\t\tGvqjmd#wgfufolsfqpbqwjej`jbofrvjubofmwlqjdjmbwfg@lnnjppjlmbwwb`knfmw?psbm#jg>!wkfqf#tfqfMfgfqobmgpafzlmg#wkfqfdjpwfqfgilvqmbojpweqfrvfmwozboo#le#wkfobmd>!fm!#?,pwzof=\x0E\tbaplovwf8#pvsslqwjmdf{wqfnfoz#nbjmpwqfbn?,pwqlmd=#slsvobqjwzfnsolznfmw?,wbaof=\x0E\t#`lopsbm>!?,elqn=\t##`lmufqpjlmbalvw#wkf#?,s=?,gju=jmwfdqbwfg!#obmd>!fmSlqwvdvfpfpvapwjwvwfjmgjujgvbojnslppjaofnvowjnfgjbbonlpw#boos{#plojg# bsbqw#eqlnpvaif`w#wljm#Fmdojpk`qjwj`jyfgf{`fsw#elqdvjgfojmfplqjdjmboozqfnbqhbaofwkf#pf`lmgk1#`obpp>!?b#wjwof>!+jm`ovgjmdsbqbnfwfqpsqlkjajwfg>#!kwws9,,gj`wjlmbqzsfq`fswjlmqfulovwjlmelvmgbwjlms{8kfjdkw9pv``fppevopvsslqwfqpnjoofmmjvnkjp#ebwkfqwkf#%rvlw8ml.qfsfbw8`lnnfq`jbojmgvpwqjbofm`lvqbdfgbnlvmw#le#vmleej`jbofeej`jfm`zQfefqfm`fp`llqgjmbwfgjp`objnfqf{sfgjwjlmgfufolsjmd`bo`vobwfgpjnsojejfgofdjwjnbwfpvapwqjmd+3!#`obpp>!`lnsofwfozjoovpwqbwfejuf#zfbqpjmpwqvnfmwSvaojpkjmd2!#`obpp>!spz`kloldz`lmejgfm`fmvnafq#le#bapfm`f#leel`vpfg#lmiljmfg#wkfpwqv`wvqfpsqfujlvpoz=?,jeqbnf=lm`f#bdbjmavw#qbwkfqjnnjdqbmwple#`lvqpf/b#dqlvs#leOjwfqbwvqfVmojhf#wkf?,b=%maps8\tevm`wjlm#jw#tbp#wkf@lmufmwjlmbvwlnlajofSqlwfpwbmwbddqfppjufbewfq#wkf#Pjnjobqoz/!#,=?,gju=`loof`wjlm\x0E\tevm`wjlmujpjajojwzwkf#vpf#leulovmwffqpbwwqb`wjlmvmgfq#wkf#wkqfbwfmfg)?\"X@GBWBXjnslqwbm`fjm#dfmfqbowkf#obwwfq?,elqn=\t?,-jmgf{Le+$j#>#38#j#?gjeefqfm`fgfulwfg#wlwqbgjwjlmppfbq`k#elqvowjnbwfozwlvqmbnfmwbwwqjavwfppl.`boofg#~\t?,pwzof=fubovbwjlmfnskbpjyfgb``fppjaof?,pf`wjlm=pv``fppjlmbolmd#tjwkNfbmtkjof/jmgvpwqjfp?,b=?aq#,=kbp#af`lnfbpsf`wp#leWfofujpjlmpveej`jfmwabphfwabooalwk#pjgfp`lmwjmvjmdbm#bqwj`of?jnd#bow>!bgufmwvqfpkjp#nlwkfqnbm`kfpwfqsqjm`jsofpsbqwj`vobq`lnnfmwbqzfeef`wp#legf`jgfg#wl!=?pwqlmd=svaojpkfqpIlvqmbo#legjeej`vowzeb`jojwbwfb``fswbaofpwzof-`pp!\nevm`wjlm#jmmlubwjlm=@lszqjdkwpjwvbwjlmptlvog#kbufavpjmfppfpGj`wjlmbqzpwbwfnfmwplewfm#vpfgsfqpjpwfmwjm#Ibmvbqz`lnsqjpjmd?,wjwof=\t\ngjsolnbwj``lmwbjmjmdsfqelqnjmdf{wfmpjlmpnbz#mlw#af`lm`fsw#le#lm`oj`h>!Jw#jp#boplejmbm`jbo#nbhjmd#wkfOv{fnalvqdbggjwjlmbobqf#`boofgfmdbdfg#jm!p`qjsw!*8avw#jw#tbpfof`wqlmj`lmpvanjw>!\t?\"..#Fmg#fof`wqj`boleej`jboozpvddfpwjlmwls#le#wkfvmojhf#wkfBvpwqbojbmLqjdjmboozqfefqfm`fp\t?,kfbg=\x0E\tqf`ldmjpfgjmjwjbojyfojnjwfg#wlBof{bmgqjbqfwjqfnfmwBgufmwvqfpelvq#zfbqp\t\t%ow8\"..#jm`qfbpjmdgf`lqbwjlmk0#`obpp>!lqjdjmp#lelaojdbwjlmqfdvobwjlm`obppjejfg+evm`wjlm+bgubmwbdfpafjmd#wkf#kjpwlqjbmp?abpf#kqfeqfsfbwfgoztjoojmd#wl`lnsbqbaofgfpjdmbwfgmlnjmbwjlmevm`wjlmbojmpjgf#wkfqfufobwjlmfmg#le#wkfp#elq#wkf#bvwklqjyfgqfevpfg#wlwbhf#sob`fbvwlmlnlvp`lnsqlnjpfslojwj`bo#qfpwbvqbmwwtl#le#wkfEfaqvbqz#1rvbojwz#leptelaif`w-vmgfqpwbmgmfbqoz#bootqjwwfm#azjmwfqujftp!#tjgwk>!2tjwkgqbtboeolbw9ofewjp#vpvbooz`bmgjgbwfpmftpsbsfqpnzpwfqjlvpGfsbqwnfmwafpw#hmltmsbqojbnfmwpvssqfppfg`lmufmjfmwqfnfnafqfggjeefqfmw#pzpwfnbwj`kbp#ofg#wlsqlsbdbmgb`lmwqloofgjmeovfm`fp`fqfnlmjbosql`objnfgSqlwf`wjlmoj#`obpp>!P`jfmwjej``obpp>!ml.wqbgfnbqhpnlqf#wkbm#tjgfpsqfbgOjafqbwjlmwllh#sob`fgbz#le#wkfbp#olmd#bpjnsqjplmfgBggjwjlmbo\t?kfbg=\t?nObalqbwlqzMlufnafq#1f{`fswjlmpJmgvpwqjboubqjfwz#leeolbw9#ofeGvqjmd#wkfbppfppnfmwkbuf#affm#gfbop#tjwkPwbwjpwj`pl``vqqfm`f,vo=?,gju=`ofbqej{!=wkf#svaoj`nbmz#zfbqptkj`k#tfqflufq#wjnf/pzmlmznlvp`lmwfmw!=\tsqfpvnbaozkjp#ebnjozvpfqBdfmw-vmf{sf`wfgjm`ovgjmd#`kboofmdfgb#njmlqjwzvmgfejmfg!afolmdp#wlwbhfm#eqlnjm#L`wlafqslpjwjlm9#pbjg#wl#afqfojdjlvp#Efgfqbwjlm#qltpsbm>!lmoz#b#eftnfbmw#wkbwofg#wl#wkf..=\x0E\t?gju#?ejfogpfw=Bq`kajpkls#`obpp>!mlafjmd#vpfgbssqlb`kfpsqjujofdfpmlp`qjsw=\tqfpvowp#jmnbz#af#wkfFbpwfq#fddnf`kbmjpnpqfbplmbaofSlsvobwjlm@loof`wjlmpfof`wfg!=mlp`qjsw=\x0E,jmgf{-sksbqqjubo#le.ippgh$**8nbmbdfg#wljm`lnsofwf`bpvbowjfp`lnsofwjlm@kqjpwjbmpPfswfnafq#bqjwknfwj`sql`fgvqfpnjdkw#kbufSqlgv`wjlmjw#bssfbqpSkjolplskzeqjfmgpkjsofbgjmd#wldjujmd#wkfwltbqg#wkfdvbqbmwffggl`vnfmwfg`lolq9 333ujgfl#dbnf`lnnjppjlmqfeof`wjmd`kbmdf#wkfbppl`jbwfgpbmp.pfqjelmhfzsqfpp8#sbggjmd9Kf#tbp#wkfvmgfqozjmdwzsj`booz#/#bmg#wkf#pq`Fofnfmwpv``fppjufpjm`f#wkf#pklvog#af#mfwtlqhjmdb``lvmwjmdvpf#le#wkfoltfq#wkbmpkltp#wkbw?,psbm=\t\n\n`lnsobjmwp`lmwjmvlvprvbmwjwjfpbpwqlmlnfqkf#gjg#mlwgvf#wl#jwpbssojfg#wlbm#bufqbdffeelqwp#wlwkf#evwvqfbwwfnsw#wlWkfqfelqf/`bsbajojwzQfsvaoj`bmtbp#elqnfgFof`wqlmj`hjolnfwfqp`kboofmdfpsvaojpkjmdwkf#elqnfqjmgjdfmlvpgjqf`wjlmppvapjgjbqz`lmpsjqb`zgfwbjop#lebmg#jm#wkfbeelqgbaofpvapwbm`fpqfbplm#elq`lmufmwjlmjwfnwzsf>!baplovwfozpvsslpfgozqfnbjmfg#bbwwqb`wjufwqbufoojmdpfsbqbwfozel`vpfp#lmfofnfmwbqzbssoj`baofelvmg#wkbwpwzofpkffwnbmvp`qjswpwbmgp#elq#ml.qfsfbw+plnfwjnfp@lnnfq`jbojm#Bnfqj`bvmgfqwbhfmrvbqwfq#lebm#f{bnsofsfqplmboozjmgf{-sks<?,avwwlm=\tsfq`fmwbdfafpw.hmltm`qfbwjmd#b!#gjq>!owqOjfvwfmbmw\t?gju#jg>!wkfz#tlvogbajojwz#lenbgf#vs#lemlwfg#wkbw`ofbq#wkbwbqdvf#wkbwwl#bmlwkfq`kjogqfm$psvqslpf#leelqnvobwfgabpfg#vslmwkf#qfdjlmpvaif`w#lesbppfmdfqpslppfppjlm-\t\tJm#wkf#Afelqf#wkfbewfqtbqgp`vqqfmwoz#b`qlpp#wkfp`jfmwjej``lnnvmjwz-`bsjwbojpnjm#Dfqnbmzqjdkw.tjmdwkf#pzpwfnPl`jfwz#leslojwj`jbmgjqf`wjlm9tfmw#lm#wlqfnlubo#le#Mft#Zlqh#bsbqwnfmwpjmgj`bwjlmgvqjmd#wkfvmofpp#wkfkjpwlqj`bokbg#affm#bgfejmjwjufjmdqfgjfmwbwwfmgbm`f@fmwfq#elqsqlnjmfm`fqfbgzPwbwfpwqbwfdjfpavw#jm#wkfbp#sbqw#le`lmpwjwvwf`objn#wkbwobalqbwlqz`lnsbwjaofebjovqf#le/#pv`k#bp#afdbm#tjwkvpjmd#wkf#wl#sqlujgfefbwvqf#leeqln#tkj`k,!#`obpp>!dfloldj`bopfufqbo#legfojafqbwfjnslqwbmw#klogp#wkbwjmd%rvlw8#ubojdm>wlswkf#Dfqnbmlvwpjgf#lemfdlwjbwfgkjp#`bqffqpfsbqbwjlmjg>!pfbq`ktbp#`boofgwkf#elvqwkqf`qfbwjlmlwkfq#wkbmsqfufmwjlmtkjof#wkf#fgv`bwjlm/`lmmf`wjmdb``vqbwfoztfqf#avjowtbp#hjoofgbdqffnfmwpnv`k#nlqf#Gvf#wl#wkftjgwk9#233plnf#lwkfqHjmdgln#lewkf#fmwjqfebnlvp#elqwl#`lmmf`wlaif`wjufpwkf#Eqfm`ksflsof#bmgefbwvqfg!=jp#pbjg#wlpwqv`wvqboqfefqfmgvnnlpw#lewfmb#pfsbqbwf.=\t?gju#jg#Leej`jbo#tlqogtjgf-bqjb.obafowkf#sobmfwbmg#jw#tbpg!#ubovf>!ollhjmd#bwafmfej`jbobqf#jm#wkfnlmjwlqjmdqfslqwfgozwkf#nlgfqmtlqhjmd#lmbooltfg#wltkfqf#wkf#jmmlubwjuf?,b=?,gju=plvmgwqb`hpfbq`kElqnwfmg#wl#afjmsvw#jg>!lsfmjmd#leqfpwqj`wfgbglswfg#azbggqfppjmdwkfloldjbmnfwklgp#leubqjbmw#le@kqjpwjbm#ufqz#obqdfbvwlnlwjufaz#ebq#wkfqbmdf#eqlnsvqpvjw#leeloolt#wkfaqlvdkw#wljm#Fmdobmgbdqff#wkbwb``vpfg#le`lnfp#eqlnsqfufmwjmdgju#pwzof>kjp#lq#kfqwqfnfmglvpeqffgln#le`lm`fqmjmd3#2fn#2fn8Abphfwaboo,pwzof-`ppbm#fbqojfqfufm#bewfq,!#wjwof>!-`ln,jmgf{wbhjmd#wkfsjwwpavqdk`lmwfmw!=\x0E?p`qjsw=+ewvqmfg#lvwkbujmd#wkf?,psbm=\x0E\t#l``bpjlmboaf`bvpf#jwpwbqwfg#wlskzpj`booz=?,gju=\t##`qfbwfg#az@vqqfmwoz/#ad`lolq>!wbajmgf{>!gjpbpwqlvpBmbozwj`p#bopl#kbp#b=?gju#jg>!?,pwzof=\t?`boofg#elqpjmdfq#bmg-pq`#>#!,,ujlobwjlmpwkjp#sljmw`lmpwbmwozjp#ol`bwfgqf`lqgjmdpg#eqln#wkfmfgfqobmgpslqwvdv/Fp;N;};D;u;F5m4K4]4_7`gfpbqqlool`lnfmwbqjlfgv`b`j/_mpfswjfnaqfqfdjpwqbglgjqf``j/_mvaj`b`j/_msvaoj`jgbgqfpsvfpwbpqfpvowbglpjnslqwbmwfqfpfqubglpbqw/A`volpgjefqfmwfppjdvjfmwfpqfs/Vaoj`bpjwvb`j/_mnjmjpwfqjlsqjub`jgbggjqf`wlqjlelqnb`j/_mslaob`j/_msqfpjgfmwf`lmw", "fmjglpb``fplqjlpwf`kmlqbwjsfqplmbofp`bwfdlq/Abfpsf`jbofpgjpslmjaofb`wvbojgbgqfefqfm`jbuboobglojgajaojlwf`bqfob`jlmfp`bofmgbqjlslo/Awj`bpbmwfqjlqfpgl`vnfmwlpmbwvqbofybnbwfqjbofpgjefqfm`jbf`lm/_nj`bwqbmpslqwfqlgq/Advfysbqwj`jsbqfm`vfmwqbmgjp`vpj/_mfpwqv`wvqbevmgb`j/_meqf`vfmwfpsfqnbmfmwfwlwbonfmwf<P<R<Z<Q<R<]=o<X<Y=n<P<R<Z<Y=n<^=l<Y<P=c=n<\\<V<Z<Y=k=n<R<]=g<]<R<W<Y<Y<R=k<Y<Q=`=a=n<R<_<R<V<R<_<X<\\<S<R=m<W<Y<^=m<Y<_<R=m<\\<U=n<Y=k<Y=l<Y<[<P<R<_=o=n=m<\\<U=n<\\<Z<T<[<Q<T<P<Y<Z<X=o<]=o<X=o=n<s<R<T=m<V<[<X<Y=m=`<^<T<X<Y<R=m<^=c<[<T<Q=o<Z<Q<R=m<^<R<Y<U<W=b<X<Y<U<S<R=l<Q<R<P<Q<R<_<R<X<Y=n<Y<U=m<^<R<T=i<S=l<\\<^<\\=n<\\<V<R<U<P<Y=m=n<R<T<P<Y<Y=n<Z<T<[<Q=`<R<X<Q<R<U<W=o=k=d<Y<S<Y=l<Y<X=k<\\=m=n<T=k<\\=m=n=`=l<\\<]<R=n<Q<R<^=g=i<S=l<\\<^<R=m<R<]<R<U<S<R=n<R<P<P<Y<Q<Y<Y=k<T=m<W<Y<Q<R<^=g<Y=o=m<W=o<_<R<V<R<W<R<Q<\\<[<\\<X=n<\\<V<R<Y=n<R<_<X<\\<S<R=k=n<T<s<R=m<W<Y=n<\\<V<T<Y<Q<R<^=g<U=m=n<R<T=n=n<\\<V<T=i=m=l<\\<[=o<M<\\<Q<V=n=h<R=l=o<P<v<R<_<X<\\<V<Q<T<_<T=m<W<R<^<\\<Q<\\=d<Y<U<Q<\\<U=n<T=m<^<R<T<P=m<^=c<[=`<W=b<]<R<U=k<\\=m=n<R=m=l<Y<X<T<v=l<R<P<Y<H<R=l=o<P=l=g<Q<V<Y=m=n<\\<W<T<S<R<T=m<V=n=g=m=c=k<P<Y=m=c=j=j<Y<Q=n=l=n=l=o<X<\\=m<\\<P=g=i=l=g<Q<V<\\<q<R<^=g<U=k<\\=m<R<^<P<Y=m=n<\\=h<T<W=`<P<P<\\=l=n<\\=m=n=l<\\<Q<P<Y=m=n<Y=n<Y<V=m=n<Q<\\=d<T=i<P<T<Q=o=n<T<P<Y<Q<T<T<P<Y=b=n<Q<R<P<Y=l<_<R=l<R<X=m<\\<P<R<P=a=n<R<P=o<V<R<Q=j<Y=m<^<R<Y<P<V<\\<V<R<U<|=l=i<T<^5i5j4F4C5e4I4]4_4K5h4]4_4K5h4E4K5h4U4K5i5o4F4D5k4K4D4]4K5i4@4K5h5f5d5i4K5h4Y5d4]4@4C5f4C4E4K5h4U4Z5d4I4Z4K5m4E4K5h5n4_5i4K5h4U4K4D4F4A5i5f5h5i5h5m4K4F5i5h4F5n5e4F4U4C5f5h4K5h4X4U4]4O4B4D4K4]4F4[5d5f4]4U5h5f5o5i4I4]5m4K5n4[5h4D4K4F4K5h5h4V4E4F4]4F5f4D4K5h5j4K4_4K5h4X5f4B5i5j4F4C5f4K5h4U4]4D4K5h5n4Y4Y4K5m5h4K5i4U5h5f5k4K4F4A4C5f4G4K5h5h5k5i4K5h4U5i5h5i5o4F4D4E5f5i5o5j5o4K5h4[5m5h5m5f4C5f5d4I4C4K4]4E4F4K4]5f4B4K5h4Y4A4E4F4_4@5f5h4K5h5d5n4F4U5j4C5i4K5i4C5f5j4E4F4Y5i5f5i4O4]4X5f5m4K5h4\\5f5j4U4]4D5f4E4D5d4K4D4E4O5h4U4K4D4K5h4_5m4]5i4X4K5o5h4F4U4K5h5e4K5h4O5d5h4K5h4_5j4E4@4K5i4U4E4K5h4Y4A5m4K5h4C5f5j5o5h5i4K4F4K5h4B4K4Y4K5h5i5h5m4O4U4Z4K4M5o4F4K4D4E4K5h4B5f4]4]4_4K4J5h4K5h5n5h4D4K5h4O4C4D5i5n4K4[4U5i4]4K4_5h5i5j4[5n4E4K5h5o4F4D4K5h4]4@5h4K4X4F4]5o4K5h5n4C5i5f4U4[5f5opAzWbdMbnf+-isd!#bow>!2s{#plojg# -dje!#bow>!wqbmpsbqfmwjmelqnbwjlmbssoj`bwjlm!#lm`oj`h>!fpwbaojpkfgbgufqwjpjmd-smd!#bow>!fmujqlmnfmwsfqelqnbm`fbssqlsqjbwf%bns8ngbpk8jnnfgjbwfoz?,pwqlmd=?,qbwkfq#wkbmwfnsfqbwvqfgfufolsnfmw`lnsfwjwjlmsob`fklogfqujpjajojwz9`lszqjdkw!=3!#kfjdkw>!fufm#wklvdkqfsob`fnfmwgfpwjmbwjlm@lqslqbwjlm?vo#`obpp>!Bppl`jbwjlmjmgjujgvbopsfqpsf`wjufpfwWjnflvw+vqo+kwws9,,nbwkfnbwj`pnbqdjm.wls9fufmwvbooz#gfp`qjswjlm*#ml.qfsfbw`loof`wjlmp-ISD\x7Fwkvna\x7Fsbqwj`jsbwf,kfbg=?algzeolbw9ofew8?oj#`obpp>!kvmgqfgp#le\t\tKltfufq/#`lnslpjwjlm`ofbq9alwk8`llsfqbwjlmtjwkjm#wkf#obafo#elq>!alqgfq.wls9Mft#Yfbobmgqf`lnnfmgfgsklwldqbskzjmwfqfpwjmd%ow8pvs%dw8`lmwqlufqpzMfwkfqobmgpbowfqmbwjufnb{ofmdwk>!ptjwyfqobmgGfufolsnfmwfppfmwjbooz\t\tBowklvdk#?,wf{wbqfb=wkvmgfqajqgqfsqfpfmwfg%bns8mgbpk8psf`vobwjlm`lnnvmjwjfpofdjpobwjlmfof`wqlmj`p\t\n?gju#jg>!joovpwqbwfgfmdjmffqjmdwfqqjwlqjfpbvwklqjwjfpgjpwqjavwfg5!#kfjdkw>!pbmp.pfqje8`bsbaof#le#gjpbssfbqfgjmwfqb`wjufollhjmd#elqjw#tlvog#afBedkbmjpwbmtbp#`qfbwfgNbwk-eollq+pvqqlvmgjmd`bm#bopl#aflapfqubwjlmnbjmwfmbm`ffm`lvmwfqfg?k1#`obpp>!nlqf#qf`fmwjw#kbp#affmjmubpjlm#le*-dfwWjnf+*evmgbnfmwboGfpsjwf#wkf!=?gju#jg>!jmpsjqbwjlmf{bnjmbwjlmsqfsbqbwjlmf{sobmbwjlm?jmsvw#jg>!?,b=?,psbm=ufqpjlmp#lejmpwqvnfmwpafelqf#wkf##>#$kwws9,,Gfp`qjswjlmqfobwjufoz#-pvapwqjmd+fb`k#le#wkff{sfqjnfmwpjmeovfmwjbojmwfdqbwjlmnbmz#sflsofgvf#wl#wkf#`lnajmbwjlmgl#mlw#kbufNjggof#Fbpw?mlp`qjsw=?`lszqjdkw!#sfqkbsp#wkfjmpwjwvwjlmjm#Gf`fnafqbqqbmdfnfmwnlpw#ebnlvpsfqplmbojwz`qfbwjlm#leojnjwbwjlmpf{`ovpjufozplufqfjdmwz.`lmwfmw!=\t?wg#`obpp>!vmgfqdqlvmgsbqboofo#wlgl`wqjmf#lel``vsjfg#azwfqnjmloldzQfmbjppbm`fb#mvnafq#lepvsslqw#elqf{solqbwjlmqf`ldmjwjlmsqfgf`fpplq?jnd#pq`>!,?k2#`obpp>!svaoj`bwjlmnbz#bopl#afpsf`jbojyfg?,ejfogpfw=sqldqfppjufnjoojlmp#lepwbwfp#wkbwfmelq`fnfmwbqlvmg#wkf#lmf#bmlwkfq-sbqfmwMlgfbdqj`vowvqfBowfqmbwjufqfpfbq`kfqpwltbqgp#wkfNlpw#le#wkfnbmz#lwkfq#+fpsf`jbooz?wg#tjgwk>!8tjgwk9233&jmgfsfmgfmw?k0#`obpp>!#lm`kbmdf>!*-bgg@obpp+jmwfqb`wjlmLmf#le#wkf#gbvdkwfq#leb``fpplqjfpaqbm`kfp#le\x0E\t?gju#jg>!wkf#obqdfpwgf`obqbwjlmqfdvobwjlmpJmelqnbwjlmwqbmpobwjlmgl`vnfmwbqzjm#lqgfq#wl!=\t?kfbg=\t?!#kfjdkw>!2b`qlpp#wkf#lqjfmwbwjlm*8?,p`qjsw=jnsofnfmwfg`bm#af#pffmwkfqf#tbp#bgfnlmpwqbwf`lmwbjmfq!=`lmmf`wjlmpwkf#Aqjwjpktbp#tqjwwfm\"jnslqwbmw8s{8#nbqdjm.elooltfg#azbajojwz#wl#`lnsoj`bwfggvqjmd#wkf#jnnjdqbwjlmbopl#`boofg?k7#`obpp>!gjpwjm`wjlmqfsob`fg#azdlufqmnfmwpol`bwjlm#lejm#Mlufnafqtkfwkfq#wkf?,s=\t?,gju=b`rvjpjwjlm`boofg#wkf#sfqpf`vwjlmgfpjdmbwjlmxelmw.pjyf9bssfbqfg#jmjmufpwjdbwff{sfqjfm`fgnlpw#ojhfoztjgfoz#vpfggjp`vppjlmpsqfpfm`f#le#+gl`vnfmw-f{wfmpjufozJw#kbp#affmjw#glfp#mlw`lmwqbqz#wljmkbajwbmwpjnsqlufnfmwp`klobqpkjs`lmpvnswjlmjmpwqv`wjlmelq#f{bnsoflmf#lq#nlqfs{8#sbggjmdwkf#`vqqfmwb#pfqjfp#lebqf#vpvboozqlof#jm#wkfsqfujlvpoz#gfqjubwjufpfujgfm`f#lef{sfqjfm`fp`lolqp`kfnfpwbwfg#wkbw`fqwjej`bwf?,b=?,gju=\t#pfof`wfg>!kjdk#p`klloqfpslmpf#wl`lnelqwbaofbglswjlm#lewkqff#zfbqpwkf#`lvmwqzjm#Efaqvbqzpl#wkbw#wkfsflsof#tkl#sqlujgfg#az?sbqbn#mbnfbeef`wfg#azjm#wfqnp#lebssljmwnfmwJPL.;;6:.2!tbp#alqm#jmkjpwlqj`bo#qfdbqgfg#bpnfbpvqfnfmwjp#abpfg#lm#bmg#lwkfq#9#evm`wjlm+pjdmjej`bmw`fofaqbwjlmwqbmpnjwwfg,ip,irvfqz-jp#hmltm#bpwkflqfwj`bo#wbajmgf{>!jw#`lvog#af?mlp`qjsw=\tkbujmd#affm\x0E\t?kfbg=\x0E\t?#%rvlw8Wkf#`lnsjobwjlmkf#kbg#affmsqlgv`fg#azskjolplskfq`lmpwqv`wfgjmwfmgfg#wlbnlmd#lwkfq`lnsbqfg#wlwl#pbz#wkbwFmdjmffqjmdb#gjeefqfmwqfefqqfg#wlgjeefqfm`fpafojfe#wkbwsklwldqbskpjgfmwjezjmdKjpwlqz#le#Qfsvaoj`#lemf`fppbqjozsqlabajojwzwf`kmj`boozofbujmd#wkfpsf`wb`vobqeqb`wjlm#lefof`wqj`jwzkfbg#le#wkfqfpwbvqbmwpsbqwmfqpkjsfnskbpjp#lmnlpw#qf`fmwpkbqf#tjwk#pbzjmd#wkbwejoofg#tjwkgfpjdmfg#wljw#jp#lewfm!=?,jeqbnf=bp#elooltp9nfqdfg#tjwkwkqlvdk#wkf`lnnfq`jbo#sljmwfg#lvwlsslqwvmjwzujft#le#wkfqfrvjqfnfmwgjujpjlm#lesqldqbnnjmdkf#qf`fjufgpfwJmwfqubo!=?,psbm=?,jm#Mft#Zlqhbggjwjlmbo#`lnsqfppjlm\t\t?gju#jg>!jm`lqslqbwf8?,p`qjsw=?bwwb`kFufmwaf`bnf#wkf#!#wbqdfw>!\\`bqqjfg#lvwPlnf#le#wkfp`jfm`f#bmgwkf#wjnf#le@lmwbjmfq!=nbjmwbjmjmd@kqjpwlskfqNv`k#le#wkftqjwjmdp#le!#kfjdkw>!1pjyf#le#wkfufqpjlm#le#nj{wvqf#le#afwtffm#wkfF{bnsofp#lefgv`bwjlmbo`lnsfwjwjuf#lmpvanjw>!gjqf`wlq#legjpwjm`wjuf,GWG#[KWNO#qfobwjmd#wlwfmgfm`z#wlsqlujm`f#letkj`k#tlvoggfpsjwf#wkfp`jfmwjej`#ofdjpobwvqf-jmmfqKWNO#boofdbwjlmpBdqj`vowvqftbp#vpfg#jmbssqlb`k#wljmwfoojdfmwzfbqp#obwfq/pbmp.pfqjegfwfqnjmjmdSfqelqnbm`fbssfbqbm`fp/#tkj`k#jp#elvmgbwjlmpbaaqfujbwfgkjdkfq#wkbmp#eqln#wkf#jmgjujgvbo#`lnslpfg#lepvsslpfg#wl`objnp#wkbwbwwqjavwjlmelmw.pjyf92fofnfmwp#leKjpwlqj`bo#kjp#aqlwkfqbw#wkf#wjnfbmmjufqpbqzdlufqmfg#azqfobwfg#wl#vowjnbwfoz#jmmlubwjlmpjw#jp#pwjoo`bm#lmoz#afgfejmjwjlmpwlDNWPwqjmdB#mvnafq#lejnd#`obpp>!Fufmwvbooz/tbp#`kbmdfgl``vqqfg#jmmfjdkalqjmdgjpwjmdvjpktkfm#kf#tbpjmwqlgv`jmdwfqqfpwqjboNbmz#le#wkfbqdvfp#wkbwbm#Bnfqj`bm`lmrvfpw#letjgfpsqfbg#tfqf#hjoofgp`qffm#bmg#Jm#lqgfq#wlf{sf`wfg#wlgfp`fmgbmwpbqf#ol`bwfgofdjpobwjufdfmfqbwjlmp#ab`hdqlvmgnlpw#sflsofzfbqp#bewfqwkfqf#jp#mlwkf#kjdkfpweqfrvfmwoz#wkfz#gl#mlwbqdvfg#wkbwpkltfg#wkbwsqfglnjmbmwwkfloldj`boaz#wkf#wjnf`lmpjgfqjmdpklqw.ojufg?,psbm=?,b=`bm#af#vpfgufqz#ojwwoflmf#le#wkf#kbg#boqfbgzjmwfqsqfwfg`lnnvmj`bwfefbwvqfp#ledlufqmnfmw/?,mlp`qjsw=fmwfqfg#wkf!#kfjdkw>!0Jmgfsfmgfmwslsvobwjlmpobqdf.p`bof-#Bowklvdk#vpfg#jm#wkfgfpwqv`wjlmslppjajojwzpwbqwjmd#jmwtl#lq#nlqff{sqfppjlmppvalqgjmbwfobqdfq#wkbmkjpwlqz#bmg?,lswjlm=\x0E\t@lmwjmfmwbofojnjmbwjmdtjoo#mlw#afsqb`wj`f#lejm#eqlmw#lepjwf#le#wkffmpvqf#wkbwwl#`qfbwf#bnjppjppjssjslwfmwjboozlvwpwbmgjmdafwwfq#wkbmtkbw#jp#mltpjwvbwfg#jmnfwb#mbnf>!WqbgjwjlmbopvddfpwjlmpWqbmpobwjlmwkf#elqn#lebwnlpskfqj`jgfloldj`bofmwfqsqjpfp`bo`vobwjmdfbpw#le#wkfqfnmbmwp#lesovdjmpsbdf,jmgf{-sks<qfnbjmfg#jmwqbmpelqnfgKf#tbp#bopltbp#boqfbgzpwbwjpwj`bojm#ebulq#leNjmjpwqz#lenlufnfmw#leelqnvobwjlmjp#qfrvjqfg?ojmh#qfo>!Wkjp#jp#wkf#?b#kqfe>!,slsvobqjyfgjmuloufg#jmbqf#vpfg#wlbmg#pfufqbonbgf#az#wkfpffnp#wl#afojhfoz#wkbwSbofpwjmjbmmbnfg#bewfqjw#kbg#affmnlpw#`lnnlmwl#qfefq#wlavw#wkjp#jp`lmpf`vwjufwfnslqbqjozJm#dfmfqbo/`lmufmwjlmpwbhfp#sob`fpvagjujpjlmwfqqjwlqjbolsfqbwjlmbosfqnbmfmwoztbp#obqdfozlvwaqfbh#lejm#wkf#sbpwelooltjmd#b#{nomp9ld>!=?b#`obpp>!`obpp>!wf{w@lmufqpjlm#nbz#af#vpfgnbmveb`wvqfbewfq#afjmd`ofbqej{!=\trvfpwjlm#letbp#fof`wfgwl#af`lnf#baf`bvpf#le#plnf#sflsofjmpsjqfg#azpv``fppevo#b#wjnf#tkfmnlqf#`lnnlmbnlmdpw#wkfbm#leej`jbotjgwk9233&8wf`kmloldz/tbp#bglswfgwl#hffs#wkfpfwwofnfmwpojuf#ajqwkpjmgf{-kwno!@lmmf`wj`vwbppjdmfg#wl%bns8wjnfp8b``lvmw#elqbojdm>qjdkwwkf#`lnsbmzbotbzp#affmqfwvqmfg#wljmuloufnfmwAf`bvpf#wkfwkjp#sfqjlg!#mbnf>!r!#`lmejmfg#wlb#qfpvow#leubovf>!!#,=jp#b`wvboozFmujqlmnfmw\x0E\t?,kfbg=\x0E\t@lmufqpfoz/=\t?gju#jg>!3!#tjgwk>!2jp#sqlabaozkbuf#af`lnf`lmwqloojmdwkf#sqlaofn`jwjyfmp#leslojwj`jbmpqfb`kfg#wkfbp#fbqoz#bp9mlmf8#lufq?wbaof#`fooubojgjwz#legjqf`woz#wllmnlvpfgltmtkfqf#jw#jptkfm#jw#tbpnfnafqp#le#qfobwjlm#wlb``lnnlgbwfbolmd#tjwk#Jm#wkf#obwfwkf#Fmdojpkgfoj`jlvp!=wkjp#jp#mlwwkf#sqfpfmwje#wkfz#bqfbmg#ejmboozb#nbwwfq#le\x0E\t\n?,gju=\x0E\t\x0E\t?,p`qjsw=ebpwfq#wkbmnbilqjwz#lebewfq#tkj`k`lnsbqbwjufwl#nbjmwbjmjnsqluf#wkfbtbqgfg#wkffq!#`obpp>!eqbnfalqgfqqfpwlqbwjlmjm#wkf#pbnfbmbozpjp#lewkfjq#ejqpwGvqjmd#wkf#`lmwjmfmwbopfrvfm`f#leevm`wjlm+*xelmw.pjyf9#tlqh#lm#wkf?,p`qjsw=\t?afdjmp#tjwkibubp`qjsw9`lmpwjwvfmwtbp#elvmgfgfrvjojaqjvnbppvnf#wkbwjp#djufm#azmffgp#wl#af`llqgjmbwfpwkf#ubqjlvpbqf#sbqw#lelmoz#jm#wkfpf`wjlmp#lejp#b#`lnnlmwkflqjfp#legjp`lufqjfpbppl`jbwjlmfgdf#le#wkfpwqfmdwk#leslpjwjlm#jmsqfpfmw.gbzvmjufqpboozwl#elqn#wkfavw#jmpwfbg`lqslqbwjlmbwwb`kfg#wljp#`lnnlmozqfbplmp#elq#%rvlw8wkf#`bm#af#nbgftbp#baof#wltkj`k#nfbmpavw#gjg#mlwlmNlvpfLufqbp#slppjaoflsfqbwfg#az`lnjmd#eqlnwkf#sqjnbqzbggjwjlm#leelq#pfufqbowqbmpefqqfgb#sfqjlg#lebqf#baof#wlkltfufq/#jwpklvog#kbufnv`k#obqdfq\t\n?,p`qjsw=bglswfg#wkfsqlsfqwz#legjqf`wfg#azfeef`wjufoztbp#aqlvdkw`kjogqfm#leSqldqbnnjmdolmdfq#wkbmnbmvp`qjswptbq#bdbjmpwaz#nfbmp#lebmg#nlpw#lepjnjobq#wl#sqlsqjfwbqzlqjdjmbwjmdsqfpwjdjlvpdqbnnbwj`bof{sfqjfm`f-wl#nbhf#wkfJw#tbp#bopljp#elvmg#jm`lnsfwjwlqpjm#wkf#V-P-qfsob`f#wkfaqlvdkw#wkf`bo`vobwjlmeboo#le#wkfwkf#dfmfqbosqb`wj`boozjm#klmlq#leqfofbpfg#jmqfpjgfmwjbobmg#plnf#lehjmd#le#wkfqfb`wjlm#wl2pw#Fbqo#le`vowvqf#bmgsqjm`jsbooz?,wjwof=\t##wkfz#`bm#afab`h#wl#wkfplnf#le#kjpf{slpvqf#wlbqf#pjnjobqelqn#le#wkfbggEbulqjwf`jwjyfmpkjssbqw#jm#wkfsflsof#tjwkjm#sqb`wj`fwl#`lmwjmvf%bns8njmvp8bssqlufg#az#wkf#ejqpw#booltfg#wkfbmg#elq#wkfevm`wjlmjmdsobzjmd#wkfplovwjlm#wlkfjdkw>!3!#jm#kjp#allhnlqf#wkbm#belooltp#wkf`qfbwfg#wkfsqfpfm`f#jm%maps8?,wg=mbwjlmbojpwwkf#jgfb#leb#`kbqb`wfqtfqf#elq`fg#`obpp>!awmgbzp#le#wkfefbwvqfg#jmpkltjmd#wkfjmwfqfpw#jmjm#sob`f#lewvqm#le#wkfwkf#kfbg#leOlqg#le#wkfslojwj`boozkbp#jwp#ltmFgv`bwjlmbobssqlubo#leplnf#le#wkffb`k#lwkfq/afkbujlq#lebmg#af`bvpfbmg#bmlwkfqbssfbqfg#lmqf`lqgfg#jmaob`h%rvlw8nbz#jm`ovgfwkf#tlqog$p`bm#ofbg#wlqfefqp#wl#balqgfq>!3!#dlufqmnfmw#tjmmjmd#wkfqfpvowfg#jm#tkjof#wkf#Tbpkjmdwlm/wkf#pvaif`w`jwz#jm#wkf=?,gju=\x0E\t\n\nqfeof`w#wkfwl#`lnsofwfaf`bnf#nlqfqbgjlb`wjufqfif`wfg#aztjwklvw#bmzkjp#ebwkfq/tkj`k#`lvog`lsz#le#wkfwl#jmgj`bwfb#slojwj`bob``lvmwp#le`lmpwjwvwfptlqhfg#tjwkfq?,b=?,oj=le#kjp#ojefb``lnsbmjfg`ojfmwTjgwksqfufmw#wkfOfdjpobwjufgjeefqfmwozwldfwkfq#jmkbp#pfufqboelq#bmlwkfqwf{w#le#wkfelvmgfg#wkff#tjwk#wkf#jp#vpfg#elq`kbmdfg#wkfvpvbooz#wkfsob`f#tkfqftkfqfbp#wkf=#?b#kqfe>!!=?b#kqfe>!wkfnpfoufp/bowklvdk#kfwkbw#`bm#afwqbgjwjlmboqlof#le#wkfbp#b#qfpvowqfnluf@kjoggfpjdmfg#aztfpw#le#wkfPlnf#sflsofsqlgv`wjlm/pjgf#le#wkfmftpofwwfqpvpfg#az#wkfgltm#wl#wkfb``fswfg#azojuf#jm#wkfbwwfnswp#wllvwpjgf#wkfeqfrvfm`jfpKltfufq/#jmsqldqbnnfqpbw#ofbpw#jmbssql{jnbwfbowklvdk#jwtbp#sbqw#lebmg#ubqjlvpDlufqmlq#lewkf#bqwj`ofwvqmfg#jmwl=?b#kqfe>!,wkf#f`lmlnzjp#wkf#nlpwnlpw#tjgfoztlvog#obwfqbmg#sfqkbspqjpf#wl#wkfl``vqp#tkfmvmgfq#tkj`k`lmgjwjlmp-wkf#tfpwfqmwkflqz#wkbwjp#sqlgv`fgwkf#`jwz#lejm#tkj`k#kfpffm#jm#wkfwkf#`fmwqboavjogjmd#lenbmz#le#kjpbqfb#le#wkfjp#wkf#lmoznlpw#le#wkfnbmz#le#wkfwkf#TfpwfqmWkfqf#jp#mlf{wfmgfg#wlPwbwjpwj`bo`lopsbm>1#\x7Fpklqw#pwlqzslppjaof#wlwlsloldj`bo`qjwj`bo#leqfslqwfg#wlb#@kqjpwjbmgf`jpjlm#wljp#frvbo#wlsqlaofnp#leWkjp#`bm#afnfq`kbmgjpfelq#nlpw#leml#fujgfm`ffgjwjlmp#lefofnfmwp#jm%rvlw8-#Wkf`ln,jnbdfp,tkj`k#nbhfpwkf#sql`fppqfnbjmp#wkfojwfqbwvqf/jp#b#nfnafqwkf#slsvobqwkf#bm`jfmwsqlaofnp#jmwjnf#le#wkfgfefbwfg#azalgz#le#wkfb#eft#zfbqpnv`k#le#wkfwkf#tlqh#le@bojelqmjb/pfqufg#bp#bdlufqmnfmw-`lm`fswp#lenlufnfmw#jm\n\n?gju#jg>!jw!#ubovf>!obmdvbdf#lebp#wkfz#bqfsqlgv`fg#jmjp#wkbw#wkff{sobjm#wkfgju=?,gju=\tKltfufq#wkfofbg#wl#wkf\n?b#kqfe>!,tbp#dqbmwfgsflsof#kbuf`lmwjmvbooztbp#pffm#bpbmg#qfobwfgwkf#qlof#lesqlslpfg#azle#wkf#afpwfb`k#lwkfq-@lmpwbmwjmfsflsof#eqlngjbof`wp#lewl#qfujpjlmtbp#qfmbnfgb#plvq`f#lewkf#jmjwjboobvm`kfg#jmsqlujgf#wkfwl#wkf#tfpwtkfqf#wkfqfbmg#pjnjobqafwtffm#wtljp#bopl#wkfFmdojpk#bmg`lmgjwjlmp/wkbw#jw#tbpfmwjwofg#wlwkfnpfoufp-rvbmwjwz#leqbmpsbqfm`zwkf#pbnf#bpwl#iljm#wkf`lvmwqz#bmgwkjp#jp#wkfWkjp#ofg#wlb#pwbwfnfmw`lmwqbpw#wlobpwJmgf{Lewkqlvdk#kjpjp#gfpjdmfgwkf#wfqn#jpjp#sqlujgfgsqlwf`w#wkfmd?,b=?,oj=Wkf#`vqqfmwwkf#pjwf#lepvapwbmwjbof{sfqjfm`f/jm#wkf#Tfpwwkfz#pklvogpolufm(ajmb`lnfmwbqjlpvmjufqpjgbg`lmgj`jlmfpb`wjujgbgfpf{sfqjfm`jbwf`mlold/Absqlgv``j/_msvmwvb`j/_mbsoj`b`j/_m`lmwqbpf/]b`bwfdlq/Abpqfdjpwqbqpfsqlefpjlmbowqbwbnjfmwlqfd/Apwqbwfpf`qfwbq/Absqjm`jsbofpsqlwf``j/_mjnslqwbmwfpjnslqwbm`jbslpjajojgbgjmwfqfpbmwf`qf`jnjfmwlmf`fpjgbgfppvp`qjajqpfbpl`jb`j/_mgjpslmjaofpfubovb`j/_mfpwvgjbmwfpqfpslmpbaofqfplov`j/_mdvbgbobibqbqfdjpwqbglplslqwvmjgbg`lnfq`jbofpelwldqbe/Abbvwlqjgbgfpjmdfmjfq/Abwfofujpj/_m`lnsfwfm`jblsfqb`jlmfpfpwbaof`jglpjnsofnfmwfb`wvbonfmwfmbufdb`j/_m`lmelqnjgbgojmf.kfjdkw9elmw.ebnjoz9!#9#!kwws9,,bssoj`bwjlmpojmh!#kqfe>!psf`jej`booz,,?\"X@GBWBX\tLqdbmjybwjlmgjpwqjavwjlm3s{8#kfjdkw9qfobwjlmpkjsgfuj`f.tjgwk?gju#`obpp>!?obafo#elq>!qfdjpwqbwjlm?,mlp`qjsw=\t,jmgf{-kwno!tjmglt-lsfm+#\"jnslqwbmw8bssoj`bwjlm,jmgfsfmgfm`f,,ttt-dlldoflqdbmjybwjlmbvwl`lnsofwfqfrvjqfnfmwp`lmpfqubwjuf?elqn#mbnf>!jmwfoof`wvbonbqdjm.ofew92;wk#`fmwvqzbm#jnslqwbmwjmpwjwvwjlmpbaaqfujbwjlm?jnd#`obpp>!lqdbmjpbwjlm`jujojybwjlm2:wk#`fmwvqzbq`kjwf`wvqfjm`lqslqbwfg13wk#`fmwvqz.`lmwbjmfq!=nlpw#mlwbaoz,=?,b=?,gju=mlwjej`bwjlm$vmgfejmfg$*Evqwkfqnlqf/afojfuf#wkbwjmmfqKWNO#>#sqjlq#wl#wkfgqbnbwj`boozqfefqqjmd#wlmfdlwjbwjlmpkfbgrvbqwfqpPlvwk#Beqj`bvmpv``fppevoSfmmpzoubmjbBp#b#qfpvow/?kwno#obmd>!%ow8,pvs%dw8gfbojmd#tjwkskjobgfoskjbkjpwlqj`booz*8?,p`qjsw=\tsbggjmd.wls9f{sfqjnfmwbodfwBwwqjavwfjmpwqv`wjlmpwf`kmloldjfpsbqw#le#wkf#>evm`wjlm+*xpvap`qjswjlmo-gwg!=\x0E\t?kwdfldqbskj`bo@lmpwjwvwjlm$/#evm`wjlm+pvsslqwfg#azbdqj`vowvqbo`lmpwqv`wjlmsvaoj`bwjlmpelmw.pjyf9#2b#ubqjfwz#le?gju#pwzof>!Fm`z`olsfgjbjeqbnf#pq`>!gfnlmpwqbwfgb``lnsojpkfgvmjufqpjwjfpGfnldqbskj`p*8?,p`qjsw=?gfgj`bwfg#wlhmltofgdf#lepbwjpeb`wjlmsbqwj`vobqoz?,gju=?,gju=Fmdojpk#+VP*bssfmg@kjog+wqbmpnjppjlmp-#Kltfufq/#jmwfoojdfm`f!#wbajmgf{>!eolbw9qjdkw8@lnnlmtfbowkqbmdjmd#eqlnjm#tkj`k#wkfbw#ofbpw#lmfqfsqlgv`wjlmfm`z`olsfgjb8elmw.pjyf92ivqjpgj`wjlmbw#wkbw#wjnf!=?b#`obpp>!Jm#bggjwjlm/gfp`qjswjlm(`lmufqpbwjlm`lmwb`w#tjwkjp#dfmfqboozq!#`lmwfmw>!qfsqfpfmwjmd%ow8nbwk%dw8sqfpfmwbwjlml``bpjlmbooz?jnd#tjgwk>!mbujdbwjlm!=`lnsfmpbwjlm`kbnsjlmpkjsnfgjb>!boo!#ujlobwjlm#leqfefqfm`f#wlqfwvqm#wqvf8Pwqj`w,,FM!#wqbmpb`wjlmpjmwfqufmwjlmufqjej`bwjlmJmelqnbwjlm#gjeej`vowjfp@kbnsjlmpkjs`bsbajojwjfp?\"Xfmgje^..=~\t?,p`qjsw=\t@kqjpwjbmjwzelq#f{bnsof/Sqlefppjlmboqfpwqj`wjlmppvddfpw#wkbwtbp#qfofbpfg+pv`k#bp#wkfqfnluf@obpp+vmfnsolznfmwwkf#Bnfqj`bmpwqv`wvqf#le,jmgf{-kwno#svaojpkfg#jmpsbm#`obpp>!!=?b#kqfe>!,jmwqlgv`wjlmafolmdjmd#wl`objnfg#wkbw`lmpfrvfm`fp?nfwb#mbnf>!Dvjgf#wl#wkflufqtkfonjmdbdbjmpw#wkf#`lm`fmwqbwfg/\t-mlmwlv`k#lapfqubwjlmp?,b=\t?,gju=\te#+gl`vnfmw-alqgfq9#2s{#xelmw.pjyf92wqfbwnfmw#le3!#kfjdkw>!2nlgjej`bwjlmJmgfsfmgfm`fgjujgfg#jmwldqfbwfq#wkbmb`kjfufnfmwpfpwbaojpkjmdIbubP`qjsw!#mfufqwkfofpppjdmjej`bm`fAqlbg`bpwjmd=%maps8?,wg=`lmwbjmfq!=\tpv`k#bp#wkf#jmeovfm`f#leb#sbqwj`vobqpq`>$kwws9,,mbujdbwjlm!#kboe#le#wkf#pvapwbmwjbo#%maps8?,gju=bgubmwbdf#legjp`lufqz#leevmgbnfmwbo#nfwqlslojwbmwkf#lsslpjwf!#{no9obmd>!gfojafqbwfozbojdm>`fmwfqfulovwjlm#lesqfpfqubwjlmjnsqlufnfmwpafdjmmjmd#jmIfpvp#@kqjpwSvaoj`bwjlmpgjpbdqffnfmwwf{w.bojdm9q/#evm`wjlm+*pjnjobqjwjfpalgz=?,kwno=jp#`vqqfmwozboskbafwj`bojp#plnfwjnfpwzsf>!jnbdf,nbmz#le#wkf#eolt9kjggfm8bubjobaof#jmgfp`qjaf#wkff{jpwfm`f#leboo#lufq#wkfwkf#Jmwfqmfw\n?vo#`obpp>!jmpwboobwjlmmfjdkalqkllgbqnfg#elq`fpqfgv`jmd#wkf`lmwjmvfp#wlMlmfwkfofpp/wfnsfqbwvqfp\t\n\n?b#kqfe>!`olpf#wl#wkff{bnsofp#le#jp#balvw#wkf+pff#afolt*-!#jg>!pfbq`ksqlefppjlmbojp#bubjobaofwkf#leej`jbo\n\n?,p`qjsw=\t\t\n\n?gju#jg>!b``fofqbwjlmwkqlvdk#wkf#Kboo#le#Ebnfgfp`qjswjlmpwqbmpobwjlmpjmwfqefqfm`f#wzsf>$wf{w,qf`fmw#zfbqpjm#wkf#tlqogufqz#slsvobqxab`hdqlvmg9wqbgjwjlmbo#plnf#le#wkf#`lmmf`wfg#wlf{soljwbwjlmfnfqdfm`f#le`lmpwjwvwjlmB#Kjpwlqz#lepjdmjej`bmw#nbmveb`wvqfgf{sf`wbwjlmp=?mlp`qjsw=?`bm#af#elvmgaf`bvpf#wkf#kbp#mlw#affmmfjdkalvqjmdtjwklvw#wkf#bggfg#wl#wkf\n?oj#`obpp>!jmpwqvnfmwboPlujfw#Vmjlmb`hmltofgdfgtkj`k#`bm#afmbnf#elq#wkfbwwfmwjlm#wlbwwfnswp#wl#gfufolsnfmwpJm#eb`w/#wkf?oj#`obpp>!bjnsoj`bwjlmppvjwbaof#elqnv`k#le#wkf#`lolmjybwjlmsqfpjgfmwjbo`bm`foAvaaof#Jmelqnbwjlmnlpw#le#wkf#jp#gfp`qjafgqfpw#le#wkf#nlqf#lq#ofppjm#PfswfnafqJmwfoojdfm`fpq`>!kwws9,,s{8#kfjdkw9#bubjobaof#wlnbmveb`wvqfqkvnbm#qjdkwpojmh#kqfe>!,bubjobajojwzsqlslqwjlmbolvwpjgf#wkf#bpwqlmlnj`bokvnbm#afjmdpmbnf#le#wkf#bqf#elvmg#jmbqf#abpfg#lmpnboofq#wkbmb#sfqplm#tklf{sbmpjlm#lebqdvjmd#wkbwmlt#hmltm#bpJm#wkf#fbqozjmwfqnfgjbwfgfqjufg#eqlnP`bmgjmbujbm?,b=?,gju=\x0E\t`lmpjgfq#wkfbm#fpwjnbwfgwkf#Mbwjlmbo?gju#jg>!sbdqfpvowjmd#jm`lnnjppjlmfgbmboldlvp#wlbqf#qfrvjqfg,vo=\t?,gju=\ttbp#abpfg#lmbmg#af`bnf#b%maps8%maps8w!#ubovf>!!#tbp#`bswvqfgml#nlqf#wkbmqfpsf`wjufoz`lmwjmvf#wl#=\x0E\t?kfbg=\x0E\t?tfqf#`qfbwfgnlqf#dfmfqbojmelqnbwjlm#vpfg#elq#wkfjmgfsfmgfmw#wkf#Jnsfqjbo`lnslmfmw#lewl#wkf#mlqwkjm`ovgf#wkf#@lmpwqv`wjlmpjgf#le#wkf#tlvog#mlw#afelq#jmpwbm`fjmufmwjlm#lenlqf#`lnsof{`loof`wjufozab`hdqlvmg9#wf{w.bojdm9#jwp#lqjdjmbojmwl#b``lvmwwkjp#sql`fppbm#f{wfmpjufkltfufq/#wkfwkfz#bqf#mlwqfif`wfg#wkf`qjwj`jpn#legvqjmd#tkj`ksqlabaoz#wkfwkjp#bqwj`of+evm`wjlm+*xJw#pklvog#afbm#bdqffnfmwb``jgfmwboozgjeefqp#eqlnBq`kjwf`wvqfafwwfq#hmltmbqqbmdfnfmwpjmeovfm`f#lmbwwfmgfg#wkfjgfmwj`bo#wlplvwk#le#wkfsbpp#wkqlvdk{no!#wjwof>!tfjdkw9alog8`qfbwjmd#wkfgjpsobz9mlmfqfsob`fg#wkf?jnd#pq`>!,jkwwsp9,,ttt-Tlqog#Tbq#JJwfpwjnlmjbopelvmg#jm#wkfqfrvjqfg#wl#bmg#wkbw#wkfafwtffm#wkf#tbp#gfpjdmfg`lmpjpwp#le#`lmpjgfqbaozsvaojpkfg#azwkf#obmdvbdf@lmpfqubwjlm`lmpjpwfg#leqfefq#wl#wkfab`h#wl#wkf#`pp!#nfgjb>!Sflsof#eqln#bubjobaof#lmsqlufg#wl#afpvddfpwjlmp!tbp#hmltm#bpubqjfwjfp#leojhfoz#wl#af`lnsqjpfg#lepvsslqw#wkf#kbmgp#le#wkf`lvsofg#tjwk`lmmf`w#bmg#alqgfq9mlmf8sfqelqnbm`fpafelqf#afjmdobwfq#af`bnf`bo`vobwjlmplewfm#`boofgqfpjgfmwp#lenfbmjmd#wkbw=?oj#`obpp>!fujgfm`f#elqf{sobmbwjlmpfmujqlmnfmwp!=?,b=?,gju=tkj`k#booltpJmwqlgv`wjlmgfufolsfg#azb#tjgf#qbmdflm#afkboe#leubojdm>!wls!sqjm`jsof#lebw#wkf#wjnf/?,mlp`qjsw=\x0Epbjg#wl#kbufjm#wkf#ejqpwtkjof#lwkfqpkzslwkfwj`boskjolplskfqpsltfq#le#wkf`lmwbjmfg#jmsfqelqnfg#azjmbajojwz#wltfqf#tqjwwfmpsbm#pwzof>!jmsvw#mbnf>!wkf#rvfpwjlmjmwfmgfg#elqqfif`wjlm#lejnsojfp#wkbwjmufmwfg#wkfwkf#pwbmgbqgtbp#sqlabaozojmh#afwtffmsqlefpplq#lejmwfqb`wjlmp`kbmdjmd#wkfJmgjbm#L`fbm#`obpp>!obpwtlqhjmd#tjwk$kwws9,,ttt-zfbqp#afelqfWkjp#tbp#wkfqf`qfbwjlmbofmwfqjmd#wkfnfbpvqfnfmwpbm#f{wqfnfozubovf#le#wkfpwbqw#le#wkf\t?,p`qjsw=\t\tbm#feelqw#wljm`qfbpf#wkfwl#wkf#plvwkpsb`jmd>!3!=pveej`jfmwozwkf#Fvqlsfbm`lmufqwfg#wl`ofbqWjnflvwgjg#mlw#kbuf`lmpfrvfmwozelq#wkf#mf{wf{wfmpjlm#lef`lmlnj`#bmgbowklvdk#wkfbqf#sqlgv`fgbmg#tjwk#wkfjmpveej`jfmwdjufm#az#wkfpwbwjmd#wkbwf{sfmgjwvqfp?,psbm=?,b=\twklvdkw#wkbwlm#wkf#abpjp`foosbggjmd>jnbdf#le#wkfqfwvqmjmd#wljmelqnbwjlm/pfsbqbwfg#azbppbppjmbwfgp!#`lmwfmw>!bvwklqjwz#lemlqwktfpwfqm?,gju=\t?gju#!=?,gju=\x0E\t##`lmpvowbwjlm`lnnvmjwz#lewkf#mbwjlmbojw#pklvog#afsbqwj`jsbmwp#bojdm>!ofewwkf#dqfbwfpwpfof`wjlm#lepvsfqmbwvqbogfsfmgfmw#lmjp#nfmwjlmfgbooltjmd#wkftbp#jmufmwfgb``lnsbmzjmdkjp#sfqplmbobubjobaof#bwpwvgz#le#wkflm#wkf#lwkfqf{f`vwjlm#leKvnbm#Qjdkwpwfqnp#le#wkfbppl`jbwjlmpqfpfbq`k#bmgpv``ffgfg#azgfefbwfg#wkfbmg#eqln#wkfavw#wkfz#bqf`lnnbmgfq#lepwbwf#le#wkfzfbqp#le#bdfwkf#pwvgz#le?vo#`obpp>!psob`f#jm#wkftkfqf#kf#tbp?oj#`obpp>!ewkfqf#bqf#mltkj`k#af`bnfkf#svaojpkfgf{sqfppfg#jmwl#tkj`k#wkf`lnnjppjlmfqelmw.tfjdkw9wfqqjwlqz#lef{wfmpjlmp!=Qlnbm#Fnsjqffrvbo#wl#wkfJm#`lmwqbpw/kltfufq/#bmgjp#wzsj`boozbmg#kjp#tjef+bopl#`boofg=?vo#`obpp>!feef`wjufoz#fuloufg#jmwlpffn#wl#kbuftkj`k#jp#wkfwkfqf#tbp#mlbm#f{`foofmwboo#le#wkfpfgfp`qjafg#azJm#sqb`wj`f/aqlbg`bpwjmd`kbqdfg#tjwkqfeof`wfg#jmpvaif`wfg#wlnjojwbqz#bmgwl#wkf#sljmwf`lmlnj`boozpfwWbqdfwjmdbqf#b`wvboozuj`wlqz#lufq+*8?,p`qjsw=`lmwjmvlvpozqfrvjqfg#elqfulovwjlmbqzbm#feef`wjufmlqwk#le#wkf/#tkj`k#tbp#eqlmw#le#wkflq#lwkfqtjpfplnf#elqn#lekbg#mlw#affmdfmfqbwfg#azjmelqnbwjlm-sfqnjwwfg#wljm`ovgfp#wkfgfufolsnfmw/fmwfqfg#jmwlwkf#sqfujlvp`lmpjpwfmwozbqf#hmltm#bpwkf#ejfog#lewkjp#wzsf#ledjufm#wl#wkfwkf#wjwof#le`lmwbjmp#wkfjmpwbm`fp#lejm#wkf#mlqwkgvf#wl#wkfjqbqf#gfpjdmfg`lqslqbwjlmptbp#wkbw#wkflmf#le#wkfpfnlqf#slsvobqpv``ffgfg#jmpvsslqw#eqlnjm#gjeefqfmwglnjmbwfg#azgfpjdmfg#elqltmfqpkjs#lebmg#slppjaozpwbmgbqgjyfgqfpslmpfWf{wtbp#jmwfmgfgqf`fjufg#wkfbppvnfg#wkbwbqfbp#le#wkfsqjnbqjoz#jmwkf#abpjp#lejm#wkf#pfmpfb``lvmwp#elqgfpwqlzfg#azbw#ofbpw#wtltbp#gf`obqfg`lvog#mlw#afPf`qfwbqz#lebssfbq#wl#afnbqdjm.wls92,]_p(\x7F_p(',df*xwkqlt#f~8wkf#pwbqw#lewtl#pfsbqbwfobmdvbdf#bmgtkl#kbg#affmlsfqbwjlm#legfbwk#le#wkfqfbo#mvnafqp\n?ojmh#qfo>!sqlujgfg#wkfwkf#pwlqz#le`lnsfwjwjlmpfmdojpk#+VH*fmdojpk#+VP*<p<R<Q<_<R<W<M=l<S=m<V<T=m=l<S=m<V<T=m=l<S=m<V<R5h4U4]4D5f4E\nAO\x05Gx\bTA\nzk\x0BBl\bQ\x7F\bTA\nzk\x0BUm\bQ\x7F\bTA\nzk\npe\x05u|\ti@\tcT\bVV\n\\}\nxS\tVp\x05tS\x05k`\t[X\t[X\x0BHR\bPv\bTW\bUe\n\x7Fa\bQp\x0B_W\x0BWs\nxS\x0BAz\n_y\x04Khjmelqnb`j/_mkfqqbnjfmwbpfof`wq/_mj`lgfp`qjs`j/_m`obpjej`bglp`lml`jnjfmwlsvaoj`b`j/_mqfob`jlmbgbpjmelqn/Mwj`bqfob`jlmbglpgfsbqwbnfmwlwqbabibglqfpgjqf`wbnfmwfbzvmwbnjfmwlnfq`bglOjaqf`lmw/M`wfmlpkbajwb`jlmfp`vnsojnjfmwlqfpwbvqbmwfpgjpslpj`j/_m`lmpf`vfm`jbfof`wq/_mj`bbsoj`b`jlmfpgfp`lmf`wbgljmpwbob`j/_mqfbojyb`j/_mvwjojyb`j/_mfm`j`olsfgjbfmefqnfgbgfpjmpwqvnfmwlpf{sfqjfm`jbpjmpwjwv`j/_msbqwj`vobqfppva`bwfdlqjb=n<R<W=`<V<R<L<R=m=m<T<T=l<\\<]<R=n=g<]<R<W=`=d<Y<S=l<R=m=n<R<P<R<Z<Y=n<Y<X=l=o<_<T=i=m<W=o=k<\\<Y=m<Y<U=k<\\=m<^=m<Y<_<X<\\<L<R=m=m<T=c<p<R=m<V<^<Y<X=l=o<_<T<Y<_<R=l<R<X<\\<^<R<S=l<R=m<X<\\<Q<Q=g=i<X<R<W<Z<Q=g<T<P<Y<Q<Q<R<p<R=m<V<^=g=l=o<]<W<Y<U<p<R=m<V<^<\\=m=n=l<\\<Q=g<Q<T=k<Y<_<R=l<\\<]<R=n<Y<X<R<W<Z<Y<Q=o=m<W=o<_<T=n<Y<S<Y=l=`<r<X<Q<\\<V<R<S<R=n<R<P=o=l<\\<]<R=n=o<\\<S=l<Y<W=c<^<R<R<]=e<Y<R<X<Q<R<_<R=m<^<R<Y<_<R=m=n<\\=n=`<T<X=l=o<_<R<U=h<R=l=o<P<Y=i<R=l<R=d<R<S=l<R=n<T<^=m=m=g<W<V<\\<V<\\<Z<X=g<U<^<W<\\=m=n<T<_=l=o<S<S=g<^<P<Y=m=n<Y=l<\\<]<R=n<\\=m<V<\\<[<\\<W<S<Y=l<^=g<U<X<Y<W<\\=n=`<X<Y<Q=`<_<T<S<Y=l<T<R<X<]<T<[<Q<Y=m<R=m<Q<R<^<Y<P<R<P<Y<Q=n<V=o<S<T=n=`<X<R<W<Z<Q<\\=l<\\<P<V<\\=i<Q<\\=k<\\<W<R<L<\\<]<R=n<\\<N<R<W=`<V<R=m<R<^=m<Y<P<^=n<R=l<R<U<Q<\\=k<\\<W<\\=m<S<T=m<R<V=m<W=o<Z<]=g=m<T=m=n<Y<P<S<Y=k<\\=n<T<Q<R<^<R<_<R<S<R<P<R=e<T=m<\\<U=n<R<^<S<R=k<Y<P=o<S<R<P<R=e=`<X<R<W<Z<Q<R=m=m=g<W<V<T<]=g=m=n=l<R<X<\\<Q<Q=g<Y<P<Q<R<_<T<Y<S=l<R<Y<V=n<M<Y<U=k<\\=m<P<R<X<Y<W<T=n<\\<V<R<_<R<R<Q<W<\\<U<Q<_<R=l<R<X<Y<^<Y=l=m<T=c=m=n=l<\\<Q<Y=h<T<W=`<P=g=o=l<R<^<Q=c=l<\\<[<Q=g=i<T=m<V<\\=n=`<Q<Y<X<Y<W=b=c<Q<^<\\=l=c<P<Y<Q=`=d<Y<P<Q<R<_<T=i<X<\\<Q<Q<R<U<[<Q<\\=k<T=n<Q<Y<W=`<[=c=h<R=l=o<P<\\<N<Y<S<Y=l=`<P<Y=m=c=j<\\<[<\\=e<T=n=g<w=o=k=d<T<Y\fHD\fHU\fIl\fHn\fHy\fH\\\fHD\fIk\fHi\fHF\fHD\fIk\fHy\fHS\fHC\fHR\fHy\fH\\\fIk\fHn\fHi\fHD\fIa\fHC\fHy\fIa\fHC\fHR\fH{\fHR\fHk\fHM\fH@\fHR\fH\\\fIk\fHy\fHS\fHT\fIl\fHJ\fHS\fHC\fHR\fHF\fHU\fH^\fIk\fHT\fHS\fHn\fHU\fHA\fHR\fH\\\fHH\fHi\fHF\fHD\fIl\fHY\fHR\fH^\fIk\fHT\fIk\fHY\fHR\fHy\fH\\\fHH\fIk\fHB\fIk\fH\\\fIk\fHU\fIg\fHD\fIk\fHT\fHy\fHH\fIk\fH@\fHU\fIm\fHH\fHT\fHR\fHk\fHs\fHU\fIg\fH{\fHR\fHp\fHR\fHD\fIk\fHB\fHS\fHD\fHs\fHy\fH\\\fHH\fHR\fHy\fH\\\fHD\fHR\fHe\fHD\fHy\fIk\fHC\fHU\fHR\fHm\fHT\fH@\fHT\fIk\fHA\fHR\fH[\fHR\fHj\fHF\fHy\fIk\fH^\fHS\fHC\fIk\fHZ\fIm\fH\\\fIn\fHk\fHT\fHy\fIk\fHt\fHn\fHs\fIk\fHB\fIk\fH\\\fIl\fHT\fHy\fHH\fHR\fHB\fIk\fH\\\fHR\fH^\fIk\fHy\fH\\\fHi\fHK\fHS\fHy\fHi\fHF\fHD\fHR\fHT\fHB\fHR\fHp\fHB\fIm\fHq\fIk\fHy\fHR\fH\\\fHO\fHU\fIg\fHH\fHR\fHy\fHM\fHP\fIl\fHC\fHU\fHR\fHn\fHU\fIg\fHs\fH^\fHZ\fH@\fIa\fHJ\fH^\fHS\fHC\fHR\fHp\fIl\fHY\fHD\fHp\fHR\fHH\fHR\fHy\fId\fHT\fIk\fHj\fHF\fHy\fHR\fHY\fHR\fH^\fIl\fHJ\fIk\fHD\fIk\fHF\fIn\fH\\\fIl\fHF\fHR\fHD\fIl\fHe\fHT\fHy\fIk\fHU\fIg\fH{\fIl\fH@\fId\fHL\fHy\fHj\fHF\fHy\fIl\fHY\fH\\\fIa\fH[\fH{\fHR\fHn\fHY\fHj\fHF\fHy\fIg\fHp\fHS\fH^\fHR\fHp\fHR\fHD\fHR\fHT\fHU\fHB\fHH\fHU\fHB\fIk\fHn\fHe\fHD\fHy\fIl\fHC\fHR\fHU\fIn\fHJ\fH\\\fIa\fHp\fHT\fIn\fHv\fIl\fHF\fHT\fHn\fHJ\fHT\fHY\fHR\fH^\fHU\fIg\fHD\fHR\fHU\fIg\fHH\fIl\fHp\fId\fHT\fIk\fHY\fHR\fHF\fHT\fHp\fHD\fHH\fHR\fHD\fIk\fHH\fHR\fHp\fHR\fH\\\fIl\fHt\fHR\fHC\fH^\fHp\fHS\fH^\fIk\fHD\fIl\fHv\fIk\fHp\fHR\fHn\fHv\fHF\fHH\fIa\fH\\\fH{\fIn\fH{\fH^\fHp\fHR\fHH\fIk\fH@\fHR\fHU\fH\\\fHj\fHF\fHD\fIk\fHY\fHR\fHU\fHD\fHk\fHT\fHy\fHR\fHT\fIm\fH@\fHU\fH\\\fHU\fHD\fIk\fHk\fHT\fHT\fIk\fHT\fHU\fHS\fHH\fH@\fHM\fHP\fIk\fHt\fHs\fHD\fHR\fHH\fH^\fHR\fHZ\fHF\fHR\fHn\fHv\fHZ\fIa\fH\\\fIl\fH@\fHM\fHP\fIl\fHU\fIg\fHH\fIk\fHT\fHR\fHd\fHs\fHZ\fHR\fHC\fHJ\fHT\fHy\fHH\fIl\fHp\fHR\fHH\fIl\fHY\fHR\fH^\fHR\fHU\fHp\fHR\fH\\\fHF\fHs\fHD\fHR\fH\\\fHz\fHD\fIk\fHT\fHM\fHP\fHy\fHB\fHS\fH^\fHR\fHe\fHT\fHy\fIl\fHy\fIk\fHY\fH^\fH^\fH{\fHH\fHR\fHz\fHR\fHD\fHR\fHi\fH\\\fIa\fHI\fHp\fHU\fHR\fHn\fHJ\fIk\fHz\fHR\fHF\fHU\fH^\fIl\fHD\fHS\fHC\fHB\fH@\fHS\fHD\fHR\fH@\fId\fHn\fHy\fHy\fHU\fIl\fHn\fHy\fHU\fHD\fHR\fHJ\fIk\fHH\fHR\fHU\fHB\fH^\fIk\fHy\fHR\fHG\fIl\fHp\fH@\fHy\fHS\fHH\fIm\fH\\\fHH\fHB\fHR\fHn\fH{\fHY\fHU\fIl\fHn\fH\\\fIg\fHp\fHP\fHB\fHS\fH^\fIl\fHj\fH\\\fIg\fHF\fHT\fIk\fHD\fHR\fHC\fHR\fHJ\fHY\fH^\fIk\fHD\fIk\fHz\fHR\fHH\fHR\fHy\fH\\\fIl\fH@\fHe\fHD\fHy\fHR\fHp\fHY\fHR\fH@\fHF\fIn\fH\\\fHR\fH@\fHM\fHP\fHR\fHT\fI`\fHJ\fHR\fHZ\fIk\fHC\fH\\\fHy\fHS\fHC\fIk\fHy\fHU\fHR\fHn\fHi\fHy\fHT\fH\\\fH@\fHD\fHR\fHc\fHY\fHU\fHR\fHn\fHT\fIa\fHI\fH^\fHB\fHS\fH^\fIk\fH^\fIk\fHz\fHy\fHY\fHS\fH[\fHC\fHy\fIa\fH\\\fHn\fHT\fHB\fIn\fHU\fHI\fHR\fHD\fHR4F4_4F4[5f4U5i4X4K4]5o4E4D5d4K4_4[4E4K5h4Y5m4A4E5i5d4K4Z5f4U4K5h4B4K4Y4E4K5h5i4^5f4C4K5h4U4K5i4E4K5h5o4K4F4D4K5h4]4C5d4C4D4]5j4K5i4@4K5h4C5d5h4E4K5h4U4K5h5i4K5h5i5d5n4U4K5h4U4]4D5f4K5h4_4]5f4U4K5h4@5d4K5h4K5h4\\5k4K4D4K5h4A5f4K4E4K5h4A5n5d5n4K5h5o4]5f5i4K5h4U4]4K5n5i4A5m5d4T4E4K5h4G4K5j5f5i4X4K5k4C4E4K5h5i4]4O4E4K5h5n4]4N5j4K5h4X4D4K4D4K5h4A5d4K4]4K5h4@4C5f4C4K5h4O4_4]4E4K5h4U5h5d5i5i4@5i5d4U4E4K5h4]4A5i5j4K5h5j5n4K4[5m5h4_4[5f5j4K5h5o5d5f4F4K5h4C5j5f4K4D4]5o4K4F5k4K5h4]5f4K4Z4F4A5f4K4F5f4D4F5d5n5f4F4K5h4O5d5h5e4K5h4D4]5f4C4K5h5o5h4K5i4K5h4]4K4D4[4K5h4X4B4Y5f4_5f4K4]4K4F4K5h4G4K5h4G4K5h4Y5h4K4E4K5h4A4C5f4G4K5h4^5d4K4]4K5h4B5h5f4@4K5h4@5i5f4U4K5h4U4K5i5k4K5h4@5i4K5h4K5h4_4K4U4E5i4X4K5k4C5k4K5h4]4J5f4_4K5h4C4B5d5h4K5h5m5j5f4E4K5h5o4F4K4D4K5h4C5d4]5f4K5h4C4]5d4_4K4_4F4V4]5n4F4Y4K5i5f5i4K5h4D5j4K4F4K5h4U4T5f5ifmwfqwbjmnfmwvmgfqpwbmgjmd#>#evm`wjlm+*-isd!#tjgwk>!`lmejdvqbwjlm-smd!#tjgwk>!?algz#`obpp>!Nbwk-qbmgln+*`lmwfnslqbqz#Vmjwfg#Pwbwfp`jq`vnpwbm`fp-bssfmg@kjog+lqdbmjybwjlmp?psbm#`obpp>!!=?jnd#pq`>!,gjpwjmdvjpkfgwklvpbmgp#le#`lnnvmj`bwjlm`ofbq!=?,gju=jmufpwjdbwjlmebuj`lm-j`l!#nbqdjm.qjdkw9abpfg#lm#wkf#Nbppb`kvpfwwpwbaof#alqgfq>jmwfqmbwjlmbobopl#hmltm#bpsqlmvm`jbwjlmab`hdqlvmg9 esbggjmd.ofew9Elq#f{bnsof/#njp`foobmflvp%ow8,nbwk%dw8spz`kloldj`bojm#sbqwj`vobqfbq`k!#wzsf>!elqn#nfwklg>!bp#lsslpfg#wlPvsqfnf#@lvqwl``bpjlmbooz#Bggjwjlmbooz/Mlqwk#Bnfqj`bs{8ab`hdqlvmglsslqwvmjwjfpFmwfqwbjmnfmw-wlOltfq@bpf+nbmveb`wvqjmdsqlefppjlmbo#`lnajmfg#tjwkElq#jmpwbm`f/`lmpjpwjmd#le!#nb{ofmdwk>!qfwvqm#ebopf8`lmp`jlvpmfppNfgjwfqqbmfbmf{wqblqgjmbqzbppbppjmbwjlmpvapfrvfmwoz#avwwlm#wzsf>!wkf#mvnafq#lewkf#lqjdjmbo#`lnsqfkfmpjufqfefqp#wl#wkf?,vo=\t?,gju=\tskjolplskj`bool`bwjlm-kqfetbp#svaojpkfgPbm#Eqbm`jp`l+evm`wjlm+*x\t?gju#jg>!nbjmplskjpwj`bwfgnbwkfnbwj`bo#,kfbg=\x0E\t?algzpvddfpwp#wkbwgl`vnfmwbwjlm`lm`fmwqbwjlmqfobwjlmpkjspnbz#kbuf#affm+elq#f{bnsof/Wkjp#bqwj`of#jm#plnf#`bpfpsbqwp#le#wkf#gfejmjwjlm#leDqfbw#Aqjwbjm#`foosbggjmd>frvjubofmw#wlsob`fklogfq>!8#elmw.pjyf9#ivpwjej`bwjlmafojfufg#wkbwpveefqfg#eqlnbwwfnswfg#wl#ofbgfq#le#wkf`qjsw!#pq`>!,+evm`wjlm+*#xbqf#bubjobaof\t\n?ojmh#qfo>!#pq`>$kwws9,,jmwfqfpwfg#jm`lmufmwjlmbo#!#bow>!!#,=?,bqf#dfmfqboozkbp#bopl#affmnlpw#slsvobq#`lqqfpslmgjmd`qfgjwfg#tjwkwzof>!alqgfq9?,b=?,psbm=?,-dje!#tjgwk>!?jeqbnf#pq`>!wbaof#`obpp>!jmojmf.aol`h8b``lqgjmd#wl#wldfwkfq#tjwkbssql{jnbwfozsbqojbnfmwbqznlqf#bmg#nlqfgjpsobz9mlmf8wqbgjwjlmboozsqfglnjmbmwoz%maps8\x7F%maps8%maps8?,psbm=#`foopsb`jmd>?jmsvw#mbnf>!lq!#`lmwfmw>!`lmwqlufqpjbosqlsfqwz>!ld9,{.pkl`htbuf.gfnlmpwqbwjlmpvqqlvmgfg#azMfufqwkfofpp/tbp#wkf#ejqpw`lmpjgfqbaof#Bowklvdk#wkf#`loobalqbwjlmpklvog#mlw#afsqlslqwjlm#le?psbm#pwzof>!hmltm#bp#wkf#pklqwoz#bewfqelq#jmpwbm`f/gfp`qjafg#bp#,kfbg=\t?algz#pwbqwjmd#tjwkjm`qfbpjmdoz#wkf#eb`w#wkbwgjp`vppjlm#lenjggof#le#wkfbm#jmgjujgvbogjeej`vow#wl#sljmw#le#ujftklnlpf{vbojwzb``fswbm`f#le?,psbm=?,gju=nbmveb`wvqfqplqjdjm#le#wkf`lnnlmoz#vpfgjnslqwbm`f#legfmlnjmbwjlmpab`hdqlvmg9# ofmdwk#le#wkfgfwfqnjmbwjlmb#pjdmjej`bmw!#alqgfq>!3!=qfulovwjlmbqzsqjm`jsofp#lejp#`lmpjgfqfgtbp#gfufolsfgJmgl.Fvqlsfbmuvomfqbaof#wlsqlslmfmwp#lebqf#plnfwjnfp`olpfq#wl#wkfMft#Zlqh#@jwz#mbnf>!pfbq`kbwwqjavwfg#wl`lvqpf#le#wkfnbwkfnbwj`jbmaz#wkf#fmg#lebw#wkf#fmg#le!#alqgfq>!3!#wf`kmloldj`bo-qfnluf@obpp+aqbm`k#le#wkffujgfm`f#wkbw\"Xfmgje^..=\x0E\tJmpwjwvwf#le#jmwl#b#pjmdofqfpsf`wjufoz-bmg#wkfqfelqfsqlsfqwjfp#lejp#ol`bwfg#jmplnf#le#tkj`kWkfqf#jp#bopl`lmwjmvfg#wl#bssfbqbm`f#le#%bns8mgbpk8#gfp`qjafp#wkf`lmpjgfqbwjlmbvwklq#le#wkfjmgfsfmgfmwozfrvjssfg#tjwkglfp#mlw#kbuf?,b=?b#kqfe>!`lmevpfg#tjwk?ojmh#kqfe>!,bw#wkf#bdf#lebssfbq#jm#wkfWkfpf#jm`ovgfqfdbqgofpp#le`lvog#af#vpfg#pwzof>%rvlw8pfufqbo#wjnfpqfsqfpfmw#wkfalgz=\t?,kwno=wklvdkw#wl#afslsvobwjlm#leslppjajojwjfpsfq`fmwbdf#leb``fpp#wl#wkfbm#bwwfnsw#wlsqlgv`wjlm#leirvfqz,irvfqzwtl#gjeefqfmwafolmd#wl#wkffpwbaojpknfmwqfsob`jmd#wkfgfp`qjswjlm!#gfwfqnjmf#wkfbubjobaof#elqB``lqgjmd#wl#tjgf#qbmdf#le\n?gju#`obpp>!nlqf#`lnnlmozlqdbmjpbwjlmpevm`wjlmbojwztbp#`lnsofwfg#%bns8ngbpk8#sbqwj`jsbwjlmwkf#`kbqb`wfqbm#bggjwjlmbobssfbqp#wl#afeb`w#wkbw#wkfbm#f{bnsof#lepjdmjej`bmwozlmnlvpflufq>!af`bvpf#wkfz#bpzm`#>#wqvf8sqlaofnp#tjwkpffnp#wl#kbufwkf#qfpvow#le#pq`>!kwws9,,ebnjojbq#tjwkslppfppjlm#leevm`wjlm#+*#xwllh#sob`f#jmbmg#plnfwjnfppvapwbmwjbooz?psbm=?,psbm=jp#lewfm#vpfgjm#bm#bwwfnswdqfbw#gfbo#leFmujqlmnfmwbopv``fppevooz#ujqwvbooz#boo13wk#`fmwvqz/sqlefppjlmbopmf`fppbqz#wl#gfwfqnjmfg#az`lnsbwjajojwzaf`bvpf#jw#jpGj`wjlmbqz#lenlgjej`bwjlmpWkf#elooltjmdnbz#qfefq#wl9@lmpfrvfmwoz/Jmwfqmbwjlmbobowklvdk#plnfwkbw#tlvog#aftlqog$p#ejqpw`obppjejfg#bpalwwln#le#wkf+sbqwj`vobqozbojdm>!ofew!#nlpw#`lnnlmozabpjp#elq#wkfelvmgbwjlm#le`lmwqjavwjlmpslsvobqjwz#le`fmwfq#le#wkfwl#qfgv`f#wkfivqjpgj`wjlmpbssql{jnbwjlm#lmnlvpflvw>!Mft#Wfpwbnfmw`loof`wjlm#le?,psbm=?,b=?,jm#wkf#Vmjwfgejon#gjqf`wlq.pwqj`w-gwg!=kbp#affm#vpfgqfwvqm#wl#wkfbowklvdk#wkjp`kbmdf#jm#wkfpfufqbo#lwkfqavw#wkfqf#bqfvmsqf`fgfmwfgjp#pjnjobq#wlfpsf`jbooz#jmtfjdkw9#alog8jp#`boofg#wkf`lnsvwbwjlmbojmgj`bwf#wkbwqfpwqj`wfg#wl\n?nfwb#mbnf>!bqf#wzsj`booz`lmeoj`w#tjwkKltfufq/#wkf#Bm#f{bnsof#le`lnsbqfg#tjwkrvbmwjwjfp#leqbwkfq#wkbm#b`lmpwfoobwjlmmf`fppbqz#elqqfslqwfg#wkbwpsf`jej`bwjlmslojwj`bo#bmg%maps8%maps8?qfefqfm`fp#wlwkf#pbnf#zfbqDlufqmnfmw#ledfmfqbwjlm#lekbuf#mlw#affmpfufqbo#zfbqp`lnnjwnfmw#wl\n\n?vo#`obpp>!ujpvbojybwjlm2:wk#`fmwvqz/sqb`wjwjlmfqpwkbw#kf#tlvogbmg#`lmwjmvfgl``vsbwjlm#lejp#gfejmfg#bp`fmwqf#le#wkfwkf#bnlvmw#le=?gju#pwzof>!frvjubofmw#legjeefqfmwjbwfaqlvdkw#balvwnbqdjm.ofew9#bvwlnbwj`boozwklvdkw#le#bpPlnf#le#wkfpf\t?gju#`obpp>!jmsvw#`obpp>!qfsob`fg#tjwkjp#lmf#le#wkffgv`bwjlm#bmgjmeovfm`fg#azqfsvwbwjlm#bp\t?nfwb#mbnf>!b``lnnlgbwjlm?,gju=\t?,gju=obqdf#sbqw#leJmpwjwvwf#elqwkf#pl.`boofg#bdbjmpw#wkf#Jm#wkjp#`bpf/tbp#bssljmwfg`objnfg#wl#afKltfufq/#wkjpGfsbqwnfmw#lewkf#qfnbjmjmdfeef`w#lm#wkfsbqwj`vobqoz#gfbo#tjwk#wkf\t?gju#pwzof>!bonlpw#botbzpbqf#`vqqfmwozf{sqfppjlm#leskjolplskz#leelq#nlqf#wkbm`jujojybwjlmplm#wkf#jpobmgpfof`wfgJmgf{`bm#qfpvow#jm!#ubovf>!!#,=wkf#pwqv`wvqf#,=?,b=?,gju=Nbmz#le#wkfpf`bvpfg#az#wkfle#wkf#Vmjwfgpsbm#`obpp>!n`bm#af#wqb`fgjp#qfobwfg#wlaf`bnf#lmf#lejp#eqfrvfmwozojujmd#jm#wkfwkflqfwj`boozElooltjmd#wkfQfulovwjlmbqzdlufqmnfmw#jmjp#gfwfqnjmfgwkf#slojwj`bojmwqlgv`fg#jmpveej`jfmw#wlgfp`qjswjlm!=pklqw#pwlqjfppfsbqbwjlm#lebp#wl#tkfwkfqhmltm#elq#jwptbp#jmjwjboozgjpsobz9aol`hjp#bm#f{bnsofwkf#sqjm`jsbo`lmpjpwp#le#bqf`ldmjyfg#bp,algz=?,kwno=b#pvapwbmwjboqf`lmpwqv`wfgkfbg#le#pwbwfqfpjpwbm`f#wlvmgfqdqbgvbwfWkfqf#bqf#wtldqbujwbwjlmbobqf#gfp`qjafgjmwfmwjlmboozpfqufg#bp#wkf`obpp>!kfbgfqlsslpjwjlm#wlevmgbnfmwboozglnjmbwfg#wkfbmg#wkf#lwkfqboojbm`f#tjwktbp#elq`fg#wlqfpsf`wjufoz/bmg#slojwj`bojm#pvsslqw#lesflsof#jm#wkf13wk#`fmwvqz-bmg#svaojpkfgolbg@kbqwafbwwl#vmgfqpwbmgnfnafq#pwbwfpfmujqlmnfmwboejqpw#kboe#le`lvmwqjfp#bmgbq`kjwf`wvqboaf#`lmpjgfqfg`kbqb`wfqjyfg`ofbqJmwfqubobvwklqjwbwjufEfgfqbwjlm#letbp#pv``ffgfgbmg#wkfqf#bqfb#`lmpfrvfm`fwkf#Sqfpjgfmwbopl#jm`ovgfgeqff#plewtbqfpv``fppjlm#legfufolsfg#wkftbp#gfpwqlzfgbtbz#eqln#wkf8\t?,p`qjsw=\t?bowklvdk#wkfzelooltfg#az#bnlqf#sltfqevoqfpvowfg#jm#bVmjufqpjwz#leKltfufq/#nbmzwkf#sqfpjgfmwKltfufq/#plnfjp#wklvdkw#wlvmwjo#wkf#fmgtbp#bmmlvm`fgbqf#jnslqwbmwbopl#jm`ovgfp=?jmsvw#wzsf>wkf#`fmwfq#le#GL#MLW#BOWFQvpfg#wl#qfefqwkfnfp,<plqw>wkbw#kbg#affmwkf#abpjp#elqkbp#gfufolsfgjm#wkf#pvnnfq`lnsbqbwjufozgfp`qjafg#wkfpv`k#bp#wklpfwkf#qfpvowjmdjp#jnslppjaofubqjlvp#lwkfqPlvwk#Beqj`bmkbuf#wkf#pbnffeef`wjufmfppjm#tkj`k#`bpf8#wf{w.bojdm9pwqv`wvqf#bmg8#ab`hdqlvmg9qfdbqgjmd#wkfpvsslqwfg#wkfjp#bopl#hmltmpwzof>!nbqdjmjm`ovgjmd#wkfabkbpb#Nfobzvmlqph#alhn/Iomlqph#mzmlqphpolufm)M(ajmbjmwfqmb`jlmbo`bojej`b`j/_m`lnvmj`b`j/_m`lmpwqv``j/_m!=?gju#`obpp>!gjpbnajdvbwjlmGlnbjmMbnf$/#$bgnjmjpwqbwjlmpjnvowbmflvpozwqbmpslqwbwjlmJmwfqmbwjlmbo#nbqdjm.alwwln9qfpslmpjajojwz?\"Xfmgje^..=\t?,=?nfwb#mbnf>!jnsofnfmwbwjlmjmeqbpwqv`wvqfqfsqfpfmwbwjlmalqgfq.alwwln9?,kfbg=\t?algz=>kwws&0B&1E&1E?elqn#nfwklg>!nfwklg>!slpw!#,ebuj`lm-j`l!#~*8\t?,p`qjsw=\t-pfwBwwqjavwf+Bgnjmjpwqbwjlm>#mft#Bqqbz+*8?\"Xfmgje^..=\x0E\tgjpsobz9aol`h8Vmelqwvmbwfoz/!=%maps8?,gju=,ebuj`lm-j`l!=>$pwzofpkffw$#jgfmwjej`bwjlm/#elq#f{bnsof/?oj=?b#kqfe>!,bm#bowfqmbwjufbp#b#qfpvow#lesw!=?,p`qjsw=\twzsf>!pvanjw!#\t+evm`wjlm+*#xqf`lnnfmgbwjlmelqn#b`wjlm>!,wqbmpelqnbwjlmqf`lmpwqv`wjlm-pwzof-gjpsobz#B``lqgjmd#wl#kjggfm!#mbnf>!bolmd#tjwk#wkfgl`vnfmw-algz-bssql{jnbwfoz#@lnnvmj`bwjlmpslpw!#b`wjlm>!nfbmjmd#%rvlw8..?\"Xfmgje^..=Sqjnf#Njmjpwfq`kbqb`wfqjpwj`?,b=#?b#`obpp>wkf#kjpwlqz#le#lmnlvpflufq>!wkf#dlufqmnfmwkqfe>!kwwsp9,,tbp#lqjdjmbooztbp#jmwqlgv`fg`obppjej`bwjlmqfsqfpfmwbwjufbqf#`lmpjgfqfg?\"Xfmgje^..=\t\tgfsfmgp#lm#wkfVmjufqpjwz#le#jm#`lmwqbpw#wl#sob`fklogfq>!jm#wkf#`bpf#lejmwfqmbwjlmbo#`lmpwjwvwjlmbopwzof>!alqgfq.9#evm`wjlm+*#xAf`bvpf#le#wkf.pwqj`w-gwg!=\t?wbaof#`obpp>!b``lnsbmjfg#azb``lvmw#le#wkf?p`qjsw#pq`>!,mbwvqf#le#wkf#wkf#sflsof#jm#jm#bggjwjlm#wlp*8#ip-jg#>#jg!#tjgwk>!233&!qfdbqgjmd#wkf#Qlnbm#@bwkloj`bm#jmgfsfmgfmwelooltjmd#wkf#-dje!#tjgwk>!2wkf#elooltjmd#gjp`qjnjmbwjlmbq`kbfloldj`bosqjnf#njmjpwfq-ip!=?,p`qjsw=`lnajmbwjlm#le#nbqdjmtjgwk>!`qfbwfFofnfmw+t-bwwb`kFufmw+?,b=?,wg=?,wq=pq`>!kwwsp9,,bJm#sbqwj`vobq/#bojdm>!ofew!#@yf`k#Qfsvaoj`Vmjwfg#Hjmdgln`lqqfpslmgfm`f`lm`ovgfg#wkbw-kwno!#wjwof>!+evm`wjlm#+*#x`lnfp#eqln#wkfbssoj`bwjlm#le?psbm#`obpp>!pafojfufg#wl#affnfmw+$p`qjsw$?,b=\t?,oj=\t?ojufqz#gjeefqfmw=?psbm#`obpp>!lswjlm#ubovf>!+bopl#hmltm#bp\n?oj=?b#kqfe>!=?jmsvw#mbnf>!pfsbqbwfg#eqlnqfefqqfg#wl#bp#ubojdm>!wls!=elvmgfq#le#wkfbwwfnswjmd#wl#`bqalm#gjl{jgf\t\t?gju#`obpp>!`obpp>!pfbq`k.,algz=\t?,kwno=lsslqwvmjwz#wl`lnnvmj`bwjlmp?,kfbg=\x0E\t?algz#pwzof>!tjgwk9Wj\rVSmd#Uj\rWkw`kbmdfp#jm#wkfalqgfq.`lolq9 3!#alqgfq>!3!#?,psbm=?,gju=?tbp#gjp`lufqfg!#wzsf>!wf{w!#*8\t?,p`qjsw=\t\tGfsbqwnfmw#le#f``ofpjbpwj`bowkfqf#kbp#affmqfpvowjmd#eqln?,algz=?,kwno=kbp#mfufq#affmwkf#ejqpw#wjnfjm#qfpslmpf#wlbvwlnbwj`booz#?,gju=\t\t?gju#jtbp#`lmpjgfqfgsfq`fmw#le#wkf!#,=?,b=?,gju=`loof`wjlm#le#gfp`fmgfg#eqlnpf`wjlm#le#wkfb``fsw.`kbqpfwwl#af#`lmevpfgnfnafq#le#wkf#sbggjmd.qjdkw9wqbmpobwjlm#lejmwfqsqfwbwjlm#kqfe>$kwws9,,tkfwkfq#lq#mlwWkfqf#bqf#boplwkfqf#bqf#nbmzb#pnboo#mvnafqlwkfq#sbqwp#lejnslppjaof#wl##`obpp>!avwwlmol`bwfg#jm#wkf-#Kltfufq/#wkfbmg#fufmwvboozBw#wkf#fmg#le#af`bvpf#le#jwpqfsqfpfmwp#wkf?elqn#b`wjlm>!#nfwklg>!slpw!jw#jp#slppjaofnlqf#ojhfoz#wlbm#jm`qfbpf#jmkbuf#bopl#affm`lqqfpslmgp#wlbmmlvm`fg#wkbwbojdm>!qjdkw!=nbmz#`lvmwqjfpelq#nbmz#zfbqpfbqojfpw#hmltmaf`bvpf#jw#tbpsw!=?,p`qjsw=\x0E#ubojdm>!wls!#jmkbajwbmwp#leelooltjmd#zfbq\x0E\t?gju#`obpp>!njoojlm#sflsof`lmwqlufqpjbo#`lm`fqmjmd#wkfbqdvf#wkbw#wkfdlufqmnfmw#bmgb#qfefqfm`f#wlwqbmpefqqfg#wlgfp`qjajmd#wkf#pwzof>!`lolq9bowklvdk#wkfqfafpw#hmltm#elqpvanjw!#mbnf>!nvowjsoj`bwjlmnlqf#wkbm#lmf#qf`ldmjwjlm#le@lvm`jo#le#wkffgjwjlm#le#wkf##?nfwb#mbnf>!Fmwfqwbjmnfmw#btbz#eqln#wkf#8nbqdjm.qjdkw9bw#wkf#wjnf#lejmufpwjdbwjlmp`lmmf`wfg#tjwkbmg#nbmz#lwkfqbowklvdk#jw#jpafdjmmjmd#tjwk#?psbm#`obpp>!gfp`fmgbmwp#le?psbm#`obpp>!j#bojdm>!qjdkw!?,kfbg=\t?algz#bpsf`wp#le#wkfkbp#pjm`f#affmFvqlsfbm#Vmjlmqfnjmjp`fmw#lenlqf#gjeej`vowUj`f#Sqfpjgfmw`lnslpjwjlm#lesbppfg#wkqlvdknlqf#jnslqwbmwelmw.pjyf922s{f{sobmbwjlm#lewkf#`lm`fsw#letqjwwfm#jm#wkf\n?psbm#`obpp>!jp#lmf#le#wkf#qfpfnaobm`f#wllm#wkf#dqlvmgptkj`k#`lmwbjmpjm`ovgjmd#wkf#gfejmfg#az#wkfsvaoj`bwjlm#lenfbmp#wkbw#wkflvwpjgf#le#wkfpvsslqw#le#wkf?jmsvw#`obpp>!?psbm#`obpp>!w+Nbwk-qbmgln+*nlpw#sqlnjmfmwgfp`qjswjlm#le@lmpwbmwjmlsoftfqf#svaojpkfg?gju#`obpp>!pfbssfbqp#jm#wkf2!#kfjdkw>!2!#nlpw#jnslqwbmwtkj`k#jm`ovgfptkj`k#kbg#affmgfpwqv`wjlm#lewkf#slsvobwjlm\t\n?gju#`obpp>!slppjajojwz#leplnfwjnfp#vpfgbssfbq#wl#kbufpv``fpp#le#wkfjmwfmgfg#wl#afsqfpfmw#jm#wkfpwzof>!`ofbq9a\x0E\t?,p`qjsw=\x0E\t?tbp#elvmgfg#jmjmwfqujft#tjwk\\jg!#`lmwfmw>!`bsjwbo#le#wkf\x0E\t?ojmh#qfo>!pqfofbpf#le#wkfsljmw#lvw#wkbw{NOKwwsQfrvfpwbmg#pvapfrvfmwpf`lmg#obqdfpwufqz#jnslqwbmwpsf`jej`bwjlmppvqeb`f#le#wkfbssojfg#wl#wkfelqfjdm#sloj`z\\pfwGlnbjmMbnffpwbaojpkfg#jmjp#afojfufg#wlJm#bggjwjlm#wlnfbmjmd#le#wkfjp#mbnfg#bewfqwl#sqlwf`w#wkfjp#qfsqfpfmwfgGf`obqbwjlm#lenlqf#feej`jfmw@obppjej`bwjlmlwkfq#elqnp#lekf#qfwvqmfg#wl?psbm#`obpp>!`sfqelqnbm`f#le+evm`wjlm+*#x\x0Eje#bmg#lmoz#jeqfdjlmp#le#wkfofbgjmd#wl#wkfqfobwjlmp#tjwkVmjwfg#Mbwjlmppwzof>!kfjdkw9lwkfq#wkbm#wkfzsf!#`lmwfmw>!Bppl`jbwjlm#le\t?,kfbg=\t?algzol`bwfg#lm#wkfjp#qfefqqfg#wl+jm`ovgjmd#wkf`lm`fmwqbwjlmpwkf#jmgjujgvbobnlmd#wkf#nlpwwkbm#bmz#lwkfq,=\t?ojmh#qfo>!#qfwvqm#ebopf8wkf#svqslpf#lewkf#bajojwz#wl8`lolq9 eee~\t-\t?psbm#`obpp>!wkf#pvaif`w#legfejmjwjlmp#le=\x0E\t?ojmh#qfo>!`objn#wkbw#wkfkbuf#gfufolsfg?wbaof#tjgwk>!`fofaqbwjlm#leElooltjmd#wkf#wl#gjpwjmdvjpk?psbm#`obpp>!awbhfp#sob`f#jmvmgfq#wkf#mbnfmlwfg#wkbw#wkf=?\"Xfmgje^..=\tpwzof>!nbqdjm.jmpwfbg#le#wkfjmwqlgv`fg#wkfwkf#sql`fpp#lejm`qfbpjmd#wkfgjeefqfm`fp#jmfpwjnbwfg#wkbwfpsf`jbooz#wkf,gju=?gju#jg>!tbp#fufmwvboozwkqlvdklvw#kjpwkf#gjeefqfm`fplnfwkjmd#wkbwpsbm=?,psbm=?,pjdmjej`bmwoz#=?,p`qjsw=\x0E\t\x0E\tfmujqlmnfmwbo#wl#sqfufmw#wkfkbuf#affm#vpfgfpsf`jbooz#elqvmgfqpwbmg#wkfjp#fppfmwjbooztfqf#wkf#ejqpwjp#wkf#obqdfpwkbuf#affm#nbgf!#pq`>!kwws9,,jmwfqsqfwfg#bppf`lmg#kboe#le`qloojmd>!ml!#jp#`lnslpfg#leJJ/#Kloz#Qlnbmjp#f{sf`wfg#wlkbuf#wkfjq#ltmgfejmfg#bp#wkfwqbgjwjlmbooz#kbuf#gjeefqfmwbqf#lewfm#vpfgwl#fmpvqf#wkbwbdqffnfmw#tjwk`lmwbjmjmd#wkfbqf#eqfrvfmwozjmelqnbwjlm#lmf{bnsof#jp#wkfqfpvowjmd#jm#b?,b=?,oj=?,vo=#`obpp>!ellwfqbmg#fpsf`jboozwzsf>!avwwlm!#?,psbm=?,psbm=tkj`k#jm`ovgfg=\t?nfwb#mbnf>!`lmpjgfqfg#wkf`bqqjfg#lvw#azKltfufq/#jw#jpaf`bnf#sbqw#lejm#qfobwjlm#wlslsvobq#jm#wkfwkf#`bsjwbo#letbp#leej`jbooztkj`k#kbp#affmwkf#Kjpwlqz#lebowfqmbwjuf#wlgjeefqfmw#eqlnwl#pvsslqw#wkfpvddfpwfg#wkbwjm#wkf#sql`fpp##?gju#`obpp>!wkf#elvmgbwjlmaf`bvpf#le#kjp`lm`fqmfg#tjwkwkf#vmjufqpjwzlsslpfg#wl#wkfwkf#`lmwf{w#le?psbm#`obpp>!swf{w!#mbnf>!r!\n\n?gju#`obpp>!wkf#p`jfmwjej`qfsqfpfmwfg#aznbwkfnbwj`jbmpfof`wfg#az#wkfwkbw#kbuf#affm=?gju#`obpp>!`gju#jg>!kfbgfqjm#sbqwj`vobq/`lmufqwfg#jmwl*8\t?,p`qjsw=\t?skjolplskj`bo#pqsphlkqubwphjwj\rVSmd#Uj\rWkw<L=o=m=m<V<T<U=l=o=m=m<V<T<Ujmufpwjdb`j/_msbqwj`jsb`j/_m<V<R=n<R=l=g<Y<R<]<W<\\=m=n<T<V<R=n<R=l=g<U=k<Y<W<R<^<Y<V=m<T=m=n<Y<P=g<q<R<^<R=m=n<T<V<R=n<R=l=g=i<R<]<W<\\=m=n=`<^=l<Y<P<Y<Q<T<V<R=n<R=l<\\=c=m<Y<_<R<X<Q=c=m<V<\\=k<\\=n=`<Q<R<^<R=m=n<T<O<V=l<\\<T<Q=g<^<R<S=l<R=m=g<V<R=n<R=l<R<U=m<X<Y<W<\\=n=`<S<R<P<R=e=`=b=m=l<Y<X=m=n<^<R<]=l<\\<[<R<P=m=n<R=l<R<Q=g=o=k<\\=m=n<T<Y=n<Y=k<Y<Q<T<Y<\x7F<W<\\<^<Q<\\=c<T=m=n<R=l<T<T=m<T=m=n<Y<P<\\=l<Y=d<Y<Q<T=c<M<V<\\=k<\\=n=`<S<R=a=n<R<P=o=m<W<Y<X=o<Y=n=m<V<\\<[<\\=n=`=n<R<^<\\=l<R<^<V<R<Q<Y=k<Q<R=l<Y=d<Y<Q<T<Y<V<R=n<R=l<R<Y<R=l<_<\\<Q<R<^<V<R=n<R=l<R<P<L<Y<V<W<\\<P<\\4K5h5i5j4F4C5e5i5j4F4C5f4K4F4K5h5i5d4Z5d4U4K5h4D4]4K5i4@4K5h5i5d4K5n4U4K5h4]4_4K4J5h5i4X4K4]5o4K4F4K5h4O4U4Z4K4M4K5h4]5f4K4Z4E4K5h4F4Y5i5f5i4K5h4K4U4Z4K4M4K5h5j4F4K4J4@4K5h4O5h4U4K4D4K5h4F4_4@5f5h4K5h4O5n4_4K5i4K5h4Z4V4[4K4F4K5h5m5f4C5f5d4K5h4F4]4A5f4D4K5h4@4C5f4C4E4K5h4F4U5h5f5i4K5h4O4B4D4K4]4K5h4K5m5h4K5i4K5h4O5m5h4K5i4K5h4F4K4]5f4B4K5h4F5n5j5f4E4K5h4K5h4U4K4D4K5h4B5d4K4[4]4K5h5i4@4F5i4U4K5h4C5f5o5d4]4K5h4_5f4K4A4E4U4D4C4K5h5h5k4K5h4F4]4D5f4E4K5h4]5d4K4D4[4K5h4O4C4D5f4E4K5h4K4B4D4K4]4K5h5i4F4A4C4E4K5h4K4V4K5j5f`vqplq9sljmwfq8?,wjwof=\t?nfwb#!#kqfe>!kwws9,,!=?psbm#`obpp>!nfnafqp#le#wkf#tjmglt-ol`bwjlmufqwj`bo.bojdm9,b=#\x7F#?b#kqfe>!?\"gl`wzsf#kwno=nfgjb>!p`qffm!#?lswjlm#ubovf>!ebuj`lm-j`l!#,=\t\n\n?gju#`obpp>!`kbqb`wfqjpwj`p!#nfwklg>!dfw!#,algz=\t?,kwno=\tpklqw`vw#j`lm!#gl`vnfmw-tqjwf+sbggjmd.alwwln9qfsqfpfmwbwjufppvanjw!#ubovf>!bojdm>!`fmwfq!#wkqlvdklvw#wkf#p`jfm`f#ej`wjlm\t##?gju#`obpp>!pvanjw!#`obpp>!lmf#le#wkf#nlpw#ubojdm>!wls!=?tbp#fpwbaojpkfg*8\x0E\t?,p`qjsw=\x0E\tqfwvqm#ebopf8!=*-pwzof-gjpsobzaf`bvpf#le#wkf#gl`vnfmw-`llhjf?elqn#b`wjlm>!,~algzxnbqdjm938Fm`z`olsfgjb#leufqpjlm#le#wkf#-`qfbwfFofnfmw+mbnf!#`lmwfmw>!?,gju=\t?,gju=\t\tbgnjmjpwqbwjuf#?,algz=\t?,kwno=kjpwlqz#le#wkf#!=?jmsvw#wzsf>!slqwjlm#le#wkf#bp#sbqw#le#wkf#%maps8?b#kqfe>!lwkfq#`lvmwqjfp!=\t?gju#`obpp>!?,psbm=?,psbm=?Jm#lwkfq#tlqgp/gjpsobz9#aol`h8`lmwqlo#le#wkf#jmwqlgv`wjlm#le,=\t?nfwb#mbnf>!bp#tfoo#bp#wkf#jm#qf`fmw#zfbqp\x0E\t\n?gju#`obpp>!?,gju=\t\n?,gju=\tjmpsjqfg#az#wkfwkf#fmg#le#wkf#`lnsbwjaof#tjwkaf`bnf#hmltm#bp#pwzof>!nbqdjm9-ip!=?,p`qjsw=?#Jmwfqmbwjlmbo#wkfqf#kbuf#affmDfqnbm#obmdvbdf#pwzof>!`lolq9 @lnnvmjpw#Sbqwz`lmpjpwfmw#tjwkalqgfq>!3!#`foo#nbqdjmkfjdkw>!wkf#nbilqjwz#le!#bojdm>!`fmwfqqfobwfg#wl#wkf#nbmz#gjeefqfmw#Lqwklgl{#@kvq`kpjnjobq#wl#wkf#,=\t?ojmh#qfo>!ptbp#lmf#le#wkf#vmwjo#kjp#gfbwk~*+*8\t?,p`qjsw=lwkfq#obmdvbdfp`lnsbqfg#wl#wkfslqwjlmp#le#wkfwkf#Mfwkfqobmgpwkf#nlpw#`lnnlmab`hdqlvmg9vqo+bqdvfg#wkbw#wkfp`qloojmd>!ml!#jm`ovgfg#jm#wkfMlqwk#Bnfqj`bm#wkf#mbnf#le#wkfjmwfqsqfwbwjlmpwkf#wqbgjwjlmbogfufolsnfmw#le#eqfrvfmwoz#vpfgb#`loof`wjlm#leufqz#pjnjobq#wlpvqqlvmgjmd#wkff{bnsof#le#wkjpbojdm>!`fmwfq!=tlvog#kbuf#affmjnbdf\\`bswjlm#>bwwb`kfg#wl#wkfpvddfpwjmd#wkbwjm#wkf#elqn#le#jmuloufg#jm#wkfjp#gfqjufg#eqlnmbnfg#bewfq#wkfJmwqlgv`wjlm#wlqfpwqj`wjlmp#lm#pwzof>!tjgwk9#`bm#af#vpfg#wl#wkf#`qfbwjlm#lenlpw#jnslqwbmw#jmelqnbwjlm#bmgqfpvowfg#jm#wkf`loobspf#le#wkfWkjp#nfbmp#wkbwfofnfmwp#le#wkftbp#qfsob`fg#azbmbozpjp#le#wkfjmpsjqbwjlm#elqqfdbqgfg#bp#wkfnlpw#pv``fppevohmltm#bp#%rvlw8b#`lnsqfkfmpjufKjpwlqz#le#wkf#tfqf#`lmpjgfqfgqfwvqmfg#wl#wkfbqf#qfefqqfg#wlVmplvq`fg#jnbdf=\t\n?gju#`obpp>!`lmpjpwp#le#wkfpwlsSqlsbdbwjlmjmwfqfpw#jm#wkfbubjobajojwz#lebssfbqp#wl#kbuffof`wqlnbdmfwj`fmbaofPfquj`fp+evm`wjlm#le#wkfJw#jp#jnslqwbmw?,p`qjsw=?,gju=evm`wjlm+*xubq#qfobwjuf#wl#wkfbp#b#qfpvow#le#wkf#slpjwjlm#leElq#f{bnsof/#jm#nfwklg>!slpw!#tbp#elooltfg#az%bns8ngbpk8#wkfwkf#bssoj`bwjlmip!=?,p`qjsw=\x0E\tvo=?,gju=?,gju=bewfq#wkf#gfbwktjwk#qfpsf`w#wlpwzof>!sbggjmd9jp#sbqwj`vobqozgjpsobz9jmojmf8#wzsf>!pvanjw!#jp#gjujgfg#jmwl\bTA\nzk#+\x0BBl\bQ\x7F*qfpslmpbajojgbgbgnjmjpwqb`j/_mjmwfqmb`jlmbofp`lqqfpslmgjfmwf\fHe\fHF\fHC\fIg\fH{\fHF\fIn\fH\\\fIa\fHY\fHU\fHB\fHR\fH\\\fIk\fH^\fIg\fH{\fIg\fHn\fHv\fIm\fHD\fHR\fHY\fH^\fIk\fHy\fHS\fHD\fHT\fH\\\fHy\fHR\fH\\\fHF\fIm\fH^\fHS\fHT\fHz\fIg\fHp\fIk\fHn\fHv\fHR\fHU\fHS\fHc\fHA\fIk\fHp\fIk\fHn\fHZ\fHR\fHB\fHS\fH^\fHU\fHB\fHR\fH\\\fIl\fHp\fHR\fH{\fH\\\fHO\fH@\fHD\fHR\fHD\fIk\fHy\fIm\fHB\fHR\fH\\\fH@\fIa\fH^\fIe\fH{\fHB\fHR\fH^\fHS\fHy\fHB\fHU\fHS\fH^\fHR\fHF\fIo\fH[\fIa\fHL\fH@\fHN\fHP\fHH\fIk\fHA\fHR\fHp\fHF\fHR\fHy\fIa\fH^\fHS\fHy\fHs\fIa\fH\\\fIk\fHD\fHz\fHS\fH^\fHR\fHG\fHJ\fI`\fH\\\fHR\fHD\fHB\fHR\fHB\fH^\fIk\fHB\fHH\fHJ\fHR\fHD\fH@\fHR\fHp\fHR\fH\\\fHY\fHS\fHy\fHR\fHT\fHy\fIa\fHC\fIg\fHn\fHv\fHR\fHU\fHH\fIk\fHF\fHU\fIm\fHm\fHv\fH@\fHH\fHR\fHC\fHR\fHT\fHn\fHY\fHR\fHJ\fHJ\fIk\fHz\fHD\fIk\fHF\fHS\fHw\fH^\fIk\fHY\fHS\fHZ\fIk\fH[\fH\\\fHR\fHp\fIa\fHC\fHe\fHH\fIa\fHH\fH\\\fHB\fIm\fHn\fH@\fHd\fHJ\fIg\fHD\fIg\fHn\fHe\fHF\fHy\fH\\\fHO\fHF\fHN\fHP\fIk\fHn\fHT\fIa\fHI\fHS\fHH\fHG\fHS\fH^\fIa\fHB\fHB\fIm\fHz\fIa\fHC\fHi\fHv\fIa\fHw\fHR\fHw\fIn\fHs\fHH\fIl\fHT\fHn\fH{\fIl\fHH\fHp\fHR\fHc\fH{\fHR\fHY\fHS\fHA\fHR\fH{\fHt\fHO\fIa\fHs\fIk\fHJ\fIn\fHT\fH\\\fIk\fHJ\fHS\fHD\fIg\fHn\fHU\fHH\fIa\fHC\fHR\fHT\fIk\fHy\fIa\fHT\fH{\fHR\fHn\fHK\fIl\fHY\fHS\fHZ\fIa\fHY\fH\\\fHR\fHH\fIk\fHn\fHJ\fId\fHs\fIa\fHT\fHD\fHy\fIa\fHZ\fHR\fHT\fHR\fHB\fHD\fIk\fHi\fHJ\fHR\fH^\fHH\fH@\fHS\fHp\fH^\fIl\fHF\fIm\fH\\\fIn\fH[\fHU\fHS\fHn\fHJ\fIl\fHB\fHS\fHH\fIa\fH\\\fHy\fHY\fHS\fHH\fHR\fH\\\fIm\fHF\fHC\fIk\fHT\fIa\fHI\fHR\fHD\fHy\fH\\\fIg\fHM\fHP\fHB\fIm\fHy\fIa\fHH\fHC\fIg\fHp\fHD\fHR\fHy\fIo\fHF\fHC\fHR\fHF\fIg\fHT\fIa\fHs\fHt\fH\\\fIk\fH^\fIn\fHy\fHR\fH\\\fIa\fHC\fHY\fHS\fHv\fHR\fH\\\fHT\fIn\fHv\fHD\fHR\fHB\fIn\fH^\fIa\fHC\fHJ\fIk\fHz\fIk\fHn\fHU\fHB\fIk\fHZ\fHR\fHT\fIa\fHy\fIn\fH^\fHB\fId\fHn\fHD\fIk\fHH\fId\fHC\fHR\fH\\\fHp\fHS\fHT\fHy\fIkqpp({no!#wjwof>!.wzsf!#`lmwfmw>!wjwof!#`lmwfmw>!bw#wkf#pbnf#wjnf-ip!=?,p`qjsw=\t?!#nfwklg>!slpw!#?,psbm=?,b=?,oj=ufqwj`bo.bojdm9w,irvfqz-njm-ip!=-`oj`h+evm`wjlm+#pwzof>!sbggjmd.~*+*8\t?,p`qjsw=\t?,psbm=?b#kqfe>!?b#kqfe>!kwws9,,*8#qfwvqm#ebopf8wf{w.gf`lqbwjlm9#p`qloojmd>!ml!#alqgfq.`loobspf9bppl`jbwfg#tjwk#Abkbpb#JmglmfpjbFmdojpk#obmdvbdf?wf{w#{no9psb`f>-dje!#alqgfq>!3!?,algz=\t?,kwno=\tlufqeolt9kjggfm8jnd#pq`>!kwws9,,bggFufmwOjpwfmfqqfpslmpjaof#elq#p-ip!=?,p`qjsw=\t,ebuj`lm-j`l!#,=lsfqbwjmd#pzpwfn!#pwzof>!tjgwk92wbqdfw>!\\aobmh!=Pwbwf#Vmjufqpjwzwf{w.bojdm9ofew8\tgl`vnfmw-tqjwf+/#jm`ovgjmd#wkf#bqlvmg#wkf#tlqog*8\x0E\t?,p`qjsw=\x0E\t?!#pwzof>!kfjdkw98lufqeolt9kjggfmnlqf#jmelqnbwjlmbm#jmwfqmbwjlmbob#nfnafq#le#wkf#lmf#le#wkf#ejqpw`bm#af#elvmg#jm#?,gju=\t\n\n?,gju=\tgjpsobz9#mlmf8!=!#,=\t?ojmh#qfo>!\t##+evm`wjlm+*#xwkf#26wk#`fmwvqz-sqfufmwGfebvow+obqdf#mvnafq#le#Azybmwjmf#Fnsjqf-isd\x7Fwkvna\x7Fofew\x7Fubpw#nbilqjwz#lenbilqjwz#le#wkf##bojdm>!`fmwfq!=Vmjufqpjwz#Sqfppglnjmbwfg#az#wkfPf`lmg#Tlqog#Tbqgjpwqjavwjlm#le#pwzof>!slpjwjlm9wkf#qfpw#le#wkf#`kbqb`wfqjyfg#az#qfo>!mleloolt!=gfqjufp#eqln#wkfqbwkfq#wkbm#wkf#b#`lnajmbwjlm#lepwzof>!tjgwk9233Fmdojpk.psfbhjmd`lnsvwfq#p`jfm`falqgfq>!3!#bow>!wkf#f{jpwfm`f#leGfnl`qbwj`#Sbqwz!#pwzof>!nbqdjm.Elq#wkjp#qfbplm/-ip!=?,p`qjsw=\t\npAzWbdMbnf+p*X3^ip!=?,p`qjsw=\x0E\t?-ip!=?,p`qjsw=\x0E\tojmh#qfo>!j`lm!#$#bow>$$#`obpp>$elqnbwjlm#le#wkfufqpjlmp#le#wkf#?,b=?,gju=?,gju=,sbdf=\t##?sbdf=\t?gju#`obpp>!`lmwaf`bnf#wkf#ejqpwabkbpb#Jmglmfpjbfmdojpk#+pjnsof*\"y\"W\"W\"[\"Q\"U\"V\"@=i=l<^<\\=n=m<V<T<V<R<P<S<\\<Q<T<T=c<^<W=c<Y=n=m=c<x<R<]<\\<^<T=n=`=k<Y<W<R<^<Y<V<\\=l<\\<[<^<T=n<T=c<t<Q=n<Y=l<Q<Y=n<r=n<^<Y=n<T=n=`<Q<\\<S=l<T<P<Y=l<T<Q=n<Y=l<Q<Y=n<V<R=n<R=l<R<_<R=m=n=l<\\<Q<T=j=g<V<\\=k<Y=m=n<^<Y=o=m<W<R<^<T=c=i<S=l<R<]<W<Y<P=g<S<R<W=o=k<T=n=`=c<^<W=c=b=n=m=c<Q<\\<T<]<R<W<Y<Y<V<R<P<S<\\<Q<T=c<^<Q<T<P<\\<Q<T<Y=m=l<Y<X=m=n<^<\\4K5h5i5d4K4Z5f4U4K5h4]4J5f4_5f4E4K5h4K5j4F5n4K5h5i4X4K4]5o4K4F5o4K5h4_5f4K4]4K4F4K5h5i5o4F5d4D4E4K5h4_4U5d4C5f4E4K4A4Y4K4J5f4K4F4K5h4U4K5h5i5f4E4K5h4Y5d4F5f4K4F4K5h4K5j4F4]5j4F4K5h4F4Y4K5i5f5i4K5h4I4_5h4K5i5f4K5h5i4X4K4]5o4E4K5h5i4]4J5f4K4Fqlalwp!#`lmwfmw>!?gju#jg>!ellwfq!=wkf#Vmjwfg#Pwbwfp?jnd#pq`>!kwws9,,-isd\x7Fqjdkw\x7Fwkvna\x7F-ip!=?,p`qjsw=\x0E\t?ol`bwjlm-sqlwl`loeqbnfalqgfq>!3!#p!#,=\t?nfwb#mbnf>!?,b=?,gju=?,gju=?elmw.tfjdkw9alog8%rvlw8#bmg#%rvlw8gfsfmgjmd#lm#wkf#nbqdjm938sbggjmd9!#qfo>!mleloolt!#Sqfpjgfmw#le#wkf#wtfmwjfwk#`fmwvqzfujpjlm=\t##?,sbdfJmwfqmfw#F{solqfqb-bpzm`#>#wqvf8\x0E\tjmelqnbwjlm#balvw?gju#jg>!kfbgfq!=!#b`wjlm>!kwws9,,?b#kqfe>!kwwsp9,,?gju#jg>!`lmwfmw!?,gju=\x0E\t?,gju=\x0E\t?gfqjufg#eqln#wkf#?jnd#pq`>$kwws9,,b``lqgjmd#wl#wkf#\t?,algz=\t?,kwno=\tpwzof>!elmw.pjyf9p`qjsw#obmdvbdf>!Bqjbo/#Kfoufwj`b/?,b=?psbm#`obpp>!?,p`qjsw=?p`qjsw#slojwj`bo#sbqwjfpwg=?,wq=?,wbaof=?kqfe>!kwws9,,ttt-jmwfqsqfwbwjlm#leqfo>!pwzofpkffw!#gl`vnfmw-tqjwf+$?`kbqpfw>!vwe.;!=\tafdjmmjmd#le#wkf#qfufbofg#wkbw#wkfwfofujpjlm#pfqjfp!#qfo>!mleloolt!=#wbqdfw>!\\aobmh!=`objnjmd#wkbw#wkfkwws&0B&1E&1Ettt-nbmjefpwbwjlmp#leSqjnf#Njmjpwfq#lejmeovfm`fg#az#wkf`obpp>!`ofbqej{!=,gju=\x0E\t?,gju=\x0E\t\x0E\twkqff.gjnfmpjlmbo@kvq`k#le#Fmdobmgle#Mlqwk#@bqlojmbprvbqf#hjolnfwqfp-bggFufmwOjpwfmfqgjpwjm`w#eqln#wkf`lnnlmoz#hmltm#bpSklmfwj`#Boskbafwgf`obqfg#wkbw#wkf`lmwqloofg#az#wkfAfmibnjm#Eqbmhojmqlof.sobzjmd#dbnfwkf#Vmjufqpjwz#lejm#Tfpwfqm#Fvqlsfsfqplmbo#`lnsvwfqSqlif`w#Dvwfmafqdqfdbqgofpp#le#wkfkbp#affm#sqlslpfgwldfwkfq#tjwk#wkf=?,oj=?oj#`obpp>!jm#plnf#`lvmwqjfpnjm-ip!=?,p`qjsw=le#wkf#slsvobwjlmleej`jbo#obmdvbdf?jnd#pq`>!jnbdfp,jgfmwjejfg#az#wkfmbwvqbo#qfplvq`fp`obppjej`bwjlm#le`bm#af#`lmpjgfqfgrvbmwvn#nf`kbmj`pMfufqwkfofpp/#wkfnjoojlm#zfbqp#bdl?,algz=\x0E\t?,kwno=\x0E\"y\"W\"W\"[\"Q\"U\"V\"@\twbhf#bgubmwbdf#lebmg/#b``lqgjmd#wlbwwqjavwfg#wl#wkfNj`qlplew#Tjmgltpwkf#ejqpw#`fmwvqzvmgfq#wkf#`lmwqlogju#`obpp>!kfbgfqpklqwoz#bewfq#wkfmlwbaof#f{`fswjlmwfmp#le#wklvpbmgppfufqbo#gjeefqfmwbqlvmg#wkf#tlqog-qfb`kjmd#njojwbqzjplobwfg#eqln#wkflsslpjwjlm#wl#wkfwkf#Log#WfpwbnfmwBeqj`bm#Bnfqj`bmpjmpfqwfg#jmwl#wkfpfsbqbwf#eqln#wkfnfwqlslojwbm#bqfbnbhfp#jw#slppjaofb`hmltofgdfg#wkbwbqdvbaoz#wkf#nlpwwzsf>!wf{w,`pp!=\twkf#JmwfqmbwjlmboB``lqgjmd#wl#wkf#sf>!wf{w,`pp!#,=\t`ljm`jgf#tjwk#wkfwtl.wkjqgp#le#wkfGvqjmd#wkjp#wjnf/gvqjmd#wkf#sfqjlgbmmlvm`fg#wkbw#kfwkf#jmwfqmbwjlmbobmg#nlqf#qf`fmwozafojfufg#wkbw#wkf`lmp`jlvpmfpp#bmgelqnfqoz#hmltm#bppvqqlvmgfg#az#wkfejqpw#bssfbqfg#jml``bpjlmbooz#vpfgslpjwjlm9baplovwf8!#wbqdfw>!\\aobmh!#slpjwjlm9qfobwjuf8wf{w.bojdm9`fmwfq8ib{,ojap,irvfqz,2-ab`hdqlvmg.`lolq9 wzsf>!bssoj`bwjlm,bmdvbdf!#`lmwfmw>!?nfwb#kwws.frvju>!Sqjub`z#Sloj`z?,b=f+!&0@p`qjsw#pq`>$!#wbqdfw>!\\aobmh!=Lm#wkf#lwkfq#kbmg/-isd\x7Fwkvna\x7Fqjdkw\x7F1?,gju=?gju#`obpp>!?gju#pwzof>!eolbw9mjmfwffmwk#`fmwvqz?,algz=\x0E\t?,kwno=\x0E\t?jnd#pq`>!kwws9,,p8wf{w.bojdm9`fmwfqelmw.tfjdkw9#alog8#B``lqgjmd#wl#wkf#gjeefqfm`f#afwtffm!#eqbnfalqgfq>!3!#!#pwzof>!slpjwjlm9ojmh#kqfe>!kwws9,,kwno7,ollpf-gwg!=\tgvqjmd#wkjp#sfqjlg?,wg=?,wq=?,wbaof=`olpfoz#qfobwfg#wlelq#wkf#ejqpw#wjnf8elmw.tfjdkw9alog8jmsvw#wzsf>!wf{w!#?psbm#pwzof>!elmw.lmqfbgzpwbwf`kbmdf\n?gju#`obpp>!`ofbqgl`vnfmw-ol`bwjlm-#Elq#f{bnsof/#wkf#b#tjgf#ubqjfwz#le#?\"GL@WZSF#kwno=\x0E\t?%maps8%maps8%maps8!=?b#kqfe>!kwws9,,pwzof>!eolbw9ofew8`lm`fqmfg#tjwk#wkf>kwws&0B&1E&1Ettt-jm#slsvobq#`vowvqfwzsf>!wf{w,`pp!#,=jw#jp#slppjaof#wl#Kbqubqg#Vmjufqpjwzwzofpkffw!#kqfe>!,wkf#nbjm#`kbqb`wfqL{elqg#Vmjufqpjwz##mbnf>!hfztlqgp!#`pwzof>!wf{w.bojdm9wkf#Vmjwfg#Hjmdglnefgfqbo#dlufqmnfmw?gju#pwzof>!nbqdjm#gfsfmgjmd#lm#wkf#gfp`qjswjlm#le#wkf?gju#`obpp>!kfbgfq-njm-ip!=?,p`qjsw=gfpwqv`wjlm#le#wkfpojdkwoz#gjeefqfmwjm#b``lqgbm`f#tjwkwfof`lnnvmj`bwjlmpjmgj`bwfp#wkbw#wkfpklqwoz#wkfqfbewfqfpsf`jbooz#jm#wkf#Fvqlsfbm#`lvmwqjfpKltfufq/#wkfqf#bqfpq`>!kwws9,,pwbwj`pvddfpwfg#wkbw#wkf!#pq`>!kwws9,,ttt-b#obqdf#mvnafq#le#Wfof`lnnvmj`bwjlmp!#qfo>!mleloolt!#wKloz#Qlnbm#Fnsfqlqbonlpw#f{`ovpjufoz!#alqgfq>!3!#bow>!Pf`qfwbqz#le#Pwbwf`vonjmbwjmd#jm#wkf@JB#Tlqog#Eb`wallhwkf#nlpw#jnslqwbmwbmmjufqpbqz#le#wkfpwzof>!ab`hdqlvmg.?oj=?fn=?b#kqfe>!,wkf#Bwobmwj`#L`fbmpwqj`woz#psfbhjmd/pklqwoz#afelqf#wkfgjeefqfmw#wzsfp#lewkf#Lwwlnbm#Fnsjqf=?jnd#pq`>!kwws9,,Bm#Jmwqlgv`wjlm#wl`lmpfrvfm`f#le#wkfgfsbqwvqf#eqln#wkf@lmefgfqbwf#Pwbwfpjmgjdfmlvp#sflsofpSql`ffgjmdp#le#wkfjmelqnbwjlm#lm#wkfwkflqjfp#kbuf#affmjmuloufnfmw#jm#wkfgjujgfg#jmwl#wkqffbgib`fmw#`lvmwqjfpjp#qfpslmpjaof#elqgjpplovwjlm#le#wkf`loobalqbwjlm#tjwktjgfoz#qfdbqgfg#bpkjp#`lmwfnslqbqjfpelvmgjmd#nfnafq#leGlnjmj`bm#Qfsvaoj`dfmfqbooz#b``fswfgwkf#slppjajojwz#lebqf#bopl#bubjobaofvmgfq#`lmpwqv`wjlmqfpwlqbwjlm#le#wkfwkf#dfmfqbo#svaoj`jp#bonlpw#fmwjqfozsbppfp#wkqlvdk#wkfkbp#affm#pvddfpwfg`lnsvwfq#bmg#ujgflDfqnbmj`#obmdvbdfp#b``lqgjmd#wl#wkf#gjeefqfmw#eqln#wkfpklqwoz#bewfqtbqgpkqfe>!kwwsp9,,ttt-qf`fmw#gfufolsnfmwAlbqg#le#Gjqf`wlqp?gju#`obpp>!pfbq`k\x7F#?b#kqfe>!kwws9,,Jm#sbqwj`vobq/#wkfNvowjsof#ellwmlwfplq#lwkfq#pvapwbm`fwklvpbmgp#le#zfbqpwqbmpobwjlm#le#wkf?,gju=\x0E\t?,gju=\x0E\t\x0E\t?b#kqfe>!jmgf{-skstbp#fpwbaojpkfg#jmnjm-ip!=?,p`qjsw=\tsbqwj`jsbwf#jm#wkfb#pwqlmd#jmeovfm`fpwzof>!nbqdjm.wls9qfsqfpfmwfg#az#wkfdqbgvbwfg#eqln#wkfWqbgjwjlmbooz/#wkfFofnfmw+!p`qjsw!*8Kltfufq/#pjm`f#wkf,gju=\t?,gju=\t?gju#ofew8#nbqdjm.ofew9sqlwf`wjlm#bdbjmpw38#ufqwj`bo.bojdm9Vmelqwvmbwfoz/#wkfwzsf>!jnbdf,{.j`lm,gju=\t?gju#`obpp>!#`obpp>!`ofbqej{!=?gju#`obpp>!ellwfq\n\n?,gju=\t\n\n?,gju=\twkf#nlwjlm#sj`wvqf<}=f<W<_<\\=l=m<V<T<]=f<W<_<\\=l=m<V<T<H<Y<X<Y=l<\\=j<T<T<Q<Y=m<V<R<W=`<V<R=m<R<R<]=e<Y<Q<T<Y=m<R<R<]=e<Y<Q<T=c<S=l<R<_=l<\\<P<P=g<r=n<S=l<\\<^<T=n=`<]<Y=m<S<W<\\=n<Q<R<P<\\=n<Y=l<T<\\<W=g<S<R<[<^<R<W=c<Y=n<S<R=m<W<Y<X<Q<T<Y=l<\\<[<W<T=k<Q=g=i<S=l<R<X=o<V=j<T<T<S=l<R<_=l<\\<P<P<\\<S<R<W<Q<R=m=n=`=b<Q<\\=i<R<X<T=n=m=c<T<[<]=l<\\<Q<Q<R<Y<Q<\\=m<Y<W<Y<Q<T=c<T<[<P<Y<Q<Y<Q<T=c<V<\\=n<Y<_<R=l<T<T<|<W<Y<V=m<\\<Q<X=l\fHJ\fIa\fHY\fHR\fH\\\fHR\fHB\fId\fHD\fIm\fHi\fH^\fHF\fIa\fH\\\fHJ\fHR\fHD\fHA\fHR\fH\\\fHH\fIl\fHC\fHi\fHD\fIm\fHJ\fIk\fHZ\fHU\fHS\fHD\fIa\fHJ\fIl\fHk\fHn\fHM\fHS\fHC\fHR\fHJ\fHS\fH^\fIa\fH^\fIl\fHi\fHK\fHS\fHy\fHR\fH\\\fHY\fIl\fHM\fHS\fHC\fIg\fHv\fHS\fHs\fIa\fHL\fIk\fHT\fHB\fHR\fHv\fHR\fH\\\fHp\fHn\fHy\fIa\fHZ\fHD\fHJ\fIm\fHD\fHS\fHC\fHR\fHF\fIa\fH\\\fHC\fIg\fH{\fHi\fHD\fIm\fHT\fHR\fH\\\fH}\fHD\fH^\fHR\fHk\fHD\fHF\fHR\fH\\\fIa\fHs\fIl\fHZ\fH\\\fIa\fHH\fIg\fHn\fH^\fIg\fHy\fHT\fHA\fHR\fHG\fHP\fIa\fH^\fId\fHZ\fHZ\fH\\\fIa\fHH\fIk\fHn\fHF\fIa\fH\\\fHJ\fIk\fHZ\fHF\fIa\fH^\fIk\fHC\fH\\\fHy\fIk\fHn\fHJ\fIa\fH\\\fHT\fIa\fHI\fHS\fHH\fHS\fHe\fHH\fIa\fHF\fHR\fHJ\fHe\fHD\fIa\fHU\fIk\fHn\fHv\fHS\fHs\fIa\fHL\fHR\fHC\fHR\fHH\fIa\fH\\\fHR\fHp\fIa\fHC\fHR\fHJ\fHR\fHF\fIm\fH\\\fHR\fHD\fIk\fHp\fIg\fHM\fHP\fIk\fHn\fHi\fHD\fIm\fHY\fHR\fHJ\fHZ\fIa\fH\\\fIk\fHO\fIl\fHZ\fHS\fHy\fIa\fH[\fHR\fHT\fH\\\fHy\fHR\fH\\\fIl\fHT\fHn\fH{\fIa\fH\\\fHU\fHF\fH\\\fHS\fHO\fHR\fHB\fH@\fIa\fH\\\fHR\fHn\fHM\fH@\fHv\fIa\fHv\fIg\fHn\fHe\fHF\fH^\fH@\fIa\fHK\fHB\fHn\fHH\fIa\fH\\\fIl\fHT\fHn\fHF\fH\\\fIa\fHy\fHe\fHB\fIa\fHB\fIl\fHJ\fHB\fHR\fHK\fIa\fHC\fHB\fHT\fHU\fHR\fHC\fHH\fHR\fHZ\fH@\fIa\fHJ\fIg\fHn\fHB\fIl\fHM\fHS\fHC\fHR\fHj\fHd\fHF\fIl\fHc\fH^\fHB\fIg\fH@\fHR\fHk\fH^\fHT\fHn\fHz\fIa\fHC\fHR\fHj\fHF\fH\\\fIk\fHZ\fHD\fHi\fHD\fIm\fH@\fHn\fHK\fH@\fHR\fHp\fHP\fHR\fH\\\fHD\fHY\fIl\fHD\fHH\fHB\fHF\fIa\fH\\\fHB\fIm\fHz\fHF\fIa\fH\\\fHZ\fIa\fHD\fHF\fH\\\fHS\fHY\fHR\fH\\\fHD\fIm\fHy\fHT\fHR\fHD\fHT\fHB\fH\\\fIa\fHI\fHD\fHj\fHC\fIg\fHp\fHS\fHH\fHT\fIg\fHB\fHY\fHR\fH\\4K5h5i4X4K4]5o4K4F4K5h5i5j4F4C5f4K4F4K5h5o5i4D5f5d4F4]4K5h5i4X4K5k4C4K4F4U4C4C4K5h4^5d4K4]4U4C4C4K5h4]4C5d4C4K5h4I4_5h4K5i5f4E4K5h5m5d4F5d4X5d4D4K5h5i4_4K4D5n4K4F4K5h5i4U5h5d5i4K4F4K5h5i4_5h4_5h4K4F4K5h4@4]4K5m5f5o4_4K5h4K4_5h4K5i5f4E4K5h4K4F4Y4K5h4K4Fhfztlqgp!#`lmwfmw>!t0-lqd,2:::,{kwno!=?b#wbqdfw>!\\aobmh!#wf{w,kwno8#`kbqpfw>!#wbqdfw>!\\aobmh!=?wbaof#`foosbggjmd>!bvwl`lnsofwf>!lee!#wf{w.bojdm9#`fmwfq8wl#obpw#ufqpjlm#az#ab`hdqlvmg.`lolq9# !#kqfe>!kwws9,,ttt-,gju=?,gju=?gju#jg>?b#kqfe>! !#`obpp>!!=?jnd#pq`>!kwws9,,`qjsw!#pq`>!kwws9,,\t?p`qjsw#obmdvbdf>!,,FM!#!kwws9,,ttt-tfm`lgfVQJ@lnslmfmw+!#kqfe>!ibubp`qjsw9?gju#`obpp>!`lmwfmwgl`vnfmw-tqjwf+$?p`slpjwjlm9#baplovwf8p`qjsw#pq`>!kwws9,,#pwzof>!nbqdjm.wls9-njm-ip!=?,p`qjsw=\t?,gju=\t?gju#`obpp>!t0-lqd,2:::,{kwno!#\t\x0E\t?,algz=\x0E\t?,kwno=gjpwjm`wjlm#afwtffm,!#wbqdfw>!\\aobmh!=?ojmh#kqfe>!kwws9,,fm`lgjmd>!vwe.;!<=\tt-bggFufmwOjpwfmfq<b`wjlm>!kwws9,,ttt-j`lm!#kqfe>!kwws9,,#pwzof>!ab`hdqlvmg9wzsf>!wf{w,`pp!#,=\tnfwb#sqlsfqwz>!ld9w?jmsvw#wzsf>!wf{w!##pwzof>!wf{w.bojdm9wkf#gfufolsnfmw#le#wzofpkffw!#wzsf>!wfkwno8#`kbqpfw>vwe.;jp#`lmpjgfqfg#wl#afwbaof#tjgwk>!233&!#Jm#bggjwjlm#wl#wkf#`lmwqjavwfg#wl#wkf#gjeefqfm`fp#afwtffmgfufolsnfmw#le#wkf#Jw#jp#jnslqwbmw#wl#?,p`qjsw=\t\t?p`qjsw##pwzof>!elmw.pjyf92=?,psbm=?psbm#jg>daOjaqbqz#le#@lmdqfpp?jnd#pq`>!kwws9,,jnFmdojpk#wqbmpobwjlmB`bgfnz#le#P`jfm`fpgju#pwzof>!gjpsobz9`lmpwqv`wjlm#le#wkf-dfwFofnfmwAzJg+jg*jm#`lmivm`wjlm#tjwkFofnfmw+$p`qjsw$*8#?nfwb#sqlsfqwz>!ld9<}=f<W<_<\\=l=m<V<T\t#wzsf>!wf{w!#mbnf>!=Sqjub`z#Sloj`z?,b=bgnjmjpwfqfg#az#wkffmbaofPjmdofQfrvfpwpwzof>%rvlw8nbqdjm9?,gju=?,gju=?,gju=?=?jnd#pq`>!kwws9,,j#pwzof>%rvlw8eolbw9qfefqqfg#wl#bp#wkf#wlwbo#slsvobwjlm#lejm#Tbpkjmdwlm/#G-@-#pwzof>!ab`hdqlvmg.bnlmd#lwkfq#wkjmdp/lqdbmjybwjlm#le#wkfsbqwj`jsbwfg#jm#wkfwkf#jmwqlgv`wjlm#lejgfmwjejfg#tjwk#wkfej`wjlmbo#`kbqb`wfq#L{elqg#Vmjufqpjwz#njpvmgfqpwbmgjmd#leWkfqf#bqf/#kltfufq/pwzofpkffw!#kqfe>!,@lovnajb#Vmjufqpjwzf{sbmgfg#wl#jm`ovgfvpvbooz#qfefqqfg#wljmgj`bwjmd#wkbw#wkfkbuf#pvddfpwfg#wkbwbeejojbwfg#tjwk#wkf`lqqfobwjlm#afwtffmmvnafq#le#gjeefqfmw=?,wg=?,wq=?,wbaof=Qfsvaoj`#le#Jqfobmg\t?,p`qjsw=\t?p`qjsw#vmgfq#wkf#jmeovfm`f`lmwqjavwjlm#wl#wkfLeej`jbo#tfapjwf#lekfbgrvbqwfqp#le#wkf`fmwfqfg#bqlvmg#wkfjnsoj`bwjlmp#le#wkfkbuf#affm#gfufolsfgEfgfqbo#Qfsvaoj`#leaf`bnf#jm`qfbpjmdoz`lmwjmvbwjlm#le#wkfMlwf/#kltfufq/#wkbwpjnjobq#wl#wkbw#le#`bsbajojwjfp#le#wkfb``lqgbm`f#tjwk#wkfsbqwj`jsbmwp#jm#wkfevqwkfq#gfufolsnfmwvmgfq#wkf#gjqf`wjlmjp#lewfm#`lmpjgfqfgkjp#zlvmdfq#aqlwkfq?,wg=?,wq=?,wbaof=?b#kwws.frvju>![.VB.skzpj`bo#sqlsfqwjfple#Aqjwjpk#@lovnajbkbp#affm#`qjwj`jyfg+tjwk#wkf#f{`fswjlmrvfpwjlmp#balvw#wkfsbppjmd#wkqlvdk#wkf3!#`foosbggjmd>!3!#wklvpbmgp#le#sflsofqfgjqf`wp#kfqf-#Elqkbuf#`kjogqfm#vmgfq&0F&0@,p`qjsw&0F!**8?b#kqfe>!kwws9,,ttt-?oj=?b#kqfe>!kwws9,,pjwf\\mbnf!#`lmwfmw>!wf{w.gf`lqbwjlm9mlmfpwzof>!gjpsobz9#mlmf?nfwb#kwws.frvju>![.mft#Gbwf+*-dfwWjnf+*#wzsf>!jnbdf,{.j`lm!?,psbm=?psbm#`obpp>!obmdvbdf>!ibubp`qjswtjmglt-ol`bwjlm-kqfe?b#kqfe>!ibubp`qjsw9..=\x0E\t?p`qjsw#wzsf>!w?b#kqfe>$kwws9,,ttt-klqw`vw#j`lm!#kqfe>!?,gju=\x0E\t?gju#`obpp>!?p`qjsw#pq`>!kwws9,,!#qfo>!pwzofpkffw!#w?,gju=\t?p`qjsw#wzsf>,b=#?b#kqfe>!kwws9,,#booltWqbmpsbqfm`z>![.VB.@lnsbwjaof!#`lmqfobwjlmpkjs#afwtffm\t?,p`qjsw=\x0E\t?p`qjsw#?,b=?,oj=?,vo=?,gju=bppl`jbwfg#tjwk#wkf#sqldqbnnjmd#obmdvbdf?,b=?b#kqfe>!kwws9,,?,b=?,oj=?oj#`obpp>!elqn#b`wjlm>!kwws9,,?gju#pwzof>!gjpsobz9wzsf>!wf{w!#mbnf>!r!?wbaof#tjgwk>!233&!#ab`hdqlvmg.slpjwjlm9!#alqgfq>!3!#tjgwk>!qfo>!pklqw`vw#j`lm!#k5=?vo=?oj=?b#kqfe>!##?nfwb#kwws.frvju>!`pp!#nfgjb>!p`qffm!#qfpslmpjaof#elq#wkf#!#wzsf>!bssoj`bwjlm,!#pwzof>!ab`hdqlvmg.kwno8#`kbqpfw>vwe.;!#booltwqbmpsbqfm`z>!pwzofpkffw!#wzsf>!wf\x0E\t?nfwb#kwws.frvju>!=?,psbm=?psbm#`obpp>!3!#`foopsb`jmd>!3!=8\t?,p`qjsw=\t?p`qjsw#plnfwjnfp#`boofg#wkfglfp#mlw#mf`fppbqjozElq#nlqf#jmelqnbwjlmbw#wkf#afdjmmjmd#le#?\"GL@WZSF#kwno=?kwnosbqwj`vobqoz#jm#wkf#wzsf>!kjggfm!#mbnf>!ibubp`qjsw9uljg+3*8!feef`wjufmfpp#le#wkf#bvwl`lnsofwf>!lee!#dfmfqbooz#`lmpjgfqfg=?jmsvw#wzsf>!wf{w!#!=?,p`qjsw=\x0E\t?p`qjswwkqlvdklvw#wkf#tlqog`lnnlm#njp`lm`fswjlmbppl`jbwjlm#tjwk#wkf?,gju=\t?,gju=\t?gju#`gvqjmd#kjp#ojefwjnf/`lqqfpslmgjmd#wl#wkfwzsf>!jnbdf,{.j`lm!#bm#jm`qfbpjmd#mvnafqgjsolnbwj`#qfobwjlmpbqf#lewfm#`lmpjgfqfgnfwb#`kbqpfw>!vwe.;!#?jmsvw#wzsf>!wf{w!#f{bnsofp#jm`ovgf#wkf!=?jnd#pq`>!kwws9,,jsbqwj`jsbwjlm#jm#wkfwkf#fpwbaojpknfmw#le\t?,gju=\t?gju#`obpp>!%bns8maps8%bns8maps8wl#gfwfqnjmf#tkfwkfqrvjwf#gjeefqfmw#eqlnnbqhfg#wkf#afdjmmjmdgjpwbm`f#afwtffm#wkf`lmwqjavwjlmp#wl#wkf`lmeoj`w#afwtffm#wkftjgfoz#`lmpjgfqfg#wltbp#lmf#le#wkf#ejqpwtjwk#ubqzjmd#gfdqffpkbuf#psf`vobwfg#wkbw+gl`vnfmw-dfwFofnfmwsbqwj`jsbwjmd#jm#wkflqjdjmbooz#gfufolsfgfwb#`kbqpfw>!vwe.;!=#wzsf>!wf{w,`pp!#,=\tjmwfq`kbmdfbaoz#tjwknlqf#`olpfoz#qfobwfgpl`jbo#bmg#slojwj`bowkbw#tlvog#lwkfqtjpfsfqsfmgj`vobq#wl#wkfpwzof#wzsf>!wf{w,`ppwzsf>!pvanjw!#mbnf>!ebnjojfp#qfpjgjmd#jmgfufolsjmd#`lvmwqjfp`lnsvwfq#sqldqbnnjmdf`lmlnj`#gfufolsnfmwgfwfqnjmbwjlm#le#wkfelq#nlqf#jmelqnbwjlmlm#pfufqbo#l``bpjlmpslqwvdv/Fp#+Fvqlsfv*<O<V=l<\\={<Q=m=`<V<\\=o<V=l<\\={<Q=m=`<V<\\<L<R=m=m<T<U=m<V<R<U<P<\\=n<Y=l<T<\\<W<R<^<T<Q=h<R=l<P<\\=j<T<T=o<S=l<\\<^<W<Y<Q<T=c<Q<Y<R<]=i<R<X<T<P<R<T<Q=h<R=l<P<\\=j<T=c<t<Q=h<R=l<P<\\=j<T=c<L<Y=m<S=o<]<W<T<V<T<V<R<W<T=k<Y=m=n<^<R<T<Q=h<R=l<P<\\=j<T=b=n<Y=l=l<T=n<R=l<T<T<X<R=m=n<\\=n<R=k<Q<R4K5h5i4F5d4K4@4C5d5j4K5h4K4X4F4]4K5o4K4F4K5h4K5n4F4]4K4A4K4Fkwno8#`kbqpfw>VWE.;!#pfwWjnflvw+evm`wjlm+*gjpsobz9jmojmf.aol`h8?jmsvw#wzsf>!pvanjw!#wzsf#>#$wf{w,ibubp`qj?jnd#pq`>!kwws9,,ttt-!#!kwws9,,ttt-t0-lqd,pklqw`vw#j`lm!#kqfe>!!#bvwl`lnsofwf>!lee!#?,b=?,gju=?gju#`obpp>?,b=?,oj=\t?oj#`obpp>!`pp!#wzsf>!wf{w,`pp!#?elqn#b`wjlm>!kwws9,,{w,`pp!#kqfe>!kwws9,,ojmh#qfo>!bowfqmbwf!#\x0E\t?p`qjsw#wzsf>!wf{w,#lm`oj`h>!ibubp`qjsw9+mft#Gbwf*-dfwWjnf+*~kfjdkw>!2!#tjgwk>!2!#Sflsof$p#Qfsvaoj`#le##?b#kqfe>!kwws9,,ttt-wf{w.gf`lqbwjlm9vmgfqwkf#afdjmmjmd#le#wkf#?,gju=\t?,gju=\t?,gju=\tfpwbaojpknfmw#le#wkf#?,gju=?,gju=?,gju=?,g ujftslqwxnjm.kfjdkw9\t?p`qjsw#pq`>!kwws9,,lswjlm=?lswjlm#ubovf>lewfm#qfefqqfg#wl#bp#,lswjlm=\t?lswjlm#ubov?\"GL@WZSF#kwno=\t?\"..XJmwfqmbwjlmbo#Bjqslqw=\t?b#kqfe>!kwws9,,ttt?,b=?b#kqfe>!kwws9,,t\fTL\fT^\fTE\fT^\fUh\fT{\fTN\roI\ro|\roL\ro{\roO\rov\rot\nAO\x05Gx\bTA\nzk#+\x0BUm\x05Gx*\fHD\fHS\fH\\\fIa\fHJ\fIk\fHZ\fHM\fHR\fHe\fHD\fH^\fIg\fHM\fHy\fIa\fH[\fIk\fHH\fIa\fH\\\fHp\fHR\fHD\fHy\fHR\fH\\\fIl\fHT\fHn\fH@\fHn\fHK\fHS\fHH\fHT\fIa\fHI\fHR\fHF\fHD\fHR\fHT\fIa\fHY\fIl\fHy\fHR\fH\\\fHT\fHn\fHT\fIa\fHy\fH\\\fHO\fHT\fHR\fHB\fH{\fIa\fH\\\fIl\fHv\fHS\fHs\fIa\fHL\fIg\fHn\fHY\fHS\fHp\fIa\fHr\fHR\fHD\fHi\fHB\fIk\fH\\\fHS\fHy\fHR\fHY\fHS\fHA\fHS\fHD\fIa\fHD\fH{\fHR\fHM\fHS\fHC\fHR\fHm\fHy\fIa\fHC\fIg\fHn\fHy\fHS\fHT\fIm\fH\\\fHy\fIa\fH[\fHR\fHF\fHU\fIm\fHm\fHv\fHH\fIl\fHF\fIa\fH\\\fH@\fHn\fHK\fHD\fHs\fHS\fHF\fIa\fHF\fHO\fIl\fHy\fIa\fH\\\fHS\fHy\fIk\fHs\fHF\fIa\fH\\\fHR\fH\\\fHn\fHA\fHF\fIa\fH\\\fHR\fHF\fIa\fHH\fHB\fHR\fH^\fHS\fHy\fIg\fHn\fH\\\fHG\fHP\fIa\fHH\fHR\fH\\\fHD\fHS\fH\\\fIa\fHB\fHR\fHO\fH^\fHS\fHB\fHS\fHs\fIk\fHMgfp`qjswjlm!#`lmwfmw>!gl`vnfmw-ol`bwjlm-sqlw-dfwFofnfmwpAzWbdMbnf+?\"GL@WZSF#kwno=\t?kwno#?nfwb#`kbqpfw>!vwe.;!=9vqo!#`lmwfmw>!kwws9,,-`pp!#qfo>!pwzofpkffw!pwzof#wzsf>!wf{w,`pp!=wzsf>!wf{w,`pp!#kqfe>!t0-lqd,2:::,{kwno!#{nowzsf>!wf{w,ibubp`qjsw!#nfwklg>!dfw!#b`wjlm>!ojmh#qfo>!pwzofpkffw!##>#gl`vnfmw-dfwFofnfmwwzsf>!jnbdf,{.j`lm!#,=`foosbggjmd>!3!#`foops-`pp!#wzsf>!wf{w,`pp!#?,b=?,oj=?oj=?b#kqfe>!!#tjgwk>!2!#kfjdkw>!2!!=?b#kqfe>!kwws9,,ttt-pwzof>!gjpsobz9mlmf8!=bowfqmbwf!#wzsf>!bssoj.,,T0@,,GWG#[KWNO#2-3#foopsb`jmd>!3!#`foosbg#wzsf>!kjggfm!#ubovf>!,b=%maps8?psbm#qlof>!p\t?jmsvw#wzsf>!kjggfm!#obmdvbdf>!IbubP`qjsw!##gl`vnfmw-dfwFofnfmwpAd>!3!#`foopsb`jmd>!3!#zsf>!wf{w,`pp!#nfgjb>!wzsf>$wf{w,ibubp`qjsw$tjwk#wkf#f{`fswjlm#le#zsf>!wf{w,`pp!#qfo>!pw#kfjdkw>!2!#tjgwk>!2!#>$(fm`lgfVQJ@lnslmfmw+?ojmh#qfo>!bowfqmbwf!#\talgz/#wq/#jmsvw/#wf{wnfwb#mbnf>!qlalwp!#`lmnfwklg>!slpw!#b`wjlm>!=\t?b#kqfe>!kwws9,,ttt-`pp!#qfo>!pwzofpkffw!#?,gju=?,gju=?gju#`obppobmdvbdf>!ibubp`qjsw!=bqjb.kjggfm>!wqvf!=.[?qjsw!#wzsf>!wf{w,ibubpo>38~*+*8\t+evm`wjlm+*xab`hdqlvmg.jnbdf9#vqo+,b=?,oj=?oj=?b#kqfe>!k\n\n?oj=?b#kqfe>!kwws9,,bwlq!#bqjb.kjggfm>!wqv=#?b#kqfe>!kwws9,,ttt-obmdvbdf>!ibubp`qjsw!#,lswjlm=\t?lswjlm#ubovf,gju=?,gju=?gju#`obpp>qbwlq!#bqjb.kjggfm>!wqf>+mft#Gbwf*-dfwWjnf+*slqwvdv/Fp#+gl#Aqbpjo*<R=l<_<\\<Q<T<[<\\=j<T<T<^<R<[<P<R<Z<Q<R=m=n=`<R<]=l<\\<[<R<^<\\<Q<T=c=l<Y<_<T=m=n=l<\\=j<T<T<^<R<[<P<R<Z<Q<R=m=n<T<R<]=c<[<\\=n<Y<W=`<Q<\\?\"GL@WZSF#kwno#SVAOJ@#!mw.Wzsf!#`lmwfmw>!wf{w,?nfwb#kwws.frvju>!@lmwfqbmpjwjlmbo,,FM!#!kwws9?kwno#{nomp>!kwws9,,ttt.,,T0@,,GWG#[KWNO#2-3#WGWG,{kwno2.wqbmpjwjlmbo,,ttt-t0-lqd,WQ,{kwno2,sf#>#$wf{w,ibubp`qjsw$8?nfwb#mbnf>!gfp`qjswjlmsbqfmwMlgf-jmpfqwAfelqf?jmsvw#wzsf>!kjggfm!#mbip!#wzsf>!wf{w,ibubp`qj+gl`vnfmw*-qfbgz+evm`wjp`qjsw#wzsf>!wf{w,ibubpjnbdf!#`lmwfmw>!kwws9,,VB.@lnsbwjaof!#`lmwfmw>wno8#`kbqpfw>vwe.;!#,=\tojmh#qfo>!pklqw`vw#j`lm?ojmh#qfo>!pwzofpkffw!#?,p`qjsw=\t?p`qjsw#wzsf>>#gl`vnfmw-`qfbwfFofnfm?b#wbqdfw>!\\aobmh!#kqfe>#gl`vnfmw-dfwFofnfmwpAjmsvw#wzsf>!wf{w!#mbnf>b-wzsf#>#$wf{w,ibubp`qjmsvw#wzsf>!kjggfm!#mbnfkwno8#`kbqpfw>vwe.;!#,=gwg!=\t?kwno#{nomp>!kwws.,,T0@,,GWG#KWNO#7-32#WfmwpAzWbdMbnf+$p`qjsw$*jmsvw#wzsf>!kjggfm!#mbn?p`qjsw#wzsf>!wf{w,ibubp!#pwzof>!gjpsobz9mlmf8!=gl`vnfmw-dfwFofnfmwAzJg+>gl`vnfmw-`qfbwfFofnfmw+$#wzsf>$wf{w,ibubp`qjsw$jmsvw#wzsf>!wf{w!#mbnf>!g-dfwFofnfmwpAzWbdMbnf+pmj`bo!#kqfe>!kwws9,,ttt-@,,GWG#KWNO#7-32#Wqbmpjw?pwzof#wzsf>!wf{w,`pp!=\t\t?pwzof#wzsf>!wf{w,`pp!=jlmbo-gwg!=\t?kwno#{nomp>kwws.frvju>!@lmwfmw.Wzsfgjmd>!3!#`foopsb`jmd>!3!kwno8#`kbqpfw>vwe.;!#,=\t#pwzof>!gjpsobz9mlmf8!=??oj=?b#kqfe>!kwws9,,ttt-#wzsf>$wf{w,ibubp`qjsw$=<X<Y=c=n<Y<W=`<Q<R=m=n<T=m<R<R=n<^<Y=n=m=n<^<T<T<S=l<R<T<[<^<R<X=m=n<^<\\<]<Y<[<R<S<\\=m<Q<R=m=n<T\fHF\fIm\fHT\fIa\fHH\fHS\fHy\fHR\fHy\fHR\fHn\fH{\fIa\fH\\\fIk\fHT\fHe\fHD\fIa\fHU\fIg\fHn\fHD\fIk\fHY\fHS\fHK\fHR\fHD\fHT\fHA\fHR\fHG\fHS\fHy\fIa\fHT\fHS\fHn\fH{\fHT\fIm\fH\\\fHy\fIa\fH[\fHS\fHH\fHy\fIe\fHF\fIl\fH\\\fHR\fHk\fHs\fHY\fHS\fHp\fIa\fHr\fHR\fHF\fHD\fHy\fHR\fH\\\fIa\fH\\\fHY\fHR\fHd\fHT\fHy\fIa\fH\\\fHS\fHC\fHH\fHR", "\u06F7%\u018C'T%\x85'W%\xD7%O%g%\xA6&\u0193%\u01E5&>&*&'&^&\x88\u0178\u0C3E&\u01AD&\u0192&)&^&%&'&\x82&P&1&\xB1&3&]&m&u&E&t&C&\xCF&V&V&/&>&6&\u0F76\u177Co&p&@&E&M&P&x&@&F&e&\xCC&7&:&(&D&0&C&)&.&F&-&1&(&L&F&1\u025E*\u03EA\u21F3&\u1372&K&;&)&E&H&P&0&?&9&V&\x81&-&v&a&,&E&)&?&=&'&'&B&\u0D2E&\u0503&\u0316*&*8&%&%&&&%,)&\x9A&>&\x86&7&]&F&2&>&J&6&n&2&%&?&\x8E&2&6&J&g&-&0&,&*&J&*&O&)&6&(&<&B&N&.&P&@&2&.&W&M&%\u053C\x84(,(<&,&\u03DA&\u18C7&-&,(%&(&%&(\u013B0&X&D&\x81&j&'&J&(&.&B&3&Z&R&h&3&E&E&<\xC6-\u0360\u1EF3&%8?&@&,&Z&@&0&J&,&^&x&_&6&C&6&C\u072C\u2A25&f&-&-&-&-&,&J&2&8&z&8&C&Y&8&-&d&\u1E78\xCC-&7&1&F&7&t&W&7&I&.&.&^&=\u0F9C\u19D3&8(>&/&/&\u077B')'\u1065')'%@/&0&%\u043E\u09C0*&*@&C\u053D\u05D4\u0274\u05EB4\u0DD7\u071A\u04D16\u0D84&/\u0178\u0303Z&*%\u0246\u03FF&\u0134&1\xA8\u04B4\u0174", dictionarySizeBits, "AAAAKKLLKKKKKJJIHHIHHGGFF");
|
|
9390
|
+
setData(dictionaryData, dictionarySizeBits);
|
|
9391
|
+
function InputStream(data) {
|
|
9392
|
+
this.data = new Int8Array(0);
|
|
9393
|
+
this.offset = 0;
|
|
9394
|
+
this.data = data;
|
|
9395
|
+
}
|
|
9396
|
+
function readInput(s, dst, offset, length) {
|
|
9397
|
+
if (s.input === null) {
|
|
9398
|
+
return -1;
|
|
9399
|
+
}
|
|
9400
|
+
const src = s.input;
|
|
9401
|
+
const end = Math.min(src.offset + length, src.data.length);
|
|
9402
|
+
const bytesRead = end - src.offset;
|
|
9403
|
+
dst.set(src.data.subarray(src.offset, end), offset);
|
|
9404
|
+
src.offset += bytesRead;
|
|
9405
|
+
return bytesRead;
|
|
9406
|
+
}
|
|
9407
|
+
function closeInput(s) {
|
|
9408
|
+
s.input = new InputStream(new Int8Array(0));
|
|
9409
|
+
}
|
|
9410
|
+
function toUsAsciiBytes(src) {
|
|
9411
|
+
const n = src.length;
|
|
9412
|
+
const result = new Int8Array(n);
|
|
9413
|
+
for (let i = 0; i < n; ++i) {
|
|
9414
|
+
result[i] = src.charCodeAt(i);
|
|
9415
|
+
}
|
|
9416
|
+
return result;
|
|
9417
|
+
}
|
|
9418
|
+
function toUtf8Runes(src) {
|
|
9419
|
+
const n = src.length;
|
|
9420
|
+
const result = new Int32Array(n);
|
|
9421
|
+
for (let i = 0; i < n; ++i) {
|
|
9422
|
+
result[i] = src.charCodeAt(i);
|
|
9423
|
+
}
|
|
9424
|
+
return result;
|
|
9425
|
+
}
|
|
9426
|
+
function makeError(s, code) {
|
|
9427
|
+
if (code >= 0) {
|
|
9428
|
+
return code;
|
|
9429
|
+
}
|
|
9430
|
+
if (s.runningState >= 0) {
|
|
9431
|
+
s.runningState = code;
|
|
9432
|
+
}
|
|
9433
|
+
throw new Error("Brotli error code: " + code);
|
|
9434
|
+
}
|
|
9435
|
+
let ByteBuffer;
|
|
9436
|
+
function decode(bytes, options) {
|
|
9437
|
+
let s = new State();
|
|
9438
|
+
s.input = new InputStream(bytes);
|
|
9439
|
+
initState(s);
|
|
9440
|
+
if (options) {
|
|
9441
|
+
let customDictionary = options["customDictionary"];
|
|
9442
|
+
if (customDictionary) attachDictionaryChunk(s, customDictionary);
|
|
9443
|
+
}
|
|
9444
|
+
let totalOutput = 0;
|
|
9445
|
+
let chunks = [];
|
|
9446
|
+
while (true) {
|
|
9447
|
+
let chunk = new Int8Array(16384);
|
|
9448
|
+
chunks.push(chunk);
|
|
9449
|
+
s.output = chunk;
|
|
9450
|
+
s.outputOffset = 0;
|
|
9451
|
+
s.outputLength = 16384;
|
|
9452
|
+
s.outputUsed = 0;
|
|
9453
|
+
decompress(s);
|
|
9454
|
+
totalOutput += s.outputUsed;
|
|
9455
|
+
if (s.outputUsed < 16384) break;
|
|
9456
|
+
}
|
|
9457
|
+
close(s);
|
|
9458
|
+
closeInput(s);
|
|
9459
|
+
let result = new Int8Array(totalOutput);
|
|
9460
|
+
let offset = 0;
|
|
9461
|
+
for (let i = 0; i < chunks.length; ++i) {
|
|
9462
|
+
let chunk = chunks[i];
|
|
9463
|
+
let end = Math.min(totalOutput, offset + 16384);
|
|
9464
|
+
let len = end - offset;
|
|
9465
|
+
if (len < 16384) {
|
|
9466
|
+
result.set(chunk.subarray(0, len), offset);
|
|
9467
|
+
} else {
|
|
9468
|
+
result.set(chunk, offset);
|
|
9469
|
+
}
|
|
9470
|
+
offset += len;
|
|
9471
|
+
}
|
|
9472
|
+
return result;
|
|
9473
|
+
}
|
|
9474
|
+
return decode;
|
|
9475
|
+
};
|
|
9476
|
+
let BrotliDecode = makeBrotliDecode();
|
|
9477
|
+
;// ./src/core/brotli_stream.js
|
|
9478
|
+
|
|
9479
|
+
|
|
9480
|
+
|
|
9481
|
+
class BrotliStream extends DecodeStream {
|
|
9482
|
+
#isAsync = true;
|
|
9483
|
+
constructor(stream, maybeLength) {
|
|
9484
|
+
super(maybeLength);
|
|
9485
|
+
this.stream = stream;
|
|
9486
|
+
this.dict = stream.dict;
|
|
9487
|
+
}
|
|
9488
|
+
readBlock() {
|
|
9489
|
+
const bytes = this.stream.getBytes();
|
|
9490
|
+
const decodedData = BrotliDecode(new Int8Array(bytes.buffer, bytes.byteOffset, bytes.length));
|
|
9491
|
+
this.buffer = new Uint8Array(decodedData.buffer, decodedData.byteOffset, decodedData.length);
|
|
9492
|
+
this.bufferLength = this.buffer.length;
|
|
9493
|
+
this.eof = true;
|
|
9494
|
+
}
|
|
9495
|
+
async getImageData(length, _decoderOptions) {
|
|
9496
|
+
const data = await this.asyncGetBytes();
|
|
9497
|
+
if (!data) {
|
|
9498
|
+
return this.getBytes(length);
|
|
9499
|
+
}
|
|
9500
|
+
if (data.length <= length) {
|
|
9501
|
+
return data;
|
|
9502
|
+
}
|
|
9503
|
+
return data.subarray(0, length);
|
|
9504
|
+
}
|
|
9505
|
+
async asyncGetBytes() {
|
|
9506
|
+
const {
|
|
9507
|
+
decompressed,
|
|
9508
|
+
compressed
|
|
9509
|
+
} = await this.asyncGetBytesFromDecompressionStream("brotli");
|
|
9510
|
+
if (decompressed) {
|
|
9511
|
+
return decompressed;
|
|
9512
|
+
}
|
|
9513
|
+
this.#isAsync = false;
|
|
9514
|
+
this.stream = new Stream(compressed, 0, compressed.length, this.stream.dict);
|
|
9515
|
+
this.reset();
|
|
9516
|
+
return null;
|
|
9517
|
+
}
|
|
9518
|
+
get isAsync() {
|
|
9519
|
+
return this.#isAsync;
|
|
9520
|
+
}
|
|
9521
|
+
}
|
|
9522
|
+
|
|
7492
9523
|
;// ./src/core/ccitt.js
|
|
7493
9524
|
|
|
7494
9525
|
const ccittEOL = -2;
|
|
@@ -7509,19 +9540,29 @@ const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1
|
|
|
7509
9540
|
const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];
|
|
7510
9541
|
const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];
|
|
7511
9542
|
class CCITTFaxDecoder {
|
|
7512
|
-
constructor(source, options = {
|
|
9543
|
+
constructor(source, options = {
|
|
9544
|
+
K: 0,
|
|
9545
|
+
EndOfLine: false,
|
|
9546
|
+
EncodedByteAlign: false,
|
|
9547
|
+
Columns: 1728,
|
|
9548
|
+
Rows: 0,
|
|
9549
|
+
EndOfBlock: true,
|
|
9550
|
+
BlackIs1: false
|
|
9551
|
+
}) {
|
|
7513
9552
|
if (typeof source?.next !== "function") {
|
|
7514
9553
|
throw new Error('CCITTFaxDecoder - invalid "source" parameter.');
|
|
7515
9554
|
}
|
|
7516
9555
|
this.source = source;
|
|
7517
9556
|
this.eof = false;
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
9557
|
+
({
|
|
9558
|
+
K: this.encoding,
|
|
9559
|
+
EndOfLine: this.eoline,
|
|
9560
|
+
EncodedByteAlign: this.byteAlign,
|
|
9561
|
+
Columns: this.columns,
|
|
9562
|
+
Rows: this.rows,
|
|
9563
|
+
EndOfBlock: this.eoblock,
|
|
9564
|
+
BlackIs1: this.black
|
|
9565
|
+
} = options);
|
|
7525
9566
|
this.codingLine = new Uint32Array(this.columns + 1);
|
|
7526
9567
|
this.refLine = new Uint32Array(this.columns + 2);
|
|
7527
9568
|
this.codingLine[0] = this.columns;
|
|
@@ -8003,42 +10044,91 @@ class CCITTFaxDecoder {
|
|
|
8003
10044
|
|
|
8004
10045
|
|
|
8005
10046
|
|
|
10047
|
+
|
|
10048
|
+
|
|
8006
10049
|
class CCITTFaxStream extends DecodeStream {
|
|
8007
10050
|
constructor(str, maybeLength, params) {
|
|
8008
10051
|
super(maybeLength);
|
|
8009
10052
|
this.stream = str;
|
|
10053
|
+
this.maybeLength = maybeLength;
|
|
8010
10054
|
this.dict = str.dict;
|
|
8011
10055
|
if (!(params instanceof Dict)) {
|
|
8012
10056
|
params = Dict.empty;
|
|
8013
10057
|
}
|
|
10058
|
+
this.params = {
|
|
10059
|
+
K: params.get("K") || 0,
|
|
10060
|
+
EndOfLine: !!params.get("EndOfLine"),
|
|
10061
|
+
EncodedByteAlign: !!params.get("EncodedByteAlign"),
|
|
10062
|
+
Columns: params.get("Columns") || 1728,
|
|
10063
|
+
Rows: params.get("Rows") || 0,
|
|
10064
|
+
EndOfBlock: !!(params.get("EndOfBlock") ?? true),
|
|
10065
|
+
BlackIs1: !!params.get("BlackIs1")
|
|
10066
|
+
};
|
|
10067
|
+
}
|
|
10068
|
+
get bytes() {
|
|
10069
|
+
return shadow(this, "bytes", this.stream.getBytes(this.maybeLength));
|
|
10070
|
+
}
|
|
10071
|
+
readBlock() {
|
|
10072
|
+
this.decodeImageFallback();
|
|
10073
|
+
}
|
|
10074
|
+
get isImageStream() {
|
|
10075
|
+
return true;
|
|
10076
|
+
}
|
|
10077
|
+
get isAsyncDecoder() {
|
|
10078
|
+
return true;
|
|
10079
|
+
}
|
|
10080
|
+
async decodeImage(bytes, length, _decoderOptions) {
|
|
10081
|
+
if (this.eof) {
|
|
10082
|
+
return this.buffer;
|
|
10083
|
+
}
|
|
10084
|
+
if (!bytes) {
|
|
10085
|
+
bytes = this.stream.isAsync ? (await this.stream.asyncGetBytes()) || this.bytes : this.bytes;
|
|
10086
|
+
}
|
|
10087
|
+
try {
|
|
10088
|
+
this.buffer = await JBig2CCITTFaxWasmImage.decode(bytes, this.dict.get("W", "Width"), this.dict.get("H", "Height"), null, this.params);
|
|
10089
|
+
} catch {
|
|
10090
|
+
warn("CCITTFaxStream: Falling back to JS CCITTFax decoder.");
|
|
10091
|
+
return this.decodeImageFallback(bytes, length);
|
|
10092
|
+
}
|
|
10093
|
+
this.bufferLength = this.buffer.length;
|
|
10094
|
+
this.eof = true;
|
|
10095
|
+
return this.buffer;
|
|
10096
|
+
}
|
|
10097
|
+
decodeImageFallback(bytes, length) {
|
|
10098
|
+
if (this.eof) {
|
|
10099
|
+
return this.buffer;
|
|
10100
|
+
}
|
|
10101
|
+
const {
|
|
10102
|
+
params
|
|
10103
|
+
} = this;
|
|
10104
|
+
if (!bytes) {
|
|
10105
|
+
this.stream.reset();
|
|
10106
|
+
bytes = this.bytes;
|
|
10107
|
+
}
|
|
10108
|
+
let pos = 0;
|
|
8014
10109
|
const source = {
|
|
8015
10110
|
next() {
|
|
8016
|
-
return
|
|
10111
|
+
return bytes[pos++] ?? -1;
|
|
8017
10112
|
}
|
|
8018
10113
|
};
|
|
8019
|
-
this.
|
|
8020
|
-
|
|
8021
|
-
|
|
8022
|
-
|
|
8023
|
-
|
|
8024
|
-
Rows: params.get("Rows"),
|
|
8025
|
-
EndOfBlock: params.get("EndOfBlock"),
|
|
8026
|
-
BlackIs1: params.get("BlackIs1")
|
|
8027
|
-
});
|
|
8028
|
-
}
|
|
8029
|
-
readBlock() {
|
|
10114
|
+
if (length && this.buffer.byteLength < length) {
|
|
10115
|
+
this.buffer = new Uint8Array(length);
|
|
10116
|
+
}
|
|
10117
|
+
this.ccittFaxDecoder = new CCITTFaxDecoder(source, params);
|
|
10118
|
+
let outPos = 0;
|
|
8030
10119
|
while (!this.eof) {
|
|
8031
10120
|
const c = this.ccittFaxDecoder.readNextChar();
|
|
8032
10121
|
if (c === -1) {
|
|
8033
10122
|
this.eof = true;
|
|
8034
|
-
|
|
10123
|
+
break;
|
|
8035
10124
|
}
|
|
8036
|
-
|
|
8037
|
-
|
|
10125
|
+
if (!length) {
|
|
10126
|
+
this.ensureBuffer(outPos + 1);
|
|
10127
|
+
}
|
|
10128
|
+
this.buffer[outPos++] = c;
|
|
8038
10129
|
}
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
return true;
|
|
10130
|
+
this.bufferLength = this.buffer.length;
|
|
10131
|
+
return this.buffer.subarray(0, length || this.bufferLength);
|
|
8042
10132
|
}
|
|
8043
10133
|
}
|
|
8044
10134
|
|
|
@@ -8085,38 +10175,17 @@ class FlateStream extends DecodeStream {
|
|
|
8085
10175
|
return data.subarray(0, length);
|
|
8086
10176
|
}
|
|
8087
10177
|
async asyncGetBytes() {
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
|
|
8094
|
-
|
|
8095
|
-
|
|
8096
|
-
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
await writer.close();
|
|
8100
|
-
}).catch(() => {});
|
|
8101
|
-
const chunks = [];
|
|
8102
|
-
let totalLength = 0;
|
|
8103
|
-
for await (const chunk of readable) {
|
|
8104
|
-
chunks.push(chunk);
|
|
8105
|
-
totalLength += chunk.byteLength;
|
|
8106
|
-
}
|
|
8107
|
-
const data = new Uint8Array(totalLength);
|
|
8108
|
-
let offset = 0;
|
|
8109
|
-
for (const chunk of chunks) {
|
|
8110
|
-
data.set(chunk, offset);
|
|
8111
|
-
offset += chunk.byteLength;
|
|
8112
|
-
}
|
|
8113
|
-
return data;
|
|
8114
|
-
} catch {
|
|
8115
|
-
this.#isAsync = false;
|
|
8116
|
-
this.stream = new Stream(bytes, 2, bytes.length, this.stream.dict);
|
|
8117
|
-
this.reset();
|
|
8118
|
-
return null;
|
|
8119
|
-
}
|
|
10178
|
+
const {
|
|
10179
|
+
decompressed,
|
|
10180
|
+
compressed
|
|
10181
|
+
} = await this.asyncGetBytesFromDecompressionStream("deflate");
|
|
10182
|
+
if (decompressed) {
|
|
10183
|
+
return decompressed;
|
|
10184
|
+
}
|
|
10185
|
+
this.#isAsync = false;
|
|
10186
|
+
this.stream = new Stream(compressed, 2, compressed.length, this.stream.dict);
|
|
10187
|
+
this.reset();
|
|
10188
|
+
return null;
|
|
8120
10189
|
}
|
|
8121
10190
|
get isAsync() {
|
|
8122
10191
|
return this.#isAsync;
|
|
@@ -10428,7 +12497,7 @@ class Jbig2Stream extends DecodeStream {
|
|
|
10428
12497
|
}
|
|
10429
12498
|
ensureBuffer(requested) {}
|
|
10430
12499
|
readBlock() {
|
|
10431
|
-
this.
|
|
12500
|
+
this.decodeImageFallback();
|
|
10432
12501
|
}
|
|
10433
12502
|
get isAsyncDecoder() {
|
|
10434
12503
|
return true;
|
|
@@ -10436,7 +12505,7 @@ class Jbig2Stream extends DecodeStream {
|
|
|
10436
12505
|
get isImageStream() {
|
|
10437
12506
|
return true;
|
|
10438
12507
|
}
|
|
10439
|
-
async decodeImage(bytes, _decoderOptions) {
|
|
12508
|
+
async decodeImage(bytes, length, _decoderOptions) {
|
|
10440
12509
|
if (this.eof) {
|
|
10441
12510
|
return this.buffer;
|
|
10442
12511
|
}
|
|
@@ -10449,16 +12518,16 @@ class Jbig2Stream extends DecodeStream {
|
|
|
10449
12518
|
globals = globalsStream.getBytes();
|
|
10450
12519
|
}
|
|
10451
12520
|
}
|
|
10452
|
-
this.buffer = await
|
|
12521
|
+
this.buffer = await JBig2CCITTFaxWasmImage.decode(bytes, this.dict.get("Width"), this.dict.get("Height"), globals);
|
|
10453
12522
|
} catch {
|
|
10454
12523
|
warn("Jbig2Stream: Falling back to JS JBIG2 decoder.");
|
|
10455
|
-
return this.decodeImageFallback(bytes);
|
|
12524
|
+
return this.decodeImageFallback(bytes, length);
|
|
10456
12525
|
}
|
|
10457
12526
|
this.bufferLength = this.buffer.length;
|
|
10458
12527
|
this.eof = true;
|
|
10459
12528
|
return this.buffer;
|
|
10460
12529
|
}
|
|
10461
|
-
|
|
12530
|
+
decodeImageFallback(bytes, _length) {
|
|
10462
12531
|
if (this.eof) {
|
|
10463
12532
|
return this.buffer;
|
|
10464
12533
|
}
|
|
@@ -10518,7 +12587,7 @@ class JpxStream extends DecodeStream {
|
|
|
10518
12587
|
get isAsyncDecoder() {
|
|
10519
12588
|
return true;
|
|
10520
12589
|
}
|
|
10521
|
-
async decodeImage(bytes, decoderOptions) {
|
|
12590
|
+
async decodeImage(bytes, _length, decoderOptions) {
|
|
10522
12591
|
if (this.eof) {
|
|
10523
12592
|
return this.buffer;
|
|
10524
12593
|
}
|
|
@@ -10576,7 +12645,6 @@ class LZWStream extends DecodeStream {
|
|
|
10576
12645
|
}
|
|
10577
12646
|
this.bitsCached = bitsCached -= n;
|
|
10578
12647
|
this.cachedData = cachedData;
|
|
10579
|
-
this.lastCode = null;
|
|
10580
12648
|
return cachedData >>> bitsCached & (1 << n) - 1;
|
|
10581
12649
|
}
|
|
10582
12650
|
readBlock() {
|
|
@@ -10890,6 +12958,7 @@ class RunLengthStream extends DecodeStream {
|
|
|
10890
12958
|
|
|
10891
12959
|
|
|
10892
12960
|
|
|
12961
|
+
|
|
10893
12962
|
const MAX_LENGTH_TO_CACHE = 1000;
|
|
10894
12963
|
function getInlineImageCacheKey(bytes) {
|
|
10895
12964
|
const strBuf = [],
|
|
@@ -11481,6 +13550,8 @@ class Parser {
|
|
|
11481
13550
|
return new RunLengthStream(stream, maybeLength);
|
|
11482
13551
|
case "JBIG2Decode":
|
|
11483
13552
|
return new Jbig2Stream(stream, maybeLength, params);
|
|
13553
|
+
case "BrotliDecode":
|
|
13554
|
+
return new BrotliStream(stream, maybeLength);
|
|
11484
13555
|
}
|
|
11485
13556
|
warn(`Filter "${name}" is not supported.`);
|
|
11486
13557
|
return stream;
|
|
@@ -11520,7 +13591,6 @@ class Lexer {
|
|
|
11520
13591
|
}
|
|
11521
13592
|
getNumber() {
|
|
11522
13593
|
let ch = this.currentChar;
|
|
11523
|
-
let eNotation = false;
|
|
11524
13594
|
let divideBy = 0;
|
|
11525
13595
|
let sign = 1;
|
|
11526
13596
|
if (ch === 0x2d) {
|
|
@@ -11550,19 +13620,13 @@ class Lexer {
|
|
|
11550
13620
|
throw new FormatError(msg);
|
|
11551
13621
|
}
|
|
11552
13622
|
let baseValue = ch - 0x30;
|
|
11553
|
-
let powerValue = 0;
|
|
11554
|
-
let powerValueSign = 1;
|
|
11555
13623
|
while ((ch = this.nextChar()) >= 0) {
|
|
11556
13624
|
if (ch >= 0x30 && ch <= 0x39) {
|
|
11557
13625
|
const currentDigit = ch - 0x30;
|
|
11558
|
-
if (
|
|
11559
|
-
|
|
11560
|
-
} else {
|
|
11561
|
-
if (divideBy !== 0) {
|
|
11562
|
-
divideBy *= 10;
|
|
11563
|
-
}
|
|
11564
|
-
baseValue = baseValue * 10 + currentDigit;
|
|
13626
|
+
if (divideBy !== 0) {
|
|
13627
|
+
divideBy *= 10;
|
|
11565
13628
|
}
|
|
13629
|
+
baseValue = baseValue * 10 + currentDigit;
|
|
11566
13630
|
} else if (ch === 0x2e) {
|
|
11567
13631
|
if (divideBy === 0) {
|
|
11568
13632
|
divideBy = 1;
|
|
@@ -11571,15 +13635,6 @@ class Lexer {
|
|
|
11571
13635
|
}
|
|
11572
13636
|
} else if (ch === 0x2d) {
|
|
11573
13637
|
warn("Badly formatted number: minus sign in the middle");
|
|
11574
|
-
} else if (ch === 0x45 || ch === 0x65) {
|
|
11575
|
-
ch = this.peekChar();
|
|
11576
|
-
if (ch === 0x2b || ch === 0x2d) {
|
|
11577
|
-
powerValueSign = ch === 0x2d ? -1 : 1;
|
|
11578
|
-
this.nextChar();
|
|
11579
|
-
} else if (ch < 0x30 || ch > 0x39) {
|
|
11580
|
-
break;
|
|
11581
|
-
}
|
|
11582
|
-
eNotation = true;
|
|
11583
13638
|
} else {
|
|
11584
13639
|
break;
|
|
11585
13640
|
}
|
|
@@ -11587,9 +13642,6 @@ class Lexer {
|
|
|
11587
13642
|
if (divideBy !== 0) {
|
|
11588
13643
|
baseValue /= divideBy;
|
|
11589
13644
|
}
|
|
11590
|
-
if (eNotation) {
|
|
11591
|
-
baseValue *= 10 ** (powerValueSign * powerValue);
|
|
11592
|
-
}
|
|
11593
13645
|
return sign * baseValue;
|
|
11594
13646
|
}
|
|
11595
13647
|
getString() {
|
|
@@ -18140,20 +20192,18 @@ class CFFParser {
|
|
|
18140
20192
|
}
|
|
18141
20193
|
}
|
|
18142
20194
|
class CFF {
|
|
18143
|
-
|
|
18144
|
-
|
|
18145
|
-
|
|
18146
|
-
|
|
18147
|
-
|
|
18148
|
-
|
|
18149
|
-
|
|
18150
|
-
|
|
18151
|
-
|
|
18152
|
-
|
|
18153
|
-
|
|
18154
|
-
|
|
18155
|
-
this.charStringCount = 0;
|
|
18156
|
-
}
|
|
20195
|
+
header = null;
|
|
20196
|
+
names = [];
|
|
20197
|
+
topDict = null;
|
|
20198
|
+
strings = new CFFStrings();
|
|
20199
|
+
globalSubrIndex = null;
|
|
20200
|
+
encoding = null;
|
|
20201
|
+
charset = null;
|
|
20202
|
+
charStrings = null;
|
|
20203
|
+
fdArray = [];
|
|
20204
|
+
fdSelect = null;
|
|
20205
|
+
isCIDFont = false;
|
|
20206
|
+
charStringCount = 0;
|
|
18157
20207
|
duplicateFirstGlyph() {
|
|
18158
20208
|
if (this.charStrings.count >= 65535) {
|
|
18159
20209
|
warn("Not enough space in charstrings to duplicate first glyph.");
|
|
@@ -18182,9 +20232,7 @@ class CFFHeader {
|
|
|
18182
20232
|
}
|
|
18183
20233
|
}
|
|
18184
20234
|
class CFFStrings {
|
|
18185
|
-
|
|
18186
|
-
this.strings = [];
|
|
18187
|
-
}
|
|
20235
|
+
strings = [];
|
|
18188
20236
|
get(index) {
|
|
18189
20237
|
if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {
|
|
18190
20238
|
return CFFStandardStrings[index];
|
|
@@ -18213,10 +20261,8 @@ class CFFStrings {
|
|
|
18213
20261
|
}
|
|
18214
20262
|
}
|
|
18215
20263
|
class CFFIndex {
|
|
18216
|
-
|
|
18217
|
-
|
|
18218
|
-
this.length = 0;
|
|
18219
|
-
}
|
|
20264
|
+
objects = [];
|
|
20265
|
+
length = 0;
|
|
18220
20266
|
add(data) {
|
|
18221
20267
|
this.length += data.length;
|
|
18222
20268
|
this.objects.push(data);
|
|
@@ -18360,9 +20406,7 @@ class CFFFDSelect {
|
|
|
18360
20406
|
}
|
|
18361
20407
|
}
|
|
18362
20408
|
class CFFOffsetTracker {
|
|
18363
|
-
|
|
18364
|
-
this.offsets = Object.create(null);
|
|
18365
|
-
}
|
|
20409
|
+
offsets = Object.create(null);
|
|
18366
20410
|
isTracking(key) {
|
|
18367
20411
|
return key in this.offsets;
|
|
18368
20412
|
}
|
|
@@ -24355,13 +26399,11 @@ const COMMAND_MAP = {
|
|
|
24355
26399
|
hvcurveto: [31]
|
|
24356
26400
|
};
|
|
24357
26401
|
class Type1CharString {
|
|
24358
|
-
|
|
24359
|
-
|
|
24360
|
-
|
|
24361
|
-
|
|
24362
|
-
|
|
24363
|
-
this.stack = [];
|
|
24364
|
-
}
|
|
26402
|
+
width = 0;
|
|
26403
|
+
lsb = 0;
|
|
26404
|
+
flexing = false;
|
|
26405
|
+
output = [];
|
|
26406
|
+
stack = [];
|
|
24365
26407
|
convert(encoded, subrs, seacAnalysisEnabled) {
|
|
24366
26408
|
const count = encoded.length;
|
|
24367
26409
|
let error = false;
|
|
@@ -25778,7 +27820,7 @@ class Font {
|
|
|
25778
27820
|
nonStdFontMap = getNonStdFontMap(),
|
|
25779
27821
|
serifFonts = getSerifFonts();
|
|
25780
27822
|
for (const namePart of name.split("+")) {
|
|
25781
|
-
let fontName = namePart
|
|
27823
|
+
let fontName = normalizeFontName(namePart);
|
|
25782
27824
|
fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
|
|
25783
27825
|
fontName = fontName.split("-", 1)[0];
|
|
25784
27826
|
if (serifFonts[fontName]) {
|
|
@@ -29964,19 +32006,17 @@ function toNumberArray(arr) {
|
|
|
29964
32006
|
}
|
|
29965
32007
|
class PDFFunction {
|
|
29966
32008
|
static getSampleArray(size, outputSize, bps, stream) {
|
|
29967
|
-
let
|
|
29968
|
-
|
|
29969
|
-
|
|
29970
|
-
length *= size[i];
|
|
32009
|
+
let length = outputSize;
|
|
32010
|
+
for (const s of size) {
|
|
32011
|
+
length *= s;
|
|
29971
32012
|
}
|
|
29972
|
-
length *= outputSize;
|
|
29973
32013
|
const array = new Array(length);
|
|
29974
32014
|
let codeSize = 0;
|
|
29975
32015
|
let codeBuf = 0;
|
|
29976
32016
|
const sampleMul = 1.0 / (2.0 ** bps - 1);
|
|
29977
32017
|
const strBytes = stream.getBytes((length * bps + 7) / 8);
|
|
29978
32018
|
let strIdx = 0;
|
|
29979
|
-
for (i = 0; i < length; i++) {
|
|
32019
|
+
for (let i = 0; i < length; i++) {
|
|
29980
32020
|
while (codeSize < bps) {
|
|
29981
32021
|
codeBuf <<= 8;
|
|
29982
32022
|
codeBuf |= strBytes[strIdx++];
|
|
@@ -30144,14 +32184,8 @@ class PDFFunction {
|
|
|
30144
32184
|
break;
|
|
30145
32185
|
}
|
|
30146
32186
|
}
|
|
30147
|
-
|
|
30148
|
-
|
|
30149
|
-
dmin = bounds[i - 1];
|
|
30150
|
-
}
|
|
30151
|
-
let dmax = domain[1];
|
|
30152
|
-
if (i < bounds.length) {
|
|
30153
|
-
dmax = bounds[i];
|
|
30154
|
-
}
|
|
32187
|
+
const dmin = i > 0 ? bounds[i - 1] : domain[0];
|
|
32188
|
+
const dmax = i < length ? bounds[i] : domain[1];
|
|
30155
32189
|
const rmin = encode[2 * i];
|
|
30156
32190
|
const rmax = encode[2 * i + 1];
|
|
30157
32191
|
tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
|
|
@@ -30202,17 +32236,7 @@ class PDFFunction {
|
|
|
30202
32236
|
const stack = evaluator.execute(input);
|
|
30203
32237
|
const stackIndex = stack.length - numOutputs;
|
|
30204
32238
|
for (i = 0; i < numOutputs; i++) {
|
|
30205
|
-
|
|
30206
|
-
let bound = range[i * 2];
|
|
30207
|
-
if (value < bound) {
|
|
30208
|
-
value = bound;
|
|
30209
|
-
} else {
|
|
30210
|
-
bound = range[i * 2 + 1];
|
|
30211
|
-
if (value > bound) {
|
|
30212
|
-
value = bound;
|
|
30213
|
-
}
|
|
30214
|
-
}
|
|
30215
|
-
output[i] = value;
|
|
32239
|
+
output[i] = MathClamp(stack[stackIndex + i], range[i * 2], range[i * 2 + 1]);
|
|
30216
32240
|
}
|
|
30217
32241
|
if (cache_available > 0) {
|
|
30218
32242
|
cache_available--;
|
|
@@ -30592,9 +32616,7 @@ class AstVariableDefinition extends AstNode {
|
|
|
30592
32616
|
}
|
|
30593
32617
|
}
|
|
30594
32618
|
class ExpressionBuilderVisitor {
|
|
30595
|
-
|
|
30596
|
-
this.parts = [];
|
|
30597
|
-
}
|
|
32619
|
+
parts = [];
|
|
30598
32620
|
visitArgument(arg) {
|
|
30599
32621
|
this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))");
|
|
30600
32622
|
}
|
|
@@ -32874,6 +34896,9 @@ class PartialEvaluator {
|
|
|
32874
34896
|
let transferArray;
|
|
32875
34897
|
if (Array.isArray(tr)) {
|
|
32876
34898
|
transferArray = tr;
|
|
34899
|
+
if (tr.length > 1 && tr.every(map => map === tr[0])) {
|
|
34900
|
+
transferArray = [tr[0]];
|
|
34901
|
+
}
|
|
32877
34902
|
} else if (isPDFFunction(tr)) {
|
|
32878
34903
|
transferArray = [tr];
|
|
32879
34904
|
} else {
|
|
@@ -34054,7 +36079,7 @@ class PartialEvaluator {
|
|
|
34054
36079
|
const emptyXObjectCache = new LocalImageCache();
|
|
34055
36080
|
const emptyGStateCache = new LocalGStateCache();
|
|
34056
36081
|
const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
|
|
34057
|
-
let textState;
|
|
36082
|
+
let textState, currentTextState;
|
|
34058
36083
|
function pushWhitespace({
|
|
34059
36084
|
width = 0,
|
|
34060
36085
|
height = 0,
|
|
@@ -34222,7 +36247,7 @@ class PartialEvaluator {
|
|
|
34222
36247
|
if (textState.font.vertical) {
|
|
34223
36248
|
const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;
|
|
34224
36249
|
const advanceX = posX - lastPosX;
|
|
34225
|
-
const textOrientation = Math.sign(textContentItem.height);
|
|
36250
|
+
const textOrientation = Math.sign(textContentItem.height || textContentItem.totalHeight);
|
|
34226
36251
|
if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {
|
|
34227
36252
|
if (Math.abs(advanceX) > 0.5 * textContentItem.width) {
|
|
34228
36253
|
appendEOL();
|
|
@@ -34266,7 +36291,7 @@ class PartialEvaluator {
|
|
|
34266
36291
|
}
|
|
34267
36292
|
const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;
|
|
34268
36293
|
const advanceY = posY - lastPosY;
|
|
34269
|
-
const textOrientation = Math.sign(textContentItem.width);
|
|
36294
|
+
const textOrientation = Math.sign(textContentItem.width || textContentItem.totalWidth);
|
|
34270
36295
|
if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {
|
|
34271
36296
|
if (Math.abs(advanceY) > 0.5 * textContentItem.height) {
|
|
34272
36297
|
appendEOL();
|
|
@@ -34312,6 +36337,10 @@ class PartialEvaluator {
|
|
|
34312
36337
|
chars,
|
|
34313
36338
|
extraSpacing
|
|
34314
36339
|
}) {
|
|
36340
|
+
if (currentTextState !== textState && (currentTextState.fontName !== textState.fontName || currentTextState.fontSize !== textState.fontSize)) {
|
|
36341
|
+
flushTextContentItem();
|
|
36342
|
+
currentTextState = textState.clone();
|
|
36343
|
+
}
|
|
34315
36344
|
const font = textState.font;
|
|
34316
36345
|
if (!chars) {
|
|
34317
36346
|
const charSpacing = textState.charSpacing + extraSpacing;
|
|
@@ -34494,8 +36523,8 @@ class PartialEvaluator {
|
|
|
34494
36523
|
if (!preprocessor.read(operation)) {
|
|
34495
36524
|
break;
|
|
34496
36525
|
}
|
|
34497
|
-
const previousState = textState;
|
|
34498
36526
|
textState = stateManager.state;
|
|
36527
|
+
currentTextState ||= textState.clone();
|
|
34499
36528
|
const fn = operation.fn;
|
|
34500
36529
|
args = operation.args;
|
|
34501
36530
|
switch (fn | 0) {
|
|
@@ -34505,7 +36534,6 @@ class PartialEvaluator {
|
|
|
34505
36534
|
if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
|
|
34506
36535
|
break;
|
|
34507
36536
|
}
|
|
34508
|
-
flushTextContentItem();
|
|
34509
36537
|
textState.fontName = fontNameArg;
|
|
34510
36538
|
textState.fontSize = fontSizeArg;
|
|
34511
36539
|
next(handleSetFont(fontNameArg, null));
|
|
@@ -34778,9 +36806,10 @@ class PartialEvaluator {
|
|
|
34778
36806
|
}
|
|
34779
36807
|
break;
|
|
34780
36808
|
case OPS.restore:
|
|
34781
|
-
|
|
34782
|
-
|
|
34783
|
-
|
|
36809
|
+
stateManager.restore();
|
|
36810
|
+
break;
|
|
36811
|
+
case OPS.save:
|
|
36812
|
+
stateManager.save();
|
|
34784
36813
|
break;
|
|
34785
36814
|
}
|
|
34786
36815
|
if (textContent.items.length >= (sink?.desiredSize ?? 1)) {
|
|
@@ -35255,13 +37284,11 @@ class PartialEvaluator {
|
|
|
35255
37284
|
let defaultWidth = 0;
|
|
35256
37285
|
let widths = Object.create(null);
|
|
35257
37286
|
let monospace = false;
|
|
37287
|
+
let fontName = normalizeFontName(name);
|
|
35258
37288
|
const stdFontMap = getStdFontMap();
|
|
35259
|
-
|
|
37289
|
+
fontName = stdFontMap[fontName] || fontName;
|
|
35260
37290
|
const Metrics = getMetrics();
|
|
35261
|
-
|
|
35262
|
-
lookupName = this.isSerifFont(name) ? "Times-Roman" : "Helvetica";
|
|
35263
|
-
}
|
|
35264
|
-
const glyphWidths = Metrics[lookupName];
|
|
37291
|
+
const glyphWidths = Metrics[fontName] ?? Metrics[this.isSerifFont(name) ? "Times-Roman" : "Helvetica"];
|
|
35265
37292
|
if (typeof glyphWidths === "number") {
|
|
35266
37293
|
defaultWidth = glyphWidths;
|
|
35267
37294
|
monospace = true;
|
|
@@ -35431,7 +37458,7 @@ class PartialEvaluator {
|
|
|
35431
37458
|
if (!(baseFontName instanceof Name)) {
|
|
35432
37459
|
throw new FormatError("Base font is not specified");
|
|
35433
37460
|
}
|
|
35434
|
-
baseFontName = baseFontName.name
|
|
37461
|
+
baseFontName = normalizeFontName(baseFontName.name);
|
|
35435
37462
|
const metrics = this.getBaseFontMetrics(baseFontName);
|
|
35436
37463
|
const fontNameWoStyle = baseFontName.split("-", 1)[0];
|
|
35437
37464
|
const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic);
|
|
@@ -35866,21 +37893,19 @@ class StateManager {
|
|
|
35866
37893
|
}
|
|
35867
37894
|
}
|
|
35868
37895
|
class TextState {
|
|
35869
|
-
|
|
35870
|
-
|
|
35871
|
-
|
|
35872
|
-
|
|
35873
|
-
|
|
35874
|
-
|
|
35875
|
-
|
|
35876
|
-
|
|
35877
|
-
|
|
35878
|
-
|
|
35879
|
-
|
|
35880
|
-
|
|
35881
|
-
|
|
35882
|
-
this.textRise = 0;
|
|
35883
|
-
}
|
|
37896
|
+
ctm = new Float32Array(IDENTITY_MATRIX);
|
|
37897
|
+
fontName = null;
|
|
37898
|
+
fontSize = 0;
|
|
37899
|
+
loadedName = null;
|
|
37900
|
+
font = null;
|
|
37901
|
+
fontMatrix = FONT_IDENTITY_MATRIX;
|
|
37902
|
+
textMatrix = IDENTITY_MATRIX.slice();
|
|
37903
|
+
textLineMatrix = IDENTITY_MATRIX.slice();
|
|
37904
|
+
charSpacing = 0;
|
|
37905
|
+
wordSpacing = 0;
|
|
37906
|
+
leading = 0;
|
|
37907
|
+
textHScale = 1;
|
|
37908
|
+
textRise = 0;
|
|
35884
37909
|
setTextMatrix(a, b, c, d, e, f) {
|
|
35885
37910
|
const m = this.textMatrix;
|
|
35886
37911
|
m[0] = a;
|
|
@@ -35914,7 +37939,7 @@ class TextState {
|
|
|
35914
37939
|
this.textMatrix = this.textLineMatrix.slice();
|
|
35915
37940
|
}
|
|
35916
37941
|
clone() {
|
|
35917
|
-
const clone = Object.create(this);
|
|
37942
|
+
const clone = Object.assign(Object.create(this), this);
|
|
35918
37943
|
clone.textMatrix = this.textMatrix.slice();
|
|
35919
37944
|
clone.textLineMatrix = this.textLineMatrix.slice();
|
|
35920
37945
|
clone.fontMatrix = this.fontMatrix.slice();
|
|
@@ -35922,17 +37947,17 @@ class TextState {
|
|
|
35922
37947
|
}
|
|
35923
37948
|
}
|
|
35924
37949
|
class EvalState {
|
|
35925
|
-
|
|
35926
|
-
|
|
35927
|
-
|
|
35928
|
-
|
|
35929
|
-
|
|
35930
|
-
|
|
35931
|
-
|
|
35932
|
-
|
|
35933
|
-
|
|
35934
|
-
|
|
35935
|
-
|
|
37950
|
+
ctm = new Float32Array(IDENTITY_MATRIX);
|
|
37951
|
+
font = null;
|
|
37952
|
+
textRenderingMode = TextRenderingMode.FILL;
|
|
37953
|
+
_fillColorSpace = ColorSpaceUtils.gray;
|
|
37954
|
+
_strokeColorSpace = ColorSpaceUtils.gray;
|
|
37955
|
+
patternFillColorSpace = null;
|
|
37956
|
+
patternStrokeColorSpace = null;
|
|
37957
|
+
currentPointX = 0;
|
|
37958
|
+
currentPointY = 0;
|
|
37959
|
+
pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);
|
|
37960
|
+
pathBuffer = [];
|
|
35936
37961
|
get fillColorSpace() {
|
|
35937
37962
|
return this._fillColorSpace;
|
|
35938
37963
|
}
|
|
@@ -36663,7 +38688,7 @@ class FakeUnicodeFont {
|
|
|
36663
38688
|
descendantFont.set("FontDescriptor", this.fontDescriptorRef);
|
|
36664
38689
|
descendantFont.set("DW", 1000);
|
|
36665
38690
|
const widths = [];
|
|
36666
|
-
const chars = [...this.widths
|
|
38691
|
+
const chars = [...this.widths].sort();
|
|
36667
38692
|
let currentChar = null;
|
|
36668
38693
|
let currentWidths = null;
|
|
36669
38694
|
for (const [char, width] of chars) {
|
|
@@ -37026,9 +39051,6 @@ function pickPlatformItem(dict) {
|
|
|
37026
39051
|
}
|
|
37027
39052
|
return null;
|
|
37028
39053
|
}
|
|
37029
|
-
function stripPath(str) {
|
|
37030
|
-
return str.substring(str.lastIndexOf("/") + 1);
|
|
37031
|
-
}
|
|
37032
39054
|
class FileSpec {
|
|
37033
39055
|
#contentAvailable = false;
|
|
37034
39056
|
constructor(root, skipContent = false) {
|
|
@@ -37996,12 +40018,7 @@ class StructTreeRoot {
|
|
|
37996
40018
|
for (const element of elements) {
|
|
37997
40019
|
if (element.structTreeParentId) {
|
|
37998
40020
|
const id = parseInt(element.structTreeParentId.split("_mc")[1], 10);
|
|
37999
|
-
|
|
38000
|
-
if (!elems) {
|
|
38001
|
-
elems = [];
|
|
38002
|
-
idToElements.set(id, elems);
|
|
38003
|
-
}
|
|
38004
|
-
elems.push(element);
|
|
40021
|
+
idToElements.getOrInsertComputed(id, makeArr).push(element);
|
|
38005
40022
|
}
|
|
38006
40023
|
}
|
|
38007
40024
|
const id = pageDict.get("StructParents");
|
|
@@ -40334,14 +42351,8 @@ class FontFinder {
|
|
|
40334
42351
|
addPdfFont(pdfFont) {
|
|
40335
42352
|
const cssFontInfo = pdfFont.cssFontInfo;
|
|
40336
42353
|
const name = cssFontInfo.fontFamily;
|
|
40337
|
-
|
|
40338
|
-
|
|
40339
|
-
font = Object.create(null);
|
|
40340
|
-
this.fonts.set(name, font);
|
|
40341
|
-
if (!this.defaultFont) {
|
|
40342
|
-
this.defaultFont = font;
|
|
40343
|
-
}
|
|
40344
|
-
}
|
|
42354
|
+
const font = this.fonts.getOrInsertComputed(name, makeObj);
|
|
42355
|
+
this.defaultFont ??= font;
|
|
40345
42356
|
let property = "";
|
|
40346
42357
|
const fontWeight = parseFloat(cssFontInfo.fontWeight);
|
|
40347
42358
|
if (parseFloat(cssFontInfo.italicAngle) !== 0) {
|
|
@@ -40379,13 +42390,13 @@ class FontFinder {
|
|
|
40379
42390
|
}
|
|
40380
42391
|
name = name.toLowerCase();
|
|
40381
42392
|
const maybe = [];
|
|
40382
|
-
for (const [family, pdfFont] of this.fonts
|
|
42393
|
+
for (const [family, pdfFont] of this.fonts) {
|
|
40383
42394
|
if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) {
|
|
40384
42395
|
maybe.push(pdfFont);
|
|
40385
42396
|
}
|
|
40386
42397
|
}
|
|
40387
42398
|
if (maybe.length === 0) {
|
|
40388
|
-
for (const
|
|
42399
|
+
for (const pdfFont of this.fonts.values()) {
|
|
40389
42400
|
if (pdfFont.regular.name?.replaceAll(pattern, "").toLowerCase().startsWith(name)) {
|
|
40390
42401
|
maybe.push(pdfFont);
|
|
40391
42402
|
}
|
|
@@ -40393,7 +42404,7 @@ class FontFinder {
|
|
|
40393
42404
|
}
|
|
40394
42405
|
if (maybe.length === 0) {
|
|
40395
42406
|
name = name.replaceAll(/psmt|mt/gi, "");
|
|
40396
|
-
for (const [family, pdfFont] of this.fonts
|
|
42407
|
+
for (const [family, pdfFont] of this.fonts) {
|
|
40397
42408
|
if (family.replaceAll(pattern, "").toLowerCase().startsWith(name)) {
|
|
40398
42409
|
maybe.push(pdfFont);
|
|
40399
42410
|
}
|
|
@@ -40792,11 +42803,7 @@ function searchNode(root, container, expr, dotDotAllowed = true, useCache = true
|
|
|
40792
42803
|
}
|
|
40793
42804
|
let children, cached;
|
|
40794
42805
|
if (useCache) {
|
|
40795
|
-
cached = somCache.
|
|
40796
|
-
if (!cached) {
|
|
40797
|
-
cached = new Map();
|
|
40798
|
-
somCache.set(node, cached);
|
|
40799
|
-
}
|
|
42806
|
+
cached = somCache.getOrInsertComputed(node, makeMap);
|
|
40800
42807
|
children = cached.get(cacheName);
|
|
40801
42808
|
}
|
|
40802
42809
|
if (!children) {
|
|
@@ -41493,7 +43500,7 @@ class XmlObject extends XFAObject {
|
|
|
41493
43500
|
const utf8TagName = utf8StringToString(tagName);
|
|
41494
43501
|
const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : "";
|
|
41495
43502
|
buf.push(`<${prefix}${utf8TagName}`);
|
|
41496
|
-
for (const [name, value] of this[_attributes]
|
|
43503
|
+
for (const [name, value] of this[_attributes]) {
|
|
41497
43504
|
const utf8Name = utf8StringToString(name);
|
|
41498
43505
|
buf.push(` ${utf8Name}="${encodeToXmlString(value[$content])}"`);
|
|
41499
43506
|
}
|
|
@@ -50315,12 +52322,7 @@ class Builder {
|
|
|
50315
52322
|
value
|
|
50316
52323
|
} of prefixes) {
|
|
50317
52324
|
const namespace = this._searchNamespace(value);
|
|
50318
|
-
|
|
50319
|
-
if (!prefixStack) {
|
|
50320
|
-
prefixStack = [];
|
|
50321
|
-
this._namespacePrefixes.set(prefix, prefixStack);
|
|
50322
|
-
}
|
|
50323
|
-
prefixStack.push(namespace);
|
|
52325
|
+
this._namespacePrefixes.getOrInsertComputed(prefix, makeArr).push(namespace);
|
|
50324
52326
|
}
|
|
50325
52327
|
}
|
|
50326
52328
|
_getNamespaceToUse(prefix) {
|
|
@@ -50666,7 +52668,7 @@ class AnnotationFactory {
|
|
|
50666
52668
|
}
|
|
50667
52669
|
let subtype = dict.get("Subtype");
|
|
50668
52670
|
subtype = subtype instanceof Name ? subtype.name : null;
|
|
50669
|
-
if (collectByType && !collectByType.has(AnnotationType[subtype
|
|
52671
|
+
if (collectByType && !collectByType.has(AnnotationType[subtype?.toUpperCase()])) {
|
|
50670
52672
|
return null;
|
|
50671
52673
|
}
|
|
50672
52674
|
const {
|
|
@@ -50998,11 +53000,12 @@ function getTransformMatrix(rect, bbox, matrix) {
|
|
|
50998
53000
|
class Annotation {
|
|
50999
53001
|
constructor(params) {
|
|
51000
53002
|
const {
|
|
51001
|
-
dict,
|
|
51002
|
-
xref,
|
|
51003
53003
|
annotationGlobals,
|
|
53004
|
+
dict,
|
|
53005
|
+
orphanFields,
|
|
51004
53006
|
ref,
|
|
51005
|
-
|
|
53007
|
+
subtype,
|
|
53008
|
+
xref
|
|
51006
53009
|
} = params;
|
|
51007
53010
|
const parentRef = orphanFields?.get(ref);
|
|
51008
53011
|
if (parentRef) {
|
|
@@ -51028,6 +53031,7 @@ class Annotation {
|
|
|
51028
53031
|
const isLocked = !!(this.flags & AnnotationFlag.LOCKED);
|
|
51029
53032
|
const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);
|
|
51030
53033
|
this.data = {
|
|
53034
|
+
annotationType: AnnotationType[subtype?.toUpperCase()],
|
|
51031
53035
|
annotationFlags: this.flags,
|
|
51032
53036
|
borderStyle: this.borderStyle,
|
|
51033
53037
|
color: this.color,
|
|
@@ -51039,7 +53043,7 @@ class Annotation {
|
|
|
51039
53043
|
id: params.id,
|
|
51040
53044
|
modificationDate: this.modificationDate,
|
|
51041
53045
|
rect: this.rectangle,
|
|
51042
|
-
subtype
|
|
53046
|
+
subtype,
|
|
51043
53047
|
hasOwnCanvas: false,
|
|
51044
53048
|
noRotate: !!(this.flags & AnnotationFlag.NOROTATE),
|
|
51045
53049
|
noHTML: isLocked && isContentLocked,
|
|
@@ -51493,14 +53497,12 @@ class Annotation {
|
|
|
51493
53497
|
}
|
|
51494
53498
|
}
|
|
51495
53499
|
class AnnotationBorderStyle {
|
|
51496
|
-
|
|
51497
|
-
|
|
51498
|
-
|
|
51499
|
-
|
|
51500
|
-
|
|
51501
|
-
|
|
51502
|
-
this.verticalCornerRadius = 0;
|
|
51503
|
-
}
|
|
53500
|
+
width = 1;
|
|
53501
|
+
rawWidth = 1;
|
|
53502
|
+
style = AnnotationBorderStyleType.SOLID;
|
|
53503
|
+
dashArray = [3];
|
|
53504
|
+
horizontalCornerRadius = 0;
|
|
53505
|
+
verticalCornerRadius = 0;
|
|
51504
53506
|
setWidth(width, rect = [0, 0, 0, 0]) {
|
|
51505
53507
|
if (width instanceof Name) {
|
|
51506
53508
|
this.width = 0;
|
|
@@ -51760,7 +53762,6 @@ class WidgetAnnotation extends Annotation {
|
|
|
51760
53762
|
} = params;
|
|
51761
53763
|
const data = this.data;
|
|
51762
53764
|
this._needAppearances = params.needAppearances;
|
|
51763
|
-
data.annotationType = AnnotationType.WIDGET;
|
|
51764
53765
|
if (data.fieldName === undefined) {
|
|
51765
53766
|
data.fieldName = this._constructFieldName(dict);
|
|
51766
53767
|
}
|
|
@@ -53089,7 +55090,6 @@ class TextAnnotation extends MarkupAnnotation {
|
|
|
53089
55090
|
const {
|
|
53090
55091
|
dict
|
|
53091
55092
|
} = params;
|
|
53092
|
-
this.data.annotationType = AnnotationType.TEXT;
|
|
53093
55093
|
if (this.data.hasAppearance) {
|
|
53094
55094
|
this.data.name = "NoIcon";
|
|
53095
55095
|
} else {
|
|
@@ -53113,7 +55113,6 @@ class LinkAnnotation extends Annotation {
|
|
|
53113
55113
|
dict,
|
|
53114
55114
|
annotationGlobals
|
|
53115
55115
|
} = params;
|
|
53116
|
-
this.data.annotationType = AnnotationType.LINK;
|
|
53117
55116
|
this.data.noHTML = false;
|
|
53118
55117
|
const quadPoints = getQuadPoints(dict, this.rectangle);
|
|
53119
55118
|
if (quadPoints) {
|
|
@@ -53137,7 +55136,6 @@ class PopupAnnotation extends Annotation {
|
|
|
53137
55136
|
const {
|
|
53138
55137
|
dict
|
|
53139
55138
|
} = params;
|
|
53140
|
-
this.data.annotationType = AnnotationType.POPUP;
|
|
53141
55139
|
this.data.noHTML = false;
|
|
53142
55140
|
if (this.width === 0 || this.height === 0) {
|
|
53143
55141
|
this.data.rect = null;
|
|
@@ -53209,7 +55207,6 @@ class FreeTextAnnotation extends MarkupAnnotation {
|
|
|
53209
55207
|
evaluatorOptions,
|
|
53210
55208
|
xref
|
|
53211
55209
|
} = params;
|
|
53212
|
-
this.data.annotationType = AnnotationType.FREETEXT;
|
|
53213
55210
|
this.setDefaultAppearance(params);
|
|
53214
55211
|
this._hasAppearance = !!this.appearance;
|
|
53215
55212
|
if (this._hasAppearance) {
|
|
@@ -53404,7 +55401,6 @@ class LineAnnotation extends MarkupAnnotation {
|
|
|
53404
55401
|
dict,
|
|
53405
55402
|
xref
|
|
53406
55403
|
} = params;
|
|
53407
|
-
this.data.annotationType = AnnotationType.LINE;
|
|
53408
55404
|
this.data.hasOwnCanvas = this.data.noRotate;
|
|
53409
55405
|
this.data.noHTML = false;
|
|
53410
55406
|
const lineCoordinates = lookupRect(dict.getArray("L"), [0, 0, 0, 0]);
|
|
@@ -53445,7 +55441,6 @@ class SquareAnnotation extends MarkupAnnotation {
|
|
|
53445
55441
|
dict,
|
|
53446
55442
|
xref
|
|
53447
55443
|
} = params;
|
|
53448
|
-
this.data.annotationType = AnnotationType.SQUARE;
|
|
53449
55444
|
this.data.hasOwnCanvas = this.data.noRotate;
|
|
53450
55445
|
this.data.noHTML = false;
|
|
53451
55446
|
if (!this.appearance) {
|
|
@@ -53488,7 +55483,6 @@ class CircleAnnotation extends MarkupAnnotation {
|
|
|
53488
55483
|
dict,
|
|
53489
55484
|
xref
|
|
53490
55485
|
} = params;
|
|
53491
|
-
this.data.annotationType = AnnotationType.CIRCLE;
|
|
53492
55486
|
if (!this.appearance) {
|
|
53493
55487
|
const strokeColor = getPdfColorArray(this.color, [0, 0, 0]);
|
|
53494
55488
|
const strokeAlpha = dict.get("CA");
|
|
@@ -53534,7 +55528,6 @@ class PolylineAnnotation extends MarkupAnnotation {
|
|
|
53534
55528
|
dict,
|
|
53535
55529
|
xref
|
|
53536
55530
|
} = params;
|
|
53537
|
-
this.data.annotationType = AnnotationType.POLYLINE;
|
|
53538
55531
|
this.data.hasOwnCanvas = this.data.noRotate;
|
|
53539
55532
|
this.data.noHTML = false;
|
|
53540
55533
|
this.data.vertices = null;
|
|
@@ -53591,18 +55584,8 @@ class PolylineAnnotation extends MarkupAnnotation {
|
|
|
53591
55584
|
}
|
|
53592
55585
|
}
|
|
53593
55586
|
}
|
|
53594
|
-
class PolygonAnnotation extends PolylineAnnotation {
|
|
53595
|
-
|
|
53596
|
-
super(params);
|
|
53597
|
-
this.data.annotationType = AnnotationType.POLYGON;
|
|
53598
|
-
}
|
|
53599
|
-
}
|
|
53600
|
-
class CaretAnnotation extends MarkupAnnotation {
|
|
53601
|
-
constructor(params) {
|
|
53602
|
-
super(params);
|
|
53603
|
-
this.data.annotationType = AnnotationType.CARET;
|
|
53604
|
-
}
|
|
53605
|
-
}
|
|
55587
|
+
class PolygonAnnotation extends PolylineAnnotation {}
|
|
55588
|
+
class CaretAnnotation extends MarkupAnnotation {}
|
|
53606
55589
|
class InkAnnotation extends MarkupAnnotation {
|
|
53607
55590
|
constructor(params) {
|
|
53608
55591
|
super(params);
|
|
@@ -53612,7 +55595,6 @@ class InkAnnotation extends MarkupAnnotation {
|
|
|
53612
55595
|
dict,
|
|
53613
55596
|
xref
|
|
53614
55597
|
} = params;
|
|
53615
|
-
this.data.annotationType = AnnotationType.INK;
|
|
53616
55598
|
this.data.inkLists = [];
|
|
53617
55599
|
this.data.isEditable = !this.data.noHTML;
|
|
53618
55600
|
this.data.noHTML = false;
|
|
@@ -53816,7 +55798,6 @@ class HighlightAnnotation extends MarkupAnnotation {
|
|
|
53816
55798
|
dict,
|
|
53817
55799
|
xref
|
|
53818
55800
|
} = params;
|
|
53819
|
-
this.data.annotationType = AnnotationType.HIGHLIGHT;
|
|
53820
55801
|
this.data.isEditable = !this.data.noHTML;
|
|
53821
55802
|
this.data.noHTML = false;
|
|
53822
55803
|
this.data.opacity = dict.get("CA") || 1;
|
|
@@ -53932,7 +55913,6 @@ class UnderlineAnnotation extends MarkupAnnotation {
|
|
|
53932
55913
|
dict,
|
|
53933
55914
|
xref
|
|
53934
55915
|
} = params;
|
|
53935
|
-
this.data.annotationType = AnnotationType.UNDERLINE;
|
|
53936
55916
|
const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);
|
|
53937
55917
|
if (quadPoints) {
|
|
53938
55918
|
if (!this.appearance) {
|
|
@@ -53964,7 +55944,6 @@ class SquigglyAnnotation extends MarkupAnnotation {
|
|
|
53964
55944
|
dict,
|
|
53965
55945
|
xref
|
|
53966
55946
|
} = params;
|
|
53967
|
-
this.data.annotationType = AnnotationType.SQUIGGLY;
|
|
53968
55947
|
const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);
|
|
53969
55948
|
if (quadPoints) {
|
|
53970
55949
|
if (!this.appearance) {
|
|
@@ -54007,7 +55986,6 @@ class StrikeOutAnnotation extends MarkupAnnotation {
|
|
|
54007
55986
|
dict,
|
|
54008
55987
|
xref
|
|
54009
55988
|
} = params;
|
|
54010
|
-
this.data.annotationType = AnnotationType.STRIKEOUT;
|
|
54011
55989
|
const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);
|
|
54012
55990
|
if (quadPoints) {
|
|
54013
55991
|
if (!this.appearance) {
|
|
@@ -54036,7 +56014,6 @@ class StampAnnotation extends MarkupAnnotation {
|
|
|
54036
56014
|
#savedHasOwnCanvas = null;
|
|
54037
56015
|
constructor(params) {
|
|
54038
56016
|
super(params);
|
|
54039
|
-
this.data.annotationType = AnnotationType.STAMP;
|
|
54040
56017
|
this.data.hasOwnCanvas = this.data.noRotate;
|
|
54041
56018
|
this.data.isEditable = !this.data.noHTML;
|
|
54042
56019
|
this.data.noHTML = false;
|
|
@@ -54225,7 +56202,6 @@ class FileAttachmentAnnotation extends MarkupAnnotation {
|
|
|
54225
56202
|
dict
|
|
54226
56203
|
} = params;
|
|
54227
56204
|
const file = new FileSpec(dict.get("FS"));
|
|
54228
|
-
this.data.annotationType = AnnotationType.FILEATTACHMENT;
|
|
54229
56205
|
this.data.hasOwnCanvas = this.data.noRotate;
|
|
54230
56206
|
this.data.noHTML = false;
|
|
54231
56207
|
this.data.file = file.serializable;
|
|
@@ -54326,10 +56302,7 @@ function decodeString(str) {
|
|
|
54326
56302
|
}
|
|
54327
56303
|
}
|
|
54328
56304
|
class DatasetXMLParser extends SimpleXMLParser {
|
|
54329
|
-
|
|
54330
|
-
super(options);
|
|
54331
|
-
this.node = null;
|
|
54332
|
-
}
|
|
56305
|
+
node = null;
|
|
54333
56306
|
onEndElement(name) {
|
|
54334
56307
|
const node = super.onEndElement(name);
|
|
54335
56308
|
if (node && name === "xfa:datasets") {
|
|
@@ -54945,9 +56918,9 @@ class DecryptStream extends DecodeStream {
|
|
|
54945
56918
|
|
|
54946
56919
|
|
|
54947
56920
|
class ARCFourCipher {
|
|
56921
|
+
a = 0;
|
|
56922
|
+
b = 0;
|
|
54948
56923
|
constructor(key) {
|
|
54949
|
-
this.a = 0;
|
|
54950
|
-
this.b = 0;
|
|
54951
56924
|
const s = new Uint8Array(256);
|
|
54952
56925
|
const keyLength = key.length;
|
|
54953
56926
|
for (let i = 0; i < 256; ++i) {
|
|
@@ -56202,10 +58175,10 @@ class XRef {
|
|
|
56202
58175
|
}
|
|
56203
58176
|
if (!trailerDicts.length) {
|
|
56204
58177
|
for (const num in this.entries) {
|
|
56205
|
-
|
|
58178
|
+
const entry = this.entries[num];
|
|
58179
|
+
if (!entry) {
|
|
56206
58180
|
continue;
|
|
56207
58181
|
}
|
|
56208
|
-
const entry = this.entries[num];
|
|
56209
58182
|
const ref = Ref.get(parseInt(num), entry.gen);
|
|
56210
58183
|
let obj;
|
|
56211
58184
|
try {
|
|
@@ -56528,11 +58501,11 @@ class Page {
|
|
|
56528
58501
|
}
|
|
56529
58502
|
};
|
|
56530
58503
|
}
|
|
56531
|
-
#createPartialEvaluator(handler) {
|
|
58504
|
+
#createPartialEvaluator(handler, pageIndex = this.pageIndex) {
|
|
56532
58505
|
return new PartialEvaluator({
|
|
56533
58506
|
xref: this.xref,
|
|
56534
58507
|
handler,
|
|
56535
|
-
pageIndex
|
|
58508
|
+
pageIndex,
|
|
56536
58509
|
idFactory: this._localIdFactory,
|
|
56537
58510
|
fontCache: this.fontCache,
|
|
56538
58511
|
builtInCMapCache: this.builtInCMapCache,
|
|
@@ -56760,14 +58733,13 @@ class Page {
|
|
|
56760
58733
|
task,
|
|
56761
58734
|
intent,
|
|
56762
58735
|
cacheKey,
|
|
56763
|
-
pageId = this.pageIndex,
|
|
56764
58736
|
pageIndex = this.pageIndex,
|
|
56765
58737
|
annotationStorage = null,
|
|
56766
58738
|
modifiedIds = null
|
|
56767
58739
|
}) {
|
|
56768
58740
|
const contentStreamPromise = this.getContentStream();
|
|
56769
58741
|
const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST);
|
|
56770
|
-
const partialEvaluator = this.#createPartialEvaluator(handler);
|
|
58742
|
+
const partialEvaluator = this.#createPartialEvaluator(handler, pageIndex);
|
|
56771
58743
|
const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;
|
|
56772
58744
|
const newAnnots = newAnnotsByPage?.get(this.pageIndex);
|
|
56773
58745
|
let newAnnotationsPromise = Promise.resolve(null);
|
|
@@ -57809,10 +59781,7 @@ class PDFDocument {
|
|
|
57809
59781
|
if (parentRef && !field.has("Parent") && isName(field.get("Subtype"), "Widget")) {
|
|
57810
59782
|
orphanFields.put(fieldRef, parentRef);
|
|
57811
59783
|
}
|
|
57812
|
-
|
|
57813
|
-
promises.set(name, []);
|
|
57814
|
-
}
|
|
57815
|
-
promises.get(name).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {
|
|
59784
|
+
promises.getOrInsertComputed(name, makeArr).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {
|
|
57816
59785
|
warn(`#collectFieldObjects: "${reason}".`);
|
|
57817
59786
|
return null;
|
|
57818
59787
|
}));
|
|
@@ -57942,7 +59911,7 @@ class BasePdfManager {
|
|
|
57942
59911
|
JpxImage.setOptions(options);
|
|
57943
59912
|
IccColorSpace.setOptions(options);
|
|
57944
59913
|
CmykICCBasedCS.setOptions(options);
|
|
57945
|
-
|
|
59914
|
+
JBig2CCITTFaxWasmImage.setOptions(options);
|
|
57946
59915
|
}
|
|
57947
59916
|
get docId() {
|
|
57948
59917
|
return this._docId;
|
|
@@ -58918,37 +60887,37 @@ class XRefWrapper {
|
|
|
58918
60887
|
}
|
|
58919
60888
|
}
|
|
58920
60889
|
class PDFEditor {
|
|
60890
|
+
hasSingleFile = false;
|
|
60891
|
+
currentDocument = null;
|
|
60892
|
+
oldPages = [];
|
|
60893
|
+
newPages = [];
|
|
60894
|
+
xref = [null];
|
|
60895
|
+
xrefWrapper = new XRefWrapper(this.xref);
|
|
60896
|
+
newRefCount = 1;
|
|
60897
|
+
namesDict = null;
|
|
60898
|
+
version = "1.7";
|
|
60899
|
+
pageLabels = null;
|
|
60900
|
+
namedDestinations = new Map();
|
|
60901
|
+
parentTree = new Map();
|
|
60902
|
+
structTreeKids = [];
|
|
60903
|
+
idTree = new Map();
|
|
60904
|
+
classMap = new Dict();
|
|
60905
|
+
roleMap = new Dict();
|
|
60906
|
+
namespaces = new Map();
|
|
60907
|
+
structTreeAF = [];
|
|
60908
|
+
structTreePronunciationLexicon = [];
|
|
58921
60909
|
constructor({
|
|
58922
60910
|
useObjectStreams = true,
|
|
58923
60911
|
title = "",
|
|
58924
60912
|
author = ""
|
|
58925
60913
|
} = {}) {
|
|
58926
|
-
this.hasSingleFile = false;
|
|
58927
|
-
this.currentDocument = null;
|
|
58928
|
-
this.oldPages = [];
|
|
58929
|
-
this.newPages = [];
|
|
58930
|
-
this.xref = [null];
|
|
58931
|
-
this.xrefWrapper = new XRefWrapper(this.xref);
|
|
58932
|
-
this.newRefCount = 1;
|
|
58933
60914
|
[this.rootRef, this.rootDict] = this.newDict;
|
|
58934
60915
|
[this.infoRef, this.infoDict] = this.newDict;
|
|
58935
60916
|
[this.pagesRef, this.pagesDict] = this.newDict;
|
|
58936
|
-
this.namesDict = null;
|
|
58937
60917
|
this.useObjectStreams = useObjectStreams;
|
|
58938
60918
|
this.objStreamRefs = useObjectStreams ? new Set() : null;
|
|
58939
|
-
this.version = "1.7";
|
|
58940
60919
|
this.title = title;
|
|
58941
60920
|
this.author = author;
|
|
58942
|
-
this.pageLabels = null;
|
|
58943
|
-
this.namedDestinations = new Map();
|
|
58944
|
-
this.parentTree = new Map();
|
|
58945
|
-
this.structTreeKids = [];
|
|
58946
|
-
this.idTree = new Map();
|
|
58947
|
-
this.classMap = new Dict();
|
|
58948
|
-
this.roleMap = new Dict();
|
|
58949
|
-
this.namespaces = new Map();
|
|
58950
|
-
this.structTreeAF = [];
|
|
58951
|
-
this.structTreePronunciationLexicon = [];
|
|
58952
60921
|
}
|
|
58953
60922
|
get newRef() {
|
|
58954
60923
|
const ref = Ref.get(this.newRefCount++, 0);
|
|
@@ -60234,6 +62203,12 @@ class BasePDFStreamReader {
|
|
|
60234
62203
|
constructor(stream) {
|
|
60235
62204
|
this._stream = stream;
|
|
60236
62205
|
}
|
|
62206
|
+
_callOnProgress() {
|
|
62207
|
+
this.onProgress?.({
|
|
62208
|
+
loaded: this._loaded,
|
|
62209
|
+
total: this._contentLength
|
|
62210
|
+
});
|
|
62211
|
+
}
|
|
60237
62212
|
get headersReady() {
|
|
60238
62213
|
return this._headersCapability.promise;
|
|
60239
62214
|
}
|
|
@@ -60409,7 +62384,7 @@ class WorkerMessageHandler {
|
|
|
60409
62384
|
docId,
|
|
60410
62385
|
apiVersion
|
|
60411
62386
|
} = docParams;
|
|
60412
|
-
const workerVersion = "5.
|
|
62387
|
+
const workerVersion = "5.5.207";
|
|
60413
62388
|
if (apiVersion !== workerVersion) {
|
|
60414
62389
|
throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
|
|
60415
62390
|
}
|
|
@@ -60563,7 +62538,9 @@ class WorkerMessageHandler {
|
|
|
60563
62538
|
});
|
|
60564
62539
|
}
|
|
60565
62540
|
function onFailure(ex) {
|
|
60566
|
-
|
|
62541
|
+
if (terminated) {
|
|
62542
|
+
return;
|
|
62543
|
+
}
|
|
60567
62544
|
if (ex instanceof PasswordException) {
|
|
60568
62545
|
const task = new WorkerTask(`PasswordException: response ${ex.code}`);
|
|
60569
62546
|
startWorkerTask(task);
|