diff options
22 files changed, 498 insertions, 930 deletions
diff --git a/libre/iceweasel-i18n/PKGBUILD b/libre/iceweasel-i18n/PKGBUILD index 9e0469437..2f2c1be72 100644 --- a/libre/iceweasel-i18n/PKGBUILD +++ b/libre/iceweasel-i18n/PKGBUILD @@ -9,8 +9,8 @@ # - Run 'make'. It will take care of everything else for you. _debname=iceweasel -_debver=13.0.1 -_debrel=2 +_debver=14.0.1 +_debrel=1 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -20,9 +20,9 @@ pkgbase=iceweasel-i18n pkgname=($(for lang in ${_langpacks[@]} do echo $pkgbase-$lang | tr A-Z a-z done)) -_pkgver=13.0.1 +_pkgver=14.0.1 pkgver=${_debver}.${_debrel} -pkgrel=1 +pkgrel=2 pkgdesc="Language packs for Debian Iceweasel." arch=('any') @@ -56,87 +56,87 @@ package_iceweasel-i18n-$(echo $lang | tr A-Z a-z)() { " done -md5sums=('757e700b430500bd1bc4a32531c9c5c2' - 'beb404a571e3e666de849e3ccd6887c4' - '3bef09f6330c11c43eaa3b2349d65172' - '8abaeec4486169bb85be05f289c0eae9' - '55d5c50733a1d08acbd85292cb596589' - '10ed3b7da37259a870507287b026f69c' - '8ef3e6cea973059a328eb5792a507e5d' - '64a37cd546b0e092ddd2495e8ee8fb33' - 'ce9a0bbdc6715ba9350050dcb640201a' - '5506b1e58bb9e8a100b1c7a527f95dcf' - '6920f4fb2d266d5839872a254a41c760' - '73f6d4a70be7b0f0c15627e72685d402' - '695fb3e883e6949d1ad13460389dbec2' - 'c0ed06cb371edb89d2c42f4175dd8ab7' - '074429b21f92d61db196d49d60fef32d' - '9e4b3ecf3ecc9b577e5f8c33df68c006' - '8e3b3090910d5d2b40b5deb0ee589359' - 'a6c969cb9a8c97a548a16422ac4e2664' - '6394347deb1924c46992eb9d5e9498c9' - 'de44e8a2e3e8de215fdf6b6f6399f88f' - '57b8a69ff712d6416160a5c5c61e6ba7' - 'dd453683292ad2f2181e720a6b834f11' - '04d2d05e22208106b67cc136d2b66892' - 'f5474e87498f8da3ed27b11816a64906' - '6d60eabb499c2e672a5ebc5ea32c6c58' - '91b86461bfc8f1728d1b4e55d102622c' - '525e770773177bbdb2c8ad14ffb4534b' - '98139e2c2c1cc11e6d47a46b2483c290' - '295ee591cc1480da7b2adacf470c1ab1' - 'a95c27e109eb5768b1ce4dbf3e58ddca' - 'b8dccb786a16c6ebf8c015997aa96577' - 'a647e17fd8c7c9d039c140e36c3e18a7' - 'd20309e9a6092e9a7a92c1ded0d55f62' - 'e0e5948c8353d3de76912884edc20297' - '8d0bf7dbb40e06495d8c749758163246' - 'f34d9ec431acc2b1178ac3cdbfae3856' - 'cb68c4036bdb9ac69428a035e04668dc' - '2949b4e18de48b29c62ef03b3ba4f94d' - 'aec2a61b12f7e5dac2f46251407c6b47' - '60285cbb93249fea5d5afba3dbaf115f' - 'c3f33724ded35468760aac7816b2b591' - 'dc9b02972a247dc5fbeabcc42942c4ac' - '512bffe5f782e92da15bc4c9b2035ded' - '3c04ca7f6d726e417dc1459eaa8bc068' - 'd8526259b9560e9164862df34db555a7' - 'af3630dbd3a327ce99edf96b8cb35dce' - 'ffeb0437949a5e623b12dbcde41b6d39' - 'c653d9c9101394d29c5f5a3b7bf510e1' - 'b31c230e4cbf3d1f73b499509ff3e805' - '548228527e6772ee5f457fff41826b02' - '40b5e98319effec4f1605a831c393cda' - '09899eacc5d1e61767a87ecd093267d8' - '1907de3acaa8e4c99539f99c0442770e' - 'dc4cdef93b037e40ee6fd3f4c0848e29' - '409e9fa01c0b2982ba7e335d7001b905' - 'c30fed12e22cf16ea86374ca541a32aa' - 'a9cc0798968851f51521399171e1454f' - '6b53e84454a196870e631db5859fa9f3' - '7939907fff93c0b984b445d8ea603baf' - '7370eca015e6ed0289a9db4e5f4cd908' - '84eaa820922b25b9b16724099a78c139' - '23f15310ffd0d70d3aaf9b37436a16bb' - 'a4063289c46317f0d351f11e8a0d1527' - '012417e2c4b0d2e597273f988b9f877b' - '3feaddb7edef32adfc561aa3eeedafe8' - '69fc663f9951867c9139a3a39973e0a5' - 'a9c3fed813c45fd32b17576a32ccf35a' - '01fe030c2949facb8512a667e9e6e9ee' - 'f8d63b2ae7d24753422e266224de32d2' - '335ce46bda9f0a69414dc180ea780a70' - 'a0b4ef73ad4322ea536d08918d630c9f' - '39380afb97827cde59536c81310de562' - '06930aeffde351d14554de1f0f93728b' - '3d1fe2feefd0e44c213360c405006a98' - '3f0af6bbd75b45b7703f35e3e594a7a7' - '89f90e0a35b81423257b113a37a71681' - '24fc060c80197d73585902fec40de1bf' - '7738a9596bf1e198c6de3ec3e694e7eb' - '8fbf72bb8c1d5cfc7dbcb02af506da3c' - '8790e5d8e5317fba199bfb3f135847bc' - 'd768e2190bcea36233625d948d879b39' - '3bac90764599a61b14f82e9a51d72d36' - 'eb3d0fa986f6ffd54f2bb48fc482227e' - '3c8166c380597924871688c8c6bf795c') +md5sums=('8492bffee2bd98cb7d98a8a53e0f17ae' + '5497ed6ceb6e975eba24a5bf05f86a89' + '314f16038bdb82e59bf3522efe3a6b70' + '20d404c6f61846e7bf5c4d2474d3a394' + 'f80eefbad17d03ff38514f3bcc179f1a' + '8b2a7ec06160c973a323c38a7a0b25d5' + '8b5496a243674eb3960ac6dc5a2f6b88' + 'b75cae5fb01515ab9aeb8ca941ce88eb' + '89f20e820d1aaf08cef2a59ee3859239' + '4431e91bbbe395b86da48b66ac689fb9' + '9fab9ef9ad5dd46c8ae51973dfaffaaa' + '32f8d7861a46407d76b1310566845afe' + 'e000671c0b3fd89e76b763a7980f707e' + 'd14e72cddb190f0a58275624b1982e4c' + 'd55c847a44918c6fee6bbf4ac8d9e4a7' + 'c5a4568e1dac75a863f281bfeb000ead' + 'fe51ca24871979a37bcca24d7b3b2da1' + 'e702787ad3ff4c1d20dedf55321dc335' + 'dfcb47fda64599a5704da757c7c04377' + 'b0a1cbb9cfe5265989cf3b26e8109fd8' + 'cd060b883cd7586e249c541c26dd642e' + '5d23943dff2735703e4995fc8321bf3d' + 'e389f9cb80945608c198a890258377cb' + '32a1798b0e137097e7f00c27f0e6aa2a' + '9003c830b3f8ee4b8950b1f406acf0b0' + '5e7e3f5ff49d7070f6de4bc6d64875d6' + '891331124222b316a13ba45bc87a7c23' + '21aa289ad236bf6849d96b0b9d985fbe' + '64c9579f00c738bd824466a7212e76fe' + 'b89e729d09c3c54e9849f665bedf60db' + 'e40fda3e233e042447a9e10cc0cd0f76' + '8c813e20e712dc3d62cde69ee2df2d28' + '7fff1d836a0c4f8a5ef41c9f4b56b2a9' + '916f163b9e0814bc23f1545d18238c79' + '2cdab3c133f7d7d5abc54bed1ac654a9' + '2d9d97bbdb568296380cdee5ec61ba88' + '43e6ce7d51e734bf3aaff68504d8ebee' + 'af8f80eefcf1d795a7aaf25f694b6e97' + 'c4336d1a4eb59cc4e415a69d22a682a7' + 'be4a6850f76eb144079c7a47de678b66' + 'a4826c1b2e19216759224252f09ba552' + '47ee1757a64cdfcb9c0ba461fb934377' + '4f144397e5235862f90e09a6ebae1571' + '16e4bb054604c5cdb583a10456a35a2c' + '0dfaf8cc5efaf39b4ed2422497a3043f' + 'e5b809e55fe4e3b16229a7e1faa160b6' + '8f317ab44eed90cb59be734dd805287b' + '3797507f353a6978924a273802d178b9' + 'a1a7df582e476a7993ebbcb427835256' + 'a833481b7c6d26cc679f1a551014ab7c' + 'fb5d99c278d75c30891bae95f8337fd1' + '7f02751d991432d72c46247520d3ed67' + '96fde2477e2e661794c4ddabe1c9d024' + '7b1948761da836466f567ec35b54ff82' + '0d8cc6d0b2a53d15e32740a463cff1cc' + '571b6d2d461f7cb3ec95632b8d75c65c' + 'a01e65b75b8dd78dcaf0ff746fc71b92' + 'de2a327304a0f659944e7ae9e39fa877' + 'a12943272a14455a19761e4564c2f0f8' + '9eca996185f4995dc971f27c22447404' + 'cf248c1ea91e55c9aa306437abbcf212' + 'f2cbcdf897307bdd95f886d95504264b' + '2863ef939be42a0422d7e903122ee89c' + '2df4ff00f83b650cf69e8b3a27099c20' + 'cda3838e681f461c9ea833ed71fb72b8' + 'c6bf73b7e7357e050cbe772cf460f442' + '5f61a368a50280f0b293a8b11631c673' + '418d85a6fae1e9cdde6e8aaeea594b99' + 'e7e145a331920a2fcd1c00a80f3d9279' + 'b9bc820720e8fbb1c28229c66310dcbf' + 'bb9d826ead65c23bd45090206f0f6f25' + '7a72bd76a2087efca618c4cf7cd6ea60' + 'a06bf452b96c0dcef7d30a390b5c755d' + '0f6605afb8dddab2d2dc4110e3a62c3f' + '3dd7cc1afef4d2bfcfadb3093fe979c1' + '6a63bd1463f7d75172170e8e18c3443b' + '1c9887f019c8ffb71b3d9faa3b2120ba' + '38c750ddb41b8d61a2073d0cb67bc6d9' + 'e1d6e4b2f34af391c2037b331fd566f8' + 'a950f7a77c9ba4fb0142107afdcc4a01' + '0fe08f2659b34b1ee8ebd7debf2d9d13' + 'af8af0b941b1bd26ee4122f4e99f7f55' + 'e3d1f71617331226bbeb4cb829a2c0be' + '6623cab16c266630f9f56427d22cb5df') diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD index 974ad140c..6116867fa 100644 --- a/libre/iceweasel-libre/PKGBUILD +++ b/libre/iceweasel-libre/PKGBUILD @@ -15,7 +15,7 @@ _pgo=false # We're getting this from Debian Sid _debname=iceweasel _debver=14.0.1 -_debrel=1 +_debrel=2 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -50,15 +50,17 @@ source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.bz2" libre.patch iceweasel-install-dir.patch vendor.js + shared-libs.patch Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch) md5sums=('8e4f3987d37c8e73b168948d0771b872' - 'fca50bc0a4327c1389349be7939c14bd' + '8689c150a4d3a0a688ad2db6044feac6' 'eab149c1994ab14392e55af3abb08e80' 'ac29b01c189f20abae2f3eef1618ffc0' 'a485a2b5dc544a8a2bd40c985d2e5813' - 'ed909b5b61f36a81a71989b7daeb2545' + 'cd793fac6a572fe5db09e275ca038125' 'e529742c0a425648087bc3ce537fe4c5' '0d053487907de4376d67d8f499c5502b' + '52e52f840a49eb1d14be1c0065b03a93' '88350bc611361a1ff635f5c960c6d6ee') if [ "$_pkgname" != "$pkgname" ]; then @@ -88,6 +90,7 @@ build() { patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname patch -Np1 -i "$srcdir/xulrunner-copy-stub.patch" # small fix patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/shared-libs.patch" cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch diff --git a/libre/iceweasel-libre/libre.patch b/libre/iceweasel-libre/libre.patch index b136cb4ad..b7efb7dc1 100755..100644 --- a/libre/iceweasel-libre/libre.patch +++ b/libre/iceweasel-libre/libre.patch @@ -66,7 +66,7 @@ diff -urN iceweasel-13.0.orig/browser/app/profile/firefox.js iceweasel-13.0/brow diff -urN iceweasel-14.0.1.orig/browser/locales/en-US/chrome/browser-region/region.properties iceweasel-14.0.1/browser/locales/en-US/chrome/browser-region/region.properties --- mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-01 09:03:48.000000000 -0300 +++ mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-15 02:17:00.978636665 -0300 -@@ -1,23 +1,21 @@ +@@ -1,23 +1,23 @@ # Default search engine -browser.search.defaultenginename=Google +browser.search.defaultenginename=Duck Duck Go (Lite) @@ -85,8 +85,10 @@ diff -urN iceweasel-14.0.1.orig/browser/locales/en-US/chrome/browser-region/regi -browser.contentHandlers.types.0.uri=http://fusion.google.com/add?feedurl=%s -browser.contentHandlers.types.1.title=My Yahoo! -browser.contentHandlers.types.1.uri=http://add.my.yahoo.com/rss?url=%s -+#browser.contentHandlers.types.0.title= -+#browser.contentHandlers.types.0.uri=about:blank ++browser.contentHandlers.types.0.title= ++browser.contentHandlers.types.0.uri=about:blank ++browser.contentHandlers.types.1.title= ++browser.contentHandlers.types.1.uri=about:blank # URL for site-specific search engines # TRANSLATION NOTE: {moz:domain} and {searchTerms} are placeholders for the site @@ -97,22 +99,24 @@ diff -urN iceweasel-14.0.1.orig/browser/locales/en-US/chrome/browser-region/regi # increment this number when anything gets changed in the list below. This will # cause Firefox to re-read these prefs and inject any new handlers into the -@@ -27,19 +25,17 @@ +@@ -27,19 +27,19 @@ gecko.handlerService.defaultHandlersVersion=3 # The default set of protocol handlers for webcal: -gecko.handlerService.schemes.webcal.0.name=30 Boxes -gecko.handlerService.schemes.webcal.0.uriTemplate=http://30boxes.com/external/widget?refer=ff&url=%s -+#gecko.handlerService.schemes.webcal.0.name= -+#gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank ++gecko.handlerService.schemes.webcal.0.name= ++gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank # The default set of protocol handlers for mailto: -gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail -gecko.handlerService.schemes.mailto.0.uriTemplate=http://compose.mail.yahoo.com/?To=%s -gecko.handlerService.schemes.mailto.1.name=Gmail -gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s -+#gecko.handlerService.schemes.mailto.0.name= -+#gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank ++gecko.handlerService.schemes.mailto.0.name= ++gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank ++gecko.handlerService.schemes.mailto.1.name= ++gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank # The default set of protocol handlers for irc: -gecko.handlerService.schemes.irc.0.name=Mibbit @@ -127,7 +131,7 @@ diff -urN iceweasel-14.0.1.orig/browser/locales/en-US/chrome/browser-region/regi +gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net/ diff -urN iceweasel-13.0.orig/build/pgo/blueprint/elements.html iceweasel-13.0/build/pgo/blueprint/elements.html --- mozilla-build.orig/build/pgo/blueprint/elements.html 2012-06-01 09:03:49.000000000 -0300 -+++ mozilla-build/build/pgo/blueprint/elements.html 2012-06-05 20:37:22.059133787 -0300 ++++ mozilla-build/build/pgo/blueprint/elements.html 2012-06-05 20:37:22.059133787 -0300 @@ -143,7 +143,7 @@ </p> <p> @@ -195,7 +199,7 @@ diff -urN iceweasel-13.0.orig/layout/ipc/test-ipcbrowser.xul iceweasel-13.0/layo diff -urN iceweasel-14.0.1.orig/mobile/xul/app/mobile.js iceweasel-14.0.1/mobile/xul/app/mobile.js --- mozilla-build.orig/mobile/xul/app/mobile.js 2012-06-01 09:04:14.000000000 -0300 +++ mozilla-build/mobile/xul/app/mobile.js 2012-06-05 20:48:20.193241600 -0300 -@@ -221,13 +221,13 @@ +@@ -221,13 +221,12 @@ /* preferences for the Get Add-ons pane */ pref("extensions.getAddons.cache.enabled", true); pref("extensions.getAddons.maxResults", 15); @@ -212,11 +216,10 @@ diff -urN iceweasel-14.0.1.orig/mobile/xul/app/mobile.js iceweasel-14.0.1/mobile +pref("extensions.getAddons.search.url", "http://www.gnu.org/s/gnuzilla/addons.html"); +pref("extensions.getAddons.browseAddons", "http://www.gnu.org/s/gnuzilla/addons.html"); +pref("extensions.getAddons.get.url", "http://www.gnu.org/s/gnuzilla/addons.html"); -+pref("extensions.getAddons.getWithPerformance.url", "http://www.gnu.org/s/gnuzilla/addons.html"); /* preference for the locale picker */ pref("extensions.getLocales.get.url", ""); -@@ -247,7 +247,7 @@ +@@ -247,7 +246,7 @@ pref("dom.disable_window_open_dialog_feature", true); pref("keyword.enabled", true); @@ -228,7 +231,7 @@ diff -urN iceweasel-14.0.1.orig/mobile/xul/app/mobile.js iceweasel-14.0.1/mobile diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties iceweasel-13.0/mobile/locales/en-US/chrome/region.properties --- mozilla-release.orig/mobile/locales/en-US/chrome/region.properties 2012-06-01 09:04:14.000000000 -0300 +++ mozilla-release/mobile/locales/en-US/chrome/region.properties 2012-06-15 02:17:43.446130868 -0300 -@@ -1,18 +1,16 @@ +@@ -1,18 +1,18 @@ # Default search engine -browser.search.defaultenginename=Google +browser.search.defaultenginename=Duck Duck Go (Lite) @@ -243,8 +246,10 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew -browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s -browser.contentHandlers.types.1.title=Google -browser.contentHandlers.types.1.uri=http://fusion.google.com/add?feedurl=%s -+#browser.contentHandlers.types.0.title= -+#browser.contentHandlers.types.0.uri=about:blank ++browser.contentHandlers.types.0.title= ++browser.contentHandlers.types.0.uri=about:blank ++browser.contentHandlers.types.1.title= ++browser.contentHandlers.types.1.uri=about:blank # Keyword URL (for location bar searches) -keyword.URL=https://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q= @@ -252,24 +257,25 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew # increment this number when anything gets changed in the list below. This will # cause Firefox to re-read these prefs and inject any new handlers into the -@@ -22,11 +20,9 @@ +@@ -22,11 +22,11 @@ gecko.handlerService.defaultHandlersVersion=2 # The default set of protocol handlers for webcal: -gecko.handlerService.schemes.webcal.0.name=30 Boxes -gecko.handlerService.schemes.webcal.0.uriTemplate=http://30boxes.com/external/widget?refer=ff&url=%s -+#gecko.handlerService.schemes.webcal.0.name= -+#gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank ++gecko.handlerService.schemes.webcal.0.name= ++gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank # The default set of protocol handlers for mailto: -gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail -gecko.handlerService.schemes.mailto.0.uriTemplate=http://compose.mail.yahoo.com/?To=%s -gecko.handlerService.schemes.mailto.1.name=Gmail -gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s -+#gecko.handlerService.schemes.mailto.0.name= -+#gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank - -diff -urN iceweasel-14.0.1.orig/modules/libpref/src/init/all.js iceweasel-14.0.1/modules/libpref/src/init/all.js ++gecko.handlerService.schemes.mailto.0.name= ++gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank ++gecko.handlerService.schemes.mailto.1.name= ++gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank +diff -urN iceweasel-14.0.orig/modules/libpref/src/init/all.js iceweasel-14.0/modules/libpref/src/init/all.js --- mozilla-build.orig/modules/libpref/src/init/all.js 2012-06-01 09:04:16.000000000 -0300 +++ mozilla-build/modules/libpref/src/init/all.js 2012-06-05 20:55:41.569045759 -0300 @@ -47,7 +47,7 @@ @@ -325,22 +331,24 @@ diff -urN iceweasel-14.0.1.orig/browser/locales/generic/profile/bookmarks.html.i + </DL><p> + <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3> + <DL><p> -+ <DT><A HREF="http://www.fsf.org/" ICON="data:text/html;base64,Cgk8IURPQ1RZUEUgaHRtbD4KCgk8aHRtbCBsYW5nPSJlbiI+CgoJICAgIAogICAgCiAgICAKICAgIAogICAgCgoJICA8aGVhZD4KCSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KCgkKCgkgICAgCgkgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIiAvPgoKCSAgICAKCQk8YmFzZSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZnJlZS1zb2Z0d2FyZS1mb3VuZGF0aW9uIiAvPjwhLS1baWYgbHQgSUUgN10+PC9iYXNlPjwhW2VuZGlmXS0tPgoJICAgIAoKCSAgICAKCQk8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTAuNjY2NjsgbWF4aW11bS1zY2FsZT0xLjA7IG1pbmltdW0tc2NhbGU9MC42NjY2IiAvPgoJCTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iUGxvbmUgLSBodHRwOi8vcGxvbmUub3JnIiAvPgoJICAgIAoKICAgICAgICAKCgkgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIgLz4KCSAgICA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IlBsb25lIC0gaHR0cDovL3Bsb25lLm9yZyIgLz4KCgoJICAgPHRpdGxlPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAmbWRhc2g7IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAmbWRhc2g7IHdvcmtpbmcgdG9nZXRoZXIgZm9yIGZyZWUgc29mdHdhcmU8L3RpdGxlPgoKCgkgICAgCgkgICAgCgoJICAgIAoJICAgIAo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoucG9ydGxldC1zdGF0aWMtc3VwcG9ydGVyLC5wb3J0bGV0LXN0YXRpYy1hcHBlYWwtcG9ydGxldCB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O30KI2ZzZi1zaWRlYmFyIHttYXJnaW4tdG9wOiAxMHB4O30KI2JyZWFkY3J1bWJzLXlvdS1hcmUtaGVyZSB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O30KdGFibGUsIHRkLCB0ciwgdGJvZHksIHRoZWFke2JvcmRlcjogMCAhaW1wb3J0YW50O30KPC9zdHlsZT4KCgoJICAgIAoJICAgIAoKCSAgICAKCSAgICAKCgkgICAgPGxpbmsgcmVsPSJjb3B5cmlnaHQiIHRpdGxlPSJDb3B5cmlnaHQgaW5mb3JtYXRpb24iIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5kLzMuMC9yZGYiIC8+CgkgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJBdXRob3IgaW5mb3JtYXRpb24iIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9hYm91dC9zdGFmZi8iIC8+CgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIGhyZWY9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vcGxvbmUzL2Nzcy9wcmludC0yMDExLTEwLTEzLmNzcyIgLz4KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+IEBpbXBvcnQgdXJsKCcvL3N0YXRpYy5mc2Yub3JnL25vc3ZuL3Bsb25lNC9jc3MvZnNmLTIwMTItMDQtMjMuY3NzJyk7PC9zdHlsZT4KCgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGU0YgTmV3cyIgaHJlZj0iLy9zdGF0aWMuZnNmLm9yZy9mc2ZvcmcvcnNzL25ld3MueG1sIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiAvPgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGU0YgRXZlbnRzIiBocmVmPSIvL3N0YXRpYy5mc2Yub3JnL2ZzZm9yZy9yc3MvZXZlbnRzLnhtbCIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgLz4KCTxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRlNGIEJsb2dzIiBocmVmPSIvL3N0YXRpYy5mc2Yub3JnL2ZzZm9yZy9yc3MvYmxvZ3MueG1sIiB0eXBlPSJhcHBsaWNhdGlvbi9yc3MreG1sIiAvPgoJPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmVlIFNvZnR3YXJlIEpvYnMiIGhyZWY9Ii8vc3RhdGljLmZzZi5vcmcvZnNmb3JnL3Jzcy9qb2JzLnhtbCIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgLz4KCTxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iR05VIFByb2plY3QgTmV3cyIgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3Jzcy93aGF0c25ldy5yc3MiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+Cgk8bGluayByZWw9ImFsdGVybmF0ZSIgdGl0bGU9Ik5ldyBGcmVlIFNvZnR3YXJlIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcnNzL3F1YWdnYS5yc3MiIHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIC8+CgoJPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCIgLz4KCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojYnJlYWRjcnVtYnMteW91LWFyZS1oZXJlLAojYnJlYWRjcnVtYnMtaG9tZSwKI2JyZWFkY3J1bWJzLWN1cnJlbnQsCiNicmVhZGNydW1icy0xIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5HTlVyZWxlYXNlc3sKCWJhY2tncm91bmQtY29sb3I6ICNmZmZmZTM7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwOwogICAgY29sb3I6IEJsYWNrOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB3aWR0aDogMjAwcHg7CiAgICBwYWRkaW5nOiAxMHB4Owp9CgojcG9ydGFsLWxhbmd1YWdlc2VsZWN0b3Ige2Rpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgYm90dG9tOiAxcHg7IGxlZnQ6IDFweDt9Cgo8L3N0eWxlPgoJICA8L2hlYWQ+CgoKCTxib2R5IGNsYXNzPSJ0ZW1wbGF0ZS1mcm9udHBhZ2VfdmlldyBwb3J0YWx0eXBlLWRvY3VtZW50IHNlY3Rpb24tZnJlZS1zb2Z0d2FyZS1mb3VuZGF0aW9uIGljb25zLW9uIiBkaXI9Imx0ciI+CgoJPGRpdiBpZD0iY29vbGlvIj4gPCEtLSB3cmFwcGVyIGRpdiAtLT4KCgk8cCBjbGFzcz0ib25seU1vYmlsZSI+PGEgdGFiaW5kZXg9IjEiIGhyZWY9IiNjb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+LCA8YSB0YWJpbmRleD0iMiIgaHJlZj0iL3NpdGVtYXAjY29udGVudCI+c2l0ZW1hcDwvYT4gb3IgPGEgdGFiaW5kZXg9IjMiIGhyZWY9Ii9zZWFyY2hfZm9ybSNjb250ZW50Ij5za2lwIHRvIHNlYXJjaDwvYT4uPC9wPgoKCTxkaXYgaWQ9ImhkIiBjbGFzcz0iY3VzdG9tLWRvYyB2aXN1YWxOb1ByaW50Ij4KCTxoZWFkZXI+CgkgICAgCgoJPGgxPjxhIGhyZWY9Ii8iPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjwvYT48L2gxPgoKCTxkaXYgaWQ9InBvcnRhbC1wZXJzb25hbHRvb2xzLXdyYXBwZXIiPgoKPGRpdiBpZD0iZnNmLWN1c3RvbSI+Cgo8aDUgY2xhc3M9ImhpZGRlblN0cnVjdHVyZSI+UGVyc29uYWwgdG9vbHM8L2g1PgoKPHVsIGlkPSJwb3J0YWwtcGVyc29uYWx0b29scyI+CiAgCgogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvY2FzbG9naW4iIGlkPSJwZXJzb25hbHRvb2xzLWxvZ2luIj5Mb2cgaW48L2E+CiAgPC9saT4KICAgIAogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvaGVscC1tZW51IiBpZD0icGVyc29uYWx0b29scy1sb2dpbi1wcm9ibGVtcyI+SGVscCE8L2E+CiAgPC9saT4KICAgIAogICAgCiAgICA8bGk+CiAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYXNzb2NpYXRlL2Fib3V0LXRoZS1tZW1iZXJzLWZvcnVtIiBpZD0icGVyc29uYWx0b29scy1mb3J1bS1wcm9tbyI+TWVtYmVycyBmb3J1bTwvYT4KICA8L2xpPgogICAgCgo8L3VsPgo8L2Rpdj4KPC9kaXY+CgogIDxhIGhyZWY9Imh0dHA6Ly9mc2Yub3JnL2pmYiI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vam9pbi5lbi5wbmciIGFsdD0iSm9pbiBub3ciIHN0eWxlPSJmbG9hdDogcmlnaHQ7IiAvPjwvYT4gCgoJPC9oZWFkZXI+Cgk8L2Rpdj4KCgk8ZGl2IGNsYXNzPSJ5dWktZyBmc2YtbmF2LWZvb3RlciIgaWQ9ImZzZi1uYXYiPgoJPGRpdiBjbGFzcz0ibmF2aSI+CjxkaXY+Cgo8ZGl2IGNsYXNzPSJjdXN0b20tZG9jIj4KCjxuYXY+Cjx1bCBjbGFzcz0ibWFpbi1uYXYgbmF2aWdhdGlvbiI+CjxsaT48YSBocmVmPSIvYWJvdXQvIiB0aXRsZT0iIj5BYm91dDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iL2NhbXBhaWducy8iIHRpdGxlPSIiPkNhbXBhaWduczwvYT48L2xpPgo8bGk+PGEgaHJlZj0iL2Fzc29jaWF0ZS8iIHRpdGxlPSIiPk1lbWJlcnNoaXA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9yZXNvdXJjZXMvIiB0aXRsZT0iIj5SZXNvdXJjZXM8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9jb21tdW5pdHkvIiB0aXRsZT0iIj5Db21tdW5pdHk8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii9kb25hdGUvIiB0aXRsZT0iIj5Eb25hdGU8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9zaG9wLmZzZi5vcmcvIiB0aXRsZT0iIj5TaG9wPC9hPjwvbGk+CjxsaSBjbGFzcz0ib25seU1vYmlsZSI+PGEgaHJlZj0iL25ld3MvIj5MYXRlc3QgbmV3czwvYT48L2xpPgo8bGkgY2xhc3M9Im9ubHlNb2JpbGUiPjxhIGhyZWY9Ii9ldmVudHMvIj5VcGNvbWluZyBldmVudHM8L2E+PC9saT4KPGxpIGNsYXNzPSJvbmx5TW9iaWxlIj48YSBocmVmPSIvYmxvZ3MiPkxhdGVzdCBibG9nIHBvc3RzPC9hPjwvbGk+CjxsaSBjbGFzcz0ib25seU1vYmlsZSI+PGEgaHJlZj0iL2ZyZWUtc29mdHdhcmUtc3VwcG9ydGVyLyI+RnJlZSBTb2Z0d2FyZSBTdXBwb3J0ZXIsIG91ciBtb250aGx5IGVtYWlsIG5ld3NsZXR0ZXI8L2E+PC9saT4KPC91bD4KCgoKPC9uYXY+Cgo8L2Rpdj48L2Rpdj4KCjwvZGl2PgoJPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ5dWktZyIgc3R5bGU9Im1hcmdpbi10b3A6IDBweDsiPgombmJzcDsKPC9kaXY+CgoJPGRpdiBjbGFzcz0iY3VzdG9tLWRvYyB5dWktdDUiPgoKCSAgIDxkaXYgaWQ9ImJkIj48ZGl2IGlkPSJ5dWktbWFpbiI+CgoKPGRpdiBjbGFzcz0ieXVpLWciPjxkaXYgY2xhc3M9Inl1aS1iIj4KCgoKICAgICAgICA8ZGl2IGlkPSJwb3J0YWwtY29sdW1uLWNvbnRlbnQiIGNsYXNzPSJjZWxsIHdpZHRoLTM6NCBwb3NpdGlvbi0wIj4KCiAgICAgICAgICAgIDxkaXYgaWQ9InZpZXdsZXQtYWJvdmUtY29udGVudCI+PGRpdiBpZD0icG9ydGFsLWJyZWFkY3J1bWJzIj4KCiAgICA8c3BhbiBpZD0iYnJlYWRjcnVtYnMteW91LWFyZS1oZXJlIj5Zb3UKYXJlIGhlcmU6PC9zcGFuPgogICAgPHNwYW4gaWQ9ImJyZWFkY3J1bWJzLWhvbWUiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZyI+SG9tZTwvYT4KICAgICAgICAKICAgIDwvc3Bhbj4KCjwvZGl2PjwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSIiPgoKICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCgogICAgPGRsIGNsYXNzPSJwb3J0YWxNZXNzYWdlIGluZm8iIGlkPSJrc3NQb3J0YWxNZXNzYWdlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgICAgICA8ZHQ+SW5mbzwvZHQ+CiAgICAgICAgPGRkPjwvZGQ+CiAgICA8L2RsPgoKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGFydGljbGU+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICA8dGFibGUgd2lkdGg9IjY5OSIgY2xhc3M9InBsYWluIj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIzMyI+CiAgICAgIDxhIGhyZWY9Ii9uZXdzL2ZzZi1hbm5vdW5jZXMtd2lubmVyLW9mLXJlc3RyaWN0ZWQtYm9vdC13ZWJjb21pYy1jb250ZXN0Ij48aW1nIHNyYz0iLy9zdGF0aWMuZnNmLm9yZy9ub3N2bi9yZXN0cmljdGVkLWJvb3RzLmpwZyIgYWx0PSJSZXN0cmljdGVkIEJvb3RzIC0tIGl0J3MgZm9yIHlvdXIgc2FmZXR5IiB3aWR0aD0iMjMwIiAvPjwvYT4KICAgICAgPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+CiAgICAgICAgVGhpcyA8c3BhbiB4bWxuczpkY3Q9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIGhyZWY9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiByZWw9ImRjdDp0eXBlIj53b3JrPC9zcGFuPiBieSA8YSB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiBocmVmPSJodHRwOi8vZXJpa3N0ZWlubWFubi5ubC9zZWN1cmVib290X3dlYmNvbWljLmh0bWwiIHByb3BlcnR5PSJjYzphdHRyaWJ1dGlvbk5hbWUiIHJlbD0iY2M6YXR0cmlidXRpb25VUkwiPkVyaWsgU3RlaW5tYW5uPC9hPiBpcyBsaWNlbnNlZCB1bmRlciBhIDxhIHJlbD0ibGljZW5zZSIgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wLyI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4uCiAgICAgIDwvcD4KICAgIDwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ2NiI+CiAgICAgPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmJjOyBoZWlnaHQ6IDIyNXB4OyBmb250LXNpemU6IDExMCU7Ij4gCiAgICAgICA8c3Ryb25nIHN0eWxlPSJmb250LXNpemU6MTc1JTsiPlN0YW5kIHVwIGZvciB5b3VyIGZyZWVkb20gdG8gaW5zdGFsbCBmcmVlIHNvZnR3YXJlPC9zdHJvbmc+PGJyPjxicj4KICAgICAgIDxhIGhyZWY9Ii9jYW1wYWlnbnMvc2VjdXJlLWJvb3QtdnMtcmVzdHJpY3RlZC1ib290L3N0YXRlbWVudCI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vdWVmaV9sb2dvLnBuZyIgYWx0PSIiIC8+PC9hPjxicj48YnI+CiAgICAgICA8YSBocmVmPSIvY2FtcGFpZ25zL3NlY3VyZS1ib290LXZzLXJlc3RyaWN0ZWQtYm9vdC9zdGF0ZW1lbnQiIHN0eWxlPSJmb250LXNpemU6MTEwJSI+Sm9pbiAzMSw4MDAgcGVvcGxlIGluIG9wcG9zaW5nIE1pY3Jvc29mdCdzIFJlc3RyaWN0ZWQgQm9vdCBieSBzaWduaW5nIHRoaXMgc3RhdGVtZW50PC9hPjxicj4KICAgICA8L3A+CiAgICAgPHA+PGEgaHJlZj0iLy93d3cuZnNmLm9yZy93b3JraW5nLXRvZ2V0aGVyL21vdmluZy8iPjxpbWcgc3JjPSIvL3N0YXRpYy5mc2Yub3JnL25vc3ZuL3dvcmtpbmcvdy9nZXRzdGFydC5wbmciIC8+PC9hPgogICAgICAgIDxhIGhyZWY9Ii8vd3d3LmdudS5vcmcvZGlzdHJvcy9mcmVlLWRpc3Ryb3MuaHRtbCI+PGltZyBzcmM9Ii8vc3RhdGljLmZzZi5vcmcvbm9zdm4vZG93bmxvYWQucG5nIiB3aWR0aD0iMTYwIiAvPjwvYT4KICAgICA8L3A+CiAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+CgoKICAgICAgICA8aDIgaWQ9ImludHJvLXRleHQiPgogICAgICAgICAgICAKICAgICAgICA8c3BhbiBjbGFzcz0iIiBpZD0icGFyZW50LWZpZWxkbmFtZS1kZXNjcmlwdGlvbiI+CiAgICAgICAgICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiDigJQgd2hhdCB3ZSBkbwogICAgICAgIDwvc3Bhbj4KICAgIAogICAgICAgIDwvaDI+CgogICAgICAgIAoKICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSIiIGlkPSJwYXJlbnQtZmllbGRuYW1lLXRleHQiPgogICAgICAgICAgICA8dWw+DQo8bGk+VGhlIEZTRiBhZHZvY2F0ZXMgZm9yIGZyZWUgc29mdHdhcmUgaWRlYWxzIGFzIG91dGxpbmVkIGluIHRoZSA8YSBocmVmPSIvcGhpbG9zb3BoeS9mcmVlLXN3Lmh0bWwiPkZyZWUgU29mdHdhcmUgRGVmaW5pdGlvbjwvYT4sIHdvcmtzIGZvciBhZG9wdGlvbiBvZiBmcmVlIHNvZnR3YXJlIGFuZCBmcmVlIG1lZGlhIGZvcm1hdHMsIGFuZCBvcmdhbml6ZXMgPGEgaHJlZj0iL2NhbXBhaWducy8iPmFjdGl2aXN0IGNhbXBhaWduczwvYT4gYWdhaW5zdCB0aHJlYXRzIHRvIHVzZXIgZnJlZWRvbSBsaWtlIDxhIGhyZWY9Imh0dHA6Ly93aW5kb3dzN3NpbnMub3JnLyI+V2luZG93cyA3PC9hPiwgQXBwbGUncyA8YSBocmVmPSIvaXBob25lIj5pUGhvbmU8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3Mvcm1zL21hYy1vc3gtbWlzdGFrZXMtYW5kLW1hbGZlYXR1cmVzIj5PUyBYPC9hPiwgPGEgaHJlZj0iaHR0cDovL2RlZmVjdGl2ZWJ5ZGVzaWduLm9yZy8iPkRSTSBvbiBtdXNpYywgZWJvb2tzIGFuZCBtb3ZpZXM8L2E+LCBhbmQgPGEgaHJlZj0iaHR0cDovL2VuZHNvZnRwYXRlbnRzLm9yZy8iPnNvZnR3YXJlIHBhdGVudHM8L2E+LjwvbGk+DQoNCjxsaT5XZSBwcm9tb3RlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9kaXN0cm9zLyI+Y29tcGxldGVseSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbnMgb2YgR05VL0xpbnV4PC9hPiwgYW5kIGFkdm9jYXRlIHRoYXQgdXNlcnMgb2YgdGhlIEdOVS9MaW51eCBvcGVyYXRpbmcgc3lzdGVtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9kaXN0cm9zL2ZyZWUtc3lzdGVtLWRpc3RyaWJ1dGlvbi1ndWlkZWxpbmVzLmh0bWwiPnN3aXRjaCB0byBhIGRpc3RyaWJ1dGlvbiB3aGljaCByZXNwZWN0cyB0aGVpciBmcmVlZG9tPC9hPi48L2xpPg0KDQo8bGk+V2UgZHJpdmUgZGV2ZWxvcG1lbnQgb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZyI+R05VIG9wZXJhdGluZyBzeXN0ZW08L2E+IGFuZCA8YSBocmVmPSIvY2FtcGFpZ25zL3ByaW9yaXR5Lmh0bWwiPm1haW50YWluIGEgbGlzdCBvZiBoaWdoLXByaW9yaXR5IGZyZWUgc29mdHdhcmUgcHJvamVjdHM8L2E+IHRvIHByb21vdGUgcmVwbGFjZW1lbnRzIGZvciBjb21tb24gcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zLjwvbGk+DQoNCjxsaT5XZSBidWlsZCBhbmQgdXBkYXRlIDxhIGhyZWY9Ii9yZXNvdXJjZXMvIj5yZXNvdXJjZXMgdXNlZnVsIGZvciB0aGUgZnJlZSBzb2Z0d2FyZSBjb21tdW5pdHk8L2E+IGxpa2UgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy8iPkZyZWUgU29mdHdhcmUgRGlyZWN0b3J5PC9hPiwgYW5kIHRoZSA8YSBocmVmPSIvam9icyI+ZnJlZSBzb2Z0d2FyZSBqb2JzPC9hPiBib2FyZC4gV2UgYWxzbyBwcm92aWRlIDxhIGhyZWY9Ii9saWNlbnNpbmcvbGljZW5zZXMvIj5saWNlbnNlcyBmb3IgZnJlZSBzb2Z0d2FyZSBkZXZlbG9wZXJzPC9hPiB0byBzaGFyZSB0aGVpciBjb2RlLCBpbmNsdWRpbmcgdGhlIDxhIGhyZWY9Ii9saWNlbnNpbmcvbGljZW5zZXMvZ3BsLmh0bWwiPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9hPi48L2xpPg0KDQo8L3VsPg0KDQo8cCBjbGFzcz0iYyI+PGEgaHJlZj0iL3dvcmtpbmctdG9nZXRoZXIvIj48aW1nIHNyYz0iL3N0YXRpYy9ub3N2bi93b3JraW5nL3cvZGVzZXJ2ZS5wbmciIGFsdD0iIiAvPjwvYT48L3A+IAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIAogICAgCgoKICA8ZGl2IGlkPSJmc3MiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGUvY3JlYXRlJmFtcDtyZXNldD0xJmFtcDtnaWQ9MzEiIG1ldGhvZD0icG9zdCI+CjxoMz5TaWduIHVwIHRvZGF5IHRvIHJlY2VpdmUgdGhlIG1vbnRobHkgbmV3c2xldHRlciwgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9mcmVlLXNvZnR3YXJlLXN1cHBvcnRlci8iPkZyZWUgU29mdHdhcmUgU3VwcG9ydGVyPC9hPjwvaDM+Cgo8cD48c21hbGw+RW50ZXIgeW91ciBlbWFpbCBhZGRyZXNzIChpZS4gbWF0dEBleGFtcGxlLmNvbSk8L3NtYWxsPjwvcD4KCjxwPjxpbnB1dCBpZD0iZnJtRW1haWwiIHR5cGU9InRleHQiIG5hbWU9ImVtYWlsLVByaW1hcnkiIHNpemU9IjE4IiBtYXhsZW5ndGg9IjgwIiAvPjwvcD4KPHA+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iX3FmX0VkaXRfbmV4dCIgdmFsdWU9IlN1YnNjcmliZSBtZSIgLz48L3A+CjxkaXY+PGlucHV0IG5hbWU9InBvc3RVUkwiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ3JvdXBbMjVdIiB2YWx1ZT0iMSIgLz4KPGlucHV0IG5hbWU9ImNhbmNlbFVSTCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGU/cmVzZXQ9MSZhbXA7Z2lkPTMxIiAvPgo8aW5wdXQgbmFtZT0iX3FmX2RlZmF1bHQiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IkVkaXQ6Y2FuY2VsIiAvPgo8L2Rpdj4KPC9mb3JtPjwvZGl2PgoKCjxkaXYgaWQ9InF1b3RlLWJveCI+CiA8YmxvY2txdW90ZT48YSBocmVmPSIvYXBwZWFsLzIwMDkvbWFrby8iPkEgc3Ryb25nIGZyZWUgc29mdHdhcmUgbW92ZW1lbnQgZm9jdXNlZCBvbiB0aGUgcHJpbmNpcGxlZCBpc3N1ZXMgb2Ygc29mdHdhcmUgZnJlZWRvbSAmbWRhc2g7IGFuZCBhIHN0cm9uZyBGU0YgaW4gcGFydGljdWxhciAmbWRhc2g7IHdpbGwgZGV0ZXJtaW5lIHdoYXQgZnJlZWRvbXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiBjb21wdXRlciB1c2VycyBlbmpveS4gQXQgc3Rha2UgaXMgbm8gbGVzcyB0aGFuIHRoZSBuZXh0IGdlbmVyYXRpb24ncyBhdXRvbm9teS48L2E+PC9ibG9ja3F1b3RlPgoKICA8cD4mbWRhc2g7IDxhIGhyZWY9Ii9hcHBlYWwvMjAwOS9tYWtvLyI+QmVuamFtaW4gTWFrbyBIaWxsPC9hPiwgd3JpdGVyLCB0ZWNobm9sb2dpc3QgYW5kIEZTRiBib2FyZCBtZW1iZXI8L3A+CjwvZGl2PgoKICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxkaXYgaWQ9InZpZXdsZXQtYmVsb3ctY29udGVudCI+CgoKCgoKICAgIAoKPC9kaXY+CiAgICAgICAgPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj4KCgoJIDxkaXYgaWQ9ImZzZi1zaWRlYmFyIiBjbGFzcz0ieXVpLWIgdmlzdWFsTm9QcmludCI+CgkgICAgPGFzaWRlPgoJPGRpdiBpZD0ic2VhcmNoIj4KCgkgICAgICA8Zm9ybSBpZD0ic2lkZXNlYXJjaCIgbmFtZT0ic2VhcmNoZm9ybSIgYWN0aW9uPSJodHRwOi8vd3d3LmZzZi5vcmcvc2VhcmNoIj4KCQkgIDxwPjxpbnB1dCBuYW1lPSJTZWFyY2hhYmxlVGV4dCIgdGFiaW5kZXg9IjEiIHR5cGU9InRleHQiIHNpemU9IjMwIiB0aXRsZT0iU2VhcmNoIFNpdGUiIC8+PC9wPgoJCSAgPHA+PGlucHV0IGNsYXNzPSJzZWFyY2hCdXR0b24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlYXJjaCIgLz48L3A+CgkgICAgICA8L2Zvcm0+CgoJPC9kaXY+CgoKCQkgICAgICA8ZGl2IGNsYXNzPSJ2aXN1YWxQYWRkaW5nIj4KCQkgICAgICAgIAoJCSAgICAgICAgICAKPGRpdiBpZD0icG9ydGxldHdyYXBwZXItNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE3Mzc1NzA3MDZmNzI3NDY1NzIiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNzM3NTcwNzA2ZjcyNzQ2NTcyIj48ZGl2IGNsYXNzPSJwb3J0bGV0U3RhdGljVGV4dCBwb3J0bGV0LXN0YXRpYy1zdXBwb3J0ZXIiPjxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPg0KPGg1PlNpZ24gdXA8L2g1Pg0KPGZvcm0gYWN0aW9uPSJodHRwczovL2NybS5mc2Yub3JnL2Npdmljcm0vcHJvZmlsZS9jcmVhdGUmYW1wO3Jlc2V0PTEmYW1wO2dpZD0zMSIgbWV0aG9kPSJwb3N0Ij4NCjxwPlNpZ24gdXAgdG9kYXkgdG8gcmVjZWl2ZSB0aGUgbW9udGhseSBuZXdzbGV0dGVyLCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2ZyZWUtc29mdHdhcmUtc3VwcG9ydGVyLyI+RnJlZSBTb2Z0d2FyZSBTdXBwb3J0ZXI8L2E+PC9wPg0KDQo8cD48c21hbGw+RW50ZXIgeW91ciBlbWFpbCBhZGRyZXNzIChpZS4gbWF0dEBleGFtcGxlLmNvbSk8L3NtYWxsPjwvcD4NCg0KPHA+PGlucHV0IGlkPSJmcm1FbWFpbCIgdHlwZT0idGV4dCIgbmFtZT0iZW1haWwtUHJpbWFyeSIgc2l6ZT0iMTgiIG1heGxlbmd0aD0iODAiIC8+PC9wPg0KPHA+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iX3FmX0VkaXRfbmV4dCIgdmFsdWU9IlN1YnNjcmliZSBtZSIgLz48L3A+DQo8ZGl2PjxpbnB1dCBuYW1lPSJwb3N0VVJMIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJncm91cFsyNV0iIHZhbHVlPSIxIiAvPg0KPGlucHV0IG5hbWU9ImNhbmNlbFVSTCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly9jcm0uZnNmLm9yZy9jaXZpY3JtL3Byb2ZpbGU/cmVzZXQ9MSZhbXA7Z2lkPTMxIiAvPg0KPGlucHV0IG5hbWU9Il9xZl9kZWZhdWx0IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJFZGl0OmNhbmNlbCIgLz4NCjwvZGl2Pg0KPC9mb3JtPjwvZGl2PjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTY2NzM2NjJkNmU2NTc3NzMyZDcyNzM3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NjczNjYyZDZlNjU3NzczMmQ3MjczNzMiPjxkaXYgY2xhc3M9InBvcnRsZXRTdGF0aWNUZXh0IHBvcnRsZXQtc3RhdGljLWZzZi1uZXdzLXJzcyI+PHAgc3R5bGU9ImZsb2F0OiByaWdodDsiPjxhIGhyZWY9Ii9zdGF0aWMvZnNmb3JnL3Jzcy9uZXdzLnhtbCIgdGl0bGU9IlN1YnNjcmliZSB0byBhbiBSU1MgZmVlZCBvZiBGU0YgbmV3cyI+PGltZyBzcmM9Ii9zdGF0aWMvZnNmb3JnL2Nzcy9pbWcvcnNzLmdpZiIgYWx0PSJSU1MgZmVlZCIgLz48L2E+PC9wPjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTZlNjU3NzczIiBjbGFzcz0icG9ydGxldFdyYXBwZXIga3NzYXR0ci1wb3J0bGV0aGFzaC03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTZlNjU3NzczIj48ZGwgY2xhc3M9InBvcnRsZXQgcG9ydGxldE5ld3MiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KCiAgICA8ZHQgY2xhc3M9InBvcnRsZXRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0VG9wTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzIiBjbGFzcz0idGlsZSI+TmV3czwvYT4KICAgICAgICA8c3BhbiBjbGFzcz0icG9ydGxldFRvcFJpZ2h0Ij48L3NwYW4+CiAgICA8L2R0PgoKICAgIAogICAgPGRkIGNsYXNzPSJwb3J0bGV0SXRlbSBvZGQiPgoKICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvbmV3cy9mc2YtYW5ub3VuY2VzLXdpbm5lci1vZi1yZXN0cmljdGVkLWJvb3Qtd2ViY29taWMtY29udGVzdCIgY2xhc3M9InRpbGUiIHRpdGxlPSJXaXRoIG92ZXIgMzAsMDAwIHNpZ25hdHVyZXMgdG8gb3VyIHN0YXRlbWVudCBhbmQgb3ZlciBhIGRvemVuIGhpZ2gtcXVhbGl0eSBzdWJtaXNzaW9ucyB0byBvdXIgY29udGVzdCwgSSdtIGNvbmZpZGVudCBvdXIgbWVzc2FnZSB0aGF0IFJlc3RyaWN0ZWQgQm9vdCBpcyBhIG1pc3Rha2UgaGFzIHRoZSBhdHRlbnRpb24gb2YgTWljcm9zb2Z0IGFuZCBjb21wdXRlci1tYWtlcnMgYWxpa2UuIE5vdyB3ZSBuZWVkIHRha2UgdGhlIG5leHQgc3RlcCBvZiB0dXJuaW5nIHRoaXMgc3VwcG9ydCBpbnRvIHRhbmdpYmxlIHJlc3VsdHMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJOZXdzIEl0ZW0iIC8+CiAgICAgICAgICAgIEZTRiBhbm5vdW5jZXMgd2lubmVyIG9mIFJlc3RyaWN0ZWQgQm9vdCB3ZWJjb21pYyBjb250ZXN0CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0SXRlbURldGFpbHMiPkp1bCAwNSwgMjAxMjwvc3Bhbj4KICAgICAgICA8L2E+CiAgICA8L2RkPgogICAgCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gZXZlbiI+CgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzL2ZzZi1wdWJsaXNoZXMtd2hpdGVwYXBlci13aXRoLXJlY29tbWVuZGF0aW9ucy1mb3ItZnJlZS1vcGVyYXRpbmctc3lzdGVtLWRpc3RyaWJ1dGlvbnMtY29uc2lkZXJpbmctc2VjdXJlLWJvb3QiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iSW4gdGhlIHBhcGVyLCB0aGUgRlNGIG91dGxpbmVzIHRoZSBkaWZmaWN1bHRpZXMgU2VjdXJlIEJvb3QgcG9zZXMgZm9yIHRoZSBmcmVlIHNvZnR3YXJlIG1vdmVtZW50IGFuZCBmcmVlIHNvZnR3YXJlIGFkb3B0aW9uLCB3YXJucyBhZ2FpbnN0IHRoZSB0aHJlYXQgb2YgUmVzdHJpY3RlZCBCb290LCBhbmQgZ2l2ZXMgcmVjb21tZW5kYXRpb25zIGZvciBob3cgZnJlZSBzb2Z0d2FyZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBjYW4gYmVzdCBhZGRyZXNzIHRoZSBpc3N1ZXMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJOZXdzIEl0ZW0iIC8+CiAgICAgICAgICAgIEZTRiBwdWJsaXNoZXMgd2hpdGVwYXBlciB3aXRoIHJlY29tbWVuZGF0aW9ucyBmb3IgZnJlZSBvcGVyYXRpbmcgc3lzdGVtIGRpc3RyaWJ1dGlvbnMgY29uc2lkZXJpbmcgU2VjdXJlIEJvb3QKICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRJdGVtRGV0YWlscyI+SnVuIDMwLCAyMDEyPC9zcGFuPgogICAgICAgIDwvYT4KICAgIDwvZGQ+CiAgICAKCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRGb290ZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9uZXdzIj4KICAgICAgICAgIE1vcmUgbmV3cyZoZWxsaXA7CiAgICAgICAgPC9hPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+CiAgICAKPC9kbD48L2Rpdj4KCjxkaXYgaWQ9InBvcnRsZXR3cmFwcGVyLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2MjZjNmY2NzczMmQ3MjczNzMiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2MjZjNmY2NzczMmQ3MjczNzMiPjxkaXYgY2xhc3M9InBvcnRsZXRTdGF0aWNUZXh0IHBvcnRsZXQtc3RhdGljLWZzZi1ibG9ncy1yc3MiPjxwIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij48YSBocmVmPSIvc3RhdGljL2ZzZm9yZy9yc3MvYmxvZ3MueG1sIiB0aXRsZT0iU3Vic2NyaWJlIHRvIGFuIFJTUyBmZWVkIG9mIEZTRiBibG9ncyI+PGltZyBzcmM9Ii9zdGF0aWMvZnNmb3JnL2Nzcy9pbWcvcnNzLmdpZiIgYWx0PSJSU1MgZmVlZCIgLz48L2E+PC9wPjwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGlkPSJwb3J0bGV0d3JhcHBlci03MDZjNmY2ZTY1MmU3MjY5Njc2ODc0NjM2ZjZjNzU2ZDZlMGE2MzZmNmU3NDY1Nzg3NDBhMmY2NjczNjYwYTcyNjU2MzY1NmU3NDJkNjI2YzZmNjc3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE3MjY1NjM2NTZlNzQyZDYyNmM2ZjY3NzMiPjxkbCBjbGFzcz0icG9ydGxldCBwb3J0bGV0Q29sbGVjdGlvbiBwb3J0bGV0LWNvbGxlY3Rpb24tcmVjZW50LWJsb2dzIj4KCiAgICA8ZHQgY2xhc3M9InBvcnRsZXRIZWFkZXIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0VG9wTGVmdCI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ibG9ncy9yZWNlbnQtYmxvZy1wb3N0cyI+CiAgICAgICAgICAgIDxzcGFuPlJlY2VudCBibG9nczwvc3Bhbj4KICAgICAgICA8L2E+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BSaWdodCI+PC9zcGFuPgogICAgPC9kdD4KCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gb2RkIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvY29tbXVuaXR5L2dudS1zcG90bGlnaHQtd2l0aC1rYXJsLWJlcnJ5LWp1bmUtMjAxMiIgY2xhc3M9InRpbGUiIHRpdGxlPSJOZXcgR05VIHJlbGVhc2VzIGFzIG9mIEp1bmUgMjYsIDIwMTIiPgogICAgICAgICAgICA8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3LmZzZi5vcmcvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL25ld3NpdGVtX2ljb24uZ2lmIiBhbHQ9IkJsb2cgRW50cnkiIC8+CiAgICAgICAgICAgIEdOVSBTcG90bGlnaHQgd2l0aCBLYXJsIEJlcnJ5IChKdW5lIDIwMTIpCiAgICAgICAgICAgIAogICAgICAgIDwvYT4KICAgIDwvZGQ+CiAgICAKICAgIAogICAgPGRkIGNsYXNzPSJwb3J0bGV0SXRlbSBldmVuIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvZ251LXByZXNzL2ZzZnMtbmV3LW9wZXJhdGlvbnMtYXNzaXN0YW50IiBjbGFzcz0idGlsZSIgdGl0bGU9IkhlbGxvLCBJJ20gQ2hyaXNzaWUgSGltZXMsIHRoZSBuZXcgb3BlcmF0aW9ucyBhc3Npc3RhbnQsIGFuZCBJJ20gZXhjaXRlZCB0byBvZmZpY2lhbGx5IGJlIHdpdGggdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gSSBoYW5kbGUgc2FsZXMsIGRvbmF0aW9ucywgYW5kIGdlbmVyYWwgb2ZmaWNlIG9wZXJhdGlvbnMuIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBGU0YncyBuZXcgb3BlcmF0aW9ucyBhc3Npc3RhbnQKICAgICAgICAgICAgCiAgICAgICAgPC9hPgogICAgPC9kZD4KICAgIAogICAgCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRJdGVtIG9kZCI+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2Jsb2dzL2NvbW11bml0eS9raWxsLWFjdGEiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iS2lsbCBBQ1RBIG9uY2UgKGFuZCBob3BlZnVsbHkpIGZvciBhbGwhIj4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBLaWxsIEFDVEEKICAgICAgICAgICAgCiAgICAgICAgPC9hPgogICAgPC9kZD4KICAgIAogICAgCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRJdGVtIGV2ZW4iPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ibG9ncy9saWNlbnNpbmcvZ251LWdwbHYzLXR1cm5zLTUiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyB0dXJucyBmaXZlOyBFYmVuIE1vZ2xlbiBzdGF0ZXMsICZxdW90O0dQTHYzIGFudGljaXBhdGVkIHRoZSBpc3N1ZXMgb2YgdG9kYXkgYW5kIHdpbGwgaGVscCB1cyBkZWFsIHdpdGggdGhlIGNoYWxsZW5nZXMgb2YgdG9tb3Jyb3cuJnF1b3Q7Ij4KICAgICAgICAgICAgPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5mc2Yub3JnL3N0YXRpYy9mc2ZvcmcvY3NzL2ltZy9uZXdzaXRlbV9pY29uLmdpZiIgYWx0PSJCbG9nIEVudHJ5IiAvPgogICAgICAgICAgICBHTlUgR1BMdjMgdHVybnMgNQogICAgICAgICAgICAKICAgICAgICA8L2E+CiAgICA8L2RkPgogICAgCgogICAgPGRkIGNsYXNzPSJwb3J0bGV0Rm9vdGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0icG9ydGxldEJvdHRvbUxlZnQiPjwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvYmxvZ3MvcmVjZW50LWJsb2ctcG9zdHMiPgogICAgICAgICAgICBNb3JlJmhlbGxpcDsKICAgICAgICA8L2E+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+Cgo8L2RsPgo8L2Rpdj4KCjxkaXYgaWQ9InBvcnRsZXR3cmFwcGVyLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjY3MzY2MmQ2NTc2NjU2ZTc0NzMyZDcyNzM3MyIgY2xhc3M9InBvcnRsZXRXcmFwcGVyIGtzc2F0dHItcG9ydGxldGhhc2gtNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NjczNjYyZDY1NzY2NTZlNzQ3MzJkNzI3MzczIj48ZGl2IGNsYXNzPSJwb3J0bGV0U3RhdGljVGV4dCBwb3J0bGV0LXN0YXRpYy1mc2YtZXZlbnRzLXJzcyI+PHAgc3R5bGU9ImZsb2F0OiByaWdodDsiPjxhIGhyZWY9Ii9zdGF0aWMvZnNmb3JnL3Jzcy9ldmVudHMueG1sIiB0aXRsZT0iU3Vic2NyaWJlIHRvIGFuIFJTUyBmZWVkIG9mIEZTRiBldmVudHMiPjxpbWcgc3JjPSIvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL3Jzcy5naWYiIGFsdD0iUlNTIGZlZWQiIC8+PC9hPjwvcD48L2Rpdj4KCjwvZGl2PgoKPGRpdiBpZD0icG9ydGxldHdyYXBwZXItNzA2YzZmNmU2NTJlNzI2OTY3Njg3NDYzNmY2Yzc1NmQ2ZTBhNjM2ZjZlNzQ2NTc4NzQwYTJmNjY3MzY2MGE2NTc2NjU2ZTc0NzMiIGNsYXNzPSJwb3J0bGV0V3JhcHBlciBrc3NhdHRyLXBvcnRsZXRoYXNoLTcwNmM2ZjZlNjUyZTcyNjk2NzY4NzQ2MzZmNmM3NTZkNmUwYTYzNmY2ZTc0NjU3ODc0MGEyZjY2NzM2NjBhNjU3NjY1NmU3NDczIj4KPGRsIGNsYXNzPSJwb3J0bGV0IHBvcnRsZXRFdmVudHMiPgoKICAgIDxkdCBjbGFzcz0icG9ydGxldEhlYWRlciI+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BMZWZ0Ij48L3NwYW4+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5mc2Yub3JnL2V2ZW50cyIgY2xhc3M9InRpbGUiPgogICAgICAgICAgICBVcGNvbWluZyBFdmVudHMKICAgICAgICA8L2E+CiAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRUb3BSaWdodCI+PC9zcGFuPgogICAgPC9kdD4KCiAgICAKICAgIDxkZCBjbGFzcz0icG9ydGxldEl0ZW0gb2RkIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZXZlbnRzLzIwMTIwNzI3LWNhcmFjYXMiIGNsYXNzPSJ0aWxlIiB0aXRsZT0iQ2FyYWNhcywgVmVuZXp1ZWxhIC0gU2FsYSBQbGVuYXJpYSBkZWwgQ2VudHJvIFNpbcOzbiBCb2zDrXZhci4gRWRpZi4gQW5hdWNvIFBhcnF1ZSBDZW50cmFsDQoiPgogICAgICAgICAgICA8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3LmZzZi5vcmcvc3RhdGljL2ZzZm9yZy9jc3MvaW1nL25ld3NpdGVtX2ljb24uZ2lmIiBhbHQ9IkV2ZW50IiAvPgogICAgICAgICAgICAiRWwgc29mdHdhcmUgbGlicmUgZW4gbGEgw6l0aWNhIHkgZW4gbGEgcHLDoWN0aWNhIgogICAgICAgIDwvYT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBvcnRsZXRJdGVtRGV0YWlscyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxzcGFuPkp1bCAyNywgMjAxMiAxMDowMCBBTSAtIDEyOjAwIFBNPC9zcGFuPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8c3Bhbj4gJm1kYXNoOwogICAgICAgICAgICAgICAgICAgIENhcmFjYXMsIFZlbmV6dWVsYQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3NwYW4+CiAgICA8L2RkPgogICAgCgogICAgPGRkIGNsYXNzPSJwb3J0bGV0Rm9vdGVyIj4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmZzZi5vcmcvZXZlbnRzL2FnZ3JlZ2F0b3IvcHJldmlvdXMiIGNsYXNzPSJ0aWxlIj4KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICBQcmV2aW91cyBldmVudHMmaGVsbGlwOwogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9hPgogICAgPC9kZD4KCiAgICA8ZGQgY2xhc3M9InBvcnRsZXRGb290ZXIiPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9ldmVudHMiIGNsYXNzPSJ0aWxlIj4KICAgICAgICAgICAgICAgIFVwY29taW5nIGV2ZW50cyZoZWxsaXA7CiAgICAgICAgPC9hPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tTGVmdCI+PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwb3J0bGV0Qm90dG9tUmlnaHQiPjwvc3Bhbj4KICAgIDwvZGQ+CjwvZGw+Cgo8L2Rpdj4KCgoKCgkJICAgICAgICAKCQkgICAgICAgICZuYnNwOwoJCSAgICAgIDwvZGl2PgoJICAgICAgCgoJPC9hc2lkZT4KCTwvZGl2PgoKCgoJPC9kaXY+PC9kaXY+CgoJPGRpdiBjbGFzcz0idmlzdWFsTm9QcmludCIgaWQ9Im1pc3Npb24tc3RhdGVtZW50Ij4KCgkgIDxwIGNsYXNzPSJjIj5UaGUgRlNGIGlzIGEgY2hhcml0eSB3aXRoIGEgd29ybGR3aWRlIG1pc3Npb24gdG8gYWR2YW5jZSBzb2Z0d2FyZSBmcmVlZG9tICZtZGFzaDsgPGEgaHJlZj0iL2Fib3V0Ij5sZWFybiBhYm91dCBvdXIgaGlzdG9yeSBhbmQgd29yay48L2E+PC9wPgoKCTwvZGl2PgoKCTxkaXYgaWQ9ImZ0IiBjbGFzcz0idmlzdWFsTm9QcmludCI+Cgk8Zm9vdGVyPgoJPGRpdiBpZD0iZnQtaW5uZXIiIGNsYXNzPSJjdXN0b20tZG9jIj4KCgk8ZGl2IGlkPSJjb3B5cmlnaHQiPgoJIAoKCSAgPHAgY2xhc3M9ImMiPkNvcHlyaWdodCAmY29weTsgMjAwNC0yMDEyIDxhIGhyZWY9Ii9hYm91dC9jb250YWN0Lmh0bWwiIHRpdGxlPSJGaW5kIG91dCBob3cgdG8gY29udGFjdCB1cyI+RnJlZQoJU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jPC9hPi48L3A+CgoJICA8cD5UaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgYSA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvIj5DcmVhdGl2ZQoJICBDb21tb25zIEF0dHJpYnV0aW9uLU5vIERlcml2YXRpdmUgV29ya3MgMy4wIGxpY2Vuc2UgKG9yIGxhdGVyCgkgIHZlcnNpb24pPC9hPiAmbWRhc2g7IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlLWxpc3QuaHRtbCNPcGluaW9uTGljZW5zZXMiPldoeSB0aGlzIGxpY2Vuc2U/PC9hPi48L3A+IAoKCTwvZGl2PgoJPGRpdiBpZD0iZnNmLWxpbmtzLW91dGVyIj4KCTxkaXYgY2xhc3M9Inl1aS1nIHZpc3VhbE5vUHJpbnQgbm9Nb2JpbGUiIGlkPSJmc2YtbGlua3MiPgoJPGRpdj4KICAgIDxuYXY+CiAgICA8ZGl2IGNsYXNzPSJ5dWktZyBmaXJzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0ieXVpLXUgZmlyc3QiIGlkPSJzaXRlbWFwLTEiPgoKICAgICAgICAgIDxwIGNsYXNzPSJuZXRzY2FwZTQiPjxhIGhyZWY9IiNmdCI+U2tpcCBzaXRlbWFwPC9hPiBvciA8YSBocmVmPSIjc2l0ZW1hcC0yIj5za2lwIHRvIGxpY2Vuc2luZyBpdGVtczwvYT48L3A+CgogICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9hYm91dC8iPkFib3V0PC9hPgoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+PGEgaHJlZj0iL2Fib3V0L2xlYWRlcnNoaXAuaHRtbCI+TGVhZGVyc2hpcDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9Ii9hYm91dC9zdGFmZiI+U3RhZmY8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBocmVmPSIvYWJvdXQvY29udGFjdC5odG1sIj5Db250YWN0IFVzPC9hPjwvbGk+CiAgICAgICAgPC91bD48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vbXkuZnNmLm9yZy9kb25hdGUvcHJpdmFjeXBvbGljeS5odG1sIj5Qcml2YWN5IFBvbGljeTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvY2FtcGFpZ25zIj5DYW1wYWlnbnM8L2E+CiAgICAgICAgPHVsPgoKICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3dpbmRvd3M3c2lucy5vcmcvIj5XaW5kb3dzIDcgU2luczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvIj5HTlUgT3BlcmF0aW5nIFN5c3RlbTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGVmZWN0aXZlYnlkZXNpZ24ub3JnLyI+RGVmZWN0aXZlIGJ5IERlc2lnbjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZW5kc29mdHBhdGVudHMub3JnLyI+RW5kIFNvZnR3YXJlIFBhdGVudHM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3BsYXlvZ2cub3JnLyI+UGxheU9nZyAmbWRhc2g7IGZyZWUgbWVkaWEgZm9ybWF0czwvYT48L2xpPgoKICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2xpYnJlcGxhbmV0Lm9yZy8iPkNvbm5lY3Qgd2l0aCBmcmVlIHNvZnR3YXJlIHVzZXJzPC9hPjwvbGk+CiAgICAgIDwvdWw+PC9saT4KICAgICAgPC91bD4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJ5dWktdSIgaWQ9InNpdGVtYXAtMiI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI3NpdGVtYXAtMyI+U2tpcCB0byBnZW5lcmFsIGl0ZW1zPC9hPjwvcD4KCiAgICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9saWNlbnNpbmciPkxpY2Vuc2luZzwvYT4KICAgICAgICA8dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9saWNlbnNpbmcvZWR1Y2F0aW9uIj5FZHVjYXRpb248L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL2xpY2Vuc2luZy9saWNlbnNlcyI+TGljZW5zZXM8L2E+CiAgICAgICAgPHVsPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwiPkdOVSBHUEw8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLmh0bWwiPkdOVSBBR1BMPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLmh0bWwiPkdOVSBMR1BMPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9mZGwuaHRtbCI+R05VIEZETDwvYT48L2xpPjwvdWw+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC1mYXEuaHRtbCI+TGljZW5zaW5nIEZBUTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvbGljZW5zaW5nL2NvbXBsaWFuY2UiPkNvbXBsaWFuY2U8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC1ob3d0by5odG1sIj5Ib3cgdG8gdXNlIEdOVSBsaWNlbnNlcyBmb3IgeW91ciBvd24gc29mdHdhcmU8L2E+PC9saT48L3VsPjwvbGk+CgogICAgICA8L3VsPgoKICAgIAogICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Inl1aS1nIGZpcnN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ5dWktdSBmaXJzdCIgaWQ9InNpdGVtYXAtMyI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI3NpdGVtYXAtNCI+U2tpcCB0byBwaGlsb3NvcGhpY2FsIGl0ZW1zPC9hPjwvcD4KICAgIAogICAgICA8dWw+CgogICAgICA8bGk+PGEgaHJlZj0iL25ld3MvIj5MYXRlc3QgTmV3czwvYT48dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9ldmVudHMvIj5VcGNvbWluZyBFdmVudHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii9ibG9ncy8iPkZTRiBCbG9nczwvYT48L2xpPjwvdWw+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii92b2x1bnRlZXIiPlZvbHVudGVlcmluZyBhbmQgaW50ZXJuc2hpcHM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Ii9yZXNvdXJjZXMvaHciPkhhcmR3YXJlIERhdGFiYXNlPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmciPkZyZWUgU29mdHdhcmUgRGlyZWN0b3J5PC9hPjwvbGk+CgogICAgICAgIDxsaT48YSBocmVmPSIvcmVzb3VyY2VzLyI+RnJlZSBTb2Z0d2FyZSBSZXNvdXJjZXM8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9wYXRyb24uZnNmLm9yZyI+UGF0cm9uczwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iL2Fzc29jaWF0ZS8iPkFzc29jaWF0ZSBNZW1iZXJzPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIvYXNzb2NpYXRlL2FjY291bnQvIj5NeSBBY2NvdW50PC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibm9yaWdodCI+PGEgaHJlZj0iL2Fib3V0L2NvbnRhY3QuaHRtbCI+Q29udGFjdCBVczwvYT48L2xpPgogICAgICA8L3VsPgoKICAgICAgCiAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ5dWktdSIgaWQ9InNpdGVtYXAtNCI+CgogICAgICAgICAgPHAgY2xhc3M9Im5ldHNjYXBlNCI+PGEgaHJlZj0iI2Z0Ij5Ta2lwIGxpc3Q8L2E+PC9wPgoKICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvbmF0ZS5mc2Yub3JnIj5Eb25hdGUgdG8gdGhlIEZTRjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvamZiIj5Kb2luIHRoZSBGU0Y8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5LyI+UGhpbG9zb3BoeTwvYT48dWw+CiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L2ZyZWUtc3cuaHRtbCI+VGhlIEZyZWUgU29mdHdhcmUgRGVmaW5pdGlvbjwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9wcmFnbWF0aWMuaHRtbCI+Q29weWxlZnQ6IFByYWdtYXRpYyBJZGVhbGlzbTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9mcmVlLWRvYy5odG1sIj5GcmVlIFNvZnR3YXJlIGFuZCBGcmVlIE1hbnVhbHM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvc2VsbGluZy5odG1sIj5TZWxsaW5nIEZyZWUgU29mdHdhcmU8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvZnMtbW90aXZlcy5odG1sIj5Nb3RpdmVzIGZvciBXcml0aW5nIEZyZWUgU29mdHdhcmU8L2E+PC9saT4KCiAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L3JpZ2h0LXRvLXJlYWQuaHRtbCI+VGhlIFJpZ2h0IFRvIFJlYWQ8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvb3Blbi1zb3VyY2UtbWlzc2VzLXRoZS1wb2ludC5odG1sIj5XaHkgT3BlbiBTb3VyY2UgTWlzc2VzIHRoZSBQb2ludCBvZiBGcmVlIFNvZnR3YXJlPC9hPjwvbGk+PC91bD48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvc2l0ZW1hcCI+Q29tcGxldGUgc2l0ZW1hcDwvYT48L2xpPgogICAgICA8L3VsPgogICAgICAKICAgIDwvZGl2PgogICAgPC9kaXY+CjwvbmF2PgoKPC9kaXY+Cgk8L2Rpdj4KCgk8cCBpZD0iZnNmcyIgY2xhc3M9ImMgdmlzdWFsTm9QcmludCBub01vYmlsZSI+PHNtYWxsPlRoZSBGU0YgYWxzbyBoYXMgc2lzdGVyIG9yZ2FuaXphdGlvbnMgaW4gPGEgaHJlZj0iaHR0cDovL3d3dy5mc2ZmcmFuY2Uub3JnL2luZGV4LmVuLmh0bWwiPkZyYW5jZTwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmbGEub3JnLyI+TGF0aW4gQW1lcmljYTwvYT4sIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmZXVyb3BlLm9yZyI+RXVyb3BlPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL2ZzZi5vcmcuaW4vIj5JbmRpYTwvYT4uPC9zbWFsbD48L3A+CgoJPC9kaXY+CgoJPC9kaXY+CgoKCgoJPC9mb290ZXI+Cgk8L2Rpdj4KCgkgICAgPCEtLQoJPHJkZjpSREYgeG1sbnM9Imh0dHA6Ly93ZWIucmVzb3VyY2Uub3JnL2NjLyIKCQkgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgoJCSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgoJPFdvcmsgcmRmOmFib3V0PSJodHRwOi8vd3d3LmZzZi5vcmcvIj4KCTxkYzp0aXRsZT5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L2RjOnRpdGxlPgoJPGRjOmRlc2NyaXB0aW9uPlRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEZTRikgaXMgYSBub25wcm9maXQgd2l0aCBhIHdvcmxkd2lkZSBtaXNzaW9uIHRvIHByb21vdGUgY29tcHV0ZXIgdXNlciBmcmVlZG9tIGFuZCB0byBkZWZlbmQgdGhlIHJpZ2h0cyBvZiBhbGwgZnJlZSBzb2Z0d2FyZSB1c2Vycy48L2RjOmRlc2NyaXB0aW9uPgoJPGxpY2Vuc2UgcmRmOnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvdXMvIiAvPgoJPC9Xb3JrPgoJPExpY2Vuc2UgcmRmOmFib3V0PSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uZC8zLjAvdXMvIj4KCTwvTGljZW5zZT4KCTwvcmRmOlJERj4KCS0tPgoKCTxkaXYgY2xhc3M9ImMgdmlzdWFsTm9QcmludCBub01vYmlsZSIgaWQ9InBvd2VyZWQtYnkiPgoKCTxoNSBjbGFzcz0ibmV0c2NhcGU0Ij5mc2Yub3JnIGlzIHBvd2VyZWQgYnk6PC9oNT4KCgk8dWw+Cgk8bGkgaWQ9InBvd2VyZWQtYnktcGxvbmUiPjxhIGhyZWY9Imh0dHA6Ly9wbG9uZS5vcmciIHRpdGxlPSJQbG9uZSBQb3dlcmVkIj5QbG9uZTwvYT48L2xpPgoJPGxpIGlkPSJwb3dlcmVkLWJ5LXpvcGUiPjxhIGhyZWY9Imh0dHA6Ly96b3BlLm9yZyIgdGl0bGU9IlBvd2VyZWQgYnkgWm9wZSI+Wm9wZTwvYT48L2xpPgoJPGxpIGlkPSJwb3dlcmVkLWJ5LXB5dGhvbiI+PGEgaHJlZj0iaHR0cDovL3B5dGhvbi5vcmciIHRpdGxlPSJQb3dlcmVkIGJ5IFB5dGhvbiI+UHl0aG9uPC9hPjwvbGk+Cgk8bGkgaWQ9InBvd2VyZWQtYnktY2l2aWNybSI+PGEgaHJlZj0iaHR0cDovL2Npdmljcm0ub3JnIiB0aXRsZT0iUG93ZXJlZCBieSBDaXZpQ1JNIj5DaXZpQ1JNPC9hPjwvbGk+Cgk8bGkgaWQ9InBvd2VyZWQtYnktaHRtbDUiPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL2h0bWwiPkhUTUw1PC9hPjwvbGk+Cgk8L3VsPgoKCTwvZGl2PgoKICAgICAgICA8cCBjbGFzcz0iYyIgc3R5bGU9Im1hcmdpbi10b3A6IDEycHg7Ij48YSBocmVmPSIvYWJvdXQvZmluYW5jaWFsIj48aW1nIHNyYz0iLy9zdGF0aWMuZnNmLm9yZy9ub3N2bi9wbG9uZTMvY2hhcml0eS80c3Rhcjg4eDMxLmdpZiIgYWx0PSJGb3VyIHN0YXIgY2hhcml0eSIgLz48L2E+PC9wPgoKICAgICAgICA8Zm9ybSBjbGFzcz0iYyIgYWN0aW9uPSIuLyIgbWV0aG9kPSJnZXQiIGlkPSJjaG9vc2UtbGFuZ3VhZ2UiPgo8cD48c2VsZWN0IG5hbWU9InNldF9sYW5ndWFnZSI+CiAgPG9wdGlvbiB2YWx1ZT0iYXIiPkFyYWJpYzwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImJlIj5CZWxhcnVzc2lhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImJnIj5CdWxnYXJpYW48L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJjYSI+Q2F0YWxhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InpoIj5DaGluZXNlPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia3ciPkNvcm5pc2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJjcyI+Q3plY2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJkYSI+RGFuaXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZW4iIHNlbGVjdGVkPSJzZWxlY3RlZCI+RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImZyIj5GcmVuY2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJkZSI+R2VybWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iZWwiPkdyZWVrPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iaGUiPkhlYnJldzwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImhpIj5IaW5kaTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Iml0Ij5JdGFsaWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iamEiPkphcGFuZXNlPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ia28iPktvcmVhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9Im5vIj5Ob3J3ZWdpYW48L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwbCI+UG9saXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0icHQiPlBvcnR1Z3Vlc2U8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJwdC1iciI+UG9ydHVndWVzZSAoQnJhemlsKTwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InJvIj5Sb21hbmlhbjwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InJ1Ij5SdXNzaWFuPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic2siPlNsb3Zhazwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9ImVzIj5TcGFuaXNoPC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0ic3YiPlN3ZWRpc2g8L29wdGlvbj4KICA8b3B0aW9uIHZhbHVlPSJ0ciI+VHVya2lzaDwvb3B0aW9uPgogIDxvcHRpb24gdmFsdWU9InVyIj5VcmR1PC9vcHRpb24+CiAgPG9wdGlvbiB2YWx1ZT0iY3kiPldlbHNoPC9vcHRpb24+Cjwvc2VsZWN0PiAmbmJzcDsgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlbGVjdCBsYW5ndWFnZSI+PC9wPgo8cD48c21hbGw+U2VuZCB5b3VyIGZlZWRiYWNrIG9uIG91ciB0cmFuc2xhdGlvbnMgYW5kIG5ldyB0cmFuc2xhdGlvbnMgb2YgcGFnZXMgdG8gPGEgaHJlZj0ibWFpbHRvOmNhbXBhaWduc0Bmc2Yub3JnIj5jYW1wYWlnbnNAZnNmLm9yZzwvYT4uPC9zbWFsbD48L3A+CjwvZm9ybT4KCgk8L2Rpdj4gCgoKCgoKCTwvYm9keT4KCTwvaHRtbD4KCgk%3D">Free Software Foundation</A> ++ <DT><A HREF="http://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free Software Foundation</A> + <DT><A HREF="http://libreplanet.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC/v78AAAAAAPLy9ABsbakA/f3+APn5+QC6ur0A6urqAEpLbQACBLQApKW3AAULuQDMzMwAGBiDAL29vQCgocsAgnzJALu82QA+PpsAAQOvAOjo6ADZ2dkAysrKALS0zwD5+foAAgKRAAYGdQD19fUADhOjAAQJyACrnqIAxMTLAOnp7gDm5uYAzczNACgobwDg2dEAQkaeAA0RkAAUFnEA0MvQAIBzgAANDYsAk5OyAOTk5ADy8vYA1dXVAD8/cADGxsYA+fn7AAMHvgBzZnQApqauAAEGuQDExMQAAAGmAAoLmgADCMQAxMTdAAwPlwD+/v4ABg7MAF5ehADg4OAA0dHRAAAAoQAYEXAAwsLCALCxwQBnadkAAQGWAPz8/ACgoLgAbm6RANvb5wDr6+sA0dHSALe3uQADB8AAzc3NAGFhbAABAZcAOTtlALi4xwAAAJoA/Pz9AAQHnwADBJcACQl4AFVa3AChl6EAAgW2ABscdAABAq4A2NjYAAAAmwDAwMoAAQKmAAcMswDR0eQAAQSxANvX2wB4aXcAAQGpAAAAkwDW1tYAAgSpACIZZAAAAaEA+vr8AKuirAACBbcA8vLyALOztgADBZYAAACcAAACpwAEA6QAAQKnAPT09QD///8AvL3UADIpigDw8PAABwWOAK6dogBub4kAiozDANLS0gAFC8gAAgW4AP39/QAAAJ0A0NDQAMHBwQDp6ewACg2RAAIFqAAKCokA+/v7AAkOnwAAAaMA7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4AXh4eHhlbikzZlooeHh4eAF4eHh4hX1JVFweInh4eHgBeHh4XmlAGXNGSB8VeHh4AXg8LhaGcV9zKg0wQF54eAF4K0NNOGthjXNCUwAMS3gBPC82iW+CCRN2Iz4wTwx4AW0GgCc5OU41VnSKTBoOiwEFTz8hHIF5RANdQVRfNIMBeBUhe0o9jB0Pcjdzc1E8AXgsB3AbUlkQRVtnhHNoeAF4i45wJCAlYjJbdYRfY3gBeDwmEn4XMToKZDd6WDx4AXh4VTsIfwt3FGpsfAR4eAF4eHgEEYhQAodXYDx4eHgBeHh4eHg8GC1HPHh4eHh4AQABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA%3D">LibrePlanet</A> + <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</A> + <DT><A HREF="http://www.h-node.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC7zrYAWYhNANjj1QA9fEcAEEwBAHTQkwAeVRkAPXMvALvOtwASVQEAHFcUAH/bpgB60p8AKnQmAGO1fgAjaRwALmA1AA5EAQDM2sgAN3ApAG7EjgC5zbQAVJxrAChwIgC0ya8ALmczAHXJmQBNf0EAgd6oADhwKgC8z7cA7vPtANTg0QANPwAARIhSADtyLQBzzpQAus21AEeKVQDC070AieyzALzPuAB93qEALGYvAO/z7gBEiVAAasWFAFuJTwBKil4AXotSAEuKXgAORQEAD0gBABlDFwBWpmoALGYwAGCNVQAbYBAAHGAQABBOAQCI6rIAjPG3AB1bDgAaXg4A////AGaRWwB/2qYAUYJEAEx+PwAZXAwAm7eUAD51MADN28oAJmwhACRiFAAzeTYAasaFAB9eDwBkt34Aus62AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT09PT09PT09PT09PT09PT09PT0OIjALPRQmMkI9PT09PT09OkcHNQU+Q0oQPT09PT09PToVGDQtI0ABKz09PT09PT06JRg0Nh1ALxk9PT09PT09OiUYIS4TQC83PT09PT09PTpPSDsGG0BEAz09PT09PT06T0BGMRIsTRY9PT09PT09OgACJx8gQwooPT09PT09PToICAkJCUkkPT09PT09PT05HggETio9PT09PT09PT09Px4IERw9PT09PT09PT09PUUpCDMMPT09PT09PT09PT0NOEEEGj09PT09PT09PT09TBcPSzw9PT09PT09PT09PT09PT09PT09PT09PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D">h-node</A> </DL><p> </DL><p> -diff -Naur iceweasel-14.0.1.orig/browser/base/content/abouthome/aboutHome.js iceweasel-14.0.1/browser/base/content/abouthome/aboutHome.js ---- mozilla-build.orig/browser/base/content/abouthome/aboutHome.js 2012-07-12 14:27:37.000000000 -0300 -+++ mozilla-build/browser/base/content/abouthome/aboutHome.js 2012-07-17 23:19:05.593724417 -0300 -@@ -41,99 +41,348 @@ - // If a definition requires additional params, check that the final search url - // is handled correctly by the engine. - const SEARCH_ENGINES = { +diff -urN iceweasel-13.0.orig/browser/base/content/abouthome/aboutHome.js iceweasel-13.0/browser/base/content/abouthome/aboutHome.js +--- mozilla-release.orig/browser/base/content/abouthome/aboutHome.js 2012-06-01 09:03:47.000000000 -0300 ++++ mozilla-release/browser/base/content/abouthome/aboutHome.js 2012-06-13 18:07:51.217531774 -0300 +@@ -38,104 +38,6 @@ + * + * ***** END LICENSE BLOCK ***** */ + +-// If a definition requires additional params, check that the final search url +-// is handled correctly by the engine. +-const SEARCH_ENGINES = { - "Google": { -+ "Duck Duck Go (Lite)": { - image: "data:image/png;base64," + +- image: "data:image/png;base64," + - "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + - "bWFnZVJlYWR5ccllPAAADHdJREFUeNrsWQl0VNUZvve9NzNJJpnsIkuEJMoqAVJAodCKoFUsAUFQ" + - "qhig0npaRUE8Viv1FFtQWxSwLXVhEawbhOWobOICFCGiEIIQRGIgCSFjMslsb9567+1/Z+7gmIYK" + @@ -400,159 +408,11 @@ diff -Naur iceweasel-14.0.1.orig/browser/base/content/abouthome/aboutHome.js ice - "7K/7IvC/CRhZ6Ep6evGGyXJS3kAsp3SGcgLKc7uSktBhrW7ZFq32r/HHCVbb0P9fBSYOTpIoJ5SE" + - "7GUnpHbrbG8EzsfWfwgwAEfC/ToQIhkhAAAAAElFTkSuQmCC" - , params: "source=hp&channel=np" -+ "iVBORw0KGgoAAAANSUhEUgAAASwAAAAtCAYAAAAUVlZkAAAABGdBTUEAAK/INwWK6QAAABl0RVh0" + -+ "U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAACAbSURBVHja7Z0HXJXV/8e/l3GBixgqoogT" + -+ "ByIIKKKQiHvkVtLULM1MrVTck0qt1FxZam5zkTIkFbcNLSu1YVaWe+QWt+Jg/j/f63ns8vDcCVzw" + -+ "/7v39Xq/0HufcZ4z3s855znnPJSdnU02bNiw8SxgiwQbNmzYhGXDhg0bNmFZifT0dDp27Bj99NNP" + -+ "dPDgwTxx4MABOnz48HPHjx+vhmNq+fvvv2tcuXLFwxbX/z+4fPlyaU5Tkb7VkdZVkebFOe3zmn/0" + -+ "sX//fjpy5Ag9fvzYJqz/dW7evEnt2rUj/qhUqjzBHx8fnzfatm17u3Xr1vdatmx55/nnn0//+OOP" + -+ "p9ni+v8H06dP/wRpmtWqVas7SOP7L7zwwvXKlSv3yY/8YyhfhYaG0r///mt6WLNAOngEHoMM8Z30" + -+ "e6b47rHYJr2ICmv9+vU0c+ZMh08//bTMwoULay1durThqlWr2qxduzYqNjb25cTExL5gABjIJCQk" + -+ "9MX3PdasWdMO24YvWLCg0uzZsx2mTZtGU6dO5QTk4xmEt9m7d2+RzIA3btwgCIby64PMG42MnA1Z" + -+ "ZTdv3jy7QYMG2XPmzJlnLBx79uwxGo+mgvO5zJs3r/zixYsDly9fHrl69ep2SN9u69at64007Sel" + -+ "LXgjLi7uVf5t2bJlbeLj4+udP3++bEpKih0XjnPnztGFCxfo0qVL+cLFixcpNTX1mRYW8v1yTlNO" + -+ "W05jpHVGxYoVB1EBf0qVKkWvvfYajRw5kqKjo5UZDN6IpqH9omlYdLT9sGnRlUesiG4yYmP0SyO/" + -+ "iX5r5IHocaP+iI4BE0f+ED1m5NfRA0YmRXcbsTS68bAPoytFD422H9J3CI0aPJp+OfhL0RBWr169" + -+ "RlapUuXroKCggyEhIcdg7kthYWG3cdd4zHeOiIiIbDn4PiM8PPxu/fr1LwQHBx+uWbPmzgoVKsxx" + -+ "dXXtgbj0MiXChw4dSllZWUW6hpUfn6pVq76F42W1adMmG3dhjrts1LBmGwvH4MGD8+P0zig88/z9" + -+ "/b9D+v6G9D2JNLvCaYdwpHFY5GnbsGFDDmM68sFt/P9s7969f0HB2BQVFfV+kyZN2iK9i+NYVLdu" + -+ "XcLx8kS1atUIN8dnvYb1Gccjpy2nMdI6DTep16lofOyoFNWlVjSBhtNmmkl/0iK6Rispg9ZSNsWC" + -+ "L8A68e814HNKp4V0habTYRqKfVpSjHMF5wbLVy1XFwlhjR07dhcyojaypUKlC9815Oj+Lu0n9k2N" + -+ "jIw8HhAQMN/d3T3AUEzyneF/RFhvKwhrjrFwcPzkObfa2RVH2p5HjVExfZXSVkpfqVbYqFGjpzJj" + -+ "0UFYf3h7e8c4ODiUyY/44dr2My6shQrC6l+YllLZE9k/T23UUyjJaT1dcdlKGS47KNtlG2U7bwYb" + -+ "wZcgCWwQJAn4t2RsuxVsp2zHLZTtulZzYt1fsSFFQlhjxozZ1LhxY20GNUImyNL3OycW2u/ZXDja" + -+ "t2/P/79Vu3btWc7OzqWUInXUqFE2YRlg9OjReT63o6OjG9L2BKeLkbTNMpS+kuyk9MX1ZLdo0eIs" + -+ "rm0wxKXJSxjnzp1rE1Z+yqoG+Tu9TwmaZHrIgnKBoFwgJ5cNlqGGxFyTNCfXn4x1KyrC2qggrJNg" + -+ "G1gBZoMpYCKIAdPBIpAMDoOrIrPnyugsLhz7ANrbDWzCKjRhHZcJKx38CTaCxWAGeA9MEH9ninTf" + -+ "DY6CW0oi42Ny+qKJmVCsWLEKNmEVsrDsSOXQjnq7JNJVl116JXUfnAU/gy/BMvAZWAg+BxvBfnAa" + -+ "3NUKKxHCitMsWn88loqysFoBMoFiIByMAV+DB/KMzXdjNC0ueXp6trYJq0gI6xzwNzF9PURemAp+" + -+ "1ndTioyM/NHNzc3PJqxCEpYaST2QJrvspAwNmnCQllxULKkloAeoBtSA9GAHKoPO4BMI62cIq01R" + -+ "F1YjEzO0Lm6gK9inR1qXPTw8Im3CKnRhnQI1LEjfcuBN8Lc8fTt06MDS+snV1bWSTVhWFpaKVI5D" + -+ "aLrL1xDTplyyug1mgJoGBGUQCKs8hOVc1IXV3IIMLVESzJU3EzlTN2nS5BCaDz42YRWqsM4A3zyk" + -+ "b03RHZCjj6tjx47ZoaGh6x0cHFxswrKesBx6UjRqVlkuG3PJipt9jSwVlY6wCMKioi6sZnnI0BKT" + -+ "5dLiTB0UFDQf8Wxve0r4zAqLKQ4S5NLimxKu902bsKwjLPv6ENKXdF3bsZ6zCfiNaNaRTVjmsVLe" + -+ "UQseajSaiGHDhtmE9ewKi/EE++VN/2bNmv2JWnQVU8OIuLAJy5KPCzk6zaKvtcMVcsrqEKiSH7L6" + -+ "XxSWt+gzeXrsTp06ZVesWHExhOUkFxb/PzMzUyWDMjIyzIL3kR/HVDkqCQvNnGKurq4+zz33XB0P" + -+ "D49GZcuWbVa6dOnG7u7u9VA4fZ2cnEqpVCq7/BQWN5mfdlPk/NjhoykCwmJagtvyWrSPj4/iSG8x" + -+ "tUT70fa+gDlz5pidefft20dffPGFKi4u7inx8fFkDjzDIzY2Vvs3KSmpxNatW2vs3r07dO/evY1x" + -+ "/Obffvtt5K5du+pu2bKl2oYNG9zWrVtHa9as0Y70z09hqXJ/HIGz0aZgO3pDs5XStf1W/8mKn+y1" + -+ "yS9ZWSIsnt+IOKO41XEUvzyeEr6It0vcHl8m8WC8/4a/48OTLsY3S/o3vmniX/ENEvfF+yZsii8R" + -+ "vxpp8nk8rV25lg4dPlSowmJG6D4W53E8ISEht99//30fuUT++OOPoI8++mguWDxz5syFKNir3n33" + -+ "3d79+/e379evH73++utG4ekKY8eO7TB79uyFOMaiGTNmLJoyZcrK33//vbkpEX7r1i1q3769tsZd" + -+ "smTJ0Bo1aowLDQ1NbNq06REunCj8WVyTYAkgg6Y2b978NDLsLn9//xleXl7tIQl3Y8JasGCBSQNH" + -+ "ixcv3ghN6CW1a9deKIH/x5YvX75NEREWs15ey4qIiNiLc5eQhwfx0xXhX4TrWIT4WlSpUqVViYmJ" + -+ "LcwV1uDBg9/EDWMZbnwLIYclOM6nzs7OAWbWUYphn+aIy6kBAQHbkcankDb3eYAsD5Zt2LBhVnh4" + -+ "+J169eod9fPzS0bY38E+kQivUz4JS4VwvypL38X4/wpcm7/BHYtTMdSudmiHL+Tst/osP2UlCatY" + -+ "vCslno4zKW1S76VSCXVJHmbhQn7UjvrQbJpG39FSukSrKY1wGFoPVtFDWkCnKYa2Uld6l7wphC9t" + -+ "zIgxhS6sUuCSbl8HT/+ASF6RzzbftGlTd8jsPjKJds5dZGQk18ZWaB/cmvFB5pqJzJYdFhbGHcHZ" + -+ "tWrVyl66dOmEe/fuUUpKCl27dk0Rnkf4zz//UNeuXYOqVKnCzdlr3C/DcEHUHTEuDaTk76VtILp0" + -+ "FIC2hoTF1w4hz7l7967esHA4YmJiQhD+s507d356fKZLly67kbF9ipCwIsXYLt0BxFklSpQIlocH" + -+ "kpqH8GtrYRxvPP8ONZzxptZ+ufb84MEDwk3sazQ9n44Fw7Eyy5Qp08XE0f/2qCG/gHyxGelxn9NU" + -+ "SldpdL/ubA7+XtoG6XFlz549VfNDWBUqVOiJbR9yXOimL9J7PvLecwb7rsJRi9pMqbK+q/OgQUEI" + -+ "yzXehZb9tpju37ivt+wwKZdT6PRfp8irQ5lWqimU7LSJ7jlBqk7bAGqC6i+fjOtSb3jybyeE3wlN" + -+ "Wt5GHUfX6BX67K333ix/49wNup5yXXvMq1ev0p07d6wqLDuwWt5Bi7vYiu+//95ON/G3b9/esUWL" + -+ "FnelxOfErFu37hJ7e3sHc4SFWtEkloSoBUm1umH4nnC3VKRmzZr81wGZdSiardekUd0mzADQwmFG" + -+ "eB8gs/nrE5bUjweZzqlevbpiOHx9falOnTqVcaxDCuffjO9KQ8BUhISlBkfkY7PQLBwoDw/ieJqu" + -+ "HDhciIdo1DhNEtbRo0cJkuN5iBukaxL9oqmenp5Ga51qtVoTGBg4F2G4z3IwJ31ZYjjPbwhD6bwK" + -+ "C3Llp/BXFM4/A+dwwE3a8HW8QR9qvs7Vd5WU37LS8iVItCPvDuXIv5q/3vLj56v9a+c7uUZMsS0O" + -+ "1513UrZGEmqigdH00m+Qmhri8kwqecSvu19jv+o4Xk0/Frt23rE1hcX00z2+EMgvu3fvdpQLCxny" + -+ "rpj1rr3jWCIsFIJJOEeWVBPi46DmM8xYtwD2m4WmX6YkVVmc3AO/gy9BrGgK8WDZ0+CRKKjJqOa7" + -+ "GRIWF2ZIaY6BGoA7CtVOhULzFY+F4pUkipiwVGLEfI5mYXBw8CKVtBaKTFhS/PJ2rq6u0agxmSSs" + -+ "Q4cOaTMw0mkD72uOsFxcXDxwo0jm+FeYqpQlRvTvF08/OX0TxZhCbh2k40bK27174sQJVV6E5e7u" + -+ "Xhu1w2NS+HVYAJwQNjIkLFUJKuWM5qBmdw4RpIEhBSKsjU/+Uh0Txtq/SZ8Sz0fclEtMt8A2MAUM" + -+ "BqPBavCv7nYa1LockrUTsK9RbWopHRi1cqsL63l5AURz7/K+ffs8rCEszqSo+RgUFporH4o5kPK4" + -+ "OA8+BIHAQc9ofx5ouxL794WwVMaEhXMpCsvBwcER17uCr1sWDi44lfl8RVBYzFvyGxKaT7vhKwdD" + -+ "wuK4YGFNmjTJJGEdPnyYEL9mC4vHhiE8GxUkkS1uQkNF/Kr0jPbvAmHxjSry+PHjFne6azQa74iI" + -+ "iB/5umVh4O4HDZ/PmLDsKpGfcywK+tYcwroO6hWksOxDjeS1fhSj7VPLKasssB7U0nN8T/AuuJmj" + -+ "xrUF0ltH5+yqkS8fOyoqyurCqgru6J4DNZkHBw4cqFEUhIUM0gsZLVVBVlvFQEmTrpM767lAWSIs" + -+ "ro1ARJMVpPmLbhiKqLA6yIevoMn/B2qL6qIgLMT3R7y9LF4zwKeghCnXCGFp/1oqLKTFc/Xr10/i" + -+ "PC3LY/FiXBuZJKxginBJpkyZGM6AEoUlLPtwaoXm321Ncg6JpoNJwN6E80TlkBbXtrZTttM02qoV" + -+ "VlfrC8tL1FSengMZIA1V/JDCFhYKTJkmTZr8qXD3TQLu5lxnXoSF8A3Ab5kyufwlanZUxIUVKRcW" + -+ "bkin1Gp1scIWVunSpZviXEr9RVxrtjf1GvMiLORfNQ+YVpDVZlGDI1OFZd+YojQ7UaiTcgjrYIHI" + -+ "ShJWIs4bpKeJ6k7uTrNok3ZqUM6+quVmnqtfjmYkmoearZRK4dSjazvrC6uMfDwWMkA6hNWgsIWF" + -+ "QjRRoQl2SNQKyRrCKleuXCdk1HuyQnUchMjPUUSFVV/+UIWXn3FxcXmuMIXFXWjIP7EKouD+KSdz" + -+ "rjEvwvL19Z2oUHPeAcrKz2NMWA4d6HXNV7n6iHZZIKOSot9rmuhbUiYJfEkfqMfRFLtaFJZLoBHU" + -+ "TpN7dYhTwMvM8BQD8Tmuawdl03ja1bWj9YXFCXNWQVihhSksZ2dnDzRd9sr6FDLFJF+yhrA8PDzC" + -+ "kNkvy2R1TqyCQc+IsMLlwkI6noGwCrWGVbJkyQbIS+dlcXtZ1AjJGsLCv/vhu0eyNPgWVFA6j1Fh" + -+ "daW3FJ4QJlsgrBrgpEnrYvE8RZzT8RUaI1slQu00ij7T5K5dfWBhja6TaEo+Oc4WCGsRne8yPKqO" + -+ "tYVVXqybpSusRxBWrcIUFjJ5K/x+V5aZeI2v0tYQlpubW1U0R4/ImqNcoJroO0cRFVYLBWEdgbCc" + -+ "ClNYPj4+QxRqz0mWXKMZwkqXhOXl5fUCP32Uxf9B6QGKRcLqQoPyqYZVHRw3SVhce0Iz1LEXDc9R" + -+ "gy1Fns6f4xg5l7R5CPwtFBbXyn7UFSWtpayu86Nes7aw/KRH/zrCugFhlStMYUEmwxSaC8stvU5T" + -+ "hYUmwmT+LTw8fKdMVhdaP/nQMyaslxSEtQ/CKrSnhMgzjsHBwctl6ZsGBheksHB9aRUqVOil0Wi8" + -+ "mjVrdkpWu9tv7CGOCcLqrSCs/RYK64TJwuLlkntSjjKEJmKIwoqmh4yst2WMpU+PlfRkvfmuSVEf" + -+ "WltYLeSPk5EB/oawXApLWHZ2dqrAwMAFsgz9GLxdkMLiDAzhTAFK/RpLjJ2jiAprrIKwYiEsu8IS" + -+ "Fpr7ZSGSPbLm/g3QoCCFxdO3EL43QkJCVisMXxhp7DwmCKuNgrC4z6i4mWJwB6+BcWCkjEFgszFh" + -+ "2bekblzzkoVljVgE0FJhjdY9Hk/jidobtdLawhqmIKyNEJZ9YQmLCzMv7ysT1l3QriCFhYydgTvv" + -+ "SfxNURjAyINTuzxjwuKZDOsUhDUewqLCEhaOW61p06ZHZTXYi2JCfoEIS6TvfWx7DNf3QGGYzD8g" + -+ "KI/CCoGw7skkkQKC8/kJ4XBjwkJYBmtyz2f8MI/n7QMe6Qrrxf1R8dYUlr0YHS4X1jgeuVxYwlKr" + -+ "1SXDwsK2yoR1E0QUpLCkQqaQmSVOGBJKERSWmzimXFgtC1lYfhDWOZmwzpo7VMVcYZmQvtvEIpeW" + -+ "CqsyhHVYJiwu4APyWVijjAnL8SUaox1ikVNY4/J43h5i7fn/hPVT1AZrCovvaNcVhBVR2MJq0KDB" + -+ "NpmweHpG04IWlg7J4omR0vduz4iw2ohBmLrCuoB0LFfYwmrSpIlcWOfFZPwCFZYOa8QLXeTfT9U3" + -+ "BswEYTlDWGsU+prWWV1YfSCs3DWsmDyet7fouNcVVlyhLS8jTYdABvAwUVjLuAPVTGG9Z4Kw3CAs" + -+ "eZMwVXQgW0NYP4unp1XEk0H57x88I8Jar/BasKVIRycFYU3XFRbHvZub2/CCahJCWPImIT+prm4l" + -+ "YfF8RBfQSXT2y3/vZqGwCMIaqiAsHqLgZ2VhvaUgrLlAlYfzDpH3YUFYn1tLWO5itLb8+OM4AygI" + -+ "qxMy+j2ZsNZCWC4FICw7CGuhTFgs1klWEBYPCg3W2fdVhTjiWsuLRVxYYaIjWy6sDryqgoKwPtB9" + -+ "asarcbi7u08wV1i+vr6mCMsLwvpeJiyL+yjNFNYOMVhamhw+RyF9+YlwLQuFFSqfOCyYbGVhdVYQ" + -+ "1g4Tp+PoY5aCsKZZS1gf6UsoPcJqjYx+RxIWiyYsLGwbN9/MEZafn99MKaMaEBZBWKMVhjVstYKw" + -+ "Zigs0bJQIa7+lb+SqwgJy17+MgrBdlxrKT3CmoDwZ+oKy8PDY9bkyZNNFhYXZn9//53SEzgDwnKC" + -+ "sFYqTLmaWcDC4rXBBsj25/mK3ynE1Tfypr+JwuKCvVZBWGfzcRK0KcIKgLDSZMK6IkbRW3JOV7Bd" + -+ "QVj9rSGszvLlc4VA3gEEKSkJqy4y+nVJWGKN8KPFihWrZo6w6tWrt9FEYbWFsB7KwnjJ0o53M4Q1" + -+ "U8/g2v0KmXq3bqYuQsJ6T0+tsBunrx5hDUD4H0lxwcJCfCV88MEHbqYs4sf5xcfHxzM4OPiwCTUs" + -+ "grCGKwjrV0s63s0Q1mOxnJLSiiXXFeJsrpkj3ckVwtJsoDaaJ6s0yKW1NQ/CMFdYpSCsX2TCyhQd" + -+ "55acswm4IRPWRQirfkELq6XuKqMSyEA/RUZGlgOERKZff/01R+InJyd7Nm3a9LwkLGnNJGTG5qbK" + -+ "qmTJknWRuc7JO3f1CMsLwvpRIROtLGBhzdFzjFbiSWWuhd2KmLCiRcFUjDcDwmqJ8N+W4oLTNiAg" + -+ "4PSCBQt8Ta1hhYeHvwoeGVvATwirIc5xRSGcowpQWNxf1V/PcYYohOWB6BIwSVjEryPeCeK0fO6k" + -+ "vDgev9HZxQrCUkFYkxQW6PvGwnN+LL8WiqVvu+4ruPWw1CKxrstXa0Rhvjpq1Khm3F/BC7bFxMTQ" + -+ "qVOnciT+b7/9xot17RWLpT29CwcGBs6TL1WiZ/E7Xq1zhe6APR1hjVAQFkFYk/XUFPoXgrCYGIXw" + -+ "PJIeBhSysHgZlOnyp4I6U5oqGRGWF8J/STcueP105IV+GzdupM2bN/My2Yrwiw2WLl1atnPnzvtw" + -+ "U5O/iUmfsFSI+wQ93RIRhSAstdJDCrEIZF1JWN7e3rx2ljYOcb2EMkAdOzyh89SO9OLhjtTtx47U" + -+ "9YcOFT03Fz/mpDxCnScSexewsAjCCoWw7ioMs+hvQe3q6XAGZ15iZoPdI/+d1QfMOjbTqLDMnRzq" + -+ "KjpglRIjG8e/1717975nzpwxehcdPnz4e8hoShmyuTFZoUCMk8tBElblypXH6BFWZTGgTx5uHuLQ" + -+ "R8+ibgUpLGcxVkcpUwfmg7BOWyAsbkJ11NMPIx3zeWl7A8Ji4W7TjQuuZTVs2PAfbFvNyNtlimP/" + -+ "VfJ1raRXxyF/tFUQFr8Bqa3SgwHxBusIKwuLxFu3lfLbLl5qhoVVunRpXuabTCkv9b8KaqVKyNmM" + -+ "0uEf0MuCUfDMCBOFZQdhzVM49wUQYeK5fMWUnqf789rvLgnOP3x+dqmTKS+haGhCh6uneNLVRyxC" + -+ "9kBPZr6M47/WrVs3OnnypNEEiI6O5vEzqfL1lXheVrly5drL3yzMS4gUL17cj9cbQubMEIXzvjR3" + -+ "UXp8jhrWWD3CkpZwfqgQ9sdi6do6RpYj4T6mlhBWOIRln0dhkXh6dE6pQxsFvrgVhKUWfWrhohnz" + -+ "lZ5albRmV47J2kaE1QO/Z8qXVIa0vilRokQ9foeZ7EbkWKpUqfCwsLBknalMt6XwCGGlQVgd9AiL" + -+ "w/SJvrwJxouhDoZuTJ4QVleOt3wQFokhDfcVwjOb13RnYVWrVi2XHHO9UisrjUK+CiAIqzsK+VU9" + -+ "0uI+pe/FcIEwMcHYUY841OL3YLFSqCnC4vWyWDh/KZz7NOhq4KkhD39oLN5SnS0T1g3nBKeGy04v" + -+ "MumtOTvEE74ponN1InhHjA36VEzF2MML6RtZvP8nfu09jk9mCEuFjDZXfizxaq2H9evXT8TdZzza" + -+ "+f19fHyGBwcHL0PhOCablf+O7nAKzui87pUBYZFo6ui7joui9shz5l4Www16iaWBZwFegz1NrOle" + -+ "LB+EReI8mfKwoMDP8PPzU+VBWKniWqaKIRycvhNEnPF3n4l1zfcrPTSRLcOTqDSZ14iwXPB7rn5D" + -+ "TiMU+kvcpEecjUA89q9evfq4kJCQOB4/pdPMvyjy4xWdUeUZEFYnA8LipuwmA9fCNZ5lYqnkHiJ9" + -+ "XwHDxQ3rB9FNEZNPwiKRb3KFBdfTy8PDw1xhceFvBY4amch8Q6yGwM3FhWAGmArmiEnHCeL3m3om" + -+ "P0frEZZ0/hSFc94W67dzR3wdUBUEgi5gkfhdvk8qhNUHwiJThZVXzomJntplWswUFmc0bzGwMlvp" + -+ "deiceblTnSUmXvOk9NTloPQd74NayftGhKUWBTbLyLWli9pkmkKhO4OCVjafhMV3/HkKwkoPDAx8" + -+ "OQ/Cyg/4SVtPEWdkprD4d56AnKJwbdr0lNJU+rfO2K1HQiTe0kMd6a1I3t7eLxoQlrQmW5wJ15Ym" + -+ "pJ4um5mhXZoGEimWT8Jiie5ViIMrXl5ewcg35gqLqQQW687Fyxf+E9Z4A8Ji2oPLeo7zUCzl/LeY" + -+ "rP1Az3ZcU3yZXy+mKKzRo0dv4ff/Se9hywNp4EcwBFQEKkAMPxXkheTNEBaJ8UeHlV6nJQ0I1f1O" + -+ "ZObJOk23/brCQq1kthFhSZLoLl8d1VS4cEFYjWTCGqqwnvhcQ5lZijfgCfbrxrNYD/+Ku7t7iDFh" + -+ "2dvbuzVq1OiM9E5ES5ANutwqaiAG10E3QVgk+sSu6otLhZkBN0Stk/etKM0OkPooUePuY0RYUtN9" + -+ "vJ4+LYMIYV2GRLx18+u0adOW8Ds0+R2LvA3IAAO4z8sE6oAUsZ8WjvOgoKD9aD2U5HdkGhNWnd3+" + -+ "RPFETolPUYPmIAGk8lPEPJNEd5y2UbL9S9QgR/56FVLZiXMm5Gjm1RHrc1kixz2gvvQ+REVhDRs2" + -+ "bBUi/DbuxHdBKngI0kC6Ao/BfXAHXANHQAIYAUKAE9em5EhiMHbHYAYNGqTdniUnhkDMB9dABotV" + -+ "Bn93G+wAzcQ+EhvBHXADGSEL4pilfRXRf4WZAgICtBlHth/jCcaBP8FdPeeWeCTC8Asy7aTSpUuX" + -+ "lb0wcyAEcxPxwNvcBGngI4Vz5kAn/iLABRHnN5hmzZo9RNNpq0qlcjXiLFc0oQ/i/Pf4wYdI30cG" + -+ "0veRSN9b4Ar4FWFZBV4H1YGjsXBLYedhK7LuKF59kxAW7e9i29pgs0inLIW45bi6AVaKbaX9PMBf" + -+ "nDY41k3Ee3qZMmUGyJaXIVw7Ia6UwlgDzAVnwQOQqSdts8Tv17iPDfIfdPTo0RxLIs2ePfsTnCOj" + -+ "Y8eONzp16nSb32kJ+gIykTfAQ3AT8DFuQsL3OnfuPPvEiRNGhPWYau2sSrSOSBWXCwcQAMaB3eAC" + -+ "uAMegDSQCbIE/O/HIBXcBhfBD2AB6IkaXGVVMjnQi7Lc1QPn2QbWPx1mIeEMeoN94A7I0L7xOTf8" + -+ "Juhb4BuxvcvTY+CY6nVqWnhqXk5hbdu2zWPJkiVBK1asaAaiQF/wJhgGhuvA/x8gtmkEqgAnQMbA" + -+ "8Sk2Nlb7RmNjwuKXao4YMYJfN69LdTAYLASJIAksA2NAfdm2EhVBbSYmJiZ44MCB5SEnFRcYhmsw" + -+ "b7/9tnZ4hZ79GQ1oBIaD+WAd2AjiwFLwIXgNBAL1xIkTqWfPntpCIhWUV155peSECRMCxo0bFyjC" + -+ "EwTK6jsnv6J+5syZuvFnByqAYFCbWblyZdDy5csDp0yZUpz3GT9+vCIcHsS9N7YPxX6tQXfQD7wl" + -+ "S98RYKj4rRNoAHg/BzR5uBZuKI4UGTVqlPYRvW5c9O3bVxsu2bYqEArGg+UibTmNF4A3ga/C8e1B" + -+ "DY53xGttXGfQyy+/7ME1Kj4X/+WaHOcjxL2hcJYCbcFEsBjEi/RdL/LaO6AbqIo4sON9Lly4kCO/" + -+ "pqSkeJ86dSrozJkztUEgCAAl+AmfiTgBX7EvH6P26dOng3Ee//T0dEeDb8LOyqT5J+fS+D/G0jt/" + -+ "jTeGBwgDL4GhYAKYJBgLBoIuIBR4AtXTfY+A48hP65CvRujkr8TxNPlkDA079Da1+74ltd7blF74" + -+ "rpkuDiAERIP5YD3YCNaBuWAQCJLto6X13ibUZm9r2nY5OaewbNiwYaOo83/GACUvSpKnwAAAAABJ" + -+ "RU5ErkJggg%3D%3D" - } - +- } +- -, "Яндекс": - { -+ "Seeks Search": { - image: "data:image/png;base64," + +- image: "data:image/png;base64," + - "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + - "bWFnZVJlYWR5ccllPAAABWFJREFUeNrsWWtsVEUUnltLH7tbaeuDbfCBojUoBTGmooLE+Igx+gON" + - "RvEJhEQNUdEYA0Ji4xNf2Bg1iBJJrGBC+CEBNYoxxmh94CMKRE2MitBqoZRi6bbdZT3TfhM/TmZ2" + @@ -579,199 +439,13 @@ diff -Naur iceweasel-14.0.1.orig/browser/base/content/abouthome/aboutHome.js ice - "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%3D%3D" - } -+ -+ "YaCy": { -+ } -+ - }; - +- } +-}; +- // The process of adding a new default snippet involves: -@@ -143,7 +392,7 @@ + // * add a new entity to aboutHome.dtd + // * add a <span/> for it in aboutHome.xhtml +@@ -143,7 +45,7 @@ // The <a/> part of the snippet will be linked to the corresponding url. const DEFAULT_SNIPPETS_URLS = [ "http://www.mozilla.com/firefox/features/?WT.mc_ID=default1" diff --git a/libre/iceweasel-libre/shared-libs.patch b/libre/iceweasel-libre/shared-libs.patch new file mode 100644 index 000000000..1f22b2b0d --- /dev/null +++ b/libre/iceweasel-libre/shared-libs.patch @@ -0,0 +1,12 @@ +diff -Nur mozilla-release.orig/browser/installer/Makefile.in mozilla-release/browser/installer/Makefile.in +--- mozilla-release.orig/browser/installer/Makefile.in 2012-07-17 16:19:29.480356991 +0000 ++++ mozilla-release/browser/installer/Makefile.in 2012-07-17 17:32:41.250937293 +0000 +@@ -50,7 +50,7 @@ + MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in + # Some files have been already bundled with xulrunner + ifndef SYSTEM_LIBXUL +-MOZ_PKG_FATAL_WARNINGS = 1 ++MOZ_PKG_FATAL_WARNINGS = 0 + endif + + MOZ_NONLOCALIZED_PKG_LIST = \ diff --git a/libre/lirc-libre/PKGBUILD b/libre/lirc-libre/PKGBUILD index 3b73a9f2f..c4d8b1e95 100644 --- a/libre/lirc-libre/PKGBUILD +++ b/libre/lirc-libre/PKGBUILD @@ -6,7 +6,7 @@ _pkgbase=lirc pkgbase=lirc-libre pkgname=('lirc-libre' 'lirc-utils-libre') pkgver=0.9.0 -pkgrel=20 +pkgrel=21 epoch=1 _extramodules=extramodules-3.4-LIBRE arch=('i686' 'x86_64' 'mips64el') diff --git a/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch new file mode 100644 index 000000000..85622aaac --- /dev/null +++ b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch @@ -0,0 +1,152 @@ +From 717fdb8ee0fd23cf72fc7d2832317f513caefa2c Mon Sep 17 00:00:00 2001 +From: Allan McRae <allan@archlinux.org> +Date: Sun, 8 Jul 2012 21:36:36 +1000 +Subject: [PATCH 1/4] Add conflict for replacing owned empty directory + +When two packages own an empty directory, pacman finds no conflict when +one of those packages wants to replace the directory with a file or a +symlink. When it comes to actually extracting the new file/symlink, +pacman sees the directory is still there (we do not remove empty +directories if they are owned by a package) and refuses to extract. + +Detect this potential conflict early and bail. Note that it is a +_potential_ conflict and not a guaranteed one as the other package owning +the directory could be updated or removed first which would remove +the conflict. However, pacman currently can not sort package installation +order to ensure this, so this conflict requires manual upgrade ordering. + +Signed-off-by: Allan McRae <allan@archlinux.org> +Signed-off-by: Dan McGee <dan@archlinux.org> +--- + lib/libalpm/conflict.c | 32 ++++++++++++++++++++++++++------ + test/pacman/tests/fileconflict009.py | 20 ++++++++++++++++++++ + test/pacman/tests/fileconflict010.py | 20 ++++++++++++++++++++ + 3 files changed, 66 insertions(+), 6 deletions(-) + create mode 100644 test/pacman/tests/fileconflict009.py + create mode 100644 test/pacman/tests/fileconflict010.py + +diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c +index 32f6f30..efa1a87 100644 +--- a/lib/libalpm/conflict.c ++++ b/lib/libalpm/conflict.c +@@ -328,15 +328,35 @@ const alpm_file_t *_alpm_filelist_contains(alpm_filelist_t *filelist, + return NULL; + } + +-static int dir_belongsto_pkg(const char *root, const char *dirpath, ++static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath, + alpm_pkg_t *pkg) + { ++ alpm_list_t *i; + struct stat sbuf; + char path[PATH_MAX]; + char abspath[PATH_MAX]; +- struct dirent *ent = NULL; + DIR *dir; ++ struct dirent *ent = NULL; ++ const char *root = handle->root; ++ ++ /* TODO: this is an overly strict check but currently pacman will not ++ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that ++ * is not simple as even if the directory is being unowned by a conflicting ++ * package, pacman does not sort this to ensure all required directory ++ * "removals" happen before installation of file/symlink */ ++ ++ /* check that no other _installed_ package owns the directory */ ++ for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) { ++ if(pkg == i->data) { ++ continue; ++ } ++ ++ if(_alpm_filelist_contains(alpm_pkg_get_files(i->data), dirpath)) { ++ return 0; ++ } ++ } + ++ /* check all files in directory are owned by the package */ + snprintf(abspath, PATH_MAX, "%s%s", root, dirpath); + dir = opendir(abspath); + if(dir == NULL) { +@@ -349,13 +369,13 @@ static int dir_belongsto_pkg(const char *root, const char *dirpath, + if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + continue; + } +- snprintf(path, PATH_MAX, "%s/%s", dirpath, name); ++ snprintf(path, PATH_MAX, "%s%s", dirpath, name); + snprintf(abspath, PATH_MAX, "%s%s", root, path); + if(stat(abspath, &sbuf) != 0) { + continue; + } + if(S_ISDIR(sbuf.st_mode)) { +- if(dir_belongsto_pkg(root, path, pkg)) { ++ if(dir_belongsto_pkg(handle, path, pkg)) { + continue; + } else { + closedir(dir); +@@ -529,9 +549,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle, + sprintf(dir, "%s/", filestr); + if(_alpm_filelist_contains(alpm_pkg_get_files(dbpkg), dir)) { + _alpm_log(handle, ALPM_LOG_DEBUG, +- "check if all files in %s belongs to %s\n", ++ "check if all files in %s belong to %s\n", + dir, dbpkg->name); +- resolved_conflict = dir_belongsto_pkg(handle->root, filestr, dbpkg); ++ resolved_conflict = dir_belongsto_pkg(handle, dir, dbpkg); + } + free(dir); + } +diff --git a/test/pacman/tests/fileconflict009.py b/test/pacman/tests/fileconflict009.py +new file mode 100644 +index 0000000..904af4a +--- /dev/null ++++ b/test/pacman/tests/fileconflict009.py +@@ -0,0 +1,20 @@ ++self.description = "dir->symlink change during package upgrade (directory conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++lp2 = pmpkg("pkg2") ++lp2.files = ["dir/"] ++self.addpkg2db("local", lp2) ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir -> /usr/dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("PKG_VERSION=pkg2|1.0-1") ++self.addrule("DIR_EXIST=dir/") +diff --git a/test/pacman/tests/fileconflict010.py b/test/pacman/tests/fileconflict010.py +new file mode 100644 +index 0000000..0a3ce83 +--- /dev/null ++++ b/test/pacman/tests/fileconflict010.py +@@ -0,0 +1,20 @@ ++self.description = "dir->file change during package upgrade (directory conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++lp2 = pmpkg("pkg2") ++lp2.files = ["dir/"] ++self.addpkg2db("local", lp2) ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("PKG_VERSION=pkg2|1.0-1") ++self.addrule("DIR_EXIST=dir/") +-- +1.7.11.1 + diff --git a/libre/pacman/0002-Check-empty-subdirectory-ownership.patch b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch new file mode 100644 index 000000000..6cf496d16 --- /dev/null +++ b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch @@ -0,0 +1,61 @@ +From 44e9fdd0e848382337edb97d41e7317638a67bac Mon Sep 17 00:00:00 2001 +From: Allan McRae <allan@archlinux.org> +Date: Sun, 8 Jul 2012 23:58:37 +1000 +Subject: [PATCH 2/4] Check empty subdirectory ownership + +When checking if a package owns a directory, it is important to check +not only that all the files in the directory are part of the package, +but also if the directory is part of a package. This catches empty +subdirectories during conflict checking for directory to file/symlink +replacements. + +Signed-off-by: Allan McRae <allan@archlinux.org> +Signed-off-by: Dan McGee <dan@archlinux.org> +--- + lib/libalpm/conflict.c | 5 +++++ + test/pacman/tests/fileconflict012.py | 17 +++++++++++++++++ + 2 files changed, 22 insertions(+) + create mode 100644 test/pacman/tests/fileconflict012.py + +diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c +index efa1a87..d6e5d8c 100644 +--- a/lib/libalpm/conflict.c ++++ b/lib/libalpm/conflict.c +@@ -339,6 +339,11 @@ static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath, + struct dirent *ent = NULL; + const char *root = handle->root; + ++ /* check directory is actually in package - used for subdirectory checks */ ++ if(!_alpm_filelist_contains(alpm_pkg_get_files(pkg), dirpath)) { ++ return 0; ++ } ++ + /* TODO: this is an overly strict check but currently pacman will not + * overwrite a directory with a file (case 10/11 in add.c). Adjusting that + * is not simple as even if the directory is being unowned by a conflicting +diff --git a/test/pacman/tests/fileconflict012.py b/test/pacman/tests/fileconflict012.py +new file mode 100644 +index 0000000..421b739 +--- /dev/null ++++ b/test/pacman/tests/fileconflict012.py +@@ -0,0 +1,17 @@ ++self.description = "dir->file change during package upgrade (filesystem file conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++self.filesystem = ["dir/file"] ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("DIR_EXIST=dir/") +-- +1.7.11.1 + diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD index d8d3a6d26..4f05be586 100644 --- a/libre/pacman/PKGBUILD +++ b/libre/pacman/PKGBUILD @@ -4,38 +4,42 @@ # Maintainer: Dave Reisner <dave@archlinux.org> pkgname=pacman -pkgver=4.0.2 -pkgrel=1 +pkgver=4.0.3 +pkgrel=3 pkgdesc="A library-based package manager with dependency support" arch=('i686' 'x86_64' 'mips64el') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base') depends=('bash' 'glibc>=2.15' 'libarchive>=3.0.2' 'curl>=7.19.4' - 'gpgme' 'pacman-mirrorlist') + 'gpgme' 'pacman-mirrorlist' 'archlinux-keyring' 'parabola-keyring') makedepends=('asciidoc') optdepends=('fakeroot: for makepkg usage as normal user') backup=(etc/pacman.conf etc/makepkg.conf) install=pacman.install options=(!libtool) source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig} + 0001-Add-conflict-for-replacing-owned-empty-directory.patch + 0002-Check-empty-subdirectory-ownership.patch pacman.conf pacman.conf.x86_64 pacman.conf.mips64el makepkg.conf) -md5sums=('289ba4a19a16393096e065cec1cb9b0a' - '575140dce3ea597d91b6d081aa3f6a00' - '858d1ffb284afc6b15f72578ba3cac50' - '7dade0c0a4d597c480d779afa4f5097c' - 'd4ca1a1d8e6708c0302a225628a489eb' +md5sums=('387965c7125e60e5f0b9ff3b427fe0f9' + '1a70392526c8768470da678b31905a6e' + '1a9b79788640907a2b34e8671cacc94a' + 'a9ddd43891bed364e1e97d27b2887bf1' + '080d9f76f56e135cc62205874636aa0f' + 'ce9943fc8086d491890565e91ea1a0d8' + 'eb8dba9bd0b315230fbf0e5dc0a7335b' 'debc512689a1aa8c124fe0ccf27f5758') -# keep an upgrade path for older installations -PKGEXT='.pkg.tar.gz' - build() { cd $srcdir/$pkgname-$pkgver + patch -p1 -i $srcdir/0001-Add-conflict-for-replacing-owned-empty-directory.patch + patch -p1 -i $srcdir/0002-Check-empty-subdirectory-ownership.patch + ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --enable-doc make @@ -83,8 +87,10 @@ package() { -e "s|@CARCHFLAGS[@]|$myflags|g" # install completion files - mkdir -p $pkgdir/etc/bash_completion.d/ - install -m644 contrib/bash_completion $pkgdir/etc/bash_completion.d/pacman - mkdir -p $pkgdir/usr/share/zsh/site-functions/ - install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman + install -Dm644 contrib/bash_completion "$pkgdir/usr/share/bash-completion/completions/pacman" + for f in makepkg pacman-key; do + ln -s pacman "$pkgdir/usr/share/bash-completion/completions/$f" + done + + install -Dm644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman } diff --git a/libre/pacman/pacman.conf b/libre/pacman/pacman.conf index 92befa5fa..115217b59 100644 --- a/libre/pacman/pacman.conf +++ b/libre/pacman/pacman.conf @@ -36,18 +36,13 @@ Architecture = auto CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -77,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.conf.mips64el b/libre/pacman/pacman.conf.mips64el index a74f2d3da..f286c3290 100644 --- a/libre/pacman/pacman.conf.mips64el +++ b/libre/pacman/pacman.conf.mips64el @@ -16,9 +16,7 @@ #GPGDir = /etc/pacman.d/gnupg/ HoldPkg = pacman glibc # If upgrades are available for these packages they will be asked for first -# Don't list pacman here unless you want it broken when there is a -# libarchive or glibc update. -#SyncFirst = +SyncFirst = pacman #XferCommand = /usr/bin/curl -C - -f %u > %o #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u #CleanMethod = KeepInstalled @@ -35,21 +33,16 @@ Architecture = mips64el #UseSyslog #UseDelta #TotalDownload -#CheckSpace +CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -79,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -87,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -99,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.conf.x86_64 b/libre/pacman/pacman.conf.x86_64 index 0eddc159c..4c67b089f 100644 --- a/libre/pacman/pacman.conf.x86_64 +++ b/libre/pacman/pacman.conf.x86_64 @@ -36,18 +36,13 @@ Architecture = auto CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -77,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # If you want to run 32 bit applications on your x86_64 system, @@ -108,7 +103,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist #[multilib] -#SigLevel = PackageOptional +#SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.install b/libre/pacman/pacman.install index 4369edab1..5dc55c0c2 100644 --- a/libre/pacman/pacman.install +++ b/libre/pacman/pacman.install @@ -9,7 +9,9 @@ post_upgrade() { if [ "$(vercmp $2 3.5.0)" -lt 0 ]; then _warnupgrade fi - _check_pubring + if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ] || [ "$(vercmp $2 4.0.3-2)" -lt 0 ]; then + _check_pubring + fi } post_install() { @@ -17,9 +19,10 @@ post_install() { } _check_pubring() { - if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ]; then - echo " >>> Run \`pacman-key --init\` to set up your pacman keyring." - fi + echo " >>> Run \`pacman-key --init; pacman-key --populate archlinux\`" + echo " >>> And \`pacman-key --populate parabola\`" + echo " >>> to import the data required by pacman for package verification." + echo " >>> See: https://www.archlinux.org/news/having-pacman-verify-packages" } _warnupgrade() { diff --git a/libre/pacman/rePKGBUILD b/libre/pacman/rePKGBUILD new file mode 100644 index 000000000..810eff5b9 --- /dev/null +++ b/libre/pacman/rePKGBUILD @@ -0,0 +1,37 @@ +# Maintainer: Nicolas Reynolds <fauno@kiwwwi.com.ar> +source PKGBUILD +unset build package md5sums source check +_repo=core +source=(PKGBUILD + ftp://ftp.archlinux.org/${_repo}/os/${CARCH}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT + # files for pkg modifications + pacman.conf + pacman.conf.x86_64 + ) +options=(!strip) + +build() { + cd "${srcdir}/" + rm -vf .{INSTALL,PKGINFO} ${srcdir}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT + # put actions for package modifications below this line + +} + +package() { + cp -a ${srcdir}/* ${pkgdir} + + rm ${pkgdir}/{PKGBUILD,pacman.conf{,.x86_64}} + +# No need to repackage for mips64el + case "$CARCH" in + i686) + install -m644 $srcdir/pacman.conf $pkgdir/etc/pacman.conf + ;; + x86_64) + install -m644 $srcdir/pacman.conf.x86_64 $pkgdir/etc/pacman.conf + ;; + esac +} + + +# vim:set ts=2 sw=2 et: diff --git a/libre/parabola-keyring/PKGBUILD b/libre/parabola-keyring/PKGBUILD new file mode 100644 index 000000000..432a5cf75 --- /dev/null +++ b/libre/parabola-keyring/PKGBUILD @@ -0,0 +1,20 @@ +# $Id$ +# Maintainer: André Silva <emulatorman@lavabit.com> + +pkgname=parabola-keyring +pkgver=20120719 +pkgrel=2 +pkgdesc='Parabola GNU/Linux-libre PGP keyring' +arch=('any') +url='https://projects.parabolagnulinux.org/hackers.git/' +license=('GPL') +install="${pkgname}.install" +source=("http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz" + "http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz.sig") + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make PREFIX=/usr DESTDIR=${pkgdir} install +} +md5sums=('de7f518935faea83aaa4d74001be8ecc' + '22dd9f76911e4984a6cc625d9d1f9465') diff --git a/libre/parabola-keyring/parabola-keyring.install b/libre/parabola-keyring/parabola-keyring.install new file mode 100644 index 000000000..1c70f1a8d --- /dev/null +++ b/libre/parabola-keyring/parabola-keyring.install @@ -0,0 +1,11 @@ +post_upgrade() { + if usr/bin/pacman-key -l >/dev/null 2>&1; then + usr/bin/pacman-key --populate parabola + fi +} + +post_install() { + if [ -x usr/bin/pacman-key ]; then + post_upgrade + fi +} diff --git a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch b/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch deleted file mode 100644 index ed8154df5..000000000 --- a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch +++ /dev/null @@ -1,61 +0,0 @@ - -# HG changeset patch -# User Charles-François Natali <neologix@free.fr> -# Date 1318446474 -7200 -# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 -# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f -Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native -TLS implementations, and fails with the ad-hoc TLS implementation when a thread -doesn't have an auto thread state (e.g. a thread created outside of Python -calling into a subinterpreter). - -diff --git a/Include/pystate.h b/Include/pystate.h ---- a/Include/pystate.h -+++ b/Include/pystate.h -@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT - PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); - #ifdef WITH_THREAD - PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); --PyAPI_FUNC(void) _PyGILState_Reinit(void); - #endif - - PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); -diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c ---- a/Modules/signalmodule.c -+++ b/Modules/signalmodule.c -@@ -976,7 +976,6 @@ void - PyOS_AfterFork(void) - { - #ifdef WITH_THREAD -- _PyGILState_Reinit(); - PyEval_ReInitThreads(); - main_thread = PyThread_get_thread_ident(); - main_pid = getpid(); -diff --git a/Python/pystate.c b/Python/pystate.c ---- a/Python/pystate.c -+++ b/Python/pystate.c -@@ -537,23 +537,6 @@ void - autoInterpreterState = NULL; - } - --/* Reset the TLS key - called by PyOS_AfterFork. -- * This should not be necessary, but some - buggy - pthread implementations -- * don't flush TLS on fork, see issue #10517. -- */ --void --_PyGILState_Reinit(void) --{ -- PyThreadState *tstate = PyGILState_GetThisThreadState(); -- PyThread_delete_key(autoTLSkey); -- if ((autoTLSkey = PyThread_create_key()) == -1) -- Py_FatalError("Could not allocate TLS entry"); -- -- /* re-associate the current thread state with the new key */ -- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) -- Py_FatalError("Couldn't create autoTLSkey mapping"); --} -- - /* When a thread state is created for a thread by some mechanism other than - PyGILState_Ensure, it's important that the GILState machinery knows about - it so it doesn't try to create another thread state for the thread (this is - diff --git a/libre/python2-libre/PKGBUILD b/libre/python2-libre/PKGBUILD deleted file mode 100644 index e743151b0..000000000 --- a/libre/python2-libre/PKGBUILD +++ /dev/null @@ -1,109 +0,0 @@ -# $Id: PKGBUILD 129895 2011-06-29 15:22:59Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> -# Contributer: Allan McRae <allan@archlinux.org> -# Contributer: Jason Chu <jason@archlinux.org> - -_pkgname=python2 -pkgname=python2-libre -pkgver=2.7.2 -pkgrel=6 -_pybasever=2.7 -pkgdesc="A high-level scripting language" -arch=('i686' 'x86_64') -license=('PSF') -url="http://www.python.org/" -depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi') -makedepends=('tk') -optdepends=('tk: for IDLE') -conflicts=('python<3') -options=('!makeflags') -source=(http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}-4-any.src.tar.xz - doc_license_change.patch - WDAS.patch - linux2.patch - gdbm-magic-values.patch - 13156-revert-tls-changeset-subinterpreter.patch) -provides=("$_pkgname=$pkgver") -conflicts=("$_pkgname") -replaces=("$_pkgname") - -build() { - cd "${srcdir}/Python-${pkgver}" - - # Temporary workaround for FS#22322 - # See http://bugs.python.org/issue10835 for upstream report - sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c - - # Enable built-in SQLite module to load extensions (fix FS#22122) - sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py - - # FS#23997 - sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py - - # Make sure sys.platform is set to linux2, even on kernel 3.X - # cf http://bugs.python.org/issue12326 - patch -Np1 -i ../linux2.patch - - # gdbm has new magic that whichdb does not recognize - # http://bugs.python.org/issue13007 - patch -Np1 -i ../gdbm-magic-values.patch - - # http://bugs.python.org/issue13156 - patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch - - # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), - # rather than copies shipped in the tarball - rm -r Modules/expat - rm -r Modules/zlib - rm -r Modules/_ctypes/{darwin,libffi}* - - export OPT="${CFLAGS}" - ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \ - --enable-unicode=ucs4 --with-system-expat --with-system-ffi \ - --with-dbmliborder=gdbm:ndbm - - make MACHDEP=linux2 -} - -package() { - cd "${srcdir}/Python-${pkgver}" - make DESTDIR="${pkgdir}" altinstall maninstall - - ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2" - ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config" - ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1" - - ln -sf ../../libpython${_pybasever}.so \ - "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so" - - mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/" - - # some useful "stuff" - install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} - install -m755 Tools/i18n/{msgfmt,pygettext}.py \ - "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/" - install -m755 Tools/scripts/{README,*py} \ - "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/" - - # fix conflicts with python - mv "${pkgdir}"/usr/bin/idle{,2} - mv "${pkgdir}"/usr/bin/pydoc{,2} - mv "${pkgdir}"/usr/bin/2to3{,-2.7} - - # clean up #!s - find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \ - xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" - - # clean-up reference to build directory - sed -i "s#${srcdir}/Python-${pkgver}:##" \ - "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile" - - # license - install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -} -md5sums=('456d053a5d418adc913a4971e95fe918' - '1e6595f85a1da7f42b69456119924d50' - '3f8c0e310a0be0bd8b319d6c46bbd427' - '6099a7c1aed80cf04943ee4affa84b5c' - '6de394351179c2ada82e95458ceb13e5' - 'daa5110f092f1406c17de23171529e62') diff --git a/libre/python2-libre/SRCBUILD b/libre/python2-libre/SRCBUILD deleted file mode 100644 index f021d6624..000000000 --- a/libre/python2-libre/SRCBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: PKGBUILD 123066 2011-05-07 23:01:49Z stephane $ -# Maintainer: AndyRTR <andyrtr@archlinux.org> -# Maintainer (Parabola): xihh - -pkgname=python2-libre -pkgver=2.7.2 -pkgrel=4 -pkgdesc="A high-level scripting language" -arch=('any') -license=('PSF') -url="http://www.python.org/" -source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz - doc_license_change.patch - WDAS.patch) -md5sums=('75c87a80c6ddb0b785a57ea3583e04fa' - '1e6595f85a1da7f42b69456119924d50' - '3f8c0e310a0be0bd8b319d6c46bbd427') -options=(!strip docs libtool emptydirs !zipman !purge) - -build() { - cd "${srcdir}/Python-${pkgver}" - - export PKGEXT=.src.tar.xz - - patch -Np1 -i ../WDAS.patch - patch -Np0 -i ../doc_license_change.patch - -} - -package() { - export PKGEXT=.src.tar.xz - export PKGDEST=${startdir} - - mv "${srcdir}/Python-${pkgver}" ${pkgdir} - -} diff --git a/libre/python2-libre/WDAS.patch b/libre/python2-libre/WDAS.patch deleted file mode 100644 index 86bc75e8c..000000000 --- a/libre/python2-libre/WDAS.patch +++ /dev/null @@ -1,109 +0,0 @@ -diff -r ac562d86ab71 Lib/profile.py ---- a/Lib/profile.py Fri Jun 03 17:50:59 2011 -0500 -+++ b/Lib/profile.py Mon Jun 27 00:02:20 2011 -0700 -@@ -2,35 +2,26 @@ - # - # Class for profiling python code. rev 1.0 6/2/94 - # -+# Written by James Roskind - # Based on prior profile module by Sjoerd Mullender... - # which was hacked somewhat by: Guido van Rossum - - """Class for profiling Python code.""" - --# Copyright 1994, by InfoSeek Corporation, all rights reserved. --# Written by James Roskind --# --# Permission to use, copy, modify, and distribute this Python software --# and its associated documentation for any purpose (subject to the --# restriction in the following sentence) without fee is hereby granted, --# provided that the above copyright notice appears in all copies, and --# that both that copyright notice and this permission notice appear in --# supporting documentation, and that the name of InfoSeek not be used in --# advertising or publicity pertaining to distribution of the software --# without specific, written prior permission. This permission is --# explicitly restricted to the copying and modification of the software --# to remain in Python, compiled Python, or other languages (such as C) --# wherein the modified or derived code is exclusively imported into a --# Python module. --# --# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND --# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY --# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER --# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF --# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN --# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- -+# Copyright Disney Enterprises, Inc. All Rights Reserved. -+# Licensed to PSF under a Contributor Agreement -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+# either express or implied. See the License for the specific language -+# governing permissions and limitations under the License. - - - import sys -diff -r ac562d86ab71 Lib/pstats.py ---- a/Lib/pstats.py Fri Jun 03 17:50:59 2011 -0500 -+++ b/Lib/pstats.py Mon Jun 27 00:02:20 2011 -0700 -@@ -2,34 +2,26 @@ - - # Class for printing reports on profiled python code. rev 1.0 4/1/94 - # -+# Written by James Roskind - # Based on prior profile module by Sjoerd Mullender... - # which was hacked somewhat by: Guido van Rossum --# --# see profile.py for more info. - --# Copyright 1994, by InfoSeek Corporation, all rights reserved. --# Written by James Roskind --# --# Permission to use, copy, modify, and distribute this Python software --# and its associated documentation for any purpose (subject to the --# restriction in the following sentence) without fee is hereby granted, --# provided that the above copyright notice appears in all copies, and --# that both that copyright notice and this permission notice appear in --# supporting documentation, and that the name of InfoSeek not be used in --# advertising or publicity pertaining to distribution of the software --# without specific, written prior permission. This permission is --# explicitly restricted to the copying and modification of the software --# to remain in Python, compiled Python, or other languages (such as C) --# wherein the modified or derived code is exclusively imported into a --# Python module. --# --# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND --# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY --# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER --# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF --# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN --# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+"""Class for profiling Python code.""" -+ -+# Copyright Disney Enterprises, Inc. All Rights Reserved. -+# Licensed to PSF under a Contributor Agreement -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+# either express or implied. See the License for the specific language -+# governing permissions and limitations under the License. - - - import sys diff --git a/libre/python2-libre/doc_license_change.patch b/libre/python2-libre/doc_license_change.patch deleted file mode 100644 index 18f9447d7..000000000 --- a/libre/python2-libre/doc_license_change.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- Doc/library/profile.rst 2011-06-11 12:46:23.000000000 -0300 -+++ Doc/library/profile.rst.orig 2011-08-12 11:35:25.000000000 -0300 -@@ -12,27 +12,23 @@ - - .. index:: single: InfoSeek Corporation - --Copyright © 1994, by InfoSeek Corporation, all rights reserved. -+Copyright Disney Enterprises, Inc. All Rights Reserved. - - Written by James Roskind. [#]_ - --Permission to use, copy, modify, and distribute this Python software and its --associated documentation for any purpose (subject to the restriction in the --following sentence) without fee is hereby granted, provided that the above --copyright notice appears in all copies, and that both that copyright notice and --this permission notice appear in supporting documentation, and that the name of --InfoSeek not be used in advertising or publicity pertaining to distribution of --the software without specific, written prior permission. This permission is --explicitly restricted to the copying and modification of the software to remain --in Python, compiled Python, or other languages (such as C) wherein the modified --or derived code is exclusively imported into a Python module. -- --INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, --INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT --SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, --WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING --OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+Licensed to PSF under a Contributor Agreement -+ -+Licensed under the Apache License, Version 2.0 (the "License"); -+you may not use this file except in compliance with the License. -+You may obtain a copy of the License at -+ -+http://www.apache.org/licenses/LICENSE-2.0 -+ -+Unless required by applicable law or agreed to in writing, software -+distributed under the License is distributed on an "AS IS" BASIS, -+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+either express or implied. See the License for the specific language -+governing permissions and limitations under the License. - - .. _profiler-introduction: - diff --git a/libre/python2-libre/gdbm-magic-values.patch b/libre/python2-libre/gdbm-magic-values.patch deleted file mode 100644 index 471faf2c7..000000000 --- a/libre/python2-libre/gdbm-magic-values.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic Python-2.7.2/Lib/whichdb.py ---- Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic 2011-06-11 11:46:26.000000000 -0400 -+++ Python-2.7.2/Lib/whichdb.py 2011-09-30 15:45:21.778872290 -0400 -@@ -91,7 +91,7 @@ def whichdb(filename): - return "" - - # Check for GNU dbm -- if magic == 0x13579ace: -+ if magic in (0x13579ace, 0x13579acd, 0x13579acf): - return "gdbm" - - # Check for old Berkeley db hash file format v2 diff --git a/libre/python2-libre/linux2.patch b/libre/python2-libre/linux2.patch deleted file mode 100644 index 670510fde..000000000 --- a/libre/python2-libre/linux2.patch +++ /dev/null @@ -1,23 +0,0 @@ -http://hg.python.org/cpython/rev/c816479f6aaf/ -diff --git a/configure b/configure ---- a/configure -+++ b/configure -@@ -2995,6 +2995,7 @@ then - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in -+ linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; -diff --git a/configure.in b/configure.in ---- a/configure.in -+++ b/configure.in -@@ -293,6 +293,7 @@ then - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in -+ linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; |