From ead1e4667cbfa852f3edca71ec87db4321b97f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Mon, 18 Oct 2021 16:15:53 -0300 Subject: [PATCH 1/2] thunderbird: update to 91.2.0. --- srcpkgs/thunderbird/files/mozconfig | 1 - .../patches/avoid-redefinition.patch | 15 ++ srcpkgs/thunderbird/patches/fix-cross.patch | 16 --- .../patches/fix-fortify-inline.patch | 11 -- .../thunderbird/patches/fix-wasm-arm.patch | 15 -- .../patches/fix-webrtc-glibcisms.patch | 4 +- .../patches/musl-rust.configure.patch | 26 ---- .../thunderbird/patches/rust-configure.patch | 132 ++++++++++++++---- .../thunderbird/patches/rust-has-i128.patch | 21 --- .../thunderbird/patches/sandbox-fork.patch | 4 +- srcpkgs/thunderbird/patches/sndio.patch | 14 +- srcpkgs/thunderbird/template | 7 +- 12 files changed, 133 insertions(+), 133 deletions(-) create mode 100644 srcpkgs/thunderbird/patches/avoid-redefinition.patch delete mode 100644 srcpkgs/thunderbird/patches/fix-cross.patch delete mode 100644 srcpkgs/thunderbird/patches/fix-fortify-inline.patch delete mode 100644 srcpkgs/thunderbird/patches/fix-wasm-arm.patch delete mode 100644 srcpkgs/thunderbird/patches/musl-rust.configure.patch delete mode 100644 srcpkgs/thunderbird/patches/rust-has-i128.patch diff --git a/srcpkgs/thunderbird/files/mozconfig b/srcpkgs/thunderbird/files/mozconfig index b30e8fc4886d..44c45a8f6f30 100644 --- a/srcpkgs/thunderbird/files/mozconfig +++ b/srcpkgs/thunderbird/files/mozconfig @@ -32,6 +32,5 @@ ac_add_options --enable-optimize="$CFLAGS" ac_add_options --enable-official-branding ac_add_options --enable-application=comm/mail -ac_add_options --enable-calendar ac_add_options --allow-addon-sideload diff --git a/srcpkgs/thunderbird/patches/avoid-redefinition.patch b/srcpkgs/thunderbird/patches/avoid-redefinition.patch new file mode 100644 index 000000000000..867d37c62a90 --- /dev/null +++ b/srcpkgs/thunderbird/patches/avoid-redefinition.patch @@ -0,0 +1,15 @@ +Author: Rasmus Thomsen +Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones +(linux/if.h), leading to redefinitions. We need to include net/if.h before +linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt +Upstream: No +--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:32.359751046 +0200 ++++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:37.856343751 +0200 +@@ -31,6 +31,7 @@ + */ + + #if defined(LINUX) ++#include + #include "addrs-netlink.h" + #include + #include diff --git a/srcpkgs/thunderbird/patches/fix-cross.patch b/srcpkgs/thunderbird/patches/fix-cross.patch deleted file mode 100644 index fad8f9060c46..000000000000 --- a/srcpkgs/thunderbird/patches/fix-cross.patch +++ /dev/null @@ -1,16 +0,0 @@ -terrible hack to fix cross builds -overwrite HOST_* flags to get rid of -MF - -note: this patch was used from firefox-77 until 80, dropped with the update to 81 - ---- a/third_party/rust/glslopt/build.rs -+++ b/third_party/rust/glslopt/build.rs -@@ -28,6 +28,8 @@ - env::remove_var(format!("CXXFLAGS_{}", &target)); - env::remove_var(format!("CFLAGS_{}", target.replace("-", "_"))); - env::remove_var(format!("CXXFLAGS_{}", target.replace("-", "_"))); -+ env::set_var("HOST_CFLAGS", "-O2"); -+ env::set_var("HOST_CXXFLAGS", "-O2"); - - configure(&mut cc::Build::new()) - .warnings(false) diff --git a/srcpkgs/thunderbird/patches/fix-fortify-inline.patch b/srcpkgs/thunderbird/patches/fix-fortify-inline.patch deleted file mode 100644 index 2498c57fc738..000000000000 --- a/srcpkgs/thunderbird/patches/fix-fortify-inline.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h -+++ b/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h -@@ -27,8 +27,5 @@ - typedef int16_t int16; - typedef unsigned short ushort; - typedef unsigned long ulong; --#ifndef __GNUC_STDC_INLINE__ --#define inline --#endif - - #endif /* _SDP_OS_DEFS_H_ */ diff --git a/srcpkgs/thunderbird/patches/fix-wasm-arm.patch b/srcpkgs/thunderbird/patches/fix-wasm-arm.patch deleted file mode 100644 index a6035e876163..000000000000 --- a/srcpkgs/thunderbird/patches/fix-wasm-arm.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/js/src/wasm/WasmSignalHandlers.cpp -+++ b/js/src/wasm/WasmSignalHandlers.cpp -@@ -243,9 +243,9 @@ - // If you run into compile problems on a tier-3 platform, you can disable the - // emulation here. - --#if defined(__linux__) && defined(__arm__) --# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS --#endif -+// #if defined(__linux__) && defined(__arm__) -+// # define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS -+// #endif - - #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS - # include diff --git a/srcpkgs/thunderbird/patches/fix-webrtc-glibcisms.patch b/srcpkgs/thunderbird/patches/fix-webrtc-glibcisms.patch index 70910da5861e..5d17021a99f4 100644 --- a/srcpkgs/thunderbird/patches/fix-webrtc-glibcisms.patch +++ b/srcpkgs/thunderbird/patches/fix-webrtc-glibcisms.patch @@ -1,5 +1,5 @@ ---- a/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c 2019-01-29 11:20:52.298793223 +0100 -+++ b/media/webrtc/trunk/webrtc/system_wrappers/source/cpu_features_linux.c 2019-01-29 11:21:48.250250850 +0100 +--- a/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c 2019-01-29 11:20:52.298793223 +0100 ++++ b/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c 2019-01-29 11:21:48.250250850 +0100 @@ -14,7 +14,7 @@ #ifndef __GLIBC_PREREQ #define __GLIBC_PREREQ(a, b) 0 diff --git a/srcpkgs/thunderbird/patches/musl-rust.configure.patch b/srcpkgs/thunderbird/patches/musl-rust.configure.patch deleted file mode 100644 index 0b2f7dee1d3c..000000000000 --- a/srcpkgs/thunderbird/patches/musl-rust.configure.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- a/build/moz.configure/rust.configure 2019-10-28 12:05:04.930404603 +0700 -+++ b/build/moz.configure/rust.configure 2019-10-28 12:09:42.742338957 +0700 -@@ -297,11 +297,20 @@ - suffix = 'hf' - else: - suffix = '' -+ -+ narrowed = [] - for p in prefixes: - for c in candidates: -- if c.rust_target.startswith('{}-'.format(p)) and \ -- c.rust_target.endswith(suffix): -- return c.rust_target -+ if c.rust_target.startswith('{}-'.format(p)): -+ narrowed.append(c.rust_target) -+ -+ for target in narrowed: -+ if target.endswith(host_or_target.raw_os): -+ return target -+ -+ for target in narrowed: -+ if target.endswith(suffix): -+ return target - - # See if we can narrow down on the exact alias - narrowed = [c for c in candidates if c.target.alias == host_or_target.alias] diff --git a/srcpkgs/thunderbird/patches/rust-configure.patch b/srcpkgs/thunderbird/patches/rust-configure.patch index 07b98d6c7cae..61fb2ba891d9 100644 --- a/srcpkgs/thunderbird/patches/rust-configure.patch +++ b/srcpkgs/thunderbird/patches/rust-configure.patch @@ -1,42 +1,112 @@ Mozilla rustc check does not support crossbuild: let's remove it Remove calls to unwrap_rustup, they fail if rustup isn't present ---- a/build/moz.configure/rust.configure 2019-10-17 04:19:59.000000000 +0700 -+++ b/build/moz.configure/rust.configure 2019-10-22 11:48:55.616022140 +0700 -@@ -78,9 +78,6 @@ - +Do not try to figure out the rust target as it is broken on musl +instead use what is set in RUST_TARGET + +Skip extra checks on cross builds (broken for arm*) + +--- a/build/moz.configure/rust.configure 2020-12-12 01:35:33.000000000 +0100 ++++ b/build/moz.configure/rust.configure 2020-12-15 19:45:16.467750787 +0100 +@@ -91,9 +91,6 @@ return unwrap --rustc = unwrap_rustup(rustc, 'rustc') --cargo = unwrap_rustup(cargo, 'cargo') + +-rustc = unwrap_rustup(rustc, "rustc") +-cargo = unwrap_rustup(cargo, "cargo") - - set_config('CARGO', cargo) - set_config('RUSTC', rustc) -@@ -348,26 +345,6 @@ + set_config("CARGO", cargo) + set_config("RUSTC", rustc) +@@ -260,7 +257,9 @@ + data.setdefault(key, []).append(namespace(rust_target=t, target=info)) + return data + +- ++@imports('os') ++@imports(_from='mozbuild.util', _import='ensure_unicode') ++@imports(_from='mozbuild.util', _import='system_encoding') + def detect_rustc_target( + host_or_target, compiler_info, arm_target, rust_supported_targets + ): +@@ -382,12 +381,12 @@ + + return None + +- rustc_target = find_candidate(candidates) ++ rustc_target = os.environ['RUST_TARGET'] - os.write(in_fd, source) - os.close(in_fd) + if rustc_target is None: + die("Don't know how to translate {} for rustc".format(host_or_target.alias)) + +- return rustc_target ++ return ensure_unicode(rustc_target, system_encoding) + + + @imports("os") +@@ -410,35 +409,6 @@ + + os.write(in_fd, ensure_binary(source)) + os.close(in_fd) - -- cmd = [ -- rustc, -- '--crate-type', 'staticlib', -- target_arg, -- '-o', out_path, -- in_path, -- ] +- cmd = [ +- rustc, +- "--crate-type", +- "staticlib", +- target_arg, +- "-o", +- out_path, +- in_path, +- ] - -- def failed(): -- die(dedent('''\ -- Cannot compile for {} with {} -- The target may be unsupported, or you may not have -- a rust std library for that target installed. Try: +- def failed(): +- die( +- dedent( +- """\ +- Cannot compile for {} with {} +- The target may be unsupported, or you may not have +- a rust std library for that target installed. Try: - -- rustup target add {} -- '''.format(host_or_target.alias, rustc, rustc_target))) -- check_cmd_output(*cmd, onerror=failed) -- if not os.path.exists(out_path) or os.path.getsize(out_path) == 0: -- failed() - finally: - os.remove(in_path) - os.remove(out_path) +- rustup target add {} +- """.format( +- host_or_target.alias, rustc, rustc_target +- ) +- ) +- ) +- +- check_cmd_output(*cmd, onerror=failed) +- if not os.path.exists(out_path) or os.path.getsize(out_path) == 0: +- failed() + finally: + os.remove(in_path) + os.remove(out_path) +@@ -462,28 +432,7 @@ + host, compiler_info, arm_target, rust_supported_targets + ) + if rustc_target != rustc_host: +- if host.alias == rustc_target: +- configure_host = host.alias +- else: +- configure_host = "{}/{}".format(host.alias, rustc_target) +- die( +- dedent( +- """\ +- The rust compiler host ({rustc}) is not suitable for the configure host ({configure}). +- +- You can solve this by: +- * Set your configure host to match the rust compiler host by editing your +- mozconfig and adding "ac_add_options --host={rustc}". +- * Or, install the rust toolchain for {configure}, if supported, by running +- "rustup default stable-{rustc_target}" +- """.format( +- rustc=rustc_host, +- configure=configure_host, +- rustc_target=rustc_target, +- ) +- ) +- ) +- assert_rust_compile(host, rustc_target, rustc) ++ return rustc_host + return rustc_target + + diff --git a/srcpkgs/thunderbird/patches/rust-has-i128.patch b/srcpkgs/thunderbird/patches/rust-has-i128.patch deleted file mode 100644 index c25a185c1c11..000000000000 --- a/srcpkgs/thunderbird/patches/rust-has-i128.patch +++ /dev/null @@ -1,21 +0,0 @@ -The configure check fails for cross builds. -i128 is supported since rust-1.26, so it is safe for us to assume it is always present - ---- a/third_party/rust/num-traits/build.rs 2020-02-14 23:57:25.985355610 +0100 -+++ b/third_party/rust/num-traits/build.rs 2020-02-14 23:58:36.255710188 +0100 -@@ -1,14 +1,5 @@ --extern crate autocfg; -- --use std::env; -- - fn main() { -- let ac = autocfg::new(); -- if ac.probe_type("i128") { -- println!("cargo:rustc-cfg=has_i128"); -- } else if env::var_os("CARGO_FEATURE_I128").is_some() { -- panic!("i128 support was not detected!"); -- } -+ println!("cargo:rustc-cfg=has_i128"); - - autocfg::rerun_path("build.rs"); - } diff --git a/srcpkgs/thunderbird/patches/sandbox-fork.patch b/srcpkgs/thunderbird/patches/sandbox-fork.patch index 328943cb0013..d4584e74b91c 100644 --- a/srcpkgs/thunderbird/patches/sandbox-fork.patch +++ b/srcpkgs/thunderbird/patches/sandbox-fork.patch @@ -2,12 +2,14 @@ make SYS_fork non-fatal, musl uses it for fork(2) --- a/security/sandbox/linux/SandboxFilter.cpp +++ b/security/sandbox/linux/SandboxFilter.cpp -@@ -1253,6 +1253,8 @@ +@@ -1420,6 +1420,10 @@ // usually do something reasonable on error. case __NR_clone: return ClonePolicy(Error(EPERM)); ++# ifdef __NR_fork + case __NR_fork: + return Error(ENOSYS); ++# endif # ifdef __NR_fadvise64 case __NR_fadvise64: diff --git a/srcpkgs/thunderbird/patches/sndio.patch b/srcpkgs/thunderbird/patches/sndio.patch index 959fc1ec913a..68628bea8d8f 100644 --- a/srcpkgs/thunderbird/patches/sndio.patch +++ b/srcpkgs/thunderbird/patches/sndio.patch @@ -42,11 +42,11 @@ if CONFIG['OS_TARGET'] == 'Darwin': --- a/build/moz.configure/old.configure 2020-06-30 12:17:04.087609070 +0200 +++ b/build/moz.configure/old.configure 2020-06-30 12:17:04.087609070 +0200 -@@ -210,6 +210,7 @@ +@@ -88,6 +88,7 @@ @old_configure_options( - '--cache-file', - '--datadir', -+ '--enable-sndio', - '--enable-crashreporter', - '--enable-dbus', - '--enable-debug-js-modules', + "--cache-file", + "--datadir", ++ "--enable-sndio", + "--enable-crashreporter", + "--enable-dbus", + "--enable-debug-js-modules", diff --git a/srcpkgs/thunderbird/template b/srcpkgs/thunderbird/template index b6192f7bf02c..b8cb35ad19e9 100644 --- a/srcpkgs/thunderbird/template +++ b/srcpkgs/thunderbird/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/thunderbird-i18n". # pkgname=thunderbird -version=78.13.0 +version=91.2.0 revision=1 build_helper="rust" short_desc="Standalone Mail/News reader" @@ -11,7 +11,7 @@ maintainer="Érico Nogueira " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.thunderbird.net/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=b7e4076e5ce561b06ad9cd89005989ed71fd724ce83c4888cf569dc2930d90e9 +checksum=30476803f0bd4a46d2516ac5cbb831fc580b81d5d704af17c7df81e2bb6ee075 lib32disabled=yes @@ -159,6 +159,7 @@ do_build() { export MOZ_MAKE_FLAGS="${makejobs}" export MOZ_NOSPAM=1 export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" + export MACH_USE_SYSTEM_PYTHON=1 export AS=$CC @@ -179,6 +180,8 @@ ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' ' ./mach build } do_install() { + export MACH_USE_SYSTEM_PYTHON=1 + export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" DESTDIR="$DESTDIR" ./mach install vinstall ${FILESDIR}/vendor.js 644 usr/lib/thunderbird/defaults/preferences From dc864904defcea7e14ef5f6b8aa574668ed5cfa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Thu, 21 Oct 2021 11:48:43 -0300 Subject: [PATCH 2/2] thunderbird-i18n: update to 91.2.0. Remove -si language pack, no longer provided by upstream. --- srcpkgs/thunderbird-i18n-si | 1 - srcpkgs/thunderbird-i18n/template | 112 +++++++++++++++--------------- 2 files changed, 55 insertions(+), 58 deletions(-) delete mode 120000 srcpkgs/thunderbird-i18n-si diff --git a/srcpkgs/thunderbird-i18n-si b/srcpkgs/thunderbird-i18n-si deleted file mode 120000 index b0de05225517..000000000000 --- a/srcpkgs/thunderbird-i18n-si +++ /dev/null @@ -1 +0,0 @@ -thunderbird-i18n \ No newline at end of file diff --git a/srcpkgs/thunderbird-i18n/template b/srcpkgs/thunderbird-i18n/template index 3a27d46b40b5..b63aad16f02f 100644 --- a/srcpkgs/thunderbird-i18n/template +++ b/srcpkgs/thunderbird-i18n/template @@ -1,6 +1,6 @@ # Template file for 'thunderbird-i18n' pkgname=thunderbird-i18n -version=78.13.0 +version=91.2.0 revision=1 build_style=meta short_desc="Thunderbird language packs" @@ -59,7 +59,6 @@ _languages=( 'rm "Romansh"' 'ro "Romanian"' 'ru "Russian"' - 'si "Sinhala"' 'sk "Slovak"' 'sl "Slovenian"' 'sq "Albanian"' @@ -96,58 +95,57 @@ _pkgtmpl() { } } -checksum="7bda27a111dace0450b17fc31d49c945fbe198a9b3e6039a80c17928cb353c4d - 322c9130002ac74e6d95fee19863efab5dbbcd874a427ee9718e6ce084d92b99 - 56704bc9e98aa9dcee9c51be9e66abbc10f685588fe8375b6daaa806243af37d - 944da0f8d06a8bad22f8799520cfef41c89403f2f9221f6ad2218d15a430bd7f - 2ba409560ccc17acfbf6e13ca74700c999572b528f7c6e90468922d85b4321b0 - ff435d0ec657d00087c915a065f361fdb0bfc4ea68fe552ec02add734fe60331 - eeede691c6900f5dcb2ebb2661b04cdcd29e156b21c7da29803dd9451c3ac17d - e93bc8dc1749b652f69064c1b26e4783a1277a26e173e6e1c16876912ead87ef - b6020f9ac0176da7cc425b8a3bd91cf4ff970479d1de5c9aeeeb7f4d6512924f - a6eb38aff29f132f419df1d834d55c386a506458219e96173919800a10035b17 - a08ca7eb8bd38c3b7b21c9560788359e736bbd6def25c96c61e5869eda39b8ce - 03b0846d56d07f2419ae86cfcb3865f89709f0c811bd82f7bc0f766165a06b5c - abac2f3a05484ae7a23353793104cd4832979ab298a53f53bd287e7f02b32405 - 7094ad93f495776ab4a0e7c5009b280a18d233e362adecd3d1f4e9db237a37dd - bdeb359f37959a5b72682a08b9aa1102863ce3a4bfc4f31bcfad046a0af1033a - 3726cc2c21f4d1caf570334a684e7918fae2d4df68f6f28bfe86d0e86346457e - b7a1c55f098bf779ed944b244ffe76adfc69509ea456199eaeb445376c3fd715 - b5eec5c888340f6f7084024420829c525648861758ef8fa4efc1ea2023c3c1ca - 036c4540944b0eca163c88ef36e894a5615a668ea094d8e33608be05e77243a7 - 0b66e7669e2069022073083fe921b8bfdc1cada02ec3fe7b5890c72663a3b5d2 - b15e81462c880b0e07c8787725852a0731e2b94904589d8b52ee7fcba0687a93 - 29b2f240fc186f44273cdc0f9cd5d74c84da739f10db43b715f25555df78b240 - f98796d091ece16a6818083510c435c2fc83e7e9d53ef0312d82489ff6cd2db4 - 070766bd8e62fb1b9d0ed09a1cbc2ee934aff4260bc2f8970b9f25c2daf63b00 - 3ccf7a716bf7618b056885771af6a4c746f57d6303e67f7db01162f7be9a677c - 075beb7c0c1c7f5c90eff2a82b9c15eefd76df6f142e4da3b917833bf2ea4b0f - def27717b72ec46f4074d89e6f8b7380507a2466281beb1303d650b8de3fedc2 - a2ed369cdcdbb49aed4920045b812d9bfe23a5d92093424b7fbfac8013a9e992 - 35b0e3bf7054af1a6dc3e7a0c78c3e15336a3fc07d20e58b7ae53ec0e9d6d42b - c5fcecb851b10760f278cf3c935ee5e82215a7db6a210338c4d19ccb5ccd37df - 3b3b8ec4606e357da724d622747bfa5af2b1623e7138f8aef388f1912d709235 - f14527396595af579528701f373222d5cec14cfba03defcd4dffce0bf535eab1 - a1c612e1bc18251039c7cc0efd69fb13928b5a1c3e1c867bc7f746232b41d63e - d6a465fde49940d21c8b5b8972f3a69435be7f72093e72b01b9117ec3d037d6e - e4d4b5d4052f218926ab4bda24d0d9ee2b293a910ea88596bc1e8fdc9b981e7c - ac656bf61a3e5bd7bbedd61e5c11d644c5f4c20c3837b085c1f5ba84440cbe1f - a3a7e72d9260d3b03dcd499f3b94d1cce351bf3e599de654e839b42f394e9e39 - df75e128c5596bd7d4cdce6e26fe83dc6e5be878f577627a3c6c7ac216f52830 - 0796b36090b7d0f64aabd6fdd1167442d6c8e93efda86813c68438663838dee9 - 70675c8c5dcb68f469eaba671f59165d538bbd3ace0ac1758035c36140945f99 - c38c907b3e872816ebb8173843b30794326344c2ce909b2c65576dac9bc0ac7f - 249719bc75177e4865e49944df0dd1be117e06bb34a62e193bfc0bb3742bd0d4 - 1e759bf00cacfcf4bf2c43a17e175e520c13c96e8cf24c4ca15dd75318183c39 - bcabf64b27667b6587763144910e39fcc3d442f5de704ad08c456a5f1c60e02a - 24ffbbe40330678280f85583219d859030288f1a86357e655efc4880dd3fbc6c - d7ddb76db0e4c95c7012a6889ff59889e72d4170fafc3963cf80865f38232ac8 - 17285c5622c62fac2c4158a7bb0c8ec51d008c954e709a08c1066610ad61699e - 1f39db4be0e581d647afdd4eae7ea1acd35e17479644bb5cf9bb4b7f6fa1c1e6 - 3901eef44cac5498aaae69468ed60619a1f7a7f61760f2145b6a38c2118c12fd - 6c02e1e11e2571bd7bf0c7c7ce04add9b2f8bcca99f13cb5929046dc8d9758d9 - d1164a3c9c270ad73bc66bd7fee7e63efe6928c60bcfd5cf8116603211d7ca83 - f2a295ef52fde10e18fde500904640088d3568289c83534ed466cf84ed533386 - 1eccd599819a2b425b88939327a758c82118fa6710e0879fd27c4b86b48eaed3 - d4744a129b6ef34fcce7d0b9564a7543ce6be0dd471123c7e9814b36369aaf47 - a7d21c73056c48d2059c9543b11da192dc90d2024915b320b506651557d3f5c7" +checksum="c39c8f12193e2cd4436dc5e627db6abdba4dd6916f301c9ca29017288912da40 + 99422da35e94debbe7a4148a6964b52cc6e259c2bafa8509d208fe7229f49042 + 22ed9e041b919972d044340d756a114c179fc5c271929b2f2568d05b47487679 + 526116a63bcc2ad7b7f338df80218a9999151adcc756a54dde10172b68ec90b1 + 0244961120886427939556da9702792a75b409929ed85a3aa03d42955aa50e29 + 463ff55ea0039f2931db3660269ea7c9f3b13e1fe437841763e76e74c2685746 + 318cb2bec65c9a2a32fbc6f2f295d6ea5eb852f0a3fbd43ca21c62e4b70eac7f + 812143b553d097b323e2d18a0f26610c191427f7ffc2532cb47a0abf34a4c5c8 + f5e2b7cc99e9af6ff70364045580a2c95efe44c7958e3d69b7a589a6a967aebc + 1f68904a07d2ad29843955affbb4fe5f0fd216c1566ffaa1eec15126eee08b96 + 0ceec7f6c36c6ead466254a9a3c760340ba775b4ae49fbba12f7d35e5d62c01b + b9f1efb44cac93ab386d0c5ee17e1b12afac6e2545ca79aa5420b549dba3ea1f + 4b4e66f78acae65501e45473a2f543418ca66026f67466ebba1cfc9f5b345651 + d6146644061cb17220ca0303cc69ce1a273c3228b997f0afed1dc0f6e4e153a3 + 4b921c5df6511161000ea3dbc56a5443b0a2a74bd879baa3fddc767023c96d70 + 9a340cbca2cef685e8087f2a4f75702796c71c28503bddf28dccbdbeee874716 + 36bd723b1276f8990d5ae254ae9da6c73b120f50d16e41b1e5041e2b774060a6 + 035515699058710f5e8fc0f6c2438a786113d408bf6bad5deefa6d3d90a05c20 + e81ea7f58e24511145b26f4431f1ffaac672002535ccb7e1a215f0740e194185 + fada43e831a17cf80a6c6774c77a39d21e53b3ae1bc8ca28da1480ac165667e6 + 8b724d589d4aa55f9a7a4ca5c1c87c5e206d091fb7684d7244b079fe8cea14e1 + e9fa6a49ab325e1beb83826900d6686400cc7c0c0da9063b35dc2ebea61f5b31 + 3f4a614257488838e9f87e251390430e3532436b2cfa34dfb5f3b9cc6d6a1860 + 2f08437a7fbdfc24da9a6af8616844dd6eea85bb7f4addc7125c639da668813b + f001d540394a4a5cf302b7839a5cf5d567ca9b27967b25354c62d2f735961f51 + e5e33b6ed69c5c1f2af21844e303bbf4a934c8688f15ffc8ddddfa6137458030 + 5330a0c860a04cf92ece2b7d54b234e9055f6eb74d9789fd1246b7c19768d6d2 + 34c5405a5d93de7dee5c7e1cad3f47afcdaa34308643341b463e315d2d002a56 + 90f88de2ae7db2005b908f9ef6158d00188c6cd9da59a4d50a446248b479fe60 + d3e65a3635ad983ddefecd87aa315cbfcf61226bb000b8108eda33fd0dec0e78 + d866790db8dfe8c3180caa5dfe49f7b2a5604b2648de44a585564a0b14ac5880 + 406d5acca84aa87b108eff1d30b9b82f309166b485225315bb9f6289eb61864d + f4de71597d928710babb63668744570289f64c81f87f2a51498391587ad56efa + ce3219f61a47550a7f7b4b4d6aacff96cb7aacbd002106b05507aaa9c2e911ab + ee2634b1cedd03445a4bf69802c19b82b0eaaaf04c05f48c89fbef62877bf6ba + 73a7f172c24232ccb1baa4a84aa02127319cf5c0a3822b2d2443c81ddcae7b21 + 162835dc0225b72eb15c088ca237e99cc6b0eb29f750417766f441e20fc64bc9 + f14aeadadd0f714e4c5dd0b355abd9c6db519191b59231c121539d561d3c3d83 + 74a91082371432730ab1174c037d222e0c6ad055478303442b9a41ce34123193 + e6ef01427d4f2f6c567c57eafad50b4b5662d21c9299c90821eea15e8ba6f6e4 + 3e57081fa2cfc4072d0b5c5236dbdc5759464e5d2fa768e205e99eba0855c651 + 236cd697f44dc476891b7ef950e52172d59b9216102121d974b617f893449114 + b372e3140e728bcb67e11e432544afcf21d7bb93afd4f16829956b9a8dffd6b7 + 141a05223d1c09184ed63d027d55afd9c039e99cffdeb537b53735ad1179ceba + cd4786ce7355699e947ccdd1dfa7598c072c9d2c7fb530e7b7dd4225d42eb556 + 3e11591505e1b9f11ab3019a05da0698a8af208539188bd99c38095c890cad77 + 25c2f0364798e6461aff8ad187c67116c5e6303aa93c7cee97d02e4040d773b3 + 054b03d96c485d27938424ab816707cc8661a8cc8c8ea76f1ef122463ee9fe76 + c39f9034eeb8ec8ada0169cbc036fe5849b887953f42daf1e7e8c1a0e33b93ed + 1bb9a0b873e371a9a718f04fc3c5c94be380fb5c433808ff2a22f5bab95dc664 + 046cbb2767026be1c49158e23c683fa0761078c88e22ef4f8ccc27fc962f27fe + 12e52f54b04d9ba41634e029b2b4edf6a4a753c583af189dd07b8d0f47d72253 + 0faeb87c9803ac28b66f059f9e8cef8347b4c81aee039ac18043f8bba56c9a0b + 2e9a3736d33c083d846ef17476986fead36ce7e978dbfd3eba15265838d3db08"