From c6ba78d558b085e8d4d3fea3bc27e16b4fe2766f Mon Sep 17 00:00:00 2001 From: Johannes Date: Tue, 7 Apr 2020 22:54:41 +0200 Subject: [PATCH 1/3] nodejs-lts-10: update to 10.19.0 --- srcpkgs/nodejs-lts-10/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/nodejs-lts-10/template b/srcpkgs/nodejs-lts-10/template index 15a0c754164..a71680cdd08 100644 --- a/srcpkgs/nodejs-lts-10/template +++ b/srcpkgs/nodejs-lts-10/template @@ -1,6 +1,6 @@ # Template file for 'nodejs-lts-10' pkgname=nodejs-lts-10 -version=10.17.0 +version=10.19.0 revision=1 wrksrc="node-v${version}" hostmakedepends="pkg-config python zlib-devel $(vopt_if icu icu-devel) @@ -16,7 +16,7 @@ maintainer="k4leg " license="MIT" homepage="https://nodejs.org/" distfiles="${homepage}/download/release/latest-v10.x/node-v${version}.tar.xz" -checksum=412667d76bd5273c07cb69c215998109fd5bb35c874654f93e6a0132d666c58e +checksum=622721bc3e6b65faf7eb6a22bfb6e3e31817e42212aa6bf5a7991ea7d9b6f169 build_options="ssl libuv http_parser icu nghttp2 cares" desc_option_ssl="Enable shared libressl" From 5084ef1b709c79e0788166739be0f770e1b91e46 Mon Sep 17 00:00:00 2001 From: Johannes Date: Tue, 7 Apr 2020 22:58:24 +0200 Subject: [PATCH 2/3] firefox: update to 75.0 support for system-sqlite was dropped by upstream --- srcpkgs/firefox/files/mozconfig | 1 - .../firefox/patches/fix-be-swizzlerow.patch | 115 ------------------ srcpkgs/firefox/patches/libgen.patch | 66 ---------- .../patches/rust_audio-thread-priority.patch | 39 ------ srcpkgs/firefox/template | 8 +- 5 files changed, 4 insertions(+), 225 deletions(-) delete mode 100644 srcpkgs/firefox/patches/fix-be-swizzlerow.patch delete mode 100644 srcpkgs/firefox/patches/libgen.patch delete mode 100644 srcpkgs/firefox/patches/rust_audio-thread-priority.patch diff --git a/srcpkgs/firefox/files/mozconfig b/srcpkgs/firefox/files/mozconfig index 0798fdd40ef..c5655bd5265 100644 --- a/srcpkgs/firefox/files/mozconfig +++ b/srcpkgs/firefox/files/mozconfig @@ -12,7 +12,6 @@ ac_add_options --with-system-icu # XXX: the system's libpng doesn't have APNG support ac_add_options --without-system-png ac_add_options --enable-system-pixman -ac_add_options --enable-system-sqlite ac_add_options --enable-system-ffi ac_add_options --with-nspr-prefix=${XBPS_CROSS_BASE}/usr diff --git a/srcpkgs/firefox/patches/fix-be-swizzlerow.patch b/srcpkgs/firefox/patches/fix-be-swizzlerow.patch deleted file mode 100644 index 03ada9295eb..00000000000 --- a/srcpkgs/firefox/patches/fix-be-swizzlerow.patch +++ /dev/null @@ -1,115 +0,0 @@ -https://phabricator.services.mozilla.com/D65797 -https://bugzilla.mozilla.org/show_bug.cgi?id=1616030 - -diff --git a/gfx/2d/Swizzle.cpp b/gfx/2d/Swizzle.cpp ---- gfx/2d/Swizzle.cpp -+++ gfx/2d/Swizzle.cpp -@@ -892,7 +892,11 @@ - uint8_t r = src[aSwapRB ? 2 : 0]; - uint8_t g = src[1]; - uint8_t b = src[aSwapRB ? 0 : 2]; -+#if MOZ_LITTLE_ENDIAN() - *--dst = 0xFF000000 | (b << 16) | (g << 8) | r; -+#else -+ *--dst = 0x000000FF | (b << 8) | (g << 16) | (r << 24); -+#endif - src -= 3; - } - } -@@ -906,6 +910,28 @@ - SurfaceFormat::R8G8B8, aDstFormat, \ - UnpackRowRGB24) - -+static void UnpackRowRGB24_To_ARGB(const uint8_t* aSrc, uint8_t* aDst, -+ int32_t aLength) { -+ // Because we are expanding, we can only process the data back to front in -+ // case we are performing this in place. -+ const uint8_t* src = aSrc + 3 * (aLength - 1); -+ uint32_t* dst = reinterpret_cast(aDst + 4 * aLength); -+ while (src >= aSrc) { -+ uint8_t r = src[0]; -+ uint8_t g = src[1]; -+ uint8_t b = src[2]; -+#if MOZ_LITTLE_ENDIAN() -+ *--dst = 0x000000FF | (r << 8) | (g << 16) | (b << 24); -+#else -+ *--dst = 0xFF000000 | (r << 24) | (g << 16) | b; -+#endif -+ src -= 3; -+ } -+} -+ -+#define UNPACK_ROW_RGB_TO_ARGB(aDstFormat) \ -+ FORMAT_CASE_ROW(SurfaceFormat::R8G8B8, aDstFormat, UnpackRowRGB24_To_ARGB) -+ - bool SwizzleData(const uint8_t* aSrc, int32_t aSrcStride, - SurfaceFormat aSrcFormat, uint8_t* aDst, int32_t aDstStride, - SurfaceFormat aDstFormat, const IntSize& aSize) { -@@ -1071,16 +1097,36 @@ - SWIZZLE_ROW_FALLBACK(SurfaceFormat::R8G8B8X8, SurfaceFormat::B8G8R8X8) - SWIZZLE_ROW_FALLBACK(SurfaceFormat::R8G8B8A8, SurfaceFormat::B8G8R8X8) - SWIZZLE_ROW_FALLBACK(SurfaceFormat::R8G8B8X8, SurfaceFormat::B8G8R8A8) -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::R8G8B8A8, SurfaceFormat::A8R8G8B8) -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::R8G8B8X8, SurfaceFormat::X8R8G8B8) -+ -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::A8R8G8B8, SurfaceFormat::R8G8B8A8) -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::X8R8G8B8, SurfaceFormat::R8G8B8X8) -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::A8R8G8B8, SurfaceFormat::R8G8B8X8) -+ SWIZZLE_ROW_FALLBACK(SurfaceFormat::X8R8G8B8, SurfaceFormat::R8G8B8A8) - - SWIZZLE_ROW_OPAQUE(SurfaceFormat::B8G8R8A8, SurfaceFormat::B8G8R8X8) - SWIZZLE_ROW_OPAQUE(SurfaceFormat::B8G8R8X8, SurfaceFormat::B8G8R8A8) - SWIZZLE_ROW_OPAQUE(SurfaceFormat::R8G8B8A8, SurfaceFormat::R8G8B8X8) - SWIZZLE_ROW_OPAQUE(SurfaceFormat::R8G8B8X8, SurfaceFormat::R8G8B8A8) -+ SWIZZLE_ROW_OPAQUE(SurfaceFormat::A8R8G8B8, SurfaceFormat::X8R8G8B8) -+ SWIZZLE_ROW_OPAQUE(SurfaceFormat::X8R8G8B8, SurfaceFormat::A8R8G8B8) -+ -+ SWIZZLE_ROW_SWAP(SurfaceFormat::B8G8R8A8, SurfaceFormat::A8R8G8B8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::B8G8R8A8, SurfaceFormat::X8R8G8B8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::B8G8R8X8, SurfaceFormat::X8R8G8B8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::B8G8R8X8, SurfaceFormat::A8R8G8B8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8X8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::X8R8G8B8, SurfaceFormat::B8G8R8X8) -+ SWIZZLE_ROW_SWAP(SurfaceFormat::X8R8G8B8, SurfaceFormat::B8G8R8A8) - - UNPACK_ROW_RGB(SurfaceFormat::R8G8B8X8) - UNPACK_ROW_RGB(SurfaceFormat::R8G8B8A8) - UNPACK_ROW_RGB(SurfaceFormat::B8G8R8X8) - UNPACK_ROW_RGB(SurfaceFormat::B8G8R8A8) -+ UNPACK_ROW_RGB_TO_ARGB(SurfaceFormat::A8R8G8B8) -+ UNPACK_ROW_RGB_TO_ARGB(SurfaceFormat::X8R8G8B8) - - default: - break; -diff --git a/gfx/tests/gtest/TestSwizzle.cpp b/gfx/tests/gtest/TestSwizzle.cpp ---- gfx/tests/gtest/TestSwizzle.cpp -+++ gfx/tests/gtest/TestSwizzle.cpp -@@ -219,6 +219,12 @@ - 15, 14, 13, 255, 18, 17, 16, 255, 21, 20, 19, 255, 24, 23, 22, 255, - 27, 26, 25, 255, 30, 29, 28, 255, 33, 32, 31, 255, 36, 35, 34, 255, - }; -+ const uint8_t check_unpack_xrgb[16 * 4] = { -+ 255, 0, 254, 253, 255, 255, 0, 0, 255, 0, 0, 0, 255, 3, 2, 1, -+ 255, 9, 0, 127, 255, 4, 5, 6, 255, 9, 8, 7, 255, 10, 11, 12, -+ 255, 13, 14, 15, 255, 16, 17, 18, 255, 19, 20, 21, 255, 22, 23, 24, -+ 255, 25, 26, 27, 255, 28, 29, 30, 255, 31, 32, 33, 255, 34, 35, 36, -+ }; - - SwizzleRowFn func = - SwizzleRow(SurfaceFormat::B8G8R8A8, SurfaceFormat::R8G8B8A8); -@@ -246,4 +252,13 @@ - memcpy(out_unpack, in_rgb, sizeof(in_rgb)); - func(out_unpack, out_unpack, 16); - EXPECT_TRUE(ArrayEqual(out_unpack, check_unpack_rgbx)); -+ -+ func = SwizzleRow(SurfaceFormat::R8G8B8, SurfaceFormat::X8R8G8B8); -+ func(in_rgb, out_unpack, 16); -+ EXPECT_TRUE(ArrayEqual(out_unpack, check_unpack_xrgb)); -+ -+ memset(out_unpack, 0xE5, sizeof(out_unpack)); -+ memcpy(out_unpack, in_rgb, sizeof(in_rgb)); -+ func(out_unpack, out_unpack, 16); -+ EXPECT_TRUE(ArrayEqual(out_unpack, check_unpack_xrgb)); - } - diff --git a/srcpkgs/firefox/patches/libgen.patch b/srcpkgs/firefox/patches/libgen.patch deleted file mode 100644 index 41239bfaead..00000000000 --- a/srcpkgs/firefox/patches/libgen.patch +++ /dev/null @@ -1,66 +0,0 @@ - -# HG changeset patch -# User Samuel Holland -# Date 1581604569 0 -# Node ID a3096ca24124886f8642cb45d2091af0cc4010e1 -# Parent ddce7f4b64d96e68a86d7a519f1828d06e37176d -Bug 1041962 - Include libgen.h for basename r=jseward - -Currently, the GNU version of basename from string.h is used, which -has behavior that conflicts with the POSIX version in libgen.h. - -The GNU basename is not available in all libcs. In particular, it -is missing in musl libc, causing a build failure: - - error: 'basename' was not declared in this scope - -The GNU version has the following implementation: - - char *p = strrchr (filename, '/'); - return p ? p + 1 : (char *) filename; - -The POSIX version has slightly different semantics. It may modify -its argument string, or copy part of it to static storage. However, -it will also delete trailing slashes, while the GNU version will -return the empty string if there is a trailing slash. - -This change resolves the issue by including libgen.h, adopting POSIX -basename semantics. This should be a safe change for the following -reasons: - -- The google-breakpad code, from which this code was derived, has - also switched to the POSIX basename: - https://chromium.googlesource.com/breakpad/breakpad/+/072f86ca83bb7138fe33f10b6380badd9ef7f065%5E%21/#F4 - -- The version of LulElf.cpp in mozglue/baseprofiler has also switched - to the POSIX basename: - https://hg.mozilla.org/mozilla-central/annotate/de1c3ae8df14cdb2c94a817b02dcffcb2cee12e2/mozglue/baseprofiler/lul/LulElf.cpp#l54 - -- The BaseFileName function is called only with paths to ELF files, - never directories, so the paths will never contain a trailing - slash, and the two versions of basename will behave identically. - -Differential Revision: https://phabricator.services.mozilla.com/D61047 - -diff --git a/tools/profiler/lul/LulElf.cpp b/tools/profiler/lul/LulElf.cpp ---- tools/profiler/lul/LulElf.cpp -+++ tools/profiler/lul/LulElf.cpp -@@ -42,16 +42,17 @@ - // This file is derived from the following files in - // toolkit/crashreporter/google-breakpad: - // src/common/linux/dump_symbols.cc - // src/common/linux/elfutils.cc - // src/common/linux/file_id.cc - - #include - #include -+#include - #include - #include - #include - #include - #include - #include - - #include - diff --git a/srcpkgs/firefox/patches/rust_audio-thread-priority.patch b/srcpkgs/firefox/patches/rust_audio-thread-priority.patch deleted file mode 100644 index 4ee2a77d51a..00000000000 --- a/srcpkgs/firefox/patches/rust_audio-thread-priority.patch +++ /dev/null @@ -1,39 +0,0 @@ -backport of https://github.com/padenot/audio_thread_priority/commit/b5b86285d3c0cae2cb731730460f386ffa30cb03.patch -avoids problems with serialization of RtPriorityThreadInfo in media/audioipc on musl - ---- third_party/rust/audio_thread_priority/src/rt_linux.rs 2019-12-02 13:24:01.000000000 +0100 -+++ third_party/rust/audio_thread_priority/src/rt_linux.rs 2019-12-02 13:24:01.000000000 +0100 -@@ -31,9 +31,7 @@ - /// process. - pthread_id: libc::pthread_t, - /// ... -- policy: libc::c_int, -- /// ... -- param: libc::sched_param, -+ policy: libc::c_int - } - - impl RtPriorityThreadInfoInternal { -@@ -141,9 +139,11 @@ - -> Result<(), ()> { - assert!(unsafe { libc::pthread_self() } == rt_priority_handle.thread_info.pthread_id); - -+ let param = unsafe { std::mem::zeroed::() }; -+ - if unsafe { libc::pthread_setschedparam(rt_priority_handle.thread_info.pthread_id, - rt_priority_handle.thread_info.policy, -- &rt_priority_handle.thread_info.param) } < 0 { -+ ¶m) } < 0 { - error!("could not demote thread {}", OSError::last_os_error().raw_os_error().unwrap()); - return Err(()); - } -@@ -187,8 +187,7 @@ - pid, - thread_id, - pthread_id, -- policy, -- param -+ policy - }) - } - diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index d5b7290ffb1..801e503b3a4 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=74.0.1 +version=75.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,21 +11,21 @@ maintainer="Johannes " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=62e4297b682fad1ea50d8e32fc51c811169f8edec8d12d2aab0ea60b3197f011 +checksum=bbb1054d8f2717c634480556d3753a8483986af7360e023bb6232df80b746b0f lib32disabled=yes hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo llvm clang nodejs-lts-10 cbindgen python nasm which tar" makedepends="nss-devel libjpeg-turbo-devel gtk+-devel gtk+3-devel icu-devel - pixman-devel sqlite-devel libevent-devel libnotify-devel libvpx5-devel + pixman-devel libevent-devel libnotify-devel libvpx-devel libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel) $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if startup_notification startup-notification-devel) $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)" -depends="nss>=3.47.1 desktop-file-utils hicolor-icon-theme sqlite>=$(xbps-uhelper version sqlite)" +depends="nss>=3.47.1 desktop-file-utils hicolor-icon-theme" conflicts="firefox-esr>=0" build_options="alsa jack dbus pulseaudio startup_notification xscreensaver sndio wayland" From 02209c3a2c80305d45288635d5b138bc0565dbd3 Mon Sep 17 00:00:00 2001 From: Johannes Date: Tue, 7 Apr 2020 23:05:48 +0200 Subject: [PATCH 3/3] firefox-i18n: update to 75.0. [ci skip] --- srcpkgs/firefox-i18n/template | 194 +++++++++++++++++----------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/srcpkgs/firefox-i18n/template b/srcpkgs/firefox-i18n/template index 74ea55c7b57..bd0e8a09ab6 100644 --- a/srcpkgs/firefox-i18n/template +++ b/srcpkgs/firefox-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-i18n' pkgname=firefox-i18n -version=74.0.1 +version=75.0 revision=1 build_style=meta short_desc="Firefox language packs" @@ -138,99 +138,99 @@ _pkgtmpl() { } } -checksum="52c6b1b211bd6334a7c3d1e4b46919157875efe51f602fbd3f03c40fd93a307c - 45486360c69fb36f3ae27a0dee46e8059c4ecda82fbd01233451bbb6ac0c7b49 - d36435680ca80aca9083c697a6d575bdcaa2d8cf499c92da4e62b0cf6874430d - e813ca2ca12c73014bc32621deb307c57e77a4499cc82f07857053ca55fbc07f - 6adf57992455ee525ececd7757c8c39e14fb01a2ae365cc250f2800eb39921cf - 11c128c3ecf6309de80e8d85ee40abe5f36e8846161013930c63a16eae2be1da - 331f12a8409c666d02e787d5bfa187f3482d98330b8aa412c44953aea2a4596c - 1eb6507399ca5faae073f53377ade740b8726bb18d5ea27634f08cb44e2632e2 - fd9d5a7ac48533d67f81f4c204a77edff2cfa39afae8af83fe2bb3fc54c753fd - 32ae688c68e9cc1bd61471c7b1156f7e19594194ee70789d57c5e7463968b6f1 - 81ef580fd02e6724ca038de526cabf31551a5a0ea1d15d04dff658a0ecc0f79e - 71ecdb91818cfdb1411b1b9998bc3ed472eedb569fbdc6bfd0c07f61a9841c51 - f1f9927118db9fe9f79e8346c4c2279aaa8c9716cce497db3acb4dc1e9530154 - 869791e190c602d62ad519bdb96870a8df44a3728c67a26eb284bae731819c3b - b92cfb14525236e28f67bc2e2ac6a09b61053db6f9b6848308abf6d23b0a8257 - 6b7f5c2260ddf33aad6c148500349cdc21f3438c4477abe390ec2482cd284861 - 6570998788acdfc64e7dee69b947514ae0e39841bc1b4be1f4fe4e9d3c0f3f92 - 43a22495a7d02ec64b968c1f29cb05a0afeb095ebe621bfa3f5a8997a988e208 - 791bad750f1e6c172afaa80e913d104cd4de9258f39f4c17c72b6bcc2a333257 - bef294a2923695a75632c7294eb40524d7f4b07c263b97a854bde240cee16ec9 - eab2736a55aa849ddd6b4d11c883c5d21c901118fc0982a21fdfbaf60ff60235 - 41afd2c14915d6a542523383f3eded5aa57e19f75b6c98a4b69dbf80bd235260 - 8d752f649e04cd30416f33ac886b229cb1e95d8f39f0fd3e856bcc88a9871aa8 - 0d26c172a7b5adf3372a1d395616e326cb3a34ee2f14396899af493d337c7611 - 7acfb3b38d95146c85bb2f64854cb8e07ec0580c4a86e95f333a133ad649393b - 6e43c38df19e4a66ac3898a0ef3a1139bbc4ae3fc1ec3a73ae3623d715f36cec - 2e0a49c797255299fe150d5ac237be9873ce3ca1b917a3d31169d20e48e08700 - a17deb4a4b7876442d2d7e7ec43ad686c491630bb0a7e905f3e68c61557d7687 - bcd68d72d284fc292dc24ae11a52aadf7ea11a55156077b0847bdbaac4bd2f6b - a9224d77310d5846c5284a04a2838ace571b0918075e750011695aebf8209b7e - f6997c05f9a777ed943b92af74ef3030e1592f3c220ab50c1ffcda794cbbe9f1 - 1ee4963fb15eccca691a6690835df6c6dc15e3d3258365b03f2a314f63db72cc - f399475d41039ef5754e2034f1c0d0b966d8b47970681e661964a776fffe77b3 - 42113a904bd9172234ba7e9e793ddc118d3855b153c6098b88e74aac577437b6 - c9e6eefa852ae1fb2571b18397cb46cbae22332b1cb8730688bb1fd7bc2d56b7 - 58bf88e2e764a7a5c3221166d6590637e1055f8b7f07b923229daf80ed4e2571 - 6c67707befaab208435ffe026c3291504dea4bd5d6b78d150c4f4c111be1af7a - a454a957611b5fd41ee2f0bab6bf916d250b5d511ef8feebdc4bff8dce0df904 - 6eb8bc8e2d7c3714052bc3df2b77d3dbf7582df0a8dd8b21f745fecab34e82e4 - f9a75be69dea12075f7494b2a4d7cf7cd2a7540c18dc720b996836b6386da830 - 58872cd3879b7bbb7ce780483cef3da9f99a5079463556b59a962c00c46a8669 - 0ba0c3f5d1bb620e14ff470013af4b5e58ae7add2818f6b304b3a9920f5d5e6e - 5eebfaa7f838cc2290e89e767faa5c0b6f9b428db031149eea2eb83d94549e22 - c485035fcccbddb2459a9ae306d6e69324afd8a1c57fb31203ea694e468a8fcb - 4baaf0606c08989de8fcf8cf6559f74475562382ff0ba8eb507a67c120431f9d - d3d8c39a22c65843ffc35de0128cc52dded56ee55826b5219c1b112fe928b5af - 32215adee770eefaa2f0cd5324ddb8aeec0d9a719c6f0c830a5ca6ea97c8cfb2 - 7510e616687fc25394a95a8d6901ebc267e90f638e84683016cfde71a230e6f6 - 340c89ea936202adf1ad2a6534f215997c1bc9f0d765415d0f4a100b4ed9e632 - 509a0362cae940b462acdbaa5bb4312a61f19d40ae1476e8b5ab7ea9b71260b2 - c281f81693eb7d756026b963932b5ddfe9515c78f7e12d28aa3f8cdb824ea0c7 - 38f16323192f3335e51596c9bce2591799662cd12c303e91fddeff2f7b477dbe - adef8fee41390ac11215d5d21c2dbbf4b7d85f1984c7e5d43a0ecdda1202accc - 78c7e4b9b369fb44a18f68633a0b344517922d2d824c0af4ec0a7dd034f676ff - 8a32dfb59b77f75d207bf1463e41824be915752e3fef4e59033071ed79a03108 - fd25797ce1a00f73e7abd355cecc5d589def7beb885032dddfcec16404672cf3 - e8e041364f265417ac86462a3aafb5aabca194c894261494b930f71813dea4c2 - 9d985c3c50760034c4c27ddc556a8e3bc6accf6675e1d7100545993a9fd232de - d0efb8096759afee10f42f9c698f35a4e8cc8d997e853d6f0755853a2e8587ec - 3068d2c539b92730d385b18bbe02a0604fe26367b4725ad605f1ab7a58cd4791 - 76484ddfefd569993e91ac813a6438496bff4c9db382876bab0c4badde1f860f - 3f0eeddf97ce0cc43e0e1353b53754aa7b9a527c9c2e91185fb33a4e32ebcb97 - ebc2ddcb76885c10a08e04beb80ba64fea0fe29153965741aa9323922460f7ef - a586a0c7f0f4edf196f03e3b06956bfdc3cfe6def50a000111dfa99aab115777 - 76797f0f76d93b25303a21bb043d0e394d7a739d3d84934280917b3cc62032b5 - 34de38f33e622e2b24aacf37835501216e5396fc83e8b4280e9d14250bbc7cd8 - cbb607572b4e6e582e4aea5640b3489e594fc526f00d35a78b1342d87cd50b0f - 250e47b8511d36640e8bfcd074e7f37db1979bcd3fa6aed87225b39260122811 - 9ce75a2462e2765efa09937b83baa7fe182d5d3c4192d5264f9ea4bf41509e3b - 3b28f6685188faefb9c8a1312e007c78712e6f219d9d97edbe8c5cc390fb4479 - b24a0a1a568d0c347005cfe67ad37b3b402bd643321dab471f27954e32befc61 - 14b85b393782e29086f079479831aabe7cb57e70e72a5a79148f6dd8843e5522 - f44b764064bafa84c59e5978d30f60bae9b7074b087201ba7257d85458321bfd - b32f9470907674b0cebacbf13c9dae891857ee8ad6064c0ee8db6dd343b47061 - 36af5cb25b8aa487eb5876a3ce249d11fcd1ef41d2f88913695de8cef0533aed - 6e891b2b07e68b63e7e9efec370b05cc77c1b48231dc64f629792525fe24eff0 - 6b6ea8d40efec92fb0902aaf27caa22ce164f4b26816f0a8b497c927a45b95cd - b692ff4fbbd49b5d7355bdf757e01345921b6acdbdaa84180a8c8118d86d724a - 2532acda6e2674216c8bf6b7af656d2832d2f430965c8072d4bc3fcdd0a70041 - 7ef0fa0cd5e2430a5a617f78f67a70543e748d591d03af5e3909a739e79850d7 - 6f95ff7de6d4218733e9fb8a687c6ecc1aa170ea19b037fd41b9e3c4d57def45 - 5154d046be4d00fa83865e984387ec9fdc11c9f7febec3eec62b2955a945d44f - 7f52d1e359fb0cf2e8ac279e274729cc0ef3410661d3236513428907e9c48111 - a4c87142a87fcf4b45d43b0414c3bf72c148379ba58fb90e5abbae36c31219fb - 5ef16744b9e07ae9a217296c9a8e246585225a709f6f0af2142eacd8d7752ecd - a3245202a217adef72b937ca43f2b55674fee9a3ba4eafd9434f3c5ba97d8ee2 - f2ad0b04c9b7ea8bf7efb7dd6a0b02f13cd527369ab9f09871c556c83e72fbe4 - dfdc95d9b8374a620eaf24d2c374e4098eed84039b48112259afffedfaf4ee39 - 4a947c7f901f10940152f2a71fe9db3d2a9a91259ef080f49b8ed10835fc4378 - 1c075ed0bd03e5c600546f57531784534718fd66ec76f27275225a8e47ba857c - bcd7146f781d80c9d3f42c9027e1c5cd3adecfa6b72e17c8962e1837889fbf90 - ed2fbf40584bdcf3c9a8e9004b25a7a855316d64429b0ae5f6bad91e876cfac5 - e548fb5a7f45944b7cc7da440cd19e74c95f9204ca45705413a63f76c4fc3593 - 35de2c5dff9953a582d9bc0b5696f3aba15990ab3d109fcffe4b8b58de5bddd0 - 37012252e006bc5a66301dd05ecd41f5c687dfbac35a7bb29ecc850779d690dc - 476aa73f5aba6a98ecef820360564a402df8ec35aaede3c16e56fa74640f52ca" +checksum="e5dda36c10d614f4f800091853c787ef5d110a69b905840f366d00f93bc81b71 + e0f7df987f11e4319d8da90e6ae2d2912128ace55274ee1a26f9cf683c69308b + 6ffccb6e19e67504757f9e0459acbf15d2cf3422a9dd8da55b5b37e9a88204a0 + d66e58d828254b8a51f4d840904e7bf68acf1e869798658dcf73a682fdcaccd1 + ceec1bc104f80c0d7ad97d4a96a5d2e351df14b1c345c55eff05ded15d7f9a41 + 469f14fb458f4d76bee5be9fb510a2c68a2f1991358a2ca7e8be251b59dac7bf + 7eb505070ddcba25eb54deae280ef28698d88b95419d2fa187eed3bbaa64a021 + 0553f92403693eb7a6324175a480b954e3463af5b5c16465f0b3f364fae80675 + a3d6f0f2f10376c9215fd72cc064a59b98727cbe7c86adfc4ad1a4ee8fda03f9 + c0ecfc3f30750507aeea1a66149ae810af22e486ddd81cb8ac20743178e890cb + d6642d68f75b7e49917e86cb3ff2522f433e07badfbbe19c3d973a8390f61a56 + 44eefd98f77e0ab6b74fee51618894a37a0c74f350ffe4a3be9ec0456acbf95b + 4cd17bd1278eb4614fddd01360e6975c0ef006c4831b576d3ab9163c035d6189 + 6b9a1c35cfc7c49f9fe1efc1d158d150f5ed2337dd92092a80fe157b052fa554 + 45d041e8c17c9cc2676619b8623422cfd05b7cf7ba53d9848cbc2f19ab034107 + 2edfcac910ae4ecc7f049beb1fba7e2cc049bc9049bbdf1609aa671d44f07e19 + a943d9f624de989439e0319588bc6767a3c96080890d6ee16226924599a894e0 + 2e3f2f3f56f84c06cf37d7c460c4d414ada58d850fcbd16dea5d844df92c1916 + 997c0d2c2a440fda6472c4231a2032c1884a7c2527ca0c7cffe9b044456b3458 + 70281a850efc000dafe263ae862872abc0b18f35fb6b667baac20fd7e399a141 + e226004d4f877c48e7438a9b05d865527677a7e528f3c54b934f47980fa427c0 + 6162c7c6485bb1955d8ab16a4db39b644ace06ec22da71cde9f6deea9fbcc3ab + d40ea5c03f66c7ce654c56210e8b458b5010f2ebb7bc7977a97d545eee4381d2 + 7e8778d8c7397a28df4487a32a9dff246643a862e9711ac6debae4d43c4b86a9 + e73ac9415931ac18fa66c9a5cac16304aa5553da4abcb662d61c697defa2c09a + 03f359b44e32ec38d3107558d47735d7ba7936e819bb862376b178568c4ced40 + 80a145a23841e235f89d1eebc7e406fbc7ea17a26f385659f35f761c93ee6579 + 58c7249e38ebedc2afa9182a1ebdc2234a01d6435a0776da826906b8e6e3f073 + 5db36c91d8b601152261797452160cab2628567573870b65595110d6903300f0 + 566d71abde320493996a6bfd0385c6e1ad44cb3f46a42f212f5e0f28f8ecddb7 + ae53e504df34498fac82b78f8e2ad0a9c77236d5645fc824f4517fe38cbb3c53 + 69dbafd1ae0faa6ed8f9cbf7927d37ed71679bacd1ee9baa2118b6ef83c3173b + c214a3989c486be9a1bf091b88105ca1e665abda3538a6a459315fc4d4d0e45a + 2e1a9926988a072f85349c93dae4b5571c48fa117dab694a4fd6b4975c659565 + bf4900fd9f2480a163f07a763d568c4b8c5127333131542ea79fc8e004965c33 + f8bcefa601bec03bc0a2787df72e544d18968442216be275c4c202f669dad7d4 + 53edbefc2775bcb5ede5cba22858753a63e54af5017b243cd63ec05d84ee08ec + c820f2f5c35e939685c20aed0110998da91875ddadda1593071d0fc894de853d + f7795261423565b5e558d4e63e2a6bafd394f54d4c936d9c0797ba04c46fe5e4 + 02878f0552f351e928ad0ac54e4fb20d6c6f74e703bb859eab750ca03367630c + 3c5ff6d373f0d99c4fbf029f3cc3670df44033d2fedeec187c6a2b89f5134d39 + 4bf41c42232e52fca4a6a677b9978608865d95ae12af3321f197143880301cbe + 4eb4814059c8966476fd8110acd45c340504b0ca25f29c49db8bca886c9d3930 + a7160d6fc0d0ebcbdf435ec7730aa92464121815b1734418089522f2807882b4 + 96265c0d21e16f11f795df182cf3ff65b65b2ed37055c84f288a3e7719a225fb + b4b857f197635fa69fa3766198776dcace3fc12639a0b2d5a7aa8c92f7b1b182 + 3804d17c05ccafce833da6f23a5515776b1b94afb6689ae48fbcfaeadddc7cdc + ae49b954366cad80f3dbd0f96b8d69e473b0eefea1a24b0eb5cf9ac587645ea5 + 6130633cd3da6b69184ee0bf155317d8ca99a8dc057f0344786192eca4251085 + 50c5fd4d310121b78ed6677ca7ba3d7b4499cbf6205408740d8f6761d0ed6069 + 2299fb6cb4c44bf820d8a0eb1807174a96fbdb149617d543cdc7dc44a0d990b3 + 3c1ac78d50573ae276a1e6769f207e7fd64bc908642cb52acb91567c41361949 + 2917f585e996c9ecb476f83eaa312f2e74d84834dae385540811af1689f94244 + cf13d5ba5092270622896b833cd0f0c450d3426c52e9e728f7431692651d87a3 + 8d7c65158a896ea33375b3be03b0fb99be4828638593f9b30e0373a7000b3462 + 2e3ecc911c104dcd79a2642c14387bb6fa8acb18e60bcf52501949c1eb1d315a + deb41429762d5874d8def44c283e79d96c3259977d3d186f14500877ac76dd00 + f847b66454e3b649b06df2632cb3eb8cb9d921eb14bcd8beabc81446c5f20ff3 + d106c15a3409c7277fd3d8f45505f6e80b7d9d13b5725617a3030530ad744f05 + fbf44bf20cbe164db756a199b95142c7b33293d11bb81edb23e319e79a960e5c + a36f165d16d2d3066a54609b763909ae266ed200606abfb1174c2e40bb73c2f8 + 2da35523f5edc874fdd87df67371495ecb7d1bb1ab45a2a3bf819f018cecc298 + 4267209c6f10dcd4a8a58ead1c0773cb10141f0e39d9eb91666be00e203e76c7 + 4b9f7e39b9187dcf2e1e991c16c1a145c100fb7368b99ea4b571cfd99d0b9826 + fcb7711b04dc801cfcadbdf43b284973fd5e9efec54f71ce700df0e31a1bc25d + f85c1263a7ca487fe694f858709910508deb9c619fd108165895ae027b3a3a00 + 4b94f853b0477c581b1a25f0272aa736b5d0ea2a915262c7301915d111239ffc + 6cfc5b2df114695a6048124cd961f7211ecbc21601eadf6fa8641187d3b740ae + d3a445bcc528a1510432a2c4349876bab176d6018e5ed2dd8ec162d03f4592d1 + 7e0b96cabe722fe18948d8fba04e6ba9716e69a62d9b9879bbe4c8c3c2b22e9e + b2100de85e60f53ffce0ffe67568c102bba3e9e854374d505ceb7d80c22f0b3f + d211cd58612008684e90de29f35a9d34175d5c5ca6333edd44a5bfec129efe31 + b5f616d8549838e87bf7a04f9312cfabd472146e0887e78eb3cc9722587cc86e + 0f86d304565343bc03868bb77ead385c3030a0a989dddf6ff0b07dca09019090 + 544709002e3a5d89706336d7783076d66341c4effc2618a8153d64c9619714fb + 357cb95a85a11e2438aeba09c0880b63e29afb6d099064f99e996d2ef3c6426f + 6382160cb1cb331fc14c93336331c9597b843774c1ee5f620eaa141fa64ce50b + 7f532c736de10647ddc36ce5af9168bc37ac45f6fffb220656c148b8e11ea417 + 2c1de53b165cd63200042964c507b7afb7958e08d075abd7d647dc3141212194 + b714c22ef01fd9c8156f44f620e5bce1ec478ca9a75dc6be0743b2182ac346d6 + cb4b76d4c7db91ffc3cb9e89d97af3002038d32b08b5c845eb0c7e78ac14976c + 5600e7987085daf29af3538a2f35b214e361f6914115670f3c61ddc99bcfe198 + a65cfdd53dd89b85e522f16952e94b26ad9b9523a91c1fb1b7598eac0c4ef1f3 + d6b3388d686b2ddc0db77fcb1940d16cbf9357674fcf3c21d1777fa4032950ee + c3f4ec85520e2af70931bf4dff835bcf15c99f9c0a446ce67bbc13132873eeec + 001c5df2e6309177d67040ab33a18d1a68624b53d1f3c5f51c63ca4f82f62c13 + c07faf8849ed1fcaf591e1e7d6007b6cd68355c55af2444ed30e8cff57467da4 + a7ed9e3e02c9101b84f8d00f27ad102a63f5c16ed763ba1d19464baa2d3d8276 + 6a2941f3c7efec9f08dd755bb18c8ac1aadbcae7ea0f0782386e1a845a7a919b + 23e34991c441931ca1856fa1ebcc9f0b26d7c8c64ff0d18cb613088d3340f64e + 2fa6848ff382b26ea8096832731170df301453749cf741b54e3724bce003b5bc + bc65549b0425b9844488a8421c8a7df5067c4ab1b41a7364bc802d6ca06bfb45 + aef9a0927a6354572e10ddb5249475b7b8098db1444e791856d5ecf8b0d511b0 + 9718df9fde5116c9da021057344a4d9841f52c5c24b7dee40327a46b6300c813 + 16f785acd00278a7479859be763cdab19079adc2cea2ac2b5a2ea3642684f7dd + 8c23b66dddc902afb6233c57ec25e0a7c14b9d2db178180a322b6077887ddaca"