summaryrefslogtreecommitdiff
path: root/libre/iceweasel-libre/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'libre/iceweasel-libre/PKGBUILD')
-rw-r--r--libre/iceweasel-libre/PKGBUILD480
1 files changed, 359 insertions, 121 deletions
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD
index 581a0c00b..4dc30c9ad 100644
--- a/libre/iceweasel-libre/PKGBUILD
+++ b/libre/iceweasel-libre/PKGBUILD
@@ -1,168 +1,406 @@
-# Contributor (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org>
+# Maintainer: Márcio Silva <coadde@lavabit.com>
# Contributor (Parabola): Luke Shumaker <lukeshu@sbcglobal.net>
-# Contributor: Figue <ffigue at gmail>
# Contributor (Parabola): fauno <fauno@kiwwwi.com.ar>
# Contributor (Parabola): vando <facundo@esdebian.org>
# Contributor (Parabola): André Silva <emulatorman@lavabit.com>
-# Contributor (Parabola): Márcio Silva <coadde@lavabit.com>
+
+# Maintainer (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org>
+
+# Maintainer (Arch) : Ionut Biru <ibiru@archlinux.org>
# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com>
+
+# Contributor: Figue <ffigue at gmail>
# Thank you very much to the older contributors:
# Contributor: evr <evanroman at gmail>
-# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com>
+# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com>
+
+lowercase() { tr A-Z a-z <<<"$*"; }
+
+# Version Configuration ##############################################
_pgo=false
-# We're getting this from Debian Experimental
_debname=iceweasel
-_debver=17.0.1
-_debrel=2
-_debrepo=http://ftp.debian.org/debian/pool/main/
-debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
-
-_pkgname=iceweasel
-pkgname=iceweasel-libre
-pkgver=$_debver.$_debrel
+_debver=18.0
+_debrel=1
+_debrepo=http://ftp.debian.org/debian/pool/main
+
+# locales can be easily generated by running
+# $ sed -rn 's/.*-l10n-([^.]*)\..*/\1/p' src/*.dsc | sort -u
+_locales=(ach af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk km kn ko ku lg lij lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta-LK ta te th tr uk vi zh-CN zh-TW zu)
+
+pkgbase=iceweasel
+pkgname=(iceweasel-libre)
+for locale in "${_locales[@]}"; do
+ pkgname+=("iceweasel-libre-l10n-$(lowercase ${locale})")
+done
+pkgver=${_debver}.${_debrel}
pkgrel=1
-if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi
-if $_pgo; then
- pkgname+='-pgo'
+######################################################################
+
+debfile() { echo "${_debrepo}/${1:0:1}/${1%_*}/${1}"; }
+
+if [[ -z $pkgbase ]]; then pkgbase=$pkgname; fi
+if $_pgo; then pkgname+='-pgo'; fi
+if [ "$pkgbase" != "$pkgname" ]; then
+ provides+=("$pkgbase=$pkgver")
+ conflicts+=("$pkgbase")
fi
-pkgdesc="A libre version of Debian Iceweasel, the Browser based on Mozilla Firefox."
-arch=('i586' 'i686' 'x86_64' 'mips64el')
-license=('GPL2' 'MPL' 'LGPL')
-depends=('alsa-lib' 'dbus-glib' 'desktop-file-utils' 'gtk2' 'hicolor-icon-theme' 'hunspell' 'libevent' 'libnotify' 'libvpx' 'libxt' 'mime-types' 'mozilla-common' 'mozilla-searchplugins' 'nss>=3.13.1' 'sqlite3' 'startup-notification')
-makedepends=( 'autoconf2.13' 'diffutils' 'imagemagick' 'libidl2' 'librsvg' 'libxslt' 'mesa' 'pkg-config' 'python2' 'quilt' 'unzip' 'wireless_tools' 'zip')
-[ "$CARCH" != "mips64el" ] && makedepends+=('yasm')
+pkgdesc="A libre version of Debian Iceweasel, the web browser based on Mozilla Firefox."
+arch=(
+ 'i686'
+ 'mips64el'
+ 'x86_64'
+)
+license=(
+ 'GPL2'
+ 'LGPL'
+ 'MPL'
+)
+depends=(
+ 'alsa-lib'
+ 'dbus-glib'
+ 'desktop-file-utils'
+ 'gtk2'
+ 'hicolor-icon-theme'
+ 'hunspell'
+ 'libevent'
+ 'libnotify'
+ 'libvpx'
+ 'libxt'
+ 'mime-types'
+ 'mozilla-common'
+ 'mozilla-searchplugins'
+ 'nss>=3.14.1'
+ 'sqlite'
+ 'startup-notification'
+)
+makedepends=(
+ 'autoconf2.13'
+ 'diffutils'
+ 'dpkg-devtools'
+ 'imagemagick'
+ 'imake'
+ 'libidl2'
+ 'librsvg'
+ 'libxslt'
+ 'mesa'
+ 'python2'
+ 'unzip'
+ 'zip'
+)
+[[ $CARCH != mips64el ]] && makedepends+=('yasm')
if $_pgo; then
makedepends+=('xorg-server-xvfb')
- options=(!ccache)
-fi
-
-url="http://www.geticeweasel.org/"
-install=iceweasel.install
-source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2"
- "$_debrepo/`debfile $_debname`_$_debver-$_debrel.debian.tar.gz"
- mozconfig
- mozconfig.pgo
- libre.patch
- iceweasel.desktop
- iceweasel-install-dir.patch
- vendor.js
- shared-libs.patch
- Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch)
-md5sums=('37b9b7eafc8affa9b8a5942f8ff19f8f'
- '062bbd20d1de7e01e8e11667c24de960'
- 'eab149c1994ab14392e55af3abb08e80'
- 'ac29b01c189f20abae2f3eef1618ffc0'
- 'c8040002668fae7d1b950833bae51607'
- '2823e0ecdefc16b590a9997f9228924a'
- 'abf5ecb74caa857abb42bcfbb3442d9c'
- '0d053487907de4376d67d8f499c5502b'
- '52e52f840a49eb1d14be1c0065b03a93'
- '65f68090d2a69b467bd2707d0c4ea3bd')
-
-if [ "$_pkgname" != "$pkgname" ]; then
- provides+=("$_pkgname=$pkgver")
- conflicts+=("$_pkgname")
+ options+=(!ccache)
fi
+optdepends=('networkmanager: Location detection via available WiFi networks')
+url="http://packages.debian.org/source/experimental/$_debname"
+install=firefox.install
+options=(!emptydirs)
+source=($(debfile ${_debname}_${_debver}-${_debrel}.dsc)
+ $(debfile ${_debname}_${_debver}-${_debrel}.debian.tar.gz)
+ $(debfile ${_debname}_${_debver}.orig.tar.bz2)
+ $(debfile ${_debname}_${_debver}.orig-compare-locales.tar.bz2)
+ $(for locale in "${_locales[@]}"; do debfile ${_debname}_${_debver}.orig-l10n-${locale}.tar.bz2; done)
+ replace-urls.txt libre.patch mozconfig.pgo
+ mozconfig $pkgbase.desktop iceweasel-install-dir.patch vendor.js shared-libs.patch
+ bug677092.patch)
+# use dpkg-source to extract everything
+noextract=(); for file in "${source[@]}"; do noextract+=("${file##*/}"); done
-build() {
- export QUILT_PATCHES=debian/patches
- export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'
- export QUILT_DIFF_ARGS='--no-timestamps'
- export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$_pkgname"
- export PYTHON="/usr/bin/python2"
- export DEBIAN_BUILD="mozilla-release"
- mv debian "$srcdir/$DEBIAN_BUILD"
- cd "$srcdir/$DEBIAN_BUILD"
-
- # Doesn't apply and seems unimportant
- rm -v debian/patches/l10n/Place-google-and-gmail-before-yandex.patch || true
+# This is a bug, we should fix it.
+mips64el-prepare() {
+ # Fix MIPS N32 support.
+ sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \
+ js/src/assembler/wtf/Platform.h
+ # Disable JIT.
+ sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \
+ js/src/assembler/wtf/Platform.h
+ sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in
+}
+misp64el-configure() {
+ echo 'ac_add_options --disable-methodjit' >> .mozconfig
+ echo 'ac_add_options --disable-tracejit' >> .mozconfig
+ echo 'ac_add_options --disable-jemalloc' >> .mozconfig
+}
- # This patch doesn't works in some parts due that has patches for others locales languages, source code hasn't it
- rm -v debian/patches/debian-hacks/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch || true
+prepare() {
+ if [[ -d "/usr/lib/$pkgbase" ]]; then
+ error "Because of how rpath is set, this package cannot be installed during build"
+ return 1
+ fi
+ dpkg-source -x ${_debname}_${_debver}-${_debrel}.dsc mozilla-release
+ cd mozilla-release
- quilt push -a
+ patch -Np1 -i ../iceweasel-install-dir.patch
+ patch -Np1 -i ../shared-libs.patch
- patch -Np1 -i "$srcdir/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch" # Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
- patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname
- patch -Np1 -i "$srcdir/libre.patch"
- patch -Np1 -i "$srcdir/shared-libs.patch"
+ # Back out https://bugzilla.mozilla.org/show_bug.cgi?id=677092
+ # in order to fix https://bugzilla.mozilla.org/show_bug.cgi?id=818468
+ patch -Rp1 -i ../bug677092.patch
- cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch
-
- if $_pgo; then
- cat "$srcdir/mozconfig.pgo" >> .mozconfig
- fi
+ # Replace common URLs
+ sed '/^#/d' ../replace-urls.txt | while read -r moz_url gnu_url; do
+ if [[ -n $moz_url ]]; then
+ printf 'liberating: %s -> %s\n' "$moz_url" "$gnu_url"
+ grep -Erl "${moz_url}" \
+ --exclude='*.'{patch,orig,rej} \
+ --exclude-dir={.pc,test,tests,testing} \
+ | xargs -d '\n' --no-run-if-empty sed -ri "s<${moz_url}<${gnu_url}<g"
+ fi
+ done
- # From js on abslibre-mips64el.git
- if [ "$CARCH" = "mips64el" ]; then
- msg "Force disabling JIT."
- sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \
- js/src/assembler/wtf/Platform.h
- sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.{in,ref}
+ # Liberate the locales
+ printf '%s\n' l10n-*/*/searchplugins/*.xml \
+ | grep -Ev 'creativecommons|wikipedia|wikipediaro|wiktionary' \
+ | xargs -d '\n' rm -f
+ for dir in l10n-*/*/searchplugins; do
+ pushd "$dir"
+ ls | sed -n 's/\.xml$//p' > list.txt
+ popd
+ done
+ find l10n-* -name 'region.properties' -delete
- echo "ac_add_options --disable-methodjit" >> .mozconfig
- echo "ac_add_options --disable-tracejit" >> .mozconfig
- fi
+ # Patch anything that's left
+ patch -Np1 -i ../libre.patch
# Fix PRE_RELEASE_SUFFIX
sed -i '/^PRE_RELEASE_SUFFIX := ""/s/ ""//' \
browser/base/Makefile.in
- # This is a bug, we should fix it
- if [ "$CARCH" = "mips64el" ]; then
- # Fix MIPS N32 support.
- sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \
- js/src/assembler/wtf/Platform.h
- # Disable JIT.
- sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \
- js/src/assembler/wtf/Platform.h
- sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in
- echo 'ac_add_options --disable-methodjit' >> .mozconfig
- echo 'ac_add_options --disable-tracejit' >> .mozconfig
- echo 'ac_add_options --disable-jemalloc' >> .mozconfig
+ if [[ $CARCH == mips64el ]]; then mips64el-prepare; fi
+
+ touch "$srcdir/.makepkg-prepare"
+}
+
+build() {
+ [[ -f "$srcdir/.makepkg-prepare" ]] || { prepare || return $?; cd "$srcdir"; }
+ cd "$srcdir"
+ build_browser
+ for locale in "${_locales[@]}"; do
+ cd "$srcdir"
+ build_locale "${locale}"
+ done
+}
+
+build_browser() {
+ cd mozilla-release
+
+ cp ../mozconfig .mozconfig
+ if $_pgo; then cat ../mozconfig.pgo >> .mozconfig; fi
+ if [[ $CARCH == mips64el ]]; then mips64el-configure; fi
+
+ # WebRTC build tries to execute "python" and expects Python 2
+ # Workaround taken from chromium PKGBUILD
+ mkdir "$srcdir/python2-path"
+ ln -s /usr/bin/python2 "$srcdir/python2-path/python"
+ export PATH="$srcdir/python2-path:$PATH"
+
+ export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$pkgbase"
+ export PYTHON="/usr/bin/python2"
+ export MOZ_MAKE_FLAGS="$MAKEFLAGS"
+ unset MAKEFLAGS
+
+ if $_pgo; then
+ export MOZ_PGO=1
+ export DISPLAY=:99
+ Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY &
fi
+ _fail=0
+ make -f client.mk build || _fail=1
+
if $_pgo; then
- LD_PRELOAD="" /usr/bin/Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 :99 &
- LD_PRELOAD="" DISPLAY=:99 make -j1 -f client.mk profiledbuild MOZ_MAKE_FLAGS="$MAKEFLAGS"
kill $! || true
- else
- LD_PRELOAD="" make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS"
fi
+ return $_fail
+}
+
+build_locale() {
+ locale=$1
+ cd mozilla-release
+
+ export PYTHON="/usr/bin/python2"
+ export PRODUCT='browser'
+
+ # This is an adaptation of the "$(L10N_BUILD_STAMPS)" rule from debian/rules
+ [[ -e l10n ]] || mkdir -p l10n
+ [[ -e l10n/$locale ]] || ln -sf ../l10n-$locale l10n/$locale
+ ${PYTHON} config/pythonpath.py -I$(pwd)/compare-locales/lib \
+ $(pwd)/compare-locales/scripts/compare-locales \
+ -m $(pwd)/moz-objdir/l10n-$locale ${PRODUCT}/locales/l10n.ini $(pwd)/l10n $locale
+ make -C moz-objdir/${PRODUCT}/locales langpack-$locale \
+ L10NBASEDIR=$(pwd)/l10n MOZ_CHROME_FILE_FORMAT=flat \
+ MOZ_LANGPACK_EID=langpack-${locale}@${pkgbase}.mozilla.org \
+ PKG_LANGPACK_BASENAME='$(MOZ_LANGPACK_EID)' PKG_LANGPACK_PATH=xpi/ \
+ LOCALE_MERGEDIR=$(pwd)/moz-objdir/l10n-$locale
+}
+
+install-icon() {
+ local brandingdir=$1 prog=$2 size=$3
+ local sizedir=${size}x${size} ext=png
+ [[ $size == scalable ]] && { sizedir=$size; ext=svg; size=''; }
+
+ dirs=({moz-objdir/,}"$brandingdir")
+ files=({default,mozicon,${prog}{,_icon}}${size}.${ext})
+
+ for dir in "${dirs[@]}"; do
+ for files in "${files[@]}"; do
+ if [[ -e "$dir/$file" ]]; then
+ install -Dm644 "$dir/$file" \
+ "$pkgdir/usr/share/icons/hicolor/$sizedir/apps/$prog.png"
+ return 0
+ fi
+ done
+ done
+ #return 1
}
-package() {
- cd "$srcdir/$DEBIAN_BUILD"
+package_iceweasel-libre() {
+ cd mozilla-release
make -j1 -f client.mk DESTDIR="$pkgdir" install
- install -Dm644 "$srcdir/vendor.js" "$pkgdir/usr/lib/$_pkgname/defaults/preferences"
+ install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgbase/defaults/preferences/vendor.js"
- # I don't even know why we're hitting the objdir, and ConnOS didn't
- _brandingdir=debian/branding
- brandingdir=moz-objdir/$_brandingdir
- icondir="$pkgdir/usr/share/icons/hicolor"
- for i in 16x16 32x32 48x48 64x64; do
- install -Dm644 "$brandingdir/default${i/x*/}.png" "$icondir/$i/apps/$_pkgname.png"
+ for size in 16 32 48 64 128 scalable; do
+ install-icon debian/branding $pkgbase $size
done
- install -Dm644 "$brandingdir/mozicon128.png" "$icondir/128x128/apps/$_pkgname.png"
- install -Dm644 "$_brandingdir/iceweasel_icon.svg" "$icondir/scalable/apps/$_pkgname.svg"
- install -d "$pkgdir/usr/share/applications"
- install -m644 "$srcdir/iceweasel.desktop" "$pkgdir/usr/share/applications"
+ install -Dm644 ../$pkgbase.desktop \
+ "$pkgdir/usr/share/applications/$pkgbase.desktop"
- rm -rf "$pkgdir/usr/lib/$_pkgname/"{dictionaries,hyphenation,searchplugins,plugins}
- ln -sf /usr/share/hunspell "$pkgdir/usr/lib/$_pkgname/dictionaries"
- ln -sf /usr/share/hyphen "$pkgdir/usr/lib/$_pkgname/hyphenation"
- ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$_pkgname/plugins"
- ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$_pkgname/searchplugins"
+ # Use system-provided dictionaries
+ rm -rf "$pkgdir"/usr/lib/$pkgbase/{dictionaries,hyphenation}
+ ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgbase/dictionaries"
+ ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgbase/hyphenation"
+ # use mozilla-searchplugins
+ rm -rf "$pkgdir"/usr/lib/$pkgbase/searchplugins
+ ln -s /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$pkgbase/searchplugins"
# We don't want the development stuff
- rm -rf "$pkgdir"/usr/{include,lib/$_pkgname-devel,share/idl}
+ rm -r "$pkgdir"/usr/{include,lib/$pkgbase-devel,share/idl}
- # Workaround for now: https://bugzilla.mozilla.org/show_bug.cgi?id=658850
- ln -sf $_pkgname "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin"
+ #workaround for now
+ #https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+ ln -sf $pkgbase "$pkgdir/usr/lib/$pkgbase/$pkgbase-bin"
}
+
+package_locale() {
+ locale=$1
+ cd mozilla-release
+ lang=$(sed -n "/^%define L10N_LANG ${locale}/,+1p" debian/l10n/browser-l10n.control|sed -n 's/%define L10N_LANGUAGE\s\s*//p')
+ pkgdesc="${lang} language package for Iceweasel-libre"
+ depends=("iceweasel-libre=${pkgver}")
+
+ extdir="$pkgdir"/usr/lib/iceweasel/extensions/
+ install -d "${extdir}"
+ install -m644 moz-objdir/dist/xpi/langpack-${locale}@${pkgbase}.mozilla.org.xpi "${extdir}"
+}
+for locale in "${_locales[@]}"; do
+ eval "package_iceweasel-libre-l10n-$(lowercase ${locale})() { package_locale ${locale}; }"
+done
+
+md5sums=('263569a577f72314694a711cc6a0d96f'
+ '6a571d3a3b355c331f67d57702f4fccf'
+ '366e1e4847d7e00eba77ee5a4be0d3db'
+ '80dd4a702302fb36719c67445b487895'
+ 'c99d7605c0e0bb0d77e71cd54f305a9a'
+ '1f4aeabf6c28fcf6539d13f65f8b366b'
+ 'cb9cc5f721d81442f1a93d134054f23c'
+ 'c69e0fa169bf6c49b1f83afd2383b628'
+ '09f4376791d17a772c60a0308095211d'
+ 'a16081e4da9daf6df5f6fcce2000cec1'
+ '88dd4c5837485acea83e97f3cb4f1e31'
+ '8751f0a634656ba973c53f96d1fa34e1'
+ 'f4531f867e6e75501bac3d7ed5f09045'
+ '740667ba651f0562b45bbfe63b8ec84e'
+ 'a1f3637341457fb8272d126f1aa70e4b'
+ '3d00ad2734c890930441d6cd919f11c8'
+ '84b7a2bf7f1458b60e9552d04c7e84b2'
+ '30ce51ca764b091c59df5c08e35e8a7f'
+ '1291e5976c83a8cda1903e4443d44c8e'
+ '1eacf81985d9993b2b94f98fd4c453e0'
+ '07b91907c98155c1b95e5d7f47367fde'
+ 'cd4042405f6eaa2931021f745f49d91f'
+ '24f8a5d05d0d2485c30b46e6d6835330'
+ '1b95f32637229a86e4633994350cf76f'
+ 'ae6007384d85dbd14fbe6496e0b9e47b'
+ 'a8ef67c04d3dc263f0f58e877b13cd71'
+ 'b5c3b2e366aa776e574d0972df72a423'
+ '200f856b50a7485a1d5447cbf8dee77c'
+ '1767400f27cf010572308f949e56176e'
+ 'c6dde21438789ccf4c666afc22ee713c'
+ 'd202408658b9e7e7a2656dd874ac0712'
+ '1c463a18e2a395314f7d0ad72282d5aa'
+ 'ec222722f432e8a94f993c1c32cd9757'
+ 'cf44fd1d567a7638fc0b5b80bb0398f7'
+ '13151197d7ef349699e55c760c74af16'
+ '32c185ef506e439bb63f572906a9bf66'
+ '2e6b90b3c6cad17753ec1aecaf61073c'
+ 'dbf451ef9ecf1816973ac4dffe7e2b8e'
+ '85c0900fb798fb64a8883dba06deccc0'
+ '0efff47ab838fd320c710ffd46ee3a57'
+ '28e5d445e7a91ddd64d50478b05edb51'
+ '770dcdf1a8d6d2db64dadb6e4f6149fb'
+ '7732b021cdf73ace33cb41609b327f3d'
+ '3a195266b43e9f477619aac9c326a26b'
+ 'a55e22c7ab045826b331efd7c0f036ef'
+ '2edcd565c19828e3d4a2da19f8529edd'
+ '531c54a91d509e768b55bfd88a96a527'
+ 'ddf2182b6e33795450bf41f46e7be521'
+ '8bf4edabc95abbaf274ddd5e5c5db562'
+ '63a227dbab0e66b6a0d4804c419049e2'
+ '3c9bab1f629c0b079345a186c0f22afc'
+ '786a62179094cda5f5e831232f4f94ce'
+ '535f68d0cfa4dee9df0cddbee42a4c94'
+ 'ffc4c457dfa697162e4198e61ae19e3b'
+ '4476b94e676b3cfb309f972f7c42da1b'
+ '792700b40ba53de7de5b48187b604b29'
+ '7f71fa7bed8488226168406ac022d2fd'
+ 'fdd9a144cd2a630d1b7ab6b73315c548'
+ '88d668eccb111a9e4f5fde58e000a5aa'
+ '46509bb591bf54b6fed025814bfc11bf'
+ '715a3f8c2fcdab17b24ce61f55c49183'
+ '658226211d66a724d0335a173ef8512f'
+ 'ecb41c7536c95cf2ca118d7ab6b7d357'
+ 'b813931cfba36f3b00826ba2d36e648f'
+ '2a926d37294ab24a7d7dc879339ae736'
+ 'fba979124cd393f1164a59e3b9183ccc'
+ 'e8597a5af1643b9c9a0b02a3756e0a86'
+ '665140babab027228eb195b6c0e83d4e'
+ 'e71a740bfc52d25968f8e2c4c1896897'
+ '47bd00559728578bfc257b80c72ce393'
+ '3a3d846613363e6d4dd99326cd07417d'
+ '80daf692c2fa80ef7f528df2a6aed42e'
+ '25c03afb8f5086a07eb0e26c94bcbc01'
+ '481db49b914f33d6c594ecebbc291e4c'
+ '742d2af843536fc1cdc8560b5aa0620f'
+ '9ee935f09dc89b42db9ad8db3473717d'
+ 'cf3e65e4db50dfa467defb4f820cd378'
+ '3e0c8ea5b69c4363e40c21dda5230850'
+ '32b73226e95ae47dc11a554a7208d960'
+ '437602c23394eb02ae5fe03ca4fd29bc'
+ 'f7a347a3d5679d82340d227474de938f'
+ '1a898825183ed67ea72b67a2c3486dd4'
+ '73bead055152cd4885b9834691c9066a'
+ '722a0d2212060e2044cbac859db3e063'
+ 'fba01f51ac90dec18758a7468fb509e1'
+ '03c2a59eab8ef4ad3687b91c07f96165'
+ 'd502ec35e4ec26d7f538f4b96402fe9c'
+ 'b75b729e9ab3ff9a908115ab520339a9'
+ 'cd696e70fdb4f5ab9d50040abea46b82'
+ '1b9df937ef08b6a72ca7d659f91df099'
+ '17bbe91d26b302aa36391ed57199006d'
+ 'de6037c0a65e7b86e0929637156ba587'
+ 'a8fc4658d45b6bf9350023e5c3f34e56'
+ '8f96efe6c0257c8049bbe4bc85d42994'
+ 'e4cd438a0b2a42dfb14bc7716e901e5f'
+ '5bfaf77580b6d3ce185b4c3ad4fa30ca'
+ '39d8b9249c5effe5fe24d2e9f80a9a94'
+ '2baf8cffccd50c568ad153a709cb3136'
+ 'e9b4ec9a34bdab1854255aaa05e7cedd'
+ '52e52f840a49eb1d14be1c0065b03a93'
+ '23520aca140fb0dd3e1b6f21b21f591f')