Your books, your data,
every device.
- Papyrus is a free, open-source app for organizing physical and digital books, reading e-books, and syncing your library across devices.
+Your books, your data,
every device.
+ Papyrus is a free, open-source app that brings your physical and digital books into one library. Access your books across devices, track your reading habits, and more.
Your books, your data,
every device.
+
+
+ Features
diff --git a/js/main.js b/js/main.js index 6beba03..2e62f9c 100644 --- a/js/main.js +++ b/js/main.js @@ -25,8 +25,32 @@ if (!links.contains(event.target) && !menuButton.contains(event.target)) closeMenu(); }); window.matchMedia('(max-width: 720px)').addEventListener('change', closeMenu); - const updateThemeButton = () => { - const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'; + const libraryPreview = document.querySelector('.library-preview'); + const libraryDialog = document.getElementById('library-dialog'); + const updatePreviewImage = () => { + const image = libraryDialog.querySelector('img'); + image.src = libraryPreview.querySelector('[data-library-full-size]').href; + image.alt = libraryPreview.querySelector('img').alt; + }; + if (libraryPreview && libraryDialog) { + libraryPreview.querySelector('[data-library-full-size]').addEventListener('click', (event) => { + event.preventDefault(); + updatePreviewImage(); + libraryDialog.showModal(); + }); + libraryDialog.addEventListener('click', () => libraryDialog.close()); + } + const updateThemeUI = () => { + const theme = document.documentElement.dataset.theme; + const next = theme === 'dark' ? 'light' : 'dark'; + if (libraryPreview) { + libraryPreview.querySelector('[data-library-dark]').media = theme === 'dark' ? 'all' : 'not all'; + libraryPreview.querySelector('img').alt = `Papyrus in ${theme} mode, with physical books and ebooks displayed together in a cover grid`; + libraryPreview.querySelectorAll('[data-library-full-size]').forEach((link) => { + link.href = `public/img/library-${theme}.jpg`; + }); + if (libraryDialog && libraryDialog.open) updatePreviewImage(); + } themeLabel.textContent = next === 'dark' ? 'Dark' : 'Light'; themeButton.querySelector('svg').innerHTML = next === 'dark' ? '
`);
+ }
+ execFileSync(process.execPath, [path.resolve(__dirname, '../../scripts/stamp-version.js')], { cwd: directory });
+ };
+ build();
+ const before = read('build/index.html');
+ for (const file of ['build/index.html', 'build/status/index.html']) {
+ const html = read(file);
+ assert.ok(html.includes(''));
+ assert.ok(html.includes(''));
+ assert.doesNotMatch(html, /src="[^"]*theme\.js|rel="stylesheet"/);
+ assert.match(html, /book\.webp\?v=[a-f0-9]{16} 768w/);
+ assert.match(html, /main\.js\?v=[a-f0-9]{16}" defer/);
+ }
+ write('public/img/book.webp', 'replacement image');
+ build();
+ const after = read('build/index.html');
+ assert.notEqual(before.match(/book\.webp\?v=\w+/)[0], after.match(/book\.webp\?v=\w+/)[0]);
+ assert.equal(before.match(/main\.js\?v=\w+/)[0], after.match(/main\.js\?v=\w+/)[0]);
+ } finally {
+ fs.rmSync(directory, { recursive: true, force: true });
+ }
+});
diff --git a/package-lock.json b/package-lock.json
index 7860394..080f3ed 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,14 +12,14 @@
},
"devDependencies": {
"concurrently": "^9.0.0",
- "esbuild": "^0.24.0",
+ "esbuild": "^0.28.2",
"sass": "^1.80.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
- "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
+ "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
"cpu": [
"ppc64"
],
@@ -34,9 +34,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
- "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
+ "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
"cpu": [
"arm"
],
@@ -51,9 +51,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
- "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
+ "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
"cpu": [
"arm64"
],
@@ -68,9 +68,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
- "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
+ "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
"cpu": [
"x64"
],
@@ -85,9 +85,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
- "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
+ "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
"cpu": [
"arm64"
],
@@ -102,9 +102,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
- "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
+ "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
"cpu": [
"x64"
],
@@ -119,9 +119,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
- "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
"cpu": [
"arm64"
],
@@ -136,9 +136,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
- "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
+ "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
"cpu": [
"x64"
],
@@ -153,9 +153,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
- "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
+ "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
"cpu": [
"arm"
],
@@ -170,9 +170,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
- "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
+ "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
"cpu": [
"arm64"
],
@@ -187,9 +187,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
- "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
+ "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
"cpu": [
"ia32"
],
@@ -204,9 +204,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
- "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
+ "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
"cpu": [
"loong64"
],
@@ -221,9 +221,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
- "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
+ "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
"cpu": [
"mips64el"
],
@@ -238,9 +238,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
- "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
+ "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
"cpu": [
"ppc64"
],
@@ -255,9 +255,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
- "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
+ "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
"cpu": [
"riscv64"
],
@@ -272,9 +272,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
- "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
+ "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
"cpu": [
"s390x"
],
@@ -289,9 +289,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
- "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
+ "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
"cpu": [
"x64"
],
@@ -306,9 +306,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
"cpu": [
"arm64"
],
@@ -323,9 +323,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
- "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
"cpu": [
"x64"
],
@@ -340,9 +340,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
- "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
"cpu": [
"arm64"
],
@@ -357,9 +357,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
- "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
"cpu": [
"x64"
],
@@ -373,10 +373,27 @@
"node": ">=18"
}
},
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
+ "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/sunos-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
- "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
+ "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
"cpu": [
"x64"
],
@@ -391,9 +408,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
- "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
+ "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
"cpu": [
"arm64"
],
@@ -408,9 +425,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
- "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
+ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
"cpu": [
"ia32"
],
@@ -425,9 +442,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
- "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
+ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
"cpu": [
"x64"
],
@@ -758,15 +775,15 @@
"license": "MIT"
},
"node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -952,9 +969,9 @@
}
},
"node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz",
+ "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
@@ -1116,14 +1133,15 @@
}
},
"node_modules/compression": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
- "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.2.tgz",
+ "integrity": "sha512-o8vI5RE5A6EVVOd9o41jKp41aJom+QTEO/Bx8MYNjexMo/Bv2WOjUfZr+aL0WnYSgymUy6zeguqLTsIhV0gMvQ==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"compressible": "~2.0.18",
"debug": "2.6.9",
+ "destroy": "1.2.0",
"negotiator": "~0.6.4",
"on-headers": "~1.1.0",
"safe-buffer": "5.2.1",
@@ -1131,6 +1149,10 @@
},
"engines": {
"node": ">= 0.8.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/concat-map": {
@@ -1140,15 +1162,15 @@
"license": "MIT"
},
"node_modules/concurrently": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz",
- "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==",
+ "version": "9.2.5",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.5.tgz",
+ "integrity": "sha512-YMZlvWrTPQEhjKp60XSmMGt60+pffbv6DyRnOMvVO98+J7aF8w8Ui9FhdcOwvSixc/kyR6SoVvmejcn/2lZBqg==",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "4.1.2",
"rxjs": "7.8.2",
- "shell-quote": "1.8.3",
+ "shell-quote": "1.12.0",
"supports-color": "8.1.1",
"tree-kill": "1.2.2",
"yargs": "17.7.2"
@@ -1205,6 +1227,16 @@
"node": ">=4.0.0"
}
},
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -1229,9 +1261,9 @@
"license": "MIT"
},
"node_modules/esbuild": {
- "version": "0.24.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
- "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
+ "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -1242,31 +1274,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.24.2",
- "@esbuild/android-arm": "0.24.2",
- "@esbuild/android-arm64": "0.24.2",
- "@esbuild/android-x64": "0.24.2",
- "@esbuild/darwin-arm64": "0.24.2",
- "@esbuild/darwin-x64": "0.24.2",
- "@esbuild/freebsd-arm64": "0.24.2",
- "@esbuild/freebsd-x64": "0.24.2",
- "@esbuild/linux-arm": "0.24.2",
- "@esbuild/linux-arm64": "0.24.2",
- "@esbuild/linux-ia32": "0.24.2",
- "@esbuild/linux-loong64": "0.24.2",
- "@esbuild/linux-mips64el": "0.24.2",
- "@esbuild/linux-ppc64": "0.24.2",
- "@esbuild/linux-riscv64": "0.24.2",
- "@esbuild/linux-s390x": "0.24.2",
- "@esbuild/linux-x64": "0.24.2",
- "@esbuild/netbsd-arm64": "0.24.2",
- "@esbuild/netbsd-x64": "0.24.2",
- "@esbuild/openbsd-arm64": "0.24.2",
- "@esbuild/openbsd-x64": "0.24.2",
- "@esbuild/sunos-x64": "0.24.2",
- "@esbuild/win32-arm64": "0.24.2",
- "@esbuild/win32-ia32": "0.24.2",
- "@esbuild/win32-x64": "0.24.2"
+ "@esbuild/aix-ppc64": "0.28.2",
+ "@esbuild/android-arm": "0.28.2",
+ "@esbuild/android-arm64": "0.28.2",
+ "@esbuild/android-x64": "0.28.2",
+ "@esbuild/darwin-arm64": "0.28.2",
+ "@esbuild/darwin-x64": "0.28.2",
+ "@esbuild/freebsd-arm64": "0.28.2",
+ "@esbuild/freebsd-x64": "0.28.2",
+ "@esbuild/linux-arm": "0.28.2",
+ "@esbuild/linux-arm64": "0.28.2",
+ "@esbuild/linux-ia32": "0.28.2",
+ "@esbuild/linux-loong64": "0.28.2",
+ "@esbuild/linux-mips64el": "0.28.2",
+ "@esbuild/linux-ppc64": "0.28.2",
+ "@esbuild/linux-riscv64": "0.28.2",
+ "@esbuild/linux-s390x": "0.28.2",
+ "@esbuild/linux-x64": "0.28.2",
+ "@esbuild/netbsd-arm64": "0.28.2",
+ "@esbuild/netbsd-x64": "0.28.2",
+ "@esbuild/openbsd-arm64": "0.28.2",
+ "@esbuild/openbsd-x64": "0.28.2",
+ "@esbuild/openharmony-arm64": "0.28.2",
+ "@esbuild/sunos-x64": "0.28.2",
+ "@esbuild/win32-arm64": "0.28.2",
+ "@esbuild/win32-ia32": "0.28.2",
+ "@esbuild/win32-x64": "0.28.2"
}
},
"node_modules/escalade": {
@@ -1308,6 +1341,22 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"license": "MIT"
},
+ "node_modules/fast-uri": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
+ "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -1349,9 +1398,9 @@
}
},
"node_modules/immutable": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
- "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
+ "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==",
"dev": true,
"license": "MIT"
},
@@ -1504,9 +1553,9 @@
}
},
"node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -1605,9 +1654,9 @@
"license": "MIT"
},
"node_modules/picomatch": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
- "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1618,15 +1667,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
@@ -1758,13 +1798,13 @@
}
},
"node_modules/serve": {
- "version": "14.2.5",
- "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.5.tgz",
- "integrity": "sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==",
+ "version": "14.2.6",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.6.tgz",
+ "integrity": "sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==",
"license": "MIT",
"dependencies": {
"@zeit/schemas": "2.36.0",
- "ajv": "8.12.0",
+ "ajv": "8.18.0",
"arg": "5.0.2",
"boxen": "7.0.0",
"chalk": "5.0.1",
@@ -1772,7 +1812,7 @@
"clipboardy": "3.0.0",
"compression": "1.8.1",
"is-port-reachable": "4.0.0",
- "serve-handler": "6.1.6",
+ "serve-handler": "6.1.7",
"update-check": "1.5.4"
},
"bin": {
@@ -1783,15 +1823,15 @@
}
},
"node_modules/serve-handler": {
- "version": "6.1.6",
- "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz",
- "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==",
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz",
+ "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==",
"license": "MIT",
"dependencies": {
"bytes": "3.0.0",
"content-disposition": "0.5.2",
"mime-types": "2.1.18",
- "minimatch": "3.1.2",
+ "minimatch": "3.1.5",
"path-is-inside": "1.0.2",
"path-to-regexp": "3.3.0",
"range-parser": "1.2.0"
@@ -1840,9 +1880,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
- "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.12.0.tgz",
+ "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1859,9 +1899,9 @@
"license": "ISC"
},
"node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
+ "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -1967,15 +2007,6 @@
"registry-url": "3.1.0"
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
diff --git a/package.json b/package.json
index 788f388..72f47a0 100644
--- a/package.json
+++ b/package.json
@@ -8,17 +8,22 @@
"build:html": "cp index.html build/ && cp -r status build/ && node scripts/stamp-version.js",
"build:js": "esbuild js/theme.js js/main.js js/services.js js/downloads.js js/status.js --minify --outdir=build/js",
"build:assets": "cp -r public build/ && cp robots.txt sitemap.xml build/",
- "build": "npm run clean && mkdir -p build/css build/js build/public && npm run build:scss && npm run build:html && npm run build:js && npm run build:assets",
+ "build": "npm run clean && mkdir -p build/css build/js build/public && npm run build:scss && npm run build:js && npm run build:html && npm run build:assets",
"watch:scss": "sass scss/style.scss css/style.css --style=expanded --no-source-map --watch",
"dev": "concurrently -n scss,server -c magenta,green \"npm run watch:scss\" \"serve -l 8090\"",
"test": "node --test js/tests/*.test.cjs"
},
"devDependencies": {
"concurrently": "^9.0.0",
- "esbuild": "^0.24.0",
+ "esbuild": "^0.28.2",
"sass": "^1.80.0"
},
"dependencies": {
"serve": "^14.2.5"
+ },
+ "overrides": {
+ "serve": {
+ "compression": "^1.8.2"
+ }
}
}
diff --git a/public/img/library-1280.webp b/public/img/library-1280.webp
deleted file mode 100644
index cf2e799b52469f705ce9540f0684898fa27a58db..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 148106
zcmb5VQ+Osovo0D>Y}>YN+qP{?tcfSK?POwWV%xTDf8U<}thLWM>u&FU>Y}S}tGZu2
z)v7X*k|CmCAX*Zl%9_gD#Ge25&P-6bptK;6b6|odw26}Bq-A8(uk^-$;bF`i=PRlH
z)Up1C4t@I?Gvu8mFW-K>Tu#PZf&nY^csKRg*X*R^?mx`w52p9 zl*6cZM|QXy^PPV04?w*0e+0y55D5b3fNY;lfIuK{<@Vj^BXIMx2e1q{1g5tOJ=NXx zJ@-v~+y~rzP5^O$`Ac3eN-sjKdAGYSLa)H~SG(_10M-rCr%-~>h0rnZ4B+Fp0=$3G z0Ac~1fcfp|PexC`H-VDAN5C0yw@bzR!Tifsz2Z&$jpcSKw}+v*21FIMC^vE5^tSkPle>s8bEh z@PGT(dYyeDdIpXKT>0++oB&GiM$h>#z$G7{2ePlghrUaphrrBt$glDbtPi4Fp_9N{ zVCeV7C*0@mSKy`4h1a7!@T%_ySoi|@Vs=S%+t(kM3)}|;?m3 TQd1pZ5fwg88Lz%OWk+jkeB z?yc`>7a+9puPE=YJ-|nR)7NYgQD-2q?*O>?uK8W`?`ZV mPAjW(48khO%mgK6vKA|AXkC z9J^p*A`V1dy0lBJ8LUV#*Rt}D0L{YiJT)uacqswX*Iv)RJ>cz2vvzu9= INV|bXJ9l@3yR!TyU^5%+1&lA?@cV`nSk|xEM|4xNL6)5qLGU@|z zE%!3!Q7xgdV*8Cfwu&CC?qPBo;e`hAq1So0Smd_z6e65kD`(((AqCExWRGmb8~Ys% zJEPtA13M?0qN (dT?&5owXb`F*uDX}=ST mXud2yYHR~ zj;mA%%u+wS(cw +)1pO&e^=Di)Q0%c|gF{BSif1BG7TcL)@{nf6ei#oly0$h^{$SN)J>;4t z{mH7Y&Lmwf!Q5U^>em >!OYl23VS XqMS2MEA1_)g`|YGBW|6rNE?G98HY% zQ%i=s0b_f17NuzF5_b}9jFP{4{DzLPd>&1(Ew2*3Wn5`3Yx(V?_-w-bRE#ct@y=c8 zc;qqviiz`fHE3-do1H`Sr%X_5%cqqiTxG&c@!84VQKD}hzr{if14@yRBkf{_&H-D^ zP)FO(Oj+}D&EUq247>zMBrSUNz>an-BfA13sph#uNM*vrC;inYTK9%jj3uzSad1iR zk!Z+2i0^WsFX|?a71zdT&;}|9SL$X4%zVO1&n9pt4K=epZ#DwlOXuMCqK^t*@lw zmR?uE+qX#pmpD&eFNbkJJrRb)yBs?TB5FKNlpGNHV^SdT%~ypG@t(CV4SQ(lcdSjV zftLgk+`9{Qv~Vm9sJt63QyWKzfze)U2N_R?d(52&chD71q{m9p+^=;Wn)HgGcQV-W z&jGwKhGF7G jWCkws3fk$om?!eroM(8LCs=kxTTuj!EHuOpf>6V z+OZ;8=jN@Fd3A%dWD?~URX>jYq+QI+hg7|G?45WrKKG%2p3wVx{65p*2386wT^+e- z$yKey^`lM(`GveR!-B3KHUG{-JqBbng7Z-`M}9)-QpFYOh1^`+-`|*KvS4hFMCdsZ z ~)L>5QO6VRUG&7bm%Yg1Lwxawj8I%-A)-wl)5Wj@;XUmo$hMt_|x^sAXi(4 zSHxp%Qcg)^MK_Q;s}5B|>U9M`8V_a$CY1NNVHio0wfWlB>}QwqzXH!FmGb=b5X`83 z81}ES*!~IjS-7TY9Tuw`h&>9q6ltID@a1w~LWGAE9q)mtkd>;6$70ydw=a?-1xre* z<2k)Bb&d}^=&6r6OKgNm{#p29F(y{tyJ}@S#iwN-b@|ui2^wC xt(IJ(SDwh z6stn2vn=vz&vMMdPsG1=z{Et&Q98b*Z=ed>23pq@IOf4OR8xjy;7ze}^l1%u*olRp z@kn}G^#w=#%1yT0KK-|_Qc`8mj8b1h1283h9ILEKxhXt69{|)ZE_8XjKM)o;2psSb zRCZa4>RgLQ-p7rKkbHuv`szL~zQ}Z#m>qZaQZSj}-hG$R%-Dik-^I_jEEqlxIO+pE zGLQ`T*3;TOJ{kfQYNjnh$(|Tm(k@>!@;q8Y59ydcRYx}tUGW9WomPtXXf?{Z>z4+5 z#21ywV1>rKzDn*+4>BJ$DfsZ+)E`Yw$jc-JJZnJE=6kHxooUG~zyLg-9>ZIv-H9+9 z3TY&YB?!}sOJc=oZSPWUgwRX*x2fOb>fhB0n8rLN0;xko`10;Me@DB57X6tnED{UC zSKTzEDoHp5kAFO16f5WRtF%P}_Nu+FTit{JuUZhH$9Zt#qPl(;)0Nnjh9Tp~tAzva zlnN`~(Uw76!3H$R7siTV-mjl|r`Hh-O1cvjo9@nry+=0JtskbuzhzpD)|^?=w_jqg zN>AP-%X7s*h6triL!j9^e>lMgK;7I+Cy96XecqJ+OygC&QvCYMpWD4w90r@ARBbq_ zLap3pF`cJV Cda29sX0r$R1Iwt$Q8$$ep*sJnup;6w@$)k8^wf88#4 zg?!9;{}iI(56XnVcvHyc(d1(VZ^$W zs$)fYrBN0)VAfp#o`Tlu?aexXk>awD557bb&~y$Y=P!u}ka{}@3GhXLbYmFAJtCAtjJSZkjdqg02p-jk5bXLgVwH?X(5MRb_+L?F#&_v@lmdck{JjiPXmbsOP(?~Rw` z=2J+s?r#7W%PP8@kbbT4Fw@UD*)&di{2)A&t_T)~Cmo1xUfw2`wNusWo~#c2?(aip z#`&03>6XH(wesT(?6`)6YDEQz7~nh{SXBVs#d2T+pukoaCEa=DQ>*MroIJKa7z`u; zYA-!jKB+H4#zUM!+Q?`MHl(R~eJod^2vYCKS9e%;1S^^8Dx3c-v*fVb+nz^1|7U$5 zI@*@{6j^m5zthJP_3;Aa6g32iT>r?>JH{a{LdxbFl4+MyHz1fWJ%7e(F#gxHJI7w~ zqTwhx+Si0XkK}{p`Qs&b%MWn=Zzd0ofYW2{lGLAAP_EyL&;dZTmW16FRiC@{&SEAe zeP=YMk={lL%qloe*C^k?y*QmXxPInMA$iXF)T$wY()~>#H!>2s>P)KX#(eg-$~2zb zmoNnJ=-$*uhcK?A%#J2!xD6_H=;pXQxq{; e4J z%Bp6>?Z~Zd3|q>q2guvLuW)8MlJJ3c!PHjHvPn0n*&bev>ldPvOrKx*tmDcb?FGUQ zhT@Nldi4&Kj`^z{WhJ@=OWBCZ`03ADttw_~%VL}eT%-q0k+AiDwI6FTOSQW(PFUn> z Pn1d3%hBqyV~_M7sc-L|8%lokvYaLQ3A1nltJ6cb8bb zc$I?-v@pVKC4ACVvI1+oNm3VK_!byPumldMLHBxy$X4c%l{ #xpPd+8UYPLM$zyEyaQBboc}G$;yQ>r7;A*QHeHZkxgRgyXzXc9rt_xC7OGJbtGi z3X11O%xv`=dQ_I!bxIx#8ptOF#SPxibaF!pO`)GBBMG?coYj>;|DEUf^l!sim`;i^ zKOy$Roh{|iU$|Q@tc+{sTk${;G^8Ps1NEbOFyUT`%%ez!Yra(bo?;M -h=1Xn s8Cx1lqi){&@} O1IsqB0h;{ZT|zP8ANN81W|U8muWl^F|ukW!t?Umlom@^XQ~{pysJ z@})!mlOI}2;@#&)odxZK4&Cn*y$MbSwdebX&P3$++druC@eFy$v3gIs X=F4 Wixy!eAs$A^+_&6IzP;2q$h2*H1AT#=m5erl6J>lLwC0CG)w+~-t1C8bM@7$ zIJK&%*Z>>#v}FXE%+z2=b#5fSvUN)%>SDxHvK$PmiPyi_|IxoWTayply5o%QTVqkz zAx9g7>VUpVLYkFFKz!Q#>b=|@!YoA;R?g)hFHFV -5h&-- zojb!aW0wv8rPOFeLT8Rk*eBvkyr~+yUf2KHFaSc2r?q#zn_-z|Pqh3)rx;@
Dz*R=VX0!$1$L+okxO`Ha7Em4Gw_%QWHx4x@^;uJD(9~N8h ziXi g&BzQo;JLHMjoC12wl%+lY}MKIH@dsfwvfY vxMYU zo1b4%2hmrtMZ78xYZC9bjHo+J)@c5tOw)emJozv0tvr0?Ulf1G6}2bj+w_l@=taZ7 zQ6O{j=9KCzywvI)VzGI8{p2gVR$B@uqyIGMyO>rdEd%d0e2P; @^ zij+{padZcb@MjGZTgB?`ruv5n8p2XL5_L>4>nxm~&ehi-1Vo< )VS06&Arb(ToV7TWnA8ihT}269d5#fKysIG6=jzvJ1Au<{BsAO{h$7Q30; zmAM7%RyX<3t0}A`M-gMt4=B%vNu}m8tsAHqTSAg9NQ(r$enCZ-prM?q`hNll(Rju# z>g-m?>_p8Wx~k6~3c2SO66JOGrf?S3`?J|dUk*Nv0P2EM&O=oTo4=!30=^qg%q#le zbvjo#X<3BWvJ=ps2oQR;kM&GmCrs=-!AveYdG#Y`g7E(L;sGhPMP7*%VT`Mb{(rr$ zYv-$|SmJ&txmXVI1Vq6tx0SrmT^$F~ZxX@$v?Vq(8Ki@k7auRUZPaPHXPMtv;km8d z!@Al&2LGW|d$=Mm_Qbjy; @$Utm*9=H*+}XQPp1OXG-FIvP9|PVq8T0joDCTGfvG Wmno6wuw%dI6f-zkH%5Bcv=;GCUH*-;^;98P5BP+(jHpX_> z7vP%6xfkX$F`L=py)FRIK#&1f jxluk4Sx0cX@aoP_j 1VRZ5(v*y29+ESU(FCQ9 ze$&g*wJkrFy5lgT(wFL 9atrq6r7;CGG{jmR|Kbly^ux*7x;LQ=9MB z#_6u(!x`8Pud^d}qM2x@1cr)J(Owv|G{A3lc(vs6>x D|BcRx{f8;51+}S` zoj=TVtR$wV=qB5cfa%Si#o)!&m0nN)QIn9GDu>|_+q?=&b?=lcT{tRl~PK^?Hv Rx?RR?mOq6zk=+!$6;YV$T8QdDT){jbyYHds5L7pn(_-zl zDH)1xm>%_{x1c=-?qLANtpTmg6 I}6dED3;)l&pmZTzqyxea$mn2}>N$7~yh#VY!oNt}=Fp3ajS_~4_ z3z|LHN=(}_oRk1dXwOqaHXKM8l;#M(VSv1lKS?@sDzQn<{G%i%myD+4789Uk^}!bR zFVFCWpR|v{ysiT^{DU`4MMLuaF6N)7Kjz&_1w%bGo3GP7%<}FGcJQ4}5MG-}oykG* z0%}m2*j7jE1XU2OiPlX|zg5@QmKCDVQR#;08!}>(rFMn#gp1^|kgUcZ$yLRl(8?7V zl#)}QFB7Ay7?CZt^sQP0Je%LMn-q9w{tg|hfgS2y$es}WcKK U(^y zZs~{B80Qq%e6G$!0fu7~sDo82Qhi};=`!8fvXX~+jc8yjmd+#@L7Oma6ed*t_jY9} zC&3!Siq$!aVPDy3{f=9QcU5*LA!iaBZ}XRW+3}9F_iBqT*${<-Lp=nd9fk)g(KRuv zZQW%~$UQO57l^j-IUBw2hsnXM<= %4LEBl8jdQCtv&6%WaiPF^f^yI#O6A=#U&SI-!4vxo7kSjqwQw`CgK@8crVea;W zqoAxSCn)(<%|X*h8lB~|Z>sr6ytfa398#I)ybX2|snlfhebom}38f|NRC_KR#%pgg zX;S2E>#@9aL82iEooJ}|-}=1osqM?6yc#@)nz-QmhU|pUY Y= z3n$;Va09jLBu@VPPp6cH-R6e_yS2i9Fusc`T}A(U!W+)ZB)m%|?lHqsoM%mrfWG2- z19J8xbnk}Nt5f~feiK=}c+K#GXx&%c@M)FA>fUU3Jj*0E >Mp=H+U3H4M#{#8-=-iiD1KYIP7MN~_UL< 8e`Yp8WLGNuKs8*FaaWtfN=T6uYd9$IFn#dsYo?)ReiE-E_d+?HXc&IeP?knUR) zXvt7iNqHWiD7N|Stg#qdW`}n8t*EZ%(`{e1pLsF+4x@y{~Y3Fx#kMqXoA{C z$FlmWjj5Rmt$Q?$^ojX}#isSHjg{NG|GtxTfWLk>o6sHjrLvv7hQTrYL8tzesT3O7 zSL!N2(#hvZsRmk@Q@whkQ)`Qov*}3NN04q6{Z}@%QewcIxTA3Crk{9V$6`~DeP6LH zw2n;x3ESZs4ed$CjPBM>qp#S2Wdg*a?d*5{Z9YKP&|eDrXR&a_pn2u~*KSu~CbS+V zrIFbwA8wLVu#C {*Byl|Fq *Da$lolhY{2N8 s4P z2%x5QTe+q9Ntw=J0JYh4eKpQqcd8_tzG;ZcIRAqgU4WX#o5vq*P;7)LNTy_q{?Yzv z+rFwpd3n(#$zx?puTg5S;%!iZ-AX+h!{l^vivC6Az#hIvv?Ua7)+5~DrWA&%4t=G! zraNSpOH?@(<4m{!B1`Uv$BOZE(M`>0NIW(#JK2(}r=6gVMUVcWZBD1@!xnUV`;>0R z8b%q6*o2U-*qF?(v)I<5&A~X~PKw`6#ZWwjWGWA?q+sT5I2?#zD@_ueeH(%3awgnv7+$k&QMB ~=qHERhIemt=Rf|=mgEZ5|Mo?84{id2wr2)1YM%-m|WHFtH3Lc0+&TplRjjqRO z%*s@vI!tj#e9|=ng(hoU&1Nh`fU$_tctf1NySFX;<+gym)1^*|9 -<1ll5qwpRe(^>tjgEnk-xkpp`+4Ylzvq+5q0ZKM;0qa2 z02EYbh|~aRn4hBnU%V3T=g3DEt~a%-6sC_ZJlK5oO{arS!zSIR(P>HQGR2AAhId)4 zy^4U~=wJ$KQy=?e8LuGUY)`pci 5q0qg%VClxax-N% z8=zRRK3^#5aM-=Pk&bD)!xa&S7ALG@!r>8ef2PC3v=1hNpUMwHHHBSecExybPKdLM zZVD#1Cceaq=R4+z<3Ust5JtitGxH|}@gjJvS1H_2SHsFDdzn_0r%}5~w@*|VZn-JW zc^pl=YCS=}dUg6b*m1YB=aH_D&7S~~=zX4&fSwS}2>mAW!Iy$ZWZUrMekT`B9Vty| z^ao@n(Jba{q34ZX2su5DK*efJoY01$6VlCE$I)c2^7a@7>v;oN?;_Ul-Ql_Y88z_U zdITj3gXs64<@9@ezt*xzD&uGgJpv*sc4^Z~H@sP-#f$cw{d5q}gHpf)+ipg=kdDqt z@&2%rfjH~0y2VWFDUJL(crg?C2E_75X=!X_!gqz$1J)n+3CP#2Y^eqQEMO1%FW`CZ z!8R=KuMk`IdW8&sA=4wa5OPRc`0N{iDm2xJY;LrY&5w>XTz6Ma%28UDaSf(TL%XGG z65aI2C4bc%3NEdRig>Zn4_durl+6v$3`^t^7vAY-<)e(ny?#6; U7O?^!e%L z_VwBmVOCpbsRH`yP3mLGt1HN=6|n|f+pxOKjwiP#j;heB*sSZCIvQ)yv%hrOBwpKz z@04+FW3C1OYT##NALI*6iFG)|)sm<#Q9nGeh`JhAP`6{vlir{AzAHeC;l(ViGzH-^ z0y|Z-7WX{yBhKR+g!Aw#y0gbm?P>T4Ip>&(9RDM>_H}d<((kx~(IOO3k1bepAbxLE z@zWt)WX1;Xs5lzDewkY) r}Z^(J}!*~$Zp078?i z9hklVK?z?hVIdp@TI7A6Yh!woW{`AZG|dK3E8>4Hbf9hqHbWZ>iOoV5yQt+wfMD}P z&i?X3KZM2uYfi6JypAawRZ#aHAH1LnXyylvc>F(K~Z@3Asn2n)+Z&%eR%qW$~9cWbDICc zypTOHtw{2n0q}EUNWxuptP;oFw)1=MJtjVHJBOtB=R&nb;5SKTC~p&Vq5fw^#JuB? zb&504F_ShorbhX3gZ(=tzllM#x4>s5?wm NJ*0(WfhtYStuDe8Rl6y^8i~X)@* !; D@kd=PnA!b)4 zrLVA!k~+%?tWONvKC&U%=YLi5|6kg<+b6KLB@ZiI>ke*Bo63`&n7ycjR$Xv}8x)yw ztR}XbC8@sEmrh*zfDuS|%-};rDLj)c5{$-qn^cT^t6?3V6=v4Ib75wS(X9;c#4L4f z8{VTlvsEVwLsFrn5jH^OGxsP(5x6`2YziNRecwW&My$@b(S?_sU_`>1!zx;);jOqY zp~^V=b|-V@1U!hyhlL=R-DtIXvbq(QVp;1Im6y~n{3nK) h(8o7C$$=2E;goB1f+NL#i>7PNycB*S|Z(+&!=4 zakh%~#TnuUIpFi0p6LAQxzPw>nCWPH3R&bh9V1d=m_~Qq)$js^f`|C5D~&@`^+V?+ zP$VY4nm5{v`Xzcn##l+=lUGGr&Nm9({FtHh`{vqsOc!`!I6j}u-n2%S-V>@8wMlcc zrqo_X(qPmBb|1=sj6a1Q13(Lr6H>hb$#AeLU%;ebCD=suun8(b_fO6R+O$5tk$T?Q zk6@)xalxJ~Fd9?UX@8GoN#+g-OF-8VM9XU8K$jl<=*=Fz=<6{|6hkD4obtvJsaitO zZ6@Z${Qo*P;eWTXZ!97#>$sZh?5u_@$N; !I$tQ-p=I>fu@?7t+>_M zhT=~u{(}XX&j4vw|Mt@iUBR^yjH;^W-}^Wp<^zm17X-Jd+}Zcq4O#CFKLyN(0F5js z9@EzyI_h9?oq%~iurN}R;Uv9P!ddEQzLPc$=F9sxm?q6>FVwO=Q%9(Un^fa0^Do8n z)on8zXDz2D;A?Gac*wcWqqo&rh1aR^X;5AsMG2Y*LzE*YC+#QPM?OmXjY3XB=SK#k zUA0ldXixQ+yd)7t3ie5M`0Vw6%n?%wi0HeTbU{m<@Ht;-$?R~-jsa0Z;{2KLQ#poN zwbM~)#wbThY&GRa=JlqQgHJ^;<}Ej#O2|)^zNp!g0^TGN^@3m;yRyXs4@Ym(*_|@# z5BcJEQ~Za7rCxst6n{QR(*h}n@#SZI84c1|uYIrmTIyoTHBbwA1g3G~;qS(+SG?7L zw{3*xlw)(<`HnM*N>!{kH)44P>^#wv^Bd@Oa5L?`JoSEf;ojYI=D9Tv_~*`Vt??v$ zkL_Y`+{le6r!tW?B++bCUmrtb2`>+rc!90J214$u++z?*n|y2Va-w_e?f+=)fkyrJ zOiMhWHfhJW?WoWg>?+|a9-l6%{$1w^&Dy~k!(eNFwx4UZUfr98>Jxz=t$M>6!yiF) z)(qzkaB1FyOPrlhIs0`>MdBx?bq7PGEhA^?&}JVKpg*^plM&~?X0IQ%_r8}3C(yhp zX`cFq@Yb1$M%d!%lY%6`)c9Q}3B$S=`~(~`>W)a+VK?CaYEmVK*wON?Ri1bt;oqbb z&Omo~1l$_-FfzPyqCd>?hsUhS+;KKDRGjOH-GNX6u5iBwRe5}z2%Nf7wN*+d+ujoA zZiZxTYJnwk!-jT^TwPv+dGz7sTIe&wAWc(mMs2S{&T?SBUj&X`n MW){H16+LmcG9V_I zNrh4&vM|reiJL;c?2iB5Uk0b{hrl&oW-BZ(J|^yCRMf%|DQQ8stgSgF9~&CsOf;*S zH1RijzF6c70k4N^yc88AEIex!iE`&wcvrI`k>GtS8LL72Yw#b{MXoIUA7*x9kzo(m zCh5icL)?VlK!F!bn5fkb-@1{@S129JoGTeGA^9Rb^vjs)v3Yh+Y{?|r%8QkIaVG5` zf9~Di)#ZVk1&Wl~#W>Gk_~)a=W^!DWHrbbF#SJ!+B_C8d{Ca bb1M@I5B>vKpL?8vW4T~M6AeCdQX4x!OSqoDKds* z(XkEI1R>VKt3!lHXq6T>XiC1C(wg*s)eQeHZu8&8|9`q6rls0_QUxmjLhH*T7DI#9 z-=&*^rYH1uA=T&=r;|>EMLtr{8x9b?^rMwC{Ig55?#-&5?X+NL;DKHKe$my!)x2R_ zoJ>fb;d}E>n^eJsOLi2%Zp#~U)6}K23rLgJf>$VJYi+m@-N+f bFK}q^DI-KS_(6P zfNGmTmAoQxxny?&{?RHV{EzAb@$t2=Oj%XBnaZaxzxR1V LXxlxPo-owL659!jnX;>-4jSs5ei0>P{QYo*1Qu@NR;WDh Q)j}QLJ;!GAgEEKNi^y*9@+6jc+~OC<<1i~mrutI|`&vYF zuGBE-dDC-If>t`aQnA29=g~GliBN}(?_Pi3GZk9&1_{i>oVPvU67b`s$N_xf;keBW zoRmnWe|EE@Ct- D!k9(hS1GCkapl$Z1uilQv}h)xsw{lgKdUyBW;h*D*`ZP4d3 zI0mOIna40 4xoVNLBTfzCCf7X9ra?hGX-VT=0{bfpn-AEo=PP#-F zGVgFm@gi(wHS@g+qMUw}lZ#Xa{QzAXEMe;?Jc w?5Eb1@mFX;2bWv^o0MQp92iiP9V@b` zAd)lWWXDOTagKGdTdvan_HIjIHGnOpY>$?>FRB7QA~1{p33;;@K_Gy$-Zf7jGDOzT z1sF{a!wHazd6V^iI=9WkY`X=A!8Z_?jZBb)QatKW9Fu!XUY)*jNg8()-)}@mW@I<# zg4VYMm*i01(qGQ%>wr-!H}#Oi-2huvY|rnf)4*suNqu;D@?I_^NsC>=9|8)Gz!lko zfG{72+rqvabYTppKaWB&d7@ZfZYr4?8*z9HMQ?i0hy}~PS`}MqfKN1DoJ{y!5lY2x zveXnfAJ345?O(KGnq`{%yM%hvpg1AbB`8T!XwG8A8e-ZI-UC$stT*-1NLrGnv^4ft zV$;-+zaam;)Q(Ehmjq5jZq3{E?>l_t9$!+V7s7G6O8 $t_<;)7NhC7sf5mMGdoT3FSUgNdA@IYq%l{bHJ->I zw2!it)ckxYhYewXA*+Da7nf0p1Ba(vwXk<-;z&-5V%N@^B^DkMq(t7MY)`$Eh{zbP ziV&wy1M!**n+?v8R9rE3Ao3Pc8|A$!>2#vzQOk*j(aKR|Qg-m(?F#&fpk(M!&c9vN zD7EQ_*KSCzV#!;uy3a%l8CL!?6;Xowm?Fi^(QY!+i#02V9UrX`+#kDJ>96sHe(npM zq>gn*G2Y)-;3;^NiOT6<&f4>%iKmia&+_weUT@~qb6z=w(@|Ho!%U_(1iv-%Y4N|u zv}eO?B+{LYj_U1~ajq0QT-0eQ6&L{0p6F@#QN9vyPz7?8#S+0+;n6Ue)%Q3+ZjWeX zjQ^~~J@7`l^~ZYVaIR!U0QQmqw|-1!>XAmSV$&G0GkW)y$Je}5d{nspqq1waDQGL{ z)k*y PA72%c=GoCubGLtcx-uWpZX;7RvM zHu^IeavWCyc@3bY4y7t9NcUy8aiVKtC6+P^=jKV(7%kbhc*@|o{5=wICM||RjqqlP z8>;oSQOG_<`r02dR1fl%Sj`k*d8RyVZk40j8G6!Qb{eg>VpDvql^V?ItZ{RTe+4IV zBqFntFIeW@>f7Weg6B-KBF(21Ia#4dTJAr~yN+=E!GXK-Huz9Vi4P>QCdk;;6Zbv} ze15@I<2w6jinA=x=mAa9bNC4{da?7x<{rgYHoWA&*&gbQu6uKU2BYv75$5*i$qx*{ ze7?v?n`S*B9ST u_{rd7^XC|;GQ^H>9f+y1V>kOR{L1NQkrX@U6r97VjzyWdrGYOGWMBJ z92gSeh+m1O5MU^P%q$PeOHCDBh;YxCz3ZoV{dI#H!lE2?bvI6QEEnn5BSvhNan{@TOxqN-Hj6cOj<~)Mwg7 z#k|Q0VON_}QHr#z$0?$@)Z}G;$(yCLPlAG$wM1&s_1<1kJdo@A_RoN6ViVRc?LhLl zI#UY#5;ifarZeP5MD18gK4ufrx_Ghn2tW4mD)))bIbUQjL@_tI!>=59SD*uJvY0fi z -LNL2o !qDkCbCn21qM!~7I# zD}$fXG)BiW_PG0XY_3OL5%$tPxt5ECo3~6OmhqQKGBCJ=$(5nid&A{WU)Ck9x8GiT zD$^ce#7TC~VpJ`ru>r*QAR@Ex*CbNu)28e4YYQQ%$RlrtdeskxZD~oI?`v$bA^lQL z43NgOWzU-k_rfXof($QgwXp7->ljHc9;w!~F-KqHC7b?RAx8@klbB*Xp`*R;y;(4L zI@}v#HK(OD5mjB$IQWijQk%NVA+D#8T4id=E`5$bdQKV~xe3j!hcCk|m8VtdKPA>Z zhaThOe~3Iu2WEz<7P2MoGNpHC2=k#(VlyALmuTGnn52tIf)ZYF<>Kw=g !6p^AW1v4M8r(IFxb30grMvtc~fD_6doXID6OoCJL3za zoHCNYWyx16C$d&_{P{xBn!`W)rcW{Lq{xnZ9`b;NjQP`FS2~~^dhDx@T4uO^63(lx zo`*}3wT4Z_gRv(GA4&+t@GG|Jv!(8#!W&KxsQ}N<)d_DG>K^TG%mK5`wR?KPjtaW< zhxv I|EzsB3+U*Z=Cu;PhQxtJt0Oa{i(E8bfA1wnRR(%c;P%tFbjIvPdq^ D(MVYnM$ z@ld=-JcHsCaq5zFmX2u|Z!NOJ_^r@fu~57;nQ!QmX!X~SA)=1%Dd$ez9tXxxzvG2^ zU~4%$(d8KRQ}H XR%5pD|~};^Z*pmbTlTuQ$0R zNnNcF;s;upXHAE2{q$6KCb2!mbkU)RL=n0vSmYsROPCm9kMOzGXJnxg(X&&+KTu)z zrUnxgTbB K?(dT@Q@;H{ zRu~uTKHgLzgCN@&%TSOZxIOtpsQe@8H{(+$cft490$IPdej{PY=RP(f>C==4-5(Hh zK0O?g^tVg?gQy P7ldpB=%c;&S?+aRE4vkA +CIn=yI$ayJ>GD6AdRk~Nfm|~z~yOX7GHH{zI?cdw! zliqR}er8}#`jWD<3aAC@2(93p2+VCs3oiHS9~HWN@9j45g@T~G7B2NG1o)5VSg2{W zg0&>Vs0L=YQ4#nl;^KEys8kiv>Mo#`IPtcSSBJcbTERRh8fBA{7WPf SyH(?Aq bo~YZowMFpeS#Hw#DpDru;!rS3+{CCI5W%}M#w=kG7_LgS zbn%_O@_SSj@=rFDT$t5Pb>da#F0|LAC_Z%Ya*@}6w<;w*o$FiEP;WjGHbw EW`T?ieW(SW< CBbRAAJ~4Z zt{$c)2}St9#EFfjun=R9hG}ahF36i2T}t5qe3w#XSq^)|Z1YI=UhRr96$}^_#62_Q z`fnpk x4T?S_dJ_X1FsA81a79G z&J+R?_18HFIeHo6+`}#Pb9>iyay$yHLEPlITb-@zf}3_RD;}!J}i13 zxg57Av_`bt5audFRq#OC&@buVIEBd3ocB<6tYS^9AzfqUptsE(I7dR-&@RDH{~7z= z(SPfA! A)L%!#S+KiB$<1UOQjW`||a8@Y(N;iO1DM}YbbuRZ8D z%c-XJMqJ{ !D`airuVzUrC BpAw61|(Apfmu}n&c<@Uu; zUVfcQ6Dw&VkwWeMQ6fnen3NDa%0()M? @t` zb+Z;fkSa ?Iu~1+FoO+ZV4FL!gXzsA`r)1m649rX^MXM)N0v@I_GYgY@}d069R$zfeUL zhPh#nFPK+C8hR6nWxUJ@Y+5{kMwuqUO|p5@v}bT)^Mp?hz5a>99NJr4VjkJi?9MqB zwOp-V6>F~y2T2l6ms b;?6=Q*DiiOJDj~ACJn#OMdAtp~N#$n4lg`X7<+hdUiXZlX zCGoo<|D2ATipgEalcOlA-iC6OuoX<_y*m(^;gSmaeW{WHBqaU{St{~cj;fbRoJq%9 zFJUGj{3czYSh2*ZBdSZQ>_Pw;&Ll80r?3eCW*
T2PM+*&y&+2k1aU1I0NUgib$6Yv-bFE}D zIe--Gj-2535NxXZqwddFcP00Y;)}LZ*_k(?vD_PITo;3|kE#!N0k2G!oc)ubZz5+? zi=l1U9&tE!)Re4k9A#uEi>^JTK=E}-8}=^h)n0=>Yy&2viYT8xgYrcG4S(e#wn(Wq z3|!9PCM*F`2~eRvTDte=uab(wj4Q2mirPuPIln;^-G3#)Y9uG6ly!S(P;{aRpsv-| zaR>g~RU+>}ZyeZ?1>asa)KZWVbVYO(f!j!4Ads8oH(zt >;RzU@+Fk Tlt%dUf~DdbgoxcCqKb z>Vm754Bl)ODI3E5w$XZxu(l0rF92k {iY|%@ae92HswlB4TV3`A2 zz7qcj(FN`O<5^AS#@)PtlC!!uJ@*_-bSogSS4K8;V8xoTW4XmC5>I+RQfKlXIPmgX zAI*3cAkR39XtfLw)Bw{DcKA~^Y;}FLr43_v)2AqsofRg9Vy@G5P}z3~;qIAoo0JK7 zl40*ui_Kzj) |EQ$+tcqhOJ1(UIP-d_Z>pVYG)P4QsG z4{q-AgY3&*fJU+47M%k8!(;tY=eUgKsDr*tp4_0W8JwQ;lB3n|Hz|-xpk1}k$NLJ9 z#a6Hh$u3Zh^GYE);P%d*?I1J^D(p N&2?MqOozv|>B_!NrpZVlAi~+`W;pNpGY+9hVFb0F@$3Zf@4t@Ikq$2##&o zh31jD51QzQ(E9|YySL61PS@XMxHB;lDtTgN=|Pkm?uOqz?7vVqJ|c1KJEwopc5ruV zB2+>LC?MS&Ve9pY_$} Q7(kP@>&_i5_Cg?jrF+BB-ZC$jGx3bIw-5nUoVtNE z)MhZwC UEfs#BPVc;SP^kqGvUi_ZBP2rE~|}yX?V{sa^)k@ zGAzzIn1CER;fL}xc&*>=-C*v4^Do2(%1+}wd!Ghouvme?Zekq73gyxn$?M>nU zGb-5pig*AE=%Ql!u_85b-&6jvVd3B^Oq#?{_R3YW2ovvxY z8&vtY!yE9Kr$B#_cql EmR=VM;pTenh7T)?0uwQ z(95jeS-m(Nju k2(y@3=Yv z{-te)SS|K&Wu W7q~40(9 {4Q4 zmg6+~?Sm w43aib9vUjle!yR;O$bm%v#A;+Tu4tyZpG-{X}?WjCX;yrLa$| z?bJs6o83kCoORk&MIb_6vR2zZw6VCUE2Ag@7_?2m5Li7KZe1*v&>XDx3s0f+E96vX z*r?;Xn7`&P6Kupf{<9q=A(GZX(u&gL{o@6wU*&gOdymf>4H*g4c^3|$-~E#5l5>j= zD?VO>f9dPtJr_23`f|x ~7@4y4cm8_Gak*-}#!Hi`B= m-@J`r67LqbR30(8vgsA1 z7)CNI7n< ;_#Da|Q6O=D;!&ekn zku|Y$BwNb~>}=#*slaq)7@WR<1X9|~jG3YQp3a~!NF5>Tet7EigL$i2j*OcgOT^gv zca$CQ8w|pbpfv8a1oEf98+q@tQ=z@5>ZE!^WYrUdL^{ p(IuKaCwNan{*T^* z L!x;j7VHOfa~f*=*6Sw$MT_E0l!|7c@t?HOe#w+!-+o zMbF@14%l5jvs>X^F2yq9m73s0;~^D_&x5VzHFcceHC|`+y0^djZ&j+$I{*BOOpki} zuo|6fz-?C|TZhW`%LAW9ByzEA1jSzMqNZMV^h_ZeZjBF!6yF(Cv;wi>f%g?Ep6Hqa zKkY{^5n=#IOGGd3AXnZ~WcM0}twPKa)I^uB{PHD4hnigXD1BL`8m=*IC`fwetqGrB z-43AvPx_E5#8`}gKHw~dF{L23k De*1bcOJX*u4{*>41mz2H$#2wS2nrQ4+ z5WDg^NOB*?i*V2r;J5$N6qDs5(>z97mn;C=XfI#WTq%fQl6392f+pGTqhM;dOy})j zQ0f9zmK @4j?^5%D1`x2#o>4 zK|*wxhDA~Sn&3O4c=RR5*B3_Uwf#O|U;CqUyn4Ss&93`ccZ qG=mhOsZ? zR)`8mkX`t+PU!23$>NB~*&7TeCjg1@)nVeafeGv`sWqVQck7{ h4$afzUBLLgNQ{$4s#;YRt!e!f}5iS`e-hvAh4|w=iD5if5xp8 z+?B>s&OuOmIB2%w0wVC`rlL3*=9Q54dWcX*mXc^2W1>4$Ag=r8%Nxryhv0SBu@N8! zL#QgI>?9N9Bg*X4%>69WuMbi`!C;yuPHFOB=68vaxPtkG2PA@we}fuZ5S@%%Fi(l4 z>Xa5ks*^g?qM79A>RxTDyd@ZR505UUeBH5(q0x_gG?S_vJ8y}F7{J?I9ahe9mrVli)|Y@xDd%Ut8Zso+{GmtvBmrVgSBRrLPx6lv_lQ-RQp8)0U19rm*72xoept7 zA=&2#ZCtBvGUtwkr$UWjMSod?$F#BR^~7VP9n;Y9fHjOkVx%3fVTvN8W$C(LJ}#h{Um+x-qKqE-}r}m^zg(~qhk^vD4DNzqWME|Yz-L)=N=eD?jXq}GsF0#v=9+D z`>Fh*GJoi5pqZZ7JtThHYmigXl58l*v2=0@Tl^iy|J5~$oeaOg8rKu=>!alFESGHf z4SM#`X9u8yn~`MXg9C1Ufq_^14H>f}mCkLuO#sZBfYo;H~)Dt@oNXudg5b-~s;M zbk0wb5nM3y^jcb}F~T%wqpq417CC lt`;7thUi5@P5Ir8jY 4R0rZ_6Slpf{X>e#PTTzgHxCN_TJyoV zk2C7i!-gvl?E3u(FW`)LaK{I&vBT9dklPn7a-fDBD-iU-Rl~eTpw6R14NY<>{mC0e z_Y P767ncYYCW0Su>9UgqMWQw4(!Z52lu8zc31ARn;@{KmX6v+1Rh zL-b3x7+Sb;sZGiRKf)w5awJxBNF^W{ o=T0yiyT0Mv*{ zZ=+*!^rNp*^kZzlW&|%?6up?CDWGKt#nOhbnh}%Vrw$qWa%pDd!pz^x=9=g1(0+%H zDs&$)QkJ-FB?H(Rq7gk1cN|x6fSlsex}|E9yYqH2SI}8L)}NzuB3mXcDi)d&mbYIg zv`%xwmz9jo5cB^bNp83eP-Dma$BHyON^%6YmzsBqhFAdJ?G^|C5n7hbDrP){%~@7T zEns%j%7-8DDiYeszIwhJ3)WHHbtVBePMYmPLOoq68RJF95d(oFts^teYI6iSdj7`J z+f6}%*-CLtZ{UAt?Eari`8Y@_n=snoWWUuO*=OjF1AD8$H%%~Y^(gTT9m-MG13YxS zsyllTn?do5G#%!1r+|iLFs3U;B5Y9yUSZqA)Ja^#VW?t48Vl!0hq44++>q*6r)PXk zJ>2OVMJfLwL|0Z@co}yUm=x#h!lt>0#h38Y ibV_g48F@*mlpiqsChwn;kp z;Se!jWgu6T(At4Kn%lfNcu4C)pKfFG=6r}_Vq7h668+->*nbpK(Uf E+M| umZaAHhzsmjw>oW+>3)i@sP>PqLr1 z;eYieGp`|)WU-Mb#Rhfc=lVuD_U{0S6i{COK##QV1vTl>Ndt0tfB(M4i3&ce92mhB z2ItMeic6l%&f}{647 U#aFF9LqWqPx-u-CqN2DweZ0}-VdwQ2?zjm{ zc>~f|NCAXQ4=dE5FTzguUI9fUzwL0n-?LTX@=A*jbA+KNq1_GZ6Ufu^CrJm4J*oGn zT34xq!fw=HKdhy;hO{ej4yPxT)BU)YGVf&3#?k*6x`z=3li$8fO7d6tDI3O2^r`*+ zg-SwZbU5{qGKqM%LU=gtPpcQLLWtfSnDn}lx--v0P$lx)a4td?CMcounrQICk1Pt8 zqAF}#h6X|ibxtZlc%HfeFE^~KY5l(hI#N4HtFQE1v2k;)@=~Ti+Ej4-jtqAsGxw z+VEgxsCB+=iPAcE$Ad0r+@Y*lm1suV@@)iTa! gxdXOnsaMz=n z8}SQEDyVeps4OGFytLAGHOIXc_U%i;Al@XJ?ZkIK%Sk=<7olW3W>ADwsab|~0w)VM z9PvM1rJ)W?v5+&f#>YbpQe{UbSz&j-0OTyi^HC_eR@FsSmq)U0Vo_UNzIXwojaM2J zTk;KoZ`Vkl6dOR $v`aA{lr7on4h@PyjRry4@1%d8GWjxn_shgzX zoN!~0hjRKYSx9w+i!G#f!xRc$Q{;~Gz2Ew@R!3PWR8Ek-t@B{fL`f`4>^RTq?F0jf z!^8y6A0s8I$Y1LJxOz=1C0teNtznQ(1y3Ld8kQs;E!4eNA=CO@W?gYz4Ge;(1}bH8 z6qLx;B=&*;&!gQG)tpBh+5rDwvZ%5qbCMua4}|Sa0=5bN*VTtH27m}j6Dm!IC0YQd zTRHL@bvpZD#I0h*WF*0{F)P^YrG<#e&hyxO?%Q^PNNoTy)rH`AM|@^x07n|DQz)IP ziAGJbaane1>W5~~bS`G%5Y=rRnLF};wbRG$8|e6~xSsK0!C^fKbREH7=l5ce^IDfp zRwuUGK bX#5B2}Jm4vBa>Iv>)l%o)TC?UEI&-}f>E zDDhYCO8C|-rNi5~C=)T4UbOs+{TQpk#gn7MpTT$X!~@K)JWGC)z6l)jQ}hhlnldq| zNt^#s7_4Q~FU=L}6fsBhf%-^w9$^ie|J6>(NILa2vg;}L`=9ZqJJC@Qt8|$ibFcpT z_Ph$M^FkEPGUI;FrH$tvVkqAtHQFxX7f-A@`X#1T&H0*@o$`?^jHQ4`Jvnc``l0Fl zoFjjbj)N~6t6iUlLrudqr<;Y6v4kPYlBA$`2V+DnPWGp(U6)hhv1&wv5UI3TXjDUE zGk}( Bbep*DBcI!aXw+P)tJn?d+;wx5FTgCL?r|KsTOc<#kOO>0z);Gn{ dvoq)Biq;p9iR&*NAC~L>@V)<2r0eK)QbC zN|=%6=3!HMMRntngxG) Qack@5Pw{* zp*QlS`w}r(t-%4sH|NxK{&$PK*_QXM%GcD#?9g5e5M_DM#h*`aMU_ti)T%RuI~_wh zvg?Msa%x1Ko>`859HfQ{UMy!M@Ka4m+okmXe9c8f<7GT+brAF_#yM DyxI zj))K59sVK-0MHN$e@7&s`Oz7x`i7;r;1k#@;!hK#8C5Aj-_A#AwNx_GQ6>ob9KYBL z)EVyi7-vBE6!>xz;m8826-dxC#eWX$S9%B?s3Z!=|6Ev0*BfbnnY=|bIG)uruwDt6 zKl< 1t1n8fe<*IU~n}T#ph1QeL;0gPNRf=jFDUs#GT3|l+;o2Rs)0N6M)Rs zj=JoY2C3+{d(GiFMjeFlJu9{^8`s0uq+|oF6W` +yO?N8^gs-F*eE@$zJX zDB?S(k&cqC3o#CVF3+d7KnQbRTYihzAB({ lfZj|ZqeWcHfG^NBNeuJ z9upQpX-;#SCyQH=Sc`v<$=*9@9=xlURS|ZZ3m0P-5M*cmFS)GcULQp!W`sHa2w|11 z4qyq&4#DnC?(f9tbCwk>xh0oD{kN|}Lh$^lEP~RnA4zA&6E#S!mpU4XUa=UMdWYNE zJ1};|@kZKSW(~7_U)XllolM(VZSq{xYI)y83(X^DWR`5lx2U&%wCR2vCBC-L9}yWb zFm*Q87T`sB;9?FHpMD8C%kN}8z<`TUF2A0S_SHZ;i)^8`x32#Yo%?In8j;Kmr_!`< zvAzI#r6-7hlgdq0ixaUEw@YAql5i>BEqG{E4bAFtV&^hlBVK%euz)wbL_psQ(w7Ew zx7Lk7WGW%q6QT&B0?)Y$T(AskgR0a;5#g1cZc9-q=a+Mwb)5ja?KZZN!R`;7W0^4L zoaexhTuZf7EQkZ)x!6DjA!3uesActZ_ezPd xEKJ&{}v>-=a DhP1yw>iteKjEl^vItibB=83SLwq9$Uj!7{M3`yW@Y)rxbT#!Rh@k#l3J zJXdl$T*NmoyB1;l`lxD>IvIK@{kqjC!?3C-NztT9*l6vGi5!{6$B;7K6c)u_CRtEG z5{-w%JH2v|mNRm ~5oN)`0h0^hLX&K4K+e`Ko)5BQ4_ ){;qg$`+< zrlT{XKhF`86y9Kk`rF}!r|bbpU91_&i_N+^4mT0fW~ctcEkur&L;cQo@?grfWjv zc|DUTEYMV){kimEHnin|jj2?-F`O0(+im!tqzeG;20+RkO2Ry=b8HX*(1u{Mm(rH9 zIgcAX4kAKCC~0GxeUmFI1mWD~tP-{B4RcB} eGr8R7)zqR<(oIqB;Av}RNHf6X}P2aFs<{i9N6Y_(RO?^Lyx 10Y60VB}0?k{5bZdXlF-uwTeCiTbNXTLNtB c$h)*f66Vmo;Tp+WifzKmDv8oe#r#SE*bF2q+~VvYi+ZgBC_o z%|n&G4Aj!Qtly5|+3tzmgDgN{mRv-BZ@jtBR ClkPQp z%oyrYFebx$X4PB3zk+LgXj@yG6t=7A^1_Ad@1<_IP3sL@2^In9aWPuzBPo>8Z`FpH zW>PFwWZ&||yEJ{6fKmA6h%GrEz-Z474m-2vIcW>pnsDzdY^;0Pq^q!#e}uyJwVgAp z82euqN5tI!d$woa;4VIfNj?d%ngQ_jmCi!bzK#OdRDyqS)i#UE^8VQ-f;2qZmd`15 zm0-vXu76jNY!~=pUnYL>604Zyw_$@GRJg>hfPC=$VK61;3IL!(eWJ7E WPFT%g~1mI5!Bpf`C%aVdi)=GonFumknF zOiOPhC^x!n2N0z*EgSokvE0wRf(zYH12>L%j9cklYLA*JPuD! N7pg@~Vpq6|Tpser4yc6^#N|m#-Sc&L@I9OW8L+NQFDj^zj#~bxPSO<)g4H$x zbUyaGV7&yO7w9}0#d>^EGk7%XV5+tNFyH=^Q2U~O^uJE6>{>>3ffkV&z>7zsZ+xe_ zxn13A%7VfA0|^v}5)Eo4urs(Ije}!5-66Q7a-RXA?`4BLd5P9Rgm%G0vc=&7dp(^m zeBN}3WP{1< Z#Q!J}?L*5VQz8Vd2VuuWVgABa z!IV~_xi&{Yc8(_k&_XE%6lS9lFL`E=C^$N+HpJw4t2j2h(7tLuSC2WxkRD$Oq|V2G z0=B+>dQeGP9>OJI{zd{%Cj5C=@SHFga5daqt=K3DP>lJO40oeEB0D`~ug}09=o?R~ z1G=#YS7ypbHMq9$o`!;Yl7|W)v4lQrXcZT|pXS)Jna_K)g!_)O;|KMUQyH?u4fIQM z3Z9VAP}ZUM9F `l~ij z-*QaQ56 Um&n@UGC|jo$$L=OB5=ok3soy4lTgQp zo*afs4K2L5k^VbcAE-<`smB(fq8BXIAF3l*kn}CvA_(Piz-QrdqnGZS4Kn@}PC;L* zR<&H+Db_j5IGq$|VHpU|xY5sk$n7nIe!|?w^gC?*LQ3eU^wTQ6$FT>{lD2Lb#_zT{ znMk)6zVJ1vo1+k-ilbO!MVkcdj54nZ)jkM(CcC1?vWf(^()UC)0x453H&IzJ74(~o zrk}yS$*slG=e-wbfx^yL`qO2r0+==r3zDTkT;oLkrpaWLW^w3l>zd&KtOEG+T9_18 zO?E4PheYk?#B(#GKwsNF&v3B?R|Xt1kt39_L~Kb)nY)Vay{X^`CB6|k>C_sYL&``V z1haxn5ppj3)`@Bq%iI4r9kG9cZukp=NpqwD9JOkt8Q6 !F}TwHs@;$5SpZ9MO-z+^+d;tTaDCKI&Y zt;f|UIc(0D5ITWSX8TM75V;EyTiED}lVfr{G)8A$_=RY>yHFnm=czT%+ X)k(K)c7XEsPXRRuSm(hC8I}9O{%P* zH;@2$>lR^>nIn+dNj;P$SGkRNKXU?iS@{zTT1*; l!cY`}Fe?6rL~G77CW3t_~2+`#NTcOIN#A_g=hdCO$=}Vq0qM*}sD|q|@@~ zh2Zqp$apRhT+#-~;+-j55Kofh@|-YNipRk7!78SoKmP;pw=6cTJIs)^#AJ<~CC6R| zsto@|hXr@)!HYvefU14tu-~r0qcgN}88<%H1Y5k@GX9#wa(WTnvEdp9Yd8^%dx-It z$GJMQ$#?@5abOM}T!_lXFG_RVGw@C@!46MgzBqm8KW*k--ZhH!q@$zD`egnAI^Jeh zS#1Q4Jr(}`r=CSxU1qgFEze#tR6t{DEkANeq+>J~P~|e8ZEul(%W)5w;Xg}Kv+ycd z_( %R5eJVs7RG0=b!Nby%0B77PW=2R|#^^lk*`0+z zH7iKzbbzO~aKnJ*?Y)vm9np#g +td&IB;9bW<5RVLpA@#fGUig_5{oT@P(>?i)`A}0|x+2vI-nq6P<#+ zRbbPFp_nU;LwdZ4QxkhQ1mB`u(q4|tAuNS{ZY^-j&v^-rWz?)h_Ks3Qs+mCLP5so~ zcHKjjFMhy{%qJ3t#{lhq4ho7y0OVdr6W+?6uHovEOxSv*VSx2AC6S7x&u$*a{!0Tj zp0@03B9%N$uKW&1{%LgW>uuL+V)RDG)p_c)1-a8eE*c+?`fQHzHHho)zf(4NujHqm z;f3T3lVm-b+BOB#zi%DG?6lxRYmo(#2hsDN9(n>-KU~ye3^T-n1qJpzzUNQ=nb=$2 zMq?NAt*EFyBTcm~qFMm%X&!T_E(u6p{DSU?0<+1};vJ=gGX;}x>ugzL@h(4Dg*J}P zpa Mpe8zL2*nhr4{~u7g(c^T`v(s)u)g&!Rd*44Z#O$#VfFImL zm`b3?Yw}wniKzPhg1f=1GEIkk;74F16>8?1NH^v_y-DoYYgI)Ml(3bN#~z5W-Oq@i z4TI=6QrZD(LIKqcSP=bLHV1%anb1ldB%+Yevx$CXfxM*Wln!a0gp2|Y6{<5 (ZH`V@30%E4ku zFfT=Y>R5I9uc=AGV(}qs^i;-mpqrZ_M{G?8ayMEs5VA0Ce8^kXla`dt&9szt=$$Am zj1R)dnoGjIKDdrv9nM0&PN#gmMTld_S*+9#B~*@i28A&&Du9|RhV5;?fuyB>ULJY5 z^>fAp4cx6--+O2&0j2Nz7lsZp5DfVNqtghres Evlk)VmaC0 zYTR^*&AevaoWVmV#T6 DuUgyTk#!Qd zL*T2KrI63d{zni-Hippy1+dn+or|bi`$$&T2whNW;~euZtY*LCczD|cCwLfj<^fuJ zs;Bo?Lyc($;NrFr@5F=KwEg(Tzxbt#m2}KsCbe%<9CL_vs-t6qJKhntTs-s5-S{St zOq0!CAgGTRQJB2>2m>+zOI^AD+kw9klW(6hmDapeOkcI{VcGw sid-cG$+bQHuy1KTEWt?#sL;(&&U#0#XRXb2IymmFCwk6p_ z%f-rVB5*PInkT&m2K^s7`+S> q3#>$jYXl-;h!Sz !5VN!4r6pU~@>{K1d3WEAA^B0Y6rx~7&r_#u7KDMklvocQJ z;(4ft8Vl>PT>K^bs3K#jESde+jXCx-K*+RuDyqC7MKSc^5|(*{qk2BNBro@Q>j1a9 z4QE;FE1>J&@<~W;vBgUG*7?w-4A_+~wZ;~tsTn{A!T|7irb47L(wkMt*#ZA!WH*<_ zHhWHVd}0 >MbdU>vEZuSy64jP@v^!+olG2>w)&1{+7i3ffI_F> zx4=lGkIrlEOr{T9T;w-6`!ep6j`$2Ze=vK{@|G{F$R5xAz`x}!MB)CI(n_JN&VCeN zY+FE~ULchpXNL4<4@BKqnc+Gxd=T2)za-y%ynvd+2LF!wp8&$v=F1UZXTOF$hW6(v zj+s9(p!mCPSWuypc$u_0QA2mw6#i^8-8QTW+LpvKfmih