From 45dee0921fa362f3e406b54b2df390028c731b3f Mon Sep 17 00:00:00 2001 From: Duncaen Date: Wed, 15 Feb 2023 15:24:25 +0100 Subject: [PATCH 1/2] firefox: update to 110.0. --- srcpkgs/firefox/patches/ppc32-fix-build.patch | 36 ------------ srcpkgs/firefox/patches/ppc64-webrtc.patch | 22 -------- srcpkgs/firefox/patches/sqlite-ppc.patch | 55 ------------------- srcpkgs/firefox/template | 4 +- 4 files changed, 2 insertions(+), 115 deletions(-) delete mode 100644 srcpkgs/firefox/patches/ppc32-fix-build.patch delete mode 100644 srcpkgs/firefox/patches/ppc64-webrtc.patch delete mode 100644 srcpkgs/firefox/patches/sqlite-ppc.patch diff --git a/srcpkgs/firefox/patches/ppc32-fix-build.patch b/srcpkgs/firefox/patches/ppc32-fix-build.patch deleted file mode 100644 index b26a46cfe835..000000000000 --- a/srcpkgs/firefox/patches/ppc32-fix-build.patch +++ /dev/null @@ -1,36 +0,0 @@ -This is not a complete/correct patch, but it makes firefox build. For now -mostly for tracking, so a real fix can be made, but right now it still -segfaults on start. - -Ref: https://hg.mozilla.org/mozilla-central/rev/08339a56f3ae -Ref: https://hg.mozilla.org/mozilla-central/rev/d16fcad6aa60 -Ref: https://hg.mozilla.org/mozilla-central/rev/ab87611d012e -Ref: https://hg.mozilla.org/mozilla-central/file/tip/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp - ---- a/xpcom/reflect/xptcall/xptcall.h -+++ b/xpcom/reflect/xptcall/xptcall.h -@@ -71,6 +71,11 @@ struct nsXPTCVariant { - ExtendedVal ext; - }; - -+#if defined(__powerpc__) && !defined(__powerpc64__) -+ // this field is still necessary on ppc32, as an address -+ // to it is taken certain places in xptcall -+ void *ptr; -+#endif - nsXPTType type; - uint8_t flags; - -@@ -91,7 +96,12 @@ struct nsXPTCVariant { - }; - - void ClearFlags() { flags = 0; } -+#if defined(__powerpc__) && !defined(__powerpc64__) -+ void SetIndirect() { ptr = &val; flags |= IS_INDIRECT; } -+ bool IsPtrData() const { return IsIndirect(); } -+#else - void SetIndirect() { flags |= IS_INDIRECT; } -+#endif - - bool IsIndirect() const { return 0 != (flags & IS_INDIRECT); } - diff --git a/srcpkgs/firefox/patches/ppc64-webrtc.patch b/srcpkgs/firefox/patches/ppc64-webrtc.patch deleted file mode 100644 index dad58e04c3c8..000000000000 --- a/srcpkgs/firefox/patches/ppc64-webrtc.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 214967e5cea61ff49fb21810e8d8c755db84f682 -Author: Daniel Kolesa -Date: Tue Oct 4 11:53:06 2022 +0200 - - fix libwebrtc on ppc64 - -diff --git a/third_party/libwebrtc/moz.build b/third_party/libwebrtc/moz.build -index 8579f8b..d9ca79d 100644 ---- a/third_party/libwebrtc/moz.build -+++ b/third_party/libwebrtc/moz.build -@@ -520,7 +520,10 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"] == "Linux": - "/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn", - "/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn", - "/third_party/libwebrtc/modules/audio_coding/isac_c_gn", -- "/third_party/libwebrtc/modules/audio_coding/isac_gn" -+ "/third_party/libwebrtc/modules/audio_coding/isac_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn", -+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn" - ] - - if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux": diff --git a/srcpkgs/firefox/patches/sqlite-ppc.patch b/srcpkgs/firefox/patches/sqlite-ppc.patch deleted file mode 100644 index 51f7faa618dd..000000000000 --- a/srcpkgs/firefox/patches/sqlite-ppc.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 67157b1aa7da0a146b7d2d5abb9237eea1f434ec Mon Sep 17 00:00:00 2001 -From: Daniel Kolesa -Date: Fri, 23 Sep 2022 02:38:29 +0200 -Subject: [PATCH] fix sqlite3 on ppc with clang - -The __ppc__ macro is always defined on clang but not gcc, which -results in sqlite mistakenly thinking that ppc64le with clang -is big endian. - -Also disable some inline assembly stuff on ppc that is never used -with gcc and probably was never tested with modern machines. ---- - third_party/sqlite3/src/sqlite3.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/third_party/sqlite3/src/sqlite3.c b/third_party/sqlite3/src/sqlite3.c -index 4f3dc68..9017062 100644 ---- a/third_party/sqlite3/src/sqlite3.c -+++ b/third_party/sqlite3/src/sqlite3.c -@@ -14317,9 +14317,9 @@ typedef INT16_TYPE LogEst; - # if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ - defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ -- defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) -+ defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) || defined(__LITTLE_ENDIAN__) - # define SQLITE_BYTEORDER 1234 --# elif defined(sparc) || defined(__ppc__) || \ -+# elif defined(sparc) || defined(__BIG_ENDIAN__) || \ - defined(__ARMEB__) || defined(__AARCH64EB__) - # define SQLITE_BYTEORDER 4321 - # else -@@ -20713,7 +20713,7 @@ SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt); - return val; - } - --#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__)) -+#elif 0 - - __inline__ sqlite_uint64 sqlite3Hwtime(void){ - unsigned long long retval; -@@ -196385,9 +196385,9 @@ struct RtreeMatchArg { - #if defined(i386) || defined(__i386__) || defined(_M_IX86) || \ - defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ - defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ -- defined(__arm__) -+ defined(__arm__) || defined(__LITTLE_ENDIAN__) - # define SQLITE_BYTEORDER 1234 --#elif defined(sparc) || defined(__ppc__) -+#elif defined(sparc) || defined(__BIG_ENDIAN__) - # define SQLITE_BYTEORDER 4321 - #else - # define SQLITE_BYTEORDER 0 /* 0 means "unknown at compile-time" */ --- -2.37.3 - diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index 784ad493d3dc..e0b4e2187023 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=109.0.1 +version=110.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,7 +11,7 @@ maintainer="Duncaen " 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=5e43fdfb3923ee3a7ae7bc91ef3377a3fc6f8a0c1b87436c19b29458b0d731d9 +checksum=d3882492190e4fdcfa142772cf35de5403effb011d24357b315d643ed9168a39 lib32disabled=yes From b04c3cd38232a83da7fcbb4720fb5b6d72046a8b Mon Sep 17 00:00:00 2001 From: Duncaen Date: Wed, 15 Feb 2023 15:24:32 +0100 Subject: [PATCH 2/2] firefox-i18n: update to 110.0. --- 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 6037a395ef00..2521fe9f2715 100644 --- a/srcpkgs/firefox-i18n/template +++ b/srcpkgs/firefox-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-i18n' pkgname=firefox-i18n -version=109.0.1 +version=110.0 revision=1 build_style=meta short_desc="Firefox language packs" @@ -140,99 +140,99 @@ _pkgtmpl() { } } -checksum="c90871f30511a1fd0239f111314df72d62bc97e0318b27b142a69061a690a433 - 2ea425bb991cb7dcade08235bd6337541f428d81d47c6457c3e689fe2670187b - 391f11d828886b664313f396e9a2c37d9f84d870e44da4a20e6429f894993a3d - 0d16e860af4bf4469964a5e33e4b5955b279810c01f24b48a148caec33135999 - f8169b1d0ea00a97f76170fd7fbf2f9c9410d5f5b7f76617898607afc8721659 - f707aca4430030232dcb10db16b4e6f260eb1b190bf887c3e14f5a42f958f788 - 8ca13bfee4ef7ecfbe56bddd39b380861a8917548ef40f845a10ef07f518b540 - 7e92713edc65ff8220d225de0295e2e053b2ac109b9b5d1a62c4b2e6aef500b2 - ac491c3d5762375af224ed8d3b7a3e87457d52dee8556a42984743f3664da47a - 43d5d15c31ff4469fb9623874fada0661e7d2d58778e83d6d387c2fbdaa62d4c - b7c27cedb4ad120bc7d96f4b780575a47774c104296dfb1044f087b0dfbb4cb8 - db76502d94ae5428ce8649909d86b71af419e4d7911b60336b9336c0f336458b - a910a6b8fe220a3288405118cc58cf46072074beb338ed1de76ecea9b0b17483 - e3039d85930fc2c3c91d433d910ffcf7d795a3c49a98c47a85fe7d492735cc8a - 62d29d77de557b0d5db21668c340ebb3126adf005e355c05efd688c45a9c9778 - bf5435e2d4f30e7b2f2dfebbea72756ec0dd3d9c8d86e3ee783f9c5b0fbf5eab - de17150a12ef38ad96b413b4ea0adf6c22f9cc43acea864d147a52c343b6da48 - 4d2f9ca150a09693860572ef3e506371eac9119380aa6fc69b4f8d765d19a47b - 0bdb31f365ed3faaa448655e9c84a7d45954967aeb3511dfb7ad9348e7ac8897 - 529ab9871fd66b722500130acd4f443e04004e26af6047de6e90e48350d99a3a - efde26d2d7fb8f90d1d3b66ccd2d07d73aa1a68bb95982ca48af3d7e4b4ff59d - 563d588231f3cf0a2f2e8cfdb67f2d18cf10ab104c3c4cae158d3cb76f01a945 - 1cecfc411164d5346221166fa6b97e61dbf049559e71a3f3b8bb4ed0168ae700 - 2ae0ba26271ac4343eea9641676c1ca8938d580aa236266053535f4700daecef - edb82e33ce05e8d47f11e1ea183e6263e13bde4911494ea4df7330dcae72ca7d - aaf0a8b6b75e3b9b6ecb0910b00d6b331c850a0bb70dbf991150bffde4701cf9 - af2e6bf160245b581afebaec182775ebef30a59bd0403bb1f6d40113d4e67c3c - ecb112af96e7a78281de6c2b8993fcf2e1a1ac553c858ec74b5071e6056c95e3 - a2a2e3c75b493f76217374d285c39699b74199179c3147f15594655eddbeacac - 3cffa707743048855fab402484fd844deb82cd95a8798ecef12d2f1bcaf1b749 - e512b0fe890cfeed3239d4ff6420dad4167f319e2a438c3518676b6b5af3a2ad - fb8fb5d905546e005085c060bb8a25f0a7bb6b7c32a5823276053119b95e6441 - fbbf692126bfda1f640a66a3edd17accad2c62ef8cb9baf4f5722c910c4a5aca - e7efacde88f46fb5bae91751060e5af1279c8fac262a86100d22f5be9afac1a0 - 92c701bb04ce94474ac2a00353f5fb7bba5420dd652364f5a62e2f2a939fe2e6 - 043ac88c26986fe7c2086a87bd4e9399ad285025b313e5de1c80d5d401dde007 - ba26a369aebcda2005ce250a2bd6ef7b420e482b604cfccb8c92b3492be7357f - 7c3209849d76f092c4cb506cbbf732659e36832e93638661b72b7df3038b10b1 - f842a3b899296e7702449ebeef2aa145cd6bd19c11a3db3be44b1a1e735c297c - 740ab17e96fb20527965c68ec615fa9343b880caf992c48af78627ff53eac8ef - d6eb4f0c9fed7c5e20d7569562e812b0a93a978204e02133a86c615dc304740c - 1900d17b2c1fd0710a5bddd6a75e929a7a0fef1775c6392488648f09ec12a2f5 - 84b06e36ead8be66b8b1f86e01ad97c3267111aa0167fca92dbecf3ab7196022 - d6d2f95652d0245d475b6af4f638cb55140cc2a95a024000dd9428ea6981a06c - 1772f1f7a2ec0eaf19fa1beb9157d310d2ed8d18ea40faabcf84b27c377a90c2 - 2471f410586f3e77827d3eb9d7f04e8d1965f6c2c2986f5fd500e62d1d2eb142 - bda9f2307c199bf5073d087064feecf62cc536234f183b006bd472eb9894f508 - a39834727af982049cafd5638cfd5b03ea562a9d4567a0c6daa70bd283304560 - 850e06f39c51b3a41a766d431146baba25f903f3b375c57008d77910138861bb - 10fbc7cf3d74104601ae466b74be3925b94b54e42d37045d15a6a1ee219ccdfe - 02ec6d50bd6712bf3c34289d9352e0d95b934fdd835b7eb3957b1f058a93e2bc - ef3f2d5d7fa0c6edbc2ad039365cae0c284f3bbbc93bcba022d5ba66ccb8efb4 - 9e9d43d3dc13a5d8086c3b967623fcd0ecc7cb40fb43206fbf108a21319398b9 - 38a4f89f8acef81ca3971a12935e6eb099d7581ff9124db1424bb97482671e5b - 8eaeafc8260c983a8f34632f47ef47bca3d31aae8f06555f52268b6104426936 - 7443367dc616d890912c2bde79524f9860017aacae895b7be11128ddf0466d39 - 7cfe2388f3e207beafe83db99f5594d4e70fdbabeab6994f2e55b876bdab41bb - 5699823a1d0fa7670098db710d4e8e834234942f63890151b44c114c2871beaa - 08c85e71b090fc211add94883390d01899d0dcc592e9a6e9582b575cb875356e - b949c2430efd9ce30a198b0d02e33af14543e4f4785c2c17841eca572b5991db - 555d87901dc5c22eeb12b7a2704be3d8274556c387e88d46ee1cf3bf18a343c5 - 4135f74736662a7bb40739d48cad652a478faf9a3971bc8a0748103d12ea0322 - 93bc0c2b0bdd31c7e8e3563864721fd94ab01f6a4e7b36e339a925c865405836 - 9bb9d2fda645d64503462731d0898216ca0f1a93e2e05b5b4ccc259462263637 - da128795d8db727470ac1c4e7d283b6282a3cc40e35429b0ce5987ef6f4839f3 - 02bbdb6c1951963e2210d2908c8ae654d1c72d73712306f4c9b17a5c481c2889 - f3db9018d715ee0bc97c77467c688628a9286b164d011f61bdf2409181191a3c - 16101575d453cd58e2846c450d47589ccbe7a027fce8dc19006bdc98245ac80d - a77f8bec90e54255b15552fdea11d212c9763faed791149a30fa1715f46ff8a0 - bfe4150c164c8aedab2246193616a4fe8417537214314b6a7c27f69e7064e0ef - 3ba92a02eeba86382200fa44e2e9fad0e4ab6783c2520ac4849123ed125afd28 - 1936604c7c7dc78f2cd902a1f1ba9c575a5776f07121cada36d0db56105535ce - 89413f13098a132fcd9ab5230edcf03cd0f428c265f18d94567130319624faf6 - d727e9851dd06d0e8396f5cc8b0b973ddb55d28b72666f8f1b2ae7fa91241190 - 9890803e3b50de7ebcb88942086ba7d44c698b5019485f756203be7b071e045f - bfcc6b394403ccafedf0eb2194c8bd3634bdc9fba88ca7875605149df1d7cb95 - d254fd7ec27d2a611f8e1cf39ee3b9b8d54b73bb7befc465e5e06f29c211fc1d - 25c6db9cea3fb8b23dfac272b1e6f980e0837ea923e7053f9ec50ad46b6ae388 - 5acc2a35206fb82f7c11ffb44586c4eeb3bfda67bae9cd56b68c903c706867a1 - 4eecaf6e949bc4db33bf9600c1728448d05ca57c241ec9bcf02bfa57416b22ff - e99e561e1540a2fd31581466c31495dfac606d85d25bab0ded5efc04f3937808 - 936fd25b5980f7c074569c0870b872162188cf7bd542f2b2da7079a8e5c1e879 - ebd12ebbb2acd170ed74f926815062fb869085721ebb80512f8b5b7fedb635d5 - 38ae1ae06591304f88a2d894f7cdf1f67f18fe7cf6a9aa425df833b725990621 - f0e83b35ffa3aa603e383a2846298a11d2dd4654b4566c8d3e5d49dd24a8e863 - bfdb2af98916f2968a37c8755c7ba49fc1644ddd4c08f8d9615a0dcdd6b1a4d2 - afd6b1d2f1ad6e0e4bcd206280950950e6a198694a0e6f741520be9cc286578f - 4d494351034b77005180260e2b1259f83f13ec8ffad12a1b64e151b8616f4acd - edb93b9dd44e96ac38d292f5d1a9112db152ed2495add62ac24b9a25132c9c2f - 864f9faef65d2afbc7955fbf96bdd55de7900865ca5b2e4870351b16d55f6327 - 32205ee0538e995dff05036ab6d0958b16ac18ca850d952f32a1de2723196896 - d34fe9233dde445e57b5d3a635c74a7404a4bfd58c15caf06983d4e90fc08016 - 8876206a3affa3892ccf37d356a2bdaf13ef9c6e6b3b28fe9dae902aff77b3b7 - c22dd129f70a222882fae0f8ce839a925b8102259f9c5a28399f8f6eb5b76b54 - 0eb523bb0d18195e4db17560311450453f47e5d3ddb8df22dbba3328030a1d39 - 4f6933bd681561a6c252549ac813bd9c28c25239e1899150289bf88c1109758f" +checksum="5cb11f306c5ccfd9d7f2be0651508ea36d4eb8cdc6640ac65992a4e23033edc7 + 4a0d032ca672fb2bb67b5f55e8d1f092babccd1ada2285edad54f14d3408d0d0 + 6b51b56738efb5ddfbc513a93ec587cba14ef9744dc9ce96b38999f9bb3b0300 + 5915ea23b66c16b7ca36e96e9bea9e40cc4d494ad3e41c990ebe9d7bd681a776 + 871e5f9791dcd808821b4b050b8b323ce6797ff684642cb61d55444ead93f7e6 + 83da8cef3b9e36ea2501850fe78714f5d81666c022935f1fa1585d911bc91f94 + 29161a627cfd6a733986eff4b08a4d7ab8839bde9149240fc5bf713daae9bf82 + e3b6b6a7789b23738f6fb01a077b55f4314b4f9bf91467be3ff552270d561024 + ca735bb2860244e79b295e5f2aee50acd811007aef5fdbe5812610c541f120f6 + f6d7517306eed9cb1302f7ce5582ef3669af624637abc71816460261dc409280 + 1e8b50d122ebb3878486b615e99d1bd426e285e3f60e4115eb38b3679cab0072 + b6d60a1c6f76c7516ad1cd931be4b655a2cfd052bb03fc9149fe8c2777117632 + 1d89f22c7facaadd2b87f45d98f38700c0aa65ea3937fd4a1bb001e7e5553509 + ea584f9fd2f6c95ac0a85fc9cb836d79177229ad1f493712d6bd23c671a41905 + dcdf18b0cbf7ee4e1d28a5d687cb9c535b4549b34a3f1ce7376c0ba186a52821 + 34386b5358a6482d51dcb4165da7d339930f7acf30f3cda888e371833fd4b9e7 + 48cb07c8189454e44f7359dd541e9750548cc4e372bf300b1ab1537893ac61e0 + c2833cf83cd0fd7972d849e1ade4f47c4bd384ebcc31bbd78845c0519c9fd235 + 0423add4d89155e11be23e92b23e08ee645776183a1224716a74f7be53fe99cc + 6f9320290cafccaf592f5add64034fa3edeb96d08e7d46cdf392b7e00c3b0053 + 45493b9af2e2164e70ecf853e9a4f0b8d43deafc1b4327d5d611d3af4a86028c + 7e7bc2558666ffd707549f3b207f9e52e1ae25fa6910c68f76d905021cbe662f + ddaf890ac9dd3dae8e9a81c6b74c4d651f78f0e47e30ca1c15807b6fdebf6195 + 7edab8304ce636b0c00f281c9d9187b2681f08fd0fcf1e4425c49ccdf7806aaf + 07c2272a61419c0c701cc112f1a282e45f6f88e08774bc1bc36d2fe3ed1e7b5b + 24278ac7ec4a992d3dab1f91e0f838e6e642508223b25e557d3a859d6615602a + e3e77f64021b55a48abd7564d508951bb865e713b61f7c8c69dc789613b7f2ea + 7fca785a9833f13f57620bac3b217fe54b838c819d236653eb66edba307f3cd0 + 19e3e24a0120f68fe5f368ba01d7787afed4d3e6ca0ee545d217a2205d19baf7 + d21055bdc15565919597bc15d2e997d15398f8ef0ffe51d2f74f82623979e5a3 + 0eaa8feac825fc432f812b6bec0e4829cac22824adc2dab5a039f308b9c6cdc8 + 35b7b87aa6e181f67593d6ea69e38dbc43a210db44653cef0806e054864283bb + 41b975e18995362fe549346bb69f8c2d8db803a1d47468eb5d887458952bfb5b + e48caca3fa4f91e9a0632e37e7a0ad36b7037cce0c8692dd03d21022975f26c5 + 090894c2c9be66b554d93afd8a9b6f844c68b78f3d59bb7ef655d8795b12f118 + a91da5d704707452a4ff150ae24b438f3dbbd7ca28115859e49becc33dff9ec4 + b56b9c09e8ca669efddeab5ce3917671b8ecfa2c123231008d88bf5b3f5181ca + 6b1520658d4692e9f22495eb328b27434cb6616a56c82bc4ffb0e97641b4af6a + 97fd93debe8103bbe376d453269e73da07dfd692f6f819f40f877fa6741f2403 + 27f6384c389bc1c95fdfd9948e7995f0d951eb40f92d9b7a73c58fd07a24e62c + 7d66137b792994c6c97051e52b173914c53d9f8360e934d13d0d37e00d75c33a + 1b719b56906c49da76fb3c0d64697aad6e76815f8e0da34604f7733804e88025 + f67d96cf31c40df0c38f8323a50b9e09255ce63b6520e2f80f1012833fb68b37 + 00bada6c6dbc9d685164e6d27b2b65d05feae12c9c1cc4f4ee07a4e93f16ef3c + 2b66fbc47e0da0375103a4593726a8d968b97e693ac882ffb0cf9c16c558eba7 + 09358af89ccbf4fcb84e86a684d6e7045ab535898d75c270b8fbf706e37f6fed + a0512c8a15024ac2c686ab7bf84087a93a4a795d144c969d3f5a9eb32d93ee11 + 6140d4a3054a6efa494d766213c1cc1f0068c864f7ded5204d1eed1323d1185e + 5ffcb662e15a0bceb230265e3e6a2ed50e53deb7ca8cbee21cb4d04e3066365d + 1c86886ab6813f6f62b13c2520f8612d9c29366987d2be99da5fcc36080587d1 + 7b364bd0d96a84b541bea2d11220f4b40b63cb00cd75bd9f99b464851abb9383 + 5ec2a50262cb6b47eb02b3389239f6d133e2c24d74d35be95a9d6f3267358744 + ec256128f23c37507112594a065017f42659a5d163c4430bddcd9631f2de83a6 + 59e6c093e5a071cce73b3ebde1298dee07cf929f47a592176904975ed85762aa + 6bcb86369a87e96bdb1588b592a57f67b5b297e29c3a8c646f34efb1b666f4bb + 5d04512332873fb6be0db926b42395bca6132c3a3b73b2610a48a1e95507b80d + a89102d7b2ea5a9dac77cb1f7df1d4828eda54d3a9749de8d024366299785d20 + 2ec92ee964dff3ca2181e274038de1bd35c46d46f72fd84e4c405ba438068ed7 + bfd91eae2598197049bf122b376e6beb770042a3400cee0fb162290c0e33ee8a + af325bef472fcfdcc6349809734a442e4b0dd0d432d3fe6b8291097795fd08b9 + 206f58173e7cf3b27dfbad8623b3746b740349c75eff34517e17e530c8c2e569 + eed0f1e411eb137c271a29cab3839633c5178d74acd9d0b8a9023f65ccd1ce76 + ced9d1112b8407451b32766785067450718523f6c17fd86df273fe3b34163f83 + ef45cdce64a597e70849330934dd1e2fcbb7379b5c5f9f0466901aaca3cbff7b + 07680fe4a5bd087be2618f8898da419aec13b25fa751f7533b3a4a36b817bf63 + 390e5444034621a22488de14f42b13eca3bc4ece05cf9c36c2b96c60360c7b5d + 5b1aa7396f44fcb326d28dff8b8c6bd1469e5c5d357ef732f179f9c20ac3f4f3 + 2d12634d3c65fbe83656295bab4814b33387b2230298ec78b799cb9a2382bbd9 + 5a6c3744b91f89ba6416b43a4e8b5e085affaa373a701cc7652eba1889e2f221 + ba47011aa9062419c797fdc01b5459ce3f8c313e13b3b6549d62cc03f03cad68 + 2ac5f031c55387bfccc9a42c51781b7dc94ab8d95e0a06e903781f615508d7ba + 73e9261a460698a02a2611965f5dad622c9c754c905deed6fb83b2d76a97a768 + e34c317460d23c4c8e377c70318f3d9b67151e79345925cc68736cef210ef7aa + 3c709386adc3beefcd233d501194331bda13106889038c0030d92c272baa1bcc + da83a64e3f8aca43138eba5aa6d270ff5e41588ad11e9650c0d8bd8000571ab8 + fcaef9c7fa261c037db2319ff6061b7b6986a4bdbd75291efc494a98b1da8235 + 4bc43250642ec499c9a1253db5ce36087b38ac44ae0888c8a0f0a45b7e571bbf + 249f2d7a2c69b160278855d3f5be9357dadc923e45d7eaa475495a0c5b8771c7 + 532f446340dcd9eef1dc15f0c19e07af71bd9811a97e4716f4dd3fcc4a632633 + 7ff056721fc2c017f8e0973863f3a6d3259c0ef235222141f6b77a7cfb89b0d2 + e566a6b4db322ec70a504ab6105457f6944c55175344b5dbb8eb2e311ceef656 + 91308fa6536b26f69b0a7fcc58419c55530a74726b257996fc27157aa6f01264 + fe12ac4c2bff7639c0b81ae857f7f250343ebf84ebf4203e24d9041ed631715b + 5f099a955d6ffacedabc124e6294fd76c43a098e462e4392c4693b6ada4b6ebd + 06272f735f364743147f38c8700b23e57ca3a87264f46b33dfc7a22f63f78366 + 804b0d5c50979bbce9b8f63e1578f24598ca5fa073cbcf9060f834bd7199f3e1 + 49782f35ab520e200177c2ad7cc539f151f0243e8652f3768e46aeb5fd9b7420 + 06538895253aa4756b83a07ea4500c5bc6778719f08f12dca34b654b9361c954 + e6c5f09672dcd2e2b56f4b033581466b15bb9de4a2604ef4c76fa35df4ed81b6 + 5eb06861dea1dd75c0b02f96c5069d7eb836979a997b87910d0d62f3fd3be305 + 5602c02f5bbaf27ea1c22d297a88746c4f50addff5f0ef7629e813c2b98f665d + 01581259aedb6ad34c5b85ba0d53aec9a05605b1f1b17c52f523960d6e227de8 + 4e2ea17b41003f640c383e3c35d2bbeafc6580e2f854430efa7475a242d79ec2 + 031d051a89011042ebaec8565fc798b8b23e58e546012f385faf3e3bc8be24f6 + 2bf682f884f935bf34e8829fb449c25fb8873388d94e758b1e9d08f1b5ed024b + 1a8dba5333e8f7492b41a23c4c2cfb00593c1fa54073142df58f5afeda08356c"