From bc4a68812bb131be6a8413f69909bf6a3d5a89a2 Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Mon, 31 Oct 2016 12:19:15 +0100 Subject: [PATCH 001/464] BUG11242: Fix for adding 2 VPN Hosts/network with same name If one has an IPSec network named "aaa" and an OpenVPn Host with the same name it was not possible to group them together because of the same name. Now the Network type is also checked wich allows Entries with same name, but different networks. Fixes: #11242 Signed-off-by: Alexander Marx Signed-off-by: Michael Tremer --- html/cgi-bin/fwhosts.cgi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi index 35afad3e4..1b0fe0751 100644 --- a/html/cgi-bin/fwhosts.cgi +++ b/html/cgi-bin/fwhosts.cgi @@ -624,9 +624,9 @@ if ($fwhostsettings{'ACTION'} eq 'savegrp') } #check if host/net exists in grp - my $test="$grp,$fwhostsettings{'oldremark'},@target"; + my $test="$grp,$fwhostsettings{'oldremark'},@target,$type"; foreach my $key (keys %customgrp) { - my $test1="$customgrp{$key}[0],$customgrp{$key}[1],$customgrp{$key}[2]"; + my $test1="$customgrp{$key}[0],$customgrp{$key}[1],$customgrp{$key}[2],$customgrp{$key}[3]"; if ($test1 eq $test){ $errormessage=$Lang::tr{'fwhost err isingrp'}; $fwhostsettings{'update'} = 'on'; From 86e9d04bfb73eb256682a567e187fe1e5cdcc3ca Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 25 Nov 2016 17:45:39 +0000 Subject: [PATCH 002/464] unbound: Deactivate qname-minimization & harden-below-nxdomain This causes trouble when you try to resolve a record like a.b.blah.com where b.blah.com responds with NXDOMAIN. unbound won't try to resolve a.b.blah.com because it is assumed that everything longer than b.blah.com does not exist which is probably not good usability. Signed-off-by: Michael Tremer --- config/unbound/unbound.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/unbound/unbound.conf b/config/unbound/unbound.conf index 3f724d8f7..c9b01b8f4 100644 --- a/config/unbound/unbound.conf +++ b/config/unbound/unbound.conf @@ -42,7 +42,6 @@ server: # Privacy Options hide-identity: yes hide-version: yes - qname-minimisation: yes minimal-responses: yes # DNSSEC @@ -56,7 +55,6 @@ server: harden-short-bufsize: no harden-large-queries: yes harden-dnssec-stripped: yes - harden-below-nxdomain: yes harden-referral-path: yes harden-algo-downgrade: no use-caps-for-id: no From e2b19d984cfa7510edcffc7788ef53cb086cdffb Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 28 Nov 2016 21:38:29 +0000 Subject: [PATCH 003/464] strongswan: Update to 5.5.1 Signed-off-by: Michael Tremer --- config/rootfiles/common/strongswan | 1 + lfs/strongswan | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/common/strongswan b/config/rootfiles/common/strongswan index f81a9c861..38da9862c 100644 --- a/config/rootfiles/common/strongswan +++ b/config/rootfiles/common/strongswan @@ -72,6 +72,7 @@ etc/swanctl/bliss etc/swanctl/ecdsa etc/swanctl/pkcs12 etc/swanctl/pkcs8 +etc/swanctl/private etc/swanctl/pubkey etc/swanctl/rsa etc/swanctl/swanctl.conf diff --git a/lfs/strongswan b/lfs/strongswan index 17c1a01cf..9e8f155e6 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -24,7 +24,7 @@ include Config -VER = 5.5.0 +VER = 5.5.1 THISAPP = strongswan-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = a96fa7eb6c62b40143dadb064b6bd586 +$(DL_FILE)_MD5 = 4eba9474f7dc6c8c8d7037261358e68d install : $(TARGET) From 49750f72dee50a2103ead403b16630b67a838231 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 28 Nov 2016 21:48:21 +0000 Subject: [PATCH 004/464] Start Core Update 108 Signed-off-by: Michael Tremer --- config/rootfiles/core/108/exclude | 28 ++++++++ config/rootfiles/core/108/filelists/files | 4 ++ .../108/filelists/i586/strongswan-padlock | 1 + .../rootfiles/core/108/filelists/strongswan | 1 + config/rootfiles/core/{107 => 108}/meta | 0 config/rootfiles/core/108/update.sh | 66 +++++++++++++++++++ .../rootfiles/{core => oldcore}/107/exclude | 0 .../107/filelists/armv5tel/linux-kirkwood | 0 .../107/filelists/armv5tel/linux-multi | 0 .../107/filelists/armv5tel/linux-rpi | 0 .../{core => oldcore}/107/filelists/files | 0 .../{core => oldcore}/107/filelists/hdparm | 0 .../107/filelists/i586/linux | 0 .../{core => oldcore}/107/filelists/libjpeg | 0 .../107/filelists/libjpeg-compat | 0 .../{core => oldcore}/107/filelists/squid | 0 .../107/filelists/x86_64/linux | 0 config/rootfiles/oldcore/107/meta | 1 + .../rootfiles/{core => oldcore}/107/update.sh | 0 make.sh | 2 +- 20 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 config/rootfiles/core/108/exclude create mode 100644 config/rootfiles/core/108/filelists/files create mode 120000 config/rootfiles/core/108/filelists/i586/strongswan-padlock create mode 120000 config/rootfiles/core/108/filelists/strongswan rename config/rootfiles/core/{107 => 108}/meta (100%) create mode 100644 config/rootfiles/core/108/update.sh rename config/rootfiles/{core => oldcore}/107/exclude (100%) rename config/rootfiles/{core => oldcore}/107/filelists/armv5tel/linux-kirkwood (100%) rename config/rootfiles/{core => oldcore}/107/filelists/armv5tel/linux-multi (100%) rename config/rootfiles/{core => oldcore}/107/filelists/armv5tel/linux-rpi (100%) rename config/rootfiles/{core => oldcore}/107/filelists/files (100%) rename config/rootfiles/{core => oldcore}/107/filelists/hdparm (100%) rename config/rootfiles/{core => oldcore}/107/filelists/i586/linux (100%) rename config/rootfiles/{core => oldcore}/107/filelists/libjpeg (100%) rename config/rootfiles/{core => oldcore}/107/filelists/libjpeg-compat (100%) rename config/rootfiles/{core => oldcore}/107/filelists/squid (100%) rename config/rootfiles/{core => oldcore}/107/filelists/x86_64/linux (100%) create mode 100644 config/rootfiles/oldcore/107/meta rename config/rootfiles/{core => oldcore}/107/update.sh (100%) diff --git a/config/rootfiles/core/108/exclude b/config/rootfiles/core/108/exclude new file mode 100644 index 000000000..7ddeae0ba --- /dev/null +++ b/config/rootfiles/core/108/exclude @@ -0,0 +1,28 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/ovpn +var/lib/alternatives +var/log/cache +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/108/filelists/files b/config/rootfiles/core/108/filelists/files new file mode 100644 index 000000000..9fc9dbd8f --- /dev/null +++ b/config/rootfiles/core/108/filelists/files @@ -0,0 +1,4 @@ +etc/system-release +etc/issue +etc/unbound/unbound.conf +srv/web/ipfire/cgi-bin/fwhosts.cgi diff --git a/config/rootfiles/core/108/filelists/i586/strongswan-padlock b/config/rootfiles/core/108/filelists/i586/strongswan-padlock new file mode 120000 index 000000000..2412824fb --- /dev/null +++ b/config/rootfiles/core/108/filelists/i586/strongswan-padlock @@ -0,0 +1 @@ +../../../../common/i586/strongswan-padlock \ No newline at end of file diff --git a/config/rootfiles/core/108/filelists/strongswan b/config/rootfiles/core/108/filelists/strongswan new file mode 120000 index 000000000..90c727e26 --- /dev/null +++ b/config/rootfiles/core/108/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/107/meta b/config/rootfiles/core/108/meta similarity index 100% rename from config/rootfiles/core/107/meta rename to config/rootfiles/core/108/meta diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/core/108/update.sh new file mode 100644 index 000000000..045f7e7fa --- /dev/null +++ b/config/rootfiles/core/108/update.sh @@ -0,0 +1,66 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2016 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=108 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Stop services +/etc/init.d/ipsec stop + +# Extract files +extract_files + +# update linker config +ldconfig + +# Update Language cache +#/usr/local/bin/update-lang-cache + +# Start services +if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then + /etc/init.d/ipsec start +fi + +# This update need a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/core/107/exclude b/config/rootfiles/oldcore/107/exclude similarity index 100% rename from config/rootfiles/core/107/exclude rename to config/rootfiles/oldcore/107/exclude diff --git a/config/rootfiles/core/107/filelists/armv5tel/linux-kirkwood b/config/rootfiles/oldcore/107/filelists/armv5tel/linux-kirkwood similarity index 100% rename from config/rootfiles/core/107/filelists/armv5tel/linux-kirkwood rename to config/rootfiles/oldcore/107/filelists/armv5tel/linux-kirkwood diff --git a/config/rootfiles/core/107/filelists/armv5tel/linux-multi b/config/rootfiles/oldcore/107/filelists/armv5tel/linux-multi similarity index 100% rename from config/rootfiles/core/107/filelists/armv5tel/linux-multi rename to config/rootfiles/oldcore/107/filelists/armv5tel/linux-multi diff --git a/config/rootfiles/core/107/filelists/armv5tel/linux-rpi b/config/rootfiles/oldcore/107/filelists/armv5tel/linux-rpi similarity index 100% rename from config/rootfiles/core/107/filelists/armv5tel/linux-rpi rename to config/rootfiles/oldcore/107/filelists/armv5tel/linux-rpi diff --git a/config/rootfiles/core/107/filelists/files b/config/rootfiles/oldcore/107/filelists/files similarity index 100% rename from config/rootfiles/core/107/filelists/files rename to config/rootfiles/oldcore/107/filelists/files diff --git a/config/rootfiles/core/107/filelists/hdparm b/config/rootfiles/oldcore/107/filelists/hdparm similarity index 100% rename from config/rootfiles/core/107/filelists/hdparm rename to config/rootfiles/oldcore/107/filelists/hdparm diff --git a/config/rootfiles/core/107/filelists/i586/linux b/config/rootfiles/oldcore/107/filelists/i586/linux similarity index 100% rename from config/rootfiles/core/107/filelists/i586/linux rename to config/rootfiles/oldcore/107/filelists/i586/linux diff --git a/config/rootfiles/core/107/filelists/libjpeg b/config/rootfiles/oldcore/107/filelists/libjpeg similarity index 100% rename from config/rootfiles/core/107/filelists/libjpeg rename to config/rootfiles/oldcore/107/filelists/libjpeg diff --git a/config/rootfiles/core/107/filelists/libjpeg-compat b/config/rootfiles/oldcore/107/filelists/libjpeg-compat similarity index 100% rename from config/rootfiles/core/107/filelists/libjpeg-compat rename to config/rootfiles/oldcore/107/filelists/libjpeg-compat diff --git a/config/rootfiles/core/107/filelists/squid b/config/rootfiles/oldcore/107/filelists/squid similarity index 100% rename from config/rootfiles/core/107/filelists/squid rename to config/rootfiles/oldcore/107/filelists/squid diff --git a/config/rootfiles/core/107/filelists/x86_64/linux b/config/rootfiles/oldcore/107/filelists/x86_64/linux similarity index 100% rename from config/rootfiles/core/107/filelists/x86_64/linux rename to config/rootfiles/oldcore/107/filelists/x86_64/linux diff --git a/config/rootfiles/oldcore/107/meta b/config/rootfiles/oldcore/107/meta new file mode 100644 index 000000000..d547fa86f --- /dev/null +++ b/config/rootfiles/oldcore/107/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/core/107/update.sh b/config/rootfiles/oldcore/107/update.sh similarity index 100% rename from config/rootfiles/core/107/update.sh rename to config/rootfiles/oldcore/107/update.sh diff --git a/make.sh b/make.sh index 4b7beb87e..4c5996afa 100755 --- a/make.sh +++ b/make.sh @@ -25,7 +25,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number -CORE="107" # Core Level (Filename) +CORE="108" # Core Level (Filename) PAKFIRE_CORE="107" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan From 0b5b6a594cbe71d0a206176216d0ab1d749ef978 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Fri, 28 Oct 2016 15:48:22 +0200 Subject: [PATCH 005/464] ddns: Import patches for schokokeks.org support. Signed-off-by: Stefan Schantl Signed-off-by: Michael Tremer --- lfs/ddns | 3 + ...dns-0001-New-provider-Schokokeks.org.patch | 47 ++++++++++++++++ ...okokeks.org-Fix-malformed-update-URL.patch | 55 +++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 src/patches/ddns-0001-New-provider-Schokokeks.org.patch create mode 100644 src/patches/ddns-0002-Schokokeks.org-Fix-malformed-update-URL.patch diff --git a/lfs/ddns b/lfs/ddns index 422f8e3b4..3d7efa591 100644 --- a/lfs/ddns +++ b/lfs/ddns @@ -71,6 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ddns-0001-New-provider-Schokokeks.org.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ddns-0002-Schokokeks.org-Fix-malformed-update-URL.patch + cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh cd $(DIR_APP) && ./configure \ --prefix=/usr \ diff --git a/src/patches/ddns-0001-New-provider-Schokokeks.org.patch b/src/patches/ddns-0001-New-provider-Schokokeks.org.patch new file mode 100644 index 000000000..be123a523 --- /dev/null +++ b/src/patches/ddns-0001-New-provider-Schokokeks.org.patch @@ -0,0 +1,47 @@ +From 521c9d90f4e879ef3d9e1590f29e27990011ae46 Mon Sep 17 00:00:00 2001 +From: Steffen Peters +Date: Mon, 4 Jul 2016 22:14:10 +0200 +Subject: [PATCH 185/185] New provider: Schokokeks.org + +Signed-off-by: Steffen Peters +Signed-off-by: Stefan Schantl +--- + README | 1 + + src/ddns/providers.py | 12 ++++++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/README b/README +index d8027a4..cedbf21 100644 +--- a/README ++++ b/README +@@ -75,6 +75,7 @@ SUPPORTED PROVIDERS: + opendns.com + ovh.com + regfish.com ++ schokokeks.org + selfhost.de + spdns.org + strato.com +diff --git a/src/ddns/providers.py b/src/ddns/providers.py +index 6b25cb6..c482dad 100644 +--- a/src/ddns/providers.py ++++ b/src/ddns/providers.py +@@ -1687,3 +1687,15 @@ class DDNSProviderZZZZ(DDNSProvider): + + # If we got here, some other update error happened. + raise DDNSUpdateError ++ ++class DDNSProviderSchokokeksDNS(DDNSProtocolDynDNS2, DDNSProvider): ++ handle = "schokokeks.org" ++ name = "Schokokeks" ++ website = "http://www.schokokeks.org/" ++ protocols = ("ipv4",) ++ ++ # Information about the format of the request is to be found ++ # https://wiki.schokokeks.org/DynDNS ++ ++ url = "https://dyndns.schokokeks.org/nic/update?myip=" ++ +-- +2.7.4 + diff --git a/src/patches/ddns-0002-Schokokeks.org-Fix-malformed-update-URL.patch b/src/patches/ddns-0002-Schokokeks.org-Fix-malformed-update-URL.patch new file mode 100644 index 000000000..e00dcf6b8 --- /dev/null +++ b/src/patches/ddns-0002-Schokokeks.org-Fix-malformed-update-URL.patch @@ -0,0 +1,55 @@ +From f77e6bc92825d65e881d5dc7fc443139278c0d5f Mon Sep 17 00:00:00 2001 +From: Stefan Schantl +Date: Fri, 28 Oct 2016 12:35:20 +0200 +Subject: [PATCH 3/3] Schockokeks.org: Fix malformed update URL. + +* Move Provider Class into correct alphabetical order. + +Signed-off-by: Stefan Schantl +Reviewed-by: Michael Tremer +Signed-off-by: Stefan Schantl +--- + src/ddns/providers.py | 23 +++++++++++------------ + 1 file changed, 11 insertions(+), 12 deletions(-) + +diff --git a/src/ddns/providers.py b/src/ddns/providers.py +index c482dad..2c30d42 100644 +--- a/src/ddns/providers.py ++++ b/src/ddns/providers.py +@@ -1424,6 +1424,17 @@ class DDNSProviderRegfish(DDNSProvider): + raise DDNSUpdateError + + ++class DDNSProviderSchokokeksDNS(DDNSProtocolDynDNS2, DDNSProvider): ++ handle = "schokokeks.org" ++ name = "Schokokeks" ++ website = "http://www.schokokeks.org/" ++ protocols = ("ipv4",) ++ ++ # Information about the format of the request is to be found ++ # https://wiki.schokokeks.org/DynDNS ++ url = "https://dyndns.schokokeks.org/nic/update" ++ ++ + class DDNSProviderSelfhost(DDNSProtocolDynDNS2, DDNSProvider): + handle = "selfhost.de" + name = "Selfhost.de" +@@ -1687,15 +1698,3 @@ class DDNSProviderZZZZ(DDNSProvider): + + # If we got here, some other update error happened. + raise DDNSUpdateError +- +-class DDNSProviderSchokokeksDNS(DDNSProtocolDynDNS2, DDNSProvider): +- handle = "schokokeks.org" +- name = "Schokokeks" +- website = "http://www.schokokeks.org/" +- protocols = ("ipv4",) +- +- # Information about the format of the request is to be found +- # https://wiki.schokokeks.org/DynDNS +- +- url = "https://dyndns.schokokeks.org/nic/update?myip=" +- +-- +2.7.4 + From b7f2fe819b1ecf0e0c04e0059b64b67127073d44 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 28 Nov 2016 21:51:13 +0000 Subject: [PATCH 006/464] core108: Ship updated ddns Signed-off-by: Michael Tremer --- config/rootfiles/core/108/filelists/ddns | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/108/filelists/ddns diff --git a/config/rootfiles/core/108/filelists/ddns b/config/rootfiles/core/108/filelists/ddns new file mode 120000 index 000000000..739516420 --- /dev/null +++ b/config/rootfiles/core/108/filelists/ddns @@ -0,0 +1 @@ +../../../common/ddns \ No newline at end of file From adb11e90dfe701fa0e29bcc80aeb998719d99797 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 29 Nov 2016 12:18:41 +0000 Subject: [PATCH 007/464] Always enable asynchronous logging This patch always enables asynchronous logging which slows down the system a lot on slow storage and some virtual environments. It also removes the configuration options in the web user interface, since this is not configurable any more. Signed-off-by: Michael Tremer --- config/etc/syslog.conf | 6 +++--- config/rootfiles/core/108/filelists/files | 2 ++ config/rootfiles/core/108/update.sh | 1 + doc/language_issues.de | 3 +++ doc/language_issues.en | 3 +++ doc/language_issues.es | 3 ++- doc/language_issues.fr | 3 +++ doc/language_issues.it | 3 +++ doc/language_issues.nl | 3 +++ doc/language_issues.pl | 3 ++- doc/language_issues.ru | 3 +++ doc/language_issues.tr | 3 +++ html/cgi-bin/logs.cgi/config.dat | 20 -------------------- src/misc-progs/syslogdctrl.c | 23 ----------------------- 14 files changed, 31 insertions(+), 48 deletions(-) diff --git a/config/etc/syslog.conf b/config/etc/syslog.conf index b1b7ec848..cdef75682 100644 --- a/config/etc/syslog.conf +++ b/config/etc/syslog.conf @@ -5,10 +5,10 @@ # Log anything (except mail) of level info or higher. # Don't log private authentication messages! # local0.* any dhcpcd log (even debug) in messages -cron.none;daemon.*;local0.*;local2.*;*.info;mail.none;authpriv.* /var/log/messages +cron.none;daemon.*;local0.*;local2.*;*.info;mail.none;authpriv.* -/var/log/messages # Log crons -#cron.* /var/log/cron.log +#cron.* -/var/log/cron.log # Everybody gets emergency messages *.emerg * @@ -20,4 +20,4 @@ cron.none;daemon.*;local0.*;local2.*;*.info;mail.none;authpriv.* /var/log/messag #*.* @hostname.domain # Postfix logs -mail.* /var/log/mail +mail.* -/var/log/mail diff --git a/config/rootfiles/core/108/filelists/files b/config/rootfiles/core/108/filelists/files index 9fc9dbd8f..7ef09c48b 100644 --- a/config/rootfiles/core/108/filelists/files +++ b/config/rootfiles/core/108/filelists/files @@ -1,4 +1,6 @@ etc/system-release etc/issue +etc/syslog.conf etc/unbound/unbound.conf srv/web/ipfire/cgi-bin/fwhosts.cgi +srv/web/ipfire/cgi-bin/logs.cgi/config.dat diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/core/108/update.sh index 045f7e7fa..3874a6e70 100644 --- a/config/rootfiles/core/108/update.sh +++ b/config/rootfiles/core/108/update.sh @@ -44,6 +44,7 @@ ldconfig #/usr/local/bin/update-lang-cache # Start services +/etc/init.d/sysklogd restart if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then /etc/init.d/ipsec start fi diff --git a/doc/language_issues.de b/doc/language_issues.de index 101411e89..48d7f6a1c 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: HDD temperature @@ -335,6 +336,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -361,6 +363,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.en b/doc/language_issues.en index 596cf7108..03628020a 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: HDD temperature @@ -361,6 +362,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -387,6 +389,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.es b/doc/language_issues.es index ad64380c6..60ba499c9 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -305,6 +305,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -331,6 +332,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz @@ -616,7 +618,6 @@ WARNING: translation string unused: xtaccess all error WARNING: translation string unused: xtaccess bad transfert WARNING: translation string unused: year-graph WARNING: translation string unused: yearly firewallhits -WARNING: untranslated string: Async logging enabled WARNING: untranslated string: ConnSched dial WARNING: untranslated string: ConnSched hangup WARNING: untranslated string: ConnSched reboot diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 28e80c976..863b5291a 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile @@ -302,6 +303,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -328,6 +330,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.it b/doc/language_issues.it index d221534a5..6efef40f4 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile @@ -353,6 +354,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -379,6 +381,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 1dfc968ea..c9b10dcd6 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile @@ -352,6 +353,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -378,6 +380,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.pl b/doc/language_issues.pl index ad64380c6..60ba499c9 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -305,6 +305,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -331,6 +332,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz @@ -616,7 +618,6 @@ WARNING: translation string unused: xtaccess all error WARNING: translation string unused: xtaccess bad transfert WARNING: translation string unused: year-graph WARNING: translation string unused: yearly firewallhits -WARNING: untranslated string: Async logging enabled WARNING: untranslated string: ConnSched dial WARNING: untranslated string: ConnSched hangup WARNING: untranslated string: ConnSched reboot diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 31855fa7b..255df2f68 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile @@ -297,6 +298,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -323,6 +325,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 6629cd632..8cf2dfe11 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -1,3 +1,4 @@ +WARNING: translation string unused: Async logging enabled WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: HDD temperature @@ -361,6 +362,7 @@ WARNING: translation string unused: local hard disk WARNING: translation string unused: localkey WARNING: translation string unused: localkeyfile WARNING: translation string unused: log enabled +WARNING: translation string unused: log var messages WARNING: translation string unused: log viewer WARNING: translation string unused: logging WARNING: translation string unused: loosedirectorychecking @@ -387,6 +389,7 @@ WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value +WARNING: translation string unused: messages logging WARNING: translation string unused: min size WARNING: translation string unused: missing dat WARNING: translation string unused: missing gz diff --git a/html/cgi-bin/logs.cgi/config.dat b/html/cgi-bin/logs.cgi/config.dat index 1f97a170b..789341dbe 100644 --- a/html/cgi-bin/logs.cgi/config.dat +++ b/html/cgi-bin/logs.cgi/config.dat @@ -32,9 +32,7 @@ $logsettings{'LOGWATCH_LEVEL'} = 'Low'; $logsettings{'LOGWATCH_KEEP'} = '56'; my @VS = ('15','50','100','150','250','500'); $logsettings{'ENABLE_REMOTELOG'} = 'off'; -$logsettings{'ENABLE_ASYNCLOG'} = 'off'; $logsettings{'REMOTELOG_ADDR'} = ''; -$logsettings{'VARMESSAGES'} = 'cron.none;daemon.*;local0.*;local2.*;*.info;mail.none;authpriv.*'; $logsettings{'ACTION'} = ''; &Header::getcgihash(\%logsettings); @@ -67,10 +65,6 @@ if ($logsettings{'ACTION'} eq $Lang::tr{'save'}) &General::readhash("${General::swroot}/logging/settings", \%logsettings); -$checked{'ENABLE_ASYNCLOG'}{'off'} = ''; -$checked{'ENABLE_ASYNCLOG'}{'on'} = ''; -$checked{'ENABLE_ASYNCLOG'}{$logsettings{'ENABLE_ASYNCLOG'}} = "checked='checked'"; - $checked{'ENABLE_REMOTELOG'}{'off'} = ''; $checked{'ENABLE_REMOTELOG'}{'on'} = ''; $checked{'ENABLE_REMOTELOG'}{$logsettings{'ENABLE_REMOTELOG'}} = "checked='checked'"; @@ -151,20 +145,6 @@ END ; &Header::closebox(); -&Header::openbox('100%', 'left', $Lang::tr{'messages logging'}); -print < - - $Lang::tr{'Async logging enabled'} - - - $Lang::tr{'log var messages'} - - -END -; -&Header::closebox(); - print < diff --git a/src/misc-progs/syslogdctrl.c b/src/misc-progs/syslogdctrl.c index 8111c84c5..52719023e 100644 --- a/src/misc-progs/syslogdctrl.c +++ b/src/misc-progs/syslogdctrl.c @@ -67,19 +67,6 @@ int main(void) exit(ERR_SETTINGS); } - if (!findkey(kv, "ENABLE_ASYNCLOG", asynclog)) - { - fprintf(stderr, "Cannot read ENABLE_ASYNCLOG\n"); - exit(ERR_SETTINGS); - } - - - if (!findkey(kv, "VARMESSAGES", varmessages)) - { - fprintf(stderr, "Cannot read VARMESSAGES\n"); - exit(ERR_SETTINGS); - } - if (strspn(hostname, VALID_FQDN) != strlen(hostname)) { fprintf(stderr, "Bad REMOTELOG_ADDR: %s\n", hostname); @@ -133,16 +120,6 @@ int main(void) } close(config_fd); - /* Replace the logging option*/ - safe_system("grep -v '/var/log/messages' < /etc/syslog.conf.new > /etc/syslog.conf.tmp && mv /etc/syslog.conf.tmp /etc/syslog.conf.new"); - - if (!strcmp(asynclog,"on")) - snprintf(command, STRING_SIZE - 1, "printf '%s -/var/log/messages' >> /etc/syslog.conf.new", varmessages ); - else - snprintf(command, STRING_SIZE - 1, "printf '%s /var/log/messages' >> /etc/syslog.conf.new", varmessages ); - - safe_system(command); - if (rename("/etc/syslog.conf.new", "/etc/syslog.conf") == -1) { perror("Unable to replace old config file"); From cd812106b19a146d175fc2e13efcdc68ad04754e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 29 Nov 2016 12:26:34 +0000 Subject: [PATCH 008/464] unbound: Do not try removing forwarders when unbound is not running Signed-off-by: Michael Tremer --- src/initscripts/init.d/unbound | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 01a560d40..1ecbf229e 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -366,6 +366,11 @@ case "$1" in ;; update-forwarders) + # Do not try updating forwarders when unbound is not running + if ! pgrep unbound &>/dev/null; then + exit 0 + fi + update_forwarders ;; From 2aa15dee660214bfe4f402ff7c34c28b9bb068bc Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 1 Dec 2016 17:13:07 +0000 Subject: [PATCH 009/464] unbound: Fix DNS forwarder test The previous version aborted when the validation test suceeded, but this is not always sufficient in case a provider filters any DNSKEY, DS or RRSIG records. Signed-off-by: Michael Tremer --- config/rootfiles/core/108/filelists/files | 1 + config/rootfiles/core/108/update.sh | 3 +++ src/initscripts/init.d/unbound | 12 +++++++----- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/config/rootfiles/core/108/filelists/files b/config/rootfiles/core/108/filelists/files index 7ef09c48b..6cce4ead1 100644 --- a/config/rootfiles/core/108/filelists/files +++ b/config/rootfiles/core/108/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound etc/syslog.conf etc/unbound/unbound.conf srv/web/ipfire/cgi-bin/fwhosts.cgi diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/core/108/update.sh index 3874a6e70..ba4a6690e 100644 --- a/config/rootfiles/core/108/update.sh +++ b/config/rootfiles/core/108/update.sh @@ -43,6 +43,9 @@ ldconfig # Update Language cache #/usr/local/bin/update-lang-cache +# Reload unbound upstream name servers +/etc/init.d/unbound update-forwarders + # Start services /etc/init.d/sysklogd restart if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 1ecbf229e..6c7be6cfd 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -259,9 +259,6 @@ test_name_server() { # Exit when the server is not reachable ns_is_online ${ns} || return 1 - # Return 0 if validating - ns_is_validating ${ns} && return 0 - local errors for rr in DNSKEY DS RRSIG; do if ! ns_forwards_${rr} ${ns}; then @@ -274,8 +271,13 @@ test_name_server() { return 3 fi - # Is DNSSEC-aware - return 2 + if ns_is_validating ${ns}; then + # Return 0 if validating + return 0 + else + # Is DNSSEC-aware + return 2 + fi } # Sends an A query to the nameserver w/o DNSSEC From 6268c62384c17112f10cb0c6acc3b0951eb81f2c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 3 Dec 2016 13:30:02 +0000 Subject: [PATCH 010/464] tor: Update to 0.2.8.10 Brings various major bugfixes and privacy enhancements Signed-off-by: Michael Tremer --- lfs/tor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/tor b/lfs/tor index a00ff2596..5f39d7897 100644 --- a/lfs/tor +++ b/lfs/tor @@ -24,7 +24,7 @@ include Config -VER = 0.2.7.6 +VER = 0.2.8.10 THISAPP = tor-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = tor -PAK_VER = 17 +PAK_VER = 18 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = cc19107b57136a68e8c563bf2d35b072 +$(DL_FILE)_MD5 = f5762c9eeb7bc68a6405cd5d6a53b5d7 install : $(TARGET) From 31986a351cc54a07a2205f5426e80e143afa87c5 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Thu, 1 Dec 2016 18:32:31 +0100 Subject: [PATCH 011/464] ntp: Update to 4.2.8p9 "It addresses 1 high-, 2 medium-, 2 medium-/low-, and 5 low-severity security issues, 28 bugfixes, and contains other improvements over 4.2.8p8." For a complete list, see: http://support.ntp.org/bin/view/Main/SecurityNotice#Recent_Vulnerabilities Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/ntp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/ntp b/lfs/ntp index 536a4a8cf..572bb882f 100644 --- a/lfs/ntp +++ b/lfs/ntp @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2016 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 4.2.8p8 +VER = 4.2.8p9 THISAPP = ntp-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4a8636260435b230636f053ffd070e34 +$(DL_FILE)_MD5 = 857452b05f5f2e033786f77ade1974ed install : $(TARGET) From 67214dc2eb6b0a7c1b0f43e049a0aad6802a8db1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 6 Dec 2016 14:17:05 +0000 Subject: [PATCH 012/464] core108: Ship updated NTP Signed-off-by: Michael Tremer --- config/rootfiles/core/108/filelists/ntp | 1 + config/rootfiles/core/108/update.sh | 1 + 2 files changed, 2 insertions(+) create mode 120000 config/rootfiles/core/108/filelists/ntp diff --git a/config/rootfiles/core/108/filelists/ntp b/config/rootfiles/core/108/filelists/ntp new file mode 120000 index 000000000..7542d86cb --- /dev/null +++ b/config/rootfiles/core/108/filelists/ntp @@ -0,0 +1 @@ +../../../common/ntp \ No newline at end of file diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/core/108/update.sh index ba4a6690e..1217f20f8 100644 --- a/config/rootfiles/core/108/update.sh +++ b/config/rootfiles/core/108/update.sh @@ -51,6 +51,7 @@ ldconfig if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then /etc/init.d/ipsec start fi +/etc/init.d/ntp restart # This update need a reboot... #touch /var/run/need_reboot From cc2a2209d8797569013c9dec58ff10e49dfabec5 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 21 Oct 2016 20:30:29 +0200 Subject: [PATCH 013/464] squid 3.5.22: latest patch (14099) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 1 + src/patches/squid/squid-3.5-14099.patch | 65 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14099.patch diff --git a/lfs/squid b/lfs/squid index 269c663b4..f6015afd1 100644 --- a/lfs/squid +++ b/lfs/squid @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14099.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14099.patch b/src/patches/squid/squid-3.5-14099.patch new file mode 100644 index 000000000..0e10effec --- /dev/null +++ b/src/patches/squid/squid-3.5-14099.patch @@ -0,0 +1,65 @@ +------------------------------------------------------------ +revno: 14099 +revision-id: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 +parent: squid3@treenet.co.nz-20161009195739-pcju9hl8vqwijt26 +author: Alex Rousskov +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sat 2016-10-15 17:20:24 +1300 +message: + Fix build with eCAP but without ICAP support. + + That is, when ./configured with --enable-ecap --disable-icap-client. + + AccessLogEntry::icap requires ICAP_CLIENT, not just USE_ADAPTATION. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 4cd2e7bf4e2be0acd252963afc107537b17450fc +# timestamp: 2016-10-15 04:52:07 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161009195739-\ +# pcju9hl8vqwijt26 +# +# Begin patch +=== modified file 'src/format/Format.cc' +--- src/format/Format.cc 2016-09-16 11:53:28 +0000 ++++ src/format/Format.cc 2016-10-15 04:20:24 +0000 +@@ -318,7 +318,7 @@ + actualReplyHeader(const AccessLogEntry::Pointer &al) + { + const HttpMsg *msg = al->reply; +-#if USE_ADAPTATION ++#if ICAP_CLIENT + // al->icap.reqMethod is methodNone in access.log context + if (!msg && al->icap.reqMethod == Adaptation::methodReqmod) + msg = al->adapted_request; +@@ -331,7 +331,7 @@ + static const HttpMsg * + actualRequestHeader(const AccessLogEntry::Pointer &al) + { +-#if USE_ADAPTATION ++#if ICAP_CLIENT + // al->icap.reqMethod is methodNone in access.log context + if (al->icap.reqMethod == Adaptation::methodRespmod) { + // XXX: for now AccessLogEntry lacks virgin response headers +@@ -819,7 +819,7 @@ + break; + + case LFT_REQUEST_ALL_HEADERS: +-#if USE_ADAPTATION ++#if ICAP_CLIENT + if (al->icap.reqMethod == Adaptation::methodRespmod) { + // XXX: since AccessLogEntry::Headers lacks virgin response + // headers, do nothing for now +@@ -843,7 +843,7 @@ + + case LFT_REPLY_ALL_HEADERS: + out = al->headers.reply; +-#if USE_ADAPTATION ++#if ICAP_CLIENT + if (!out && al->icap.reqMethod == Adaptation::methodReqmod) + out = al->headers.adapted_request; + #endif + From cc8f79f95fea8a2eb87f888c472c311df585035e Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 28 Oct 2016 09:49:32 +0200 Subject: [PATCH 014/464] squid 3.5.22: latest patches (14100-14102) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 3 ++ src/patches/squid/squid-3.5-14100.patch | 39 ++++++++++++++++ src/patches/squid/squid-3.5-14101.patch | 59 +++++++++++++++++++++++++ src/patches/squid/squid-3.5-14102.patch | 38 ++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14100.patch create mode 100644 src/patches/squid/squid-3.5-14101.patch create mode 100644 src/patches/squid/squid-3.5-14102.patch diff --git a/lfs/squid b/lfs/squid index f6015afd1..338dcc92c 100644 --- a/lfs/squid +++ b/lfs/squid @@ -71,6 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14099.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14100.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14101.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14102.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14100.patch b/src/patches/squid/squid-3.5-14100.patch new file mode 100644 index 000000000..7e5335a64 --- /dev/null +++ b/src/patches/squid/squid-3.5-14100.patch @@ -0,0 +1,39 @@ +------------------------------------------------------------ +revno: 14100 +revision-id: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke +parent: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Tue 2016-10-25 21:19:49 +1300 +message: + Fix regression bug introduced by r14089. + + Squid crashed because HttpMsg::body_pipe was used without check that it + was initialized. The message lacks body pipe when it has no body or + empty body. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 50468130801fc3ebf75129c103bcfe4be9b6d4b7 +# timestamp: 2016-10-25 08:28:30 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161015042024-\ +# jagzafukd2t6gcr0 +# +# Begin patch +=== modified file 'src/adaptation/icap/ModXact.cc' +--- src/adaptation/icap/ModXact.cc 2016-09-16 18:50:04 +0000 ++++ src/adaptation/icap/ModXact.cc 2016-10-25 08:19:49 +0000 +@@ -1303,7 +1303,8 @@ + virgin_msg = virgin_request_; + assert(virgin_msg != virgin.cause); + al.http.clientRequestSz.header = virgin_msg->hdr_sz; +- al.http.clientRequestSz.payloadData = virgin_msg->body_pipe->producedSize(); ++ if (virgin_msg->body_pipe != NULL) ++ al.http.clientRequestSz.payloadData = virgin_msg->body_pipe->producedSize(); + + // leave al.icap.bodyBytesRead negative if no body + if (replyHttpHeaderSize >= 0 || replyHttpBodySize >= 0) { + diff --git a/src/patches/squid/squid-3.5-14101.patch b/src/patches/squid/squid-3.5-14101.patch new file mode 100644 index 000000000..92ff4d448 --- /dev/null +++ b/src/patches/squid/squid-3.5-14101.patch @@ -0,0 +1,59 @@ +------------------------------------------------------------ +revno: 14101 +revision-id: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem +parent: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Tue 2016-10-25 21:23:49 +1300 +message: + Fix external_acl_type default children documentations + + The max children has always been 5, not 20. + + Also, make mgr:config report dumper actually hide only the real default + values. (sync with helper/ChildConfig.cc defaults) +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 02234eff0589032ea31d911c20f792617eeb18a9 +# timestamp: 2016-10-25 08:28:32 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161025081949-\ +# 3sxzd0n4snmadlke +# +# Begin patch +=== modified file 'src/cf.data.pre' +--- src/cf.data.pre 2016-09-23 15:28:42 +0000 ++++ src/cf.data.pre 2016-10-25 08:23:49 +0000 +@@ -678,7 +678,7 @@ + + children-max=n + Maximum number of acl helper processes spawned to service +- external acl lookups of this type. (default 20) ++ external acl lookups of this type. (default 5) + + children-startup=n + Minimum number of acl helper processes to spawn during + +=== modified file 'src/external_acl.cc' +--- src/external_acl.cc 2016-05-17 18:14:16 +0000 ++++ src/external_acl.cc 2016-10-25 08:23:49 +0000 +@@ -474,13 +474,13 @@ + if (node->children.n_max != DEFAULT_EXTERNAL_ACL_CHILDREN) + storeAppendPrintf(sentry, " children-max=%d", node->children.n_max); + +- if (node->children.n_startup != 1) ++ if (node->children.n_startup != 0) // sync with helper/ChildConfig.cc default + storeAppendPrintf(sentry, " children-startup=%d", node->children.n_startup); + +- if (node->children.n_idle != (node->children.n_max + node->children.n_startup) ) ++ if (node->children.n_idle != 1) // sync with helper/ChildConfig.cc default + storeAppendPrintf(sentry, " children-idle=%d", node->children.n_idle); + +- if (node->children.concurrency) ++ if (node->children.concurrency != 0) + storeAppendPrintf(sentry, " concurrency=%d", node->children.concurrency); + + if (node->cache) + diff --git a/src/patches/squid/squid-3.5-14102.patch b/src/patches/squid/squid-3.5-14102.patch new file mode 100644 index 000000000..f59253161 --- /dev/null +++ b/src/patches/squid/squid-3.5-14102.patch @@ -0,0 +1,38 @@ +------------------------------------------------------------ +revno: 14102 +revision-id: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et +parent: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4620 +author: Takahiro Kambe +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Tue 2016-10-25 21:25:30 +1300 +message: + Bug 4620: NetBSD build error with --enable-ipf-transparent + + On NetBSD sys/param.h must be included before netinet/ip_compat.h +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: eedfc8764a631aa008fd4aba589ca08ee161c3a5 +# timestamp: 2016-10-25 08:28:35 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161025082349-\ +# 4gds2nic8qcahkem +# +# Begin patch +=== modified file 'src/ip/Intercept.cc' +--- src/ip/Intercept.cc 2016-10-09 00:14:14 +0000 ++++ src/ip/Intercept.cc 2016-10-25 08:25:30 +0000 +@@ -25,6 +25,9 @@ + #define IPFILTER_VERSION 5000004 + #endif + ++#if HAVE_SYS_PARAM_H ++#include ++#endif + #if HAVE_SYS_IOCCOM_H + #include + #endif + From 262c48be60bbfaa1f190aeacffd303800f3090cf Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 30 Nov 2016 18:50:05 +0100 Subject: [PATCH 015/464] squid 3.5.22: latest patches (14103-14113) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 11 ++ src/patches/squid/squid-3.5-14103.patch | 61 +++++++++ src/patches/squid/squid-3.5-14104.patch | 66 ++++++++++ src/patches/squid/squid-3.5-14105.patch | 48 +++++++ src/patches/squid/squid-3.5-14106.patch | 34 +++++ src/patches/squid/squid-3.5-14107.patch | 56 ++++++++ src/patches/squid/squid-3.5-14108.patch | 33 +++++ src/patches/squid/squid-3.5-14109.patch | 167 ++++++++++++++++++++++++ src/patches/squid/squid-3.5-14110.patch | 102 +++++++++++++++ src/patches/squid/squid-3.5-14111.patch | 43 ++++++ src/patches/squid/squid-3.5-14112.patch | 60 +++++++++ src/patches/squid/squid-3.5-14113.patch | 47 +++++++ 12 files changed, 728 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14103.patch create mode 100644 src/patches/squid/squid-3.5-14104.patch create mode 100644 src/patches/squid/squid-3.5-14105.patch create mode 100644 src/patches/squid/squid-3.5-14106.patch create mode 100644 src/patches/squid/squid-3.5-14107.patch create mode 100644 src/patches/squid/squid-3.5-14108.patch create mode 100644 src/patches/squid/squid-3.5-14109.patch create mode 100644 src/patches/squid/squid-3.5-14110.patch create mode 100644 src/patches/squid/squid-3.5-14111.patch create mode 100644 src/patches/squid/squid-3.5-14112.patch create mode 100644 src/patches/squid/squid-3.5-14113.patch diff --git a/lfs/squid b/lfs/squid index 338dcc92c..dbe79cb98 100644 --- a/lfs/squid +++ b/lfs/squid @@ -74,6 +74,17 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14100.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14101.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14102.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14103.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14104.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14105.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14106.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14107.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14108.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14109.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14110.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14111.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14112.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14113.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14103.patch b/src/patches/squid/squid-3.5-14103.patch new file mode 100644 index 000000000..816aa9173 --- /dev/null +++ b/src/patches/squid/squid-3.5-14103.patch @@ -0,0 +1,61 @@ +------------------------------------------------------------ +revno: 14103 +revision-id: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v +parent: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4627 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2016-10-30 12:26:28 +1300 +message: + Bug 4627: fix generate-host-certificates and dynamic_cert_mem_cache_size docs + + For Squid-3 the fix is just to update the documentation. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: ea728cefc977ea5489da01b7a742821121c29476 +# timestamp: 2016-10-29 23:51:13 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161025082530-\ +# do632qnr9bwyk5et +# +# Begin patch +=== modified file 'src/cf.data.pre' +--- src/cf.data.pre 2016-10-25 08:23:49 +0000 ++++ src/cf.data.pre 2016-10-29 23:26:28 +0000 +@@ -1787,13 +1787,12 @@ + certificate equals lifetime of the CA certificate. If + generated certificate is selfsigned lifetime is three + years. +- This option is enabled by default when ssl-bump is used. +- See the ssl-bump option above for more information. ++ This option is disabled by default. See the ssl-bump ++ option above for more information. + + dynamic_cert_mem_cache_size=SIZE + Approximate total RAM size spent on cached generated +- certificates. If set to zero, caching is disabled. The +- default value is 4MB. ++ certificates. If set to zero, caching is disabled. + + TLS / SSL Options: + +@@ -2063,13 +2062,12 @@ + certificate equals lifetime of CA certificate. If + generated certificate is selfsigned lifetime is three + years. +- This option is enabled by default when SslBump is used. +- See the sslBump option above for more information. ++ This option is disabled by default. See the ssl-bump ++ option above for more information. + + dynamic_cert_mem_cache_size=SIZE + Approximate total RAM size spent on cached generated +- certificates. If set to zero, caching is disabled. The +- default value is 4MB. ++ certificates. If set to zero, caching is disabled. + + See http_port for a list of available options. + DOC_END + diff --git a/src/patches/squid/squid-3.5-14104.patch b/src/patches/squid/squid-3.5-14104.patch new file mode 100644 index 000000000..c5d6ed088 --- /dev/null +++ b/src/patches/squid/squid-3.5-14104.patch @@ -0,0 +1,66 @@ +------------------------------------------------------------ +revno: 14104 +revision-id: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks +parent: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2016-10-30 22:38:16 +1300 +message: + Copyright: add some missing blurbs and contributor details +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 8d44709a8f9c34926ce569e58aef82603a3d514b +# timestamp: 2016-10-30 09:40:44 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161029232628-\ +# 1y2u918re62uqs3v +# +# Begin patch +=== modified file 'CONTRIBUTORS' +--- CONTRIBUTORS 2016-01-06 14:27:36 +0000 ++++ CONTRIBUTORS 2016-10-30 09:38:16 +0000 +@@ -211,6 +211,8 @@ + Joe Ramey + Joerg Lehrke + Johnathan Conley ++ John@MCC.ac.uk ++ John@Pharmweb.NET + John Dilley + John M Cooper + John Saunders + +=== modified file 'contrib/url-normalizer.pl' +--- contrib/url-normalizer.pl 1996-12-07 00:54:31 +0000 ++++ contrib/url-normalizer.pl 2016-10-30 09:38:16 +0000 +@@ -1,4 +1,11 @@ + #!/usr/local/bin/perl -Tw ++# ++# * Copyright (C) 1996-2016 The Squid Software Foundation and contributors ++# * ++# * Squid software is distributed under GPLv2+ license and includes ++# * contributions from numerous individuals and organizations. ++# * Please see the COPYING and CONTRIBUTORS files for details. ++# + + # From: Markus Gyger + # + +=== modified file 'contrib/user-agents.pl' +--- contrib/user-agents.pl 1996-12-07 00:28:56 +0000 ++++ contrib/user-agents.pl 2016-10-30 09:38:16 +0000 +@@ -1,5 +1,13 @@ + #!/usr/bin/perl + # ++# * Copyright (C) 1996-2016 The Squid Software Foundation and contributors ++# * ++# * Squid software is distributed under GPLv2+ license and includes ++# * contributions from numerous individuals and organizations. ++# * Please see the COPYING and CONTRIBUTORS files for details. ++# ++ ++# + # John@MCC.ac.uk + # John@Pharmweb.NET + diff --git a/src/patches/squid/squid-3.5-14105.patch b/src/patches/squid/squid-3.5-14105.patch new file mode 100644 index 000000000..d73dcea89 --- /dev/null +++ b/src/patches/squid/squid-3.5-14105.patch @@ -0,0 +1,48 @@ +------------------------------------------------------------ +revno: 14105 +revision-id: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq +parent: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4567 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2016-10-30 22:39:20 +1300 +message: + Bug 4567: Strange IPv6 shown in access.log +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 8dbae4e7fc5fb80afc6eee6800743abd1b1eaa47 +# timestamp: 2016-10-30 09:40:47 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161030093816-\ +# 7vwnk5zrrql2p5ks +# +# Begin patch +=== modified file 'src/AccessLogEntry.cc' +--- src/AccessLogEntry.cc 2016-01-01 00:14:27 +0000 ++++ src/AccessLogEntry.cc 2016-10-30 09:39:20 +0000 +@@ -30,14 +30,17 @@ + log_ip = request->indirect_client_addr; + else + #endif +- if (tcpClient != NULL) ++ if (tcpClient) + log_ip = tcpClient->remote; +- else if (cache.caddr.isNoAddr()) { // e.g., ICAP OPTIONS lack client +- strncpy(buf, "-", bufsz); +- return; +- } else ++ else + log_ip = cache.caddr; + ++ // internally generated requests (and some ICAP) lack client IP ++ if (log_ip.isNoAddr()) { ++ strncpy(buf, "-", bufsz); ++ return; ++ } ++ + // Apply so-called 'privacy masking' to IPv4 clients + // - localhost IP is always shown in full + // - IPv4 clients masked with client_netmask + diff --git a/src/patches/squid/squid-3.5-14106.patch b/src/patches/squid/squid-3.5-14106.patch new file mode 100644 index 000000000..cd3f63fa6 --- /dev/null +++ b/src/patches/squid/squid-3.5-14106.patch @@ -0,0 +1,34 @@ +------------------------------------------------------------ +revno: 14106 +revision-id: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d +parent: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2016-10-30 22:40:25 +1300 +message: + Fix debug message in ACLChecklist::bannedAction() +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 4fd7942b294096f5c27e3d460b6d4c79580443e1 +# timestamp: 2016-10-30 09:40:49 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161030093920-\ +# 5f7f2px9ea08rxlq +# +# Begin patch +=== modified file 'src/acl/Checklist.cc' +--- src/acl/Checklist.cc 2016-01-01 00:14:27 +0000 ++++ src/acl/Checklist.cc 2016-10-30 09:40:25 +0000 +@@ -397,7 +397,7 @@ + ACLChecklist::bannedAction(const allow_t &action) const + { + const bool found = std::find(bannedActions_.begin(), bannedActions_.end(), action) != bannedActions_.end(); +- debugs(28, 5, "Action '" << action << "/" << action.kind << (found ? " is " : "is not") << " banned"); ++ debugs(28, 5, "Action '" << action << "/" << action.kind << (found ? "' is " : "' is not") << " banned"); + return found; + } + + diff --git a/src/patches/squid/squid-3.5-14107.patch b/src/patches/squid/squid-3.5-14107.patch new file mode 100644 index 000000000..34b0ace4c --- /dev/null +++ b/src/patches/squid/squid-3.5-14107.patch @@ -0,0 +1,56 @@ +------------------------------------------------------------ +revno: 14107 +revision-id: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns +parent: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2016-10-30 22:45:03 +1300 +message: + HTTP/1.1: make Vary:* objects cacheable + + Under new clauses from RFC 7231 section 7.1.4 and HTTP response + containing header Vary:* (wifcard variant) can be cached, but + requires revalidation with server before each use. + + Use the new mandatory revalidation flags to allow storing of any + wildcard Vary:* response. + + Note that responses with headers like Vary:A,B,C,* are equivalent + to Vary:*. The cache key string for these objects is normalized. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 2652a5a689745e31fc450e0dfd1c5c472f6d68d6 +# timestamp: 2016-10-30 09:45:47 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161030094025-\ +# l4b8fdahoru8h16d +# +# Begin patch +=== modified file 'src/http.cc' +--- src/http.cc 2016-10-09 19:47:26 +0000 ++++ src/http.cc 2016-10-30 09:45:03 +0000 +@@ -594,7 +594,7 @@ + while (strListGetItem(&vary, ',', &item, &ilen, &pos)) { + SBuf name(item, ilen); + if (name == asterisk) { +- vstr.clear(); ++ vstr = asterisk; + break; + } + name.toLower(); +@@ -917,6 +917,12 @@ + varyFailure = true; + } else { + entry->mem_obj->vary_headers = vary; ++ ++ // RFC 7231 section 7.1.4 ++ // Vary:* can be cached, but has mandatory revalidation ++ static const SBuf asterisk("*"); ++ if (vary == asterisk) ++ EBIT_SET(entry->flags, ENTRY_REVALIDATE_ALWAYS); + } + } + + diff --git a/src/patches/squid/squid-3.5-14108.patch b/src/patches/squid/squid-3.5-14108.patch new file mode 100644 index 000000000..282fe41d9 --- /dev/null +++ b/src/patches/squid/squid-3.5-14108.patch @@ -0,0 +1,33 @@ +------------------------------------------------------------ +revno: 14108 +revision-id: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx +parent: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Wed 2016-11-02 00:22:31 +1300 +message: + Fix build issue after rev.14105 +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: fea1ede525ccb3ad7bf50e8de8f125a86a8dc016 +# timestamp: 2016-11-01 11:51:06 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161030094503-\ +# rwdft21ffff44rns +# +# Begin patch +=== modified file 'src/AccessLogEntry.cc' +--- src/AccessLogEntry.cc 2016-10-30 09:39:20 +0000 ++++ src/AccessLogEntry.cc 2016-11-01 11:22:31 +0000 +@@ -30,7 +30,7 @@ + log_ip = request->indirect_client_addr; + else + #endif +- if (tcpClient) ++ if (tcpClient != NULL) + log_ip = tcpClient->remote; + else + log_ip = cache.caddr; + diff --git a/src/patches/squid/squid-3.5-14109.patch b/src/patches/squid/squid-3.5-14109.patch new file mode 100644 index 000000000..82b7dd270 --- /dev/null +++ b/src/patches/squid/squid-3.5-14109.patch @@ -0,0 +1,167 @@ +------------------------------------------------------------ +revno: 14109 +revision-id: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h +parent: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3379 +author: Garri Djavadyan , Amos Jeffries +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2016-11-11 19:03:25 +1300 +message: + Bug 3379: Combination of If-Match and a Cache Hit result in TCP Connection Failure +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 50d66878a765925d9a64569b3c226bebdee1f736 +# timestamp: 2016-11-11 06:10:37 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161101112231-\ +# k77st4up2sekl5zx +# +# Begin patch +=== modified file 'src/client_side_reply.cc' +--- src/client_side_reply.cc 2016-10-09 19:47:26 +0000 ++++ src/client_side_reply.cc 2016-11-11 06:03:25 +0000 +@@ -589,6 +589,7 @@ + debugs(88, 5, "negative-HIT"); + http->logType = LOG_TCP_NEGATIVE_HIT; + sendMoreData(result); ++ return; + } else if (blockedHit()) { + debugs(88, 5, "send_hit forces a MISS"); + http->logType = LOG_TCP_MISS; +@@ -641,27 +642,29 @@ + http->logType = LOG_TCP_MISS; + processMiss(); + } ++ return; + } else if (r->conditional()) { + debugs(88, 5, "conditional HIT"); +- processConditional(result); +- } else { +- /* +- * plain ol' cache hit +- */ +- debugs(88, 5, "plain old HIT"); ++ if (processConditional(result)) ++ return; ++ } ++ ++ /* ++ * plain ol' cache hit ++ */ ++ debugs(88, 5, "plain old HIT"); + + #if USE_DELAY_POOLS +- if (e->store_status != STORE_OK) +- http->logType = LOG_TCP_MISS; +- else ++ if (e->store_status != STORE_OK) ++ http->logType = LOG_TCP_MISS; ++ else + #endif +- if (e->mem_status == IN_MEMORY) +- http->logType = LOG_TCP_MEM_HIT; +- else if (Config.onoff.offline) +- http->logType = LOG_TCP_OFFLINE_HIT; ++ if (e->mem_status == IN_MEMORY) ++ http->logType = LOG_TCP_MEM_HIT; ++ else if (Config.onoff.offline) ++ http->logType = LOG_TCP_OFFLINE_HIT; + +- sendMoreData(result); +- } ++ sendMoreData(result); + } + + /** +@@ -755,17 +758,16 @@ + } + + /// process conditional request from client +-void ++bool + clientReplyContext::processConditional(StoreIOBuffer &result) + { + StoreEntry *const e = http->storeEntry(); + + if (e->getReply()->sline.status() != Http::scOkay) { +- debugs(88, 4, "clientReplyContext::processConditional: Reply code " << +- e->getReply()->sline.status() << " != 200"); ++ debugs(88, 4, "Reply code " << e->getReply()->sline.status() << " != 200"); + http->logType = LOG_TCP_MISS; + processMiss(); +- return; ++ return true; + } + + HttpRequest &r = *http->request; +@@ -773,7 +775,7 @@ + if (r.header.has(HDR_IF_MATCH) && !e->hasIfMatchEtag(r)) { + // RFC 2616: reply with 412 Precondition Failed if If-Match did not match + sendPreconditionFailedError(); +- return; ++ return true; + } + + bool matchedIfNoneMatch = false; +@@ -786,14 +788,14 @@ + r.header.delById(HDR_IF_MODIFIED_SINCE); + http->logType = LOG_TCP_MISS; + sendMoreData(result); +- return; ++ return true; + } + + if (!r.flags.ims) { + // RFC 2616: if If-None-Match matched and there is no IMS, + // reply with 304 Not Modified or 412 Precondition Failed + sendNotModifiedOrPreconditionFailedError(); +- return; ++ return true; + } + + // otherwise check IMS below to decide if we reply with 304 or 412 +@@ -805,19 +807,20 @@ + if (e->modifiedSince(r.ims, r.imslen)) { + http->logType = LOG_TCP_IMS_HIT; + sendMoreData(result); +- return; +- } + +- if (matchedIfNoneMatch) { ++ } else if (matchedIfNoneMatch) { + // If-None-Match matched, reply with 304 Not Modified or + // 412 Precondition Failed + sendNotModifiedOrPreconditionFailedError(); +- return; ++ ++ } else { ++ // otherwise reply with 304 Not Modified ++ sendNotModified(); + } +- +- // otherwise reply with 304 Not Modified +- sendNotModified(); ++ return true; + } ++ ++ return false; + } + + /// whether squid.conf send_hit prevents us from serving this hit + +=== modified file 'src/client_side_reply.h' +--- src/client_side_reply.h 2016-09-23 15:28:42 +0000 ++++ src/client_side_reply.h 2016-11-11 06:03:25 +0000 +@@ -114,7 +114,7 @@ + bool alwaysAllowResponse(Http::StatusCode sline) const; + int checkTransferDone(); + void processOnlyIfCachedMiss(); +- void processConditional(StoreIOBuffer &result); ++ bool processConditional(StoreIOBuffer &result); + void cacheHit(StoreIOBuffer result); + void handleIMSReply(StoreIOBuffer result); + void sendMoreData(StoreIOBuffer result); + diff --git a/src/patches/squid/squid-3.5-14110.patch b/src/patches/squid/squid-3.5-14110.patch new file mode 100644 index 000000000..0d0a9db4b --- /dev/null +++ b/src/patches/squid/squid-3.5-14110.patch @@ -0,0 +1,102 @@ +------------------------------------------------------------ +revno: 14110 +revision-id: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz +parent: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Mon 2016-11-14 23:51:24 +1300 +message: + Fix ssl::server_name ACL badly broken since inception. + + The original server_name code mishandled all SNI checks and some rare + host checks: + + * The SNI-derived value was pointing to an already freed memory storage. + * Missing host-derived values were not detected (host() is never nil). + * Mismatches were re-checked with an undocumented "none" value + instead of being treated as mismatches. + + Same for ssl::server_name_regex. + + Also set SNI for more server-first and client-first transactions. + + This is a Measurement Factory project. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 46aadc410b46d91d597218961dbf1c634fb834fb +# timestamp: 2016-11-14 10:56:00 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161111060325-\ +# yh8chavvnzuvfh3h +# +# Begin patch +=== modified file 'src/acl/ServerName.cc' +--- src/acl/ServerName.cc 2016-09-08 12:27:06 +0000 ++++ src/acl/ServerName.cc 2016-11-14 10:51:24 +0000 +@@ -90,27 +90,28 @@ + { + assert(checklist != NULL && checklist->request != NULL); + +- if (checklist->conn() && checklist->conn()->serverBump()) { +- if (X509 *peer_cert = checklist->conn()->serverBump()->serverCert.get()) { +- if (Ssl::matchX509CommonNames(peer_cert, (void *)data, check_cert_domain)) +- return 1; +- } +- } +- + const char *serverName = NULL; +- if (checklist->conn() && !checklist->conn()->sslCommonName().isEmpty()) { +- SBuf scn = checklist->conn()->sslCommonName(); +- serverName = scn.c_str(); +- } +- +- if (serverName == NULL) +- serverName = checklist->request->GetHost(); +- +- if (serverName && data->match(serverName)) { +- return 1; +- } +- +- return data->match("none"); ++ SBuf serverNameKeeper; // because c_str() is not constant ++ if (ConnStateData *conn = checklist->conn()) { ++ if (conn->serverBump()) { ++ if (X509 *peer_cert = conn->serverBump()->serverCert.get()) ++ return Ssl::matchX509CommonNames(peer_cert, (void *)data, check_cert_domain); ++ } ++ ++ if (conn->sslCommonName().isEmpty()) { ++ const char *host = checklist->request->GetHost(); ++ if (host && *host) // paranoid first condition: host() is never nil ++ serverName = host; ++ } else { ++ serverNameKeeper = conn->sslCommonName(); ++ serverName = serverNameKeeper.c_str(); ++ } ++ } ++ ++ if (!serverName) ++ serverName = "none"; ++ ++ return data->match(serverName); + } + + ACLServerNameStrategy * + +=== modified file 'src/cf.data.pre' +--- src/cf.data.pre 2016-10-29 23:26:28 +0000 ++++ src/cf.data.pre 2016-11-14 10:51:24 +0000 +@@ -1167,6 +1167,9 @@ + # During each Ssl-Bump step, Squid may improve its understanding of a + # "true server name". Unlike dstdomain, this ACL does not perform + # DNS lookups. ++ # The "none" name can be used to match transactions where Squid ++ # could not compute the server name using any information source ++ # already available at the ACL evaluation time. + + acl aclname ssl::server_name_regex [-i] \.foo\.com ... + # regex matches server name obtained from various sources [fast] + diff --git a/src/patches/squid/squid-3.5-14111.patch b/src/patches/squid/squid-3.5-14111.patch new file mode 100644 index 000000000..984069b0c --- /dev/null +++ b/src/patches/squid/squid-3.5-14111.patch @@ -0,0 +1,43 @@ +------------------------------------------------------------ +revno: 14111 +revision-id: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay +parent: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Mon 2016-11-14 23:54:34 +1300 +message: + Fix spelling for digest nonce cache maintenance event +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 8c91678868beb689db5e0e6eaa6911c44f503ac8 +# timestamp: 2016-11-14 10:56:03 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161114105124-\ +# 46hmtnsg8uj4owxz +# +# Begin patch +=== modified file 'src/auth/digest/Config.cc' +--- src/auth/digest/Config.cc 2016-01-01 00:14:27 +0000 ++++ src/auth/digest/Config.cc 2016-11-14 10:54:34 +0000 +@@ -204,7 +204,7 @@ + if (!digest_nonce_cache) { + digest_nonce_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); + assert(digest_nonce_cache); +- eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); ++ eventAdd("Digest nonce cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); + } + } + +@@ -268,7 +268,7 @@ + debugs(29, 3, "Finished cleaning the nonce cache."); + + if (static_cast(Auth::Config::Find("digest"))->active()) +- eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); ++ eventAdd("Digest nonce cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); + } + + static void + diff --git a/src/patches/squid/squid-3.5-14112.patch b/src/patches/squid/squid-3.5-14112.patch new file mode 100644 index 000000000..a63c1c0a2 --- /dev/null +++ b/src/patches/squid/squid-3.5-14112.patch @@ -0,0 +1,60 @@ +------------------------------------------------------------ +revno: 14112 +revision-id: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 +parent: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay +author: Alex Rousskov +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Tue 2016-11-15 01:40:51 +1300 +message: + Honor SBufReservationRequirements::minSize regardless of idealSize. + + In a fully specified SBufReservationRequirements, idealSize would + naturally match or exceed minSize. However, the idealSize default value + (zero) may not. We should honor minSize regardless of idealSize, just as + the API documentation promises to do. + + No runtime changes expected right now because the only existing user of + SBufReservationRequirements sets .idealSize to CLIENT_REQ_BUF_SZ (4096) + and .minSize to 1024. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: fb0969aa035352582364b529a70286cbfd89564a +# timestamp: 2016-11-14 12:43:10 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161114105434-\ +# f1uvw2lu8l4lpgay +# +# Begin patch +=== modified file 'src/SBuf.cc' +--- src/SBuf.cc 2016-06-18 13:36:07 +0000 ++++ src/SBuf.cc 2016-11-14 12:40:51 +0000 +@@ -178,7 +178,8 @@ + if (!mustRealloc && len_ >= req.maxCapacity) + return spaceSize(); // but we cannot reallocate + +- const size_type newSpace = std::min(req.idealSpace, maxSize - len_); ++ const size_type desiredSpace = std::max(req.minSpace, req.idealSpace); ++ const size_type newSpace = std::min(desiredSpace, maxSize - len_); + reserveCapacity(std::min(len_ + newSpace, req.maxCapacity)); + debugs(24, 7, id << " now: " << off_ << '+' << len_ << '+' << spaceSize() << + '=' << store_->capacity); + +=== modified file 'src/SBuf.h' +--- src/SBuf.h 2016-06-18 13:36:07 +0000 ++++ src/SBuf.h 2016-11-14 12:40:51 +0000 +@@ -635,9 +635,10 @@ + /* + * Parameters are listed in the reverse order of importance: Satisfaction of + * the lower-listed requirements may violate the higher-listed requirements. ++ * For example, idealSpace has no effect unless it exceeds minSpace. + */ + size_type idealSpace; ///< if allocating anyway, provide this much space +- size_type minSpace; ///< allocate if spaceSize() is smaller ++ size_type minSpace; ///< allocate [at least this much] if spaceSize() is smaller + size_type maxCapacity; ///< do not allocate more than this + bool allowShared; ///< whether sharing our storage with others is OK + }; + diff --git a/src/patches/squid/squid-3.5-14113.patch b/src/patches/squid/squid-3.5-14113.patch new file mode 100644 index 000000000..d54502630 --- /dev/null +++ b/src/patches/squid/squid-3.5-14113.patch @@ -0,0 +1,47 @@ +------------------------------------------------------------ +revno: 14113 +revision-id: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn +parent: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Tue 2016-11-15 20:57:28 +1300 +message: + TLS: Make key= before cert= an error instead of quietly hiding the issue + + This squid.conf setup is fatal in Squid-4. So best to fix these installations. + Even though Squdi-3 can cope with it. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: a18738f4cbf0c1bd368e61d4b19c5d6f5005b919 +# timestamp: 2016-11-15 07:58:39 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161114124051-\ +# s0vzoj5exv5g8w56 +# +# Begin patch +=== modified file 'src/cache_cf.cc' +--- src/cache_cf.cc 2016-09-23 11:11:48 +0000 ++++ src/cache_cf.cc 2016-11-15 07:57:28 +0000 +@@ -2257,6 +2257,9 @@ + safe_free(p->sslcert); + p->sslcert = xstrdup(token + 8); + } else if (strncmp(token, "sslkey=", 7) == 0) { ++ if (!p->sslcert) { ++ debugs(3, DBG_CRITICAL, "ERROR: " << cfg_directive << ": sslcert= option must be set before sslkey= is used."); ++ } + safe_free(p->sslkey); + p->sslkey = xstrdup(token + 7); + } else if (strncmp(token, "sslversion=", 11) == 0) { +@@ -3729,6 +3732,9 @@ + safe_free(s->cert); + s->cert = xstrdup(token + 5); + } else if (strncmp(token, "key=", 4) == 0) { ++ if (!s->cert) { ++ debugs(3, DBG_CRITICAL, "ERROR: " << cfg_directive << ": cert= option must be set before key= is used."); ++ } + safe_free(s->key); + s->key = xstrdup(token + 4); + } else if (strncmp(token, "version=", 8) == 0) { + From 4ce082a4dd427ea9a9d94241f1f2ce04e72d98a6 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 2 Dec 2016 23:22:22 +0100 Subject: [PATCH 016/464] squid 3.5.22: latest patches (14114-14118) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 5 + src/patches/squid/squid-3.5-14114.patch | 46 ++++++ src/patches/squid/squid-3.5-14115.patch | 197 ++++++++++++++++++++++++ src/patches/squid/squid-3.5-14116.patch | 38 +++++ src/patches/squid/squid-3.5-14117.patch | 152 ++++++++++++++++++ src/patches/squid/squid-3.5-14118.patch | 55 +++++++ 6 files changed, 493 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14114.patch create mode 100644 src/patches/squid/squid-3.5-14115.patch create mode 100644 src/patches/squid/squid-3.5-14116.patch create mode 100644 src/patches/squid/squid-3.5-14117.patch create mode 100644 src/patches/squid/squid-3.5-14118.patch diff --git a/lfs/squid b/lfs/squid index dbe79cb98..0642532d0 100644 --- a/lfs/squid +++ b/lfs/squid @@ -85,6 +85,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14111.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14112.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14113.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14114.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14115.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14116.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14117.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14118.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14114.patch b/src/patches/squid/squid-3.5-14114.patch new file mode 100644 index 000000000..098500429 --- /dev/null +++ b/src/patches/squid/squid-3.5-14114.patch @@ -0,0 +1,46 @@ +------------------------------------------------------------ +revno: 14114 +revision-id: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 +parent: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-01 04:42:05 +1300 +message: + Improve debugs warnings when loading signing certs fails +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: e760bf590489a354e314f19dd158b063d23ef7a7 +# timestamp: 2016-11-30 15:51:47 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161115075728-\ +# 2xj2621oh5bwn8wn +# +# Begin patch +=== modified file 'src/ssl/support.cc' +--- src/ssl/support.cc 2016-10-09 14:30:11 +0000 ++++ src/ssl/support.cc 2016-11-30 15:42:05 +0000 +@@ -2011,10 +2011,17 @@ + pem_password_cb *cb = ::Config.Program.ssl_password ? &ssl_ask_password_cb : NULL; + pkey.reset(readSslPrivateKey(keyFilename, cb)); + cert.reset(readSslX509CertificatesChain(certFilename, chain.get())); +- if (!pkey || !cert || !X509_check_private_key(cert.get(), pkey.get())) { +- pkey.reset(NULL); +- cert.reset(NULL); +- } ++ if (!cert) { ++ debugs(83, DBG_IMPORTANT, "WARNING: missing cert in '" << certFilename << "'"); ++ } else if (!pkey) { ++ debugs(83, DBG_IMPORTANT, "WARNING: missing private key in '" << keyFilename << "'"); ++ } else if (!X509_check_private_key(cert.get(), pkey.get())) { ++ debugs(83, DBG_IMPORTANT, "WARNING: X509_check_private_key() failed to verify signing cert"); ++ } else ++ return; // everything is okay ++ ++ pkey.reset(NULL); ++ cert.reset(NULL); + } + + bool Ssl::generateUntrustedCert(X509_Pointer &untrustedCert, EVP_PKEY_Pointer &untrustedPkey, X509_Pointer const &cert, EVP_PKEY_Pointer const & pkey) + diff --git a/src/patches/squid/squid-3.5-14115.patch b/src/patches/squid/squid-3.5-14115.patch new file mode 100644 index 000000000..4e5e3cf2b --- /dev/null +++ b/src/patches/squid/squid-3.5-14115.patch @@ -0,0 +1,197 @@ +------------------------------------------------------------ +revno: 14115 +revision-id: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k +parent: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4004 +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-01 10:56:30 +1300 +message: + Bug 4004 partial: Fix segfault via Ftp::Client::readControlReply + + Added nil dereference checks for Ftp::Client::ctrl.conn, including: + - Ftp::Client::handlePasvReply() and handleEpsvReply() that dereference + ctrl.conn in DBG_IMPORTANT messages. + - Many functions inside FtpClient.cc and FtpGateway.cc files. + + TODO: We need to find a better way to handle nil ctrl.conn. It is only + a matter of time when we forget to add another dereference check or + discover a place we missed during this change. + + Also disabled forwarding of EPRT and PORT commands to origin servers. + Squid support for those commands is broken and their forwarding may + cause segfaults (bug #4004). Active FTP is still supported, of course. + + This is a Measurement Factory project +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 345883c1b5a5cd221e9d0e68b254df7d955372ad +# timestamp: 2016-11-30 22:42:02 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161130154205-\ +# c9z1bhqzuh3rafl3 +# +# Begin patch +=== modified file 'src/clients/FtpClient.cc' +--- src/clients/FtpClient.cc 2016-08-05 14:59:33 +0000 ++++ src/clients/FtpClient.cc 2016-11-30 21:56:30 +0000 +@@ -442,6 +442,11 @@ + char *buf; + debugs(9, 3, status()); + ++ if (!Comm::IsConnOpen(ctrl.conn)) { ++ debugs(9, 5, "The control connection to the remote end is closed"); ++ return false; ++ } ++ + if (code != 227) { + debugs(9, 2, "PASV not supported by remote end"); + return false; +@@ -473,6 +478,11 @@ + char *buf; + debugs(9, 3, status()); + ++ if (!Comm::IsConnOpen(ctrl.conn)) { ++ debugs(9, 5, "The control connection to the remote end is closed"); ++ return false; ++ } ++ + if (code != 229 && code != 522) { + if (code == 200) { + /* handle broken servers (RFC 2428 says OK code for EPSV MUST be 229 not 200) */ +@@ -733,6 +743,11 @@ + void + Ftp::Client::connectDataChannel() + { ++ if (!Comm::IsConnOpen(ctrl.conn)) { ++ debugs(9, 5, "The control connection to the remote end is closed"); ++ return; ++ } ++ + safe_free(ctrl.last_command); + + safe_free(ctrl.last_reply); + +=== modified file 'src/clients/FtpGateway.cc' +--- src/clients/FtpGateway.cc 2016-01-31 05:39:09 +0000 ++++ src/clients/FtpGateway.cc 2016-11-30 21:56:30 +0000 +@@ -212,7 +212,9 @@ + static FTPSM ftpReadMdtm; + static FTPSM ftpSendSize; + static FTPSM ftpReadSize; ++#if 0 + static FTPSM ftpSendEPRT; ++#endif + static FTPSM ftpReadEPRT; + static FTPSM ftpSendPORT; + static FTPSM ftpReadPORT; +@@ -450,6 +452,11 @@ + void + Ftp::Gateway::listenForDataChannel(const Comm::ConnectionPointer &conn) + { ++ if (!Comm::IsConnOpen(ctrl.conn)) { ++ debugs(9, 5, "The control connection to the remote end is closed"); ++ return; ++ } ++ + assert(!Comm::IsConnOpen(data.conn)); + + typedef CommCbMemFunT AcceptDialer; +@@ -1183,7 +1190,7 @@ + + checkUrlpath(); + buildTitleUrl(); +- debugs(9, 5, HERE << "FD " << ctrl.conn->fd << " : host=" << request->GetHost() << ++ debugs(9, 5, "FD " << (ctrl.conn != NULL ? ctrl.conn->fd : -1) << " : host=" << request->GetHost() << + ", path=" << request->urlpath << ", user=" << user << ", passwd=" << password); + state = BEGIN; + Ftp::Client::start(); +@@ -1750,7 +1757,9 @@ + if (ftpState->handlePasvReply(srvAddr)) + ftpState->connectDataChannel(); + else { +- ftpSendEPRT(ftpState); ++ ftpFail(ftpState); ++ // Currently disabled, does not work correctly: ++ // ftpSendEPRT(ftpState); + return; + } + } +@@ -1790,6 +1799,11 @@ + } + safe_free(ftpState->data.host); + ++ if (!Comm::IsConnOpen(ftpState->ctrl.conn)) { ++ debugs(9, 5, "The control connection to the remote end is closed"); ++ return; ++ } ++ + /* + * Set up a listen socket on the same local address as the + * control connection. +@@ -1875,9 +1889,14 @@ + ftpRestOrList(ftpState); + } + ++#if 0 + static void + ftpSendEPRT(Ftp::Gateway * ftpState) + { ++ /* check the server control channel is still available */ ++ if (!ftpState || !ftpState->haveControlChannel("ftpSendEPRT")) ++ return; ++ + if (Config.Ftp.epsv_all && ftpState->flags.epsv_all_sent) { + debugs(9, DBG_IMPORTANT, "FTP does not allow EPRT method after 'EPSV ALL' has been sent."); + return; +@@ -1913,6 +1932,7 @@ + ftpState->writeCommand(cbuf); + ftpState->state = Ftp::Client::SENT_EPRT; + } ++#endif + + static void + ftpReadEPRT(Ftp::Gateway * ftpState) +@@ -1939,10 +1959,8 @@ + { + debugs(9, 3, HERE); + +- if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { +- abortAll("entry aborted when accepting data conn"); +- data.listenConn->close(); +- data.listenConn = NULL; ++ if (!Comm::IsConnOpen(ctrl.conn)) { /*Close handlers will cleanup*/ ++ debugs(9, 5, "The control connection to the remote end is closed"); + return; + } + +@@ -1955,6 +1973,14 @@ + return; + } + ++ if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { ++ abortAll("entry aborted when accepting data conn"); ++ data.listenConn->close(); ++ data.listenConn = NULL; ++ io.conn->close(); ++ return; ++ } ++ + /* data listening conn is no longer even open. abort. */ + if (!Comm::IsConnOpen(data.listenConn)) { + data.listenConn = NULL; // ensure that it's cleared and not just closed. +@@ -2705,8 +2731,8 @@ + Ftp::Gateway::completeForwarding() + { + if (fwd == NULL || flags.completed_forwarding) { +- debugs(9, 3, HERE << "completeForwarding avoids " << +- "double-complete on FD " << ctrl.conn->fd << ", Data FD " << data.conn->fd << ++ debugs(9, 3, "avoid double-complete on FD " << ++ (ctrl.conn != NULL ? ctrl.conn->fd : -1) << ", Data FD " << data.conn->fd << + ", this " << this << ", fwd " << fwd); + return; + } + diff --git a/src/patches/squid/squid-3.5-14116.patch b/src/patches/squid/squid-3.5-14116.patch new file mode 100644 index 000000000..c92d8b80c --- /dev/null +++ b/src/patches/squid/squid-3.5-14116.patch @@ -0,0 +1,38 @@ +------------------------------------------------------------ +revno: 14116 +revision-id: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b +parent: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3533 +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-01 11:33:32 +1300 +message: + Bug 3533: Cache still valid after HTTP/1.1 303 See Other + + RFC7231 does not mention 303 response as non-cacheable. + So, assuming that means it *is* cacheable. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: c90320c95a4b64c8d18794fbe5df526fe0f9f702 +# timestamp: 2016-11-30 22:42:05 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161130215630-\ +# c42qucqar9bi9a1k +# +# Begin patch +=== modified file 'src/http.cc' +--- src/http.cc 2016-10-30 09:45:03 +0000 ++++ src/http.cc 2016-11-30 22:33:32 +0000 +@@ -203,6 +203,8 @@ + + case Http::scFound: + ++ case Http::scSeeOther: ++ + case Http::scGone: + + case Http::scNotFound: + diff --git a/src/patches/squid/squid-3.5-14117.patch b/src/patches/squid/squid-3.5-14117.patch new file mode 100644 index 000000000..23d5376f2 --- /dev/null +++ b/src/patches/squid/squid-3.5-14117.patch @@ -0,0 +1,152 @@ +------------------------------------------------------------ +revno: 14117 +revision-id: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my +parent: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4007 +author: Stephen Baynes , Amos Jeffries +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-01 12:20:39 +1300 +message: + Bug 4007: Hang on DNS query with dead-end CNAME + + DNS lookup recursion no longer occurs. ipcacheParse() return values are no + longer useful. + + Also, cleanup the debugging output. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 9059c7a07e5366bd2eac606c72f875077766ed34 +# timestamp: 2016-11-30 23:27:11 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161130223332-\ +# zcaxll4prj3kag1b +# +# Begin patch +=== modified file 'src/ipcache.cc' +--- src/ipcache.cc 2016-01-01 00:14:27 +0000 ++++ src/ipcache.cc 2016-11-30 23:20:39 +0000 +@@ -123,7 +123,6 @@ + static FREE ipcacheFreeEntry; + static IDNSCB ipcacheHandleReply; + static int ipcacheExpiredEntry(ipcache_entry *); +-static int ipcacheParse(ipcache_entry *, const rfc1035_rr *, int, const char *error); + static ipcache_entry *ipcache_get(const char *); + static void ipcacheLockEntry(ipcache_entry *); + static void ipcacheStatPrint(ipcache_entry *, StoreEntry *); +@@ -328,8 +327,7 @@ + ipcacheUnlockEntry(i); + } + +-/// \ingroup IPCacheAPI +-static int ++static void + ipcacheParse(ipcache_entry *i, const rfc1035_rr * answers, int nr, const char *error_message) + { + int k; +@@ -350,25 +348,25 @@ + i->addrs.count = 0; + + if (nr < 0) { +- debugs(14, 3, "ipcacheParse: Lookup failed '" << error_message << "' for '" << (const char *)i->hash.key << "'"); ++ debugs(14, 3, "Lookup failed '" << error_message << "' for '" << (const char *)i->hash.key << "'"); + i->error_message = xstrdup(error_message); +- return -1; ++ return; + } + + if (nr == 0) { +- debugs(14, 3, "ipcacheParse: No DNS records in response to '" << name << "'"); ++ debugs(14, 3, "No DNS records in response to '" << name << "'"); + i->error_message = xstrdup("No DNS records"); +- return -1; ++ return; + } + +- debugs(14, 3, "ipcacheParse: " << nr << " answers for '" << name << "'"); ++ debugs(14, 3, nr << " answers for '" << name << "'"); + assert(answers); + + for (k = 0; k < nr; ++k) { + + if (Ip::EnableIpv6 && answers[k].type == RFC1035_TYPE_AAAA) { + if (answers[k].rdlength != sizeof(struct in6_addr)) { +- debugs(14, DBG_IMPORTANT, "ipcacheParse: Invalid IPv6 address in response to '" << name << "'"); ++ debugs(14, DBG_IMPORTANT, MYNAME << "Invalid IPv6 address in response to '" << name << "'"); + continue; + } + ++na; +@@ -378,7 +376,7 @@ + + if (answers[k].type == RFC1035_TYPE_A) { + if (answers[k].rdlength != sizeof(struct in_addr)) { +- debugs(14, DBG_IMPORTANT, "ipcacheParse: Invalid IPv4 address in response to '" << name << "'"); ++ debugs(14, DBG_IMPORTANT, MYNAME << "Invalid IPv4 address in response to '" << name << "'"); + continue; + } + ++na; +@@ -394,14 +392,14 @@ + } + + // otherwise its an unknown RR. debug at level 9 since we usually want to ignore these and they are common. +- debugs(14, 9, HERE << "Unknown RR type received: type=" << answers[k].type << " starting at " << &(answers[k]) ); ++ debugs(14, 9, "Unknown RR type received: type=" << answers[k].type << " starting at " << &(answers[k]) ); + } + if (na == 0) { +- debugs(14, DBG_IMPORTANT, "ipcacheParse: No Address records in response to '" << name << "'"); ++ debugs(14, DBG_IMPORTANT, MYNAME << "No Address records in response to '" << name << "'"); + i->error_message = xstrdup("No Address records"); + if (cname_found) + ++IpcacheStats.cname_only; +- return 0; ++ return; + } + + i->addrs.in_addrs = static_cast(xcalloc(na, sizeof(Ip::Address))); +@@ -419,7 +417,7 @@ + memcpy(&temp, answers[k].rdata, sizeof(struct in_addr)); + i->addrs.in_addrs[j] = temp; + +- debugs(14, 3, "ipcacheParse: " << name << " #" << j << " " << i->addrs.in_addrs[j]); ++ debugs(14, 3, name << " #" << j << " " << i->addrs.in_addrs[j]); + ++j; + + } else if (Ip::EnableIpv6 && answers[k].type == RFC1035_TYPE_AAAA) { +@@ -430,7 +428,7 @@ + memcpy(&temp, answers[k].rdata, sizeof(struct in6_addr)); + i->addrs.in_addrs[j] = temp; + +- debugs(14, 3, "ipcacheParse: " << name << " #" << j << " " << i->addrs.in_addrs[j] ); ++ debugs(14, 3, name << " #" << j << " " << i->addrs.in_addrs[j] ); + ++j; + } + if (ttl == 0 || (int) answers[k].ttl < ttl) +@@ -453,8 +451,6 @@ + i->expires = squid_curtime + ttl; + + i->flags.negcached = false; +- +- return i->addrs.count; + } + + /// \ingroup IPCacheInternal +@@ -467,13 +463,9 @@ + const int age = i->age(); + statCounter.dns.svcTime.count(age); + +- int done = ipcacheParse(i, answers, na, error_message); +- +- /* If we have not produced either IPs or Error immediately, wait for recursion to finish. */ +- if (done != 0 || error_message != NULL) { +- ipcacheAddEntry(i); +- ipcacheCallback(i, age); +- } ++ ipcacheParse(i, answers, na, error_message); ++ ipcacheAddEntry(i); ++ ipcacheCallback(i, age); + } + + /** + diff --git a/src/patches/squid/squid-3.5-14118.patch b/src/patches/squid/squid-3.5-14118.patch new file mode 100644 index 000000000..1e36294f3 --- /dev/null +++ b/src/patches/squid/squid-3.5-14118.patch @@ -0,0 +1,55 @@ +------------------------------------------------------------ +revno: 14118 +revision-id: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 +parent: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3290 +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-01 12:33:04 +1300 +message: + Bug 3290: authenticate_ttl not working for digest authentication +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 50ff391db1484222ead5fb50b1bca0694c37ed4c +# timestamp: 2016-11-30 23:34:59 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161130232039-\ +# z18ikhhcf3j185my +# +# Begin patch +=== modified file 'src/auth/digest/Config.cc' +--- src/auth/digest/Config.cc 2016-11-14 10:54:34 +0000 ++++ src/auth/digest/Config.cc 2016-11-30 23:33:04 +0000 +@@ -1058,6 +1058,10 @@ + * the user agent won't change user name without warning. + */ + authDigestUserLinkNonce(digest_user, nonce); ++ ++ /* auth_user is now linked, we reset these values ++ * after external auth occurs anyway */ ++ auth_user->expiretime = current_time.tv_sec; + } else { + debugs(29, 9, "Found user '" << username << "' in the user cache as '" << auth_user << "'"); + digest_user = static_cast(auth_user.getRaw()); + +=== modified file 'src/auth/digest/UserRequest.cc' +--- src/auth/digest/UserRequest.cc 2016-01-01 00:14:27 +0000 ++++ src/auth/digest/UserRequest.cc 2016-11-30 23:33:04 +0000 +@@ -187,12 +187,7 @@ + auth_user->credentials(Auth::Ok); + + /* password was checked and did match */ +- debugs(29, 4, HERE << "user '" << auth_user->username() << "' validated OK"); +- +- /* auth_user is now linked, we reset these values +- * after external auth occurs anyway */ +- auth_user->expiretime = current_time.tv_sec; +- return; ++ debugs(29, 4, "user '" << auth_user->username() << "' validated OK"); + } + + Auth::Direction + From 6426c4066f85a9c706df2c141fbf9604739a78c3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 6 Dec 2016 14:20:16 +0000 Subject: [PATCH 017/464] core108: Ship updated squid Signed-off-by: Michael Tremer --- config/rootfiles/core/108/filelists/squid | 1 + config/rootfiles/core/108/update.sh | 2 ++ 2 files changed, 3 insertions(+) create mode 120000 config/rootfiles/core/108/filelists/squid diff --git a/config/rootfiles/core/108/filelists/squid b/config/rootfiles/core/108/filelists/squid new file mode 120000 index 000000000..2dc8372a0 --- /dev/null +++ b/config/rootfiles/core/108/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/core/108/update.sh index 1217f20f8..7a4bcd3ee 100644 --- a/config/rootfiles/core/108/update.sh +++ b/config/rootfiles/core/108/update.sh @@ -33,6 +33,7 @@ done # Stop services /etc/init.d/ipsec stop +/etc/init.d/squid stop # Extract files extract_files @@ -52,6 +53,7 @@ if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then /etc/init.d/ipsec start fi /etc/init.d/ntp restart +/etc/init.d/squid start # This update need a reboot... #touch /var/run/need_reboot From d15c59e6e52e51d6319c3cd3ca4fbad7038f88a2 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 11 Dec 2016 01:22:51 +0100 Subject: [PATCH 018/464] nano: Update to 2.7.1 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/nano | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/nano b/lfs/nano index 5dcf4845e..fbe88bd67 100644 --- a/lfs/nano +++ b/lfs/nano @@ -24,7 +24,7 @@ include Config -VER = 2.6.3 +VER = 2.7.1 THISAPP = nano-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nano -PAK_VER = 11 +PAK_VER = 12 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 1213c7f17916e65afefc95054c1f90f9 +$(DL_FILE)_MD5 = 6d6aea789dd15171d8d05d2359c52f23 install : $(TARGET) From a5f09f8e5b8639564b9ca4c4d06b3cfcaafa3ed2 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 10 Dec 2016 18:44:03 +0100 Subject: [PATCH 019/464] squid 3.5.22: latest patches (14119-14122) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 4 + src/patches/squid/squid-3.5-14119.patch | 184 ++++++++++++++++++++++++ src/patches/squid/squid-3.5-14120.patch | 62 ++++++++ src/patches/squid/squid-3.5-14121.patch | 36 +++++ src/patches/squid/squid-3.5-14122.patch | 34 +++++ 5 files changed, 320 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14119.patch create mode 100644 src/patches/squid/squid-3.5-14120.patch create mode 100644 src/patches/squid/squid-3.5-14121.patch create mode 100644 src/patches/squid/squid-3.5-14122.patch diff --git a/lfs/squid b/lfs/squid index 0642532d0..70d90d819 100644 --- a/lfs/squid +++ b/lfs/squid @@ -90,6 +90,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14116.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14117.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14118.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14119.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14120.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14121.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14122.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14119.patch b/src/patches/squid/squid-3.5-14119.patch new file mode 100644 index 000000000..d6e85a5e9 --- /dev/null +++ b/src/patches/squid/squid-3.5-14119.patch @@ -0,0 +1,184 @@ +------------------------------------------------------------ +revno: 14119 +revision-id: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew +parent: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4174 +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2016-12-09 14:58:33 +1300 +message: + Bug 4174 partial: fix Write.cc:41 "!ccb->active()" assertion. + + The following sequence of events triggers this assertion: + - The server sends an 1xx control message. + - http.cc schedules ConnStateData::sendControlMsg call. + - Before sendControlMsg is fired, http.cc detects an error (e.g., I/O + error or timeout) and starts writing the reply to the user. + - The ConnStateData::sendControlMsg is fired, starts writing 1xx, and + hits the "no concurrent writes" assertion. + + We could only reproduce this sequence in the lab after changing Squid + code to trigger a timeout at the right moment, but the sequence looks + plausible. Other event sequences might result in the same outcome. + + To avoid concurrent writes, Squid now drops the control message if + Http::One::Server detects that a reply is already being written. Also, + ConnStateData delays reply writing until a pending control message write + has been completed. + + This is a Measurement Factory project. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 103c6fc1fa45d78ba7f9e85ab3d89fff898ee762 +# timestamp: 2016-12-09 02:51:06 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161130233304-\ +# lk3q0bx8gn5l3l85 +# +# Begin patch +=== modified file 'src/client_side.cc' +--- src/client_side.cc 2016-09-23 20:49:24 +0000 ++++ src/client_side.cc 2016-12-09 01:58:33 +0000 +@@ -340,7 +340,21 @@ + AsyncCall::Pointer call = commCbCall(33, 5, "ClientSocketContext::wroteControlMsg", + CommIoCbPtrFun(&WroteControlMsg, this)); + +- getConn()->writeControlMsgAndCall(this, rep.getRaw(), call); ++ if (!getConn()->writeControlMsgAndCall(this, rep.getRaw(), call)) { ++ // but still inform the caller (so it may resume its operation) ++ doneWithControlMsg(); ++ } ++} ++ ++void ++ClientSocketContext::doneWithControlMsg() ++{ ++ ScheduleCallHere(cbControlMsgSent); ++ cbControlMsgSent = NULL; ++ ++ debugs(33, 3, clientConnection << ": calling PushDeferredIfNeeded after control msg wrote"); ++ ClientSocketContextPushDeferredIfNeeded(this, getConn()); ++ + } + + /// called when we wrote the 1xx response +@@ -351,7 +365,7 @@ + return; + + if (errflag == Comm::OK) { +- ScheduleCallHere(cbControlMsgSent); ++ doneWithControlMsg(); + return; + } + +@@ -1455,6 +1469,8 @@ + + if (context != http->getConn()->getCurrentContext()) + context->deferRecipientForLater(node, rep, receivedData); ++ else if (context->controlMsgIsPending()) ++ context->deferRecipientForLater(node, rep, receivedData); + else + http->getConn()->handleReply(rep, receivedData); + + +=== modified file 'src/client_side.h' +--- src/client_side.h 2016-06-18 13:36:07 +0000 ++++ src/client_side.h 2016-12-09 01:58:33 +0000 +@@ -129,9 +129,13 @@ + /// starts writing 1xx control message to the client + void writeControlMsg(HttpControlMsg &msg); + ++ /// true if 1xx to the user is pending ++ bool controlMsgIsPending() {return cbControlMsgSent != NULL;} ++ + protected: + static IOCB WroteControlMsg; + void wroteControlMsg(const Comm::ConnectionPointer &conn, char *bufnotused, size_t size, Comm::Flag errflag, int xerrno); ++ void doneWithControlMsg(); + + private: + void prepareReply(HttpReply * rep); +@@ -387,7 +391,7 @@ + void connectionTag(const char *aTag) { connectionTag_ = aTag; } + + /// handle a control message received by context from a peer and call back +- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) = 0; ++ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) = 0; + + /// ClientStream calls this to supply response header (once) and data + /// for the current ClientSocketContext. + +=== modified file 'src/servers/FtpServer.cc' +--- src/servers/FtpServer.cc 2016-06-30 21:09:12 +0000 ++++ src/servers/FtpServer.cc 2016-12-09 01:58:33 +0000 +@@ -1152,12 +1152,13 @@ + writeErrorReply(reply, 451); + } + +-void ++bool + Ftp::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *reply, AsyncCall::Pointer &call) + { + // the caller guarantees that we are dealing with the current context only + // the caller should also make sure reply->header.has(HDR_FTP_STATUS) + writeForwardedReplyAndCall(reply, call); ++ return true; + } + + void + +=== modified file 'src/servers/FtpServer.h' +--- src/servers/FtpServer.h 2016-03-15 18:14:15 +0000 ++++ src/servers/FtpServer.h 2016-12-09 01:58:33 +0000 +@@ -94,7 +94,7 @@ + virtual void clientPinnedConnectionClosed(const CommCloseCbParams &io); + virtual void handleReply(HttpReply *header, StoreIOBuffer receivedData); + virtual int pipelinePrefetchMax() const; +- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); ++ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); + virtual time_t idleTimeout() const; + + /* BodyPipe API */ + +=== modified file 'src/servers/HttpServer.cc' +--- src/servers/HttpServer.cc 2016-01-01 00:14:27 +0000 ++++ src/servers/HttpServer.cc 2016-12-09 01:58:33 +0000 +@@ -35,7 +35,7 @@ + virtual ClientSocketContext *parseOneRequest(Http::ProtocolVersion &ver); + virtual void processParsedRequest(ClientSocketContext *context, const Http::ProtocolVersion &ver); + virtual void handleReply(HttpReply *rep, StoreIOBuffer receivedData); +- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); ++ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); + virtual time_t idleTimeout() const; + + /* BodyPipe API */ +@@ -167,9 +167,16 @@ + context->sendStartOfMessage(rep, receivedData); + } + +-void ++bool + Http::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) + { ++ // Ignore this late control message if we have started sending a ++ // reply to the user already (e.g., after an error). ++ if (context->reply) { ++ debugs(11, 2, "drop 1xx made late by " << context->reply); ++ return false; ++ } ++ + // apply selected clientReplyContext::buildReplyHeader() mods + // it is not clear what headers are required for control messages + rep->header.removeHopByHopEntries(); +@@ -184,6 +191,7 @@ + Comm::Write(context->clientConnection, mb, call); + + delete mb; ++ return true; + } + + ConnStateData * + diff --git a/src/patches/squid/squid-3.5-14120.patch b/src/patches/squid/squid-3.5-14120.patch new file mode 100644 index 000000000..4d28d4a95 --- /dev/null +++ b/src/patches/squid/squid-3.5-14120.patch @@ -0,0 +1,62 @@ +------------------------------------------------------------ +revno: 14120 +revision-id: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt +parent: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew +author: Egervary Gergely +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2016-12-09 16:46:36 +1300 +message: + Support IPv6 NAT with PF for NetBSD and FreeBSD +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: b47da8d30fe000bbe50ea978bab7594065f7dc07 +# timestamp: 2016-12-09 03:51:01 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161209015833-\ +# xm965d5l6u03qhew +# +# Begin patch +=== modified file 'src/ip/Intercept.cc' +--- src/ip/Intercept.cc 2016-10-25 08:25:30 +0000 ++++ src/ip/Intercept.cc 2016-12-09 03:46:36 +0000 +@@ -339,13 +339,20 @@ + } + + memset(&nl, 0, sizeof(struct pfioc_natlook)); +- newConn->remote.getInAddr(nl.saddr.v4); ++ ++ if (newConn->remote.isIPv6()) { ++ newConn->remote.getInAddr(nl.saddr.v6); ++ newConn->local.getInAddr(nl.daddr.v6); ++ nl.af = AF_INET6; ++ } else { ++ newConn->remote.getInAddr(nl.saddr.v4); ++ newConn->local.getInAddr(nl.daddr.v4); ++ nl.af = AF_INET; ++ } ++ + nl.sport = htons(newConn->remote.port()); +- +- newConn->local.getInAddr(nl.daddr.v4); + nl.dport = htons(newConn->local.port()); + +- nl.af = AF_INET; + nl.proto = IPPROTO_TCP; + nl.direction = PF_OUT; + +@@ -361,7 +368,10 @@ + debugs(89, 9, HERE << "address: " << newConn); + return false; + } else { +- newConn->local = nl.rdaddr.v4; ++ if (newConn->remote.isIPv6()) ++ newConn->local = nl.rdaddr.v6; ++ else ++ newConn->local = nl.rdaddr.v4; + newConn->local.port(ntohs(nl.rdport)); + debugs(89, 5, HERE << "address NAT: " << newConn); + return true; + diff --git a/src/patches/squid/squid-3.5-14121.patch b/src/patches/squid/squid-3.5-14121.patch new file mode 100644 index 000000000..36f3f7a8d --- /dev/null +++ b/src/patches/squid/squid-3.5-14121.patch @@ -0,0 +1,36 @@ +------------------------------------------------------------ +revno: 14121 +revision-id: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 +parent: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4406 +author: Michael Buchau +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2016-12-09 17:33:04 +1300 +message: + Bug 4406: SIGSEV in TunnelStateData::handleConnectResponse() during reconfigure and restart +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: ce1153061cb79ac9ede6851f438ec830ed7a3e78 +# timestamp: 2016-12-09 04:51:01 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161209034636-\ +# wytrnx7ks2jv0sxt +# +# Begin patch +=== modified file 'src/tunnel.cc' +--- src/tunnel.cc 2016-08-17 13:34:13 +0000 ++++ src/tunnel.cc 2016-12-09 04:33:04 +0000 +@@ -475,7 +475,8 @@ + *status_ptr = rep.sline.status(); + + // we need to relay the 401/407 responses when login=PASS(THRU) +- const char *pwd = server.conn->getPeer()->login; ++ const CachePeer *peer = server.conn->getPeer(); ++ const char *pwd = (peer ? peer->login : NULL); + const bool relay = pwd && (strcmp(pwd, "PASS") == 0 || strcmp(pwd, "PASSTHRU") == 0) && + (*status_ptr == Http::scProxyAuthenticationRequired || + *status_ptr == Http::scUnauthorized); + diff --git a/src/patches/squid/squid-3.5-14122.patch b/src/patches/squid/squid-3.5-14122.patch new file mode 100644 index 000000000..292306e9e --- /dev/null +++ b/src/patches/squid/squid-3.5-14122.patch @@ -0,0 +1,34 @@ +------------------------------------------------------------ +revno: 14122 +revision-id: squidadm@squid-cache.org-20161209061551-361ava4lrrmbwiy9 +parent: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 +committer: Source Maintenance +branch nick: 3.5 +timestamp: Fri 2016-12-09 06:15:51 +0000 +message: + SourceFormat Enforcement +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squidadm@squid-cache.org-20161209061551-\ +# 361ava4lrrmbwiy9 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: cb4bfe0e0aaf3e3d107ffb16e2729c6f46d5a822 +# timestamp: 2016-12-09 06:51:04 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161209043304-\ +# krtzvsm4a0zbzgi8 +# +# Begin patch +=== modified file 'src/servers/HttpServer.cc' +--- src/servers/HttpServer.cc 2016-12-09 01:58:33 +0000 ++++ src/servers/HttpServer.cc 2016-12-09 06:15:51 +0000 +@@ -170,7 +170,7 @@ + bool + Http::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) + { +- // Ignore this late control message if we have started sending a ++ // Ignore this late control message if we have started sending a + // reply to the user already (e.g., after an error). + if (context->reply) { + debugs(11, 2, "drop 1xx made late by " << context->reply); + From b26b242a9c5f9bc5b0a941782b2d57465dc69565 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Tue, 13 Dec 2016 23:29:21 +0100 Subject: [PATCH 020/464] finish core108 Signed-off-by: Arne Fitzenreiter --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 4c5996afa..390c719e3 100755 --- a/make.sh +++ b/make.sh @@ -26,7 +26,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number CORE="108" # Core Level (Filename) -PAKFIRE_CORE="107" # Core Level (PAKFIRE) +PAKFIRE_CORE="108" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir From 8f3034d0db0addd98d2d287697db0135fe7c9f09 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 14 Dec 2016 12:45:07 +0000 Subject: [PATCH 021/464] unbound: Test for working EDNS buffer size and adjust accordingly Some networks have equipment that fails to forward DNS queries with EDNS and the DO bit set. They might even lose the replies. This patch will adjust unbound so that it will not try to receive too large replies and falls back to TCP earlier. This creates some higher load on the DNS servers but at least gives us working DNS. Signed-off-by: Michael Tremer --- src/initscripts/init.d/unbound | 68 ++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 6c7be6cfd..08f98059e 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -86,6 +86,24 @@ update_forwarders() { esac done + # Determine EDNS buffer size + local current_edns_buffer_size=$(unbound-control get_option edns-buffer-size) + + if [ -n "${current_edns_buffer_size}" ]; then + local new_edns_buffer_size=${current_edns_buffer_size} + + for ns in ${forwarders}; do + local edns_buffer_size=$(ns_determine_edns_buffer_size ${ns}) + if [ -n "${edns_buffer_size}" ]; then + if [ ${edns_buffer_size} -lt ${current_edns_buffer_size} ]; then + new_edns_buffer_size=${edns_buffer_size} + fi + fi + done + + unbound-control -q set_option edns-buffer-size: ${new_edns_buffer_size} + fi + # Show warning for any broken upstream name servers if [ -n "${broken_forwarders}" ]; then boot_mesg "Ignoring broken upstream name server(s): ${broken_forwarders:1}" ${WARNING} @@ -249,6 +267,7 @@ get_memory_amount() { test_name_server() { local ns=${1} + local args # Return codes: # 0 DNSSEC validating @@ -259,9 +278,15 @@ test_name_server() { # Exit when the server is not reachable ns_is_online ${ns} || return 1 + # Determine the maximum edns buffer size that works + local edns_buffer_size=$(ns_determine_edns_buffer_size ${ns}) + if [ -n "${edns_buffer_size}" ]; then + args="${args} +bufsize=${edns_buffer_size}" + fi + local errors for rr in DNSKEY DS RRSIG; do - if ! ns_forwards_${rr} ${ns}; then + if ! ns_forwards_${rr} ${ns} ${args}; then errors="${errors} ${rr}" fi done @@ -271,7 +296,7 @@ test_name_server() { return 3 fi - if ns_is_validating ${ns}; then + if ns_is_validating ${ns} ${args}; then # Return 0 if validating return 0 else @@ -283,41 +308,62 @@ test_name_server() { # Sends an A query to the nameserver w/o DNSSEC ns_is_online() { local ns=${1} + shift - dig @${ns} +nodnssec A ${TEST_DOMAIN} >/dev/null + dig @${ns} +nodnssec A ${TEST_DOMAIN} $@ >/dev/null } # Resolving ${TEST_DOMAIN_FAIL} will fail if the nameserver is validating ns_is_validating() { local ns=${1} + shift - dig @${ns} A ${TEST_DOMAIN_FAIL} | grep -q SERVFAIL + dig @${ns} A ${TEST_DOMAIN_FAIL} $@ | grep -q SERVFAIL } # Checks if we can retrieve the DNSKEY for this domain. # dig will print the SOA if nothing was found ns_forwards_DNSKEY() { local ns=${1} + shift - dig @${ns} DNSKEY ${TEST_DOMAIN} | grep -qv SOA + dig @${ns} DNSKEY ${TEST_DOMAIN} $@ | grep -qv SOA } ns_forwards_DS() { local ns=${1} + shift - dig @${ns} DS ${TEST_DOMAIN} | grep -qv SOA + dig @${ns} DS ${TEST_DOMAIN} $@ | grep -qv SOA } ns_forwards_RRSIG() { local ns=${1} + shift - dig @${ns} +dnssec A ${TEST_DOMAIN} | grep -q RRSIG + dig @${ns} +dnssec A ${TEST_DOMAIN} $@ | grep -q RRSIG } ns_supports_tcp() { local ns=${1} + shift - dig @${ns} +tcp A ${TEST_DOMAIN} >/dev/null || return 1 + dig @${ns} +tcp A ${TEST_DOMAIN} $@ >/dev/null || return 1 +} + +ns_determine_edns_buffer_size() { + local ns=${1} + shift + + local b + for b in 4096 2048 1500 1480 1464 1400 1280 512; do + if dig @${ns} +dnssec +bufsize=${b} A ${TEST_DOMAIN} $@ >/dev/null; then + echo "${b}" + return 0 + fi + done + + return 1 } case "$1" in @@ -394,6 +440,7 @@ case "$1" in ;; *) echo "Test failed for an unknown reason" + exit ${ret} ;; esac @@ -403,6 +450,11 @@ case "$1" in echo "${ns} does not support TCP fallback" fi + edns_buffer_size=$(ns_determine_edns_buffer_size ${ns}) + if [ -n "${edns_buffer_size}" ]; then + echo "EDNS buffer size for ${ns}: ${edns_buffer_size}" + fi + exit ${ret} ;; From b2f96a94e3535a7fccbfd6b7dd18370718d5804b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 14 Dec 2016 12:51:46 +0000 Subject: [PATCH 022/464] unbound: EDNS buffer size defaults to 4096 If this is changed, a warning will be shown. Signed-off-by: Michael Tremer --- src/initscripts/init.d/unbound | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 08f98059e..880278150 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -18,6 +18,9 @@ USE_FORWARDERS=1 # Cache any local zones for 60 seconds LOCAL_TTL=60 +# EDNS buffer size +EDNS_DEFAULT_BUFFER_SIZE=4096 + # Load optional configuration [ -e "/etc/sysconfig/unbound" ] && . /etc/sysconfig/unbound @@ -87,19 +90,20 @@ update_forwarders() { done # Determine EDNS buffer size - local current_edns_buffer_size=$(unbound-control get_option edns-buffer-size) + local new_edns_buffer_size=${EDNS_DEFAULT_BUFFER_SIZE} - if [ -n "${current_edns_buffer_size}" ]; then - local new_edns_buffer_size=${current_edns_buffer_size} - - for ns in ${forwarders}; do - local edns_buffer_size=$(ns_determine_edns_buffer_size ${ns}) - if [ -n "${edns_buffer_size}" ]; then - if [ ${edns_buffer_size} -lt ${current_edns_buffer_size} ]; then - new_edns_buffer_size=${edns_buffer_size} - fi + for ns in ${forwarders}; do + local edns_buffer_size=$(ns_determine_edns_buffer_size ${ns}) + if [ -n "${edns_buffer_size}" ]; then + if [ ${edns_buffer_size} -lt ${new_edns_buffer_size} ]; then + new_edns_buffer_size=${edns_buffer_size} fi - done + fi + done + + if [ ${new_edns_buffer_size} -lt ${EDNS_DEFAULT_BUFFER_SIZE} ]; then + boot_mesg "EDNS buffer size reduced to ${new_edns_buffer_size}" ${WARNING} + echo_warning unbound-control -q set_option edns-buffer-size: ${new_edns_buffer_size} fi From ef2bb434022a72393bbaa270a886ce4cf579901f Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 16 Dec 2016 09:50:19 +0100 Subject: [PATCH 023/464] unbound: Update to 1.6.0 Signed-off-by: Matthias Fischer For details, see: http://www.unbound.net/download.html Signed-off-by: Michael Tremer --- config/rootfiles/common/unbound | 2 +- lfs/unbound | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/rootfiles/common/unbound b/config/rootfiles/common/unbound index 722d73057..c31b8a698 100644 --- a/config/rootfiles/common/unbound +++ b/config/rootfiles/common/unbound @@ -10,7 +10,7 @@ etc/unbound/unbound.conf #usr/lib/libunbound.la #usr/lib/libunbound.so usr/lib/libunbound.so.2 -usr/lib/libunbound.so.2.4.2 +usr/lib/libunbound.so.2.4.3 usr/sbin/unbound usr/sbin/unbound-anchor usr/sbin/unbound-checkconf diff --git a/lfs/unbound b/lfs/unbound index b2ef6ac4c..3494a7b06 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -24,7 +24,7 @@ include Config -VER = 1.5.10 +VER = 1.6.0 THISAPP = unbound-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 0a3a236811f1ab5c1dc31974fa74e047 +$(DL_FILE)_MD5 = 78409eccf7260d260b6463f85e59c66b install : $(TARGET) From c2adb460d66b2d7813bcda533960c9f4c7e89fb2 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 16 Dec 2016 11:59:59 +0000 Subject: [PATCH 024/464] Revert "unbound: Deactivate qname-minimization & harden-below-nxdomain" This reverts commit 86e9d04bfb73eb256682a567e187fe1e5cdcc3ca. This seems to be working with unbound 1.6.0 so that this can be re-enabled for better privacy. http://lists.ipfire.org/pipermail/development/2016-December/002807.html --- config/unbound/unbound.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/unbound/unbound.conf b/config/unbound/unbound.conf index c9b01b8f4..3f724d8f7 100644 --- a/config/unbound/unbound.conf +++ b/config/unbound/unbound.conf @@ -42,6 +42,7 @@ server: # Privacy Options hide-identity: yes hide-version: yes + qname-minimisation: yes minimal-responses: yes # DNSSEC @@ -55,6 +56,7 @@ server: harden-short-bufsize: no harden-large-queries: yes harden-dnssec-stripped: yes + harden-below-nxdomain: yes harden-referral-path: yes harden-algo-downgrade: no use-caps-for-id: no From 3c22a549ab7937c34d0adfcfa02307ead4ed6685 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 16 Dec 2016 08:41:32 +0100 Subject: [PATCH 025/464] squid 3.5.22: latest patches (14123-14126) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 4 + src/patches/squid/squid-3.5-14123.patch | 59 ++++++++++++ src/patches/squid/squid-3.5-14124.patch | 47 +++++++++ src/patches/squid/squid-3.5-14125.patch | 41 ++++++++ src/patches/squid/squid-3.5-14126.patch | 123 ++++++++++++++++++++++++ 5 files changed, 274 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14123.patch create mode 100644 src/patches/squid/squid-3.5-14124.patch create mode 100644 src/patches/squid/squid-3.5-14125.patch create mode 100644 src/patches/squid/squid-3.5-14126.patch diff --git a/lfs/squid b/lfs/squid index 70d90d819..0fa36d71a 100644 --- a/lfs/squid +++ b/lfs/squid @@ -94,6 +94,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14120.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14121.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14122.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14123.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14124.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14125.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14126.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14123.patch b/src/patches/squid/squid-3.5-14123.patch new file mode 100644 index 000000000..4d11541e9 --- /dev/null +++ b/src/patches/squid/squid-3.5-14123.patch @@ -0,0 +1,59 @@ +------------------------------------------------------------ +revno: 14123 +revision-id: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 +parent: squidadm@squid-cache.org-20161209061551-361ava4lrrmbwiy9 +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=2258 +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-15 22:03:42 +1300 +message: + Bug 2258: bypassing cache but not destroying cache entry +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: e4ce2fda10feb3e4e6b64d6dfa566ba6f0ac07f1 +# timestamp: 2016-12-15 09:08:35 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squidadm@squid-cache.org-20161209061551-\ +# 361ava4lrrmbwiy9 +# +# Begin patch +=== modified file 'src/HttpRequest.cc' +--- src/HttpRequest.cc 2016-04-01 06:15:31 +0000 ++++ src/HttpRequest.cc 2016-12-15 09:03:42 +0000 +@@ -576,8 +576,13 @@ + if (!method.respMaybeCacheable()) + return false; + +- // XXX: this would seem the correct place to detect request cache-controls +- // no-store, private and related which block cacheability ++ // RFC 7234 section 5.2.1.5: ++ // "cache MUST NOT store any part of either this request or any response to it" ++ // ++ // NP: refresh_pattern ignore-no-store only applies to response messages ++ // this test is handling request message CC header. ++ if (!flags.ignoreCc && cache_control && cache_control->noStore()) ++ return false; + break; + + case AnyP::PROTO_GOPHER: + +=== modified file 'src/http.cc' +--- src/http.cc 2016-11-30 22:33:32 +0000 ++++ src/http.cc 2016-12-15 09:03:42 +0000 +@@ -191,6 +191,12 @@ + if (!EBIT_TEST(e->flags, KEY_PRIVATE)) + return; + ++ // If the new/incoming response cannot be stored, then it does not ++ // compete with the old stored response for the public key, and the ++ // old stored response should be left as is. ++ if (e->mem_obj->request && !e->mem_obj->request->flags.cachable) ++ return; ++ + switch (status) { + + case Http::scOkay: + diff --git a/src/patches/squid/squid-3.5-14124.patch b/src/patches/squid/squid-3.5-14124.patch new file mode 100644 index 000000000..65cd2b13b --- /dev/null +++ b/src/patches/squid/squid-3.5-14124.patch @@ -0,0 +1,47 @@ +------------------------------------------------------------ +revno: 14124 +revision-id: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk +parent: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-15 22:22:10 +1300 +message: + HTTP/1.1: Add registered codes entry for new 103 (Early Hints) status code +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: b9e9ff6a7fe0972dfd8a3b1a45ba25a66ef03552 +# timestamp: 2016-12-15 09:22:58 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161215090342-\ +# ml7nmzlfmiiov7j5 +# +# Begin patch +=== modified file 'src/http/StatusCode.cc' +--- src/http/StatusCode.cc 2016-03-23 14:00:51 +0000 ++++ src/http/StatusCode.cc 2016-12-15 09:22:10 +0000 +@@ -33,6 +33,10 @@ + return "Processing"; + break; + ++ case Http::scEarlyHints: // 103 ++ return "Early Hints"; ++ break; ++ + // 200-299 + case Http::scOkay: + return "OK"; + +=== modified file 'src/http/StatusCode.h' +--- src/http/StatusCode.h 2016-03-23 14:00:51 +0000 ++++ src/http/StatusCode.h 2016-12-15 09:22:10 +0000 +@@ -22,6 +22,7 @@ + scContinue = 100, + scSwitchingProtocols = 101, + scProcessing = 102, /**< RFC2518 section 10.1 */ ++ scEarlyHints = 103, /**< draft-kazuho-early-hints-status-code */ + scOkay = 200, + scCreated = 201, + scAccepted = 202, + diff --git a/src/patches/squid/squid-3.5-14125.patch b/src/patches/squid/squid-3.5-14125.patch new file mode 100644 index 000000000..a42cbf749 --- /dev/null +++ b/src/patches/squid/squid-3.5-14125.patch @@ -0,0 +1,41 @@ +------------------------------------------------------------ +revno: 14125 +revision-id: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj +parent: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3940 +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-15 22:36:34 +1300 +message: + Bug 3940 (partial): hostHeaderVerify failures MISS when they should be HIT + + This fixes the critical condition leading to the HIT. However not all + code is correctly setting flags.noCache and flags.cacheable (see bugzilla). + So there may be other fixes needed after this. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 3e1ebda070635dcabfa4f77d697ac12e8683106f +# timestamp: 2016-12-15 09:39:01 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161215092210-\ +# 8gupdsihb4d8fufk +# +# Begin patch +=== modified file 'src/client_side_reply.cc' +--- src/client_side_reply.cc 2016-11-11 06:03:25 +0000 ++++ src/client_side_reply.cc 2016-12-15 09:36:34 +0000 +@@ -1649,7 +1649,9 @@ + { + HttpRequest *r = http->request; + +- if (r->flags.cachable || r->flags.internal) { ++ // client sent CC:no-cache or some other condition has been ++ // encountered which prevents delivering a public/cached object. ++ if (!r->flags.noCache || r->flags.internal) { + lookingforstore = 5; + StoreEntry::getPublicByRequest (this, r); + } else { + diff --git a/src/patches/squid/squid-3.5-14126.patch b/src/patches/squid/squid-3.5-14126.patch new file mode 100644 index 000000000..9097d3b25 --- /dev/null +++ b/src/patches/squid/squid-3.5-14126.patch @@ -0,0 +1,123 @@ +------------------------------------------------------------ +revno: 14126 +revision-id: squid3@treenet.co.nz-20161215103357-827wow3k1y3k9yql +parent: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4169 +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Thu 2016-12-15 23:33:57 +1300 +message: + Bug 4169: HIT marked as MISS when If-None-Match does not match +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161215103357-827wow3k1y3k9yql +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 258cd3e400bcb137a7bcdf6e7e0240287ea581a3 +# timestamp: 2016-12-15 10:34:30 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161215093634-\ +# ykbs6tv8pdusz7cj +# +# Begin patch +=== modified file 'src/LogTags.h' +--- src/LogTags.h 2016-10-09 19:47:26 +0000 ++++ src/LogTags.h 2016-12-15 10:33:57 +0000 +@@ -28,6 +28,7 @@ + LOG_TCP_REFRESH_IGNORED, // refresh from origin ignored, stale entry sent + LOG_TCP_CLIENT_REFRESH_MISS, + LOG_TCP_IMS_HIT, ++ LOG_TCP_INM_HIT, + LOG_TCP_SWAPFAIL_MISS, + LOG_TCP_NEGATIVE_HIT, + LOG_TCP_MEM_HIT, +@@ -54,6 +55,7 @@ + return + (code == LOG_TCP_HIT) || + (code == LOG_TCP_IMS_HIT) || ++ (code == LOG_TCP_INM_HIT) || + (code == LOG_TCP_REFRESH_FAIL_OLD) || + (code == LOG_TCP_REFRESH_UNMODIFIED) || + (code == LOG_TCP_NEGATIVE_HIT) || + +=== modified file 'src/client_side.cc' +--- src/client_side.cc 2016-12-09 01:58:33 +0000 ++++ src/client_side.cc 2016-12-15 10:33:57 +0000 +@@ -429,6 +429,7 @@ + statCounter.client_http.nearHitSvcTime.count(svc_time); + break; + ++ case LOG_TCP_INM_HIT: + case LOG_TCP_IMS_HIT: + statCounter.client_http.nearMissSvcTime.count(svc_time); + break; + +=== modified file 'src/client_side_reply.cc' +--- src/client_side_reply.cc 2016-12-15 09:36:34 +0000 ++++ src/client_side_reply.cc 2016-12-15 10:33:57 +0000 +@@ -778,40 +778,27 @@ + return true; + } + +- bool matchedIfNoneMatch = false; + if (r.header.has(HDR_IF_NONE_MATCH)) { +- if (!e->hasIfNoneMatchEtag(r)) { +- // RFC 2616: ignore IMS if If-None-Match did not match +- r.flags.ims = false; +- r.ims = -1; +- r.imslen = 0; +- r.header.delById(HDR_IF_MODIFIED_SINCE); +- http->logType = LOG_TCP_MISS; +- sendMoreData(result); +- return true; +- } ++ // RFC 7232: If-None-Match recipient MUST ignore IMS ++ r.flags.ims = false; ++ r.ims = -1; ++ r.imslen = 0; ++ r.header.delById(HDR_IF_MODIFIED_SINCE); + +- if (!r.flags.ims) { +- // RFC 2616: if If-None-Match matched and there is no IMS, +- // reply with 304 Not Modified or 412 Precondition Failed ++ if (e->hasIfNoneMatchEtag(r)) { + sendNotModifiedOrPreconditionFailedError(); + return true; + } + +- // otherwise check IMS below to decide if we reply with 304 or 412 +- matchedIfNoneMatch = true; ++ // None-Match is true (no ETag matched); treat as an unconditional hit ++ return false; + } + + if (r.flags.ims) { + // handle If-Modified-Since requests from the client + if (e->modifiedSince(r.ims, r.imslen)) { +- http->logType = LOG_TCP_IMS_HIT; +- sendMoreData(result); +- +- } else if (matchedIfNoneMatch) { +- // If-None-Match matched, reply with 304 Not Modified or +- // 412 Precondition Failed +- sendNotModifiedOrPreconditionFailedError(); ++ // Modified-Since is true; treat as an unconditional hit ++ return false; + + } else { + // otherwise reply with 304 Not Modified +@@ -1974,7 +1961,12 @@ + StoreEntry *e = http->storeEntry(); + const time_t timestamp = e->timestamp; + HttpReply *const temprep = e->getReply()->make304(); +- http->logType = LOG_TCP_IMS_HIT; ++ // log as TCP_INM_HIT if code 304 generated for ++ // If-None-Match request ++ if (!http->request->flags.ims) ++ http->logType = LOG_TCP_INM_HIT; ++ else ++ http->logType = LOG_TCP_IMS_HIT; + removeClientStoreReference(&sc, http); + createStoreEntry(http->request->method, RequestFlags()); + e = http->storeEntry(); + From a1bc7f3ab9e9b001b5e2d2ee92165bb49623f55f Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 17 Dec 2016 14:11:53 +0100 Subject: [PATCH 026/464] squid: Update to 3.5.23 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 34 +-- ...uid-3.5.23-fix-max-file-descriptors.patch} | 0 src/patches/squid/squid-3.5-14099.patch | 65 ------ src/patches/squid/squid-3.5-14100.patch | 39 ---- src/patches/squid/squid-3.5-14101.patch | 59 ------ src/patches/squid/squid-3.5-14102.patch | 38 ---- src/patches/squid/squid-3.5-14103.patch | 61 ------ src/patches/squid/squid-3.5-14104.patch | 66 ------ src/patches/squid/squid-3.5-14105.patch | 48 ----- src/patches/squid/squid-3.5-14106.patch | 34 --- src/patches/squid/squid-3.5-14107.patch | 56 ----- src/patches/squid/squid-3.5-14108.patch | 33 --- src/patches/squid/squid-3.5-14109.patch | 167 --------------- src/patches/squid/squid-3.5-14110.patch | 102 --------- src/patches/squid/squid-3.5-14111.patch | 43 ---- src/patches/squid/squid-3.5-14112.patch | 60 ------ src/patches/squid/squid-3.5-14113.patch | 47 ----- src/patches/squid/squid-3.5-14114.patch | 46 ---- src/patches/squid/squid-3.5-14115.patch | 197 ------------------ src/patches/squid/squid-3.5-14116.patch | 38 ---- src/patches/squid/squid-3.5-14117.patch | 152 -------------- src/patches/squid/squid-3.5-14118.patch | 55 ----- src/patches/squid/squid-3.5-14119.patch | 184 ---------------- src/patches/squid/squid-3.5-14120.patch | 62 ------ src/patches/squid/squid-3.5-14121.patch | 36 ---- src/patches/squid/squid-3.5-14122.patch | 34 --- src/patches/squid/squid-3.5-14123.patch | 59 ------ src/patches/squid/squid-3.5-14124.patch | 47 ----- src/patches/squid/squid-3.5-14125.patch | 41 ---- src/patches/squid/squid-3.5-14126.patch | 123 ----------- 30 files changed, 3 insertions(+), 2023 deletions(-) rename src/patches/{squid-3.5.22-fix-max-file-descriptors.patch => squid-3.5.23-fix-max-file-descriptors.patch} (100%) delete mode 100644 src/patches/squid/squid-3.5-14099.patch delete mode 100644 src/patches/squid/squid-3.5-14100.patch delete mode 100644 src/patches/squid/squid-3.5-14101.patch delete mode 100644 src/patches/squid/squid-3.5-14102.patch delete mode 100644 src/patches/squid/squid-3.5-14103.patch delete mode 100644 src/patches/squid/squid-3.5-14104.patch delete mode 100644 src/patches/squid/squid-3.5-14105.patch delete mode 100644 src/patches/squid/squid-3.5-14106.patch delete mode 100644 src/patches/squid/squid-3.5-14107.patch delete mode 100644 src/patches/squid/squid-3.5-14108.patch delete mode 100644 src/patches/squid/squid-3.5-14109.patch delete mode 100644 src/patches/squid/squid-3.5-14110.patch delete mode 100644 src/patches/squid/squid-3.5-14111.patch delete mode 100644 src/patches/squid/squid-3.5-14112.patch delete mode 100644 src/patches/squid/squid-3.5-14113.patch delete mode 100644 src/patches/squid/squid-3.5-14114.patch delete mode 100644 src/patches/squid/squid-3.5-14115.patch delete mode 100644 src/patches/squid/squid-3.5-14116.patch delete mode 100644 src/patches/squid/squid-3.5-14117.patch delete mode 100644 src/patches/squid/squid-3.5-14118.patch delete mode 100644 src/patches/squid/squid-3.5-14119.patch delete mode 100644 src/patches/squid/squid-3.5-14120.patch delete mode 100644 src/patches/squid/squid-3.5-14121.patch delete mode 100644 src/patches/squid/squid-3.5-14122.patch delete mode 100644 src/patches/squid/squid-3.5-14123.patch delete mode 100644 src/patches/squid/squid-3.5-14124.patch delete mode 100644 src/patches/squid/squid-3.5-14125.patch delete mode 100644 src/patches/squid/squid-3.5-14126.patch diff --git a/lfs/squid b/lfs/squid index 0fa36d71a..db02367e5 100644 --- a/lfs/squid +++ b/lfs/squid @@ -24,7 +24,7 @@ include Config -VER = 3.5.22 +VER = 3.5.23 THISAPP = squid-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = afb82d2748c06c95815c171463b4aa14 +$(DL_FILE)_MD5 = 9b68f689e3d9578932b9c6a4041037c2 install : $(TARGET) @@ -70,35 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14099.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14100.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14101.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14102.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14103.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14104.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14105.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14106.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14107.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14108.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14109.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14110.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14111.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14112.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14113.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14114.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14115.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14116.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14117.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14118.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14119.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14120.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14121.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14122.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14123.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14124.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14125.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14126.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.22-fix-max-file-descriptors.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.23-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP)/libltdl && autoreconf -vfi diff --git a/src/patches/squid-3.5.22-fix-max-file-descriptors.patch b/src/patches/squid-3.5.23-fix-max-file-descriptors.patch similarity index 100% rename from src/patches/squid-3.5.22-fix-max-file-descriptors.patch rename to src/patches/squid-3.5.23-fix-max-file-descriptors.patch diff --git a/src/patches/squid/squid-3.5-14099.patch b/src/patches/squid/squid-3.5-14099.patch deleted file mode 100644 index 0e10effec..000000000 --- a/src/patches/squid/squid-3.5-14099.patch +++ /dev/null @@ -1,65 +0,0 @@ ------------------------------------------------------------- -revno: 14099 -revision-id: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 -parent: squid3@treenet.co.nz-20161009195739-pcju9hl8vqwijt26 -author: Alex Rousskov -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sat 2016-10-15 17:20:24 +1300 -message: - Fix build with eCAP but without ICAP support. - - That is, when ./configured with --enable-ecap --disable-icap-client. - - AccessLogEntry::icap requires ICAP_CLIENT, not just USE_ADAPTATION. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 4cd2e7bf4e2be0acd252963afc107537b17450fc -# timestamp: 2016-10-15 04:52:07 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161009195739-\ -# pcju9hl8vqwijt26 -# -# Begin patch -=== modified file 'src/format/Format.cc' ---- src/format/Format.cc 2016-09-16 11:53:28 +0000 -+++ src/format/Format.cc 2016-10-15 04:20:24 +0000 -@@ -318,7 +318,7 @@ - actualReplyHeader(const AccessLogEntry::Pointer &al) - { - const HttpMsg *msg = al->reply; --#if USE_ADAPTATION -+#if ICAP_CLIENT - // al->icap.reqMethod is methodNone in access.log context - if (!msg && al->icap.reqMethod == Adaptation::methodReqmod) - msg = al->adapted_request; -@@ -331,7 +331,7 @@ - static const HttpMsg * - actualRequestHeader(const AccessLogEntry::Pointer &al) - { --#if USE_ADAPTATION -+#if ICAP_CLIENT - // al->icap.reqMethod is methodNone in access.log context - if (al->icap.reqMethod == Adaptation::methodRespmod) { - // XXX: for now AccessLogEntry lacks virgin response headers -@@ -819,7 +819,7 @@ - break; - - case LFT_REQUEST_ALL_HEADERS: --#if USE_ADAPTATION -+#if ICAP_CLIENT - if (al->icap.reqMethod == Adaptation::methodRespmod) { - // XXX: since AccessLogEntry::Headers lacks virgin response - // headers, do nothing for now -@@ -843,7 +843,7 @@ - - case LFT_REPLY_ALL_HEADERS: - out = al->headers.reply; --#if USE_ADAPTATION -+#if ICAP_CLIENT - if (!out && al->icap.reqMethod == Adaptation::methodReqmod) - out = al->headers.adapted_request; - #endif - diff --git a/src/patches/squid/squid-3.5-14100.patch b/src/patches/squid/squid-3.5-14100.patch deleted file mode 100644 index 7e5335a64..000000000 --- a/src/patches/squid/squid-3.5-14100.patch +++ /dev/null @@ -1,39 +0,0 @@ ------------------------------------------------------------- -revno: 14100 -revision-id: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke -parent: squid3@treenet.co.nz-20161015042024-jagzafukd2t6gcr0 -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Tue 2016-10-25 21:19:49 +1300 -message: - Fix regression bug introduced by r14089. - - Squid crashed because HttpMsg::body_pipe was used without check that it - was initialized. The message lacks body pipe when it has no body or - empty body. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 50468130801fc3ebf75129c103bcfe4be9b6d4b7 -# timestamp: 2016-10-25 08:28:30 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161015042024-\ -# jagzafukd2t6gcr0 -# -# Begin patch -=== modified file 'src/adaptation/icap/ModXact.cc' ---- src/adaptation/icap/ModXact.cc 2016-09-16 18:50:04 +0000 -+++ src/adaptation/icap/ModXact.cc 2016-10-25 08:19:49 +0000 -@@ -1303,7 +1303,8 @@ - virgin_msg = virgin_request_; - assert(virgin_msg != virgin.cause); - al.http.clientRequestSz.header = virgin_msg->hdr_sz; -- al.http.clientRequestSz.payloadData = virgin_msg->body_pipe->producedSize(); -+ if (virgin_msg->body_pipe != NULL) -+ al.http.clientRequestSz.payloadData = virgin_msg->body_pipe->producedSize(); - - // leave al.icap.bodyBytesRead negative if no body - if (replyHttpHeaderSize >= 0 || replyHttpBodySize >= 0) { - diff --git a/src/patches/squid/squid-3.5-14101.patch b/src/patches/squid/squid-3.5-14101.patch deleted file mode 100644 index 92ff4d448..000000000 --- a/src/patches/squid/squid-3.5-14101.patch +++ /dev/null @@ -1,59 +0,0 @@ ------------------------------------------------------------- -revno: 14101 -revision-id: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem -parent: squid3@treenet.co.nz-20161025081949-3sxzd0n4snmadlke -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Tue 2016-10-25 21:23:49 +1300 -message: - Fix external_acl_type default children documentations - - The max children has always been 5, not 20. - - Also, make mgr:config report dumper actually hide only the real default - values. (sync with helper/ChildConfig.cc defaults) ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 02234eff0589032ea31d911c20f792617eeb18a9 -# timestamp: 2016-10-25 08:28:32 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161025081949-\ -# 3sxzd0n4snmadlke -# -# Begin patch -=== modified file 'src/cf.data.pre' ---- src/cf.data.pre 2016-09-23 15:28:42 +0000 -+++ src/cf.data.pre 2016-10-25 08:23:49 +0000 -@@ -678,7 +678,7 @@ - - children-max=n - Maximum number of acl helper processes spawned to service -- external acl lookups of this type. (default 20) -+ external acl lookups of this type. (default 5) - - children-startup=n - Minimum number of acl helper processes to spawn during - -=== modified file 'src/external_acl.cc' ---- src/external_acl.cc 2016-05-17 18:14:16 +0000 -+++ src/external_acl.cc 2016-10-25 08:23:49 +0000 -@@ -474,13 +474,13 @@ - if (node->children.n_max != DEFAULT_EXTERNAL_ACL_CHILDREN) - storeAppendPrintf(sentry, " children-max=%d", node->children.n_max); - -- if (node->children.n_startup != 1) -+ if (node->children.n_startup != 0) // sync with helper/ChildConfig.cc default - storeAppendPrintf(sentry, " children-startup=%d", node->children.n_startup); - -- if (node->children.n_idle != (node->children.n_max + node->children.n_startup) ) -+ if (node->children.n_idle != 1) // sync with helper/ChildConfig.cc default - storeAppendPrintf(sentry, " children-idle=%d", node->children.n_idle); - -- if (node->children.concurrency) -+ if (node->children.concurrency != 0) - storeAppendPrintf(sentry, " concurrency=%d", node->children.concurrency); - - if (node->cache) - diff --git a/src/patches/squid/squid-3.5-14102.patch b/src/patches/squid/squid-3.5-14102.patch deleted file mode 100644 index f59253161..000000000 --- a/src/patches/squid/squid-3.5-14102.patch +++ /dev/null @@ -1,38 +0,0 @@ ------------------------------------------------------------- -revno: 14102 -revision-id: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et -parent: squid3@treenet.co.nz-20161025082349-4gds2nic8qcahkem -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4620 -author: Takahiro Kambe -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Tue 2016-10-25 21:25:30 +1300 -message: - Bug 4620: NetBSD build error with --enable-ipf-transparent - - On NetBSD sys/param.h must be included before netinet/ip_compat.h ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: eedfc8764a631aa008fd4aba589ca08ee161c3a5 -# timestamp: 2016-10-25 08:28:35 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161025082349-\ -# 4gds2nic8qcahkem -# -# Begin patch -=== modified file 'src/ip/Intercept.cc' ---- src/ip/Intercept.cc 2016-10-09 00:14:14 +0000 -+++ src/ip/Intercept.cc 2016-10-25 08:25:30 +0000 -@@ -25,6 +25,9 @@ - #define IPFILTER_VERSION 5000004 - #endif - -+#if HAVE_SYS_PARAM_H -+#include -+#endif - #if HAVE_SYS_IOCCOM_H - #include - #endif - diff --git a/src/patches/squid/squid-3.5-14103.patch b/src/patches/squid/squid-3.5-14103.patch deleted file mode 100644 index 816aa9173..000000000 --- a/src/patches/squid/squid-3.5-14103.patch +++ /dev/null @@ -1,61 +0,0 @@ ------------------------------------------------------------- -revno: 14103 -revision-id: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v -parent: squid3@treenet.co.nz-20161025082530-do632qnr9bwyk5et -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4627 -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2016-10-30 12:26:28 +1300 -message: - Bug 4627: fix generate-host-certificates and dynamic_cert_mem_cache_size docs - - For Squid-3 the fix is just to update the documentation. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: ea728cefc977ea5489da01b7a742821121c29476 -# timestamp: 2016-10-29 23:51:13 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161025082530-\ -# do632qnr9bwyk5et -# -# Begin patch -=== modified file 'src/cf.data.pre' ---- src/cf.data.pre 2016-10-25 08:23:49 +0000 -+++ src/cf.data.pre 2016-10-29 23:26:28 +0000 -@@ -1787,13 +1787,12 @@ - certificate equals lifetime of the CA certificate. If - generated certificate is selfsigned lifetime is three - years. -- This option is enabled by default when ssl-bump is used. -- See the ssl-bump option above for more information. -+ This option is disabled by default. See the ssl-bump -+ option above for more information. - - dynamic_cert_mem_cache_size=SIZE - Approximate total RAM size spent on cached generated -- certificates. If set to zero, caching is disabled. The -- default value is 4MB. -+ certificates. If set to zero, caching is disabled. - - TLS / SSL Options: - -@@ -2063,13 +2062,12 @@ - certificate equals lifetime of CA certificate. If - generated certificate is selfsigned lifetime is three - years. -- This option is enabled by default when SslBump is used. -- See the sslBump option above for more information. -+ This option is disabled by default. See the ssl-bump -+ option above for more information. - - dynamic_cert_mem_cache_size=SIZE - Approximate total RAM size spent on cached generated -- certificates. If set to zero, caching is disabled. The -- default value is 4MB. -+ certificates. If set to zero, caching is disabled. - - See http_port for a list of available options. - DOC_END - diff --git a/src/patches/squid/squid-3.5-14104.patch b/src/patches/squid/squid-3.5-14104.patch deleted file mode 100644 index c5d6ed088..000000000 --- a/src/patches/squid/squid-3.5-14104.patch +++ /dev/null @@ -1,66 +0,0 @@ ------------------------------------------------------------- -revno: 14104 -revision-id: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks -parent: squid3@treenet.co.nz-20161029232628-1y2u918re62uqs3v -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2016-10-30 22:38:16 +1300 -message: - Copyright: add some missing blurbs and contributor details ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 8d44709a8f9c34926ce569e58aef82603a3d514b -# timestamp: 2016-10-30 09:40:44 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161029232628-\ -# 1y2u918re62uqs3v -# -# Begin patch -=== modified file 'CONTRIBUTORS' ---- CONTRIBUTORS 2016-01-06 14:27:36 +0000 -+++ CONTRIBUTORS 2016-10-30 09:38:16 +0000 -@@ -211,6 +211,8 @@ - Joe Ramey - Joerg Lehrke - Johnathan Conley -+ John@MCC.ac.uk -+ John@Pharmweb.NET - John Dilley - John M Cooper - John Saunders - -=== modified file 'contrib/url-normalizer.pl' ---- contrib/url-normalizer.pl 1996-12-07 00:54:31 +0000 -+++ contrib/url-normalizer.pl 2016-10-30 09:38:16 +0000 -@@ -1,4 +1,11 @@ - #!/usr/local/bin/perl -Tw -+# -+# * Copyright (C) 1996-2016 The Squid Software Foundation and contributors -+# * -+# * Squid software is distributed under GPLv2+ license and includes -+# * contributions from numerous individuals and organizations. -+# * Please see the COPYING and CONTRIBUTORS files for details. -+# - - # From: Markus Gyger - # - -=== modified file 'contrib/user-agents.pl' ---- contrib/user-agents.pl 1996-12-07 00:28:56 +0000 -+++ contrib/user-agents.pl 2016-10-30 09:38:16 +0000 -@@ -1,5 +1,13 @@ - #!/usr/bin/perl - # -+# * Copyright (C) 1996-2016 The Squid Software Foundation and contributors -+# * -+# * Squid software is distributed under GPLv2+ license and includes -+# * contributions from numerous individuals and organizations. -+# * Please see the COPYING and CONTRIBUTORS files for details. -+# -+ -+# - # John@MCC.ac.uk - # John@Pharmweb.NET - diff --git a/src/patches/squid/squid-3.5-14105.patch b/src/patches/squid/squid-3.5-14105.patch deleted file mode 100644 index d73dcea89..000000000 --- a/src/patches/squid/squid-3.5-14105.patch +++ /dev/null @@ -1,48 +0,0 @@ ------------------------------------------------------------- -revno: 14105 -revision-id: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq -parent: squid3@treenet.co.nz-20161030093816-7vwnk5zrrql2p5ks -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4567 -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2016-10-30 22:39:20 +1300 -message: - Bug 4567: Strange IPv6 shown in access.log ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 8dbae4e7fc5fb80afc6eee6800743abd1b1eaa47 -# timestamp: 2016-10-30 09:40:47 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161030093816-\ -# 7vwnk5zrrql2p5ks -# -# Begin patch -=== modified file 'src/AccessLogEntry.cc' ---- src/AccessLogEntry.cc 2016-01-01 00:14:27 +0000 -+++ src/AccessLogEntry.cc 2016-10-30 09:39:20 +0000 -@@ -30,14 +30,17 @@ - log_ip = request->indirect_client_addr; - else - #endif -- if (tcpClient != NULL) -+ if (tcpClient) - log_ip = tcpClient->remote; -- else if (cache.caddr.isNoAddr()) { // e.g., ICAP OPTIONS lack client -- strncpy(buf, "-", bufsz); -- return; -- } else -+ else - log_ip = cache.caddr; - -+ // internally generated requests (and some ICAP) lack client IP -+ if (log_ip.isNoAddr()) { -+ strncpy(buf, "-", bufsz); -+ return; -+ } -+ - // Apply so-called 'privacy masking' to IPv4 clients - // - localhost IP is always shown in full - // - IPv4 clients masked with client_netmask - diff --git a/src/patches/squid/squid-3.5-14106.patch b/src/patches/squid/squid-3.5-14106.patch deleted file mode 100644 index cd3f63fa6..000000000 --- a/src/patches/squid/squid-3.5-14106.patch +++ /dev/null @@ -1,34 +0,0 @@ ------------------------------------------------------------- -revno: 14106 -revision-id: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d -parent: squid3@treenet.co.nz-20161030093920-5f7f2px9ea08rxlq -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2016-10-30 22:40:25 +1300 -message: - Fix debug message in ACLChecklist::bannedAction() ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 4fd7942b294096f5c27e3d460b6d4c79580443e1 -# timestamp: 2016-10-30 09:40:49 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161030093920-\ -# 5f7f2px9ea08rxlq -# -# Begin patch -=== modified file 'src/acl/Checklist.cc' ---- src/acl/Checklist.cc 2016-01-01 00:14:27 +0000 -+++ src/acl/Checklist.cc 2016-10-30 09:40:25 +0000 -@@ -397,7 +397,7 @@ - ACLChecklist::bannedAction(const allow_t &action) const - { - const bool found = std::find(bannedActions_.begin(), bannedActions_.end(), action) != bannedActions_.end(); -- debugs(28, 5, "Action '" << action << "/" << action.kind << (found ? " is " : "is not") << " banned"); -+ debugs(28, 5, "Action '" << action << "/" << action.kind << (found ? "' is " : "' is not") << " banned"); - return found; - } - - diff --git a/src/patches/squid/squid-3.5-14107.patch b/src/patches/squid/squid-3.5-14107.patch deleted file mode 100644 index 34b0ace4c..000000000 --- a/src/patches/squid/squid-3.5-14107.patch +++ /dev/null @@ -1,56 +0,0 @@ ------------------------------------------------------------- -revno: 14107 -revision-id: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns -parent: squid3@treenet.co.nz-20161030094025-l4b8fdahoru8h16d -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2016-10-30 22:45:03 +1300 -message: - HTTP/1.1: make Vary:* objects cacheable - - Under new clauses from RFC 7231 section 7.1.4 and HTTP response - containing header Vary:* (wifcard variant) can be cached, but - requires revalidation with server before each use. - - Use the new mandatory revalidation flags to allow storing of any - wildcard Vary:* response. - - Note that responses with headers like Vary:A,B,C,* are equivalent - to Vary:*. The cache key string for these objects is normalized. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 2652a5a689745e31fc450e0dfd1c5c472f6d68d6 -# timestamp: 2016-10-30 09:45:47 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161030094025-\ -# l4b8fdahoru8h16d -# -# Begin patch -=== modified file 'src/http.cc' ---- src/http.cc 2016-10-09 19:47:26 +0000 -+++ src/http.cc 2016-10-30 09:45:03 +0000 -@@ -594,7 +594,7 @@ - while (strListGetItem(&vary, ',', &item, &ilen, &pos)) { - SBuf name(item, ilen); - if (name == asterisk) { -- vstr.clear(); -+ vstr = asterisk; - break; - } - name.toLower(); -@@ -917,6 +917,12 @@ - varyFailure = true; - } else { - entry->mem_obj->vary_headers = vary; -+ -+ // RFC 7231 section 7.1.4 -+ // Vary:* can be cached, but has mandatory revalidation -+ static const SBuf asterisk("*"); -+ if (vary == asterisk) -+ EBIT_SET(entry->flags, ENTRY_REVALIDATE_ALWAYS); - } - } - - diff --git a/src/patches/squid/squid-3.5-14108.patch b/src/patches/squid/squid-3.5-14108.patch deleted file mode 100644 index 282fe41d9..000000000 --- a/src/patches/squid/squid-3.5-14108.patch +++ /dev/null @@ -1,33 +0,0 @@ ------------------------------------------------------------- -revno: 14108 -revision-id: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx -parent: squid3@treenet.co.nz-20161030094503-rwdft21ffff44rns -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Wed 2016-11-02 00:22:31 +1300 -message: - Fix build issue after rev.14105 ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: fea1ede525ccb3ad7bf50e8de8f125a86a8dc016 -# timestamp: 2016-11-01 11:51:06 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161030094503-\ -# rwdft21ffff44rns -# -# Begin patch -=== modified file 'src/AccessLogEntry.cc' ---- src/AccessLogEntry.cc 2016-10-30 09:39:20 +0000 -+++ src/AccessLogEntry.cc 2016-11-01 11:22:31 +0000 -@@ -30,7 +30,7 @@ - log_ip = request->indirect_client_addr; - else - #endif -- if (tcpClient) -+ if (tcpClient != NULL) - log_ip = tcpClient->remote; - else - log_ip = cache.caddr; - diff --git a/src/patches/squid/squid-3.5-14109.patch b/src/patches/squid/squid-3.5-14109.patch deleted file mode 100644 index 82b7dd270..000000000 --- a/src/patches/squid/squid-3.5-14109.patch +++ /dev/null @@ -1,167 +0,0 @@ ------------------------------------------------------------- -revno: 14109 -revision-id: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h -parent: squid3@treenet.co.nz-20161101112231-k77st4up2sekl5zx -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3379 -author: Garri Djavadyan , Amos Jeffries -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2016-11-11 19:03:25 +1300 -message: - Bug 3379: Combination of If-Match and a Cache Hit result in TCP Connection Failure ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 50d66878a765925d9a64569b3c226bebdee1f736 -# timestamp: 2016-11-11 06:10:37 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161101112231-\ -# k77st4up2sekl5zx -# -# Begin patch -=== modified file 'src/client_side_reply.cc' ---- src/client_side_reply.cc 2016-10-09 19:47:26 +0000 -+++ src/client_side_reply.cc 2016-11-11 06:03:25 +0000 -@@ -589,6 +589,7 @@ - debugs(88, 5, "negative-HIT"); - http->logType = LOG_TCP_NEGATIVE_HIT; - sendMoreData(result); -+ return; - } else if (blockedHit()) { - debugs(88, 5, "send_hit forces a MISS"); - http->logType = LOG_TCP_MISS; -@@ -641,27 +642,29 @@ - http->logType = LOG_TCP_MISS; - processMiss(); - } -+ return; - } else if (r->conditional()) { - debugs(88, 5, "conditional HIT"); -- processConditional(result); -- } else { -- /* -- * plain ol' cache hit -- */ -- debugs(88, 5, "plain old HIT"); -+ if (processConditional(result)) -+ return; -+ } -+ -+ /* -+ * plain ol' cache hit -+ */ -+ debugs(88, 5, "plain old HIT"); - - #if USE_DELAY_POOLS -- if (e->store_status != STORE_OK) -- http->logType = LOG_TCP_MISS; -- else -+ if (e->store_status != STORE_OK) -+ http->logType = LOG_TCP_MISS; -+ else - #endif -- if (e->mem_status == IN_MEMORY) -- http->logType = LOG_TCP_MEM_HIT; -- else if (Config.onoff.offline) -- http->logType = LOG_TCP_OFFLINE_HIT; -+ if (e->mem_status == IN_MEMORY) -+ http->logType = LOG_TCP_MEM_HIT; -+ else if (Config.onoff.offline) -+ http->logType = LOG_TCP_OFFLINE_HIT; - -- sendMoreData(result); -- } -+ sendMoreData(result); - } - - /** -@@ -755,17 +758,16 @@ - } - - /// process conditional request from client --void -+bool - clientReplyContext::processConditional(StoreIOBuffer &result) - { - StoreEntry *const e = http->storeEntry(); - - if (e->getReply()->sline.status() != Http::scOkay) { -- debugs(88, 4, "clientReplyContext::processConditional: Reply code " << -- e->getReply()->sline.status() << " != 200"); -+ debugs(88, 4, "Reply code " << e->getReply()->sline.status() << " != 200"); - http->logType = LOG_TCP_MISS; - processMiss(); -- return; -+ return true; - } - - HttpRequest &r = *http->request; -@@ -773,7 +775,7 @@ - if (r.header.has(HDR_IF_MATCH) && !e->hasIfMatchEtag(r)) { - // RFC 2616: reply with 412 Precondition Failed if If-Match did not match - sendPreconditionFailedError(); -- return; -+ return true; - } - - bool matchedIfNoneMatch = false; -@@ -786,14 +788,14 @@ - r.header.delById(HDR_IF_MODIFIED_SINCE); - http->logType = LOG_TCP_MISS; - sendMoreData(result); -- return; -+ return true; - } - - if (!r.flags.ims) { - // RFC 2616: if If-None-Match matched and there is no IMS, - // reply with 304 Not Modified or 412 Precondition Failed - sendNotModifiedOrPreconditionFailedError(); -- return; -+ return true; - } - - // otherwise check IMS below to decide if we reply with 304 or 412 -@@ -805,19 +807,20 @@ - if (e->modifiedSince(r.ims, r.imslen)) { - http->logType = LOG_TCP_IMS_HIT; - sendMoreData(result); -- return; -- } - -- if (matchedIfNoneMatch) { -+ } else if (matchedIfNoneMatch) { - // If-None-Match matched, reply with 304 Not Modified or - // 412 Precondition Failed - sendNotModifiedOrPreconditionFailedError(); -- return; -+ -+ } else { -+ // otherwise reply with 304 Not Modified -+ sendNotModified(); - } -- -- // otherwise reply with 304 Not Modified -- sendNotModified(); -+ return true; - } -+ -+ return false; - } - - /// whether squid.conf send_hit prevents us from serving this hit - -=== modified file 'src/client_side_reply.h' ---- src/client_side_reply.h 2016-09-23 15:28:42 +0000 -+++ src/client_side_reply.h 2016-11-11 06:03:25 +0000 -@@ -114,7 +114,7 @@ - bool alwaysAllowResponse(Http::StatusCode sline) const; - int checkTransferDone(); - void processOnlyIfCachedMiss(); -- void processConditional(StoreIOBuffer &result); -+ bool processConditional(StoreIOBuffer &result); - void cacheHit(StoreIOBuffer result); - void handleIMSReply(StoreIOBuffer result); - void sendMoreData(StoreIOBuffer result); - diff --git a/src/patches/squid/squid-3.5-14110.patch b/src/patches/squid/squid-3.5-14110.patch deleted file mode 100644 index 0d0a9db4b..000000000 --- a/src/patches/squid/squid-3.5-14110.patch +++ /dev/null @@ -1,102 +0,0 @@ ------------------------------------------------------------- -revno: 14110 -revision-id: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz -parent: squid3@treenet.co.nz-20161111060325-yh8chavvnzuvfh3h -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Mon 2016-11-14 23:51:24 +1300 -message: - Fix ssl::server_name ACL badly broken since inception. - - The original server_name code mishandled all SNI checks and some rare - host checks: - - * The SNI-derived value was pointing to an already freed memory storage. - * Missing host-derived values were not detected (host() is never nil). - * Mismatches were re-checked with an undocumented "none" value - instead of being treated as mismatches. - - Same for ssl::server_name_regex. - - Also set SNI for more server-first and client-first transactions. - - This is a Measurement Factory project. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 46aadc410b46d91d597218961dbf1c634fb834fb -# timestamp: 2016-11-14 10:56:00 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161111060325-\ -# yh8chavvnzuvfh3h -# -# Begin patch -=== modified file 'src/acl/ServerName.cc' ---- src/acl/ServerName.cc 2016-09-08 12:27:06 +0000 -+++ src/acl/ServerName.cc 2016-11-14 10:51:24 +0000 -@@ -90,27 +90,28 @@ - { - assert(checklist != NULL && checklist->request != NULL); - -- if (checklist->conn() && checklist->conn()->serverBump()) { -- if (X509 *peer_cert = checklist->conn()->serverBump()->serverCert.get()) { -- if (Ssl::matchX509CommonNames(peer_cert, (void *)data, check_cert_domain)) -- return 1; -- } -- } -- - const char *serverName = NULL; -- if (checklist->conn() && !checklist->conn()->sslCommonName().isEmpty()) { -- SBuf scn = checklist->conn()->sslCommonName(); -- serverName = scn.c_str(); -- } -- -- if (serverName == NULL) -- serverName = checklist->request->GetHost(); -- -- if (serverName && data->match(serverName)) { -- return 1; -- } -- -- return data->match("none"); -+ SBuf serverNameKeeper; // because c_str() is not constant -+ if (ConnStateData *conn = checklist->conn()) { -+ if (conn->serverBump()) { -+ if (X509 *peer_cert = conn->serverBump()->serverCert.get()) -+ return Ssl::matchX509CommonNames(peer_cert, (void *)data, check_cert_domain); -+ } -+ -+ if (conn->sslCommonName().isEmpty()) { -+ const char *host = checklist->request->GetHost(); -+ if (host && *host) // paranoid first condition: host() is never nil -+ serverName = host; -+ } else { -+ serverNameKeeper = conn->sslCommonName(); -+ serverName = serverNameKeeper.c_str(); -+ } -+ } -+ -+ if (!serverName) -+ serverName = "none"; -+ -+ return data->match(serverName); - } - - ACLServerNameStrategy * - -=== modified file 'src/cf.data.pre' ---- src/cf.data.pre 2016-10-29 23:26:28 +0000 -+++ src/cf.data.pre 2016-11-14 10:51:24 +0000 -@@ -1167,6 +1167,9 @@ - # During each Ssl-Bump step, Squid may improve its understanding of a - # "true server name". Unlike dstdomain, this ACL does not perform - # DNS lookups. -+ # The "none" name can be used to match transactions where Squid -+ # could not compute the server name using any information source -+ # already available at the ACL evaluation time. - - acl aclname ssl::server_name_regex [-i] \.foo\.com ... - # regex matches server name obtained from various sources [fast] - diff --git a/src/patches/squid/squid-3.5-14111.patch b/src/patches/squid/squid-3.5-14111.patch deleted file mode 100644 index 984069b0c..000000000 --- a/src/patches/squid/squid-3.5-14111.patch +++ /dev/null @@ -1,43 +0,0 @@ ------------------------------------------------------------- -revno: 14111 -revision-id: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay -parent: squid3@treenet.co.nz-20161114105124-46hmtnsg8uj4owxz -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Mon 2016-11-14 23:54:34 +1300 -message: - Fix spelling for digest nonce cache maintenance event ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 8c91678868beb689db5e0e6eaa6911c44f503ac8 -# timestamp: 2016-11-14 10:56:03 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161114105124-\ -# 46hmtnsg8uj4owxz -# -# Begin patch -=== modified file 'src/auth/digest/Config.cc' ---- src/auth/digest/Config.cc 2016-01-01 00:14:27 +0000 -+++ src/auth/digest/Config.cc 2016-11-14 10:54:34 +0000 -@@ -204,7 +204,7 @@ - if (!digest_nonce_cache) { - digest_nonce_cache = hash_create((HASHCMP *) strcmp, 7921, hash_string); - assert(digest_nonce_cache); -- eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); -+ eventAdd("Digest nonce cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); - } - } - -@@ -268,7 +268,7 @@ - debugs(29, 3, "Finished cleaning the nonce cache."); - - if (static_cast(Auth::Config::Find("digest"))->active()) -- eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); -+ eventAdd("Digest nonce cache maintenance", authenticateDigestNonceCacheCleanup, NULL, static_cast(Auth::Config::Find("digest"))->nonceGCInterval, 1); - } - - static void - diff --git a/src/patches/squid/squid-3.5-14112.patch b/src/patches/squid/squid-3.5-14112.patch deleted file mode 100644 index a63c1c0a2..000000000 --- a/src/patches/squid/squid-3.5-14112.patch +++ /dev/null @@ -1,60 +0,0 @@ ------------------------------------------------------------- -revno: 14112 -revision-id: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 -parent: squid3@treenet.co.nz-20161114105434-f1uvw2lu8l4lpgay -author: Alex Rousskov -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Tue 2016-11-15 01:40:51 +1300 -message: - Honor SBufReservationRequirements::minSize regardless of idealSize. - - In a fully specified SBufReservationRequirements, idealSize would - naturally match or exceed minSize. However, the idealSize default value - (zero) may not. We should honor minSize regardless of idealSize, just as - the API documentation promises to do. - - No runtime changes expected right now because the only existing user of - SBufReservationRequirements sets .idealSize to CLIENT_REQ_BUF_SZ (4096) - and .minSize to 1024. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: fb0969aa035352582364b529a70286cbfd89564a -# timestamp: 2016-11-14 12:43:10 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161114105434-\ -# f1uvw2lu8l4lpgay -# -# Begin patch -=== modified file 'src/SBuf.cc' ---- src/SBuf.cc 2016-06-18 13:36:07 +0000 -+++ src/SBuf.cc 2016-11-14 12:40:51 +0000 -@@ -178,7 +178,8 @@ - if (!mustRealloc && len_ >= req.maxCapacity) - return spaceSize(); // but we cannot reallocate - -- const size_type newSpace = std::min(req.idealSpace, maxSize - len_); -+ const size_type desiredSpace = std::max(req.minSpace, req.idealSpace); -+ const size_type newSpace = std::min(desiredSpace, maxSize - len_); - reserveCapacity(std::min(len_ + newSpace, req.maxCapacity)); - debugs(24, 7, id << " now: " << off_ << '+' << len_ << '+' << spaceSize() << - '=' << store_->capacity); - -=== modified file 'src/SBuf.h' ---- src/SBuf.h 2016-06-18 13:36:07 +0000 -+++ src/SBuf.h 2016-11-14 12:40:51 +0000 -@@ -635,9 +635,10 @@ - /* - * Parameters are listed in the reverse order of importance: Satisfaction of - * the lower-listed requirements may violate the higher-listed requirements. -+ * For example, idealSpace has no effect unless it exceeds minSpace. - */ - size_type idealSpace; ///< if allocating anyway, provide this much space -- size_type minSpace; ///< allocate if spaceSize() is smaller -+ size_type minSpace; ///< allocate [at least this much] if spaceSize() is smaller - size_type maxCapacity; ///< do not allocate more than this - bool allowShared; ///< whether sharing our storage with others is OK - }; - diff --git a/src/patches/squid/squid-3.5-14113.patch b/src/patches/squid/squid-3.5-14113.patch deleted file mode 100644 index d54502630..000000000 --- a/src/patches/squid/squid-3.5-14113.patch +++ /dev/null @@ -1,47 +0,0 @@ ------------------------------------------------------------- -revno: 14113 -revision-id: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn -parent: squid3@treenet.co.nz-20161114124051-s0vzoj5exv5g8w56 -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Tue 2016-11-15 20:57:28 +1300 -message: - TLS: Make key= before cert= an error instead of quietly hiding the issue - - This squid.conf setup is fatal in Squid-4. So best to fix these installations. - Even though Squdi-3 can cope with it. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: a18738f4cbf0c1bd368e61d4b19c5d6f5005b919 -# timestamp: 2016-11-15 07:58:39 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161114124051-\ -# s0vzoj5exv5g8w56 -# -# Begin patch -=== modified file 'src/cache_cf.cc' ---- src/cache_cf.cc 2016-09-23 11:11:48 +0000 -+++ src/cache_cf.cc 2016-11-15 07:57:28 +0000 -@@ -2257,6 +2257,9 @@ - safe_free(p->sslcert); - p->sslcert = xstrdup(token + 8); - } else if (strncmp(token, "sslkey=", 7) == 0) { -+ if (!p->sslcert) { -+ debugs(3, DBG_CRITICAL, "ERROR: " << cfg_directive << ": sslcert= option must be set before sslkey= is used."); -+ } - safe_free(p->sslkey); - p->sslkey = xstrdup(token + 7); - } else if (strncmp(token, "sslversion=", 11) == 0) { -@@ -3729,6 +3732,9 @@ - safe_free(s->cert); - s->cert = xstrdup(token + 5); - } else if (strncmp(token, "key=", 4) == 0) { -+ if (!s->cert) { -+ debugs(3, DBG_CRITICAL, "ERROR: " << cfg_directive << ": cert= option must be set before key= is used."); -+ } - safe_free(s->key); - s->key = xstrdup(token + 4); - } else if (strncmp(token, "version=", 8) == 0) { - diff --git a/src/patches/squid/squid-3.5-14114.patch b/src/patches/squid/squid-3.5-14114.patch deleted file mode 100644 index 098500429..000000000 --- a/src/patches/squid/squid-3.5-14114.patch +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------- -revno: 14114 -revision-id: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 -parent: squid3@treenet.co.nz-20161115075728-2xj2621oh5bwn8wn -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-01 04:42:05 +1300 -message: - Improve debugs warnings when loading signing certs fails ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: e760bf590489a354e314f19dd158b063d23ef7a7 -# timestamp: 2016-11-30 15:51:47 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161115075728-\ -# 2xj2621oh5bwn8wn -# -# Begin patch -=== modified file 'src/ssl/support.cc' ---- src/ssl/support.cc 2016-10-09 14:30:11 +0000 -+++ src/ssl/support.cc 2016-11-30 15:42:05 +0000 -@@ -2011,10 +2011,17 @@ - pem_password_cb *cb = ::Config.Program.ssl_password ? &ssl_ask_password_cb : NULL; - pkey.reset(readSslPrivateKey(keyFilename, cb)); - cert.reset(readSslX509CertificatesChain(certFilename, chain.get())); -- if (!pkey || !cert || !X509_check_private_key(cert.get(), pkey.get())) { -- pkey.reset(NULL); -- cert.reset(NULL); -- } -+ if (!cert) { -+ debugs(83, DBG_IMPORTANT, "WARNING: missing cert in '" << certFilename << "'"); -+ } else if (!pkey) { -+ debugs(83, DBG_IMPORTANT, "WARNING: missing private key in '" << keyFilename << "'"); -+ } else if (!X509_check_private_key(cert.get(), pkey.get())) { -+ debugs(83, DBG_IMPORTANT, "WARNING: X509_check_private_key() failed to verify signing cert"); -+ } else -+ return; // everything is okay -+ -+ pkey.reset(NULL); -+ cert.reset(NULL); - } - - bool Ssl::generateUntrustedCert(X509_Pointer &untrustedCert, EVP_PKEY_Pointer &untrustedPkey, X509_Pointer const &cert, EVP_PKEY_Pointer const & pkey) - diff --git a/src/patches/squid/squid-3.5-14115.patch b/src/patches/squid/squid-3.5-14115.patch deleted file mode 100644 index 4e5e3cf2b..000000000 --- a/src/patches/squid/squid-3.5-14115.patch +++ /dev/null @@ -1,197 +0,0 @@ ------------------------------------------------------------- -revno: 14115 -revision-id: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k -parent: squid3@treenet.co.nz-20161130154205-c9z1bhqzuh3rafl3 -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4004 -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-01 10:56:30 +1300 -message: - Bug 4004 partial: Fix segfault via Ftp::Client::readControlReply - - Added nil dereference checks for Ftp::Client::ctrl.conn, including: - - Ftp::Client::handlePasvReply() and handleEpsvReply() that dereference - ctrl.conn in DBG_IMPORTANT messages. - - Many functions inside FtpClient.cc and FtpGateway.cc files. - - TODO: We need to find a better way to handle nil ctrl.conn. It is only - a matter of time when we forget to add another dereference check or - discover a place we missed during this change. - - Also disabled forwarding of EPRT and PORT commands to origin servers. - Squid support for those commands is broken and their forwarding may - cause segfaults (bug #4004). Active FTP is still supported, of course. - - This is a Measurement Factory project ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 345883c1b5a5cd221e9d0e68b254df7d955372ad -# timestamp: 2016-11-30 22:42:02 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161130154205-\ -# c9z1bhqzuh3rafl3 -# -# Begin patch -=== modified file 'src/clients/FtpClient.cc' ---- src/clients/FtpClient.cc 2016-08-05 14:59:33 +0000 -+++ src/clients/FtpClient.cc 2016-11-30 21:56:30 +0000 -@@ -442,6 +442,11 @@ - char *buf; - debugs(9, 3, status()); - -+ if (!Comm::IsConnOpen(ctrl.conn)) { -+ debugs(9, 5, "The control connection to the remote end is closed"); -+ return false; -+ } -+ - if (code != 227) { - debugs(9, 2, "PASV not supported by remote end"); - return false; -@@ -473,6 +478,11 @@ - char *buf; - debugs(9, 3, status()); - -+ if (!Comm::IsConnOpen(ctrl.conn)) { -+ debugs(9, 5, "The control connection to the remote end is closed"); -+ return false; -+ } -+ - if (code != 229 && code != 522) { - if (code == 200) { - /* handle broken servers (RFC 2428 says OK code for EPSV MUST be 229 not 200) */ -@@ -733,6 +743,11 @@ - void - Ftp::Client::connectDataChannel() - { -+ if (!Comm::IsConnOpen(ctrl.conn)) { -+ debugs(9, 5, "The control connection to the remote end is closed"); -+ return; -+ } -+ - safe_free(ctrl.last_command); - - safe_free(ctrl.last_reply); - -=== modified file 'src/clients/FtpGateway.cc' ---- src/clients/FtpGateway.cc 2016-01-31 05:39:09 +0000 -+++ src/clients/FtpGateway.cc 2016-11-30 21:56:30 +0000 -@@ -212,7 +212,9 @@ - static FTPSM ftpReadMdtm; - static FTPSM ftpSendSize; - static FTPSM ftpReadSize; -+#if 0 - static FTPSM ftpSendEPRT; -+#endif - static FTPSM ftpReadEPRT; - static FTPSM ftpSendPORT; - static FTPSM ftpReadPORT; -@@ -450,6 +452,11 @@ - void - Ftp::Gateway::listenForDataChannel(const Comm::ConnectionPointer &conn) - { -+ if (!Comm::IsConnOpen(ctrl.conn)) { -+ debugs(9, 5, "The control connection to the remote end is closed"); -+ return; -+ } -+ - assert(!Comm::IsConnOpen(data.conn)); - - typedef CommCbMemFunT AcceptDialer; -@@ -1183,7 +1190,7 @@ - - checkUrlpath(); - buildTitleUrl(); -- debugs(9, 5, HERE << "FD " << ctrl.conn->fd << " : host=" << request->GetHost() << -+ debugs(9, 5, "FD " << (ctrl.conn != NULL ? ctrl.conn->fd : -1) << " : host=" << request->GetHost() << - ", path=" << request->urlpath << ", user=" << user << ", passwd=" << password); - state = BEGIN; - Ftp::Client::start(); -@@ -1750,7 +1757,9 @@ - if (ftpState->handlePasvReply(srvAddr)) - ftpState->connectDataChannel(); - else { -- ftpSendEPRT(ftpState); -+ ftpFail(ftpState); -+ // Currently disabled, does not work correctly: -+ // ftpSendEPRT(ftpState); - return; - } - } -@@ -1790,6 +1799,11 @@ - } - safe_free(ftpState->data.host); - -+ if (!Comm::IsConnOpen(ftpState->ctrl.conn)) { -+ debugs(9, 5, "The control connection to the remote end is closed"); -+ return; -+ } -+ - /* - * Set up a listen socket on the same local address as the - * control connection. -@@ -1875,9 +1889,14 @@ - ftpRestOrList(ftpState); - } - -+#if 0 - static void - ftpSendEPRT(Ftp::Gateway * ftpState) - { -+ /* check the server control channel is still available */ -+ if (!ftpState || !ftpState->haveControlChannel("ftpSendEPRT")) -+ return; -+ - if (Config.Ftp.epsv_all && ftpState->flags.epsv_all_sent) { - debugs(9, DBG_IMPORTANT, "FTP does not allow EPRT method after 'EPSV ALL' has been sent."); - return; -@@ -1913,6 +1932,7 @@ - ftpState->writeCommand(cbuf); - ftpState->state = Ftp::Client::SENT_EPRT; - } -+#endif - - static void - ftpReadEPRT(Ftp::Gateway * ftpState) -@@ -1939,10 +1959,8 @@ - { - debugs(9, 3, HERE); - -- if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { -- abortAll("entry aborted when accepting data conn"); -- data.listenConn->close(); -- data.listenConn = NULL; -+ if (!Comm::IsConnOpen(ctrl.conn)) { /*Close handlers will cleanup*/ -+ debugs(9, 5, "The control connection to the remote end is closed"); - return; - } - -@@ -1955,6 +1973,14 @@ - return; - } - -+ if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { -+ abortAll("entry aborted when accepting data conn"); -+ data.listenConn->close(); -+ data.listenConn = NULL; -+ io.conn->close(); -+ return; -+ } -+ - /* data listening conn is no longer even open. abort. */ - if (!Comm::IsConnOpen(data.listenConn)) { - data.listenConn = NULL; // ensure that it's cleared and not just closed. -@@ -2705,8 +2731,8 @@ - Ftp::Gateway::completeForwarding() - { - if (fwd == NULL || flags.completed_forwarding) { -- debugs(9, 3, HERE << "completeForwarding avoids " << -- "double-complete on FD " << ctrl.conn->fd << ", Data FD " << data.conn->fd << -+ debugs(9, 3, "avoid double-complete on FD " << -+ (ctrl.conn != NULL ? ctrl.conn->fd : -1) << ", Data FD " << data.conn->fd << - ", this " << this << ", fwd " << fwd); - return; - } - diff --git a/src/patches/squid/squid-3.5-14116.patch b/src/patches/squid/squid-3.5-14116.patch deleted file mode 100644 index c92d8b80c..000000000 --- a/src/patches/squid/squid-3.5-14116.patch +++ /dev/null @@ -1,38 +0,0 @@ ------------------------------------------------------------- -revno: 14116 -revision-id: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b -parent: squid3@treenet.co.nz-20161130215630-c42qucqar9bi9a1k -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3533 -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-01 11:33:32 +1300 -message: - Bug 3533: Cache still valid after HTTP/1.1 303 See Other - - RFC7231 does not mention 303 response as non-cacheable. - So, assuming that means it *is* cacheable. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: c90320c95a4b64c8d18794fbe5df526fe0f9f702 -# timestamp: 2016-11-30 22:42:05 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161130215630-\ -# c42qucqar9bi9a1k -# -# Begin patch -=== modified file 'src/http.cc' ---- src/http.cc 2016-10-30 09:45:03 +0000 -+++ src/http.cc 2016-11-30 22:33:32 +0000 -@@ -203,6 +203,8 @@ - - case Http::scFound: - -+ case Http::scSeeOther: -+ - case Http::scGone: - - case Http::scNotFound: - diff --git a/src/patches/squid/squid-3.5-14117.patch b/src/patches/squid/squid-3.5-14117.patch deleted file mode 100644 index 23d5376f2..000000000 --- a/src/patches/squid/squid-3.5-14117.patch +++ /dev/null @@ -1,152 +0,0 @@ ------------------------------------------------------------- -revno: 14117 -revision-id: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my -parent: squid3@treenet.co.nz-20161130223332-zcaxll4prj3kag1b -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4007 -author: Stephen Baynes , Amos Jeffries -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-01 12:20:39 +1300 -message: - Bug 4007: Hang on DNS query with dead-end CNAME - - DNS lookup recursion no longer occurs. ipcacheParse() return values are no - longer useful. - - Also, cleanup the debugging output. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 9059c7a07e5366bd2eac606c72f875077766ed34 -# timestamp: 2016-11-30 23:27:11 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161130223332-\ -# zcaxll4prj3kag1b -# -# Begin patch -=== modified file 'src/ipcache.cc' ---- src/ipcache.cc 2016-01-01 00:14:27 +0000 -+++ src/ipcache.cc 2016-11-30 23:20:39 +0000 -@@ -123,7 +123,6 @@ - static FREE ipcacheFreeEntry; - static IDNSCB ipcacheHandleReply; - static int ipcacheExpiredEntry(ipcache_entry *); --static int ipcacheParse(ipcache_entry *, const rfc1035_rr *, int, const char *error); - static ipcache_entry *ipcache_get(const char *); - static void ipcacheLockEntry(ipcache_entry *); - static void ipcacheStatPrint(ipcache_entry *, StoreEntry *); -@@ -328,8 +327,7 @@ - ipcacheUnlockEntry(i); - } - --/// \ingroup IPCacheAPI --static int -+static void - ipcacheParse(ipcache_entry *i, const rfc1035_rr * answers, int nr, const char *error_message) - { - int k; -@@ -350,25 +348,25 @@ - i->addrs.count = 0; - - if (nr < 0) { -- debugs(14, 3, "ipcacheParse: Lookup failed '" << error_message << "' for '" << (const char *)i->hash.key << "'"); -+ debugs(14, 3, "Lookup failed '" << error_message << "' for '" << (const char *)i->hash.key << "'"); - i->error_message = xstrdup(error_message); -- return -1; -+ return; - } - - if (nr == 0) { -- debugs(14, 3, "ipcacheParse: No DNS records in response to '" << name << "'"); -+ debugs(14, 3, "No DNS records in response to '" << name << "'"); - i->error_message = xstrdup("No DNS records"); -- return -1; -+ return; - } - -- debugs(14, 3, "ipcacheParse: " << nr << " answers for '" << name << "'"); -+ debugs(14, 3, nr << " answers for '" << name << "'"); - assert(answers); - - for (k = 0; k < nr; ++k) { - - if (Ip::EnableIpv6 && answers[k].type == RFC1035_TYPE_AAAA) { - if (answers[k].rdlength != sizeof(struct in6_addr)) { -- debugs(14, DBG_IMPORTANT, "ipcacheParse: Invalid IPv6 address in response to '" << name << "'"); -+ debugs(14, DBG_IMPORTANT, MYNAME << "Invalid IPv6 address in response to '" << name << "'"); - continue; - } - ++na; -@@ -378,7 +376,7 @@ - - if (answers[k].type == RFC1035_TYPE_A) { - if (answers[k].rdlength != sizeof(struct in_addr)) { -- debugs(14, DBG_IMPORTANT, "ipcacheParse: Invalid IPv4 address in response to '" << name << "'"); -+ debugs(14, DBG_IMPORTANT, MYNAME << "Invalid IPv4 address in response to '" << name << "'"); - continue; - } - ++na; -@@ -394,14 +392,14 @@ - } - - // otherwise its an unknown RR. debug at level 9 since we usually want to ignore these and they are common. -- debugs(14, 9, HERE << "Unknown RR type received: type=" << answers[k].type << " starting at " << &(answers[k]) ); -+ debugs(14, 9, "Unknown RR type received: type=" << answers[k].type << " starting at " << &(answers[k]) ); - } - if (na == 0) { -- debugs(14, DBG_IMPORTANT, "ipcacheParse: No Address records in response to '" << name << "'"); -+ debugs(14, DBG_IMPORTANT, MYNAME << "No Address records in response to '" << name << "'"); - i->error_message = xstrdup("No Address records"); - if (cname_found) - ++IpcacheStats.cname_only; -- return 0; -+ return; - } - - i->addrs.in_addrs = static_cast(xcalloc(na, sizeof(Ip::Address))); -@@ -419,7 +417,7 @@ - memcpy(&temp, answers[k].rdata, sizeof(struct in_addr)); - i->addrs.in_addrs[j] = temp; - -- debugs(14, 3, "ipcacheParse: " << name << " #" << j << " " << i->addrs.in_addrs[j]); -+ debugs(14, 3, name << " #" << j << " " << i->addrs.in_addrs[j]); - ++j; - - } else if (Ip::EnableIpv6 && answers[k].type == RFC1035_TYPE_AAAA) { -@@ -430,7 +428,7 @@ - memcpy(&temp, answers[k].rdata, sizeof(struct in6_addr)); - i->addrs.in_addrs[j] = temp; - -- debugs(14, 3, "ipcacheParse: " << name << " #" << j << " " << i->addrs.in_addrs[j] ); -+ debugs(14, 3, name << " #" << j << " " << i->addrs.in_addrs[j] ); - ++j; - } - if (ttl == 0 || (int) answers[k].ttl < ttl) -@@ -453,8 +451,6 @@ - i->expires = squid_curtime + ttl; - - i->flags.negcached = false; -- -- return i->addrs.count; - } - - /// \ingroup IPCacheInternal -@@ -467,13 +463,9 @@ - const int age = i->age(); - statCounter.dns.svcTime.count(age); - -- int done = ipcacheParse(i, answers, na, error_message); -- -- /* If we have not produced either IPs or Error immediately, wait for recursion to finish. */ -- if (done != 0 || error_message != NULL) { -- ipcacheAddEntry(i); -- ipcacheCallback(i, age); -- } -+ ipcacheParse(i, answers, na, error_message); -+ ipcacheAddEntry(i); -+ ipcacheCallback(i, age); - } - - /** - diff --git a/src/patches/squid/squid-3.5-14118.patch b/src/patches/squid/squid-3.5-14118.patch deleted file mode 100644 index 1e36294f3..000000000 --- a/src/patches/squid/squid-3.5-14118.patch +++ /dev/null @@ -1,55 +0,0 @@ ------------------------------------------------------------- -revno: 14118 -revision-id: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 -parent: squid3@treenet.co.nz-20161130232039-z18ikhhcf3j185my -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3290 -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-01 12:33:04 +1300 -message: - Bug 3290: authenticate_ttl not working for digest authentication ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 50ff391db1484222ead5fb50b1bca0694c37ed4c -# timestamp: 2016-11-30 23:34:59 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161130232039-\ -# z18ikhhcf3j185my -# -# Begin patch -=== modified file 'src/auth/digest/Config.cc' ---- src/auth/digest/Config.cc 2016-11-14 10:54:34 +0000 -+++ src/auth/digest/Config.cc 2016-11-30 23:33:04 +0000 -@@ -1058,6 +1058,10 @@ - * the user agent won't change user name without warning. - */ - authDigestUserLinkNonce(digest_user, nonce); -+ -+ /* auth_user is now linked, we reset these values -+ * after external auth occurs anyway */ -+ auth_user->expiretime = current_time.tv_sec; - } else { - debugs(29, 9, "Found user '" << username << "' in the user cache as '" << auth_user << "'"); - digest_user = static_cast(auth_user.getRaw()); - -=== modified file 'src/auth/digest/UserRequest.cc' ---- src/auth/digest/UserRequest.cc 2016-01-01 00:14:27 +0000 -+++ src/auth/digest/UserRequest.cc 2016-11-30 23:33:04 +0000 -@@ -187,12 +187,7 @@ - auth_user->credentials(Auth::Ok); - - /* password was checked and did match */ -- debugs(29, 4, HERE << "user '" << auth_user->username() << "' validated OK"); -- -- /* auth_user is now linked, we reset these values -- * after external auth occurs anyway */ -- auth_user->expiretime = current_time.tv_sec; -- return; -+ debugs(29, 4, "user '" << auth_user->username() << "' validated OK"); - } - - Auth::Direction - diff --git a/src/patches/squid/squid-3.5-14119.patch b/src/patches/squid/squid-3.5-14119.patch deleted file mode 100644 index d6e85a5e9..000000000 --- a/src/patches/squid/squid-3.5-14119.patch +++ /dev/null @@ -1,184 +0,0 @@ ------------------------------------------------------------- -revno: 14119 -revision-id: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew -parent: squid3@treenet.co.nz-20161130233304-lk3q0bx8gn5l3l85 -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4174 -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2016-12-09 14:58:33 +1300 -message: - Bug 4174 partial: fix Write.cc:41 "!ccb->active()" assertion. - - The following sequence of events triggers this assertion: - - The server sends an 1xx control message. - - http.cc schedules ConnStateData::sendControlMsg call. - - Before sendControlMsg is fired, http.cc detects an error (e.g., I/O - error or timeout) and starts writing the reply to the user. - - The ConnStateData::sendControlMsg is fired, starts writing 1xx, and - hits the "no concurrent writes" assertion. - - We could only reproduce this sequence in the lab after changing Squid - code to trigger a timeout at the right moment, but the sequence looks - plausible. Other event sequences might result in the same outcome. - - To avoid concurrent writes, Squid now drops the control message if - Http::One::Server detects that a reply is already being written. Also, - ConnStateData delays reply writing until a pending control message write - has been completed. - - This is a Measurement Factory project. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 103c6fc1fa45d78ba7f9e85ab3d89fff898ee762 -# timestamp: 2016-12-09 02:51:06 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161130233304-\ -# lk3q0bx8gn5l3l85 -# -# Begin patch -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2016-09-23 20:49:24 +0000 -+++ src/client_side.cc 2016-12-09 01:58:33 +0000 -@@ -340,7 +340,21 @@ - AsyncCall::Pointer call = commCbCall(33, 5, "ClientSocketContext::wroteControlMsg", - CommIoCbPtrFun(&WroteControlMsg, this)); - -- getConn()->writeControlMsgAndCall(this, rep.getRaw(), call); -+ if (!getConn()->writeControlMsgAndCall(this, rep.getRaw(), call)) { -+ // but still inform the caller (so it may resume its operation) -+ doneWithControlMsg(); -+ } -+} -+ -+void -+ClientSocketContext::doneWithControlMsg() -+{ -+ ScheduleCallHere(cbControlMsgSent); -+ cbControlMsgSent = NULL; -+ -+ debugs(33, 3, clientConnection << ": calling PushDeferredIfNeeded after control msg wrote"); -+ ClientSocketContextPushDeferredIfNeeded(this, getConn()); -+ - } - - /// called when we wrote the 1xx response -@@ -351,7 +365,7 @@ - return; - - if (errflag == Comm::OK) { -- ScheduleCallHere(cbControlMsgSent); -+ doneWithControlMsg(); - return; - } - -@@ -1455,6 +1469,8 @@ - - if (context != http->getConn()->getCurrentContext()) - context->deferRecipientForLater(node, rep, receivedData); -+ else if (context->controlMsgIsPending()) -+ context->deferRecipientForLater(node, rep, receivedData); - else - http->getConn()->handleReply(rep, receivedData); - - -=== modified file 'src/client_side.h' ---- src/client_side.h 2016-06-18 13:36:07 +0000 -+++ src/client_side.h 2016-12-09 01:58:33 +0000 -@@ -129,9 +129,13 @@ - /// starts writing 1xx control message to the client - void writeControlMsg(HttpControlMsg &msg); - -+ /// true if 1xx to the user is pending -+ bool controlMsgIsPending() {return cbControlMsgSent != NULL;} -+ - protected: - static IOCB WroteControlMsg; - void wroteControlMsg(const Comm::ConnectionPointer &conn, char *bufnotused, size_t size, Comm::Flag errflag, int xerrno); -+ void doneWithControlMsg(); - - private: - void prepareReply(HttpReply * rep); -@@ -387,7 +391,7 @@ - void connectionTag(const char *aTag) { connectionTag_ = aTag; } - - /// handle a control message received by context from a peer and call back -- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) = 0; -+ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) = 0; - - /// ClientStream calls this to supply response header (once) and data - /// for the current ClientSocketContext. - -=== modified file 'src/servers/FtpServer.cc' ---- src/servers/FtpServer.cc 2016-06-30 21:09:12 +0000 -+++ src/servers/FtpServer.cc 2016-12-09 01:58:33 +0000 -@@ -1152,12 +1152,13 @@ - writeErrorReply(reply, 451); - } - --void -+bool - Ftp::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *reply, AsyncCall::Pointer &call) - { - // the caller guarantees that we are dealing with the current context only - // the caller should also make sure reply->header.has(HDR_FTP_STATUS) - writeForwardedReplyAndCall(reply, call); -+ return true; - } - - void - -=== modified file 'src/servers/FtpServer.h' ---- src/servers/FtpServer.h 2016-03-15 18:14:15 +0000 -+++ src/servers/FtpServer.h 2016-12-09 01:58:33 +0000 -@@ -94,7 +94,7 @@ - virtual void clientPinnedConnectionClosed(const CommCloseCbParams &io); - virtual void handleReply(HttpReply *header, StoreIOBuffer receivedData); - virtual int pipelinePrefetchMax() const; -- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); -+ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); - virtual time_t idleTimeout() const; - - /* BodyPipe API */ - -=== modified file 'src/servers/HttpServer.cc' ---- src/servers/HttpServer.cc 2016-01-01 00:14:27 +0000 -+++ src/servers/HttpServer.cc 2016-12-09 01:58:33 +0000 -@@ -35,7 +35,7 @@ - virtual ClientSocketContext *parseOneRequest(Http::ProtocolVersion &ver); - virtual void processParsedRequest(ClientSocketContext *context, const Http::ProtocolVersion &ver); - virtual void handleReply(HttpReply *rep, StoreIOBuffer receivedData); -- virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); -+ virtual bool writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); - virtual time_t idleTimeout() const; - - /* BodyPipe API */ -@@ -167,9 +167,16 @@ - context->sendStartOfMessage(rep, receivedData); - } - --void -+bool - Http::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) - { -+ // Ignore this late control message if we have started sending a -+ // reply to the user already (e.g., after an error). -+ if (context->reply) { -+ debugs(11, 2, "drop 1xx made late by " << context->reply); -+ return false; -+ } -+ - // apply selected clientReplyContext::buildReplyHeader() mods - // it is not clear what headers are required for control messages - rep->header.removeHopByHopEntries(); -@@ -184,6 +191,7 @@ - Comm::Write(context->clientConnection, mb, call); - - delete mb; -+ return true; - } - - ConnStateData * - diff --git a/src/patches/squid/squid-3.5-14120.patch b/src/patches/squid/squid-3.5-14120.patch deleted file mode 100644 index 4d28d4a95..000000000 --- a/src/patches/squid/squid-3.5-14120.patch +++ /dev/null @@ -1,62 +0,0 @@ ------------------------------------------------------------- -revno: 14120 -revision-id: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt -parent: squid3@treenet.co.nz-20161209015833-xm965d5l6u03qhew -author: Egervary Gergely -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2016-12-09 16:46:36 +1300 -message: - Support IPv6 NAT with PF for NetBSD and FreeBSD ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: b47da8d30fe000bbe50ea978bab7594065f7dc07 -# timestamp: 2016-12-09 03:51:01 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161209015833-\ -# xm965d5l6u03qhew -# -# Begin patch -=== modified file 'src/ip/Intercept.cc' ---- src/ip/Intercept.cc 2016-10-25 08:25:30 +0000 -+++ src/ip/Intercept.cc 2016-12-09 03:46:36 +0000 -@@ -339,13 +339,20 @@ - } - - memset(&nl, 0, sizeof(struct pfioc_natlook)); -- newConn->remote.getInAddr(nl.saddr.v4); -+ -+ if (newConn->remote.isIPv6()) { -+ newConn->remote.getInAddr(nl.saddr.v6); -+ newConn->local.getInAddr(nl.daddr.v6); -+ nl.af = AF_INET6; -+ } else { -+ newConn->remote.getInAddr(nl.saddr.v4); -+ newConn->local.getInAddr(nl.daddr.v4); -+ nl.af = AF_INET; -+ } -+ - nl.sport = htons(newConn->remote.port()); -- -- newConn->local.getInAddr(nl.daddr.v4); - nl.dport = htons(newConn->local.port()); - -- nl.af = AF_INET; - nl.proto = IPPROTO_TCP; - nl.direction = PF_OUT; - -@@ -361,7 +368,10 @@ - debugs(89, 9, HERE << "address: " << newConn); - return false; - } else { -- newConn->local = nl.rdaddr.v4; -+ if (newConn->remote.isIPv6()) -+ newConn->local = nl.rdaddr.v6; -+ else -+ newConn->local = nl.rdaddr.v4; - newConn->local.port(ntohs(nl.rdport)); - debugs(89, 5, HERE << "address NAT: " << newConn); - return true; - diff --git a/src/patches/squid/squid-3.5-14121.patch b/src/patches/squid/squid-3.5-14121.patch deleted file mode 100644 index 36f3f7a8d..000000000 --- a/src/patches/squid/squid-3.5-14121.patch +++ /dev/null @@ -1,36 +0,0 @@ ------------------------------------------------------------- -revno: 14121 -revision-id: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 -parent: squid3@treenet.co.nz-20161209034636-wytrnx7ks2jv0sxt -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4406 -author: Michael Buchau -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2016-12-09 17:33:04 +1300 -message: - Bug 4406: SIGSEV in TunnelStateData::handleConnectResponse() during reconfigure and restart ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: ce1153061cb79ac9ede6851f438ec830ed7a3e78 -# timestamp: 2016-12-09 04:51:01 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161209034636-\ -# wytrnx7ks2jv0sxt -# -# Begin patch -=== modified file 'src/tunnel.cc' ---- src/tunnel.cc 2016-08-17 13:34:13 +0000 -+++ src/tunnel.cc 2016-12-09 04:33:04 +0000 -@@ -475,7 +475,8 @@ - *status_ptr = rep.sline.status(); - - // we need to relay the 401/407 responses when login=PASS(THRU) -- const char *pwd = server.conn->getPeer()->login; -+ const CachePeer *peer = server.conn->getPeer(); -+ const char *pwd = (peer ? peer->login : NULL); - const bool relay = pwd && (strcmp(pwd, "PASS") == 0 || strcmp(pwd, "PASSTHRU") == 0) && - (*status_ptr == Http::scProxyAuthenticationRequired || - *status_ptr == Http::scUnauthorized); - diff --git a/src/patches/squid/squid-3.5-14122.patch b/src/patches/squid/squid-3.5-14122.patch deleted file mode 100644 index 292306e9e..000000000 --- a/src/patches/squid/squid-3.5-14122.patch +++ /dev/null @@ -1,34 +0,0 @@ ------------------------------------------------------------- -revno: 14122 -revision-id: squidadm@squid-cache.org-20161209061551-361ava4lrrmbwiy9 -parent: squid3@treenet.co.nz-20161209043304-krtzvsm4a0zbzgi8 -committer: Source Maintenance -branch nick: 3.5 -timestamp: Fri 2016-12-09 06:15:51 +0000 -message: - SourceFormat Enforcement ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squidadm@squid-cache.org-20161209061551-\ -# 361ava4lrrmbwiy9 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: cb4bfe0e0aaf3e3d107ffb16e2729c6f46d5a822 -# timestamp: 2016-12-09 06:51:04 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161209043304-\ -# krtzvsm4a0zbzgi8 -# -# Begin patch -=== modified file 'src/servers/HttpServer.cc' ---- src/servers/HttpServer.cc 2016-12-09 01:58:33 +0000 -+++ src/servers/HttpServer.cc 2016-12-09 06:15:51 +0000 -@@ -170,7 +170,7 @@ - bool - Http::Server::writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call) - { -- // Ignore this late control message if we have started sending a -+ // Ignore this late control message if we have started sending a - // reply to the user already (e.g., after an error). - if (context->reply) { - debugs(11, 2, "drop 1xx made late by " << context->reply); - diff --git a/src/patches/squid/squid-3.5-14123.patch b/src/patches/squid/squid-3.5-14123.patch deleted file mode 100644 index 4d11541e9..000000000 --- a/src/patches/squid/squid-3.5-14123.patch +++ /dev/null @@ -1,59 +0,0 @@ ------------------------------------------------------------- -revno: 14123 -revision-id: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 -parent: squidadm@squid-cache.org-20161209061551-361ava4lrrmbwiy9 -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=2258 -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-15 22:03:42 +1300 -message: - Bug 2258: bypassing cache but not destroying cache entry ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: e4ce2fda10feb3e4e6b64d6dfa566ba6f0ac07f1 -# timestamp: 2016-12-15 09:08:35 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squidadm@squid-cache.org-20161209061551-\ -# 361ava4lrrmbwiy9 -# -# Begin patch -=== modified file 'src/HttpRequest.cc' ---- src/HttpRequest.cc 2016-04-01 06:15:31 +0000 -+++ src/HttpRequest.cc 2016-12-15 09:03:42 +0000 -@@ -576,8 +576,13 @@ - if (!method.respMaybeCacheable()) - return false; - -- // XXX: this would seem the correct place to detect request cache-controls -- // no-store, private and related which block cacheability -+ // RFC 7234 section 5.2.1.5: -+ // "cache MUST NOT store any part of either this request or any response to it" -+ // -+ // NP: refresh_pattern ignore-no-store only applies to response messages -+ // this test is handling request message CC header. -+ if (!flags.ignoreCc && cache_control && cache_control->noStore()) -+ return false; - break; - - case AnyP::PROTO_GOPHER: - -=== modified file 'src/http.cc' ---- src/http.cc 2016-11-30 22:33:32 +0000 -+++ src/http.cc 2016-12-15 09:03:42 +0000 -@@ -191,6 +191,12 @@ - if (!EBIT_TEST(e->flags, KEY_PRIVATE)) - return; - -+ // If the new/incoming response cannot be stored, then it does not -+ // compete with the old stored response for the public key, and the -+ // old stored response should be left as is. -+ if (e->mem_obj->request && !e->mem_obj->request->flags.cachable) -+ return; -+ - switch (status) { - - case Http::scOkay: - diff --git a/src/patches/squid/squid-3.5-14124.patch b/src/patches/squid/squid-3.5-14124.patch deleted file mode 100644 index 65cd2b13b..000000000 --- a/src/patches/squid/squid-3.5-14124.patch +++ /dev/null @@ -1,47 +0,0 @@ ------------------------------------------------------------- -revno: 14124 -revision-id: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk -parent: squid3@treenet.co.nz-20161215090342-ml7nmzlfmiiov7j5 -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-15 22:22:10 +1300 -message: - HTTP/1.1: Add registered codes entry for new 103 (Early Hints) status code ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: b9e9ff6a7fe0972dfd8a3b1a45ba25a66ef03552 -# timestamp: 2016-12-15 09:22:58 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161215090342-\ -# ml7nmzlfmiiov7j5 -# -# Begin patch -=== modified file 'src/http/StatusCode.cc' ---- src/http/StatusCode.cc 2016-03-23 14:00:51 +0000 -+++ src/http/StatusCode.cc 2016-12-15 09:22:10 +0000 -@@ -33,6 +33,10 @@ - return "Processing"; - break; - -+ case Http::scEarlyHints: // 103 -+ return "Early Hints"; -+ break; -+ - // 200-299 - case Http::scOkay: - return "OK"; - -=== modified file 'src/http/StatusCode.h' ---- src/http/StatusCode.h 2016-03-23 14:00:51 +0000 -+++ src/http/StatusCode.h 2016-12-15 09:22:10 +0000 -@@ -22,6 +22,7 @@ - scContinue = 100, - scSwitchingProtocols = 101, - scProcessing = 102, /**< RFC2518 section 10.1 */ -+ scEarlyHints = 103, /**< draft-kazuho-early-hints-status-code */ - scOkay = 200, - scCreated = 201, - scAccepted = 202, - diff --git a/src/patches/squid/squid-3.5-14125.patch b/src/patches/squid/squid-3.5-14125.patch deleted file mode 100644 index a42cbf749..000000000 --- a/src/patches/squid/squid-3.5-14125.patch +++ /dev/null @@ -1,41 +0,0 @@ ------------------------------------------------------------- -revno: 14125 -revision-id: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj -parent: squid3@treenet.co.nz-20161215092210-8gupdsihb4d8fufk -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3940 -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-15 22:36:34 +1300 -message: - Bug 3940 (partial): hostHeaderVerify failures MISS when they should be HIT - - This fixes the critical condition leading to the HIT. However not all - code is correctly setting flags.noCache and flags.cacheable (see bugzilla). - So there may be other fixes needed after this. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 3e1ebda070635dcabfa4f77d697ac12e8683106f -# timestamp: 2016-12-15 09:39:01 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161215092210-\ -# 8gupdsihb4d8fufk -# -# Begin patch -=== modified file 'src/client_side_reply.cc' ---- src/client_side_reply.cc 2016-11-11 06:03:25 +0000 -+++ src/client_side_reply.cc 2016-12-15 09:36:34 +0000 -@@ -1649,7 +1649,9 @@ - { - HttpRequest *r = http->request; - -- if (r->flags.cachable || r->flags.internal) { -+ // client sent CC:no-cache or some other condition has been -+ // encountered which prevents delivering a public/cached object. -+ if (!r->flags.noCache || r->flags.internal) { - lookingforstore = 5; - StoreEntry::getPublicByRequest (this, r); - } else { - diff --git a/src/patches/squid/squid-3.5-14126.patch b/src/patches/squid/squid-3.5-14126.patch deleted file mode 100644 index 9097d3b25..000000000 --- a/src/patches/squid/squid-3.5-14126.patch +++ /dev/null @@ -1,123 +0,0 @@ ------------------------------------------------------------- -revno: 14126 -revision-id: squid3@treenet.co.nz-20161215103357-827wow3k1y3k9yql -parent: squid3@treenet.co.nz-20161215093634-ykbs6tv8pdusz7cj -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4169 -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Thu 2016-12-15 23:33:57 +1300 -message: - Bug 4169: HIT marked as MISS when If-None-Match does not match ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20161215103357-827wow3k1y3k9yql -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 258cd3e400bcb137a7bcdf6e7e0240287ea581a3 -# timestamp: 2016-12-15 10:34:30 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20161215093634-\ -# ykbs6tv8pdusz7cj -# -# Begin patch -=== modified file 'src/LogTags.h' ---- src/LogTags.h 2016-10-09 19:47:26 +0000 -+++ src/LogTags.h 2016-12-15 10:33:57 +0000 -@@ -28,6 +28,7 @@ - LOG_TCP_REFRESH_IGNORED, // refresh from origin ignored, stale entry sent - LOG_TCP_CLIENT_REFRESH_MISS, - LOG_TCP_IMS_HIT, -+ LOG_TCP_INM_HIT, - LOG_TCP_SWAPFAIL_MISS, - LOG_TCP_NEGATIVE_HIT, - LOG_TCP_MEM_HIT, -@@ -54,6 +55,7 @@ - return - (code == LOG_TCP_HIT) || - (code == LOG_TCP_IMS_HIT) || -+ (code == LOG_TCP_INM_HIT) || - (code == LOG_TCP_REFRESH_FAIL_OLD) || - (code == LOG_TCP_REFRESH_UNMODIFIED) || - (code == LOG_TCP_NEGATIVE_HIT) || - -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2016-12-09 01:58:33 +0000 -+++ src/client_side.cc 2016-12-15 10:33:57 +0000 -@@ -429,6 +429,7 @@ - statCounter.client_http.nearHitSvcTime.count(svc_time); - break; - -+ case LOG_TCP_INM_HIT: - case LOG_TCP_IMS_HIT: - statCounter.client_http.nearMissSvcTime.count(svc_time); - break; - -=== modified file 'src/client_side_reply.cc' ---- src/client_side_reply.cc 2016-12-15 09:36:34 +0000 -+++ src/client_side_reply.cc 2016-12-15 10:33:57 +0000 -@@ -778,40 +778,27 @@ - return true; - } - -- bool matchedIfNoneMatch = false; - if (r.header.has(HDR_IF_NONE_MATCH)) { -- if (!e->hasIfNoneMatchEtag(r)) { -- // RFC 2616: ignore IMS if If-None-Match did not match -- r.flags.ims = false; -- r.ims = -1; -- r.imslen = 0; -- r.header.delById(HDR_IF_MODIFIED_SINCE); -- http->logType = LOG_TCP_MISS; -- sendMoreData(result); -- return true; -- } -+ // RFC 7232: If-None-Match recipient MUST ignore IMS -+ r.flags.ims = false; -+ r.ims = -1; -+ r.imslen = 0; -+ r.header.delById(HDR_IF_MODIFIED_SINCE); - -- if (!r.flags.ims) { -- // RFC 2616: if If-None-Match matched and there is no IMS, -- // reply with 304 Not Modified or 412 Precondition Failed -+ if (e->hasIfNoneMatchEtag(r)) { - sendNotModifiedOrPreconditionFailedError(); - return true; - } - -- // otherwise check IMS below to decide if we reply with 304 or 412 -- matchedIfNoneMatch = true; -+ // None-Match is true (no ETag matched); treat as an unconditional hit -+ return false; - } - - if (r.flags.ims) { - // handle If-Modified-Since requests from the client - if (e->modifiedSince(r.ims, r.imslen)) { -- http->logType = LOG_TCP_IMS_HIT; -- sendMoreData(result); -- -- } else if (matchedIfNoneMatch) { -- // If-None-Match matched, reply with 304 Not Modified or -- // 412 Precondition Failed -- sendNotModifiedOrPreconditionFailedError(); -+ // Modified-Since is true; treat as an unconditional hit -+ return false; - - } else { - // otherwise reply with 304 Not Modified -@@ -1974,7 +1961,12 @@ - StoreEntry *e = http->storeEntry(); - const time_t timestamp = e->timestamp; - HttpReply *const temprep = e->getReply()->make304(); -- http->logType = LOG_TCP_IMS_HIT; -+ // log as TCP_INM_HIT if code 304 generated for -+ // If-None-Match request -+ if (!http->request->flags.ims) -+ http->logType = LOG_TCP_INM_HIT; -+ else -+ http->logType = LOG_TCP_IMS_HIT; - removeClientStoreReference(&sc, http); - createStoreEntry(http->request->method, RequestFlags()); - e = http->storeEntry(); - From ba6fc476fb0c899f36a3ad897d98f83a7870b8f0 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 17 Dec 2016 14:18:44 +0100 Subject: [PATCH 027/464] snort: Update to 2.9.9.0 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- html/cgi-bin/ids.cgi | 4 ++-- lfs/snort | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi index bc066a0dc..fbd1f13b2 100644 --- a/html/cgi-bin/ids.cgi +++ b/html/cgi-bin/ids.cgi @@ -254,9 +254,9 @@ if (-e "/etc/snort/snort.conf") { ####################### End added for snort rules control ################################# if ($snortsettings{'RULES'} eq 'subscripted') { - $url=" https://www.snort.org/rules/snortrules-snapshot-2982.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; + $url=" https://www.snort.org/rules/snortrules-snapshot-2990.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; } elsif ($snortsettings{'RULES'} eq 'registered') { - $url=" https://www.snort.org/rules/snortrules-snapshot-2982.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; + $url=" https://www.snort.org/rules/snortrules-snapshot-2990.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; } elsif ($snortsettings{'RULES'} eq 'community') { $url=" https://www.snort.org/rules/community"; } else { diff --git a/lfs/snort b/lfs/snort index 53fffbb0b..032ce30ca 100644 --- a/lfs/snort +++ b/lfs/snort @@ -24,7 +24,7 @@ include Config -VER = 2.9.8.2 +VER = 2.9.9.0 THISAPP = snort-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b5005f88a01b42ff7ee0defb94161ffc +$(DL_FILE)_MD5 = fd3012bf36710481d66b40ad046b231d install : $(TARGET) From dcc3b47f0070880bdfa3919a5246187e8cdbb307 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 16 Dec 2016 18:06:51 +0100 Subject: [PATCH 028/464] bind: Update to 9.11.0-P1 http://ftp.isc.org/isc/bind9/9.11.0-P1/RELEASE-NOTES-bind-9.11.0-P1.html: "BIND 9.11.0-P1 addresses the security issue described in CVE-2016-8864" https://access.redhat.com/security/cve/cve-2016-8864: "A denial of service flaw was found in the way BIND handled responses containing a DNAME answer. A remote attacker could use this flaw to make named exit unexpectedly with an assertion failure via a specially crafted DNS response." Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/bind | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/bind b/lfs/bind index 630b9b4a2..7554cb123 100644 --- a/lfs/bind +++ b/lfs/bind @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2016 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -25,7 +25,7 @@ include Config -VER = 9.10.3-P4 +VER = 9.11.0-P1 THISAPP = bind-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -43,7 +43,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 173ce5e83e9ba31f8368367ee1ff7807 +$(DL_FILE)_MD5 = 4ec15dcf90ad77e923a05d7386348080 install : $(TARGET) From 751b4816082505aafcae9e3518000f10817fa276 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 19 Dec 2016 16:30:17 +0000 Subject: [PATCH 029/464] core108: Ship updated syslogdctrl Signed-off-by: Michael Tremer --- config/rootfiles/core/108/filelists/files | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/core/108/filelists/files b/config/rootfiles/core/108/filelists/files index 6cce4ead1..99fa9688d 100644 --- a/config/rootfiles/core/108/filelists/files +++ b/config/rootfiles/core/108/filelists/files @@ -5,3 +5,4 @@ etc/syslog.conf etc/unbound/unbound.conf srv/web/ipfire/cgi-bin/fwhosts.cgi srv/web/ipfire/cgi-bin/logs.cgi/config.dat +usr/local/bin/syslogdctrl From 7ba5691854b06976fe130c832ce2f0ea3742ad30 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 22 Dec 2016 20:38:44 +0100 Subject: [PATCH 030/464] start core109 updater Signed-off-by: Arne Fitzenreiter --- config/rootfiles/core/{108 => 109}/exclude | 0 config/rootfiles/core/109/filelists/files | 3 + config/rootfiles/core/109/filelists/snort | 1 + .../core/{108 => 109}/filelists/squid | 0 config/rootfiles/core/109/filelists/unbound | 1 + config/rootfiles/core/{108 => 109}/meta | 0 config/rootfiles/core/109/update.sh | 69 +++++++++++++++++++ config/rootfiles/oldcore/108/exclude | 28 ++++++++ .../{core => oldcore}/108/filelists/ddns | 0 .../{core => oldcore}/108/filelists/files | 0 .../108/filelists/i586/strongswan-padlock | 0 .../{core => oldcore}/108/filelists/ntp | 0 config/rootfiles/oldcore/108/filelists/squid | 1 + .../108/filelists/strongswan | 0 config/rootfiles/oldcore/108/meta | 1 + .../rootfiles/{core => oldcore}/108/update.sh | 0 make.sh | 2 +- 17 files changed, 105 insertions(+), 1 deletion(-) rename config/rootfiles/core/{108 => 109}/exclude (100%) create mode 100644 config/rootfiles/core/109/filelists/files create mode 120000 config/rootfiles/core/109/filelists/snort rename config/rootfiles/core/{108 => 109}/filelists/squid (100%) create mode 120000 config/rootfiles/core/109/filelists/unbound rename config/rootfiles/core/{108 => 109}/meta (100%) create mode 100644 config/rootfiles/core/109/update.sh create mode 100644 config/rootfiles/oldcore/108/exclude rename config/rootfiles/{core => oldcore}/108/filelists/ddns (100%) rename config/rootfiles/{core => oldcore}/108/filelists/files (100%) rename config/rootfiles/{core => oldcore}/108/filelists/i586/strongswan-padlock (100%) rename config/rootfiles/{core => oldcore}/108/filelists/ntp (100%) create mode 120000 config/rootfiles/oldcore/108/filelists/squid rename config/rootfiles/{core => oldcore}/108/filelists/strongswan (100%) create mode 100644 config/rootfiles/oldcore/108/meta rename config/rootfiles/{core => oldcore}/108/update.sh (100%) diff --git a/config/rootfiles/core/108/exclude b/config/rootfiles/core/109/exclude similarity index 100% rename from config/rootfiles/core/108/exclude rename to config/rootfiles/core/109/exclude diff --git a/config/rootfiles/core/109/filelists/files b/config/rootfiles/core/109/filelists/files new file mode 100644 index 000000000..ca49b1b5e --- /dev/null +++ b/config/rootfiles/core/109/filelists/files @@ -0,0 +1,3 @@ +etc/system-release +etc/issue +usr/local/bin/syslogdctrl diff --git a/config/rootfiles/core/109/filelists/snort b/config/rootfiles/core/109/filelists/snort new file mode 120000 index 000000000..9406ce01c --- /dev/null +++ b/config/rootfiles/core/109/filelists/snort @@ -0,0 +1 @@ +../../../common/snort \ No newline at end of file diff --git a/config/rootfiles/core/108/filelists/squid b/config/rootfiles/core/109/filelists/squid similarity index 100% rename from config/rootfiles/core/108/filelists/squid rename to config/rootfiles/core/109/filelists/squid diff --git a/config/rootfiles/core/109/filelists/unbound b/config/rootfiles/core/109/filelists/unbound new file mode 120000 index 000000000..66adf0924 --- /dev/null +++ b/config/rootfiles/core/109/filelists/unbound @@ -0,0 +1 @@ +../../../common/unbound \ No newline at end of file diff --git a/config/rootfiles/core/108/meta b/config/rootfiles/core/109/meta similarity index 100% rename from config/rootfiles/core/108/meta rename to config/rootfiles/core/109/meta diff --git a/config/rootfiles/core/109/update.sh b/config/rootfiles/core/109/update.sh new file mode 100644 index 000000000..c601654ae --- /dev/null +++ b/config/rootfiles/core/109/update.sh @@ -0,0 +1,69 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2016 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=109 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Stop services +/etc/init.d/squid stop +/etc/init.d/snort stop +/etc/init.d/unbound stop + +# Extract files +extract_files + +# update linker config +ldconfig + +# Update Language cache +#/usr/local/bin/update-lang-cache + +# Start services +/etc/init.d/unbound start +/etc/init.d/squid start +/etc/init.d/snort start + + +# This update need a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/108/exclude b/config/rootfiles/oldcore/108/exclude new file mode 100644 index 000000000..7ddeae0ba --- /dev/null +++ b/config/rootfiles/oldcore/108/exclude @@ -0,0 +1,28 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/ovpn +var/lib/alternatives +var/log/cache +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/108/filelists/ddns b/config/rootfiles/oldcore/108/filelists/ddns similarity index 100% rename from config/rootfiles/core/108/filelists/ddns rename to config/rootfiles/oldcore/108/filelists/ddns diff --git a/config/rootfiles/core/108/filelists/files b/config/rootfiles/oldcore/108/filelists/files similarity index 100% rename from config/rootfiles/core/108/filelists/files rename to config/rootfiles/oldcore/108/filelists/files diff --git a/config/rootfiles/core/108/filelists/i586/strongswan-padlock b/config/rootfiles/oldcore/108/filelists/i586/strongswan-padlock similarity index 100% rename from config/rootfiles/core/108/filelists/i586/strongswan-padlock rename to config/rootfiles/oldcore/108/filelists/i586/strongswan-padlock diff --git a/config/rootfiles/core/108/filelists/ntp b/config/rootfiles/oldcore/108/filelists/ntp similarity index 100% rename from config/rootfiles/core/108/filelists/ntp rename to config/rootfiles/oldcore/108/filelists/ntp diff --git a/config/rootfiles/oldcore/108/filelists/squid b/config/rootfiles/oldcore/108/filelists/squid new file mode 120000 index 000000000..2dc8372a0 --- /dev/null +++ b/config/rootfiles/oldcore/108/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/108/filelists/strongswan b/config/rootfiles/oldcore/108/filelists/strongswan similarity index 100% rename from config/rootfiles/core/108/filelists/strongswan rename to config/rootfiles/oldcore/108/filelists/strongswan diff --git a/config/rootfiles/oldcore/108/meta b/config/rootfiles/oldcore/108/meta new file mode 100644 index 000000000..d547fa86f --- /dev/null +++ b/config/rootfiles/oldcore/108/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/core/108/update.sh b/config/rootfiles/oldcore/108/update.sh similarity index 100% rename from config/rootfiles/core/108/update.sh rename to config/rootfiles/oldcore/108/update.sh diff --git a/make.sh b/make.sh index 390c719e3..a2ff7f052 100755 --- a/make.sh +++ b/make.sh @@ -25,7 +25,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number -CORE="108" # Core Level (Filename) +CORE="109" # Core Level (Filename) PAKFIRE_CORE="108" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan From e11038354b019f4bea5a5d4f5bc29122bfea40f4 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 22 Dec 2016 21:53:39 +0100 Subject: [PATCH 031/464] hwdata: update databases pci.ids 2016.12.19 usb.ids 2016.12.05 Signed-off-by: Arne Fitzenreiter --- src/hwdata/pci.ids | 1568 ++++++++++++++++++++++++++++++++++++++------ src/hwdata/usb.ids | 679 +++++++++++++++++-- 2 files changed, 1978 insertions(+), 269 deletions(-) diff --git a/src/hwdata/pci.ids b/src/hwdata/pci.ids index 721cd6be8..9da8939c4 100644 --- a/src/hwdata/pci.ids +++ b/src/hwdata/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.01.28 -# Date: 2016-01-28 03:15:02 +# Version: 2016.12.19 +# Date: 2016-12-19 03:15:01 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -48,9 +48,11 @@ 021b Compaq Computer Corporation 8139 HNE-300 (RealTek RTL8139c) [iPaq Networking] 0270 Hauppauge computer works Inc. (Wrong ID) +0291 Davicom Semiconductor, Inc. (Wrong ID) # SpeedStream is Efficient Networks, Inc, a Siemens Company 02ac SpeedStream 1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] +02e0 XFX Pine Group Inc. (Wrong ID) 0303 Hewlett-Packard Company (Wrong ID) 0308 ZyXEL Communications Corporation (Wrong ID) 0315 SK-Electronics Co., Ltd. @@ -242,6 +244,25 @@ 1000 1000 LSI53C895A PCI to Ultra2 SCSI Controller 0013 53c875a 1000 1000 LSI53C875A PCI to Ultra SCSI Controller + 0014 MegaRAID Tri-Mode SAS3516 + 1028 1fd4 PERC H745P MX + 1d49 0602 ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter + 0015 MegaRAID Tri-Mode SAS3416 + 0016 MegaRAID Tri-Mode SAS3508 + 1028 1fc9 PERC H840 Adapter + 1028 1fcb PERC H740P Adapter + 1028 1fcd PERC H740P Mini + 1028 1fcf PERC H740P Mini + 1d49 0601 ThinkSystem RAID 930-8i 2GB Flash PCIe 12Gb Adapter + 1d49 0603 ThinkSystem RAID 930-24i 4GB Flash PCIe 12Gb Adapter + 1d49 0604 ThinkSystem RAID 930-8e 4GB Flash PCIe 12Gb Adapter + 0017 MegaRAID Tri-Mode SAS3408 + 1d49 0500 ThinkSystem RAID 530-8i PCIe 12Gb Adapter + 1d49 0502 ThinkSystem RAID 530-8i Dense Adapter + 001b MegaRAID Tri-Mode SAS3504 + 1d49 0605 ThinkSystem RAID 930-4i 2GB Flash Flex Adapter + 001c MegaRAID Tri-Mode SAS3404 + 1d49 0501 ThinkSystem RAID 530-4i Flex Adapter 0020 53c1010 Ultra3 SCSI Adapter 1000 1000 LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller 107b 1040 Server Onboard 53C1010-33 @@ -271,6 +292,7 @@ 103c 12c5 Ultra320 SCSI [A7173A] 103c 1323 Core I/O LAN/SCSI Combo [AB314A] 103c 3108 Single Channel Ultra320 SCSI HBA G2 + 103c 322a SC11Xe Ultra320 Single Channel PCIe x4 SCSI Host Bus Adapter (412911-B21) 124b 1170 PMC-USCSI320 # VMware's emulation of this device. Was missing from the list. 15ad 1976 LSI Logic Parallel SCSI Controller @@ -348,6 +370,8 @@ 005c SAS1064A PCI-X Fusion-MPT SAS 005d MegaRAID SAS-3 3108 [Invader] 1000 9361 MegaRAID SAS 9361-8i + 1000 9364 MegaRAID SAS 9364-8i + 1000 936a MegaRAID SAS 9364-8i 1028 1f41 PERC H830 Adapter 1028 1f42 PERC H730P Adapter 1028 1f43 PERC H730 Adapter @@ -358,8 +382,10 @@ 1028 1f4d PERC FD33xS 1028 1f4f PERC H730P Slim 1028 1f54 PERC FD33xD + 1028 1fd1 PERC H730P MX 17aa 1052 ThinkServer RAID 720i 17aa 1053 ThinkServer RAID 720ix + 1d49 0600 ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter 005e SAS1066 PCI-X Fusion-MPT SAS 005f MegaRAID SAS-3 3008 [Fury] 1028 1f44 PERC H330 Adapter @@ -478,6 +504,21 @@ 007c MegaRAID SAS 1078DE 1014 0395 ServeRAID-AR10is SAS/SATA Controller 007e SSS6200 PCI-Express Flash SSD + 1000 0504 Nytro NWD-BLP4-800 + 1000 0507 Nytro NWD-BLP4-1600 + 1000 0581 Nytro NWD-BLP4-400 + 1000 100d Nytro NWD-BFH6-1200 + 1000 100e Nytro NWD-BFH8-1600 + 1000 107e Nytro NWD-BFH8-3200 + 1000 1310 Nytro XP6302-8B1536 + 1000 1311 Nytro XP6302-8B2048 + 1000 1314 Nytro XP6302-8B4096 + 1000 150c Nytro XP6210-4A2048 + 1000 150f Nytro XP6210-4B2048 + 1000 160b Nytro XP6209-4A1024 + 1000 1613 Nytro XP6209-4B2048 + 108e 050a Nytro ELP4x200_4d_n + 108e 0581 Nytro ELP4x100_4d_n 0080 SAS2208 PCI-Express Fusion-MPT SAS-2 0081 SAS2208 PCI-Express Fusion-MPT SAS-2 0082 SAS2208 PCI-Express Fusion-MPT SAS-2 @@ -486,6 +527,9 @@ 0085 SAS2208 PCI-Express Fusion-MPT SAS-2 0086 SAS2308 PCI-Express Fusion-MPT SAS-2 0087 SAS2308 PCI-Express Fusion-MPT SAS-2 + 1000 3020 9207-8i SAS2.1 HBA + 1000 3040 9207-8e SAS2.1 HBA + 1000 3050 SAS9217-8i 1590 0044 H220i 008f 53c875J 1092 8000 FirePort 40 SCSI Controller @@ -496,8 +540,24 @@ 0095 SAS3108 PCI-Express Fusion-MPT SAS-3 0096 SAS3004 PCI-Express Fusion-MPT SAS-3 0097 SAS3008 PCI-Express Fusion-MPT SAS-3 - 1028 1f45 12GB/s HBA internal + 1000 3090 SAS9311-8i + 1000 30e0 SAS9300-8i + 1028 1f45 HBA330 Adapter 1028 1f46 12Gbps HBA + 1028 1f53 HBA330 Mini + 1028 1fd2 HBA330 MX + 1028 1fd3 HBA330 MMZ + 1bd4 0011 Inspur 12Gb 8i-3008 IT SAS HBA + 00ab SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC) + 00ac SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) + 1d49 0201 ThinkSystem 430-16i SAS/SATA 12Gb HBA + 1d49 0203 ThinkSystem 430-16e SAS/SATA 12Gb HBA + 00ae SAS3508 Fusion-MPT Tri-Mode RAID On Chip (ROC) + 00af SAS3408 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) + 1d49 0200 ThinkSystem 430-8i SAS/SATA 12Gb HBA + 1d49 0202 ThinkSystem 430-8e SAS/SATA 12Gb HBA + 00be SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC) + 00bf SAS3404 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) 00c0 SAS3324 PCI-Express Fusion-MPT SAS-3 00c1 SAS3324 PCI-Express Fusion-MPT SAS-3 00c2 SAS3324 PCI-Express Fusion-MPT SAS-3 @@ -513,6 +573,9 @@ 1000 9390 MegaRAID SAS 9380-8i8e 00cf MegaRAID SAS-3 3324 [Intruder] 1000 9370 MegaRAID SAS 9361-24i + 00d0 SAS3716 Fusion-MPT Tri-Mode RAID Controller Chip (ROC) + 00d1 SAS3616 Fusion-MPT Tri-Mode I/O Controller Chip (IOC) + 00d3 MegaRAID Tri-Mode SAS3716W 0407 MegaRAID 1000 0530 MegaRAID 530 SCSI 320-0X RAID Controller 1000 0531 MegaRAID 531 SCSI 320-4X RAID Controller @@ -1369,23 +1432,23 @@ 5a11 RD890 Northbridge only single slot PCI-e GFX Hydra part 5a12 RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part 15d9 a811 H8DGU - 5a13 RD890 PCI to PCI bridge (external gfx0 port A) - 5a14 RD890 PCI to PCI bridge (external gfx0 port B) + 5a13 RD890S/SR5650 Host Bridge + 5a14 RD9x0/RX980 Host Bridge 5a15 RD890 PCI to PCI bridge (PCI express gpp port A) - 5a16 RD890 PCI to PCI bridge (PCI express gpp port B) - 5a17 RD890 PCI to PCI bridge (PCI express gpp port C) - 5a18 RD890 PCI to PCI bridge (PCI express gpp port D) + 5a16 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GFX port 0) + 5a17 RD890/RD9x0 PCI to PCI bridge (PCI Express GFX port 1) + 5a18 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 0) 15d9 a811 H8DGU - 5a19 RD890 PCI to PCI bridge (PCI express gpp port E) - 5a1a RD890 PCI to PCI bridge (PCI express gpp port F) - 5a1b RD890 PCI to PCI bridge (PCI express gpp port G) - 5a1c RD890 PCI to PCI bridge (PCI express gpp port H) - 5a1d RD890 PCI to PCI bridge (external gfx1 port A) - 5a1e RD890 PCI to PCI bridge (external gfx1 port B) - 5a1f RD890 PCI to PCI bridge (NB-SB link) + 5a19 RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 1) + 5a1a RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 2) + 5a1b RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 3) + 5a1c RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 4) + 5a1d RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP Port 5) + 5a1e RD890/RD9x0/RX980 PCI to PCI bridge (PCI Express GPP2 Port 0) + 5a1f RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 0) 15d9 a811 H8DGU - 5a20 RD890S PCI Express bridge for GPP2 port 1 - 5a23 RD990 I/O Memory Management Unit (IOMMU) + 5a20 RD890/RD990 PCI to PCI bridge (PCI Express GFX2 port 1) + 5a23 RD890S/RD990 I/O Memory Management Unit (IOMMU) 5a31 RC410 Host Bridge 5a33 RS400 Host Bridge 5a34 RS4xx PCI Express Port [ext gfx] @@ -1505,6 +1568,9 @@ 6646 Bonaire XT [Radeon R9 M280X] 6647 Bonaire PRO [Radeon R9 M270X] 6649 Bonaire [FirePro W5100] + 1002 0b0c FirePro W4300 + 103c 0b0c Bonaire [FirePro W4300] + 103c 230c FirePro W5100 6650 Bonaire 6651 Bonaire 6658 Bonaire XTX [Radeon R7 260X/360] @@ -1533,7 +1599,7 @@ 1462 2938 Radeon R9 360 OEM 1462 3271 Radeon R9 360 OEM 1682 7360 Radeon R7 360 - 6660 Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330] + 6660 Sun XT [Radeon HD 8670A/8670M/8690M / R5 M330 / M430] 1028 05ea Radeon HD 8670M 1028 06bf Radeon R5 M335 103c 1970 Radeon HD 8670M @@ -1541,9 +1607,11 @@ 103c 8136 Radeon R5 M330 17aa 3804 Radeon R5 M330 17aa 3809 Radeon R5 M330 + 17aa 381a Radeon R5 M430 17aa 390c Radeon R5 M330 6663 Sun PRO [Radeon HD 8570A/8570M] 1025 0846 Radeon HD 8570A + 17aa 3805 Radeon HD 8570M 6664 Jet XT [Radeon R5 M240] 6665 Jet PRO [Radeon R5 M230] 17aa 368f Radeon R5 A230 @@ -2078,9 +2146,11 @@ 1462 8036 Radeon HD 8990 OEM 148c 8990 Radeon HD 8990 OEM 679e Tahiti LE [Radeon HD 7870 XT] + 1787 2328 Radeon HD 7870 Black Edition 2 GB GDDR5 [2GBD5-2DHV3E] 679f Tahiti 67a0 Hawaii XT GL [FirePro W9100] 1002 0335 FirePro S9150 + 1002 0735 FirePro S9170 1028 031f FirePro W9100 1028 0335 FirePro S9150 67a1 Hawaii PRO GL [FirePro W8100] @@ -2090,30 +2160,72 @@ 67a8 Hawaii 67a9 Hawaii 67aa Hawaii - 67b0 Hawaii XT [Radeon R9 290X] + 67b0 Hawaii XT / Grenada XT [Radeon R9 290X/390X] + 1028 0b00 Grenada XT [Radeon R9 390X] + 103c 6566 Radeon R9 390X 1043 046a R9 290X DirectCU II 1043 046c R9 290X DirectCU II OC 1043 0474 Matrix R9 290X Platinum 1043 0476 ARES III + 1043 04d7 Radeon R9 390X + 1043 04db Radeon R9 390X + 1043 04df Radeon R9 390X + 1043 04e9 Radeon R9 390X 1458 227c R9 290X WindForce 3X OC 1458 2281 R9 290X WindForce 3X OC 1458 228c R9 290X WindForce 3X 1458 228d R9 290X WindForce 3X OC 1458 2290 R9 290X WindForce 3X + 1458 22bc Radeon R9 390X 1458 22c1 Grenada PRO [Radeon R9 390] + 1462 2015 Radeon R9 390X 1462 3070 R9 290X Lightning 1462 3071 R9 290X Lightning 1462 3072 R9 290X Lightning LE 1462 3080 R9 290X Gaming 1462 3082 R9 290X Gaming OC 148c 2347 Devil 13 Dual Core R9 290X + 148c 2357 Grenada XT [Radeon R9 390X] 1682 9290 Double Dissipation R9 290X + 1682 9395 Grenada XT [Radeon R9 390X] + 174b 0e34 Radeon R9 390X 174b e282 Vapor-X R9 290X Tri-X OC 174b e285 R9 290X Tri-X OC + 174b e324 Grenada XT2 [Radeon R9 390X] 1787 2020 R9 290X IceQ X² Turbo - 67b1 Hawaii PRO [Radeon R9 290] + 1787 2357 Grenada XT [Radeon R9 390X] + 67b1 Hawaii PRO [Radeon R9 290/390] + 1043 04dd STRIX R9 390 + 148c 2358 Radeon R9 390 + 174b e324 Sapphire Nitro R9 390 67b9 Vesuvius [Radeon R9 295X2] 67be Hawaii LE + 67c0 Ellesmere [Polaris10] + 67c4 Ellesmere [Radeon Pro WX 7100] + 67c7 Ellesmere [Radeon Pro WX 5100] + 67df Ellesmere [Radeon RX 470/480] + 1002 0b37 Radeon RX 480 + 1043 04a8 Radeon RX 480 + 1043 04b0 Radeon RX 470 + 1043 04fb Radeon RX 480 + 1462 3411 Radeon RX 470 + 1462 3413 Radeon RX 480 + 148c 2372 Radeon RX 480 + 148c 2373 Radeon RX 470 + 1682 9470 Radeon RX 470 + 1682 9480 Radeon RX 480 + 174b e347 Radeon RX 470/480 + 174b e349 Radeon RX 470 + 1787 a470 Radeon RX 470 + 1787 a480 Radeon RX 480 + 67e0 Baffin [Polaris11] + 67e1 Baffin [Polaris11] + 67e3 Baffin [Radeon Pro WX 4100] + 67e8 Baffin [Polaris11] + 67e9 Baffin [Polaris11] + 67eb Baffin [Polaris11] + 67ef Baffin [Radeon RX 460] + 67ff Baffin [Polaris11] 6800 Wimbledon XT [Radeon HD 7970M] 1002 0124 Radeon HD 7970M 8086 2110 Radeon HD 7970M @@ -2129,7 +2241,7 @@ 1002 0310 FirePro S7000 1002 0420 Radeon Sky 500 6809 Pitcairn LE GL [FirePro W5000] - 6810 Curacao XT [Radeon R7 370 / R9 270X/370 OEM] + 6810 Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] 148c 0908 Radeon R9 370 OEM 1682 7370 Radeon R7 370 6811 Curacao PRO [Radeon R7 370 / R9 270/370 OEM] @@ -2769,19 +2881,48 @@ 174b e180 Radeon HD 7350 17af 3015 Radeon HD 7350 68fe Cedar LE - 6900 Topaz XT [Radeon R7 M260/M265] - 1028 0640 Radeon R7 M265 + 6900 Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] + 1025 1056 Radeon R7 M360 / R8 M365DX + 1028 0640 Radeon R7 M260/M265 + 1028 0643 Radeon R7 M260/M265 + 1028 067f Radeon R7 M260 + 1028 0767 Radeon R7 M445 + 1028 130a Radeon R7 M260 + 103c 2263 Radeon R7 M260 103c 2269 Radeon R7 M260 + 103c 22c6 Radeon R7 M260 103c 22c8 Radeon R7 M260 + 103c 808c Radeon R7 M260 + 103c 8099 Radeon R7 M360 + 103c 80b5 Radeon R7 M360 + 103c 80b9 Radeon R7 M360 + 103c 811c Radeon R7 M340 + 103c 8226 Radeon R7 M440 + 10cf 1906 Radeon R7 M260 + 1170 9979 Radeon R7 M360 1179 f903 Radeon R7 M260 + 1179 f922 Radeon R7 M260 + 1179 f923 Radeon R7 M260 1179 f934 Radeon R7 M260 + 17aa 3822 Radeon R7 M360 + 17aa 3824 Radeon R7 M360 + 17aa 5021 Radeon R7 M260 6901 Topaz PRO [Radeon R5 M255] + 103c 1318 Radeon R6 M255DX + 6907 Meso XT [Radeon R5 M315] 6921 Amethyst XT [Radeon R9 M295X] 6929 Tonga XT GL [FirePro S7150] 692b Tonga PRO GL [FirePro W7100] 692f Tonga XTV GL [FirePro S7150V] - 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X Mac Edition] + 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] + 1043 04f5 Radeon R9 380X + 1043 04f7 Radeon R9 380X + 106b 013a Radeon R9 M295X Mac Edition + 1458 22c8 Radeon R9 380X + 148c 2350 Radeon R9 380X + 1682 9385 Radeon R9 380X 174b e308 Radeon R9 380X Nitro 4G D5 + 17af 2006 Radeon R9 380X 6939 Tonga PRO [Radeon R9 285/380] 148c 9380 Radeon R9 380 # Make naming scheme consistent @@ -2908,6 +3049,7 @@ 72b3 RV560 [Radeon X1650 GT] (Secondary) 7300 Fiji [Radeon R9 FURY / NANO Series] 1002 0b36 Radeon R9 FURY X / NANO + 1002 1b36 Radeon Pro Duo 1043 049e Radeon R9 FURY 1043 04a0 Radeon R9 FURY X 174b e329 Radeon R9 FURY @@ -3102,7 +3244,7 @@ 95cc RV620 GL [FirePro V3700] 95cd RV620 [FirePro 2450] 95cf RV620 GL [FirePro 2260] - 960f RS780 HDMI Audio [Radeon (HD) 3000 Series] + 960f RS780 HDMI Audio [Radeon 3000/3100 / HD 3200/3300] 9610 RS780 [Radeon HD 3200] 1458 d000 GA-MA78GM-S2H Motherboard 9611 RS780C [Radeon 3100] @@ -3203,7 +3345,7 @@ 9917 Trinity [Radeon HD 7620G] 9918 Trinity [Radeon HD 7600G] 9919 Trinity [Radeon HD 7500G] - 9920 Liverpool Graphics + 9920 Liverpool [Playstation 4 APU] 9921 Liverpool HDMI/DP Audio Controller 9990 Trinity [Radeon HD 7520G] 9991 Trinity [Radeon HD 7540D] @@ -3223,39 +3365,41 @@ 99a0 Trinity [Radeon HD 7520G] 99a2 Trinity [Radeon HD 7420G] 99a4 Trinity [Radeon HD 7400G] - aa00 R600 HDMI Audio [Radeon HD 2900 Series] - aa08 RV630 HDMI Audio [Radeon HD 2600 Series] - aa10 RV610 HDMI Audio [Radeon HD 2350/2400 Series] + aa00 R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT] + aa01 RV635 HDMI Audio [Radeon HD 3650/3730/3750] + aa08 RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610] + aa10 RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] 174b aa10 Radeon HD 2400 PRO 18bc aa10 Radeon HD 2400 PRO aa18 RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] - aa20 RV635 HDMI Audio [Radeon HD 3600 Series] - aa28 RV620 HDMI Audio [Radeon HD 3400 Series] + aa20 RV635 HDMI Audio [Radeon HD 3650/3730/3750] + aa28 RV620 HDMI Audio [Radeon HD 3450/3470/3550/3570] aa30 RV770 HDMI Audio [Radeon HD 4850/4870] 174b aa30 Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink aa38 RV710/730 HDMI Audio [Radeon HD 4000 series] 103c 3628 dv6-1190en - aa50 Cypress HDMI Audio [Radeon HD 5800 Series] + aa50 Cypress HDMI Audio [Radeon HD 5830/5850/5870 / 6850/6870 Rebrand] aa58 Juniper HDMI Audio [Radeon HD 5700 Series] # 5500, 5600 and mobile 5700 series aa60 Redwood HDMI Audio [Radeon HD 5000 Series] 1025 033d Mobility Radeon HD 5650 1025 0347 Aspire 7740G - aa68 Cedar HDMI Audio [Radeon HD 5400/6300 Series] + aa68 Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series] 1028 aa68 XPS 8300 - aa80 Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] - aa88 Barts HDMI Audio [Radeon HD 6800 Series] - aa90 Turks/Whistler HDMI Audio [Radeon HD 6000 Series] + aa80 Cayman/Antilles HDMI Audio [Radeon HD 6930/6950/6970/6990] + aa88 Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM] + aa90 Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series] 1028 04a3 Precision M4600 - aa98 Caicos HDMI Audio [Radeon HD 6400 Series] + aa98 Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM] 174b aa98 Radeon HD 6450 1GB DDR3 - aaa0 Tahiti XT HDMI Audio [Radeon HD 7970 Series] + aaa0 Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970] aab0 Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] aac0 Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM] - aac8 Hawaii HDMI Audio + aac8 Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X] # I have a Tonga card and this is the HDMI Audio part aad8 Tonga HDMI Audio [Radeon R9 285/380] 174b aad8 Radeon R9 285/380 HDMI Audio + aae8 Fiji HDMI/DP Audio [Radeon R9 Nano / FURY/FURY X] ac00 Theater 600 Pro ac02 TV Wonder HD 600 PCIe ac12 Theater HD T507 (DVB-T) TV tuner/capture device @@ -3678,6 +3822,7 @@ 04da PCI-E IPR SAS+ Adapter (ASIC) 1014 04fb PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B) 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) + 04ed Internal Shared Memory (ISM) virtual PCI device 3022 QLA3022 Network Adapter 4022 QLA3022 Network Adapter ffff MPIC-2 interrupt controller @@ -4348,6 +4493,11 @@ 102b 2241 M9138 LP PCIe x16 102b 2280 M9188 ATX PCIe x16 102b 22c0 M9128 LP PCIe x16 + 0550 SV2 + 102b 00c0 MURA-IPX-I4EF + 102b 00c1 MURA-IPX-I4DF + 102b 00c3 MURA-IPX-I4DHF + 102b 00c5 MURA-IPX-I4EHF 0d10 MGA Ultima/Impression 1000 MGA G100 [Productiva] 102b ff01 Productiva G100 @@ -5234,6 +5384,7 @@ 1395 2201 WL22-PC 16ab 8501 WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter 8401 ACX 100 22Mbps Wireless Interface + 8888 Multicore DSP+ARM KeyStone II SOC 9000 Wireless Interface (of unknown type) 9065 TMS320DM642 9066 ACX 111 54Mbps Wireless Interface @@ -5836,6 +5987,7 @@ 1644 FastLinQ QL45000 Series 100GbE Controller 1077 e4f8 FastLinQ QL45611H 100GbE Adapter 1656 FastLinQ QL45000 Series 25GbE Controller + 1077 02a7 QL45212-DE 25GbE Adapter 1077 e4f6 FastLinQ QL45211H 25GbE Adapter 1077 e4f7 FastLinQ QL45212H 25GbE Adapter 165c FastLinQ QL45000 Series 40GbE Controller (FCoE) @@ -5859,13 +6011,27 @@ 103c 1939 HP QMH2672 16Gb Dual Port Fibre Channel Adapter 103c 8002 3830C 16G Fibre Channel Host Bus Adapter 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter + 1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02a2 QLE2694L Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02ad QLE2694U Quad Port 16/32Gb Fibre Channel to PCIe Adapter 2100 QLA2100 64-bit Fibre Channel Adapter 1077 0001 QLA2100 64-bit Fibre Channel Adapter 2200 QLA2200 64-bit Fibre Channel Adapter 1077 0002 QLA2200 2261 ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0299 QLE2740 Single Port 32Gb Fibre Channel to PCIe Adapter + 1077 029a QLE2742 Dual Port 32Gb Fibre Channel to PCIe Adapter + 1077 029b QLE2690 Single Port 16Gb Fibre Channel to PCIe Adapter + 1077 029c QLE2692 Dual Port 16Gb Fibre Channel to PCIe Adapter + 1077 02a7 QLE2690 Single Port 16Gb FC to PCIe Gen3 x8 Adapter + 1077 02a8 QLE2692 Dual Port 16Gb FC to PCIe Gen3 x8 Adapter + 1077 02ab QLE2740 Single Port 32Gb FC to PCIe Gen3 x8 Adapter + 1077 02ac QLE2742 Dual Port 32Gb FC to PCIe Gen3 x8 Adapter 1590 00f9 HPE StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter 1590 00fa HPE StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter + 1590 0203 HPE StoreFabric SN1600Q 32Gb Single Port Fibre Channel Host Bus Adapter + 1590 0204 HPE StoreFabric SN1600Q 32Gb Dual Port Fibre Channel Host Bus Adapter 2300 QLA2300 64-bit Fibre Channel Adapter 2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA 103c 0131 2Gb Fibre Channel - Single port [A7538A] @@ -5878,6 +6044,7 @@ 103c 7040 FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A] 2532 ISP2532-based 8Gb Fibre Channel to PCI Express HBA 103c 3262 StorageWorks 81Q + 103c 3263 StorageWorks 82Q 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine 1590 00fc HPE StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter 3022 ISP4022-based Ethernet NIC @@ -7198,6 +7365,7 @@ 8533 PEX 8533 32-lane, 6-port PCI Express Switch 8547 PEX 8547 48-lane, 3-port PCI Express Switch 8548 PEX 8548 48-lane, 9-port PCI Express Switch + 8603 PEX 8603 3-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch 8604 PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch 8605 PEX 8605 PCI Express 4-port Gen2 Switch 8606 PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch @@ -7224,9 +7392,11 @@ 8696 PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch 8717 PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA 8718 PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8724 PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA 8732 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch 8734 PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8748 PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA # This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732 87b0 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch 1093 7761 PXIe-8830mc @@ -7351,7 +7521,7 @@ 10b5 1123 Sectra KK631 encryption board 10b5 9080 9080 [real subsystem ID not set] 12d9 0002 PCI Prosody Card - 12df 4422 4422PCI ["Do-All" Telemetry Data Aquisition System] + 12df 4422 4422PCI ["Do-All" Telemetry Data Acquisition System] 1369 9601 PCX822np 1369 a102 PCX822v2 1369 a201 PCX442 @@ -7366,6 +7536,7 @@ 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch + 1d49 0001 ThinkSystem 1610-4P NVMe Switch Adapter 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch a100 Blackmagic Design DeckLink bb04 B&B 3PCIOSD1A Isolated PCI Serial @@ -8047,7 +8218,7 @@ 1043 0c11 A7N8X Mainboard a0a0 03b4 UK79G-1394 motherboard 006a nForce2 AC97 Audio Controler (MCP) - 1043 8095 nForce2 AC97 Audio Controler (MCP) + 1043 8095 nForce2 AC97 Audio Controller (MCP) a0a0 0304 UK79G-1394 motherboard 006b nForce Audio Processing Unit 10de 006b nForce2 MCP Audio Processing Unit @@ -8211,6 +8382,7 @@ 1048 0c45 GLoria II 1048 0c4a GLoria II-64 Pro 1048 0c4b GLoria II-64 Pro DVII + 10a9 9002 VPro VR3 0110 NV11 [GeForce2 MX/MX 400] 1043 4015 AGP-V7100 Pro 1043 4021 V7100 Deluxe Combo @@ -9734,6 +9906,7 @@ 0f01 GF108 [GeForce GT 620] 0f02 GF108 [GeForce GT 730] 0f06 GF108 [GeForce GT 730] + 0fb0 GM200 High Definition Audio 0fbb GM204 High Definition Audio Controller 0fc0 GK107 [GeForce GT 640 OEM] 0fc1 GK107 [GeForce GT 640] @@ -9875,6 +10048,7 @@ 103c 2afb GeForce 705A 17aa 309d GeForce 705A 17aa 30b1 GeForce 800A + 17aa 30f3 GeForce 705A 17aa 36a1 GeForce 800A 107c GF119 [NVS 315] 107d GF119 [NVS 310] @@ -9906,6 +10080,7 @@ 10c3 GT218 [GeForce 8400 GS Rev. 3] 10c5 GT218 [GeForce 405] 10d8 GT218 [NVS 300] + 10f0 GP104 High Definition Audio Controller 1140 GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] 1019 0799 GeForce 820M 1019 999f GeForce GT 720M @@ -10101,7 +10276,7 @@ 144d c0e3 NVS 5200M 144d c0e4 NVS 5200M 144d c10d GeForce 820M - 144d c652 GeForce GT 620M + 144d c652 GeForce GT 620M on NP300E5C series laptop 144d c709 GeForce 710M 144d c711 GeForce 710M 144d c736 GeForce 710M @@ -10353,6 +10528,7 @@ 1287 GK208 [GeForce GT 730] 1288 GK208 [GeForce GT 720] 1289 GK208 [GeForce GT 710] + 128b GK208 [GeForce GT 710B] 1290 GK208M [GeForce GT 730M] 103c 2afa GeForce GT 730A 103c 2b04 GeForce GT 730A @@ -10377,6 +10553,9 @@ 1296 GK208M [GeForce 825M] 1298 GK208M [GeForce GT 720M] 1299 GK208M [GeForce 920M] + 17aa 30bb GeForce 920A + 17aa 36a7 GeForce 920A + 17aa 36af GeForce 920M 129a GK208M [GeForce 910M] 12a0 GK208 12b9 GK208GLM [Quadro K610M] @@ -10390,8 +10569,13 @@ 1344 GM108M [GeForce 845M] 1346 GM108M [GeForce 930M] 1347 GM108M [GeForce 940M] + 1348 GM108M [GeForce 945M / 945A] + 1349 GM108M [GeForce 930M] 134d GM108M [GeForce 940MX] - 137a GM108GLM [Quadro K620M] + 134e GM108M [GeForce 930MX] + 134f GM108M [GeForce 920MX] + 137a GM108GLM [Quadro K620M / Quadro M500M] + 17aa 505a Quadro M500M 137d GM108M [GeForce 940A] 1380 GM107 [GeForce GTX 750 Ti] 1381 GM107 [GeForce GTX 750] @@ -10409,10 +10593,12 @@ 17aa 362f GeForce GTX 950A 17aa 363f GeForce GTX 950A 17aa 3640 GeForce GTX 950A + 17aa 3647 GeForce GTX 950A 17aa 36b9 GeForce GTX 950A 139b GM107M [GeForce GTX 960M] 103c 2b4c GeForce GTX 960A 139c GM107M [GeForce 940M] + 139d GM107M [GeForce GTX 750 Ti] 13b0 GM107GLM [Quadro M2000M] 13b1 GM107GLM [Quadro M1000M] 13b2 GM107GLM [Quadro M600M] @@ -10421,7 +10607,9 @@ 13ba GM107GL [Quadro K2200] 13bb GM107GL [Quadro K620] 13bc GM107GL [Quadro K1200] - 13bd GM107GL [GRID M40] + 13bd GM107GL [Tesla M10] + 10de 110a GRID M40 + 10de 1160 Tesla M10 13c0 GM204 [GeForce GTX 980] 1043 8504 GTX980-4GD5 13c1 GM204 @@ -10434,21 +10622,72 @@ 13f0 GM204GL [Quadro M5000] 13f1 GM204GL [Quadro M4000] 13f2 GM204GL [Tesla M60] - 13f8 GM204GLM [Quadro M5000M] + 13f3 GM204GL [Tesla M6] + 13f8 GM204GLM [Quadro M5000M / M5000 SE] 13f9 GM204GLM [Quadro M4000M] 13fa GM204GLM [Quadro M3000M] + 10de 11c9 Quadro M3000 SE + 13fb GM204GLM [Quadro M5500] 1401 GM206 [GeForce GTX 960] 1402 GM206 [GeForce GTX 950] + 1406 GM206 [GeForce GTX 960] 1407 GM206 [GeForce GTX 750 v2] 1427 GM206M [GeForce GTX 965M] + 1430 GM206GL [Quadro M2000] + 1431 GM206GL [Tesla M4] + 15f0 GP100GL + 15f1 GP100GL + 15f7 GP100GL [Tesla P100 PCIe 12GB] + 15f8 GP100GL [Tesla P100 PCIe 16GB] + 15f9 GP100GL [Tesla P100 SMX2 16GB] 1617 GM204M [GeForce GTX 980M] 1618 GM204M [GeForce GTX 970M] 1619 GM204M [GeForce GTX 965M] 161a GM204M [GeForce GTX 980] + 1667 GM204M [GeForce GTX 965M] + 1725 GP100 + 172e GP100 + 172f GP100 17c2 GM200 [GeForce GTX TITAN X] 17c8 GM200 [GeForce GTX 980 Ti] 17f0 GM200GL [Quadro M6000] + 17f1 GM200GL [Quadro M6000 24GB] 17fd GM200GL [Tesla M40] + 1b00 GP102 [TITAN X] + 1b01 GP102 + 1b30 GP102GL [Quadro P6000] + 1b38 GP102GL [Tesla P40] + 1b70 GP102GL + 1b78 GP102GL + 1b80 GP104 [GeForce GTX 1080] + 1b81 GP104 [GeForce GTX 1070] + 1b82 GP104 + 1b83 GP104 + 1b84 GP104 [GeForce GTX 1060 3GB] + 1ba0 GP104M [GeForce GTX 1080] + 1ba1 GP104M [GeForce GTX 1070] + 1bb0 GP104GL [Quadro P5000] + 1bb1 GP104GL + 1bb3 GP104GL [Tesla P4] + 1bb4 GP104GL + 1be0 GP104M [GeForce GTX 1080] + 1be1 GP104M [GeForce GTX 1070] + 1c00 GP106 + 1c01 GP106 + 1c02 GP106 [GeForce GTX 1060 3GB] + 1c03 GP106 [GeForce GTX 1060 6GB] + 1c20 GP106M [GeForce GTX 1060] + 1c30 GP106GL + 1c35 GP106 + 1c60 GP106M [GeForce GTX 1060] + 1c70 GP106GL + 1c80 GP107 + 1c81 GP107 [GeForce GTX 1050] + 1c82 GP107 [GeForce GTX 1050 Ti] + 1ca7 GP107GL + 1ca8 GP107GL + 1caa GP107GL + 1d01 GP108 10df Emulex Corporation 0720 OneConnect NIC (Skyhawk) 103c 1934 FlexFabric 20Gb 2-port 650M Adapter @@ -10479,6 +10718,7 @@ e240 OneConnect iSCSI Initiator (Lancer) e260 OneConnect FCoE Initiator (Lancer) e268 OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) + e300 Lancer Gen6: LPe32000 Fibre Channel Host Adapter f011 Saturn: LightPulse Fibre Channel Host Adapter f015 Saturn: LightPulse Fibre Channel Host Adapter f085 LP850 Fibre Channel Host Adapter @@ -10493,6 +10733,7 @@ f0e5 Zephyr LightPulse Fibre Channel Host Adapter f0f5 Neptune LightPulse Fibre Channel Host Adapter f100 Saturn-X: LightPulse Fibre Channel Host Adapter + 103c 3282 8Gb Dual-port PCI-e FC HBA f111 Saturn-X LightPulse Fibre Channel Host Adapter f112 Saturn-X LightPulse Fibre Channel Host Adapter f180 LPSe12002 EmulexSecure Fibre Channel Adapter @@ -10616,6 +10857,7 @@ 5250 RTS5250 PCI Express Card Reader 525a RTS525A PCI Express Card Reader 5286 RTS5286 PCI Express Card Reader + 5287 RTL8411B PCI Express Card Reader 5288 RTS5288 PCI Express Card Reader 5289 RTL8411 PCI Express Card Reader 1043 1457 K55A Laptop @@ -10631,6 +10873,7 @@ 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) 8136 RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller 103c 1985 Pavilion 17-e163sg Notebook PC + 103c 2a8c Compaq 500B Microtower 103c 2ab1 Pavilion p6774 103c 30cc Pavilion dv6700 1179 ff64 RTL8102E PCI-E Fast Ethernet NIC @@ -10697,10 +10940,10 @@ 1028 0283 Vostro 220 1028 04b2 Vostro 3350 1028 04da Vostro 3750 + 1028 06f3 Latitude 3570 103c 1611 Pavilion DM1Z-3000 103c 1950 ProBook 450/455 103c 2a6f Asus IPIBL-LB Motherboard - 1043 11f5 A6J-Q008 1043 16d5 U6V/U31J laptop 1043 81aa P5B 1043 82c6 M3A78 Series Motherboard @@ -10709,7 +10952,8 @@ 1043 8505 P8 series motherboard 105b 0d7c D270S/D250S Motherboard 10ec 8168 RTL8111/8168 PCI Express Gigabit Ethernet controller - 1458 e000 Motherboard + 144d c652 RTL8168 on a NP300E5C series laptop + 1458 e000 Onboard Ethernet 1462 238c Onboard RTL8111b on MSI P965 Platinum Mainboard 1462 368c K9AG Neo2 1462 4180 Wind PC MS-7418 @@ -10739,10 +10983,12 @@ 8173 RTL8192SE Wireless LAN Controller 8174 RTL8192SE Wireless LAN Controller 8176 RTL8188CE 802.11b/g/n WiFi Adapter + 1043 84b5 PCE-N10 1a3b 1139 AW-NE139H Half-size Mini PCIe Card 8177 RTL8191CE PCIe Wireless Network Adapter 8178 RTL8192CE PCIe Wireless Network Adapter 8179 RTL8188EE Wireless Network Adapter + 103c 197d RTL8188EE mini-PCIe card 8180 RTL8180L 802.11b MAC 1385 4700 MA521 802.11b Wireless PC Card 1737 0019 WPC11v4 802.11b Wireless-B Notebook Adapter @@ -10752,6 +10998,7 @@ 8191 RTL8192CE PCIe Wireless Network Adapter 8192 RTL8192E/RTL8192SE Wireless LAN Controller 8193 RTL8192DE Wireless LAN Controller + 8196 RTL8196 Integrated PCI-e Bridge 8197 SmartLAN56 56K Modem 8199 RTL8187SE Wireless LAN Controller 1462 6894 MN54G2 / MS-6894 Wireless Mini PCIe Card @@ -10780,6 +11027,8 @@ 3fc4 RME Digi9652 (Hammerfall) 3fc5 RME Hammerfall DSP 3fc6 RME Hammerfall DSP MADI + 7038 FPGA Card XC7VX690T + 17aa 402f FPGA XC7VX690T-3FFG1157E 8380 Ellips ProfiXpress Profibus Master 8381 Ellips Santos Frame Grabber d154 Copley Controls CAN card (PCI-CAN-02) @@ -10824,46 +11073,88 @@ 9500 INI-950 SCSI Adapter 9502 INI-950P Ultra Wide SCSI Adapter 1102 Creative Labs - 0002 SB Live! EMU10k1 + 0002 EMU10k1 [Sound Blaster Live! Series] 100a 1102 SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF - 1102 0020 CT4850 SBLive! Value + 1102 0020 CT4670/4850 SBLive! Value 1102 0021 CT4620 SBLive! - 1102 002f SBLive! mainboard implementation - 1102 100a SB Live! 5.1 Digital OEM [SB0220] + 1102 002f M002/M003 Integrated SBLive! + 1102 100a SB0220/0229 SBLive! 5.1 Digital OEM 1102 4001 E-mu APS 1102 8022 CT4780 SBLive! Value 1102 8023 CT4790 SoundBlaster PCI512 1102 8024 CT4760 SBLive! - 1102 8025 SBLive! Mainboard Implementation + 1102 8025 CT1140/SB0040 Integrated SBLive! 1102 8026 CT4830 SBLive! Value 1102 8027 CT4832 SBLive! Value - 1102 8028 CT4760 SBLive! OEM version + 1102 8028 CT4870 SBLive! Value + 1102 8029 CT4872 SBLive! Value + 1102 802a CT4890 SoundBlaster PCI256 + 1102 802b CT4891 SoundBlaster PCI256 1102 8031 CT4831 SBLive! Value + 1102 8032 CT4871 SBLive! Value + 1102 8033 CT4893 SoundBlaster PCI256 + 1102 8035 CT0060 SBLive! 1102 8040 CT4760 SBLive! + 1102 8050 CT4750 SoundBlaster PCI512 1102 8051 CT4850 SBLive! Value - 1102 8061 SBLive! Player 5.1 - 1102 8064 SBLive! 5.1 Model SB0100 - 1102 8065 SBLive! 5.1 Digital Model SB0220 - 1102 8066 Live! 5.1 Digital [SB0228] - 1102 8067 SBLive! 5.1 eMicro 28028 - 0004 SB Audigy - 1102 0051 SB0090 Audigy Player - 1102 0053 SB0090 Audigy Player/OEM - 1102 0058 SB0090 Audigy Player/OEM - 1102 1002 SB Audigy2 Platinum - 1102 1003 SB0350 Audigy 2 - 1102 1007 SB0240 Audigy 2 Platinum 6.1 - 1102 1009 SB Audigy2 OEM HP - 1102 2001 SB Audigy 2 ZS Platinum Pro - 1102 2002 SB Audigy 2 ZS (SB0350) - 1102 4001 E-MU 1010 + 1102 8061 SB060 SBLive! Player 5.1 + 1102 8062 SB0100 SBLive! 5.1 + 1102 8063 DXW Integrated SBLive! 5.1 + 1102 8064 SB0100/SB0102 SBLive! 5.1 + 1102 8065 SB0220/0222 SBLive! 5.1 Digital + 1102 8066 SB0228 SBLive! 5.1 Digital + 1102 8067 SB0220 SBLive! 5.1 + 1102 8068 CT0061 SBLive! + 1102 8069 SB0101 SBLive! 5.1 Value + 1102 806a SB0103 SBLive! 5.1 + 1102 806b SB0105 SBLive! 5.1 + 1102 806c SB0221 SBLive! 5.1 + 1102 8071 SB0150 SoundBlaster PCI512 +# EMU8008 PCI version of emu8000 chip + 0003 SB AWE64(D) + 0004 EMU10k2/CA0100/CA0102/CA10200 [Sound Blaster Audigy Series] + 1102 0040 SB0090 Audigy Player +# Probably an early engineering sample + 1102 0041 CT4820 SBLive!2 + 1102 0042 CT0070 Audigy + 1102 0043 CT0072 Audigy + 1102 0051 SB0090 Audigy Player/Platinum (EX) + 1102 0052 SB0162 Audigy ES + 1102 0053 CT0090/SB0092 Audigy Player/OEM + 1102 0054 SB0161 Audigy ES + 1102 0055 SB0192 Audigy + 1102 0056 SB0191 Audigy + 1102 0057 SB0091 Audigy + 1102 0058 SB0095 Audigy Player/OEM + 1102 0059 SB0230 Audigy + 1102 005a SB0231 Audigy + 1102 005b SB0232 Audigy + 1102 005c SB0238 Audigy + 1102 1002 SB0240 Audigy 2 Platinum 6.1 + 1102 1003 SB0350 Audigy 2 / SB0243 Audigy 2 OEM + 1102 1004 SB0242 Audigy 2 + 1102 1005 SB0280 Audigy 2 Platinum Ex + 1102 1006 SB0245 Audigy 2 OEM + 1102 1007 SB0240/SB0244 Audigy 2 Platinum + 1102 1008 SB0320 Audigy 2 + 1102 1009 SB0249 Audigy 2 OEM + 1102 100a SB0246 Audigy 2 + 1102 2001 SB0360 Audigy 2 ZS Platinum Pro + 1102 2002 SB0350 Audigy 2 ZS + 1102 2003 SB0352 Audigy 2 ZS + 1102 2004 SB0355 Audigy 2 ZS + 1102 2005 SB0359 Audigy 2 ZS + 1102 2006 SB035x Audigy 2 OEM + 1102 2007 SB0380 Audigy 4 Pro + 1102 4001 E-MU 1010 [MAEM8810] 1102 4002 E-MU 0404 - 0005 SB X-Fi + 1102 4003 E-MU 1010 + 0005 EMU20k1 [Sound Blaster X-Fi Series] 1102 0021 X-Fi Platinum 1102 002c X-Fi XtremeGamer FATAL1TY PRO 1102 1003 X-Fi XtremeMusic - 0006 [SB Live! Value] EMU10k1X - 0007 CA0106 Soundblaster + 0006 EMU10k1X [SB Live! Value/OEM Series] + 0007 CA0106/CA0111 [SB Live!/Audigy/X-Fi Series] 1102 0007 SBLive! 24bit 1102 1001 SB0310 Audigy LS 1102 1002 SB0312 Audigy LS @@ -10872,15 +11163,30 @@ 1102 1012 SB0790 X-Fi XA 1102 1013 Soundblaster X-Fi Xtreme Audio 1462 1009 K8N Diamond - 0008 SB0400 Audigy2 Value + 0008 CA0108/CA10300 [Sound Blaster Audigy Series] 1102 0008 EMU0404 Digital Audio System + 1102 1001 SB0400 Audigy 2 Value + 1102 1021 SB0610 Audigy 4 Value + 1102 1022 SBxxx Audigy 2/4 Value + 1102 1023 SB0612 Audigy 2 LS + 1102 1024 SB1550 Audigy 5/Rx + 1102 1101 SBxxxx Audigy 2 SA + 1102 2001 SB0530 Audigy 2 ZS Notebook + 1102 2021 SBxxxx Audigy 4 Notebook + 1102 4002 E-MU 0404 + 1102 4003 E-MU 1010 1102 4004 EMU1010 Digital Audio System [MAEM8960] - 0009 [SB X-Fi Xtreme Audio] CA0110-IBG - 1102 0010 [SB X-Fi Xtreme Audio] CA0110-IBG - 1102 0018 SB1040 - 000b EMU20k2 [X-Fi Titanium Series] + 1102 4005 E-MU 0404 [MAEM8984] + 1102 4007 E-MU 1010 [MAEM8982] + 1102 4201 E-MU 0202 [MAEM8950] + 0009 CA0110 [Sound Blaster X-Fi Xtreme Audio] + 1102 0010 MB0820 Integrated + 1102 0018 SB1040 PCI Express + 000b EMU20k2 [Sound Blaster X-Fi Titanium Series] 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] - 0012 SB Recon3D + 1102 0062 SB1270 [SoundBlaster X-Fi Titanium HD] + 0012 Sound Core3D [Sound Blaster Recon3D / Z-Series] + 1102 0010 SB1570 SB Audigy Fx 4001 SB Audigy FireWire Port 1102 0010 SB Audigy FireWire Port 7002 SB Live! Game Port @@ -11203,6 +11509,7 @@ 1043 8095 A7V8X Motherboard (Realtek ALC650 codec) 1043 80a1 A7V8X-X Motherboard 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) + 1043 80f3 ASUSTek SK8V motherboard 1043 810d Asus P5VD1-X (AD1888 codec [SoundMax]) 1043 812a A8V Deluxe motherboard (Realtek ALC850 codec) 10ec 8168 High Definition Audio @@ -11793,6 +12100,7 @@ 1093 75ff PXIe-8383mc DMA 1093 7600 PXIe-8383mc DMA 1093 7602 PXIe-8384 + 808e PES24NT24G2 PCI Express Switch # 32 port / 8 lane PCIe Gen 2 packet switch 808f PES32NT8AG2 80cf F32P08xG3 [PCIe boot mode] @@ -12666,6 +12974,7 @@ 144d c006 vpr Matrix 170B4 CardBus bridge 0476 RL5c476 II 1014 0185 ThinkPad A/T/X Series + 1014 0555 ThinkPad X41 1014 056c ThinkPad Z60t 1028 014f Latitude X300 laptop 1028 0188 Inspiron 6000 laptop @@ -12712,14 +13021,14 @@ 103c 30b5 Presario V3242AU 103c 30b7 Presario V6133CL 103c 30cc Pavilion dv6700 - 103c 30cf Pavilion dv9500/9600/9700 series + 103c 30cf Pavilion dv95xx/96xx/97xx/98xx series 1043 1237 A6J-Q008 1043 1967 V6800V 144d c018 X20 IV 17aa 20ca ThinkPad T61 0811 R5C811 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter - 1014 0556 ThinkPad X60s / Z60t + 1014 0556 ThinkPad X40 / X41 / X60s / Z60t 1014 0598 ThinkPad Z60m 1025 0121 Aspire 5920G 1028 0188 Inspiron 6000 laptop @@ -12941,6 +13250,7 @@ 2a55 88W8864 [Avastar] 802.11ac Wireless 2b36 88W8764 [Avastar] 802.11n Wireless 2b38 88W8897 [AVASTAR] 802.11ac Wireless + 2b40 88W8964 [Avastar] 802.11ac Wireless 4101 OLPC Cafe Controller Secure Digital Controller 4320 88E8001 Gigabit Ethernet Controller 1019 0f38 Marvell 88E8001 Gigabit Ethernet Controller (ECS) @@ -13430,9 +13740,22 @@ 7375 PM7375 [LASAR-155 ATM SAR] 7384 PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] 8000 PM8000 [SPC - SAS Protocol Controller] + 8009 PM8009 SPCve 8x6G 8032 ATTO Celerity FC8xEN 117c 003b Celerity FC-82EN Fibre Channel Adapter 117c 003c Celerity FC-84EN Fibre Channel Adapter + 8053 PM8053 SXP 12G 24-port SAS/SATA expander + 8054 PM8054 SXP 12G 36-port SAS/SATA expander + 8055 PM8055 SXP 12G 48-port SAS/SATA expander + 8056 PM8056 SXP 12G 68-port SAS/SATA expander + 8060 PM8060 SRCv 12G eight-port SAS/SATA RoC + 8063 PM8063 SRCv 12G 16-port SAS/SATA RoC + 8070 PM8070 Tachyon SPCv 12G eight-port SAS/SATA controller + 8071 PM8071 Tachyon SPCve 12G eight-port SAS/SATA controller + 8072 PM8072 Tachyon SPCv 12G 16-port SAS/SATA controller + 8073 PM8073 Tachyon SPCve 12G 16-port SAS/SATA controller + 8531 PM8531 PFX 24xG3 Fanout PCIe Switches + 8546 PM8546 B-FEIP PSX 96xG3 PCIe Storage Switch 11f9 I-Cube Inc 11fa Kasan Electronics Company, Ltd. 11fb Datel Inc @@ -13486,6 +13809,7 @@ 1202 9844 SK-9843 SX dual link 1203 Bayer Corporation, Agfa Division 1204 Lattice Semiconductor Corporation + 1965 SB6501 802.11ad Wireless Network Adapter 1205 Array Corporation 1206 Amdahl Corporation 1208 Parsytec GmbH @@ -13576,6 +13900,7 @@ 1028 04a3 Precision M4600 8331 O2 Flash Memory Card 8520 SD/MMC Card Reader Controller + 8621 SD/MMC Card Reader Controller 1218 Hybricon Corp. 1219 First Virtual Corporation 121a 3Dfx Interactive, Inc. @@ -13797,6 +14122,7 @@ 1969 ES1938/ES1946/ES1969 Solo-1 Audiodrive 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard 125d 8888 Solo-1 Audio Adapter + 125d 8898 ES1938S TTSOLO1-SL [TerraTec 128i PCI] 153b 111b Terratec 128i PCI 1978 ES1978 Maestro 2E 0e11 b112 Armada M700/E500 @@ -13921,13 +14247,13 @@ 0002 DirecPC 1274 Ensoniq 1171 ES1373 / Creative Labs CT5803 [AudioPCI] - 1371 ES1371 / Creative Labs CT2518/ES1373 + 1371 ES1371/ES1373 / Creative Labs CT2518 0e11 0024 AudioPCI on Motherboard Compaq Deskpro 0e11 b1a7 ES1371, ES1373 AudioPCI 1033 80ac ES1371, ES1373 AudioPCI 1042 1854 Tazer 107b 8054 Tabor2 - 1274 1371 AudioPCI 64V/128 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] + 1274 1371 Audio PCI 64V/128/5200 / Creative CT4810/CT5803/CT5806 [Sound Blaster PCI] 1274 8001 CT4751 board 1462 6470 ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A 1462 6560 ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 @@ -14210,7 +14536,7 @@ 12a8 News Datacom 12a9 Xiotech Corporation 12aa SDL Communications, Inc. -12ab Yuan Yuan Enterprise Co., Ltd. +12ab YUAN High-Tech Development Co., Ltd. 0000 MPG160/Kuroutoshikou ITVC15-STVLP 0002 AU8830 [Vortex2] Based Sound Card With A3D Support 0003 T507 (DVB-T) TV tuner/capture device @@ -14759,6 +15085,7 @@ 0206 GPS180PEX GPS Receiver (PCI Express) 0207 GLN180PEX GPS/GLONASS receiver (PCI Express) 0208 GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) + 0209 GRC181PEX GPS/GLONASS/BEIDOU receiver (PCI Express) 0301 TCR510PCI IRIG Timecode Reader 0302 TCR167PCI IRIG Timecode Reader 0303 TCR511PCI IRIG Timecode Reader @@ -15649,6 +15976,7 @@ 5015 T502-BT Unified Wire Ethernet Controller 5016 T580-OCP-SO Unified Wire Ethernet Controller 5017 T520-OCP-SO Unified Wire Ethernet Controller + 5018 T540-BT Unified Wire Ethernet Controller 5080 T540-5080 Unified Wire Ethernet Controller 5081 T540-5081 Unified Wire Ethernet Controller 5082 T504-5082 Unified Wire Ethernet Controller @@ -15670,6 +15998,9 @@ 5098 T580-5098 Unified Wire Ethernet Controller 5099 T580-5099 Unified Wire Ethernet Controller 509a T520-509A Unified Wire Ethernet Controller + 509b T540-509B Unified Wire Ethernet Controller + 509c T520-509C Unified Wire Ethernet Controller + 509d T540-509D Unified Wire Ethernet Controller 5401 T520-CR Unified Wire Ethernet Controller 5402 T522-CR Unified Wire Ethernet Controller 5403 T540-CR Unified Wire Ethernet Controller @@ -15693,6 +16024,7 @@ 5415 T502-BT Unified Wire Ethernet Controller 5416 T580-OCP-SO Unified Wire Ethernet Controller 5417 T520-OCP-SO Unified Wire Ethernet Controller + 5418 T540-BT Unified Wire Ethernet Controller 5480 T540-5080 Unified Wire Ethernet Controller 5481 T540-5081 Unified Wire Ethernet Controller 5482 T504-5082 Unified Wire Ethernet Controller @@ -15714,6 +16046,9 @@ 5498 T580-5098 Unified Wire Ethernet Controller 5499 T580-5099 Unified Wire Ethernet Controller 549a T520-509A Unified Wire Ethernet Controller + 549b T540-509B Unified Wire Ethernet Controller + 549c T520-509C Unified Wire Ethernet Controller + 549d T540-509D Unified Wire Ethernet Controller 5501 T520-CR Unified Wire Storage Controller 5502 T522-CR Unified Wire Storage Controller 5503 T540-CR Unified Wire Storage Controller @@ -15737,6 +16072,7 @@ 5515 T502-BT Unified Wire Storage Controller 5516 T580-OCP-SO Unified Wire Storage Controller 5517 T520-OCP-SO Unified Wire Storage Controller + 5518 T540-BT Unified Wire Storage Controller 5580 T540-5080 Unified Wire Storage Controller 5581 T540-5081 Unified Wire Storage Controller 5582 T504-5082 Unified Wire Storage Controller @@ -15758,6 +16094,9 @@ 5598 T580-5098 Unified Wire Storage Controller 5599 T580-5099 Unified Wire Storage Controller 559a T520-509A Unified Wire Storage Controller + 559b T540-509B Unified Wire Storage Controller + 559c T520-509C Unified Wire Storage Controller + 559d T540-509D Unified Wire Storage Controller 5601 T520-CR Unified Wire Storage Controller 5602 T522-CR Unified Wire Storage Controller 5603 T540-CR Unified Wire Storage Controller @@ -15781,6 +16120,7 @@ 5615 T502-BT Unified Wire Storage Controller 5616 T580-OCP-SO Unified Wire Storage Controller 5617 T520-OCP-SO Unified Wire Storage Controller + 5618 T540-BT Unified Wire Storage Controller 5680 T540-5080 Unified Wire Storage Controller 5681 T540-5081 Unified Wire Storage Controller 5682 T504-5082 Unified Wire Storage Controller @@ -15802,6 +16142,9 @@ 5698 T580-5098 Unified Wire Storage Controller 5699 T580-5099 Unified Wire Storage Controller 569a T520-509A Unified Wire Storage Controller + 569b T540-509B Unified Wire Storage Controller + 569c T520-509C Unified Wire Storage Controller + 569d T540-509D Unified Wire Storage Controller 5701 T520-CR Unified Wire Ethernet Controller 5702 T522-CR Unified Wire Ethernet Controller 5703 T540-CR Unified Wire Ethernet Controller @@ -15864,6 +16207,7 @@ 5815 T502-BT Unified Wire Ethernet Controller [VF] 5816 T580-OCP-SO Unified Wire Ethernet Controller [VF] 5817 T520-OCP-SO Unified Wire Ethernet Controller [VF] + 5818 T540-BT Unified Wire Ethernet Controller [VF] 5880 T540-5080 Unified Wire Ethernet Controller [VF] 5881 T540-5081 Unified Wire Ethernet Controller [VF] 5882 T504-5082 Unified Wire Ethernet Controller [VF] @@ -15885,6 +16229,74 @@ 5898 T580-5098 Unified Wire Ethernet Controller [VF] 5899 T580-5099 Unified Wire Ethernet Controller [VF] 589a T520-509A Unified Wire Ethernet Controller [VF] + 589b T540-509B Unified Wire Ethernet Controller [VF] + 589c T520-509C Unified Wire Ethernet Controller [VF] + 589d T540-509D Unified Wire Ethernet Controller [VF] + 6001 T6225-CR Unified Wire Ethernet Controller + 6002 T6225-SO-CR Unified Wire Ethernet Controller + 6003 T6425-CR Unified Wire Ethernet Controller + 6004 T6425-SO-CR Unified Wire Ethernet Controller + 6005 T6225-OCP-SO Unified Wire Ethernet Controller + 6006 T62100-OCP-SO Unified Wire Ethernet Controller + 6007 T62100-LP-CR Unified Wire Ethernet Controller + 6008 T62100-SO-CR Unified Wire Ethernet Controller + 6009 T6210-BT Unified Wire Ethernet Controller + 600d T62100-CR Unified Wire Ethernet Controller + 6011 T6225-LL-CR Unified Wire Ethernet Controller + 6014 T61100-OCP-SO Unified Wire Ethernet Controller + 6015 T6201-BT Unified Wire Ethernet Controller + 6401 T6225-CR Unified Wire Ethernet Controller + 6402 T6225-SO-CR Unified Wire Ethernet Controller + 6403 T6425-CR Unified Wire Ethernet Controller + 6404 T6425-SO-CR Unified Wire Ethernet Controller + 6405 T6225-OCP-SO Unified Wire Ethernet Controller + 6406 T62100-OCP-SO Unified Wire Ethernet Controller + 6407 T62100-LP-CR Unified Wire Ethernet Controller + 6408 T62100-SO-CR Unified Wire Ethernet Controller + 6409 T6210-BT Unified Wire Ethernet Controller + 640d T62100-CR Unified Wire Ethernet Controller + 6411 T6225-LL-CR Unified Wire Ethernet Controller + 6414 T61100-OCP-SO Unified Wire Ethernet Controller + 6415 T6201-BT Unified Wire Ethernet Controller + 6501 T6225-CR Unified Wire Storage Controller + 6502 T6225-SO-CR Unified Wire Storage Controller + 6503 T6425-CR Unified Wire Storage Controller + 6504 T6425-SO-CR Unified Wire Storage Controller + 6505 T6225-OCP-SO Unified Wire Storage Controller + 6506 T62100-OCP-SO Unified Wire Storage Controller + 6507 T62100-LP-CR Unified Wire Storage Controller + 6508 T62100-SO-CR Unified Wire Storage Controller + 6509 T6210-BT Unified Wire Storage Controller + 650d T62100-CR Unified Wire Storage Controller + 6511 T6225-LL-CR Unified Wire Storage Controller + 6514 T61100-OCP-SO Unified Wire Storage Controller + 6515 T6201-BT Unified Wire Storage Controller + 6601 T6225-CR Unified Wire Storage Controller + 6602 T6225-SO-CR Unified Wire Storage Controller + 6603 T6425-CR Unified Wire Storage Controller + 6604 T6425-SO-CR Unified Wire Storage Controller + 6605 T6225-OCP-SO Unified Wire Storage Controller + 6606 T62100-OCP-SO Unified Wire Storage Controller + 6607 T62100-LP-CR Unified Wire Storage Controller + 6608 T62100-SO-CR Unified Wire Storage Controller + 6609 T6210-BT Unified Wire Storage Controller + 660d T62100-CR Unified Wire Storage Controller + 6611 T6225-LL-CR Unified Wire Storage Controller + 6614 T61100-OCP-SO Unified Wire Storage Controller + 6615 T6201-BT Unified Wire Storage Controller + 6801 T6225-CR Unified Wire Ethernet Controller [VF] + 6802 T6225-SO-CR Unified Wire Ethernet Controller [VF] + 6803 T6425-CR Unified Wire Ethernet Controller [VF] + 6804 T6425-SO-CR Unified Wire Ethernet Controller [VF] + 6805 T6225-OCP-SO Unified Wire Ethernet Controller [VF] + 6806 T62100-OCP-SO Unified Wire Ethernet Controller [VF] + 6807 T62100-LP-CR Unified Wire Ethernet Controller [VF] + 6808 T62100-SO-CR Unified Wire Ethernet Controller [VF] + 6809 T6210-BT Unified Wire Ethernet Controller [VF] + 680d T62100-CR Unified Wire Ethernet Controller [VF] + 6811 T6225-LL-CR Unified Wire Ethernet Controller [VF] + 6814 T61100-OCP-SO Unified Wire Ethernet Controller [VF] + 6815 T6201-BT Unified Wire Ethernet Controller [VF] a000 PE10K Unified Wire Ethernet Controller 1426 Storage Technology Corp. 1427 Better On-Line Solutions @@ -15948,13 +16360,16 @@ 9111 PCI-9111 9113 PCI-9113 9114 PCI-9114 +# 2-16 MB SRAM, 4x UART, I2C, misc I/O + a001 ADi-BSEC # nee Loronix Information Systems Inc. 144b Verint Systems Inc. 144c Catalina Research Inc 144d Samsung Electronics Co Ltd 1600 Apple PCIe SSD a800 XP941 PCIe SSD - a802 NVMe SSD Controller + a802 NVMe SSD Controller SM951/PM951 + a804 NVMe SSD Controller SM961/PM961 a820 NVMe SSD Controller 171X 1028 1f95 Express Flash NVMe XS1715 SSD 400GB 1028 1f96 Express Flash NVMe XS1715 SSD 800GB @@ -16067,6 +16482,7 @@ 3064 TPCI100 (2 Slot IndustryPack PCI Carrier) 30c8 TPCI200 4 Slot IndustryPack PCI Carrier 70c8 TPCE200 4 Slot IndustryPack PCIe Carrier + 9177 TXMC375 8 channel RS232/RS422/RS485 programmable serial interface 1499 EMTEC CO., Ltd 149a ANDOR Technology Ltd 149b SEIKO Instruments Inc @@ -16219,7 +16635,8 @@ 14e1 INVERTEX 14e2 INFOLIBRIA 14e3 AMTELCO -14e4 Broadcom Corporation +# Formerly Broadcom Corporation +14e4 Broadcom Limited 0576 BCM43224 802.11a/b/g/n 0800 Sentry5 Chipcommon I/O Controller 0804 Sentry5 PCI Bridge @@ -16244,7 +16661,7 @@ 1028 0236 PowerEdge R610 BCM5709 Gigabit Ethernet 1028 0237 PowerEdge T610 BCM5709 Gigabit Ethernet 103c 7055 NC382i Integrated Multi-port PCI Express Gigabit Server Adapter - 103c 7059 NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter + 103c 7059 NC382T PCIe Dual Port Multifunction Gigabit Server Adapter 10a9 8027 Quad port Gigabit Ethernet Controller 163a NetXtreme II BCM5709S Gigabit Ethernet 1028 027b PowerEdge M805 Broadcom NetXtreme II BCM5709S @@ -16315,7 +16732,7 @@ 1647 NetXtreme BCM5703 Gigabit Ethernet 0e11 0099 NC7780 1000BaseTX 0e11 009a NC7770 1000BaseTX - 10a9 8010 SGI IO9 Gigabit Ethernet (Copper) + 10a9 8010 IO9 Gigabit Ethernet (Copper) 14e4 0009 BCM5703 1000BaseTX 14e4 000a BCM5703 1000BaseSX 14e4 000b BCM5703 1000BaseTX @@ -16372,6 +16789,7 @@ 1657 NetXtreme BCM5719 Gigabit Ethernet PCIe 103c 169d Ethernet 1Gb 4-port 331FLR Adapter 103c 22be Ethernet 1Gb 4-port 331i Adapter + 103c 3383 Ethernet 1Gb 4-port 331T Adapter 1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express 1014 02c6 eServer xSeries server mainboard 1028 01e6 PowerEdge 860 @@ -16440,7 +16858,7 @@ 167b NetXtreme BCM5755 Gigabit Ethernet PCI Express 103c 280a DC5750 Microtower 167d NetXtreme BCM5751M Gigabit Ethernet PCI Express - 1014 0577 ThinkPad Z60t + 1014 0577 ThinkPad X41 / Z60t 103c 0934 nx8220 103c 0940 Compaq nw8240 Mobile Workstation 17aa 2081 ThinkPad R60e @@ -16590,6 +17008,7 @@ 16bc BCM57765/57785 SDXC/MMC Card Reader 16be BCM57765/57785 MS Card Reader 16bf BCM57765/57785 xD-Picture Card Reader + 16c1 NetXtreme-E RDMA Virtual Function 16c6 NetXtreme BCM5702A3 Gigabit Ethernet 10b7 1100 3C1000B-T 10/100/1000 PCI 14e4 000c BCM5702 1000Base-T @@ -16602,15 +17021,43 @@ 103c 1321 Core I/O LAN/SCSI Combo [AB314A] 14e4 0009 NetXtreme BCM5703 1000Base-T 14e4 000a NetXtreme BCM5703 1000Base-SX - 16c8 BCM57301 NetXtreme-C Single-port 10Gb Ethernet - 16c9 BCM57302 NetXtreme-C Dual-port 10Gb/25Gb Ethernet - 16ca BCM57304 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet + 16c8 BCM57301 NetXtreme-C 10Gb Ethernet Controller + 16c9 BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller + 16ca BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller 16cb BCM57304 NetXtreme-C Ethernet Virtual Function - 16d0 BCM57402 NetXtreme-E Dual-port 10Gb Ethernet - 16d1 BCM57404 NetXtreme-E Dual-port 10Gb/25Gb Ethernet - 16d2 BCM57406 NetXtreme-E Dual-port 10GBase-T Ethernet + 16cc BCM57417 NetXtreme-E Ethernet Partition + 16ce BCM57311 NetXtreme-C 10Gb RDMA Ethernet Controller + 16cf BCM57312 NetXtreme-C 10Gb/25Gb RDMA Ethernet Controller + 16d0 BCM57402 NetXtreme-E 10Gb Ethernet Controller + 16d1 BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller + 16d2 BCM57406 NetXtreme-E 10GBASE-T Ethernet Controller 16d3 BCM57404 NetXtreme-E Ethernet Virtual Function + 16d4 BCM57402 NetXtreme-E Ethernet Partition + 16d5 BCM57407 NetXtreme-E 10GBase-T Ethernet Controller + 16d6 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller + 16d7 BCM57414 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller + 1590 020e Ethernet 25Gb 2-port 631SFP28 Adapter + 1590 0211 Ethernet 25Gb 2-port 631FLR-SFP28 Adapter + 16d8 BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller + 1590 020c Ethernet 10Gb 2-port 535T Adapter + 1590 0212 Ethernet 10Gb 2-port 535FLR-T Adapter + 16d9 BCM57417 NetXtreme-E 10GBASE-T RDMA Ethernet Controller + 108e 4866 Dual Port 10GBase-T Ethernet Controller + 16dc BCM57414 NetXtreme-E Ethernet Virtual Function 16dd NetLink BCM5781 Gigabit Ethernet PCI Express + 16de BCM57412 NetXtreme-E Ethernet Partition + 16df BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb RDMA Ethernet Controller + 16e1 BCM57314 NetXtreme-C Ethernet Virtual Function + 16e2 BCM57417 NetXtreme-E 10Gb/25Gb RDMA Ethernet Controller + 108e 4866 Dual Port 10Gb/25Gb SFP28 Ethernet Controller + 16e3 BCM57416 NetXtreme-E 10Gb RDMA Ethernet Controller + 16e7 BCM57404 NetXtreme-E Ethernet Partition + 16e8 BCM57406 NetXtreme-E Ethernet Partition + 16e9 BCM57407 NetXtreme-E 25Gb Ethernet Controller + 16ec BCM57414 NetXtreme-E Ethernet Partition + 16ed BCM57414 NetXtreme-E RDMA Partition + 16ee BCM57416 NetXtreme-E Ethernet Partition + 16ef BCM57416 NetXtreme-E RDMA Partition 16f3 NetXtreme BCM5727 Gigabit Ethernet PCIe 16f7 NetXtreme BCM5753 Gigabit Ethernet PCI Express 16fd NetXtreme BCM5753M Gigabit Ethernet PCI Express @@ -16813,6 +17260,7 @@ 43a3 BCM4350 802.11ac Wireless Network Adapter 43a9 BCM43217 802.11b/g/n 43aa BCM43131 802.11b/g/n + 43ae BCM43162 802.11ac Wireless Network Adapter 43b1 BCM4352 802.11ac Wireless Network Adapter 43ba BCM43602 802.11ac Wireless LAN SoC 43bb BCM43602 802.11ac Wireless LAN SoC @@ -17158,6 +17606,7 @@ 0070 8010 WinTV HVR-1400 ExpressCard 0070 f038 WinTV HVR-5525 107d 6f22 WinFast PxTV1200 + 12ab d585 PE988J Hybrid ATSC/QAM PCI-E AVS Video Capture (SoftEncoder) 13c2 3013 TT-budget CT2-4500 CI 1461 c039 AVerTV Hybrid Express (A577) 153b 117e Cinergy T PCIe Dual @@ -17169,6 +17618,7 @@ 4254 980c T980C 8880 CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb 0070 2259 WinTV HVR-1250 + 0070 6a18 WinTV-quadHD 0070 c108 WinTV-HVR-4400-HD model 1278 5654 2389 GoTView X5 DVD Hybrid PCI-E 5654 2390 GoTView X5 3D HYBRID PCI-E @@ -17307,6 +17757,7 @@ 1410 CB1410 Cardbus Controller 1025 003c CL50 motherboard 1025 005a TravelMate 290 + 103c 30d5 530 Laptop 1411 CB-710/2/4 Cardbus Controller 103c 006a NX9500 1412 CB-712/4 Cardbus Controller @@ -17356,6 +17807,7 @@ 9277 5 Volt Delta Sigma Converter Card 9278 10 Volt Delta Sigma Converter Card 9287 Analog Output Card + 9290 FPGA Card 1543 SILICON Laboratories 3052 Intel 537 [Winmodem] 4c22 Si3036 MC'97 DAA @@ -17502,6 +17954,7 @@ 15aa Moreton Bay 15ab Bluesteel Networks Inc 15ac North Atlantic Instruments + 6893 3U OpenVPX Multi-function I/O Board [Model 68C3] 15ad VMware 0405 SVGA II Adapter 0710 SVGA Adapter @@ -17518,6 +17971,7 @@ 07e0 SATA AHCI controller 0801 Virtual Machine Interface 15ad 0800 Hypervisor ROM Interface + 0820 Paravirtual RDMA controller 1977 HD Audio Controller 15ae Amersham Pharmacia Biotech 15b0 Zoltrix International Ltd @@ -17526,10 +17980,17 @@ 15b3 Mellanox Technologies 0191 MT25408 [ConnectX IB Flash Recovery] 01f6 MT27500 Family [ConnectX-3 Flash Recovery] + 01f8 MT27520 Family [ConnectX-3 Pro Flash Recovery] 01ff MT27600 Family [Connect-IB Flash Recovery] 0209 MT27700 Family [ConnectX-4 Flash Recovery] 020b MT27710 Family [ConnectX-4 Lx Flash Recovery] 020d MT28800 Family [ConnectX-5 Flash Recovery] + 020f MT28908A0 Family [ConnectX-6 Flash Recovery] + 0211 MT416842 Family [BlueField SoC Flash Recovery] +# reserved for RM#105916 + 024e MT53100 [Spectrum-2, Flash recovery mode] +# Actual value to be used + 024f MT53100 [Spectrum-2, Flash recovery mode] 0262 MT27710 [ConnectX-4 Lx Programmable] EN 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN 1002 MT25400 Family [ConnectX-2 Virtual Function] @@ -17543,6 +18004,7 @@ 1005 MT27510 Family 1006 MT27511 Family 1007 MT27520 Family [ConnectX-3 Pro] + 1014 04eb 2-Port 10GbE NIC and RoCE SR PCIe3 103c 22f3 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter 103c 22f4 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter 103c 801f Ethernet 10G 2-port 546SFP+ Adapter @@ -17564,8 +18026,19 @@ 1014 MT27700 Family [ConnectX-4 Virtual Function] 1015 MT27710 Family [ConnectX-4 Lx] 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] - 1017 MT28800 Family [ConnectX-5] - 1018 MT28800 Family [ConnectX-5 Virtual Function] + 1017 MT27800 Family [ConnectX-5] + 1018 MT27800 Family [ConnectX-5 Virtual Function] + 1019 MT28800 Family [ConnectX-5 Ex] + 101a MT28800 Family [ConnectX-5 Ex Virtual Function] + 101b MT28908 Family [ConnectX-6] + 101c MT28908 Family [ConnectX-6 Virtual Function] + 101d MT28841 + 101e MT28850 + 101f MT28851 + 1020 MT28860 + 1021 MT28861 + 1974 MT28800 Family [ConnectX-5 PCIe Bridge] + 1975 MT416842 Family [BlueField SoC PCIe Bridge] 5274 MT21108 InfiniBridge 5a44 MT23108 InfiniHost 5a45 MT23108 [Infinihost HCA Flash Recovery] @@ -17588,17 +18061,33 @@ 103c 1781 NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter 103c 3349 NC543i 2-port 4xQDR IB/10Gb Adapter 6750 MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] + 1014 0461 2-Port 10 GbE RoCE SR LP PCIe2 (rev b0) 15b3 0018 HP 10 GbE PCI-e G2 Dual-Port NIC (rev C1) 675a MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] 6764 MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] 103c 3313 NC542m Dual Port Flex-10 10GbE BLc Adapter 676e MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] 6778 MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] + 7101 NPS-400 configuration and management interface + 7102 NPS-400 network interface PF + 7103 NPS-400 network interface VF + 7121 NPS-600 configuration and management interface + 7122 NPS-600 network interface PF + 7123 NPS-600 network interface VF + a2d0 MT416842 BlueField SoC Crypto enabled + a2d1 MT416842 BlueField SoC Crypto disabled + a2d3 MT416842 BlueField multicore SoC family VF # SwitchX-2, 40GbE switch c738 MT51136 + c739 MT51136 GW + c838 MT52236 + c839 MT52236 router caf1 ConnectX-4 CAPI Function # Spectrum, 100GbE Switch cb84 MT52100 + cf08 MT53236 + cf6c MT53100 [Spectrum-2, 64 x 100GbE switch] + d2f0 Switch-IB 3 HDR (200Gbps) switch 15b4 CCI/TRIAD 15b5 Cimetrics Inc 15b6 Texas Memory Systems Inc @@ -17870,6 +18359,7 @@ 7181 Proc10a_27S 7191 Proc10a_48S 71a1 Proc10a_66S + 71b1 Proc10A 165d Hsing Tech. Enterprise Co., Ltd. 165f Linux Media Labs, LLC 1020 LMLM4 MPEG-4 encoder @@ -18072,6 +18562,7 @@ 0777 4005 SR71-15 802.11an Mini PCI Adapter 1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) 1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) + 168c 2096 Compex WLM200NX / Wistron DNMA-92 002a AR928X Wireless Network Adapter (PCI-Express) 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] @@ -18115,9 +18606,12 @@ 1028 0208 Wireless 1506 WLAN Half Mini-Card 103c 1838 AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter 105b e044 Unex DHXA-225 + 144d 410e AR9485WB-EG 802.11b/g/n mini-PCIe card on a series 3 laptop 1a3b 1186 AW-NE186H - 0033 AR9580 Wireless Network Adapter + 0033 AR958x 802.11abgn Wireless Network Adapter + 168c a120 AR9582 802.11a/n WLAN Mini-PCIe Adapter 0034 AR9462 Wireless Network Adapter + 1028 0300 Wireless 1802 802.11abgn Adapter 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card 0036 QCA9565 / AR9565 Wireless Network Adapter 0037 AR9485 Wireless Network Adapter @@ -18128,6 +18622,7 @@ 1a56 1525 Killer N1525 Wireless-AC 0040 QCA9980/9990 802.11ac Wireless Network Adapter 0041 QCA6164 802.11ac Wireless Network Adapter + 0042 QCA9377 802.11ac Wireless Network Adapter 0050 QCA9887 802.11ac Wireless Network Adapter 0207 AR5210 Wireless Network Adapter [AR5000 802.11a] 1014 AR5212 802.11abg NIC @@ -18246,6 +18741,22 @@ 7005 XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled 7006 XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O 7007 XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells + 7011 AP440-1: 32-Channel Isolated Digital Input Module + 7012 AP440-2: 32-Channel Isolated Digital Input Module + 7013 AP440-3: 32-Channel Isolated Digital Input Module + 7014 AP445: 32-Channel Isolated Digital Output Module + 7016 AP470 48-Channel TTL Level Digital Input/Output Module + 7017 AP323 16-bit, 20 or 40 Channel Analog Input Module + 7018 AP408: 32-Channel Digital I/O Module + 701a AP220-16 12-Bit, 16-Channel Analog Output Module + 701b AP231-16 16-Bit, 16-Channel Analog Output Module + 7021 APA7-201 Reconfigurable Artix-7 FPGA module 48 TTL channels + 7022 APA7-202 Reconfigurable Artix-7 FPGA module 24 RS485 channels + 7023 APA7-203 Reconfigurable Artix-7 FPGA module 24 TTL & 12 RS485 channels + 7024 APA7-204 Reconfigurable Artix-7 FPGA module 24 LVDS channels + 7042 AP482 Counter Timer Module with TTL Level Input/Output + 7043 AP483 Counter Timer Module with TTL Level and RS422 Input/Output + 7044 AP484 Counter Timer Module with RS422 Input/Output 16da Advantech Co., Ltd. 0011 INES GPIB-PCI 16df PIKA Technologies Inc. @@ -18339,8 +18850,15 @@ 0095 Octeon III CN78XX Network Processor 0096 Octeon III CN70XX Network Processor 9700 Octeon III CN73XX Network Processor + 9702 CN23XX [LiquidIO II] Intelligent Adapter + 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE Intelligent adapter + 177d 0004 CN2350 [LiquidIO II] 2-port 25GbE Intelligent adapter + 9703 CN23XX [LiquidIO II] NVMe Controller + 9712 CN23XX [LiquidIO II] SRIOV Virtual Function + 177d 0003 CN2350 [LiquidIO II] 2-port 10GbE SRIOV Virtual Function + 9713 CN23XX [LiquidIO II] NVMe SRIOV Virtual Function 9800 Octeon Fusion CNF75XX Processor - a001 THUNDERX MRML Bridge + a001 ThunderX MRML(Master RML Bridge to RSL devices) a002 THUNDERX PCC Bridge 177d a102 CN88XX PCC Bridge a008 THUNDERX SMMU @@ -18378,15 +18896,24 @@ a026 THUNDERX BGX (Common Ethernet Interface) a027 THUNDERX IOBN a029 THUNDERX NCSI (Network Controller Sideband Interface) - a02a THUNDERX SGP + a02a ThunderX SGPIO (Serial GPIO controller for SATA disk lights) a02b THUNDERX SMI / MDIO Controller a02c THUNDERX DAP (Debug Access Port) a02d THUNDERX PCIERC (PCIe Root Complex) - a02e THUNDERX L2C-TAD + a02e ThunderX L2C-TAD (Level 2 cache tag and data) a02f THUNDERX L2C-CBC a030 THUNDERX L2C-MCI a031 THUNDERX MIO-FUS (Fuse Access Controller) a032 THUNDERX FUSF (Fuse Controller) + a033 THUNDERX Random Number Generator virtual function + a034 THUNDERX Network Interface Controller virtual function + a035 THUNDERX Parallel Bus + a036 ThunderX RAD (RAID acceleration engine) virtual function + a037 THUNDERX ZIP virtual function + a040 THUNDERX CPT Cryptographic Accelerator + a100 THUNDERX CN88XX 48 core SoC + a200 OCTEON TX CN81XX/CN80XX + a300 OCTEON TX CN83XX 1787 Hightech Information System Ltd. 1789 Ennyah Technologies Corp. # also used by Struck Innovative Systeme for joint developments @@ -18421,6 +18948,8 @@ 6816 TW6816 multimedia video controller # channel 8 of 8 6817 TW6816 multimedia video controller +# Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm + 6864 TW6864 multimedia video controller 1799 Belkin 6001 F5D6001 Wireless PCI Card [Realtek RTL8180] 6020 F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] @@ -18444,6 +18973,7 @@ 8083 GL880 USB 1.1 UHCI controller 8084 GL880 USB 2.0 EHCI controller 17aa Lenovo + 402b Intel 82599ES 10Gb 2-port Server Adapter X520-2 17ab Phillips Components 17af Hightech Information System Ltd. 17b3 Hawking Technologies @@ -18456,15 +18986,19 @@ 0017 StorSecure 300 GZIP Compression and AES Encryption Card 17c0 Wistron Corp. 17c2 Newisys, Inc. -17cb Airgo Networks, Inc. +# nee Airgo Networks, Inc. +17cb Qualcomm 0001 AGN100 802.11 a/b/g True MIMO Wireless Card 1385 5c00 WGM511 Pre-N 802.11g Wireless CardBus Adapter 1737 0045 WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX 0002 AGN300 802.11 a/b/g True MIMO Wireless Card 1385 6d00 WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter 1737 0054 WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 + 0400 Datacenter Technologies QDF2432 PCI Express Root Port + 0401 Datacenter Technologies QDF2400 PCI Express Root Port 17cc NetChip Technology, Inc 2280 USB 2.0 +17cd Cadence Design Systems, Inc. 17cf Z-Com, Inc. 17d3 Areca Technology Corp. 1110 ARC-1110 4-Port PCI-X to SATA RAID Controller @@ -18536,6 +19070,44 @@ 17db Cray Inc 0101 XT Series [Seastar] 3D Toroidal Router 17de KWorld Computer Co. Ltd. +17df Dini Group + 1864 Virtex4 PCI Board w/ QL5064 Bridge [DN7000K10PCI/DN8000K10PCI/DN8000K10PSX/NOTUS] + 1865 Virtex4 ASIC Emulator [DN8000K10PCIe] + 1866 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCI] + 1867 Virtex4 ASIC Emulator Cable Connection [DN8000K10PCIe] + 1868 Virtex4 ASIC Emulator [DN8000K10PCIe-8] + 1900 Virtex5 PCIe ASIC Emulator [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] + 1901 Virtex5 PCIe ASIC Emulator Large BARs [DN9000K10PCIe8T/DN9002K10PCIe8T/DN9200K10PCIe8T/DN7006K10PCIe8T/DN7406K10PCIe8T] + 1902 Virtex5 PCIe ASIC Emulator Low Power [Interceptor] + 1903 Spartan6 PCIe FPGA Accelerator Board [DNBFCS12PCIe] + 1904 Virtex6 PCIe ASIC Emulation Board [DNDUALV6_PCIe4] + 1905 Virtex6 PCIe ASIC Emulation Board [DNV6F6PCIe] + 1906 Virtex6 PCIe ASIC Emulation Board [DN2076K10] + 1907 Virtex6 PCIe ASIC Emulation Board [DNV6F2PCIe] + 1908 Virtex6 PCIe ASIC Emulation Board Large BARs[DNV6F2PCIe] + 1909 Kintex7 PCIe FPGA Accelerator Board [DNK7F5PCIe] + 190a Virtex7 PCIe ASIC Emulation Board [DNV7F1A] + 190b Stratix5 PCIe ASIC Emulation Board [DNS5GXF2] + 190c Virtex7 PCIe ASIC Emulation Board [DNV7F2A] + 190d Virtex7 PCIe ASIC Emulation Board [DNV7F4A] + 190e Virtex7 PCIe ASIC Emulation Board [DNV7F2B] + 190f KintexUS PCIe MainRef Design [DNPCIE_40G_KU_LL] + 1910 VirtexUS ASIC Emulation Board [DNVUF4A] + 1911 VirtexUS PCIe ASIC Emulation Board [DNVU_F2PCIe] + 1912 KintexUS PCIe MainRef Design [DNPCIe_40G_KU_LL_QSFP] + 1913 VirtexUS ASIC Emulation Board [DNVUF1A] + 1914 VirtexUS ASIC Emulation Board [DNVUF2A] + 1915 Arria10 PCIe MainRef Design [DNPCIe_80G_A10_LL] + 1916 VirtexUS PCIe Accelerator Board [DNVUF2_HPC_PCIe] + 1a00 Virtex6 PCIe DMA Netlist Design + 1a01 Virtex6 PCIe Darklite Design [DNPCIe_HXT_10G_LL] + 1a02 Virtex7 PCIe DMA Netlist Design + 1a03 Kintex7 PCIe Darklite Design [DNPCIe_K7_10G_LL] + 1a05 Stratix5 PCIe Darklite Design [DNS5GX_F2] + 1a06 VirtexUS PCIe DMA Netlist Design + 1a07 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL] + 1a08 KintexUS PCIe Darklite Design [DNPCIe_40G_KU_LL_QSFP] + 1a09 Arria10 PCIe Darklite Design [DNPCIe_80G_A10_LL] 17e4 Sectra AB 0001 KK671 Cardbus encryption board 0002 KK672 Cardbus encryption board @@ -18549,6 +19121,7 @@ 17f2 Albatron Corp. 17f3 RDC Semiconductor, Inc. 1010 R1010 IDE Controller + 2012 M2012/R3308 VGA-compatible graphics adapter 6020 R6020 North Bridge 6021 R6021 Host Bridge 6030 R6030 ISA Bridge @@ -18608,6 +19181,7 @@ 13d1 abe3 miniPCI Pluscom 802.11 a/b/g 1458 e933 GN-WI01GS 1458 e934 GN-WP01GS + 1462 b833 MP54G5 (MS-6833B) 1737 0055 WMP54G v4.1 1799 700e F5D7000 v6000 Wireless G Desktop Card 1799 701e F5D7010 v6000 Wireless G Notebook Card @@ -18751,7 +19325,7 @@ 18bc GeCube Technologies, Inc. 18c3 Micronas Semiconductor Holding AG 0720 nGene PCI-Express Multimedia Controller - 07ca 032e Hybrid M779 PCI-E + 1461 032e Hybrid M779 PCI-E # Nee Octigabay System 18c8 Cray Inc 18c9 ARVOO Engineering BV @@ -18765,6 +19339,7 @@ 18d2 Sitecom Europe BV (Wrong ID) # Sitecom HFC-S based ISDN controller card DC-105v2 3069 DC-105v2 ISDN controller +18d4 Celestica 18d8 Dialogue Technology Corp. 18dd Artimi Inc 4c6f Artimi RTMI-100 UWB adapter @@ -18847,7 +19422,10 @@ 0135 NT20E2-PTP Network Adapter 2x10Gb 0145 NT40E3-4-PTP Network Adapter 4x10Gb 0155 NT100E3-1-PTP Network Adapter 1x100Gb + 0165 NT80E3-2-PTP Network Adapter 2x40Gb 0175 NT20E3-2-PTP Network Adapter 2x10Gb + 0185 NT40A01-4x1 Network Adapter 4x1Gb + 01a5 NT200A01 Network Adapter 2x100Gb 18f6 NextIO 1000 [Nexsis] Switch Virtual P2P PCIe Bridge 1001 [Texsis] Switch Virtual P2P PCIe Bridge @@ -18997,17 +19575,25 @@ 1924 800c SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter 1924 800d SFN7x02F-R3 Flareon 7000 Series 10G Adapter 1924 8010 SFA7942Q-R1 QSFP+ AOE Adapter + 1924 8015 SFA7942Q-A5-0-R1 QSFP+ AOE Adapter 0923 SFC9140 1924 800b SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter 1924 800e SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter 1924 800f SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter 0a03 SFC9220 + 1924 8011 SFN 8022-R1 Solarflare Flareon 8000 Series 10G Adapter 1924 8012 SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter + 1924 8013 SFN8042-R1 Solarflare Flareon 8000 Series 10/40G Adapter 1924 8014 SFN8542-R1 Flareon Ultra 8000 Series 10/40G Adapter + 1924 8016 SFN8022-R2 Flareon 8000 Series 10G Adapter + 1924 8017 SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter + 1924 8018 SFN8042-R2 Flareon 8000 Series 10/40G Adapter + 1924 8019 SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter 1803 SFC9020 Virtual Function [Solarstorm] 1813 SFL9021 Virtual Function [Solarstorm] 1903 SFC9120 Virtual Function 1923 SFC9140 Virtual Function + 1a03 SFC9220 Virtual Function 6703 SFC4000 rev A iSCSI/Onload [Solarstorm] 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] @@ -19028,15 +19614,19 @@ 000c Qualcomm MSM6275 UMTS chip 1932 DiBcom 193c MAXIM Integrated Products -193f Comtech AHA Corp. +193f AHA Products Group 0001 AHA36x-PCIX 0360 AHA360-PCIe 0363 AHA363-PCIe 0364 AHA364-PCIe 0367 AHA367-PCIe 0370 AHA370-PCIe + 0604 AHA604 + 0605 AHA605 3641 AHA3641 3642 AHA3642 + 6101 AHA6101 + 6102 AHA6102 1942 ClearSpeed Technology plc e511 Advance X620 accelerator card e521 Advance e620 accelerator card @@ -19120,6 +19710,7 @@ 0401 P4080 0408 P4040E 0409 P4040 + 041f P3041 0440 T4240 with security 0441 T4240 without security 0446 T4160 with security @@ -19269,6 +19860,7 @@ 0714 OneConnect 10Gb FCoE Initiator (be3) 103c 3315 NC553i 10Gb 2-port FlexFabric Converged Network Adapter 103c 337b NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter + 0800 ServerView iRMC HTI 19a8 DAQDATA GmbH 19ac Kasten Chase Applied Research 0001 ACA2400 Crypto Accelerator @@ -19413,6 +20005,9 @@ 9100 TPRO-PCI-66U Timecode Reader/Generator 1ade Spin Master Ltd. 1501 Swipetech barcode scanner + 3038 PCIe Video Bridge + 13c2 3016 TT-budget S2-4200 Twin + 4254 0552 S952 v3 1ae0 Google, Inc. 1ae7 First Wise Media GmbH 0520 HFC-S PCI A [X-TENSIONS XC-520] @@ -19459,8 +20054,24 @@ 1004 Virtio SCSI 1005 Virtio RNG 1009 Virtio filesystem - 1010 Virtio GPU - 1012 Virtio input device +# virtio 1.0 + 1041 Virtio network device +# virtio 1.0 + 1042 Virtio block device +# virtio 1.0 + 1043 Virtio console +# virtio 1.0 + 1044 Virtio RNG +# virtio 1.0 + 1045 Virtio memory balloon +# virtio 1.0 + 1048 Virtio SCSI +# virtio 1.0 + 1049 Virtio filesystem +# virtio 1.0 + 1050 Virtio GPU +# virtio 1.0 + 1052 Virtio input 1110 Inter-VM shared memory 1af4 1100 QEMU Virtual Machine 1af5 Netezza Corp. @@ -19495,6 +20106,9 @@ 1af4 1100 QEMU Virtual Machine 0005 QEMU PCI Test Device 1af4 1100 QEMU Virtual Machine + 0006 PCI Rocker Ethernet switch device + 0007 PCI SD Card Host Controller Interface + 000a PCI-PCI bridge (multiseat) 0100 QXL paravirtual graphic card 1af4 1100 QEMU Virtual Machine 1b37 Signal Processing Devices Sweden AB @@ -19544,12 +20158,14 @@ 91a4 88SE912x IDE Controller 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller 9230 88SE9230 PCIe SATA 6Gb/s Controller + 1d49 0300 ThinkSystem M.2 with Mirroring Enablement Kit 9235 88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller 9445 88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller 9480 88SE9480 SAS/SATA 6Gb/s RAID controller 9485 88SE9485 SAS/SATA 6Gb/s controller 1b55 NetUP Inc. 18f6 Dual DVB Universal CI card + 18f7 Dual DVB Universal CI card rev 1.4 2a2c Dual DVB-S2-CI card e2e4 Dual DVB-T/C-CI RF card # 2xHDMI and 2xHD-SDI inputs @@ -19572,6 +20188,7 @@ d230 D230 Dual-port E1/T1 card (2nd generation) d410 D410/430 Quad-port E1/T1 card d430 D410/430 Quad-port E1/T1 card +1b79 Absolute Analysis 1b85 OCZ Technology Group, Inc. 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) 8788 RevoDrive Hybrid @@ -19600,6 +20217,12 @@ 1bb1 6522 Nytro XP6500-8A2048 # 4TB Nytro PCIe controller 1bb1 6523 Nytro XP6500-8A4096 + 0100 Nytro Flash Storage + 1bb1 0101 Nytro XF1440 + 1bb1 0103 Nytro 5000 + 1bb1 0121 Nytro XM1440 + 1bb1 0123 Nytro 5000 + 1bb1 01a1 Nytro XP7102 1bb3 Bluecherry 4304 BC-04120A MPEG4 4 port video encoder / decoder 4309 BC-08240A MPEG4 4 port video encoder / decoder @@ -19625,6 +20248,8 @@ 1bd4 Inspur Electronic Information Industry Co., Ltd. 1bee IXXAT Automation GmbH 0003 CAN-IB200/PCIe +1bef Lantiq + 0011 MIPS SoC PCI Express Port 1bf4 VTI Instruments Corporation 0001 SentinelEX 1bfd EeeTOP @@ -19632,6 +20257,13 @@ 4254 10G-PCIE3-8D-2S 4255 10G-PCIE3-8D-Q 4256 10G-PCIE3-8D-2S + 4258 10G-PCIE3-8E-2S Network Adapter + 4260 10G-PCIE3-8E-4S Network Adapter + 4261 10G-PCIE3-8E-4S Network Adapter + 4262 10G-PCIE3-8E-4S Network Adapter + 4263 10G-PCIE3-8E-4S Network Adapter + 4264 10G-PCIE3-8E-2S Network Adapter + 4265 10G-PCIE3-8E-2S Network Adapter 1c1c Symphony 0001 82C101 1c28 Lite-On IT Corp. / Plextor @@ -19647,7 +20279,9 @@ 00a5 FBC2XLG Capture 2x40Gb 00a6 FBC1CG Capture 1x100Gb 00a9 FBC2XGHH Capture 2x10Gb + 00ad FBC2CGG3HL Capture 2x200Gb 00af Capture slave device + a001 FBC2CGG3 Capture 2x200Gb # Used on V120 VME Crate Controller 1c32 Highland Technology, Inc. 1c33 Daktronics, Inc @@ -19660,8 +20294,12 @@ # A Western Digital Subsidiary 1c58 HGST, Inc. 0003 Ultrastar SN100 Series NVMe SSD - 1014 04f5 PCIe3 1.6TB NVMe Adapter - 1014 04f6 PCIe3 3.2TB NVMe Adapter + 1014 04f5 PCIe3 1.6TB NVMe Flash Adapter + 1014 04f6 PCIe3 3.2TB NVMe Flash Adapter +# http://www.nicevt.ru/ (in Russian) +1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") +# http://www.radiotec.ru/catalog.php?cat=jr8&art=14109 + 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter 1c7e TTTech Computertechnik AG 0200 zFAS Debug Port 1c7f Elektrobit Austria GmbH @@ -19669,18 +20307,28 @@ 1c8a TSF5 Corporation 0001 Hunter PCI Express 1cb1 Collion UG & Co.KG +1cb8 Dawning Information Industry Co., Ltd. 1cc5 Embedded Intelligence, Inc. 0100 CAN-PCIe-02 +1cc7 Radian Memory Systems Inc. + 0200 RMS-200 + 0250 RMS-250 1cd2 SesKion GmbH 0301 Simulyzer-RT CompactPCI Serial DIO-1 card 0302 Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card 0303 Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card 0304 Simulyzer-RT CompactPCI Serial PWR-ANA-1 card + 0305 Simulyzer-RT CompactPCI Serial CAN-1 card +1cd7 Nanjing Magewell Electronics Co., Ltd. + 0010 Pro Capture Endpoint 1cdd secunet Security Networks AG 1ce4 Exablaze 0001 ExaNIC X4 0002 ExaNIC X2 0003 ExaNIC X10 + 0004 ExaNIC X10-GM + 0005 ExaNIC X40 + 0006 ExaNIC X10-HPT 1cf7 Subspace Dynamics 1d00 Pure Storage 1d1d CNEX Labs @@ -19690,6 +20338,8 @@ 1d21 Allo 1d26 Kalray Inc. 0040 Turbocard2 Accelerator + 0080 Open Network Interface Card 80G + 00c0 Turbocard3 Accelerator e004 AB01/EMB01 Development Board 1d40 Techman Electronics (Changshu) Co., Ltd. 1d44 DPT @@ -19697,6 +20347,7 @@ 1d49 Lenovo 1d5c Fantasia Trading LLC 1d61 Technobox, Inc. +1d62 Nebbiolo Technologies 1d65 Imagine Communications Corp. 04de Taurus/McKinley 1d6c Atomic Rules LLC @@ -19707,7 +20358,21 @@ 1005 ZC706-Z045 1006 KCU105-KU040 1007 XUSP3S-VU095 [Jasper] + 1008 XUSPL4-VU065 [Mustang UltraScale] + 1009 XUSPL4-VU3P [Mustang UltraScale+] + 100a A10PL4-A10GX115 + 100b K35-2SFP + 100c K35-4SFP + 100d AR-ARKA-FX0 [Arkville 32B DPDK Data Mover] + 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] + 100e AR-ARKA-FX1 [Arkville 64B DPDK Data Mover] + 1d6c 2001 DPDK-Aware Virtual Function [Arkville VF] 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] +1d78 DERA +1d7c Aerotech, Inc. +1d8f Enyx +1d95 Graphcore Ltd +1da1 Teko Telecom S.r.l. 1de1 Tekram Technology Co.,Ltd. 0391 TRM-S1040 [DC-315 / DC-395 series] 2020 DC-390 @@ -19748,13 +20413,19 @@ 4010 TN4010 Clean SROM 4020 TN9030 10GbE CX4 Ethernet Adapter 4022 TN9310 10GbE SFP+ Ethernet Adapter + 1043 8709 XG-C100F 10GbE SFP+ Ethernet Adapter 1186 4d00 DXE-810S 10GbE SFP+ Ethernet Adapter + 1432 8103 EN-8102PF 10GbE SPF+ Ethernet Adapter 1fc9 3015 Ethernet Adapter 4024 TN9210 10GBase-T Ethernet Adapter 4025 TN9510 10GBase-T/NBASE-T Ethernet Adapter + 105a 7203 SANLink3 NBase-T1 1186 2900 DXE-810T 10GBase-T Ethernet Adapter + 1432 8102 EN-8102P 10GbE Ethernet Adapter 1fc9 3015 Ethernet Adapter 4026 TN9610 10GbE SFP+ Ethernet Adapter + 4027 TN9710P 10GBase-T/NBASE-T Ethernet Adapter + 4527 TN9710Q 5GBase-T/NBASE-T Ethernet Adapter 1fcc StreamLabs f416 MS416 fb01 MH4LM @@ -19785,6 +20456,7 @@ 2bd8 ROPEX Industrie-Elektronik GmbH 3000 Hansol Electronics Inc. 3112 Satelco Ingenieria S.A. +3130 AUDIOTRAK 3142 Post Impression Systems. 31ab Zonet 1faa ZEW1602 802.11b/g Wireless Adapter @@ -19804,6 +20476,7 @@ 4c53 4000 PMCCARR1 carrier board 0022 HiNT HB4 PCI-PCI Bridge (PCI6150) 0026 HB2 PCI-PCI Bridge + 1014 AudioTrak Maya 1018 Audiotrak INCA88 1019 Miditrak 2120 101a E.Band [AudioTrak Inca88] @@ -20009,64 +20682,136 @@ adc1 ADC200ME High speed ADC de01 DL200ME High resolution delay line PCI based card de02 DL200ME Middle resolution delay line PCI based card +# Can't find any information on this company +4651 TXIC 4680 Umax Computer Corp 4843 Hercules Computer Technology Inc 4916 RedCreek Communications Inc 1960 RedCreek PCI adapter 4943 Growth Networks 494f ACCES I/O Products, Inc. - 0520 PCI-IDO-48 - 0920 PCI-IDI-48 - 0c50 PCI-DIO-24H - 0c51 PCI-DIO-24D - 0c60 PCI-DIO-48(H) - 0c68 PCI-DIO-72 - 0c70 PCI-DIO-96 - 0c78 PCI-DIO-120 - 0dc8 PCI-IDIO-16 - 0e50 PCI-DIO-24S - 0e51 PCI-DIO-24H(C) - 0e52 PCI-DIO-24D(C) - 0e60 PCI-DIO-48S(H) - 0e61 P104-DIO-24S - 0f00 PCI-IIRO-8 - 0f01 LPCI-IIRO-8 - 0f08 PCI-IIRO-16 - 1050 PCI-422/485-2 - 1058 PCI-COM422/4 - 1059 PCI-COM485/4 - 1068 PCI-COM422/8 - 1069 PCI-COM485/8 - 1088 PCI-COM232/1 - 1090 PCI-COM232/2 - 10a8 P104-COM232-8 - 10c9 PCI-COM-1S - 10d0 PCI-COM2S - 10e8 PCI-COM-8SM - 1148 PCI-ICM-1S - 1150 PCI-ICM-2S - 1158 PCI-ICM422/4 - 1159 PCI-ICM485/4 - 1250 PCI-WDG-2S + 0508 PCI-IDO-16A FET Output Card + 0518 PCI-IDO-32A FET Output Card + 0520 PCI-IDO-48 FET Output Card + 0521 PCI-IDO-48A FET Output Card + 0703 PCIe-RO-4 Electromechanical Relay Output Card + 07d0 PCIe-IDO-24 FET Output Card + 0920 PCI-IDI-48 Isolated Digital Input Card + 0bd0 PCIe-IDI-24 Isolated Digital Input Card + 0c50 PCI-DIO-24H 1x 8255 Digital Input / Output Card + 0c51 PCI-DIO-24D 1x 8255 Digital Input / Output Card + 0c52 PCIe-DIO-24 1x 8255 Digital Input / Output Card + 0c53 PCIe-DIO-24H 8255 Digital Input / Output Card + 0c57 mPCIe-DIO-24 8255 Digital Input / Output Card + 0c60 PCI-DIO-48H 8255 Digital Input / Output Card + 0c61 PCIe-DIO-48 8255 Digital Input / Output Card + 0c62 P104-DIO-48 8255 Digital Input / Output Card + 0c68 PCI-DIO-72 8255 Digital Input / Output Card + 0c69 P104-DIO-96 8255 Digital Input / Output Card + 0c70 PCI-DIO-96 8255 Digital Input / Output Card + 0c78 PCI-DIO-120 8255 Digital Input / Output Card + 0dc8 PCI-IDIO-16 Isolated Digital Input / FET Output Card + 0e50 PCI-DIO-24S 8255 Digital Input / Output Card + 0e51 PCI-DIO-24H(C) 8255 Digital Input / Output Card + 0e52 PCI-DIO-24D(C) 8255 Digital Input / Output Card + 0e53 PCIe-DIO-24S 8255 Digital Input / Output Card + 0e54 PCIe-DIO-24HS 8255 Digital Input / Output Card + 0e55 PCIe-DIO-24DC 8255 Digital Input / Output Card + 0e56 PCIe-DIO-24DCS 8255 Digital Input / Output Card + 0e57 mPCIe-DIO-24S 8255 Digital Input / Output Card + 0e60 PCI-DIO-48S 2x 8255 Digital Input / Output Card + 0e61 PCIe-DIO-48S 2x 8255 Digital Input / Output Card + 0e62 P104-DIO-48S 2x 8255 Digital Input / Output Card + 0f00 PCI-IIRO-8 Isolated Digital / Relay Output Card + 0f01 LPCI-IIRO-8 Isolated Digital / Relay Output Card + 0f02 PCIe-IIRO-8 Isolated Digital / Relay Output Card + 0f08 PCI-IIRO-16 Isolated Digital / Relay Output Card + 0f09 PCIe-IIRO-16 Isolated Digital / Relay Output Card + 0fc0 PCIe-IDIO-12 Isolated Digital Input / FET Output Card + 0fc1 PCIe-IDI-12 Isolated Digital Input Card + 0fc2 PCIe-IDO-12 FET Output Card + 0fd0 PCIe-IDIO-24 Isolated Digital Input / FET Output Card + 1050 PCI-422/485-2 2x RS422/RS484 Card + 1051 PCIe-COM-2SRJ 2x RS422/RS484 Card w/RJ45 Connectors + 1052 104I-COM-2S 2x RS422/RS484 PCI/104 Board + 1053 mPCIe-COM-2S 2x RS422/RS484 PCI Express Mini Card + 1058 PCI-COM422/4 4x RS422 Card + 1059 PCI-COM485/4 4x RS485 Card + 105a PCIe-COM422-4 4x RS422 Card + 105b PCIe-COM485-4 4x RS485 Card + 105c PCIe-COM-4SRJ 4x RS422/RS485 Card w/RJ45 Connectors + 105d 104I-COM-4S 4x RS422/RS484 PCI/104 Board + 105e mPCIe-COM-4S 4x RS422/RS484 PCI Express Mini Card + 1068 PCI-COM422/8 8x RS422 Card + 1069 PCI-COM485/8 8x RS485 Card + 106a PCIe-COM422-8 8x RS422 Card + 106b PCIe-COM485-8 8x RS485 Card + 106c 104I-COM-8S 8x RS422/RS485 PCI/104 Board + 1088 PCI-COM232/1 1x RS232 Card + 1090 PCI-COM232/2 2x RS232 Card + 1091 PCIe-COM232-2RJ 2x RS232 Card w/RJ45 Connectors + 1093 mPCIe-COM232-2 2x RS232 PCI Express Mini Card + 1098 PCIe-COM232-4 4x RS232 Card + 1099 PCIe-COM232-4RJ 4x RS232 Card w/RJ45 Connectors + 109b mPCIe-COM232-4 4x RS232 PCI Express Mini Card + 10a8 P104-COM232-8 8x RS232 PC-104+ Board + 10a9 PCIe-COM232-8 8x RS232 Card + 10c9 PCI-COM-1S 1x RS422/RS485 Card + 10d0 PCI-COM2S 2x RS422/RS485 Card + 10d1 PCIe-COM-2SMRJ 2x RS232/RS422/RS485 Card w/RJ45 Connectors + 10d2 104I-COM-2SM 2x RS232/RS422/RS485 PCI/104 Board + 10d3 mPCIe-COM-2SM 2x RS232/RS422/RS485 PCI Express Mini Card + 10d8 PCI-COM-4SM 4x RS232/RS422/RS485 Card + 10d9 PCIe-COM-4SM 4x RS232/RS422/RS485 Card + 10da PCIe-COM-4SMRJ 4x RS232/RS422/RS485 Card w/RJ45 Connectors + 10db 104I-COM-4SM 4x RS232/RS422/RS485 PCI/104 Board + 10dc mPCIe-COM-4SM 4x RS232/RS422/RS485 PCI Express Mini Card + 10e8 PCI-COM-8SM 8x RS232/RS422/RS485 Card + 10e9 PCIe-COM-8SM 8x RS232/RS422/RS485 Card + 10ea 104I-COM-8SM 8x RS232/RS422/RS485 PCI-104 Board + 1108 mPCIe-ICM485-1 1x Isolated RS485 PCI Express Mini Card + 1110 mPCIe-ICM422-2 2x Isolated RS422 PCI Express Mini Card + 1111 mPCIe-ICM485-2 2x Isolated RS485 PCI Express Mini Card + 1118 mPCIe-ICM422-4 4x Isolated RS422 PCI Express Mini Card + 1119 mPCIe-ICM485-4 4x Isolated RS485 PCI Express Mini Card + 1148 PCI-ICM-1S 1x Isolated RS422/RS485 Card + 1150 PCI-ICM-2S 2x Isolated RS422/RS485 Card + 1152 PCIe-ICM-2S 2x Isolated RS422/RS485 Card + 1158 PCI-ICM422/4 4x Isolated RS422 Card + 1159 PCI-ICM485/4 4x Isolated RS485 Card + 115a PCIe-ICM-4S 4x Isolated RS422/RS485 Card + 1190 PCIe-ICM232-2 2x Isolated RS232 Card + 1191 mPCIe-ICM232-2 2x Isolated RS232 PCI Express Mini Card + 1198 PCIe-ICM232-4 4x Isolated RS232 Card + 1199 mPCIe-ICM232-4 4x Isolated RS422 PCI Express Mini Card + 11d0 PCIe-ICM-2SM 2x Isolated RS232/RS422/RS485 Card + 11d8 PCIe-ICM-4SM 4x Isolated RS232/RS422/RS485 Card + 1250 PCI-WDG-2S Watchdog and 2x Serial Card 12d0 PCI-WDG-IMPAC - 22c0 PCI-WDG-CSM - 2c50 PCI-DIO-96CT - 2c58 PCI-DIO-96C3 + 2230 PCI-QUAD-8 8x Quadrature Input Card + 2231 PCI-QUAD-4 4x Quadrature Input Card + 22c0 PCI-WDG-CSM Watchdog Card + 25c0 P104-WDG-E Watchdog PC/104+ Board + 2c50 PCI-DIO-96CT 96x Digital Input / Output Card + 2c58 PCI-DIO-96C3 96x Digital Input / Output Card w/3x 8254 Counter Card + 2ee0 PCIe-DIO24S-CTR12 24x Digital Input / Output Card w/4x 8254 Counter Card + 2fc0 P104-WDG-CSM Watchdog PC/104+ Board + 2fc1 P104-WDG-CSMA Advanced Watchdog PC/104+ Board 5ed0 PCI-DAC - 6c90 PCI-DA12-2 - 6c98 PCI-DA12-4 - 6ca0 PCI-DA12-6 - 6ca8 PCI-DA12-8 + 6c90 PCI-DA12-2 2x 12-bit Analog Output Card + 6c98 PCI-DA12-4 4x 12-bit Analog Output Card + 6ca0 PCI-DA12-6 6x 12-bit Analog Output Card + 6ca8 PCI-DA12-8 8x 12-bit Analog Output Card 6ca9 PCI-DA12-8V - 6cb0 PCI-DA12-16 + 6cb0 PCI-DA12-16 16x 12-bit Analog Output Card 6cb1 PCI-DA12-16V 8ef0 P104-FAS16-16 - aca8 PCI-AI12-16 - aca9 PCI-AI12-16A - eca8 PCI-AIO12-16 - eca9 PCI-A12-16 - ecaa PCI-A12-16A - ece8 PCI-A16-16 + aca8 PCI-AI12-16 12-bit 100kHz Analog Input Card + aca9 PCI-AI12-16A 12-bit 100kHz Analog Input w/FIFO Card + eca8 PCI-AIO12-16 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card + ecaa PCI-A12-16A 12-bit 100kHz Analog Input w/2x Analog Output and FIFO Card + ece8 LPCI-A16-16A 16-bit 500kHz Analog Input low-profile Card + ece9 LPCI-AIO16A 16-bit 500kHz Analog Input low-profile Card 4978 Axil Computer Inc 4a14 NetVin 5000 NV5000SC @@ -20287,6 +21032,7 @@ 0003 TURBOstor HFP-832 [HiPPI NIC] 5646 Vector Fabrics BV 5654 VoiceTronix Pty Ltd +5678 Dawicontrol Computersysteme GmbH 5700 Netpower 584d AuzenTech Co., Ltd. 5851 Exacq Technologies @@ -20433,6 +21179,7 @@ 0101 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 1028 04b2 Vostro 3350 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] + 144d c652 NP300E5C series laptop 0102 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04aa XPS 8300 1043 0102 P8H67 Series Motherboard @@ -20441,6 +21188,7 @@ 1028 04b2 Vostro 3350 1028 04da Vostro 3750 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] + 144d c652 NP300E5C series laptop 0105 Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port 106b 00dc MacBookPro8,2 [Core i7, 15", 2011] 0106 2nd Generation Core Processor Family Integrated Graphics Controller @@ -20454,6 +21202,7 @@ 0112 2nd Generation Core Processor Family Integrated Graphics Controller 0116 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04da Vostro 3750 + 144d c652 integrated HD 3000 graphics controller on NP300E5C series laptop 0122 2nd Generation Core Processor Family Integrated Graphics Controller 0126 2nd Generation Core Processor Family Integrated Graphics Controller 1028 04cc Vostro 3350 @@ -20606,6 +21355,27 @@ 0813 Moorestown SC DMA 0814 Moorestown LPE DMA 0815 Moorestown SSP0 + 0817 Medfield Serial IO I2C Controller #3 + 0818 Medfield Serial IO I2C Controller #4 + 0819 Medfield Serial IO I2C Controller #5 + 081a Medfield GPIO Controller [Core] + 081b Medfield Serial IO HSUART Controller #1 + 081c Medfield Serial IO HSUART Controller #2 + 081d Medfield Serial IO HSUART Controller #3 + 081e Medfield Serial IO HSUART DMA Controller + 081f Medfield GPIO Controller [AON] + 0820 Medfield SD Host Controller + 0821 Medfield SDIO Controller #1 + 0822 Medfield SDIO Controller #2 + 0823 Medfield eMMC Controller #0 + 0824 Medfield eMMC Controller #1 + 0827 Medfield Serial IO DMA Controller + 0828 Medfield Power Management Unit + 0829 Medfield USB Device Controller (OTG) + 082a Medfield SCU IPC + 082c Medfield Serial IO I2C Controller #0 + 082d Medfield Serial IO I2C Controller #1 + 082e Medfield Serial IO I2C Controller #2 0885 Centrino Wireless-N + WiMAX 6150 8086 1305 Centrino Wireless-N + WiMAX 6150 BGN 8086 1307 Centrino Wireless-N + WiMAX 6150 BG @@ -21431,6 +22201,7 @@ 1066 82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller 1067 82562 EM/EX/GX - PRO/100 VM Ethernet Controller 1068 82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile + 103c 30d5 530 Laptop 1069 82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile 106a 82562G - PRO/100 VE (LOM) Ethernet Controller 106b 82562G - PRO/100 VE Ethernet Controller Mobile @@ -21675,15 +22446,23 @@ 103c 2147 Ethernet 10Gb 1-port 561i Adapter 103c 2159 Ethernet 10Gb 2-port 562i Adapter 108e 7b11 Ethernet Server Adapter X520-2 + 1170 004c 82599 DP 10G Mezzanine Adapter 1734 11a9 10 Gigabit Dual Port Network Connection 17aa 1071 ThinkServer X520-2 AnyFabric 17aa 4007 82599ES 10-Gigabit SFI/SFP+ Network Connection + 17aa 402b 82599ES 10Gb 2-port Server Adapter X520-DA2 + 17aa 402f FPGA Card XC7VX690T-3FFG1157E + 18d4 0c09 82599ES 10Gb 2-port SFP+ OCP Mezz Card MOP81-I-10GS2 + 1bd4 001b 10G SFP+ DP ER102Fi4 Rack Adapter + 1bd4 002f 10G SFP+ DP EP102Fi4A Adapter + 1bd4 0032 10G SFP+ DP EP102Fi4 Adapter 8086 0002 Ethernet Server Adapter X520-DA2 8086 0003 Ethernet Server Adapter X520-2 8086 0006 Ethernet Server Adapter X520-1 8086 0008 Ethernet OCP Server Adapter X520-2 8086 000a Ethernet Server Adapter X520-1 8086 000c Ethernet Server Adapter X520-2 + 8086 10a6 82599ES 10Gb 2 port Server Adapter X520-DA2 8086 7a11 Ethernet Server Adapter X520-2 8086 7a12 Ethernet Server Adapter X520-2 10fc 82599 10 Gigabit Dual Port Network Connection @@ -21706,6 +22485,18 @@ 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller 8086 1161 82806AA PCI64 Hub APIC 1162 Xscale 80200 Big Endian Companion Chip + 1190 Merrifield SD/SDIO/eMMC Controller + 1191 Merrifield Serial IO HSUART Controller + 1192 Merrifield Serial IO HSUART DMA Controller + 1194 Merrifield Serial IO SPI Controller + 1195 Merrifield Serial IO I2C Controller + 1196 Merrifield Serial IO I2C Controller + 1199 Merrifield GPIO Controller + 119e Merrifield USB Device Controller (OTG) + 11a0 Merrifield SCU IPC + 11a1 Merrifield Power Management Unit + 11a2 Merrifield Serial IO DMA Controller + 11a5 Merrifield Serial IO PWM Controller 1200 IXP1200 Network Processor 172a 0000 AEP SSL Accelerator 1209 8255xER/82551IT Fast Ethernet Controller @@ -21932,6 +22723,7 @@ 150f 82580 Gigabit Fiber Network Connection 1510 82580 Gigabit Backplane Connection 1511 82580 Gigabit SFP Connection + 1513 CV82524 Thunderbolt Controller [Light Ridge 4C 2010] 1514 Ethernet X520 10GbE Dual Port KX4 Mezz 8086 000b Ethernet X520 10GbE Dual Port KX4 Mezz 1515 X540 Ethernet Controller Virtual Function @@ -21941,13 +22733,22 @@ 1517 82599ES 10 Gigabit Network Connection 1137 006a UCS CNA M61KR-I Intel Converged Network Adapter 1518 82576NS SerDes Gigabit Network Connection + 151a DSL2310 Thunderbolt Controller [Eagle Ridge 2C 2011] + 151b CVL2510 Thunderbolt Controller [Light Peak 2C 2010] 151c 82599 10 Gigabit TN Network Connection 108e 7b13 Dual 10GBASE-T LP 1520 I350 Ethernet Controller Virtual Function 1521 I350 Gigabit Network Connection 1028 0602 Gigabit 2P I350-t LOM + 1028 0693 Gigabit 2P I350-t LOM + 1028 06e2 Gigabit 2P I350-t LOM + 1028 0757 Gigabit I350-t LOM + 1028 075a Gigabit I350-t LOM 1028 1f60 Gigabit 4P I350-t rNDC 1028 1f62 Gigabit 4P X540/I350 rNDC + 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC + 1028 1fa9 Ethernet 10G 4P X550 rNDC + 1028 1faa Gigabit 4P X550/I350 rNDC 1028 ff9a Gigabit 4P X710/I350 rNDC 103c 17d1 Ethernet 1Gb 4-port 366FLR Adapter 103c 2003 Ethernet 1Gb 2-port 367i Adapter @@ -21963,8 +22764,12 @@ 1093 76b1 PCIe-8237R-S Ethernet Adapter 1093 775b PCIe-8237 Ethernet Adapter 10a9 802a UV2-BaseIO dual-port GbE + 15d9 0652 Dual Port i350 GbE MicroLP [AOC-CGP-i2] 17aa 1074 ThinkServer I350-T4 AnyFabric 17aa 4005 I350 Gigabit Network Connection + 18d4 0c07 I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2 + 1bd4 001d 1G base-T QP EP014Ti1 Adapter + 1bd4 0035 1G base-T QP EP014Ti1 Adapter 8086 0001 Ethernet Server Adapter I350-T4 8086 0002 Ethernet Server Adapter I350-T2 8086 00a1 Ethernet Server Adapter I350-T4 @@ -22008,6 +22813,9 @@ 1137 00bf Ethernet Converged Network Adapter X540-T2 17aa 1073 ThinkServer X540-T2 AnyFabric 17aa 4006 Ethernet Controller 10-Gigabit X540-AT2 + 1bd4 001a 10G base-T DP ER102Ti3 Rack Adapter + 1bd4 0033 10G base-T DP EP102Ti3 Adapter + 1bd4 0034 10G base-T DP EP102Ti3A Adapter 8086 0001 Ethernet Converged Network Adapter X540-T2 8086 0002 Ethernet Converged Network Adapter X540-T1 8086 001a Ethernet Converged Network Adapter X540-T2 @@ -22017,6 +22825,8 @@ 8086 5004 Ethernet 10G 2P X540-t Adapter 1529 82599 10 Gigabit Dual Port Network Connection with FCoE 152a 82599 10 Gigabit Dual Port Backplane Connection with FCoE + 152e 82599 Virtual Function + 1530 X540 Virtual Function 1533 I210 Gigabit Network Connection 103c 0003 Ethernet I210-T1 GbE NIC 1093 7706 Compact Vision System Ethernet Adapter @@ -22036,8 +22846,9 @@ 103c 1909 ZBook 15 17aa 220e ThinkPad T440p 153b Ethernet Connection I217-V - 1547 DSL3510 Thunderbolt Port [Cactus Ridge] - 1549 DSL3510 Thunderbolt Controller [Cactus Ridge] + 1547 DSL3510 Thunderbolt Controller [Cactus Ridge 4C 2012] + 1548 DSL3310 Thunderbolt Controller [Cactus Ridge 2C 2012] + 1549 DSL2210 Thunderbolt Controller [Port Ridge 1C 2011] 154a Ethernet Server Adapter X520-4 8086 011a Ethernet Converged Network Adapter X520-4 8086 011b Ethernet Converged Network Adapter X520-4 @@ -22047,6 +22858,8 @@ 8086 7b11 10GbE 2P X520 Adapter 1557 82599 10 Gigabit Network Connection 17aa 4008 82599EN 10 Gigabit Network Connection + 1bd4 001c 10G SFP+ SP ER101Fi4 Rack Adapter + 1bd4 0030 10G SFP+ SP EP101Fi4A Adapter 8086 0001 Ethernet OCP Server Adapter X520-1 1558 Ethernet Converged Network Adapter X520-Q1 8086 011a Ethernet Converged Network Adapter X520-Q1 @@ -22061,10 +22874,24 @@ 8086 0002 Ethernet Server Bypass Adapter X520-LR2 1560 Ethernet Controller X540 1563 Ethernet Controller 10G X550T + 1028 1fa8 Ethernet 10G 4P X550/I350 rNDC + 1028 1fa9 Ethernet 10G 4P X550 rNDC + 1590 00d1 Ethernet 10Gb 2-port 562T Adapter + 1590 00d2 Ethernet 10Gb 2-port 562FLR-T Adapter + 18d4 0c08 X550 10Gb 2-port RJ45 OCP Mezz Card MOP81-I-10GT2 8086 0001 Ethernet Converged Network Adapter X550-T2 8086 001a Ethernet Converged Network Adapter X550-T2 - 156c DSL5520 Thunderbolt [Falcon Ridge] - 156d DSL5520 Thunderbolt [Falcon Ridge] + 8086 0022 Ethernet Converged Network Adapter X550-T2 + 1564 X550 Virtual Function + 1565 X550 Virtual Function + 1566 DSL4410 Thunderbolt NHI [Redwood Ridge 2C 2013] + 1567 DSL4410 Thunderbolt Bridge [Redwood Ridge 2C 2013] + 1568 DSL4510 Thunderbolt NHI [Redwood Ridge 4C 2013] + 1569 DSL4510 Thunderbolt Bridge [Redwood Ridge 4C 2013] + 156a DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013] + 156b DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013] + 156c DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013] + 156d DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013] 156f Ethernet Connection I219-LM 1570 Ethernet Connection I219-V 1571 XL710/X710 Virtual Function @@ -22075,8 +22902,12 @@ 103c 0000 Ethernet 10Gb 562SFP+ Adapter 103c 22fc HP Ethernet 10Gb 2-port 562FLR-SFP+ Adapter 103c 22fd HP Ethernet 10Gb 2-port 562SFP+ Adapter - 1137 0000 Ethernet Converged NIC X710-4 - 1137 013b Ethernet Converged NIC X710-4 + 1137 0000 Ethernet Converged NIC X710-DA + 1137 013b Ethernet Converged NIC X710-DA4 + 1137 020a Ethernet Converged NIC X710-DA2 + 1590 0000 Ethernet Controller X710 for 10GbE SFP+ + 1590 0225 Ethernet 10GbE 4P 563SFP+ Adapter + 1590 022f Ethernet 10Gb 2-port 564i Communication Board 17aa 0000 ThinkServer X710 AnyFabric for 10GbE SFP+ 17aa 4001 ThinkServer X710-4 AnyFabric for 10GbE SFP+ 17aa 4002 ThinkServer X710-2 AnyFabric for 10GbE SFP+ @@ -22090,25 +22921,34 @@ 8086 0008 Ethernet Converged Network Adapter X710-2 8086 0009 Ethernet Controller X710 for 10GbE SFP+ 8086 000a Ethernet Controller X710 for 10GbE SFP+ + 8086 000b Ethernet Server Adapter X710-DA2 for OCP 8086 000d Ethernet Controller X710 for 10GbE SFP+ - 8086 4005 Ethernet Controller XL710 for 10 Gigabit SFP+ + 8086 0010 Ethernet Converged Network Adapter X710 + 8086 4005 Ethernet Controller X710 for 10GbE SFP+ 8086 4006 Ethernet Controller X710 for 10GbE SFP+ - 1578 DSL6540 Thunderbolt [Alpine Ridge] + 1575 DSL6340 Thunderbolt 3 NHI [Alpine Ridge 2C 2015] + 1576 DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015] + 1577 DSL6540 Thunderbolt 3 NHI [Alpine Ridge 4C 2015] + 1578 DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] 157b I210 Gigabit Network Connection 157c I210 Gigabit Backplane Connection + 157d DSL5110 Thunderbolt 2 NHI (Low Power) [Win Ridge 2C 2014] + 157e DSL5110 Thunderbolt 2 Bridge (Low Power) [Win Ridge 2C 2014] 1580 Ethernet Controller XL710 for 40GbE backplane 1581 Ethernet Controller X710 for 10GbE backplane 1028 0000 Ethernet 10G X710-k bNDC 1028 1f98 Ethernet 10G 4P X710-k bNDC 1028 1f9e Ethernet 10G 2P X710-k bNDC + 1590 0000 Ethernet 2-port 563i Adapter + 1590 00f8 Ethernet 2-port 563i Adapter 8086 0000 Ethernet Converged Network Adapter XL710-Q2 1583 Ethernet Controller XL710 for 40GbE QSFP+ 1028 0000 Ethernet 40G 2P XL710 QSFP+ rNDC 1028 1f9f Ethernet 40G 2P XL710 QSFP+ rNDC 108e 0000 10 Gb/40 Gb Ethernet Adapter 108e 7b1b 10 Gb/40 Gb Ethernet Adapter - 1137 0000 Ethernet Converged NIC XL710-Q2 - 1137 013c Ethernet Converged NIC XL710-Q2 + 1137 0000 Ethernet Converged NIC XL710-QDA2 + 1137 013c Ethernet Converged NIC XL710-QDA2 8086 0000 Ethernet Converged Network Adapter XL710-Q2 8086 0001 Ethernet Converged Network Adapter XL710-Q2 8086 0002 Ethernet Converged Network Adapter XL710-Q2 @@ -22126,15 +22966,29 @@ 108e 0000 Ethernet Controller X710 for 10GBASE-T 108e 4857 Ethernet Controller X710 for 10GBASE-T 1587 Ethernet Controller XL710 for 20GbE backplane - 103c 0000 HP Flex-20 20Gb 2-port 660FLB Adapter - 103c 22fe HP Flex-20 20Gb 2-port 660FLB Adapter + 103c 0000 HPE Ethernet 10/20Gb 2-port 660FLB Adapter + 103c 22fe HPE Ethernet 10/20Gb 2-port 660FLB Adapter 1588 Ethernet Controller XL710 for 20GbE backplane - 103c 0000 HP Flex-20 20Gb 2-port 660M Adapter - 103c 22ff HP Flex-20 20Gb 2-port 660M Adapter + 103c 0000 Ethernet 10/20Gb 2-port 660M Adapter + 103c 22ff Ethernet 10/20Gb 2-port 660M Adapter 1589 Ethernet Controller X710/X557-AT 10GBASE-T + 108e 0000 Quad Port 10GBase-T Adapter + 108e 7b1c Quad Port 10GBase-T Adapter 8086 0000 Ethernet Converged Network Adapter X710-T 8086 0001 Ethernet Converged Network Adapter X710-T4 8086 0002 Ethernet Converged Network Adapter X710-T4 + 8086 1003 Ethernet Converged Network Adapter X710-T + 158a Ethernet Controller XXV710 for 25GbE backplane + 158b Ethernet Controller XXV710 for 25GbE SFP28 + 8086 0000 Ethernet Network Adapter XXV710 + 8086 0001 Ethernet Network Adapter XXV710-2 + 8086 0002 Ethernet Network Adapter XXV710-2 + 8086 0003 Ethernet Network Adapter XXV710-1 + 8086 0004 Ethernet Network Adapter XXV710-1 + 8086 0005 Ethernet Network Adapter OCP XXV710-2 + 8086 0006 Ethernet Network Adapter OCP XXV710-2 + 8086 0007 Ethernet Network Adapter OCP XXV710-1 + 8086 0008 Ethernet Network Adapter OCP XXV710-1 15a0 Ethernet Connection (2) I218-LM 15a1 Ethernet Connection (2) I218-V 15a2 Ethernet Connection (3) I218-LM @@ -22142,22 +22996,37 @@ 15a4 Ethernet Switch FM10000 Host Interface 15a5 Ethernet Switch FM10000 Host Virtual Interface 15a8 Ethernet Connection X552 Virtual Function + 15a9 X552 Virtual Function 15aa Ethernet Connection X552 10 GbE Backplane 1059 0120 T4008 10GbE interface 15ab Ethernet Connection X552 10 GbE Backplane 15ac Ethernet Connection X552 10 GbE SFP+ 15ad Ethernet Connection X552/X557-AT 10GBASE-T 15ae Ethernet Connection X552 1000BASE-T + 15b0 Ethernet Connection X552 Backplane + 15b4 X553 Virtual Function + 15b5 DSL6340 USB 3.1 Controller [Alpine Ridge] 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] 15b7 Ethernet Connection (2) I219-LM 15b8 Ethernet Connection (2) I219-V 15b9 Ethernet Connection (3) I219-LM + 15bf JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016] + 15c0 JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016] + 15c5 X553 Virtual Function + 15d0 Ethernet SDI Adapter FM10420-100GbE-QDA2 15d1 Ethernet Controller 10G X550T 8086 0002 Ethernet Converged Network Adapter X550-T1 + 8086 0021 Ethernet Converged Network Adapter X550-T1 8086 00a2 Ethernet Converged Network Adapter X550-T1 + 15d2 JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] + 15d3 JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] + 15d5 Ethernet SDI Adapter FM10420-25GbE-DA2 + 8086 0001 Intel(R) Ethernet SDI Adapter FM10420-25GbE-DA2 15d6 Ethernet Connection (5) I219-V 15d7 Ethernet Connection (4) I219-LM 15d8 Ethernet Connection (4) I219-V + 15d9 JHL6340 Thunderbolt 3 NHI (C step) [Alpine Ridge 2C 2016] + 15da JHL6340 Thunderbolt 3 Bridge (C step) [Alpine Ridge 2C 2016] 15e3 Ethernet Connection (5) I219-LM 1600 Broadwell-U Host Bridge -OPI 1601 Broadwell-U PCI Express x16 Controller @@ -22165,7 +23034,7 @@ 1603 Broadwell-U Processor Thermal Subsystem 1604 Broadwell-U Host Bridge -OPI 1605 Broadwell-U PCI Express x8 Controller - 1606 Broadwell-U Integrated Graphics + 1606 HD Graphics 1607 Broadwell-U CHAPS Device 1608 Broadwell-U Host Bridge -OPI 1609 Broadwell-U x4 PCIe @@ -22176,19 +23045,19 @@ 160e Broadwell-U Integrated Graphics 160f Broadwell-U SoftSKU 1610 Broadwell-U Host Bridge - DMI - 1612 Broadwell-U Integrated Graphics + 1612 HD Graphics 5600 1614 Broadwell-U Host Bridge - DMI - 1616 Broadwell-U Integrated Graphics + 1616 HD Graphics 5500 103c 2216 ZBook 15u G2 Mobile Workstation 1618 Broadwell-U Host Bridge - DMI 161a Broadwell-U Integrated Graphics 161b Broadwell-U Integrated Graphics 161d Broadwell-U Integrated Graphics - 161e Broadwell-U Integrated Graphics - 1622 Broadwell-U Integrated Graphics - 1626 Broadwell-U Integrated Graphics - 162a Broadwell-U Integrated Graphics - 162b Broadwell-U Integrated Graphics + 161e HD Graphics 5300 + 1622 Iris Pro Graphics 6200 + 1626 HD Graphics 6000 + 162a Iris Pro Graphics P6300 + 162b Iris Graphics 6100 162d Broadwell-U Integrated Graphics 162e Broadwell-U Integrated Graphics 1632 Broadwell-U Integrated Graphics @@ -22198,26 +23067,39 @@ 163d Broadwell-U Integrated Graphics 163e Broadwell-U Integrated Graphics 1900 Skylake Host Bridge/DRAM Registers - 1901 Sky Lake PCIe Controller (x16) + 1901 Skylake PCIe Controller (x16) + 1902 HD Graphics 510 1903 Skylake Processor Thermal Subsystem - 1904 Sky Lake Host Bridge/DRAM Registers - 1905 Sky Lake PCIe Controller (x8) - 1908 Sky Lake Host Bridge/DRAM Registers - 1909 Sky Lake PCIe Controller (x4) - 190c Sky Lake Host Bridge/DRAM Registers - 190f Sky Lake Host Bridge/DRAM Registers - 1910 Sky Lake Host Bridge/DRAM Registers - 1911 Sky Lake Gaussian Mixture Model - 1912 Sky Lake Integrated Graphics - 1916 Sky Lake Integrated Graphics - 1918 Sky Lake Host Bridge/DRAM Registers - 1919 Sky Lake Imaging Unit - 191b Skylake Integrated Graphics - 191e Sky Lake Integrated Graphics - 191f Sky Lake Host Bridge/DRAM Registers - 1926 Sky Lake Integrated Graphics - 1932 Sky Lake Integrated Graphics - 193b Sky Lake Integrated Graphics + 1904 Skylake Host Bridge/DRAM Registers + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop + 1905 Skylake PCIe Controller (x8) + 1906 HD Graphics 510 + 17aa 382a B51-80 Laptop + 1908 Skylake Host Bridge/DRAM Registers + 1909 Skylake PCIe Controller (x4) + 190c Skylake Host Bridge/DRAM Registers + 190f Skylake Host Bridge/DRAM Registers + 1910 Skylake Host Bridge/DRAM Registers + 1911 Skylake Gaussian Mixture Model + 1912 HD Graphics 530 + 1916 HD Graphics 520 + 1028 06f3 Latitude 3570 + 1918 Skylake Host Bridge/DRAM Registers + 1919 Skylake Imaging Unit + 191b HD Graphics 530 + 191d HD Graphics P530 + 191e HD Graphics 515 + 191f Skylake Host Bridge/DRAM Registers + 1921 HD Graphics 520 + 1926 Iris Graphics 540 + 1927 Iris Graphics 550 + 192b Iris Graphics 555 + 192d Iris Graphics P555 + 1932 Iris Pro Graphics 580 + 193a Iris Pro Graphics P580 + 193b Iris Pro Graphics 580 + 193d Iris Pro Graphics P580 1960 80960RP (i960RP) Microprocessor 101e 0431 MegaRAID 431 RAID Controller 101e 0438 MegaRAID 438 Ultra2 LVD RAID Controller @@ -22245,7 +23127,30 @@ e4bf 3100 CX1-BAND 1962 80960RM (i960RM) Microprocessor 105a 0000 SuperTrak SX6000 I2O CPU + 19ac DNV SMBus Contoller - Host + 19b0 DNV SATA Controller 0 + 19b1 DNV SATA Controller 0 + 19b2 DNV SATA Controller 0 + 19b3 DNV SATA Controller 0 + 19b4 DNV SATA Controller 0 + 19b5 DNV SATA Controller 0 + 19b6 DNV SATA Controller 0 + 19b7 DNV SATA Controller 0 + 19be DNV SATA Controller 0 + 19bf DNV SATA Controller 0 + 19c0 DNV SATA Controller 1 + 19c1 DNV SATA Controller 1 + 19c2 DNV SATA Controller 1 + 19c3 DNV SATA Controller 1 + 19c4 DNV SATA Controller 1 + 19c5 DNV SATA Controller 1 + 19c6 DNV SATA Controller 1 + 19c7 DNV SATA Controller 1 + 19ce DNV SATA Controller 1 + 19cf DNV SATA Controller 1 + 19dc DNV LPC or eSPI 19df DNV SMBus controller + 19e0 DNV SPI Controller 1a21 82840 840 [Carmel] Chipset Host Bridge (Hub A) 1a23 82840 840 [Carmel] Chipset AGP Bridge 1a24 82840 840 [Carmel] Chipset PCI Bridge (Hub B) @@ -22458,6 +23363,7 @@ 1d76 C600/X79 series chipset Multi-Function Glue 1e00 7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] 1e01 7 Series Chipset Family 4-port SATA Controller [IDE mode] + 144d c652 NP300E5C series laptop 1e02 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] 1043 84ca P8 series motherboard 1849 1e02 Motherboard @@ -22465,27 +23371,31 @@ 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A + 144d c652 NP300E5C series laptop 1e04 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e05 7 Series Chipset SATA Controller [RAID mode] 1e06 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e07 7 Series Chipset Family SATA Controller [RAID mode] 1e08 7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] 1e09 7 Series Chipset Family 2-port SATA Controller [IDE mode] + 144d c652 NP300E5C series laptop 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - 1e10 7 Series/C210 Series Chipset Family PCI Express Root Port 1 + 1e10 7 Series/C216 Chipset Family PCI Express Root Port 1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8H77-I Motherboard + 144d c652 NP300E5C series laptop 1849 1e10 Motherboard 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 - 1e16 7 Series/C210 Series Chipset Family PCI Express Root Port 4 + 1e16 7 Series/C216 Chipset Family PCI Express Root Port 4 1043 108d VivoBook X202EV 1043 1477 N56VZ + 144d c652 NP300E5C series laptop 1849 1618 Z77 Extreme4 motherboard 1e18 7 Series/C210 Series Chipset Family PCI Express Root Port 5 1043 84ca P8H77-I Motherboard @@ -22495,33 +23405,38 @@ 1e1c 7 Series/C210 Series Chipset Family PCI Express Root Port 7 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 1849 1e1e Motherboard - 1e20 7 Series/C210 Series Chipset Family High Definition Audio Controller + 1e20 7 Series/C216 Chipset Family High Definition Audio Controller + 1028 054b Dell XPS One 2710 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 8415 P8H77-I Motherboard 1043 8445 ASUS P8Z77-V LX Motherboard + 144d c652 NP300E5C series laptop 1849 1898 Z77 Extreme4 motherboard - 1e22 7 Series/C210 Series Chipset Family SMBus Controller + 1e22 7 Series/C216 Chipset Family SMBus Controller 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard + 144d c652 NP300E5C series laptop 1849 1e22 Motherboard 1e24 7 Series/C210 Series Chipset Family Thermal Management Controller 1043 1517 Zenbook Prime UX31A 1e25 7 Series/C210 Series Chipset Family DMI to PCI Bridge - 1e26 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 + 1e26 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard + 144d c652 NP300E5C series laptop 1849 1e26 Motherboard - 1e2d 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 + 1e2d 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard + 144d c652 NP300E5C series laptop 1849 1e2d Motherboard 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller 103c 17ab ProBook 6570b @@ -22531,11 +23446,12 @@ 1043 84ca P8 series motherboard 1849 1e31 Motherboard 1e33 7 Series/C210 Series Chipset Family LAN Controller - 1e3a 7 Series/C210 Series Chipset Family MEI Controller #1 + 1e3a 7 Series/C216 Chipset Family MEI Controller #1 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard + 144d c652 NP300E5C series laptop 1849 1e3a Motherboard 1e3b 7 Series/C210 Series Chipset Family MEI Controller #2 1e3c 7 Series/C210 Series Chipset Family IDE-r Controller @@ -22574,6 +23490,7 @@ 1e5b UM77 Express Chipset LPC Controller 1e5c 7 Series Chipset Family LPC Controller 1e5d HM75 Express Chipset LPC Controller + 144d c652 NP300E5C series laptop 1e5e 7 Series Chipset Family LPC Controller 1043 108d VivoBook X202EV 1e5f 7 Series Chipset Family LPC Controller @@ -22674,6 +23591,37 @@ 225c Xeon Phi coprocessor SE10/7120 series 225d Xeon Phi coprocessor 3120 series 225e Xeon Phi coprocessor 31S1 + 2280 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register + 2284 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller + 2286 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 DMA Controller + 228a Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #1 + 228c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO1 HSUART Controller #2 + 2292 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx SMBus Controller + 2294 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series MMC Controller + 2295 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SDIO Controller + 2296 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SD Controller + 2298 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine + 229c Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU + 22a3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA Controller + 22a4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SATA AHCI Controller + 22a8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Low Power Engine Audio + 22b0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Configuration Registers + 22b1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller + 22b5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller + 22b8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Imaging Unit + 22c0 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 DMA Controller + 22c1 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #1 + 22c2 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #2 + 22c3 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #3 + 22c4 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #4 + 22c5 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #5 + 22c6 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #6 + 22c7 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series LPIO2 I2C Controller #7 + 22c8 Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 + 22ca Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #2 + 22cc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 + 22ce Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #4 + 22dc Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller 2310 DH89xxCC LPC Controller 2323 DH89xxCC 4 Port SATA AHCI Controller 2330 DH89xxCC SMBus Controller @@ -22811,6 +23759,7 @@ 144d c072 Notebook N150P 1458 5000 GA-D525TUD 1734 1055 Amilo M1420 + 17aa 2013 ThinkPad R60e 17aa 20ae ThinkPad T61/R61 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] @@ -23341,8 +24290,16 @@ 24df 82801ER (ICH5R) SATA Controller 1028 0168 Precision Workstation 670 Mainboard 24f0 Omni-Path HFI Silicon 100 Series [discrete] - 10a9 802e Omni-path HFI 100 Series, 1-port - 10a9 802f Omni-path HFI 100 Series, 2-port + 10a9 802e Omni-path HFI 100 Series, 1-port A-board + 10a9 802f Omni-path HFI 100 Series, 2-port A-board + 10a9 8030 Omni-path HFI 100 Series, 1-port B-board + 10a9 8031 Omni-path HFI 100 Series, 2-port B-board + 1590 00e7 100Gb 1-port OP101 QSFP28 x8 PCIe Gen3 with Intel Omni-Path Adapter + 1590 00e8 100Gb 1-port OP101 QSFP28 x16 PCIe Gen3 with Intel Omni-Path Adapter + 1590 021c Apollo 100Gb 1-port Intel Omni-Path Architecture 860z Mezzanine FIO Adapter + 15d9 0934 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, SIOM Module + 1cb8 0001 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC4600 QSFP28 + 1cb8 0002 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, TC6600 Fixed Port 8086 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 8086 2629 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8 8086 262a Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16 @@ -23354,6 +24311,9 @@ 24f4 Wireless 8260 # Snow Field Peak AC 8086 0030 Dual Band Wireless-AC 8260 + 24fd Wireless 8265 / 8275 +# Windstorm Peak + 8086 0010 Dual Band Wireless-AC 8265 2500 82820 820 (Camino) Chipset Host Bridge (MCH) 1028 0095 Precision Workstation 220 Chipset 1043 801c P3C-2000 system chipset @@ -23446,7 +24406,7 @@ 2589 E7220/E7221 PCI Express Root Port 258a E7221 Integrated Graphics Controller 2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller - 1014 0575 ThinkPad Z60t + 1014 0575 ThinkPad X41 / Z60t 1028 0182 Dell Latitude C610 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 @@ -23458,6 +24418,7 @@ 2591 Mobile 915GM/PM Express PCI Express Root Port 103c 0934 Compaq nw8240 Mobile Workstation 2592 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 103c 308a NC6220 1043 1881 GMA 900 915GM Integrated Graphics @@ -23630,6 +24591,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2641 82801FBM (ICH6M) LPC Interface Bridge + 1014 0568 ThinkPad X41 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge @@ -23645,7 +24607,9 @@ 1028 0177 Dimension 8400 1462 7028 915P/G Neo2 2653 82801FBM (ICH6M) SATA Controller + 1014 056a ThinkPad X41 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23658,6 +24622,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23670,6 +24635,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23682,6 +24648,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 099c NX6110/NC6120 @@ -23693,6 +24660,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller + 1014 0566 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23733,6 +24701,7 @@ 1462 7028 915P/G Neo2 1af4 1100 QEMU Virtual Machine 266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller + 1014 056b ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 1043 80a6 P5GD1-VW Mainboard @@ -23748,6 +24717,7 @@ 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 266e 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller + 1014 0581 ThinkPad X41 (Analog Devices AD1981B codec) 1025 006a Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 @@ -23864,6 +24834,7 @@ 1043 2582 P5GD1-VW Mainboard 1734 105b Scenic W620 2792 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 1043 1881 GMA 900 915GM Integrated Graphics e4bf 0ccd CCD-CALYPSO @@ -23875,6 +24846,7 @@ 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 17aa 2015 ThinkPad T60 @@ -23885,10 +24857,12 @@ 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 27a2 Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller 103c 30a1 NC2400 + 103c 30d5 530 Laptop 17aa 201a ThinkPad R60/T60/X60 series 9902 1584 CCE MPL-D10H120F 27a6 Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller 103c 30a1 NC2400 + 103c 30d5 530 Laptop 1775 11cc CC11/CL11 integrated graphics (secondary) 17aa 201a ThinkPad R60/T60/X60 series 27ac Mobile 945GSE Express Memory Controller Hub @@ -23901,6 +24875,7 @@ 8086 544e DeskTop Board D945GTP 27b8 82801GB/GR (ICH7 Family) LPC Interface Bridge 1028 01e6 PowerEdge 860 + 103c 2a8c Compaq 500B Microtower 1043 8179 P5KPL-VM Motherboard 107b 5048 E4500 1462 7418 Wind PC MS-7418 @@ -23911,6 +24886,7 @@ 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 10f7 8338 Panasonic CF-Y5 laptop 17aa 2009 ThinkPad R60/T60/X60 series @@ -23926,6 +24902,7 @@ 1028 01ad OptiPlex GX620 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 + 103c 2a8c Compaq 500B Microtower 1043 8179 P5KPL-VM Motherboard 107b 5048 E4500 1462 2310 MSI Hetis 945 @@ -23954,6 +24931,7 @@ 27c5 82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] 103c 309f Compaq nx9420 Notebook 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 17aa 200d ThinkPad R60/T60/X60 series 27c6 82801GHM (ICH7-M DH) SATA Controller [RAID mode] 27c8 NM10/ICH7 Family USB UHCI Controller #1 @@ -23963,9 +24941,11 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5KPL-VM,P5LD2-VM Mainboard 105b 0d7c D270S/D250S Motherboard @@ -23986,6 +24966,7 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 @@ -24009,6 +24990,7 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 @@ -24030,6 +25012,7 @@ 1028 01d7 XPS M1210 1028 01df PowerEdge SC440 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 @@ -24052,9 +25035,11 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5KPL-VM,P5LD2-VM Mainboard 105b 0d7c D270S/D250S Motherboard @@ -24075,6 +25060,7 @@ 1458 5001 GA-D525TUD 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d2 NM10/ICH7 Family PCI Express Port 2 103c 309f Compaq nx9420 Notebook @@ -24083,12 +25069,14 @@ 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d4 NM10/ICH7 Family PCI Express Port 3 1071 8209 Medion MIM 2240 Notebook PC [MD98100] 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d6 NM10/ICH7 Family PCI Express Port 4 103c 30a3 Compaq nw8440 @@ -24096,14 +25084,17 @@ 144d c072 Notebook N150P 1462 7418 Wind PC MS-7418 1775 11cc CC11/CL11 + 17aa 2011 ThinkPad R60e 8086 544b Desktop Board D425KT 27d8 NM10/ICH7 Family High Definition Audio Controller 1025 006c 9814 WKMI 1028 01d7 XPS M1210 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1043 1123 A6J-Q008 1043 13c4 Asus G2P 1043 817f P5LD2-VM Mainboard (Realtek ALC 882 codec) @@ -24135,6 +25126,7 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 1043 8179 P5KPL-VM Motherboard 105b 0d7c D270S/D250S Motherboard 1071 8209 Medion MIM 2240 Notebook PC [MD98100] @@ -24160,9 +25152,11 @@ 1028 01df PowerEdge SC440 1028 01e6 PowerEdge 860 103c 2a3b Pavilion A1512X + 103c 2a8c Compaq 500B Microtower 103c 309f Compaq nx9420 Notebook 103c 30a1 NC2400 103c 30a3 Compaq nw8440 + 103c 30d5 530 Laptop 1043 1237 A6J-Q008 1043 8179 P5KPL-VM Motherboard 107b 5048 E4500 @@ -24207,6 +25201,12 @@ 1028 01da OptiPlex 745 1462 7235 P965 Neo MS-7235 mainboard 2826 C600/X79 series chipset SATA RAID Controller + 1d49 0100 Intel RSTe SATA Software RAID + 1d49 0101 Intel RSTe SATA Software RAID + 1d49 0102 Intel RSTe SATA Software RAID + 1d49 0103 Intel RSTe SATA Software RAID + 1d49 0104 Intel RSTe SATA Software RAID + 1d49 0105 Intel RSTe SATA Software RAID 2827 C610/X99 series chipset sSATA Controller [RAID mode] 2828 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] 1028 01f3 Inspiron 1420 @@ -24964,8 +25964,10 @@ 2e27 4 Series Chipset Serial KT Controller 2e29 4 Series Chipset PCI Express Root Port 2e30 4 Series Chipset DRAM Controller + 103c 2a8c Compaq 500B Microtower 2e31 4 Series Chipset PCI Express Root Port 2e32 4 Series Chipset Integrated Graphics Controller + 103c 2a8c Compaq 500B Microtower 2e33 4 Series Chipset Integrated Graphics Controller 2e34 4 Series Chipset HECI Controller 2e35 4 Series Chipset HECI Controller @@ -25022,6 +26024,9 @@ 2f09 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f0a Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 2f0b Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 3 + 2f0d Haswell Xeon Non-Transparent Bridge (Back-to-back) + 2f0e Haswell Xeon Non-Transparent Bridge (Primary Side) + 2f0f Haswell Xeon Non-Transparent Bridge (Secondary Side) 2f10 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f11 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f12 Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug @@ -25443,6 +26448,30 @@ 372b Xeon C5500/C3500 Core 372c Xeon C5500/C3500 Reserved 373f Xeon C5500/C3500 IOxAPIC + 37cd X722 Virtual Function + 37ce Ethernet Connection X722 for 10GbE backplane + 1590 0215 Ethernet 10Gb 2-port 568i Adapter + 17aa 4023 Intel Ethernet Connection X722 for 10GbE backplane + 37cf Ethernet Connection X722 for 10GbE QSFP+ + 37d0 Ethernet Connection X722 for 10GbE SFP+ + 17aa 4020 Intel Ethernet Connection X722 for 10G SFP+ + 17aa 4021 Intel Ethernet Connection X722 for 10G SFP+ + 17aa 4022 Ethernet Connection X722 for 10GbE SFP+ + 37d1 Ethernet Connection X722 for 1GbE + 1590 0216 Ethernet 1Gb 2-port 368i Adapter + 1590 0217 Ethernet 1Gb 2-port 368FLR-MMT Adapter + 17aa 4020 Intel Ethernet Connection X722 for 1GbE + 17aa 4021 Intel Ethernet Connection X722 for 1GbE + 17aa 4022 Intel Ethernet Connection X722 for 1GbE + 37d2 Ethernet Connection X722 for 10GBASE-T + 1590 0218 Ethernet 10Gb 2-port 568FLR-MMT Adapter + 17aa 4020 Intel Ethernet Connection X722 for 10GBASE + 17aa 4021 Intel Ethernet Connection X722 for 10GBASE + 17aa 4022 Ethernet Connection X722 for 10GBASE-T + 37d3 Ethernet Connection X722 for 10GbE SFP+ + 1590 0219 Ethernet 10Gb 2-port 568FLR-MMSFP+ Adapter + 37d4 Ethernet Connection X722 for 10GbE QSFP+ + 37d9 X722 Hyper-V Virtual Function 3a00 82801JD/DO (ICH10 Family) 4-port SATA IDE Controller 3a02 82801JD/DO (ICH10 Family) SATA AHCI Controller 3a05 82801JD/DO (ICH10 Family) SATA RAID Controller @@ -25711,6 +26740,7 @@ 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 + 1043 1373 ASUSTek G73-series gaming laptop 144d c06a R730 Laptop 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] @@ -25857,6 +26887,7 @@ 1351 103c Compaq NC6220 4224 PRO/Wireless 2915ABG [Calexico2] Network Connection 4227 PRO/Wireless 3945ABG [Golan] Network Connection + 8086 1010 ThinkPad R60e 8086 1011 ThinkPad T60/R60e/X60s 8086 1014 PRO/Wireless 3945BG Network Connection 4229 PRO/Wireless 4965 AG or AGN [Kedron] Network Connection @@ -25975,7 +27006,41 @@ 530d 80310 (IOP) IO Processor 5845 QEMU NVM Express Controller 1af4 1100 QEMU Virtual Machine - 5ad4 Broxton SMBus Controller + 5a84 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller + 5a88 Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit + 5a98 Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster + 5a9a Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine + 5aa2 Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub + 5aa8 Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI + 5aac Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1 + 5aae Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2 + 5ab0 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3 + 5ab2 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4 + 5ab4 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5 + 5ab6 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6 + 5ab8 Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7 + 5aba Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8 + 5abc Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1 + 5abe Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2 + 5ac0 Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3 + 5ac2 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1 + 5ac4 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2 + 5ac6 Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3 + 5ac8 Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller + 5aca Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller + 5acc Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller + 5ad0 Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller + 5ad4 Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller + 5ad6 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1 + 5ad7 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2 + 5ad8 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 + 5ad9 Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2 + 5ada Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 + 5adb Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 + 5ae3 Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller + 5ae8 Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface + 5aee Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4 + 5af0 Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge 65c0 5100 Chipset Memory Controller Hub 65e2 5100 Chipset PCI Express x4 Port 2 65e3 5100 Chipset PCI Express x4 Port 3 @@ -26550,6 +27615,7 @@ 9c23 8 Series CHAP Counters 9c24 8 Series Thermal 9c26 8 Series USB EHCI #1 + 17aa 220c T440s 17aa 2214 ThinkPad X240 9c2d 8 Series USB EHCI #2 9c31 8 Series USB xHCI HC @@ -26614,16 +27680,52 @@ 9ce5 Wildcat Point-LP Serial IO GSPI Controller #0 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 9d03 Sunrise Point-LP SATA Controller [AHCI mode] + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop 9d14 Sunrise Point-LP PCI Express Root Port #5 + 17aa 382a B51-80 Laptop + 9d15 Sunrise Point-LP PCI Express Root Port #6 + 17aa 382a B51-80 Laptop + 9d16 Sunrise Point-LP PCI Express Root Port #7 + 9d17 Sunrise Point-LP PCI Express Root Port #8 + 9d18 Sunrise Point-LP PCI Express Root Port #9 + 17aa 382a B51-80 Laptop 9d21 Sunrise Point-LP PMC + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop 9d23 Sunrise Point-LP SMBus - 9d27 Sunrise Point-LP LPSS UART #0 + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop + 9d27 Sunrise Point-LP Serial IO UART Controller #0 + 9d28 Sunrise Point-LP Serial IO UART Controller #1 + 9d29 Sunrise Point-LP Serial IO SPI Controller #0 + 9d2a Sunrise Point-LP Serial IO SPI Controller #1 9d2d Sunrise Point-LP Secure Digital IO Controller 9d2f Sunrise Point-LP USB 3.0 xHCI Controller + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop 9d31 Sunrise Point-LP Thermal subsystem + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop 9d3a Sunrise Point-LP CSME HECI #1 + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop + 9d43 Sunrise Point-LP LPC Controller + 17aa 382a B51-80 Laptop 9d48 Sunrise Point-LP LPC Controller + 1028 06f3 Latitude 3570 + 9d60 Sunrise Point-LP Serial IO I2C Controller #0 + 1028 06f3 Latitude 3570 + 8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C] + 9d61 Sunrise Point-LP Serial IO I2C Controller #1 + 9d62 Sunrise Point-LP Serial IO I2C Controller #2 + 9d63 Sunrise Point-LP Serial IO I2C Controller #3 + 9d64 Sunrise Point-LP Serial IO I2C Controller #4 + 9d65 Sunrise Point-LP Serial IO I2C Controller #5 + 9d66 Sunrise Point-LP Serial IO UART Controller #2 9d70 Sunrise Point-LP HD Audio + 1028 06f3 Latitude 3570 + 17aa 382a B51-80 Laptop a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge 1458 5000 GA-D525TUD 8086 4f4d DeskTop Board D510MO @@ -26669,10 +27771,10 @@ a124 Sunrise Point-H SPI Controller a125 Sunrise Point-H Gigabit Ethernet Controller a126 Sunrise Point-H Northpeak - a127 Sunrise Point-H LPSS UART #0 - a128 Sunrise Point-H LPSS UART #1 - a129 Sunrise Point-H LPSS SPI #0 - a12a Sunrise Point-H LPSS SPI #1 + a127 Sunrise Point-H Serial IO UART #0 + a128 Sunrise Point-H Serial IO UART #1 + a129 Sunrise Point-H Serial IO SPI #0 + a12a Sunrise Point-H Serial IO SPI #1 a12f Sunrise Point-H USB 3.0 xHCI Controller a130 Sunrise Point-H USB Device Controller (OTG) a131 Sunrise Point-H Thermal subsystem @@ -26715,15 +27817,16 @@ a15d Sunrise Point-H LPC Controller a15e Sunrise Point-H LPC Controller a15f Sunrise Point-H LPC Controller - a160 Sunrise Point-H LPSS I2C Controller #0 - a161 Sunrise Point-H LPSS I2C Controller #1 - a166 Sunrise Point-H LPSS UART Controller #2 + a160 Sunrise Point-H Serial IO I2C Controller #0 + a161 Sunrise Point-H Serial IO I2C Controller #1 + a166 Sunrise Point-H Serial IO UART Controller #2 a167 Sunrise Point-H PCI Root Port #17 a168 Sunrise Point-H PCI Root Port #18 a169 Sunrise Point-H PCI Root Port #19 a16a Sunrise Point-H PCI Root Port #20 a170 Sunrise Point-H HD Audio a182 Lewisburg SATA Controller [AHCI mode] + a186 Lewisburg SATA Controller [RAID mode] a190 Lewisburg PCI Express Root Port #1 a191 Lewisburg PCI Express Root Port #2 a192 Lewisburg PCI Express Root Port #3 @@ -26759,6 +27862,7 @@ a1c6 Lewisburg LPC Controller a1c7 Lewisburg LPC Controller a1d2 Lewisburg SSATA Controller [AHCI mode] + a1d6 Lewisburg SSATA Controller [RAID mode] a1e7 Lewisburg PCI Express Root Port #17 a1e8 Lewisburg PCI Express Root Port #18 a1e9 Lewisburg PCI Express Root Port #19 @@ -26770,6 +27874,33 @@ a1fa Lewisburg IE: IDE-r a1fb Lewisburg IE: KT Controller a1fc Lewisburg IE: HECI #3 + a202 Lewisburg SATA Controller [AHCI mode] + a206 Lewisburg SATA Controller [RAID mode] + a223 Lewisburg SMBus + a224 Lewisburg SPI Controller + a242 Lewisburg LPC or eSPI Controller + a243 Lewisburg LPC or eSPI Controller + a252 Lewisburg SSATA Controller [AHCI mode] + a256 Lewisburg SSATA Controller [RAID mode] + a282 200 Series PCH SATA controller [AHCI mode] + a294 200 Series PCH PCI Express Root Port #1 + a2a1 200 Series PCH PMC + a2a3 200 Series PCH SMBus Controller + a2a7 200 Series PCH Serial IO UART Controller #0 + a2a8 200 Series PCH Serial IO UART Controller #1 + a2a9 200 Series PCH Serial IO SPI Controller #0 + a2aa 200 Series PCH Serial IO SPI Controller #1 + a2af 200 Series PCH USB 3.0 xHCI Controller + a2b1 200 Series PCH Thermal Subsystem + a2ba 200 Series PCH CSME HECI #1 + a2bb 200 Series PCH CSME HECI #2 + a2c6 200 Series PCH LPC Controller + a2e0 200 Series PCH Serial IO I2C Controller #0 + a2e1 200 Series PCH Serial IO I2C Controller #1 + a2e2 200 Series PCH Serial IO I2C Controller #2 + a2e3 200 Series PCH Serial IO I2C Controller #3 + a2e6 200 Series PCH Serial IO UART Controller #2 + a2f0 200 Series PCH HD Audio a620 6400/6402 Advanced Memory Buffer (AMB) abc0 Omni-Path Fabric Switch Silicon 100 Series b152 21152 PCI-to-PCI Bridge @@ -26814,7 +27945,8 @@ 8384 SigmaTel 8401 TRENDware International Inc. 8686 ScaleMP - 1010 vSMPowered system controller [vSMP CTL] + 1010 vSMP Foundation controller [vSMP CTL] + 1011 vSMP Foundation MEX/FLX controller [vSMP CTL] 8800 Trigem Computer Inc. 2008 Video assistant component 8866 T-Square Design Inc. @@ -27319,6 +28451,11 @@ bdbd Blackmagic Design a137 DeckLink Studio 4K a138 Decklink SDI 4K a139 Intensity Pro 4K + a13b DeckLink Micro Recorder + a13d DeckLink 4K Pro + a13e UltraStudio 4K Extreme + a13f DeckLink Quad 2 + a140 DeckLink Duo 2 c001 TSI Telsys c0a9 Micron/Crucial Technology c0de Motorola @@ -27543,6 +28680,7 @@ f1d0 AJA Video cafe Kona SD cfee Xena LS/SD-22-DA/SD-DA daff KONA LHi + db09 Corvid 24 dcaf Kona HD dfee Xena HD-DA efac Xena SD-MM/SD-22-MM diff --git a/src/hwdata/usb.ids b/src/hwdata/usb.ids index c029e2c0a..3e222f22b 100644 --- a/src/hwdata/usb.ids +++ b/src/hwdata/usb.ids @@ -9,8 +9,8 @@ # The latest version can be obtained from # http://www.linux-usb.org/usb.ids # -# Version: 2015.12.17 -# Date: 2015-12-17 20:34:05 +# Version: 2016.12.05 +# Date: 2016-12-05 20:34:05 # # Vendors, devices and interfaces. Please keep sorted. @@ -36,6 +36,7 @@ 145f NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] 0127 IBP 0002 HDM Interface + 0127 ibp 0145 Unknown 0112 Card Reader 017c MLK @@ -111,14 +112,26 @@ 2109 STK541 ZigBee Development Board 210d XPLAIN evaluation kit (CDC ACM) 2110 AVR JTAGICE3 Debugger and Programmer + 2111 Xplained Pro board debugger and programmer 2122 XMEGA-A1 Explained evaluation kit + 2140 AVR JTAGICE3 (v3.x) Debugger and Programmer 2141 ICE debugger + 2145 ATMEGA328P-XMINI (CDC ACM) 2310 EVK11xx evaluation board + 2404 The Micro 2fe4 ATxmega32A4U DFU bootloader 2fe6 Cactus V6 (DFU) 2fea Cactus RF60 (DFU) + 2fee atmega8u2 DFU bootloader + 2fef atmega16u2 DFU bootloader 2ff0 atmega32u2 DFU bootloader + 2ff1 at32uc3a3 DFU bootloader + 2ff3 atmega16u4 DFU bootloader 2ff4 atmega32u4 DFU bootloader + 2ff6 at32uc3b0/1 DFU bootloader + 2ff7 at90usb82 DFU bootloader + 2ff8 at32uc3a0/1 DFU bootloader + 2ff9 at90usb646/647 DFU bootloader 2ffa at90usb162 DFU bootloader 2ffb at90usb AVR DFU bootloader 2ffd at89c5130/c5131 DFU bootloader @@ -251,6 +264,7 @@ 0c24 Bluetooth Dongle 0d12 OfficeJet 9100 series 0d17 LaserJet 1012 + 0d4a SK-2025 Keyboard 0e17 LaserJet 1015 0f0c Wireless Keyboard and Optical Mouse receiver 0f11 OfficeJet V40 @@ -266,6 +280,7 @@ 1017 LaserJet 1300 1024 Smart Card Keyboard 1027 Virtual keyboard and mouse + 102a LaserJet Professional P 1102w 1102 PhotoSmart 240 series 1104 DeskJet 959c 1105 ScanJet 5470c/5490c @@ -360,6 +375,7 @@ 2205 ScanJet 3500c 2212 OfficeJet Pro L7600 2217 color LaserJet 9500 MFP + 222a LaserJet Pro MFP M125nw 2302 PhotoSmart 7600 series 2304 DeskJet 656c 2305 ScanJet 3970c @@ -411,7 +427,7 @@ 2e17 LaserJet 2600n 2e24 LP2275w Monitor Hub 2f11 PSC 1200 - 2f17 EWS 2605dn + 2f17 Color LaserJet 2605dn 2f24 LP2475w Monitor Hub 3002 PhotoSmart P1000 3004 DeskJet 980c @@ -429,6 +445,7 @@ 3217 LaserJet 3050 3302 PhotoSmart 1218 3304 DeskJet 990c + 3307 v125w Stick 3312 OfficeJet J6410 3317 LaserJet 3052 3402 PhotoSmart 1115 @@ -449,6 +466,7 @@ 3817 LaserJet P2015 series 3902 PhotoSmart 130 3912 Officejet Pro 8500 + 3917 LaserJet P2014 3a02 PhotoSmart 7150 3a11 OfficeJet 5500 series 3a17 Printing Support @@ -518,6 +536,7 @@ 5717 LaserJet M1120n MFP 5811 PhotoSmart C5100 series 5817 LaserJet M1319f MFP + 581d lt4112 Gobi 4G Module Network Device 5911 PhotoSmart C6180 5912 Officejet Pro 8600 5a11 PhotoSmart C7100 series @@ -610,10 +629,12 @@ 8711 Deskjet 2050 J510 8804 DeskJet 6980 series 8904 DeskJet 6940 series + 8911 Deskjet 1050 J410 8c07 Digital Stereo Headset 8c11 Deskjet F4500 series 9002 PhotoSmart M437 9102 PhotoSmart M537 + 9207 HD-4110 Webcam 9302 PhotoSmart R930 series 9402 PhotoSmart R837 9502 PhotoSmart R840 series @@ -1262,6 +1283,7 @@ 3060 Sound Blaster Audigy 2 ZS External 3061 SoundBlaster Audigy 2 ZS Video Editor 3090 Sound Blaster Digital Music SX + 30d0 Xmod 30d3 Sound Blaster Play! 3100 IR Receiver (SB0540) 3121 WoW tap chat @@ -1270,6 +1292,7 @@ 3f02 E-Mu 0202 3f04 E-Mu 0404 3f07 E-Mu Xmidi 1x1 + 3f0e Xmidi 1x1 Tab 4003 VideoBlaster Webcam Go Plus [W9967CF] 4004 Nomad II MG 4005 Webcam Blaster Go ES @@ -1330,6 +1353,7 @@ 4087 Live! Cam Socialize HD 1080 [VF0680] 4088 Live! Cam Chat HD [VF0700] 4095 Live! Cam Sync HD [VF0770] + 4097 Live! Cam Chat HD [VF0700] 4100 Nomad Jukebox 2 4101 Nomad Jukebox 3 4102 NOMAD MuVo^2 @@ -1504,7 +1528,10 @@ 0600 Digital Pen SU-1B 0610 CS-15 (Internet Stick 3G modem) 0661 Lumia 620/920 + 0662 301 Dual SIM (Mass Storage) + 0663 301 Dual SIM 069a 130 [RM-1035] (Charging only) + 06fc Lumia 640 Phone 0720 X (RM-980) 0800 Connectivity Cable DKU-5 0801 Data Cable DKU-6 @@ -1524,6 +1551,7 @@ 1237 Andromeda Hub 0424 Standard Microsystems Corp. 0001 Integrated Hub + 0140 LPC47M14x hub 0acd Sitecom Internal Multi Memory reader/writer MD-005 0fdc Floppy 10cd Sitecom Internal Multi Memory reader/writer MD-005 @@ -1551,6 +1579,7 @@ 7500 LAN7500 Ethernet 10/100/1000 Adapter 9512 SMC9512/9514 USB Hub 9514 SMC9514 Hub + 9904 LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10) a700 2 Port Hub ec00 SMSC9512/9514 Fast Ethernet Adapter 0425 Motorola Semiconductors HK, Ltd @@ -1589,6 +1618,7 @@ 0431 Itac Systems, Inc. 0100 Mouse-Trak 3-button Track Ball 0432 Unisys Corp. + 0031 Document Processor 0433 Alps Electric, Inc. 1101 IBM Game Controller abab Keyboard @@ -1776,6 +1806,10 @@ 6781 Keyboard with PS/2 Mouse Port 6782 Keyboard 0447 Momentum Microsystems +0449 Duta Multi Robotik + 0128 Menengah + 0210 Dasar + 0612 Lanjutan 044a Shamrock Tech. Co., Ltd 044b WSI 044c CCL/ITRI @@ -1798,6 +1832,8 @@ ffff Compaq Bluetooth Multiport Module 044f ThrustMaster, Inc. 0400 HOTAS Cougar + 0402 HOTAS Warthog Joystick + 0404 HOTAS Warthog Throttle 044f GP XID a003 Rage 3D Game Pad a01b PK-GP301 Driving Wheel @@ -1841,7 +1877,10 @@ 6060 RNDIS/BeWAN ADSL2+ 6070 RNDIS/BeWAN ADSL2+ 625f TUSB6250 ATA Bridge + 8041 Hub 8042 Hub + 8043 Hub + 8140 TUSB8041 4-Port Hub 8142 TUSB8041 4-Port Hub 926b TUSB9260 Boot Loader dbc0 Device Bay Controller @@ -2058,7 +2097,7 @@ 0080 Digital Media Pro Keyboard 0083 Basic Optical Mouse 0084 Basic Optical Mouse - 008a Wireless Keyboard and Mouse + 008a Wireless Optical Desktop Receiver 2.0A 008b Dual Receiver Wireless Mouse (IntelliPoint) 008c Wireless Intellimouse Explorer 2.0 0095 IntelliMouse Explorer 4.0 (IntelliPoint) @@ -2081,7 +2120,7 @@ 00da eHome Infrared Receiver 00db Natural Ergonomic Keyboard 4000 V1.0 00dd Comfort Curve Keyboard 2000 V1.0 - 00e1 Wireless Laser Mouse 6000 Reciever + 00e1 Wireless Laser Mouse 6000 Receiver 00f4 LifeCam VX-6000 (SN9C20x + OV9650) 00f5 LifeCam VX-3000 00f6 Comfort Optical Mouse 1000 @@ -2089,7 +2128,7 @@ 00f8 LifeCam NX-6000 00f9 Wireless Desktop Receiver 3.1 0202 Xbox Controller - 0280 XBox Device + 0280 Xbox Memory Unit (8MB) 0283 Xbox Communicator 0284 Xbox DVD Playback Kit 0285 Xbox Controller S @@ -2111,12 +2150,14 @@ 02ad Xbox NUI Audio 02ae Xbox NUI Camera 02b0 Xbox NUI Motor - 02b6 Xbox 360 / Bluetooth Wireless Headset + 02b6 Xbox360 Bluetooth Wireless Headset 02be Kinect for Windows NUI Audio 02bf Kinect for Windows NUI Camera 02c2 Kinect for Windows NUI Motor - 02d1 XBOX One Controller for Windows + 02d1 Xbox One Controller 02d5 Xbox One Digital TV Tuner + 02dd Xbox One Controller (Covert Forces/Firmware 2015) + 02e6 Wireless XBox Controller Dongle 0400 Windows Powered Pocket PC 2002 0401 Windows Powered Pocket PC 2002 0402 Windows Powered Pocket PC 2002 @@ -2267,6 +2308,7 @@ 0750 Wired Keyboard 600 0752 Wired Keyboard 400 075d LifeCam Cinema + 0761 LifeCam VX-2000 0766 LifeCam VX-800 0768 Sidewinder X4 076c Comfort Mouse 4500 @@ -2276,6 +2318,8 @@ 0780 Comfort Curve Keyboard 3000 0797 Optical Mouse 200 07a5 Wireless Receiver 1461C + 07b9 Wired Keyboard 200 + 07ca Surface Pro 3 Docking Station Audio Device 07f8 Wired Keyboard 600 (model 1576) 07fd Nano Transceiver 1.1 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board @@ -2370,6 +2414,8 @@ 0081 eHealth Keyboard G87 1504 0106 R-300 Wireless Mouse Receiver 010d MX-Board 3.0 Keyboard + b090 Keyboard + b091 Mouse 046b American Megatrends, Inc. 0001 Keyboard 0101 PS/2 Keyboard, Mouse & Joystick Ports @@ -2509,6 +2555,8 @@ 0a0b ClearChat Pro USB 0a0c Clear Chat Comfort USB Headset 0a13 Z-5 Speakers + 0a14 USB Headset + 0a15 G35 Headset 0a17 G330 Headset 0a1f G930 0a29 H600 [Wireless Headset] @@ -2518,6 +2566,7 @@ 0a4d G430 Surround Sound Gaming Headset 0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) 8801 Video Camera + b014 Bluetooth Mouse M336/M337/M535 b305 BT Mini-Receiver bfe4 Premium Optical Wheel Mouse c000 N43 [Pilot Mouse] @@ -2588,8 +2637,10 @@ c06c Optical Mouse c077 M105 Optical Mouse c07c M-R0017 [G700s Rechargeable Gaming Mouse] + c07d G502 Mouse + c07e G402 Gaming Mouse c101 UltraX Media Remote - c110 Harmony 785/885 Remote + c110 Harmony 785/880/885 Remote c111 Harmony 525 Remote c112 Harmony 890 Remote c11f Harmony 900/1100 Remote @@ -2610,7 +2661,7 @@ c20c WingMan Precision c20d WingMan Attack 2 c20e WingMan Formula GP - c211 iTouch Cordless Reciever + c211 iTouch Cordless Receiver c212 WingMan Extreme Digital 3D c213 J-UH16 (Freedom 2.4 Cordless Joystick) c214 ATK3 (Attack III Joystick) @@ -2635,6 +2686,7 @@ c22b Gaming Keyboard G110 G-keys c22d G510 Gaming Keyboard c22e G510 Gaming Keyboard onboard audio + c231 G13 Virtual Mouse c245 G400 Optical Mouse c246 Gaming Mouse G300 c248 G105 Gaming Keyboard @@ -2657,6 +2709,7 @@ c29c Speed Force Wireless Wheel for Wii c2a0 Wingman Force Feedback Mouse c2a1 WingMan Force Feedback Mouse + c2ab G13 Joystick c301 iTouch Keyboard c302 iTouch Pro Keyboard c303 iTouch Keyboard @@ -2681,6 +2734,7 @@ c31b Compact Keyboard K300 c31c Keyboard K120 c31d Media Keyboard K200 + c332 G502 Proteus Spectrum Optical Mouse c401 TrackMan Marble Wheel c402 Marble Mouse (2-button) c403 Turbo TrackMan Marble FX @@ -3019,8 +3073,11 @@ a007 External Disk USB 3.0 a009 Stor.E Basics a00d STOR.E BASICS 500GB + a100 Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA a202 Canvio Basics HDD + a208 Canvio Basics 2TB USB 3.0 Portable Hard Drive b001 Stor.E Partner + b207 Canvio Ready d000 External Disk 2TB Model DT01ABA200 d010 External Disk 3TB d011 Canvio Desk @@ -3028,6 +3085,7 @@ 0482 Kyocera Corp. 000e FS-1020D Printer 000f FS-1920 Mono Printer + 0015 FS-1030D printer 0100 Finecam S3x 0101 Finecam S4 0103 Finecam S5 @@ -3037,6 +3095,7 @@ 0108 Digital Camera Device 0203 AH-K3001V 0204 iBurst Terminal + 0408 FS-1320D Printer 0483 STMicroelectronics 0137 BeWAN ADSL USB ST (blue or green) 0138 Unicorn II (ST70138B + MTC-20174TQ chipset) @@ -3047,11 +3106,10 @@ 2017 Biometric Smart Card Reader 2018 BioSimKey 2302 Portable Flash Device (PFD) - 347b ST-LINK/V2-1 - 3744 STLINK Pseudo disk + 3744 ST-LINK/V1 3747 ST Micro Connect Lite 3748 ST-LINK/V2 - 374b ST-LINK/V2.1 (Nucleo-F103RB) + 374b ST-LINK/V2.1 4810 ISDN adapter 481d BT Digital Access adapter 5000 ST Micro/Ergenic ERG BT-002 Bluetooth Adapter @@ -3091,6 +3149,7 @@ 048c Alps Electric Ireland, Ltd 048d Integrated Technology Express, Inc. 1165 IT1165 Flash Controller + 1172 Flash Drive 1336 SD/MMC Cardreader 1345 Multi Cardreader 9006 IT9135 BDA Afatech DVB-T HDTV Dongle @@ -3165,6 +3224,7 @@ 103c MOTIF-RACK ES 1054 S90XS Keyboard/Music Synthesizer 160f P-105 + 1613 Clavinova CLP535 2000 DGP-7 2001 DGP-5 3001 YST-MS55D USB Speaker @@ -3423,8 +3483,12 @@ 10a8 iP6220D 10a9 iP6600D 10b6 PIXMA iP4300 Printer + 10b7 PIXMA iP5300 Printer 10c2 PIXMA iP1800 Printer 10c4 Pixma iP4500 Printer + 10c9 PIXMA iP4600 Printer + 10ca PIXMA iP3600 Printer + 10e3 PIXMA iX6850 Printer 1404 W6400PG 1405 W8400PG 150f BIJ2350 PCL @@ -3462,7 +3526,7 @@ 1725 MP610 ser 1726 MP970 ser 1727 MX300 ser - 1728 MX310 ser + 1728 PIXMA MX310 series 1729 MX700 ser 172b MP140 ser 1736 PIXMA MX320 series @@ -3473,6 +3537,7 @@ 1748 Pixma MG5150 174d MX360 ser 176d PIXMA MG2550 + 178d PIXMA MG6853 1900 CanoScan LiDE 90 1901 CanoScan 8800F 1904 CanoScan LiDE 100 @@ -3483,6 +3548,7 @@ 190a CanoScan LiDE 210 190d CanoScan 9000F Mark II 190e CanoScan LiDE 120 + 190f CanoScan LiDE 220 2200 CanoScan LiDE 25 2201 CanoScan FB320U 2202 CanoScan FB620U @@ -3551,6 +3617,7 @@ 2650 iR 6800C EUR 2651 iR 3100C EUR 2655 FP-L170/MF350/L380/L398 + 2656 iR1510-1670 CAPT Printer 2659 MF8100 265b CAPT Printer 265c iR C3220 @@ -3870,6 +3937,7 @@ 3276 PowerShot SX170 IS 3277 PowerShot SX510 HS 3278 PowerShot S200 + 327a SELPHY CP910 327d Powershot ELPH 115 IS / IXUS 132 327f EOS Rebel T5 / EOS 1200D / EOS Kiss X70 3284 PowerShot D30 @@ -3884,10 +3952,14 @@ 329a PowerShot SX60 HS 329b PowerShot SX520 HS 329c PowerShot SX400 IS + 329d PowerShot G7 X 329f PowerShot SX530 HS 32a6 PowerShot SX710 HS 32aa Powershot ELPH 160 / IXUS 160 32ac PowerShot ELPH 170 IS / IXUS 170 + 32ad PowerShot SX410 IS + 32b1 SELPHY CP1200 + 32c1 PowerShot ELPH 180 / IXUS 175 04aa DaeWoo Telecom, Ltd 04ab Chromatic Research 04ac Micro Audiometrics Corp. @@ -4023,6 +4095,7 @@ 4381 SCAPS USC-1 Scanner Controller 4611 Storage Adapter FX2 (CY) 4616 Flash Disk (TPP) + 4624 DS-Xtreme Flash Card 5201 Combi Keyboard-Hub (Hub) 5202 Combi Keyboard-Hub (Keyboard) 5500 HID->COM RS232 Adapter @@ -4045,6 +4118,7 @@ f000 CY30700 Licorice evaluation board f111 CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit f115 PSoC FirstTouch Programmer + f232 Mono embedded computer fd13 Programmable power socket 04b5 ROHM LSI Systems USA, LLC 3064 Hantek DSO-3064 @@ -4109,6 +4183,7 @@ 0142 GT-F730 [GT-S630/Perfection V33/V330 Photo] 0143 GT-S55 0144 GT-S85 + 0151 Perfection V800 Photo 0202 Receipt Printer M129C/TM-T70 0401 CP 800 Digital Camera 0402 PhotoPC 850z @@ -4338,6 +4413,7 @@ 10e7 fi-5900C 10fe S500 1150 fi-6230 + 125a PalmSecure Sensor Device - MP 201d SATA 3.0 6Gbit/s Adaptor [GROOVY] 04c6 Toshiba America Electronic Components 04c7 Micro Macro Technologies @@ -4352,14 +4428,17 @@ 072c Revio KD20M 072d Revio KD410Z 04ca Lite-On Technology Corp. + 004b Keyboard 004f SK-9020 keyboard 1766 HID Monitor Controls 2004 Bluetooth 4.0 [Broadcom BCM20702A0] 2006 Broadcom BCM43142A0 Bluetooth Device + 2007 Broadcom BCM43142A0 Bluetooth Device + 3005 Atheros Bluetooth 300b Atheros AR3012 Bluetooth 300d Atheros AR3012 Bluetooth 300f Atheros AR3012 Bluetooth - 3014 Qualcoom Atheros Bluetooth + 3014 Qualcomm Atheros Bluetooth 7025 HP HD Webcam 7046 TOSHIBA Web Camera - HD 9304 Hub @@ -4514,6 +4593,7 @@ c001 PicoLCD 20x4 e11c TL866CS EEPROM Programmer [MiniPRO] f2c4 Macareux-labs Hygrometry Temperature Sensor + f2f7 Yepkit YKUSH f3aa Macareux-labs Usbce Bootloader mode f437 SBE Tech Ultrasonic Anemometer f4b5 SmartScope @@ -4538,6 +4618,7 @@ 1503 Keyboard 1603 Keyboard 1702 Keyboard LKS02 + 1818 Keyboard [Diatec Filco Majestouch 2] 2011 Keyboard [Diatec Filco Majestouch 1] 2013 Keyboard [Das Keyboard] 2221 Keyboard @@ -4545,6 +4626,8 @@ 2519 Shenzhen LogoTech 2.4GHz receiver 2832 HT82A832R Audio MCU 2834 HT82A834R Audio MCU + a01c wireless multimedia keyboard with trackball [Trust ADURA 17911] + a050 Chatman V1 a055 Keyboard 04da Panasonic (Matsushita) 0901 LS-120 Camera @@ -4729,6 +4812,7 @@ 1003 MP3 Player and Recorder 1006 SDC-200Z 130c NX100 + 1323 WB700 Camera 1f05 S2 Portable [JMicron] (500GB) 1f06 HX-MU064DA portable harddisk 2018 WIS09ABGN LinkStick Wireless LAN Adapter @@ -4874,6 +4958,7 @@ 6125 D3 Station External Hard Drive 61b5 M3 Portable Hard Drive 2TB 61b6 M3 Portable Hard Drive 1TB + 61f3 MU-PT500B [T3 500GB USB SSD] 6601 Mobile Phone 6602 Galaxy 6603 Galaxy @@ -4972,6 +5057,7 @@ 0403 KU-0420 keyboard 0418 KU-0418 Tactical Pad 0618 RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad + 0718 wired mouse 0760 Acer KU-0760 Keyboard 0841 HP Multimedia Keyboard 0860 2.4G Multimedia Wireless Kit @@ -5028,6 +5114,7 @@ b1b9 Asus Integrated Webcam b1cf Lenovo Integrated Camera b1d6 CNF9055 Toshiba Webcam + b1d8 1.3M Webcam b1e4 Toshiba Integrated Webcam b213 Fujitsu Integrated Camera b217 Lenovo Integrated Camera (0.3MP) @@ -5559,9 +5646,10 @@ 2015 QL-500 P-touch label printer 2016 QL-550 P-touch label printer 201a PT-18R P-touch label printer - 201b QL-650TD P-Touch Label Printer - 2027 QL-560 P-Touch Label Printer - 202b PT-7600 P-Touch Label Printer + 201b QL-650TD P-touch Label Printer + 2027 QL-560 P-touch Label Printer + 2028 QL-570 P-touch Label Printer + 202b PT-7600 P-touch Label Printer 2100 Card Reader Writer 60a0 ADS-2000 60a1 ADS-2100 @@ -5587,6 +5675,7 @@ 0538 Wireless Optical Mouse 2.4G [Bright] 0561 Flexcam 100 05d8 Wireless keyboard/mouse + 05da SPEEDLINK SNAPPY Wireless Mouse Nano 0c15 SPIF215A SATA bridge 0c25 SATALink SPIF225A 1528 SPCA1527A/SPCA1528 SD card camera (webcam mode) @@ -5940,6 +6029,7 @@ 2750 EZ-Link (EZLNKUSB.SYS) 2810 Cypress ATAPI Bridge 4d90 AmScope MD1900 camera + 6510 Touptek UCMOS05100KPA 7000 PowerSpec MCE460 Front Panel LED Display 7777 Bluetooth Device 9999 AN2131 uninitialized (?) @@ -6067,6 +6157,7 @@ 021b Net MD 021c Hi-MD WALKMAN 021d Net MD + 0226 UP-CR10L 0227 Printing Support 022c Net MD 022d Hi-MD AUDIO @@ -6169,6 +6260,7 @@ 2009 UC-210T Ethernet 2011 UC-2324 4xSerial Ports [mos7840] 2202 CS124U Miniview II KVM Switch + 2212 Keyboard/Mouse 2213 CS682 2-Port USB 2.0 DVI KVM Switch 2221 Winbond Hermon 2404 4-port switch @@ -6177,7 +6269,7 @@ 4000 DSB-650 10Mbps Ethernet [klsi] 7000 Hub 7820 UC-2322 2xSerial Ports [mos7820] - 8021 CS1764A [CubiQ DVI KVMP Switch] + 8021 Hub 0558 Truevision, Inc. 1009 GW Instek GDS-1000 Oscilloscope 100a GW Instek GDS-1000A Oscilloscope @@ -6361,8 +6453,8 @@ 00bb PTK-1240 [Intuos4 (12x19)] 00c0 DTF-521 00c4 DTF-720 - 00c5 DTZ-20WSX [Cintiq 20WSX] - 00c6 DTZ-12WX [Cintiq 12WX] + 00c5 DTZ-2000W [Cintiq 20WSX] + 00c6 DTZ-1200W [Cintiq 12WX] 00c7 DTU-1931 00cc DTK-2100 [Cintiq 21UX] 00ce DTU-2231 @@ -6401,6 +6493,7 @@ 010f TPC10F 0116 TPC116 012c TPC12C + 0221 MDP-123 [Inkling] 0300 CTL-471 [Bamboo Splash, One by Wacom (S)] 0301 CTL-671 [One by Wacom (M)] 0302 CTH-480 [Intuos Pen & Touch (S)] @@ -6412,7 +6505,14 @@ 0314 PTH-451 [Intuos pro (S)] 0315 PTH-651 [Intuos pro (M)] 0317 PTH-851 [Intuos pro (L)] + 0318 CTH-301 [Bamboo] 032f DTU-1031X + 0347 Integrated Hub + 0348 Integrated Hub + 034a DTH-W1320 [MobileStudio Pro 13] touchscreen + 034b DTH-W1620 [MobileStudio Pro 16] touchscreen + 034d DTH-W1320 [MobileStudio Pro 13] tablet + 034e DTH-W1620 [MobileStudio Pro 16] tablet 0400 PenPartner 4x5 4001 TPC4001 4004 TPC4004 @@ -6903,6 +7003,7 @@ 001e Projector 001f Projector ffe5 IN34 Projector + ffeb Projector IN76 058d Micrel Semiconductor 058e Tripath Technology, Inc. 058f Alcor Micro Corp. @@ -6945,7 +7046,7 @@ 9410 Keyboard 9472 Keyboard Hub 9510 ChunghwaTL USB02 Smartcard Reader - 9520 EMV Certified Smart Card Reader + 9520 Watchdata W 1981 9540 AU9540 Smartcard Reader 9720 USB-Serial Adapter a014 Asus Integrated Webcam @@ -7010,6 +7111,7 @@ 017c HDD/1394B 0251 Optical 0252 Optical + 0275 ST332082 0A 0278 LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] 027a LPHD250-U [Portable Hard Drive Silver Series 250 Go] 0470 Prestige Portable Hard Drive @@ -7034,6 +7136,7 @@ 0829 BigDisk Extreme+ 100c Rugged Triple Interface Mobile Hard Drive 1010 Desktop Hard Drive + 1016 Desktop Hard Drive 1018 Desktop Hard Drive 1019 Desktop Hard Drive 1021 Little Disk @@ -7042,6 +7145,7 @@ 1049 rikiki Harddrive 1052 P'9220 Mobile Drive 1064 Rugged 16 and 32 GB + 106d Porsche Design Mobile Drive 106e Porsche Design Desktop Drive a601 HardDrive a602 CD R/W @@ -7165,7 +7269,11 @@ 0252 Internal Keyboard/Trackpad (ANSI) 0253 Internal Keyboard/Trackpad (ISO) 0254 Internal Keyboard/Trackpad (JIS) + 0259 Internal Keyboard/Trackpad 0263 Apple Internal Keyboard / Trackpad (MacBook Retina) + 0267 Magic Keyboard A1644 + 0269 Magic Mouse 2 (Lightning connector) + 0273 Internal Keyboard/Trackpad (ISO) 0301 USB Mouse [Mitsumi, M4848] 0302 Optical Mouse [Fujitsu] 0304 Mighty Mouse [Mitsumi, M1152] @@ -7266,6 +7374,7 @@ 8281 Bluetooth Host Controller 8286 Bluetooth Host Controller 828c Bluetooth Host Controller + 8290 Bluetooth Host Controller 8300 Built-in iSight (no firmware loaded) 8403 Internal Memory Card Reader 8404 Internal Memory Card Reader @@ -7311,6 +7420,7 @@ 05b7 Medianix Semiconductor, Inc. 05b8 Agiler, Inc. 3002 Scroll Mouse + 3223 ISY Wireless Presenter 05b9 Philips Research Laboratories 05ba DigitalPersona, Inc. 0007 Fingerprint Reader @@ -7375,6 +7485,7 @@ 6001 Ten-Keypad 05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) 0103 FO13FF-65 PC-CAM + 010b Webcam (UVC) 021a HP Webcam 0318 Webcam 0361 SunplusIT INC. HP Truevision HD Webcam @@ -7650,6 +7761,7 @@ a560 JumpDrive FireFly a701 JumpDrive FireFly a731 JumpDrive FireFly + a762 JumpDrive FireFly a768 JumpDrive Retrax a790 JumpDrive 2GB a811 16GB Gizmo! @@ -7660,7 +7772,9 @@ b018 Multi-Card Reader b047 SDHC Reader [RW047-7000] ba02 Workflow CFR1 + ba0a Workflow DD512 c753 JumpDrive TwistTurn + c75c JumpDrive V10 05dd Delta Electronics, Inc. ff31 AWU-120 ff32 FriendlyNET AeroLAN AL2011 @@ -7711,6 +7825,7 @@ 0607 Logitech G110 Hub 0608 Hub 0610 4-port hub + 0612 Hub 0616 hub 0660 USB 2.0 Hub 0700 SIIG US2256 CompactFlash Card Reader @@ -7745,6 +7860,8 @@ 0741 microSD Card Reader 0743 SDXC and microSDXC CardReader 0745 Logilink CR0012 + 0748 All-in-One Cardreader + 0751 microSD Card Reader 0760 USB 2.0 Card Reader/Writer 0761 Genesys Mass Storage Device 0780 USBFS DFU Adapter @@ -7820,6 +7937,7 @@ 262a 3dfx HammerHead FX 262f HammerHead Fx daae Game Shark + dbae Datel XBoxMC 05fe Chic Technology Corp. 0001 Mouse 0003 Cypress USB Mouse @@ -7854,6 +7972,7 @@ 060b Solid Year 0001 MacAlly Keyboard 0230 KSK-8003 UX Keyboard + 0540 DeltaCo TB-106U Keyboard 1006 Japanese Keyboard - 260U 2101 Keyboard 2231 KSK-6001 UELX Keyboard @@ -7878,6 +7997,8 @@ 0615 Quabbin Wire & Cable Co., Inc. 0616 Future Techno Designs PVT, Ltd 0617 Swiss Federal Insitute of Technology + 000a Thymio-II + 000c Thymio-II Wireless 0618 MacAlly 0101 Mouse 0619 Seiko Instruments, Inc. @@ -7926,6 +8047,7 @@ 0102 Wireless Keyboard/Mouse Combo [MK1152WC] 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 0252 Emerge Uni-retractable Laser Mouse + 2410 Wireless PS3 gamepad 3286 Nano Receiver [Sandstrom Laser Mouse SMWLL11] 4101 Wireless Keyboard/Mouse 6301 Trust Wireless Optical Mouse MI-4150K @@ -8009,12 +8131,15 @@ c107 HP webcam [dv6-1190en] c335 HP TrueVision HD d101 Acer CrystalEye Webcam + d213 UVC HD Webcam d217 HP TrueVision HD e201 Lenovo Integrated Webcam e203 Lenovo Integrated Webcam e258 HP TrueVision HD Integrated Webcam + e263 HP TrueVision HD Integrated Webcam f102 Lenovo Integrated Webcam [R5U877] f103 Lenovo Integrated Webcam [R5U877] + f209 HP Webcam f300 UVC 0.3M Webcam 064f WIBU-Systems AG 03e9 CmStick (article no. 1001) @@ -8237,6 +8362,7 @@ 3507 PL3507 ATAPI6 Bridge aaa0 Prolific Pharos aaa2 PL2303 Serial Adapter (IODATA USB-RSAQ3) + aaa3 PL2303x Serial Adapter 067c Efficient Networks, Inc. 1001 Siemens SpeedStream 100MBps Ethernet 1022 Siemens SpeedStream 1022 802.11b Adapter @@ -8349,12 +8475,15 @@ 0694 Lego Group 0001 Mindstorms Tower 0002 Mindstorms NXT + 0005 Mindstorms EV3 + 0006 Mindstorms EV3 Firmware Update 0698 Chuntex (CTX) 1786 1300ex Monitor 2003 CTX M730V built in Camera 9999 VLxxxx Monitor+Hub 0699 Tektronix, Inc. 0347 AFG 3022B + 036a TDS 2024B 069a Askey Computer Corp. 0001 VC010 Webcam [pwc] 0303 Cable Modem @@ -8636,6 +8765,12 @@ 0393 CP9500D/DW Port 0394 CP9000D/DW Port 03a1 CP9550D/DW Port + 03a5 CP9550DW-S + 03a9 CP-9600DW + 03aa CP3020DA + 03ad CP-9800DW-S + 03ae CP-9800DW-S + 3b10 P95D 3b30 CP-D70DW / CP-D707DW 3b31 CP-K60DW-S 06d4 Cisco Systems @@ -8854,7 +8989,7 @@ 5100 Magic Control Technology Corp. (USB2VGA dongle) 0713 Interval Research Corp. 0714 NewMotion, Inc. - 0003 ADB to USB convertor + 0003 ADB converter 0717 ZNK Corp. 0718 Imation Corp. 0002 SuperDisk 120MB @@ -8874,11 +9009,13 @@ 0622 TDK Trans-It 4GB 0624 TDK Trans-It 16GB 1120 RDX External dock (redbud) + 4006 8x Slim DVD Multi-Format Recorder External d000 Disc Stakka CD/DVD Manager 0719 Tremon Enterprises Co., Ltd 071b Domain Technologies, Inc. 0002 DTI-56362-USB Digital Interface Unit 0101 Audio4-USB DSP Data Acquisition Unit + 0184 Archos 2 8GB EM184RB 0201 Audio4-5410 DSP Data Acquisition Unit 0301 SB-USB JTAG Emulator 3203 Rockchip Media Player @@ -8960,8 +9097,8 @@ 0630 VQ630 Dual Mode Digital Camera(Bulk) 0631 Hercules Dualpix 0780 Smart Cam Deluxe(composite) - 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 - 1311 Digital Dream Epsilon 1.3 + 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode) + 1311 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode) 1314 Mercury 2.1MEG Deluxe Classic Cam 2211 Jenoptik jdc 21 LCD Camera 2221 Mercury Digital Pro 3.1p @@ -9062,7 +9199,7 @@ 1015 M-Audio Keystation 1020 Midisport 4x4 1021 MidiSport 4x4 - 1030 Midisport 8x8 + 1030 M-Audio MIDISPORT 8x8 1031 MidiSport 8x8/s Loader 1033 MidiSport 8x8/s 1040 M-Audio MidiSport 2x4 Loader @@ -9087,7 +9224,7 @@ 201b M-Audio RunTime DFU 201d M-Audio Producer 2024 M-Audio Fast Track MKII - 2080 M-Audio RunTime DFU + 2080 M-Audio Fast Track Ultra 2081 M-Audio RunTime DFU / Fast Track Ultra 8R 2803 M-Audio Audiophile DFU 2804 M-Audio MobilePre DFU @@ -9103,6 +9240,7 @@ 0601 PR1500LCDRT2U UPS 0765 X-Rite, Inc. 5001 Huey PRO Colorimeter + 5010 X-Rite Pantone Color Sensor 5020 i1 Display Pro 6003 ColorMunki Smile d094 X-Rite DTP94 [Quato Silver Haze Pro] @@ -9201,13 +9339,19 @@ 540e Cruzer Contour Flash Drive 5530 Cruzer 5567 Cruzer Blade + 556b Cruzer Edge 556c Ultra 556d Memory Vault 5571 Cruzer Fit + 5575 Cruzer Glide 5576 Cruzer Facet + 5577 Cruzer Pop (8GB) 557d Cruzer Force (64GB) 5580 SDCZ80 Flash Drive 5581 Ultra + 5583 Ultra Fit + 5590 Ultra Dual + 5591 Ultra Flair 5e10 Encrypted 6100 Ultra II SD Plus 2GB 7100 Cruzer Mini @@ -9268,6 +9412,7 @@ a7e8 SDDR-113 MicroMate SDHC Reader b2b3 SDDR-103 MobileMate SD+ Reader b4b5 SDDR-89 V4 ImageMate 12-in-1 Reader + b6ba CF SDDR-289 0782 Trackerball 0783 C3PO 0003 LTC31 SmartCard Reader @@ -9702,6 +9847,7 @@ 4107 CW-L300 Device 4500 LV-20 Digital Camera 6101 fx-9750gII + 6102 fx-CP400 6801 PL-40R 6802 MIDI Keyboard 07d0 Dazzle @@ -9773,6 +9919,8 @@ 07de Diamond Multimedia 2820 VC500 Video Capture Dongle 07df David Electronics Co., Ltd +07e0 NCP engineering GmbH + 4742 VPN GovNet Box 07e1 Ambient Technologies, Inc. 5201 V.90 Modem 07e2 Elmeg GmbH & Co., Ltd @@ -9808,9 +9956,11 @@ 1196 BWIFI-USB54AR 802.11bg a904 BeWAN ADSL a905 BeWAN ADSL ST +07fc Thomann + 1113 SWISSONIC EasyKeys61 Midikeyboard 07fd Mark of the Unicorn 0000 FastLane MIDI Interface - 0001 FastLane Quad MIDI Interface + 0001 MIDI Interface 0002 MOTU Audio for 64 bit 07ff Unknown 00ff Portable Hard Drive @@ -10012,6 +10162,7 @@ 9010 WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] 9011 WNDA3100v2 802.11abgn [Broadcom BCM4323] 9012 WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] + 9014 WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U] 9018 WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 9020 WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] 9021 WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU] @@ -10195,14 +10346,21 @@ 01f4 USBSIMM1 08b9 RadioShack Corp. (Tandy) 08bb Texas Instruments - 2702 Speakers - 2704 Audio Codec - 2706 PCM2706 Audio Codec + 2702 PCM2702 16-bit stereo audio DAC + 2704 PCM2704 16-bit stereo audio DAC + 2705 PCM2705 stereo audio DAC + 2706 PCM2706 stereo audio DAC + 2707 PCM2707 stereo audio DAC + 27c4 PCM2704C stereo audio DAC + 27c5 PCM2705C stereo audio DAC + 27c6 PCM2706C stereo audio DAC + 27c7 PCM2707C stereo audio DAC 2900 PCM2900 Audio Codec 2901 PCM2901 Audio Codec 2902 PCM2902 Audio Codec 2904 PCM2904 Audio Codec 2910 PCM2912 Audio Codec + 2912 PCM2912A Audio Codec 29b0 PCM2900B Audio CODEC 29b2 PCM2902 Audio CODEC 29b3 PCM2903B Audio CODEC @@ -10257,6 +10415,7 @@ 2011 Pocket CAM 3 Mega (storage) 2016 PocketCam 2 Mega 2018 Pencam SD 2M + 2019 Pencam SD 2M (mass storage mode) 2020 Slim 3000F 2022 Slim 3200 2024 Pocket DV3500 @@ -10369,6 +10528,7 @@ 0002 CECT M800 memory card 08ee CCSI/Hesso 08f0 Corex Technologies + 0005 CardScan 800c 08f1 CTI Electronics Corp. 08f2 Gotop Information Inc. 007f Super Q2 Tablet @@ -10553,6 +10713,8 @@ 0003 GPS (various models) 0004 iQue 3600 0200 Data Card Programmer (install) + 086e Forerunner 735XT + 097f Forerunner 235 1200 Data Card Programmer 21a5 etrex Cx (msc) 2236 nuvi 360 @@ -10569,6 +10731,8 @@ 2535 Edge 800 253c GPSmap 62sc 255b Nuvi 2505LM + 26a1 Nuvi 55 + 47fb nuviCam 0920 Echelon Co. 7500 Network Interface 0921 GoHubs, Inc. @@ -10586,6 +10750,8 @@ 0924 Xerox 23dd DocuPrint M760 (X760_USB) 3ce8 Phaser 3428 Printer + 3cea Phaser 3125 + 3cec Phaser 3250 3d5b Phaser 6115MFP TWAIN Scanner 3d6d WorkCentre 6015N/NI 420f WorkCentre PE220 Series @@ -10616,6 +10782,7 @@ 0009 Gigabeat F/X (HDD audio player) 000c Gigabeat F (mtp) 0010 Gigabeat S (mtp) + 01bf 2.5"External Hard Disk 0200 Integrated Bluetooth (Taiyo Yuden) 021c Atheros AR3012 Bluetooth 0301 PCX1100U Cable Modem (WDM) @@ -10640,6 +10807,7 @@ 070a Pocket PC e400 Series 070b Pocket PC e800 Series 0a07 WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] + 0a08 WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] 0a13 AX88179 Gigabit Ethernet [Toshiba] 0b05 PX1220E-1G25 External hard drive 0b09 PX1396E-3T01 External hard drive @@ -10692,7 +10860,7 @@ 653d Kingston DataTraveler 2.0 Stick (1GB) 653e Flash Memory 6540 TransMemory Flash Memory - 6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB) + 6544 TransMemory-Mini / Kingston DataTraveler 2.0 Stick 6545 Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick 0931 Harmonic Data Systems, Ltd 0932 Crescentec Corp. @@ -10785,6 +10953,7 @@ 1603 DataTraveler 1GB/2GB Pen Drive 1606 Eee PC 701 SD Card Reader [ENE UB6225] 1607 DataTraveler 100 + 160b DataTraveler 2.0 (2GB) 160d DataTraveler Vault Privacy 160e DT110P/1GB Capless 1613 DataTraveler DT101C Flash Drive @@ -10800,15 +10969,18 @@ 1643 DataTraveler G3 1653 Data Traveler 100 G2 8 GiB 1656 DataTraveler Ultimate G2 + 1660 Data Traveller 108 1665 Digital DataTraveler SE9 64GB - 1666 DataTraveler G4 + 1666 DataTraveler 100 G3/G4/SE9 G2 1689 DataTraveler SE9 168a DataTraveler Micro 168c DT Elite 3.0 0954 RPM Systems Corp. 0955 NVidia Corp. + 7018 APX 7030 Tegra 3 (recovery mode) 7100 Tegra Device + 7210 SHIELD Controller 7820 Tegra 2 AC100 developer mode b400 SHIELD (debug) b401 SHIELD @@ -10841,7 +11013,13 @@ 0204 WarpLink 802.11b Adapter 0968 Catalyst Enterprises, Inc. 096e Feitian Technologies, Inc. + 0005 ePass2000 0120 Microcosm Ltd Dinkey + 0305 ePass2000Auto + 0309 ePass3000GM + 0401 ePass3000 + 0702 ePass3003 + 0703 ePass3003Auto 0802 ePass2000 (G&D STARCOS SPK 2.4) 0807 ePass2003 0971 Gretag-Macbeth AG @@ -10891,6 +11069,7 @@ 610c EL-610 Super Mini Electron luminescent Keyboard 713a WK-713 Multimedia Keyboard 7160 Hyper Slim Keyboard +099e Trimble Navigation, Ltd 09a3 PairGain Technologies 09a4 Contech Research, Inc. 09a5 VCON Telecommunications @@ -10947,6 +11126,15 @@ 09c5 Memory Corp. 09ca BMC Messsysteme GmbH 5544 PIO +09cb FLIR Systems + 1001 Network Adapter + 1002 Ex-Series RNDIS interface + 1004 Ex-Series UVC interface + 1005 Ex-Series RNDIS and UVC interface + 1006 Ex-Series RNDIS and MSD interface + 1007 Ex-Series UVC and MSD interface + 1008 Serial Port + 1996 FLIR ONE Camera 09cc Workbit Corp. 0404 BAFO USB-ATA/ATAPI Bridge Controller 09cd Psion Dacom Home Networks, Ltd @@ -10958,8 +11146,10 @@ 09d3 Com One 0001 ISDN TA / Light Rider 128K 000b Bluetooth Adapter class 1 [BlueLight] -09d7 Novatel Wireless +09d7 NovAtel Inc. 0100 NovAtel FlexPack GPS receiver +09d8 ELATEC + 0406 TWN4 MIFARE NFC 09d9 KRF Tech, Ltd 09da A4Tech Co., Ltd. 0006 Optical Mouse WOP-35 / Trust 450L Optical Mouse @@ -10972,6 +11162,7 @@ 024f RF Receiver and G6-20D Wireless Optical Mouse 0260 KV-300H Isolation Keyboard 032b Wireless Mouse (Battery Free) + 1068 Bloody A90 Mouse 8090 X-718BK Oscar Optical Gaming Mouse 9033 X-718BK Optical Mouse 9066 F3 V-Track Gaming Mouse @@ -11216,7 +11407,9 @@ 2150 BCM2046 Bluetooth Device 2151 Bluetooth 2154 BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle + 216a BCM43142A0 Bluetooth 216c BCM43142A0 Bluetooth Device + 216d BCM43142A0 Bluetooth 4.0 216f BCM20702A0 Bluetooth 217d HP Bluethunder 217f BCM2045B (BDC-2.1) @@ -11245,6 +11438,7 @@ 5803 BCM5880 Secure Applications Processor with secure keyboard 5804 BCM5880 Secure Applications Processor with fingerprint swipe sensor 6300 Pirelli Remote NDIS Device + 6410 BCM20703A1 Bluetooth 4.1 + LE bd11 TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320] bd13 BCM4323 802.11abgn Wireless Adapter bd16 BCM4319 802.11bgn Wireless Adapter @@ -11606,6 +11800,8 @@ 17c9 USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] 17cb Broadcom BCM20702A0 Bluetooth 17d1 AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610/Ralink RT2870] + 180a Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE + 1825 Qualcomm Bluetooth 4.1 4c80 Transformer Pad TF300TG 4c90 Transformer Pad Infinity TF700 4c91 Transformer Pad Infinity TF700 (Debug mode) @@ -11616,9 +11812,15 @@ 4daf Transformer Pad Infinity TF700 (Fastboot) 5410 MeMO Pad HD 7 (MTP mode) 5412 MeMO Pad HD 7 (PTP mode) - 550f ASUS fonepad 7 + 550f Fonepad 7 6101 Cable Modem 620a Remote NDIS Device + 7772 ASUS Zenfone GO (ZB500KL) (MTP mode) + 7773 ASUS Zenfone GO (ZB500KL) (Debug, MTP mode) + 7774 ASUS Zenfone GO (ZB500KL) (RNDIS mode) + 7775 ASUS Zenfone GO (ZB500KL) (Debug, RNDIS mode) + 7776 ASUS Zenfone GO (ZB500KL) (PTP mode) + 7777 ASUS Zenfone GO (ZB500KL) (Debug, PTP mode) b700 Broadcom Bluetooth 2.1 0b0b Datamax-O'Neil 106e Datamax E-4304 @@ -11631,10 +11833,15 @@ 0b0d ProjectLab 0000 CenturyCD 0b0e GN Netcom + 0348 Jabra UC VOICE 550a MS 034c Jabra UC Voice 750 MS + 0410 Jabra SPEAK 410 0420 Jabra SPEAK 510 094d GN Netcom / Jabra REVO Wireless + 1017 Jabra PRO 930 1022 Jabra PRO 9450, Type 9400BS (DECT Headset) + 1041 Jabra PRO 9460 + 1900 Jabra Biz 1900 2007 GN 2000 Stereo Corded Headset 620c Jabra BT620s 9330 Jabra GN9330 Headset @@ -11656,6 +11863,7 @@ 0006 SM Media-Shuttle Card Reader 0b33 Contour Design, Inc. 0020 ShuttleXpress + 0030 ShuttlePro v2 0700 RollerMouse Pro 0b37 Hitachi ULSI Systems Co., Ltd 0b38 Gear Head @@ -11715,6 +11923,8 @@ 3011 TT-connect S2-4600 3012 TT-connect CT2-4650 CI 3014 TT-TVStick CT2-4400 + 3015 TT-connect CT2-4650 CI + 3017 TT-connect S2-4650 CI 0b49 ASCII Corp. 064f Trance Vibrator 0b4b Pine Corp. Ltd. @@ -11796,7 +12006,7 @@ 7720 AX88772 772a AX88772A Fast Ethernet 772b AX88772B - 7e2b AX88772B + 7e2b AX88772B Fast Ethernet Controller 0b96 Sewon Telecom 0b97 O2 Micro, Inc. 7732 Smart Card Reader @@ -12025,9 +12235,12 @@ 0ca2 Desire HD (debug mode) 0ca5 Android Phone [Evo Shift 4G] 0cae T-Mobile MyTouch 4G Slide [Doubleshot] + 0de5 One (M7) 0dea M7_UL [HTC One] 0f25 One M8 + 0f63 Desire 610 Via MTP 0f64 Desire 601 + 0fb4 Remote NDIS based Device 0ff8 Desire HD (Tethering Mode) 0ff9 Desire / Desire HD / Hero / Thunderbolt (Charge Mode) 0ffe Desire HD (modem mode) @@ -12052,8 +12265,10 @@ 2100 FreeAgent Go 2200 FreeAgent Go FW 2300 Expansion Portable + 231a Expansion Portable 2320 USB 3.0 bridge [Portable Expansion Drive] 2321 Expansion Portable + 2322 SRD0NF1 Expansion Portable (STEA) 2340 FreeAgent External Hard Drive 3000 FreeAgent Desktop 3008 FreeAgent Desk 1TB @@ -12065,19 +12280,24 @@ 5021 FreeAgent GoFlex USB 2.0 5030 FreeAgent GoFlex Upgrade Cable STAE104 5031 FreeAgent GoFlex USB 3.0 + 5032 SATA cable 5070 FreeAgent GoFlex Desk 5071 FreeAgent GoFlex Desk 50a1 FreeAgent GoFlex Desk 50a5 FreeAgent GoFlex Desk USB 3.0 5121 FreeAgent GoFlex 5161 FreeAgent GoFlex dock + 61b7 Maxtor M3 Portable a003 Backup Plus a0a1 Backup Plus Desktop a0a4 Backup Plus Desktop Drive ab00 Slim Portable Drive ab20 Backup Plus Portable Drive ab21 Backup Plus Slim + ab24 Backup Plus Portable Drive ab31 Backup Plus Desktop Drive (5TB) + ab34 Backup Plus + ab38 Backup Plus Hub 0bc3 IPWireless, Inc. 0001 UMTS-TDD (TD-CDMA) modem 0bc4 Microcube Corp. @@ -12111,6 +12331,7 @@ 0106 Mass Storage Device 0107 Mass Storage Device 0108 Mass Storage Device + 0109 microSDXC Card Reader [Hama 00091047] 0111 RTS5111 Card Reader Controller 0113 Mass Storage Device 0115 Mass Storage Device (Multicard Reader) @@ -12123,7 +12344,7 @@ 0139 RTS5139 Card Reader Controller 0151 Mass Storage Device (Multicard Reader) 0152 Mass Storage Device - 0153 Mass Storage Device + 0153 3-in-1 (SD/SDHC/SDXC) Card Reader 0156 Mass Storage Device 0157 Mass Storage Device 0158 USB 2.0 multicard reader @@ -12138,15 +12359,22 @@ 0184 RTS5182 Card Reader 0186 Card Reader 0301 multicard reader + 0307 Card Reader 1724 RTL8723AU 802.11n WLAN Adapter 2831 RTL2831U DVB-T 2832 RTL2832U DVB-T 2838 RTL2838 DVB-T 5401 RTL 8153 USB 3.0 hub with gigabit ethernet + 570c Asus laptop camera 5730 HP 2.0MP High Definition Webcam + 5751 Integrated Webcam 5775 HP "Truevision HD" laptop camera + 57b3 Acer 640 × 480 laptop camera + 57da Built-In Video Camera 8150 RTL8150 Fast Ethernet Adapter 8151 RTL8151 Adapteon Business Mobile Networks BV + 8152 RTL8152 Fast Ethernet Adapter + 8153 RTL8153 Gigabit Ethernet Adapter 8171 RTL8188SU 802.11n WLAN Adapter 8172 RTL8191SU 802.11n WLAN Adapter 8174 RTL8192SU 802.11n WLAN Adapter @@ -12156,6 +12384,7 @@ 817f RTL8188RU 802.11n WLAN Adapter 8187 RTL8187 Wireless Adapter 8189 RTL8187B Wireless 802.11g 54Mbps Network Adapter + 818b ACT-WNP-UA-005 802.11b/g/n WLAN Adapter 8192 RTL8191SU 802.11n Wireless Adapter 8193 RTL8192DU 802.11an WLAN Adapter 8197 RTL8187B Wireless Adapter @@ -12174,6 +12403,7 @@ 1909 F3307 v2 Mobile Broadband Module 190a F3307 Mobile Broadband Module 190b C3607w v2 Mobile Broadband Module + 1926 H5321 gw Mobile Broadband Driver 0bdc Y Media Corp. 0bdd Orange PCS 0be2 Kanda Tsushin Kogyo Co., Ltd @@ -12207,10 +12437,13 @@ 100c Keyboard FSC KBPC PX 100f miniCard D2301 802.11bg Wireless Module [SiS 163U] 1017 Keyboard KB SCR + 101f Fujitsu Full HD Pro Webcam 0bfd Kvaser AB 0004 USBcan II 000b Leaf Light HS 000e Leaf SemiPro HS +0c00 FireFly Mouse Mat + 1607 Apex M500 0c04 MOTO Development Group, Inc. 0c05 Appian Graphics 0c06 Hasbro Games, Inc. @@ -12444,6 +12677,11 @@ 6480 Sonix 1.3 MP Laptop Integrated Webcam 648b Integrated Webcam 64bd Sony Visual Communication Camera + 64d0 Integrated Webcam + 64d2 Integrated Webcam + 651b HP Webcam + 6705 Integrated HD Webcam + 6710 Integrated Webcam 7401 TEMPer Temperature Sensor 7402 TEMPerHUM Temperature & Humidity Sensor 7403 Foot Switch @@ -12615,6 +12853,10 @@ 3050 EZ710 Smart Card Reader 0ca7 Information Systems Laboratories 0cad Motorola CGISS + 1007 APX Series Consolette + 1030 APX Series Radio (Portable) + 1031 APX Series Radio (Mobile) + 1602 IMPRES Battery Data Reader 9001 PowerPad Pocket PC Device 0cae Ascom Business Systems, Ltd 0caf Buslink @@ -12648,7 +12890,6 @@ 0cc4 emsys GmbH 0cc5 Sendo 0cc6 Intermagic Corp. -0cc7 Kontron Medical AG 0cc8 Technotools Corp. 0cc9 BroadMAX Technologies, Inc. 0cca Amphenol @@ -12683,18 +12924,25 @@ 0078 Cinergy T XXS 0086 Cinergy Hybrid XE 008e Cinergy HTC XS + 0096 Grabby 0097 Cinergy T RC MKII 0099 AfaTech 9015 [Cinergy T Stick Dual] 00a5 Cinergy Hybrid Stick 00a9 RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] 00b3 NOXON DAB/DAB+ Stick 00e0 NOXON DAB/DAB+ Stick V2 + 0102 Cinergy S2 Stick + 0105 Cinergy S2 Box 10a7 TerraTec G3 0cd4 Bang Olufsen 0101 BeolinkPC2 0cd5 LabJack Corporation 0003 U3 0009 UE9 +0cd6 Scheidt & Bachmann + 000c S&B TPU + 000e S&B BKV + 0011 Money Coin Unit 0cd7 NewChip S.r.l. 0cd8 JS Digitech, Inc. 2007 Smart Card Reader/JSTU-9700 @@ -12747,7 +12995,7 @@ 6225 SD card reader (UB6225) 6230 SD Card Reader (UB623X) 6250 SD card reader (UB6250) -0cf3 Atheros Communications, Inc. +0cf3 Qualcomm Atheros Communications 0001 AR5523 0002 AR5523 (no firmware) 0003 AR5523 @@ -12763,12 +13011,15 @@ 3002 AR3011 Bluetooth 3004 AR3012 Bluetooth 4.0 3005 AR3011 Bluetooth + 3007 AR3012 Bluetooth 4.0 (no firmware) 3008 Bluetooth (AR3011) + 311f AR3012 Bluetooth 7015 TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287] 9170 AR9170 802.11n 9271 AR9271 802.11n b002 Ubiquiti WiFiStation 802.11n [Atheros AR9271] b003 Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] + e006 Dell Wireless 1802 Bluetooth 4.0 LE 0cf4 Fomtex Corp. 0cf5 Cellink Co., Ltd 0cf6 Compucable Corp. @@ -12804,6 +13055,7 @@ 0001 PhotoShuttle 0002 Photo Printer 730 series 0004 Photo Printer 63xPL/PS + 000e P910L 0100 Photo Printer 63xPL/PS 0102 Photo Printer 64xPS 0103 Photo Printer 730 series @@ -13041,7 +13293,7 @@ 0300 Avaya Wireless Card 1007 Discovery Kids Digital Camera 0d99 Trazer Technologies, Inc. -0d9a RTX Telecom AS +0d9a RTX AS 0001 Bluetooth Device 0d9b Tat Shing Electrical Co. 0d9c Chee Chen Hi-Technology Co., Ltd @@ -13118,6 +13370,7 @@ 0dba Digidesign 1000 Mbox 1 [Mbox] 3000 Mbox 2 + b011 Eleven Rack 0dbc A&D Medical 0003 AND Serial Cable [AND Smart Cable] 0dbe Jiuh Shiuh Precision Industry Co., Ltd @@ -13127,6 +13380,7 @@ 021b USB-2.0 IDE Adapter 0300 Storage Adapter 0333 Storage Adapter + 0502 FSC Storagebird XL hard disk 0707 ZIV Drive 0dc0 G7 Solutions (formerly Great Notions) 0dc1 Tamagawa Seiki Co., Ltd @@ -13136,7 +13390,7 @@ 1104 ASEDrive IIIe KB 1701 ASEKey 1702 ASEKey -0dc4 Macpower Peripherals, Ltd +0dc4 inXtron, Inc. 0040 Mass Storage Device 0041 Mass Storage Device 0042 Mass Storage Device @@ -13243,8 +13497,10 @@ 005d WLA-2000 v1.001 WLAN [RTL8191SU] 0060 WLA-4000 802.11bgn [Ralink RT3072] 0062 WLA-5000 802.11abgn [Ralink RT3572] + 006f WLA-5100 0072 AX88179 Gigabit Ethernet [Sitecom] 061c LN-028 Network USB 2.0 Adapter + 214a IDE/SATA Combo Adapter [CN-330] 21f4 44 St Bluetooth Device 2200 Sitecom bluetooth2.0 class 2 dongle CN-512 2208 Sitecom bluetooth2.0 class 2 dongle CN-520 @@ -13268,6 +13524,7 @@ 0dfa Toyo Communication Equipment Co., Ltd 0dfc GeneralTouch Technology Co., Ltd 0001 Touchscreen + 0101 5-point Touch Screen 0e03 Nippon Systemware Co., Ltd 0e08 Winbest Technology Co., Ltd 0e0b Amigo Technology Inc. @@ -13316,11 +13573,8 @@ 0e34 Micro Computer Control Corp. 0e35 3Pea Technologies, Inc. 0e36 TiePie engineering - 0008 Handyscope HS3 - 0009 Handyscope HS3 (br) - 000a Handyscope HS4 - 000b Handyscope HS4 (br) - 000e Handyscope HS4-DIFF + 0009 Handyscope HS3 + 000b Handyscope HS4 000f Handyscope HS4-DIFF (br) 0010 Handyscope HS2 0011 TiePieSCOPE HS805 (br) @@ -13422,8 +13676,10 @@ 0003 MT6227 phone 0004 MT6227 phone 0023 S103 + 00a5 GSM modem [Medion Surfstick Model:S4222] 1806 Samsung SE-208 Slim Portable DVD Writer 1836 Samsung SE-S084 Super WriteMaster Slim External DVD writer + 1956 Samsung SE-506 Portable BluRay Disc Writer 2000 MT65xx Preloader 3329 Qstarz BT-Q1000XT 763e MT7630e Bluetooth Adapter @@ -13542,6 +13798,9 @@ 0f0d Hori Co., Ltd 0011 Real Arcade Pro 3 0f0e Energy Full Corp. +0f0f Silego Technology Inc + 0006 GreenPak Universal Dev Board (Active Mode) + 8006 GreenPak Universal Dev Board (Reset Mode) 0f11 LD Didactic GmbH 1000 CASSY-S 1010 Pocket-CASSY @@ -13561,6 +13820,7 @@ 0f13 Acetek Technology Co., Ltd 0f14 Ingenico 0012 Vital'Act 3S + 0038 XIRING Smart Card Terminal LEO V2 0f18 Finger Lakes Instrumentation 0002 CCD 0006 Focuser @@ -13702,6 +13962,7 @@ 8010 Blackberry Playbook (Connect to Windows mode) 8011 Blackberry Playbook (Connect to Mac mode) 8020 Blackberry Playbook (CD-Rom mode) + 8037 Blackberry PRIV 0fce Sony Ericsson Mobile Communications AB 0076 W910i (Multimedia mode) 00af V640i Phone [PTP Camera] @@ -13715,6 +13976,12 @@ 0169 Xperia S 0172 Xperia P 0177 Xperia Ion [Mass Storage] + 0188 ST26i + 019c C6833 + 019e C6903 + 01a5 SO-04F + 01a7 D5503 + 01ba D6603 [Xperia Z3] 01bb D5803 [Xperia Z3 Compact] (MTP mode) 0dde Xperia Mini Pro Bootloader 1010 WMC Modem @@ -13732,6 +13999,7 @@ 5169 Xperia S [Adb-Enable Mode] 5177 Xperia Ion [Debug Mode] 518c C1605 [Xperia E dual] MTD mode + 51a7 D5503 (Xperia Z1 Compact) 614f Xperia X12 (debug mode) 6166 Xperia Mini Pro 618c C1605 [Xperia E dual] MSC mode @@ -13788,6 +14056,18 @@ e166 Xperia Mini Pro e167 XPERIA mini e19b C2005 [Xperia M dual] (Mass Storage) + e1a9 D5303 + e1aa D2303 + e1ad D5103 + e1b0 D6708 + e1b5 D2004 + e1ba D6683 + e1bb SO-02G + e1bc D2203 + e1c0 SGP621 + e1c2 D2533 + e1c9 E6553 + e1cf SGP771 f0fa MN800 / Smartwatch 2 (DFU mode) 0fcf Dynastream Innovations, Inc. 1003 ANT Development Board @@ -13820,14 +14100,16 @@ 0100 Bluetooth Mouse 0101 Bluetooth IMU 0200 Bluetooth Keypad +0fe2 Air Techniques 0fe4 IN-Tech Electronics, Ltd 0fe5 Greenconn (U.S.A.), Inc. -0fe6 Kontron (Industrial Computer Source / ICS Advent) +0fe6 ICS Advent 8101 DM9601 Fast Ethernet Adapter 811e Parallel Adapter 9700 DM9601 Fast Ethernet Adapter 0fe9 DVICO 4020 TViX M-6500 + 9010 FusionRemote IR receiver db00 FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) db01 FusionHDTV DVB-T (MT352+LgZ201) (initialized) db10 FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) @@ -13867,12 +14149,14 @@ 61f9 Optimus (Various Models) MTP Mode 61fc Optimus 3 61fe Optimus Android Phone [USB tethering mode] - 6300 G2/Optimus Android Phone + 627f G3 (VS985) Android Phone (MTP/Download mode) + 6300 G2/Optimus Android Phone [Charge mode] 631c G2/Optimus Android Phone [MTP mode] 631d Optimus Android Phone (Camera/PTP Mode) 631e G2/Optimus Android Phone [Camera/PTP mode] 631f Optimus Android Phone (Charge Mode) - 633e G2 Android Phone [MTP mode] + 633a Ultimate 2 Android Phone L41C + 633e G2/G3 Android Phone [MTP/PTP/Download mode] 6344 G2 Android Phone [tethering mode] 6356 Optimus Android Phone [Virtual CD mode] 6800 CDMA Modem @@ -13999,7 +14283,7 @@ 0008 Infinity CryptoKey 0009 RE-BL PlayStation 3 IR-to-Bluetooth converter 1050 Yubico.com - 0010 Yubikey + 0010 Yubikey (v1 or v2) 0110 Yubikey NEO(-N) OTP 0111 Yubikey NEO(-N) OTP+CCID 0112 Yubikey NEO(-N) CCID @@ -14008,8 +14292,16 @@ 0115 Yubikey NEO(-N) U2F+CCID 0116 Yubikey NEO(-N) OTP+U2F+CCID 0120 Yubikey Touch U2F Security Key - 0200 U2F Gnubby + 0200 Gnubby U2F 0211 Gnubby + 0401 Yubikey 4 OTP + 0402 Yubikey 4 U2F + 0403 Yubikey 4 OTP+U2F + 0404 Yubikey 4 CCID + 0405 Yubikey 4 OTP+CCID + 0406 Yubikey 4 U2F+CCID + 0407 Yubikey 4 OTP+U2F+CCID + 0410 Yubikey plus OTP+U2F 1053 Immanuel Electronics Co., Ltd 1054 BMS International Beheer N.V. 5004 DSL 7420 Loader @@ -14037,13 +14329,20 @@ 0742 My Passport Essential SE (WDBGYS) 0748 My Passport (WDBKXH, WDBY8L) 07a8 My Passport (WDBBEP), My Passport for Mac (WDBLUZ) + 07ae My Passport Edge for Mac (WDBJBH) + 07ba PiDrive (WDLB) 0810 My Passport Ultra (WDBZFP) + 0816 My Passport Air (WDBBLW) 0820 My Passport Ultra (WDBMWV, WDBZFP) + 0822 My Passport Ultra (WDBBUZ) + 0824 My Passport Slim (WDBPDZ) 0830 My Passport Ultra (WDBZFP) + 0837 My Passport Ultra (WDBBKD) 0900 MyBook Essential External HDD 0901 My Book Essential Edition (Green Ring) (WDG1U) 0902 My Book Pro Edition (WDG1T) 0903 My Book Premium Edition + 0905 My Book Pro Edition II (WD10000C033-001) 0910 My Book Essential Edition (Green Ring) (WDG1U) 1001 Elements Desktop (WDE1U) 1003 WD Elements Desktop (WDE1UBK) @@ -14052,6 +14351,7 @@ 1023 Elements SE Portable (WDBABV) 1042 Elements SE Portable (WDBPCK) 1048 Elements Portable (WDBU6Y) + 1078 Elements Portable (WDBUZG) 107c Elements Desktop (WDBWLG) 10a2 Elements SE Portable (WDBPCK) 10a8 Elements Portable (WDBUZG) @@ -14067,7 +14367,11 @@ 1123 My Book 3.0 (WDBABP) 1130 My Book Essential (WDBACW) 1140 My Book Essential (WDBACW) - 1230 My Book (WDBFJK0030HBK) + 1230 My Book (WDBFJK) + 1235 My Book (WDBFJK0040HBK) + 2599 My Passport Ultra (WD40NMZW) + 259d My Passport Ultra (WDBBKD) + 259f My Passport Ultra (WD10JMVW) 1059 Giesecke & Devrient GmbH 000b StarSign Bio Token 3.0 105b Foxconn International, Inc. @@ -15395,7 +15699,6 @@ 0002 HDReye (before firmware loads) 1519 Comneon 0020 HSIC Device - 0443 Telit LN930 1520 Bitwire Corp. 1524 ENE Technology Inc 6680 UTS 6680 @@ -16375,7 +16678,28 @@ 3188 ARK3188 UVC Webcam 3299 Webcam Carrefour 3366 Bresser Biolux NV +18f8 [Maxxter] + 0f99 Optical gaming mouse +18fb Scriptel Corporation + 01c0 ST1501-STN + 01c1 ST1526-STN + 01c2 ST1501-PYJ + 01c3 ST1501B-PYJ + 01c4 ST1501-PUN + 01c5 ST1401-STN + 01c7 ST1526-PYJ + 01c8 ST1501-ECA + 01c9 ST1476-STN + 01cb ST1571-STN + 0200 ST1500 + 0201 ST1550 + 0202 ST1525 + 0204 ST1400 + 0206 ST1475 + 0207 ST1570 18fd FineArch Inc. +1901 GE Healthcare + 0015 Nemo Tracker 1908 GEMBIRD 1320 PhotoFrame PF-15-1 190d Motorola GSG @@ -16386,6 +16710,8 @@ 2234 Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] 2235 Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] 2236 Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] +191c Innovative Technology LTD + 4104 Banknote validator NV-150 1923 FitLinxx 0002 Personal SyncPoint 1926 NextWindow @@ -16428,6 +16754,8 @@ 0602 F71610 or F71612 Consumer Infrared Receiver/Transceiver 0702 Integrated Consumer Infrared Receiver/Transceiver 5168 F71610A or F71612A Consumer Infrared Receiver/Transceiver +1938 Meinberg Funkuhren GmbH & Co. KG + 0501 TCR51USB IRIG Time Code Reader 1941 Dream Link 8021 WH1080 Weather Station / USB Missile Launcher 1943 Sensoray Co., Inc. @@ -16719,6 +17047,8 @@ 1a01 Flash Voyager GT 1a0a Survivor Stealth Flash Drive 1a90 Flash Voyager GT +1b1f eQ-3 Entwicklung GmbH + c00f HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter] 1b20 MStar Semiconductor, Inc. 1b22 WiLinx Corp. 1b26 Cellex Power Products, Inc. @@ -17017,9 +17347,236 @@ 000c Ralink RT3070 802.11b/g/n Wireless Lan USB Device 000e Ralink RT3070 802.11b/g/n Wireless Lan USB Device 1d50 OpenMoko, Inc. - 5119 GTA01/GTA02 U-Boot Bootloader + 1db5 IDBG (DFU) + 1db6 IDBG + 5117 Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode + 5118 Neo1973/FreeRunner Debug board (V2+) + 5119 Neo1973/FreeRunner u-boot cdc_acm serial port + 511a HXD8 u-boot usbtty CDC ACM Mode + 511b SMDK2440 u-boot usbtty CDC ACM mode + 511c SMDK2443 u-boot usbtty CDC ACM mode + 511d QT2410 u-boot usbtty CDC ACM mode + 5120 Neo1973/FreeRunner u-boot usbtty generic serial + 5121 Neo1973/FreeRunner kernel mass storage (g_storage) mode + 5122 Neo1973/FreeRunner kernel cdc_ether USB network + 5123 Neo1973/FreeRunner internal USB CSR4 module + 5124 Neo1973/FreeRunner Bluetooth Device ID service + 5300 Rockbox + 6000 Ubertooth Zero + 6001 Ubertooth Zero (DFU) + 6002 Ubertooth One + 6003 Ubertooth One (DFU) + 6004 LeoLipo + 6005 LED Flower S + 6006 LED Cube + 6007 LED Flower + 6008 Kisbee 802.15.4 transceiver + 6009 Adjacent Reality Tracker + 600a AVR Programmer + 600b Hypna Go Go + 600c CatNip LPC1343 development board + 600d Enhanced RoboBrrd Brain board + 600e OpenRISC Ordb2a-ep4ce22 development board + 600f Paparazzi Lisa/M (DFU) + 6010 OpenPipe: OSHW Bagpipes MIDI controller + 6011 LeoLipo (DFU) + 6012 Universal C64 Cartridge + 6013 DiscFerret magnetic disc analyser (bootloader) + 6014 DiscFerret magnetic disc analyser + 6015 Smoothieboard + 6016 phInterface + 6017 Black Magic Debug Probe (DFU) + 6018 Black Magic Debug Probe (Application) + 6019 4pi 5 axis motion controller + 601a Paparazzi Lisa/M + 601b IST-2 chronograph for bullet speeds + 601c EPOSMote II + 601e 5x5 STM32 prototyping board + 601f uNSF + 6020 Toad3 + 6021 AlphaSphere + 6022 LightPack + 6023 Pixelkit + 6024 Illucia + 6025 Keyglove (HID) + 6027 Key64 Keyboard + 6028 Teensy 2.0 Development Board [ErgoDox Keyboard] + 602a Marlin 2.0 (Mass Storage) 602b FPGALink + 602c 5nes5snes (5x8) + 602d 5nes5snes (4x12) + 602e Flexibity + 602f K-copter + 6030 USB-oscope + 6031 Handmade GSM GPS tracker + 6033 frobiac / adnw keyboard + 6034 Tiflomag Ergo 2 + 6035 FreeLaserTag Gun + 6036 FreeLaserTag Big Brother + 6037 FreeLaserTag Node + 6038 Monaka + 6039 eXtreme Feedback Device + 603a TiLDA + 603b Raspiface + 603c Paparazzi (bootloader) + 603d Paparazzi (Serial) + 603e Paparazzi (Mass Storage) + 603f airGuitar + 6040 moco + 6041 AlphaSphere (bootloader) + 6042 Dspace robot controller + 6043 pc-power + 6044 open-usb-can (DFU) + 6045 open-usb-can + 6046 mimus-weigand + 6047 RfCat Chronos Dongle + 6048 RfCat Dons Dongle + 6049 RfCat Chronos bootloader + 604a RfCat Dons bootloader + 604b HackRF Jawbreaker Software-Defined Radio + 604c Makibox A6 + 604d Paella Pulse height analyzer + 604e Miniscope v2b + 604f Miniscope v2c + 6050 GoodFET + 6051 pinocc.io + 6052 APB Team Robotic Development Board 6053 Darkgame Controller + 6054 Satlab/AAUSAT3 BlueBox + 6056 The Glitch + 605b RfCat YARD Stick One + 605c YARD Stick One bootloader + 605d Funky Sensor v2 + 605e Blinkiverse Analog LED Fader + 605f Small DIP package Cypress FX2 + 6060 Data logger using the Cypress FX2 + 6061 Power Manager + 6063 CPC FPGA + 6064 CPC FPGA (DFU) + 6065 CPC FPGA (Serial) + 6066 Nuand BladeRF + 6067 Orbotron 9000 (Serial) + 6068 Orbotron 9000 (HID) + 6069 xser (DFU) + 606a xser (legacy) + 606b S08-245, urJtag compatible firmware for S08JS + 606c Blinkytape full-color light tape + 606d TinyG open source motion controller + 606e Reefangel Evolution 1.0 + 6070 Open Pinball Project + 6071 The Glitch HID + 6072 The Glitch Disk + 6073 The Glitch Serial + 6074 The Glitch MIDI + 6075 The Glitch RawHID + 6076 Vultureprog BIOS chip programmer + 6077 PaintDuino + 6078 DTplug + 607a Fadecandy + 607b RCDongle for IR remote control + 607c OpenVizsla USB sniffer/analyzer + 607d Spark Core Arduino-compatible board with WiFi + 607f Spark Core Arduino-compatible board with WiFi (bootloader) + 6080 arcin arcade controller + 6081 BladeRF (bootloader) + 6082 Facecandy (DFU) + 6083 LightUp (bootloader) + 6084 arcin arcade controller (DFU) + 6085 IRKit for controlloing home electronics from iOS devices + 6086 OneRNG entropy device + 6088 picp PIC16F145x based PIC16F145x programmer + 6089 Great Scott Gadgets HackRF One SDR + 608a BLEduino + 608b Loctronix ASR-2300 SDR/motion sensing module + 608c Fx2lafw + 608d Fx2lafw + 608e Fx2lafw + 608f Fx2lafw + 6090 Fx2lafw + 6091 Fx2lafw + 6092 Fx2lafw + 6093 Fx2lafw + 6094 Fx2lafw + 6095 Fx2lafw + 6096 LightUp (sketch) + 6097 Tessel JavaScript enabled Microcontroller with built-in WiFi + 6098 RFIDler + 6099 RASDR Radio Astronomy SDR Rx Interface + 609a RASDR Radio Astronomy SDR Tx Interface + 609b RASDR Radio Astronomy SDR (bootloader) + 609c antiAFK keyboard + 609d PIC16F145x bootloader + 609e Clyde Lamp by Fabule (bootloader) + 609f Clyde Lamp by Fabule (sketch) + 60a0 Smoothiepanel robotic control interface + 60a1 Airspy + 60a2 barebox (DFU) + 60a3 keyboard (bootloader) + 60a4 Papilio Duo (AVR) + 60a5 Papilio Duo (FPGA) + 60a6 HydraBus/HydraNFC (bootloader) + 60a7 HydraBus/HydraNFC + 60a8 reserved + 60a9 Blinky Light Controller (DFU) + 60aa Blinky Light Controller + 60ab AllPixel + 60ac OpenBLT generic microcontroller (bootloader) + 60b0 Waterott Arduino based Clock (caterina bootloader) + 60b1 Drinkbot (processing) + 60b2 Drinkbot (OTG-tablet support) + 60b3 calc.pw password generator device (standard) + 60b4 calc.pw password generator device (enhanced) + 60b5 TimVideos' HDMI2USB (FX2) - Unconfigured device + 60b6 TimVideos' HDMI2USB (FX2) - Firmware load/upgrade + 60b7 TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device + 60b8 TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device + 60b9 TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade + 60ba TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device + 60bc Simple CC25xx programmer / serial board + 60bd Open Source control interface for multimedia applications + 60be Pixelmatix Aurora (bootloader) + 60bf Pixelmatix Aurora + 60c1 BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader) + 60c2 BrewBit Model-T pOSHW temperature controller for homebrewers + 60c3 X Antenna Tracker arduino board + 60c6 USBtrng hardware random number generator + 60c7 Zubax GNSS positioning module for light UAV systems + 60c8 Xlink data transfer and control system for Commodore C64 + 60c9 random number generator + 60ca FinalKey password manager + 60cb PteroDAQ Data Acquisition on FRDM-KL25Z and future boards + 60cc LamDiNao + 60de Cryptech.is random number generator + 60df Numato Opsis HDMI2USB board (unconfigured) + 60e0 Numato Opsis HDMI2USB board (JTAG Programming Mode) + 60e1 Numato Opsis HDMI2USB board (User Mode) + 60e2 Osmocom SIMtrace 2 (DFU) + 60e3 Osmocom SIMtrace 2 + 60e4 3D printed racing game - (Catalina CDC bootloader) + 60e5 3D printed racing game + 60e6 replacement for GoodFET/FaceDancer - GreatFet + 60e7 replacement for GoodFET/FaceDancer - GreatFet target + 60e8 Alpen Clack keyboard + 60e9 keyman64 keyboard itercepter + 60ea Wiggleport FPGA-based I/O board + 60ec Duet 3D Printer Controller + 60f0 UDAD-T1 data aquisition device (boot) + 60f1 UDAD-T1 data aquisition device + 60f2 UDAD-T2 data aquisition device (boot) + 60f3 UDAD-T2 data aquisition device + 60f4 Uniti ARC motor controller + 60f5 EightByEight Blinky Badge (DFU) + 60f6 EightByEight Blinky Badge + 60f7 cardio NFC/RFID card reader (bootloader) + 60f8 cardio NFC/RFID card reader + 60fc OnlyKey Two-factor Authentication and Password Solution + 6100 overlay64 video overlay module + 6104 ScopeFun open source instrumentation + 6108 Myriad-RF LimeSDR + 610c Magic Keys (boot) + 610d Magic Keys + 8085 Box0 (box0-v5) + cc15 rad1o badge for CCC congress 2015 1d57 Xenta 0005 Wireless Receiver (Keyboard and Mouse) 0006 Wireless Receiver (RC Laser Pointer) @@ -17044,6 +17601,9 @@ 0200 Qemu Audio Device 1d90 Citizen 201e PPU-700 +1d9d Sigma Sport + 1010 Docking Station Topline 2009 + 1011 Docking Station Topline 2012 1de1 Actions Microelectronics Co. 1101 Generic Display Device (Mass storage mode) c101 Generic Display Device @@ -17654,6 +18214,13 @@ 1042 MPIO FY670 1043 HCT HMD-180A 1044 HCT HMD-180A +273f Hughski Limited + 1000 ColorHug bootloader + 1001 ColorHug + 1002 ColorHug+ + 1003 ColorHug+ Bootloader + 1004 ColorHug2 + 1005 ColorHug2 bootloader 2770 NHJ, Ltd 0a01 ScanJet 4600 series 905c Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 @@ -17730,10 +18297,14 @@ 200b MX Phone (PTP) 200c MX Phone (PTP & ADB) 2012 MX Phone (MTP & ACM) +2b24 KeepKey LLC + 0001 Bitcoin hardware wallet 2c02 Planex Communications 14ea GW-US11H WLAN 2c1a Dolphin Peripherals 0000 Wireless Optical Mouse +2dcf Dialog Semiconductor + c952 Audio Class 2.0 Devices 2fb2 Fujitsu, Ltd 3125 Eagletron 0001 TrackerPod Camera Stand From fb7cd4cb4f714284b5a25b4c87537f5838fefa21 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 24 Dec 2016 15:05:33 +0100 Subject: [PATCH 032/464] nano: Update to 2.7.2 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/nano | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/nano b/lfs/nano index fbe88bd67..674ed3289 100644 --- a/lfs/nano +++ b/lfs/nano @@ -24,7 +24,7 @@ include Config -VER = 2.7.1 +VER = 2.7.2 THISAPP = nano-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nano -PAK_VER = 12 +PAK_VER = 13 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 6d6aea789dd15171d8d05d2359c52f23 +$(DL_FILE)_MD5 = 8b880355f88bfa521d18dc6f18437095 install : $(TARGET) From 22dbd018f1839a06be216bb5aae498e103b31878 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 27 Dec 2016 21:55:46 +0100 Subject: [PATCH 033/464] squid 3.5.23: latest patch (14129) Seems to be a serious one. "Bug #3940 pt2: Make 'cache deny' do what is documented". (Duplicate of Bug 3783) For details see: http://bugs.squid-cache.org/show_bug.cgi?id=3940 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 1 + src/patches/squid/squid-3.5-14129.patch | 41 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14129.patch diff --git a/lfs/squid b/lfs/squid index db02367e5..00152080c 100644 --- a/lfs/squid +++ b/lfs/squid @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14129.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.23-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14129.patch b/src/patches/squid/squid-3.5-14129.patch new file mode 100644 index 000000000..b930aca91 --- /dev/null +++ b/src/patches/squid/squid-3.5-14129.patch @@ -0,0 +1,41 @@ +------------------------------------------------------------ +revno: 14129 +revision-id: squid3@treenet.co.nz-20161226022200-u1dnvhu0rdby78u2 +parent: squid3@treenet.co.nz-20161216043137-lsk9s4fq21sqsdfo +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=3940 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Mon 2016-12-26 15:22:00 +1300 +message: + Bug 3940 pt2: Make 'cache deny' do what is documented + + Instead of overriding whatever cacheability was previously set to + (including changing non-cacheables to be cacheable) actually + prevent both cache read and write. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20161226022200-u1dnvhu0rdby78u2 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 579020c4bb34961317f8fd0498393aba4a797b14 +# timestamp: 2016-12-26 02:23:14 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20161216043137-\ +# lsk9s4fq21sqsdfo +# +# Begin patch +=== modified file 'src/client_side_request.cc' +--- src/client_side_request.cc 2016-09-23 15:28:42 +0000 ++++ src/client_side_request.cc 2016-12-26 02:22:00 +0000 +@@ -1407,7 +1407,10 @@ + ClientRequestContext::checkNoCacheDone(const allow_t &answer) + { + acl_checklist = NULL; +- http->request->flags.cachable = (answer == ACCESS_ALLOWED); ++ if (answer == ACCESS_DENIED) { ++ http->request->flags.noCache = true; // dont read reply from cache ++ http->request->flags.cachable = false; // dont store reply into cache ++ } + http->doCallouts(); + } + + From 8fa523e028ecfa8acb33bac7d48f2fe9cb60a86e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 29 Dec 2016 16:04:29 +0000 Subject: [PATCH 034/464] libpng: Update to version 1.2.57 These all fix a potential "NULL dereference" bug that has existed in libpng since version 0.71 of June 26, 1995. To be vulnerable, an application has to load a text chunk into the png structure, then delete all text, then add another text chunk to the same png structure, which seems to be an unlikely sequence, but it has happened. Signed-off-by: Michael Tremer --- config/rootfiles/common/libpng | 4 ++-- config/rootfiles/core/109/filelists/libpng | 1 + lfs/libpng | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 120000 config/rootfiles/core/109/filelists/libpng diff --git a/config/rootfiles/common/libpng b/config/rootfiles/common/libpng index c29eaa7db..9a20880a1 100644 --- a/config/rootfiles/common/libpng +++ b/config/rootfiles/common/libpng @@ -9,12 +9,12 @@ #usr/lib/libpng.la usr/lib/libpng.so usr/lib/libpng.so.3 -usr/lib/libpng.so.3.46.0 +usr/lib/libpng.so.3.57.0 #usr/lib/libpng12.a #usr/lib/libpng12.la usr/lib/libpng12.so usr/lib/libpng12.so.0 -usr/lib/libpng12.so.0.46.0 +usr/lib/libpng12.so.0.57.0 #usr/lib/pkgconfig/libpng.pc #usr/lib/pkgconfig/libpng12.pc #usr/share/man/man3/libpng.3 diff --git a/config/rootfiles/core/109/filelists/libpng b/config/rootfiles/core/109/filelists/libpng new file mode 120000 index 000000000..8ef96e2c1 --- /dev/null +++ b/config/rootfiles/core/109/filelists/libpng @@ -0,0 +1 @@ +../../../common/libpng \ No newline at end of file diff --git a/lfs/libpng b/lfs/libpng index 707511867..af2db684e 100644 --- a/lfs/libpng +++ b/lfs/libpng @@ -24,7 +24,7 @@ include Config -VER = 1.2.46 +VER = 1.2.57 THISAPP = libpng-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 03ddfc17ad321db93f984581e9415d22 +$(DL_FILE)_MD5 = dfcda3603e29dcc11870c48f838ef75b install : $(TARGET) From 1857244ea44a872265b05222f7f94a93b2d964b1 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 29 Dec 2016 20:37:31 +0100 Subject: [PATCH 035/464] udev: Do not use MACVTAP for any wireless devices Fixes #11179 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/udev/network-hotplug-rename | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/config/udev/network-hotplug-rename b/config/udev/network-hotplug-rename index aaae641e1..1f8d5e117 100644 --- a/config/udev/network-hotplug-rename +++ b/config/udev/network-hotplug-rename @@ -67,11 +67,21 @@ for zone in ${ZONES}; do # If a matching interface has been found we will # print the name to which udev will rename it. - if [ "${!mode}" = "macvtap" ]; then - echo "${!device}phys" - else - echo "${!device}" - fi + case "${!mode}" in + macvtap) + # MACVTAP mode doesn't work for WiFi devices + if [ -d "/sys/class/net/${INTERFACE}/phy80211" ]; then + logger -t network "MACVTAP mode is not supported for wireless devices" + echo "${!device}" + else + echo "${!device}phys" + fi + ;; + + *) + echo "${!device}" + ;; + esac exit 0 done From 4aef53d50dd2152601bc88cc22157d3289206e38 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 29 Dec 2016 20:37:32 +0100 Subject: [PATCH 036/464] network: Support bridge mode for zones This bridge mode is supposed to be used for virtual environments to create a network zone as a bridge and have virtual machines inside it. Other physical interfaces can also be added to the bridge. This is very similar to the MACVTAP bridge feature but still works when the link of any (or all) physical interfaces is down. Fixes: #11252 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/udev/network-hotplug-macvtap | 100 +++++++++++++++++++++++----- config/udev/network-hotplug-rename | 4 ++ 2 files changed, 88 insertions(+), 16 deletions(-) diff --git a/config/udev/network-hotplug-macvtap b/config/udev/network-hotplug-macvtap index 7f5da12cb..ff6d20a8b 100644 --- a/config/udev/network-hotplug-macvtap +++ b/config/udev/network-hotplug-macvtap @@ -23,24 +23,92 @@ [ -n "${INTERFACE}" ] || exit 2 -PHYSICAL_INTERFACE="${INTERFACE}" -VIRTUAL_INTERFACE="${INTERFACE%phys}" -#VIRTUAL_INTERFACE="${VIRTUAL_INTERFACE}0" +eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) -# Do nothing if the physical interface does not end with "phys" -case "${PHYSICAL_INTERFACE}" in - *phys) +detect_zone() { + local intf="${INTERFACE%0*}" + intf="${intf^^}" + + local zone + for zone in GREEN BLUE ORANGE RED; do + # Try to find if INTERFACE is the *phys version of a zone + if [ "${intf}" = "${zone}" ]; then + echo "${zone}" + return 0 + fi + + # Try to find out if this INTERFACE is a slave of a zone + local slave + for slave in $(get_value "${zone}_SLAVES"); do + if [ "${INTERFACE}" = "${slave}" ]; then + echo "${zone}" + return 0 + fi + done + done + + return 1 +} + +get_value() { + echo "${!1}" +} + +random_mac_address() { + local address="02" + + for i in $(seq 5); do + printf -v address "${address}:%02x" "$(( RANDOM % 256 ))" + done + + echo "${address}" +} + +# Try to detect which zone we are operating on +ZONE=$(detect_zone) + +# Cannot proceed if we could not find a zone +if [ -z "${ZONE}" ]; then + exit 0 +fi + +# Determine the mode of this zone +MODE="$(get_value "${ZONE}_MODE")" + +# The name of the virtual bridge +BRIDGE="$(get_value "${ZONE}_DEV")" + +case "${MODE}" in + bridge) + ADDRESS="$(get_value "${ZONE}_MACADDR")" + [ -n "${ADDRESS}" ] || ADDRESS="$(random_mac_address)" + + # We need to create the bridge if it doesn't exist, yet + if [ ! -d "/sys/class/net/${BRIDGE}" ]; then + ip link add "${BRIDGE}" address "${ADDRESS}" type bridge + #ip link set "${BRIDGE}" up + fi + + # Attach the physical device + ip link set dev "${INTERFACE}" master "${BRIDGE}" + ip link set dev "${INTERFACE}" up ;; - *) + + macvtap) + ADDRESS="$( Date: Thu, 29 Dec 2016 20:37:33 +0100 Subject: [PATCH 037/464] network: Rename MACVTAP script This script is creating common bridges now, too and therefore needs a more generic name. Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/common/udev | 2 +- config/udev/60-net.rules | 4 ++-- .../udev/{network-hotplug-macvtap => network-hotplug-bridges} | 0 lfs/udev | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename config/udev/{network-hotplug-macvtap => network-hotplug-bridges} (100%) diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index e1f4bd5fb..1ba82d044 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -28,7 +28,7 @@ lib/udev #lib/udev/hwdb.d/60-keyboard.hwdb #lib/udev/init-net-rules.sh #lib/udev/mtd_probe -#lib/udev/network-hotplug-macvtap +#lib/udev/network-hotplug-bridges #lib/udev/network-hotplug-rename #lib/udev/network-hotplug-vlan #lib/udev/rule_generator.functions diff --git a/config/udev/60-net.rules b/config/udev/60-net.rules index e031e7a1e..fff7513bc 100644 --- a/config/udev/60-net.rules +++ b/config/udev/60-net.rules @@ -6,5 +6,5 @@ ACTION=="add", SUBSYSTEM=="net", PROGRAM="/lib/udev/network-hotplug-rename", RES # that has just come up. ACTION=="add", SUBSYSTEM=="net", RUN+="/lib/udev/network-hotplug-vlan" -# Call a script that will set up macvtap interfaces -ACTION=="add", SUBSYSTEM=="net", RUN+="/lib/udev/network-hotplug-macvtap" +# Call a script that will set up zones as bridges +ACTION=="add", SUBSYSTEM=="net", RUN+="/lib/udev/network-hotplug-bridges" diff --git a/config/udev/network-hotplug-macvtap b/config/udev/network-hotplug-bridges similarity index 100% rename from config/udev/network-hotplug-macvtap rename to config/udev/network-hotplug-bridges diff --git a/lfs/udev b/lfs/udev index 61bd33741..320f27237 100644 --- a/lfs/udev +++ b/lfs/udev @@ -109,8 +109,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) /lib/udev/network-hotplug-rename install -v -m 755 $(DIR_SRC)/config/udev/network-hotplug-vlan \ /lib/udev/network-hotplug-vlan - install -v -m 755 $(DIR_SRC)/config/udev/network-hotplug-macvtap \ - /lib/udev/network-hotplug-macvtap + install -v -m 755 $(DIR_SRC)/config/udev/network-hotplug-bridges \ + /lib/udev/network-hotplug-bridges install -v -m 644 $(DIR_SRC)/config/udev/60-net.rules \ /lib/udev/rules.d From 18b6da69b6e8ecddf86d0f824a28b0f3e37df2cb Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 29 Dec 2016 20:37:34 +0100 Subject: [PATCH 038/464] core109: Ship network bridge changes Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/core/109/filelists/files | 3 +++ config/rootfiles/core/109/update.sh | 2 ++ 2 files changed, 5 insertions(+) diff --git a/config/rootfiles/core/109/filelists/files b/config/rootfiles/core/109/filelists/files index ca49b1b5e..7c1cc3f91 100644 --- a/config/rootfiles/core/109/filelists/files +++ b/config/rootfiles/core/109/filelists/files @@ -1,3 +1,6 @@ etc/system-release etc/issue +lib/udev/rules.d/60-net.rules +lib/udev/network-hotplug-bridges +lib/udev/network-hotplug-rename usr/local/bin/syslogdctrl diff --git a/config/rootfiles/core/109/update.sh b/config/rootfiles/core/109/update.sh index c601654ae..1143890c2 100644 --- a/config/rootfiles/core/109/update.sh +++ b/config/rootfiles/core/109/update.sh @@ -50,6 +50,8 @@ ldconfig /etc/init.d/squid start /etc/init.d/snort start +# Remove old MACVTAP script +rm -vf /lib/udev/network-hotplug-macvtap # This update need a reboot... #touch /var/run/need_reboot From c2336f6bed09b221dba0cf9e9025690568c2ff6a Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 31 Dec 2016 15:03:32 +0100 Subject: [PATCH 039/464] Use MAC addresses to define a slave It is now also possible to use the MAC address to define a slave of a bridge. Simply add the mac address to the ZONE_SLAVES=''. Signed-off-by: Michael Tremer --- config/udev/network-hotplug-bridges | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/udev/network-hotplug-bridges b/config/udev/network-hotplug-bridges index ff6d20a8b..514b45de1 100644 --- a/config/udev/network-hotplug-bridges +++ b/config/udev/network-hotplug-bridges @@ -40,7 +40,9 @@ detect_zone() { # Try to find out if this INTERFACE is a slave of a zone local slave for slave in $(get_value "${zone}_SLAVES"); do - if [ "${INTERFACE}" = "${slave}" ]; then + + #Compare if the mac address matches or if the name matches + if ([ "$( Date: Sat, 31 Dec 2016 15:04:05 +0100 Subject: [PATCH 040/464] Use a better naming scheme for physical devices. Instead of orange0phys we should use orangephys0 this patch implements the necessary changes. Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/udev/network-hotplug-bridges | 3 ++- config/udev/network-hotplug-rename | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/config/udev/network-hotplug-bridges b/config/udev/network-hotplug-bridges index 514b45de1..5144a7712 100644 --- a/config/udev/network-hotplug-bridges +++ b/config/udev/network-hotplug-bridges @@ -26,7 +26,8 @@ eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) detect_zone() { - local intf="${INTERFACE%0*}" + local intf="${INTERFACE%?}" + intf="${intf%phys}" intf="${intf^^}" local zone diff --git a/config/udev/network-hotplug-rename b/config/udev/network-hotplug-rename index 294bb7862..3a482d2db 100644 --- a/config/udev/network-hotplug-rename +++ b/config/udev/network-hotplug-rename @@ -69,7 +69,7 @@ for zone in ${ZONES}; do # print the name to which udev will rename it. case "${!mode}" in bridge) - echo "${!device}phys" + echo "${!device%0}phys0" ;; macvtap) @@ -78,7 +78,7 @@ for zone in ${ZONES}; do logger -t network "MACVTAP mode is not supported for wireless devices" echo "${!device}" else - echo "${!device}phys" + echo "${!device%0}phys0" fi ;; From 5d1dac2d8c5f8c1e1aaf34d814fe9f03d4c5efe0 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 1 Jan 2017 15:45:04 +0100 Subject: [PATCH 041/464] logrotate: Update to 3.9.1 For details see: https://fedorahosted.org/logrotate/browser/tags/r3-9-1/CHANGES Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/logrotate | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/logrotate b/lfs/logrotate index 0904074ba..0d50103e5 100644 --- a/lfs/logrotate +++ b/lfs/logrotate @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2014 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.8.1 +VER = 3.9.1 THISAPP = logrotate-$(VER) DL_FILE = logrotate_$(VER).orig.tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = bd2e20d8dc644291b08f9215397d28a5 +$(DL_FILE)_MD5 = 4492b145b6d542e4a2f41e77fa199ab0 install : $(TARGET) From 188acee8301dd5a9ca11c8c5c9c298661ced2c76 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 1 Jan 2017 20:23:29 +0100 Subject: [PATCH 042/464] nano: Update to 2.7.3 Sorry, they did it again...: For details see: https://www.nano-editor.org/news.php "GNU nano 2.7.3 "Ontbijtkoek" wipes away a handful of bugs: your editor is now able to handle filenames that contain newlines, avoids a brief flash of color when switching between buffers that are governed by different syntaxes, makes the Shift+Ctrl+Arrow keys select text again on a Linux console, is more resistant against malformations in the positionlog file, and does not crash when ^C is typed on systems where it produces the code KEY_CANCEL. Oh, and it no longer mistakenly warns about editing an unlocked file just after saving a new one. That's it. Tastes great with thick butter." Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/nano | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/nano b/lfs/nano index 674ed3289..2ecb1a5f8 100644 --- a/lfs/nano +++ b/lfs/nano @@ -24,7 +24,7 @@ include Config -VER = 2.7.2 +VER = 2.7.3 THISAPP = nano-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nano -PAK_VER = 13 +PAK_VER = 14 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 8b880355f88bfa521d18dc6f18437095 +$(DL_FILE)_MD5 = 007ba6321212d3ec38f46236465b6ea8 install : $(TARGET) From a29910adf80fcdbcbf87dbe8e76c37275c14af31 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Mon, 2 Jan 2017 15:23:09 +0100 Subject: [PATCH 043/464] Update qemu to 2.8 For Changelog see: http://wiki.qemu.org/ChangeLog/2.8 http://wiki.qemu.org/ChangeLog/2.7 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/packages/qemu | 14 ++++++++------ lfs/qemu | 6 +++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/config/rootfiles/packages/qemu b/config/rootfiles/packages/qemu index 21b438f15..022d4ebc8 100644 --- a/config/rootfiles/packages/qemu +++ b/config/rootfiles/packages/qemu @@ -1,4 +1,6 @@ lib/udev/rules.d/65-kvm.rules +usr/bin/ivshmem-client +usr/bin/ivshmem-server usr/bin/qemu usr/bin/qemu-arm usr/bin/qemu-ga @@ -13,10 +15,10 @@ usr/bin/qemu-x86_64 usr/libexec/qemu-bridge-helper #usr/share/doc/qemu #usr/share/doc/qemu/qemu-doc.html -#usr/share/doc/qemu/qemu-tech.html #usr/share/doc/qemu/qmp-commands.txt #usr/share/man/man1/qemu-img.1 #usr/share/man/man1/qemu.1 +#usr/share/man/man8/qemu-ga.8 #usr/share/man/man8/qemu-nbd.8 #usr/share/qemu usr/share/qemu/QEMU,cgthree.bin @@ -26,11 +28,13 @@ usr/share/qemu/bamboo.dtb usr/share/qemu/bios-256k.bin usr/share/qemu/bios.bin usr/share/qemu/efi-e1000.rom +usr/share/qemu/efi-e1000e.rom usr/share/qemu/efi-eepro100.rom usr/share/qemu/efi-ne2k_pci.rom usr/share/qemu/efi-pcnet.rom usr/share/qemu/efi-rtl8139.rom usr/share/qemu/efi-virtio.rom +usr/share/qemu/efi-vmxnet3.rom usr/share/qemu/keymaps usr/share/qemu/keymaps/ar usr/share/qemu/keymaps/bepo @@ -71,6 +75,7 @@ usr/share/qemu/keymaps/th usr/share/qemu/keymaps/tr usr/share/qemu/kvmvapic.bin usr/share/qemu/linuxboot.bin +usr/share/qemu/linuxboot_dma.bin usr/share/qemu/multiboot.bin usr/share/qemu/openbios-ppc usr/share/qemu/openbios-sparc32 @@ -89,9 +94,10 @@ usr/share/qemu/qemu-icon.bmp usr/share/qemu/qemu_logo_no_text.svg usr/share/qemu/s390-ccw.img usr/share/qemu/sgabios.bin +usr/share/qemu/skiboot.lid usr/share/qemu/slof.bin usr/share/qemu/spapr-rtas.bin -usr/share/qemu/trace-events +usr/share/qemu/trace-events-all usr/share/qemu/u-boot.e500 usr/share/qemu/vgabios-cirrus.bin usr/share/qemu/vgabios-qxl.bin @@ -100,7 +106,3 @@ usr/share/qemu/vgabios-virtio.bin usr/share/qemu/vgabios-vmware.bin usr/share/qemu/vgabios.bin #usr/var/run -usr/bin/ivshmem-client -usr/bin/ivshmem-server -#usr/share/man/man8/qemu-ga.8 - diff --git a/lfs/qemu b/lfs/qemu index fb4f4b30e..26c2f24ec 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -24,7 +24,7 @@ include Config -VER = 2.6.0 +VER = 2.8.0 THISAPP = qemu-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -33,7 +33,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = i586 x86_64 PROG = qemu -PAK_VER = 21 +PAK_VER = 22 DEPS = "libusbredir sdl spice" @@ -45,7 +45,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ca3f70b43f093e33e9e014f144067f13 +$(DL_FILE)_MD5 = 17940dce063b6ce450a12e719a6c9c43 install : $(TARGET) From 9a015b5bd54887495c8670aee91335cfabf9d6f1 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Mon, 2 Jan 2017 15:23:10 +0100 Subject: [PATCH 044/464] Update libvirt to 2.5 For Changelog see: https://libvirt.org/news-2016.html Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/packages/libvirt | 290 +++++++++++++++--------------- lfs/libvirt | 6 +- 2 files changed, 148 insertions(+), 148 deletions(-) diff --git a/config/rootfiles/packages/libvirt b/config/rootfiles/packages/libvirt index d2d164bf7..fe287ea7c 100644 --- a/config/rootfiles/packages/libvirt +++ b/config/rootfiles/packages/libvirt @@ -63,19 +63,19 @@ usr/lib/libnss_libvirt.so.2 #usr/lib/libvirt-admin.la #usr/lib/libvirt-admin.so usr/lib/libvirt-admin.so.0 -usr/lib/libvirt-admin.so.0.2001.0 +usr/lib/libvirt-admin.so.0.2005.0 #usr/lib/libvirt-lxc.la #usr/lib/libvirt-lxc.so usr/lib/libvirt-lxc.so.0 -usr/lib/libvirt-lxc.so.0.2001.0 +usr/lib/libvirt-lxc.so.0.2005.0 #usr/lib/libvirt-qemu.la #usr/lib/libvirt-qemu.so usr/lib/libvirt-qemu.so.0 -usr/lib/libvirt-qemu.so.0.2001.0 +usr/lib/libvirt-qemu.so.0.2005.0 #usr/lib/libvirt.la #usr/lib/libvirt.so usr/lib/libvirt.so.0 -usr/lib/libvirt.so.0.2001.0 +usr/lib/libvirt.so.0.2005.0 #usr/lib/libvirt/connection-driver #usr/lib/libvirt/connection-driver/libvirt_driver_interface.la usr/lib/libvirt/connection-driver/libvirt_driver_interface.so @@ -115,147 +115,147 @@ usr/sbin/virtlogd #usr/share/augeas/lenses/tests/test_virtlogd.aug #usr/share/augeas/lenses/virtlockd.aug #usr/share/augeas/lenses/virtlogd.aug -#usr/share/doc/libvirt-2.1.0 -#usr/share/doc/libvirt-2.1.0/html -#usr/share/doc/libvirt-2.1.0/html/32favicon.png -#usr/share/doc/libvirt-2.1.0/html/404.html -#usr/share/doc/libvirt-2.1.0/html/acl.html -#usr/share/doc/libvirt-2.1.0/html/aclpolkit.html -#usr/share/doc/libvirt-2.1.0/html/api.html -#usr/share/doc/libvirt-2.1.0/html/api_extension.html -#usr/share/doc/libvirt-2.1.0/html/apps.html -#usr/share/doc/libvirt-2.1.0/html/archdomain.html -#usr/share/doc/libvirt-2.1.0/html/architecture.gif -#usr/share/doc/libvirt-2.1.0/html/architecture.html -#usr/share/doc/libvirt-2.1.0/html/archnetwork.html -#usr/share/doc/libvirt-2.1.0/html/archnode.html -#usr/share/doc/libvirt-2.1.0/html/archstorage.html -#usr/share/doc/libvirt-2.1.0/html/auditlog.html -#usr/share/doc/libvirt-2.1.0/html/auth.html -#usr/share/doc/libvirt-2.1.0/html/bindings.html -#usr/share/doc/libvirt-2.1.0/html/bugs.html -#usr/share/doc/libvirt-2.1.0/html/cgroups.html -#usr/share/doc/libvirt-2.1.0/html/compiling.html -#usr/share/doc/libvirt-2.1.0/html/contact.html -#usr/share/doc/libvirt-2.1.0/html/csharp.html -#usr/share/doc/libvirt-2.1.0/html/deployment.html -#usr/share/doc/libvirt-2.1.0/html/devguide.html -#usr/share/doc/libvirt-2.1.0/html/docs.html -#usr/share/doc/libvirt-2.1.0/html/downloads.html -#usr/share/doc/libvirt-2.1.0/html/drivers.html -#usr/share/doc/libvirt-2.1.0/html/drvbhyve.html -#usr/share/doc/libvirt-2.1.0/html/drvesx.html -#usr/share/doc/libvirt-2.1.0/html/drvhyperv.html -#usr/share/doc/libvirt-2.1.0/html/drvlxc.html -#usr/share/doc/libvirt-2.1.0/html/drvopenvz.html -#usr/share/doc/libvirt-2.1.0/html/drvphyp.html -#usr/share/doc/libvirt-2.1.0/html/drvqemu.html -#usr/share/doc/libvirt-2.1.0/html/drvremote.html -#usr/share/doc/libvirt-2.1.0/html/drvtest.html -#usr/share/doc/libvirt-2.1.0/html/drvuml.html -#usr/share/doc/libvirt-2.1.0/html/drvvbox.html -#usr/share/doc/libvirt-2.1.0/html/drvvirtuozzo.html -#usr/share/doc/libvirt-2.1.0/html/drvvmware.html -#usr/share/doc/libvirt-2.1.0/html/drvxen.html -#usr/share/doc/libvirt-2.1.0/html/errors.html -#usr/share/doc/libvirt-2.1.0/html/firewall.html -#usr/share/doc/libvirt-2.1.0/html/format.html -#usr/share/doc/libvirt-2.1.0/html/formatcaps.html -#usr/share/doc/libvirt-2.1.0/html/formatdomain.html -#usr/share/doc/libvirt-2.1.0/html/formatdomaincaps.html -#usr/share/doc/libvirt-2.1.0/html/formatnetwork.html -#usr/share/doc/libvirt-2.1.0/html/formatnode.html -#usr/share/doc/libvirt-2.1.0/html/formatnwfilter.html -#usr/share/doc/libvirt-2.1.0/html/formatsecret.html -#usr/share/doc/libvirt-2.1.0/html/formatsnapshot.html -#usr/share/doc/libvirt-2.1.0/html/formatstorage.html -#usr/share/doc/libvirt-2.1.0/html/formatstorageencryption.html -#usr/share/doc/libvirt-2.1.0/html/generic.css -#usr/share/doc/libvirt-2.1.0/html/goals.html -#usr/share/doc/libvirt-2.1.0/html/governance.html -#usr/share/doc/libvirt-2.1.0/html/hacking.html -#usr/share/doc/libvirt-2.1.0/html/hooks.html -#usr/share/doc/libvirt-2.1.0/html/html -#usr/share/doc/libvirt-2.1.0/html/html/home.png -#usr/share/doc/libvirt-2.1.0/html/html/index.html -#usr/share/doc/libvirt-2.1.0/html/html/left.png -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-common.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-domain-snapshot.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-domain.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-event.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-host.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-interface.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-network.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-nodedev.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-nwfilter.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-secret.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-storage.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-libvirt-stream.html -#usr/share/doc/libvirt-2.1.0/html/html/libvirt-virterror.html -#usr/share/doc/libvirt-2.1.0/html/html/right.png -#usr/share/doc/libvirt-2.1.0/html/html/up.png -#usr/share/doc/libvirt-2.1.0/html/hvsupport.html -#usr/share/doc/libvirt-2.1.0/html/index.html -#usr/share/doc/libvirt-2.1.0/html/internals -#usr/share/doc/libvirt-2.1.0/html/internals.html -#usr/share/doc/libvirt-2.1.0/html/internals/command.html -#usr/share/doc/libvirt-2.1.0/html/internals/eventloop.html -#usr/share/doc/libvirt-2.1.0/html/internals/locking.html -#usr/share/doc/libvirt-2.1.0/html/internals/oomtesting.html -#usr/share/doc/libvirt-2.1.0/html/internals/rpc.html -#usr/share/doc/libvirt-2.1.0/html/intro.html -#usr/share/doc/libvirt-2.1.0/html/java.html -#usr/share/doc/libvirt-2.1.0/html/libvirt-daemon-arch.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-driver-arch.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-header-bg.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-header-logo.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-net-logical.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-net-physical.png -#usr/share/doc/libvirt-2.1.0/html/libvirt-object-model.png -#usr/share/doc/libvirt-2.1.0/html/libvirt.css -#usr/share/doc/libvirt-2.1.0/html/libvirtLogo.png -#usr/share/doc/libvirt-2.1.0/html/locking-lockd.html -#usr/share/doc/libvirt-2.1.0/html/locking-sanlock.html -#usr/share/doc/libvirt-2.1.0/html/locking.html -#usr/share/doc/libvirt-2.1.0/html/logging.html -#usr/share/doc/libvirt-2.1.0/html/madeWith.png -#usr/share/doc/libvirt-2.1.0/html/main.css -#usr/share/doc/libvirt-2.1.0/html/migration-managed-direct.png -#usr/share/doc/libvirt-2.1.0/html/migration-managed-p2p.png -#usr/share/doc/libvirt-2.1.0/html/migration-native.png -#usr/share/doc/libvirt-2.1.0/html/migration-tunnel.png -#usr/share/doc/libvirt-2.1.0/html/migration-unmanaged-direct.png -#usr/share/doc/libvirt-2.1.0/html/migration.html -#usr/share/doc/libvirt-2.1.0/html/news-2005.html -#usr/share/doc/libvirt-2.1.0/html/news-2006.html -#usr/share/doc/libvirt-2.1.0/html/news-2007.html -#usr/share/doc/libvirt-2.1.0/html/news-2008.html -#usr/share/doc/libvirt-2.1.0/html/news-2009.html -#usr/share/doc/libvirt-2.1.0/html/news-2010.html -#usr/share/doc/libvirt-2.1.0/html/news-2011.html -#usr/share/doc/libvirt-2.1.0/html/news-2012.html -#usr/share/doc/libvirt-2.1.0/html/news-2013.html -#usr/share/doc/libvirt-2.1.0/html/news-2014.html -#usr/share/doc/libvirt-2.1.0/html/news-2015.html -#usr/share/doc/libvirt-2.1.0/html/news.html -#usr/share/doc/libvirt-2.1.0/html/node.gif -#usr/share/doc/libvirt-2.1.0/html/nss.html -#usr/share/doc/libvirt-2.1.0/html/pending.html -#usr/share/doc/libvirt-2.1.0/html/php.html -#usr/share/doc/libvirt-2.1.0/html/python.html -#usr/share/doc/libvirt-2.1.0/html/relatedlinks.html -#usr/share/doc/libvirt-2.1.0/html/remote.html -#usr/share/doc/libvirt-2.1.0/html/secureusage.html -#usr/share/doc/libvirt-2.1.0/html/securityprocess.html -#usr/share/doc/libvirt-2.1.0/html/sitemap.html -#usr/share/doc/libvirt-2.1.0/html/storage.html -#usr/share/doc/libvirt-2.1.0/html/testapi.html -#usr/share/doc/libvirt-2.1.0/html/testsuites.html -#usr/share/doc/libvirt-2.1.0/html/testtck.html -#usr/share/doc/libvirt-2.1.0/html/todo.html -#usr/share/doc/libvirt-2.1.0/html/uri.html -#usr/share/doc/libvirt-2.1.0/html/virshcmdref.html -#usr/share/doc/libvirt-2.1.0/html/windows.html +#usr/share/doc/libvirt-2.5.0 +#usr/share/doc/libvirt-2.5.0/html +#usr/share/doc/libvirt-2.5.0/html/32favicon.png +#usr/share/doc/libvirt-2.5.0/html/404.html +#usr/share/doc/libvirt-2.5.0/html/acl.html +#usr/share/doc/libvirt-2.5.0/html/aclpolkit.html +#usr/share/doc/libvirt-2.5.0/html/api.html +#usr/share/doc/libvirt-2.5.0/html/api_extension.html +#usr/share/doc/libvirt-2.5.0/html/apps.html +#usr/share/doc/libvirt-2.5.0/html/archdomain.html +#usr/share/doc/libvirt-2.5.0/html/architecture.gif +#usr/share/doc/libvirt-2.5.0/html/architecture.html +#usr/share/doc/libvirt-2.5.0/html/archnetwork.html +#usr/share/doc/libvirt-2.5.0/html/archnode.html +#usr/share/doc/libvirt-2.5.0/html/archstorage.html +#usr/share/doc/libvirt-2.5.0/html/auditlog.html +#usr/share/doc/libvirt-2.5.0/html/auth.html +#usr/share/doc/libvirt-2.5.0/html/bindings.html +#usr/share/doc/libvirt-2.5.0/html/bugs.html +#usr/share/doc/libvirt-2.5.0/html/cgroups.html +#usr/share/doc/libvirt-2.5.0/html/compiling.html +#usr/share/doc/libvirt-2.5.0/html/contact.html +#usr/share/doc/libvirt-2.5.0/html/csharp.html +#usr/share/doc/libvirt-2.5.0/html/deployment.html +#usr/share/doc/libvirt-2.5.0/html/devguide.html +#usr/share/doc/libvirt-2.5.0/html/docs.html +#usr/share/doc/libvirt-2.5.0/html/downloads.html +#usr/share/doc/libvirt-2.5.0/html/drivers.html +#usr/share/doc/libvirt-2.5.0/html/drvbhyve.html +#usr/share/doc/libvirt-2.5.0/html/drvesx.html +#usr/share/doc/libvirt-2.5.0/html/drvhyperv.html +#usr/share/doc/libvirt-2.5.0/html/drvlxc.html +#usr/share/doc/libvirt-2.5.0/html/drvopenvz.html +#usr/share/doc/libvirt-2.5.0/html/drvphyp.html +#usr/share/doc/libvirt-2.5.0/html/drvqemu.html +#usr/share/doc/libvirt-2.5.0/html/drvremote.html +#usr/share/doc/libvirt-2.5.0/html/drvtest.html +#usr/share/doc/libvirt-2.5.0/html/drvuml.html +#usr/share/doc/libvirt-2.5.0/html/drvvbox.html +#usr/share/doc/libvirt-2.5.0/html/drvvirtuozzo.html +#usr/share/doc/libvirt-2.5.0/html/drvvmware.html +#usr/share/doc/libvirt-2.5.0/html/drvxen.html +#usr/share/doc/libvirt-2.5.0/html/errors.html +#usr/share/doc/libvirt-2.5.0/html/firewall.html +#usr/share/doc/libvirt-2.5.0/html/format.html +#usr/share/doc/libvirt-2.5.0/html/formatcaps.html +#usr/share/doc/libvirt-2.5.0/html/formatdomain.html +#usr/share/doc/libvirt-2.5.0/html/formatdomaincaps.html +#usr/share/doc/libvirt-2.5.0/html/formatnetwork.html +#usr/share/doc/libvirt-2.5.0/html/formatnode.html +#usr/share/doc/libvirt-2.5.0/html/formatnwfilter.html +#usr/share/doc/libvirt-2.5.0/html/formatsecret.html +#usr/share/doc/libvirt-2.5.0/html/formatsnapshot.html +#usr/share/doc/libvirt-2.5.0/html/formatstorage.html +#usr/share/doc/libvirt-2.5.0/html/formatstorageencryption.html +#usr/share/doc/libvirt-2.5.0/html/generic.css +#usr/share/doc/libvirt-2.5.0/html/goals.html +#usr/share/doc/libvirt-2.5.0/html/governance.html +#usr/share/doc/libvirt-2.5.0/html/hacking.html +#usr/share/doc/libvirt-2.5.0/html/hooks.html +#usr/share/doc/libvirt-2.5.0/html/html +#usr/share/doc/libvirt-2.5.0/html/html/home.png +#usr/share/doc/libvirt-2.5.0/html/html/index.html +#usr/share/doc/libvirt-2.5.0/html/html/left.png +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-common.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-domain-snapshot.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-domain.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-event.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-host.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-interface.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-network.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-nodedev.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-nwfilter.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-secret.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-storage.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-libvirt-stream.html +#usr/share/doc/libvirt-2.5.0/html/html/libvirt-virterror.html +#usr/share/doc/libvirt-2.5.0/html/html/right.png +#usr/share/doc/libvirt-2.5.0/html/html/up.png +#usr/share/doc/libvirt-2.5.0/html/hvsupport.html +#usr/share/doc/libvirt-2.5.0/html/index.html +#usr/share/doc/libvirt-2.5.0/html/internals +#usr/share/doc/libvirt-2.5.0/html/internals.html +#usr/share/doc/libvirt-2.5.0/html/internals/command.html +#usr/share/doc/libvirt-2.5.0/html/internals/eventloop.html +#usr/share/doc/libvirt-2.5.0/html/internals/locking.html +#usr/share/doc/libvirt-2.5.0/html/internals/oomtesting.html +#usr/share/doc/libvirt-2.5.0/html/internals/rpc.html +#usr/share/doc/libvirt-2.5.0/html/intro.html +#usr/share/doc/libvirt-2.5.0/html/java.html +#usr/share/doc/libvirt-2.5.0/html/libvirt-daemon-arch.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-driver-arch.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-header-bg.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-header-logo.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-net-logical.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-net-physical.png +#usr/share/doc/libvirt-2.5.0/html/libvirt-object-model.png +#usr/share/doc/libvirt-2.5.0/html/libvirt.css +#usr/share/doc/libvirt-2.5.0/html/libvirtLogo.png +#usr/share/doc/libvirt-2.5.0/html/locking-lockd.html +#usr/share/doc/libvirt-2.5.0/html/locking-sanlock.html +#usr/share/doc/libvirt-2.5.0/html/locking.html +#usr/share/doc/libvirt-2.5.0/html/logging.html +#usr/share/doc/libvirt-2.5.0/html/madeWith.png +#usr/share/doc/libvirt-2.5.0/html/main.css +#usr/share/doc/libvirt-2.5.0/html/migration-managed-direct.png +#usr/share/doc/libvirt-2.5.0/html/migration-managed-p2p.png +#usr/share/doc/libvirt-2.5.0/html/migration-native.png +#usr/share/doc/libvirt-2.5.0/html/migration-tunnel.png +#usr/share/doc/libvirt-2.5.0/html/migration-unmanaged-direct.png +#usr/share/doc/libvirt-2.5.0/html/migration.html +#usr/share/doc/libvirt-2.5.0/html/news-2005.html +#usr/share/doc/libvirt-2.5.0/html/news-2006.html +#usr/share/doc/libvirt-2.5.0/html/news-2007.html +#usr/share/doc/libvirt-2.5.0/html/news-2008.html +#usr/share/doc/libvirt-2.5.0/html/news-2009.html +#usr/share/doc/libvirt-2.5.0/html/news-2010.html +#usr/share/doc/libvirt-2.5.0/html/news-2011.html +#usr/share/doc/libvirt-2.5.0/html/news-2012.html +#usr/share/doc/libvirt-2.5.0/html/news-2013.html +#usr/share/doc/libvirt-2.5.0/html/news-2014.html +#usr/share/doc/libvirt-2.5.0/html/news-2015.html +#usr/share/doc/libvirt-2.5.0/html/news.html +#usr/share/doc/libvirt-2.5.0/html/node.gif +#usr/share/doc/libvirt-2.5.0/html/nss.html +#usr/share/doc/libvirt-2.5.0/html/pending.html +#usr/share/doc/libvirt-2.5.0/html/php.html +#usr/share/doc/libvirt-2.5.0/html/python.html +#usr/share/doc/libvirt-2.5.0/html/relatedlinks.html +#usr/share/doc/libvirt-2.5.0/html/remote.html +#usr/share/doc/libvirt-2.5.0/html/secureusage.html +#usr/share/doc/libvirt-2.5.0/html/securityprocess.html +#usr/share/doc/libvirt-2.5.0/html/sitemap.html +#usr/share/doc/libvirt-2.5.0/html/storage.html +#usr/share/doc/libvirt-2.5.0/html/testapi.html +#usr/share/doc/libvirt-2.5.0/html/testsuites.html +#usr/share/doc/libvirt-2.5.0/html/testtck.html +#usr/share/doc/libvirt-2.5.0/html/todo.html +#usr/share/doc/libvirt-2.5.0/html/uri.html +#usr/share/doc/libvirt-2.5.0/html/virshcmdref.html +#usr/share/doc/libvirt-2.5.0/html/windows.html #usr/share/gtk-doc/html/libvirt #usr/share/gtk-doc/html/libvirt/general.html #usr/share/gtk-doc/html/libvirt/home.png diff --git a/lfs/libvirt b/lfs/libvirt index 8ebca73fc..996d32ecd 100644 --- a/lfs/libvirt +++ b/lfs/libvirt @@ -24,7 +24,7 @@ include Config -VER = 2.1.0 +VER = 2.5.0 THISAPP = libvirt-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -33,7 +33,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = i586 x86_64 PROG = libvirt -PAK_VER = 11 +PAK_VER = 12 DEPS = "libpciaccess libyajl ncat qemu" @@ -45,7 +45,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = fd1c054a8b59235e877efb728de79386 +$(DL_FILE)_MD5 = 001af1ca2545971c6b46628678fd4afa install : $(TARGET) check : $(patsubst %,$(DIR_CHK)/%,$(objects)) From 391560854f64ad2385adb3ff25dbbcec0ff92668 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Mon, 2 Jan 2017 16:17:08 +0100 Subject: [PATCH 045/464] Improvement of backup iso script The backup iso script did not check the arch of the host. On x86_64 host the wrong iso was downloaded. Furthermore, there were some if clauses which could cause trouble which I also tried to improve. (For example: -e is valid if we have a directory or a file, but we want to check for a file only ) Fixes: 11258 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- src/scripts/backupiso | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/scripts/backupiso b/src/scripts/backupiso index 014e8e980..1a682d016 100644 --- a/src/scripts/backupiso +++ b/src/scripts/backupiso @@ -1,9 +1,25 @@ #!/bin/sh +arch=$(uname -m) + +case $arch in + "i?86") + arch="i586" + echo "Your arch is $arch" + ;; + "x86_64") + arch="x86_64" + echo "Your arch is $arch" + ;; + *) + echo "Arch is not supported" + exit 1 + ;; +esac COREVER=$(cat /opt/pakfire/db/core/mine) # FIXME: edit this lines before release URL="http://download.ipfire.org/releases/ipfire-2.x/2.19-core$COREVER/" -ISO="ipfire-2.19.i586-full-core$COREVER.iso" +ISO="ipfire-2.19.$arch-full-core$COREVER.iso" if [ -z $1 ]; then echo usage: $0 backup-file @@ -15,7 +31,7 @@ TS=$1 mkdir -p /var/tmp/backupiso cd /var/tmp/backupiso -if [ ! -e ${ISO} ] +if [ ! -f ${ISO} ] then echo "Fetching ${URL}${ISO}" wget --quiet -c ${URL}${ISO} @@ -26,7 +42,7 @@ wget --quiet -O ${ISO}.md5 ${URL}${ISO}.md5 echo "Checking md5 of ${ISO}" md5sum --status -c ${ISO}.md5 -if [ $? -eq 0 -o $? -eq 24 ] +if [ $? -eq 0 ] || [ $? -eq 24 ] then echo "md5 is OK" else @@ -35,7 +51,7 @@ else wget --quiet -O ${ISO} ${URL}${ISO} echo "Checking again md5 of ${ISO}" md5sum --status -c ${ISO}.md5 - if [ $? -eq 0 -o $? -eq 24 ] + if [ $? -eq 0 ] || [ $? -eq 24 ] then echo "md5 is OK" else From b1b6e9f396efca5552df649d04a12bdbd1c4acb5 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Tue, 3 Jan 2017 17:49:06 +0100 Subject: [PATCH 046/464] Fix the backup iso script once again. In commit 391560854f64ad2385adb3ff25dbbcec0ff92668 was an error in the case statement. On i?586 the check fails. Removing the "" fixes the error. Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- src/scripts/backupiso | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/backupiso b/src/scripts/backupiso index 1a682d016..1799bc1b1 100644 --- a/src/scripts/backupiso +++ b/src/scripts/backupiso @@ -2,11 +2,11 @@ arch=$(uname -m) case $arch in - "i?86") + i?86) arch="i586" echo "Your arch is $arch" ;; - "x86_64") + x86_64) arch="x86_64" echo "Your arch is $arch" ;; From 9a657e9b3b07ae7fbc0d953ecdf0651e14a461ee Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 4 Jan 2017 11:22:02 +0000 Subject: [PATCH 047/464] core109: Ship updated backupiso script Signed-off-by: Michael Tremer --- config/rootfiles/core/109/filelists/files | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/core/109/filelists/files b/config/rootfiles/core/109/filelists/files index 7c1cc3f91..182b8161e 100644 --- a/config/rootfiles/core/109/filelists/files +++ b/config/rootfiles/core/109/filelists/files @@ -3,4 +3,5 @@ etc/issue lib/udev/rules.d/60-net.rules lib/udev/network-hotplug-bridges lib/udev/network-hotplug-rename +usr/local/bin/backupiso usr/local/bin/syslogdctrl From f2a309dc088a735a862052e8c77ecf1261e5ee50 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 3 Jan 2017 20:28:22 +0100 Subject: [PATCH 048/464] tmux: Update to 2.3 For details see: https://raw.githubusercontent.com/tmux/tmux/master/CHANGES Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/tmux | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lfs/tmux b/lfs/tmux index 2223d1330..300080d5f 100644 --- a/lfs/tmux +++ b/lfs/tmux @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2014 IPFire Team # +# Copyright (C) 2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.9a +VER = 2.3 THISAPP = tmux-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = tmux -PAK_VER = 3 +PAK_VER = 4 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b07601711f96f1d260b390513b509a2d +$(DL_FILE)_MD5 = fcfd1611d705d8b31df3c26ebc93bd3e install : $(TARGET) @@ -54,7 +54,7 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: +dist: @$(PAK) ############################################################################### From d2d13b36f49c0def85f58aea89901991dc1000b7 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 4 Jan 2017 15:33:55 +0100 Subject: [PATCH 049/464] Libvirt: Rootfile fixes Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/packages/libvirt | 41 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/config/rootfiles/packages/libvirt b/config/rootfiles/packages/libvirt index fe287ea7c..7285eb62c 100644 --- a/config/rootfiles/packages/libvirt +++ b/config/rootfiles/packages/libvirt @@ -31,8 +31,6 @@ etc/logrotate.d/libvirtd.libxl etc/logrotate.d/libvirtd.qemu #etc/logrotate.d/libvirtd.uml etc/rc.d/init.d/libvirt-guests -etc/rc.d/init.d/libvirtd -etc/rc.d/init.d/virtlogd usr/bin/virsh usr/bin/virt-admin usr/bin/virt-host-validate @@ -124,12 +122,8 @@ usr/sbin/virtlogd #usr/share/doc/libvirt-2.5.0/html/api.html #usr/share/doc/libvirt-2.5.0/html/api_extension.html #usr/share/doc/libvirt-2.5.0/html/apps.html -#usr/share/doc/libvirt-2.5.0/html/archdomain.html #usr/share/doc/libvirt-2.5.0/html/architecture.gif #usr/share/doc/libvirt-2.5.0/html/architecture.html -#usr/share/doc/libvirt-2.5.0/html/archnetwork.html -#usr/share/doc/libvirt-2.5.0/html/archnode.html -#usr/share/doc/libvirt-2.5.0/html/archstorage.html #usr/share/doc/libvirt-2.5.0/html/auditlog.html #usr/share/doc/libvirt-2.5.0/html/auth.html #usr/share/doc/libvirt-2.5.0/html/bindings.html @@ -137,8 +131,8 @@ usr/sbin/virtlogd #usr/share/doc/libvirt-2.5.0/html/cgroups.html #usr/share/doc/libvirt-2.5.0/html/compiling.html #usr/share/doc/libvirt-2.5.0/html/contact.html +#usr/share/doc/libvirt-2.5.0/html/contribute.html #usr/share/doc/libvirt-2.5.0/html/csharp.html -#usr/share/doc/libvirt-2.5.0/html/deployment.html #usr/share/doc/libvirt-2.5.0/html/devguide.html #usr/share/doc/libvirt-2.5.0/html/docs.html #usr/share/doc/libvirt-2.5.0/html/downloads.html @@ -203,22 +197,33 @@ usr/sbin/virtlogd #usr/share/doc/libvirt-2.5.0/html/internals/locking.html #usr/share/doc/libvirt-2.5.0/html/internals/oomtesting.html #usr/share/doc/libvirt-2.5.0/html/internals/rpc.html -#usr/share/doc/libvirt-2.5.0/html/intro.html #usr/share/doc/libvirt-2.5.0/html/java.html #usr/share/doc/libvirt-2.5.0/html/libvirt-daemon-arch.png #usr/share/doc/libvirt-2.5.0/html/libvirt-driver-arch.png -#usr/share/doc/libvirt-2.5.0/html/libvirt-header-bg.png -#usr/share/doc/libvirt-2.5.0/html/libvirt-header-logo.png -#usr/share/doc/libvirt-2.5.0/html/libvirt-net-logical.png -#usr/share/doc/libvirt-2.5.0/html/libvirt-net-physical.png #usr/share/doc/libvirt-2.5.0/html/libvirt-object-model.png #usr/share/doc/libvirt-2.5.0/html/libvirt.css -#usr/share/doc/libvirt-2.5.0/html/libvirtLogo.png #usr/share/doc/libvirt-2.5.0/html/locking-lockd.html #usr/share/doc/libvirt-2.5.0/html/locking-sanlock.html #usr/share/doc/libvirt-2.5.0/html/locking.html #usr/share/doc/libvirt-2.5.0/html/logging.html -#usr/share/doc/libvirt-2.5.0/html/madeWith.png +#usr/share/doc/libvirt-2.5.0/html/logos +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark-256.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark-800.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-dark.svg +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light-256.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light-800.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-banner-light.svg +#usr/share/doc/libvirt-2.5.0/html/logos/logo-base.svg +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-128.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-192.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-256.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-96.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-128.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-192.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-256.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered-96.png +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square-powered.svg +#usr/share/doc/libvirt-2.5.0/html/logos/logo-square.svg #usr/share/doc/libvirt-2.5.0/html/main.css #usr/share/doc/libvirt-2.5.0/html/migration-managed-direct.png #usr/share/doc/libvirt-2.5.0/html/migration-managed-p2p.png @@ -237,17 +242,15 @@ usr/sbin/virtlogd #usr/share/doc/libvirt-2.5.0/html/news-2013.html #usr/share/doc/libvirt-2.5.0/html/news-2014.html #usr/share/doc/libvirt-2.5.0/html/news-2015.html +#usr/share/doc/libvirt-2.5.0/html/news-2016.html #usr/share/doc/libvirt-2.5.0/html/news.html #usr/share/doc/libvirt-2.5.0/html/node.gif #usr/share/doc/libvirt-2.5.0/html/nss.html -#usr/share/doc/libvirt-2.5.0/html/pending.html #usr/share/doc/libvirt-2.5.0/html/php.html #usr/share/doc/libvirt-2.5.0/html/python.html -#usr/share/doc/libvirt-2.5.0/html/relatedlinks.html #usr/share/doc/libvirt-2.5.0/html/remote.html #usr/share/doc/libvirt-2.5.0/html/secureusage.html #usr/share/doc/libvirt-2.5.0/html/securityprocess.html -#usr/share/doc/libvirt-2.5.0/html/sitemap.html #usr/share/doc/libvirt-2.5.0/html/storage.html #usr/share/doc/libvirt-2.5.0/html/testapi.html #usr/share/doc/libvirt-2.5.0/html/testsuites.html @@ -273,10 +276,10 @@ usr/share/libvirt/api/libvirt-api.xml usr/share/libvirt/api/libvirt-lxc-api.xml usr/share/libvirt/api/libvirt-qemu-api.xml usr/share/libvirt/cpu_map.xml -#usr/share/libvirt/libvirtLogo.png #usr/share/libvirt/schemas usr/share/libvirt/schemas/basictypes.rng usr/share/libvirt/schemas/capability.rng +usr/share/libvirt/schemas/cputypes.rng usr/share/libvirt/schemas/domain.rng usr/share/libvirt/schemas/domaincaps.rng usr/share/libvirt/schemas/domaincommon.rng @@ -313,3 +316,5 @@ var/ipfire/backup/addons/includes/libvirt #var/log/libvirt/lxc #var/log/libvirt/qemu #var/log/libvirt/uml +etc/rc.d/init.d/libvirtd +etc/rc.d/init.d/virtlogd From 5f1546328e2a495f3cf57232564bbc7dc474df40 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 9 Jan 2017 14:57:24 +0000 Subject: [PATCH 050/464] lang: Add string for "Guardian" This is shown in the log section even when the add-on is not installed and was rendered as an empty field Signed-off-by: Michael Tremer --- doc/language_issues.en | 1 - langs/en/cgi-bin/en.pl | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/language_issues.en b/doc/language_issues.en index 03628020a..f2b6eb7b4 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -707,7 +707,6 @@ WARNING: untranslated string: Scan for Songs WARNING: untranslated string: bytes WARNING: untranslated string: fwhost cust geoipgrp WARNING: untranslated string: fwhost err hostip -WARNING: untranslated string: guardian WARNING: untranslated string: guardian block a host WARNING: untranslated string: guardian block httpd brute-force WARNING: untranslated string: guardian block owncloud brute-force diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 0e5b46d34..a04d994d6 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -1246,6 +1246,7 @@ 'green interface' => 'Green Interface', 'grouptype' => 'Grouptype:', 'guaranteed bandwith' => 'Guaranteed bandwith', +'guardian' => 'Guardian', 'guest ok' => 'allow guests to access', 'gui settings' => 'GUI Settings', 'gz with key' => 'Only an encrypted archive can be restored on this machine.', From 544cc6c7259ca8de4dbf5686bb9b896ccfcd69c6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 9 Jan 2017 15:26:54 +0000 Subject: [PATCH 051/464] sarg: Update to 2.3.10 Signed-off-by: Michael Tremer --- lfs/sarg | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lfs/sarg b/lfs/sarg index ce309a12b..0d9e821c7 100644 --- a/lfs/sarg +++ b/lfs/sarg @@ -24,7 +24,7 @@ include Config -VER = 2.3.9 +VER = 2.3.10 THISAPP = sarg-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = sarg -PAK_VER = 2 +PAK_VER = 3 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d6e8b854950f1bebb953e0ea2ca13428 +$(DL_FILE)_MD5 = f3c5f9a55ffea1662f6ec88daa0c49c3 install : $(TARGET) @@ -77,6 +77,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + + # Update gettext Makefile + cd $(DIR_APP) && cp -vf /usr/share/gettext/po/Makefile.in.in po/Makefile.in.in + cd $(DIR_APP) && ./configure \ --prefix=/usr \ --sysconfdir=/etc/sarg From 00d2007b040fdddd3455e4172bb7a19409d95ca2 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Mon, 9 Jan 2017 18:09:43 +0100 Subject: [PATCH 052/464] strongswan: fix rootfile (padlock) Signed-off-by: Arne Fitzenreiter --- config/rootfiles/common/strongswan | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/rootfiles/common/strongswan b/config/rootfiles/common/strongswan index 38da9862c..354ecd7b5 100644 --- a/config/rootfiles/common/strongswan +++ b/config/rootfiles/common/strongswan @@ -40,6 +40,7 @@ etc/strongswan.d/charon/kernel-netlink.conf etc/strongswan.d/charon/md5.conf etc/strongswan.d/charon/nonce.conf etc/strongswan.d/charon/openssl.conf +#etc/strongswan.d/charon/padlock.conf etc/strongswan.d/charon/pem.conf etc/strongswan.d/charon/pgp.conf etc/strongswan.d/charon/pkcs1.conf @@ -136,6 +137,7 @@ usr/lib/ipsec/plugins/libstrongswan-kernel-netlink.so usr/lib/ipsec/plugins/libstrongswan-md5.so usr/lib/ipsec/plugins/libstrongswan-nonce.so usr/lib/ipsec/plugins/libstrongswan-openssl.so +#usr/lib/ipsec/plugins/libstrongswan-padlock.so usr/lib/ipsec/plugins/libstrongswan-pem.so usr/lib/ipsec/plugins/libstrongswan-pgp.so usr/lib/ipsec/plugins/libstrongswan-pkcs1.so @@ -218,6 +220,7 @@ usr/sbin/swanctl #usr/share/strongswan/templates/config/plugins/md5.conf #usr/share/strongswan/templates/config/plugins/nonce.conf #usr/share/strongswan/templates/config/plugins/openssl.conf +#usr/share/strongswan/templates/config/plugins/padlock.conf #usr/share/strongswan/templates/config/plugins/pem.conf #usr/share/strongswan/templates/config/plugins/pgp.conf #usr/share/strongswan/templates/config/plugins/pkcs1.conf From 4f857eea41e1e5cce0bd7a48f1e0d6bafc33cb7e Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Tue, 10 Jan 2017 14:12:27 +0100 Subject: [PATCH 053/464] BUG11278: Cleanup function for network check Deleted some code which is also used in another function Signed-off-by: Alexander Marx Signed-off-by: Michael Tremer --- config/cfgroot/general-functions.pl | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 298e68c5a..188bb7f8b 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -540,13 +540,9 @@ sub checksubnets return $errormessage; } } - - #check if we use one of ipfire's networks (green,orange,blue) - &readhash("${General::swroot}/ethernet/settings", \%ownnet); - if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} - if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} - if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} - if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} + + #call check_net_internal + &General::check_net_internal($ccdnet); } sub check_net_internal{ From ff6cc71107ae50e913c87a9bc77b3af4b31ec932 Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Tue, 10 Jan 2017 15:13:58 +0100 Subject: [PATCH 054/464] BUG11278: enable creation from subnets of internal networks In firewallgroups it was not possible to create new networks that are subnets of IPFire internal networks. Now this is possible for all internal networks. Signed-off-by: Alexander Marx Signed-off-by: Michael Tremer --- config/cfgroot/general-functions.pl | 8 ++++---- config/cfgroot/network-functions.pl | 13 +++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 188bb7f8b..081e4e3df 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -553,10 +553,10 @@ sub check_net_internal{ $cidr=&iporsubtocidr($cidr); #check if we use one of ipfire's networks (green,orange,blue) &readhash("${General::swroot}/ethernet/settings", \%ownnet); - if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} - if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} - if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} - if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} + if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'GREEN_NETADDRESS'}/$ownnet{'GREEN_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} + if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'ORANGE_NETADDRESS'}/$ownnet{'ORANGE_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} + if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'BLUE_NETADDRESS'}/$ownnet{'BLUE_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} + if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'RED_NETADDRESS'}/$ownnet{'RED_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} } sub validport diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 70fa5ed35..5559be514 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -102,6 +102,19 @@ sub bin2ip($) { return $address; } +#Takes two network addresses and compares them against each other +#returns true if equal or false if not +sub network_equal{ + my $network1 = shift; + my $network2 = shift; + my $bin1 = &network2bin($network1); + my $bin2 = &network2bin($network2); + if ($bin1 eq $bin2){ + return 1; + } + return 0; +} + # Takes a network in either a.b.c.d/a.b.c.d or a.b.c.d/e notation # and will return an 32 bit integer representing the start # address and an other one representing the network mask. From 8f23ce8e53d5b016cbb05e24566739983c89894a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 11 Jan 2017 17:09:42 +0000 Subject: [PATCH 055/464] network-functions.pl: Fix code formatting Signed-off-by: Michael Tremer --- config/cfgroot/network-functions.pl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 5559be514..db9d7dbfc 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -102,16 +102,19 @@ sub bin2ip($) { return $address; } -#Takes two network addresses and compares them against each other -#returns true if equal or false if not -sub network_equal{ +# Takes two network addresses, compares them against each other +# and returns true if equal or false if not +sub network_equal { my $network1 = shift; my $network2 = shift; + my $bin1 = &network2bin($network1); my $bin2 = &network2bin($network2); - if ($bin1 eq $bin2){ + + if ($bin1 eq $bin2) { return 1; } + return 0; } From 3713af1e276dfb167abf29783ee85a64e865e845 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 11 Jan 2017 17:18:46 +0000 Subject: [PATCH 056/464] network-functions.pl: Add tests for the new equals function Signed-off-by: Michael Tremer --- config/cfgroot/network-functions.pl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index db9d7dbfc..5f53704cd 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -368,12 +368,26 @@ sub testsuite() { $result = &find_next_ip_address("1.2.3.4", 2); assert($result eq "1.2.3.6"); + $result = &network_equal("192.168.0.0/24", "192.168.0.0/255.255.255.0"); + assert($result); + + $result = &network_equal("192.168.0.0/24", "192.168.0.0/25"); + assert(!$result); + + $result = &network_equal("192.168.0.0/24", "192.168.0.128/25"); + assert(!$result); + + $result = &network_equal("192.168.0.1/24", "192.168.0.XXX/24"); + assert($result); + $result = &ip_address_in_network("10.0.1.4", "10.0.0.0/8"); assert($result); $result = &ip_address_in_network("192.168.30.11", "192.168.30.0/255.255.255.0"); assert($result); + print "Testsuite completed successfully!\n"; + return 0; } From ed91d763e6851923d5d5e3b044776ae7194ac2b8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 11 Jan 2017 17:21:46 +0000 Subject: [PATCH 057/464] core109: Ship recently updated perl files Signed-off-by: Michael Tremer --- config/rootfiles/core/109/filelists/files | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/rootfiles/core/109/filelists/files b/config/rootfiles/core/109/filelists/files index 182b8161e..0d5de8fdd 100644 --- a/config/rootfiles/core/109/filelists/files +++ b/config/rootfiles/core/109/filelists/files @@ -5,3 +5,5 @@ lib/udev/network-hotplug-bridges lib/udev/network-hotplug-rename usr/local/bin/backupiso usr/local/bin/syslogdctrl +var/ipfire/general-functions.pl +var/ipfire/network-functions.pl From 3d7f409cba2b94957cc315ecb96522552a4d4f7b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 14 Jan 2017 13:10:43 +0100 Subject: [PATCH 058/464] bind: Update to 9.11.0-P2 For details see: https://ftp.isc.org/isc/bind9/9.11.0-P2/RELEASE-NOTES-bind-9.11.0-P2.html "BIND 9.11.0-P2 addresses the security issues described in CVE-2016-9131, CVE-2016-9147, CVE-2016-9444 and CVE-2016-9778. ... Security Fixes A coding error in the nxdomain-redirect feature could lead to an assertion failure if the redirection namespace was served from a local authoritative data source such as a local zone or a DLZ instead of via recursive lookup. This flaw is disclosed in CVE-2016-9778. [RT Named could mishandle authority sections that were missing RRSIGs triggering an assertion failure. This flaw is disclosed in CVE-2016-9444. [RT # 43632] Named mishandled some responses where covering RRSIG records are returned without the requested data resulting in a assertion failure. This flaw is disclosed in CVE-2016-9147. [RT #43548] Named incorrectly tried to cache TKEY records which could trigger a assertion failure when there was a class mismatch. This flaw is disclosed in CVE-2016-9131. [RT #43522] It was possible to trigger assertions when processing a response. This flaw is disclosed in CVE-2016-8864. [RT #43465]" Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/bind | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/bind b/lfs/bind index 7554cb123..d25c2df9f 100644 --- a/lfs/bind +++ b/lfs/bind @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -25,7 +25,7 @@ include Config -VER = 9.11.0-P1 +VER = 9.11.0-P2 THISAPP = bind-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -43,7 +43,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4ec15dcf90ad77e923a05d7386348080 +$(DL_FILE)_MD5 = b8ccec541de18ac2716e7a8268baaaba install : $(TARGET) From 3bbe85a500bb9003d698e73fe835f2e92b3b84e9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 16 Jan 2017 16:50:42 +0000 Subject: [PATCH 059/464] core109: Ship bind security update Signed-off-by: Michael Tremer --- config/rootfiles/core/109/filelists/bind | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/109/filelists/bind diff --git a/config/rootfiles/core/109/filelists/bind b/config/rootfiles/core/109/filelists/bind new file mode 120000 index 000000000..48a0ebaef --- /dev/null +++ b/config/rootfiles/core/109/filelists/bind @@ -0,0 +1 @@ +../../../common/bind \ No newline at end of file From 5056b4f104668a651671773d3f57c0d0151789a4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 16 Jan 2017 16:53:35 +0000 Subject: [PATCH 060/464] Drop mldonkey files The packages has been dropped years ago. However, some files remained in the source tree. Signed-off-by: Michael Tremer --- config/backup/includes/mldonkey | 1 - config/etc/group | 1 - config/etc/passwd | 1 - config/mldonkey/bittorrent.ini | 83 -- config/mldonkey/directconnect.ini | 70 -- config/mldonkey/donkey.ini | 279 ----- config/mldonkey/downloads.ini | 1007 ----------------- config/mldonkey/fileTP.ini | 35 - config/mldonkey/file_sources.ini | 17 - config/mldonkey/files.ini | 13 - config/mldonkey/friends.ini | 7 - config/mldonkey/mldonkey_submit | 40 - config/mldonkey/mlnet_strings.en | 888 --------------- config/mldonkey/mlnet_strings.en_US.utf8 | 1012 ------------------ config/mldonkey/mlsubmit.reg | 12 - config/mldonkey/onlinesig.dat | 2 - config/mldonkey/searches.ini | 94 -- config/mldonkey/servers.ini | 17 - config/mldonkey/shared_files.ini | 5 - config/mldonkey/shared_files_new.ini | 5 - config/mldonkey/statistics.ini | 17 - config/mldonkey/stats.ini | 108 -- config/mldonkey/stats_bt.ini | 468 -------- config/mldonkey/stats_mod.ini | 683 ------------ config/mldonkey/users.ini | 54 - config/rootfiles/common/armv5tel/initscripts | 1 - config/rootfiles/common/i586/initscripts | 1 - config/rootfiles/common/x86_64/initscripts | 1 - src/initscripts/init.d/mldonkey | 48 - src/paks/mldonkey/install.sh | 29 - src/paks/mldonkey/uninstall.sh | 31 - src/paks/mldonkey/update.sh | 26 - 32 files changed, 5056 deletions(-) delete mode 100644 config/backup/includes/mldonkey delete mode 100644 config/mldonkey/bittorrent.ini delete mode 100644 config/mldonkey/directconnect.ini delete mode 100644 config/mldonkey/donkey.ini delete mode 100644 config/mldonkey/downloads.ini delete mode 100644 config/mldonkey/fileTP.ini delete mode 100644 config/mldonkey/file_sources.ini delete mode 100644 config/mldonkey/files.ini delete mode 100644 config/mldonkey/friends.ini delete mode 100755 config/mldonkey/mldonkey_submit delete mode 100644 config/mldonkey/mlnet_strings.en delete mode 100644 config/mldonkey/mlnet_strings.en_US.utf8 delete mode 100644 config/mldonkey/mlsubmit.reg delete mode 100644 config/mldonkey/onlinesig.dat delete mode 100644 config/mldonkey/searches.ini delete mode 100644 config/mldonkey/servers.ini delete mode 100644 config/mldonkey/shared_files.ini delete mode 100644 config/mldonkey/shared_files_new.ini delete mode 100644 config/mldonkey/statistics.ini delete mode 100644 config/mldonkey/stats.ini delete mode 100644 config/mldonkey/stats_bt.ini delete mode 100644 config/mldonkey/stats_mod.ini delete mode 100644 config/mldonkey/users.ini delete mode 100644 src/initscripts/init.d/mldonkey delete mode 100644 src/paks/mldonkey/install.sh delete mode 100644 src/paks/mldonkey/uninstall.sh delete mode 100644 src/paks/mldonkey/update.sh diff --git a/config/backup/includes/mldonkey b/config/backup/includes/mldonkey deleted file mode 100644 index a6dfee81e..000000000 --- a/config/backup/includes/mldonkey +++ /dev/null @@ -1 +0,0 @@ -/opt/mldonkey/.mldonkey/ diff --git a/config/etc/group b/config/etc/group index e4897db25..d781745c7 100644 --- a/config/etc/group +++ b/config/etc/group @@ -37,7 +37,6 @@ postfix:x:107: postdrop:x:108: clamav:x:109: amavis:x:110: -mldonkey:x:111: audio:x:112: video:x:113: asterisk:x:114: diff --git a/config/etc/passwd b/config/etc/passwd index 542e3bf94..93940d606 100644 --- a/config/etc/passwd +++ b/config/etc/passwd @@ -21,6 +21,5 @@ clamav:x:109:109:Clam AntiVirus:/home/clamav:/bin/false amavis:x:110:110:Amavisd-new user:/var/amavis: cyrus:x:111:12:Cyrus user:/usr/cyrus: filter:x:112:12:Spam user:/home/filter:/bin/false -mldonkey:x:113:111:Mldonkey user:/opt/mldonkey:/bin/false asterisk:x:114:114:Asterisk user:/var/empty:/bin/false samba:x:1000:1000:Samba User:/var/empty:/bin/false diff --git a/config/mldonkey/bittorrent.ini b/config/mldonkey/bittorrent.ini deleted file mode 100644 index fbb170ee4..000000000 --- a/config/mldonkey/bittorrent.ini +++ /dev/null @@ -1,83 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : Bittorrent *) - (* Bittorrent options *) - (************************************) - - - - (* The port to bind the client to *) - (* changing this option requires restart of MLDonkey core *) - client_port = 6882 - - (* The UID of this client *) - client_uid = FVGUYMROHEXDALLJAB2KACHON6Y5HBUN - - (* Ask the tracker for new sources only if you have fewer than that number of sources *) - ask_tracker_threshold = 20 - - (* Maximum number of HTTP redirects before reaching the tracker - maximum 10, 0 to disable *) - max_tracker_redirect = 1 - - (* Send client key to trackers *) - send_key = true - - (* Maximum number of uploaders for one torrent *) - max_uploaders_per_torrent = 5 - - (* Maximum number of uploaders for bittorrent *) - max_bt_uploaders = 5 - - (* Number of peers to request from tracker (Negative # = let tracker decide) *) - numwant = -1 - - (* Interval in seconds 'torrents/incoming' is scanned for new torrent files to be downloaded, 0 to deactivate *) - (* changing this option requires restart of MLDonkey core *) - import_new_torrents_interval = 60. - - (* Number of retries before a tracker is disabled, use 0 to not disable trackers *) - tracker_retries = 10 - - (* Minimum time in seconds to wait between asking the tracker for sources *) - min_tracker_reask_interval = 300 - - (* Timeout on client connections *) - client_timeout = 90. - - (* User agent string (default = "default") *) - user_agent = default - - (* (internal option) *) - (* Do not change this option, internal use only! *) - options_version = 0 - old_files = [] - - (* The port to bind the tracker to *) - (* changing this option requires restart of MLDonkey core *) - tracker_port = 6881 - - (* The maximal number of tracked files (to prevend saturation attack) *) - max_tracked_files = 100 - - (* The maximal number of peers returned by the tracker *) - max_tracker_reply = 20 - - (* The tracker will check the torrent file is available if an announce request is received *) - tracker_force_local_torrents = true - - (* The tracker will check the client key to update ip if changed *) - tracker_use_key = true - - (* Let you define a default tracker for creating torrents (leave empty for mlnet tracker) *) - default_tracker = "" - - (* Let you define a default comment for creating torrents *) - default_comment = "" - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/directconnect.ini b/config/mldonkey/directconnect.ini deleted file mode 100644 index 1010baed8..000000000 --- a/config/mldonkey/directconnect.ini +++ /dev/null @@ -1,70 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : DirectConnect *) - (* DirectConnect options *) - (************************************) - - - - (* The port to bind the client to *) - client_port = 4444 - - (* How many slots are open to other clients *) - dc_open_slots = 2 - - (* Your login on DC (no spaces !!!) *) - login = "" - - (* The URL from which the first server list is downloaded *) - servers_list_url = "http://dchublist.com/hublist.config.bz2" - - (* Define here a list of address/passwords/nick triples for hubs in form: - [ ("hubserver.ip.com", "nick1", "pass1"); - ("somehub.somewhere.org", "nick2", "pass2"); - ("11.22.333.444", "nick3", "pass3"); - ] *) - hubs_passwords = [] - - (* The time a search is active *) - search_timeout = 60 - - (* Minimum time between automated file tth searches in minutes *) - file_search_time = 60 - - (* In initialization, the time in seconds we wait connection responses from client *) - client_timeout = 90 - - (* The maximum time in seconds we wait data from client in downloading *) - client_read_timeout = 60 - - (* The maximum time in seconds we wait to continue pushing data to client in uploading *) - client_write_timeout = 60 - - (* How many seconds we wait a client to continue slot before closing and freeing the slot *) - wait_for_next_upload = 30 - - (* Is this client firewalled (use passive searches) *) - firewalled = false - - (* Automatically find alternative sources, if file is unavailable. Also add sources - from searches automatically *) - autosearch_by_tth = true - - (* Maximal number of sources to single file *) - max_sources_file = 5 - - (* The line speed sent in the MyINFO message - eg. Modem, Cable, DSL, Satellite, LAN(T1), LAN(T3) *) - client_speed = DSL - - (* (internal option) *) - (* Do not change this option, internal use only! *) - options_version = 0 - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/donkey.ini b/config/mldonkey/donkey.ini deleted file mode 100644 index 1a49c61a6..000000000 --- a/config/mldonkey/donkey.ini +++ /dev/null @@ -1,279 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : Donkey *) - (* Donkey options *) - (************************************) - - - - (* The port used for connection by other donkey clients. *) - (* changing this option requires restart of MLDonkey core *) - port = 4662 - - (* The number of servers you want to stay connected to *) - max_connected_servers = 3 - - (* Should mldonkey try to detect sources responsible for corruption and ban them, currently disabled *) - reliable_sources = true - - (* Should mldonkey try to detect sources masquerading as others and ban them *) - ban_identity_thieves = true - - (* A list of server IP to remove from server list. Can contain single IPs, CIDR ranges, or begin-end ranges. - Servers on this list can't be added, and will eventually be removed *) - server_black_list = [] - - (* immediately close connection to servers that don't grant a High ID *) - force_high_id = false - - (* send all clients your IP regardless of what ID was assigned by the server *) - force_client_high_id = false - - (* Set this option to false if you don't want to - receive new servers from servers *) - update_server_list_server = false - - (* Set this option to false if you don't want to - receive new servers from server.met *) - update_server_list_server_met = true - - (* Set this option to false if you don't want to - receive new servers from clients *) - update_server_list_client = false - - (* Maximal number of sources for each file *) - max_sources_per_file = 5000 - - (* The MD4 of this client *) - client_md4 = "00E0B50D660EA80F530BC4C540506FA4" - - (* The RSA private key of this client *) - client_private_key = "MIIBCAIBADANBgkqhkiG9w0BAQEFAASB8zCB8AIBAAIxAKVGA5DvO9HEl/pov8Fqc1E5mp83Uy3oRQ9Ob9ycWxpC47HyAHpaMUfr9WLj2+BrZwIBEQIwMJwfKqC3PbJK0S3eC7Xlrnpap0yB4FNfIZYVovj86sjd9su5EHoIlORptq5L7kSBAhkAu7MM9al0lYqt/3eEC5/D7Da22OKOPJFZAhkA4WnmIz3xAA1DBPkHNrUc+xMKUBcYRoq/AhkAsKiEqvnXI1VYd/gDzrR8KZzoU6gNZi5xAhhCTFK/EjfS1rlb0MXi6fl3BZmfFdn2oUcCGHfyegqjsdMDeH7mDwqIRlXG/JrilDZ8Og==" - - (* Enable secure user identification support *) - enable_sui = true - - (* disconnect if server users is smaller *) - min_users_on_server = 0 - - (* maximum number of files published to servers per minute, eMule default 200 *) - max_published_files = 200 - - (* login of client on eDonkey network (nothing default to global one) *) - login = "" - - (* The files that were downloaded *) - old_files = [] - - - (************************************) - (* SECTION : Overnet *) - (* Overnet options *) - (************************************) - - - Overnet = { - - (* The protocol version sent on Overnet connections replies *) - protocol_connectreply_version = 44 - - (* The protocol version sent on Overnet connections *) - protocol_connect_version = 1044 - - (* Set this option to false if you don't want to receive new Overnet peers *) - update_nodes = true - - (* The MD4 of the Overnet client *) - md4 = F168E4A3FCDADBBF8175AA5DFBAE8B89 - - (* Interval (in seconds) before republish files *) - republish = 10800. - - (* allow extended search to search on overnet *) - search_keyword = true - - (* Size of the filename storage used to answer queries *) - store_size = 2000 - - (* port for overnet *) - (* changing this option requires restart of MLDonkey core *) - port = 21984 -} - - - (************************************) - (* SECTION : Kademlia *) - (* Kademlia options *) - (************************************) - - - Kademlia = { - - (* Set this option to false if you don't want to receive new Overnet peers *) - update_nodes = true - - (* The MD4 of the Overnet client *) - md4 = C5A53009B6AC813961C80F7BD0CC99B4 - - (* Interval (in seconds) before republish files *) - republish = 10800. - - (* allow extended search to search on overnet *) - search_keyword = true - - (* Size of the filename storage used to answer queries *) - store_size = 2000 - - (* port for Kademlia *) - port = 2096 -} - - - -(*****************************************************************) -(* *) -(* ADVANCED OPTIONS *) -(* *) -(* All the options after this line are for the expert *) -(* user. Do not modify them if you are not sure. *) -(* *) -(*****************************************************************) - - - - - - (************************************) - (* SECTION : Donkey FOR EXPERTS *) - (* Donkey options *) - (************************************) - - - - (* Max number of UDP packets per round for eXtended Search *) - max_xs_packets = 30 - - (* Delay used to request file sources *) - check_client_connections_delay = 180. - - (* Timeout on client connections when not queued *) - client_timeout = 40. - - (* Set this option to false if you don't want mldonkey - to change the master servers it is connected to *) - keep_best_server = true - - (* only servers which are set to 'preferred' will be connected, - please note that any server must be set to preferred to use this feature *) - connect_only_preferred_server = false - - (* Number of servers that can be used to walk - between servers *) - max_walker_servers = 1 - - (* The maximal delay a connection with a server should last when walking through the list *) - walker_server_lifetime = 300 - log_clients_on_console = false - - (* Allow mldonkey to propagate your sources to other mldonkey clients. - This function is superseeded by eMule-style source exchange, - this option is outdated *) - propagate_sources = false - - (* Save sources to file_sources.ini and reload them on core start. *) - keep_sources = true - black_list = true - - (* A list of ports that specify servers to remove - from server list. Servers with ports on this list can't be added, and - will eventually be removed *) - port_black_list = [] - - (* How long should we wait in the queue of another client *) - queued_timeout = 1800. - - (* How long can a silent client stay in the upload queue *) - upload_timeout = 600. - - (* How long a downloading client can stay in my upload queue (in minutes >5) *) - upload_lifetime = 90 - - (* If true, each client is allowed to receive one chunk, this setting overrides upload_lifetime *) - upload_full_chunks = true - - (* If true, each client is allowed to complete only one chunk, independent, if it is empty or - partial. this setting overrides upload_full_chunks and dynamic_upload_lifetime, - but is, as a failsafe, limited by upload_lifetime (should be set reasonable high) *) - upload_complete_chunks = false - - (* Each client upload lifetime depends on download-upload ratio *) - dynamic_upload_lifetime = false - - (* Uploaded zones (1 zone = 180 kBytes) needed to enable the dynamic upload lifetime *) - dynamic_upload_threshold = 10 - - (* How long can a silent server stay connected *) - connected_server_timeout = 1800. - - (* The weight of upload on a donkey connection compared to upload on other - peer-to-peer networks. Setting it to 5 for example means that a donkey - connection will be allowed to send 5 times more information per second than - an Open Napster connection. This is done to favorise donkey connections - over other networks, where upload is less efficient, without preventing - upload from these networks. *) - upload_power = 5 - - (* max number of days after which an unconnected server is removed *) - max_server_age = 2 - - (* How often should remove old donkey servers (see max_server_age) be called - (in seconds, 0 to disable) *) - (* changing this option requires restart of MLDonkey core *) - remove_old_servers_delay = 900. - - (* Minimal number of servers remaining after remove_old_servers *) - min_left_servers = 20 - - (* How often should we check all servers (minimum 4 hours, 0 to disable) *) - servers_walking_period = 6 - - (* Are the cancelled files added to the old files list to prevent re-download ? *) - keep_cancelled_in_old_files = false - - (* Are the downloaded files added to the old files list to prevent re-download ? *) - keep_downloaded_in_old_files = false - - (* true if you want your mldonkey to lose some - upload bandwidth sending messages to clients which are banned :) *) - send_warning_messages = false - - (* true if you want your client to ban - clients that try queue jumping (3 reconnections faster than 9 minutes) *) - ban_queue_jumpers = true - - (* true if you want your client IP to be set from servers ID *) - use_server_ip = true - - (* Set the number of hours you want client to remain banned *) - ban_period = 1 - - (* Set the maximal rank of a client to be kept as a client *) - good_client_rank = 500 - - (* (internal option) *) - (* Do not change this option, internal use only! *) - options_version = 4 - -(* - The following options are not used (errors, obsolete, ...) -*) -become_master_delay = 120 -immediate_master = false -max_udp_sends = 10 -check_connections_delay = 5. -max_dialog_history = 30 -initial_score = 5 diff --git a/config/mldonkey/downloads.ini b/config/mldonkey/downloads.ini deleted file mode 100644 index fb050a05e..000000000 --- a/config/mldonkey/downloads.ini +++ /dev/null @@ -1,1007 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : Main *) - (* Main options *) - (************************************) - - - - (* small name of client *) - client_name = ipfire - - - (************************************) - (* SECTION : Interfaces *) - (* Options to control ports used by mldonkey interfaces *) - (************************************) - - - - (* list of IP address allowed to connect to the core via telnet/GUI/WEB - for internal command set: list separated by spaces - example for internal command: set allowed_ips "127.0.0.0/8 192.168.1.2" - or for editing the ini-file: list separated by semi-colon - example for ini-file: allowed_ips = [ "127.0.0.0/8"; "192.168.1.2";] - CIDR and range notations are supported: ie use 192.168.0.0/24 - or 192.168.0.0-192.168.0.255 for 192.168.0.* *) - allowed_ips = [ - "0.0.0.0/0";] - - (* port for Graphical Interfaces *) - (* changing this option requires restart of MLDonkey core *) - gui_port = 4001 - - (* port for GiFT Graphical Interfaces interaction. It was 1213, but the default is - now 0 for disabled, because it does not check for a password. *) - (* changing this option requires restart of MLDonkey core *) - gift_port = 0 - - (* The port used to connect to your client with a WEB browser *) - (* changing this option requires restart of MLDonkey core *) - http_port = 4080 - - (* port for user interaction *) - (* changing this option requires restart of MLDonkey core *) - telnet_port = 4000 - - (* Aliases to commands. The alias (fist string) has to be - whitespaceless, the outcome of the alias (second string) - may have spaces (put it in quotation then). *) - alias_commands = [ - (quit, q); - (exit, q);] - - - (************************************) - (* SECTION : Bandwidth *) - (* Bandwidth options *) - (************************************) - - - - (* The maximal upload rate you can tolerate on your link in kBytes/s (0 = no limit) - The limit will apply on all your connections (clients and servers) and both - control and data messages. *) - max_hard_upload_rate = 10 - - (* The maximal download rate you can tolerate on your link in kBytes/s (0 = no limit) - The limit will apply on all your connections (clients and servers) and both - control and data messages. Maximum value depends on max_hard_upload_rate: - >= 10 -> unlimited download - < 10 > 3 -> download limited to upload * 4 - < 4 -> download limited to upload * 3 *) - max_hard_download_rate = 50 - - (* Second maximal upload rate for easy toggling (use bw_toggle) *) - max_hard_upload_rate_2 = 5 - - (* Second maximal download rate for easy toggling (use bw_toggle) *) - max_hard_download_rate_2 = 20 - - (* Maximal number of opened connections *) - max_opened_connections = 200 - - (* Amount of indirect connections in percent (min 30, max 70) of max_opened_connections *) - max_indirect_connections = 30 - - (* How many slots can be used for upload *) - max_upload_slots = 5 - - (* How many percent of upload slots can be used for downloading files tagged as release *) - max_release_slots = 20 - - (* Set aside a single reserved slot to upload to friends *) - friends_upload_slot = true - - (* Maximum file size to benefit from the reserved slot for small files (0 to disable) *) - small_files_slot_limit = 10240 - - (* Set this to true if you want to have dynamic upload slot allocation (experimental) *) - dynamic_slots = false - - (* Maximal number of connections that can be opened per second *) - max_connections_per_second = 5 - - (* list of IP addresses allowed to connect to the core with no limit on - upload/download and upload slots. List separated by spaces, wildcard=255 - ie: use 192.168.0.255 for 192.168.0.* *) - nolimit_ips = [ - "127.0.0.1";] - - (* This option enables MLdonkey to always read as much data as possible - from a channel, but use more CPU as it must then copy the data in the - channel buffer. *) - copy_read_buffer = true - - - (************************************) - (* SECTION : Networks *) - (* Networks options *) - (************************************) - - - - (* Set to true if you also want mldonkey to run as an overnet client - (enable_donkey must be true) *) - enable_overnet = true - - (* Set to true if you also want mldonkey to run as an kademlia client - (enable_donkey must be true, and only experimental) *) - enable_kademlia = false - - (* Set to true if you want mldonkey to connect to edonkey servers - (enable_donkey must be true, and only experimental) *) - enable_servers = true - - (* Set to true if you also want mldonkey to run as an Bittorrent client *) - enable_bittorrent = true - - (* Set to true if you also want mldonkey to run as a donkey client *) - enable_donkey = true - - (* Set to true if you also want mldonkey to run as a napster client (experimental) *) - enable_opennap = false - - (* Set to true if you also want mldonkey to run as a soulseek client (experimental) *) - enable_soulseek = false - - (* Set to true if you also want mldonkey to run as a gnutella1 sub node (experimental) *) - enable_gnutella = false - - (* Set to true if you also want mldonkey to run as a gnutella2 sub node (experimental) *) - enable_gnutella2 = false - - (* Set to true if you also want mldonkey to run as a Fasttrack sub node (experimental) *) - enable_fasttrack = false - - (* Set to true if you also want mldonkey to run as a direct-connect node (experimental) *) - enable_directconnect = false - - (* Set to true if you also want mldonkey to download HTTP files (experimental) *) - enable_fileTP = true - - - (************************************) - (* SECTION : Network Config *) - (* Network config options *) - (************************************) - - - - (* The last IP address used for this client *) - client_ip = "192.168.181.70" - - (* Use the IP specified by 'client_ip' instead of trying to determine it - ourself. Don't set this option to true if you have dynamic IP. *) - force_client_ip = false - - (* Use http://ip.discoveryvip.com/ip.asp to obtain WAN IP *) - discover_ip = true - - (* User agent string (default = "default") *) - user_agent = default - - (* A list of lines to download on the WEB: each line has - the format: (kind, period, url), where kind is either - 'server.met' for a server.met file (also in gz/bz2/zip format) - containing ed2k server, or - 'comments.met' for a file of comments, or - 'guarding.p2p' for a blocklist file (also in gz/bz2/zip format), or - 'ocl' for file in the ocl format containing overnet peers, or - 'contact.dat' for an contact.dat file containing overnet peers, - 'nodes.gzip' for a fasttrack nodes.gzip, - and period is the period between updates (in hours), - a period of zero means the file is only loaded once on startup, - and url is the url of the file to download. - IMPORTANT: Put the URL and the kind between quotes. - EXAMPLE: - web_infos = [ - ("server.met", 0, "http://ed2k.2x4u.de/u581miei/max/server.met"); - ("hublist", 0, "http://dchublist.com/hublist.config.bz2"); - ("guarding.p2p", 96, "http://www.bluetack.co.uk/config/level1.gz"); - ("ocl", 24, "http://members.lycos.co.uk/appbyhp2/FlockHelpApp/contact-files/contact.ocl"); - ("contact.dat", 168, "http://download.overnet.org/contact.dat"); - ("geoip.dat", 168, "http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz"); - ] - *) - web_infos = [ - ("contact.dat", 168, "http://download.overnet.org/contact.dat"); - ("geoip.dat", 0, "http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz"); - ("server.met", 0, "http://www.gruk.org/server.met.gz"); - ("guarding.p2p", 96, "http://www.bluetack.co.uk/config/level1.gz"); - (hublist, 0, "http://dchublist.com/hublist.config.bz2"); - ("nodes.gzip", 0, "http://update.kceasy.com/update/fasttrack/nodes.gzip");] - - (* Cookies send with a http request (used for .torrent files and web_infos) *) - referers = [ - (".*suprnova.*", "http://www.suprnova.org/");] - - (* Cookies send with a http request (used for .torrent files and web_infos) *) - cookies = [] - - (* Direct HTTP queries to HTTP proxy *) - http_proxy_server = "" - - (* Port of HTTP proxy *) - http_proxy_port = 800 - - (* Direct TCP connections to HTTP proxy (the proxy should support CONNECT) *) - http_proxy_tcp = false - - - (************************************) - (* SECTION : HTML mods *) - (* Options to configure HTML mode *) - (************************************) - - - - (* bw_stats refresh delay (seconds) *) - html_mods_bw_refresh_delay = 11 - - (* html_mods_theme to use (located in relative html_themes/ directory - leave blank to use internal theme *) - html_mods_theme = "" - - - (************************************) - (* SECTION : Download *) - (* Download options *) - (************************************) - - - - (* Set to false if you don't want mldonkey to automatically put completed files - in incoming directory *) - auto_commit = true - - (* Set to true if you want all new downloads be paused immediatly - will be set to false on core start. *) - pause_new_downloads = false - - (* The maximal number of files in Downloading state (other ones are Queued) *) - max_concurrent_downloads = 50 - - (* The maximal length of zero bytes between non-zero bytes in a file that - should be interpreted as downloaded during a recovery *) - max_recover_zeroes_gap = 16 - - (* A command that is called when a file is committed, does not work on MinGW. - Arguments are (kept for compatability): - $1 - temp file name, without path - $2 - file size - $3 - filename of the committed file - Also these environment variables can be used (prefered way): - $TEMPNAME - temp file name, including path - $FILEID - same as $1 - $FILESIZE - same as $2 - $FILENAME - same as $3 - $FILEHASH - internal hash - $DURATION - download duration - $INCOMING - directory used for commit - $NETWORK - network used for downloading - $ED2K_HASH - ed2k hash if MD4 is known - *) - file_completed_cmd = "" - - (* The command which is called when a download is started. Arguments - are '-file ' *) - file_started_cmd = "" - - - (************************************) - (* SECTION : Startup *) - (* Startup options *) - (************************************) - - - - (* The login of the user you want mldonkey to run as, after the ports - have been bound (can be use not to run with root priviledges when - a port < 1024 is needed) *) - (* changing this option requires restart of MLDonkey core *) - run_as_user = mldonkey - - (* The UID of the user (0=disabled) you want mldonkey to run as, after the ports - have been bound (can be use not to run with root priviledges when - a port < 1024 is needed) *) - (* changing this option requires restart of MLDonkey core *) - run_as_useruid = 113 - - (* Ask for GUI start *) - ask_for_gui = false - - (* Automatically Start the GUI *) - start_gui = false - - (* Should MLdonkey try to recover downloads of files in temp/ at startup *) - recover_temp_on_startup = true - - - (************************************) - (* SECTION : Mail *) - (* Mail options *) - (************************************) - - - - (* The mail server you want to use (must be SMTP). Use hostname or IP address *) - smtp_server = "127.0.0.1" - - (* The port to use on the mail server (default 25) *) - smtp_port = 25 - - (* Your e-mail if you want to receive mails when downloads are completed *) - mail = "" - - (* Does your mail-server need <...> around addresses *) - add_mail_brackets = false - - (* Send filename in mail subject *) - filename_in_subject = true - - (* Put a prefix for the filename here which shows up in the notification mail *) - url_in_mail = "" - - - (************************************) - (* SECTION : Paths *) - (* Paths options *) - (************************************) - - - - (* The directory where temporary files should be put *) - temp_directory = "/var/log/mldonkey/temp" - - (* How often (in minutes) should MLDonkey scan all shared directories for new/removed files. - 0 to disable scanning of shared directories. Use command reshare to manually scan shares. - When core starts all shared directories are scanned once, independent of this option. *) - (* changing this option requires restart of MLDonkey core *) - share_scan_interval = 1 - - (* New download files are created with these rights (in octal) *) - create_file_mode = 664 - - (* New directories in incoming_directories are created with these rights (in octal) *) - create_dir_mode = 755 - - (* Create new files as sparse, only valid on MinGW for files on NTFS drives *) - create_file_sparse = true - - (* Mininum free space in MB on temp_directory, minimum 50 *) - hdd_temp_minfree = 50 - - (* If true core shuts down when free space on temp dir is below hdd_temp_minfree, - otherwise all downloads are paused and a warning email is sent. *) - hdd_temp_stop_core = false - - (* Mininum free space in MB on core directory, minimum 20 *) - hdd_coredir_minfree = 50 - - (* If true core shuts down when free space on core dir is below hdd_coredir_minfree, - otherwise all downloads are paused and a warning email is sent. *) - hdd_coredir_stop_core = true - - (* Send a warning mail each hours for each directory, 0 to deactivate mail warnings. *) - hdd_send_warning_interval = 1 - - (* Incoming and shared directories. - At least two entries have to be present here, one with strategy - incoming_files and one with strategy incoming_directories. - Both entries can point to the same directory. - If one of the two strategies is missing, MLDonkey will create a default - directory with its entry here. - Finished BT multifile downloads are committed to the first directory - with strategy incoming_directories. Other downloads are committed - to the first directory with the strategy incoming_files. - MLdonkey searches all shared_directories with incoming_* strategies - on commit and uses the first one with enough free diskspace. - Other strategies can be found in searches.ini, section customized_sharing. *) - shared_directories = [ - { dirname = "/var/log/mldonkey/incoming/files" - strategy = incoming_files - priority = 0 -}; - { dirname = "/var/log/mldonkey/incoming/directories" - strategy = incoming_directories - priority = 0 -};] - - - (************************************) - (* SECTION : Security *) - (* Security options *) - (************************************) - - - - (* Commands that you are allowed to be call from the interface. These - commands should short, so that the core is not blocked more than necessary. *) - allowed_commands = [ - (df, df); - (ls, "ls incoming");] - - (* Allow you to use any command with ! in the interface instead of only the - ones in allowed_commands *) - allow_any_command = false - - (* Allow others to browse our share list (0: none, 1: friends only, 2: everyone *) - allow_browse_share = 1 - - (* Regexp of messages to filter out, example: string1|string2|string3 *) - messages_filter = "DI-Emule|ZamBoR|Ketamine|eMule FX|AUTOMATED MESSAGE" - - (* Regexp of comments to filter out, example: string1|string2|string3 *) - comments_filter = "http://|https://|www\\." - - - (************************************) - (* SECTION : Other *) - (* Other options *) - (************************************) - - - - (* (experimental) *) - save_results = 0 - - (* Buffer writes and flush after buffer_writes_delay seconds (experimental) *) - buffer_writes = false - - (* build statistics about eMule mods *) - emule_mods_count = false - - (* show all eMule mods in statistics *) - emule_mods_showall = false - - (* How often (in hours) should a backup of the ini files be written into old_config. - A value of zero means that a backup is written only when the core shuts down. *) - backup_options_delay = 0 - - (* Define the total number of options archives in old_config. *) - backup_options_generations = 10 - - (* Define the format of the archive, zip or tar.gz are valid. *) - backup_options_format = "tar.gz" - - (* The maximum time in seconds to wait for networks to cleanly shutdown. *) - shutdown_timeout = 3 - - (* The IP address used to bind the p2p clients *) - (* changing this option requires restart of MLDonkey core *) - client_bind_addr = "0.0.0.0" - - - -(*****************************************************************) -(* *) -(* ADVANCED OPTIONS *) -(* *) -(* All the options after this line are for the expert *) -(* user. Do not modify them if you are not sure. *) -(* *) -(*****************************************************************) - - - - - - (************************************) - (* SECTION : Interfaces FOR EXPERTS *) - (* Options to control ports used by mldonkey interfaces *) - (************************************) - - - - (* The IP address used to bind the http server *) - (* changing this option requires restart of MLDonkey core *) - http_bind_addr = "0.0.0.0" - - (* The IP address used to bind the gui server *) - (* changing this option requires restart of MLDonkey core *) - gui_bind_addr = "0.0.0.0" - - (* The IP address used to bind the telnet server *) - (* changing this option requires restart of MLDonkey core *) - telnet_bind_addr = "0.0.0.0" - - (* Should *all* sources for a file be shown on HTML/telnet vd *) - print_all_sources = true - - (* Improved telnet interface *) - improved_telnet = true - - (* A space-separated list of keywords. Each keyword triggers - printing information on the corresponding messages: - verb : verbose mode (interesting not only for coders) - mc : debug client messages - mr|raw : debug raw messages - mct : debug emule clients tags - ms : debug server messages - sm : debug source management - net : debug net - gui : debug gui - no-login : disable login messages - file : debug file handling - do : some download warnings - up : some upload warnings - unk : unknown messages - ov : overnet - loc : debug source research/master servers - share: debug sharing - md4 : md4 computation - connect : debug connections - udp : udp messages - ultra|super : debug supernode - swarming : debug swarming - hc : http_client messages - hs : http_server messages - com : commands by non-admin users - act : debug activity - bw : debug bandwidth - geo : debug GeoIP - unexp : debug unexpected messages *) - verbosity = "" - - - (************************************) - (* SECTION : Bandwidth FOR EXPERTS *) - (* Bandwidth options *) - (************************************) - - - - (* The delay in milliseconds to wait in the event loop. Can be decreased to - increase the bandwidth usage, or increased to lower the CPU usage. *) - loop_delay = 5 - - - (************************************) - (* SECTION : Networks FOR EXPERTS *) - (* Networks options *) - (************************************) - - - - (* Set to true if you also want mldonkey to run as a OpenFT sub node (experimental) *) - enable_openft = false - - - (************************************) - (* SECTION : Network Config FOR EXPERTS *) - (* Network config options *) - (************************************) - - - - (* URLs of RSS feeds *) - rss_feeds = [] - - (* If MLDonkey can not read broken RSS feeds, use this program to preprocess them *) - rss_preprocessor = xmllint - - (* Keep IP blocking ranges descriptions in memory *) - ip_blocking_descriptions = false - - (* IP blocking list filename (peerguardian format), can also be in gz/bz2/zip format - Zip files must contain either a file named guarding.p2p or guarding_full.p2p. *) - ip_blocking = "" - - (* List of countries to block connections from/to (requires Geoip). - Names are in ISO 3166 format, see http://www.maxmind.com/app/iso3166 - You can also at your own risk use "Unknown" for IPs Geoip won't recognize. *) - ip_blocking_countries = [] - - (* false: use ip_blocking_countries as block list, all other countries are allowed - true: use ip_blocking_countries as allow list, all other countries are blocked *) - ip_blocking_countries_block = false - - (* Location of GeoIP.dat (Get one from http://www.maxmind.com/download/geoip/database/) *) - geoip_dat = "" - - (* The size of the header of a TCP/IP packet on your connection (ppp adds - 14 bytes sometimes, so modify to take that into account) *) - tcpip_packet_size = 40 - - (* The size of the MTU of a TCP/IP packet on your connection *) - mtu_packet_size = 1500 - - (* The size of the minimal packet you want mldonkey to send when data is - available on the connection *) - minimal_packet_size = 600 - - (* Should a connection check if the peer we are connected to is still alive? - This implies some bandwidth-cost (with 200 connections ~10-20%) *) - socket_keepalive = false - - - (************************************) - (* SECTION : HTML mods FOR EXPERTS *) - (* Options to configure HTML mode *) - (************************************) - - - - (* Whether to use the modified WEB interface *) - html_mods = true - - (* Which html_mods style to use (set with html_mods_style command) *) - html_mods_style = 0 - - (* Whether to use human readable GMk number format *) - html_mods_human_readable = true - - (* Whether to use relative availability in the WEB interface *) - html_mods_use_relative_availability = true - - (* Whether to display the Net column in vd output *) - html_mods_vd_network = true - - (* Whether to display the Comments column in vd output *) - html_mods_vd_comments = true - - (* Whether to display the User column in vd output *) - html_mods_vd_user = false - - (* Whether to display the Group column in vd output *) - html_mods_vd_group = false - - (* Whether to display the Active Sources column in vd output *) - html_mods_vd_active_sources = true - - (* Whether to display the Age column in vd output *) - html_mods_vd_age = true - - (* Whether to display flags instead of country codes *) - html_flags = true - - (* Show graph in vd output *) - html_mods_vd_gfx = true - - (* Remove graph files on core shutdown *) - html_mods_vd_gfx_remove = false - - (* Fill graph in vd output *) - html_mods_vd_gfx_fill = true - - (* Split download and upload graph in vd output *) - html_mods_vd_gfx_split = false - - (* Stacked download and upload graph *) - html_mods_vd_gfx_stack = true - - (* Flip up/side graph position in vd output *) - html_mods_vd_gfx_flip = true - - (* Show mean line on graph in vd output *) - html_mods_vd_gfx_mean = true - - (* Show transparent graph in vd output (only for png) *) - html_mods_vd_gfx_transparent = true - - (* Draw graph as png if true, else draw as jpg in vd output *) - html_mods_vd_gfx_png = true - - (* Show hourly graph in vd output *) - html_mods_vd_gfx_h = true - - (* Graph x size in vd output ( 365 < x < 3665 ) *) - html_mods_vd_gfx_x_size = 630 - - (* Graph y size in vd output ( 200 < y < 1200 ) *) - html_mods_vd_gfx_y_size = 200 - - (* compute values for hourly graph every 1,2,3,4,5,10,15,20,30,60 min - Changes to this option require a core restart. *) - (* changing this option requires restart of MLDonkey core *) - html_mods_vd_gfx_h_intervall = 60 - - (* Dynamic grid width, start with 1 h/grid, maximum html_mods_vd_gfx_h_grid_time h/grid *) - html_mods_vd_gfx_h_dymamic = true - - (* Max hours on time scale per grid (0 = no limit) *) - html_mods_vd_gfx_h_grid_time = 0 - - (* Number of shown subgrids on graph (0 = no subgrids) *) - html_mods_vd_gfx_subgrid = 0 - - (* Draw tag graph *) - html_mods_vd_gfx_tag = false - - (* Use tag source image *) - html_mods_vd_gfx_tag_use_source = false - - (* Tag source image name *) - html_mods_vd_gfx_tag_source = image - - (* Draw tag as png if true, else draw as jpg in vd output *) - html_mods_vd_gfx_tag_png = true - - (* Enable tag graph title *) - html_mods_vd_gfx_tag_enable_title = true - - (* Tag graph title *) - html_mods_vd_gfx_tag_title = "MLNet traffic" - - (* Tag graph title x pos in vd output *) - html_mods_vd_gfx_tag_title_x_pos = 4 - - (* Tag graph title y pos in vd output *) - html_mods_vd_gfx_tag_title_y_pos = 1 - - (* Tag graph download x pos in vd output *) - html_mods_vd_gfx_tag_dl_x_pos = 4 - - (* Tag graph download y pos in vd output *) - html_mods_vd_gfx_tag_dl_y_pos = 17 - - (* Tag graph upload x pos in vd output *) - html_mods_vd_gfx_tag_ul_x_pos = 4 - - (* Tag graph upload y pos in vd output *) - html_mods_vd_gfx_tag_ul_y_pos = 33 - - (* Tag graph x size in vd output ( 130 < x < 3600 ) *) - html_mods_vd_gfx_tag_x_size = 80 - - (* Tag graph y size in vd output ( 50 < x < 1200 ) *) - html_mods_vd_gfx_tag_y_size = 50 - - (* Whether to display the Last column in vd output *) - html_mods_vd_last = true - - (* Whether to display the Priority column in vd output *) - html_mods_vd_prio = true - - (* Change height of download indicator bar in vd output *) - html_vd_barheight = 2 - - (* Whether to display chunks list as graph or text in vd output *) - html_vd_chunk_graph = true - - (* Change style of chunk graph *) - html_vd_chunk_graph_style = 0 - - (* Change max width of chunk graph *) - html_vd_chunk_graph_max_width = 200 - - (* Whether to display the pending slots in uploaders command *) - html_mods_show_pending = true - - (* Whether to load the mldonkey_messages.ini file (false=use internal settings) *) - html_mods_load_message_file = false - - (* Maximum chat messages to log in memory *) - html_mods_max_messages = 50 - - (* Whether to use checkboxes in the WEB interface for download list *) - html_checkbox_vd_file_list = true - - (* Whether to use checkboxes in the WEB interface for search result list *) - html_checkbox_search_file_list = false - - (* Use gzip compression on web pages *) - html_use_gzip = false - - (* Whether to use the fancy javascript tooltips or plain html-title *) - html_mods_use_js_tooltips = true - - (* How long to wait before displaying the tooltips *) - html_mods_js_tooltips_wait = 0 - - (* How long to display the tooltips *) - html_mods_js_tooltips_timeout = 100000 - - (* Use javascript to display option help text as js popup (true=use js, false=use html tables) *) - html_mods_use_js_helptext = true - - - (************************************) - (* SECTION : Debug FOR EXPERTS *) - (* Debug options *) - (************************************) - - - - (* If this option is set, IP addresses on the local network are allowed - (only for debugging) *) - allow_local_network = false - - (* size of log in number of records *) - log_size = 300 - - (* Maximum size of log_file in MB, this value is only checked on startup, - log_file will be deleted if its bigger than log_file_size. *) - log_file_size = 2 - - (* The file in which you want mldonkey to log its debug messages. If you - set this option, mldonkey will log this info in the file until you use the - 'close_log' command. The log file may become very large. You can - also enable logging in a file after startup using the 'log_file' command. *) - log_file = "mlnet.log" - - (* Post log messages to syslog. This setting is independent of log_file - and its associated commands, therefore close_log does not stop log to syslog. - Its therefore possible to log to syslog and log_file at the same time. *) - log_to_syslog = false - - (* number of lines for GUI console messages *) - gui_log_size = 30 - - - (************************************) - (* SECTION : Download FOR EXPERTS *) - (* Download options *) - (************************************) - - - - (* How many sources to use to download each chunk *) - sources_per_chunk = 3 - - - (************************************) - (* SECTION : Startup FOR EXPERTS *) - (* Startup options *) - (************************************) - - - - (* How many megabytes should MLdonkey keep for saving configuration files. *) - (* changing this option requires restart of MLDonkey core *) - config_files_security_space = 10 - - - (************************************) - (* SECTION : Paths FOR EXPERTS *) - (* Paths options *) - (************************************) - - - - (* Name of program used for preview (first arg is local filename, second arg - is name of file as searched on eDonkey *) - previewer = mldonkey_previewer - - (* Directory where mldonkey binaries are installed *) - mldonkey_bin = "." - - (* Name of GUI to start *) - mldonkey_gui = "./mlgui" - - - (************************************) - (* SECTION : Other FOR EXPERTS *) - (* Other options *) - (************************************) - - - - (* Buffer writes and flush after buffer_writes_delay seconds (experimental) *) - (* changing this option requires restart of MLDonkey core *) - buffer_writes_delay = 30. - - (* Flush buffers if buffers exceed buffer_writes_threshold kB (experimental) *) - buffer_writes_threshold = 1024 - - (* The conversions to apply on Unicode characters *) - utf8_filename_conversions = [] - - (* The size of the buffer between the client and its GUI. Can be useful - to increase when the connection between them has a small bandwith *) - interface_buffer = 1000000 - - (* The size long names will be shortened to in the interface *) - max_name_len = 50 - - (* The maximum number of different filenames used by MLDonkey *) - max_filenames = 50 - - (* The size long client names will be shortened to in the interface *) - max_client_name_len = 25 - - (* Is the default terminal an ANSI terminal (escape sequences can be used) *) - term_ansi = true - - (* Delay between updates to the GUI *) - update_gui_delay = 1. - - (* The realm shown when connecting with a WEB browser *) - http_realm = MLdonkey - - (* This option controls whether the WEB interface should show frame borders or not *) - html_frame_border = true - - (* The height of the command frame in pixel (depends on your screen and browser sizes) *) - commands_frame_height = 46 - - (* Message printed at startup additional to welcome text *) - motd_html = "" - - (* Force compaction every hours (in [1..24]) *) - compaction_delay = 2 - - (* The delay between reloads of the vd output in the WEB interface *) - vd_reload_delay = 120 - - (* Should the MLSUBMIT.REG file be created *) - create_mlsubmit = true - - (* Size of the minor heap in kB *) - minor_heap_size = 32 - - (* The source queues to display in source lists (see 'sources' command) *) - relevant_queues = [ - 0; - 1; - 2; - 3; - 4; - 5; - 6; - 8; - 9; - 10;] - - (* The minimal delay between two connections to the same client (in seconds) *) - min_reask_delay = 600 - - (* Whether to display results already downloaded *) - display_downloaded_results = true - - (* Minimal number of results for filter form to appear *) - filter_table_threshold = 50 - - (* Maximal size in byte of the buffers of a client, minimum 50.000 byte. - For high-volume links raise this value to 1.000.000 or higher. *) - client_buffer_size = 500000 - - (* The delay between two saves of the 'downloads.ini' file (default is 15 minutes). - Changes to this option require a core restart. *) - (* changing this option requires restart of MLDonkey core *) - save_options_delay = 900. - - (* timeout when connecting to a server *) - server_connection_timeout = 30. - - (* The delay between one glance at a file and another *) - (* changing this option requires restart of MLDonkey core *) - download_sample_rate = 1. - - (* How many samples go into an estimate of transfer rates *) - download_sample_size = 100 - - (* This option defines a set of date at which some commands have to be executed. - For each tuple, the first argument is a list of week days (from 0 to 6), - the second is a list of hours (from 0 to 23) and the last one a command to - execute. Can be used with 'pause all' and 'resume all' for example to - resume and pause downloads automatically for the night. *) - calendar = [] - - (* The percentage of free memory before a compaction is triggered *) - compaction_overhead = 25 - - (* The major GC speed is computed from this parameter. This is the memory - that will be "wasted" because the GC does not immediatly collect - unreachable blocks. It is expressed as a percentage of the memory used - for live data. The GC will work more (use more CPU time and collect - blocks more eagerly) if space_overhead is smaller. *) - space_overhead = 80 - - (* Maximal number of results displayed for a search *) - max_displayed_results = 1000 - - (* (internal option) *) - (* Do not change this option, internal use only! *) - options_version = 18 - - (* Maximum number of comments per file *) - max_comments_per_file = 100 - - (* Maximum length of file comments *) - max_comment_length = 256 diff --git a/config/mldonkey/fileTP.ini b/config/mldonkey/fileTP.ini deleted file mode 100644 index 9e4b3e0d4..000000000 --- a/config/mldonkey/fileTP.ini +++ /dev/null @@ -1,35 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : FileTP *) - (* FileTP options *) - (************************************) - - - - (* A list of lists, where each list contains equivalent prefixes for mirrors *) - mirrors = [] - - (* A list of (hostname, args). Example: [ ( "mycomputer.mydomain.fr", (ssh, "mldonkey@mycomputer.mydomain.fr") ) ] *) - remote_shells = [] - - (* The command to call to get a range *) - get_range = get_range - - (* The argument to !!get_range to get a range *) - range_arg = range - - (* (internal option) *) - (* Do not change this option, internal use only! *) - options_version = 0 - - (* Chunk size (in bytes) (0 = No chunks) *) - chunk_size = 0 - old_urls = [] - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/file_sources.ini b/config/mldonkey/file_sources.ini deleted file mode 100644 index 3f3e108fe..000000000 --- a/config/mldonkey/file_sources.ini +++ /dev/null @@ -1,17 +0,0 @@ - - - (************************************) - (* Never edit options files when *) - (* the daemon is running *) - (************************************) - (* SECTION : Header *) - (* These options must be read first *) - (************************************) - - - save_time = 191427490 - sources = [] - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/files.ini b/config/mldonkey/files.ini deleted file mode 100644 index ed06f2dfe..000000000 --- a/config/mldonkey/files.ini +++ /dev/null @@ -1,13 +0,0 @@ - - (* All the swarmers used *) - swarmers = [] - - (* The files whose download is finished *) - done_files = [] - - (* The files currently being downloaded, primary downloads must come first *) - files = [] - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/friends.ini b/config/mldonkey/friends.ini deleted file mode 100644 index 9c654ac73..000000000 --- a/config/mldonkey/friends.ini +++ /dev/null @@ -1,7 +0,0 @@ - - (* The list of known friends *) - friends = [] - -(* - The following options are not used (errors, obsolete, ...) -*) diff --git a/config/mldonkey/mldonkey_submit b/config/mldonkey/mldonkey_submit deleted file mode 100755 index 275a5be56..000000000 --- a/config/mldonkey/mldonkey_submit +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - -# Submit an eDonkey download request to mldonkey -# -# Argument(s): An ed2k URI of the form: -# -# ed2k://|file|||= 0) || die "Usage: mldonkey_submit ... -"; - -$vars{'HTTPURL'} = "http://192.168.181.70:4080"; -$vars{'HTTPUSER'} = "admin"; -$vars{'HTTPPASS'} = ""; - -my $ua = LWP::UserAgent->new; - -while (my $uri = shift @ARGV) { - $_ = URI::Escape::uri_unescape($uri); - if (/^ed2k:\/\/\|file\|[^|]+\|(\d+)\|([\dabcdef]+)\|$/) { - my $size = $1; - my $md4 = $2; - my $req = HTTP::Request->new( - GET => "$vars{'HTTPURL'}/submit?q=dllink+$uri" - ); - if (($vars{'HTTPUSER'}) && ($vars{'HTTPPASS'})) { - $req->authorization_basic($vars{'HTTPUSER'}, - $vars{'HTTPPASS'}); - } - my $response = $ua->request($req); - if (!($response->is_success)) { - print $response->error_as_HTML; - exit 1; - } - } else { - print "Not an ed2k URI: $_ -"; - } -} diff --git a/config/mldonkey/mlnet_strings.en b/config/mldonkey/mlnet_strings.en deleted file mode 100644 index cd6f55f4b..000000000 --- a/config/mldonkey/mlnet_strings.en +++ /dev/null @@ -1,888 +0,0 @@ -(************************************) -(* *) - - module "DriverMain" - -(* *) -(************************************) - -"Core stopped" = "Core stopped" - -"Core started" = "Core started" - -"If you connect from a remote machine adjust allowed_ips" = "If you connect from a remote machine adjust allowed_ips" - -"Connect to IP %s, port %d" = "Connect to IP %s, port %d" - -"For a GUI check out http://sancho-gui.sourceforge.net" = "For a GUI check out http://sancho-gui.sourceforge.net" - -"Or with browser: http://%s:%d" = "Or with browser: http://%s:%d" - -"To command: telnet %s %d" = "To command: telnet %s %d" - -"none" = "none" - -"\n%sdisabled networks: " = "\n%sdisabled networks: " - -"%s " = "%s " - -"%senabling networks: " = "%senabling networks: " - -"Check http://www.mldonkey.net/ for updates" = "Check http://www.mldonkey.net/ for updates" - -" : print version number and exit" = " : print version number and exit" - -" : check file format" = " : check file format" - -" : undocumented" = " : undocumented" - -" : display information on the implementations" = " : display information on the implementations" - -": keep output to stdout after startup" = ": keep output to stdout after startup" - -": keep output to stderr after startup" = ": keep output to stderr after startup" - -" : this argument was removed, core will exit" = " : this argument was removed, core will exit" - -" : find another port when one is already used" = " : find another port when one is already used" - -": directory for pid file" = ": directory for pid file" - -"Libmagic file-type recognition database present" = "Libmagic file-type recognition database present" - -"\nDNS resolution does not work! Looking up %s failed with %s." = "\nDNS resolution does not work! Looking up %s failed with %s." - -(************************************) -(* *) - - module "DriverCommands" - -(* *) -(************************************) - -" :\t\t\tcheck whether an IP is blocked" = " :\t\t\tcheck whether an IP is blocked" - -":\t\t\t\tdisplay the list of blocked IP ranges that were hit" = ":\t\t\t\tdisplay the list of blocked IP ranges that were hit" - -":\t\t\t\tfor debugging only" = ":\t\t\t\tfor debugging only" - -":\t\t\t\tclose all files (use to free space on disk after remove)" = ":\t\t\t\tclose all files (use to free space on disk after remove)" - -" :\t\t\tuse poll instead of select" = " :\t\t\tuse poll instead of select" - -":\t\t\tclose all opened sockets" = ":\t\t\tclose all opened sockets" - -":\t\t\t\tprint memory stats" = ":\t\t\t\tprint memory stats" - -" :\t\t\tselect html_theme" = " :\t\t\tselect html_theme" - -":\t\t\t\t\tprint RSS feeds" = ":\t\t\t\t\tprint RSS feeds" - -":\t\t\tselect html_mods_style <#>" = ":\t\t\tselect html_mods_style <#>" - -":\t\t\t\ttoggle html_mods" = ":\t\t\t\ttoggle html_mods" - -":\t\t\t\tclear log_file" = ":\t\t\t\tclear log_file" - -":\t\t\t\tclose logging to file" = ":\t\t\t\tclose logging to file" - -":\t\t\t\tenable logging to file" = ":\t\t\t\tenable logging to file" - -" :\t\t\ttry to swarm downloads from file (secondary) to file (primary)" = " :\t\t\ttry to swarm downloads from file (secondary) to file (primary)" - -":\t\t\t\tclear the table of clients being debugged" = ":\t\t\t\tclear the table of clients being debugged" - -" :\t\tdebug file state" = " :\t\tdebug file state" - -" :\t\tdebug message in communications with these clients" = " :\t\tdebug message in communications with these clients" - -" :\t\t\treactivate log to stdout" = " :\t\t\treactivate log to stdout" - -" :\t\t\tset terminal width and height (devel)" = " :\t\t\tset terminal width and height (devel)" - -":\t\t\t\t\ttoggle ansi terminal (devel)" = ":\t\t\t\t\ttoggle ansi terminal (devel)" - -":\t\t\t\t\tdump current log state to console" = ":\t\t\t\t\tdump current log state to console" - -":\t\t\treload messages file" = ":\t\t\treload messages file" - -":\t\t\t\tprint logged-in user name" = ":\t\t\t\tprint logged-in user name" - -":\t\t\t\t\tprint users" = ":\t\t\t\t\tprint users" - -" :\t\t\tremove a mldonkey user" = " :\t\t\tremove a mldonkey user" - -" [] :\tadd new mldonkey user/change user password" = " [] :\tadd new mldonkey user/change user password" - -" :\t\t\tdownload all the links contained in the file" = " :\t\t\tdownload all the links contained in the file" - -" :\t\t\t\tdownload ed2k, sig2dat, torrent or other link" = " :\t\t\t\tdownload ed2k, sig2dat, torrent or other link" - -" \"\" :\t\tchange name of download to " = " \"\" :\t\tchange name of download to " - -" :\t\t\tstart previewer for file " = " :\t\t\tstart previewer for file " - -" :\t\t\t\t$bview file info$n" = " :\t\t\t\t$bview file info$n" - -":\t\t\t\t$bmove downloaded files to incoming directory$n" = ":\t\t\t\t$bmove downloaded files to incoming directory$n" - -" :\t\t\t\tresume a paused download (use arg 'all' for all files)" = " :\t\t\t\tresume a paused download (use arg 'all' for all files)" - -" :\t\t\t\tpause a download (use arg 'all' for all files)" = " :\t\t\t\tpause a download (use arg 'all' for all files)" - -" :\t\t\tverify chunks of file " = " :\t\t\tverify chunks of file " - -":\t\t\t\tdisplay downloaders list" = ":\t\t\t\tdisplay downloaders list" - -" :\t\t\t\tcancel download (use arg 'all' for all files)" = " :\t\t\t\tcancel download (use arg 'all' for all files)" - -" :\t\t\tprint the segments downloaded in file" = " :\t\t\tprint the segments downloaded in file" - -" :\t\t\tconfirm cancellation" = " :\t\t\tconfirm cancellation" - -" :\tchange file priorities" = " :\tchange file priorities" - -":\t\t\t\tshow users currently uploading" = ":\t\t\t\tshow users currently uploading" - -":\t\t\t\t\tlist links of shared files" = ":\t\t\t\t\tlist links of shared files" - -":\t\t\t\tstatistics on upload" = ":\t\t\t\tstatistics on upload" - -" :\t\t\t\tshare directory " = " :\t\t\t\tshare directory " - -" [] :\tshare directory with [and sharing strategy ]" = " [] :\tshare directory with [and sharing strategy ]" - -":\t\t\t\tprint shared directories" = ":\t\t\t\tprint shared directories" - -"debug command" = "debug command" - -"debug command (example: file .)" = "debug command (example: file .)" - -"debug command (example: disk .)" = "debug command (example: disk .)" - -":\t\t\t\tcheck shared files for removal" = ":\t\t\t\tcheck shared files for removal" - -":\t\t\t\t$bprint options values by section$n" = ":\t\t\t\t$bprint options values by section$n" - -":\t\t\t\t\tprint web_infos options" = ":\t\t\t\t\tprint web_infos options" - -":\t\t\t\t\tprint all options" = ":\t\t\t\t\tprint all options" - -":\t\t\t\t\t$bdisplay options$n" = ":\t\t\t\t\t$bdisplay options$n" - -"[] :\tsave options and/or sources or backup (empty for options and sources)" = "[] :\tsave options and/or sources or backup (empty for options and sources)" - -" :\t$bchange option value$n" = " :\t$bchange option value$n" - -":\t\t\tforce download of an already downloaded file" = ":\t\t\tforce download of an already downloaded file" - -" :\t\t\t\t$bfile to download$n" = " :\t\t\t\t$bfile to download$n" - -":\t\t\tview custom queries" = ":\t\t\tview custom queries" - -":\t\t\t\t\tview all queries" = ":\t\t\t\t\tview all queries" - -" :\t\t\t\tsearch for files locally\n\n\tWith special args:\n\t-network \n\t-minsize \n\t-maxsize \n\t-media \n\t-Video\n\t-Audio\n\t-format \n\t-title \n\t-album \n\t-artist \n\t-field \n\t-not \n\t-and \n\t-or \n" = " :\t\t\t\tsearch for files locally\n\n\tWith special args:\n\t-network \n\t-minsize \n\t-maxsize \n\t-media \n\t-Video\n\t-Audio\n\t-format \n\t-title \n\t-album \n\t-artist \n\t-field \n\t-not \n\t-and \n\t-or \n" - -" :\t\t\t\t$bsearch for files on all networks$n\n\n\tWith special args:\n\t-network \n\t-minsize \n\t-maxsize \n\t-media \n\t-Video\n\t-Audio\n\t-format \n\t-title \n\t-album \n\t-artist \n\t-field \n\t-not \n\t-and \n\t-or \n" = " :\t\t\t\t$bsearch for files on all networks$n\n\n\tWith special args:\n\t-network \n\t-minsize \n\t-maxsize \n\t-media \n\t-Video\n\t-Audio\n\t-format \n\t-title \n\t-album \n\t-artist \n\t-field \n\t-not \n\t-and \n\t-or \n" - -"[] :\t\t\t\t$bview results of a search$n" = "[] :\t\t\t\t$bview results of a search$n" - -" ... :\t\tforget searches ..." = " ... :\t\tforget searches ..." - -" :\t\t\t\tdisable a particular network" = " :\t\t\t\tdisable a particular network" - -" :\t\t\t\tenable a particular network" = " :\t\t\t\tenable a particular network" - -":\t\t\t\tprint all networks" = ":\t\t\t\tprint all networks" - -" :\t\t\t\tstart command (must be allowed in 'allowed_commands' option or by 'allow_any_command' if arguments)" = " :\t\t\t\tstart command (must be allowed in 'allowed_commands' option or by 'allow_any_command' if arguments)" - -":\t\t\t\tremove graphical transfer statistics files" = ":\t\t\t\tremove graphical transfer statistics files" - -":\t\t\t\tdisplay graphical transfer statistics" = ":\t\t\t\tdisplay graphical transfer statistics" - -":\t\t\t\t\tdisplay transfer statistics" = ":\t\t\t\t\tdisplay transfer statistics" - -":\t\t\t\tprint current bandwidth stats" = ":\t\t\t\tprint current bandwidth stats" - -" :\t\t\t\tdisable upload during minutes (multiple of 5)" = " :\t\t\t\tdisable upload during minutes (multiple of 5)" - -" :\t\t\tprint files from friend " = " :\t\t\tprint files from friend " - -":\t\t\t\tdisplay all friends" = ":\t\t\t\tdisplay all friends" - -" :\tremove friend (use arg 'all' for all friends)" = " :\tremove friend (use arg 'all' for all friends)" - -" :\t\tadd client to friends" = " :\t\tadd client to friends" - -" :\t\t\task friend files" = " :\t\t\task friend files" - -":\t\t\t\t\tview friends" = ":\t\t\t\t\tview friends" - -" :\t\t\t\tdisconnect from server" = " :\t\t\t\tdisconnect from server" - -"[] :\t\t\t\tconnect to more servers (or to server )" = "[] :\t\t\t\tconnect to more servers (or to server )" - -" :\t\t\tprint banner of connected server " = " :\t\t\tprint banner of connected server " - -" :\t\t\tremove server (use arg 'all' for all servers)" = " :\t\t\tremove server (use arg 'all' for all servers)" - -":\t\t\t\t\tlist all known servers" = ":\t\t\t\t\tlist all known servers" - -":\t\t\t\t\t$blist connected servers$n" = ":\t\t\t\t\t$blist connected servers$n" - -":\t\t\t\t\tprint calendar" = ":\t\t\t\t\tprint calendar" - -" \"\" :\tadd a command to be executed every day" = " \"\" :\tadd a command to be executed every day" - -":\t\t\t\t[ ]" = ":\t\t\t\t[ ]" - -":\t\t\t\tmessage_log [refresh delay in seconds]" = ":\t\t\t\tmessage_log [refresh delay in seconds]" - -" :\t\t\tprint activity in the last minutes" = " :\t\t\tprint activity in the last minutes" - -":\t\t\t\tprint mldonkey disk information" = ":\t\t\t\tprint mldonkey disk information" - -":\t\t\t\tprint mldonkey runtime information" = ":\t\t\t\tprint mldonkey runtime information" - -":\t\t\t\tprint mldonkey core build information" = ":\t\t\t\tprint mldonkey core build information" - -":\t\t\t\tprint mldonkey core build, runtime and disk information" = ":\t\t\t\tprint mldonkey core build, runtime and disk information" - -":\t\t\t\tcore uptime" = ":\t\t\t\tcore uptime" - -":\t\t\t\tprint mldonkey version" = ":\t\t\t\tprint mldonkey version" - -" :\t\t\t\tview client (use arg 'all' for all clients)" = " :\t\t\t\tview client (use arg 'all' for all clients)" - -":\t\t\t\trecover lost files from temp directory" = ":\t\t\t\trecover lost files from temp directory" - -":\t\t\t\tforce downloading all web_infos URLs" = ":\t\t\t\tforce downloading all web_infos URLs" - -" :\t\t\tremove URL from web_infos" = " :\t\t\tremove URL from web_infos" - -" :\t\t\tload this file from the web\n\t\t\t\t\tkind is either server.met (if the downloaded file is a server.met)" = " :\t\t\tload this file from the web\n\t\t\t\t\tkind is either server.met (if the downloaded file is a server.met)" - -":\t\t\t\t\t$bsave and kill the server$n" = ":\t\t\t\t\t$bsave and kill the server$n" - -":\t\t\t\t\t$bclose telnet$n" = ":\t\t\t\t\t$bclose telnet$n" - -":\t\t\t\t$bdelete a command alias\n\t\t\t\t\texample: \"unalias ca\"$n" = ":\t\t\t\t$bdelete a command alias\n\t\t\t\t\texample: \"unalias ca\"$n" - -":\t\t\t\t\t$badd an command alias\n\t\t\t\t\tfor example: \"alias ca cancel all\" makes an alias\n\t\t\t\t\t\"ca\" performing \"cancel all\"\n\t\t\t\t\tto substitute an alias just make a new one\n\t\t\t\t\tfor example: \"alias ca vd\"$n" = ":\t\t\t\t\t$badd an command alias\n\t\t\t\t\tfor example: \"alias ca cancel all\" makes an alias\n\t\t\t\t\t\"ca\" performing \"cancel all\"\n\t\t\t\t\tto substitute an alias just make a new one\n\t\t\t\t\tfor example: \"alias ca vd\"$n" - -":\t\t\t\tdump heap for debug" = ":\t\t\t\tdump heap for debug" - -(************************************) -(* *) - - module "BTInteractive" - -(* *) -(************************************) - -" :\tgenerate the corresponding .torrent file with in torrents/tracked/.\n\t\t\t\t\tThe file is automatically tracked, and seeded if in incoming/" = " :\tgenerate the corresponding .torrent file with in torrents/tracked/.\n\t\t\t\t\tThe file is automatically tracked, and seeded if in incoming/" - -":\t\t\t\tprint all .torrent files on this server" = ":\t\t\t\tprint all .torrent files on this server" - -":\t\t\tprint all seeded .torrent files on this server" = ":\t\t\tprint all seeded .torrent files on this server" - -":\t\t\trecheck torrents/* directories for changes" = ":\t\t\trecheck torrents/* directories for changes" - -":\t\t\tremove all old .torrent files" = ":\t\t\tremove all old .torrent files" - -":\t\t\t\tstops all bittorrent downloads, use this if you want to make sure that the stop signal actualy gets to the tracker\n\t\t\t\t\twhen shuting mlnet down, but you have to wait till the stops get to the tracker and not wait too long,\n\t\t\t\t\tso mldonkey reconnects to the tracker :)" = ":\t\t\t\tstops all bittorrent downloads, use this if you want to make sure that the stop signal actualy gets to the tracker\n\t\t\t\t\twhen shuting mlnet down, but you have to wait till the stops get to the tracker and not wait too long,\n\t\t\t\t\tso mldonkey reconnects to the tracker :)" - -(************************************) -(* *) - - module "CommonOptions" - -(* *) -(************************************) - -"List of IP addresses to use to boot Kademlia networks" = "List of IP addresses to use to boot Kademlia networks" - -"Set this option to false if you don't want to receive new Overnet peers" = "Set this option to false if you don't want to receive new Overnet peers" - -"The MD4 of the Overnet client" = "The MD4 of the Overnet client" - -"These IP addresses cannot be peers. Elements are separated by spaces, wildcard=255 ie: use 192.168.0.255 for 192.168.0.* " = "These IP addresses cannot be peers. Elements are separated by spaces, wildcard=255 ie: use 192.168.0.255 for 192.168.0.* " - -"Interval (in seconds) before republish files" = "Interval (in seconds) before republish files" - -"Max number of hits in a search on Overnet" = "Max number of hits in a search on Overnet" - -"Period between two queries in the overnet tree (should not be set under 5)" = "Period between two queries in the overnet tree (should not be set under 5)" - -"How long shoud a search on Overnet wait for the last answer before terminating" = "How long shoud a search on Overnet wait for the last answer before terminating" - -"allow extended search to search on overnet" = "allow extended search to search on overnet" - -"maximal number of peers to keep overnet connected (should be >2048)" = "maximal number of peers to keep overnet connected (should be >2048)" - -"Size of the filename storage used to answer queries" = "Size of the filename storage used to answer queries" - -"port for Kademlia" = "port for Kademlia" - -"The files that were downloaded" = "The files that were downloaded" - -"(only for development tests)" = "(only for development tests)" - -"port for overnet" = "port for overnet" - -"login of client on eDonkey network (nothing default to global one)" = "login of client on eDonkey network (nothing default to global one)" - -"min connected users for each server" = "min connected users for each server" - -"Set the maximal rank of a client to be kept as a client" = "Set the maximal rank of a client to be kept as a client" - -"Set the number of hours you want client to remain banned" = "Set the number of hours you want client to remain banned" - -"true if you want your client IP to be set from servers ID" = "true if you want your client IP to be set from servers ID" - -"true if you want your client to ban\n clients that try queue jumping (3 reconnections faster than 9 minutes)" = "true if you want your client to ban\n clients that try queue jumping (3 reconnections faster than 9 minutes)" - -"true if you want your mldonkey to lose some\nupload bandwidth sending messages to clients which are banned :)" = "true if you want your mldonkey to lose some\nupload bandwidth sending messages to clients which are banned :)" - -"Are the downloaded files added to the old files list to prevent re-download ?" = "Are the downloaded files added to the old files list to prevent re-download ?" - -"Are the cancelled files added to the old files list to prevent re-download ?" = "Are the cancelled files added to the old files list to prevent re-download ?" - -"How often should we check all servers (minimum 4 hours, 0 to disable)" = "How often should we check all servers (minimum 4 hours, 0 to disable)" - -"Minimal number of servers remaining after remove_old_servers" = "Minimal number of servers remaining after remove_old_servers" - -"How often should remove old donkey servers (see max_server_age) be called\n (in seconds, 0 to disable)" = "How often should remove old donkey servers (see max_server_age) be called\n (in seconds, 0 to disable)" - -"max number of days after which an unconnected server is removed" = "max number of days after which an unconnected server is removed" - -"The weight of upload on a donkey connection compared to upload on other\n peer-to-peer networks. Setting it to 5 for example means that a donkey\n connection will be allowed to send 5 times more information per second than\n an Open Napster connection. This is done to favorise donkey connections\n over other networks, where upload is less efficient, without preventing\n upload from these networks." = "The weight of upload on a donkey connection compared to upload on other\n peer-to-peer networks. Setting it to 5 for example means that a donkey\n connection will be allowed to send 5 times more information per second than\n an Open Napster connection. This is done to favorise donkey connections\n over other networks, where upload is less efficient, without preventing\n upload from these networks." - -"How long can a silent server stay connected" = "How long can a silent server stay connected" - -"Uploaded zones (1 zone = 180 kBytes) needed to enable the dynamic upload lifetime" = "Uploaded zones (1 zone = 180 kBytes) needed to enable the dynamic upload lifetime" - -"Each client upload lifetime depends on download-upload ratio" = "Each client upload lifetime depends on download-upload ratio" - -"How long a downloading client can stay in my upload queue (in minutes >5)" = "How long a downloading client can stay in my upload queue (in minutes >5)" - -"How long can a silent client stay in the upload queue" = "How long can a silent client stay in the upload queue" - -"How long should we wait in the queue of another client" = "How long should we wait in the queue of another client" - -"A list of ports that specify servers to remove\n from server list. Servers with ports on this list can't be added, and\n will eventually be removed" = "A list of ports that specify servers to remove\n from server list. Servers with ports on this list can't be added, and\n will eventually be removed" - -"Enable secure user identification support" = "Enable secure user identification support" - -"The RSA private key of this client" = "The RSA private key of this client" - -"The MD4 of this client" = "The MD4 of this client" - -"Maximal number of sources for each file" = "Maximal number of sources for each file" - -"Allow mldonkey to propagate your sources to other donkey clients" = "Allow mldonkey to propagate your sources to other donkey clients" - -"The maximal delay a connection with a server should last when walking\nthrough the list (should be greater than become_master_delay)" = "The maximal delay a connection with a server should last when walking\nthrough the list (should be greater than become_master_delay)" - -"Number of servers that can be used to walk\nbetween servers" = "Number of servers that can be used to walk\nbetween servers" - -"only servers which are set to 'preferred' will be connected, \n please note that any server must be set to preferred to use this feature" = "only servers which are set to 'preferred' will be connected, \n please note that any server must be set to preferred to use this feature" - -"Set this option to false if you don't want mldonkey\n to change the master servers it is connected to" = "Set this option to false if you don't want mldonkey\n to change the master servers it is connected to" - -"Set this option to false if you don't want to\n receive new servers from clients" = "Set this option to false if you don't want to\n receive new servers from clients" - -"Set this option to false if you don't want to\n receive new servers from server.met" = "Set this option to false if you don't want to\n receive new servers from server.met" - -"Set this option to false if you don't want to\n receive new servers from servers" = "Set this option to false if you don't want to\n receive new servers from servers" - -"send all clients your IP regardless of what ID was assigned by the server" = "send all clients your IP regardless of what ID was assigned by the server" - -"immediately close connection to servers that don't grant a High ID" = "immediately close connection to servers that don't grant a High ID" - -"A list of server IP to remove from server list.\n Servers on this list can't be added, and will eventually be removed" = "A list of server IP to remove from server list.\n Servers on this list can't be added, and will eventually be removed" - -"Should mldonkey try to detect sources masquerading as others and ban them" = "Should mldonkey try to detect sources masquerading as others and ban them" - -"Should mldonkey try to detect sources responsible for corruption and ban them" = "Should mldonkey try to detect sources responsible for corruption and ban them" - -"The number of UDP packets you send every check_client_connections_delay" = "The number of UDP packets you send every check_client_connections_delay" - -"The number of servers you want to stay connected to" = "The number of servers you want to stay connected to" - -"Timeout on client connections when not queued" = "Timeout on client connections when not queued" - -"The delay between server connection rounds" = "The delay between server connection rounds" - -"Delay used to request file sources" = "Delay used to request file sources" - -"The port used for connection by other donkey clients." = "The port used for connection by other donkey clients." - -"Max number of messages of Chat remembered" = "Max number of messages of Chat remembered" - -"Max number of UDP packets per round for eXtended Search" = "Max number of UDP packets per round for eXtended Search" - -"Initial score for a new server" = "Initial score for a new server" - -"Let you define a default comment for creating torrents" = "Let you define a default comment for creating torrents" - -"Let you define a default tracker for creating torrents (leave empty for mlnet tracker)" = "Let you define a default tracker for creating torrents (leave empty for mlnet tracker)" - -"The tracker will check the client key to update ip if changed" = "The tracker will check the client key to update ip if changed" - -"The tracker will check the torrent file is available if an announce request is received" = "The tracker will check the torrent file is available if an announce request is received" - -"The maximal number of peers returned by the tracker" = "The maximal number of peers returned by the tracker" - -"The maximal number of tracked files (to prevend saturation attack)" = "The maximal number of tracked files (to prevend saturation attack)" - -"The port to bind the tracker to" = "The port to bind the tracker to" - -"All the swarmers used" = "All the swarmers used" - -" Incoming and shared directories.\n At least two entries have to be present here, one with strategy\n incoming_files and one with strategy incoming_directories.\n Both entries can point to the same directory.\n If one of the two strategies is missing, MLDonkey will create a default\n directory with its entry here.\n Finished BT multifile downloads are committed to the first directory\n with strategy incoming_directories. Other downloads are committed\n to the first directory with the strategy incoming_files.\n If more than one directory has one of the incoming_* strategies\n it will be ignored on commit, but they are shared nonetheless.\n Other strategies can be found in searches.ini, section customized_sharing." = " Incoming and shared directories.\n At least two entries have to be present here, one with strategy\n incoming_files and one with strategy incoming_directories.\n Both entries can point to the same directory.\n If one of the two strategies is missing, MLDonkey will create a default\n directory with its entry here.\n Finished BT multifile downloads are committed to the first directory\n with strategy incoming_directories. Other downloads are committed\n to the first directory with the strategy incoming_files.\n If more than one directory has one of the incoming_* strategies\n it will be ignored on commit, but they are shared nonetheless.\n Other strategies can be found in searches.ini, section customized_sharing." - -"The list of known friends" = "The list of known friends" - -"Shortcuts for special specialized searches" = "Shortcuts for special specialized searches" - -"Maximal number of saved searches" = "Maximal number of saved searches" - -"List of known servers" = "List of known servers" - -"" = "" - -"The files currently being downloaded, primary downloads must come first" = "The files currently being downloaded, primary downloads must come first" - -"The files whose download is finished" = "The files whose download is finished" - -"The users that are defined on this core. The default user is\ncalled 'admin', and uses an empty password. To create new users,\nlogin as admin in mldonkey, and use the 'useradd' command." = "The users that are defined on this core. The default user is\ncalled 'admin', and uses an empty password. To create new users,\nlogin as admin in mldonkey, and use the 'useradd' command." - -"Depreciated option, kept for compatibility reasons - used by MLDonkey < 2.7.5" = "Depreciated option, kept for compatibility reasons - used by MLDonkey < 2.7.5" - -"number of lines for GUI console messages" = "number of lines for GUI console messages" - -"The file in which you want mldonkey to log its debug messages. If you\n set this option, mldonkey will log this info in the file until you use the\n'close_log' command. The log file may become very large. You can\n also enable logging in a file after startup using the 'log_file' command." = "The file in which you want mldonkey to log its debug messages. If you\n set this option, mldonkey will log this info in the file until you use the\n'close_log' command. The log file may become very large. You can\n also enable logging in a file after startup using the 'log_file' command." - -"Maximum size of log_file in MB" = "Maximum size of log_file in MB" - -"size of log in number of records" = "size of log in number of records" - -"If this option is set, IP addresses on the local network are allowed\n(only for debugging)" = "If this option is set, IP addresses on the local network are allowed\n(only for debugging)" - -"(internal option)" = "(internal option)" - -"Maximal number of results displayed for a search" = "Maximal number of results displayed for a search" - -"The major GC speed is computed from this parameter. This is the memory\n that will be \"wasted\" because the GC does not immediatly collect \n unreachable blocks. It is expressed as a percentage of the memory used\n for live data. The GC will work more (use more CPU time and collect \n blocks more eagerly) if space_overhead is smaller." = "The major GC speed is computed from this parameter. This is the memory\n that will be \"wasted\" because the GC does not immediatly collect \n unreachable blocks. It is expressed as a percentage of the memory used\n for live data. The GC will work more (use more CPU time and collect \n blocks more eagerly) if space_overhead is smaller." - -"The percentage of free memory before a compaction is triggered" = "The percentage of free memory before a compaction is triggered" - -"This option defines a set of date at which some commands have to be executed.\n For each tuple, the first argument is a list of week days (from 0 to 6),\n the second is a list of hours (from 0 to 23) and the last one a command to\n execute. Can be used with 'pause all' and 'resume all' for example to\n resume and pause downloads automatically for the night." = "This option defines a set of date at which some commands have to be executed.\n For each tuple, the first argument is a list of week days (from 0 to 6),\n the second is a list of hours (from 0 to 23) and the last one a command to\n execute. Can be used with 'pause all' and 'resume all' for example to\n resume and pause downloads automatically for the night." - -"How many samples go into an estimate of transfer rates" = "How many samples go into an estimate of transfer rates" - -"The delay between one glance at a file and another" = "The delay between one glance at a file and another" - -"timeout when connecting to a server" = "timeout when connecting to a server" - -"The delay between two saves of the 'downloads.ini' file (default is 15 minutes).\n Changes to this option require a core restart." = "The delay between two saves of the 'downloads.ini' file (default is 15 minutes).\n Changes to this option require a core restart." - -"Maximal size of the buffers of a client" = "Maximal size of the buffers of a client" - -"Minimal number of results for filter form to appear" = "Minimal number of results for filter form to appear" - -"Whether to display results already downloaded" = "Whether to display results already downloaded" - -"The minimal delay between two connections to the same client (in seconds)" = "The minimal delay between two connections to the same client (in seconds)" - -"The source queues to display in source lists (see 'sources' command)" = "The source queues to display in source lists (see 'sources' command)" - -"Size of the minor heap in kB" = "Size of the minor heap in kB" - -"Should the MLSUBMIT.REG file be created" = "Should the MLSUBMIT.REG file be created" - -"The IP address used to bind the p2p clients" = "The IP address used to bind the p2p clients" - -"The delay between reloads of the vd output in the WEB interface" = "The delay between reloads of the vd output in the WEB interface" - -"Force compaction every hours (in [1..24])" = "Force compaction every hours (in [1..24])" - -"The height of the command frame in pixel (depends on your screen and browser sizes)" = "The height of the command frame in pixel (depends on your screen and browser sizes)" - -"This option controls whether the WEB interface should show frame borders or not" = "This option controls whether the WEB interface should show frame borders or not" - -"This option controls whether the WEB interface should use frames or not" = "This option controls whether the WEB interface should use frames or not" - -"The realm shown when connecting with a WEB browser" = "The realm shown when connecting with a WEB browser" - -"Delay between updates to the GUI" = "Delay between updates to the GUI" - -"Is the default terminal an ANSI terminal (escape sequences can be used)" = "Is the default terminal an ANSI terminal (escape sequences can be used)" - -"The size long client names will be shortened to in the interface" = "The size long client names will be shortened to in the interface" - -"The size long names will be shortened to in the interface" = "The size long names will be shortened to in the interface" - -"The size of the buffer between the client and its GUI. Can be useful\nto increase when the connection between them has a small bandwith" = "The size of the buffer between the client and its GUI. Can be useful\nto increase when the connection between them has a small bandwith" - -"The conversions to apply on Unicode characters" = "The conversions to apply on Unicode characters" - -"The maximum time in seconds to wait for networks to cleanly shutdown." = "The maximum time in seconds to wait for networks to cleanly shutdown." - -"Define the format of the archive, zip or tar.gz are valid." = "Define the format of the archive, zip or tar.gz are valid." - -"Define the total number of options archives in old_config." = "Define the total number of options archives in old_config." - -"How often (in hours) should a backup of the ini files be written into old_config.\n A value of zero means that a backup is written only when the core shuts down." = "How often (in hours) should a backup of the ini files be written into old_config.\n A value of zero means that a backup is written only when the core shuts down." - -"show all eMule mods in statistics" = "show all eMule mods in statistics" - -"build statistics about eMule mods" = "build statistics about eMule mods" - -"Flush buffers if buffers exceed buffer_writes_threshold kB (experimental)" = "Flush buffers if buffers exceed buffer_writes_threshold kB (experimental)" - -"Buffer writes and flush after buffer_writes_delay seconds (experimental)" = "Buffer writes and flush after buffer_writes_delay seconds (experimental)" - -"filters on replies (replies will be kept)." = "filters on replies (replies will be kept)." - -"keep seen files in history to allow local search (can be expensive in memory)" = "keep seen files in history to allow local search (can be expensive in memory)" - -"(experimental)" = "(experimental)" - -"use the chat to indicate when a file has been downloaded" = "use the chat to indicate when a file has been downloaded" - -"the id to use for communicating with the core console through chat interface" = "the id to use for communicating with the core console through chat interface" - -"The IP address used to bind the chat server" = "The IP address used to bind the chat server" - -"port used by the external chat application to use the core as a proxy" = "port used by the external chat application to use the core as a proxy" - -"hostname of the external chat application" = "hostname of the external chat application" - -"port of the external chat application" = "port of the external chat application" - -"Regexp of messages to filter out, example: string1|string2|string3" = "Regexp of messages to filter out, example: string1|string2|string3" - -"Allow others to browse our share list (0: none, 1: friends only, 2: everyone" = "Allow others to browse our share list (0: none, 1: friends only, 2: everyone" - -"Are all users allowed to change MLDonkey options?" = "Are all users allowed to change MLDonkey options?" - -"Allow you to use any command with ! in the interface instead of only the\nones in allowed_commands" = "Allow you to use any command with ! in the interface instead of only the\nones in allowed_commands" - -"Commands that you are allowed to be call from the interface. These\ncommands should short, so that the core is not blocked more than necessary." = "Commands that you are allowed to be call from the interface. These\ncommands should short, so that the core is not blocked more than necessary." - -"Name of GUI to start" = "Name of GUI to start" - -"Directory where mldonkey binaries are installed" = "Directory where mldonkey binaries are installed" - -"Name of program used for preview (first arg is local filename, second arg\n is name of file as searched on eDonkey" = "Name of program used for preview (first arg is local filename, second arg\n is name of file as searched on eDonkey" - -"Send a warning mail each hours for each directory, 0 to deactivate mail warnings." = "Send a warning mail each hours for each directory, 0 to deactivate mail warnings." - -"If true core shuts down when free space on core dir is below hdd_coredir_minfree,\n otherwise all downloads are paused and a warning email is sent." = "If true core shuts down when free space on core dir is below hdd_coredir_minfree,\n otherwise all downloads are paused and a warning email is sent." - -"Mininum free space in MB on core directory, minimum 20" = "Mininum free space in MB on core directory, minimum 20" - -"If true core shuts down when free space on temp dir is below hdd_temp_minfree,\n otherwise all downloads are paused and a warning email is sent." = "If true core shuts down when free space on temp dir is below hdd_temp_minfree,\n otherwise all downloads are paused and a warning email is sent." - -"Mininum free space in MB on temp_directory, minimum 50" = "Mininum free space in MB on temp_directory, minimum 50" - -"Create new files as sparse, only valid on MinGW for files on NTFS drives" = "Create new files as sparse, only valid on MinGW for files on NTFS drives" - -"New directories in incoming_directories are created with these rights" = "New directories in incoming_directories are created with these rights" - -"The directory where temporary files should be put" = "The directory where temporary files should be put" - -"How many megabytes should MLdonkey keep for saving configuration files." = "How many megabytes should MLdonkey keep for saving configuration files." - -"Should MLdonkey try to recover downloads of files in temp/ at startup" = "Should MLdonkey try to recover downloads of files in temp/ at startup" - -"Automatically Start the GUI" = "Automatically Start the GUI" - -"Ask for GUI start" = "Ask for GUI start" - -"The UID of the user (0=disabled) you want mldonkey to run as, after the ports\n have been bound (can be use not to run with root priviledges when\na port < 1024 is needed)" = "The UID of the user (0=disabled) you want mldonkey to run as, after the ports\n have been bound (can be use not to run with root priviledges when\na port < 1024 is needed)" - -"The login of the user you want mldonkey to run as, after the ports\n have been bound (can be use not to run with root priviledges when\na port < 1024 is needed)" = "The login of the user you want mldonkey to run as, after the ports\n have been bound (can be use not to run with root priviledges when\na port < 1024 is needed)" - -"The command which is called when a download is started. Arguments\nare '-file '" = "The command which is called when a download is started. Arguments\nare '-file '" - -"A command that is called when a file is committed, does not work on MinGW.\n Arguments are (kept for compatability):\n $1 - temp file name, without path\n $2 - file size\n $3 - filename of the committed file\n Also these environment variables can be used (prefered way):\n $TEMPNAME - temp file name, including path\n $FILEID - same as $1\n $FILESIZE - same as $2\n $FILENAME - same as $3\n $FILEHASH - internal hash\n $DURATION - download duration\n $INCOMING - directory used for commit\n $NETWORK - network used for downloading\n $ED2K_HASH - ed2k hash if MD4 is known" = "A command that is called when a file is committed, does not work on MinGW.\n Arguments are (kept for compatability):\n $1 - temp file name, without path\n $2 - file size\n $3 - filename of the committed file\n Also these environment variables can be used (prefered way):\n $TEMPNAME - temp file name, including path\n $FILEID - same as $1\n $FILESIZE - same as $2\n $FILENAME - same as $3\n $FILEHASH - internal hash\n $DURATION - download duration\n $INCOMING - directory used for commit\n $NETWORK - network used for downloading\n $ED2K_HASH - ed2k hash if MD4 is known" - -"The maximal length of zero bytes between non-zero bytes in a file that\nshould be interpreted as downloaded during a recovery" = "The maximal length of zero bytes between non-zero bytes in a file that\nshould be interpreted as downloaded during a recovery" - -"What algorithm to use to select blocks (currently 1 or 2)" = "What algorithm to use to select blocks (currently 1 or 2)" - -"How many sources to use to download each chunk" = "How many sources to use to download each chunk" - -"The maximal number of files in Downloading state (other ones are Queued)" = "The maximal number of files in Downloading state (other ones are Queued)" - -"Set to true if you want MLdonkey to emulate sparse files on your disk.\n Files will use less space, but and won't work anymore.\n Works only on Edonkey plugin. EXPERIMENTAL." = "Set to true if you want MLdonkey to emulate sparse files on your disk.\n Files will use less space, but and won't work anymore.\n Works only on Edonkey plugin. EXPERIMENTAL." - -"Set to true if you want all new downloads be paused immediatly\n will be set to false on core start." = "Set to true if you want all new downloads be paused immediatly\n will be set to false on core start." - -"Set to false if you don't want mldonkey to automatically put completed files\n in incoming directory" = "Set to false if you don't want mldonkey to automatically put completed files\n in incoming directory" - -"Put a prefix for the filename here which shows up in the notification mail" = "Put a prefix for the filename here which shows up in the notification mail" - -"Send filename in mail subject" = "Send filename in mail subject" - -"Does your mail-server need <...> around addresses" = "Does your mail-server need <...> around addresses" - -"Your e-mail if you want to receive mails when downloads are completed" = "Your e-mail if you want to receive mails when downloads are completed" - -"The port to use on the mail server (default 25)" = "The port to use on the mail server (default 25)" - -"The mail server you want to use (must be SMTP). Use hostname or IP address" = "The mail server you want to use (must be SMTP). Use hostname or IP address" - -"Direct TCP connections to HTTP proxy (the proxy should support CONNECT)" = "Direct TCP connections to HTTP proxy (the proxy should support CONNECT)" - -"Port of HTTP proxy" = "Port of HTTP proxy" - -"Direct HTTP queries to HTTP proxy" = "Direct HTTP queries to HTTP proxy" - -"Cookies send with a http request (used for .torrent files and web_infos)" = "Cookies send with a http request (used for .torrent files and web_infos)" - -"Should a connection check if the peer we are connected to is still alive?\n This implies some bandwidth-cost (with 200 connections ~10-20%)" = "Should a connection check if the peer we are connected to is still alive?\n This implies some bandwidth-cost (with 200 connections ~10-20%)" - -"The size of the minimal packet you want mldonkey to send when data is\navailable on the connection" = "The size of the minimal packet you want mldonkey to send when data is\navailable on the connection" - -"The size of the frame packet on your network (on my cable link, it is 250)" = "The size of the frame packet on your network (on my cable link, it is 250)" - -"The size of the MTU of a TCP/IP packet on your connection" = "The size of the MTU of a TCP/IP packet on your connection" - -"The size of the header of a TCP/IP packet on your connection (ppp adds\n 14 bytes sometimes, so modify to take that into account)" = "The size of the header of a TCP/IP packet on your connection (ppp adds\n 14 bytes sometimes, so modify to take that into account)" - -"Location of GeoIP.dat (Get one from http://www.maxmind.com/download/geoip/database/)" = "Location of GeoIP.dat (Get one from http://www.maxmind.com/download/geoip/database/)" - -"false: use ip_blocking_countries as block list, all other countries are allowed\n true: use ip_blocking_countries as allow list, all other countries are blocked" = "false: use ip_blocking_countries as block list, all other countries are allowed\n true: use ip_blocking_countries as allow list, all other countries are blocked" - -"List of countries to block connections from/to (requires Geoip).\n Names are in ISO 3166 format, see http://www.maxmind.com/app/iso3166\n You can also at your own risk use \"Unknown\" for IPs Geoip won't recognize." = "List of countries to block connections from/to (requires Geoip).\n Names are in ISO 3166 format, see http://www.maxmind.com/app/iso3166\n You can also at your own risk use \"Unknown\" for IPs Geoip won't recognize." - -"IP blocking list filename (peerguardian format), can also be in gz/bz2/zip format\n Zip files must contain either a file named guarding.p2p or guarding_full.p2p." = "IP blocking list filename (peerguardian format), can also be in gz/bz2/zip format\n Zip files must contain either a file named guarding.p2p or guarding_full.p2p." - -"Keep IP blocking ranges descriptions in memory" = "Keep IP blocking ranges descriptions in memory" - -"URLs of RSS feeds" = "URLs of RSS feeds" - -"A list of lines to download on the WEB: each line has\n the format: (kind, period, url), where kind is either\n 'server.met' for a server.met file (also in gz/bz2/zip format)\n containing ed2k server, or\n 'comments.met' for a file of comments, or\n 'guarding.p2p' for a blocklist file (also in gz/bz2/zip format), or\n 'ocl' for file in the ocl format containing overnet peers, or\n 'contact.dat' for an contact.dat file containing overnet peers,\n 'nodes.gzip' for a fasttrack nodes.gzip,\n and period is the period between updates (in hours),\n a period of zero means the file is only loaded once on startup,\n and url is the url of the file to download.\n IMPORTANT: Put the URL and the kind between quotes.\n EXAMPLE:\n web_infos = [\n (\"server.met\", 0, \"http://www.jd2k.com/server.met\");\n (\"guarding.p2p\", 96, \"http://www.bluetack.co.uk/config/level1.gz\");\n (\"ocl\", 24, \"http://members.lycos.co.uk/appbyhp2/FlockHelpApp/contact-files/contact.ocl\");\n (\"contact.dat\", 168, \"http://download.overnet.org/contact.dat\");\n ]\n " = "A list of lines to download on the WEB: each line has\n the format: (kind, period, url), where kind is either\n 'server.met' for a server.met file (also in gz/bz2/zip format)\n containing ed2k server, or\n 'comments.met' for a file of comments, or\n 'guarding.p2p' for a blocklist file (also in gz/bz2/zip format), or\n 'ocl' for file in the ocl format containing overnet peers, or\n 'contact.dat' for an contact.dat file containing overnet peers,\n 'nodes.gzip' for a fasttrack nodes.gzip,\n and period is the period between updates (in hours),\n a period of zero means the file is only loaded once on startup,\n and url is the url of the file to download.\n IMPORTANT: Put the URL and the kind between quotes.\n EXAMPLE:\n web_infos = [\n (\"server.met\", 0, \"http://www.jd2k.com/server.met\");\n (\"guarding.p2p\", 96, \"http://www.bluetack.co.uk/config/level1.gz\");\n (\"ocl\", 24, \"http://members.lycos.co.uk/appbyhp2/FlockHelpApp/contact-files/contact.ocl\");\n (\"contact.dat\", 168, \"http://download.overnet.org/contact.dat\");\n ]\n " - -"User agent string (default = \"default\")" = "User agent string (default = \"default\")" - -"Use the IP specified by 'client_ip' instead of trying to determine it\n ourself. Don't set this option to true if you have dynamic IP." = "Use the IP specified by 'client_ip' instead of trying to determine it\n ourself. Don't set this option to true if you have dynamic IP." - -"The last IP address used for this client" = "The last IP address used for this client" - -"Use javascript to display option help text as js popup (true=use js, false=use html tables)" = "Use javascript to display option help text as js popup (true=use js, false=use html tables)" - -"How long to display the tooltips" = "How long to display the tooltips" - -"How long to wait before displaying the tooltips" = "How long to wait before displaying the tooltips" - -"Whether to use the fancy javascript tooltips or plain html-title" = "Whether to use the fancy javascript tooltips or plain html-title" - -"Use gzip compression on web pages" = "Use gzip compression on web pages" - -"Whether to use checkboxes in the WEB interface for search result list" = "Whether to use checkboxes in the WEB interface for search result list" - -"Whether to use checkboxes in the WEB interface for download list" = "Whether to use checkboxes in the WEB interface for download list" - -"html_mods_theme to use (located in relative html_themes/ directory\n leave blank to use internal theme" = "html_mods_theme to use (located in relative html_themes/ directory\n leave blank to use internal theme" - -"bw_stats refresh delay (seconds)" = "bw_stats refresh delay (seconds)" - -"Maximum chat messages to log in memory" = "Maximum chat messages to log in memory" - -"Whether to load the mldonkey_messages.ini file (false=use internal settings)" = "Whether to load the mldonkey_messages.ini file (false=use internal settings)" - -"Whether to display the pending slots in uploaders command" = "Whether to display the pending slots in uploaders command" - -"Change max width of chunk graph" = "Change max width of chunk graph" - -"Change style of chunk graph" = "Change style of chunk graph" - -"Whether to display chunks list as graph or text in vd output" = "Whether to display chunks list as graph or text in vd output" - -"Change height of download indicator bar in vd output" = "Change height of download indicator bar in vd output" - -"Whether to display the Queues in vd # output" = "Whether to display the Queues in vd # output" - -"Whether to display the Priority column in vd output" = "Whether to display the Priority column in vd output" - -"Whether to display the Last column in vd output" = "Whether to display the Last column in vd output" - -"Tag graph y size in vd output ( 50 < x < 1200 )" = "Tag graph y size in vd output ( 50 < x < 1200 )" - -"Tag graph x size in vd output ( 130 < x < 3600 )" = "Tag graph x size in vd output ( 130 < x < 3600 )" - -"Tag graph upload y pos in vd output " = "Tag graph upload y pos in vd output " - -"Tag graph upload x pos in vd output " = "Tag graph upload x pos in vd output " - -"Tag graph download y pos in vd output " = "Tag graph download y pos in vd output " - -"Tag graph download x pos in vd output " = "Tag graph download x pos in vd output " - -"Tag graph title y pos in vd output " = "Tag graph title y pos in vd output " - -"Tag graph title x pos in vd output\n " = "Tag graph title x pos in vd output\n " - -"Tag graph title" = "Tag graph title" - -"Enable tag graph title" = "Enable tag graph title" - -"Draw tag as png if true, else draw as jpg in vd output" = "Draw tag as png if true, else draw as jpg in vd output" - -"Tag source image name" = "Tag source image name" - -"Use tag source image " = "Use tag source image " - -"Draw tag graph" = "Draw tag graph" - -"Graph y size in vd output ( 200 < y < 1200 )" = "Graph y size in vd output ( 200 < y < 1200 )" - -"Graph x size in vd output ( 320 < x < 3600 )" = "Graph x size in vd output ( 320 < x < 3600 )" - -"Show hourly graph in vd output" = "Show hourly graph in vd output" - -"Draw graph as png if true, else draw as jpg in vd output" = "Draw graph as png if true, else draw as jpg in vd output" - -"Show transparent graph in vd output (only for png)" = "Show transparent graph in vd output (only for png)" - -"Show mean line on graph in vd output" = "Show mean line on graph in vd output" - -"Flip up/side graph position in vd output" = "Flip up/side graph position in vd output" - -"Stacked download and upload graph" = "Stacked download and upload graph" - -"Split download and upload graph in vd output" = "Split download and upload graph in vd output" - -"Fill graph in vd output" = "Fill graph in vd output" - -"Remove graph files on core shutdown" = "Remove graph files on core shutdown" - -"Show graph in vd output" = "Show graph in vd output" - -"Whether to display the Age column in vd output" = "Whether to display the Age column in vd output" - -"Whether to display the Active Sources column in vd output" = "Whether to display the Active Sources column in vd output" - -"Whether to display the Net column in vd output" = "Whether to display the Net column in vd output" - -"Whether to use relative availability in the WEB interface" = "Whether to use relative availability in the WEB interface" - -"Whether to use human readable GMk number format" = "Whether to use human readable GMk number format" - -"Which html_mods style to use (set with html_mods_style command)" = "Which html_mods style to use (set with html_mods_style command)" - -"Whether to use the modified WEB interface" = "Whether to use the modified WEB interface" - -"Set to true if you also want mldonkey to download HTTP files (experimental)" = "Set to true if you also want mldonkey to download HTTP files (experimental)" - -"Set to true if you also want mldonkey to run as a OpenFT sub node (experimental)" = "Set to true if you also want mldonkey to run as a OpenFT sub node (experimental)" - -"Set to true if you also want mldonkey to run as a direct-connect node (experimental)" = "Set to true if you also want mldonkey to run as a direct-connect node (experimental)" - -"Set to true if you also want mldonkey to run as a Fasttrack sub node (experimental)" = "Set to true if you also want mldonkey to run as a Fasttrack sub node (experimental)" - -"Set to true if you also want mldonkey to run as a gnutella2 sub node (experimental)" = "Set to true if you also want mldonkey to run as a gnutella2 sub node (experimental)" - -"Set to true if you also want mldonkey to run as a gnutella1 sub node (experimental)" = "Set to true if you also want mldonkey to run as a gnutella1 sub node (experimental)" - -"Set to true if you also want mldonkey to run as a soulseek client (experimental)" = "Set to true if you also want mldonkey to run as a soulseek client (experimental)" - -"Set to true if you also want mldonkey to run as a napster client (experimental)" = "Set to true if you also want mldonkey to run as a napster client (experimental)" - -"Set to true if you also want mldonkey to run as a donkey client" = "Set to true if you also want mldonkey to run as a donkey client" - -"Set to true if you also want mldonkey to run as an Bittorrent client" = "Set to true if you also want mldonkey to run as an Bittorrent client" - -"Set to true if you want mldonkey to connect to edonkey servers\n (enable_donkey must be true, and only experimental)" = "Set to true if you want mldonkey to connect to edonkey servers\n (enable_donkey must be true, and only experimental)" - -"Set to true if you also want mldonkey to run as an kademlia client\n (enable_donkey must be true, and only experimental)" = "Set to true if you also want mldonkey to run as an kademlia client\n (enable_donkey must be true, and only experimental)" - -"Set to true if you also want mldonkey to run as an overnet client\n (enable_donkey must be true)" = "Set to true if you also want mldonkey to run as an overnet client\n (enable_donkey must be true)" - -"This option enables MLdonkey to always read as much data as possible\n from a channel, but use more CPU as it must then copy the data in the\n channel buffer." = "This option enables MLdonkey to always read as much data as possible\n from a channel, but use more CPU as it must then copy the data in the\n channel buffer." - -"No-limit IPs" = "No-limit IPs" - -"list of IP addresses allowed to connect to the core with no limit on\nupload/download and upload slots. List separated by spaces, wildcard=255\nie: use 192.168.0.255 for 192.168.0.* " = "list of IP addresses allowed to connect to the core with no limit on\nupload/download and upload slots. List separated by spaces, wildcard=255\nie: use 192.168.0.255 for 192.168.0.* " - -"The delay in milliseconds to wait in the event loop. Can be decreased to\nincrease the bandwidth usage, or increased to lower the CPU usage." = "The delay in milliseconds to wait in the event loop. Can be decreased to\nincrease the bandwidth usage, or increased to lower the CPU usage." - -"Maximal number of connections that can be opened per second" = "Maximal number of connections that can be opened per second" - -"Set this to true if you want to have dynamic upload slot allocation (experimental)" = "Set this to true if you want to have dynamic upload slot allocation (experimental)" - -"Maximum file size to benefit from the reserved slot for small files (0 to disable)" = "Maximum file size to benefit from the reserved slot for small files (0 to disable)" - -"Set aside a single reserved slot to upload to friends" = "Set aside a single reserved slot to upload to friends" - -"How many slots can be used for upload" = "How many slots can be used for upload" - -"Amount of indirect connections in percent (min 30, max 70) of max_opened_connections" = "Amount of indirect connections in percent (min 30, max 70) of max_opened_connections" - -"Maximal number of opened connections" = "Maximal number of opened connections" - -"The maximal download rate you can tolerate on your link in kBytes/s (0 = no limit)\n The limit will apply on all your connections (clients and servers) and both\ncontrol and data messages." = "The maximal download rate you can tolerate on your link in kBytes/s (0 = no limit)\n The limit will apply on all your connections (clients and servers) and both\ncontrol and data messages." - -"The maximal upload rate you can tolerate on your link in kBytes/s (0 = no limit)\n The limit will apply on all your connections (clients and servers) and both\ncontrol and data messages." = "The maximal upload rate you can tolerate on your link in kBytes/s (0 = no limit)\n The limit will apply on all your connections (clients and servers) and both\ncontrol and data messages." - -"A space-separated list of keywords. Each keyword triggers\n printing information on the corresponding messages:\n verb : verbose mode (interesting not only for coders)\n mc : debug client messages\n mr|raw : debug raw messages\n mct : debug emule clients tags\n ms : debug server messages\n sm : debug source management\n net : debug net\n gui : debug gui\n no-login : disable login messages\n file : debug file handling\n do : some download warnings\n up : some upload warnings\n unk : unknown messages\n ov : overnet\n loc : debug source research/master servers\n share: debug sharing\n md4 : md4 computation\n connect : debug connections\n udp : udp messages\n ultra|super : debug supernode\n swarming : debug swarming\n hc : http_client messages\n hs : http_server messages\n act : debug activity\n bw : debug bandwidth\n unexp : debug unexpected messages\n" = "A space-separated list of keywords. Each keyword triggers\n printing information on the corresponding messages:\n verb : verbose mode (interesting not only for coders)\n mc : debug client messages\n mr|raw : debug raw messages\n mct : debug emule clients tags\n ms : debug server messages\n sm : debug source management\n net : debug net\n gui : debug gui\n no-login : disable login messages\n file : debug file handling\n do : some download warnings\n up : some upload warnings\n unk : unknown messages\n ov : overnet\n loc : debug source research/master servers\n share: debug sharing\n md4 : md4 computation\n connect : debug connections\n udp : udp messages\n ultra|super : debug supernode\n swarming : debug swarming\n hc : http_client messages\n hs : http_server messages\n act : debug activity\n bw : debug bandwidth\n unexp : debug unexpected messages\n" - -"Aliases to commands. The alias (fist string) has to be\nwhitespaceless, the outcome of the alias (second string)\nmay have spaces (put it in quotation then)." = "Aliases to commands. The alias (fist string) has to be\nwhitespaceless, the outcome of the alias (second string)\nmay have spaces (put it in quotation then)." - -"Improved telnet interface" = "Improved telnet interface" - -"Should *all* sources for a file be shown on HTML/telnet vd " = "Should *all* sources for a file be shown on HTML/telnet vd " - -"The IP address used to bind the telnet server" = "The IP address used to bind the telnet server" - -"The IP address used to bind the gui server" = "The IP address used to bind the gui server" - -"The IP address used to bind the http server" = "The IP address used to bind the http server" - -"The port to connect via telnet" = "The port to connect via telnet" - -"port for user interaction" = "port for user interaction" - -"The port to connect via HTTP" = "The port to connect via HTTP" - -"The port used to connect to your client with a WEB browser" = "The port used to connect to your client with a WEB browser" - -"The port to connect for GiFT GUIs." = "The port to connect for GiFT GUIs." - -"port for GiFT Graphical Interfaces interaction. It was 1213, but the default is\nnow 0 for disabled, because it does not check for a password." = "port for GiFT Graphical Interfaces interaction. It was 1213, but the default is\nnow 0 for disabled, because it does not check for a password." - -"The port to connect the GUI" = "The port to connect the GUI" - -"port for Graphical Interfaces" = "port for Graphical Interfaces" - -"Allowed IPs" = "Allowed IPs" - -"list of IP address allowed to connect to the core via telnet/GUI/WEB\nfor internal command set: list separated by spaces\nexample for internal command: set allowed_ips \"127.0.0.1 192.168.1.2\"\nor for editing the ini-file: list separated by semi-colon\nexample for ini-file: allowed_ips = [ \"127.0.0.1\"; \"192.168.1.2\";]\nwildcard=255 ie: use 192.168.0.255 for 192.168.0.*" = "list of IP address allowed to connect to the core via telnet/GUI/WEB\nfor internal command set: list separated by spaces\nexample for internal command: set allowed_ips \"127.0.0.1 192.168.1.2\"\nor for editing the ini-file: list separated by semi-colon\nexample for ini-file: allowed_ips = [ \"127.0.0.1\"; \"192.168.1.2\";]\nwildcard=255 ie: use 192.168.0.255 for 192.168.0.*" - -"small name of client" = "small name of client" - -(************************************) -(* *) - - module "CommonMessages" - -(* *) -(************************************) - -"Full access enabled" = "Full access enabled" - -"Bad login/password" = "Bad login/password" - -"Command not authorized\n use 'auth ' before." = "Command not authorized\n use 'auth ' before." - -"Main commands are:\n" = "Main commands are:\n" - -"Available commands are:\n" = "Available commands are:\n" - diff --git a/config/mldonkey/mlnet_strings.en_US.utf8 b/config/mldonkey/mlnet_strings.en_US.utf8 deleted file mode 100644 index 0a9e2e804..000000000 --- a/config/mldonkey/mlnet_strings.en_US.utf8 +++ /dev/null @@ -1,1012 +0,0 @@ -(************************************) - module "GeoIp" -(************************************) - -"%s database loaded" = "%s database loaded" - -(************************************) - module "CommonWeb" -(************************************) - -"%s while loading %s" = "%s while loading %s" - -"request %s (%s)" = "request %s (%s)" - -(************************************) - module "DriverMain" -(************************************) - -"Core stopped" = "Core stopped" - -"Received SIGTERM, stopping MLDonkey..." = "Received SIGTERM, stopping MLDonkey..." - -"Core started" = "Core started" - -"If you connect from a remote machine adjust allowed_ips" = "If you connect from a remote machine adjust allowed_ips" - -"Connect to IP %s, port %d" = "Connect to IP %s, port %d" - -"For a GUI check out http://sancho-gui.sourceforge.net" = "For a GUI check out http://sancho-gui.sourceforge.net" - -"Or with browser: http://%s:%d" = "Or with browser: http://%s:%d" - -"To command: telnet %s %d" = "To command: telnet %s %d" - -"%s " = "%s " - -"%s[dMain] disabled networks: " = "%s[dMain] disabled networks: " - -"---- enabling interfaces ----" = "---- enabling interfaces ----" - -"---- enabling %s ----" = "---- enabling %s ----" - -"enabling networks: " = "enabling networks: " - -"Check http://www.mldonkey.org for updates" = "Check http://www.mldonkey.org for updates" - -" : print version number and exit" = " : print version number and exit" - -" : check file format" = " : check file format" - -" : undocumented" = " : undocumented" - -" : display information on the implementations" = " : display information on the implementations" - -": keep output to stdout after startup" = ": keep output to stdout after startup" - -": keep output to stderr after startup" = ": keep output to stderr after startup" - -" : this argument was removed, core will exit" = " : this argument was removed, core will exit" - -" : find another port when one is already used" = " : find another port when one is already used" - -": directory for pid file" = ": directory for pid file" - -"\" \" : create user/change password" = "\" \" : create user/change password" - -"Libmagic file-type recognition database present" = "Libmagic file-type recognition database present" - -(************************************) - module "Ip" -(************************************) - -"[DNS] Resolving [%s] ..." = "[DNS] Resolving [%s] ..." - -(************************************) - module "DriverCommands" -(************************************) - -":\t\t\tfor debugging only" = ":\t\t\tfor debugging only" - -" :\t\t\tcheck whether an IP is blocked" = " :\t\t\tcheck whether an IP is blocked" - -":\t\t\t\tdisplay the list of blocked IP ranges that were hit" = ":\t\t\t\tdisplay the list of blocked IP ranges that were hit" - -":\t\t\t\tfor debugging only" = ":\t\t\t\tfor debugging only" - -":\t\t\t\tclose all files (use to free space on disk after remove)" = ":\t\t\t\tclose all files (use to free space on disk after remove)" - -" :\t\t\tuse poll instead of select" = " :\t\t\tuse poll instead of select" - -":\t\t\tclose all opened sockets" = ":\t\t\tclose all opened sockets" - -":\t\t\t\tprint memory stats []" = ":\t\t\t\tprint memory stats []" - -" :\t\t\tselect html_theme" = " :\t\t\tselect html_theme" - -":\t\t\t\t\tprint RSS feeds" = ":\t\t\t\t\tprint RSS feeds" - -":\t\t\tselect html_mods_style <#>" = ":\t\t\tselect html_mods_style <#>" - -":\t\t\t\ttoggle html_mods" = ":\t\t\t\ttoggle html_mods" - -":\t\t\t\tclear log_file" = ":\t\t\t\tclear log_file" - -":\t\t\t\tclose logging to file" = ":\t\t\t\tclose logging to file" - -":\t\t\t\tenable logging to file" = ":\t\t\t\tenable logging to file" - -" :\t\t\ttry to swarm downloads from file (secondary) to file (primary)" = " :\t\t\ttry to swarm downloads from file (secondary) to file (primary)" - -":\t\t\t\tclear the table of clients being debugged" = ":\t\t\t\tclear the table of clients being debugged" - -" :\t\tdebug file state" = " :\t\tdebug file state" - -" :\t\tdebug message in communications with these clients" = " :\t\tdebug message in communications with these clients" - -" :\t\t\treactivate log to stdout" = " :\t\t\treactivate log to stdout" - -" :\t\t\tset terminal width and height (devel)" = " :\t\t\tset terminal width and height (devel)" - -":\t\t\t\t\ttoggle ansi terminal (devel)" = ":\t\t\t\t\ttoggle ansi terminal (devel)" - -":\t\t\t\t\tdump current log state to console" = ":\t\t\t\t\tdump current log state to console" - -":\t\t\treload messages file" = ":\t\t\treload messages file" - -" :\t\t\tchange owner of download to " = " :\t\t\tchange owner of download to " - -" :\t\t\tchange group of download to , use group = none for private file" = " :\t\t\tchange group of download to , use group = none for private file" - -":\t\t\t\tprint default group of logged-in user" = ":\t\t\t\tprint default group of logged-in user" - -":\t\t\t\tprint groups of logged-in user" = ":\t\t\t\tprint groups of logged-in user" - -":\t\t\t\tprint logged-in user name" = ":\t\t\t\tprint logged-in user name" - -":\t\t\t\t\tprint users" = ":\t\t\t\t\tprint users" - -" :\tchange group admin status" = " :\tchange group admin status" - -" :\t\t\tremove an unused mldonkey group" = " :\t\t\tremove an unused mldonkey group" - -" :\tadd new mldonkey group" = " :\tadd new mldonkey group" - -" :\t\tchange user specific commit directory" = " :\t\tchange user specific commit directory" - -" :\t\t\tchange number of allowed concurrent downloads" = " :\t\t\tchange number of allowed concurrent downloads" - -" :\t\tchange user mail address" = " :\t\tchange user mail address" - -" :\t\t\tchange own password" = " :\t\t\tchange own password" - -" :\tchange user default group" = " :\tchange user default group" - -" :\t\tremove a group from a mldonkey user" = " :\t\tremove a group from a mldonkey user" - -" :\t\tadd a group to a mldonkey user" = " :\t\tadd a group to a mldonkey user" - -" :\t\t\tremove a mldonkey user" = " :\t\t\tremove a mldonkey user" - -" [] [] [] []: add new mldonkey user/change user password" = " [] [] [] []: add new mldonkey user/change user password" - -" :\t\t\tdownload all the links contained in the file" = " :\t\t\tdownload all the links contained in the file" - -" :\t\t\t\tdownload ed2k, sig2dat, torrent or other link" = " :\t\t\t\tdownload ed2k, sig2dat, torrent or other link" - -":\t\t\ttell which files have several very different names" = ":\t\t\ttell which files have several very different names" - -" \"\" :\t\tchange name of download to " = " \"\" :\t\tchange name of download to " - -" :\t\t\tstart previewer for file " = " :\t\t\tstart previewer for file " - -"[|queued|paused|downloading] :\t$bview file info for download , or lists of queued, paused or downloading files, or all downloads if no argument given$n" = "[|queued|paused|downloading] :\t$bview file info for download , or lists of queued, paused or downloading files, or all downloads if no argument given$n" - -":\t\t\t\t$bmove downloaded files to incoming directory$n" = ":\t\t\t\t$bmove downloaded files to incoming directory$n" - -" :\t\t\t\tchange release state of a download" = " :\t\t\t\tchange release state of a download" - -" :\t\t\tresume a paused download (use arg 'all' for all files)" = " :\t\t\tresume a paused download (use arg 'all' for all files)" - -" :\t\t\tpause a download (use arg 'all' for all files)" = " :\t\t\tpause a download (use arg 'all' for all files)" - -" :\t\t\tverify chunks of file " = " :\t\t\tverify chunks of file " - -":\t\t\t\tdisplay downloaders list" = ":\t\t\t\tdisplay downloaders list" - -" :\t\t\tcancel download (use arg 'all' for all files)" = " :\t\t\tcancel download (use arg 'all' for all files)" - -" :\t\t\tprint the segments downloaded in file" = " :\t\t\tprint the segments downloaded in file" - -" :\t\t\tconfirm cancellation" = " :\t\t\tconfirm cancellation" - -" :\tchange download order of file blocks (default random, with first and last block first)" = " :\tchange download order of file blocks (default random, with first and last block first)" - -" :\tchange file priorities" = " :\tchange file priorities" - -":\t\t\t\tshow users currently uploading" = ":\t\t\t\tshow users currently uploading" - -"[downloading|shared|empty for all]: list links of shared files" = "[downloading|shared|empty for all]: list links of shared files" - -":\t\t\t\tstatistics on upload" = ":\t\t\t\tstatistics on upload" - -" :\t\t\t\tunshare directory " = " :\t\t\t\tunshare directory " - -" [] :\tshare directory with [and sharing strategy ]" = " [] :\tshare directory with [and sharing strategy ]" - -":\t\t\t\tprint shared directories" = ":\t\t\t\tprint shared directories" - -"debug command" = "debug command" - -"debug command (example: file .)" = "debug command (example: file .)" - -"debug command (example: disk .)" = "debug command (example: disk .)" - -":\t\t\t\tcheck shared files for removal" = ":\t\t\t\tcheck shared files for removal" - -":\t\t\t\t$bprint options values by section$n" = ":\t\t\t\t$bprint options values by section$n" - -":\t\t\t\t\tprint web_infos options" = ":\t\t\t\t\tprint web_infos options" - -"[ - - - -EOF -; - - print < - - + diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 54f3ae1a7..867bff7eb 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2618,6 +2618,9 @@ 'vpn payload compression' => 'Datennutzlast-Kompression aushandeln', 'vpn red name' => 'Öffentliche IP oder FQDN für das rote Interface oder <%defaultroute>', 'vpn remote id' => 'Remote ID', +'vpn start action' => 'Startaktion', +'vpn start action route' => 'On Demand', +'vpn start action start' => 'Immer An', 'vpn statistic n2n' => 'OpenVPN-Netz-zu-Netz-Statistik', 'vpn statistic rw' => 'OpenVPN-Roadwarrior-Statistik', 'vpn subjectaltname' => 'Subjekt Alternativer Name', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index a04d994d6..5333c13b5 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2663,6 +2663,9 @@ 'vpn payload compression' => 'Negotiate payload compression', 'vpn red name' => 'Public IP or FQDN for RED interface or <%defaultroute>', 'vpn remote id' => 'Remote ID', +'vpn start action' => 'Start Action', +'vpn start action route' => 'On Demand', +'vpn start action start' => 'Always On', 'vpn statistic n2n' => 'OpenVPN Net-to-Net Statistics', 'vpn statistic rw' => 'OpenVPN Roadwarrior Statistics', 'vpn subjectaltname' => 'Subject Alt Name', From 1ee1666ee45268db405a66b8ec05501c718e7702 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 15 Feb 2017 11:22:27 +0000 Subject: [PATCH 091/464] IPsec: Close on-demand tunnels after 15 min of inactivity Signed-off-by: Michael Tremer --- html/cgi-bin/vpnmain.cgi | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index b6469c03c..972c07c13 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -413,6 +413,12 @@ sub writeipsecfiles { print CONF "\trightsourceip=$lvpnsettings{'RW_NET'}\n"; } else { print CONF "\tauto=$start_action\n"; + + # If in on-demand mode, we terminate the tunnel + # after 15 min of no traffic + if ($start_action eq 'route') { + print CONF "\tinactivity=900\n"; + } } # Fragmentation From 8057ab15b9efeecf8eca7ad4ebba170f141bd3de Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 15 Feb 2017 12:15:42 +0000 Subject: [PATCH 092/464] Show better connection information for on-demand IPsec connections Signed-off-by: Michael Tremer --- doc/language_issues.es | 1 + doc/language_issues.fr | 1 + doc/language_issues.it | 1 + doc/language_issues.nl | 1 + doc/language_issues.pl | 1 + doc/language_issues.ru | 1 + doc/language_issues.tr | 1 + doc/language_missings | 4 ++++ html/cgi-bin/index.cgi | 3 +++ html/cgi-bin/vpnmain.cgi | 3 +++ langs/de/cgi-bin/de.pl | 1 + langs/en/cgi-bin/en.pl | 1 + 12 files changed, 19 insertions(+) diff --git a/doc/language_issues.es b/doc/language_issues.es index 36d4a8211..def789e33 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1144,6 +1144,7 @@ WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.fr b/doc/language_issues.fr index b21c33851..25ee84103 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1161,6 +1161,7 @@ WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.it b/doc/language_issues.it index e7230280f..83268a3c7 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -819,6 +819,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: vpn force mobike +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 22a893437..54653728d 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -867,6 +867,7 @@ WARNING: untranslated string: uncheck all WARNING: untranslated string: upload dh key WARNING: untranslated string: vendor WARNING: untranslated string: vpn force mobike +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 36d4a8211..def789e33 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1144,6 +1144,7 @@ WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.ru b/doc/language_issues.ru index fc727d607..3d2b35668 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1139,6 +1139,7 @@ WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 59c904657..51ba00de4 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -752,6 +752,7 @@ WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed WARNING: untranslated string: routing table +WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start diff --git a/doc/language_missings b/doc/language_missings index 49def615f..acec27520 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -561,6 +561,7 @@ < vendor < visit us at < vpn keyexchange +< vpn on-demand < vpn start action < vpn start action route < vpn start action start @@ -1178,6 +1179,7 @@ < vendor < visit us at < vpn keyexchange +< vpn on-demand < vpn start action < vpn start action route < vpn start action start @@ -1760,6 +1762,7 @@ < vendor < visit us at < vpn keyexchange +< vpn on-demand < vpn start action < vpn start action route < vpn start action start @@ -2347,6 +2350,7 @@ < vendor < visit us at < vpn keyexchange +< vpn on-demand < vpn start action < vpn start action route < vpn start action start diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index c142a65f7..85a0c94cd 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -425,6 +425,9 @@ END if (($line =~ /\"$vpnconfig{$key}[1]\".*IPsec SA established/) || ($line =~/$vpnconfig{$key}[1]\{.*INSTALLED/ )){ $activecolor = $Header::colourgreen; $activestatus = $Lang::tr{'capsopen'}; + } elsif ($line =~ /$vpnconfig{$key}[1]\{.*ROUTED/) { + $activecolor = $Header::colourorange; + $activestatus = $Lang::tr{'vpn on-demand'}; } } } diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index 972c07c13..f4eccb1f0 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2805,6 +2805,9 @@ END ($line =~ /$confighash{$key}[1]\{.*INSTALLED/)) { $col1="bgcolor='${Header::colourgreen}'"; $active = "$Lang::tr{'capsopen'}"; + } elsif ($line =~ /$confighash{$key}[1]\{.*ROUTED/) { + $col1="bgcolor='${Header::colourorange}'"; + $active = "$Lang::tr{'vpn on-demand'}"; } } # move to blue if really down diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 867bff7eb..ad8db192b 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2615,6 +2615,7 @@ 'vpn on blue' => 'VPN auf BLAU', 'vpn on green' => 'VPN auf GRÜN', 'vpn on orange' => 'VPN auf ORANGE', +'vpn on-demand' => 'ON DEMAND', 'vpn payload compression' => 'Datennutzlast-Kompression aushandeln', 'vpn red name' => 'Öffentliche IP oder FQDN für das rote Interface oder <%defaultroute>', 'vpn remote id' => 'Remote ID', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 5333c13b5..3deb4b555 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2660,6 +2660,7 @@ 'vpn on blue' => 'VPN on BLUE', 'vpn on green' => 'VPN on GREEN', 'vpn on orange' => 'VPN on ORANGE', +'vpn on-demand' => 'ON-DEMAND', 'vpn payload compression' => 'Negotiate payload compression', 'vpn red name' => 'Public IP or FQDN for RED interface or <%defaultroute>', 'vpn remote id' => 'Remote ID', From e01b933cc28814d8650f829712639b4eb0d991e6 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 11 Feb 2017 15:39:26 +0100 Subject: [PATCH 093/464] squid 3.5.24: latest patch (14142) (Fixed: wrong squid version from previous commit) "Bump SSL client on [more] errors encountered before ssl_bump evaluation" Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 1 + src/patches/squid/squid-3.5-14142.patch | 72 +++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14142.patch diff --git a/lfs/squid b/lfs/squid index 4a8d9d8e0..6d557517c 100644 --- a/lfs/squid +++ b/lfs/squid @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14142.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.24-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14142.patch b/src/patches/squid/squid-3.5-14142.patch new file mode 100644 index 000000000..8649e27f9 --- /dev/null +++ b/src/patches/squid/squid-3.5-14142.patch @@ -0,0 +1,72 @@ +------------------------------------------------------------ +revno: 14142 +revision-id: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq +parent: squid3@treenet.co.nz-20170128035415-bpwt79jsobv1rqx3 +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Wed 2017-02-08 18:40:33 +1300 +message: + Bump SSL client on [more] errors encountered before ssl_bump evaluation + + ... such as ERR_ACCESS_DENIED with HTTP/403 Forbidden triggered by an + http_access deny rule match. + + The old code allowed ssl_bump step1 rules to be evaluated in the + presence of an error. An ssl_bump splicing decision would then trigger + the useless "send the error to the client now" processing logic instead + of going down the "to serve an error, bump the client first" path. + + Furthermore, the ssl_bump evaluation result itself could be surprising + to the admin because ssl_bump (and most other) rules are not meant to be + evaluated for a transaction in an error state. This complicated triage. + + Also polished an important comment to clarify that we want to bump on + error if (and only if) the SslBump feature is applicable to the failed + transaction (i.e., if the ssl_bump rules would have been evaluated if + there were no prior errors). The old comment could have been + misinterpreted that ssl_bump rules must be evaluated to allow an + "ssl_bump splice" match to hide the error. + + This is a Measurement Factory project. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 8c3f2a03f86aa1b1484195a63742bc4002ba2359 +# timestamp: 2017-02-08 05:51:15 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170128035415-\ +# bpwt79jsobv1rqx3 +# +# Begin patch +=== modified file 'src/client_side_request.cc' +--- src/client_side_request.cc 2017-01-23 02:05:46 +0000 ++++ src/client_side_request.cc 2017-02-08 05:40:33 +0000 +@@ -1442,6 +1442,13 @@ + return false; + } + ++ if (error) { ++ debugs(85, 5, "SslBump applies. Force bump action on error " << err_type_str[(error->type >= ERR_NONE && error->type < ERR_MAX) ? error->type : ERR_NONE]); ++ http->sslBumpNeed(Ssl::bumpBump); ++ http->al->ssl.bumpMode = Ssl::bumpBump; ++ return false; ++ } ++ + // Do not bump during authentication: clients would not proxy-authenticate + // if we delay a 407 response and respond with 200 OK to CONNECT. + if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { +@@ -1781,8 +1788,9 @@ + } + + #if USE_OPENSSL +- // We need to check for SslBump even if the calloutContext->error is set +- // because bumping may require delaying the error until after CONNECT. ++ // Even with calloutContext->error, we call sslBumpAccessCheck() to decide ++ // whether SslBump applies to this transaction. If it applies, we will ++ // attempt to bump the client to serve the error. + if (!calloutContext->sslBumpCheckDone) { + calloutContext->sslBumpCheckDone = true; + if (calloutContext->sslBumpAccessCheck()) + From d2e4dc253b08e9115d6007f15d8b179ec2c176e8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 08:57:49 +0000 Subject: [PATCH 094/464] pixman: Update to 0.34.0 Signed-off-by: Michael Tremer --- config/rootfiles/common/pixman | 2 +- lfs/pixman | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/rootfiles/common/pixman b/config/rootfiles/common/pixman index ea44cd812..34b2a3fb6 100644 --- a/config/rootfiles/common/pixman +++ b/config/rootfiles/common/pixman @@ -5,5 +5,5 @@ #usr/lib/libpixman-1.la usr/lib/libpixman-1.so usr/lib/libpixman-1.so.0 -usr/lib/libpixman-1.so.0.26.0 +usr/lib/libpixman-1.so.0.34.0 #usr/lib/pkgconfig/pixman-1.pc diff --git a/lfs/pixman b/lfs/pixman index 1cb2a08df..e06e0c473 100644 --- a/lfs/pixman +++ b/lfs/pixman @@ -24,7 +24,7 @@ include Config -VER = 0.26.0 +VER = 0.34.0 THISAPP = pixman-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 6563b6400b9fa23b47fd52105faf72b4 +$(DL_FILE)_MD5 = e80ebae4da01e77f68744319f01d52a3 install : $(TARGET) From b1a2ddc87323324eb4175d9388244ff2461d5948 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 08:59:18 +0000 Subject: [PATCH 095/464] freetype: Update to 2.7.1 Signed-off-by: Michael Tremer --- config/rootfiles/common/freetype | 60 ++++++++------------------------ lfs/freetype | 9 +++-- 2 files changed, 18 insertions(+), 51 deletions(-) diff --git a/config/rootfiles/common/freetype b/config/rootfiles/common/freetype index 9731f287b..38bff842d 100644 --- a/config/rootfiles/common/freetype +++ b/config/rootfiles/common/freetype @@ -1,14 +1,6 @@ #usr/bin/freetype-config #usr/include/freetype2 #usr/include/freetype2/freetype -#usr/include/freetype2/freetype/cache -#usr/include/freetype2/freetype/cache/ftccache.h -#usr/include/freetype2/freetype/cache/ftccmap.h -#usr/include/freetype2/freetype/cache/ftcglyph.h -#usr/include/freetype2/freetype/cache/ftcimage.h -#usr/include/freetype2/freetype/cache/ftcmanag.h -#usr/include/freetype2/freetype/cache/ftcmru.h -#usr/include/freetype2/freetype/cache/ftcsbits.h #usr/include/freetype2/freetype/config #usr/include/freetype2/freetype/config/ftconfig.h #usr/include/freetype2/freetype/config/ftheader.h @@ -16,17 +8,26 @@ #usr/include/freetype2/freetype/config/ftoption.h #usr/include/freetype2/freetype/config/ftstdlib.h #usr/include/freetype2/freetype/freetype.h +#usr/include/freetype2/freetype/ftadvanc.h +#usr/include/freetype2/freetype/ftautoh.h #usr/include/freetype2/freetype/ftbbox.h #usr/include/freetype2/freetype/ftbdf.h #usr/include/freetype2/freetype/ftbitmap.h +#usr/include/freetype2/freetype/ftbzip2.h #usr/include/freetype2/freetype/ftcache.h +#usr/include/freetype2/freetype/ftcffdrv.h #usr/include/freetype2/freetype/ftchapters.h +#usr/include/freetype2/freetype/ftcid.h #usr/include/freetype2/freetype/fterrdef.h #usr/include/freetype2/freetype/fterrors.h +#usr/include/freetype2/freetype/ftfntfmt.h +#usr/include/freetype2/freetype/ftgasp.h #usr/include/freetype2/freetype/ftglyph.h +#usr/include/freetype2/freetype/ftgxval.h #usr/include/freetype2/freetype/ftgzip.h #usr/include/freetype2/freetype/ftimage.h #usr/include/freetype2/freetype/ftincrem.h +#usr/include/freetype2/freetype/ftlcdfil.h #usr/include/freetype2/freetype/ftlist.h #usr/include/freetype2/freetype/ftlzw.h #usr/include/freetype2/freetype/ftmac.h @@ -41,55 +42,22 @@ #usr/include/freetype2/freetype/ftsnames.h #usr/include/freetype2/freetype/ftstroke.h #usr/include/freetype2/freetype/ftsynth.h -#usr/include/freetype2/freetype/ftsysio.h -#usr/include/freetype2/freetype/ftsysmem.h #usr/include/freetype2/freetype/ftsystem.h #usr/include/freetype2/freetype/fttrigon.h +#usr/include/freetype2/freetype/ftttdrv.h #usr/include/freetype2/freetype/fttypes.h #usr/include/freetype2/freetype/ftwinfnt.h -#usr/include/freetype2/freetype/ftxf86.h -#usr/include/freetype2/freetype/internal -#usr/include/freetype2/freetype/internal/autohint.h -#usr/include/freetype2/freetype/internal/ftcalc.h -#usr/include/freetype2/freetype/internal/ftdebug.h -#usr/include/freetype2/freetype/internal/ftdriver.h -#usr/include/freetype2/freetype/internal/ftgloadr.h -#usr/include/freetype2/freetype/internal/ftmemory.h -#usr/include/freetype2/freetype/internal/ftobjs.h -#usr/include/freetype2/freetype/internal/ftrfork.h -#usr/include/freetype2/freetype/internal/ftserv.h -#usr/include/freetype2/freetype/internal/ftstream.h -#usr/include/freetype2/freetype/internal/fttrace.h -#usr/include/freetype2/freetype/internal/ftvalid.h -#usr/include/freetype2/freetype/internal/internal.h -#usr/include/freetype2/freetype/internal/pcftypes.h -#usr/include/freetype2/freetype/internal/psaux.h -#usr/include/freetype2/freetype/internal/pshints.h -#usr/include/freetype2/freetype/internal/sfnt.h -#usr/include/freetype2/freetype/internal/svbdf.h -#usr/include/freetype2/freetype/internal/svgldict.h -#usr/include/freetype2/freetype/internal/svmm.h -#usr/include/freetype2/freetype/internal/svotval.h -#usr/include/freetype2/freetype/internal/svpfr.h -#usr/include/freetype2/freetype/internal/svpostnm.h -#usr/include/freetype2/freetype/internal/svpscmap.h -#usr/include/freetype2/freetype/internal/svpsinfo.h -#usr/include/freetype2/freetype/internal/svsfnt.h -#usr/include/freetype2/freetype/internal/svttcmap.h -#usr/include/freetype2/freetype/internal/svwinfnt.h -#usr/include/freetype2/freetype/internal/svxf86nm.h -#usr/include/freetype2/freetype/internal/t1types.h -#usr/include/freetype2/freetype/internal/tttypes.h #usr/include/freetype2/freetype/t1tables.h #usr/include/freetype2/freetype/ttnameid.h #usr/include/freetype2/freetype/tttables.h #usr/include/freetype2/freetype/tttags.h #usr/include/freetype2/freetype/ttunpat.h -#usr/include/ft2build.h +#usr/include/freetype2/ft2build.h #usr/lib/libfreetype.a #usr/lib/libfreetype.la -usr/lib/libfreetype.so +#usr/lib/libfreetype.so usr/lib/libfreetype.so.6 -usr/lib/libfreetype.so.6.3.8 +usr/lib/libfreetype.so.6.13.0 #usr/lib/pkgconfig/freetype2.pc #usr/share/aclocal/freetype2.m4 +#usr/share/man/man1/freetype-config.1 diff --git a/lfs/freetype b/lfs/freetype index dbe8d17d7..ba80297dc 100644 --- a/lfs/freetype +++ b/lfs/freetype @@ -24,10 +24,10 @@ include Config -VER = 2.1.10 +VER = 2.7.1 THISAPP = freetype-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = a4012e7d1f6400df44a16743b11b8423 +$(DL_FILE)_MD5 = 78701bee8d249578d83bb9a2f3aa3616 install : $(TARGET) @@ -69,8 +69,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && sed -i -r 's:.*(#.*BYTE.*) .*:\1:' include/freetype/config/ftoption.h + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install From 6516848bedc536bb479fd130934d2c5a6b2370ef Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:02:04 +0000 Subject: [PATCH 096/464] fontconfig: Update to 2.12.1 Signed-off-by: Michael Tremer --- config/rootfiles/common/fontconfig | 486 ++++++++++++++++------------- lfs/fontconfig | 7 +- 2 files changed, 281 insertions(+), 212 deletions(-) diff --git a/config/rootfiles/common/fontconfig b/config/rootfiles/common/fontconfig index ade611e11..e567d6df3 100644 --- a/config/rootfiles/common/fontconfig +++ b/config/rootfiles/common/fontconfig @@ -1,33 +1,7 @@ #etc/fonts -#etc/fonts/conf.avail -etc/fonts/conf.avail/10-autohint.conf -etc/fonts/conf.avail/10-no-sub-pixel.conf -etc/fonts/conf.avail/10-sub-pixel-bgr.conf -etc/fonts/conf.avail/10-sub-pixel-rgb.conf -etc/fonts/conf.avail/10-sub-pixel-vbgr.conf -etc/fonts/conf.avail/10-sub-pixel-vrgb.conf -etc/fonts/conf.avail/10-unhinted.conf -etc/fonts/conf.avail/20-fix-globaladvance.conf -etc/fonts/conf.avail/20-unhint-small-vera.conf -etc/fonts/conf.avail/25-unhint-nonlatin.conf -etc/fonts/conf.avail/30-metric-aliases.conf -etc/fonts/conf.avail/30-urw-aliases.conf -etc/fonts/conf.avail/40-nonlatin.conf -etc/fonts/conf.avail/45-latin.conf -etc/fonts/conf.avail/49-sansserif.conf -etc/fonts/conf.avail/50-user.conf -etc/fonts/conf.avail/51-local.conf -etc/fonts/conf.avail/60-latin.conf -etc/fonts/conf.avail/65-fonts-persian.conf -etc/fonts/conf.avail/65-khmer.conf -etc/fonts/conf.avail/65-nonlatin.conf -etc/fonts/conf.avail/69-unifont.conf -etc/fonts/conf.avail/70-no-bitmaps.conf -etc/fonts/conf.avail/70-yes-bitmaps.conf -etc/fonts/conf.avail/80-delicious.conf -etc/fonts/conf.avail/90-synthetic.conf #etc/fonts/conf.d -etc/fonts/conf.d/20-fix-globaladvance.conf +etc/fonts/conf.d/10-hinting-slight.conf +etc/fonts/conf.d/10-scale-bitmap-fonts.conf etc/fonts/conf.d/20-unhint-small-vera.conf etc/fonts/conf.d/30-metric-aliases.conf etc/fonts/conf.d/30-urw-aliases.conf @@ -44,208 +18,275 @@ etc/fonts/conf.d/80-delicious.conf etc/fonts/conf.d/90-synthetic.conf #etc/fonts/conf.d/README etc/fonts/fonts.conf -etc/fonts/fonts.dtd usr/bin/fc-cache usr/bin/fc-cat usr/bin/fc-list usr/bin/fc-match +usr/bin/fc-pattern +usr/bin/fc-query +usr/bin/fc-scan +usr/bin/fc-validate #usr/include/fontconfig #usr/include/fontconfig/fcfreetype.h #usr/include/fontconfig/fcprivate.h #usr/include/fontconfig/fontconfig.h -#usr/lib/libfontconfig.a #usr/lib/libfontconfig.la -usr/lib/libfontconfig.so +#usr/lib/libfontconfig.so usr/lib/libfontconfig.so.1 -usr/lib/libfontconfig.so.1.3.0 -usr/lib/pkgconfig/fontconfig.pc +usr/lib/libfontconfig.so.1.9.2 +#usr/lib/pkgconfig/fontconfig.pc #usr/share/doc/fontconfig #usr/share/doc/fontconfig/fontconfig-devel #usr/share/doc/fontconfig/fontconfig-devel.pdf #usr/share/doc/fontconfig/fontconfig-devel.txt -#usr/share/doc/fontconfig/fontconfig-devel/index.html -#usr/share/doc/fontconfig/fontconfig-devel/r1034.html -#usr/share/doc/fontconfig/fontconfig-devel/r1056.html -#usr/share/doc/fontconfig/fontconfig-devel/r108.html -#usr/share/doc/fontconfig/fontconfig-devel/r1099.html -#usr/share/doc/fontconfig/fontconfig-devel/r1127.html -#usr/share/doc/fontconfig/fontconfig-devel/r1148.html -#usr/share/doc/fontconfig/fontconfig-devel/r1171.html -#usr/share/doc/fontconfig/fontconfig-devel/r1192.html -#usr/share/doc/fontconfig/fontconfig-devel/r1237.html -#usr/share/doc/fontconfig/fontconfig-devel/r1260.html -#usr/share/doc/fontconfig/fontconfig-devel/r1283.html -#usr/share/doc/fontconfig/fontconfig-devel/r129.html -#usr/share/doc/fontconfig/fontconfig-devel/r1309.html -#usr/share/doc/fontconfig/fontconfig-devel/r1336.html -#usr/share/doc/fontconfig/fontconfig-devel/r1367.html -#usr/share/doc/fontconfig/fontconfig-devel/r1389.html -#usr/share/doc/fontconfig/fontconfig-devel/r1412.html -#usr/share/doc/fontconfig/fontconfig-devel/r1434.html -#usr/share/doc/fontconfig/fontconfig-devel/r1460.html -#usr/share/doc/fontconfig/fontconfig-devel/r1482.html -#usr/share/doc/fontconfig/fontconfig-devel/r150.html -#usr/share/doc/fontconfig/fontconfig-devel/r1505.html -#usr/share/doc/fontconfig/fontconfig-devel/r1529.html -#usr/share/doc/fontconfig/fontconfig-devel/r1552.html -#usr/share/doc/fontconfig/fontconfig-devel/r1577.html -#usr/share/doc/fontconfig/fontconfig-devel/r1602.html -#usr/share/doc/fontconfig/fontconfig-devel/r1627.html -#usr/share/doc/fontconfig/fontconfig-devel/r1652.html -#usr/share/doc/fontconfig/fontconfig-devel/r1677.html -#usr/share/doc/fontconfig/fontconfig-devel/r1699.html -#usr/share/doc/fontconfig/fontconfig-devel/r171.html -#usr/share/doc/fontconfig/fontconfig-devel/r1724.html -#usr/share/doc/fontconfig/fontconfig-devel/r1749.html -#usr/share/doc/fontconfig/fontconfig-devel/r1774.html -#usr/share/doc/fontconfig/fontconfig-devel/r1801.html -#usr/share/doc/fontconfig/fontconfig-devel/r1829.html -#usr/share/doc/fontconfig/fontconfig-devel/r1858.html -#usr/share/doc/fontconfig/fontconfig-devel/r1883.html -#usr/share/doc/fontconfig/fontconfig-devel/r1905.html -#usr/share/doc/fontconfig/fontconfig-devel/r192.html -#usr/share/doc/fontconfig/fontconfig-devel/r1927.html -#usr/share/doc/fontconfig/fontconfig-devel/r1950.html -#usr/share/doc/fontconfig/fontconfig-devel/r1976.html -#usr/share/doc/fontconfig/fontconfig-devel/r2002.html -#usr/share/doc/fontconfig/fontconfig-devel/r2032.html -#usr/share/doc/fontconfig/fontconfig-devel/r2057.html -#usr/share/doc/fontconfig/fontconfig-devel/r2081.html -#usr/share/doc/fontconfig/fontconfig-devel/r2110.html -#usr/share/doc/fontconfig/fontconfig-devel/r213.html -#usr/share/doc/fontconfig/fontconfig-devel/r2131.html -#usr/share/doc/fontconfig/fontconfig-devel/r2155.html -#usr/share/doc/fontconfig/fontconfig-devel/r2178.html -#usr/share/doc/fontconfig/fontconfig-devel/r2201.html -#usr/share/doc/fontconfig/fontconfig-devel/r2227.html -#usr/share/doc/fontconfig/fontconfig-devel/r2256.html -#usr/share/doc/fontconfig/fontconfig-devel/r2286.html -#usr/share/doc/fontconfig/fontconfig-devel/r2316.html -#usr/share/doc/fontconfig/fontconfig-devel/r234.html -#usr/share/doc/fontconfig/fontconfig-devel/r2349.html -#usr/share/doc/fontconfig/fontconfig-devel/r2370.html -#usr/share/doc/fontconfig/fontconfig-devel/r2391.html -#usr/share/doc/fontconfig/fontconfig-devel/r2413.html -#usr/share/doc/fontconfig/fontconfig-devel/r2434.html -#usr/share/doc/fontconfig/fontconfig-devel/r2456.html -#usr/share/doc/fontconfig/fontconfig-devel/r2478.html -#usr/share/doc/fontconfig/fontconfig-devel/r2501.html -#usr/share/doc/fontconfig/fontconfig-devel/r2522.html -#usr/share/doc/fontconfig/fontconfig-devel/r2544.html -#usr/share/doc/fontconfig/fontconfig-devel/r2566.html -#usr/share/doc/fontconfig/fontconfig-devel/r258.html -#usr/share/doc/fontconfig/fontconfig-devel/r2588.html -#usr/share/doc/fontconfig/fontconfig-devel/r2609.html -#usr/share/doc/fontconfig/fontconfig-devel/r2631.html -#usr/share/doc/fontconfig/fontconfig-devel/r2655.html -#usr/share/doc/fontconfig/fontconfig-devel/r2676.html -#usr/share/doc/fontconfig/fontconfig-devel/r2698.html -#usr/share/doc/fontconfig/fontconfig-devel/r2721.html -#usr/share/doc/fontconfig/fontconfig-devel/r2744.html -#usr/share/doc/fontconfig/fontconfig-devel/r2767.html -#usr/share/doc/fontconfig/fontconfig-devel/r2788.html -#usr/share/doc/fontconfig/fontconfig-devel/r279.html -#usr/share/doc/fontconfig/fontconfig-devel/r2817.html -#usr/share/doc/fontconfig/fontconfig-devel/r2842.html -#usr/share/doc/fontconfig/fontconfig-devel/r2873.html -#usr/share/doc/fontconfig/fontconfig-devel/r2911.html -#usr/share/doc/fontconfig/fontconfig-devel/r2942.html -#usr/share/doc/fontconfig/fontconfig-devel/r2969.html -#usr/share/doc/fontconfig/fontconfig-devel/r2993.html -#usr/share/doc/fontconfig/fontconfig-devel/r301.html -#usr/share/doc/fontconfig/fontconfig-devel/r3021.html -#usr/share/doc/fontconfig/fontconfig-devel/r3045.html -#usr/share/doc/fontconfig/fontconfig-devel/r3069.html -#usr/share/doc/fontconfig/fontconfig-devel/r3094.html -#usr/share/doc/fontconfig/fontconfig-devel/r3118.html -#usr/share/doc/fontconfig/fontconfig-devel/r3142.html -#usr/share/doc/fontconfig/fontconfig-devel/r3164.html -#usr/share/doc/fontconfig/fontconfig-devel/r3192.html -#usr/share/doc/fontconfig/fontconfig-devel/r3213.html -#usr/share/doc/fontconfig/fontconfig-devel/r323.html -#usr/share/doc/fontconfig/fontconfig-devel/r3234.html -#usr/share/doc/fontconfig/fontconfig-devel/r3257.html -#usr/share/doc/fontconfig/fontconfig-devel/r3283.html -#usr/share/doc/fontconfig/fontconfig-devel/r3305.html -#usr/share/doc/fontconfig/fontconfig-devel/r3327.html -#usr/share/doc/fontconfig/fontconfig-devel/r3349.html -#usr/share/doc/fontconfig/fontconfig-devel/r3371.html -#usr/share/doc/fontconfig/fontconfig-devel/r3393.html -#usr/share/doc/fontconfig/fontconfig-devel/r3414.html -#usr/share/doc/fontconfig/fontconfig-devel/r3435.html -#usr/share/doc/fontconfig/fontconfig-devel/r344.html -#usr/share/doc/fontconfig/fontconfig-devel/r3460.html -#usr/share/doc/fontconfig/fontconfig-devel/r3496.html -#usr/share/doc/fontconfig/fontconfig-devel/r3518.html -#usr/share/doc/fontconfig/fontconfig-devel/r3553.html -#usr/share/doc/fontconfig/fontconfig-devel/r3581.html -#usr/share/doc/fontconfig/fontconfig-devel/r3607.html -#usr/share/doc/fontconfig/fontconfig-devel/r3629.html -#usr/share/doc/fontconfig/fontconfig-devel/r3656.html -#usr/share/doc/fontconfig/fontconfig-devel/r3683.html -#usr/share/doc/fontconfig/fontconfig-devel/r369.html -#usr/share/doc/fontconfig/fontconfig-devel/r3708.html -#usr/share/doc/fontconfig/fontconfig-devel/r3733.html -#usr/share/doc/fontconfig/fontconfig-devel/r3755.html -#usr/share/doc/fontconfig/fontconfig-devel/r3778.html -#usr/share/doc/fontconfig/fontconfig-devel/r3805.html -#usr/share/doc/fontconfig/fontconfig-devel/r3827.html -#usr/share/doc/fontconfig/fontconfig-devel/r3852.html -#usr/share/doc/fontconfig/fontconfig-devel/r3873.html -#usr/share/doc/fontconfig/fontconfig-devel/r3898.html -#usr/share/doc/fontconfig/fontconfig-devel/r3923.html -#usr/share/doc/fontconfig/fontconfig-devel/r3948.html -#usr/share/doc/fontconfig/fontconfig-devel/r397.html -#usr/share/doc/fontconfig/fontconfig-devel/r3973.html -#usr/share/doc/fontconfig/fontconfig-devel/r3999.html -#usr/share/doc/fontconfig/fontconfig-devel/r4021.html -#usr/share/doc/fontconfig/fontconfig-devel/r4043.html -#usr/share/doc/fontconfig/fontconfig-devel/r4065.html -#usr/share/doc/fontconfig/fontconfig-devel/r4090.html -#usr/share/doc/fontconfig/fontconfig-devel/r4119.html -#usr/share/doc/fontconfig/fontconfig-devel/r4144.html -#usr/share/doc/fontconfig/fontconfig-devel/r4176.html -#usr/share/doc/fontconfig/fontconfig-devel/r418.html -#usr/share/doc/fontconfig/fontconfig-devel/r4209.html -#usr/share/doc/fontconfig/fontconfig-devel/r4245.html -#usr/share/doc/fontconfig/fontconfig-devel/r4267.html -#usr/share/doc/fontconfig/fontconfig-devel/r4289.html -#usr/share/doc/fontconfig/fontconfig-devel/r4311.html -#usr/share/doc/fontconfig/fontconfig-devel/r4334.html -#usr/share/doc/fontconfig/fontconfig-devel/r4356.html -#usr/share/doc/fontconfig/fontconfig-devel/r4380.html -#usr/share/doc/fontconfig/fontconfig-devel/r4405.html -#usr/share/doc/fontconfig/fontconfig-devel/r4430.html -#usr/share/doc/fontconfig/fontconfig-devel/r4457.html -#usr/share/doc/fontconfig/fontconfig-devel/r446.html -#usr/share/doc/fontconfig/fontconfig-devel/r4484.html -#usr/share/doc/fontconfig/fontconfig-devel/r4509.html -#usr/share/doc/fontconfig/fontconfig-devel/r4530.html -#usr/share/doc/fontconfig/fontconfig-devel/r475.html -#usr/share/doc/fontconfig/fontconfig-devel/r570.html -#usr/share/doc/fontconfig/fontconfig-devel/r600.html -#usr/share/doc/fontconfig/fontconfig-devel/r707.html -#usr/share/doc/fontconfig/fontconfig-devel/r759.html -#usr/share/doc/fontconfig/fontconfig-devel/r782.html -#usr/share/doc/fontconfig/fontconfig-devel/r807.html -#usr/share/doc/fontconfig/fontconfig-devel/r828.html -#usr/share/doc/fontconfig/fontconfig-devel/r856.html -#usr/share/doc/fontconfig/fontconfig-devel/r878.html -#usr/share/doc/fontconfig/fontconfig-devel/r902.html -#usr/share/doc/fontconfig/fontconfig-devel/r923.html -#usr/share/doc/fontconfig/fontconfig-devel/r944.html -#usr/share/doc/fontconfig/fontconfig-devel/r967.html -#usr/share/doc/fontconfig/fontconfig-devel/r999.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomiccreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicdeletenew.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomiclock.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicnewfile.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicorigfile.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicreplaceorig.html +#usr/share/doc/fontconfig/fontconfig-devel/fcatomicunlock.html +#usr/share/doc/fontconfig/fontconfig-devel/fcblanksadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fcblankscreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcblanksdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcblanksismember.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachecopyset.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachecreatetagfile.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachedir.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachenumfont.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachenumsubdir.html +#usr/share/doc/fontconfig/fontconfig-devel/fccachesubdir.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetaddchar.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetcopy.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetcount.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetcoverage.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetdelchar.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetfirstpage.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsethaschar.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetintersect.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetintersectcount.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetissubset.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetmerge.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetnew.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetnextpage.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetsubtract.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetsubtractcount.html +#usr/share/doc/fontconfig/fontconfig-devel/fccharsetunion.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigappfontadddir.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigappfontaddfile.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigappfontclear.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigbuildfonts.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigenablehome.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigfilename.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetblanks.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetcache.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetcachedirs.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetconfigdirs.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetconfigfiles.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetcurrent.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetfontdirs.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetfonts.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetrescaninterval.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiggetsysroot.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfighome.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigparseandload.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigreference.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigsetcurrent.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigsetrescaninterval.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigsetsysroot.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigsubstitute.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfigsubstitutewithpat.html +#usr/share/doc/fontconfig/fontconfig-devel/fcconfiguptodate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdefaultsubstitute.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheclean.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheload.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheloadfile.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheread.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacherescan.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheunlink.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircacheunload.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdircachevalid.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdirsave.html +#usr/share/doc/fontconfig/fontconfig-devel/fcdirscan.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfileisdir.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfilescan.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfini.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontlist.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontmatch.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontrenderprepare.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetlist.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetmatch.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetprint.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetsort.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsetsortdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfontsort.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfreetypecharindex.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfreetypecharset.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfreetypecharsetandspacing.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfreetypequery.html +#usr/share/doc/fontconfig/fontconfig-devel/fcfreetypequeryface.html +#usr/share/doc/fontconfig/fontconfig-devel/fcgetdefaultlangs.html +#usr/share/doc/fontconfig/fontconfig-devel/fcgetlangs.html +#usr/share/doc/fontconfig/fontconfig-devel/fcgetversion.html +#usr/share/doc/fontconfig/fontconfig-devel/fcinit.html +#usr/share/doc/fontconfig/fontconfig-devel/fcinitbringuptodate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcinitloadconfig.html +#usr/share/doc/fontconfig/fontconfig-devel/fcinitloadconfigandfonts.html +#usr/share/doc/fontconfig/fontconfig-devel/fcinitreinitialize.html +#usr/share/doc/fontconfig/fontconfig-devel/fcislower.html +#usr/share/doc/fontconfig/fontconfig-devel/fcisupper.html +#usr/share/doc/fontconfig/fontconfig-devel/fclanggetcharset.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangnormalize.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetcompare.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetcontains.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetcopy.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetdel.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetgetlangs.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsethash.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsethaslang.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetsubtract.html +#usr/share/doc/fontconfig/fontconfig-devel/fclangsetunion.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixcopy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixinit.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixmultiply.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixrotate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixscale.html +#usr/share/doc/fontconfig/fontconfig-devel/fcmatrixshear.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameconstant.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnamegetconstant.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnamegetobjecttype.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameparse.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameregisterconstants.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameregisterobjecttypes.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameunparse.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameunregisterconstants.html +#usr/share/doc/fontconfig/fontconfig-devel/fcnameunregisterobjecttypes.html +#usr/share/doc/fontconfig/fontconfig-devel/fcobjectsetadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fcobjectsetbuild.html +#usr/share/doc/fontconfig/fontconfig-devel/fcobjectsetcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcobjectsetdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternadd-type.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternaddweak.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternbuild.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatterncreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatterndel.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatterndestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternduplicate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternequalsubset.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternfilter.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternformat.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternget-type.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternget.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternhash.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternprint.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternreference.html +#usr/share/doc/fontconfig/fontconfig-devel/fcpatternremove.html +#usr/share/doc/fontconfig/fontconfig-devel/fcrangecopy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcrangecreatedouble.html +#usr/share/doc/fontconfig/fontconfig-devel/fcrangecreateinteger.html +#usr/share/doc/fontconfig/fontconfig-devel/fcrangedestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcrangegetdouble.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrbasename.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrcmp.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrcmpignorecase.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrcopy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrcopyfilename.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrdirname.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrdowncase.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrfree.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrlistcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrlistdone.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrlistfirst.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrlistnext.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrplus.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetadd.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetaddfilename.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetcreate.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetdel.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetdestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrsetmember.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrstr.html +#usr/share/doc/fontconfig/fontconfig-devel/fcstrstrignorecase.html +#usr/share/doc/fontconfig/fontconfig-devel/fctolower.html +#usr/share/doc/fontconfig/fontconfig-devel/fcucs4toutf8.html +#usr/share/doc/fontconfig/fontconfig-devel/fcutf16len.html +#usr/share/doc/fontconfig/fontconfig-devel/fcutf16toucs4.html +#usr/share/doc/fontconfig/fontconfig-devel/fcutf8len.html +#usr/share/doc/fontconfig/fontconfig-devel/fcutf8toucs4.html +#usr/share/doc/fontconfig/fontconfig-devel/fcvaluedestroy.html +#usr/share/doc/fontconfig/fontconfig-devel/fcvalueequal.html +#usr/share/doc/fontconfig/fontconfig-devel/fcvalueprint.html +#usr/share/doc/fontconfig/fontconfig-devel/fcvaluesave.html +#usr/share/doc/fontconfig/fontconfig-devel/fcweightfromopentype.html +#usr/share/doc/fontconfig/fontconfig-devel/fcweighttoopentype.html +#usr/share/doc/fontconfig/fontconfig-devel/ln12.html +#usr/share/doc/fontconfig/fontconfig-devel/t1.html #usr/share/doc/fontconfig/fontconfig-devel/x102.html #usr/share/doc/fontconfig/fontconfig-devel/x19.html #usr/share/doc/fontconfig/fontconfig-devel/x31.html #usr/share/doc/fontconfig/fontconfig-user.html #usr/share/doc/fontconfig/fontconfig-user.pdf #usr/share/doc/fontconfig/fontconfig-user.txt +#usr/share/fontconfig +#usr/share/fontconfig/conf.avail +#usr/share/fontconfig/conf.avail/10-autohint.conf +#usr/share/fontconfig/conf.avail/10-hinting-full.conf +#usr/share/fontconfig/conf.avail/10-hinting-medium.conf +#usr/share/fontconfig/conf.avail/10-hinting-none.conf +#usr/share/fontconfig/conf.avail/10-hinting-slight.conf +#usr/share/fontconfig/conf.avail/10-no-sub-pixel.conf +#usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.conf +#usr/share/fontconfig/conf.avail/10-sub-pixel-bgr.conf +#usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf +#usr/share/fontconfig/conf.avail/10-sub-pixel-vbgr.conf +#usr/share/fontconfig/conf.avail/10-sub-pixel-vrgb.conf +#usr/share/fontconfig/conf.avail/10-unhinted.conf +#usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf +#usr/share/fontconfig/conf.avail/11-lcdfilter-legacy.conf +#usr/share/fontconfig/conf.avail/11-lcdfilter-light.conf +#usr/share/fontconfig/conf.avail/20-unhint-small-vera.conf +#usr/share/fontconfig/conf.avail/25-unhint-nonlatin.conf +#usr/share/fontconfig/conf.avail/30-metric-aliases.conf +#usr/share/fontconfig/conf.avail/30-urw-aliases.conf +#usr/share/fontconfig/conf.avail/40-nonlatin.conf +#usr/share/fontconfig/conf.avail/45-latin.conf +#usr/share/fontconfig/conf.avail/49-sansserif.conf +#usr/share/fontconfig/conf.avail/50-user.conf +#usr/share/fontconfig/conf.avail/51-local.conf +#usr/share/fontconfig/conf.avail/60-latin.conf +#usr/share/fontconfig/conf.avail/65-fonts-persian.conf +#usr/share/fontconfig/conf.avail/65-khmer.conf +#usr/share/fontconfig/conf.avail/65-nonlatin.conf +#usr/share/fontconfig/conf.avail/69-unifont.conf +#usr/share/fontconfig/conf.avail/70-no-bitmaps.conf +#usr/share/fontconfig/conf.avail/70-yes-bitmaps.conf +#usr/share/fontconfig/conf.avail/80-delicious.conf +#usr/share/fontconfig/conf.avail/90-synthetic.conf #usr/share/man/man1/fc-cache.1 #usr/share/man/man1/fc-cat.1 #usr/share/man/man1/fc-list.1 #usr/share/man/man1/fc-match.1 +#usr/share/man/man1/fc-pattern.1 +#usr/share/man/man1/fc-query.1 +#usr/share/man/man1/fc-scan.1 +#usr/share/man/man1/fc-validate.1 #usr/share/man/man3/FcAtomicCreate.3 #usr/share/man/man3/FcAtomicDeleteNew.3 #usr/share/man/man3/FcAtomicDestroy.3 @@ -259,6 +300,7 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcBlanksDestroy.3 #usr/share/man/man3/FcBlanksIsMember.3 #usr/share/man/man3/FcCacheCopySet.3 +#usr/share/man/man3/FcCacheCreateTagFile.3 #usr/share/man/man3/FcCacheDir.3 #usr/share/man/man3/FcCacheNumFont.3 #usr/share/man/man3/FcCacheNumSubdir.3 @@ -268,6 +310,7 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcCharSetCount.3 #usr/share/man/man3/FcCharSetCoverage.3 #usr/share/man/man3/FcCharSetCreate.3 +#usr/share/man/man3/FcCharSetDelChar.3 #usr/share/man/man3/FcCharSetDestroy.3 #usr/share/man/man3/FcCharSetEqual.3 #usr/share/man/man3/FcCharSetFirstPage.3 @@ -275,6 +318,7 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcCharSetIntersect.3 #usr/share/man/man3/FcCharSetIntersectCount.3 #usr/share/man/man3/FcCharSetIsSubset.3 +#usr/share/man/man3/FcCharSetMerge.3 #usr/share/man/man3/FcCharSetNew.3 #usr/share/man/man3/FcCharSetNextPage.3 #usr/share/man/man3/FcCharSetSubtract.3 @@ -297,17 +341,22 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcConfigGetFontDirs.3 #usr/share/man/man3/FcConfigGetFonts.3 #usr/share/man/man3/FcConfigGetRescanInterval.3 +#usr/share/man/man3/FcConfigGetSysRoot.3 #usr/share/man/man3/FcConfigHome.3 #usr/share/man/man3/FcConfigParseAndLoad.3 +#usr/share/man/man3/FcConfigReference.3 #usr/share/man/man3/FcConfigSetCurrent.3 #usr/share/man/man3/FcConfigSetRescanInterval.3 +#usr/share/man/man3/FcConfigSetSysRoot.3 #usr/share/man/man3/FcConfigSubstitute.3 #usr/share/man/man3/FcConfigSubstituteWithPat.3 #usr/share/man/man3/FcConfigUptoDate.3 #usr/share/man/man3/FcDefaultSubstitute.3 +#usr/share/man/man3/FcDirCacheClean.3 #usr/share/man/man3/FcDirCacheLoad.3 #usr/share/man/man3/FcDirCacheLoadFile.3 #usr/share/man/man3/FcDirCacheRead.3 +#usr/share/man/man3/FcDirCacheRescan.3 #usr/share/man/man3/FcDirCacheUnlink.3 #usr/share/man/man3/FcDirCacheUnload.3 #usr/share/man/man3/FcDirCacheValid.3 @@ -333,6 +382,7 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcFreeTypeCharSetAndSpacing.3 #usr/share/man/man3/FcFreeTypeQuery.3 #usr/share/man/man3/FcFreeTypeQueryFace.3 +#usr/share/man/man3/FcGetDefaultLangs.3 #usr/share/man/man3/FcGetLangs.3 #usr/share/man/man3/FcGetVersion.3 #usr/share/man/man3/FcInit.3 @@ -343,15 +393,20 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcIsLower.3 #usr/share/man/man3/FcIsUpper.3 #usr/share/man/man3/FcLangGetCharSet.3 +#usr/share/man/man3/FcLangNormalize.3 #usr/share/man/man3/FcLangSetAdd.3 #usr/share/man/man3/FcLangSetCompare.3 #usr/share/man/man3/FcLangSetContains.3 #usr/share/man/man3/FcLangSetCopy.3 #usr/share/man/man3/FcLangSetCreate.3 +#usr/share/man/man3/FcLangSetDel.3 #usr/share/man/man3/FcLangSetDestroy.3 #usr/share/man/man3/FcLangSetEqual.3 +#usr/share/man/man3/FcLangSetGetLangs.3 #usr/share/man/man3/FcLangSetHasLang.3 #usr/share/man/man3/FcLangSetHash.3 +#usr/share/man/man3/FcLangSetSubtract.3 +#usr/share/man/man3/FcLangSetUnion.3 #usr/share/man/man3/FcMatrixCopy.3 #usr/share/man/man3/FcMatrixEqual.3 #usr/share/man/man3/FcMatrixInit.3 @@ -382,21 +437,30 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcPatternDuplicate.3 #usr/share/man/man3/FcPatternEqual.3 #usr/share/man/man3/FcPatternEqualSubset.3 +#usr/share/man/man3/FcPatternFilter.3 +#usr/share/man/man3/FcPatternFormat.3 #usr/share/man/man3/FcPatternGet-Type.3 #usr/share/man/man3/FcPatternGet.3 #usr/share/man/man3/FcPatternHash.3 #usr/share/man/man3/FcPatternPrint.3 #usr/share/man/man3/FcPatternReference.3 #usr/share/man/man3/FcPatternRemove.3 +#usr/share/man/man3/FcRangeCopy.3 +#usr/share/man/man3/FcRangeCreateDouble.3 +#usr/share/man/man3/FcRangeCreateInteger.3 +#usr/share/man/man3/FcRangeDestroy.3 +#usr/share/man/man3/FcRangeGetDouble.3 #usr/share/man/man3/FcStrBasename.3 #usr/share/man/man3/FcStrCmp.3 #usr/share/man/man3/FcStrCmpIgnoreCase.3 #usr/share/man/man3/FcStrCopy.3 #usr/share/man/man3/FcStrCopyFilename.3 +#usr/share/man/man3/FcStrDirname.3 #usr/share/man/man3/FcStrDowncase.3 #usr/share/man/man3/FcStrFree.3 #usr/share/man/man3/FcStrListCreate.3 #usr/share/man/man3/FcStrListDone.3 +#usr/share/man/man3/FcStrListFirst.3 #usr/share/man/man3/FcStrListNext.3 #usr/share/man/man3/FcStrPlus.3 #usr/share/man/man3/FcStrSetAdd.3 @@ -418,7 +482,11 @@ usr/lib/pkgconfig/fontconfig.pc #usr/share/man/man3/FcValueEqual.3 #usr/share/man/man3/FcValuePrint.3 #usr/share/man/man3/FcValueSave.3 +#usr/share/man/man3/FcWeightFromOpenType.3 +#usr/share/man/man3/FcWeightToOpenType.3 #usr/share/man/man5/fonts-conf.5 -#usr/var -#usr/var/cache -usr/var/cache/fontconfig +#usr/share/xml +#usr/share/xml/fontconfig +usr/share/xml/fontconfig/fonts.dtd +var/cache/fontconfig +var/cache/fontconfig/CACHEDIR.TAG diff --git a/lfs/fontconfig b/lfs/fontconfig index 6f0850be7..786702248 100644 --- a/lfs/fontconfig +++ b/lfs/fontconfig @@ -24,7 +24,7 @@ include Config -VER = 2.5.91 +VER = 2.12.1 THISAPP = fontconfig-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ff5536b58e91a034ed18e7d53e04a689 +$(DL_FILE)_MD5 = ce55e525c37147eee14cc2de6cc09f6c install : $(TARGET) @@ -70,7 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From 2a54bc30b955ba8b157e3b1e6fc4dd9abb643730 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:02:41 +0000 Subject: [PATCH 097/464] cairo: Update to 1.14.8 Signed-off-by: Michael Tremer --- config/rootfiles/common/cairo | 24 +++++++++++++++++------- lfs/cairo | 11 ++++++----- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/config/rootfiles/common/cairo b/config/rootfiles/common/cairo index ca09099eb..12934cead 100644 --- a/config/rootfiles/common/cairo +++ b/config/rootfiles/common/cairo @@ -7,36 +7,38 @@ #usr/include/cairo/cairo-pdf.h #usr/include/cairo/cairo-ps.h #usr/include/cairo/cairo-script-interpreter.h +#usr/include/cairo/cairo-script.h #usr/include/cairo/cairo-svg.h #usr/include/cairo/cairo-version.h #usr/include/cairo/cairo.h #usr/lib/cairo #usr/lib/cairo/libcairo-trace.a #usr/lib/cairo/libcairo-trace.la -usr/lib/cairo/libcairo-trace.so +#usr/lib/cairo/libcairo-trace.so usr/lib/cairo/libcairo-trace.so.0 usr/lib/cairo/libcairo-trace.so.0.0.0 #usr/lib/libcairo-gobject.a #usr/lib/libcairo-gobject.la -usr/lib/libcairo-gobject.so +#usr/lib/libcairo-gobject.so usr/lib/libcairo-gobject.so.2 -usr/lib/libcairo-gobject.so.2.11000.2 +usr/lib/libcairo-gobject.so.2.11400.8 #usr/lib/libcairo-script-interpreter.a #usr/lib/libcairo-script-interpreter.la -usr/lib/libcairo-script-interpreter.so +#usr/lib/libcairo-script-interpreter.so usr/lib/libcairo-script-interpreter.so.2 -usr/lib/libcairo-script-interpreter.so.2.11000.2 +usr/lib/libcairo-script-interpreter.so.2.11400.8 #usr/lib/libcairo.a #usr/lib/libcairo.la #usr/lib/libcairo.so usr/lib/libcairo.so.2 -usr/lib/libcairo.so.2.11000.2 +usr/lib/libcairo.so.2.11400.8 #usr/lib/pkgconfig/cairo-fc.pc #usr/lib/pkgconfig/cairo-ft.pc #usr/lib/pkgconfig/cairo-gobject.pc #usr/lib/pkgconfig/cairo-pdf.pc #usr/lib/pkgconfig/cairo-png.pc #usr/lib/pkgconfig/cairo-ps.pc +#usr/lib/pkgconfig/cairo-script.pc #usr/lib/pkgconfig/cairo-svg.pc #usr/lib/pkgconfig/cairo.pc #usr/share/gtk-doc/html/cairo @@ -58,16 +60,20 @@ usr/lib/libcairo.so.2.11000.2 #usr/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html #usr/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html #usr/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Raster-Sources.html #usr/share/gtk-doc/html/cairo/cairo-Recording-Surfaces.html #usr/share/gtk-doc/html/cairo/cairo-Regions.html #usr/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-Script-Surfaces.html #usr/share/gtk-doc/html/cairo/cairo-Transformations.html #usr/share/gtk-doc/html/cairo/cairo-Types.html #usr/share/gtk-doc/html/cairo/cairo-User-Fonts.html #usr/share/gtk-doc/html/cairo/cairo-Version-Information.html #usr/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html #usr/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-XCB-Surfaces.html #usr/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +#usr/share/gtk-doc/html/cairo/cairo-XLib-XRender-Backend.html #usr/share/gtk-doc/html/cairo/cairo-cairo-device-t.html #usr/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html #usr/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html @@ -81,10 +87,11 @@ usr/lib/libcairo.so.2.11000.2 #usr/share/gtk-doc/html/cairo/cairo-support.html #usr/share/gtk-doc/html/cairo/cairo-surfaces.html #usr/share/gtk-doc/html/cairo/cairo-text.html -#usr/share/gtk-doc/html/cairo/cairo.devhelp #usr/share/gtk-doc/html/cairo/cairo.devhelp2 #usr/share/gtk-doc/html/cairo/home.png #usr/share/gtk-doc/html/cairo/index-1.10.html +#usr/share/gtk-doc/html/cairo/index-1.12.html +#usr/share/gtk-doc/html/cairo/index-1.14.html #usr/share/gtk-doc/html/cairo/index-1.2.html #usr/share/gtk-doc/html/cairo/index-1.4.html #usr/share/gtk-doc/html/cairo/index-1.6.html @@ -93,7 +100,10 @@ usr/lib/libcairo.so.2.11000.2 #usr/share/gtk-doc/html/cairo/index.html #usr/share/gtk-doc/html/cairo/index.sgml #usr/share/gtk-doc/html/cairo/language-bindings.html +#usr/share/gtk-doc/html/cairo/left-insensitive.png #usr/share/gtk-doc/html/cairo/left.png +#usr/share/gtk-doc/html/cairo/right-insensitive.png #usr/share/gtk-doc/html/cairo/right.png #usr/share/gtk-doc/html/cairo/style.css +#usr/share/gtk-doc/html/cairo/up-insensitive.png #usr/share/gtk-doc/html/cairo/up.png diff --git a/lfs/cairo b/lfs/cairo index 591549ab3..a5772af72 100644 --- a/lfs/cairo +++ b/lfs/cairo @@ -24,10 +24,10 @@ include Config -VER = 1.10.2 +VER = 1.14.8 THISAPP = cairo-$(VER) -DL_FILE = $(THISAPP).tar.gz +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f101a9e88b783337b20b2e26dfd26d5f +$(DL_FILE)_MD5 = 4ef0db2eacb271c74f8a3fd87822aa98 install : $(TARGET) @@ -69,8 +69,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-win32 --disable-os2 --disable-beos + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr \ + --disable-win32 --disable-os2 --disable-beos cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From e8689bfac85b09c3cdf5565c10c2e33de3f0694a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:10:14 +0000 Subject: [PATCH 098/464] Build avahi before CUPS so that CUPS can depend on it Signed-off-by: Michael Tremer --- make.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/make.sh b/make.sh index cf27c236c..a134cb87a 100755 --- a/make.sh +++ b/make.sh @@ -645,6 +645,9 @@ buildipfire() { ipfiremake pammysql ipfiremake mpage ipfiremake dbus + ipfiremake intltool + ipfiremake libdaemon + ipfiremake avahi ipfiremake cups ipfiremake ghostscript ipfiremake foomatic @@ -811,7 +814,6 @@ buildipfire() { ipfiremake python-lzma ipfiremake python-progressbar ipfiremake python-xattr - ipfiremake intltool ipfiremake ddns ipfiremake transmission ipfiremake dpfhack @@ -830,8 +832,6 @@ buildipfire() { ipfiremake libstatgrab ipfiremake sarg ipfiremake check_mk_agent - ipfiremake libdaemon - ipfiremake avahi ipfiremake nginx ipfiremake sendEmail ipfiremake sysbench From bdd2de73285cd08af4e762bd0ad258a10edf2940 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:11:11 +0000 Subject: [PATCH 099/464] epson-inkjet-printer-escpr: New package Supports plenty of EPSON printers Signed-off-by: Michael Tremer --- .../packages/epson-inkjet-printer-escpr | 514 ++++++++++++++++++ lfs/epson-inkjet-printer-escpr | 86 +++ make.sh | 1 + 3 files changed, 601 insertions(+) create mode 100644 config/rootfiles/packages/epson-inkjet-printer-escpr create mode 100644 lfs/epson-inkjet-printer-escpr diff --git a/config/rootfiles/packages/epson-inkjet-printer-escpr b/config/rootfiles/packages/epson-inkjet-printer-escpr new file mode 100644 index 000000000..782000c14 --- /dev/null +++ b/config/rootfiles/packages/epson-inkjet-printer-escpr @@ -0,0 +1,514 @@ +usr/lib/cups/filter/epson-escpr +usr/lib/cups/filter/epson-escpr-wrapper +#usr/lib/libescpr.a +#usr/lib/libescpr.la +#usr/lib/libescpr.so +usr/lib/libescpr.so.1 +usr/lib/libescpr.so.1.0.0 +usr/share/ppd/Epson +#usr/share/ppd/Epson/epson-inkjet-printer-escpr +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_1430-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_630-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_710-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_720-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_730-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_810-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_830-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Artisan_837-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-150-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-330-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-330S-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-340-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-350-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-360_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-370_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-500-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-520-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-530-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-600-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-720-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-810-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-820-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-830_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-840_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-E-850_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-10VA_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-306_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-30VA_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-4004-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-702A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-703A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-704A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-705A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-706A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-707A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-708A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-709A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-774A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-775A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-776A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-777A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-801A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-802A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-803A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-804A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-805A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-806A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-807A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-808A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-901A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-901F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-902A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-903A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-903F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-904A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-904F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-905A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-905F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-906F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-907F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-976A3_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-977A3_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-978A3_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-979A3_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EP-M570T_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-16500_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-2500_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-2550_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-2600_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-2650_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-4500_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ET-4550_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-EW-M660FT_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-K200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-K300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L1455_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L364_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L375_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L380_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L382_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L385_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L386_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L395_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L455_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L475_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L485_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L486_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L495_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L565_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L575_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L605_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L655_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L805_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L810_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-L850_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-M200_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-M205_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME-301_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME-303_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME-400_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_510-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_520-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_530-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_560W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_570-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_620F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_650FN-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_700FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_900WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_940FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_OFFICE_960FWD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-ME_Office_600F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-NX230_TX230-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-NX430_TX435-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PF-70_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PF-71_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PF-81_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-400_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A750-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A820-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A840-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A840S-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A890-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A920-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A940-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A950-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-A970-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-D600-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-D800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-D870-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-G4500-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-G850-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-T960-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PM-T990-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-046A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-047A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-048A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-049A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-1600F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-1700F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-205_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-404A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-405A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-434A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-435A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-436A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-437A_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-501A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-502A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-503A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-504A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-505F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-535F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-5600-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-5V-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-601F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-602F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-603F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-605F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-673F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-675F_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-7V-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-A620-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-A640-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-A650-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-A720-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-A740-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-B700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-B750F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-FA700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-G5300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M160T_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M350F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M5040F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M5041F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M650A-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M650F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M7050FP-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M7050FX-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M7050_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M740F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M741F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M840F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M840FX-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-M860F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S05_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S160T_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S350-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S5040-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S7050PS-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S7050X-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S7050_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S740-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S840-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S840X-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PX-S860-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_500-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_Deluxe-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_Express-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_210-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_215-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_225-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_235-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_240-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_245-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_250-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_260-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_270-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_280-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_290-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-PictureMate_PM_310-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX2800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX2900-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX3700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX3800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX3900-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX4200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX4800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX4900-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX5000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX5900-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX6000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX7300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX7400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX7700-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX7800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX8300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX8400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX9300F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_CX9400Fax-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX3800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX4000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX4200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX4800-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX5000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX7400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX8400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_DX9400F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX210-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX230-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX300-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX330-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX410-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX420-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX430-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX510-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX530-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX620-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_NX635-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX300F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX305-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX305_Plus-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX310FN-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX320FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX525WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX535WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX600FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX610FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX620FWD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX630FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX635FWD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX925-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_BX935-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX300F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX320F-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX510FN-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX515FN-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX525FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX600FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX610FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Office_TX620FWD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_1400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_1410-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_1430-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_1500-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX650-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX660-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX700W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX710W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX720WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX730-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX800FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX810FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX820FWD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_PX830-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R1900-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R2000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R240-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R250-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R260-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R265-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R270-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R2880-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R3000-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R340-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R350-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R360-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R380-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_R390-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX520-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX530-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX560-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX580-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX585-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX590-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX595-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX610-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX640-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX650-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX680-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX685-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_RX690-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX650-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX700W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX710W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX720WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX730-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX800FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_Photo_TX810FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX210-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX218-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX230-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX235-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX410-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX420W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX430-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX440-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX510W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX525WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX535WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX600FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX610FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_SX620FW-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX200-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX210-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX220-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX230-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX235-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX400-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX410-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX420W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX430-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX550W-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-Stylus_TX560WD-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-TX220_NX220-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-TX320_WorkForce320-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-TX420_NX420-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-TX720_Artisan720-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-TX820_Artisan830-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-100_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2510_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2520_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2530_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2540_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2630_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2650_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2660_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2750_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-2760_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3010_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3520_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3530_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3540_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3620_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-3640_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-4630_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-4640_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-5110_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-5190_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-5620_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-5690_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-6090_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-6530-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-6590_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7110_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7510_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7511_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7515_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7520_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7521_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7525_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7610_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-7620_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-8010_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-8090_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-8510_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-8590_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-M1560_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-M5190_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-M5690_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-R4640_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-R5190_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-R5690_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WF-R8590_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4010_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4011_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4015_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4020_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4022_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4023_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4025_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4090_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4091_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4092_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4095_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4511_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4515_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4520_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4521_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4525_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4530_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4531_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4532_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4533_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4535_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4540_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4545_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4590_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4592_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-4595_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4011_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4015_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4095_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4521_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4525_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WP-M4595_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_310-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_320-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_435-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_500-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_520-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_545-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_600-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_610-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_620-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_630-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_645-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_840-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-WorkForce_845-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-200_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-201_204_208_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-202_203_206_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-205_207_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-211_214_216_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-212_213_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-215_217_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-220_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-225_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-235_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-240_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-243_245_247_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-300_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-302_303_305_306_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-310_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-312_313_315_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-320_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-322_323_325_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-330_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-332_335_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-342_343_345_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-400_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-402_403_405_406_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-410_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-412_413_415_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-420_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-422_423_425_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-430_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-432_435_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-440_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-442_445_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-510_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-520_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-530_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-55_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-600_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-610_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-620_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-630_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-700_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-710_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-720_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-750_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-760_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-800_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-810_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-820_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-830_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-850_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-860_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-900_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-950_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-960_Series-epson-escpr-en.ppd diff --git a/lfs/epson-inkjet-printer-escpr b/lfs/epson-inkjet-printer-escpr new file mode 100644 index 000000000..d4f081f4f --- /dev/null +++ b/lfs/epson-inkjet-printer-escpr @@ -0,0 +1,86 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.6.11 +LSB = 1lsb3.2 + +THISAPP = epson-inkjet-printer-escpr-$(VER) +DL_FILE = $(THISAPP)-$(LSB).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = epson-inkjet-printer-escpr +PAK_VER = 1 + +DEPS = "cups" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = ab143fb1c044e6190ca147027c530cfa + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) + cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc + cd $(DIR_APP) && make # doesn't support parallel build + cd $(DIR_APP) && make install CUPS_PPD_DIR=/usr/share/ppd/Epson + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index a134cb87a..659d8c22e 100755 --- a/make.sh +++ b/make.sh @@ -650,6 +650,7 @@ buildipfire() { ipfiremake avahi ipfiremake cups ipfiremake ghostscript + ipfiremake epson-inkjet-printer-escpr ipfiremake foomatic ipfiremake hplip ipfiremake cifs-utils From 460a510b169b85c818af94eeb78b4ba691d9a107 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:12:35 +0000 Subject: [PATCH 100/464] lcms2: New package Image processing library Signed-off-by: Michael Tremer --- config/rootfiles/common/lcms2 | 15 +++++++ lfs/lcms2 | 77 +++++++++++++++++++++++++++++++++++ make.sh | 1 + 3 files changed, 93 insertions(+) create mode 100644 config/rootfiles/common/lcms2 create mode 100644 lfs/lcms2 diff --git a/config/rootfiles/common/lcms2 b/config/rootfiles/common/lcms2 new file mode 100644 index 000000000..2ea591550 --- /dev/null +++ b/config/rootfiles/common/lcms2 @@ -0,0 +1,15 @@ +#usr/bin/jpgicc +#usr/bin/linkicc +#usr/bin/psicc +#usr/bin/tificc +#usr/bin/transicc +#usr/include/lcms2.h +#usr/include/lcms2_plugin.h +#usr/lib/liblcms2.a +#usr/lib/liblcms2.la +#usr/lib/liblcms2.so +usr/lib/liblcms2.so.2 +usr/lib/liblcms2.so.2.0.8 +#usr/lib/pkgconfig/lcms2.pc +#usr/share/man/man1/jpgicc.1 +#usr/share/man/man1/tificc.1 diff --git a/lfs/lcms2 b/lfs/lcms2 new file mode 100644 index 000000000..72090220c --- /dev/null +++ b/lfs/lcms2 @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2016 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.8 + +THISAPP = lcms2-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 87a5913f1a52464190bb655ad230539c + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 659d8c22e..628f3f80c 100755 --- a/make.sh +++ b/make.sh @@ -650,6 +650,7 @@ buildipfire() { ipfiremake avahi ipfiremake cups ipfiremake ghostscript + ipfiremake lcms2 ipfiremake epson-inkjet-printer-escpr ipfiremake foomatic ipfiremake hplip From ee072e104cf147338893ce2e845044da1af3b594 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:14:22 +0000 Subject: [PATCH 101/464] qpdf: New package PDF rendering library Signed-off-by: Michael Tremer --- config/rootfiles/common/qpdf | 44 +++++++++++++++++++++ lfs/qpdf | 77 ++++++++++++++++++++++++++++++++++++ make.sh | 1 + 3 files changed, 122 insertions(+) create mode 100644 config/rootfiles/common/qpdf create mode 100644 lfs/qpdf diff --git a/config/rootfiles/common/qpdf b/config/rootfiles/common/qpdf new file mode 100644 index 000000000..9776c1627 --- /dev/null +++ b/config/rootfiles/common/qpdf @@ -0,0 +1,44 @@ +usr/bin/fix-qdf +usr/bin/qpdf +#usr/bin/zlib-flate +#usr/include/qpdf +#usr/include/qpdf/Buffer.hh +#usr/include/qpdf/BufferInputSource.hh +#usr/include/qpdf/Constants.h +#usr/include/qpdf/DLL.h +#usr/include/qpdf/FileInputSource.hh +#usr/include/qpdf/InputSource.hh +#usr/include/qpdf/Pipeline.hh +#usr/include/qpdf/Pl_Buffer.hh +#usr/include/qpdf/Pl_Concatenate.hh +#usr/include/qpdf/Pl_Count.hh +#usr/include/qpdf/Pl_Discard.hh +#usr/include/qpdf/Pl_Flate.hh +#usr/include/qpdf/Pl_StdioFile.hh +#usr/include/qpdf/PointerHolder.hh +#usr/include/qpdf/QPDF.hh +#usr/include/qpdf/QPDFExc.hh +#usr/include/qpdf/QPDFObjGen.hh +#usr/include/qpdf/QPDFObject.hh +#usr/include/qpdf/QPDFObjectHandle.hh +#usr/include/qpdf/QPDFTokenizer.hh +#usr/include/qpdf/QPDFWriter.hh +#usr/include/qpdf/QPDFXRefEntry.hh +#usr/include/qpdf/QTC.hh +#usr/include/qpdf/QUtil.hh +#usr/include/qpdf/RandomDataProvider.hh +#usr/include/qpdf/Types.h +#usr/include/qpdf/qpdf-c.h +#usr/lib/libqpdf.a +#usr/lib/libqpdf.la +#usr/lib/libqpdf.so +usr/lib/libqpdf.so.17 +usr/lib/libqpdf.so.17.0.0 +#usr/lib/pkgconfig/libqpdf.pc +#usr/share/doc/qpdf +#usr/share/doc/qpdf/qpdf-manual.html +#usr/share/doc/qpdf/qpdf-manual.pdf +#usr/share/doc/qpdf/stylesheet.css +#usr/share/man/man1/fix-qdf.1 +#usr/share/man/man1/qpdf.1 +#usr/share/man/man1/zlib-flate.1 diff --git a/lfs/qpdf b/lfs/qpdf new file mode 100644 index 000000000..44cd23fe8 --- /dev/null +++ b/lfs/qpdf @@ -0,0 +1,77 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2016 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 6.0.0 + +THISAPP = qpdf-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = e014bd3ecf1c4d1a520bbc14d84ac20e + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 628f3f80c..a30ed2c36 100755 --- a/make.sh +++ b/make.sh @@ -651,6 +651,7 @@ buildipfire() { ipfiremake cups ipfiremake ghostscript ipfiremake lcms2 + ipfiremake qpdf ipfiremake epson-inkjet-printer-escpr ipfiremake foomatic ipfiremake hplip From 5f8203b2bdb8fbba0258736c6e049e0ecac5f5b2 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:16:09 +0000 Subject: [PATCH 102/464] poppler: New package PDF rendering library Signed-off-by: Michael Tremer --- config/rootfiles/common/poppler | 174 ++++++++++++++++++++++++++++++++ lfs/poppler | 85 ++++++++++++++++ make.sh | 1 + 3 files changed, 260 insertions(+) create mode 100644 config/rootfiles/common/poppler create mode 100644 lfs/poppler diff --git a/config/rootfiles/common/poppler b/config/rootfiles/common/poppler new file mode 100644 index 000000000..6a2126183 --- /dev/null +++ b/config/rootfiles/common/poppler @@ -0,0 +1,174 @@ +usr/bin/pdfdetach +usr/bin/pdffonts +usr/bin/pdfimages +usr/bin/pdfinfo +usr/bin/pdfseparate +usr/bin/pdftocairo +usr/bin/pdftohtml +usr/bin/pdftoppm +usr/bin/pdftops +usr/bin/pdftotext +usr/bin/pdfunite +#usr/include/poppler +#usr/include/poppler/Annot.h +#usr/include/poppler/Array.h +#usr/include/poppler/BuiltinFont.h +#usr/include/poppler/BuiltinFontTables.h +#usr/include/poppler/CMap.h +#usr/include/poppler/CachedFile.h +#usr/include/poppler/Catalog.h +#usr/include/poppler/CharCodeToUnicode.h +#usr/include/poppler/CharTypes.h +#usr/include/poppler/CompactFontTables.h +#usr/include/poppler/DateInfo.h +#usr/include/poppler/Decrypt.h +#usr/include/poppler/Dict.h +#usr/include/poppler/Error.h +#usr/include/poppler/ErrorCodes.h +#usr/include/poppler/FileSpec.h +#usr/include/poppler/FontEncodingTables.h +#usr/include/poppler/FontInfo.h +#usr/include/poppler/Form.h +#usr/include/poppler/Function.h +#usr/include/poppler/Gfx.h +#usr/include/poppler/GfxFont.h +#usr/include/poppler/GfxState.h +#usr/include/poppler/GfxState_helpers.h +#usr/include/poppler/GlobalParams.h +#usr/include/poppler/Hints.h +#usr/include/poppler/JArithmeticDecoder.h +#usr/include/poppler/JBIG2Stream.h +#usr/include/poppler/Lexer.h +#usr/include/poppler/Linearization.h +#usr/include/poppler/Link.h +#usr/include/poppler/LocalPDFDocBuilder.h +#usr/include/poppler/MarkedContentOutputDev.h +#usr/include/poppler/Movie.h +#usr/include/poppler/NameToCharCode.h +#usr/include/poppler/NameToUnicodeTable.h +#usr/include/poppler/Object.h +#usr/include/poppler/OptionalContent.h +#usr/include/poppler/Outline.h +#usr/include/poppler/OutputDev.h +#usr/include/poppler/PDFDoc.h +#usr/include/poppler/PDFDocBuilder.h +#usr/include/poppler/PDFDocEncoding.h +#usr/include/poppler/PDFDocFactory.h +#usr/include/poppler/PSOutputDev.h +#usr/include/poppler/PSTokenizer.h +#usr/include/poppler/Page.h +#usr/include/poppler/PageTransition.h +#usr/include/poppler/Parser.h +#usr/include/poppler/PopplerCache.h +#usr/include/poppler/PreScanOutputDev.h +#usr/include/poppler/ProfileData.h +#usr/include/poppler/Rendition.h +#usr/include/poppler/SecurityHandler.h +#usr/include/poppler/SignatureInfo.h +#usr/include/poppler/Sound.h +#usr/include/poppler/SplashOutputDev.h +#usr/include/poppler/StdinCachedFile.h +#usr/include/poppler/StdinPDFDocBuilder.h +#usr/include/poppler/Stream-CCITT.h +#usr/include/poppler/Stream.h +#usr/include/poppler/StructElement.h +#usr/include/poppler/StructTreeRoot.h +#usr/include/poppler/TextOutputDev.h +#usr/include/poppler/UTF.h +#usr/include/poppler/UTF8.h +#usr/include/poppler/UnicodeCClassTables.h +#usr/include/poppler/UnicodeCompTables.h +#usr/include/poppler/UnicodeDecompTables.h +#usr/include/poppler/UnicodeMap.h +#usr/include/poppler/UnicodeMapTables.h +#usr/include/poppler/UnicodeTypeTable.h +#usr/include/poppler/ViewerPreferences.h +#usr/include/poppler/XRef.h +#usr/include/poppler/XpdfPluginAPI.h +#usr/include/poppler/cpp +#usr/include/poppler/cpp/poppler-document.h +#usr/include/poppler/cpp/poppler-embedded-file.h +#usr/include/poppler/cpp/poppler-font.h +#usr/include/poppler/cpp/poppler-global.h +#usr/include/poppler/cpp/poppler-image.h +#usr/include/poppler/cpp/poppler-page-renderer.h +#usr/include/poppler/cpp/poppler-page-transition.h +#usr/include/poppler/cpp/poppler-page.h +#usr/include/poppler/cpp/poppler-rectangle.h +#usr/include/poppler/cpp/poppler-toc.h +#usr/include/poppler/cpp/poppler-version.h +#usr/include/poppler/fofi +#usr/include/poppler/fofi/FoFiBase.h +#usr/include/poppler/fofi/FoFiEncodings.h +#usr/include/poppler/fofi/FoFiIdentifier.h +#usr/include/poppler/fofi/FoFiTrueType.h +#usr/include/poppler/fofi/FoFiType1.h +#usr/include/poppler/fofi/FoFiType1C.h +#usr/include/poppler/goo +#usr/include/poppler/goo/FixedPoint.h +#usr/include/poppler/goo/GooHash.h +#usr/include/poppler/goo/GooLikely.h +#usr/include/poppler/goo/GooList.h +#usr/include/poppler/goo/GooMutex.h +#usr/include/poppler/goo/GooString.h +#usr/include/poppler/goo/GooTimer.h +#usr/include/poppler/goo/ImgWriter.h +#usr/include/poppler/goo/JpegWriter.h +#usr/include/poppler/goo/NetPBMWriter.h +#usr/include/poppler/goo/PNGWriter.h +#usr/include/poppler/goo/TiffWriter.h +#usr/include/poppler/goo/gfile.h +#usr/include/poppler/goo/gmem.h +#usr/include/poppler/goo/grandom.h +#usr/include/poppler/goo/gstrtod.h +#usr/include/poppler/goo/gtypes.h +#usr/include/poppler/poppler-config.h +#usr/include/poppler/splash +#usr/include/poppler/splash/Splash.h +#usr/include/poppler/splash/SplashBitmap.h +#usr/include/poppler/splash/SplashClip.h +#usr/include/poppler/splash/SplashErrorCodes.h +#usr/include/poppler/splash/SplashFTFont.h +#usr/include/poppler/splash/SplashFTFontEngine.h +#usr/include/poppler/splash/SplashFTFontFile.h +#usr/include/poppler/splash/SplashFont.h +#usr/include/poppler/splash/SplashFontEngine.h +#usr/include/poppler/splash/SplashFontFile.h +#usr/include/poppler/splash/SplashFontFileID.h +#usr/include/poppler/splash/SplashGlyphBitmap.h +#usr/include/poppler/splash/SplashMath.h +#usr/include/poppler/splash/SplashPath.h +#usr/include/poppler/splash/SplashPattern.h +#usr/include/poppler/splash/SplashScreen.h +#usr/include/poppler/splash/SplashState.h +#usr/include/poppler/splash/SplashT1Font.h +#usr/include/poppler/splash/SplashT1FontEngine.h +#usr/include/poppler/splash/SplashT1FontFile.h +#usr/include/poppler/splash/SplashTypes.h +#usr/include/poppler/splash/SplashXPath.h +#usr/include/poppler/splash/SplashXPathScanner.h +#usr/lib/libpoppler-cpp.a +#usr/lib/libpoppler-cpp.la +#usr/lib/libpoppler-cpp.so +usr/lib/libpoppler-cpp.so.0 +usr/lib/libpoppler-cpp.so.0.3.0 +#usr/lib/libpoppler.a +#usr/lib/libpoppler.la +#usr/lib/libpoppler.so +usr/lib/libpoppler.so.66 +usr/lib/libpoppler.so.66.0.0 +#usr/lib/pkgconfig/poppler-cairo.pc +#usr/lib/pkgconfig/poppler-cpp.pc +#usr/lib/pkgconfig/poppler-splash.pc +#usr/lib/pkgconfig/poppler.pc +#usr/share/man/man1/pdfdetach.1 +#usr/share/man/man1/pdffonts.1 +#usr/share/man/man1/pdfimages.1 +#usr/share/man/man1/pdfinfo.1 +#usr/share/man/man1/pdfseparate.1 +#usr/share/man/man1/pdftocairo.1 +#usr/share/man/man1/pdftohtml.1 +#usr/share/man/man1/pdftoppm.1 +#usr/share/man/man1/pdftops.1 +#usr/share/man/man1/pdftotext.1 +#usr/share/man/man1/pdfunite.1 diff --git a/lfs/poppler b/lfs/poppler new file mode 100644 index 000000000..3207e5da2 --- /dev/null +++ b/lfs/poppler @@ -0,0 +1,85 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2016 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 0.52.0 + +THISAPP = poppler-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = dfdd55d5df39685bbb82b0c08fa4ef66 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --enable-cairo-output \ + --enable-cms=lcms2 \ + --enable-libjpeg \ + --enable-libpng \ + --enable-xpdf-headers + + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index a30ed2c36..47667cbc8 100755 --- a/make.sh +++ b/make.sh @@ -652,6 +652,7 @@ buildipfire() { ipfiremake ghostscript ipfiremake lcms2 ipfiremake qpdf + ipfiremake poppler ipfiremake epson-inkjet-printer-escpr ipfiremake foomatic ipfiremake hplip From d46244f399e2bb27faac6581ebcd50e908288358 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:17:36 +0000 Subject: [PATCH 103/464] cups-filters: New package Allows CUPS to process input data (e.g. PDF documents and/or images) and convert them into the correct format to be printed Signed-off-by: Michael Tremer --- config/rootfiles/packages/cups-filters | 138 +++++++++++++++++++++++++ lfs/cups-filters | 91 ++++++++++++++++ make.sh | 1 + 3 files changed, 230 insertions(+) create mode 100644 config/rootfiles/packages/cups-filters create mode 100644 lfs/cups-filters diff --git a/config/rootfiles/packages/cups-filters b/config/rootfiles/packages/cups-filters new file mode 100644 index 000000000..fd85fb89e --- /dev/null +++ b/config/rootfiles/packages/cups-filters @@ -0,0 +1,138 @@ +etc/fonts/conf.d/99pdftoopvp.conf +#etc/rc.d/init.d/cups-browsed +#etc/rc0.d/K35cups-browsed +#etc/rc2.d/K35cups-browsed +#etc/rc2.d/S82cups-browsed +#etc/rc3.d/K35cups-browsed +#etc/rc3.d/S82cups-browsed +#etc/rc5.d/K35cups-browsed +#etc/rc5.d/S82cups-browsed +usr/bin/driverless +usr/bin/foomatic-rip +usr/bin/ttfread +#usr/include/cupsfilters +#usr/include/cupsfilters/colord.h +#usr/include/cupsfilters/colormanager.h +#usr/include/cupsfilters/driver.h +#usr/include/cupsfilters/image.h +#usr/include/cupsfilters/ppdgenerator.h +#usr/include/cupsfilters/raster.h +#usr/include/fontembed +#usr/include/fontembed/bitset.h +#usr/include/fontembed/embed.h +#usr/include/fontembed/fontfile.h +#usr/include/fontembed/iofn.h +#usr/include/fontembed/sfnt.h +usr/lib/cups/backend/beh +usr/lib/cups/backend/driverless +usr/lib/cups/backend/implicitclass +usr/lib/cups/backend/parallel +usr/lib/cups/backend/serial +usr/lib/cups/driver/driverless +usr/lib/cups/filter/bannertopdf +usr/lib/cups/filter/brftoembosser +usr/lib/cups/filter/commandtoescpx +usr/lib/cups/filter/commandtopclx +usr/lib/cups/filter/foomatic-rip +usr/lib/cups/filter/gstopdf +usr/lib/cups/filter/gstopxl +usr/lib/cups/filter/gstoraster +usr/lib/cups/filter/imagetobrf +usr/lib/cups/filter/imagetopdf +usr/lib/cups/filter/imagetops +usr/lib/cups/filter/imagetoraster +usr/lib/cups/filter/imagetoubrl +usr/lib/cups/filter/imageubrltoindexv3 +usr/lib/cups/filter/imageubrltoindexv4 +usr/lib/cups/filter/pdftoopvp +usr/lib/cups/filter/pdftopdf +usr/lib/cups/filter/pdftops +usr/lib/cups/filter/pdftoraster +usr/lib/cups/filter/rastertoescpx +usr/lib/cups/filter/rastertopclx +usr/lib/cups/filter/rastertopdf +usr/lib/cups/filter/rastertops +usr/lib/cups/filter/sys5ippprinter +usr/lib/cups/filter/textbrftoindexv3 +usr/lib/cups/filter/textbrftoindexv4 +usr/lib/cups/filter/texttobrf +usr/lib/cups/filter/texttopdf +usr/lib/cups/filter/texttops +usr/lib/cups/filter/texttotext +usr/lib/cups/filter/urftopdf +#usr/lib/libcupsfilters.a +#usr/lib/libcupsfilters.la +#usr/lib/libcupsfilters.so +usr/lib/libcupsfilters.so.1 +usr/lib/libcupsfilters.so.1.0.0 +#usr/lib/libfontembed.a +#usr/lib/libfontembed.la +#usr/lib/libfontembed.so +usr/lib/libfontembed.so.1 +usr/lib/libfontembed.so.1.0.0 +#usr/lib/pkgconfig/libcupsfilters.pc +#usr/lib/pkgconfig/libfontembed.pc +#usr/sbin/cups-browsed +usr/share/cups/banners/form +usr/share/cups/braille +usr/share/cups/braille/cups-braille.sh +usr/share/cups/braille/index.sh +usr/share/cups/braille/indexv3.sh +usr/share/cups/braille/indexv4.sh +usr/share/cups/charsets +usr/share/cups/charsets/pdf.utf-8 +usr/share/cups/charsets/pdf.utf-8.heavy +usr/share/cups/charsets/pdf.utf-8.simple +usr/share/cups/data/classified.pdf +usr/share/cups/data/confidential.pdf +usr/share/cups/data/default-testpage.pdf +usr/share/cups/data/default.pdf +usr/share/cups/data/form_english.pdf +usr/share/cups/data/form_english_in.odt +usr/share/cups/data/form_russian.pdf +usr/share/cups/data/form_russian_in.odt +usr/share/cups/data/secret.pdf +usr/share/cups/data/standard.pdf +usr/share/cups/data/topsecret.pdf +usr/share/cups/data/unclassified.pdf +usr/share/cups/drv/cupsfilters.drv +usr/share/cups/drv/generic-brf.drv +usr/share/cups/drv/indexv3.drv +usr/share/cups/drv/indexv4.drv +usr/share/cups/mime/braille.convs +usr/share/cups/mime/braille.types +usr/share/cups/mime/cupsfilters-ghostscript.convs +usr/share/cups/mime/cupsfilters-poppler.convs +usr/share/cups/mime/cupsfilters.convs +usr/share/cups/mime/cupsfilters.types +usr/share/cups/ppdc/braille.defs +usr/share/cups/ppdc/escp.h +usr/share/cups/ppdc/fr-braille.po +usr/share/cups/ppdc/imagemagick.defs +usr/share/cups/ppdc/index.defs +usr/share/cups/ppdc/liblouis.defs +usr/share/cups/ppdc/liblouis1.defs +usr/share/cups/ppdc/liblouis2.defs +usr/share/cups/ppdc/liblouis3.defs +usr/share/cups/ppdc/liblouis4.defs +usr/share/cups/ppdc/media-braille.defs +usr/share/cups/ppdc/pcl.h +#usr/share/doc/cups-filters +#usr/share/doc/cups-filters/AUTHORS +#usr/share/doc/cups-filters/COPYING +#usr/share/doc/cups-filters/INSTALL +#usr/share/doc/cups-filters/NEWS +#usr/share/doc/cups-filters/README +#usr/share/man/man1/driverless.1 +#usr/share/man/man1/foomatic-rip.1 +#usr/share/man/man5/cups-browsed.conf.5 +#usr/share/man/man8/cups-browsed.8 +#usr/share/ppd +usr/share/ppd/cupsfilters +usr/share/ppd/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd +usr/share/ppd/cupsfilters/Generic-PDF_Printer-PDF.ppd +usr/share/ppd/cupsfilters/HP-Color_LaserJet_CM3530_MFP-PDF.ppd +usr/share/ppd/cupsfilters/Ricoh-PDF_Printer-PDF.ppd +usr/share/ppd/cupsfilters/pxlcolor.ppd +usr/share/ppd/cupsfilters/pxlmono.ppd +#var/ipfire/cups/cups-browsed.conf diff --git a/lfs/cups-filters b/lfs/cups-filters new file mode 100644 index 000000000..84d7e8ecf --- /dev/null +++ b/lfs/cups-filters @@ -0,0 +1,91 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2015 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 1.13.4 + +THISAPP = cups-filters-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = cups-filters +PAK_VER = 1 + +DEPS = "cups ghostscript" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = a288a63ca44ad6e776cf1e86a457f836 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + $(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-pdftops=hybrid \ + --disable-ijs \ + --disable-mutool + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 47667cbc8..03d67561c 100755 --- a/make.sh +++ b/make.sh @@ -653,6 +653,7 @@ buildipfire() { ipfiremake lcms2 ipfiremake qpdf ipfiremake poppler + ipfiremake cups-filters ipfiremake epson-inkjet-printer-escpr ipfiremake foomatic ipfiremake hplip From 7861ea5cf71b7ab9edfd5a98ac3fa83911eddf37 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Feb 2017 09:18:43 +0000 Subject: [PATCH 104/464] cups: Depend on cups-filters Without the filters package, CUPS is faily useless Signed-off-by: Michael Tremer --- lfs/cups | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/cups b/lfs/cups index 49b275a65..e1311af80 100644 --- a/lfs/cups +++ b/lfs/cups @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/cups-$(VER) TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups -PAK_VER = 13 +PAK_VER = 14 -DEPS = "ghostscript" +DEPS = "cups-filters ghostscript" ############################################################################### # Top-level Rules From 8bc8c282c9b7ef2280e7102e2824047975a9bb4c Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 10:23:10 +0100 Subject: [PATCH 105/464] Move all Initscripts of the system, into an extra directory Till now all init scripts going into src/initscripts/init.d so they are installed by the lfs file initscripts. Because of that they also appear in the rootfile of the "package" initscripts. This has some disadvantages: - the initscripts of the packages appear in the 3 rootfiles (one for each arch) which are annoying because for every package with an initscript 4 rootfiles (the 3 of the initscript package + the rootfile of the package) are important. - The rootfiles for a package are installed by lfs/initscripts but this should happen only in the build of the package To solve this issues all rootfiles for the core system are moved into src/initscripts/init.d/common. Only the initscript in this directory are installed by lfs/initscripts. So all initscripts for packages are located in src/initscripts/init.d and are not installed by lfs/initscripts. So only the initscripts of the system appear in the 3 rootfiles of the initscripts package. The initscript of a package appear only in the rootfile of the package. This makes the maintaining of initscript easier. Signed-off-by: Jonatan Schlag --- config/rootfiles/common/armv5tel/initscripts | 56 ------------------ config/rootfiles/common/i586/initscripts | 57 ------------------- config/rootfiles/common/x86_64/initscripts | 57 ------------------- lfs/initscripts | 2 +- src/initscripts/init.d/{ => common}/acpid | 0 src/initscripts/init.d/{ => common}/apache | 0 src/initscripts/init.d/{ => common}/beep | 0 src/initscripts/init.d/{ => common}/checkfs | 0 src/initscripts/init.d/{ => common}/cleanfs | 0 src/initscripts/init.d/{ => common}/collectd | 0 src/initscripts/init.d/{ => common}/connectd | 0 src/initscripts/init.d/{ => common}/console | 0 src/initscripts/init.d/{ => common}/dhcp | 0 src/initscripts/init.d/{ => common}/dhcrelay | 0 src/initscripts/init.d/{ => common}/fcron | 0 src/initscripts/init.d/{ => common}/fireinfo | 0 src/initscripts/init.d/{ => common}/firewall | 0 .../init.d/{ => common}/firstsetup | 0 src/initscripts/init.d/{ => common}/fsresize | 0 src/initscripts/init.d/{ => common}/functions | 0 src/initscripts/init.d/{ => common}/halt | 0 src/initscripts/init.d/{ => common}/ipsec | 0 src/initscripts/init.d/{ => common}/leds | 0 src/initscripts/init.d/{ => common}/localnet | 0 src/initscripts/init.d/{ => common}/mISDN | 0 src/initscripts/init.d/{ => common}/modules | 0 src/initscripts/init.d/{ => common}/mountfs | 0 .../init.d/{ => common}/mountkernfs | 0 .../init.d/{ => common}/mounttmpfs | 0 src/initscripts/init.d/{ => common}/network | 0 .../init.d/{ => common}/network-trigger | 0 src/initscripts/init.d/{ => common}/ntp | 0 .../init.d/{ => common}/partresize | 0 src/initscripts/init.d/{ => common}/random | 0 src/initscripts/init.d/{ => common}/rc | 0 src/initscripts/init.d/{ => common}/reboot | 0 src/initscripts/init.d/{ => common}/rngd | 0 .../init.d/{ => common}/sendsignals | 0 src/initscripts/init.d/{ => common}/setclock | 0 .../init.d/{ => common}/smartenabler | 0 src/initscripts/init.d/{ => common}/snort | 0 src/initscripts/init.d/{ => common}/squid | 0 src/initscripts/init.d/{ => common}/sshd | 0 .../init.d/{ => common}/static-routes | 0 src/initscripts/init.d/{ => common}/swap | 0 src/initscripts/init.d/{ => common}/swconfig | 0 src/initscripts/init.d/{ => common}/sysctl | 0 src/initscripts/init.d/{ => common}/sysklogd | 0 src/initscripts/init.d/{ => common}/template | 0 src/initscripts/init.d/{ => common}/udev | 0 .../init.d/{ => common}/udev_retry | 0 src/initscripts/init.d/{ => common}/unbound | 0 src/initscripts/init.d/{ => common}/upnpd | 0 src/initscripts/init.d/{ => common}/vnstat | 0 .../init.d/{ => common}/waitdrives | 0 .../init.d/{ => common}/wlanclient | 0 56 files changed, 1 insertion(+), 171 deletions(-) rename src/initscripts/init.d/{ => common}/acpid (100%) rename src/initscripts/init.d/{ => common}/apache (100%) rename src/initscripts/init.d/{ => common}/beep (100%) rename src/initscripts/init.d/{ => common}/checkfs (100%) rename src/initscripts/init.d/{ => common}/cleanfs (100%) rename src/initscripts/init.d/{ => common}/collectd (100%) rename src/initscripts/init.d/{ => common}/connectd (100%) rename src/initscripts/init.d/{ => common}/console (100%) rename src/initscripts/init.d/{ => common}/dhcp (100%) rename src/initscripts/init.d/{ => common}/dhcrelay (100%) rename src/initscripts/init.d/{ => common}/fcron (100%) rename src/initscripts/init.d/{ => common}/fireinfo (100%) rename src/initscripts/init.d/{ => common}/firewall (100%) rename src/initscripts/init.d/{ => common}/firstsetup (100%) rename src/initscripts/init.d/{ => common}/fsresize (100%) rename src/initscripts/init.d/{ => common}/functions (100%) rename src/initscripts/init.d/{ => common}/halt (100%) rename src/initscripts/init.d/{ => common}/ipsec (100%) rename src/initscripts/init.d/{ => common}/leds (100%) rename src/initscripts/init.d/{ => common}/localnet (100%) rename src/initscripts/init.d/{ => common}/mISDN (100%) rename src/initscripts/init.d/{ => common}/modules (100%) rename src/initscripts/init.d/{ => common}/mountfs (100%) rename src/initscripts/init.d/{ => common}/mountkernfs (100%) rename src/initscripts/init.d/{ => common}/mounttmpfs (100%) rename src/initscripts/init.d/{ => common}/network (100%) rename src/initscripts/init.d/{ => common}/network-trigger (100%) rename src/initscripts/init.d/{ => common}/ntp (100%) rename src/initscripts/init.d/{ => common}/partresize (100%) rename src/initscripts/init.d/{ => common}/random (100%) rename src/initscripts/init.d/{ => common}/rc (100%) rename src/initscripts/init.d/{ => common}/reboot (100%) rename src/initscripts/init.d/{ => common}/rngd (100%) rename src/initscripts/init.d/{ => common}/sendsignals (100%) rename src/initscripts/init.d/{ => common}/setclock (100%) rename src/initscripts/init.d/{ => common}/smartenabler (100%) rename src/initscripts/init.d/{ => common}/snort (100%) rename src/initscripts/init.d/{ => common}/squid (100%) rename src/initscripts/init.d/{ => common}/sshd (100%) rename src/initscripts/init.d/{ => common}/static-routes (100%) rename src/initscripts/init.d/{ => common}/swap (100%) rename src/initscripts/init.d/{ => common}/swconfig (100%) rename src/initscripts/init.d/{ => common}/sysctl (100%) rename src/initscripts/init.d/{ => common}/sysklogd (100%) rename src/initscripts/init.d/{ => common}/template (100%) rename src/initscripts/init.d/{ => common}/udev (100%) rename src/initscripts/init.d/{ => common}/udev_retry (100%) rename src/initscripts/init.d/{ => common}/unbound (100%) rename src/initscripts/init.d/{ => common}/upnpd (100%) rename src/initscripts/init.d/{ => common}/vnstat (100%) rename src/initscripts/init.d/{ => common}/waitdrives (100%) rename src/initscripts/init.d/{ => common}/wlanclient (100%) diff --git a/config/rootfiles/common/armv5tel/initscripts b/config/rootfiles/common/armv5tel/initscripts index e1e78dce1..1e67c36e6 100644 --- a/config/rootfiles/common/armv5tel/initscripts +++ b/config/rootfiles/common/armv5tel/initscripts @@ -3,65 +3,30 @@ etc/init.d #etc/rc.d/helper etc/rc.d/helper/getdnsfromdhcpc.pl #etc/rc.d/init.d -#etc/rc.d/init.d/alsa -#etc/rc.d/init.d/amavisd etc/rc.d/init.d/apache -#etc/rc.d/init.d/apcupsd -#etc/rc.d/init.d/applejuice -#etc/rc.d/init.d/asterisk etc/rc.d/init.d/beep -#etc/rc.d/init.d/bluetooth etc/rc.d/init.d/checkfs -#etc/rc.d/init.d/clamav etc/rc.d/init.d/cleanfs -#etc/rc.d/init.d/client175 etc/rc.d/init.d/collectd etc/rc.d/init.d/connectd etc/rc.d/init.d/console -#etc/rc.d/init.d/cpufreq -#etc/rc.d/init.d/cups -#etc/rc.d/init.d/cyrus-imapd -#etc/rc.d/init.d/cyrus-sasl etc/rc.d/init.d/dhcp etc/rc.d/init.d/dhcrelay -#etc/rc.d/init.d/dnsdist etc/rc.d/init.d/fcron -#etc/rc.d/init.d/fetchmail etc/rc.d/init.d/fireinfo etc/rc.d/init.d/firewall etc/rc.d/init.d/firstsetup -#etc/rc.d/init.d/freeradius etc/rc.d/init.d/fsresize etc/rc.d/init.d/functions -#etc/rc.d/init.d/gnump3d -#etc/rc.d/init.d/guardian etc/rc.d/init.d/halt -#etc/rc.d/init.d/haproxy -#etc/rc.d/init.d/hostapd -#etc/rc.d/init.d/imspector etc/rc.d/init.d/ipsec -#etc/rc.d/init.d/keepalived -#etc/rc.d/init.d/lcd4linux -#etc/rc.d/init.d/lcdproc -#etc/rc.d/init.d/lcr etc/rc.d/init.d/leds -#etc/rc.d/init.d/libvirtd etc/rc.d/init.d/localnet etc/rc.d/init.d/mISDN -#etc/rc.d/init.d/mediatomb -#etc/rc.d/init.d/messagebus -#etc/rc.d/init.d/miau -#etc/rc.d/init.d/minidlna -#etc/rc.d/init.d/miniupnpd etc/rc.d/init.d/modules -#etc/rc.d/init.d/monit -#etc/rc.d/init.d/motion etc/rc.d/init.d/mountfs etc/rc.d/init.d/mountkernfs etc/rc.d/init.d/mounttmpfs -#etc/rc.d/init.d/mpd -#etc/rc.d/init.d/mysql -#etc/rc.d/init.d/netsnmpd etc/rc.d/init.d/network etc/rc.d/init.d/network-trigger #etc/rc.d/init.d/networking @@ -98,52 +63,31 @@ etc/rc.d/init.d/networking/red.up/99-fireinfo etc/rc.d/init.d/networking/red.up/99-geoip-database etc/rc.d/init.d/networking/red.up/99-pakfire-update etc/rc.d/init.d/networking/wpa_supplicant.exe -#etc/rc.d/init.d/nfs-server etc/rc.d/init.d/ntp -#etc/rc.d/init.d/nut -#etc/rc.d/init.d/openvmtools etc/rc.d/init.d/partresize -#etc/rc.d/init.d/postfix -#etc/rc.d/init.d/pound etc/rc.d/init.d/random etc/rc.d/init.d/rc etc/rc.d/init.d/reboot etc/rc.d/init.d/rngd -#etc/rc.d/init.d/rpcbind -#etc/rc.d/init.d/rtpproxy -#etc/rc.d/init.d/samba -#etc/rc.d/init.d/sane etc/rc.d/init.d/sendsignals etc/rc.d/init.d/setclock etc/rc.d/init.d/smartenabler etc/rc.d/init.d/snort -#etc/rc.d/init.d/spamassassin etc/rc.d/init.d/squid etc/rc.d/init.d/sshd -#etc/rc.d/init.d/sslh etc/rc.d/init.d/static-routes -#etc/rc.d/init.d/stunnel etc/rc.d/init.d/swap etc/rc.d/init.d/swconfig etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd etc/rc.d/init.d/template -#etc/rc.d/init.d/tftpd -#etc/rc.d/init.d/tor -#etc/rc.d/init.d/transmission etc/rc.d/init.d/udev etc/rc.d/init.d/udev_retry etc/rc.d/init.d/unbound etc/rc.d/init.d/upnpd -#etc/rc.d/init.d/vdr -#etc/rc.d/init.d/vdradmin -#etc/rc.d/init.d/virtlogd etc/rc.d/init.d/vnstat -#etc/rc.d/init.d/vsftpd etc/rc.d/init.d/waitdrives -#etc/rc.d/init.d/watchdog etc/rc.d/init.d/wlanclient -#etc/rc.d/init.d/xinetd #etc/rc.d/rc0.d #etc/rc.d/rc0.d/K01imspetor #etc/rc.d/rc0.d/K01motion diff --git a/config/rootfiles/common/i586/initscripts b/config/rootfiles/common/i586/initscripts index 75aad1783..760a12869 100644 --- a/config/rootfiles/common/i586/initscripts +++ b/config/rootfiles/common/i586/initscripts @@ -4,66 +4,30 @@ etc/init.d etc/rc.d/helper/getdnsfromdhcpc.pl #etc/rc.d/init.d etc/rc.d/init.d/acpid -#etc/rc.d/init.d/alsa -#etc/rc.d/init.d/amavisd etc/rc.d/init.d/apache -#etc/rc.d/init.d/apcupsd -#etc/rc.d/init.d/applejuice -#etc/rc.d/init.d/asterisk etc/rc.d/init.d/beep -#etc/rc.d/init.d/bluetooth etc/rc.d/init.d/checkfs -#etc/rc.d/init.d/clamav etc/rc.d/init.d/cleanfs -#etc/rc.d/init.d/client175 etc/rc.d/init.d/collectd etc/rc.d/init.d/connectd etc/rc.d/init.d/console -#etc/rc.d/init.d/cpufreq -#etc/rc.d/init.d/cups -#etc/rc.d/init.d/cyrus-imapd -#etc/rc.d/init.d/cyrus-sasl etc/rc.d/init.d/dhcp etc/rc.d/init.d/dhcrelay -#etc/rc.d/init.d/dnsdist etc/rc.d/init.d/fcron -#etc/rc.d/init.d/fetchmail etc/rc.d/init.d/fireinfo etc/rc.d/init.d/firewall etc/rc.d/init.d/firstsetup -#etc/rc.d/init.d/freeradius etc/rc.d/init.d/fsresize etc/rc.d/init.d/functions -#etc/rc.d/init.d/gnump3d -#etc/rc.d/init.d/guardian etc/rc.d/init.d/halt -#etc/rc.d/init.d/haproxy -#etc/rc.d/init.d/hostapd -#etc/rc.d/init.d/imspector etc/rc.d/init.d/ipsec -#etc/rc.d/init.d/keepalived -#etc/rc.d/init.d/lcd4linux -#etc/rc.d/init.d/lcdproc -#etc/rc.d/init.d/lcr etc/rc.d/init.d/leds -#etc/rc.d/init.d/libvirt-guests -#etc/rc.d/init.d/libvirtd etc/rc.d/init.d/localnet etc/rc.d/init.d/mISDN -#etc/rc.d/init.d/mediatomb -#etc/rc.d/init.d/messagebus -#etc/rc.d/init.d/miau -#etc/rc.d/init.d/minidlna -#etc/rc.d/init.d/miniupnpd etc/rc.d/init.d/modules -#etc/rc.d/init.d/monit -#etc/rc.d/init.d/motion etc/rc.d/init.d/mountfs etc/rc.d/init.d/mountkernfs etc/rc.d/init.d/mounttmpfs -#etc/rc.d/init.d/mpd -#etc/rc.d/init.d/mysql -#etc/rc.d/init.d/netsnmpd etc/rc.d/init.d/network etc/rc.d/init.d/network-trigger #etc/rc.d/init.d/networking @@ -100,51 +64,30 @@ etc/rc.d/init.d/networking/red.up/99-fireinfo etc/rc.d/init.d/networking/red.up/99-geoip-database etc/rc.d/init.d/networking/red.up/99-pakfire-update etc/rc.d/init.d/networking/wpa_supplicant.exe -#etc/rc.d/init.d/nfs-server etc/rc.d/init.d/ntp -#etc/rc.d/init.d/nut -#etc/rc.d/init.d/openvmtools etc/rc.d/init.d/partresize -#etc/rc.d/init.d/postfix -#etc/rc.d/init.d/pound etc/rc.d/init.d/random etc/rc.d/init.d/rc etc/rc.d/init.d/reboot etc/rc.d/init.d/rngd -#etc/rc.d/init.d/rpcbind -#etc/rc.d/init.d/rtpproxy -#etc/rc.d/init.d/samba -#etc/rc.d/init.d/sane etc/rc.d/init.d/sendsignals etc/rc.d/init.d/setclock etc/rc.d/init.d/smartenabler etc/rc.d/init.d/snort -#etc/rc.d/init.d/spamassassin etc/rc.d/init.d/squid etc/rc.d/init.d/sshd -#etc/rc.d/init.d/sslh etc/rc.d/init.d/static-routes -#etc/rc.d/init.d/stunnel etc/rc.d/init.d/swap etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd etc/rc.d/init.d/template -#etc/rc.d/init.d/tftpd -#etc/rc.d/init.d/tor -#etc/rc.d/init.d/transmission etc/rc.d/init.d/udev etc/rc.d/init.d/udev_retry etc/rc.d/init.d/unbound etc/rc.d/init.d/upnpd -#etc/rc.d/init.d/vdr -#etc/rc.d/init.d/vdradmin -#etc/rc.d/init.d/virtlogd etc/rc.d/init.d/vnstat -#etc/rc.d/init.d/vsftpd etc/rc.d/init.d/waitdrives -#etc/rc.d/init.d/watchdog etc/rc.d/init.d/wlanclient -#etc/rc.d/init.d/xinetd #etc/rc.d/rc0.d #etc/rc.d/rc0.d/K01imspetor #etc/rc.d/rc0.d/K01motion diff --git a/config/rootfiles/common/x86_64/initscripts b/config/rootfiles/common/x86_64/initscripts index 75aad1783..760a12869 100644 --- a/config/rootfiles/common/x86_64/initscripts +++ b/config/rootfiles/common/x86_64/initscripts @@ -4,66 +4,30 @@ etc/init.d etc/rc.d/helper/getdnsfromdhcpc.pl #etc/rc.d/init.d etc/rc.d/init.d/acpid -#etc/rc.d/init.d/alsa -#etc/rc.d/init.d/amavisd etc/rc.d/init.d/apache -#etc/rc.d/init.d/apcupsd -#etc/rc.d/init.d/applejuice -#etc/rc.d/init.d/asterisk etc/rc.d/init.d/beep -#etc/rc.d/init.d/bluetooth etc/rc.d/init.d/checkfs -#etc/rc.d/init.d/clamav etc/rc.d/init.d/cleanfs -#etc/rc.d/init.d/client175 etc/rc.d/init.d/collectd etc/rc.d/init.d/connectd etc/rc.d/init.d/console -#etc/rc.d/init.d/cpufreq -#etc/rc.d/init.d/cups -#etc/rc.d/init.d/cyrus-imapd -#etc/rc.d/init.d/cyrus-sasl etc/rc.d/init.d/dhcp etc/rc.d/init.d/dhcrelay -#etc/rc.d/init.d/dnsdist etc/rc.d/init.d/fcron -#etc/rc.d/init.d/fetchmail etc/rc.d/init.d/fireinfo etc/rc.d/init.d/firewall etc/rc.d/init.d/firstsetup -#etc/rc.d/init.d/freeradius etc/rc.d/init.d/fsresize etc/rc.d/init.d/functions -#etc/rc.d/init.d/gnump3d -#etc/rc.d/init.d/guardian etc/rc.d/init.d/halt -#etc/rc.d/init.d/haproxy -#etc/rc.d/init.d/hostapd -#etc/rc.d/init.d/imspector etc/rc.d/init.d/ipsec -#etc/rc.d/init.d/keepalived -#etc/rc.d/init.d/lcd4linux -#etc/rc.d/init.d/lcdproc -#etc/rc.d/init.d/lcr etc/rc.d/init.d/leds -#etc/rc.d/init.d/libvirt-guests -#etc/rc.d/init.d/libvirtd etc/rc.d/init.d/localnet etc/rc.d/init.d/mISDN -#etc/rc.d/init.d/mediatomb -#etc/rc.d/init.d/messagebus -#etc/rc.d/init.d/miau -#etc/rc.d/init.d/minidlna -#etc/rc.d/init.d/miniupnpd etc/rc.d/init.d/modules -#etc/rc.d/init.d/monit -#etc/rc.d/init.d/motion etc/rc.d/init.d/mountfs etc/rc.d/init.d/mountkernfs etc/rc.d/init.d/mounttmpfs -#etc/rc.d/init.d/mpd -#etc/rc.d/init.d/mysql -#etc/rc.d/init.d/netsnmpd etc/rc.d/init.d/network etc/rc.d/init.d/network-trigger #etc/rc.d/init.d/networking @@ -100,51 +64,30 @@ etc/rc.d/init.d/networking/red.up/99-fireinfo etc/rc.d/init.d/networking/red.up/99-geoip-database etc/rc.d/init.d/networking/red.up/99-pakfire-update etc/rc.d/init.d/networking/wpa_supplicant.exe -#etc/rc.d/init.d/nfs-server etc/rc.d/init.d/ntp -#etc/rc.d/init.d/nut -#etc/rc.d/init.d/openvmtools etc/rc.d/init.d/partresize -#etc/rc.d/init.d/postfix -#etc/rc.d/init.d/pound etc/rc.d/init.d/random etc/rc.d/init.d/rc etc/rc.d/init.d/reboot etc/rc.d/init.d/rngd -#etc/rc.d/init.d/rpcbind -#etc/rc.d/init.d/rtpproxy -#etc/rc.d/init.d/samba -#etc/rc.d/init.d/sane etc/rc.d/init.d/sendsignals etc/rc.d/init.d/setclock etc/rc.d/init.d/smartenabler etc/rc.d/init.d/snort -#etc/rc.d/init.d/spamassassin etc/rc.d/init.d/squid etc/rc.d/init.d/sshd -#etc/rc.d/init.d/sslh etc/rc.d/init.d/static-routes -#etc/rc.d/init.d/stunnel etc/rc.d/init.d/swap etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd etc/rc.d/init.d/template -#etc/rc.d/init.d/tftpd -#etc/rc.d/init.d/tor -#etc/rc.d/init.d/transmission etc/rc.d/init.d/udev etc/rc.d/init.d/udev_retry etc/rc.d/init.d/unbound etc/rc.d/init.d/upnpd -#etc/rc.d/init.d/vdr -#etc/rc.d/init.d/vdradmin -#etc/rc.d/init.d/virtlogd etc/rc.d/init.d/vnstat -#etc/rc.d/init.d/vsftpd etc/rc.d/init.d/waitdrives -#etc/rc.d/init.d/watchdog etc/rc.d/init.d/wlanclient -#etc/rc.d/init.d/xinetd #etc/rc.d/rc0.d #etc/rc.d/rc0.d/K01imspetor #etc/rc.d/rc0.d/K01motion diff --git a/lfs/initscripts b/lfs/initscripts index c5baf680a..61d08df4c 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -64,7 +64,7 @@ $(TARGET) : # Create default ramdisk configuration echo "RAMDISK_MODE=0" > /etc/sysconfig/ramdisk - for i in $(DIR_SRC)/src/initscripts/init.d/*; do \ + for i in $(DIR_SRC)/src/initscripts/init.d/common/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/; \ done chmod 644 /etc/rc.d/init.d/functions diff --git a/src/initscripts/init.d/acpid b/src/initscripts/init.d/common/acpid similarity index 100% rename from src/initscripts/init.d/acpid rename to src/initscripts/init.d/common/acpid diff --git a/src/initscripts/init.d/apache b/src/initscripts/init.d/common/apache similarity index 100% rename from src/initscripts/init.d/apache rename to src/initscripts/init.d/common/apache diff --git a/src/initscripts/init.d/beep b/src/initscripts/init.d/common/beep similarity index 100% rename from src/initscripts/init.d/beep rename to src/initscripts/init.d/common/beep diff --git a/src/initscripts/init.d/checkfs b/src/initscripts/init.d/common/checkfs similarity index 100% rename from src/initscripts/init.d/checkfs rename to src/initscripts/init.d/common/checkfs diff --git a/src/initscripts/init.d/cleanfs b/src/initscripts/init.d/common/cleanfs similarity index 100% rename from src/initscripts/init.d/cleanfs rename to src/initscripts/init.d/common/cleanfs diff --git a/src/initscripts/init.d/collectd b/src/initscripts/init.d/common/collectd similarity index 100% rename from src/initscripts/init.d/collectd rename to src/initscripts/init.d/common/collectd diff --git a/src/initscripts/init.d/connectd b/src/initscripts/init.d/common/connectd similarity index 100% rename from src/initscripts/init.d/connectd rename to src/initscripts/init.d/common/connectd diff --git a/src/initscripts/init.d/console b/src/initscripts/init.d/common/console similarity index 100% rename from src/initscripts/init.d/console rename to src/initscripts/init.d/common/console diff --git a/src/initscripts/init.d/dhcp b/src/initscripts/init.d/common/dhcp similarity index 100% rename from src/initscripts/init.d/dhcp rename to src/initscripts/init.d/common/dhcp diff --git a/src/initscripts/init.d/dhcrelay b/src/initscripts/init.d/common/dhcrelay similarity index 100% rename from src/initscripts/init.d/dhcrelay rename to src/initscripts/init.d/common/dhcrelay diff --git a/src/initscripts/init.d/fcron b/src/initscripts/init.d/common/fcron similarity index 100% rename from src/initscripts/init.d/fcron rename to src/initscripts/init.d/common/fcron diff --git a/src/initscripts/init.d/fireinfo b/src/initscripts/init.d/common/fireinfo similarity index 100% rename from src/initscripts/init.d/fireinfo rename to src/initscripts/init.d/common/fireinfo diff --git a/src/initscripts/init.d/firewall b/src/initscripts/init.d/common/firewall similarity index 100% rename from src/initscripts/init.d/firewall rename to src/initscripts/init.d/common/firewall diff --git a/src/initscripts/init.d/firstsetup b/src/initscripts/init.d/common/firstsetup similarity index 100% rename from src/initscripts/init.d/firstsetup rename to src/initscripts/init.d/common/firstsetup diff --git a/src/initscripts/init.d/fsresize b/src/initscripts/init.d/common/fsresize similarity index 100% rename from src/initscripts/init.d/fsresize rename to src/initscripts/init.d/common/fsresize diff --git a/src/initscripts/init.d/functions b/src/initscripts/init.d/common/functions similarity index 100% rename from src/initscripts/init.d/functions rename to src/initscripts/init.d/common/functions diff --git a/src/initscripts/init.d/halt b/src/initscripts/init.d/common/halt similarity index 100% rename from src/initscripts/init.d/halt rename to src/initscripts/init.d/common/halt diff --git a/src/initscripts/init.d/ipsec b/src/initscripts/init.d/common/ipsec similarity index 100% rename from src/initscripts/init.d/ipsec rename to src/initscripts/init.d/common/ipsec diff --git a/src/initscripts/init.d/leds b/src/initscripts/init.d/common/leds similarity index 100% rename from src/initscripts/init.d/leds rename to src/initscripts/init.d/common/leds diff --git a/src/initscripts/init.d/localnet b/src/initscripts/init.d/common/localnet similarity index 100% rename from src/initscripts/init.d/localnet rename to src/initscripts/init.d/common/localnet diff --git a/src/initscripts/init.d/mISDN b/src/initscripts/init.d/common/mISDN similarity index 100% rename from src/initscripts/init.d/mISDN rename to src/initscripts/init.d/common/mISDN diff --git a/src/initscripts/init.d/modules b/src/initscripts/init.d/common/modules similarity index 100% rename from src/initscripts/init.d/modules rename to src/initscripts/init.d/common/modules diff --git a/src/initscripts/init.d/mountfs b/src/initscripts/init.d/common/mountfs similarity index 100% rename from src/initscripts/init.d/mountfs rename to src/initscripts/init.d/common/mountfs diff --git a/src/initscripts/init.d/mountkernfs b/src/initscripts/init.d/common/mountkernfs similarity index 100% rename from src/initscripts/init.d/mountkernfs rename to src/initscripts/init.d/common/mountkernfs diff --git a/src/initscripts/init.d/mounttmpfs b/src/initscripts/init.d/common/mounttmpfs similarity index 100% rename from src/initscripts/init.d/mounttmpfs rename to src/initscripts/init.d/common/mounttmpfs diff --git a/src/initscripts/init.d/network b/src/initscripts/init.d/common/network similarity index 100% rename from src/initscripts/init.d/network rename to src/initscripts/init.d/common/network diff --git a/src/initscripts/init.d/network-trigger b/src/initscripts/init.d/common/network-trigger similarity index 100% rename from src/initscripts/init.d/network-trigger rename to src/initscripts/init.d/common/network-trigger diff --git a/src/initscripts/init.d/ntp b/src/initscripts/init.d/common/ntp similarity index 100% rename from src/initscripts/init.d/ntp rename to src/initscripts/init.d/common/ntp diff --git a/src/initscripts/init.d/partresize b/src/initscripts/init.d/common/partresize similarity index 100% rename from src/initscripts/init.d/partresize rename to src/initscripts/init.d/common/partresize diff --git a/src/initscripts/init.d/random b/src/initscripts/init.d/common/random similarity index 100% rename from src/initscripts/init.d/random rename to src/initscripts/init.d/common/random diff --git a/src/initscripts/init.d/rc b/src/initscripts/init.d/common/rc similarity index 100% rename from src/initscripts/init.d/rc rename to src/initscripts/init.d/common/rc diff --git a/src/initscripts/init.d/reboot b/src/initscripts/init.d/common/reboot similarity index 100% rename from src/initscripts/init.d/reboot rename to src/initscripts/init.d/common/reboot diff --git a/src/initscripts/init.d/rngd b/src/initscripts/init.d/common/rngd similarity index 100% rename from src/initscripts/init.d/rngd rename to src/initscripts/init.d/common/rngd diff --git a/src/initscripts/init.d/sendsignals b/src/initscripts/init.d/common/sendsignals similarity index 100% rename from src/initscripts/init.d/sendsignals rename to src/initscripts/init.d/common/sendsignals diff --git a/src/initscripts/init.d/setclock b/src/initscripts/init.d/common/setclock similarity index 100% rename from src/initscripts/init.d/setclock rename to src/initscripts/init.d/common/setclock diff --git a/src/initscripts/init.d/smartenabler b/src/initscripts/init.d/common/smartenabler similarity index 100% rename from src/initscripts/init.d/smartenabler rename to src/initscripts/init.d/common/smartenabler diff --git a/src/initscripts/init.d/snort b/src/initscripts/init.d/common/snort similarity index 100% rename from src/initscripts/init.d/snort rename to src/initscripts/init.d/common/snort diff --git a/src/initscripts/init.d/squid b/src/initscripts/init.d/common/squid similarity index 100% rename from src/initscripts/init.d/squid rename to src/initscripts/init.d/common/squid diff --git a/src/initscripts/init.d/sshd b/src/initscripts/init.d/common/sshd similarity index 100% rename from src/initscripts/init.d/sshd rename to src/initscripts/init.d/common/sshd diff --git a/src/initscripts/init.d/static-routes b/src/initscripts/init.d/common/static-routes similarity index 100% rename from src/initscripts/init.d/static-routes rename to src/initscripts/init.d/common/static-routes diff --git a/src/initscripts/init.d/swap b/src/initscripts/init.d/common/swap similarity index 100% rename from src/initscripts/init.d/swap rename to src/initscripts/init.d/common/swap diff --git a/src/initscripts/init.d/swconfig b/src/initscripts/init.d/common/swconfig similarity index 100% rename from src/initscripts/init.d/swconfig rename to src/initscripts/init.d/common/swconfig diff --git a/src/initscripts/init.d/sysctl b/src/initscripts/init.d/common/sysctl similarity index 100% rename from src/initscripts/init.d/sysctl rename to src/initscripts/init.d/common/sysctl diff --git a/src/initscripts/init.d/sysklogd b/src/initscripts/init.d/common/sysklogd similarity index 100% rename from src/initscripts/init.d/sysklogd rename to src/initscripts/init.d/common/sysklogd diff --git a/src/initscripts/init.d/template b/src/initscripts/init.d/common/template similarity index 100% rename from src/initscripts/init.d/template rename to src/initscripts/init.d/common/template diff --git a/src/initscripts/init.d/udev b/src/initscripts/init.d/common/udev similarity index 100% rename from src/initscripts/init.d/udev rename to src/initscripts/init.d/common/udev diff --git a/src/initscripts/init.d/udev_retry b/src/initscripts/init.d/common/udev_retry similarity index 100% rename from src/initscripts/init.d/udev_retry rename to src/initscripts/init.d/common/udev_retry diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/common/unbound similarity index 100% rename from src/initscripts/init.d/unbound rename to src/initscripts/init.d/common/unbound diff --git a/src/initscripts/init.d/upnpd b/src/initscripts/init.d/common/upnpd similarity index 100% rename from src/initscripts/init.d/upnpd rename to src/initscripts/init.d/common/upnpd diff --git a/src/initscripts/init.d/vnstat b/src/initscripts/init.d/common/vnstat similarity index 100% rename from src/initscripts/init.d/vnstat rename to src/initscripts/init.d/common/vnstat diff --git a/src/initscripts/init.d/waitdrives b/src/initscripts/init.d/common/waitdrives similarity index 100% rename from src/initscripts/init.d/waitdrives rename to src/initscripts/init.d/common/waitdrives diff --git a/src/initscripts/init.d/wlanclient b/src/initscripts/init.d/common/wlanclient similarity index 100% rename from src/initscripts/init.d/wlanclient rename to src/initscripts/init.d/common/wlanclient From 1d8dab5404b4e1a662e6f0398a552f8f6251bee6 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 11:18:36 +0100 Subject: [PATCH 106/464] Move the initscript of the cups package into the packages directory Signed-off-by: Jonatan Schlag --- lfs/cups | 2 +- src/initscripts/init.d/{ => packages}/cups | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/initscripts/init.d/{ => packages}/cups (100%) diff --git a/lfs/cups b/lfs/cups index 49b275a65..c7e2549e7 100644 --- a/lfs/cups +++ b/lfs/cups @@ -91,7 +91,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/cups /etc/rc.d/init.d + install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/cups /etc/rc.d/init.d cp -fv $(DIR_SRC)/config/cups/cupsd.conf /var/ipfire/cups/ @rm -rf $(DIR_APP) diff --git a/src/initscripts/init.d/cups b/src/initscripts/init.d/packages/cups similarity index 100% rename from src/initscripts/init.d/cups rename to src/initscripts/init.d/packages/cups From cb144b4f8a854d911401b9ed6d7ef2916eb2dc50 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 11:21:17 +0100 Subject: [PATCH 107/464] Move the initscripts of the libvirt package into the packages directory Signed-off-by: Jonatan Schlag --- lfs/libvirt | 4 ++-- src/initscripts/init.d/{ => packages}/libvirtd | 0 src/initscripts/init.d/{ => packages}/virtlogd | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/initscripts/init.d/{ => packages}/libvirtd (100%) rename src/initscripts/init.d/{ => packages}/virtlogd (100%) diff --git a/lfs/libvirt b/lfs/libvirt index 996d32ecd..d14502997 100644 --- a/lfs/libvirt +++ b/lfs/libvirt @@ -89,8 +89,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --without-storage-scsi --without-storage-mpath --without-storage-disk --without-storage-rbd --without-storage-sheepdog --without-storage-gluster --without-storage-zfs cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/libvirtd /etc/rc.d/init.d/libvirtd - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/virtlogd /etc/rc.d/init.d/virtlogd + install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/libvirtd /etc/rc.d/init.d/libvirtd + install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/virtlogd /etc/rc.d/init.d/virtlogd mv /usr/libexec/libvirt-guests.sh /etc/rc.d/init.d/libvirt-guests # Backup install -v -m 644 $(DIR_SRC)/config/backup/includes/libvirt /var/ipfire/backup/addons/includes/libvirt diff --git a/src/initscripts/init.d/libvirtd b/src/initscripts/init.d/packages/libvirtd similarity index 100% rename from src/initscripts/init.d/libvirtd rename to src/initscripts/init.d/packages/libvirtd diff --git a/src/initscripts/init.d/virtlogd b/src/initscripts/init.d/packages/virtlogd similarity index 100% rename from src/initscripts/init.d/virtlogd rename to src/initscripts/init.d/packages/virtlogd From c6060f2dcf49f2a20406485d0507cb14a513b44b Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 11:24:00 +0100 Subject: [PATCH 108/464] Move the initscript of the hostapd package into the packages directory Signed-off-by: Jonatan Schlag --- lfs/hostapd | 2 ++ src/initscripts/init.d/{ => packages}/hostapd | 0 2 files changed, 2 insertions(+) rename src/initscripts/init.d/{ => packages}/hostapd (100%) diff --git a/lfs/hostapd b/lfs/hostapd index a4fe99a92..5e88b6410 100644 --- a/lfs/hostapd +++ b/lfs/hostapd @@ -83,6 +83,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/hostapd && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP)/hostapd && make install install -v -m 644 $(DIR_SRC)/config/backup/includes/hostapd /var/ipfire/backup/addons/includes/hostapd + # install initscript + install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/hostapd /etc/rc.d/init.d/hostapd mkdir -p /var/ipfire/wlanap touch /var/ipfire/wlanap/settings cp -vrf $(DIR_SRC)/config/hostapd/hostapd.conf /var/ipfire/wlanap/hostapd.conf diff --git a/src/initscripts/init.d/hostapd b/src/initscripts/init.d/packages/hostapd similarity index 100% rename from src/initscripts/init.d/hostapd rename to src/initscripts/init.d/packages/hostapd From 33f53d55ccec436a6cbd80ea469ea4a558528798 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 11:54:00 +0100 Subject: [PATCH 109/464] Move all initscripts for the system to src/initscripts/system Signed-off-by: Jonatan Schlag --- lfs/initscripts | 2 +- src/initscripts/{init.d/common => system}/acpid | 0 src/initscripts/{init.d/common => system}/apache | 0 src/initscripts/{init.d/common => system}/beep | 0 src/initscripts/{init.d/common => system}/checkfs | 0 src/initscripts/{init.d/common => system}/cleanfs | 0 src/initscripts/{init.d/common => system}/collectd | 0 src/initscripts/{init.d/common => system}/connectd | 0 src/initscripts/{init.d/common => system}/console | 0 src/initscripts/{init.d/common => system}/dhcp | 0 src/initscripts/{init.d/common => system}/dhcrelay | 0 src/initscripts/{init.d/common => system}/fcron | 0 src/initscripts/{init.d/common => system}/fireinfo | 0 src/initscripts/{init.d/common => system}/firewall | 0 src/initscripts/{init.d/common => system}/firstsetup | 0 src/initscripts/{init.d/common => system}/fsresize | 0 src/initscripts/{init.d/common => system}/functions | 0 src/initscripts/{init.d/common => system}/halt | 0 src/initscripts/{init.d/common => system}/ipsec | 0 src/initscripts/{init.d/common => system}/leds | 0 src/initscripts/{init.d/common => system}/localnet | 0 src/initscripts/{init.d/common => system}/mISDN | 0 src/initscripts/{init.d/common => system}/modules | 0 src/initscripts/{init.d/common => system}/mountfs | 0 src/initscripts/{init.d/common => system}/mountkernfs | 0 src/initscripts/{init.d/common => system}/mounttmpfs | 0 src/initscripts/{init.d/common => system}/network | 0 src/initscripts/{init.d/common => system}/network-trigger | 0 src/initscripts/{init.d/common => system}/ntp | 0 src/initscripts/{init.d/common => system}/partresize | 0 src/initscripts/{init.d/common => system}/random | 0 src/initscripts/{init.d/common => system}/rc | 0 src/initscripts/{init.d/common => system}/reboot | 0 src/initscripts/{init.d/common => system}/rngd | 0 src/initscripts/{init.d/common => system}/sendsignals | 0 src/initscripts/{init.d/common => system}/setclock | 0 src/initscripts/{init.d/common => system}/smartenabler | 0 src/initscripts/{init.d/common => system}/snort | 0 src/initscripts/{init.d/common => system}/squid | 0 src/initscripts/{init.d/common => system}/sshd | 0 src/initscripts/{init.d/common => system}/static-routes | 0 src/initscripts/{init.d/common => system}/swap | 0 src/initscripts/{init.d/common => system}/swconfig | 0 src/initscripts/{init.d/common => system}/sysctl | 0 src/initscripts/{init.d/common => system}/sysklogd | 0 src/initscripts/{init.d/common => system}/template | 0 src/initscripts/{init.d/common => system}/udev | 0 src/initscripts/{init.d/common => system}/udev_retry | 0 src/initscripts/{init.d/common => system}/unbound | 0 src/initscripts/{init.d/common => system}/upnpd | 0 src/initscripts/{init.d/common => system}/vnstat | 0 src/initscripts/{init.d/common => system}/waitdrives | 0 src/initscripts/{init.d/common => system}/wlanclient | 0 53 files changed, 1 insertion(+), 1 deletion(-) rename src/initscripts/{init.d/common => system}/acpid (100%) rename src/initscripts/{init.d/common => system}/apache (100%) rename src/initscripts/{init.d/common => system}/beep (100%) rename src/initscripts/{init.d/common => system}/checkfs (100%) rename src/initscripts/{init.d/common => system}/cleanfs (100%) rename src/initscripts/{init.d/common => system}/collectd (100%) rename src/initscripts/{init.d/common => system}/connectd (100%) rename src/initscripts/{init.d/common => system}/console (100%) rename src/initscripts/{init.d/common => system}/dhcp (100%) rename src/initscripts/{init.d/common => system}/dhcrelay (100%) rename src/initscripts/{init.d/common => system}/fcron (100%) rename src/initscripts/{init.d/common => system}/fireinfo (100%) rename src/initscripts/{init.d/common => system}/firewall (100%) rename src/initscripts/{init.d/common => system}/firstsetup (100%) rename src/initscripts/{init.d/common => system}/fsresize (100%) rename src/initscripts/{init.d/common => system}/functions (100%) rename src/initscripts/{init.d/common => system}/halt (100%) rename src/initscripts/{init.d/common => system}/ipsec (100%) rename src/initscripts/{init.d/common => system}/leds (100%) rename src/initscripts/{init.d/common => system}/localnet (100%) rename src/initscripts/{init.d/common => system}/mISDN (100%) rename src/initscripts/{init.d/common => system}/modules (100%) rename src/initscripts/{init.d/common => system}/mountfs (100%) rename src/initscripts/{init.d/common => system}/mountkernfs (100%) rename src/initscripts/{init.d/common => system}/mounttmpfs (100%) rename src/initscripts/{init.d/common => system}/network (100%) rename src/initscripts/{init.d/common => system}/network-trigger (100%) rename src/initscripts/{init.d/common => system}/ntp (100%) rename src/initscripts/{init.d/common => system}/partresize (100%) rename src/initscripts/{init.d/common => system}/random (100%) rename src/initscripts/{init.d/common => system}/rc (100%) rename src/initscripts/{init.d/common => system}/reboot (100%) rename src/initscripts/{init.d/common => system}/rngd (100%) rename src/initscripts/{init.d/common => system}/sendsignals (100%) rename src/initscripts/{init.d/common => system}/setclock (100%) rename src/initscripts/{init.d/common => system}/smartenabler (100%) rename src/initscripts/{init.d/common => system}/snort (100%) rename src/initscripts/{init.d/common => system}/squid (100%) rename src/initscripts/{init.d/common => system}/sshd (100%) rename src/initscripts/{init.d/common => system}/static-routes (100%) rename src/initscripts/{init.d/common => system}/swap (100%) rename src/initscripts/{init.d/common => system}/swconfig (100%) rename src/initscripts/{init.d/common => system}/sysctl (100%) rename src/initscripts/{init.d/common => system}/sysklogd (100%) rename src/initscripts/{init.d/common => system}/template (100%) rename src/initscripts/{init.d/common => system}/udev (100%) rename src/initscripts/{init.d/common => system}/udev_retry (100%) rename src/initscripts/{init.d/common => system}/unbound (100%) rename src/initscripts/{init.d/common => system}/upnpd (100%) rename src/initscripts/{init.d/common => system}/vnstat (100%) rename src/initscripts/{init.d/common => system}/waitdrives (100%) rename src/initscripts/{init.d/common => system}/wlanclient (100%) diff --git a/lfs/initscripts b/lfs/initscripts index 61d08df4c..dd29a8191 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -64,7 +64,7 @@ $(TARGET) : # Create default ramdisk configuration echo "RAMDISK_MODE=0" > /etc/sysconfig/ramdisk - for i in $(DIR_SRC)/src/initscripts/init.d/common/*; do \ + for i in $(DIR_SRC)/src/initscripts/system/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/; \ done chmod 644 /etc/rc.d/init.d/functions diff --git a/src/initscripts/init.d/common/acpid b/src/initscripts/system/acpid similarity index 100% rename from src/initscripts/init.d/common/acpid rename to src/initscripts/system/acpid diff --git a/src/initscripts/init.d/common/apache b/src/initscripts/system/apache similarity index 100% rename from src/initscripts/init.d/common/apache rename to src/initscripts/system/apache diff --git a/src/initscripts/init.d/common/beep b/src/initscripts/system/beep similarity index 100% rename from src/initscripts/init.d/common/beep rename to src/initscripts/system/beep diff --git a/src/initscripts/init.d/common/checkfs b/src/initscripts/system/checkfs similarity index 100% rename from src/initscripts/init.d/common/checkfs rename to src/initscripts/system/checkfs diff --git a/src/initscripts/init.d/common/cleanfs b/src/initscripts/system/cleanfs similarity index 100% rename from src/initscripts/init.d/common/cleanfs rename to src/initscripts/system/cleanfs diff --git a/src/initscripts/init.d/common/collectd b/src/initscripts/system/collectd similarity index 100% rename from src/initscripts/init.d/common/collectd rename to src/initscripts/system/collectd diff --git a/src/initscripts/init.d/common/connectd b/src/initscripts/system/connectd similarity index 100% rename from src/initscripts/init.d/common/connectd rename to src/initscripts/system/connectd diff --git a/src/initscripts/init.d/common/console b/src/initscripts/system/console similarity index 100% rename from src/initscripts/init.d/common/console rename to src/initscripts/system/console diff --git a/src/initscripts/init.d/common/dhcp b/src/initscripts/system/dhcp similarity index 100% rename from src/initscripts/init.d/common/dhcp rename to src/initscripts/system/dhcp diff --git a/src/initscripts/init.d/common/dhcrelay b/src/initscripts/system/dhcrelay similarity index 100% rename from src/initscripts/init.d/common/dhcrelay rename to src/initscripts/system/dhcrelay diff --git a/src/initscripts/init.d/common/fcron b/src/initscripts/system/fcron similarity index 100% rename from src/initscripts/init.d/common/fcron rename to src/initscripts/system/fcron diff --git a/src/initscripts/init.d/common/fireinfo b/src/initscripts/system/fireinfo similarity index 100% rename from src/initscripts/init.d/common/fireinfo rename to src/initscripts/system/fireinfo diff --git a/src/initscripts/init.d/common/firewall b/src/initscripts/system/firewall similarity index 100% rename from src/initscripts/init.d/common/firewall rename to src/initscripts/system/firewall diff --git a/src/initscripts/init.d/common/firstsetup b/src/initscripts/system/firstsetup similarity index 100% rename from src/initscripts/init.d/common/firstsetup rename to src/initscripts/system/firstsetup diff --git a/src/initscripts/init.d/common/fsresize b/src/initscripts/system/fsresize similarity index 100% rename from src/initscripts/init.d/common/fsresize rename to src/initscripts/system/fsresize diff --git a/src/initscripts/init.d/common/functions b/src/initscripts/system/functions similarity index 100% rename from src/initscripts/init.d/common/functions rename to src/initscripts/system/functions diff --git a/src/initscripts/init.d/common/halt b/src/initscripts/system/halt similarity index 100% rename from src/initscripts/init.d/common/halt rename to src/initscripts/system/halt diff --git a/src/initscripts/init.d/common/ipsec b/src/initscripts/system/ipsec similarity index 100% rename from src/initscripts/init.d/common/ipsec rename to src/initscripts/system/ipsec diff --git a/src/initscripts/init.d/common/leds b/src/initscripts/system/leds similarity index 100% rename from src/initscripts/init.d/common/leds rename to src/initscripts/system/leds diff --git a/src/initscripts/init.d/common/localnet b/src/initscripts/system/localnet similarity index 100% rename from src/initscripts/init.d/common/localnet rename to src/initscripts/system/localnet diff --git a/src/initscripts/init.d/common/mISDN b/src/initscripts/system/mISDN similarity index 100% rename from src/initscripts/init.d/common/mISDN rename to src/initscripts/system/mISDN diff --git a/src/initscripts/init.d/common/modules b/src/initscripts/system/modules similarity index 100% rename from src/initscripts/init.d/common/modules rename to src/initscripts/system/modules diff --git a/src/initscripts/init.d/common/mountfs b/src/initscripts/system/mountfs similarity index 100% rename from src/initscripts/init.d/common/mountfs rename to src/initscripts/system/mountfs diff --git a/src/initscripts/init.d/common/mountkernfs b/src/initscripts/system/mountkernfs similarity index 100% rename from src/initscripts/init.d/common/mountkernfs rename to src/initscripts/system/mountkernfs diff --git a/src/initscripts/init.d/common/mounttmpfs b/src/initscripts/system/mounttmpfs similarity index 100% rename from src/initscripts/init.d/common/mounttmpfs rename to src/initscripts/system/mounttmpfs diff --git a/src/initscripts/init.d/common/network b/src/initscripts/system/network similarity index 100% rename from src/initscripts/init.d/common/network rename to src/initscripts/system/network diff --git a/src/initscripts/init.d/common/network-trigger b/src/initscripts/system/network-trigger similarity index 100% rename from src/initscripts/init.d/common/network-trigger rename to src/initscripts/system/network-trigger diff --git a/src/initscripts/init.d/common/ntp b/src/initscripts/system/ntp similarity index 100% rename from src/initscripts/init.d/common/ntp rename to src/initscripts/system/ntp diff --git a/src/initscripts/init.d/common/partresize b/src/initscripts/system/partresize similarity index 100% rename from src/initscripts/init.d/common/partresize rename to src/initscripts/system/partresize diff --git a/src/initscripts/init.d/common/random b/src/initscripts/system/random similarity index 100% rename from src/initscripts/init.d/common/random rename to src/initscripts/system/random diff --git a/src/initscripts/init.d/common/rc b/src/initscripts/system/rc similarity index 100% rename from src/initscripts/init.d/common/rc rename to src/initscripts/system/rc diff --git a/src/initscripts/init.d/common/reboot b/src/initscripts/system/reboot similarity index 100% rename from src/initscripts/init.d/common/reboot rename to src/initscripts/system/reboot diff --git a/src/initscripts/init.d/common/rngd b/src/initscripts/system/rngd similarity index 100% rename from src/initscripts/init.d/common/rngd rename to src/initscripts/system/rngd diff --git a/src/initscripts/init.d/common/sendsignals b/src/initscripts/system/sendsignals similarity index 100% rename from src/initscripts/init.d/common/sendsignals rename to src/initscripts/system/sendsignals diff --git a/src/initscripts/init.d/common/setclock b/src/initscripts/system/setclock similarity index 100% rename from src/initscripts/init.d/common/setclock rename to src/initscripts/system/setclock diff --git a/src/initscripts/init.d/common/smartenabler b/src/initscripts/system/smartenabler similarity index 100% rename from src/initscripts/init.d/common/smartenabler rename to src/initscripts/system/smartenabler diff --git a/src/initscripts/init.d/common/snort b/src/initscripts/system/snort similarity index 100% rename from src/initscripts/init.d/common/snort rename to src/initscripts/system/snort diff --git a/src/initscripts/init.d/common/squid b/src/initscripts/system/squid similarity index 100% rename from src/initscripts/init.d/common/squid rename to src/initscripts/system/squid diff --git a/src/initscripts/init.d/common/sshd b/src/initscripts/system/sshd similarity index 100% rename from src/initscripts/init.d/common/sshd rename to src/initscripts/system/sshd diff --git a/src/initscripts/init.d/common/static-routes b/src/initscripts/system/static-routes similarity index 100% rename from src/initscripts/init.d/common/static-routes rename to src/initscripts/system/static-routes diff --git a/src/initscripts/init.d/common/swap b/src/initscripts/system/swap similarity index 100% rename from src/initscripts/init.d/common/swap rename to src/initscripts/system/swap diff --git a/src/initscripts/init.d/common/swconfig b/src/initscripts/system/swconfig similarity index 100% rename from src/initscripts/init.d/common/swconfig rename to src/initscripts/system/swconfig diff --git a/src/initscripts/init.d/common/sysctl b/src/initscripts/system/sysctl similarity index 100% rename from src/initscripts/init.d/common/sysctl rename to src/initscripts/system/sysctl diff --git a/src/initscripts/init.d/common/sysklogd b/src/initscripts/system/sysklogd similarity index 100% rename from src/initscripts/init.d/common/sysklogd rename to src/initscripts/system/sysklogd diff --git a/src/initscripts/init.d/common/template b/src/initscripts/system/template similarity index 100% rename from src/initscripts/init.d/common/template rename to src/initscripts/system/template diff --git a/src/initscripts/init.d/common/udev b/src/initscripts/system/udev similarity index 100% rename from src/initscripts/init.d/common/udev rename to src/initscripts/system/udev diff --git a/src/initscripts/init.d/common/udev_retry b/src/initscripts/system/udev_retry similarity index 100% rename from src/initscripts/init.d/common/udev_retry rename to src/initscripts/system/udev_retry diff --git a/src/initscripts/init.d/common/unbound b/src/initscripts/system/unbound similarity index 100% rename from src/initscripts/init.d/common/unbound rename to src/initscripts/system/unbound diff --git a/src/initscripts/init.d/common/upnpd b/src/initscripts/system/upnpd similarity index 100% rename from src/initscripts/init.d/common/upnpd rename to src/initscripts/system/upnpd diff --git a/src/initscripts/init.d/common/vnstat b/src/initscripts/system/vnstat similarity index 100% rename from src/initscripts/init.d/common/vnstat rename to src/initscripts/system/vnstat diff --git a/src/initscripts/init.d/common/waitdrives b/src/initscripts/system/waitdrives similarity index 100% rename from src/initscripts/init.d/common/waitdrives rename to src/initscripts/system/waitdrives diff --git a/src/initscripts/init.d/common/wlanclient b/src/initscripts/system/wlanclient similarity index 100% rename from src/initscripts/init.d/common/wlanclient rename to src/initscripts/system/wlanclient From 629fcb1d47d686c6182b3ed9e0e49650f40cc6e1 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 11:57:20 +0100 Subject: [PATCH 110/464] Move network initscripts to src/initscripts/networking Signed-off-by: Jonatan Schlag --- lfs/initscripts | 6 +++--- src/initscripts/{init.d => }/networking/any | 0 src/initscripts/{init.d => }/networking/dhcpcd.exe | 0 src/initscripts/{init.d => }/networking/functions.network | 0 src/initscripts/{init.d => }/networking/red | 0 .../networking/red.down/05-update-dns-forwarders | 0 src/initscripts/{init.d => }/networking/red.down/10-ipsec | 0 .../{init.d => }/networking/red.down/10-miniupnpd | 0 src/initscripts/{init.d => }/networking/red.down/10-ovpn | 0 .../{init.d => }/networking/red.down/10-static-routes | 0 .../{init.d => }/networking/red.down/20-firewall | 0 .../{init.d => }/networking/red.up/01-conntrack-cleanup | 0 .../{init.d => }/networking/red.up/05-update-dns-forwarders | 0 src/initscripts/{init.d => }/networking/red.up/10-miniupnpd | 0 src/initscripts/{init.d => }/networking/red.up/10-multicast | 0 .../{init.d => }/networking/red.up/10-static-routes | 0 src/initscripts/{init.d => }/networking/red.up/20-firewall | 0 src/initscripts/{init.d => }/networking/red.up/30-ddns | 0 src/initscripts/{init.d => }/networking/red.up/35-guardian | 0 src/initscripts/{init.d => }/networking/red.up/50-ipsec | 0 src/initscripts/{init.d => }/networking/red.up/50-ovpn | 0 src/initscripts/{init.d => }/networking/red.up/98-leds | 0 src/initscripts/{init.d => }/networking/red.up/99-fireinfo | 0 .../{init.d => }/networking/red.up/99-geoip-database | 0 .../{init.d => }/networking/red.up/99-pakfire-update | 0 src/initscripts/{init.d => }/networking/wpa_supplicant.exe | 0 26 files changed, 3 insertions(+), 3 deletions(-) rename src/initscripts/{init.d => }/networking/any (100%) rename src/initscripts/{init.d => }/networking/dhcpcd.exe (100%) rename src/initscripts/{init.d => }/networking/functions.network (100%) rename src/initscripts/{init.d => }/networking/red (100%) rename src/initscripts/{init.d => }/networking/red.down/05-update-dns-forwarders (100%) rename src/initscripts/{init.d => }/networking/red.down/10-ipsec (100%) rename src/initscripts/{init.d => }/networking/red.down/10-miniupnpd (100%) rename src/initscripts/{init.d => }/networking/red.down/10-ovpn (100%) rename src/initscripts/{init.d => }/networking/red.down/10-static-routes (100%) rename src/initscripts/{init.d => }/networking/red.down/20-firewall (100%) rename src/initscripts/{init.d => }/networking/red.up/01-conntrack-cleanup (100%) rename src/initscripts/{init.d => }/networking/red.up/05-update-dns-forwarders (100%) rename src/initscripts/{init.d => }/networking/red.up/10-miniupnpd (100%) rename src/initscripts/{init.d => }/networking/red.up/10-multicast (100%) rename src/initscripts/{init.d => }/networking/red.up/10-static-routes (100%) rename src/initscripts/{init.d => }/networking/red.up/20-firewall (100%) rename src/initscripts/{init.d => }/networking/red.up/30-ddns (100%) rename src/initscripts/{init.d => }/networking/red.up/35-guardian (100%) rename src/initscripts/{init.d => }/networking/red.up/50-ipsec (100%) rename src/initscripts/{init.d => }/networking/red.up/50-ovpn (100%) rename src/initscripts/{init.d => }/networking/red.up/98-leds (100%) rename src/initscripts/{init.d => }/networking/red.up/99-fireinfo (100%) rename src/initscripts/{init.d => }/networking/red.up/99-geoip-database (100%) rename src/initscripts/{init.d => }/networking/red.up/99-pakfire-update (100%) rename src/initscripts/{init.d => }/networking/wpa_supplicant.exe (100%) diff --git a/lfs/initscripts b/lfs/initscripts index dd29a8191..ef7114c90 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -69,17 +69,17 @@ $(TARGET) : done chmod 644 /etc/rc.d/init.d/functions - for i in $(DIR_SRC)/src/initscripts/init.d/networking/*; do \ + for i in $(DIR_SRC)/src/initscripts/networking/*; do \ if [ -f $$i ]; then \ install -v -m 754 $$i /etc/rc.d/init.d/networking/; \ fi; \ done - for i in $(DIR_SRC)/src/initscripts/init.d/networking/red.up/*; do \ + for i in $(DIR_SRC)/src/initscripts/networking/red.up/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/networking/red.up/; \ done - for i in $(DIR_SRC)/src/initscripts/init.d/networking/red.down/*; do \ + for i in $(DIR_SRC)/src/initscripts/networking/red.down/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/networking/red.down/; \ done diff --git a/src/initscripts/init.d/networking/any b/src/initscripts/networking/any similarity index 100% rename from src/initscripts/init.d/networking/any rename to src/initscripts/networking/any diff --git a/src/initscripts/init.d/networking/dhcpcd.exe b/src/initscripts/networking/dhcpcd.exe similarity index 100% rename from src/initscripts/init.d/networking/dhcpcd.exe rename to src/initscripts/networking/dhcpcd.exe diff --git a/src/initscripts/init.d/networking/functions.network b/src/initscripts/networking/functions.network similarity index 100% rename from src/initscripts/init.d/networking/functions.network rename to src/initscripts/networking/functions.network diff --git a/src/initscripts/init.d/networking/red b/src/initscripts/networking/red similarity index 100% rename from src/initscripts/init.d/networking/red rename to src/initscripts/networking/red diff --git a/src/initscripts/init.d/networking/red.down/05-update-dns-forwarders b/src/initscripts/networking/red.down/05-update-dns-forwarders similarity index 100% rename from src/initscripts/init.d/networking/red.down/05-update-dns-forwarders rename to src/initscripts/networking/red.down/05-update-dns-forwarders diff --git a/src/initscripts/init.d/networking/red.down/10-ipsec b/src/initscripts/networking/red.down/10-ipsec similarity index 100% rename from src/initscripts/init.d/networking/red.down/10-ipsec rename to src/initscripts/networking/red.down/10-ipsec diff --git a/src/initscripts/init.d/networking/red.down/10-miniupnpd b/src/initscripts/networking/red.down/10-miniupnpd similarity index 100% rename from src/initscripts/init.d/networking/red.down/10-miniupnpd rename to src/initscripts/networking/red.down/10-miniupnpd diff --git a/src/initscripts/init.d/networking/red.down/10-ovpn b/src/initscripts/networking/red.down/10-ovpn similarity index 100% rename from src/initscripts/init.d/networking/red.down/10-ovpn rename to src/initscripts/networking/red.down/10-ovpn diff --git a/src/initscripts/init.d/networking/red.down/10-static-routes b/src/initscripts/networking/red.down/10-static-routes similarity index 100% rename from src/initscripts/init.d/networking/red.down/10-static-routes rename to src/initscripts/networking/red.down/10-static-routes diff --git a/src/initscripts/init.d/networking/red.down/20-firewall b/src/initscripts/networking/red.down/20-firewall similarity index 100% rename from src/initscripts/init.d/networking/red.down/20-firewall rename to src/initscripts/networking/red.down/20-firewall diff --git a/src/initscripts/init.d/networking/red.up/01-conntrack-cleanup b/src/initscripts/networking/red.up/01-conntrack-cleanup similarity index 100% rename from src/initscripts/init.d/networking/red.up/01-conntrack-cleanup rename to src/initscripts/networking/red.up/01-conntrack-cleanup diff --git a/src/initscripts/init.d/networking/red.up/05-update-dns-forwarders b/src/initscripts/networking/red.up/05-update-dns-forwarders similarity index 100% rename from src/initscripts/init.d/networking/red.up/05-update-dns-forwarders rename to src/initscripts/networking/red.up/05-update-dns-forwarders diff --git a/src/initscripts/init.d/networking/red.up/10-miniupnpd b/src/initscripts/networking/red.up/10-miniupnpd similarity index 100% rename from src/initscripts/init.d/networking/red.up/10-miniupnpd rename to src/initscripts/networking/red.up/10-miniupnpd diff --git a/src/initscripts/init.d/networking/red.up/10-multicast b/src/initscripts/networking/red.up/10-multicast similarity index 100% rename from src/initscripts/init.d/networking/red.up/10-multicast rename to src/initscripts/networking/red.up/10-multicast diff --git a/src/initscripts/init.d/networking/red.up/10-static-routes b/src/initscripts/networking/red.up/10-static-routes similarity index 100% rename from src/initscripts/init.d/networking/red.up/10-static-routes rename to src/initscripts/networking/red.up/10-static-routes diff --git a/src/initscripts/init.d/networking/red.up/20-firewall b/src/initscripts/networking/red.up/20-firewall similarity index 100% rename from src/initscripts/init.d/networking/red.up/20-firewall rename to src/initscripts/networking/red.up/20-firewall diff --git a/src/initscripts/init.d/networking/red.up/30-ddns b/src/initscripts/networking/red.up/30-ddns similarity index 100% rename from src/initscripts/init.d/networking/red.up/30-ddns rename to src/initscripts/networking/red.up/30-ddns diff --git a/src/initscripts/init.d/networking/red.up/35-guardian b/src/initscripts/networking/red.up/35-guardian similarity index 100% rename from src/initscripts/init.d/networking/red.up/35-guardian rename to src/initscripts/networking/red.up/35-guardian diff --git a/src/initscripts/init.d/networking/red.up/50-ipsec b/src/initscripts/networking/red.up/50-ipsec similarity index 100% rename from src/initscripts/init.d/networking/red.up/50-ipsec rename to src/initscripts/networking/red.up/50-ipsec diff --git a/src/initscripts/init.d/networking/red.up/50-ovpn b/src/initscripts/networking/red.up/50-ovpn similarity index 100% rename from src/initscripts/init.d/networking/red.up/50-ovpn rename to src/initscripts/networking/red.up/50-ovpn diff --git a/src/initscripts/init.d/networking/red.up/98-leds b/src/initscripts/networking/red.up/98-leds similarity index 100% rename from src/initscripts/init.d/networking/red.up/98-leds rename to src/initscripts/networking/red.up/98-leds diff --git a/src/initscripts/init.d/networking/red.up/99-fireinfo b/src/initscripts/networking/red.up/99-fireinfo similarity index 100% rename from src/initscripts/init.d/networking/red.up/99-fireinfo rename to src/initscripts/networking/red.up/99-fireinfo diff --git a/src/initscripts/init.d/networking/red.up/99-geoip-database b/src/initscripts/networking/red.up/99-geoip-database similarity index 100% rename from src/initscripts/init.d/networking/red.up/99-geoip-database rename to src/initscripts/networking/red.up/99-geoip-database diff --git a/src/initscripts/init.d/networking/red.up/99-pakfire-update b/src/initscripts/networking/red.up/99-pakfire-update similarity index 100% rename from src/initscripts/init.d/networking/red.up/99-pakfire-update rename to src/initscripts/networking/red.up/99-pakfire-update diff --git a/src/initscripts/init.d/networking/wpa_supplicant.exe b/src/initscripts/networking/wpa_supplicant.exe similarity index 100% rename from src/initscripts/init.d/networking/wpa_supplicant.exe rename to src/initscripts/networking/wpa_supplicant.exe From 38888b3d927ddd5b47de337cf197494d4a53de7b Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 12:20:09 +0100 Subject: [PATCH 111/464] Add new make macro for installing initscripts We also move the initscript for also to src/initscripts/packages and use this new macro to install the initscript Signed-off-by: Jonatan Schlag --- lfs/Config | 7 +++++++ lfs/alsa | 2 ++ src/initscripts/{init.d => packages}/alsa | 0 3 files changed, 9 insertions(+) rename src/initscripts/{init.d => packages}/alsa (100%) diff --git a/lfs/Config b/lfs/Config index 4de8bd34c..3101d8b5a 100644 --- a/lfs/Config +++ b/lfs/Config @@ -206,3 +206,10 @@ define PAK -e s/SIZE/`ls -l \/install\/packages\/$(PROG)-$(VER)-$(PAK_VER).ipfire | awk '{ print $$5 }'`/g \ < /usr/src/src/pakfire/meta > /install/packages/meta-$(PROG) endef + +define INSTALL_INITSCRIPT + install -m 754 -v $(DIR_SRC)/src/initscripts/packages/$(1) /etc/rc.d/init.d/$(1) +endef + +test: + $(call INSTALL_INITSCRIPT,hostapd) diff --git a/lfs/alsa b/lfs/alsa index b9c3bb452..72ea70d20 100644 --- a/lfs/alsa +++ b/lfs/alsa @@ -99,5 +99,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_SRC)/alsa-firmware-$(FVER) && ./configure cd $(DIR_SRC)/alsa-firmware-$(FVER) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_SRC)/alsa-firmware-$(FVER) && make install + # install initscript + $(call INSTALL_INITSCRIPT,alsa) @rm -rf $(DIR_SRC)/alsa* @$(POSTBUILD) diff --git a/src/initscripts/init.d/alsa b/src/initscripts/packages/alsa similarity index 100% rename from src/initscripts/init.d/alsa rename to src/initscripts/packages/alsa From be2732c2171613d98f830ef0f6da313424060c3b Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 12:26:54 +0100 Subject: [PATCH 112/464] Install initscript with the new macro - Move the cups initscript to src/initscripts/packages --- lfs/cups | 3 ++- src/initscripts/{init.d => }/packages/cups | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename src/initscripts/{init.d => }/packages/cups (100%) diff --git a/lfs/cups b/lfs/cups index c7e2549e7..f94bb6d24 100644 --- a/lfs/cups +++ b/lfs/cups @@ -91,7 +91,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/cups /etc/rc.d/init.d + # install initscript + $(call INSTALL_INITSCRIPT,cups) cp -fv $(DIR_SRC)/config/cups/cupsd.conf /var/ipfire/cups/ @rm -rf $(DIR_APP) diff --git a/src/initscripts/init.d/packages/cups b/src/initscripts/packages/cups similarity index 100% rename from src/initscripts/init.d/packages/cups rename to src/initscripts/packages/cups From 6a4df2fd3b375c77bbdb99a0bb8b952f7116a3f8 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 13:13:49 +0100 Subject: [PATCH 113/464] Move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/hostapd | 2 +- src/initscripts/{init.d => }/packages/hostapd | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/initscripts/{init.d => }/packages/hostapd (100%) diff --git a/lfs/hostapd b/lfs/hostapd index 5e88b6410..1a2436caa 100644 --- a/lfs/hostapd +++ b/lfs/hostapd @@ -84,7 +84,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/hostapd && make install install -v -m 644 $(DIR_SRC)/config/backup/includes/hostapd /var/ipfire/backup/addons/includes/hostapd # install initscript - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/hostapd /etc/rc.d/init.d/hostapd + $(call INSTALL_INITSCRIPT,hostapd) mkdir -p /var/ipfire/wlanap touch /var/ipfire/wlanap/settings cp -vrf $(DIR_SRC)/config/hostapd/hostapd.conf /var/ipfire/wlanap/hostapd.conf diff --git a/src/initscripts/init.d/packages/hostapd b/src/initscripts/packages/hostapd similarity index 100% rename from src/initscripts/init.d/packages/hostapd rename to src/initscripts/packages/hostapd From c8b7d517d0e687d72bc71816f0f26581a0145edf Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 13:16:12 +0100 Subject: [PATCH 114/464] Libvirt: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/libvirt | 5 +++-- src/initscripts/{init.d => }/packages/libvirtd | 0 src/initscripts/{init.d => }/packages/virtlogd | 0 3 files changed, 3 insertions(+), 2 deletions(-) rename src/initscripts/{init.d => }/packages/libvirtd (100%) rename src/initscripts/{init.d => }/packages/virtlogd (100%) diff --git a/lfs/libvirt b/lfs/libvirt index d14502997..5a9548d49 100644 --- a/lfs/libvirt +++ b/lfs/libvirt @@ -89,8 +89,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --without-storage-scsi --without-storage-mpath --without-storage-disk --without-storage-rbd --without-storage-sheepdog --without-storage-gluster --without-storage-zfs cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/libvirtd /etc/rc.d/init.d/libvirtd - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/packages/virtlogd /etc/rc.d/init.d/virtlogd + #install initscripts + $(call INSTALL_INITSCRIPT,libvirtd) + $(call INSTALL_INITSCRIPT,virtlogd) mv /usr/libexec/libvirt-guests.sh /etc/rc.d/init.d/libvirt-guests # Backup install -v -m 644 $(DIR_SRC)/config/backup/includes/libvirt /var/ipfire/backup/addons/includes/libvirt diff --git a/src/initscripts/init.d/packages/libvirtd b/src/initscripts/packages/libvirtd similarity index 100% rename from src/initscripts/init.d/packages/libvirtd rename to src/initscripts/packages/libvirtd diff --git a/src/initscripts/init.d/packages/virtlogd b/src/initscripts/packages/virtlogd similarity index 100% rename from src/initscripts/init.d/packages/virtlogd rename to src/initscripts/packages/virtlogd From 1f68460f5afd37e4a58959a006e09f10fe1c0cff Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 16:11:57 +0100 Subject: [PATCH 115/464] watchdog: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/watchdog | 2 ++ src/initscripts/{init.d => packages}/watchdog | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/watchdog (100%) diff --git a/lfs/watchdog b/lfs/watchdog index 70bf6921e..9bef90728 100644 --- a/lfs/watchdog +++ b/lfs/watchdog @@ -80,6 +80,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + #install initscripts + $(call INSTALL_INITSCRIPT,watchdog) install -v -m 644 $(DIR_SRC)/config/backup/includes/watchdog \ /var/ipfire/backup/addons/includes/watchdog @rm -rf $(DIR_APP) diff --git a/src/initscripts/init.d/watchdog b/src/initscripts/packages/watchdog similarity index 100% rename from src/initscripts/init.d/watchdog rename to src/initscripts/packages/watchdog From db8a26e71877cc698ead7cc6191a020eaa5648bc Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 16:15:06 +0100 Subject: [PATCH 116/464] nfs: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/nfs | 2 ++ src/initscripts/{init.d => packages}/nfs-server | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/nfs-server (100%) diff --git a/lfs/nfs b/lfs/nfs index 23a17739e..2a8e331b5 100644 --- a/lfs/nfs +++ b/lfs/nfs @@ -98,5 +98,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install + #install initscripts + $(call INSTALL_INITSCRIPT,nfs-server) @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/nfs-server b/src/initscripts/packages/nfs-server similarity index 100% rename from src/initscripts/init.d/nfs-server rename to src/initscripts/packages/nfs-server From afb143bd7cd9cdf1c68e33f3f7e2f9cad1900c22 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 17:37:23 +0100 Subject: [PATCH 117/464] clamav: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/clamav | 3 ++- src/initscripts/{init.d => packages}/clamav | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename src/initscripts/{init.d => packages}/clamav (100%) diff --git a/lfs/clamav b/lfs/clamav index 2cd5e493b..650faecbe 100644 --- a/lfs/clamav +++ b/lfs/clamav @@ -95,7 +95,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) rm -rfv /usr/share/clamav/*.cvd mkdir -p /var/run/clamav chown clamav:clamav /var/run/clamav - + #install initscripts + $(call INSTALL_INITSCRIPT,clamav) # Disable PaX mprotect for clamd, clamscan and freshclam paxctl -cm /usr/sbin/clamd paxctl -cm /usr/bin/clamscan diff --git a/src/initscripts/init.d/clamav b/src/initscripts/packages/clamav similarity index 100% rename from src/initscripts/init.d/clamav rename to src/initscripts/packages/clamav From 7db55a67798656f851689863d8401839c8f385a2 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 19:48:38 +0100 Subject: [PATCH 118/464] tor: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/tor | 3 +++ src/initscripts/{init.d => packages}/tor | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/tor (100%) diff --git a/lfs/tor b/lfs/tor index be812e021..4da2c7c73 100644 --- a/lfs/tor +++ b/lfs/tor @@ -107,6 +107,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/tor/defaults-torrc \ /usr/share/tor/defaults-torrc + #install initscripts + $(call INSTALL_INITSCRIPT,tor) + # Install start links and backup include file. ln -sf ../init.d/tor /etc/rc.d/rc3.d/S60tor ln -sf ../init.d/tor /etc/rc.d/rc0.d/K40tor diff --git a/src/initscripts/init.d/tor b/src/initscripts/packages/tor similarity index 100% rename from src/initscripts/init.d/tor rename to src/initscripts/packages/tor From dbb35fa6a4c969696411334280d2e688fc79062e Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 19:50:13 +0100 Subject: [PATCH 119/464] freeradius: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/freeradius | 3 +++ src/initscripts/{init.d => packages}/freeradius | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/freeradius (100%) diff --git a/lfs/freeradius b/lfs/freeradius index d9a80c638..a07a535ab 100644 --- a/lfs/freeradius +++ b/lfs/freeradius @@ -133,5 +133,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/freeradius \ /var/ipfire/backup/addons/includes/freeradius + #install initscripts + $(call INSTALL_INITSCRIPT,freeradius) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/freeradius b/src/initscripts/packages/freeradius similarity index 100% rename from src/initscripts/init.d/freeradius rename to src/initscripts/packages/freeradius From c08b75dbb5fbd3b47adcc0a39bea5d7b1752e948 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 22 Feb 2017 19:51:26 +0100 Subject: [PATCH 120/464] xinetd: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/xinetd | 4 ++++ src/initscripts/{init.d => packages}/xinetd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/xinetd (100%) diff --git a/lfs/xinetd b/lfs/xinetd index 62f34eabb..d3b577b5c 100644 --- a/lfs/xinetd +++ b/lfs/xinetd @@ -81,5 +81,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make install -mkdir -pv /etc/xinetd.d cp -f $(DIR_SRC)/config/xinetd/xinetd.conf /etc/xinetd.conf + + #install initscripts + $(call INSTALL_INITSCRIPT,nfs-server) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/xinetd b/src/initscripts/packages/xinetd similarity index 100% rename from src/initscripts/init.d/xinetd rename to src/initscripts/packages/xinetd From f22bfcf48c6e3014615254922cb4515afec172a7 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 23 Feb 2017 14:21:57 +0100 Subject: [PATCH 121/464] openvmtools: move initscripts to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/openvmtools | 2 ++ src/initscripts/{init.d => packages}/openvmtools | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/openvmtools (100%) diff --git a/lfs/openvmtools b/lfs/openvmtools index 72101d526..1cf9427fe 100644 --- a/lfs/openvmtools +++ b/lfs/openvmtools @@ -90,6 +90,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --without-xerces-c --without-xerces cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + #install initscripts + $(call INSTALL_INITSCRIPT,openvmtools) ln -sf ../init.d/openvmtools /etc/rc.d/rc3.d/S60openvmtools ln -sf ../init.d/openvmtools /etc/rc.d/rc0.d/K01openvmtools ln -sf ../init.d/openvmtools /etc/rc.d/rc6.d/K01openvmtools diff --git a/src/initscripts/init.d/openvmtools b/src/initscripts/packages/openvmtools similarity index 100% rename from src/initscripts/init.d/openvmtools rename to src/initscripts/packages/openvmtools From df7f06eceb31dc8c0392b84d91dc24756bebe947 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 23 Feb 2017 14:23:22 +0100 Subject: [PATCH 122/464] rpcbind: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/rpcbind | 2 ++ src/initscripts/{init.d => packages}/rpcbind | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/rpcbind (100%) diff --git a/lfs/rpcbind b/lfs/rpcbind index e7f9eff08..046121f36 100644 --- a/lfs/rpcbind +++ b/lfs/rpcbind @@ -82,5 +82,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ./configure --prefix=/usr --bindir=/sbin --with-rpcuser=root --without-systemdsystemunitdir --disable-ipv6 cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install + #install initscripts + $(call INSTALL_INITSCRIPT,rpcbind) @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/rpcbind b/src/initscripts/packages/rpcbind similarity index 100% rename from src/initscripts/init.d/rpcbind rename to src/initscripts/packages/rpcbind From ba43a6fee28b7e00c4f5cead38107b3d0300a242 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 23 Feb 2017 14:25:06 +0100 Subject: [PATCH 123/464] guardian: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/guardian | 3 +++ src/initscripts/{init.d => packages}/guardian | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/guardian (100%) diff --git a/lfs/guardian b/lfs/guardian index d3634195e..2120a08a4 100644 --- a/lfs/guardian +++ b/lfs/guardian @@ -93,6 +93,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) -mkdir -pv /var/log/guardian touch /var/log/guardian/guardian.log + #install initscripts + $(call INSTALL_INITSCRIPT,guardian) + # Create symlinks for runlevel interaction. ln -svf /etc/rc.d/init.d/guardian /etc/rc.d/rc3.d/S45guardian ln -svf /etc/rc.d/init.d/guardian /etc/rc.d/rc0.d/K76guardian diff --git a/src/initscripts/init.d/guardian b/src/initscripts/packages/guardian similarity index 100% rename from src/initscripts/init.d/guardian rename to src/initscripts/packages/guardian From e7301348846afeb0e7f27d801bac2f19763e1c53 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Thu, 23 Feb 2017 14:32:08 +0100 Subject: [PATCH 124/464] asterisk: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/asterisk | 3 +++ src/initscripts/{init.d => packages}/asterisk | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/asterisk (100%) diff --git a/lfs/asterisk b/lfs/asterisk index a0276bc56..31f6ec0fe 100755 --- a/lfs/asterisk +++ b/lfs/asterisk @@ -152,6 +152,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # generate softlink (or asterisk will not work properly) ln -sf /var/ipfire/asterisk /etc/asterisk + #install initscripts + $(call INSTALL_INITSCRIPT,asterisk) + # make asterisk start with reboot ln -sf /etc/rc.d/init.d/asterisk /etc/rc.d/rc0.d/K30asterisk ln -sf /etc/rc.d/init.d/asterisk /etc/rc.d/rc6.d/K30asterisk diff --git a/src/initscripts/init.d/asterisk b/src/initscripts/packages/asterisk similarity index 100% rename from src/initscripts/init.d/asterisk rename to src/initscripts/packages/asterisk From f475a017a25a93a80630e7cf4a3c566f4a7a2e0a Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 22 Feb 2017 18:39:40 +0100 Subject: [PATCH 125/464] unbound: Update to 1.6.1 For details see: http://www.unbound.net/download.html "Features configure --enable-systemd and lets unbound use systemd sockets if you enable use-systemd: yes in unbound.conf. Also there are contrib/unbound.socket and contrib/unbound.service: systemd files for unbound, install them in /usr/lib/systemd/system. Contributed by Sami Kerola and Pavel Odintsov. [bugzilla: 1185 ] Source IP rate limiting, patch from Larissa Feng. [bugzilla: 1184 ] Log DNS replies. This includes the same logging information that DNS queries and response code and response size, patch from Larissa Feng. Include root trust anchor id 20326 in unbound-anchor. 64bit is default for windows builds. Bug Fixes [bugzilla: 1176 ] Fix stack size too small for Alpine Linux. Fix unbound-control and ipv6 only. [bugzilla: 1182 ] Fix Resource leak (socket), at startup. [bugzilla: 1178 ] Fix attempt to fix setup error at end, pop result values at end of install. iana portlist update Fix inet_ntop and inet_pton warnings in windows compile. [bugzilla: 1191 ] Fix remove comment about view deletion. [bugzilla: 1188 ] Fix unresolved symbol 'fake_dsa' in libunbound.so when built with Nettle [bugzilla: 1190 ] Fix to not echo back EDNS options in local-zone error response. [bugzilla: 1194 ] Fix if cross build fails when $host isn't `uname` for getentropy. Fix reload chdir failure when also chrooted to that directory. Fix to return formerr for queries for meta-types, to avoid packet amplification if this meta-type is sent on to upstream. [bugzilla: 1201 ] Fix missing unlock in answer_from_cache error condition. [bugzilla: 1202 ] Fix code comment that packed_rrset_data is not always 'packed'. Fix to also block meta types 128 through to 248 with formerr. [bugzilla: 1206 ] Fix that some view-related commands are missing from 'unbound-control -h' Fix to rename ub_callback_t to ub_callback_type, because POSIX reserves _t typedefs. Fix to rename internally used types from _t to _type, because _t type names are reserved by POSIX. Increase MAX_MODULE to 16. [bugzilla: 1211 ] Fix can't enable interface-automatic if no IPv6 with more helpful error message. fix root_anchor test for updated icannbundle.pem lower certificates. Fix compile on solaris of the fix to use $host detect. Fix for type name change and fix warning on windows compile. Fix pythonmod for typedef changes. Fix dnstap for warning of set but not used. Fix autoconf of systemd check for lack of pkg-config." Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/unbound | 2 +- lfs/unbound | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/common/unbound b/config/rootfiles/common/unbound index c31b8a698..a94ea2564 100644 --- a/config/rootfiles/common/unbound +++ b/config/rootfiles/common/unbound @@ -10,7 +10,7 @@ etc/unbound/unbound.conf #usr/lib/libunbound.la #usr/lib/libunbound.so usr/lib/libunbound.so.2 -usr/lib/libunbound.so.2.4.3 +usr/lib/libunbound.so.2.4.4 usr/sbin/unbound usr/sbin/unbound-anchor usr/sbin/unbound-checkconf diff --git a/lfs/unbound b/lfs/unbound index 3494a7b06..2b7745cd0 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.6.0 +VER = 1.6.1 THISAPP = unbound-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 78409eccf7260d260b6463f85e59c66b +$(DL_FILE)_MD5 = aa808f33d94a36c9312d1b8ad8805e14 install : $(TARGET) From c5480346b1ace5d630d5a82e73077bd48e9bf42c Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 12:11:53 +0100 Subject: [PATCH 126/464] dnsdist: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/dnsdist | 4 ++++ src/initscripts/{init.d => packages}/dnsdist | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/dnsdist (100%) diff --git a/lfs/dnsdist b/lfs/dnsdist index a5d9fea9f..aeb11c87a 100644 --- a/lfs/dnsdist +++ b/lfs/dnsdist @@ -81,6 +81,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc cd $(DIR_APP) && make cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,dnsdist) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/dnsdist b/src/initscripts/packages/dnsdist similarity index 100% rename from src/initscripts/init.d/dnsdist rename to src/initscripts/packages/dnsdist From 5f53bd1c13f6ef6387313768bd8cd250499f66cb Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 12:12:52 +0100 Subject: [PATCH 127/464] bluetooth: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/bluetooth | 4 ++++ src/initscripts/{init.d => packages}/bluetooth | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/bluetooth (100%) diff --git a/lfs/bluetooth b/lfs/bluetooth index dc5eec7ea..2c5780954 100644 --- a/lfs/bluetooth +++ b/lfs/bluetooth @@ -125,5 +125,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown nobody:nobody /var/ipfire/bluetooth/settings chmod 644 /var/ipfire/bluetooth/settings install -v -m 644 $(DIR_SRC)/config/backup/includes/bluetooth /var/ipfire/backup/addons/includes/bluetooth + + #install initscripts + $(call INSTALL_INITSCRIPT,bluetooth) + @rm -rf $(DIR_SRC)/bluez* @$(POSTBUILD) diff --git a/src/initscripts/init.d/bluetooth b/src/initscripts/packages/bluetooth similarity index 100% rename from src/initscripts/init.d/bluetooth rename to src/initscripts/packages/bluetooth From e804a70256d72c7ad76913bde373f2f97f84c21f Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 12:14:18 +0100 Subject: [PATCH 128/464] haproxy: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/haproxy | 5 ++--- src/initscripts/{init.d => packages}/haproxy | 0 2 files changed, 2 insertions(+), 3 deletions(-) rename src/initscripts/{init.d => packages}/haproxy (100%) diff --git a/lfs/haproxy b/lfs/haproxy index 4af227307..0e5a067f8 100644 --- a/lfs/haproxy +++ b/lfs/haproxy @@ -91,9 +91,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/haproxy \ /var/ipfire/backup/addons/includes/haproxy - # Restore initscript - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/haproxy \ - /etc/rc.d/init.d/haproxy + #install initscripts + $(call INSTALL_INITSCRIPT,haproxy) @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/haproxy b/src/initscripts/packages/haproxy similarity index 100% rename from src/initscripts/init.d/haproxy rename to src/initscripts/packages/haproxy From 47b6926102a00809aa8929ddd86907aa168850a0 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 12:15:23 +0100 Subject: [PATCH 129/464] keepalived: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/keepalived | 6 +++--- src/initscripts/{init.d => packages}/keepalived | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename src/initscripts/{init.d => packages}/keepalived (100%) diff --git a/lfs/keepalived b/lfs/keepalived index 2054a5421..257ceb2d9 100644 --- a/lfs/keepalived +++ b/lfs/keepalived @@ -85,8 +85,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/keepalived \ /var/ipfire/backup/addons/includes/keepalived - # Restore initscript - install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/keepalived \ - /etc/rc.d/init.d/keepalived + #install initscripts + $(call INSTALL_INITSCRIPT,keepalived) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/keepalived b/src/initscripts/packages/keepalived similarity index 100% rename from src/initscripts/init.d/keepalived rename to src/initscripts/packages/keepalived From 939fbafccdacfb0c078daa166829311366257b8c Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 12:16:35 +0100 Subject: [PATCH 130/464] mysql: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/mysql | 4 ++++ src/initscripts/{init.d => packages}/mysql | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/mysql (100%) diff --git a/lfs/mysql b/lfs/mysql index edcd651f8..089516efa 100644 --- a/lfs/mysql +++ b/lfs/mysql @@ -102,5 +102,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m755 -o mysql -g mysql -d /var/run/mysql install -v -m 644 $(DIR_SRC)/config/backup/includes/mysql \ /var/ipfire/backup/addons/includes/mysql + + #install initscripts + $(call INSTALL_INITSCRIPT,mysql) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/mysql b/src/initscripts/packages/mysql similarity index 100% rename from src/initscripts/init.d/mysql rename to src/initscripts/packages/mysql From e215aaed48d8dfe3c7f6dd2bc649fb5b7547eef3 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 15:54:19 +0100 Subject: [PATCH 131/464] samba: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/samba | 3 +++ src/initscripts/{init.d => packages}/samba | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/samba (100%) diff --git a/lfs/samba b/lfs/samba index 74a1b769e..076152f48 100644 --- a/lfs/samba +++ b/lfs/samba @@ -136,5 +136,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod 750 /var/lib/samba/winbindd_privileged chgrp wbpriv /var/lib/samba/winbindd_privileged + #install initscripts + $(call INSTALL_INITSCRIPT,samba) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/samba b/src/initscripts/packages/samba similarity index 100% rename from src/initscripts/init.d/samba rename to src/initscripts/packages/samba From 610b34069c6f6ebd857f5cd0c4d3b70e4b4c0143 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 15:55:05 +0100 Subject: [PATCH 132/464] nut: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/nut | 4 ++++ src/initscripts/{init.d => packages}/nut | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/nut (100%) diff --git a/lfs/nut b/lfs/nut index c64c5a26b..2045dce6c 100644 --- a/lfs/nut +++ b/lfs/nut @@ -84,6 +84,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make install # sed -i -e "s|ATTR{|SYSFS{|g" /etc/udev/rules.d/52-nut-usbups.rules -mkdir -p /var/state/ups + + #install initscripts + $(call INSTALL_INITSCRIPT,nut) + install -v -m 644 $(DIR_SRC)/config/backup/includes/nut \ /var/ipfire/backup/addons/includes/nut @rm -rf $(DIR_APP) diff --git a/src/initscripts/init.d/nut b/src/initscripts/packages/nut similarity index 100% rename from src/initscripts/init.d/nut rename to src/initscripts/packages/nut From 8fa8cd3b7e10ee7564465de4af60164c32a813ab Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 15:56:38 +0100 Subject: [PATCH 133/464] sane: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/sane | 4 ++++ src/initscripts/{init.d => packages}/sane | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/sane (100%) diff --git a/lfs/sane b/lfs/sane index 64f337592..9e456f017 100644 --- a/lfs/sane +++ b/lfs/sane @@ -85,6 +85,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make install chmod 4755 /usr/bin/scanimage cp -vf $(DIR_SRC)/config/sane/saned.conf /etc/sane.d/ + + #install initscripts + $(call INSTALL_INITSCRIPT,sane) + ln -sf ../init.d/sane /etc/rc.d/rc3.d/S95sane ln -sf ../init.d/sane /etc/rc.d/rc0.d/K10sane ln -sf ../init.d/sane /etc/rc.d/rc6.d/K10sane diff --git a/src/initscripts/init.d/sane b/src/initscripts/packages/sane similarity index 100% rename from src/initscripts/init.d/sane rename to src/initscripts/packages/sane From f79869bf421437654fde325b4eb262ebe3dbe292 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 15:58:01 +0100 Subject: [PATCH 134/464] apcupsd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/apcupsd | 4 ++++ src/initscripts/{init.d => packages}/apcupsd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/apcupsd (100%) diff --git a/lfs/apcupsd b/lfs/apcupsd index 4e9137b11..1d8e0ff40 100644 --- a/lfs/apcupsd +++ b/lfs/apcupsd @@ -81,6 +81,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --with-cgi-bin=/srv/web/ipfire/cgi-bin cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,apcupsd) + ln -sf ../init.d/apcupsd /etc/rc.d/rc3.d/S65apcupsd ln -sf ../init.d/apcupsd /etc/rc.d/rc0.d/K35apcupsd ln -sf ../init.d/apcupsd /etc/rc.d/rc6.d/K35apcupsd diff --git a/src/initscripts/init.d/apcupsd b/src/initscripts/packages/apcupsd similarity index 100% rename from src/initscripts/init.d/apcupsd rename to src/initscripts/packages/apcupsd From dc9baa5496ea41b890927098e222e297e99a1db0 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 19:11:00 +0100 Subject: [PATCH 135/464] transmission: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/transmission | 3 +++ src/initscripts/{init.d => packages}/transmission | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/transmission (100%) diff --git a/lfs/transmission b/lfs/transmission index 36eb3c424..79ebaa1f9 100644 --- a/lfs/transmission +++ b/lfs/transmission @@ -88,6 +88,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cp -vf $(DIR_SRC)/config/transmission/* /etc/transmission/ chown -Rv nobody.nobody /etc/transmission + #install initscripts + $(call INSTALL_INITSCRIPT,transmission) + # Install backup include install -v -m 644 $(DIR_SRC)/config/backup/includes/transmission \ /var/ipfire/backup/addons/includes/transmission diff --git a/src/initscripts/init.d/transmission b/src/initscripts/packages/transmission similarity index 100% rename from src/initscripts/init.d/transmission rename to src/initscripts/packages/transmission From 74eaa64e4ba95d94a387e8756d954a1b5b0f9b13 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 24 Feb 2017 19:12:22 +0100 Subject: [PATCH 136/464] pound: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/pound | 4 ++++ src/initscripts/{init.d => packages}/pound | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/pound (100%) diff --git a/lfs/pound b/lfs/pound index 3860122a9..b4206d0e5 100644 --- a/lfs/pound +++ b/lfs/pound @@ -81,6 +81,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --with-dh=1024 cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,pound) + install -v -m 644 $(DIR_SRC)/config/backup/includes/pound \ /var/ipfire/backup/addons/includes/pound diff --git a/src/initscripts/init.d/pound b/src/initscripts/packages/pound similarity index 100% rename from src/initscripts/init.d/pound rename to src/initscripts/packages/pound From 6d390861b97cc76a2b5690c8fbe5cdc1b0b68b04 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 24 Feb 2017 20:06:01 +0000 Subject: [PATCH 137/464] Update CUPS to 2.2.2 Signed-off-by: Michael Tremer --- config/rootfiles/packages/cups | 98 +++++++++++++++++++++----- config/rootfiles/packages/cups-filters | 8 ++- lfs/cups | 10 +-- 3 files changed, 93 insertions(+), 23 deletions(-) diff --git a/config/rootfiles/packages/cups b/config/rootfiles/packages/cups index 0604867e9..b4a50bbb0 100644 --- a/config/rootfiles/packages/cups +++ b/config/rootfiles/packages/cups @@ -31,17 +31,13 @@ usr/bin/ppdpo #usr/include/cups/adminutil.h #usr/include/cups/array.h #usr/include/cups/backend.h -#usr/include/cups/cgi.h #usr/include/cups/cups.h #usr/include/cups/dir.h #usr/include/cups/file.h -#usr/include/cups/help-index.h #usr/include/cups/http.h #usr/include/cups/ipp.h #usr/include/cups/language.h -#usr/include/cups/mime.h #usr/include/cups/ppd.h -#usr/include/cups/ppdc.h #usr/include/cups/pwg.h #usr/include/cups/raster.h #usr/include/cups/sidechannel.h @@ -107,16 +103,10 @@ usr/sbin/lpc usr/sbin/lpinfo usr/sbin/lpmove usr/sbin/reject +#usr/share/applications/cups.desktop usr/share/cups usr/share/cups/banners -usr/share/cups/banners/classified -usr/share/cups/banners/confidential -usr/share/cups/banners/secret -usr/share/cups/banners/standard -usr/share/cups/banners/topsecret -usr/share/cups/banners/unclassified usr/share/cups/data -usr/share/cups/data/testprint usr/share/cups/drv usr/share/cups/drv/sample.drv usr/share/cups/examples @@ -218,6 +208,7 @@ usr/share/cups/templates/de/error.tmpl usr/share/cups/templates/de/header.tmpl usr/share/cups/templates/de/help-header.tmpl usr/share/cups/templates/de/help-printable.tmpl +usr/share/cups/templates/de/help-trailer.tmpl usr/share/cups/templates/de/job-cancel.tmpl usr/share/cups/templates/de/job-hold.tmpl usr/share/cups/templates/de/job-move.tmpl @@ -446,6 +437,77 @@ usr/share/cups/templates/printer-stop.tmpl usr/share/cups/templates/printer.tmpl usr/share/cups/templates/printers-header.tmpl usr/share/cups/templates/printers.tmpl +usr/share/cups/templates/pt_BR +usr/share/cups/templates/pt_BR/add-class.tmpl +usr/share/cups/templates/pt_BR/add-printer.tmpl +usr/share/cups/templates/pt_BR/add-rss-subscription.tmpl +usr/share/cups/templates/pt_BR/admin.tmpl +usr/share/cups/templates/pt_BR/choose-device.tmpl +usr/share/cups/templates/pt_BR/choose-make.tmpl +usr/share/cups/templates/pt_BR/choose-model.tmpl +usr/share/cups/templates/pt_BR/choose-serial.tmpl +usr/share/cups/templates/pt_BR/choose-uri.tmpl +usr/share/cups/templates/pt_BR/class-added.tmpl +usr/share/cups/templates/pt_BR/class-confirm.tmpl +usr/share/cups/templates/pt_BR/class-deleted.tmpl +usr/share/cups/templates/pt_BR/class-jobs-header.tmpl +usr/share/cups/templates/pt_BR/class-modified.tmpl +usr/share/cups/templates/pt_BR/class.tmpl +usr/share/cups/templates/pt_BR/classes-header.tmpl +usr/share/cups/templates/pt_BR/classes.tmpl +usr/share/cups/templates/pt_BR/command.tmpl +usr/share/cups/templates/pt_BR/edit-config.tmpl +usr/share/cups/templates/pt_BR/error-op.tmpl +usr/share/cups/templates/pt_BR/error.tmpl +usr/share/cups/templates/pt_BR/header.tmpl +usr/share/cups/templates/pt_BR/help-header.tmpl +usr/share/cups/templates/pt_BR/help-printable.tmpl +usr/share/cups/templates/pt_BR/help-trailer.tmpl +usr/share/cups/templates/pt_BR/job-cancel.tmpl +usr/share/cups/templates/pt_BR/job-hold.tmpl +usr/share/cups/templates/pt_BR/job-move.tmpl +usr/share/cups/templates/pt_BR/job-moved.tmpl +usr/share/cups/templates/pt_BR/job-release.tmpl +usr/share/cups/templates/pt_BR/job-restart.tmpl +usr/share/cups/templates/pt_BR/jobs-header.tmpl +usr/share/cups/templates/pt_BR/jobs.tmpl +usr/share/cups/templates/pt_BR/list-available-printers.tmpl +usr/share/cups/templates/pt_BR/modify-class.tmpl +usr/share/cups/templates/pt_BR/modify-printer.tmpl +usr/share/cups/templates/pt_BR/norestart.tmpl +usr/share/cups/templates/pt_BR/option-boolean.tmpl +usr/share/cups/templates/pt_BR/option-conflict.tmpl +usr/share/cups/templates/pt_BR/option-header.tmpl +usr/share/cups/templates/pt_BR/option-pickmany.tmpl +usr/share/cups/templates/pt_BR/option-pickone.tmpl +usr/share/cups/templates/pt_BR/option-trailer.tmpl +usr/share/cups/templates/pt_BR/pager.tmpl +usr/share/cups/templates/pt_BR/printer-accept.tmpl +usr/share/cups/templates/pt_BR/printer-added.tmpl +usr/share/cups/templates/pt_BR/printer-cancel-jobs.tmpl +usr/share/cups/templates/pt_BR/printer-configured.tmpl +usr/share/cups/templates/pt_BR/printer-confirm.tmpl +usr/share/cups/templates/pt_BR/printer-default.tmpl +usr/share/cups/templates/pt_BR/printer-deleted.tmpl +usr/share/cups/templates/pt_BR/printer-jobs-header.tmpl +usr/share/cups/templates/pt_BR/printer-modified.tmpl +usr/share/cups/templates/pt_BR/printer-reject.tmpl +usr/share/cups/templates/pt_BR/printer-start.tmpl +usr/share/cups/templates/pt_BR/printer-stop.tmpl +usr/share/cups/templates/pt_BR/printer.tmpl +usr/share/cups/templates/pt_BR/printers-header.tmpl +usr/share/cups/templates/pt_BR/printers.tmpl +usr/share/cups/templates/pt_BR/restart.tmpl +usr/share/cups/templates/pt_BR/samba-export.tmpl +usr/share/cups/templates/pt_BR/samba-exported.tmpl +usr/share/cups/templates/pt_BR/search.tmpl +usr/share/cups/templates/pt_BR/set-printer-options-header.tmpl +usr/share/cups/templates/pt_BR/set-printer-options-trailer.tmpl +usr/share/cups/templates/pt_BR/subscription-added.tmpl +usr/share/cups/templates/pt_BR/subscription-canceled.tmpl +usr/share/cups/templates/pt_BR/test-page.tmpl +usr/share/cups/templates/pt_BR/trailer.tmpl +usr/share/cups/templates/pt_BR/users.tmpl usr/share/cups/templates/restart.tmpl usr/share/cups/templates/ru usr/share/cups/templates/ru/add-class.tmpl @@ -472,6 +534,7 @@ usr/share/cups/templates/ru/error.tmpl usr/share/cups/templates/ru/header.tmpl usr/share/cups/templates/ru/help-header.tmpl usr/share/cups/templates/ru/help-printable.tmpl +usr/share/cups/templates/ru/help-trailer.tmpl usr/share/cups/templates/ru/job-cancel.tmpl usr/share/cups/templates/ru/job-hold.tmpl usr/share/cups/templates/ru/job-move.tmpl @@ -539,19 +602,17 @@ usr/share/doc/cups/es usr/share/doc/cups/es/index.html usr/share/doc/cups/help usr/share/doc/cups/help/accounting.html +usr/share/doc/cups/help/api-admin.html usr/share/doc/cups/help/api-array.html -usr/share/doc/cups/help/api-cgi.html usr/share/doc/cups/help/api-cups.html -usr/share/doc/cups/help/api-driver.html usr/share/doc/cups/help/api-filedir.html usr/share/doc/cups/help/api-filter.html usr/share/doc/cups/help/api-httpipp.html -usr/share/doc/cups/help/api-mime.html usr/share/doc/cups/help/api-overview.html usr/share/doc/cups/help/api-ppd.html -usr/share/doc/cups/help/api-ppdc.html usr/share/doc/cups/help/api-raster.html usr/share/doc/cups/help/cgi.html +usr/share/doc/cups/help/encryption.html usr/share/doc/cups/help/glossary.html usr/share/doc/cups/help/kerberos.html usr/share/doc/cups/help/license.html @@ -607,7 +668,6 @@ usr/share/doc/cups/help/ref-ppdcfile.html usr/share/doc/cups/help/security.html usr/share/doc/cups/help/sharing.html usr/share/doc/cups/help/spec-banner.html -usr/share/doc/cups/help/spec-cmp.html usr/share/doc/cups/help/spec-command.html usr/share/doc/cups/help/spec-design.html usr/share/doc/cups/help/spec-ipp.html @@ -638,6 +698,8 @@ usr/share/doc/cups/images/wait.gif usr/share/doc/cups/index.html usr/share/doc/cups/ja usr/share/doc/cups/ja/index.html +usr/share/doc/cups/pt_BR +usr/share/doc/cups/pt_BR/index.html usr/share/doc/cups/robots.txt usr/share/doc/cups/ru usr/share/doc/cups/ru/index.html @@ -648,6 +710,7 @@ usr/share/locale/es/cups_es.po usr/share/locale/fr/cups_fr.po usr/share/locale/it/cups_it.po usr/share/locale/ja/cups_ja.po +usr/share/locale/pt_BR/cups_pt_BR.po usr/share/locale/ru/cups_ru.po #usr/share/man/man1/cancel.1.gz #usr/share/man/man1/cups-config.1.gz @@ -706,11 +769,12 @@ var/cache/cups var/cache/cups/rss #var/ipfire/cups var/ipfire/cups/cups-files.conf +var/ipfire/cups/cups-files.conf.default var/ipfire/cups/cupsd.conf #var/ipfire/cups/cupsd.conf.default -var/ipfire/cups/interfaces var/ipfire/cups/ppd var/ipfire/cups/snmp.conf +var/ipfire/cups/snmp.conf.default var/ipfire/cups/ssl var/log/cups var/spool/cups diff --git a/config/rootfiles/packages/cups-filters b/config/rootfiles/packages/cups-filters index fd85fb89e..85564cebc 100644 --- a/config/rootfiles/packages/cups-filters +++ b/config/rootfiles/packages/cups-filters @@ -59,7 +59,6 @@ usr/lib/cups/filter/texttobrf usr/lib/cups/filter/texttopdf usr/lib/cups/filter/texttops usr/lib/cups/filter/texttotext -usr/lib/cups/filter/urftopdf #usr/lib/libcupsfilters.a #usr/lib/libcupsfilters.la #usr/lib/libcupsfilters.so @@ -73,7 +72,13 @@ usr/lib/libfontembed.so.1.0.0 #usr/lib/pkgconfig/libcupsfilters.pc #usr/lib/pkgconfig/libfontembed.pc #usr/sbin/cups-browsed +usr/share/cups/banners/classified +usr/share/cups/banners/confidential usr/share/cups/banners/form +usr/share/cups/banners/secret +usr/share/cups/banners/standard +usr/share/cups/banners/topsecret +usr/share/cups/banners/unclassified usr/share/cups/braille usr/share/cups/braille/cups-braille.sh usr/share/cups/braille/index.sh @@ -93,6 +98,7 @@ usr/share/cups/data/form_russian.pdf usr/share/cups/data/form_russian_in.odt usr/share/cups/data/secret.pdf usr/share/cups/data/standard.pdf +usr/share/cups/data/testprint usr/share/cups/data/topsecret.pdf usr/share/cups/data/unclassified.pdf usr/share/cups/drv/cupsfilters.drv diff --git a/lfs/cups b/lfs/cups index e1311af80..5f900048b 100644 --- a/lfs/cups +++ b/lfs/cups @@ -24,15 +24,15 @@ include Config -VER = 2.0.4 +VER = 2.2.2 THISAPP = cups-$(VER) -DL_FILE = $(THISAPP)-source.tar.bz2 +DL_FILE = $(THISAPP)-source.tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/cups-$(VER) TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups -PAK_VER = 14 +PAK_VER = 15 DEPS = "cups-filters ghostscript" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f5c847d9a4fac6c4c66fb0526a7afaae +$(DL_FILE)_MD5 = 036f6bda6202ae3e280ac00c710b5ca4 install : $(TARGET) @@ -76,7 +76,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ From 3a8b6ae05d4eb722ca67cd4ce393a9e424160100 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 24 Feb 2017 20:09:03 +0000 Subject: [PATCH 138/464] Various rootfile fixes Signed-off-by: Michael Tremer --- config/rootfiles/common/attr | 12 ++---------- config/rootfiles/packages/avahi | 3 +-- config/rootfiles/packages/qemu | 1 - lfs/qemu | 2 +- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/config/rootfiles/common/attr b/config/rootfiles/common/attr index d24d1334d..ae8c34aa3 100644 --- a/config/rootfiles/common/attr +++ b/config/rootfiles/common/attr @@ -8,7 +8,7 @@ usr/bin/setfattr #usr/include/attr/xattr.h #usr/lib/libattr.a #usr/lib/libattr.la -usr/lib/libattr.so +#usr/lib/libattr.so usr/lib/libattr.so.1 usr/lib/libattr.so.1.1.0 #usr/share/doc/attr @@ -28,17 +28,9 @@ usr/lib/libattr.so.1.1.0 #usr/share/man/man1/attr.1 #usr/share/man/man1/getfattr.1 #usr/share/man/man1/setfattr.1 -#usr/share/man/man2/fgetxattr.2 +#usr/share/man/man2/flistxattr.2 #usr/share/man/man2/fremovexattr.2 -#usr/share/man/man2/fsetxattr.2 -#usr/share/man/man2/getxattr.2 -#usr/share/man/man2/llistxattr.2 #usr/share/man/man2/lgetxattr.2 -#usr/share/man/man2/listxattr.2 -#usr/share/man/man2/lremovexattr.2 -#usr/share/man/man2/lsetxattr.2 -#usr/share/man/man2/removexattr.2 -#usr/share/man/man2/setxattr.2 #usr/share/man/man3/attr_get.3 #usr/share/man/man3/attr_getf.3 #usr/share/man/man3/attr_list.3 diff --git a/config/rootfiles/packages/avahi b/config/rootfiles/packages/avahi index dc2c56d2f..fa8f25b53 100644 --- a/config/rootfiles/packages/avahi +++ b/config/rootfiles/packages/avahi @@ -91,6 +91,7 @@ usr/lib/python2.7/site-packages/avahi/ServiceTypeDatabase.py usr/sbin/avahi-autoipd usr/sbin/avahi-daemon usr/sbin/avahi-dnsconfd +#usr/share/applications usr/share/avahi usr/share/avahi/avahi-service.dtd usr/share/avahi/service-types @@ -160,5 +161,3 @@ usr/share/avahi/service-types #usr/share/man/man8/avahi-daemon.8 #usr/share/man/man8/avahi-dnsconfd.8 #usr/share/man/man8/avahi-dnsconfd.action.8 -#usr/var/run -etc/rc.d/init.d/avahi diff --git a/config/rootfiles/packages/qemu b/config/rootfiles/packages/qemu index 022d4ebc8..1adb3849b 100644 --- a/config/rootfiles/packages/qemu +++ b/config/rootfiles/packages/qemu @@ -105,4 +105,3 @@ usr/share/qemu/vgabios-stdvga.bin usr/share/qemu/vgabios-virtio.bin usr/share/qemu/vgabios-vmware.bin usr/share/qemu/vgabios.bin -#usr/var/run diff --git a/lfs/qemu b/lfs/qemu index 26c2f24ec..57d79a356 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -79,7 +79,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ - --enable-kvm --disable-bluez --disable-attr \ + --localstatedir=/var --enable-kvm --disable-bluez --disable-attr \ --target-list="i386-linux-user x86_64-linux-user arm-linux-user i386-softmmu x86_64-softmmu arm-softmmu" \ --extra-cflags="$(CFLAGS)" --enable-spice --enable-usb-redir cd $(DIR_APP) && make $(MAKETUNING) From 8ab50dba65e02cbfd4edb2ce81e32caef22ff193 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 12:59:40 +0100 Subject: [PATCH 139/464] motion: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/motion | 3 +++ src/initscripts/{init.d => packages}/motion | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/motion (100%) diff --git a/lfs/motion b/lfs/motion index 39c6b7352..a09133887 100644 --- a/lfs/motion +++ b/lfs/motion @@ -91,5 +91,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) #Remove obsolete V4L1 videodev.h rm -f /usr/include/linux/videodev.h + #install initscripts + $(call INSTALL_INITSCRIPT,motion) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/motion b/src/initscripts/packages/motion similarity index 100% rename from src/initscripts/init.d/motion rename to src/initscripts/packages/motion From 87f382731fecd9818bf81e4fae8450107b601cd4 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 13:01:08 +0100 Subject: [PATCH 140/464] cpufrequtils: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/cpufrequtils | 4 ++++ src/initscripts/{init.d => packages}/cpufreq | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/cpufreq (100%) diff --git a/lfs/cpufrequtils b/lfs/cpufrequtils index 5a82c33a5..d558efa61 100644 --- a/lfs/cpufrequtils +++ b/lfs/cpufrequtils @@ -82,5 +82,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,cpufreq) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/cpufreq b/src/initscripts/packages/cpufreq similarity index 100% rename from src/initscripts/init.d/cpufreq rename to src/initscripts/packages/cpufreq From a0851cf32881fecd7b00610c0fc89f46de67d376 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 13:02:41 +0100 Subject: [PATCH 141/464] stunnel: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/stunnel | 4 ++++ src/initscripts/{init.d => packages}/stunnel | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/stunnel (100%) diff --git a/lfs/stunnel b/lfs/stunnel index 4585151a8..684e4522d 100644 --- a/lfs/stunnel +++ b/lfs/stunnel @@ -88,6 +88,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m750 -o stunnel -g stunnel -d /var/lib/stunnel/run chown -v stunnel:stunnel /var/lib/stunnel + #install initscripts + $(call INSTALL_INITSCRIPT,stunnel) + + # Install default configuration -mkdir -pv /etc/stunnel install -v -m 644 $(DIR_SRC)/config/stunnel/stunnel.conf \ diff --git a/src/initscripts/init.d/stunnel b/src/initscripts/packages/stunnel similarity index 100% rename from src/initscripts/init.d/stunnel rename to src/initscripts/packages/stunnel From 466c6dd2cadc29a635fa2ef3e63057fde3f95b2c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 12:56:05 +0000 Subject: [PATCH 142/464] x86_64: Ship libssp.so as on all other architectures, too Signed-off-by: Michael Tremer --- config/rootfiles/common/x86_64/gcc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/common/x86_64/gcc b/config/rootfiles/common/x86_64/gcc index e378d930b..55d07afd0 100644 --- a/config/rootfiles/common/x86_64/gcc +++ b/config/rootfiles/common/x86_64/gcc @@ -1138,8 +1138,8 @@ usr/lib/libquadmath.so.0.0.0 #usr/lib/libssp.a #usr/lib/libssp.la #usr/lib/libssp.so -#usr/lib/libssp.so.0 -#usr/lib/libssp.so.0.0.0 +usr/lib/libssp.so.0 +usr/lib/libssp.so.0.0.0 #usr/lib/libssp_nonshared.a #usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a From e043c60be5713614d15938d4ec135f5bd2f1ea95 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 13:41:24 +0000 Subject: [PATCH 143/464] epson-inkjet-printer-escpr: Update to 1.6.12 Signed-off-by: Michael Tremer --- config/rootfiles/packages/epson-inkjet-printer-escpr | 1 + lfs/epson-inkjet-printer-escpr | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/config/rootfiles/packages/epson-inkjet-printer-escpr b/config/rootfiles/packages/epson-inkjet-printer-escpr index 782000c14..0039203d0 100644 --- a/config/rootfiles/packages/epson-inkjet-printer-escpr +++ b/config/rootfiles/packages/epson-inkjet-printer-escpr @@ -479,6 +479,7 @@ usr/share/ppd/Epson #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-322_323_325_Series-epson-escpr-en.ppd #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-330_Series-epson-escpr-en.ppd #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-332_335_Series-epson-escpr-en.ppd +#usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-340_Series-epson-escpr-en.ppd #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-342_343_345_Series-epson-escpr-en.ppd #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-400_Series-epson-escpr-en.ppd #usr/share/ppd/Epson/epson-inkjet-printer-escpr/Epson-XP-402_403_405_406_Series-epson-escpr-en.ppd diff --git a/lfs/epson-inkjet-printer-escpr b/lfs/epson-inkjet-printer-escpr index d4f081f4f..f4104db1c 100644 --- a/lfs/epson-inkjet-printer-escpr +++ b/lfs/epson-inkjet-printer-escpr @@ -24,7 +24,7 @@ include Config -VER = 1.6.11 +VER = 1.6.12 LSB = 1lsb3.2 THISAPP = epson-inkjet-printer-escpr-$(VER) @@ -33,7 +33,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = epson-inkjet-printer-escpr -PAK_VER = 1 +PAK_VER = 2 DEPS = "cups" @@ -45,7 +45,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ab143fb1c044e6190ca147027c530cfa +$(DL_FILE)_MD5 = fddedddd1424402d8ec8297536c751a0 install : $(TARGET) From 5c9d32f693b57a55b9864e64122813932fb4fe5b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 14:04:37 +0000 Subject: [PATCH 144/464] gnutls: New package Another TLS library that is required by CUPS for SSL support Signed-off-by: Michael Tremer --- config/rootfiles/common/gnutls | 1116 ++++++++++++++++++++++++++++++++ lfs/gnutls | 85 +++ make.sh | 9 +- 3 files changed, 1206 insertions(+), 4 deletions(-) create mode 100644 config/rootfiles/common/gnutls create mode 100644 lfs/gnutls diff --git a/config/rootfiles/common/gnutls b/config/rootfiles/common/gnutls new file mode 100644 index 000000000..e43b91347 --- /dev/null +++ b/config/rootfiles/common/gnutls @@ -0,0 +1,1116 @@ +usr/bin/certtool +usr/bin/danetool +usr/bin/gnutls-cli +usr/bin/gnutls-cli-debug +usr/bin/gnutls-serv +usr/bin/ocsptool +usr/bin/psktool +usr/bin/srptool +#usr/include/gnutls +#usr/include/gnutls/abstract.h +#usr/include/gnutls/compat.h +#usr/include/gnutls/crypto.h +#usr/include/gnutls/dane.h +#usr/include/gnutls/dtls.h +#usr/include/gnutls/gnutls.h +#usr/include/gnutls/gnutlsxx.h +#usr/include/gnutls/ocsp.h +#usr/include/gnutls/openpgp.h +#usr/include/gnutls/pkcs11.h +#usr/include/gnutls/pkcs12.h +#usr/include/gnutls/pkcs7.h +#usr/include/gnutls/self-test.h +#usr/include/gnutls/socket.h +#usr/include/gnutls/system-keys.h +#usr/include/gnutls/tpm.h +#usr/include/gnutls/urls.h +#usr/include/gnutls/x509-ext.h +#usr/include/gnutls/x509.h +#usr/lib/libgnutls-dane.la +#usr/lib/libgnutls-dane.so +usr/lib/libgnutls-dane.so.0 +usr/lib/libgnutls-dane.so.0.4.1 +#usr/lib/libgnutls.la +#usr/lib/libgnutls.so +usr/lib/libgnutls.so.30 +usr/lib/libgnutls.so.30.14.0 +#usr/lib/libgnutlsxx.la +#usr/lib/libgnutlsxx.so +usr/lib/libgnutlsxx.so.28 +usr/lib/libgnutlsxx.so.28.1.0 +#usr/lib/pkgconfig/gnutls-dane.pc +#usr/lib/pkgconfig/gnutls.pc +#usr/share/info/gnutls-client-server-use-case.png +#usr/share/info/gnutls-guile.info +#usr/share/info/gnutls-handshake-sequence.png +#usr/share/info/gnutls-handshake-state.png +#usr/share/info/gnutls-internals.png +#usr/share/info/gnutls-layers.png +#usr/share/info/gnutls-logo.png +#usr/share/info/gnutls-modauth.png +#usr/share/info/gnutls-x509.png +#usr/share/info/gnutls.info +#usr/share/info/gnutls.info-1 +#usr/share/info/gnutls.info-2 +#usr/share/info/gnutls.info-3 +#usr/share/info/gnutls.info-4 +#usr/share/info/gnutls.info-5 +#usr/share/info/gnutls.info-6 +#usr/share/info/pkcs11-vision.png +#usr/share/locale/cs/LC_MESSAGES/gnutls.mo +#usr/share/locale/de/LC_MESSAGES/gnutls.mo +#usr/share/locale/en@boldquot/LC_MESSAGES/gnutls.mo +#usr/share/locale/en@quot/LC_MESSAGES/gnutls.mo +#usr/share/locale/eo/LC_MESSAGES/gnutls.mo +#usr/share/locale/fi/LC_MESSAGES/gnutls.mo +#usr/share/locale/fr/LC_MESSAGES/gnutls.mo +#usr/share/locale/it/LC_MESSAGES/gnutls.mo +#usr/share/locale/ms/LC_MESSAGES/gnutls.mo +#usr/share/locale/nl/LC_MESSAGES/gnutls.mo +#usr/share/locale/pl/LC_MESSAGES/gnutls.mo +#usr/share/locale/sv/LC_MESSAGES/gnutls.mo +#usr/share/locale/uk/LC_MESSAGES/gnutls.mo +#usr/share/locale/vi/LC_MESSAGES/gnutls.mo +#usr/share/locale/zh_CN/LC_MESSAGES/gnutls.mo +#usr/share/man/man1/certtool.1 +#usr/share/man/man1/danetool.1 +#usr/share/man/man1/gnutls-cli-debug.1 +#usr/share/man/man1/gnutls-cli.1 +#usr/share/man/man1/gnutls-serv.1 +#usr/share/man/man1/ocsptool.1 +#usr/share/man/man1/p11tool.1 +#usr/share/man/man1/psktool.1 +#usr/share/man/man1/srptool.1 +#usr/share/man/man1/tpmtool.1 +#usr/share/man/man3/dane_cert_type_name.3 +#usr/share/man/man3/dane_cert_usage_name.3 +#usr/share/man/man3/dane_match_type_name.3 +#usr/share/man/man3/dane_query_data.3 +#usr/share/man/man3/dane_query_deinit.3 +#usr/share/man/man3/dane_query_entries.3 +#usr/share/man/man3/dane_query_status.3 +#usr/share/man/man3/dane_query_tlsa.3 +#usr/share/man/man3/dane_query_to_raw_tlsa.3 +#usr/share/man/man3/dane_raw_tlsa.3 +#usr/share/man/man3/dane_state_deinit.3 +#usr/share/man/man3/dane_state_init.3 +#usr/share/man/man3/dane_state_set_dlv_file.3 +#usr/share/man/man3/dane_strerror.3 +#usr/share/man/man3/dane_verification_status_print.3 +#usr/share/man/man3/dane_verify_crt.3 +#usr/share/man/man3/dane_verify_crt_raw.3 +#usr/share/man/man3/dane_verify_session_crt.3 +#usr/share/man/man3/gnutls_aead_cipher_decrypt.3 +#usr/share/man/man3/gnutls_aead_cipher_deinit.3 +#usr/share/man/man3/gnutls_aead_cipher_encrypt.3 +#usr/share/man/man3/gnutls_aead_cipher_init.3 +#usr/share/man/man3/gnutls_alert_get.3 +#usr/share/man/man3/gnutls_alert_get_name.3 +#usr/share/man/man3/gnutls_alert_get_strname.3 +#usr/share/man/man3/gnutls_alert_send.3 +#usr/share/man/man3/gnutls_alert_send_appropriate.3 +#usr/share/man/man3/gnutls_alpn_get_selected_protocol.3 +#usr/share/man/man3/gnutls_alpn_set_protocols.3 +#usr/share/man/man3/gnutls_anon_allocate_client_credentials.3 +#usr/share/man/man3/gnutls_anon_allocate_server_credentials.3 +#usr/share/man/man3/gnutls_anon_free_client_credentials.3 +#usr/share/man/man3/gnutls_anon_free_server_credentials.3 +#usr/share/man/man3/gnutls_anon_set_params_function.3 +#usr/share/man/man3/gnutls_anon_set_server_dh_params.3 +#usr/share/man/man3/gnutls_anon_set_server_known_dh_params.3 +#usr/share/man/man3/gnutls_anon_set_server_params_function.3 +#usr/share/man/man3/gnutls_auth_client_get_type.3 +#usr/share/man/man3/gnutls_auth_get_type.3 +#usr/share/man/man3/gnutls_auth_server_get_type.3 +#usr/share/man/man3/gnutls_buffer_append_data.3 +#usr/share/man/man3/gnutls_bye.3 +#usr/share/man/man3/gnutls_certificate_activation_time_peers.3 +#usr/share/man/man3/gnutls_certificate_allocate_credentials.3 +#usr/share/man/man3/gnutls_certificate_client_get_request_status.3 +#usr/share/man/man3/gnutls_certificate_expiration_time_peers.3 +#usr/share/man/man3/gnutls_certificate_free_ca_names.3 +#usr/share/man/man3/gnutls_certificate_free_cas.3 +#usr/share/man/man3/gnutls_certificate_free_credentials.3 +#usr/share/man/man3/gnutls_certificate_free_crls.3 +#usr/share/man/man3/gnutls_certificate_free_keys.3 +#usr/share/man/man3/gnutls_certificate_get_crt_raw.3 +#usr/share/man/man3/gnutls_certificate_get_issuer.3 +#usr/share/man/man3/gnutls_certificate_get_ours.3 +#usr/share/man/man3/gnutls_certificate_get_peers.3 +#usr/share/man/man3/gnutls_certificate_get_peers_subkey_id.3 +#usr/share/man/man3/gnutls_certificate_get_trust_list.3 +#usr/share/man/man3/gnutls_certificate_get_verify_flags.3 +#usr/share/man/man3/gnutls_certificate_get_x509_crt.3 +#usr/share/man/man3/gnutls_certificate_get_x509_key.3 +#usr/share/man/man3/gnutls_certificate_send_x509_rdn_sequence.3 +#usr/share/man/man3/gnutls_certificate_server_set_request.3 +#usr/share/man/man3/gnutls_certificate_set_dh_params.3 +#usr/share/man/man3/gnutls_certificate_set_flags.3 +#usr/share/man/man3/gnutls_certificate_set_key.3 +#usr/share/man/man3/gnutls_certificate_set_known_dh_params.3 +#usr/share/man/man3/gnutls_certificate_set_ocsp_status_request_file.3 +#usr/share/man/man3/gnutls_certificate_set_ocsp_status_request_function.3 +#usr/share/man/man3/gnutls_certificate_set_ocsp_status_request_function2.3 +#usr/share/man/man3/gnutls_certificate_set_params_function.3 +#usr/share/man/man3/gnutls_certificate_set_pin_function.3 +#usr/share/man/man3/gnutls_certificate_set_retrieve_function.3 +#usr/share/man/man3/gnutls_certificate_set_retrieve_function2.3 +#usr/share/man/man3/gnutls_certificate_set_trust_list.3 +#usr/share/man/man3/gnutls_certificate_set_verify_flags.3 +#usr/share/man/man3/gnutls_certificate_set_verify_function.3 +#usr/share/man/man3/gnutls_certificate_set_verify_limits.3 +#usr/share/man/man3/gnutls_certificate_set_x509_crl.3 +#usr/share/man/man3/gnutls_certificate_set_x509_crl_file.3 +#usr/share/man/man3/gnutls_certificate_set_x509_crl_mem.3 +#usr/share/man/man3/gnutls_certificate_set_x509_key.3 +#usr/share/man/man3/gnutls_certificate_set_x509_key_file.3 +#usr/share/man/man3/gnutls_certificate_set_x509_key_file2.3 +#usr/share/man/man3/gnutls_certificate_set_x509_key_mem.3 +#usr/share/man/man3/gnutls_certificate_set_x509_key_mem2.3 +#usr/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_file.3 +#usr/share/man/man3/gnutls_certificate_set_x509_simple_pkcs12_mem.3 +#usr/share/man/man3/gnutls_certificate_set_x509_system_trust.3 +#usr/share/man/man3/gnutls_certificate_set_x509_trust.3 +#usr/share/man/man3/gnutls_certificate_set_x509_trust_dir.3 +#usr/share/man/man3/gnutls_certificate_set_x509_trust_file.3 +#usr/share/man/man3/gnutls_certificate_set_x509_trust_mem.3 +#usr/share/man/man3/gnutls_certificate_type_get.3 +#usr/share/man/man3/gnutls_certificate_type_get_id.3 +#usr/share/man/man3/gnutls_certificate_type_get_name.3 +#usr/share/man/man3/gnutls_certificate_type_list.3 +#usr/share/man/man3/gnutls_certificate_verification_status_print.3 +#usr/share/man/man3/gnutls_certificate_verify_peers.3 +#usr/share/man/man3/gnutls_certificate_verify_peers2.3 +#usr/share/man/man3/gnutls_certificate_verify_peers3.3 +#usr/share/man/man3/gnutls_check_version.3 +#usr/share/man/man3/gnutls_cipher_add_auth.3 +#usr/share/man/man3/gnutls_cipher_decrypt.3 +#usr/share/man/man3/gnutls_cipher_decrypt2.3 +#usr/share/man/man3/gnutls_cipher_deinit.3 +#usr/share/man/man3/gnutls_cipher_encrypt.3 +#usr/share/man/man3/gnutls_cipher_encrypt2.3 +#usr/share/man/man3/gnutls_cipher_get.3 +#usr/share/man/man3/gnutls_cipher_get_block_size.3 +#usr/share/man/man3/gnutls_cipher_get_id.3 +#usr/share/man/man3/gnutls_cipher_get_iv_size.3 +#usr/share/man/man3/gnutls_cipher_get_key_size.3 +#usr/share/man/man3/gnutls_cipher_get_name.3 +#usr/share/man/man3/gnutls_cipher_get_tag_size.3 +#usr/share/man/man3/gnutls_cipher_init.3 +#usr/share/man/man3/gnutls_cipher_list.3 +#usr/share/man/man3/gnutls_cipher_set_iv.3 +#usr/share/man/man3/gnutls_cipher_suite_get_name.3 +#usr/share/man/man3/gnutls_cipher_suite_info.3 +#usr/share/man/man3/gnutls_cipher_tag.3 +#usr/share/man/man3/gnutls_compression_get.3 +#usr/share/man/man3/gnutls_compression_get_id.3 +#usr/share/man/man3/gnutls_compression_get_name.3 +#usr/share/man/man3/gnutls_compression_list.3 +#usr/share/man/man3/gnutls_credentials_clear.3 +#usr/share/man/man3/gnutls_credentials_get.3 +#usr/share/man/man3/gnutls_credentials_set.3 +#usr/share/man/man3/gnutls_crypto_register_aead_cipher.3 +#usr/share/man/man3/gnutls_crypto_register_cipher.3 +#usr/share/man/man3/gnutls_crypto_register_digest.3 +#usr/share/man/man3/gnutls_crypto_register_mac.3 +#usr/share/man/man3/gnutls_db_check_entry.3 +#usr/share/man/man3/gnutls_db_check_entry_time.3 +#usr/share/man/man3/gnutls_db_get_default_cache_expiration.3 +#usr/share/man/man3/gnutls_db_get_ptr.3 +#usr/share/man/man3/gnutls_db_remove_session.3 +#usr/share/man/man3/gnutls_db_set_cache_expiration.3 +#usr/share/man/man3/gnutls_db_set_ptr.3 +#usr/share/man/man3/gnutls_db_set_remove_function.3 +#usr/share/man/man3/gnutls_db_set_retrieve_function.3 +#usr/share/man/man3/gnutls_db_set_store_function.3 +#usr/share/man/man3/gnutls_decode_ber_digest_info.3 +#usr/share/man/man3/gnutls_deinit.3 +#usr/share/man/man3/gnutls_dh_get_group.3 +#usr/share/man/man3/gnutls_dh_get_peers_public_bits.3 +#usr/share/man/man3/gnutls_dh_get_prime_bits.3 +#usr/share/man/man3/gnutls_dh_get_pubkey.3 +#usr/share/man/man3/gnutls_dh_get_secret_bits.3 +#usr/share/man/man3/gnutls_dh_params_cpy.3 +#usr/share/man/man3/gnutls_dh_params_deinit.3 +#usr/share/man/man3/gnutls_dh_params_export2_pkcs3.3 +#usr/share/man/man3/gnutls_dh_params_export_pkcs3.3 +#usr/share/man/man3/gnutls_dh_params_export_raw.3 +#usr/share/man/man3/gnutls_dh_params_generate2.3 +#usr/share/man/man3/gnutls_dh_params_import_dsa.3 +#usr/share/man/man3/gnutls_dh_params_import_pkcs3.3 +#usr/share/man/man3/gnutls_dh_params_import_raw.3 +#usr/share/man/man3/gnutls_dh_params_import_raw2.3 +#usr/share/man/man3/gnutls_dh_params_init.3 +#usr/share/man/man3/gnutls_dh_set_prime_bits.3 +#usr/share/man/man3/gnutls_digest_get_id.3 +#usr/share/man/man3/gnutls_digest_get_name.3 +#usr/share/man/man3/gnutls_digest_get_oid.3 +#usr/share/man/man3/gnutls_digest_list.3 +#usr/share/man/man3/gnutls_dtls_cookie_send.3 +#usr/share/man/man3/gnutls_dtls_cookie_verify.3 +#usr/share/man/man3/gnutls_dtls_get_data_mtu.3 +#usr/share/man/man3/gnutls_dtls_get_mtu.3 +#usr/share/man/man3/gnutls_dtls_get_timeout.3 +#usr/share/man/man3/gnutls_dtls_prestate_set.3 +#usr/share/man/man3/gnutls_dtls_set_data_mtu.3 +#usr/share/man/man3/gnutls_dtls_set_mtu.3 +#usr/share/man/man3/gnutls_dtls_set_timeouts.3 +#usr/share/man/man3/gnutls_ecc_curve_get.3 +#usr/share/man/man3/gnutls_ecc_curve_get_id.3 +#usr/share/man/man3/gnutls_ecc_curve_get_name.3 +#usr/share/man/man3/gnutls_ecc_curve_get_oid.3 +#usr/share/man/man3/gnutls_ecc_curve_get_pk.3 +#usr/share/man/man3/gnutls_ecc_curve_get_size.3 +#usr/share/man/man3/gnutls_ecc_curve_list.3 +#usr/share/man/man3/gnutls_encode_ber_digest_info.3 +#usr/share/man/man3/gnutls_error_is_fatal.3 +#usr/share/man/man3/gnutls_error_to_alert.3 +#usr/share/man/man3/gnutls_est_record_overhead_size.3 +#usr/share/man/man3/gnutls_ext_get_data.3 +#usr/share/man/man3/gnutls_ext_get_name.3 +#usr/share/man/man3/gnutls_ext_register.3 +#usr/share/man/man3/gnutls_ext_set_data.3 +#usr/share/man/man3/gnutls_fingerprint.3 +#usr/share/man/man3/gnutls_fips140_mode_enabled.3 +#usr/share/man/man3/gnutls_global_deinit.3 +#usr/share/man/man3/gnutls_global_init.3 +#usr/share/man/man3/gnutls_global_set_audit_log_function.3 +#usr/share/man/man3/gnutls_global_set_log_function.3 +#usr/share/man/man3/gnutls_global_set_log_level.3 +#usr/share/man/man3/gnutls_global_set_mem_functions.3 +#usr/share/man/man3/gnutls_global_set_mutex.3 +#usr/share/man/man3/gnutls_global_set_time_function.3 +#usr/share/man/man3/gnutls_handshake.3 +#usr/share/man/man3/gnutls_handshake_description_get_name.3 +#usr/share/man/man3/gnutls_handshake_get_last_in.3 +#usr/share/man/man3/gnutls_handshake_get_last_out.3 +#usr/share/man/man3/gnutls_handshake_set_hook_function.3 +#usr/share/man/man3/gnutls_handshake_set_max_packet_length.3 +#usr/share/man/man3/gnutls_handshake_set_post_client_hello_function.3 +#usr/share/man/man3/gnutls_handshake_set_private_extensions.3 +#usr/share/man/man3/gnutls_handshake_set_random.3 +#usr/share/man/man3/gnutls_handshake_set_timeout.3 +#usr/share/man/man3/gnutls_hash.3 +#usr/share/man/man3/gnutls_hash_deinit.3 +#usr/share/man/man3/gnutls_hash_fast.3 +#usr/share/man/man3/gnutls_hash_get_len.3 +#usr/share/man/man3/gnutls_hash_init.3 +#usr/share/man/man3/gnutls_hash_output.3 +#usr/share/man/man3/gnutls_heartbeat_allowed.3 +#usr/share/man/man3/gnutls_heartbeat_enable.3 +#usr/share/man/man3/gnutls_heartbeat_get_timeout.3 +#usr/share/man/man3/gnutls_heartbeat_ping.3 +#usr/share/man/man3/gnutls_heartbeat_pong.3 +#usr/share/man/man3/gnutls_heartbeat_set_timeouts.3 +#usr/share/man/man3/gnutls_hex2bin.3 +#usr/share/man/man3/gnutls_hex_decode.3 +#usr/share/man/man3/gnutls_hex_decode2.3 +#usr/share/man/man3/gnutls_hex_encode.3 +#usr/share/man/man3/gnutls_hex_encode2.3 +#usr/share/man/man3/gnutls_hmac.3 +#usr/share/man/man3/gnutls_hmac_deinit.3 +#usr/share/man/man3/gnutls_hmac_fast.3 +#usr/share/man/man3/gnutls_hmac_get_len.3 +#usr/share/man/man3/gnutls_hmac_init.3 +#usr/share/man/man3/gnutls_hmac_output.3 +#usr/share/man/man3/gnutls_hmac_set_nonce.3 +#usr/share/man/man3/gnutls_idna_map.3 +#usr/share/man/man3/gnutls_idna_reverse_map.3 +#usr/share/man/man3/gnutls_init.3 +#usr/share/man/man3/gnutls_key_generate.3 +#usr/share/man/man3/gnutls_kx_get.3 +#usr/share/man/man3/gnutls_kx_get_id.3 +#usr/share/man/man3/gnutls_kx_get_name.3 +#usr/share/man/man3/gnutls_kx_list.3 +#usr/share/man/man3/gnutls_load_file.3 +#usr/share/man/man3/gnutls_mac_get.3 +#usr/share/man/man3/gnutls_mac_get_id.3 +#usr/share/man/man3/gnutls_mac_get_key_size.3 +#usr/share/man/man3/gnutls_mac_get_name.3 +#usr/share/man/man3/gnutls_mac_get_nonce_size.3 +#usr/share/man/man3/gnutls_mac_list.3 +#usr/share/man/man3/gnutls_memcmp.3 +#usr/share/man/man3/gnutls_memset.3 +#usr/share/man/man3/gnutls_ocsp_req_add_cert.3 +#usr/share/man/man3/gnutls_ocsp_req_add_cert_id.3 +#usr/share/man/man3/gnutls_ocsp_req_deinit.3 +#usr/share/man/man3/gnutls_ocsp_req_export.3 +#usr/share/man/man3/gnutls_ocsp_req_get_cert_id.3 +#usr/share/man/man3/gnutls_ocsp_req_get_extension.3 +#usr/share/man/man3/gnutls_ocsp_req_get_nonce.3 +#usr/share/man/man3/gnutls_ocsp_req_get_version.3 +#usr/share/man/man3/gnutls_ocsp_req_import.3 +#usr/share/man/man3/gnutls_ocsp_req_init.3 +#usr/share/man/man3/gnutls_ocsp_req_print.3 +#usr/share/man/man3/gnutls_ocsp_req_randomize_nonce.3 +#usr/share/man/man3/gnutls_ocsp_req_set_extension.3 +#usr/share/man/man3/gnutls_ocsp_req_set_nonce.3 +#usr/share/man/man3/gnutls_ocsp_resp_check_crt.3 +#usr/share/man/man3/gnutls_ocsp_resp_deinit.3 +#usr/share/man/man3/gnutls_ocsp_resp_export.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_certs.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_extension.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_nonce.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_produced.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_responder.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_responder2.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_responder_raw_id.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_response.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_signature.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_signature_algorithm.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_single.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_status.3 +#usr/share/man/man3/gnutls_ocsp_resp_get_version.3 +#usr/share/man/man3/gnutls_ocsp_resp_import.3 +#usr/share/man/man3/gnutls_ocsp_resp_init.3 +#usr/share/man/man3/gnutls_ocsp_resp_print.3 +#usr/share/man/man3/gnutls_ocsp_resp_verify.3 +#usr/share/man/man3/gnutls_ocsp_resp_verify_direct.3 +#usr/share/man/man3/gnutls_ocsp_status_request_enable_client.3 +#usr/share/man/man3/gnutls_ocsp_status_request_get.3 +#usr/share/man/man3/gnutls_ocsp_status_request_is_checked.3 +#usr/share/man/man3/gnutls_oid_to_digest.3 +#usr/share/man/man3/gnutls_oid_to_ecc_curve.3 +#usr/share/man/man3/gnutls_oid_to_mac.3 +#usr/share/man/man3/gnutls_oid_to_pk.3 +#usr/share/man/man3/gnutls_oid_to_sign.3 +#usr/share/man/man3/gnutls_openpgp_privkey_sign_hash.3 +#usr/share/man/man3/gnutls_openpgp_send_cert.3 +#usr/share/man/man3/gnutls_packet_deinit.3 +#usr/share/man/man3/gnutls_packet_get.3 +#usr/share/man/man3/gnutls_pcert_deinit.3 +#usr/share/man/man3/gnutls_pcert_export_openpgp.3 +#usr/share/man/man3/gnutls_pcert_export_x509.3 +#usr/share/man/man3/gnutls_pcert_import_openpgp.3 +#usr/share/man/man3/gnutls_pcert_import_openpgp_raw.3 +#usr/share/man/man3/gnutls_pcert_import_x509.3 +#usr/share/man/man3/gnutls_pcert_import_x509_list.3 +#usr/share/man/man3/gnutls_pcert_import_x509_raw.3 +#usr/share/man/man3/gnutls_pcert_list_import_x509_raw.3 +#usr/share/man/man3/gnutls_pem_base64_decode.3 +#usr/share/man/man3/gnutls_pem_base64_decode2.3 +#usr/share/man/man3/gnutls_pem_base64_encode.3 +#usr/share/man/man3/gnutls_pem_base64_encode2.3 +#usr/share/man/man3/gnutls_perror.3 +#usr/share/man/man3/gnutls_pk_algorithm_get_name.3 +#usr/share/man/man3/gnutls_pk_bits_to_sec_param.3 +#usr/share/man/man3/gnutls_pk_get_id.3 +#usr/share/man/man3/gnutls_pk_get_name.3 +#usr/share/man/man3/gnutls_pk_get_oid.3 +#usr/share/man/man3/gnutls_pk_list.3 +#usr/share/man/man3/gnutls_pk_to_sign.3 +#usr/share/man/man3/gnutls_pkcs11_add_provider.3 +#usr/share/man/man3/gnutls_pkcs11_copy_attached_extension.3 +#usr/share/man/man3/gnutls_pkcs11_copy_pubkey.3 +#usr/share/man/man3/gnutls_pkcs11_copy_secret_key.3 +#usr/share/man/man3/gnutls_pkcs11_copy_x509_crt.3 +#usr/share/man/man3/gnutls_pkcs11_copy_x509_crt2.3 +#usr/share/man/man3/gnutls_pkcs11_copy_x509_privkey.3 +#usr/share/man/man3/gnutls_pkcs11_copy_x509_privkey2.3 +#usr/share/man/man3/gnutls_pkcs11_crt_is_known.3 +#usr/share/man/man3/gnutls_pkcs11_deinit.3 +#usr/share/man/man3/gnutls_pkcs11_delete_url.3 +#usr/share/man/man3/gnutls_pkcs11_get_pin_function.3 +#usr/share/man/man3/gnutls_pkcs11_get_raw_issuer.3 +#usr/share/man/man3/gnutls_pkcs11_get_raw_issuer_by_dn.3 +#usr/share/man/man3/gnutls_pkcs11_get_raw_issuer_by_subject_key_id.3 +#usr/share/man/man3/gnutls_pkcs11_init.3 +#usr/share/man/man3/gnutls_pkcs11_obj_deinit.3 +#usr/share/man/man3/gnutls_pkcs11_obj_export.3 +#usr/share/man/man3/gnutls_pkcs11_obj_export2.3 +#usr/share/man/man3/gnutls_pkcs11_obj_export3.3 +#usr/share/man/man3/gnutls_pkcs11_obj_export_url.3 +#usr/share/man/man3/gnutls_pkcs11_obj_flags_get_str.3 +#usr/share/man/man3/gnutls_pkcs11_obj_get_exts.3 +#usr/share/man/man3/gnutls_pkcs11_obj_get_flags.3 +#usr/share/man/man3/gnutls_pkcs11_obj_get_info.3 +#usr/share/man/man3/gnutls_pkcs11_obj_get_type.3 +#usr/share/man/man3/gnutls_pkcs11_obj_import_url.3 +#usr/share/man/man3/gnutls_pkcs11_obj_init.3 +#usr/share/man/man3/gnutls_pkcs11_obj_list_import_url3.3 +#usr/share/man/man3/gnutls_pkcs11_obj_list_import_url4.3 +#usr/share/man/man3/gnutls_pkcs11_obj_set_info.3 +#usr/share/man/man3/gnutls_pkcs11_obj_set_pin_function.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_cpy.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_deinit.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_export_pubkey.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_export_url.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_generate.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_generate2.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_generate3.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_get_info.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_import_url.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_init.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_set_pin_function.3 +#usr/share/man/man3/gnutls_pkcs11_privkey_status.3 +#usr/share/man/man3/gnutls_pkcs11_reinit.3 +#usr/share/man/man3/gnutls_pkcs11_set_pin_function.3 +#usr/share/man/man3/gnutls_pkcs11_set_token_function.3 +#usr/share/man/man3/gnutls_pkcs11_token_get_flags.3 +#usr/share/man/man3/gnutls_pkcs11_token_get_info.3 +#usr/share/man/man3/gnutls_pkcs11_token_get_mechanism.3 +#usr/share/man/man3/gnutls_pkcs11_token_get_random.3 +#usr/share/man/man3/gnutls_pkcs11_token_get_url.3 +#usr/share/man/man3/gnutls_pkcs11_token_init.3 +#usr/share/man/man3/gnutls_pkcs11_token_set_pin.3 +#usr/share/man/man3/gnutls_pkcs11_type_get_name.3 +#usr/share/man/man3/gnutls_pkcs12_bag_decrypt.3 +#usr/share/man/man3/gnutls_pkcs12_bag_deinit.3 +#usr/share/man/man3/gnutls_pkcs12_bag_enc_info.3 +#usr/share/man/man3/gnutls_pkcs12_bag_encrypt.3 +#usr/share/man/man3/gnutls_pkcs12_bag_get_count.3 +#usr/share/man/man3/gnutls_pkcs12_bag_get_data.3 +#usr/share/man/man3/gnutls_pkcs12_bag_get_friendly_name.3 +#usr/share/man/man3/gnutls_pkcs12_bag_get_key_id.3 +#usr/share/man/man3/gnutls_pkcs12_bag_get_type.3 +#usr/share/man/man3/gnutls_pkcs12_bag_init.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_crl.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_crt.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_data.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_friendly_name.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_key_id.3 +#usr/share/man/man3/gnutls_pkcs12_bag_set_privkey.3 +#usr/share/man/man3/gnutls_pkcs12_deinit.3 +#usr/share/man/man3/gnutls_pkcs12_export.3 +#usr/share/man/man3/gnutls_pkcs12_export2.3 +#usr/share/man/man3/gnutls_pkcs12_generate_mac.3 +#usr/share/man/man3/gnutls_pkcs12_generate_mac2.3 +#usr/share/man/man3/gnutls_pkcs12_get_bag.3 +#usr/share/man/man3/gnutls_pkcs12_import.3 +#usr/share/man/man3/gnutls_pkcs12_init.3 +#usr/share/man/man3/gnutls_pkcs12_mac_info.3 +#usr/share/man/man3/gnutls_pkcs12_set_bag.3 +#usr/share/man/man3/gnutls_pkcs12_simple_parse.3 +#usr/share/man/man3/gnutls_pkcs12_verify_mac.3 +#usr/share/man/man3/gnutls_pkcs7_add_attr.3 +#usr/share/man/man3/gnutls_pkcs7_attrs_deinit.3 +#usr/share/man/man3/gnutls_pkcs7_deinit.3 +#usr/share/man/man3/gnutls_pkcs7_delete_crl.3 +#usr/share/man/man3/gnutls_pkcs7_delete_crt.3 +#usr/share/man/man3/gnutls_pkcs7_export.3 +#usr/share/man/man3/gnutls_pkcs7_export2.3 +#usr/share/man/man3/gnutls_pkcs7_get_attr.3 +#usr/share/man/man3/gnutls_pkcs7_get_crl_count.3 +#usr/share/man/man3/gnutls_pkcs7_get_crl_raw.3 +#usr/share/man/man3/gnutls_pkcs7_get_crl_raw2.3 +#usr/share/man/man3/gnutls_pkcs7_get_crt_count.3 +#usr/share/man/man3/gnutls_pkcs7_get_crt_raw.3 +#usr/share/man/man3/gnutls_pkcs7_get_crt_raw2.3 +#usr/share/man/man3/gnutls_pkcs7_get_embedded_data.3 +#usr/share/man/man3/gnutls_pkcs7_get_embedded_data_oid.3 +#usr/share/man/man3/gnutls_pkcs7_get_signature_count.3 +#usr/share/man/man3/gnutls_pkcs7_get_signature_info.3 +#usr/share/man/man3/gnutls_pkcs7_import.3 +#usr/share/man/man3/gnutls_pkcs7_init.3 +#usr/share/man/man3/gnutls_pkcs7_print.3 +#usr/share/man/man3/gnutls_pkcs7_set_crl.3 +#usr/share/man/man3/gnutls_pkcs7_set_crl_raw.3 +#usr/share/man/man3/gnutls_pkcs7_set_crt.3 +#usr/share/man/man3/gnutls_pkcs7_set_crt_raw.3 +#usr/share/man/man3/gnutls_pkcs7_sign.3 +#usr/share/man/man3/gnutls_pkcs7_signature_info_deinit.3 +#usr/share/man/man3/gnutls_pkcs7_verify.3 +#usr/share/man/man3/gnutls_pkcs7_verify_direct.3 +#usr/share/man/man3/gnutls_pkcs8_info.3 +#usr/share/man/man3/gnutls_pkcs_schema_get_name.3 +#usr/share/man/man3/gnutls_pkcs_schema_get_oid.3 +#usr/share/man/man3/gnutls_prf.3 +#usr/share/man/man3/gnutls_prf_raw.3 +#usr/share/man/man3/gnutls_prf_rfc5705.3 +#usr/share/man/man3/gnutls_priority_certificate_type_list.3 +#usr/share/man/man3/gnutls_priority_cipher_list.3 +#usr/share/man/man3/gnutls_priority_compression_list.3 +#usr/share/man/man3/gnutls_priority_deinit.3 +#usr/share/man/man3/gnutls_priority_ecc_curve_list.3 +#usr/share/man/man3/gnutls_priority_get_cipher_suite_index.3 +#usr/share/man/man3/gnutls_priority_init.3 +#usr/share/man/man3/gnutls_priority_kx_list.3 +#usr/share/man/man3/gnutls_priority_mac_list.3 +#usr/share/man/man3/gnutls_priority_protocol_list.3 +#usr/share/man/man3/gnutls_priority_set.3 +#usr/share/man/man3/gnutls_priority_set_direct.3 +#usr/share/man/man3/gnutls_priority_sign_list.3 +#usr/share/man/man3/gnutls_priority_string_list.3 +#usr/share/man/man3/gnutls_privkey_decrypt_data.3 +#usr/share/man/man3/gnutls_privkey_deinit.3 +#usr/share/man/man3/gnutls_privkey_export_dsa_raw.3 +#usr/share/man/man3/gnutls_privkey_export_ecc_raw.3 +#usr/share/man/man3/gnutls_privkey_export_openpgp.3 +#usr/share/man/man3/gnutls_privkey_export_pkcs11.3 +#usr/share/man/man3/gnutls_privkey_export_rsa_raw.3 +#usr/share/man/man3/gnutls_privkey_export_x509.3 +#usr/share/man/man3/gnutls_privkey_generate.3 +#usr/share/man/man3/gnutls_privkey_generate2.3 +#usr/share/man/man3/gnutls_privkey_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_privkey_get_seed.3 +#usr/share/man/man3/gnutls_privkey_get_type.3 +#usr/share/man/man3/gnutls_privkey_import_dsa_raw.3 +#usr/share/man/man3/gnutls_privkey_import_ecc_raw.3 +#usr/share/man/man3/gnutls_privkey_import_ext.3 +#usr/share/man/man3/gnutls_privkey_import_ext2.3 +#usr/share/man/man3/gnutls_privkey_import_ext3.3 +#usr/share/man/man3/gnutls_privkey_import_openpgp.3 +#usr/share/man/man3/gnutls_privkey_import_openpgp_raw.3 +#usr/share/man/man3/gnutls_privkey_import_pkcs11.3 +#usr/share/man/man3/gnutls_privkey_import_pkcs11_url.3 +#usr/share/man/man3/gnutls_privkey_import_rsa_raw.3 +#usr/share/man/man3/gnutls_privkey_import_tpm_raw.3 +#usr/share/man/man3/gnutls_privkey_import_tpm_url.3 +#usr/share/man/man3/gnutls_privkey_import_url.3 +#usr/share/man/man3/gnutls_privkey_import_x509.3 +#usr/share/man/man3/gnutls_privkey_import_x509_raw.3 +#usr/share/man/man3/gnutls_privkey_init.3 +#usr/share/man/man3/gnutls_privkey_set_flags.3 +#usr/share/man/man3/gnutls_privkey_set_pin_function.3 +#usr/share/man/man3/gnutls_privkey_sign_data.3 +#usr/share/man/man3/gnutls_privkey_sign_hash.3 +#usr/share/man/man3/gnutls_privkey_status.3 +#usr/share/man/man3/gnutls_privkey_verify_params.3 +#usr/share/man/man3/gnutls_privkey_verify_seed.3 +#usr/share/man/man3/gnutls_protocol_get_id.3 +#usr/share/man/man3/gnutls_protocol_get_name.3 +#usr/share/man/man3/gnutls_protocol_get_version.3 +#usr/share/man/man3/gnutls_protocol_list.3 +#usr/share/man/man3/gnutls_psk_allocate_client_credentials.3 +#usr/share/man/man3/gnutls_psk_allocate_server_credentials.3 +#usr/share/man/man3/gnutls_psk_client_get_hint.3 +#usr/share/man/man3/gnutls_psk_free_client_credentials.3 +#usr/share/man/man3/gnutls_psk_free_server_credentials.3 +#usr/share/man/man3/gnutls_psk_server_get_username.3 +#usr/share/man/man3/gnutls_psk_set_client_credentials.3 +#usr/share/man/man3/gnutls_psk_set_client_credentials_function.3 +#usr/share/man/man3/gnutls_psk_set_params_function.3 +#usr/share/man/man3/gnutls_psk_set_server_credentials_file.3 +#usr/share/man/man3/gnutls_psk_set_server_credentials_function.3 +#usr/share/man/man3/gnutls_psk_set_server_credentials_hint.3 +#usr/share/man/man3/gnutls_psk_set_server_dh_params.3 +#usr/share/man/man3/gnutls_psk_set_server_known_dh_params.3 +#usr/share/man/man3/gnutls_psk_set_server_params_function.3 +#usr/share/man/man3/gnutls_pubkey_deinit.3 +#usr/share/man/man3/gnutls_pubkey_encrypt_data.3 +#usr/share/man/man3/gnutls_pubkey_export.3 +#usr/share/man/man3/gnutls_pubkey_export2.3 +#usr/share/man/man3/gnutls_pubkey_export_dsa_raw.3 +#usr/share/man/man3/gnutls_pubkey_export_ecc_raw.3 +#usr/share/man/man3/gnutls_pubkey_export_ecc_x962.3 +#usr/share/man/man3/gnutls_pubkey_export_rsa_raw.3 +#usr/share/man/man3/gnutls_pubkey_get_key_id.3 +#usr/share/man/man3/gnutls_pubkey_get_key_usage.3 +#usr/share/man/man3/gnutls_pubkey_get_openpgp_key_id.3 +#usr/share/man/man3/gnutls_pubkey_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_pubkey_get_preferred_hash_algorithm.3 +#usr/share/man/man3/gnutls_pubkey_import.3 +#usr/share/man/man3/gnutls_pubkey_import_dsa_raw.3 +#usr/share/man/man3/gnutls_pubkey_import_ecc_raw.3 +#usr/share/man/man3/gnutls_pubkey_import_ecc_x962.3 +#usr/share/man/man3/gnutls_pubkey_import_openpgp.3 +#usr/share/man/man3/gnutls_pubkey_import_openpgp_raw.3 +#usr/share/man/man3/gnutls_pubkey_import_pkcs11.3 +#usr/share/man/man3/gnutls_pubkey_import_privkey.3 +#usr/share/man/man3/gnutls_pubkey_import_rsa_raw.3 +#usr/share/man/man3/gnutls_pubkey_import_tpm_raw.3 +#usr/share/man/man3/gnutls_pubkey_import_tpm_url.3 +#usr/share/man/man3/gnutls_pubkey_import_url.3 +#usr/share/man/man3/gnutls_pubkey_import_x509.3 +#usr/share/man/man3/gnutls_pubkey_import_x509_crq.3 +#usr/share/man/man3/gnutls_pubkey_import_x509_raw.3 +#usr/share/man/man3/gnutls_pubkey_init.3 +#usr/share/man/man3/gnutls_pubkey_print.3 +#usr/share/man/man3/gnutls_pubkey_set_key_usage.3 +#usr/share/man/man3/gnutls_pubkey_set_pin_function.3 +#usr/share/man/man3/gnutls_pubkey_verify_data2.3 +#usr/share/man/man3/gnutls_pubkey_verify_hash2.3 +#usr/share/man/man3/gnutls_pubkey_verify_params.3 +#usr/share/man/man3/gnutls_random_art.3 +#usr/share/man/man3/gnutls_range_split.3 +#usr/share/man/man3/gnutls_record_can_use_length_hiding.3 +#usr/share/man/man3/gnutls_record_check_corked.3 +#usr/share/man/man3/gnutls_record_check_pending.3 +#usr/share/man/man3/gnutls_record_cork.3 +#usr/share/man/man3/gnutls_record_disable_padding.3 +#usr/share/man/man3/gnutls_record_discard_queued.3 +#usr/share/man/man3/gnutls_record_get_direction.3 +#usr/share/man/man3/gnutls_record_get_discarded.3 +#usr/share/man/man3/gnutls_record_get_max_size.3 +#usr/share/man/man3/gnutls_record_get_state.3 +#usr/share/man/man3/gnutls_record_overhead_size.3 +#usr/share/man/man3/gnutls_record_recv.3 +#usr/share/man/man3/gnutls_record_recv_packet.3 +#usr/share/man/man3/gnutls_record_recv_seq.3 +#usr/share/man/man3/gnutls_record_send.3 +#usr/share/man/man3/gnutls_record_send_range.3 +#usr/share/man/man3/gnutls_record_set_max_size.3 +#usr/share/man/man3/gnutls_record_set_state.3 +#usr/share/man/man3/gnutls_record_set_timeout.3 +#usr/share/man/man3/gnutls_record_uncork.3 +#usr/share/man/man3/gnutls_register_custom_url.3 +#usr/share/man/man3/gnutls_rehandshake.3 +#usr/share/man/man3/gnutls_rnd.3 +#usr/share/man/man3/gnutls_rnd_refresh.3 +#usr/share/man/man3/gnutls_safe_renegotiation_status.3 +#usr/share/man/man3/gnutls_sec_param_get_name.3 +#usr/share/man/man3/gnutls_sec_param_to_pk_bits.3 +#usr/share/man/man3/gnutls_sec_param_to_symmetric_bits.3 +#usr/share/man/man3/gnutls_server_name_get.3 +#usr/share/man/man3/gnutls_server_name_set.3 +#usr/share/man/man3/gnutls_session_channel_binding.3 +#usr/share/man/man3/gnutls_session_enable_compatibility_mode.3 +#usr/share/man/man3/gnutls_session_etm_status.3 +#usr/share/man/man3/gnutls_session_ext_master_secret_status.3 +#usr/share/man/man3/gnutls_session_ext_register.3 +#usr/share/man/man3/gnutls_session_force_valid.3 +#usr/share/man/man3/gnutls_session_get_data.3 +#usr/share/man/man3/gnutls_session_get_data2.3 +#usr/share/man/man3/gnutls_session_get_desc.3 +#usr/share/man/man3/gnutls_session_get_flags.3 +#usr/share/man/man3/gnutls_session_get_id.3 +#usr/share/man/man3/gnutls_session_get_id2.3 +#usr/share/man/man3/gnutls_session_get_master_secret.3 +#usr/share/man/man3/gnutls_session_get_ptr.3 +#usr/share/man/man3/gnutls_session_get_random.3 +#usr/share/man/man3/gnutls_session_get_verify_cert_status.3 +#usr/share/man/man3/gnutls_session_is_resumed.3 +#usr/share/man/man3/gnutls_session_resumption_requested.3 +#usr/share/man/man3/gnutls_session_set_data.3 +#usr/share/man/man3/gnutls_session_set_id.3 +#usr/share/man/man3/gnutls_session_set_premaster.3 +#usr/share/man/man3/gnutls_session_set_ptr.3 +#usr/share/man/man3/gnutls_session_set_verify_cert.3 +#usr/share/man/man3/gnutls_session_set_verify_cert2.3 +#usr/share/man/man3/gnutls_session_set_verify_function.3 +#usr/share/man/man3/gnutls_session_supplemental_register.3 +#usr/share/man/man3/gnutls_session_ticket_enable_client.3 +#usr/share/man/man3/gnutls_session_ticket_enable_server.3 +#usr/share/man/man3/gnutls_session_ticket_key_generate.3 +#usr/share/man/man3/gnutls_set_default_priority.3 +#usr/share/man/man3/gnutls_sign_algorithm_get.3 +#usr/share/man/man3/gnutls_sign_algorithm_get_client.3 +#usr/share/man/man3/gnutls_sign_algorithm_get_requested.3 +#usr/share/man/man3/gnutls_sign_get_hash_algorithm.3 +#usr/share/man/man3/gnutls_sign_get_id.3 +#usr/share/man/man3/gnutls_sign_get_name.3 +#usr/share/man/man3/gnutls_sign_get_oid.3 +#usr/share/man/man3/gnutls_sign_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_sign_is_secure.3 +#usr/share/man/man3/gnutls_sign_list.3 +#usr/share/man/man3/gnutls_srp_allocate_client_credentials.3 +#usr/share/man/man3/gnutls_srp_allocate_server_credentials.3 +#usr/share/man/man3/gnutls_srp_base64_decode.3 +#usr/share/man/man3/gnutls_srp_base64_decode2.3 +#usr/share/man/man3/gnutls_srp_base64_encode.3 +#usr/share/man/man3/gnutls_srp_base64_encode2.3 +#usr/share/man/man3/gnutls_srp_free_client_credentials.3 +#usr/share/man/man3/gnutls_srp_free_server_credentials.3 +#usr/share/man/man3/gnutls_srp_server_get_username.3 +#usr/share/man/man3/gnutls_srp_set_client_credentials.3 +#usr/share/man/man3/gnutls_srp_set_client_credentials_function.3 +#usr/share/man/man3/gnutls_srp_set_prime_bits.3 +#usr/share/man/man3/gnutls_srp_set_server_credentials_file.3 +#usr/share/man/man3/gnutls_srp_set_server_credentials_function.3 +#usr/share/man/man3/gnutls_srp_set_server_fake_salt_seed.3 +#usr/share/man/man3/gnutls_srp_verifier.3 +#usr/share/man/man3/gnutls_srtp_get_keys.3 +#usr/share/man/man3/gnutls_srtp_get_mki.3 +#usr/share/man/man3/gnutls_srtp_get_profile_id.3 +#usr/share/man/man3/gnutls_srtp_get_profile_name.3 +#usr/share/man/man3/gnutls_srtp_get_selected_profile.3 +#usr/share/man/man3/gnutls_srtp_set_mki.3 +#usr/share/man/man3/gnutls_srtp_set_profile.3 +#usr/share/man/man3/gnutls_srtp_set_profile_direct.3 +#usr/share/man/man3/gnutls_store_commitment.3 +#usr/share/man/man3/gnutls_store_pubkey.3 +#usr/share/man/man3/gnutls_strerror.3 +#usr/share/man/man3/gnutls_strerror_name.3 +#usr/share/man/man3/gnutls_subject_alt_names_deinit.3 +#usr/share/man/man3/gnutls_subject_alt_names_get.3 +#usr/share/man/man3/gnutls_subject_alt_names_init.3 +#usr/share/man/man3/gnutls_subject_alt_names_set.3 +#usr/share/man/man3/gnutls_supplemental_get_name.3 +#usr/share/man/man3/gnutls_supplemental_recv.3 +#usr/share/man/man3/gnutls_supplemental_register.3 +#usr/share/man/man3/gnutls_supplemental_send.3 +#usr/share/man/man3/gnutls_system_key_add_x509.3 +#usr/share/man/man3/gnutls_system_key_delete.3 +#usr/share/man/man3/gnutls_system_key_iter_deinit.3 +#usr/share/man/man3/gnutls_system_key_iter_get_info.3 +#usr/share/man/man3/gnutls_system_recv_timeout.3 +#usr/share/man/man3/gnutls_tdb_deinit.3 +#usr/share/man/man3/gnutls_tdb_init.3 +#usr/share/man/man3/gnutls_tdb_set_store_commitment_func.3 +#usr/share/man/man3/gnutls_tdb_set_store_func.3 +#usr/share/man/man3/gnutls_tdb_set_verify_func.3 +#usr/share/man/man3/gnutls_tpm_get_registered.3 +#usr/share/man/man3/gnutls_tpm_key_list_deinit.3 +#usr/share/man/man3/gnutls_tpm_key_list_get_url.3 +#usr/share/man/man3/gnutls_tpm_privkey_delete.3 +#usr/share/man/man3/gnutls_tpm_privkey_generate.3 +#usr/share/man/man3/gnutls_transport_get_int.3 +#usr/share/man/man3/gnutls_transport_get_int2.3 +#usr/share/man/man3/gnutls_transport_get_ptr.3 +#usr/share/man/man3/gnutls_transport_get_ptr2.3 +#usr/share/man/man3/gnutls_transport_set_errno.3 +#usr/share/man/man3/gnutls_transport_set_errno_function.3 +#usr/share/man/man3/gnutls_transport_set_fastopen.3 +#usr/share/man/man3/gnutls_transport_set_int.3 +#usr/share/man/man3/gnutls_transport_set_int2.3 +#usr/share/man/man3/gnutls_transport_set_ptr.3 +#usr/share/man/man3/gnutls_transport_set_ptr2.3 +#usr/share/man/man3/gnutls_transport_set_pull_function.3 +#usr/share/man/man3/gnutls_transport_set_pull_timeout_function.3 +#usr/share/man/man3/gnutls_transport_set_push_function.3 +#usr/share/man/man3/gnutls_transport_set_vec_push_function.3 +#usr/share/man/man3/gnutls_url_is_supported.3 +#usr/share/man/man3/gnutls_utf8_password_normalize.3 +#usr/share/man/man3/gnutls_verify_stored_pubkey.3 +#usr/share/man/man3/gnutls_x509_aia_deinit.3 +#usr/share/man/man3/gnutls_x509_aia_get.3 +#usr/share/man/man3/gnutls_x509_aia_init.3 +#usr/share/man/man3/gnutls_x509_aia_set.3 +#usr/share/man/man3/gnutls_x509_aki_deinit.3 +#usr/share/man/man3/gnutls_x509_aki_get_cert_issuer.3 +#usr/share/man/man3/gnutls_x509_aki_get_id.3 +#usr/share/man/man3/gnutls_x509_aki_init.3 +#usr/share/man/man3/gnutls_x509_aki_set_cert_issuer.3 +#usr/share/man/man3/gnutls_x509_aki_set_id.3 +#usr/share/man/man3/gnutls_x509_cidr_to_rfc5280.3 +#usr/share/man/man3/gnutls_x509_crl_check_issuer.3 +#usr/share/man/man3/gnutls_x509_crl_deinit.3 +#usr/share/man/man3/gnutls_x509_crl_dist_points_deinit.3 +#usr/share/man/man3/gnutls_x509_crl_dist_points_get.3 +#usr/share/man/man3/gnutls_x509_crl_dist_points_init.3 +#usr/share/man/man3/gnutls_x509_crl_dist_points_set.3 +#usr/share/man/man3/gnutls_x509_crl_export.3 +#usr/share/man/man3/gnutls_x509_crl_export2.3 +#usr/share/man/man3/gnutls_x509_crl_get_authority_key_gn_serial.3 +#usr/share/man/man3/gnutls_x509_crl_get_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_crl_get_crt_count.3 +#usr/share/man/man3/gnutls_x509_crl_get_crt_serial.3 +#usr/share/man/man3/gnutls_x509_crl_get_dn_oid.3 +#usr/share/man/man3/gnutls_x509_crl_get_extension_data.3 +#usr/share/man/man3/gnutls_x509_crl_get_extension_data2.3 +#usr/share/man/man3/gnutls_x509_crl_get_extension_info.3 +#usr/share/man/man3/gnutls_x509_crl_get_extension_oid.3 +#usr/share/man/man3/gnutls_x509_crl_get_issuer_dn.3 +#usr/share/man/man3/gnutls_x509_crl_get_issuer_dn2.3 +#usr/share/man/man3/gnutls_x509_crl_get_issuer_dn3.3 +#usr/share/man/man3/gnutls_x509_crl_get_issuer_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crl_get_next_update.3 +#usr/share/man/man3/gnutls_x509_crl_get_number.3 +#usr/share/man/man3/gnutls_x509_crl_get_raw_issuer_dn.3 +#usr/share/man/man3/gnutls_x509_crl_get_signature.3 +#usr/share/man/man3/gnutls_x509_crl_get_signature_algorithm.3 +#usr/share/man/man3/gnutls_x509_crl_get_signature_oid.3 +#usr/share/man/man3/gnutls_x509_crl_get_this_update.3 +#usr/share/man/man3/gnutls_x509_crl_get_version.3 +#usr/share/man/man3/gnutls_x509_crl_import.3 +#usr/share/man/man3/gnutls_x509_crl_init.3 +#usr/share/man/man3/gnutls_x509_crl_iter_crt_serial.3 +#usr/share/man/man3/gnutls_x509_crl_iter_deinit.3 +#usr/share/man/man3/gnutls_x509_crl_list_import.3 +#usr/share/man/man3/gnutls_x509_crl_list_import2.3 +#usr/share/man/man3/gnutls_x509_crl_print.3 +#usr/share/man/man3/gnutls_x509_crl_privkey_sign.3 +#usr/share/man/man3/gnutls_x509_crl_set_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_crl_set_crt.3 +#usr/share/man/man3/gnutls_x509_crl_set_crt_serial.3 +#usr/share/man/man3/gnutls_x509_crl_set_next_update.3 +#usr/share/man/man3/gnutls_x509_crl_set_number.3 +#usr/share/man/man3/gnutls_x509_crl_set_this_update.3 +#usr/share/man/man3/gnutls_x509_crl_set_version.3 +#usr/share/man/man3/gnutls_x509_crl_sign.3 +#usr/share/man/man3/gnutls_x509_crl_sign2.3 +#usr/share/man/man3/gnutls_x509_crl_verify.3 +#usr/share/man/man3/gnutls_x509_crq_deinit.3 +#usr/share/man/man3/gnutls_x509_crq_export.3 +#usr/share/man/man3/gnutls_x509_crq_export2.3 +#usr/share/man/man3/gnutls_x509_crq_get_attribute_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_attribute_data.3 +#usr/share/man/man3/gnutls_x509_crq_get_attribute_info.3 +#usr/share/man/man3/gnutls_x509_crq_get_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_crq_get_challenge_password.3 +#usr/share/man/man3/gnutls_x509_crq_get_dn.3 +#usr/share/man/man3/gnutls_x509_crq_get_dn2.3 +#usr/share/man/man3/gnutls_x509_crq_get_dn3.3 +#usr/share/man/man3/gnutls_x509_crq_get_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_dn_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_extension_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_extension_by_oid2.3 +#usr/share/man/man3/gnutls_x509_crq_get_extension_data.3 +#usr/share/man/man3/gnutls_x509_crq_get_extension_data2.3 +#usr/share/man/man3/gnutls_x509_crq_get_extension_info.3 +#usr/share/man/man3/gnutls_x509_crq_get_key_id.3 +#usr/share/man/man3/gnutls_x509_crq_get_key_purpose_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_key_rsa_raw.3 +#usr/share/man/man3/gnutls_x509_crq_get_key_usage.3 +#usr/share/man/man3/gnutls_x509_crq_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_x509_crq_get_pk_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_crq_get_signature_algorithm.3 +#usr/share/man/man3/gnutls_x509_crq_get_signature_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_subject_alt_name.3 +#usr/share/man/man3/gnutls_x509_crq_get_subject_alt_othername_oid.3 +#usr/share/man/man3/gnutls_x509_crq_get_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_crq_get_version.3 +#usr/share/man/man3/gnutls_x509_crq_import.3 +#usr/share/man/man3/gnutls_x509_crq_init.3 +#usr/share/man/man3/gnutls_x509_crq_print.3 +#usr/share/man/man3/gnutls_x509_crq_privkey_sign.3 +#usr/share/man/man3/gnutls_x509_crq_set_attribute_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_set_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_crq_set_challenge_password.3 +#usr/share/man/man3/gnutls_x509_crq_set_dn.3 +#usr/share/man/man3/gnutls_x509_crq_set_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_set_extension_by_oid.3 +#usr/share/man/man3/gnutls_x509_crq_set_key.3 +#usr/share/man/man3/gnutls_x509_crq_set_key_purpose_oid.3 +#usr/share/man/man3/gnutls_x509_crq_set_key_rsa_raw.3 +#usr/share/man/man3/gnutls_x509_crq_set_key_usage.3 +#usr/share/man/man3/gnutls_x509_crq_set_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_crq_set_pubkey.3 +#usr/share/man/man3/gnutls_x509_crq_set_subject_alt_name.3 +#usr/share/man/man3/gnutls_x509_crq_set_subject_alt_othername.3 +#usr/share/man/man3/gnutls_x509_crq_set_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_crq_set_version.3 +#usr/share/man/man3/gnutls_x509_crq_sign.3 +#usr/share/man/man3/gnutls_x509_crq_sign2.3 +#usr/share/man/man3/gnutls_x509_crq_verify.3 +#usr/share/man/man3/gnutls_x509_crt_check_email.3 +#usr/share/man/man3/gnutls_x509_crt_check_hostname.3 +#usr/share/man/man3/gnutls_x509_crt_check_hostname2.3 +#usr/share/man/man3/gnutls_x509_crt_check_issuer.3 +#usr/share/man/man3/gnutls_x509_crt_check_key_purpose.3 +#usr/share/man/man3/gnutls_x509_crt_check_revocation.3 +#usr/share/man/man3/gnutls_x509_crt_cpy_crl_dist_points.3 +#usr/share/man/man3/gnutls_x509_crt_deinit.3 +#usr/share/man/man3/gnutls_x509_crt_equals.3 +#usr/share/man/man3/gnutls_x509_crt_equals2.3 +#usr/share/man/man3/gnutls_x509_crt_export.3 +#usr/share/man/man3/gnutls_x509_crt_export2.3 +#usr/share/man/man3/gnutls_x509_crt_get_activation_time.3 +#usr/share/man/man3/gnutls_x509_crt_get_authority_info_access.3 +#usr/share/man/man3/gnutls_x509_crt_get_authority_key_gn_serial.3 +#usr/share/man/man3/gnutls_x509_crt_get_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_crt_get_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_crt_get_ca_status.3 +#usr/share/man/man3/gnutls_x509_crt_get_crl_dist_points.3 +#usr/share/man/man3/gnutls_x509_crt_get_dn.3 +#usr/share/man/man3/gnutls_x509_crt_get_dn2.3 +#usr/share/man/man3/gnutls_x509_crt_get_dn3.3 +#usr/share/man/man3/gnutls_x509_crt_get_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_dn_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_expiration_time.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_by_oid2.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_data.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_data2.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_info.3 +#usr/share/man/man3/gnutls_x509_crt_get_extension_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_fingerprint.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_alt_name.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_alt_name2.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_alt_othername_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_dn.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_dn2.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_dn3.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_dn_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_issuer_unique_id.3 +#usr/share/man/man3/gnutls_x509_crt_get_key_id.3 +#usr/share/man/man3/gnutls_x509_crt_get_key_purpose_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_key_usage.3 +#usr/share/man/man3/gnutls_x509_crt_get_name_constraints.3 +#usr/share/man/man3/gnutls_x509_crt_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_x509_crt_get_pk_dsa_raw.3 +#usr/share/man/man3/gnutls_x509_crt_get_pk_ecc_raw.3 +#usr/share/man/man3/gnutls_x509_crt_get_pk_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_pk_rsa_raw.3 +#usr/share/man/man3/gnutls_x509_crt_get_policy.3 +#usr/share/man/man3/gnutls_x509_crt_get_preferred_hash_algorithm.3 +#usr/share/man/man3/gnutls_x509_crt_get_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_crt_get_proxy.3 +#usr/share/man/man3/gnutls_x509_crt_get_raw_dn.3 +#usr/share/man/man3/gnutls_x509_crt_get_raw_issuer_dn.3 +#usr/share/man/man3/gnutls_x509_crt_get_serial.3 +#usr/share/man/man3/gnutls_x509_crt_get_signature.3 +#usr/share/man/man3/gnutls_x509_crt_get_signature_algorithm.3 +#usr/share/man/man3/gnutls_x509_crt_get_signature_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject_alt_name.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject_alt_name2.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject_alt_othername_oid.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject_key_id.3 +#usr/share/man/man3/gnutls_x509_crt_get_subject_unique_id.3 +#usr/share/man/man3/gnutls_x509_crt_get_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_crt_get_version.3 +#usr/share/man/man3/gnutls_x509_crt_import.3 +#usr/share/man/man3/gnutls_x509_crt_import_pkcs11.3 +#usr/share/man/man3/gnutls_x509_crt_import_url.3 +#usr/share/man/man3/gnutls_x509_crt_init.3 +#usr/share/man/man3/gnutls_x509_crt_list_import.3 +#usr/share/man/man3/gnutls_x509_crt_list_import2.3 +#usr/share/man/man3/gnutls_x509_crt_list_import_pkcs11.3 +#usr/share/man/man3/gnutls_x509_crt_list_verify.3 +#usr/share/man/man3/gnutls_x509_crt_print.3 +#usr/share/man/man3/gnutls_x509_crt_privkey_sign.3 +#usr/share/man/man3/gnutls_x509_crt_set_activation_time.3 +#usr/share/man/man3/gnutls_x509_crt_set_authority_info_access.3 +#usr/share/man/man3/gnutls_x509_crt_set_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_crt_set_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_crt_set_ca_status.3 +#usr/share/man/man3/gnutls_x509_crt_set_crl_dist_points.3 +#usr/share/man/man3/gnutls_x509_crt_set_crl_dist_points2.3 +#usr/share/man/man3/gnutls_x509_crt_set_crq.3 +#usr/share/man/man3/gnutls_x509_crt_set_crq_extension_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_set_crq_extensions.3 +#usr/share/man/man3/gnutls_x509_crt_set_dn.3 +#usr/share/man/man3/gnutls_x509_crt_set_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_set_expiration_time.3 +#usr/share/man/man3/gnutls_x509_crt_set_extension_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_set_issuer_alt_name.3 +#usr/share/man/man3/gnutls_x509_crt_set_issuer_alt_othername.3 +#usr/share/man/man3/gnutls_x509_crt_set_issuer_dn.3 +#usr/share/man/man3/gnutls_x509_crt_set_issuer_dn_by_oid.3 +#usr/share/man/man3/gnutls_x509_crt_set_issuer_unique_id.3 +#usr/share/man/man3/gnutls_x509_crt_set_key.3 +#usr/share/man/man3/gnutls_x509_crt_set_key_purpose_oid.3 +#usr/share/man/man3/gnutls_x509_crt_set_key_usage.3 +#usr/share/man/man3/gnutls_x509_crt_set_name_constraints.3 +#usr/share/man/man3/gnutls_x509_crt_set_pin_function.3 +#usr/share/man/man3/gnutls_x509_crt_set_policy.3 +#usr/share/man/man3/gnutls_x509_crt_set_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_crt_set_proxy.3 +#usr/share/man/man3/gnutls_x509_crt_set_proxy_dn.3 +#usr/share/man/man3/gnutls_x509_crt_set_pubkey.3 +#usr/share/man/man3/gnutls_x509_crt_set_serial.3 +#usr/share/man/man3/gnutls_x509_crt_set_subject_alt_name.3 +#usr/share/man/man3/gnutls_x509_crt_set_subject_alt_othername.3 +#usr/share/man/man3/gnutls_x509_crt_set_subject_alternative_name.3 +#usr/share/man/man3/gnutls_x509_crt_set_subject_key_id.3 +#usr/share/man/man3/gnutls_x509_crt_set_subject_unique_id.3 +#usr/share/man/man3/gnutls_x509_crt_set_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_crt_set_version.3 +#usr/share/man/man3/gnutls_x509_crt_sign.3 +#usr/share/man/man3/gnutls_x509_crt_sign2.3 +#usr/share/man/man3/gnutls_x509_crt_verify.3 +#usr/share/man/man3/gnutls_x509_crt_verify_data2.3 +#usr/share/man/man3/gnutls_x509_dn_deinit.3 +#usr/share/man/man3/gnutls_x509_dn_export.3 +#usr/share/man/man3/gnutls_x509_dn_export2.3 +#usr/share/man/man3/gnutls_x509_dn_get_rdn_ava.3 +#usr/share/man/man3/gnutls_x509_dn_get_str.3 +#usr/share/man/man3/gnutls_x509_dn_get_str2.3 +#usr/share/man/man3/gnutls_x509_dn_import.3 +#usr/share/man/man3/gnutls_x509_dn_init.3 +#usr/share/man/man3/gnutls_x509_dn_oid_known.3 +#usr/share/man/man3/gnutls_x509_dn_oid_name.3 +#usr/share/man/man3/gnutls_x509_dn_set_str.3 +#usr/share/man/man3/gnutls_x509_ext_deinit.3 +#usr/share/man/man3/gnutls_x509_ext_export_aia.3 +#usr/share/man/man3/gnutls_x509_ext_export_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_ext_export_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_ext_export_crl_dist_points.3 +#usr/share/man/man3/gnutls_x509_ext_export_key_purposes.3 +#usr/share/man/man3/gnutls_x509_ext_export_key_usage.3 +#usr/share/man/man3/gnutls_x509_ext_export_name_constraints.3 +#usr/share/man/man3/gnutls_x509_ext_export_policies.3 +#usr/share/man/man3/gnutls_x509_ext_export_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_ext_export_proxy.3 +#usr/share/man/man3/gnutls_x509_ext_export_subject_alt_names.3 +#usr/share/man/man3/gnutls_x509_ext_export_subject_key_id.3 +#usr/share/man/man3/gnutls_x509_ext_export_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_ext_import_aia.3 +#usr/share/man/man3/gnutls_x509_ext_import_authority_key_id.3 +#usr/share/man/man3/gnutls_x509_ext_import_basic_constraints.3 +#usr/share/man/man3/gnutls_x509_ext_import_crl_dist_points.3 +#usr/share/man/man3/gnutls_x509_ext_import_key_purposes.3 +#usr/share/man/man3/gnutls_x509_ext_import_key_usage.3 +#usr/share/man/man3/gnutls_x509_ext_import_name_constraints.3 +#usr/share/man/man3/gnutls_x509_ext_import_policies.3 +#usr/share/man/man3/gnutls_x509_ext_import_private_key_usage_period.3 +#usr/share/man/man3/gnutls_x509_ext_import_proxy.3 +#usr/share/man/man3/gnutls_x509_ext_import_subject_alt_names.3 +#usr/share/man/man3/gnutls_x509_ext_import_subject_key_id.3 +#usr/share/man/man3/gnutls_x509_ext_import_tlsfeatures.3 +#usr/share/man/man3/gnutls_x509_ext_print.3 +#usr/share/man/man3/gnutls_x509_key_purpose_deinit.3 +#usr/share/man/man3/gnutls_x509_key_purpose_get.3 +#usr/share/man/man3/gnutls_x509_key_purpose_init.3 +#usr/share/man/man3/gnutls_x509_key_purpose_set.3 +#usr/share/man/man3/gnutls_x509_name_constraints_add_excluded.3 +#usr/share/man/man3/gnutls_x509_name_constraints_add_permitted.3 +#usr/share/man/man3/gnutls_x509_name_constraints_check.3 +#usr/share/man/man3/gnutls_x509_name_constraints_check_crt.3 +#usr/share/man/man3/gnutls_x509_name_constraints_deinit.3 +#usr/share/man/man3/gnutls_x509_name_constraints_get_excluded.3 +#usr/share/man/man3/gnutls_x509_name_constraints_get_permitted.3 +#usr/share/man/man3/gnutls_x509_name_constraints_init.3 +#usr/share/man/man3/gnutls_x509_othername_to_virtual.3 +#usr/share/man/man3/gnutls_x509_policies_deinit.3 +#usr/share/man/man3/gnutls_x509_policies_get.3 +#usr/share/man/man3/gnutls_x509_policies_init.3 +#usr/share/man/man3/gnutls_x509_policies_set.3 +#usr/share/man/man3/gnutls_x509_policy_release.3 +#usr/share/man/man3/gnutls_x509_privkey_cpy.3 +#usr/share/man/man3/gnutls_x509_privkey_deinit.3 +#usr/share/man/man3/gnutls_x509_privkey_export.3 +#usr/share/man/man3/gnutls_x509_privkey_export2.3 +#usr/share/man/man3/gnutls_x509_privkey_export2_pkcs8.3 +#usr/share/man/man3/gnutls_x509_privkey_export_dsa_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_export_ecc_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_export_pkcs8.3 +#usr/share/man/man3/gnutls_x509_privkey_export_rsa_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_export_rsa_raw2.3 +#usr/share/man/man3/gnutls_x509_privkey_fix.3 +#usr/share/man/man3/gnutls_x509_privkey_generate.3 +#usr/share/man/man3/gnutls_x509_privkey_generate2.3 +#usr/share/man/man3/gnutls_x509_privkey_get_key_id.3 +#usr/share/man/man3/gnutls_x509_privkey_get_pk_algorithm.3 +#usr/share/man/man3/gnutls_x509_privkey_get_pk_algorithm2.3 +#usr/share/man/man3/gnutls_x509_privkey_get_seed.3 +#usr/share/man/man3/gnutls_x509_privkey_import.3 +#usr/share/man/man3/gnutls_x509_privkey_import2.3 +#usr/share/man/man3/gnutls_x509_privkey_import_dsa_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_import_ecc_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_import_openssl.3 +#usr/share/man/man3/gnutls_x509_privkey_import_pkcs8.3 +#usr/share/man/man3/gnutls_x509_privkey_import_rsa_raw.3 +#usr/share/man/man3/gnutls_x509_privkey_import_rsa_raw2.3 +#usr/share/man/man3/gnutls_x509_privkey_init.3 +#usr/share/man/man3/gnutls_x509_privkey_sec_param.3 +#usr/share/man/man3/gnutls_x509_privkey_set_flags.3 +#usr/share/man/man3/gnutls_x509_privkey_set_pin_function.3 +#usr/share/man/man3/gnutls_x509_privkey_sign_data.3 +#usr/share/man/man3/gnutls_x509_privkey_sign_hash.3 +#usr/share/man/man3/gnutls_x509_privkey_verify_params.3 +#usr/share/man/man3/gnutls_x509_privkey_verify_seed.3 +#usr/share/man/man3/gnutls_x509_rdn_get.3 +#usr/share/man/man3/gnutls_x509_rdn_get2.3 +#usr/share/man/man3/gnutls_x509_rdn_get_by_oid.3 +#usr/share/man/man3/gnutls_x509_rdn_get_oid.3 +#usr/share/man/man3/gnutls_x509_tlsfeatures_add.3 +#usr/share/man/man3/gnutls_x509_tlsfeatures_check_crt.3 +#usr/share/man/man3/gnutls_x509_tlsfeatures_deinit.3 +#usr/share/man/man3/gnutls_x509_tlsfeatures_get.3 +#usr/share/man/man3/gnutls_x509_tlsfeatures_init.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_cas.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_crls.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_named_crt.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_system_trust.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_trust_dir.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_trust_file.3 +#usr/share/man/man3/gnutls_x509_trust_list_add_trust_mem.3 +#usr/share/man/man3/gnutls_x509_trust_list_deinit.3 +#usr/share/man/man3/gnutls_x509_trust_list_get_issuer.3 +#usr/share/man/man3/gnutls_x509_trust_list_get_issuer_by_dn.3 +#usr/share/man/man3/gnutls_x509_trust_list_get_issuer_by_subject_key_id.3 +#usr/share/man/man3/gnutls_x509_trust_list_init.3 +#usr/share/man/man3/gnutls_x509_trust_list_iter_deinit.3 +#usr/share/man/man3/gnutls_x509_trust_list_iter_get_ca.3 +#usr/share/man/man3/gnutls_x509_trust_list_remove_cas.3 +#usr/share/man/man3/gnutls_x509_trust_list_remove_trust_file.3 +#usr/share/man/man3/gnutls_x509_trust_list_remove_trust_mem.3 +#usr/share/man/man3/gnutls_x509_trust_list_verify_crt.3 +#usr/share/man/man3/gnutls_x509_trust_list_verify_crt2.3 +#usr/share/man/man3/gnutls_x509_trust_list_verify_named_crt.3 diff --git a/lfs/gnutls b/lfs/gnutls new file mode 100644 index 000000000..e32c842b7 --- /dev/null +++ b/lfs/gnutls @@ -0,0 +1,85 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2016 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 3.5.9 + +THISAPP = gnutls-$(VER) +DL_FILE = $(THISAPP).tar.xz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = 0ab25eb6a1509345dd085bc21a387951 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --with-included-libtasn1 \ + --with-included-unistring \ + --without-p11-kit \ + --disable-openssl-compatibility \ + --disable-guile + + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 03d67561c..378c77883 100755 --- a/make.sh +++ b/make.sh @@ -487,6 +487,11 @@ buildipfire() { ipfiremake libgpg-error ipfiremake libgcrypt ipfiremake libassuan + ipfiremake nettle + ipfiremake libevent + ipfiremake libevent2 + ipfiremake unbound + ipfiremake gnutls ipfiremake bind ipfiremake dhcp ipfiremake dhcpcd @@ -539,10 +544,6 @@ buildipfire() { ipfiremake arping ipfiremake beep ipfiremake dvdrtools - ipfiremake nettle - ipfiremake libevent - ipfiremake libevent2 - ipfiremake unbound ipfiremake dosfstools ipfiremake reiserfsprogs ipfiremake xfsprogs From 7f328d35400a8612a96eeacc6756187255f329d8 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 15:46:58 +0100 Subject: [PATCH 145/464] amavisd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/amavisd | 4 ++++ src/initscripts/{init.d => packages}/amavisd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/amavisd (100%) diff --git a/lfs/amavisd b/lfs/amavisd index 39464e4e6..7230c0c0e 100644 --- a/lfs/amavisd +++ b/lfs/amavisd @@ -80,6 +80,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && cp -f amavisd /usr/bin chown root.root /usr/bin/amavisd chmod 755 /usr/bin/amavisd + + #install initscripts + $(call INSTALL_INITSCRIPT,amavisd) + cp -fv $(DIR_SRC)/config/amavisd/amavisd.conf /etc chown root.root /etc/amavisd.conf chmod 644 /etc/amavisd.conf diff --git a/src/initscripts/init.d/amavisd b/src/initscripts/packages/amavisd similarity index 100% rename from src/initscripts/init.d/amavisd rename to src/initscripts/packages/amavisd From 2e57eb171395c80658249a476b69a8a4ad21b2e1 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 15:49:07 +0100 Subject: [PATCH 146/464] client175: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/client175 | 4 ++++ src/initscripts/{init.d => packages}/client175 | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/client175 (100%) diff --git a/lfs/client175 b/lfs/client175 index ef2b487fb..cc462d0aa 100644 --- a/lfs/client175 +++ b/lfs/client175 @@ -89,5 +89,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) /var/ipfire/backup/addons/includes/client175 chown -R nobody:nobody /srv/client175 + + #install initscripts + $(call INSTALL_INITSCRIPT,client175) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/client175 b/src/initscripts/packages/client175 similarity index 100% rename from src/initscripts/init.d/client175 rename to src/initscripts/packages/client175 From 06c99e6d4d6e65dea00ea94585a30c08635b29d0 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 25 Feb 2017 15:54:55 +0100 Subject: [PATCH 147/464] postfix: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/postfix | 4 ++++ src/initscripts/{init.d => packages}/postfix | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/postfix (100%) diff --git a/lfs/postfix b/lfs/postfix index b8029f763..3758b9cbe 100644 --- a/lfs/postfix +++ b/lfs/postfix @@ -116,5 +116,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/postfix \ /var/ipfire/backup/addons/includes/postfix mv /usr/sbin/sendmail /usr/sbin/sendmail.postfix + + #install initscripts + $(call INSTALL_INITSCRIPT,postfix) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/postfix b/src/initscripts/packages/postfix similarity index 100% rename from src/initscripts/init.d/postfix rename to src/initscripts/packages/postfix From 30aff66aa1a2ea44fb25e8db7f2b1b8fb0595121 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 14:56:43 +0000 Subject: [PATCH 148/464] unbound depends on expat Signed-off-by: Michael Tremer --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 378c77883..c5e8dc395 100755 --- a/make.sh +++ b/make.sh @@ -490,6 +490,7 @@ buildipfire() { ipfiremake nettle ipfiremake libevent ipfiremake libevent2 + ipfiremake expat ipfiremake unbound ipfiremake gnutls ipfiremake bind @@ -497,7 +498,6 @@ buildipfire() { ipfiremake dhcpcd ipfiremake boost ipfiremake linux-atm - ipfiremake expat ipfiremake gdbm ipfiremake pam ipfiremake curl From 2b5aece94e44357fca0771712755da535493c1d6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 15:37:29 +0000 Subject: [PATCH 149/464] cups: Use avahi and DBUS These services are quite handy to make the printing capabilities available to the network. Signed-off-by: Michael Tremer --- config/rootfiles/packages/cups | 8 +++++++- lfs/cups | 10 ++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/config/rootfiles/packages/cups b/config/rootfiles/packages/cups index b4a50bbb0..3881d4aee 100644 --- a/config/rootfiles/packages/cups +++ b/config/rootfiles/packages/cups @@ -1,3 +1,4 @@ +etc/dbus-1/system.d/cups.conf etc/pam.d/cups etc/rc.d/init.d/cups #etc/rc0.d @@ -15,6 +16,7 @@ usr/bin/cancel #usr/bin/cups-config usr/bin/cupstestdsc usr/bin/cupstestppd +usr/bin/ippfind usr/bin/ipptool usr/bin/lp usr/bin/lpoptions @@ -45,8 +47,11 @@ usr/bin/ppdpo #usr/include/cups/versioning.h usr/lib/cups usr/lib/cups/backend +usr/lib/cups/backend/dnssd usr/lib/cups/backend/http +usr/lib/cups/backend/https usr/lib/cups/backend/ipp +usr/lib/cups/backend/ipps usr/lib/cups/backend/lpd usr/lib/cups/backend/smb usr/lib/cups/backend/snmp @@ -77,6 +82,7 @@ usr/lib/cups/monitor usr/lib/cups/monitor/bcp usr/lib/cups/monitor/tbcp usr/lib/cups/notifier +usr/lib/cups/notifier/dbus usr/lib/cups/notifier/mailto usr/lib/cups/notifier/rss #usr/lib/libcups.so @@ -103,7 +109,6 @@ usr/sbin/lpc usr/sbin/lpinfo usr/sbin/lpmove usr/sbin/reject -#usr/share/applications/cups.desktop usr/share/cups usr/share/cups/banners usr/share/cups/data @@ -717,6 +722,7 @@ usr/share/locale/ru/cups_ru.po #usr/share/man/man1/cups.1.gz #usr/share/man/man1/cupstestdsc.1.gz #usr/share/man/man1/cupstestppd.1.gz +#usr/share/man/man1/ippfind.1.gz #usr/share/man/man1/ipptool.1.gz #usr/share/man/man1/lp.1.gz #usr/share/man/man1/lpoptions.1.gz diff --git a/lfs/cups b/lfs/cups index 5f900048b..9a7e6069f 100644 --- a/lfs/cups +++ b/lfs/cups @@ -34,7 +34,7 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups PAK_VER = 15 -DEPS = "cups-filters ghostscript" +DEPS = "avahi cups-filters dbus ghostscript krb5 libtiff" ############################################################################### # Top-level Rules @@ -82,9 +82,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --prefix=/usr \ --sysconfdir=/var/ipfire \ --localstatedir=/var \ - --enable-libusb \ - --disable-dbus \ - --disable-avahi + --enable-debug \ + --enable-avahi \ + --enable-dbus \ + --enable-gnutls \ + --enable-libusb cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install From 9a2d1df7c268c5e98b9262f122eb75f283d4311e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 15:43:31 +0000 Subject: [PATCH 150/464] ghostscript: Update to 9.20 Signed-off-by: Michael Tremer --- config/rootfiles/packages/ghostscript | 809 ++++++++++---------------- lfs/ghostscript | 29 +- 2 files changed, 319 insertions(+), 519 deletions(-) diff --git a/config/rootfiles/packages/ghostscript b/config/rootfiles/packages/ghostscript index a94877c73..c15ec1a5e 100644 --- a/config/rootfiles/packages/ghostscript +++ b/config/rootfiles/packages/ghostscript @@ -1,7 +1,5 @@ -usr/bin/bdftops usr/bin/dvipdf usr/bin/eps2eps -usr/bin/fixmswrd.pl usr/bin/font2c usr/bin/gs usr/bin/gsbj @@ -13,9 +11,9 @@ usr/bin/gsnd usr/bin/lprsetup.sh usr/bin/pdf2dsc usr/bin/pdf2ps -usr/bin/pdfopt usr/bin/pf2afm usr/bin/pfbtopfa +usr/bin/pphs usr/bin/printafm usr/bin/ps2ascii usr/bin/ps2epsi @@ -25,512 +23,272 @@ usr/bin/ps2pdf13 usr/bin/ps2pdf14 usr/bin/ps2pdfwr usr/bin/ps2ps -usr/bin/pv.sh +usr/bin/ps2ps2 usr/bin/unix-lpr.sh usr/bin/wftopfa -usr/lib/cups/filter/pstopxl -usr/lib/cups/filter/pstoraster -#usr/man/de -#usr/man/de/man1 -#usr/man/de/man1/dvipdf.1 -#usr/man/de/man1/eps2eps.1 -#usr/man/de/man1/font2c.1 -#usr/man/de/man1/gsbj.1 -#usr/man/de/man1/gsdj.1 -#usr/man/de/man1/gsdj500.1 -#usr/man/de/man1/gslj.1 -#usr/man/de/man1/gsnd.1 -#usr/man/de/man1/pdf2dsc.1 -#usr/man/de/man1/pdf2ps.1 -#usr/man/de/man1/pdfopt.1 -#usr/man/de/man1/printafm.1 -#usr/man/de/man1/ps2ascii.1 -#usr/man/de/man1/ps2pdf.1 -#usr/man/de/man1/ps2pdf12.1 -#usr/man/de/man1/ps2pdf13.1 -#usr/man/de/man1/ps2ps.1 -#usr/man/de/man1/wftopfa.1 -#usr/man/man1/dvipdf.1 -#usr/man/man1/eps2eps.1 -#usr/man/man1/font2c.1 -#usr/man/man1/gs.1 -#usr/man/man1/gsbj.1 -#usr/man/man1/gsdj.1 -#usr/man/man1/gsdj500.1 -#usr/man/man1/gslj.1 -#usr/man/man1/gslp.1 -#usr/man/man1/gsnd.1 -#usr/man/man1/pdf2dsc.1 -#usr/man/man1/pdf2ps.1 -#usr/man/man1/pdfopt.1 -#usr/man/man1/pf2afm.1 -#usr/man/man1/pfbtopfa.1 -#usr/man/man1/printafm.1 -#usr/man/man1/ps2ascii.1 -#usr/man/man1/ps2epsi.1 -#usr/man/man1/ps2pdf.1 -#usr/man/man1/ps2pdf12.1 -#usr/man/man1/ps2pdf13.1 -#usr/man/man1/ps2pdfwr.1 -#usr/man/man1/ps2ps.1 -#usr/man/man1/wftopfa.1 -usr/share/cups/model/pxlcolor.ppd -usr/share/cups/model/pxlmono.ppd #usr/share/ghostscript -#usr/share/ghostscript/8.15 -#usr/share/ghostscript/8.15/Resource -#usr/share/ghostscript/8.15/Resource/CMap -usr/share/ghostscript/8.15/Resource/CMap/78-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/78-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/78-H -usr/share/ghostscript/8.15/Resource/CMap/78-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/78-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/78-V -usr/share/ghostscript/8.15/Resource/CMap/78ms-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/78ms-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/83pv-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/90ms-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/90ms-RKSJ-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/90ms-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/90msp-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/90msp-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/90pv-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/90pv-RKSJ-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/90pv-RKSJ-UCS2C -usr/share/ghostscript/8.15/Resource/CMap/90pv-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/Add-H -usr/share/ghostscript/8.15/Resource/CMap/Add-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/Add-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/Add-V -usr/share/ghostscript/8.15/Resource/CMap/Adobe-CNS1-B5pc -usr/share/ghostscript/8.15/Resource/CMap/Adobe-CNS1-H-CID -usr/share/ghostscript/8.15/Resource/CMap/Adobe-CNS1-H-Host -usr/share/ghostscript/8.15/Resource/CMap/Adobe-CNS1-H-Mac -usr/share/ghostscript/8.15/Resource/CMap/Adobe-GB1-GBK-EUC -usr/share/ghostscript/8.15/Resource/CMap/Adobe-GB1-GBpc-EUC -usr/share/ghostscript/8.15/Resource/CMap/Adobe-GB1-H-CID -usr/share/ghostscript/8.15/Resource/CMap/Adobe-GB1-H-Host -usr/share/ghostscript/8.15/Resource/CMap/Adobe-GB1-H-Mac -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-0 -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-1 -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-2 -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-90ms-RKSJ -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-90pv-RKSJ -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-H-CID -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-H-Host -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-H-Mac -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-PS-H -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-PS-V -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Japan1-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Korea1-H-CID -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Korea1-H-Host -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Korea1-KSCms-UHC -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Korea1-KSCpc-EUC -usr/share/ghostscript/8.15/Resource/CMap/Adobe-Korea1-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/B5pc-H -usr/share/ghostscript/8.15/Resource/CMap/B5pc-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/B5pc-UCS2C -usr/share/ghostscript/8.15/Resource/CMap/B5pc-V -usr/share/ghostscript/8.15/Resource/CMap/CNS-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/CNS-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/ETHK-B5-H -usr/share/ghostscript/8.15/Resource/CMap/ETHK-B5-V -usr/share/ghostscript/8.15/Resource/CMap/ETen-B5-H -usr/share/ghostscript/8.15/Resource/CMap/ETen-B5-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/ETen-B5-V -usr/share/ghostscript/8.15/Resource/CMap/ETenms-B5-H -usr/share/ghostscript/8.15/Resource/CMap/ETenms-B5-V -usr/share/ghostscript/8.15/Resource/CMap/EUC-H -usr/share/ghostscript/8.15/Resource/CMap/EUC-V -usr/share/ghostscript/8.15/Resource/CMap/Ext-H -usr/share/ghostscript/8.15/Resource/CMap/Ext-RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/Ext-RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/Ext-V -usr/share/ghostscript/8.15/Resource/CMap/GB-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/GB-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/GBK-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/GBK-EUC-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/GBK-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/GBK2K-H -usr/share/ghostscript/8.15/Resource/CMap/GBK2K-V -usr/share/ghostscript/8.15/Resource/CMap/GBKp-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/GBKp-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/GBT-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/GBT-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/GBpc-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/GBpc-EUC-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/GBpc-EUC-UCS2C -usr/share/ghostscript/8.15/Resource/CMap/GBpc-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/H -usr/share/ghostscript/8.15/Resource/CMap/HKdla-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKdla-B5-V -usr/share/ghostscript/8.15/Resource/CMap/HKdlb-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKdlb-B5-V -usr/share/ghostscript/8.15/Resource/CMap/HKgccs-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKgccs-B5-V -usr/share/ghostscript/8.15/Resource/CMap/HKm314-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKm314-B5-V -usr/share/ghostscript/8.15/Resource/CMap/HKm471-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKm471-B5-V -usr/share/ghostscript/8.15/Resource/CMap/HKscs-B5-H -usr/share/ghostscript/8.15/Resource/CMap/HKscs-B5-V -usr/share/ghostscript/8.15/Resource/CMap/Hankaku -usr/share/ghostscript/8.15/Resource/CMap/Hiragana -usr/share/ghostscript/8.15/Resource/CMap/Identity-H -usr/share/ghostscript/8.15/Resource/CMap/Identity-V -usr/share/ghostscript/8.15/Resource/CMap/KSC-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/KSC-EUC-V -usr/share/ghostscript/8.15/Resource/CMap/KSC-Johab-H -usr/share/ghostscript/8.15/Resource/CMap/KSC-Johab-V -usr/share/ghostscript/8.15/Resource/CMap/KSCms-UHC-H -usr/share/ghostscript/8.15/Resource/CMap/KSCms-UHC-HW-H -usr/share/ghostscript/8.15/Resource/CMap/KSCms-UHC-HW-V -usr/share/ghostscript/8.15/Resource/CMap/KSCms-UHC-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/KSCms-UHC-V -usr/share/ghostscript/8.15/Resource/CMap/KSCpc-EUC-H -usr/share/ghostscript/8.15/Resource/CMap/KSCpc-EUC-UCS2 -usr/share/ghostscript/8.15/Resource/CMap/KSCpc-EUC-UCS2C -usr/share/ghostscript/8.15/Resource/CMap/Katakana -usr/share/ghostscript/8.15/Resource/CMap/NWP-H -usr/share/ghostscript/8.15/Resource/CMap/NWP-V -usr/share/ghostscript/8.15/Resource/CMap/RKSJ-H -usr/share/ghostscript/8.15/Resource/CMap/RKSJ-V -usr/share/ghostscript/8.15/Resource/CMap/Roman -usr/share/ghostscript/8.15/Resource/CMap/UCS2-90ms-RKSJ -usr/share/ghostscript/8.15/Resource/CMap/UCS2-90pv-RKSJ -usr/share/ghostscript/8.15/Resource/CMap/UCS2-B5pc -usr/share/ghostscript/8.15/Resource/CMap/UCS2-GBK-EUC -usr/share/ghostscript/8.15/Resource/CMap/UCS2-GBpc-EUC -usr/share/ghostscript/8.15/Resource/CMap/UCS2-KSCms-UHC -usr/share/ghostscript/8.15/Resource/CMap/UCS2-KSCpc-EUC -usr/share/ghostscript/8.15/Resource/CMap/UniCNS-UCS2-H -usr/share/ghostscript/8.15/Resource/CMap/UniCNS-UCS2-V -usr/share/ghostscript/8.15/Resource/CMap/UniGB-UCS2-H -usr/share/ghostscript/8.15/Resource/CMap/UniGB-UCS2-V -usr/share/ghostscript/8.15/Resource/CMap/UniHojo-UCS2-H -usr/share/ghostscript/8.15/Resource/CMap/UniJIS-UCS2-H -usr/share/ghostscript/8.15/Resource/CMap/UniJIS-UCS2-HW-H -usr/share/ghostscript/8.15/Resource/CMap/UniJIS-UCS2-HW-V -usr/share/ghostscript/8.15/Resource/CMap/UniJIS-UCS2-V -usr/share/ghostscript/8.15/Resource/CMap/UniKS-UCS2-H -usr/share/ghostscript/8.15/Resource/CMap/UniKS-UCS2-V -usr/share/ghostscript/8.15/Resource/CMap/V -usr/share/ghostscript/8.15/Resource/CMap/WP-Symbol -usr/share/ghostscript/8.15/Resource/ColorSpace -usr/share/ghostscript/8.15/Resource/ColorSpace/DefaultCMYK -usr/share/ghostscript/8.15/Resource/ColorSpace/DefaultGray -usr/share/ghostscript/8.15/Resource/ColorSpace/DefaultRGB -usr/share/ghostscript/8.15/Resource/Decoding -usr/share/ghostscript/8.15/Resource/Decoding/Latin1 -usr/share/ghostscript/8.15/Resource/Decoding/StandardEncoding -usr/share/ghostscript/8.15/Resource/Decoding/Unicode -#usr/share/ghostscript/8.15/doc -#usr/share/ghostscript/8.15/doc/API.htm -#usr/share/ghostscript/8.15/doc/Bug-form.htm -#usr/share/ghostscript/8.15/doc/Bug-info.htm -#usr/share/ghostscript/8.15/doc/C-style.htm -#usr/share/ghostscript/8.15/doc/Changes.htm -#usr/share/ghostscript/8.15/doc/Commprod.htm -#usr/share/ghostscript/8.15/doc/DLL.htm -#usr/share/ghostscript/8.15/doc/Develop.htm -#usr/share/ghostscript/8.15/doc/Devices.htm -#usr/share/ghostscript/8.15/doc/Drivers.htm -#usr/share/ghostscript/8.15/doc/Fonts.htm -#usr/share/ghostscript/8.15/doc/Helpers.htm -#usr/share/ghostscript/8.15/doc/Hershey.htm -#usr/share/ghostscript/8.15/doc/History1.htm -#usr/share/ghostscript/8.15/doc/History2.htm -#usr/share/ghostscript/8.15/doc/History3.htm -#usr/share/ghostscript/8.15/doc/History4.htm -#usr/share/ghostscript/8.15/doc/History5.htm -#usr/share/ghostscript/8.15/doc/History6.htm -#usr/share/ghostscript/8.15/doc/Htmstyle.htm -#usr/share/ghostscript/8.15/doc/Humor.htm -#usr/share/ghostscript/8.15/doc/Install.htm -#usr/share/ghostscript/8.15/doc/Language.htm -#usr/share/ghostscript/8.15/doc/Lib.htm -#usr/share/ghostscript/8.15/doc/Maintain.htm -#usr/share/ghostscript/8.15/doc/Make.htm -#usr/share/ghostscript/8.15/doc/News.htm -#usr/share/ghostscript/8.15/doc/Projects.htm -#usr/share/ghostscript/8.15/doc/Ps-style.htm -#usr/share/ghostscript/8.15/doc/Ps2epsi.htm -#usr/share/ghostscript/8.15/doc/Ps2pdf.htm -#usr/share/ghostscript/8.15/doc/Psfiles.htm -#usr/share/ghostscript/8.15/doc/README -#usr/share/ghostscript/8.15/doc/Readme.htm -#usr/share/ghostscript/8.15/doc/Release.htm -#usr/share/ghostscript/8.15/doc/Source.htm -#usr/share/ghostscript/8.15/doc/Tester.htm -#usr/share/ghostscript/8.15/doc/Unix-lpr.htm -#usr/share/ghostscript/8.15/doc/Use.htm -#usr/share/ghostscript/8.15/doc/Xfonts.htm -#usr/share/ghostscript/8.15/doc/gs.css -#usr/share/ghostscript/8.15/doc/index.html -#usr/share/ghostscript/8.15/examples -#usr/share/ghostscript/8.15/examples/alphabet.ps -#usr/share/ghostscript/8.15/examples/colorcir.ps -#usr/share/ghostscript/8.15/examples/doretree.ps -#usr/share/ghostscript/8.15/examples/escher.ps -#usr/share/ghostscript/8.15/examples/golfer.eps -#usr/share/ghostscript/8.15/examples/grayalph.ps -#usr/share/ghostscript/8.15/examples/ridt91.eps -#usr/share/ghostscript/8.15/examples/snowflak.ps -#usr/share/ghostscript/8.15/examples/tiger.eps -#usr/share/ghostscript/8.15/examples/vasarely.ps -#usr/share/ghostscript/8.15/examples/waterfal.ps -#usr/share/ghostscript/8.15/lib -usr/share/ghostscript/8.15/lib/FAPIcidfmap -usr/share/ghostscript/8.15/lib/FAPIconfig -usr/share/ghostscript/8.15/lib/FAPIfontmap -usr/share/ghostscript/8.15/lib/Fontmap -usr/share/ghostscript/8.15/lib/Fontmap.GS -usr/share/ghostscript/8.15/lib/PM760p.upp -usr/share/ghostscript/8.15/lib/PM760pl.upp -usr/share/ghostscript/8.15/lib/PM820p.upp -usr/share/ghostscript/8.15/lib/PM820pl.upp -usr/share/ghostscript/8.15/lib/Stc670p.upp -usr/share/ghostscript/8.15/lib/Stc670pl.upp -usr/share/ghostscript/8.15/lib/Stc680p.upp -usr/share/ghostscript/8.15/lib/Stc680pl.upp -usr/share/ghostscript/8.15/lib/Stc740p.upp -usr/share/ghostscript/8.15/lib/Stc740pl.upp -usr/share/ghostscript/8.15/lib/Stc760p.upp -usr/share/ghostscript/8.15/lib/Stc760pl.upp -usr/share/ghostscript/8.15/lib/Stc777p.upp -usr/share/ghostscript/8.15/lib/Stc777pl.upp -usr/share/ghostscript/8.15/lib/Stp720p.upp -usr/share/ghostscript/8.15/lib/Stp720pl.upp -usr/share/ghostscript/8.15/lib/Stp870p.upp -usr/share/ghostscript/8.15/lib/Stp870pl.upp -usr/share/ghostscript/8.15/lib/acctest.ps -usr/share/ghostscript/8.15/lib/addxchar.ps -usr/share/ghostscript/8.15/lib/align.ps -usr/share/ghostscript/8.15/lib/bdftops.ps -usr/share/ghostscript/8.15/lib/bj8.rpd -usr/share/ghostscript/8.15/lib/bj8gc12f.upp -usr/share/ghostscript/8.15/lib/bj8hg12f.upp -usr/share/ghostscript/8.15/lib/bj8oh06n.upp -usr/share/ghostscript/8.15/lib/bj8pa06n.upp -usr/share/ghostscript/8.15/lib/bj8pp12f.upp -usr/share/ghostscript/8.15/lib/bj8ts06n.upp -usr/share/ghostscript/8.15/lib/bjc6000a1.upp -usr/share/ghostscript/8.15/lib/bjc6000b1.upp -usr/share/ghostscript/8.15/lib/bjc610a0.upp -usr/share/ghostscript/8.15/lib/bjc610a1.upp -usr/share/ghostscript/8.15/lib/bjc610a2.upp -usr/share/ghostscript/8.15/lib/bjc610a3.upp -usr/share/ghostscript/8.15/lib/bjc610a4.upp -usr/share/ghostscript/8.15/lib/bjc610a5.upp -usr/share/ghostscript/8.15/lib/bjc610a6.upp -usr/share/ghostscript/8.15/lib/bjc610a7.upp -usr/share/ghostscript/8.15/lib/bjc610a8.upp -usr/share/ghostscript/8.15/lib/bjc610b1.upp -usr/share/ghostscript/8.15/lib/bjc610b2.upp -usr/share/ghostscript/8.15/lib/bjc610b3.upp -usr/share/ghostscript/8.15/lib/bjc610b4.upp -usr/share/ghostscript/8.15/lib/bjc610b6.upp -usr/share/ghostscript/8.15/lib/bjc610b7.upp -usr/share/ghostscript/8.15/lib/bjc610b8.upp -usr/share/ghostscript/8.15/lib/caption.ps -usr/share/ghostscript/8.15/lib/cbjc600.ppd -usr/share/ghostscript/8.15/lib/cbjc800.ppd -usr/share/ghostscript/8.15/lib/cdj550.upp -usr/share/ghostscript/8.15/lib/cdj690.upp -usr/share/ghostscript/8.15/lib/cdj690ec.upp -usr/share/ghostscript/8.15/lib/cid2code.ps -usr/share/ghostscript/8.15/lib/cidfmap -usr/share/ghostscript/8.15/lib/decrypt.ps -usr/share/ghostscript/8.15/lib/dmp_init.ps -usr/share/ghostscript/8.15/lib/dmp_site.ps -usr/share/ghostscript/8.15/lib/dnj750c.upp -usr/share/ghostscript/8.15/lib/dnj750m.upp -usr/share/ghostscript/8.15/lib/docie.ps -usr/share/ghostscript/8.15/lib/errpage.ps -usr/share/ghostscript/8.15/lib/escp_24.src -usr/share/ghostscript/8.15/lib/font2c.ps -usr/share/ghostscript/8.15/lib/font2pcl.ps -usr/share/ghostscript/8.15/lib/ghostpdf.ppd -usr/share/ghostscript/8.15/lib/gs_agl.ps -usr/share/ghostscript/8.15/lib/gs_btokn.ps -usr/share/ghostscript/8.15/lib/gs_ccfnt.ps -usr/share/ghostscript/8.15/lib/gs_ce_e.ps -usr/share/ghostscript/8.15/lib/gs_cff.ps -usr/share/ghostscript/8.15/lib/gs_cidcm.ps -usr/share/ghostscript/8.15/lib/gs_ciddc.ps -usr/share/ghostscript/8.15/lib/gs_cidfm.ps -usr/share/ghostscript/8.15/lib/gs_cidfn.ps -usr/share/ghostscript/8.15/lib/gs_cidtt.ps -usr/share/ghostscript/8.15/lib/gs_ciecs2.ps -usr/share/ghostscript/8.15/lib/gs_ciecs3.ps -usr/share/ghostscript/8.15/lib/gs_cmap.ps -usr/share/ghostscript/8.15/lib/gs_cmdl.ps -usr/share/ghostscript/8.15/lib/gs_cspace.ps -usr/share/ghostscript/8.15/lib/gs_css_e.ps -usr/share/ghostscript/8.15/lib/gs_dbt_e.ps -usr/share/ghostscript/8.15/lib/gs_devcs.ps -usr/share/ghostscript/8.15/lib/gs_devn.ps -usr/share/ghostscript/8.15/lib/gs_devpxl.ps -usr/share/ghostscript/8.15/lib/gs_diskf.ps -usr/share/ghostscript/8.15/lib/gs_diskn.ps -usr/share/ghostscript/8.15/lib/gs_dpnxt.ps -usr/share/ghostscript/8.15/lib/gs_dps.ps -usr/share/ghostscript/8.15/lib/gs_dps1.ps -usr/share/ghostscript/8.15/lib/gs_dps2.ps -usr/share/ghostscript/8.15/lib/gs_dscp.ps -usr/share/ghostscript/8.15/lib/gs_epsf.ps -usr/share/ghostscript/8.15/lib/gs_fapi.ps -usr/share/ghostscript/8.15/lib/gs_fform.ps -usr/share/ghostscript/8.15/lib/gs_fntem.ps -usr/share/ghostscript/8.15/lib/gs_fonts.ps -usr/share/ghostscript/8.15/lib/gs_frsd.ps -usr/share/ghostscript/8.15/lib/gs_icc.ps -usr/share/ghostscript/8.15/lib/gs_il1_e.ps -usr/share/ghostscript/8.15/lib/gs_il2_e.ps -usr/share/ghostscript/8.15/lib/gs_img.ps -usr/share/ghostscript/8.15/lib/gs_indxd.ps -usr/share/ghostscript/8.15/lib/gs_init.ps -usr/share/ghostscript/8.15/lib/gs_kanji.ps -usr/share/ghostscript/8.15/lib/gs_ksb_e.ps -usr/share/ghostscript/8.15/lib/gs_l.xbm -usr/share/ghostscript/8.15/lib/gs_l.xpm -usr/share/ghostscript/8.15/lib/gs_l2img.ps -usr/share/ghostscript/8.15/lib/gs_l_m.xbm -usr/share/ghostscript/8.15/lib/gs_lev2.ps -usr/share/ghostscript/8.15/lib/gs_lgo_e.ps -usr/share/ghostscript/8.15/lib/gs_lgx_e.ps -usr/share/ghostscript/8.15/lib/gs_ll3.ps -usr/share/ghostscript/8.15/lib/gs_m.xbm -usr/share/ghostscript/8.15/lib/gs_m.xpm -usr/share/ghostscript/8.15/lib/gs_m_m.xbm -usr/share/ghostscript/8.15/lib/gs_mex_e.ps -usr/share/ghostscript/8.15/lib/gs_mgl_e.ps -usr/share/ghostscript/8.15/lib/gs_mro_e.ps -usr/share/ghostscript/8.15/lib/gs_patrn.ps -usr/share/ghostscript/8.15/lib/gs_pdf_e.ps -usr/share/ghostscript/8.15/lib/gs_pdfwr.ps -usr/share/ghostscript/8.15/lib/gs_pfile.ps -usr/share/ghostscript/8.15/lib/gs_rdlin.ps -usr/share/ghostscript/8.15/lib/gs_res.ps -usr/share/ghostscript/8.15/lib/gs_resmp.ps -usr/share/ghostscript/8.15/lib/gs_resst.ps -usr/share/ghostscript/8.15/lib/gs_s.xbm -usr/share/ghostscript/8.15/lib/gs_s.xpm -usr/share/ghostscript/8.15/lib/gs_s_m.xbm -usr/share/ghostscript/8.15/lib/gs_sepr.ps -usr/share/ghostscript/8.15/lib/gs_setpd.ps -usr/share/ghostscript/8.15/lib/gs_statd.ps -usr/share/ghostscript/8.15/lib/gs_std_e.ps -usr/share/ghostscript/8.15/lib/gs_stres.ps -usr/share/ghostscript/8.15/lib/gs_sym_e.ps -usr/share/ghostscript/8.15/lib/gs_t.xbm -usr/share/ghostscript/8.15/lib/gs_t.xpm -usr/share/ghostscript/8.15/lib/gs_t_m.xbm -usr/share/ghostscript/8.15/lib/gs_trap.ps -usr/share/ghostscript/8.15/lib/gs_ttf.ps -usr/share/ghostscript/8.15/lib/gs_typ32.ps -usr/share/ghostscript/8.15/lib/gs_typ42.ps -usr/share/ghostscript/8.15/lib/gs_type1.ps -usr/share/ghostscript/8.15/lib/gs_wan_e.ps -usr/share/ghostscript/8.15/lib/gs_wl1_e.ps -usr/share/ghostscript/8.15/lib/gs_wl2_e.ps -usr/share/ghostscript/8.15/lib/gs_wl5_e.ps -usr/share/ghostscript/8.15/lib/gslp.ps -usr/share/ghostscript/8.15/lib/gsnup.ps -usr/share/ghostscript/8.15/lib/ht_ccsto.ps -usr/share/ghostscript/8.15/lib/image-qa.ps -usr/share/ghostscript/8.15/lib/impath.ps -usr/share/ghostscript/8.15/lib/jispaper.ps -usr/share/ghostscript/8.15/lib/landscap.ps -usr/share/ghostscript/8.15/lib/level1.ps -usr/share/ghostscript/8.15/lib/lines.ps -usr/share/ghostscript/8.15/lib/markhint.ps -usr/share/ghostscript/8.15/lib/markpath.ps -usr/share/ghostscript/8.15/lib/necp2x.upp -usr/share/ghostscript/8.15/lib/necp2x6.upp -usr/share/ghostscript/8.15/lib/packfile.ps -usr/share/ghostscript/8.15/lib/pcharstr.ps -usr/share/ghostscript/8.15/lib/pdf2dsc.ps -usr/share/ghostscript/8.15/lib/pdf_base.ps -usr/share/ghostscript/8.15/lib/pdf_draw.ps -usr/share/ghostscript/8.15/lib/pdf_font.ps -usr/share/ghostscript/8.15/lib/pdf_main.ps -usr/share/ghostscript/8.15/lib/pdf_ops.ps -usr/share/ghostscript/8.15/lib/pdf_rbld.ps -usr/share/ghostscript/8.15/lib/pdf_sec.ps -usr/share/ghostscript/8.15/lib/pdfopt.ps -usr/share/ghostscript/8.15/lib/pdfwrite.ps -usr/share/ghostscript/8.15/lib/pf2afm.ps -usr/share/ghostscript/8.15/lib/pfbtopfa.ps -usr/share/ghostscript/8.15/lib/ppath.ps -usr/share/ghostscript/8.15/lib/prfont.ps -usr/share/ghostscript/8.15/lib/printafm.ps -usr/share/ghostscript/8.15/lib/ps2ai.ps -usr/share/ghostscript/8.15/lib/ps2ascii.ps -usr/share/ghostscript/8.15/lib/ps2epsi.ps -usr/share/ghostscript/8.15/lib/quit.ps -usr/share/ghostscript/8.15/lib/ras1.upp -usr/share/ghostscript/8.15/lib/ras24.upp -usr/share/ghostscript/8.15/lib/ras3.upp -usr/share/ghostscript/8.15/lib/ras32.upp -usr/share/ghostscript/8.15/lib/ras4.upp -usr/share/ghostscript/8.15/lib/ras8m.upp -usr/share/ghostscript/8.15/lib/rollconv.ps -usr/share/ghostscript/8.15/lib/s400a1.upp -usr/share/ghostscript/8.15/lib/s400b1.upp -usr/share/ghostscript/8.15/lib/sharp.upp -usr/share/ghostscript/8.15/lib/showchar.ps -usr/share/ghostscript/8.15/lib/showpage.ps -usr/share/ghostscript/8.15/lib/st640ih.upp -usr/share/ghostscript/8.15/lib/st640ihg.upp -usr/share/ghostscript/8.15/lib/st640p.upp -usr/share/ghostscript/8.15/lib/st640pg.upp -usr/share/ghostscript/8.15/lib/st640pl.upp -usr/share/ghostscript/8.15/lib/st640plg.upp -usr/share/ghostscript/8.15/lib/stc.upp -usr/share/ghostscript/8.15/lib/stc1520h.upp -usr/share/ghostscript/8.15/lib/stc2.upp -usr/share/ghostscript/8.15/lib/stc200_h.upp -usr/share/ghostscript/8.15/lib/stc2_h.upp -usr/share/ghostscript/8.15/lib/stc2s_h.upp -usr/share/ghostscript/8.15/lib/stc300.upp -usr/share/ghostscript/8.15/lib/stc300bl.upp -usr/share/ghostscript/8.15/lib/stc300bm.upp -usr/share/ghostscript/8.15/lib/stc500p.upp -usr/share/ghostscript/8.15/lib/stc500ph.upp -usr/share/ghostscript/8.15/lib/stc600ih.upp -usr/share/ghostscript/8.15/lib/stc600p.upp -usr/share/ghostscript/8.15/lib/stc600pl.upp -usr/share/ghostscript/8.15/lib/stc640p.upp -usr/share/ghostscript/8.15/lib/stc740ih.upp -usr/share/ghostscript/8.15/lib/stc800ih.upp -usr/share/ghostscript/8.15/lib/stc800p.upp -usr/share/ghostscript/8.15/lib/stc800pl.upp -usr/share/ghostscript/8.15/lib/stc_h.upp -usr/share/ghostscript/8.15/lib/stc_l.upp -usr/share/ghostscript/8.15/lib/stcany.upp -usr/share/ghostscript/8.15/lib/stcany_h.upp -usr/share/ghostscript/8.15/lib/stcinfo.ps -usr/share/ghostscript/8.15/lib/stcolor.ps -usr/share/ghostscript/8.15/lib/stocht.ps -usr/share/ghostscript/8.15/lib/traceimg.ps -usr/share/ghostscript/8.15/lib/traceop.ps -usr/share/ghostscript/8.15/lib/type1enc.ps -usr/share/ghostscript/8.15/lib/type1ops.ps -usr/share/ghostscript/8.15/lib/uninfo.ps -usr/share/ghostscript/8.15/lib/unprot.ps -usr/share/ghostscript/8.15/lib/viewcmyk.ps -usr/share/ghostscript/8.15/lib/viewgif.ps -usr/share/ghostscript/8.15/lib/viewjpeg.ps -usr/share/ghostscript/8.15/lib/viewmiff.ps -usr/share/ghostscript/8.15/lib/viewpbm.ps -usr/share/ghostscript/8.15/lib/viewpcx.ps -usr/share/ghostscript/8.15/lib/viewps2a.ps -usr/share/ghostscript/8.15/lib/wftopfa.ps -usr/share/ghostscript/8.15/lib/winmaps.ps -usr/share/ghostscript/8.15/lib/wrfont.ps -usr/share/ghostscript/8.15/lib/xlatmap -usr/share/ghostscript/8.15/lib/zeroline.ps +#usr/share/ghostscript/9.20 +#usr/share/ghostscript/9.20/doc +#usr/share/ghostscript/9.20/doc/API.htm +#usr/share/ghostscript/9.20/doc/AUTHORS +#usr/share/ghostscript/9.20/doc/C-style.htm +#usr/share/ghostscript/9.20/doc/COPYING +#usr/share/ghostscript/9.20/doc/Changes.htm +#usr/share/ghostscript/9.20/doc/Commprod.htm +#usr/share/ghostscript/9.20/doc/DLL.htm +#usr/share/ghostscript/9.20/doc/Deprecated.htm +#usr/share/ghostscript/9.20/doc/Details.htm +#usr/share/ghostscript/9.20/doc/Details8.htm +#usr/share/ghostscript/9.20/doc/Details9.htm +#usr/share/ghostscript/9.20/doc/Develop.htm +#usr/share/ghostscript/9.20/doc/Devices.htm +#usr/share/ghostscript/9.20/doc/Drivers.htm +#usr/share/ghostscript/9.20/doc/Fonts.htm +#usr/share/ghostscript/9.20/doc/GS9_Color_Management.pdf +#usr/share/ghostscript/9.20/doc/GS9_Color_Management.tex +#usr/share/ghostscript/9.20/doc/Helpers.htm +#usr/share/ghostscript/9.20/doc/Hershey.htm +#usr/share/ghostscript/9.20/doc/History1.htm +#usr/share/ghostscript/9.20/doc/History2.htm +#usr/share/ghostscript/9.20/doc/History3.htm +#usr/share/ghostscript/9.20/doc/History4.htm +#usr/share/ghostscript/9.20/doc/History5.htm +#usr/share/ghostscript/9.20/doc/History6.htm +#usr/share/ghostscript/9.20/doc/History7.htm +#usr/share/ghostscript/9.20/doc/History8.htm +#usr/share/ghostscript/9.20/doc/History9.htm +#usr/share/ghostscript/9.20/doc/Install.htm +#usr/share/ghostscript/9.20/doc/Issues.htm +#usr/share/ghostscript/9.20/doc/Language.htm +#usr/share/ghostscript/9.20/doc/Lib.htm +#usr/share/ghostscript/9.20/doc/Make.htm +#usr/share/ghostscript/9.20/doc/News.htm +#usr/share/ghostscript/9.20/doc/Projects.htm +#usr/share/ghostscript/9.20/doc/Ps-style.htm +#usr/share/ghostscript/9.20/doc/Ps2epsi.htm +#usr/share/ghostscript/9.20/doc/Psfiles.htm +#usr/share/ghostscript/9.20/doc/Readme.htm +#usr/share/ghostscript/9.20/doc/Release.htm +#usr/share/ghostscript/9.20/doc/Source.htm +#usr/share/ghostscript/9.20/doc/Unix-lpr.htm +#usr/share/ghostscript/9.20/doc/Use.htm +#usr/share/ghostscript/9.20/doc/WhatIsGS.htm +#usr/share/ghostscript/9.20/doc/Xfonts.htm +#usr/share/ghostscript/9.20/doc/gs-vms.hlp +#usr/share/ghostscript/9.20/doc/gs.css +#usr/share/ghostscript/9.20/doc/gsdoc.el +#usr/share/ghostscript/9.20/doc/index.html +#usr/share/ghostscript/9.20/doc/pscet_status.txt +#usr/share/ghostscript/9.20/doc/thirdparty.htm +#usr/share/ghostscript/9.20/examples +#usr/share/ghostscript/9.20/examples/alphabet.ps +#usr/share/ghostscript/9.20/examples/annots.pdf +#usr/share/ghostscript/9.20/examples/cjk +#usr/share/ghostscript/9.20/examples/cjk/all_ac1.ps +#usr/share/ghostscript/9.20/examples/cjk/all_ag1.ps +#usr/share/ghostscript/9.20/examples/cjk/all_aj1.ps +#usr/share/ghostscript/9.20/examples/cjk/all_aj2.ps +#usr/share/ghostscript/9.20/examples/cjk/all_ak1.ps +#usr/share/ghostscript/9.20/examples/cjk/article9.ps +#usr/share/ghostscript/9.20/examples/cjk/gscjk_ac.ps +#usr/share/ghostscript/9.20/examples/cjk/gscjk_ag.ps +#usr/share/ghostscript/9.20/examples/cjk/gscjk_aj.ps +#usr/share/ghostscript/9.20/examples/cjk/gscjk_ak.ps +#usr/share/ghostscript/9.20/examples/cjk/iso2022.ps +#usr/share/ghostscript/9.20/examples/cjk/iso2022v.ps +#usr/share/ghostscript/9.20/examples/colorcir.ps +#usr/share/ghostscript/9.20/examples/doretree.ps +#usr/share/ghostscript/9.20/examples/escher.ps +#usr/share/ghostscript/9.20/examples/golfer.eps +#usr/share/ghostscript/9.20/examples/grayalph.ps +#usr/share/ghostscript/9.20/examples/ridt91.eps +#usr/share/ghostscript/9.20/examples/snowflak.ps +#usr/share/ghostscript/9.20/examples/text_graph_image_cmyk_rgb.pdf +#usr/share/ghostscript/9.20/examples/text_graphic_image.pdf +#usr/share/ghostscript/9.20/examples/tiger.eps +#usr/share/ghostscript/9.20/examples/transparency_example.ps +#usr/share/ghostscript/9.20/examples/vasarely.ps +#usr/share/ghostscript/9.20/examples/waterfal.ps +#usr/share/ghostscript/9.20/lib +#usr/share/ghostscript/9.20/lib/PDFA_def.ps +#usr/share/ghostscript/9.20/lib/PDFX_def.ps +#usr/share/ghostscript/9.20/lib/PM760p.upp +#usr/share/ghostscript/9.20/lib/PM760pl.upp +#usr/share/ghostscript/9.20/lib/PM820p.upp +#usr/share/ghostscript/9.20/lib/PM820pl.upp +#usr/share/ghostscript/9.20/lib/Stc670p.upp +#usr/share/ghostscript/9.20/lib/Stc670pl.upp +#usr/share/ghostscript/9.20/lib/Stc680p.upp +#usr/share/ghostscript/9.20/lib/Stc680pl.upp +#usr/share/ghostscript/9.20/lib/Stc740p.upp +#usr/share/ghostscript/9.20/lib/Stc740pl.upp +#usr/share/ghostscript/9.20/lib/Stc760p.upp +#usr/share/ghostscript/9.20/lib/Stc760pl.upp +#usr/share/ghostscript/9.20/lib/Stc777p.upp +#usr/share/ghostscript/9.20/lib/Stc777pl.upp +#usr/share/ghostscript/9.20/lib/Stp720p.upp +#usr/share/ghostscript/9.20/lib/Stp720pl.upp +#usr/share/ghostscript/9.20/lib/Stp870p.upp +#usr/share/ghostscript/9.20/lib/Stp870pl.upp +#usr/share/ghostscript/9.20/lib/acctest.ps +#usr/share/ghostscript/9.20/lib/addxchar.ps +#usr/share/ghostscript/9.20/lib/align.ps +#usr/share/ghostscript/9.20/lib/bj8.rpd +#usr/share/ghostscript/9.20/lib/bj8gc12f.upp +#usr/share/ghostscript/9.20/lib/bj8hg12f.upp +#usr/share/ghostscript/9.20/lib/bj8oh06n.upp +#usr/share/ghostscript/9.20/lib/bj8pa06n.upp +#usr/share/ghostscript/9.20/lib/bj8pp12f.upp +#usr/share/ghostscript/9.20/lib/bj8ts06n.upp +#usr/share/ghostscript/9.20/lib/bjc6000a1.upp +#usr/share/ghostscript/9.20/lib/bjc6000b1.upp +#usr/share/ghostscript/9.20/lib/bjc610a0.upp +#usr/share/ghostscript/9.20/lib/bjc610a1.upp +#usr/share/ghostscript/9.20/lib/bjc610a2.upp +#usr/share/ghostscript/9.20/lib/bjc610a3.upp +#usr/share/ghostscript/9.20/lib/bjc610a4.upp +#usr/share/ghostscript/9.20/lib/bjc610a5.upp +#usr/share/ghostscript/9.20/lib/bjc610a6.upp +#usr/share/ghostscript/9.20/lib/bjc610a7.upp +#usr/share/ghostscript/9.20/lib/bjc610a8.upp +#usr/share/ghostscript/9.20/lib/bjc610b1.upp +#usr/share/ghostscript/9.20/lib/bjc610b2.upp +#usr/share/ghostscript/9.20/lib/bjc610b3.upp +#usr/share/ghostscript/9.20/lib/bjc610b4.upp +#usr/share/ghostscript/9.20/lib/bjc610b6.upp +#usr/share/ghostscript/9.20/lib/bjc610b7.upp +#usr/share/ghostscript/9.20/lib/bjc610b8.upp +#usr/share/ghostscript/9.20/lib/caption.ps +#usr/share/ghostscript/9.20/lib/cbjc600.ppd +#usr/share/ghostscript/9.20/lib/cbjc800.ppd +#usr/share/ghostscript/9.20/lib/cdj550.upp +#usr/share/ghostscript/9.20/lib/cdj690.upp +#usr/share/ghostscript/9.20/lib/cdj690ec.upp +#usr/share/ghostscript/9.20/lib/cid2code.ps +#usr/share/ghostscript/9.20/lib/decrypt.ps +#usr/share/ghostscript/9.20/lib/dmp_init.ps +#usr/share/ghostscript/9.20/lib/dmp_site.ps +#usr/share/ghostscript/9.20/lib/dnj750c.upp +#usr/share/ghostscript/9.20/lib/dnj750m.upp +#usr/share/ghostscript/9.20/lib/docie.ps +#usr/share/ghostscript/9.20/lib/escp_24.src +#usr/share/ghostscript/9.20/lib/font2c.ps +#usr/share/ghostscript/9.20/lib/font2pcl.ps +#usr/share/ghostscript/9.20/lib/ghostpdf.ppd +#usr/share/ghostscript/9.20/lib/gs_ce_e.ps +#usr/share/ghostscript/9.20/lib/gs_cmdl.ps +#usr/share/ghostscript/9.20/lib/gs_il2_e.ps +#usr/share/ghostscript/9.20/lib/gs_kanji.ps +#usr/share/ghostscript/9.20/lib/gs_ksb_e.ps +#usr/share/ghostscript/9.20/lib/gs_l.xbm +#usr/share/ghostscript/9.20/lib/gs_l.xpm +#usr/share/ghostscript/9.20/lib/gs_l_m.xbm +#usr/share/ghostscript/9.20/lib/gs_lgo_e.ps +#usr/share/ghostscript/9.20/lib/gs_lgx_e.ps +#usr/share/ghostscript/9.20/lib/gs_m.xbm +#usr/share/ghostscript/9.20/lib/gs_m.xpm +#usr/share/ghostscript/9.20/lib/gs_m_m.xbm +#usr/share/ghostscript/9.20/lib/gs_pfile.ps +#usr/share/ghostscript/9.20/lib/gs_rdlin.ps +#usr/share/ghostscript/9.20/lib/gs_s.xbm +#usr/share/ghostscript/9.20/lib/gs_s.xpm +#usr/share/ghostscript/9.20/lib/gs_s_m.xbm +#usr/share/ghostscript/9.20/lib/gs_t.xbm +#usr/share/ghostscript/9.20/lib/gs_t.xpm +#usr/share/ghostscript/9.20/lib/gs_t_m.xbm +#usr/share/ghostscript/9.20/lib/gs_wl1_e.ps +#usr/share/ghostscript/9.20/lib/gs_wl2_e.ps +#usr/share/ghostscript/9.20/lib/gs_wl5_e.ps +#usr/share/ghostscript/9.20/lib/gslp.ps +#usr/share/ghostscript/9.20/lib/gsnup.ps +#usr/share/ghostscript/9.20/lib/ht_ccsto.ps +#usr/share/ghostscript/9.20/lib/image-qa.ps +#usr/share/ghostscript/9.20/lib/impath.ps +#usr/share/ghostscript/9.20/lib/jispaper.ps +#usr/share/ghostscript/9.20/lib/landscap.ps +#usr/share/ghostscript/9.20/lib/level1.ps +#usr/share/ghostscript/9.20/lib/lines.ps +#usr/share/ghostscript/9.20/lib/markhint.ps +#usr/share/ghostscript/9.20/lib/markpath.ps +#usr/share/ghostscript/9.20/lib/mkcidfm.ps +#usr/share/ghostscript/9.20/lib/necp2x.upp +#usr/share/ghostscript/9.20/lib/necp2x6.upp +#usr/share/ghostscript/9.20/lib/packfile.ps +#usr/share/ghostscript/9.20/lib/pcharstr.ps +#usr/share/ghostscript/9.20/lib/pdf2dsc.ps +#usr/share/ghostscript/9.20/lib/pdfwrite.ps +#usr/share/ghostscript/9.20/lib/pf2afm.ps +#usr/share/ghostscript/9.20/lib/pfbtopfa.ps +#usr/share/ghostscript/9.20/lib/ppath.ps +#usr/share/ghostscript/9.20/lib/pphs.ps +#usr/share/ghostscript/9.20/lib/prfont.ps +#usr/share/ghostscript/9.20/lib/printafm.ps +#usr/share/ghostscript/9.20/lib/ps2ai.ps +#usr/share/ghostscript/9.20/lib/ps2ascii.ps +#usr/share/ghostscript/9.20/lib/ps2epsi.ps +#usr/share/ghostscript/9.20/lib/quit.ps +#usr/share/ghostscript/9.20/lib/ras1.upp +#usr/share/ghostscript/9.20/lib/ras24.upp +#usr/share/ghostscript/9.20/lib/ras3.upp +#usr/share/ghostscript/9.20/lib/ras32.upp +#usr/share/ghostscript/9.20/lib/ras4.upp +#usr/share/ghostscript/9.20/lib/ras8m.upp +#usr/share/ghostscript/9.20/lib/rollconv.ps +#usr/share/ghostscript/9.20/lib/s400a1.upp +#usr/share/ghostscript/9.20/lib/s400b1.upp +#usr/share/ghostscript/9.20/lib/sharp.upp +#usr/share/ghostscript/9.20/lib/showchar.ps +#usr/share/ghostscript/9.20/lib/showpage.ps +#usr/share/ghostscript/9.20/lib/sipixa6.upp +#usr/share/ghostscript/9.20/lib/st640ih.upp +#usr/share/ghostscript/9.20/lib/st640ihg.upp +#usr/share/ghostscript/9.20/lib/st640p.upp +#usr/share/ghostscript/9.20/lib/st640pg.upp +#usr/share/ghostscript/9.20/lib/st640pl.upp +#usr/share/ghostscript/9.20/lib/st640plg.upp +#usr/share/ghostscript/9.20/lib/stc.upp +#usr/share/ghostscript/9.20/lib/stc1520h.upp +#usr/share/ghostscript/9.20/lib/stc2.upp +#usr/share/ghostscript/9.20/lib/stc200_h.upp +#usr/share/ghostscript/9.20/lib/stc2_h.upp +#usr/share/ghostscript/9.20/lib/stc2s_h.upp +#usr/share/ghostscript/9.20/lib/stc300.upp +#usr/share/ghostscript/9.20/lib/stc300bl.upp +#usr/share/ghostscript/9.20/lib/stc300bm.upp +#usr/share/ghostscript/9.20/lib/stc500p.upp +#usr/share/ghostscript/9.20/lib/stc500ph.upp +#usr/share/ghostscript/9.20/lib/stc600ih.upp +#usr/share/ghostscript/9.20/lib/stc600p.upp +#usr/share/ghostscript/9.20/lib/stc600pl.upp +#usr/share/ghostscript/9.20/lib/stc640p.upp +#usr/share/ghostscript/9.20/lib/stc740ih.upp +#usr/share/ghostscript/9.20/lib/stc800ih.upp +#usr/share/ghostscript/9.20/lib/stc800p.upp +#usr/share/ghostscript/9.20/lib/stc800pl.upp +#usr/share/ghostscript/9.20/lib/stc_h.upp +#usr/share/ghostscript/9.20/lib/stc_l.upp +#usr/share/ghostscript/9.20/lib/stcany.upp +#usr/share/ghostscript/9.20/lib/stcany_h.upp +#usr/share/ghostscript/9.20/lib/stcinfo.ps +#usr/share/ghostscript/9.20/lib/stcolor.ps +#usr/share/ghostscript/9.20/lib/stocht.ps +#usr/share/ghostscript/9.20/lib/traceimg.ps +#usr/share/ghostscript/9.20/lib/traceop.ps +#usr/share/ghostscript/9.20/lib/type1enc.ps +#usr/share/ghostscript/9.20/lib/type1ops.ps +#usr/share/ghostscript/9.20/lib/uninfo.ps +#usr/share/ghostscript/9.20/lib/unprot.ps +#usr/share/ghostscript/9.20/lib/viewcmyk.ps +#usr/share/ghostscript/9.20/lib/viewgif.ps +#usr/share/ghostscript/9.20/lib/viewjpeg.ps +#usr/share/ghostscript/9.20/lib/viewmiff.ps +#usr/share/ghostscript/9.20/lib/viewpbm.ps +#usr/share/ghostscript/9.20/lib/viewpcx.ps +#usr/share/ghostscript/9.20/lib/viewps2a.ps +#usr/share/ghostscript/9.20/lib/wftopfa.ps +#usr/share/ghostscript/9.20/lib/winmaps.ps +#usr/share/ghostscript/9.20/lib/wrfont.ps +#usr/share/ghostscript/9.20/lib/zeroline.ps #usr/share/ghostscript/fonts #usr/share/ghostscript/fonts/COPYING #usr/share/ghostscript/fonts/ChangeLog @@ -688,4 +446,41 @@ usr/share/ghostscript/fonts/u004006t.pfm usr/share/ghostscript/fonts/z003034l.afm usr/share/ghostscript/fonts/z003034l.pfb usr/share/ghostscript/fonts/z003034l.pfm -var/ipfire/cups/pstoraster.convs +#usr/share/man/de/man1/dvipdf.1 +#usr/share/man/de/man1/eps2eps.1 +#usr/share/man/de/man1/font2c.1 +#usr/share/man/de/man1/gsnd.1 +#usr/share/man/de/man1/pdf2dsc.1 +#usr/share/man/de/man1/pdf2ps.1 +#usr/share/man/de/man1/printafm.1 +#usr/share/man/de/man1/ps2ascii.1 +#usr/share/man/de/man1/ps2pdf.1 +#usr/share/man/de/man1/ps2pdf12.1 +#usr/share/man/de/man1/ps2pdf13.1 +#usr/share/man/de/man1/ps2pdf14.1 +#usr/share/man/de/man1/ps2ps.1 +#usr/share/man/de/man1/wftopfa.1 +#usr/share/man/man1/dvipdf.1 +#usr/share/man/man1/eps2eps.1 +#usr/share/man/man1/font2c.1 +#usr/share/man/man1/gs.1 +#usr/share/man/man1/gsbj.1 +#usr/share/man/man1/gsdj.1 +#usr/share/man/man1/gsdj500.1 +#usr/share/man/man1/gslj.1 +#usr/share/man/man1/gslp.1 +#usr/share/man/man1/gsnd.1 +#usr/share/man/man1/pdf2dsc.1 +#usr/share/man/man1/pdf2ps.1 +#usr/share/man/man1/pf2afm.1 +#usr/share/man/man1/pfbtopfa.1 +#usr/share/man/man1/printafm.1 +#usr/share/man/man1/ps2ascii.1 +#usr/share/man/man1/ps2epsi.1 +#usr/share/man/man1/ps2pdf.1 +#usr/share/man/man1/ps2pdf12.1 +#usr/share/man/man1/ps2pdf13.1 +#usr/share/man/man1/ps2pdf14.1 +#usr/share/man/man1/ps2pdfwr.1 +#usr/share/man/man1/ps2ps.1 +#usr/share/man/man1/wftopfa.1 diff --git a/lfs/ghostscript b/lfs/ghostscript index f76a1b690..4d82eb750 100644 --- a/lfs/ghostscript +++ b/lfs/ghostscript @@ -24,17 +24,17 @@ include Config -VER = 8.15.1 +VER = 9.20 -THISAPP = espgs-$(VER) -DL_FILE = $(THISAPP)-source.tar.bz2 +THISAPP = ghostscript-$(VER) +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/espgs-$(VER) +DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = ghostscript -PAK_VER = 1 +PAK_VER = 2 -DEPS = "" +DEPS = "dbus libtiff" ############################################################################### # Top-level Rules @@ -48,7 +48,7 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE) ghostscript-fonts-std-8.11.tar.gz = $(URL_IPFIRE)/ghostscript-fonts-std-8.11.tar.gz gnu-gs-fonts-other-6.0.tar.gz = $(URL_IPFIRE)/gnu-gs-fonts-other-6.0.tar.gz -$(DL_FILE)_MD5 = 2a21136953c3559e6088522753b06b1f +$(DL_FILE)_MD5 = 93c5987cd3ab341108be1ebbaadc24fe ghostscript-fonts-std-8.11.tar.gz_MD5 = 6865682b095f8c4500c54b285ff05ef6 gnu-gs-fonts-other-6.0.tar.gz_MD5 = 33457d3f37de7ef03d2eea05a9e6aa4f @@ -82,14 +82,19 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -# cd $(DIR_APP) && sed -i "s/bbox.dev$/x11.dev/" Makefile.in - cd $(DIR_APP) && ./configure --prefix=/usr --enable-threads --without-omni - cd $(DIR_APP) && make + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --with-system-libtiff \ + --with-install-cups + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - rmdir -v /usr/lib/ghostscript/8.15 /usr/lib/ghostscript + + # Install fonts tar xfz $(DIR_SRC)/cache/ghostscript-fonts-std-8.11.tar.gz -C /usr/share/ghostscript tar xfz $(DIR_SRC)/cache/gnu-gs-fonts-other-6.0.tar.gz -C /usr/share/ghostscript chown -v root:root /usr/share/ghostscript/fonts/* + @rm -rf $(DIR_APP) @$(POSTBUILD) From f70723ea1d8a4c5c7e5a57323df6aae4722ceacc Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 15:45:52 +0000 Subject: [PATCH 151/464] avahi: Update to 0.6.32 Signed-off-by: Michael Tremer --- config/rootfiles/packages/avahi | 33 +++++++++++++++++++++------------ lfs/avahi | 4 ++-- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/config/rootfiles/packages/avahi b/config/rootfiles/packages/avahi index fa8f25b53..4a3b57232 100644 --- a/config/rootfiles/packages/avahi +++ b/config/rootfiles/packages/avahi @@ -7,7 +7,7 @@ etc/avahi/services etc/avahi/services/sftp-ssh.service etc/avahi/services/smb.service etc/avahi/services/ssh.service -#etc/dbus-1/system.d/avahi-dbus.conf +etc/dbus-1/system.d/avahi-dbus.conf etc/rc.d/init.d/avahi usr/bin/avahi-browse usr/bin/avahi-browse-domains @@ -91,21 +91,23 @@ usr/lib/python2.7/site-packages/avahi/ServiceTypeDatabase.py usr/sbin/avahi-autoipd usr/sbin/avahi-daemon usr/sbin/avahi-dnsconfd -#usr/share/applications usr/share/avahi usr/share/avahi/avahi-service.dtd usr/share/avahi/service-types #usr/share/dbus-1/interfaces -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.AddressResolver.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.DomainBrowser.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.EntryGroup.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.HostNameResolver.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.RecordBrowser.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.Server.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceBrowser.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceResolver.xml -#usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceTypeBrowser.xml -#usr/share/dbus-1/system-services +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.AddressResolver.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.DomainBrowser.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.EntryGroup.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.HostNameResolver.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.RecordBrowser.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.Server.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceBrowser.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceResolver.xml +usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceTypeBrowser.xml +#usr/share/locale/ach +#usr/share/locale/ach/LC_MESSAGES +#usr/share/locale/ach/LC_MESSAGES/avahi.mo +#usr/share/locale/ar/LC_MESSAGES/avahi.mo #usr/share/locale/bg/LC_MESSAGES/avahi.mo #usr/share/locale/ca/LC_MESSAGES/avahi.mo #usr/share/locale/cs/LC_MESSAGES/avahi.mo @@ -118,7 +120,10 @@ usr/share/avahi/service-types #usr/share/locale/en_NZ #usr/share/locale/en_NZ/LC_MESSAGES #usr/share/locale/en_NZ/LC_MESSAGES/avahi.mo +#usr/share/locale/eo/LC_MESSAGES/avahi.mo #usr/share/locale/es/LC_MESSAGES/avahi.mo +#usr/share/locale/et/LC_MESSAGES/avahi.mo +#usr/share/locale/fa/LC_MESSAGES/avahi.mo #usr/share/locale/fi/LC_MESSAGES/avahi.mo #usr/share/locale/fo #usr/share/locale/fo/LC_MESSAGES @@ -130,16 +135,20 @@ usr/share/avahi/service-types #usr/share/locale/id/LC_MESSAGES/avahi.mo #usr/share/locale/it/LC_MESSAGES/avahi.mo #usr/share/locale/ja/LC_MESSAGES/avahi.mo +#usr/share/locale/ko/LC_MESSAGES/avahi.mo +#usr/share/locale/lv/LC_MESSAGES/avahi.mo #usr/share/locale/ms/LC_MESSAGES/avahi.mo #usr/share/locale/nl/LC_MESSAGES/avahi.mo #usr/share/locale/pl/LC_MESSAGES/avahi.mo #usr/share/locale/pt_BR/LC_MESSAGES/avahi.mo #usr/share/locale/ro/LC_MESSAGES/avahi.mo #usr/share/locale/ru/LC_MESSAGES/avahi.mo +#usr/share/locale/sk/LC_MESSAGES/avahi.mo #usr/share/locale/sl/LC_MESSAGES/avahi.mo #usr/share/locale/sr/LC_MESSAGES/avahi.mo #usr/share/locale/sr@latin/LC_MESSAGES/avahi.mo #usr/share/locale/sv/LC_MESSAGES/avahi.mo +#usr/share/locale/tr/LC_MESSAGES/avahi.mo #usr/share/locale/uk/LC_MESSAGES/avahi.mo #usr/share/locale/zh_CN/LC_MESSAGES/avahi.mo #usr/share/locale/zh_TW/LC_MESSAGES/avahi.mo diff --git a/lfs/avahi b/lfs/avahi index 0ffbd3249..adcb84c54 100644 --- a/lfs/avahi +++ b/lfs/avahi @@ -24,7 +24,7 @@ include Config -VER = 0.6.31 +VER = 0.6.32 THISAPP = avahi-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 2f22745b8f7368ad5a0a3fddac343f2d +$(DL_FILE)_MD5 = 22b5e705d3eabb31d26f2e1e7b074013 install : $(TARGET) From 89009f82ea4861a14dcb90c2185bdcd82d3703f4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Feb 2017 16:33:56 +0000 Subject: [PATCH 152/464] Rootfile updates Signed-off-by: Michael Tremer --- config/rootfiles/common/attr | 5 ++--- config/rootfiles/packages/sane | 5 +++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/rootfiles/common/attr b/config/rootfiles/common/attr index ae8c34aa3..6a594f75e 100644 --- a/config/rootfiles/common/attr +++ b/config/rootfiles/common/attr @@ -28,9 +28,8 @@ usr/lib/libattr.so.1.1.0 #usr/share/man/man1/attr.1 #usr/share/man/man1/getfattr.1 #usr/share/man/man1/setfattr.1 -#usr/share/man/man2/flistxattr.2 -#usr/share/man/man2/fremovexattr.2 -#usr/share/man/man2/lgetxattr.2 +#usr/share/man/man2/fgetxattr.2 +#usr/share/man/man2/fsetxattr.2 #usr/share/man/man3/attr_get.3 #usr/share/man/man3/attr_getf.3 #usr/share/man/man3/attr_list.3 diff --git a/config/rootfiles/packages/sane b/config/rootfiles/packages/sane index 4fd9b98ed..792342773 100644 --- a/config/rootfiles/packages/sane +++ b/config/rootfiles/packages/sane @@ -1,3 +1,4 @@ +etc/rc.d/init.d/sane etc/rc.d/rc0.d/K10sane etc/rc.d/rc3.d/S95sane etc/rc.d/rc6.d/K10sane @@ -514,6 +515,7 @@ usr/lib/sane/libsane-umax_pp.so.1.0.24 usr/lib/sane/libsane-xerox_mfp.so usr/lib/sane/libsane-xerox_mfp.so.1 usr/lib/sane/libsane-xerox_mfp.so.1.0.24 +usr/local/bin/sanedloop usr/sbin/saned #usr/share/locale/bg/LC_MESSAGES/sane-backends.mo #usr/share/locale/cs/LC_MESSAGES/sane-backends.mo @@ -628,8 +630,7 @@ usr/share/sane/artec_eplus48u usr/share/sane/epjitsu usr/share/sane/gt68xx usr/share/sane/snapscan +#usr/var #usr/var/lock usr/var/lock/sane var/ipfire/backup/addons/includes/sane -etc/rc.d/init.d/sane -usr/local/bin/sanedloop From e8607830b0ef884e180df5ea908c2e48547e16bd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 27 Feb 2017 12:09:15 +0000 Subject: [PATCH 153/464] openssh: Update to 7.4p1 Signed-off-by: Michael Tremer --- lfs/openssh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openssh b/lfs/openssh index 371d0df4a..005e4dffa 100644 --- a/lfs/openssh +++ b/lfs/openssh @@ -24,7 +24,7 @@ include Config -VER = 7.3p1 +VER = 7.4p1 THISAPP = openssh-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = dfadd9f035d38ce5d58a3bf130b86d08 +$(DL_FILE)_MD5 = b2db2a83caf66a208bb78d6d287cdaa3 install : $(TARGET) From 63de1e482a176380bde444cd50ff4285137ba960 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 27 Feb 2017 15:00:46 +0000 Subject: [PATCH 154/464] Start Core Update 110 Signed-off-by: Michael Tremer --- config/rootfiles/core/{109 => 110}/exclude | 0 .../core/{109 => 110}/filelists/bind | 0 config/rootfiles/core/110/filelists/cairo | 1 + config/rootfiles/core/110/filelists/files | 8 +++ .../rootfiles/core/110/filelists/fontconfig | 1 + config/rootfiles/core/110/filelists/freetype | 1 + config/rootfiles/core/110/filelists/gnutls | 1 + config/rootfiles/core/110/filelists/lcms2 | 1 + config/rootfiles/core/110/filelists/openssh | 1 + config/rootfiles/core/110/filelists/pixman | 1 + config/rootfiles/core/110/filelists/poppler | 1 + config/rootfiles/core/110/filelists/qpdf | 1 + .../core/{109 => 110}/filelists/squid | 0 .../core/{109 => 110}/filelists/unbound | 0 config/rootfiles/core/110/filelists/wget | 1 + config/rootfiles/core/{109 => 110}/meta | 0 config/rootfiles/core/110/update.sh | 67 +++++++++++++++++++ config/rootfiles/oldcore/109/exclude | 30 +++++++++ .../{core => oldcore}/109/filelists/GeoIP | 0 config/rootfiles/oldcore/109/filelists/bind | 1 + .../{core => oldcore}/109/filelists/files | 0 .../{core => oldcore}/109/filelists/libpcap | 0 .../{core => oldcore}/109/filelists/libpng | 0 .../{core => oldcore}/109/filelists/openssl | 0 .../{core => oldcore}/109/filelists/snort | 0 config/rootfiles/oldcore/109/filelists/squid | 1 + .../{core => oldcore}/109/filelists/sysklogd | 0 .../rootfiles/oldcore/109/filelists/unbound | 1 + config/rootfiles/oldcore/109/meta | 1 + .../rootfiles/{core => oldcore}/109/update.sh | 0 make.sh | 2 +- 31 files changed, 120 insertions(+), 1 deletion(-) rename config/rootfiles/core/{109 => 110}/exclude (100%) rename config/rootfiles/core/{109 => 110}/filelists/bind (100%) create mode 120000 config/rootfiles/core/110/filelists/cairo create mode 100644 config/rootfiles/core/110/filelists/files create mode 120000 config/rootfiles/core/110/filelists/fontconfig create mode 120000 config/rootfiles/core/110/filelists/freetype create mode 120000 config/rootfiles/core/110/filelists/gnutls create mode 120000 config/rootfiles/core/110/filelists/lcms2 create mode 120000 config/rootfiles/core/110/filelists/openssh create mode 120000 config/rootfiles/core/110/filelists/pixman create mode 120000 config/rootfiles/core/110/filelists/poppler create mode 120000 config/rootfiles/core/110/filelists/qpdf rename config/rootfiles/core/{109 => 110}/filelists/squid (100%) rename config/rootfiles/core/{109 => 110}/filelists/unbound (100%) create mode 120000 config/rootfiles/core/110/filelists/wget rename config/rootfiles/core/{109 => 110}/meta (100%) create mode 100644 config/rootfiles/core/110/update.sh create mode 100644 config/rootfiles/oldcore/109/exclude rename config/rootfiles/{core => oldcore}/109/filelists/GeoIP (100%) create mode 120000 config/rootfiles/oldcore/109/filelists/bind rename config/rootfiles/{core => oldcore}/109/filelists/files (100%) rename config/rootfiles/{core => oldcore}/109/filelists/libpcap (100%) rename config/rootfiles/{core => oldcore}/109/filelists/libpng (100%) rename config/rootfiles/{core => oldcore}/109/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/109/filelists/snort (100%) create mode 120000 config/rootfiles/oldcore/109/filelists/squid rename config/rootfiles/{core => oldcore}/109/filelists/sysklogd (100%) create mode 120000 config/rootfiles/oldcore/109/filelists/unbound create mode 100644 config/rootfiles/oldcore/109/meta rename config/rootfiles/{core => oldcore}/109/update.sh (100%) diff --git a/config/rootfiles/core/109/exclude b/config/rootfiles/core/110/exclude similarity index 100% rename from config/rootfiles/core/109/exclude rename to config/rootfiles/core/110/exclude diff --git a/config/rootfiles/core/109/filelists/bind b/config/rootfiles/core/110/filelists/bind similarity index 100% rename from config/rootfiles/core/109/filelists/bind rename to config/rootfiles/core/110/filelists/bind diff --git a/config/rootfiles/core/110/filelists/cairo b/config/rootfiles/core/110/filelists/cairo new file mode 120000 index 000000000..bf48d25a4 --- /dev/null +++ b/config/rootfiles/core/110/filelists/cairo @@ -0,0 +1 @@ +../../../common/cairo \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files new file mode 100644 index 000000000..670b9ae62 --- /dev/null +++ b/config/rootfiles/core/110/filelists/files @@ -0,0 +1,8 @@ +etc/system-release +etc/issue +srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/vpnmain.cgi +usr/lib/libssp.so.0 +usr/lib/libssp.so.0.0.0 +usr/local/bin/xt_geoip_update +var/ipfire/langs diff --git a/config/rootfiles/core/110/filelists/fontconfig b/config/rootfiles/core/110/filelists/fontconfig new file mode 120000 index 000000000..6daeffdd0 --- /dev/null +++ b/config/rootfiles/core/110/filelists/fontconfig @@ -0,0 +1 @@ +../../../common/fontconfig \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/freetype b/config/rootfiles/core/110/filelists/freetype new file mode 120000 index 000000000..79ec5c42e --- /dev/null +++ b/config/rootfiles/core/110/filelists/freetype @@ -0,0 +1 @@ +../../../common/freetype \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/gnutls b/config/rootfiles/core/110/filelists/gnutls new file mode 120000 index 000000000..8dbe60bc3 --- /dev/null +++ b/config/rootfiles/core/110/filelists/gnutls @@ -0,0 +1 @@ +../../../common/gnutls \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/lcms2 b/config/rootfiles/core/110/filelists/lcms2 new file mode 120000 index 000000000..f72a39451 --- /dev/null +++ b/config/rootfiles/core/110/filelists/lcms2 @@ -0,0 +1 @@ +../../../common/lcms2 \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/openssh b/config/rootfiles/core/110/filelists/openssh new file mode 120000 index 000000000..d8c77fd8e --- /dev/null +++ b/config/rootfiles/core/110/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/pixman b/config/rootfiles/core/110/filelists/pixman new file mode 120000 index 000000000..fdb6346ae --- /dev/null +++ b/config/rootfiles/core/110/filelists/pixman @@ -0,0 +1 @@ +../../../common/pixman \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/poppler b/config/rootfiles/core/110/filelists/poppler new file mode 120000 index 000000000..39aa6c263 --- /dev/null +++ b/config/rootfiles/core/110/filelists/poppler @@ -0,0 +1 @@ +../../../common/poppler \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/qpdf b/config/rootfiles/core/110/filelists/qpdf new file mode 120000 index 000000000..2d6c43dec --- /dev/null +++ b/config/rootfiles/core/110/filelists/qpdf @@ -0,0 +1 @@ +../../../common/qpdf \ No newline at end of file diff --git a/config/rootfiles/core/109/filelists/squid b/config/rootfiles/core/110/filelists/squid similarity index 100% rename from config/rootfiles/core/109/filelists/squid rename to config/rootfiles/core/110/filelists/squid diff --git a/config/rootfiles/core/109/filelists/unbound b/config/rootfiles/core/110/filelists/unbound similarity index 100% rename from config/rootfiles/core/109/filelists/unbound rename to config/rootfiles/core/110/filelists/unbound diff --git a/config/rootfiles/core/110/filelists/wget b/config/rootfiles/core/110/filelists/wget new file mode 120000 index 000000000..fcb57dfec --- /dev/null +++ b/config/rootfiles/core/110/filelists/wget @@ -0,0 +1 @@ +../../../common/wget \ No newline at end of file diff --git a/config/rootfiles/core/109/meta b/config/rootfiles/core/110/meta similarity index 100% rename from config/rootfiles/core/109/meta rename to config/rootfiles/core/110/meta diff --git a/config/rootfiles/core/110/update.sh b/config/rootfiles/core/110/update.sh new file mode 100644 index 000000000..84e0ddf14 --- /dev/null +++ b/config/rootfiles/core/110/update.sh @@ -0,0 +1,67 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2017 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=110 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Stop services +/etc/init.d/squid stop +/etc/init.d/unbound stop + +# Extract files +extract_files + +# update linker config +ldconfig + +# Update Language cache +/usr/local/bin/update-lang-cache + +# Start services +/etc/init.d/unbound start +/etc/init.d/sshd restart +/etc/init.d/squid start + +# This update need a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/109/exclude b/config/rootfiles/oldcore/109/exclude new file mode 100644 index 000000000..d6fd053b6 --- /dev/null +++ b/config/rootfiles/oldcore/109/exclude @@ -0,0 +1,30 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/ovpn +var/lib/alternatives +var/log/cache +var/log/dhcpcd.log +var/log/messages +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/109/filelists/GeoIP b/config/rootfiles/oldcore/109/filelists/GeoIP similarity index 100% rename from config/rootfiles/core/109/filelists/GeoIP rename to config/rootfiles/oldcore/109/filelists/GeoIP diff --git a/config/rootfiles/oldcore/109/filelists/bind b/config/rootfiles/oldcore/109/filelists/bind new file mode 120000 index 000000000..48a0ebaef --- /dev/null +++ b/config/rootfiles/oldcore/109/filelists/bind @@ -0,0 +1 @@ +../../../common/bind \ No newline at end of file diff --git a/config/rootfiles/core/109/filelists/files b/config/rootfiles/oldcore/109/filelists/files similarity index 100% rename from config/rootfiles/core/109/filelists/files rename to config/rootfiles/oldcore/109/filelists/files diff --git a/config/rootfiles/core/109/filelists/libpcap b/config/rootfiles/oldcore/109/filelists/libpcap similarity index 100% rename from config/rootfiles/core/109/filelists/libpcap rename to config/rootfiles/oldcore/109/filelists/libpcap diff --git a/config/rootfiles/core/109/filelists/libpng b/config/rootfiles/oldcore/109/filelists/libpng similarity index 100% rename from config/rootfiles/core/109/filelists/libpng rename to config/rootfiles/oldcore/109/filelists/libpng diff --git a/config/rootfiles/core/109/filelists/openssl b/config/rootfiles/oldcore/109/filelists/openssl similarity index 100% rename from config/rootfiles/core/109/filelists/openssl rename to config/rootfiles/oldcore/109/filelists/openssl diff --git a/config/rootfiles/core/109/filelists/snort b/config/rootfiles/oldcore/109/filelists/snort similarity index 100% rename from config/rootfiles/core/109/filelists/snort rename to config/rootfiles/oldcore/109/filelists/snort diff --git a/config/rootfiles/oldcore/109/filelists/squid b/config/rootfiles/oldcore/109/filelists/squid new file mode 120000 index 000000000..2dc8372a0 --- /dev/null +++ b/config/rootfiles/oldcore/109/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/109/filelists/sysklogd b/config/rootfiles/oldcore/109/filelists/sysklogd similarity index 100% rename from config/rootfiles/core/109/filelists/sysklogd rename to config/rootfiles/oldcore/109/filelists/sysklogd diff --git a/config/rootfiles/oldcore/109/filelists/unbound b/config/rootfiles/oldcore/109/filelists/unbound new file mode 120000 index 000000000..66adf0924 --- /dev/null +++ b/config/rootfiles/oldcore/109/filelists/unbound @@ -0,0 +1 @@ +../../../common/unbound \ No newline at end of file diff --git a/config/rootfiles/oldcore/109/meta b/config/rootfiles/oldcore/109/meta new file mode 100644 index 000000000..d547fa86f --- /dev/null +++ b/config/rootfiles/oldcore/109/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/core/109/update.sh b/config/rootfiles/oldcore/109/update.sh similarity index 100% rename from config/rootfiles/core/109/update.sh rename to config/rootfiles/oldcore/109/update.sh diff --git a/make.sh b/make.sh index c5e8dc395..f5e792a9a 100755 --- a/make.sh +++ b/make.sh @@ -25,7 +25,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number -CORE="109" # Core Level (Filename) +CORE="110" # Core Level (Filename) PAKFIRE_CORE="109" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan From e432689aa99ec262879081fc80161c31b8c4a890 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 27 Feb 2017 21:38:03 +0000 Subject: [PATCH 155/464] DNS: Fall back to permissive mode if recursor mode is unavailable The tests when assigning DNS name servers has been extended so that if no working forwarder can be found, we will test if the local recursor mode is an option. If not, we will configure unbound's validator module into permissive mode so that at least some DNS functionality is available. Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/files | 1 + lfs/unbound | 1 + src/initscripts/init.d/unbound | 67 +++++++++++++++++-- ...validator-permissive-mode-at-runtime.patch | 43 ++++++++++++ 4 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 670b9ae62..f4ce9898e 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 diff --git a/lfs/unbound b/lfs/unbound index 2b7745cd0..f361f24f0 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/initscripts/init.d/unbound b/src/initscripts/init.d/unbound index 880278150..bbf9c002e 100644 --- a/src/initscripts/init.d/unbound +++ b/src/initscripts/init.d/unbound @@ -114,17 +114,38 @@ update_forwarders() { echo_warning fi - if [ -n "${broken_forwarders}" -a -z "${forwarders}" ]; then - boot_mesg "Falling back to recursor mode" ${WARNING} - echo_warning - - elif [ -n "${forwarders}" ]; then + if [ -n "${forwarders}" ]; then boot_mesg "Configuring upstream name server(s): ${forwarders:1}" ${INFO} echo_ok + # Make sure DNSSEC is activated + enable_dnssec + echo "${forwarders}" > /var/ipfire/red/dns unbound-control -q forward ${forwarders} return 0 + + # In case we have found no working forwarders + else + # Test if the recursor mode is available + if can_resolve_root +bufsize=${new_edns_buffer_size}; then + # Make sure DNSSEC is activated + enable_dnssec + + boot_mesg "Falling back to recursor mode" ${WARNING} + echo_warning + + # If not, we set DNSSEC in permissive mode and allow using all recursors + elif [ -n "${broken_forwarders}" ]; then + disable_dnssec + + boot_mesg "DNSSEC has been set to permissive mode" ${FAILURE} + echo_failure + + echo "${broken_forwarders}" > /var/ipfire/red/dns + unbound-control -q forward ${broken_forwarders} + return 0 + fi fi fi @@ -370,6 +391,42 @@ ns_determine_edns_buffer_size() { return 1 } +get_root_nameservers() { + while read -r hostname ttl record address; do + # Searching for A records + [ "${record}" = "A" ] || continue + + echo "${address}" + done < /etc/unbound/root.hints +} + +can_resolve_root() { + local ns + for ns in $(get_root_nameservers); do + if dig @${ns} +dnssec SOA . $@ >/dev/null; then + return 0 + fi + done + + # none of the servers was reachable + return 1 +} + +enable_dnssec() { + local status=$(unbound-control get_option val-permissive-mode) + + # Don't do anything if DNSSEC is already activated + [ "${status}" = "no" ] && return 0 + + # Activate DNSSEC and flush cache with any stale and unvalidated data + unbound-control -q set_option val-permissive-mode: no + unbound-control -q flush_zone . +} + +disable_dnssec() { + unbound-control -q set_option val-permissive-mode: yes +} + case "$1" in start) # Print a nicer messagen when unbound is already running diff --git a/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch b/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch new file mode 100644 index 000000000..f476d0803 --- /dev/null +++ b/src/patches/unbound-allow-setting-validator-permissive-mode-at-runtime.patch @@ -0,0 +1,43 @@ +diff --git a/validator/validator.c b/validator/validator.c +index 676dcdf..7c19f3d 100644 +--- a/validator/validator.c ++++ b/validator/validator.c +@@ -113,7 +113,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, + int c; + val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; + val_env->clean_additional = cfg->val_clean_additional; +- val_env->permissive_mode = cfg->val_permissive_mode; ++ val_env->permissive_mode = &cfg->val_permissive_mode; + if(!env->anchors) + env->anchors = anchors_create(); + if(!env->anchors) { +@@ -170,7 +170,6 @@ val_init(struct module_env* env, int id) + } + env->modinfo[id] = (void*)val_env; + env->need_to_validate = 1; +- val_env->permissive_mode = 0; + lock_basic_init(&val_env->bogus_lock); + lock_protect(&val_env->bogus_lock, &val_env->num_rrset_bogus, + sizeof(val_env->num_rrset_bogus)); +@@ -2084,7 +2083,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, + } + } + /* If we are in permissive mode, bogus gets indeterminate */ +- if(ve->permissive_mode) ++ if(*ve->permissive_mode) + vq->orig_msg->rep->security = sec_status_indeterminate; + } + +diff --git a/validator/validator.h b/validator/validator.h +index 23d3072..f8464b8 100644 +--- a/validator/validator.h ++++ b/validator/validator.h +@@ -104,7 +104,7 @@ struct val_env { + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ +- int permissive_mode; ++ int* permissive_mode; + + /** + * Number of entries in the NSEC3 maximum iteration count table. From c016773b9816ad9be4ffc8643c30457e87c094e3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Feb 2017 11:32:08 +0000 Subject: [PATCH 156/464] apache: Allow more processes/connections as the same time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In large networks, when ever multiple clients connect at the same time and request the proxy.pac configuration file, apache rate-limited requests so that some clients did not get a response and therefore could not connect to the Internet. This allows apache to handle more connections at the same time. Suggested-by: Thoralf Söldenwagner Signed-off-by: Michael Tremer --- config/httpd/server-tuning.conf | 5 ++--- config/rootfiles/core/110/filelists/files | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/httpd/server-tuning.conf b/config/httpd/server-tuning.conf index 183ce80fa..8f1eae5a2 100644 --- a/config/httpd/server-tuning.conf +++ b/config/httpd/server-tuning.conf @@ -19,9 +19,8 @@ KeepAliveTimeout 15 MinSpareServers 1 MaxSpareServers 10 -StartServers 1 -MaxClients 10 -MaxRequestsPerChild 100 +StartServers 2 +MaxClients 1000 # # The following directives modify normal HTTP response behavior to diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index f4ce9898e..b996e48aa 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -1,5 +1,6 @@ etc/system-release etc/issue +etc/httpd/conf/server-tuning.conf etc/rc.d/init.d/unbound srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi From 9a05980e552f21a91c0141990a3e4581be89d914 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 28 Feb 2017 14:06:28 +0100 Subject: [PATCH 157/464] lm_sensors: Update to 3.4.0 For details see: https://github.com/groeck/lm-sensors/blob/master/CHANGES Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/armv5tel/lm_sensors | 3 ++- config/rootfiles/common/i586/lm_sensors | 3 ++- config/rootfiles/common/x86_64/lm_sensors | 3 ++- lfs/lm_sensors | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/config/rootfiles/common/armv5tel/lm_sensors b/config/rootfiles/common/armv5tel/lm_sensors index 4d17590b6..998b02e9f 100644 --- a/config/rootfiles/common/armv5tel/lm_sensors +++ b/config/rootfiles/common/armv5tel/lm_sensors @@ -8,7 +8,7 @@ usr/bin/sensors-conf-convert #usr/lib/libsensors.a usr/lib/libsensors.so usr/lib/libsensors.so.4 -usr/lib/libsensors.so.4.3.2 +usr/lib/libsensors.so.4.4.0 #usr/man/man1/sensors.1 #usr/man/man3/libsensors.3 #usr/man/man5/sensors.conf.5 @@ -17,6 +17,7 @@ usr/lib/libsensors.so.4.3.2 #usr/man/man8/isadump.8 #usr/man/man8/isaset.8 #usr/man/man8/pwmconfig.8 +#usr/man/man8/sensors-conf-convert.8 #usr/man/man8/sensors-detect.8 usr/sbin/fancontrol usr/sbin/pwmconfig diff --git a/config/rootfiles/common/i586/lm_sensors b/config/rootfiles/common/i586/lm_sensors index f23b97c2b..9936e0466 100644 --- a/config/rootfiles/common/i586/lm_sensors +++ b/config/rootfiles/common/i586/lm_sensors @@ -8,7 +8,7 @@ usr/bin/sensors-conf-convert #usr/lib/libsensors.a usr/lib/libsensors.so usr/lib/libsensors.so.4 -usr/lib/libsensors.so.4.3.2 +usr/lib/libsensors.so.4.4.0 #usr/man/man1/sensors.1 #usr/man/man3/libsensors.3 #usr/man/man5/sensors.conf.5 @@ -17,6 +17,7 @@ usr/lib/libsensors.so.4.3.2 #usr/man/man8/isadump.8 #usr/man/man8/isaset.8 #usr/man/man8/pwmconfig.8 +#usr/man/man8/sensors-conf-convert.8 #usr/man/man8/sensors-detect.8 usr/sbin/fancontrol usr/sbin/isadump diff --git a/config/rootfiles/common/x86_64/lm_sensors b/config/rootfiles/common/x86_64/lm_sensors index f23b97c2b..9936e0466 100644 --- a/config/rootfiles/common/x86_64/lm_sensors +++ b/config/rootfiles/common/x86_64/lm_sensors @@ -8,7 +8,7 @@ usr/bin/sensors-conf-convert #usr/lib/libsensors.a usr/lib/libsensors.so usr/lib/libsensors.so.4 -usr/lib/libsensors.so.4.3.2 +usr/lib/libsensors.so.4.4.0 #usr/man/man1/sensors.1 #usr/man/man3/libsensors.3 #usr/man/man5/sensors.conf.5 @@ -17,6 +17,7 @@ usr/lib/libsensors.so.4.3.2 #usr/man/man8/isadump.8 #usr/man/man8/isaset.8 #usr/man/man8/pwmconfig.8 +#usr/man/man8/sensors-conf-convert.8 #usr/man/man8/sensors-detect.8 usr/sbin/fancontrol usr/sbin/isadump diff --git a/lfs/lm_sensors b/lfs/lm_sensors index f343a2fad..2c4d2efc1 100644 --- a/lfs/lm_sensors +++ b/lfs/lm_sensors @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.3.4 +VER = 3.4.0 THISAPP = lm_sensors-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 60cfb98ab7a8915c3ac684af5459de2e +$(DL_FILE)_MD5 = c03675ae9d43d60322110c679416901a install : $(TARGET) From f809bfb9673a9a9d027ebe5983c4c9ff5fe4e2e7 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Feb 2017 14:03:40 +0000 Subject: [PATCH 158/464] core110: Ship updated lm_sensors Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/armv5tel/lm_sensors | 1 + config/rootfiles/core/110/filelists/i586/lm_sensors | 1 + config/rootfiles/core/110/filelists/x86_64/lm_sensors | 1 + 3 files changed, 3 insertions(+) create mode 120000 config/rootfiles/core/110/filelists/armv5tel/lm_sensors create mode 120000 config/rootfiles/core/110/filelists/i586/lm_sensors create mode 120000 config/rootfiles/core/110/filelists/x86_64/lm_sensors diff --git a/config/rootfiles/core/110/filelists/armv5tel/lm_sensors b/config/rootfiles/core/110/filelists/armv5tel/lm_sensors new file mode 120000 index 000000000..eec84cd56 --- /dev/null +++ b/config/rootfiles/core/110/filelists/armv5tel/lm_sensors @@ -0,0 +1 @@ +../../../../common/armv5tel/lm_sensors \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/i586/lm_sensors b/config/rootfiles/core/110/filelists/i586/lm_sensors new file mode 120000 index 000000000..b7f0101c8 --- /dev/null +++ b/config/rootfiles/core/110/filelists/i586/lm_sensors @@ -0,0 +1 @@ +../../../../common/i586//lm_sensors \ No newline at end of file diff --git a/config/rootfiles/core/110/filelists/x86_64/lm_sensors b/config/rootfiles/core/110/filelists/x86_64/lm_sensors new file mode 120000 index 000000000..fd435d44b --- /dev/null +++ b/config/rootfiles/core/110/filelists/x86_64/lm_sensors @@ -0,0 +1 @@ +../../../../common/x86_64//lm_sensors \ No newline at end of file From 76589562ea8921d8d5b5f009f568c67a5be41e7c Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:04:36 +0100 Subject: [PATCH 159/464] tftpd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/tftpd | 2 ++ src/initscripts/{init.d => packages}/tftpd | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/tftpd (100%) diff --git a/lfs/tftpd b/lfs/tftpd index 2ebf84a95..e0cd93bda 100644 --- a/lfs/tftpd +++ b/lfs/tftpd @@ -81,5 +81,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install mv -fv /usr/sbin/in.tftpd /usr/sbin/tftpd + #install initscripts + $(call INSTALL_INITSCRIPT,tftpd) @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/tftpd b/src/initscripts/packages/tftpd similarity index 100% rename from src/initscripts/init.d/tftpd rename to src/initscripts/packages/tftpd From ff0f73305cc7ae85cc18b1e3500285c47597bb23 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:05:55 +0100 Subject: [PATCH 160/464] rtpproxy: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/rtpproxy | 2 ++ src/initscripts/{init.d => packages}/rtpproxy | 0 2 files changed, 2 insertions(+) rename src/initscripts/{init.d => packages}/rtpproxy (100%) diff --git a/lfs/rtpproxy b/lfs/rtpproxy index 88715dd78..be276c6dc 100644 --- a/lfs/rtpproxy +++ b/lfs/rtpproxy @@ -80,6 +80,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + #install initscripts + $(call INSTALL_INITSCRIPT,rtpproxy) @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/rtpproxy b/src/initscripts/packages/rtpproxy similarity index 100% rename from src/initscripts/init.d/rtpproxy rename to src/initscripts/packages/rtpproxy From 746b72fea87b21ac18730adb20b8d2cf0500a9d8 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:06:52 +0100 Subject: [PATCH 161/464] fetchmail: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/fetchmail | 4 ++++ src/initscripts/{init.d => packages}/fetchmail | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/fetchmail (100%) diff --git a/lfs/fetchmail b/lfs/fetchmail index 66b9a65b0..ab271b002 100644 --- a/lfs/fetchmail +++ b/lfs/fetchmail @@ -96,5 +96,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/fetchmail \ /var/ipfire/backup/addons/includes/fetchmail + #install initscripts + $(call INSTALL_INITSCRIPT,fetchmail) + + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/fetchmail b/src/initscripts/packages/fetchmail similarity index 100% rename from src/initscripts/init.d/fetchmail rename to src/initscripts/packages/fetchmail From 8bcca7ca0a042e94e030f03492becd0026afad02 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:08:43 +0100 Subject: [PATCH 162/464] lcr: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/lcr | 3 +++ src/initscripts/{init.d => packages}/lcr | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/lcr (100%) diff --git a/lfs/lcr b/lfs/lcr index 321be97ed..7ada81ddb 100644 --- a/lfs/lcr +++ b/lfs/lcr @@ -91,5 +91,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) /var/ipfire/lcr/routing.conf install -v -m 644 $(DIR_SRC)/config/backup/includes/lcr \ /var/ipfire/backup/addons/includes/lcr + #install initscripts + $(call INSTALL_INITSCRIPT,lcr) + @rm -rf $(DIR_SRC)/lcr @$(POSTBUILD) diff --git a/src/initscripts/init.d/lcr b/src/initscripts/packages/lcr similarity index 100% rename from src/initscripts/init.d/lcr rename to src/initscripts/packages/lcr From 89760da44254a7eb74ab0cee02c93763a036e50f Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:10:24 +0100 Subject: [PATCH 163/464] spamassassin: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/spamassassin | 4 ++++ src/initscripts/{init.d => packages}/spamassassin | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/spamassassin (100%) diff --git a/lfs/spamassassin b/lfs/spamassassin index 02d60fe05..75944a78c 100644 --- a/lfs/spamassassin +++ b/lfs/spamassassin @@ -80,5 +80,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && yes 'n' | perl Makefile.PL cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,spamassassin) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/spamassassin b/src/initscripts/packages/spamassassin similarity index 100% rename from src/initscripts/init.d/spamassassin rename to src/initscripts/packages/spamassassin From 896209f6f147d6213fe790c2e6e538440fa66612 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:11:59 +0100 Subject: [PATCH 164/464] mpd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/mpd | 4 ++++ src/initscripts/{init.d => packages}/mpd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/mpd (100%) diff --git a/lfs/mpd b/lfs/mpd index 7b2c54d0a..681b5c994 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -86,4 +86,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) touch /var/log/mpd.error.log touch /var/log/mpd.log + + #install initscripts + $(call INSTALL_INITSCRIPT,mpd) + @$(POSTBUILD) diff --git a/src/initscripts/init.d/mpd b/src/initscripts/packages/mpd similarity index 100% rename from src/initscripts/init.d/mpd rename to src/initscripts/packages/mpd From 7d9b033b79af8124853a0aac6992389ea8595172 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Wed, 1 Mar 2017 13:13:36 +0100 Subject: [PATCH 165/464] sslh: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/sslh | 4 ++++ src/initscripts/{init.d => packages}/sslh | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/sslh (100%) diff --git a/lfs/sslh b/lfs/sslh index f4201c335..8262a5fc6 100644 --- a/lfs/sslh +++ b/lfs/sslh @@ -79,5 +79,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make CFLAGS="$(CFLAGS)" $(MAKETUNING) cd $(DIR_APP) && install -v -m 755 sslh /usr/sbin + + #install initscripts + $(call INSTALL_INITSCRIPT,sslh) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/sslh b/src/initscripts/packages/sslh similarity index 100% rename from src/initscripts/init.d/sslh rename to src/initscripts/packages/sslh From 5021ee33de34ca1cfb4747c9741f7ac6bd08f9e7 Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Fri, 3 Mar 2017 10:40:41 +0100 Subject: [PATCH 166/464] BUG11296: Fix build on EFI systems fixes: #11296 Signed-off-by: Alexander Marx Signed-off-by: Michael Tremer --- lfs/flash-images | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/flash-images b/lfs/flash-images index d10fc9bbf..4a1a4d6aa 100644 --- a/lfs/flash-images +++ b/lfs/flash-images @@ -193,7 +193,7 @@ endif -e "s/root=[A-Za-z0-9\/=-]*/root=UUID=$$(blkid -o value -s UUID $(PART_ROOT))/g" # Install GRUB - grub-install --force --recheck --no-floppy \ + grub-install --force --recheck --no-floppy --target=i386-pc \ --root-directory=$(MNThdd) $(DEVICE) endif From f09be2a5350b53ec191dcdebe4c105e7835022e5 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 14:57:55 +0100 Subject: [PATCH 167/464] vdr: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/vdr | 3 +++ src/initscripts/{init.d => packages}/vdr | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/vdr (100%) diff --git a/lfs/vdr b/lfs/vdr index 52ecdd543..99e81048a 100644 --- a/lfs/vdr +++ b/lfs/vdr @@ -131,6 +131,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ln -svf ../../include/vdr/config.h /usr/lib/vdr/config.h ln -svf ../../include/vdr/device.h /usr/lib/vdr/device.h + #install initscripts + $(call INSTALL_INITSCRIPT,vdr) + # Install start links and backup include file. ln -sf ../init.d/vdr /etc/rc.d/rc3.d/S60vdr ln -sf ../init.d/vdr /etc/rc.d/rc0.d/K40vdr diff --git a/src/initscripts/init.d/vdr b/src/initscripts/packages/vdr similarity index 100% rename from src/initscripts/init.d/vdr rename to src/initscripts/packages/vdr From da6608ef68b8f7beee31a3d957c3e986d4d54a26 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 14:58:49 +0100 Subject: [PATCH 168/464] vdradmin: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/vdradmin | 4 ++++ src/initscripts/{init.d => packages}/vdradmin | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/vdradmin (100%) diff --git a/lfs/vdradmin b/lfs/vdradmin index b38ecca4d..bca5c5835 100644 --- a/lfs/vdradmin +++ b/lfs/vdradmin @@ -81,6 +81,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) export "LANG=de_DE" cp $(DIR_SRC)/config/vdradmin/install-ipfire.sh $(DIR_APP)/ cd $(DIR_APP) && ./install-ipfire.sh + + #install initscripts + $(call INSTALL_INITSCRIPT,vdradmin) + install -v -m 644 $(DIR_SRC)/config/vdradmin/vdradmind.conf \ /etc/vdradmin/vdradmind.conf mkdir -pv /var/log/vdradmin diff --git a/src/initscripts/init.d/vdradmin b/src/initscripts/packages/vdradmin similarity index 100% rename from src/initscripts/init.d/vdradmin rename to src/initscripts/packages/vdradmin From 112fb61b69f58f23b978cdd2982a57644e8e79dd Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 14:59:58 +0100 Subject: [PATCH 169/464] lcdproc: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/lcdproc | 4 ++++ src/initscripts/{init.d => packages}/lcdproc | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/lcdproc (100%) diff --git a/lfs/lcdproc b/lfs/lcdproc index 83b24376c..e408294dc 100644 --- a/lfs/lcdproc +++ b/lfs/lcdproc @@ -93,6 +93,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make install -mkdir -pv /etc/lcdproc cp -vf $(DIR_SRC)/config/lcdproc/{LCDd,lcdproc}.conf /etc/lcdproc + + #install initscripts + $(call INSTALL_INITSCRIPT,lcdproc) + ln -sf ../init.d/lcdproc /etc/rc.d/rc3.d/S60lcdproc ln -sf ../init.d/lcdproc /etc/rc.d/rc0.d/K40lcdproc ln -sf ../init.d/lcdproc /etc/rc.d/rc6.d/K40lcdproc diff --git a/src/initscripts/init.d/lcdproc b/src/initscripts/packages/lcdproc similarity index 100% rename from src/initscripts/init.d/lcdproc rename to src/initscripts/packages/lcdproc From 41e5aa4a8809a199dd120cb913270b561bce6a94 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:06:55 +0100 Subject: [PATCH 170/464] dbus: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/dbus | 4 ++++ src/initscripts/{init.d => packages}/messagebus | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/messagebus (100%) diff --git a/lfs/dbus b/lfs/dbus index 3a431066a..fdbad474b 100644 --- a/lfs/dbus +++ b/lfs/dbus @@ -82,5 +82,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,messagebus) + @rm -rf $(DIR_SRC)/dbus* @$(POSTBUILD) diff --git a/src/initscripts/init.d/messagebus b/src/initscripts/packages/messagebus similarity index 100% rename from src/initscripts/init.d/messagebus rename to src/initscripts/packages/messagebus From e5379b19813b57c337b00ac0c37c48ad606854d5 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:10:22 +0100 Subject: [PATCH 171/464] netsnmpd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/netsnmpd | 5 ++++- src/initscripts/{init.d => packages}/netsnmpd | 0 2 files changed, 4 insertions(+), 1 deletion(-) rename src/initscripts/{init.d => packages}/netsnmpd (100%) diff --git a/lfs/netsnmpd b/lfs/netsnmpd index b51367855..1e59457bd 100644 --- a/lfs/netsnmpd +++ b/lfs/netsnmpd @@ -90,7 +90,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m644 $(DIR_SRC)/config/netsnmpd/snmpd.conf /etc/snmpd.conf install -v -m 644 $(DIR_SRC)/config/backup/includes/netsnmpd \ /var/ipfire/backup/addons/includes/netsnmpd - install -v -m755 $(DIR_SRC)/src/initscripts/init.d/netsnmpd /etc/init.d/netsnmpd + + #install initscripts + $(call INSTALL_INITSCRIPT,netsnmpd) + ln -sf ../init.d/netsnmpd /etc/rc.d/rc3.d/S65netsnmpd ln -sf ../init.d/netsnmpd /etc/rc.d/rc0.d/K02netsnmpd ln -sf ../init.d/netsnmpd /etc/rc.d/rc6.d/K02netsnmpd diff --git a/src/initscripts/init.d/netsnmpd b/src/initscripts/packages/netsnmpd similarity index 100% rename from src/initscripts/init.d/netsnmpd rename to src/initscripts/packages/netsnmpd From 9f312b3dde6578c6a3710694ec2e1df3ae677a9a Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:12:38 +0100 Subject: [PATCH 172/464] lcd4linux: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/lcd4linux | 4 ++++ src/initscripts/{init.d => packages}/lcd4linux | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/lcd4linux (100%) diff --git a/lfs/lcd4linux b/lfs/lcd4linux index a736381fe..31bcf12e6 100644 --- a/lfs/lcd4linux +++ b/lfs/lcd4linux @@ -80,6 +80,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && ./configure --with-plugins=all,!qnaplog,!dbus --prefix=/usr cd $(DIR_APP) && make cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,lcd4linux) + install -v -m 644 $(DIR_SRC)/config/backup/includes/lcd4linux /var/ipfire/backup/addons/includes/lcd4linux @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/lcd4linux b/src/initscripts/packages/lcd4linux similarity index 100% rename from src/initscripts/init.d/lcd4linux rename to src/initscripts/packages/lcd4linux From 4fa43dd1009a24083db4c8e075ba09d115530c3f Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:15:47 +0100 Subject: [PATCH 173/464] vsftpd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/vsftpd | 4 ++++ src/initscripts/{init.d => packages}/vsftpd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/vsftpd (100%) diff --git a/lfs/vsftpd b/lfs/vsftpd index 7284be961..07dda3098 100644 --- a/lfs/vsftpd +++ b/lfs/vsftpd @@ -87,6 +87,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && install -v -m 644 vsftpd.conf.5 /usr/share/man/man5 cd $(DIR_APP) && install -v -m 644 $(DIR_SRC)/config/vsftpd/vsftpd.conf /etc cd $(DIR_APP) && install -v -m 644 $(DIR_SRC)/config/vsftpd/vsftpd.user_list /etc + + #install initscripts + $(call INSTALL_INITSCRIPT,vsftpd) + ln -sf ../init.d/vsftpd /etc/rc.d/rc3.d/S65vsftpd ln -sf ../init.d/vsftpd /etc/rc.d/rc0.d/K35vsftpd ln -sf ../init.d/vsftpd /etc/rc.d/rc6.d/K35vsftpd diff --git a/src/initscripts/init.d/vsftpd b/src/initscripts/packages/vsftpd similarity index 100% rename from src/initscripts/init.d/vsftpd rename to src/initscripts/packages/vsftpd From da5c2f96303d544989f39dda6561964578a41034 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:18:42 +0100 Subject: [PATCH 174/464] gnump3d: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/gnump3d | 4 ++++ src/initscripts/{init.d => packages}/gnump3d | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/gnump3d (100%) diff --git a/lfs/gnump3d b/lfs/gnump3d index ca14c27e9..0022b4e6d 100644 --- a/lfs/gnump3d +++ b/lfs/gnump3d @@ -91,5 +91,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown nobody.nobody /var/mp3 install -m 644 $(DIR_SRC)/config/gnump3d/gnump3d.conf /etc/gnump3d/ ln -sf /usr/bin/gnump3d-index /etc/fcron.daily/gnump3d-index + + #install initscripts + $(call INSTALL_INITSCRIPT,gnump3d) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/gnump3d b/src/initscripts/packages/gnump3d similarity index 100% rename from src/initscripts/init.d/gnump3d rename to src/initscripts/packages/gnump3d From dd1884ddb309b2bdee985f0805ab893bac1e45bd Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 15:35:54 +0100 Subject: [PATCH 175/464] imspector: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/imspector | 3 +++ src/initscripts/{init.d => packages}/imspector | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/imspector (100%) diff --git a/lfs/imspector b/lfs/imspector index 5cea87279..d4aa9b1e0 100644 --- a/lfs/imspector +++ b/lfs/imspector @@ -91,5 +91,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod 755 /srv/web/ipfire/cgi-bin/imspector.cgi chown nobody:nobody -R /var/log/imspector + #install initscripts + $(call INSTALL_INITSCRIPT,imspector) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/imspector b/src/initscripts/packages/imspector similarity index 100% rename from src/initscripts/init.d/imspector rename to src/initscripts/packages/imspector From de63e05b49ae04b883e1c5b6d628cd9fba923408 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:31:51 +0100 Subject: [PATCH 176/464] mediatomb: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/mediatomb | 4 ++++ src/initscripts/{init.d => packages}/mediatomb | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/mediatomb (100%) diff --git a/lfs/mediatomb b/lfs/mediatomb index 5811a0ad6..c36710a27 100644 --- a/lfs/mediatomb +++ b/lfs/mediatomb @@ -85,5 +85,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/mediatomb \ /var/ipfire/backup/addons/includes/mediatomb echo Folder for music files > /var/mp3/info + + #install initscripts + $(call INSTALL_INITSCRIPT,mediatomb) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/mediatomb b/src/initscripts/packages/mediatomb similarity index 100% rename from src/initscripts/init.d/mediatomb rename to src/initscripts/packages/mediatomb From 586761dd73fa21f39b22f0cb8b5d1112cfb7ce64 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:32:53 +0100 Subject: [PATCH 177/464] monit: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/monit | 3 +++ src/initscripts/{init.d => packages}/monit | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/monit (100%) diff --git a/lfs/monit b/lfs/monit index 2735e15fb..cfa9699a8 100644 --- a/lfs/monit +++ b/lfs/monit @@ -89,6 +89,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Install default configuration install -v -m 600 $(DIR_SRC)/config/monit/monitrc /etc + #install initscripts + $(call INSTALL_INITSCRIPT,monit) + # Install start links and backup include file. ln -sf ../init.d/monit /etc/rc.d/rc3.d/S60monit ln -sf ../init.d/monit /etc/rc.d/rc0.d/K40monit diff --git a/src/initscripts/init.d/monit b/src/initscripts/packages/monit similarity index 100% rename from src/initscripts/init.d/monit rename to src/initscripts/packages/monit From a5754e5da1830180d488306b10d3688babd6a4b8 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:34:09 +0100 Subject: [PATCH 178/464] cyrus-imapd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/cyrus-imapd | 4 ++++ src/initscripts/{init.d => packages}/cyrus-imapd | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/cyrus-imapd (100%) diff --git a/lfs/cyrus-imapd b/lfs/cyrus-imapd index f4c855c76..e6452aef9 100644 --- a/lfs/cyrus-imapd +++ b/lfs/cyrus-imapd @@ -105,5 +105,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown cyrus.mail /var/imap/socket install -v -m 644 $(DIR_SRC)/config/backup/includes/cyrus-imapd \ /var/ipfire/backup/addons/includes/cyrus-imapd + + #install initscripts + $(call INSTALL_INITSCRIPT,cyrus-imapd) + @rm -rf $(DIR_APP) /usr/include/com_err.h @$(POSTBUILD) diff --git a/src/initscripts/init.d/cyrus-imapd b/src/initscripts/packages/cyrus-imapd similarity index 100% rename from src/initscripts/init.d/cyrus-imapd rename to src/initscripts/packages/cyrus-imapd From 7e8a2556e55f3023e257348dae447321c0034870 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:35:36 +0100 Subject: [PATCH 179/464] miau: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/miau | 4 ++++ src/initscripts/{init.d => packages}/miau | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/miau (100%) diff --git a/lfs/miau b/lfs/miau index c3ca754be..8106587db 100644 --- a/lfs/miau +++ b/lfs/miau @@ -85,6 +85,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) mkdir /opt/miau/config install -v -m 640 $(DIR_SRC)/config/miau/miaurc \ /opt/miau/config/miaurc + + #install initscripts + $(call INSTALL_INITSCRIPT,miau) + ln -sf ../init.d/miau /etc/rc.d/rc3.d/S60miau ln -sf ../init.d/miau /etc/rc.d/rc0.d/K01miau ln -sf ../init.d/miau /etc/rc.d/rc6.d/K01miau diff --git a/src/initscripts/init.d/miau b/src/initscripts/packages/miau similarity index 100% rename from src/initscripts/init.d/miau rename to src/initscripts/packages/miau From 9016d19e0e22c14974f2283c5661f9c2fe17ab6c Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:36:36 +0100 Subject: [PATCH 180/464] minidlna: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/minidlna | 4 ++++ src/initscripts/{init.d => packages}/minidlna | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/minidlna (100%) diff --git a/lfs/minidlna b/lfs/minidlna index 1c3f61c42..3302cdd5c 100644 --- a/lfs/minidlna +++ b/lfs/minidlna @@ -83,5 +83,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Install configuration. install -m 644 $(DIR_SRC)/config/minidlna/minidlna.conf /etc + + #install initscripts + $(call INSTALL_INITSCRIPT,minidlna) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/minidlna b/src/initscripts/packages/minidlna similarity index 100% rename from src/initscripts/init.d/minidlna rename to src/initscripts/packages/minidlna From bd2a7a8fd3ab37d3d2f28a56494e147005902ead Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:37:41 +0100 Subject: [PATCH 181/464] miniupnpd: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/miniupnpd | 3 +++ src/initscripts/{init.d => packages}/miniupnpd | 0 2 files changed, 3 insertions(+) rename src/initscripts/{init.d => packages}/miniupnpd (100%) diff --git a/lfs/miniupnpd b/lfs/miniupnpd index 18b8c393b..0e2c890ba 100644 --- a/lfs/miniupnpd +++ b/lfs/miniupnpd @@ -81,5 +81,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) -mkdir -pv /etc/miniupnpd cp -vf $(DIR_SRC)/config/miniupnpd/miniupnpd.conf /etc/miniupnpd/miniupnpd.conf + #install initscripts + $(call INSTALL_INITSCRIPT,miniupnpd) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/miniupnpd b/src/initscripts/packages/miniupnpd similarity index 100% rename from src/initscripts/init.d/miniupnpd rename to src/initscripts/packages/miniupnpd From edda4a223bba278c24ac093baed89249d0b30083 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:45:44 +0100 Subject: [PATCH 182/464] cyrus-sasl: move initscript to src/initscripts/packages and use new macro Signed-off-by: Jonatan Schlag --- lfs/cyrus-sasl | 4 ++++ src/initscripts/{init.d => packages}/cyrus-sasl | 0 2 files changed, 4 insertions(+) rename src/initscripts/{init.d => packages}/cyrus-sasl (100%) diff --git a/lfs/cyrus-sasl b/lfs/cyrus-sasl index 84f49d935..757f7426b 100644 --- a/lfs/cyrus-sasl +++ b/lfs/cyrus-sasl @@ -96,6 +96,10 @@ ifeq "$(PASS)" "" install -v -m700 -d /var/lib/sasl -mkdir /var/run/saslauthd cp -vf $(DIR_SRC)/config/cyrus-sasl/smtpd.conf /usr/lib/sasl2/ + + #install initscripts + $(call INSTALL_INITSCRIPT,cyrus-sasl) + else # WITH LDAP SUPPORT AT THIS TIME cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ diff --git a/src/initscripts/init.d/cyrus-sasl b/src/initscripts/packages/cyrus-sasl similarity index 100% rename from src/initscripts/init.d/cyrus-sasl rename to src/initscripts/packages/cyrus-sasl From 530188483521ffe055141c635530cf4e80955374 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 3 Mar 2017 16:46:35 +0100 Subject: [PATCH 183/464] Remove unused applejuice script Signed-off-by: Jonatan Schlag --- src/initscripts/init.d/applejuice | 53 ------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 src/initscripts/init.d/applejuice diff --git a/src/initscripts/init.d/applejuice b/src/initscripts/init.d/applejuice deleted file mode 100644 index d8bbc8c50..000000000 --- a/src/initscripts/init.d/applejuice +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -######################################################################## -# Begin $rc_base/init.d/applejuice -# -# Description : Applejuice Init script -# -# Authors : Michael Tremer - www.ipfire.org -# -# Version : 01.00 -# -# Notes : -# -######################################################################## - -. /etc/sysconfig/rc -. ${rc_functions} -eval $(/usr/local/bin/readhash /var/ipfire/applejuice/settings) - - -case "${1}" in - start) - boot_mesg "Starting Applejuice Core..." - cd /opt/applejuice - screen -dmS ajcore /usr/bin/java -Xmx${RAMSIZE} -Djava.library.path=. -jar ajcore.jar - evaluate_retval - ;; - - stop) - boot_mesg "Stopping Applejuice Core..." - killproc /usr/bin/java - ;; - - restart) - ${0} stop - sleep 1 - ${0} start - ;; - - status) - statusproc /usr/bin/java - ;; - - core) - screen -x ajcore - ;; - - *) - echo "Usage: ${0} {start|stop|restart|status|core}" - exit 1 - ;; -esac - -# End $rc_base/init.d/applejuice From 198b6f65d43905a4586aa7cf37f142264a8e4f5b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 5 Mar 2017 00:43:44 +0100 Subject: [PATCH 184/464] conntrack-tools: Update to 1.4.4 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/conntrack-tools | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/conntrack-tools b/lfs/conntrack-tools index d9a60bcfc..d8a1099a7 100644 --- a/lfs/conntrack-tools +++ b/lfs/conntrack-tools @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.4.2 +VER = 1.4.4 THISAPP = conntrack-tools-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b1f9d006e7bf000a77395ff7cd3fac16 +$(DL_FILE)_MD5 = acd9e0b27cf16ae3092ba900e4d7560e install : $(TARGET) From f07f9c8ed3b543f804670baac900c630f491e2ac Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 5 Mar 2017 18:19:18 +0100 Subject: [PATCH 185/464] nettle: Update to 3.3 Added '--disable-documentation' because we don't need this. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/nettle | 7 +++---- lfs/nettle | 12 +++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/config/rootfiles/common/nettle b/config/rootfiles/common/nettle index 5d5777b18..3f23cb70a 100644 --- a/config/rootfiles/common/nettle +++ b/config/rootfiles/common/nettle @@ -39,6 +39,7 @@ #usr/include/nettle/md4.h #usr/include/nettle/md5-compat.h #usr/include/nettle/md5.h +#usr/include/nettle/memops.h #usr/include/nettle/memxor.h #usr/include/nettle/nettle-meta.h #usr/include/nettle/nettle-stdint.h @@ -63,11 +64,9 @@ #usr/include/nettle/yarrow.h usr/lib/libhogweed.so usr/lib/libhogweed.so.4 -usr/lib/libhogweed.so.4.2 +usr/lib/libhogweed.so.4.3 #usr/lib/libnettle.so usr/lib/libnettle.so.6 -usr/lib/libnettle.so.6.2 +usr/lib/libnettle.so.6.3 #usr/lib/pkgconfig/hogweed.pc #usr/lib/pkgconfig/nettle.pc -usr/share/doc/nettle-3.2 -#usr/share/info/nettle.info diff --git a/lfs/nettle b/lfs/nettle index d0a3e5a2b..96f0e32ab 100644 --- a/lfs/nettle +++ b/lfs/nettle @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2015 IPFire Team # +# Copyright (C) 2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.2 +VER = 3.3 THISAPP = nettle-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = afb15b4764ebf1b4e6d06c62bd4d29e4 +$(DL_FILE)_MD5 = 10f969f78a463704ae73529978148dbe install : $(TARGET) @@ -70,10 +70,12 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-static + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-documentation \ + --disable-static cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install chmod -v 755 /usr/lib/lib{hogweed,nettle}.so - install -v -m755 -d /usr/share/doc/nettle-3.2 @rm -rf $(DIR_APP) @$(POSTBUILD) From 6006aa84d7770857cbee4d7b9aa65f69ec5b715d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 5 Mar 2017 18:14:33 +0000 Subject: [PATCH 186/464] core110: Ship updated nettle Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/nettle | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/110/filelists/nettle diff --git a/config/rootfiles/core/110/filelists/nettle b/config/rootfiles/core/110/filelists/nettle new file mode 120000 index 000000000..f0dba7ac8 --- /dev/null +++ b/config/rootfiles/core/110/filelists/nettle @@ -0,0 +1 @@ +../../../common/nettle \ No newline at end of file From 2bfd31a26187d65236ee6e0a0d22def30e25b0e5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 5 Mar 2017 18:14:50 +0000 Subject: [PATCH 187/464] core110: Ship updated conntrack-tools Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/conntrack-tools | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/110/filelists/conntrack-tools diff --git a/config/rootfiles/core/110/filelists/conntrack-tools b/config/rootfiles/core/110/filelists/conntrack-tools new file mode 120000 index 000000000..88fbe061e --- /dev/null +++ b/config/rootfiles/core/110/filelists/conntrack-tools @@ -0,0 +1 @@ +../../../common/conntrack-tools \ No newline at end of file From 713151aaa8a4d3af467081912bca7991db4d5af6 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Mon, 6 Mar 2017 17:25:10 +0100 Subject: [PATCH 188/464] Strongswan: Remove unnecessary commands concern initscripts It is not necessary to copy the init scripts and remove the symlinks for runnlevel interaction. Signed-off-by: Jonatan Schlag --- lfs/strongswan | 2 -- 1 file changed, 2 deletions(-) diff --git a/lfs/strongswan b/lfs/strongswan index 9e8f155e6..0af9e9dbe 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -108,8 +108,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Remove all library files we don't want or need. rm -vf /usr/lib/ipsec/plugins/*.{,l}a - -rm -rfv /etc/rc*.d/*ipsec - cd $(DIR_SRC) && cp src/initscripts/init.d/ipsec /etc/rc.d/init.d/ipsec rm -f /etc/ipsec.conf /etc/ipsec.secrets ln -sf $(CONFIG_ROOT)/vpn/ipsec.conf /etc/ipsec.conf ln -sf $(CONFIG_ROOT)/vpn/ipsec.secrets /etc/ipsec.secrets From ad898e7f46ef659a639ea23768ffd394057a7064 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Mon, 6 Mar 2017 17:31:10 +0100 Subject: [PATCH 189/464] Move the position of the initscripts lfs in the build process We need the directory /etc/rc.d/init.d earlier in the build process because the initscripts are copied in the lfs files like in lfs/mysql Signed-off-by: Jonatan Schlag --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index f5e792a9a..24ea77711 100755 --- a/make.sh +++ b/make.sh @@ -393,6 +393,7 @@ buildipfire() { LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE ipfiremake configroot + ipfiremake initscripts ipfiremake backup ipfiremake pkg-config ipfiremake libusb @@ -563,7 +564,6 @@ buildipfire() { ipfiremake hdparm ipfiremake sdparm ipfiremake mtools - ipfiremake initscripts ipfiremake whatmask ipfiremake conntrack-tools ipfiremake libupnp From a3fd3c237d07106063378ea2b6a1493119a3f2fc Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 8 Mar 2017 18:50:49 +0100 Subject: [PATCH 190/464] Midnight Commander: Update to 4.8.19 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/packages/mc | 10 ++++++++++ lfs/mc | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/packages/mc b/config/rootfiles/packages/mc index baf8e06ae..820d23333 100644 --- a/config/rootfiles/packages/mc +++ b/config/rootfiles/packages/mc @@ -121,7 +121,13 @@ usr/share/mc/skins/modarin256root-defbg.ini usr/share/mc/skins/modarin256root.ini usr/share/mc/skins/nicedark.ini usr/share/mc/skins/sand256.ini +usr/share/mc/skins/seasons-autumn16M.ini +usr/share/mc/skins/seasons-spring16M.ini +usr/share/mc/skins/seasons-summer16M.ini +usr/share/mc/skins/seasons-winter16M.ini usr/share/mc/skins/xoria256.ini +usr/share/mc/skins/yadt256-defbg.ini +usr/share/mc/skins/yadt256.ini #usr/share/mc/syntax usr/share/mc/syntax/PKGBUILD.syntax usr/share/mc/syntax/Syntax @@ -176,6 +182,8 @@ usr/share/mc/syntax/named.syntax usr/share/mc/syntax/nemerle.syntax usr/share/mc/syntax/nroff.syntax usr/share/mc/syntax/octave.syntax +usr/share/mc/syntax/opencl.syntax +usr/share/mc/syntax/osl.syntax usr/share/mc/syntax/pascal.syntax usr/share/mc/syntax/perl.syntax usr/share/mc/syntax/php.syntax @@ -185,6 +193,7 @@ usr/share/mc/syntax/procmail.syntax usr/share/mc/syntax/properties.syntax usr/share/mc/syntax/puppet.syntax usr/share/mc/syntax/python.syntax +usr/share/mc/syntax/r.syntax usr/share/mc/syntax/ruby.syntax usr/share/mc/syntax/sh.syntax usr/share/mc/syntax/slang.syntax @@ -201,5 +210,6 @@ usr/share/mc/syntax/unknown.syntax usr/share/mc/syntax/verilog.syntax usr/share/mc/syntax/vhdl.syntax usr/share/mc/syntax/xml.syntax +usr/share/mc/syntax/yaml.syntax usr/share/mc/syntax/yum-repo.syntax usr/share/mc/syntax/yxx.syntax diff --git a/lfs/mc b/lfs/mc index d5d57bf1f..1680a9638 100644 --- a/lfs/mc +++ b/lfs/mc @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 4.8.18 +VER = 4.8.19 THISAPP = mc-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = mc -PAK_VER = 14 +PAK_VER = 15 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 85ff9279f912c5482fe9f110f8892c96 +$(DL_FILE)_MD5 = 57209d138c0adcb9ea01dfe6bbb4cb87 install : $(TARGET) From d04e15178d976abb0049c05900e2b56b6c655a81 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 10 Mar 2017 15:30:19 +0100 Subject: [PATCH 191/464] Fix rootfile of keepalived after initscript changes Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/rootfiles/packages/keepalived | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/packages/keepalived b/config/rootfiles/packages/keepalived index 88cfeed67..fbf5702cb 100644 --- a/config/rootfiles/packages/keepalived +++ b/config/rootfiles/packages/keepalived @@ -27,6 +27,7 @@ etc/keepalived/samples #etc/keepalived/samples/root.pem #etc/keepalived/samples/sample.misccheck.smbcheck.sh #etc/sysconfig/keepalived +etc/rc.d/init.d/keepalived usr/bin/genhash usr/sbin/keepalived #usr/share/man/man1/genhash.1 From 3baa3661a16c7ed2024dc2d8526502cad2eb6e55 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Fri, 10 Mar 2017 15:31:25 +0100 Subject: [PATCH 192/464] xinetd: fix the call of INSTALL_INITSCRIPT Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- lfs/xinetd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/xinetd b/lfs/xinetd index d3b577b5c..42d9288ab 100644 --- a/lfs/xinetd +++ b/lfs/xinetd @@ -83,7 +83,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cp -f $(DIR_SRC)/config/xinetd/xinetd.conf /etc/xinetd.conf #install initscripts - $(call INSTALL_INITSCRIPT,nfs-server) + $(call INSTALL_INITSCRIPT,xinetd) @rm -rf $(DIR_APP) @$(POSTBUILD) From 0f1cda211c441d17e212ee7c881e0d0014238155 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sat, 11 Mar 2017 09:10:39 +0100 Subject: [PATCH 193/464] Disable netfilter on all bridges per default Fixes: #11301 Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- config/etc/sysctl.conf | 5 +++++ config/rootfiles/core/110/filelists/files | 1 + 2 files changed, 6 insertions(+) diff --git a/config/etc/sysctl.conf b/config/etc/sysctl.conf index e2e3d81b0..ad562404f 100644 --- a/config/etc/sysctl.conf +++ b/config/etc/sysctl.conf @@ -34,3 +34,8 @@ net.ipv6.conf.default.disable_ipv6 = 1 # Enable netfilter accounting net.netfilter.nf_conntrack_acct=1 + +# Disable netfilter on bridges. +net.bridge.bridge-nf-call-ip6tables = 0 +net.bridge.bridge-nf-call-iptables = 0 +net.bridge.bridge-nf-call-arptables = 0 diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index b996e48aa..f06b6d5de 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -2,6 +2,7 @@ etc/system-release etc/issue etc/httpd/conf/server-tuning.conf etc/rc.d/init.d/unbound +etc/sysctl.conf srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi usr/lib/libssp.so.0 From 373c0c7bed5f24762285ce0e31858a2bc79bcdc8 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Sun, 13 Nov 2016 20:23:59 +0100 Subject: [PATCH 194/464] apcupsd: update to 3.14.14 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- lfs/apcupsd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lfs/apcupsd b/lfs/apcupsd index 1d8e0ff40..ce36c3c6f 100644 --- a/lfs/apcupsd +++ b/lfs/apcupsd @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2012 IPFire Team # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.14.10 +VER = 3.14.14 THISAPP = apcupsd-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = apcupsd -PAK_VER = 5 +PAK_VER = 6 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5928822d855c5cf7ac29655e3e0b8c23 +$(DL_FILE)_MD5 = cc8f5ced77f38906a274787acb9bc980 install : $(TARGET) From d38ed86f8b56436e420eb5f89dcb2393450939e4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 15 Mar 2017 12:56:05 +0000 Subject: [PATCH 195/464] strongswan: Disable IPv6 by default IPFire 2 does not have IPv6 connectivity with exception of a few systems for testing where IPsec connections become a little bit unstable when trying to connect over IPv6. Signed-off-by: Michael Tremer --- .../rootfiles/core/110/filelists/strongswan | 1 + lfs/strongswan | 1 + src/patches/strongswan-disable-ipv6.patch | 24 +++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 120000 config/rootfiles/core/110/filelists/strongswan create mode 100644 src/patches/strongswan-disable-ipv6.patch diff --git a/config/rootfiles/core/110/filelists/strongswan b/config/rootfiles/core/110/filelists/strongswan new file mode 120000 index 000000000..90c727e26 --- /dev/null +++ b/config/rootfiles/core/110/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/lfs/strongswan b/lfs/strongswan index 0af9e9dbe..fffa9af0f 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -78,6 +78,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-disable-ipv6.patch cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-ipfire.patch cd $(DIR_APP) && ./configure \ diff --git a/src/patches/strongswan-disable-ipv6.patch b/src/patches/strongswan-disable-ipv6.patch new file mode 100644 index 000000000..e459941cc --- /dev/null +++ b/src/patches/strongswan-disable-ipv6.patch @@ -0,0 +1,24 @@ +diff --git a/conf/plugins/socket-default.opt b/conf/plugins/socket-default.opt +index 483a0f03d584..6fc7c2db47a7 100644 +--- a/conf/plugins/socket-default.opt ++++ b/conf/plugins/socket-default.opt +@@ -7,5 +7,5 @@ charon.plugins.socket-default.set_source = yes + charon.plugins.socket-default.use_ipv4 = yes + Listen on IPv4, if possible. + +-charon.plugins.socket-default.use_ipv6 = yes ++charon.plugins.socket-default.use_ipv6 = no + Listen on IPv6, if possible. +diff --git a/src/libcharon/plugins/socket_default/socket_default_socket.c b/src/libcharon/plugins/socket_default/socket_default_socket.c +index ba22b0c2bdb6..da6989d81d7a 100644 +--- a/src/libcharon/plugins/socket_default/socket_default_socket.c ++++ b/src/libcharon/plugins/socket_default/socket_default_socket.c +@@ -748,7 +748,7 @@ static bool use_family(int family) + "%s.plugins.socket-default.use_ipv4", TRUE, lib->ns); + case AF_INET6: + return lib->settings->get_bool(lib->settings, +- "%s.plugins.socket-default.use_ipv6", TRUE, lib->ns); ++ "%s.plugins.socket-default.use_ipv6", FALSE, lib->ns); + default: + return FALSE; + } From a249ccd2e4e56798fcfe01b24a180eb461999626 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 15 Mar 2017 13:45:05 +0000 Subject: [PATCH 196/464] Improve graphs The graphs are using an iframe and PNG images where the resolution did often not fit and the browser had to resize the image. That led to blurred fonts and hard to read graphs. This patch increases the size of the box and the image. With that higher resolution resizing should not be too much of an issue, but since the sizes of the iframe and image have been aligned should not even be necessary. Reported-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/cfgroot/graphs.pl | 200 ++++-------------- config/rootfiles/core/110/filelists/files | 9 + html/cgi-bin/entropy.cgi | 2 +- html/cgi-bin/hardwaregraphs.cgi | 4 +- html/cgi-bin/netovpnsrv.cgi | 2 +- html/cgi-bin/qos.cgi | 4 +- html/cgi-bin/system.cgi | 4 +- html/html/themes/darkdos/include/style.css | 5 + html/html/themes/ipfire/include/css/style.css | 5 + html/html/themes/maniac/include/style.css | 5 + 10 files changed, 79 insertions(+), 161 deletions(-) diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index c3fb43eeb..7b92992b6 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -31,6 +31,30 @@ require "${General::swroot}/header.pl"; my $ERROR; +my @GRAPH_ARGS = ( + # Output format + "--imgformat", "PNG", + + # No border + "--border", "0", + + # For a more 'organic' look + "--slope-mode", + + # HxW define the size of the output image + "--full-size-mode", + + # Watermark + "-W www.ipfire.org", + + # Default size + "-w 910", + "-h 300", + + # Use alternative grid + "--alt-y-grid", +); + # Read the global settings files to get the current theme and after this load # colors for this theme @@ -77,11 +101,6 @@ foreach (@sensorsdir){ # 3 if given is the height of the iframe default if nothing is given sub makegraphbox { - my $height = 285; - my $width = 700; - - if ( $_[3] ne "" ){ $height = $_[3]; } - print "
"; print "".$Lang::tr{'hour'}.""; print " - "; @@ -93,7 +112,7 @@ sub makegraphbox { print " - "; print "".$Lang::tr{'year'}.""; print "
"; - print ""; + print ""; } # Generate the CPU Graph for the current period of time for values given by @@ -103,16 +122,10 @@ sub updatecpugraph { my $cpucount = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/cpu-*/ 2>/dev/null | wc -l`; my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-u 100", "-r", @@ -237,16 +250,10 @@ sub updatecpugraph { sub updateloadgraph { my $period = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-r", "-t Load Average ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, @@ -275,16 +282,10 @@ sub updateloadgraph { sub updatememorygraph { my $period = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-u 100", "-r", @@ -337,16 +338,10 @@ sub updatememorygraph { sub updateswapgraph { my $period = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-u 100", "-r", @@ -395,16 +390,10 @@ sub updateprocessescpugraph { my $count="0"; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-r", "-t ".$Lang::tr{'processes'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, @@ -448,16 +437,10 @@ sub updateprocessesmemorygraph { my $count="0"; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-r", "-t ".$Lang::tr{'processes'}." ".$Lang::tr{'memory'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, @@ -498,16 +481,10 @@ sub updatediskgraph { my $disk = $_[0]; my $period = $_[1]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$disk." ".$Lang::tr{'disk access per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -548,16 +525,10 @@ sub updateifgraph { my $interface = $_[0]; my $period = $_[1]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -591,16 +562,10 @@ sub updatevpngraph { my $interface = $_[0]; my $period = $_[1]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -634,16 +599,10 @@ sub updatevpnn2ngraph { my $interface = $_[0]; my $period = $_[1]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -704,16 +663,10 @@ sub updatevpnn2ngraph { sub updatefwhitsgraph { my $period = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -766,16 +719,10 @@ sub updatepinggraph { my $period = $_[1]; my $host = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-l 0", "-r", "-t ".$Lang::tr{'linkq'}." ".$host." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, @@ -812,16 +759,10 @@ sub updatewirelessgraph { my $period = $_[1]; my $interface = $_[0]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-t Wireless ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v dBm", "--color=SHADEA".$color{"color19"}, @@ -855,16 +796,10 @@ sub updatehddgraph { my $disk = $_[0]; my $period = $_[1]; RRDs::graph( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$disk." ".$Lang::tr{'harddisk temperature'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v Celsius", @@ -895,16 +830,10 @@ sub updatehwtempgraph { my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'mbmon temp'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "--color=SHADEA".$color{"color19"}, @@ -948,16 +877,10 @@ sub updatehwfangraph { my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'mbmon fan'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "--color=SHADEA".$color{"color19"}, @@ -1001,16 +924,10 @@ sub updatehwvoltgraph { my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'mbmon volt'}." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "--color=SHADEA".$color{"color19"}, @@ -1074,16 +991,10 @@ sub updateqosgraph { my $color="#000000"; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, "-v ".$Lang::tr{'bytes per second'}, @@ -1133,16 +1044,10 @@ sub updatecpufreqgraph { my $cpucount = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/cpu-*/ 2>/dev/null | wc -l`; my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t ".$Lang::tr{'cpu frequency per'}." ".$Lang::tr{$period."-graph"}, "-v MHz", @@ -1178,16 +1083,10 @@ sub updatethermaltempgraph { my $thermalcount = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/thermal-thermal_zone* 2>/dev/null | wc -l`; my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 125", "-r", "-t "."ACPI Thermal-Zone Temperature"." - ".$Lang::tr{$period."-graph"}, "-v Grad Celsius", @@ -1237,16 +1136,10 @@ sub getprocesses { sub updateentropygraph { my $period = $_[0]; my @command = ( + @GRAPH_ARGS, "-", "--start", "-1".$period, - "-aPNG", - "-i", - "-z", - "-W www.ipfire.org", - "--alt-y-grid", - "-w 600", - "-h 225", "-r", "--lower-limit","0", "-t $Lang::tr{'entropy'}", @@ -1259,6 +1152,7 @@ sub updateentropygraph { "GPRINT:entrmax:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'maximum'}), "GPRINT:entrmin:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'minimum'}), "GPRINT:entravg:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'average'}) . "\\n", + "--color=BACK".$color{"color21"}, ); RRDs::graph (@command); diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index f06b6d5de..e937e49b1 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -3,9 +3,18 @@ etc/issue etc/httpd/conf/server-tuning.conf etc/rc.d/init.d/unbound etc/sysctl.conf +srv/web/ipfire/cgi-bin/entropy.cgi +srv/web/ipfire/cgi-bin/hardwaregraphs.cgi srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/netovpnsrv.cgi +srv/web/ipfire/cgi-bin/qos.cgi +srv/web/ipfire/cgi-bin/system.cgi srv/web/ipfire/cgi-bin/vpnmain.cgi +srv/web/ipfire/html/themes/darkdos/include/style.css +srv/web/ipfire/html/themes/ipfire/include/css/style.css +srv/web/ipfire/html/themes/maniac/include/style.css usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 usr/local/bin/xt_geoip_update var/ipfire/langs +var/ipfire/graphs.pl diff --git a/html/cgi-bin/entropy.cgi b/html/cgi-bin/entropy.cgi index 8e016b6cf..e5db5c212 100644 --- a/html/cgi-bin/entropy.cgi +++ b/html/cgi-bin/entropy.cgi @@ -45,7 +45,7 @@ if ( $querry[0] ne~ "") { &Header::openbigbox('100%', 'left'); &Header::openbox('100%', 'center', $Lang::tr{'entropy'}); - &Graphs::makegraphbox("entropy.cgi", "day", '', 350); + &Graphs::makegraphbox("entropy.cgi", "day"); &Header::closebox(); # Check for hardware support. diff --git a/html/cgi-bin/hardwaregraphs.cgi b/html/cgi-bin/hardwaregraphs.cgi index b0a5d3a36..7b5a848bf 100644 --- a/html/cgi-bin/hardwaregraphs.cgi +++ b/html/cgi-bin/hardwaregraphs.cgi @@ -113,7 +113,7 @@ if ( $querry[0] =~ "hwtemp"){ if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/temperature-* 2>/dev/null` ) { &Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}"); - &Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day","375"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day"); Header::closebox(); } @@ -125,7 +125,7 @@ if ( $querry[0] =~ "hwtemp"){ if ( `ls $mainsettings{'RRDLOG'}/collectd/localhost/sensors-*/voltage-* 2>/dev/null` ) { &Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}"); - &Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day","435"); + &Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day"); &Header::closebox(); } diff --git a/html/cgi-bin/netovpnsrv.cgi b/html/cgi-bin/netovpnsrv.cgi index 15a95b6b9..ddf41771a 100755 --- a/html/cgi-bin/netovpnsrv.cgi +++ b/html/cgi-bin/netovpnsrv.cgi @@ -59,7 +59,7 @@ if ( $querry[0] ne ""){ if (@vpns){ foreach (@vpns) { &Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}"); - &Graphs::makegraphbox("netovpnsrv.cgi",$_, "day",320); + &Graphs::makegraphbox("netovpnsrv.cgi",$_, "day"); &Header::closebox(); } }else{ diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi index 590ad15bf..071b93f5d 100644 --- a/html/cgi-bin/qos.cgi +++ b/html/cgi-bin/qos.cgi @@ -770,10 +770,10 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq '' } &Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}, $Lang::tr{'uplink'}"); - &Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour","325"); + &Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour"); &Header::closebox(); &Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}, $Lang::tr{'downlink'}"); - &Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour","325"); + &Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour"); &Header::closebox(); &showclasses($qossettings{'RED_DEV'}); diff --git a/html/cgi-bin/system.cgi b/html/cgi-bin/system.cgi index a0e7655ab..487ba996c 100644 --- a/html/cgi-bin/system.cgi +++ b/html/cgi-bin/system.cgi @@ -57,12 +57,12 @@ if ( $querry[0] =~ "cpufreq"){ &Header::openbigbox('100%', 'left'); &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); - &Graphs::makegraphbox("system.cgi","cpu","day","325"); + &Graphs::makegraphbox("system.cgi","cpu","day"); &Header::closebox(); if ( -e "$mainsettings{'RRDLOG'}/collectd/localhost/cpufreq/cpufreq-0.rrd"){ &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); - &Graphs::makegraphbox("system.cgi","cpufreq","day","325"); + &Graphs::makegraphbox("system.cgi","cpufreq","day"); &Header::closebox(); } diff --git a/html/html/themes/darkdos/include/style.css b/html/html/themes/darkdos/include/style.css index cc4b3c965..b8850677c 100644 --- a/html/html/themes/darkdos/include/style.css +++ b/html/html/themes/darkdos/include/style.css @@ -466,3 +466,8 @@ table.fw-nat tbody tr td { #rx_kbs { color: green; } #tx_kbs { color: red; } + +iframe.graph { + width: 100%; + min-height: 300px; +} diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css index 1cc18f897..9421fc111 100644 --- a/html/html/themes/ipfire/include/css/style.css +++ b/html/html/themes/ipfire/include/css/style.css @@ -327,3 +327,8 @@ table { table.fw-nat tbody tr td { height: 2.25em; } + +iframe.graph { + width: 100%; + min-height: 300px; +} diff --git a/html/html/themes/maniac/include/style.css b/html/html/themes/maniac/include/style.css index 3cb274130..27d3982a6 100644 --- a/html/html/themes/maniac/include/style.css +++ b/html/html/themes/maniac/include/style.css @@ -472,3 +472,8 @@ table.fw-nat tbody tr td { #rx_kbs { color: green; } #tx_kbs { color: red; } + +iframe.graph { + width: 100%; + min-height: 300px; +} From 65c3b7c913760c88f7cbdfccc775d34dfc7fe232 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Mar 2017 11:15:44 +0000 Subject: [PATCH 197/464] Revert "BUG11278: enable creation from subnets of internal networks" This reverts commit ff6cc71107ae50e913c87a9bc77b3af4b31ec932. This patch causes that no new networks can be created and an error message is shown that the created network is the GREEN network which is incorrect. Signed-off-by: Michael Tremer --- config/cfgroot/general-functions.pl | 8 ++++---- config/rootfiles/core/110/filelists/files | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 081e4e3df..188bb7f8b 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -553,10 +553,10 @@ sub check_net_internal{ $cidr=&iporsubtocidr($cidr); #check if we use one of ipfire's networks (green,orange,blue) &readhash("${General::swroot}/ethernet/settings", \%ownnet); - if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'GREEN_NETADDRESS'}/$ownnet{'GREEN_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} - if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'ORANGE_NETADDRESS'}/$ownnet{'ORANGE_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} - if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'BLUE_NETADDRESS'}/$ownnet{'BLUE_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} - if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'RED_NETADDRESS'}/$ownnet{'RED_NETMASK'}",$network)){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} + if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} + if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} + if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} + if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} } sub validport diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index e937e49b1..581602710 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -17,4 +17,5 @@ usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 usr/local/bin/xt_geoip_update var/ipfire/langs +var/ipfire/general-functions.pl var/ipfire/graphs.pl From 8714488c7369816fb96e8a9802330851f0c13c4d Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Wed, 15 Mar 2017 14:37:16 +0100 Subject: [PATCH 198/464] ffmpeg and ffmpeg-libs: update to 3.2.4 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/packages/ffmpeg | 245 +++++++++++++++++++++---- config/rootfiles/packages/ffmpeg-libs | 249 ++++++++++++++++++++++---- lfs/ffmpeg | 34 ++-- lfs/ffmpeg-libs | 6 +- 4 files changed, 438 insertions(+), 96 deletions(-) diff --git a/config/rootfiles/packages/ffmpeg b/config/rootfiles/packages/ffmpeg index d403ca13f..7fc5e1494 100644 --- a/config/rootfiles/packages/ffmpeg +++ b/config/rootfiles/packages/ffmpeg @@ -1,64 +1,237 @@ usr/bin/ffmpeg -usr/bin/ffplay +usr/bin/ffprobe usr/bin/ffserver #usr/include/libavcodec #usr/include/libavcodec/avcodec.h -#usr/include/libavcodec/opt.h +#usr/include/libavcodec/avdct.h +#usr/include/libavcodec/avfft.h +#usr/include/libavcodec/d3d11va.h +#usr/include/libavcodec/dirac.h +#usr/include/libavcodec/dv_profile.h +#usr/include/libavcodec/dxva2.h +#usr/include/libavcodec/jni.h +#usr/include/libavcodec/mediacodec.h +#usr/include/libavcodec/qsv.h +#usr/include/libavcodec/vaapi.h +#usr/include/libavcodec/vda.h +#usr/include/libavcodec/vdpau.h +#usr/include/libavcodec/version.h +#usr/include/libavcodec/videotoolbox.h +#usr/include/libavcodec/vorbis_parser.h +#usr/include/libavcodec/xvmc.h #usr/include/libavdevice #usr/include/libavdevice/avdevice.h +#usr/include/libavdevice/version.h +#usr/include/libavfilter +#usr/include/libavfilter/avfilter.h +#usr/include/libavfilter/avfiltergraph.h +#usr/include/libavfilter/buffersink.h +#usr/include/libavfilter/buffersrc.h +#usr/include/libavfilter/version.h #usr/include/libavformat #usr/include/libavformat/avformat.h #usr/include/libavformat/avio.h -#usr/include/libavformat/rtsp.h -#usr/include/libavformat/rtspcodes.h +#usr/include/libavformat/version.h #usr/include/libavutil #usr/include/libavutil/adler32.h +#usr/include/libavutil/aes.h +#usr/include/libavutil/aes_ctr.h +#usr/include/libavutil/attributes.h +#usr/include/libavutil/audio_fifo.h +#usr/include/libavutil/avassert.h +#usr/include/libavutil/avconfig.h #usr/include/libavutil/avstring.h #usr/include/libavutil/avutil.h #usr/include/libavutil/base64.h +#usr/include/libavutil/blowfish.h +#usr/include/libavutil/bprint.h +#usr/include/libavutil/bswap.h +#usr/include/libavutil/buffer.h +#usr/include/libavutil/camellia.h +#usr/include/libavutil/cast5.h +#usr/include/libavutil/channel_layout.h #usr/include/libavutil/common.h +#usr/include/libavutil/cpu.h #usr/include/libavutil/crc.h +#usr/include/libavutil/des.h +#usr/include/libavutil/dict.h +#usr/include/libavutil/display.h +#usr/include/libavutil/downmix_info.h +#usr/include/libavutil/error.h +#usr/include/libavutil/eval.h +#usr/include/libavutil/ffversion.h #usr/include/libavutil/fifo.h -#usr/include/libavutil/intfloat_readwrite.h +#usr/include/libavutil/file.h +#usr/include/libavutil/frame.h +#usr/include/libavutil/hash.h +#usr/include/libavutil/hmac.h +#usr/include/libavutil/hwcontext.h +#usr/include/libavutil/hwcontext_cuda.h +#usr/include/libavutil/hwcontext_dxva2.h +#usr/include/libavutil/hwcontext_qsv.h +#usr/include/libavutil/hwcontext_vaapi.h +#usr/include/libavutil/hwcontext_vdpau.h +#usr/include/libavutil/imgutils.h +#usr/include/libavutil/intfloat.h +#usr/include/libavutil/intreadwrite.h +#usr/include/libavutil/lfg.h #usr/include/libavutil/log.h #usr/include/libavutil/lzo.h +#usr/include/libavutil/macros.h +#usr/include/libavutil/mastering_display_metadata.h #usr/include/libavutil/mathematics.h #usr/include/libavutil/md5.h #usr/include/libavutil/mem.h -#usr/include/libavutil/random.h +#usr/include/libavutil/motion_vector.h +#usr/include/libavutil/murmur3.h +#usr/include/libavutil/opt.h +#usr/include/libavutil/parseutils.h +#usr/include/libavutil/pixdesc.h +#usr/include/libavutil/pixelutils.h +#usr/include/libavutil/pixfmt.h +#usr/include/libavutil/random_seed.h #usr/include/libavutil/rational.h -#usr/include/libavutil/sha1.h -#usr/lib/libavcodec.a -#usr/lib/libavcodec.so -#usr/lib/libavcodec.so.51 -#usr/lib/libavcodec.so.51.54.0 -#usr/lib/libavdevice.a -#usr/lib/libavdevice.so -#usr/lib/libavdevice.so.52 -#usr/lib/libavdevice.so.52.0.0 -#usr/lib/libavformat.a -#usr/lib/libavformat.so -#usr/lib/libavformat.so.52 -#usr/lib/libavformat.so.52.13.0 -#usr/lib/libavutil.a -#usr/lib/libavutil.so -#usr/lib/libavutil.so.49 -#usr/lib/libavutil.so.49.6.0 -#usr/lib/pkgconfig -#usr/lib/pkgconfig/libavcodec.pc -#usr/lib/pkgconfig/libavdevice.pc -#usr/lib/pkgconfig/libavformat.pc -#usr/lib/pkgconfig/libavutil.pc -#usr/lib/vhook -#usr/lib/vhook/drawtext.so -#usr/lib/vhook/fish.so -#usr/lib/vhook/null.so -#usr/lib/vhook/ppm.so -#usr/lib/vhook/watermark.so +#usr/include/libavutil/rc4.h +#usr/include/libavutil/replaygain.h +#usr/include/libavutil/ripemd.h +#usr/include/libavutil/samplefmt.h +#usr/include/libavutil/sha.h +#usr/include/libavutil/sha512.h +#usr/include/libavutil/stereo3d.h +#usr/include/libavutil/tea.h +#usr/include/libavutil/threadmessage.h +#usr/include/libavutil/time.h +#usr/include/libavutil/timecode.h +#usr/include/libavutil/timestamp.h +#usr/include/libavutil/tree.h +#usr/include/libavutil/twofish.h +#usr/include/libavutil/version.h +#usr/include/libavutil/xtea.h #usr/include/libpostproc #usr/include/libpostproc/postprocess.h +#usr/include/libpostproc/version.h +#usr/include/libswresample +#usr/include/libswresample/swresample.h +#usr/include/libswresample/version.h +#usr/include/libswscale +#usr/include/libswscale/swscale.h +#usr/include/libswscale/version.h +#usr/lib/libavcodec.a +#usr/lib/libavcodec.so +#usr/lib/libavcodec.so.57 +#usr/lib/libavcodec.so.57.64.101 +#usr/lib/libavdevice.a +#usr/lib/libavdevice.so +#usr/lib/libavdevice.so.57 +#usr/lib/libavdevice.so.57.1.100 +#usr/lib/libavfilter.a +#usr/lib/libavfilter.so +#usr/lib/libavfilter.so.6 +#usr/lib/libavfilter.so.6.65.100 +#usr/lib/libavformat.a +#usr/lib/libavformat.so +#usr/lib/libavformat.so.57 +#usr/lib/libavformat.so.57.56.101 +#usr/lib/libavutil.a +#usr/lib/libavutil.so +#usr/lib/libavutil.so.55 +#usr/lib/libavutil.so.55.34.101 #usr/lib/libpostproc.a #usr/lib/libpostproc.so -#usr/lib/libpostproc.so.51 -#usr/lib/libpostproc.so.51.1.0 +#usr/lib/libpostproc.so.54 +#usr/lib/libpostproc.so.54.1.100 +#usr/lib/libswresample.a +#usr/lib/libswresample.so +#usr/lib/libswresample.so.2 +#usr/lib/libswresample.so.2.3.100 +#usr/lib/libswscale.a +#usr/lib/libswscale.so +#usr/lib/libswscale.so.4 +#usr/lib/libswscale.so.4.2.100 +#usr/lib/pkgconfig/libavcodec.pc +#usr/lib/pkgconfig/libavdevice.pc +#usr/lib/pkgconfig/libavfilter.pc +#usr/lib/pkgconfig/libavformat.pc +#usr/lib/pkgconfig/libavutil.pc #usr/lib/pkgconfig/libpostproc.pc +#usr/lib/pkgconfig/libswresample.pc +#usr/lib/pkgconfig/libswscale.pc +#usr/share/doc/ffmpeg +#usr/share/doc/ffmpeg/developer.html +#usr/share/doc/ffmpeg/faq.html +#usr/share/doc/ffmpeg/fate.html +#usr/share/doc/ffmpeg/ffmpeg-all.html +#usr/share/doc/ffmpeg/ffmpeg-bitstream-filters.html +#usr/share/doc/ffmpeg/ffmpeg-codecs.html +#usr/share/doc/ffmpeg/ffmpeg-devices.html +#usr/share/doc/ffmpeg/ffmpeg-filters.html +#usr/share/doc/ffmpeg/ffmpeg-formats.html +#usr/share/doc/ffmpeg/ffmpeg-protocols.html +#usr/share/doc/ffmpeg/ffmpeg-resampler.html +#usr/share/doc/ffmpeg/ffmpeg-scaler.html +#usr/share/doc/ffmpeg/ffmpeg-utils.html +#usr/share/doc/ffmpeg/ffmpeg.html +#usr/share/doc/ffmpeg/ffprobe-all.html +#usr/share/doc/ffmpeg/ffprobe.html +#usr/share/doc/ffmpeg/ffserver-all.html +#usr/share/doc/ffmpeg/ffserver.html +#usr/share/doc/ffmpeg/general.html +#usr/share/doc/ffmpeg/git-howto.html +#usr/share/doc/ffmpeg/libavcodec.html +#usr/share/doc/ffmpeg/libavdevice.html +#usr/share/doc/ffmpeg/libavfilter.html +#usr/share/doc/ffmpeg/libavformat.html +#usr/share/doc/ffmpeg/libavutil.html +#usr/share/doc/ffmpeg/libswresample.html +#usr/share/doc/ffmpeg/libswscale.html +#usr/share/doc/ffmpeg/nut.html +#usr/share/doc/ffmpeg/platform.html +#usr/share/ffmpeg +#usr/share/ffmpeg/examples +#usr/share/ffmpeg/examples/Makefile +#usr/share/ffmpeg/examples/README +#usr/share/ffmpeg/examples/avio_dir_cmd.c +#usr/share/ffmpeg/examples/avio_reading.c +#usr/share/ffmpeg/examples/decoding_encoding.c +#usr/share/ffmpeg/examples/demuxing_decoding.c +#usr/share/ffmpeg/examples/extract_mvs.c +#usr/share/ffmpeg/examples/filter_audio.c +#usr/share/ffmpeg/examples/filtering_audio.c +#usr/share/ffmpeg/examples/filtering_video.c +#usr/share/ffmpeg/examples/http_multiclient.c +#usr/share/ffmpeg/examples/metadata.c +#usr/share/ffmpeg/examples/muxing.c +#usr/share/ffmpeg/examples/qsvdec.c +#usr/share/ffmpeg/examples/remuxing.c +#usr/share/ffmpeg/examples/resampling_audio.c +#usr/share/ffmpeg/examples/scaling_video.c +#usr/share/ffmpeg/examples/transcode_aac.c +#usr/share/ffmpeg/examples/transcoding.c +#usr/share/ffmpeg/ffprobe.xsd +#usr/share/ffmpeg/libvpx-1080p.ffpreset +#usr/share/ffmpeg/libvpx-1080p50_60.ffpreset +#usr/share/ffmpeg/libvpx-360p.ffpreset +#usr/share/ffmpeg/libvpx-720p.ffpreset +#usr/share/ffmpeg/libvpx-720p50_60.ffpreset +#usr/share/man/man1/ffmpeg-all.1 +#usr/share/man/man1/ffmpeg-bitstream-filters.1 +#usr/share/man/man1/ffmpeg-codecs.1 +#usr/share/man/man1/ffmpeg-devices.1 +#usr/share/man/man1/ffmpeg-filters.1 +#usr/share/man/man1/ffmpeg-formats.1 +#usr/share/man/man1/ffmpeg-protocols.1 +#usr/share/man/man1/ffmpeg-resampler.1 +#usr/share/man/man1/ffmpeg-scaler.1 +#usr/share/man/man1/ffmpeg-utils.1 +#usr/share/man/man1/ffmpeg.1 +#usr/share/man/man1/ffprobe-all.1 +#usr/share/man/man1/ffprobe.1 +#usr/share/man/man1/ffserver-all.1 +#usr/share/man/man1/ffserver.1 +#usr/share/man/man3/libavcodec.3 +#usr/share/man/man3/libavdevice.3 +#usr/share/man/man3/libavfilter.3 +#usr/share/man/man3/libavformat.3 +#usr/share/man/man3/libavutil.3 +#usr/share/man/man3/libswresample.3 +#usr/share/man/man3/libswscale.3 diff --git a/config/rootfiles/packages/ffmpeg-libs b/config/rootfiles/packages/ffmpeg-libs index a58dcd523..7a512f9da 100644 --- a/config/rootfiles/packages/ffmpeg-libs +++ b/config/rootfiles/packages/ffmpeg-libs @@ -1,64 +1,237 @@ #usr/bin/ffmpeg -#usr/bin/ffplay +#usr/bin/ffprobe #usr/bin/ffserver #usr/include/libavcodec #usr/include/libavcodec/avcodec.h -#usr/include/libavcodec/opt.h +#usr/include/libavcodec/avdct.h +#usr/include/libavcodec/avfft.h +#usr/include/libavcodec/d3d11va.h +#usr/include/libavcodec/dirac.h +#usr/include/libavcodec/dv_profile.h +#usr/include/libavcodec/dxva2.h +#usr/include/libavcodec/jni.h +#usr/include/libavcodec/mediacodec.h +#usr/include/libavcodec/qsv.h +#usr/include/libavcodec/vaapi.h +#usr/include/libavcodec/vda.h +#usr/include/libavcodec/vdpau.h +#usr/include/libavcodec/version.h +#usr/include/libavcodec/videotoolbox.h +#usr/include/libavcodec/vorbis_parser.h +#usr/include/libavcodec/xvmc.h #usr/include/libavdevice #usr/include/libavdevice/avdevice.h +#usr/include/libavdevice/version.h +#usr/include/libavfilter +#usr/include/libavfilter/avfilter.h +#usr/include/libavfilter/avfiltergraph.h +#usr/include/libavfilter/buffersink.h +#usr/include/libavfilter/buffersrc.h +#usr/include/libavfilter/version.h #usr/include/libavformat #usr/include/libavformat/avformat.h #usr/include/libavformat/avio.h -#usr/include/libavformat/rtsp.h -#usr/include/libavformat/rtspcodes.h +#usr/include/libavformat/version.h #usr/include/libavutil #usr/include/libavutil/adler32.h +#usr/include/libavutil/aes.h +#usr/include/libavutil/aes_ctr.h +#usr/include/libavutil/attributes.h +#usr/include/libavutil/audio_fifo.h +#usr/include/libavutil/avassert.h +#usr/include/libavutil/avconfig.h #usr/include/libavutil/avstring.h #usr/include/libavutil/avutil.h #usr/include/libavutil/base64.h +#usr/include/libavutil/blowfish.h +#usr/include/libavutil/bprint.h +#usr/include/libavutil/bswap.h +#usr/include/libavutil/buffer.h +#usr/include/libavutil/camellia.h +#usr/include/libavutil/cast5.h +#usr/include/libavutil/channel_layout.h #usr/include/libavutil/common.h +#usr/include/libavutil/cpu.h #usr/include/libavutil/crc.h +#usr/include/libavutil/des.h +#usr/include/libavutil/dict.h +#usr/include/libavutil/display.h +#usr/include/libavutil/downmix_info.h +#usr/include/libavutil/error.h +#usr/include/libavutil/eval.h +#usr/include/libavutil/ffversion.h #usr/include/libavutil/fifo.h -#usr/include/libavutil/intfloat_readwrite.h +#usr/include/libavutil/file.h +#usr/include/libavutil/frame.h +#usr/include/libavutil/hash.h +#usr/include/libavutil/hmac.h +#usr/include/libavutil/hwcontext.h +#usr/include/libavutil/hwcontext_cuda.h +#usr/include/libavutil/hwcontext_dxva2.h +#usr/include/libavutil/hwcontext_qsv.h +#usr/include/libavutil/hwcontext_vaapi.h +#usr/include/libavutil/hwcontext_vdpau.h +#usr/include/libavutil/imgutils.h +#usr/include/libavutil/intfloat.h +#usr/include/libavutil/intreadwrite.h +#usr/include/libavutil/lfg.h #usr/include/libavutil/log.h #usr/include/libavutil/lzo.h +#usr/include/libavutil/macros.h +#usr/include/libavutil/mastering_display_metadata.h #usr/include/libavutil/mathematics.h #usr/include/libavutil/md5.h #usr/include/libavutil/mem.h -#usr/include/libavutil/random.h +#usr/include/libavutil/motion_vector.h +#usr/include/libavutil/murmur3.h +#usr/include/libavutil/opt.h +#usr/include/libavutil/parseutils.h +#usr/include/libavutil/pixdesc.h +#usr/include/libavutil/pixelutils.h +#usr/include/libavutil/pixfmt.h +#usr/include/libavutil/random_seed.h #usr/include/libavutil/rational.h -#usr/include/libavutil/sha1.h -#usr/lib/libavcodec.a -usr/lib/libavcodec.so -usr/lib/libavcodec.so.51 -usr/lib/libavcodec.so.51.54.0 -#usr/lib/libavdevice.a -usr/lib/libavdevice.so -usr/lib/libavdevice.so.52 -usr/lib/libavdevice.so.52.0.0 -#usr/lib/libavformat.a -usr/lib/libavformat.so -usr/lib/libavformat.so.52 -usr/lib/libavformat.so.52.13.0 -#usr/lib/libavutil.a -usr/lib/libavutil.so -usr/lib/libavutil.so.49 -usr/lib/libavutil.so.49.6.0 -#usr/lib/pkgconfig -usr/lib/pkgconfig/libavcodec.pc -usr/lib/pkgconfig/libavdevice.pc -usr/lib/pkgconfig/libavformat.pc -usr/lib/pkgconfig/libavutil.pc -#usr/lib/vhook -usr/lib/vhook/drawtext.so -usr/lib/vhook/fish.so -usr/lib/vhook/null.so -usr/lib/vhook/ppm.so -usr/lib/vhook/watermark.so +#usr/include/libavutil/rc4.h +#usr/include/libavutil/replaygain.h +#usr/include/libavutil/ripemd.h +#usr/include/libavutil/samplefmt.h +#usr/include/libavutil/sha.h +#usr/include/libavutil/sha512.h +#usr/include/libavutil/stereo3d.h +#usr/include/libavutil/tea.h +#usr/include/libavutil/threadmessage.h +#usr/include/libavutil/time.h +#usr/include/libavutil/timecode.h +#usr/include/libavutil/timestamp.h +#usr/include/libavutil/tree.h +#usr/include/libavutil/twofish.h +#usr/include/libavutil/version.h +#usr/include/libavutil/xtea.h #usr/include/libpostproc #usr/include/libpostproc/postprocess.h +#usr/include/libpostproc/version.h +#usr/include/libswresample +#usr/include/libswresample/swresample.h +#usr/include/libswresample/version.h +#usr/include/libswscale +#usr/include/libswscale/swscale.h +#usr/include/libswscale/version.h +#usr/lib/libavcodec.a +#usr/lib/libavcodec.so +usr/lib/libavcodec.so.57 +usr/lib/libavcodec.so.57.64.101 +#usr/lib/libavdevice.a +#usr/lib/libavdevice.so +usr/lib/libavdevice.so.57 +usr/lib/libavdevice.so.57.1.100 +#usr/lib/libavfilter.a +#usr/lib/libavfilter.so +usr/lib/libavfilter.so.6 +usr/lib/libavfilter.so.6.65.100 +#usr/lib/libavformat.a +#usr/lib/libavformat.so +usr/lib/libavformat.so.57 +usr/lib/libavformat.so.57.56.101 +#usr/lib/libavutil.a +#usr/lib/libavutil.so +usr/lib/libavutil.so.55 +usr/lib/libavutil.so.55.34.101 #usr/lib/libpostproc.a -usr/lib/libpostproc.so -usr/lib/libpostproc.so.51 -usr/lib/libpostproc.so.51.1.0 -usr/lib/pkgconfig/libpostproc.pc +#usr/lib/libpostproc.so +usr/lib/libpostproc.so.54 +usr/lib/libpostproc.so.54.1.100 +#usr/lib/libswresample.a +#usr/lib/libswresample.so +usr/lib/libswresample.so.2 +usr/lib/libswresample.so.2.3.100 +#usr/lib/libswscale.a +#usr/lib/libswscale.so +usr/lib/libswscale.so.4 +usr/lib/libswscale.so.4.2.100 +#usr/lib/pkgconfig/libavcodec.pc +#usr/lib/pkgconfig/libavdevice.pc +#usr/lib/pkgconfig/libavfilter.pc +#usr/lib/pkgconfig/libavformat.pc +#usr/lib/pkgconfig/libavutil.pc +#usr/lib/pkgconfig/libpostproc.pc +#usr/lib/pkgconfig/libswresample.pc +#usr/lib/pkgconfig/libswscale.pc +#usr/share/doc/ffmpeg +#usr/share/doc/ffmpeg/developer.html +#usr/share/doc/ffmpeg/faq.html +#usr/share/doc/ffmpeg/fate.html +#usr/share/doc/ffmpeg/ffmpeg-all.html +#usr/share/doc/ffmpeg/ffmpeg-bitstream-filters.html +#usr/share/doc/ffmpeg/ffmpeg-codecs.html +#usr/share/doc/ffmpeg/ffmpeg-devices.html +#usr/share/doc/ffmpeg/ffmpeg-filters.html +#usr/share/doc/ffmpeg/ffmpeg-formats.html +#usr/share/doc/ffmpeg/ffmpeg-protocols.html +#usr/share/doc/ffmpeg/ffmpeg-resampler.html +#usr/share/doc/ffmpeg/ffmpeg-scaler.html +#usr/share/doc/ffmpeg/ffmpeg-utils.html +#usr/share/doc/ffmpeg/ffmpeg.html +#usr/share/doc/ffmpeg/ffprobe-all.html +#usr/share/doc/ffmpeg/ffprobe.html +#usr/share/doc/ffmpeg/ffserver-all.html +#usr/share/doc/ffmpeg/ffserver.html +#usr/share/doc/ffmpeg/general.html +#usr/share/doc/ffmpeg/git-howto.html +#usr/share/doc/ffmpeg/libavcodec.html +#usr/share/doc/ffmpeg/libavdevice.html +#usr/share/doc/ffmpeg/libavfilter.html +#usr/share/doc/ffmpeg/libavformat.html +#usr/share/doc/ffmpeg/libavutil.html +#usr/share/doc/ffmpeg/libswresample.html +#usr/share/doc/ffmpeg/libswscale.html +#usr/share/doc/ffmpeg/nut.html +#usr/share/doc/ffmpeg/platform.html +#usr/share/ffmpeg +#usr/share/ffmpeg/examples +#usr/share/ffmpeg/examples/Makefile +#usr/share/ffmpeg/examples/README +#usr/share/ffmpeg/examples/avio_dir_cmd.c +#usr/share/ffmpeg/examples/avio_reading.c +#usr/share/ffmpeg/examples/decoding_encoding.c +#usr/share/ffmpeg/examples/demuxing_decoding.c +#usr/share/ffmpeg/examples/extract_mvs.c +#usr/share/ffmpeg/examples/filter_audio.c +#usr/share/ffmpeg/examples/filtering_audio.c +#usr/share/ffmpeg/examples/filtering_video.c +#usr/share/ffmpeg/examples/http_multiclient.c +#usr/share/ffmpeg/examples/metadata.c +#usr/share/ffmpeg/examples/muxing.c +#usr/share/ffmpeg/examples/qsvdec.c +#usr/share/ffmpeg/examples/remuxing.c +#usr/share/ffmpeg/examples/resampling_audio.c +#usr/share/ffmpeg/examples/scaling_video.c +#usr/share/ffmpeg/examples/transcode_aac.c +#usr/share/ffmpeg/examples/transcoding.c +#usr/share/ffmpeg/ffprobe.xsd +#usr/share/ffmpeg/libvpx-1080p.ffpreset +#usr/share/ffmpeg/libvpx-1080p50_60.ffpreset +#usr/share/ffmpeg/libvpx-360p.ffpreset +#usr/share/ffmpeg/libvpx-720p.ffpreset +#usr/share/ffmpeg/libvpx-720p50_60.ffpreset +#usr/share/man/man1/ffmpeg-all.1 +#usr/share/man/man1/ffmpeg-bitstream-filters.1 +#usr/share/man/man1/ffmpeg-codecs.1 +#usr/share/man/man1/ffmpeg-devices.1 +#usr/share/man/man1/ffmpeg-filters.1 +#usr/share/man/man1/ffmpeg-formats.1 +#usr/share/man/man1/ffmpeg-protocols.1 +#usr/share/man/man1/ffmpeg-resampler.1 +#usr/share/man/man1/ffmpeg-scaler.1 +#usr/share/man/man1/ffmpeg-utils.1 +#usr/share/man/man1/ffmpeg.1 +#usr/share/man/man1/ffprobe-all.1 +#usr/share/man/man1/ffprobe.1 +#usr/share/man/man1/ffserver-all.1 +#usr/share/man/man1/ffserver.1 +#usr/share/man/man3/libavcodec.3 +#usr/share/man/man3/libavdevice.3 +#usr/share/man/man3/libavfilter.3 +#usr/share/man/man3/libavformat.3 +#usr/share/man/man3/libavutil.3 +#usr/share/man/man3/libswresample.3 +#usr/share/man/man3/libswscale.3 diff --git a/lfs/ffmpeg b/lfs/ffmpeg index b3838865e..cd9e8b61f 100644 --- a/lfs/ffmpeg +++ b/lfs/ffmpeg @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,20 +24,17 @@ include Config -VER = 2008-04-13 -THISAPP = ffmpeg-export-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +VER = 3.2.4 +THISAPP = ffmpeg-$(VER) +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = ffmpeg -PAK_VER = 5 +PAK_VER = 6 DEPS = "ffmpeg-libs sdl lame libvorbis xvid" -# Don't use PIC for libavcodec -CFLAGS += -fno-PIC -fno-strict-aliasing -Wa,--noexecstack - ############################################################################### # Top-level Rules ############################################################################### @@ -46,7 +43,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 017ab929ff92be552debb65c589c2183 +$(DL_FILE)_MD5 = 39fd71024ac76ba35f04397021af5606 install : $(TARGET) @@ -78,15 +75,14 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - ln -s $(THISAPP) /usr/src/ffmpeg - cd $(DIR_SRC)/ffmpeg && ./configure --prefix=/usr \ - --enable-shared \ - --enable-postproc \ - --enable-pthreads \ - --enable-gpl - cd $(DIR_SRC)/ffmpeg && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_SRC)/ffmpeg && make install - cd $(DIR_SRC)/ffmpeg && make install-libs + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr \ + --enable-shared \ + --enable-postproc \ + --enable-pthreads \ + --enable-gpl + cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_APP) && make install + cd $(DIR_APP) && make install-libs @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/ffmpeg-libs b/lfs/ffmpeg-libs index b29c97805..0ed657f93 100644 --- a/lfs/ffmpeg-libs +++ b/lfs/ffmpeg-libs @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,10 +24,10 @@ include Config -VER = 2008-04-13 +VER = 3.2.4 THISAPP = ffmpeg-export-$(VER) PROG = ffmpeg-libs -PAK_VER = 5 +PAK_VER = 6 DEPS = "" From e89b407f8894a1378ef9afbdd79180ed3d99a89c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 22 Mar 2017 17:22:26 +0000 Subject: [PATCH 199/464] Fix updated graphs in legacy theme The images are now a little bigger and will be scaled down here, but the iframe box never grows bigger than the max. size of the container. Signed-off-by: Michael Tremer --- html/html/themes/ipfire-legacy/include/style.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/html/html/themes/ipfire-legacy/include/style.css b/html/html/themes/ipfire-legacy/include/style.css index 288a0feeb..2e9ea9266 100644 --- a/html/html/themes/ipfire-legacy/include/style.css +++ b/html/html/themes/ipfire-legacy/include/style.css @@ -443,3 +443,8 @@ table.fw-nat tbody tr td { #rx_kbs { color: green; } #tx_kbs { color: red; } + +iframe.graph { + min-height: 285px; + width: 750px; +} From cda384a280b11461f4114faf4c86c8589df15eb0 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 24 Mar 2017 13:24:42 +0100 Subject: [PATCH 200/464] ipsec: Do not reject connections in on-demand mode When an on-demand VPN connection is not up, the packets will traverse the firewall and be rejected by the IPSECBLOCK chain which will cause that an ICMP error message will be sent to the client. If that does not happen and the packet is being silently dropped, the client will retransmit and by then the VPN connection will hopefully be up. Signed-off-by: Michael Tremer --- config/firewall/ipsec-block | 41 +++++++++++++++++++---- config/rootfiles/core/110/filelists/files | 1 + 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/config/firewall/ipsec-block b/config/firewall/ipsec-block index 9fa8e1a46..96682b894 100644 --- a/config/firewall/ipsec-block +++ b/config/firewall/ipsec-block @@ -23,23 +23,43 @@ VPN_CONFIG="/var/ipfire/vpn/config" block_subnet() { local subnet="${1}" + local action="${2}" # Don't block a wildcard subnet if [ "${subnet}" = "0.0.0.0/0" ] || [ "${subnet}" = "0.0.0.0/0.0.0.0" ]; then return 0 fi - iptables -A IPSECBLOCK -d "${subnet}" -j REJECT --reject-with icmp-net-unreachable + case "${action}" in + reject) + iptables -A IPSECBLOCK -d "${subnet}" -j REJECT --reject-with icmp-net-unreachable + ;; + drop) + iptables -A IPSECBLOCK -d "${subnet}" -j DROP + ;; + *) + return 1 + ;; + esac + + return 0 } block_ipsec() { # Flush all exists rules iptables -F IPSECBLOCK - local id status name lefthost type ctype unknown1 unknown2 unknown3 - local leftsubnets unknown4 righthost rightsubnets rest - while IFS="," read -r id status name lefthost type ctype unkown1 unknown2 unknown3 \ - leftsubnets unknown4 righthost rightsubnets rest; do + local action + + local vars="id status name lefthost type ctype x1 x2 x3 leftsubnets" + vars="${vars} x4 righthost rightsubnets x5 x6 x7 x8 x9 x10 x11 x12" + vars="${vars} x13 x14 x15 x16 x17 x18 x19 x20 x21 proto x22 x23 x24" + vars="${vars} route rest" + + # Register local variables + local ${vars} + + while IFS="," read -r ${vars}; do # Check if the connection is enabled [ "${status}" = "on" ] || continue @@ -49,9 +69,18 @@ block_ipsec() { # Split multiple subnets rightsubnets="${rightsubnets//\|/ }" + case "${route}" in + route) + action="drop" + ;; + *) + action="reject" + ;; + esac + local rightsubnet for rightsubnet in ${rightsubnets}; do - block_subnet "${rightsubnet}" + block_subnet "${rightsubnet}" "${action}" done done < "${VPN_CONFIG}" } diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index 581602710..c6d15d637 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -13,6 +13,7 @@ srv/web/ipfire/cgi-bin/vpnmain.cgi srv/web/ipfire/html/themes/darkdos/include/style.css srv/web/ipfire/html/themes/ipfire/include/css/style.css srv/web/ipfire/html/themes/maniac/include/style.css +usr/lib/firewall/ipsec-block usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 usr/local/bin/xt_geoip_update From e0174da88ba1e1d36f57b6349544059f08fca164 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Wed, 15 Mar 2017 14:32:47 +0100 Subject: [PATCH 201/464] mpd: update to 0.20.6 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/packages/mpd | 1 + lfs/mpd | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/config/rootfiles/packages/mpd b/config/rootfiles/packages/mpd index ea96b693b..c49d33498 100644 --- a/config/rootfiles/packages/mpd +++ b/config/rootfiles/packages/mpd @@ -8,6 +8,7 @@ var/log/mpd.log #usr/share/doc/mpd/NEWS #usr/share/doc/mpd/COMMANDS #usr/share/doc/mpd/README +#usr/share/doc/mpd/README.md #usr/share/doc/mpd/TODO #usr/share/doc/mpd/UPGRADING #usr/share/doc/mpd/mpdconf.example diff --git a/lfs/mpd b/lfs/mpd index 681b5c994..cf2862974 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2012 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,15 +24,15 @@ include Config -VER = 0.16.5 +VER = 0.20.6 THISAPP = mpd-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/${THISAPP} TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd -PAK_VER = 14 +PAK_VER = 15 DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f7564cff12035f6a1112cce770655df7 +$(DL_FILE)_MD5 = 1197a2190fc8ddfccbf4bba3b749cea4 install : $(TARGET) @@ -78,16 +78,20 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr \ - --disable-ipv6 \ - --sysconfdir=/etc \ - --disable-sqlite + --disable-ipv6 \ + --sysconfdir=/etc \ + --disable-sqlite \ + --enable-id3 \ + --enable-vorbis \ + --enable-expat \ + --enable-ffmpeg \ + --enable-flac \ + --enable-lame-encoder \ + --enable-upnp \ + --disable-icu cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) touch /var/log/mpd.error.log touch /var/log/mpd.log - - #install initscripts - $(call INSTALL_INITSCRIPT,mpd) - @$(POSTBUILD) From 0a7dca2c5f8284ff61d78c1f851b4716f7f3d9df Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 10:16:56 +0100 Subject: [PATCH 202/464] unbound: Increase number of parallel queries The parameters are the recommended values for libevent Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index bbf9c002e..6ea49f5d8 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -273,6 +273,10 @@ write_tuning_conf() { echo "rrset-cache-size: $(( ${mem} / 2 ))m" echo "msg-cache-size: $(( ${mem} / 4 ))m" echo "key-cache-size: $(( ${mem} / 4 ))m" + + # Increase parallel queries + echo "outgoing-range: 8192" + echo "num-queries-per-thread: 4096" ) > /etc/unbound/tuning.conf } From 5012e53c290b0bb60c4b4617f4ccaa7b63a6927f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 10:17:33 +0100 Subject: [PATCH 203/464] unbound: Re-use UDP sockets This will make UDP queries faster Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 1 + 1 file changed, 1 insertion(+) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index 6ea49f5d8..00dc301e1 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -262,6 +262,7 @@ write_tuning_conf() { # We run one thread per processor echo "num-threads: ${processors}" + echo "so-reuseport: yes" # Adjust number of slabs echo "infra-cache-slabs: ${slabs}" From c20b20092fb7c9263a9cdb17656eb517f3a5cdff Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 10:24:40 +0100 Subject: [PATCH 204/464] unbound: Increase size of send/receive buffers This will allow to not drop any packets when there is a peak in queries Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index 00dc301e1..1d7522a56 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -278,6 +278,10 @@ write_tuning_conf() { # Increase parallel queries echo "outgoing-range: 8192" echo "num-queries-per-thread: 4096" + + # Use larger send/receive buffers + echo "so-sndbuf: 4m" + echo "so-rcvbuf: 4m" ) > /etc/unbound/tuning.conf } From 128db1a3632fdd4ff95fa0bb865e25cc861f471c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 10:25:39 +0100 Subject: [PATCH 205/464] unbound: Double buffer size Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index 1d7522a56..d11ca82a4 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -246,15 +246,15 @@ write_tuning_conf() { # Large systems with more than 2GB of RAM if [ ${mem} -ge 2048 ]; then - mem=128 + mem=256 # Small systems with less than 256MB of RAM elif [ ${mem} -le 256 ]; then - mem=8 + mem=16 # Everything else else - mem=32 + mem=64 fi ( From 4a0d69ca464aba3f27e7e2a98247f1630ef664bb Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 10:29:03 +0100 Subject: [PATCH 206/464] unbound: Increase memory size on even larger systems Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index d11ca82a4..7e8042918 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -244,10 +244,22 @@ write_tuning_conf() { # In the worst case scenario, unbound can use double the # amount of memory allocated to a cache due to malloc overhead + # Even larger systems with more than 8GB of RAM + if [ ${mem} -ge 8192 ]; then + mem=1024 + + # Extra large systems with more than 4GB of RAM + elif [ ${mem} -ge 4096 ]; then + mem=512 + # Large systems with more than 2GB of RAM - if [ ${mem} -ge 2048 ]; then + elif [ ${mem} -ge 2048 ]; then mem=256 + # Medium systems with more than 1GB of RAM + elif [ ${mem} -ge 1024 ]; then + mem=128 + # Small systems with less than 256MB of RAM elif [ ${mem} -le 256 ]; then mem=16 From 2170bad5b99a10eff615e7e8c8b289e073985fc9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 17:14:41 +0100 Subject: [PATCH 207/464] setup: Allow setting netmask to 255.255.255.255 Some hosters require that the subnet mask of the RED network is set to 255.255.255.255. This was not possible to save before. Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/files | 1 + src/setup/netstuff.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/core/110/filelists/files b/config/rootfiles/core/110/filelists/files index c6d15d637..4a7d710d7 100644 --- a/config/rootfiles/core/110/filelists/files +++ b/config/rootfiles/core/110/filelists/files @@ -17,6 +17,7 @@ usr/lib/firewall/ipsec-block usr/lib/libssp.so.0 usr/lib/libssp.so.0.0.0 usr/local/bin/xt_geoip_update +usr/sbin/setup var/ipfire/langs var/ipfire/general-functions.pl var/ipfire/graphs.pl diff --git a/src/setup/netstuff.c b/src/setup/netstuff.c index 000411c75..66592bb94 100644 --- a/src/setup/netstuff.c +++ b/src/setup/netstuff.c @@ -75,7 +75,8 @@ int changeaddress(struct keyvalue *kv, char *colour, int typeflag, int startstatictype = 0; int startdhcptype = 0; int startpppoetype = 0; - + unsigned char buffer[sizeof(struct in_addr)]; + /* Build some key strings. */ sprintf(addressfield, "%s_ADDRESS", colour); sprintf(netmaskfield, "%s_NETMASK", colour); @@ -184,7 +185,7 @@ int changeaddress(struct keyvalue *kv, char *colour, int typeflag, strcat(message, "\n"); error = 1; } - if (inet_addr(netmaskresult) == INADDR_NONE) + if (inet_pton(AF_INET, netmaskresult, &buffer) == 0) { strcat(message, _("Network mask")); strcat(message, "\n"); From 0be884d6b222193419ddd3fdff02e7348fe92faf Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 17:15:35 +0100 Subject: [PATCH 208/464] network: Create route to gateway Some hosters have their gateway in a different subnet than the RED interface is to save IPv4 address space. This patch sets a host route to that gateway so that IPFire can be installed in data centres that use such technique. Signed-off-by: Michael Tremer --- src/initscripts/networking/red | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/initscripts/networking/red b/src/initscripts/networking/red index 9dfbad65e..00e739cab 100644 --- a/src/initscripts/networking/red +++ b/src/initscripts/networking/red @@ -124,6 +124,9 @@ case "${1}" in echo -n "${DNS2}" > /var/ipfire/red/dns2 touch /var/ipfire/red/active + # Create route to default gateway + ip route add ${GATEWAY} dev ${DEVICE} + boot_mesg "Setting up default gateway ${GATEWAY}..." ip route add default via ${GATEWAY} dev ${DEVICE} evaluate_retval From baa8a93fd1817f4ad75aa1c22533a64a9c75b1c4 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 25 Mar 2017 22:50:18 +0100 Subject: [PATCH 209/464] motion: Update to 4.0.1 'ffmpeg' seems to need this update. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/motion | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lfs/motion b/lfs/motion index a09133887..d226c1c58 100644 --- a/lfs/motion +++ b/lfs/motion @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2017 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,16 +24,16 @@ include Config -VER = 3.2.12 +VER = 4.0.1 -THISAPP = motion-$(VER) +THISAPP = motion-release-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = motion -PAK_VER = 1 +PAK_VER = 2 DEPS = "ffmpeg" ############################################################################### @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 1ba0065ed50509aaffb171594c689f46 +$(DL_FILE)_MD5 = 5c87f90c4118d8cf0fb14700db69118f install : $(TARGET) @@ -81,6 +81,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) #Install obsolete V4L1 videodev.h cp $(DIR_SRC)/config/include/obsolete_videodev.h /usr/include/linux/videodev.h + cd $(DIR_APP) && autoreconf -fiv + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install From 109b1914d1743e85727b01cd7388b19c278a60c2 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 27 Mar 2017 21:01:54 +0200 Subject: [PATCH 210/464] motion 4.0.1: suggested new rootfile Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/packages/motion | 45 ++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/config/rootfiles/packages/motion b/config/rootfiles/packages/motion index aa3e5b78b..82a80973f 100644 --- a/config/rootfiles/packages/motion +++ b/config/rootfiles/packages/motion @@ -1,25 +1,32 @@ -#etc/motion-dist.conf +etc/motion etc/motion.conf +etc/motion/camera1-dist.conf +etc/motion/camera2-dist.conf +etc/motion/camera3-dist.conf +etc/motion/camera4-dist.conf +#etc/motion/motion-dist.conf usr/bin/motion -#usr/share/doc/motion-3.2.12 -#usr/share/doc/motion-3.2.12/CHANGELOG -#usr/share/doc/motion-3.2.12/COPYING -#usr/share/doc/motion-3.2.12/CREDITS -#usr/share/doc/motion-3.2.12/INSTALL -#usr/share/doc/motion-3.2.12/README -#usr/share/doc/motion-3.2.12/motion_guide.html +#usr/share/doc/motion +#usr/share/doc/motion/CHANGELOG +#usr/share/doc/motion/COPYING +#usr/share/doc/motion/CREDITS +#usr/share/doc/motion/README.md +#usr/share/doc/motion/mask1.png +#usr/share/doc/motion/motion_guide.html +#usr/share/doc/motion/normal.jpg +#usr/share/doc/motion/outputmotion1.jpg +#usr/share/doc/motion/outputnormal1.jpg #usr/share/man/man1/motion.1 -#usr/share/motion-3.2.12 -#usr/share/motion-3.2.12/examples -#usr/share/motion-3.2.12/examples/motion-dist.conf -#usr/share/motion-3.2.12/examples/motion.init-Debian -#usr/share/motion-3.2.12/examples/motion.init-Fedora -#usr/share/motion-3.2.12/examples/motion.init-FreeBSD.sh -#usr/share/motion-3.2.12/examples/motion.init-RH -#usr/share/motion-3.2.12/examples/thread1.conf -#usr/share/motion-3.2.12/examples/thread2.conf -#usr/share/motion-3.2.12/examples/thread3.conf -#usr/share/motion-3.2.12/examples/thread4.conf +#usr/share/motion +#usr/share/motion/examples +#usr/share/motion/examples/camera1-dist.conf +#usr/share/motion/examples/camera2-dist.conf +#usr/share/motion/examples/camera3-dist.conf +#usr/share/motion/examples/camera4-dist.conf +#usr/share/motion/examples/motion-dist.conf +#usr/share/motion/examples/motion.init-Debian +#usr/share/motion/examples/motion.init-FreeBSD.sh +#usr/share/motion/examples/motion.service var/ipfire/backup/addons/includes/motion etc/rc.d/init.d/motion etc/rc.d/rc0.d/K01motion From 21094f574e5a607159f25e77e25334d52ea31a7b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 25 Mar 2017 22:44:55 +0100 Subject: [PATCH 211/464] mpd 0.20.6: fixes for lfs-file Package refused to build without initscript. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/mpd | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lfs/mpd b/lfs/mpd index cf2862974..3213b27f6 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -77,7 +77,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr \ + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ --disable-ipv6 \ --sysconfdir=/etc \ --disable-sqlite \ @@ -91,6 +92,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --disable-icu cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install + + #install initscripts + $(call INSTALL_INITSCRIPT,mpd) + @rm -rf $(DIR_APP) touch /var/log/mpd.error.log touch /var/log/mpd.log From 776363274f82bb389b040bfe8f281edf5307e047 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 25 Mar 2017 22:25:09 +0100 Subject: [PATCH 212/464] ntp: Update to 4.2.8p10 "It addresses 6 medum- and 5 low-severity security issues, 4 informational security topics, 15 bugfixes, and contains other improvements over 4.2.8p9." For a complete list, see: http://support.ntp.org/bin/view/Main/SecurityNotice#Recent_Vulnerabilities Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/ntp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/ntp b/lfs/ntp index 572bb882f..1f1c5244d 100644 --- a/lfs/ntp +++ b/lfs/ntp @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 4.2.8p9 +VER = 4.2.8p10 THISAPP = ntp-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 857452b05f5f2e033786f77ade1974ed +$(DL_FILE)_MD5 = 745384ed0dedb3f66b33fe84d66466f9 install : $(TARGET) From 73b3a1264fcfbf93390ec9d9cb1f12ec62e73878 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 28 Mar 2017 17:20:50 +0100 Subject: [PATCH 213/464] core110: Ship updated ntp package Signed-off-by: Michael Tremer --- config/rootfiles/core/110/filelists/ntp | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/110/filelists/ntp diff --git a/config/rootfiles/core/110/filelists/ntp b/config/rootfiles/core/110/filelists/ntp new file mode 120000 index 000000000..7542d86cb --- /dev/null +++ b/config/rootfiles/core/110/filelists/ntp @@ -0,0 +1 @@ +../../../common/ntp \ No newline at end of file From 183b23b5ca703bd0ee837e135c84a9b91b1fcb91 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 2 Apr 2017 19:48:20 +0100 Subject: [PATCH 214/464] DNS: Show DNSSEC status on index page if deavtivated Signed-off-by: Michael Tremer --- config/cfgroot/general-functions.pl | 12 ++++++++++++ doc/language_issues.es | 1 + doc/language_issues.fr | 1 + doc/language_issues.it | 1 + doc/language_issues.nl | 1 + doc/language_issues.pl | 1 + doc/language_issues.ru | 1 + doc/language_issues.tr | 1 + doc/language_missings | 4 ++++ html/cgi-bin/index.cgi | 5 +++++ langs/de/cgi-bin/de.pl | 1 + langs/en/cgi-bin/en.pl | 1 + src/initscripts/system/unbound | 6 ++++++ 13 files changed, 36 insertions(+) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 188bb7f8b..5e5417d09 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -1128,4 +1128,16 @@ sub get_red_interface() { return $interface; } +sub dnssec_status() { + my $path = "${General::swroot}/red/dnssec-status"; + + open(STATUS, $path) or return 0; + my $status = ; + close(STATUS); + + chomp($status); + + return $status; +} + 1; diff --git a/doc/language_issues.es b/doc/language_issues.es index def789e33..3dec2dbb3 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -716,6 +716,7 @@ WARNING: untranslated string: dnsforward entries WARNING: untranslated string: dnsforward forward_server WARNING: untranslated string: dnsforward zone WARNING: untranslated string: dnssec aware +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: dnssec information WARNING: untranslated string: dnssec not supported WARNING: untranslated string: dnssec validating diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 25ee84103..fa5387c8b 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -726,6 +726,7 @@ WARNING: untranslated string: dnsforward entries WARNING: untranslated string: dnsforward forward_server WARNING: untranslated string: dnsforward zone WARNING: untranslated string: dnssec aware +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: dnssec information WARNING: untranslated string: dnssec not supported WARNING: untranslated string: dnssec validating diff --git a/doc/language_issues.it b/doc/language_issues.it index 83268a3c7..09338a28a 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -714,6 +714,7 @@ WARNING: untranslated string: dhcp dns update WARNING: untranslated string: dhcp dns update algo WARNING: untranslated string: dhcp dns update secret WARNING: untranslated string: dl client arch insecure +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: email config WARNING: untranslated string: email empty field WARNING: untranslated string: email invalid diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 54653728d..3390ef368 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -721,6 +721,7 @@ WARNING: untranslated string: dhcp dns update secret WARNING: untranslated string: dl client arch insecure WARNING: untranslated string: dns servers WARNING: untranslated string: dnssec aware +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: dnssec information WARNING: untranslated string: dnssec not supported WARNING: untranslated string: dnssec validating diff --git a/doc/language_issues.pl b/doc/language_issues.pl index def789e33..3dec2dbb3 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -716,6 +716,7 @@ WARNING: untranslated string: dnsforward entries WARNING: untranslated string: dnsforward forward_server WARNING: untranslated string: dnsforward zone WARNING: untranslated string: dnssec aware +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: dnssec information WARNING: untranslated string: dnssec not supported WARNING: untranslated string: dnssec validating diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 3d2b35668..303e19b95 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -720,6 +720,7 @@ WARNING: untranslated string: dnsforward entries WARNING: untranslated string: dnsforward forward_server WARNING: untranslated string: dnsforward zone WARNING: untranslated string: dnssec aware +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: dnssec information WARNING: untranslated string: dnssec not supported WARNING: untranslated string: dnssec validating diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 51ba00de4..af17e3756 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -706,6 +706,7 @@ WARNING: translation string unused: yearly firewallhits WARNING: untranslated string: Scan for Songs WARNING: untranslated string: application layer gateways WARNING: untranslated string: bytes +WARNING: untranslated string: dnssec disabled warning WARNING: untranslated string: fwhost cust geoipgrp WARNING: untranslated string: fwhost err hostip WARNING: untranslated string: guardian diff --git a/doc/language_missings b/doc/language_missings index acec27520..a6c7188a6 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -106,6 +106,7 @@ < dnsforward forward_server < dnsforward zone < dnssec aware +< dnssec disabled warning < dnssec information < dnssec not supported < dnssec validating @@ -721,6 +722,7 @@ < dnsforward forward_server < dnsforward zone < dnssec aware +< dnssec disabled warning < dnssec information < dnssec not supported < dnssec validating @@ -1318,6 +1320,7 @@ < dnsforward forward_server < dnsforward zone < dnssec aware +< dnssec disabled warning < dnssec information < dnssec not supported < dnssec validating @@ -1904,6 +1907,7 @@ < dnsforward forward_server < dnsforward zone < dnssec aware +< dnssec disabled warning < dnssec information < dnssec not supported < dnssec validating diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index 85a0c94cd..7c1746259 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -500,6 +500,11 @@ END &Header::closebox(); } +my $dnssec_status = &General::dnssec_status(); +if ($dnssec_status eq "off") { + $warnmessage .= "
  • $Lang::tr{'dnssec disabled warning'}
  • "; +} + # Fireinfo if ( ! -e "/var/ipfire/main/send_profile") { $warnmessage .= "
  • $Lang::tr{'fireinfo please enable'}
  • "; diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index ad8db192b..bda0e2692 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -767,6 +767,7 @@ 'dnsforward forward_server' => 'DNS-Server', 'dnsforward zone' => 'Zone', 'dnssec aware' => 'DNSSEC-aware', +'dnssec disabled warning' => 'WARNING: DNSSEC wurde deaktiviert', 'dnssec information' => 'DNSSEC-Informationen', 'dnssec not supported' => 'DNSSEC wird nicht unterstützt', 'dnssec validating' => 'DNSSEC-validierend', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 3deb4b555..6608ceb63 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -792,6 +792,7 @@ 'dnsforward forward_server' => 'Nameserver', 'dnsforward zone' => 'Zone', 'dnssec aware' => 'DNSSEC Aware', +'dnssec disabled warning' => 'WARNING: DNSSEC has been disabled', 'dnssec information' => 'DNSSEC Information', 'dnssec not supported' => 'DNSSEC Not supported', 'dnssec validating' => 'DNSSEC Validating', diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index 7e8042918..a1763a1fe 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -439,12 +439,18 @@ enable_dnssec() { # Don't do anything if DNSSEC is already activated [ "${status}" = "no" ] && return 0 + # Log DNSSEC status + echo "on" > /var/ipfire/red/dnssec-status + # Activate DNSSEC and flush cache with any stale and unvalidated data unbound-control -q set_option val-permissive-mode: no unbound-control -q flush_zone . } disable_dnssec() { + # Log DNSSEC status + echo "off" > /var/ipfire/red/dnssec-status + unbound-control -q set_option val-permissive-mode: yes } From 39e71549764d91324cfc5b43e824ff0080bf8f02 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 26 Feb 2017 21:21:30 +0100 Subject: [PATCH 215/464] squid 3.5.24: latest patch (14143) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 1 + src/patches/squid/squid-3.5-14143.patch | 55 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14143.patch diff --git a/lfs/squid b/lfs/squid index 6d557517c..8ac878cd0 100644 --- a/lfs/squid +++ b/lfs/squid @@ -71,6 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14142.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14143.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.24-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14143.patch b/src/patches/squid/squid-3.5-14143.patch new file mode 100644 index 000000000..49b3eb8ef --- /dev/null +++ b/src/patches/squid/squid-3.5-14143.patch @@ -0,0 +1,55 @@ +------------------------------------------------------------ +revno: 14143 +revision-id: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 +parent: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sat 2017-02-25 18:50:14 +1300 +message: + Fix regression in CONNECT authentication after rev.14142 +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: bedc99ffdffd1e999c98c33faa830d4e9d1fc01d +# timestamp: 2017-02-25 05:51:22 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170208054033-\ +# pxqn8rs4yu713ijq +# +# Begin patch +=== modified file 'src/client_side_request.cc' +--- src/client_side_request.cc 2017-02-08 05:40:33 +0000 ++++ src/client_side_request.cc 2017-02-25 05:50:14 +0000 +@@ -1442,6 +1442,14 @@ + return false; + } + ++ // Do not bump during authentication: clients would not proxy-authenticate ++ // if we delay a 407 response and respond with 200 OK to CONNECT. ++ if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { ++ http->al->ssl.bumpMode = Ssl::bumpEnd; // SslBump does not apply; log - ++ debugs(85, 5, HERE << "no SslBump during proxy authentication"); ++ return false; ++ } ++ + if (error) { + debugs(85, 5, "SslBump applies. Force bump action on error " << err_type_str[(error->type >= ERR_NONE && error->type < ERR_MAX) ? error->type : ERR_NONE]); + http->sslBumpNeed(Ssl::bumpBump); +@@ -1449,14 +1457,6 @@ + return false; + } + +- // Do not bump during authentication: clients would not proxy-authenticate +- // if we delay a 407 response and respond with 200 OK to CONNECT. +- if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { +- http->al->ssl.bumpMode = Ssl::bumpEnd; // SslBump does not apply; log - +- debugs(85, 5, HERE << "no SslBump during proxy authentication"); +- return false; +- } +- + debugs(85, 5, HERE << "SslBump possible, checking ACL"); + + ACLFilledChecklist *aclChecklist = clientAclChecklistCreate(Config.accessList.ssl_bump, http); + From a5c0ef3679d59f081b8c4e3d4dca96feb058b7b4 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 27 Feb 2017 18:38:17 +0100 Subject: [PATCH 216/464] squid 3.5.24: latest patches (14144-14148) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 5 ++ src/patches/squid/squid-3.5-14144.patch | 43 +++++++++++++++++ src/patches/squid/squid-3.5-14145.patch | 33 +++++++++++++ src/patches/squid/squid-3.5-14146.patch | 41 ++++++++++++++++ src/patches/squid/squid-3.5-14147.patch | 37 +++++++++++++++ src/patches/squid/squid-3.5-14148.patch | 62 +++++++++++++++++++++++++ 6 files changed, 221 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14144.patch create mode 100644 src/patches/squid/squid-3.5-14145.patch create mode 100644 src/patches/squid/squid-3.5-14146.patch create mode 100644 src/patches/squid/squid-3.5-14147.patch create mode 100644 src/patches/squid/squid-3.5-14148.patch diff --git a/lfs/squid b/lfs/squid index 8ac878cd0..5f12b9b05 100644 --- a/lfs/squid +++ b/lfs/squid @@ -72,6 +72,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14142.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14143.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14144.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14145.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14146.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14147.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14148.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.24-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14144.patch b/src/patches/squid/squid-3.5-14144.patch new file mode 100644 index 000000000..592a774d6 --- /dev/null +++ b/src/patches/squid/squid-3.5-14144.patch @@ -0,0 +1,43 @@ +------------------------------------------------------------ +revno: 14144 +revision-id: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g +parent: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 +author: Alex Rousskov +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2017-02-26 21:46:24 +1300 +message: + Fix crash when configuring with invalid delay_parameters restore value. + + ... like none/none. Introduced in rev which fixed another, much + bigger delay_parameters parsing bug. + + TODO: Reject all invalid input, including restore/max of "-/100". + + TODO: Fix misleading/wrong associated error messages. For example: + ERROR: invalid delay rate 'none/none'. Expecting restore/max or 'none' + ERROR: restore rate in '1/none' is not a number. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 42f47b8ee1da049d57e6af76ce755e459d2fc9fd +# timestamp: 2017-02-26 08:51:02 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170225055014-\ +# j7v5xax13u4jddr9 +# +# Begin patch +=== modified file 'src/DelaySpec.cc' +--- src/DelaySpec.cc 2017-01-01 00:16:45 +0000 ++++ src/DelaySpec.cc 2017-02-26 08:46:24 +0000 +@@ -55,7 +55,7 @@ + + // parse the first digits into restore_bps + const char *p = NULL; +- if (!StringToInt(token, restore_bps, &p, 10) && *p != '/') { ++ if (!StringToInt(token, restore_bps, &p, 10) || *p != '/') { + debugs(77, DBG_CRITICAL, "ERROR: invalid delay rate '" << token << "'. Expecting restore/max or 'none'."); + self_destruct(); + } + diff --git a/src/patches/squid/squid-3.5-14145.patch b/src/patches/squid/squid-3.5-14145.patch new file mode 100644 index 000000000..aaa56ed33 --- /dev/null +++ b/src/patches/squid/squid-3.5-14145.patch @@ -0,0 +1,33 @@ +------------------------------------------------------------ +revno: 14145 +revision-id: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s +parent: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2017-02-26 21:50:09 +1300 +message: + Fix missing CRLF on FTP timeout ABORT commands +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: a290f77545e17012eea87e6315a9d375bff16752 +# timestamp: 2017-02-26 08:51:05 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170226084624-\ +# 5tkl3bdrqz8nlp9g +# +# Begin patch +=== modified file 'src/clients/FtpGateway.cc' +--- src/clients/FtpGateway.cc 2017-01-01 00:16:45 +0000 ++++ src/clients/FtpGateway.cc 2017-02-26 08:50:09 +0000 +@@ -1775,7 +1775,7 @@ + + // ABORT on timeouts. server may be waiting on a broken TCP link. + if (io.xerrno == Comm::TIMEOUT) +- writeCommand("ABOR"); ++ writeCommand("ABOR\r\n"); + + // try another connection attempt with some other method + ftpSendPassive(this); + diff --git a/src/patches/squid/squid-3.5-14146.patch b/src/patches/squid/squid-3.5-14146.patch new file mode 100644 index 000000000..391fa35d8 --- /dev/null +++ b/src/patches/squid/squid-3.5-14146.patch @@ -0,0 +1,41 @@ +------------------------------------------------------------ +revno: 14146 +revision-id: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t +parent: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2017-02-26 21:52:45 +1300 +message: + Check that -k argument is provided before trying to use it. + + Detected by Coverity Scan. Issue 1364726. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 31bba06ced5b67f892e4be897b05ec3744b2a942 +# timestamp: 2017-02-26 09:51:00 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170226085009-\ +# tj3o81s5ybk8ly9s +# +# Begin patch +=== modified file 'src/main.cc' +--- src/main.cc 2017-01-01 00:16:45 +0000 ++++ src/main.cc 2017-02-26 08:52:45 +0000 +@@ -425,11 +425,11 @@ + /** \par k + * Run the administrative action given following the option */ + +- /** \li When its an unknown option display the usage help. */ +- if ((int) strlen(optarg) < 1) ++ /** \li When it is missing or an unknown option display the usage help. */ ++ if (!optarg || strlen(optarg) < 1) + usage(); + +- if (!strncmp(optarg, "reconfigure", strlen(optarg))) ++ else if (!strncmp(optarg, "reconfigure", strlen(optarg))) + /** \li On reconfigure send SIGHUP. */ + opt_send_signal = SIGHUP; + else if (!strncmp(optarg, "rotate", strlen(optarg))) + diff --git a/src/patches/squid/squid-3.5-14147.patch b/src/patches/squid/squid-3.5-14147.patch new file mode 100644 index 000000000..a8b52f388 --- /dev/null +++ b/src/patches/squid/squid-3.5-14147.patch @@ -0,0 +1,37 @@ +------------------------------------------------------------ +revno: 14147 +revision-id: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn +parent: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sun 2017-02-26 21:56:17 +1300 +message: + ext_kerberos_ldap_group_acl: fix unused value warnings + + Detected by Coverity Scan. Issues 1364748 and 1364749. +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: fd770175ba851fc62de4a085414c8fd996b53e46 +# timestamp: 2017-02-26 09:51:04 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170226085245-\ +# vcvc7nemupizbe4t +# +# Begin patch +=== modified file 'helpers/external_acl/kerberos_ldap_group/support_ldap.cc' +--- helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2017-01-01 00:16:45 +0000 ++++ helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2017-02-26 08:56:17 +0000 +@@ -919,8 +919,8 @@ + /* + * Initialise ldap + */ +- ldap_debug = 127 /* LDAP_DEBUG_TRACE */ ; +- ldap_debug = -1 /* LDAP_DEBUG_ANY */ ; ++// ldap_debug = 127 /* LDAP_DEBUG_TRACE */ ; ++// ldap_debug = -1 /* LDAP_DEBUG_ANY */ ; + ldap_debug = 0; + (void) ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldap_debug); + #endif + diff --git a/src/patches/squid/squid-3.5-14148.patch b/src/patches/squid/squid-3.5-14148.patch new file mode 100644 index 000000000..ce7d9667c --- /dev/null +++ b/src/patches/squid/squid-3.5-14148.patch @@ -0,0 +1,62 @@ +------------------------------------------------------------ +revno: 14148 +revision-id: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is +parent: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn +author: Alexander Gozman +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Mon 2017-02-27 00:09:42 +1300 +message: + Native FTP relay: NAT and TPROXY interception fixes +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 63f57f0ddddf0f231c3ef88a12728a707828c6ad +# timestamp: 2017-02-26 11:51:04 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170226085617-\ +# 89jfjndt62i83qtn +# +# Begin patch +=== modified file 'src/servers/FtpServer.cc' +--- src/servers/FtpServer.cc 2017-01-01 00:16:45 +0000 ++++ src/servers/FtpServer.cc 2017-02-26 11:09:42 +0000 +@@ -1454,9 +1454,33 @@ + Comm::ConnectionPointer conn = new Comm::Connection(); + conn->flags |= COMM_DOBIND; + +- // Use local IP address of the control connection as the source address +- // of the active data connection, or some clients will refuse to accept. +- conn->setAddrs(clientConnection->local, cltAddr); ++ if (clientConnection->flags & COMM_INTERCEPTION) { ++ // In the case of NAT interception conn->local value is not set ++ // because the TCP stack will automatically pick correct source ++ // address for the data connection. We must only ensure that IP ++ // version matches client's address. ++ conn->local.setAnyAddr(); ++ ++ if (cltAddr.isIPv4()) ++ conn->local.setIPv4(); ++ ++ conn->remote = cltAddr; ++ } else { ++ // In the case of explicit-proxy the local IP of the control connection ++ // is the Squid IP the client is knowingly talking to. ++ // ++ // In the case of TPROXY the IP address of the control connection is ++ // server IP the client is connecting to, it can be spoofed by Squid. ++ // ++ // In both cases some clients may refuse to accept data connections if ++ // these control connectin local-IP's are not used. ++ conn->setAddrs(clientConnection->local, cltAddr); ++ ++ // Using non-local addresses in TPROXY mode requires appropriate socket option. ++ if (clientConnection->flags & COMM_TRANSPARENT) ++ conn->flags |= COMM_TRANSPARENT; ++ } ++ + // RFC 959 requires active FTP connections to originate from port 20 + // but that would preclude us from supporting concurrent transfers! (XXX?) + conn->local.port(0); + From 24a80f0c22d2e3c3654ba0168dfd49f4a4de2185 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 2 Apr 2017 10:09:08 +0200 Subject: [PATCH 217/464] squid 3.5.24: latest patches (14149-14153) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 5 + src/patches/squid/squid-3.5-14149.patch | 78 ++++++ src/patches/squid/squid-3.5-14150.patch | 32 +++ src/patches/squid/squid-3.5-14151.patch | 36 +++ src/patches/squid/squid-3.5-14152.patch | 35 +++ src/patches/squid/squid-3.5-14153.patch | 353 ++++++++++++++++++++++++ 6 files changed, 539 insertions(+) create mode 100644 src/patches/squid/squid-3.5-14149.patch create mode 100644 src/patches/squid/squid-3.5-14150.patch create mode 100644 src/patches/squid/squid-3.5-14151.patch create mode 100644 src/patches/squid/squid-3.5-14152.patch create mode 100644 src/patches/squid/squid-3.5-14153.patch diff --git a/lfs/squid b/lfs/squid index 5f12b9b05..269902067 100644 --- a/lfs/squid +++ b/lfs/squid @@ -77,6 +77,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14146.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14147.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14148.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14149.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14150.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14151.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14152.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14153.patch cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.24-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi diff --git a/src/patches/squid/squid-3.5-14149.patch b/src/patches/squid/squid-3.5-14149.patch new file mode 100644 index 000000000..a9fa59754 --- /dev/null +++ b/src/patches/squid/squid-3.5-14149.patch @@ -0,0 +1,78 @@ +------------------------------------------------------------ +revno: 14149 +revision-id: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 +parent: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4508 +author: Christos Tsantilas +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2017-03-31 01:31:22 +1200 +message: + Bug 4508: Host forgery stalls intercepted being-spliced connections. + + Most SslBump splicing happens after getting SNI. SNI goes into the + second fake CONNECT request, where it may fail the host forgery check. + A failed check triggers an HTTP error response from Squid. When + attempting to send that response to the TLS client, Squid checks whether + all previously pipelined HTTP requests on the connection have finished. + + Prior to this fix, Squid left the first fake CONNECT request in the + connection pipeline despite adding the second fake CONNECT. That first + CONNECT stalled the error response described above, with Squid waiting, + in vain, for that already handled [fake] transaction to finish. + + Also call quitAfterError() to force Squid to close the connection (after + writing the discussed error response) instead of just logging a + [misleading] "kick abandoning [connection]" message in cache.log. + + TODO: Always pop the first CONNECT when generating a second one. + Unifying CONNECT treatment is difficult because code like tunnel.cc + wants that CONNECT to be in the pipeline. Polishing that would probably + require disassociating ConnStateData from tunnel.cc (at least). + + TODO: Apply the existing "delayed error" logic (that optionally bumps + TLS connections to deliver [some] errors to [some] SSL/TLS clients) to + host forgery errors. Otherwise, the plain HTTP error message cannot be + understood by the intercepted TLS client. + + This is a Measurement Factory project +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: db616fff2ac0df73cf41d380f07a96b773cf2be5 +# timestamp: 2017-03-30 13:51:17 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170226110942-\ +# 90rcwhx3fwa2l7is +# +# Begin patch +=== modified file 'src/client_side.cc' +--- src/client_side.cc 2017-01-27 13:38:24 +0000 ++++ src/client_side.cc 2017-03-30 13:31:22 +0000 +@@ -4376,7 +4376,12 @@ + fd_table[connState->clientConnection->fd].read_method = &default_read_method; + fd_table[connState->clientConnection->fd].write_method = &default_write_method; + ++ ClientSocketContext::Pointer context = connState->getCurrentContext(); ++ Must(context != NULL); + if (connState->transparent()) { ++ // If we are going to fake the second CONNECT, clear the first one. ++ context->connIsFinished(); ++ + // fake a CONNECT request to force connState to tunnel + // XXX: copy from MemBuf reallocates, not a regression since old code did too + SBuf temp; + +=== modified file 'src/client_side_request.cc' +--- src/client_side_request.cc 2017-02-25 05:50:14 +0000 ++++ src/client_side_request.cc 2017-03-30 13:31:22 +0000 +@@ -561,6 +561,7 @@ + debugs(85, DBG_IMPORTANT, "SECURITY ALERT: on URL: " << urlCanonical(http->request)); + + // IP address validation for Host: failed. reject the connection. ++ http->getConn()->quitAfterError(http->request); + clientStreamNode *node = (clientStreamNode *)http->client_stream.tail->prev->data; + clientReplyContext *repContext = dynamic_cast(node->data.getRaw()); + assert (repContext); + diff --git a/src/patches/squid/squid-3.5-14150.patch b/src/patches/squid/squid-3.5-14150.patch new file mode 100644 index 000000000..dfe97a0ef --- /dev/null +++ b/src/patches/squid/squid-3.5-14150.patch @@ -0,0 +1,32 @@ +------------------------------------------------------------ +revno: 14150 +revision-id: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y +parent: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Fri 2017-03-31 12:51:52 +1200 +message: + Fix variable shadowing after rev.14149 +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: ae1e30fff31cf8b411c62eba344fdc944692aecf +# timestamp: 2017-03-31 01:51:06 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170330133122-\ +# zcpblbvnuq7mjvq3 +# +# Begin patch +=== modified file 'src/client_side.cc' +--- src/client_side.cc 2017-03-30 13:31:22 +0000 ++++ src/client_side.cc 2017-03-31 00:51:52 +0000 +@@ -4390,7 +4390,6 @@ + } else { + // in.buf still has the "CONNECT ..." request data, reset it to SSL hello message + connState->in.buf.append(rbuf.content(), rbuf.contentSize()); +- ClientSocketContext::Pointer context = connState->getCurrentContext(); + ClientHttpRequest *http = context->http; + tunnelStart(http, &http->out.size, &http->al->http.code, http->al); + } + diff --git a/src/patches/squid/squid-3.5-14151.patch b/src/patches/squid/squid-3.5-14151.patch new file mode 100644 index 000000000..d22387d53 --- /dev/null +++ b/src/patches/squid/squid-3.5-14151.patch @@ -0,0 +1,36 @@ +------------------------------------------------------------ +revno: 14151 +revision-id: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id +parent: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y +author: Garri Djavadyan +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sat 2017-04-01 12:38:31 +1300 +message: + Docs: update refresh_pattern description regarding 'max' option +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: be64101730dcb2deb664d6594d20a7295a666b98 +# timestamp: 2017-03-31 23:40:50 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170331005152-\ +# 8exm3hsly1v1jk8y +# +# Begin patch +=== modified file 'src/cf.data.pre' +--- src/cf.data.pre 2017-01-01 00:16:45 +0000 ++++ src/cf.data.pre 2017-03-31 23:38:31 +0000 +@@ -5401,7 +5401,9 @@ + will be considered fresh. + + 'Max' is an upper limit on how long objects without an explicit +- expiry time will be considered fresh. ++ expiry time will be considered fresh. The value is also used ++ to form Cache-Control: max-age header for a request sent from ++ Squid to origin/parent. + + options: override-expire + override-lastmod + diff --git a/src/patches/squid/squid-3.5-14152.patch b/src/patches/squid/squid-3.5-14152.patch new file mode 100644 index 000000000..81bd3a039 --- /dev/null +++ b/src/patches/squid/squid-3.5-14152.patch @@ -0,0 +1,35 @@ +------------------------------------------------------------ +revno: 14152 +revision-id: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl +parent: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sat 2017-04-01 12:39:21 +1300 +message: + libtrie: Fix 'make check' when run before 'make all' +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: 8399bbfe7b517fa6306bdc61d212a9a4fcc9e88b +# timestamp: 2017-03-31 23:40:52 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170331233831-\ +# m3hfrigo82uhz4id +# +# Begin patch +=== modified file 'lib/libTrie/Makefile.am' +--- lib/libTrie/Makefile.am 2017-01-01 00:16:45 +0000 ++++ lib/libTrie/Makefile.am 2017-03-31 23:39:21 +0000 +@@ -8,8 +8,8 @@ + include $(top_srcdir)/src/Common.am + include $(top_srcdir)/src/TestHeaders.am + +-DIST_SUBDIRS = test +-SUBDIRS = test ++DIST_SUBDIRS = . test ++SUBDIRS = . test + + noinst_LIBRARIES = libTrie.a + + diff --git a/src/patches/squid/squid-3.5-14153.patch b/src/patches/squid/squid-3.5-14153.patch new file mode 100644 index 000000000..c236a6115 --- /dev/null +++ b/src/patches/squid/squid-3.5-14153.patch @@ -0,0 +1,353 @@ +------------------------------------------------------------ +revno: 14153 +revision-id: squid3@treenet.co.nz-20170331234747-59glu40hhx0kf8fx +parent: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl +fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4688 +author: Lubos Uhliarik +committer: Amos Jeffries +branch nick: 3.5 +timestamp: Sat 2017-04-01 12:47:47 +1300 +message: + Bug 4688: various typo error(s) in man page(s) +------------------------------------------------------------ +# Bazaar merge directive format 2 (Bazaar 0.90) +# revision_id: squid3@treenet.co.nz-20170331234747-59glu40hhx0kf8fx +# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# testament_sha1: a05d98a4e328e39f2a490cfeff72ad8735cc6b6e +# timestamp: 2017-03-31 23:48:51 +0000 +# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 +# base_revision_id: squid3@treenet.co.nz-20170331233921-\ +# efxhs8vy025fvrnl +# +# Begin patch +=== modified file 'compat/compat.h' +--- compat/compat.h 2017-01-01 00:16:45 +0000 ++++ compat/compat.h 2017-03-31 23:47:47 +0000 +@@ -11,7 +11,7 @@ + + /* + * From discussions it was chosen to push compat code as far down as possible. +- * That means we can have a seperate compat for most ++ * That means we can have a separate compat for most + * compatability and portability hacks and resolutions. + * + * This file is meant to collate all those hacks files together and + +=== modified file 'helpers/basic_auth/DB/basic_db_auth.pl.in' +--- helpers/basic_auth/DB/basic_db_auth.pl.in 2017-01-01 00:16:45 +0000 ++++ helpers/basic_auth/DB/basic_db_auth.pl.in 2017-03-31 23:47:47 +0000 +@@ -14,7 +14,7 @@ + + basic_db_auth [options] + +-=head1 DESCRIPTOIN ++=head1 DESCRIPTION + + This program verifies username & password to a database + +@@ -97,7 +97,7 @@ + Copyright (C) 2007 Henrik Nordstrom + Copyright (C) 2010 Luis Daniel Lucio Quiroz (Joomla support) + This program is free software. You may redistribute copies of it under the +-terms of the GNU General Public License version 2, or (at youropinion) any ++terms of the GNU General Public License version 2, or (at your opinion) any + later version. + + =head1 QUESTIONS + +=== modified file 'helpers/basic_auth/LDAP/basic_ldap_auth.8' +--- helpers/basic_auth/LDAP/basic_ldap_auth.8 2017-01-01 00:16:45 +0000 ++++ helpers/basic_auth/LDAP/basic_ldap_auth.8 2017-03-31 23:47:47 +0000 +@@ -98,7 +98,7 @@ + .B Note: + This can only be done if all your users are located directly under + the same position in the LDAP tree and the login name is used for naming +-each user object. If your LDAP tree does not match these criterias or if ++each user object. If your LDAP tree does not match these criteria or if + you want to filter who are valid users then you need to use a search filter + to search for your users DN ( + .B \-f +@@ -186,15 +186,15 @@ + .B never + dereference aliases (default), + .B always +-dereference aliases, only while +-.B search ing ++dereference aliases, only during a ++.B search + or only to + .B find + the base object. + . + .if !'po4a'hide' .TP + .if !'po4a'hide' .B "\-H ldap_uri +-Specity the LDAP server to connect to by LDAP URI (requires OpenLDAP libraries). ++Specify the LDAP server to connect to by LDAP URI (requires OpenLDAP libraries). + Servers can also be specified last on the command line. + . + .if !'po4a'hide' .TP + +=== modified file 'helpers/digest_auth/LDAP/digest_pw_auth.cc' +--- helpers/digest_auth/LDAP/digest_pw_auth.cc 2017-01-01 00:16:45 +0000 ++++ helpers/digest_auth/LDAP/digest_pw_auth.cc 2017-03-31 23:47:47 +0000 +@@ -30,7 +30,7 @@ + * the file format. However storing such a triple does little to + * improve security: If compromised the username:realm:HA1 combination + * is "plaintext equivalent" - for the purposes of digest authentication +- * they allow the user access. Password syncronisation is not tackled ++ * they allow the user access. Password synchronization is not tackled + * by digest - just preventing on the wire compromise. + * + * Copyright (c) 2003 Robert Collins + +=== modified file 'helpers/digest_auth/eDirectory/digest_pw_auth.cc' +--- helpers/digest_auth/eDirectory/digest_pw_auth.cc 2017-01-01 00:16:45 +0000 ++++ helpers/digest_auth/eDirectory/digest_pw_auth.cc 2017-03-31 23:47:47 +0000 +@@ -30,7 +30,7 @@ + * the file format. However storing such a triple does little to + * improve security: If compromised the username:realm:HA1 combination + * is "plaintext equivalent" - for the purposes of digest authentication +- * they allow the user access. Password syncronisation is not tackled ++ * they allow the user access. Password synchronization is not tackled + * by digest - just preventing on the wire compromise. + * + * Copyright (c) 2003 Robert Collins + +=== modified file 'helpers/digest_auth/file/digest_file_auth.8' +--- helpers/digest_auth/file/digest_file_auth.8 2017-01-01 00:16:45 +0000 ++++ helpers/digest_auth/file/digest_file_auth.8 2017-03-31 23:47:47 +0000 +@@ -15,7 +15,7 @@ + is an installed binary authentication program for Squid. It handles digest + authentication protocol and authenticates against a text file backend. + . +-This program will automatically detect the existence of a concurrecy channel-ID and adjust appropriately. ++This program will automatically detect the existence of a concurrency channel-ID and adjust appropriately. + It may be used with any value 0 or above for the auth_param children concurrency= parameter. + . + .SH OPTIONS +@@ -54,7 +54,7 @@ + improve security: If compromised the + .B username:realm:HA1 + combination is "plaintext equivalent" - for the purposes of digest authentication +-they allow the user access. Password syncronisation is not tackled ++they allow the user access. Password synchronization is not tackled + by digest - just preventing on the wire compromise. + . + .SH AUTHOR + +=== modified file 'helpers/digest_auth/file/digest_file_auth.cc' +--- helpers/digest_auth/file/digest_file_auth.cc 2017-01-01 00:16:45 +0000 ++++ helpers/digest_auth/file/digest_file_auth.cc 2017-03-31 23:47:47 +0000 +@@ -33,7 +33,7 @@ + * the file format. However storing such a triple does little to + * improve security: If compromised the username:realm:HA1 combination + * is "plaintext equivalent" - for the purposes of digest authentication +- * they allow the user access. Password syncronisation is not tackled ++ * they allow the user access. Password synchronization is not tackled + * by digest - just preventing on the wire compromise. + * + * Copyright (c) 2003 Robert Collins + +=== modified file 'helpers/digest_auth/file/text_backend.cc' +--- helpers/digest_auth/file/text_backend.cc 2017-01-01 00:16:45 +0000 ++++ helpers/digest_auth/file/text_backend.cc 2017-03-31 23:47:47 +0000 +@@ -29,7 +29,7 @@ + * the file format. However storing such a triple does little to + * improve security: If compromised the username:realm:HA1 combination + * is "plaintext equivalent" - for the purposes of digest authentication +- * they allow the user access. Password syncronisation is not tackled ++ * they allow the user access. Password synchronization is not tackled + * by digest - just preventing on the wire compromise. + * + * Copyright (c) 2003 Robert Collins + +=== modified file 'helpers/external_acl/LDAP_group/ext_ldap_group_acl.8' +--- helpers/external_acl/LDAP_group/ext_ldap_group_acl.8 2017-01-01 00:16:45 +0000 ++++ helpers/external_acl/LDAP_group/ext_ldap_group_acl.8 2017-03-31 23:47:47 +0000 +@@ -52,8 +52,8 @@ + .BI never + dereference aliases (default), + .BI always +-dereference aliases, only while +-.BR search ing ++dereference aliases, only during a ++.BR search + or only to + .B find + the base object +@@ -143,7 +143,7 @@ + . + .if !'po4a'hide' .TP + .if !'po4a'hide' .BI \-H " ldapuri" +-Specity the LDAP server to connect to by a LDAP URI (requires OpenLDAP libraries) ++Specify the LDAP server to connect to by a LDAP URI (requires OpenLDAP libraries) + . + .if !'po4a'hide' .TP + .if !'po4a'hide' .BI \-K + +=== modified file 'helpers/external_acl/kerberos_ldap_group/README' +--- helpers/external_acl/kerberos_ldap_group/README 2010-08-13 10:17:20 +0000 ++++ helpers/external_acl/kerberos_ldap_group/README 2017-03-31 23:47:47 +0000 +@@ -65,7 +65,7 @@ + export KRB5_KTNAME + + If you use a different Kerberos domain than the machine itself is in you can point squid to +-the seperate Kerberos config file by setting the following environmnet variable in the startup ++the separate Kerberos config file by setting the following environment variable in the startup + script. + + KRB5_CONFIG=/etc/krb5-squid.conf + +=== modified file 'helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8' +--- helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8 2015-03-21 06:32:34 +0000 ++++ helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8 2017-03-31 23:47:47 +0000 +@@ -163,7 +163,7 @@ + .if !'po4a'hide' .ft + . + If you use a different Kerberos domain than the machine itself is in you can point squid to +-the seperate Kerberos config file by setting the following environmnet variable in the startup ++the separate Kerberos config file by setting the following environment variable in the startup + script. + .if !'po4a'hide' .P + .if !'po4a'hide' .ft CR + +=== modified file 'helpers/external_acl/session/ext_session_acl.8' +--- helpers/external_acl/session/ext_session_acl.8 2017-01-01 00:16:45 +0000 ++++ helpers/external_acl/session/ext_session_acl.8 2017-03-31 23:47:47 +0000 +@@ -21,7 +21,7 @@ + ) or a fixed period of time ( + .B \-T + ). The former is suitable for displaying terms and conditions to a user; the +-latter is suitable for the display of advertisments or other notices (both as a ++latter is suitable for the display of advertisements or other notices (both as a + splash page \- see config examples in the wiki online). The session helper can also be used + to force users to re\-authenticate if the + .B %LOGIN +@@ -55,7 +55,7 @@ + environment is created within the directory. The advantage of the latter + is better database support between multiple instances of the session + helper. Using multiple instances of the session helper with a single +-database file will cause synchronisation problems between processes. ++database file will cause synchronization problems between processes. + If this option is not specified the session details will be kept in + memory only and all sessions will reset each time Squid restarts its + helpers (Squid restart or rotation of logs). + +=== modified file 'helpers/log_daemon/DB/log_db_daemon.pl.in' +--- helpers/log_daemon/DB/log_db_daemon.pl.in 2017-01-01 00:16:45 +0000 ++++ helpers/log_daemon/DB/log_db_daemon.pl.in 2017-03-31 23:47:47 +0000 +@@ -18,7 +18,7 @@ + + log_db_daemon DSN [options] + +-=head1 DESCRIPTOIN ++=head1 DESCRIPTION + + This program writes Squid access.log entries to a database. + Presently only accepts the B native format +@@ -373,7 +373,7 @@ + WHERE squid_request_status LIKE '%MISS%') + / + (SELECT COUNT(*) FROM access_log)*100 +- AS pecentage; ++ AS percentage; + + =item Response time ranges + +@@ -433,7 +433,7 @@ + + This script currently implements only the C (i.e. "append a line to the log") command, therefore the log lines are never purged from the table. This approach has an obvious scalability problem. + +-One solution would be to implement e.g. the "rotate log" command in a way that would calculate some summary values, put them in a "summary table" and then delete the lines used to caluclate those values. ++One solution would be to implement e.g. the "rotate log" command in a way that would calculate some summary values, put them in a "summary table" and then delete the lines used to calculate those values. + + Similar cleanup code could be implemented in an external script and run periodically independently from squid log commands. + + +=== modified file 'helpers/negotiate_auth/kerberos/README' +--- helpers/negotiate_auth/kerberos/README 2008-10-03 02:25:50 +0000 ++++ helpers/negotiate_auth/kerberos/README 2017-03-31 23:47:47 +0000 +@@ -53,7 +53,7 @@ + export KRB5_KTNAME + + If you use a different Kerberos domain than the machine itself is in you can point squid to +-the seperate Kerberos config file by setting the following environmnet variable in the startup ++the separate Kerberos config file by setting the following environment variable in the startup + script. + + KRB5_CONFIG=/etc/krb-squid5.conf + +=== modified file 'helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8' +--- helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8 2014-12-20 17:10:25 +0000 ++++ helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8 2017-03-31 23:47:47 +0000 +@@ -69,7 +69,7 @@ + export KRB5_KTNAME + + If you use a different Kerberos domain than the machine itself is in you can point squid to +-the seperate Kerberos config file by setting the following environmnet variable in the startup ++the separate Kerberos config file by setting the following environment variable in the startup + script. + + KRB5_CONFIG=/etc/krb5\-squid.conf + +=== modified file 'helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in' +--- helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in 2017-01-01 00:16:45 +0000 ++++ helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in 2017-03-31 23:47:47 +0000 +@@ -29,7 +29,7 @@ + Rewrite rules are matched in the same order as they appear in the rules file. + So for best performance, sort it in order of frequency of occurrence. + +-This program will automatically detect the existence of a concurrecy channel-ID and adjust appropriately. ++This program will automatically detect the existence of a concurrency channel-ID and adjust appropriately. + It may be used with any value 0 or above for the store_id_children concurrency= parameter. + + =head1 OPTIONS + +=== modified file 'src/StoreFileSystem.h' +--- src/StoreFileSystem.h 2017-01-01 00:16:45 +0000 ++++ src/StoreFileSystem.h 2017-03-31 23:47:47 +0000 +@@ -47,7 +47,7 @@ + \par + * configure will take a list of storage types through the + * --enable-store-io parameter. This parameter takes a list of +- * space seperated storage types. For example, ++ * space separated storage types. For example, + * --enable-store-io="ufs aufs" . + * + \par + +=== modified file 'src/ipcache.cc' +--- src/ipcache.cc 2017-01-01 00:16:45 +0000 ++++ src/ipcache.cc 2017-03-31 23:47:47 +0000 +@@ -50,7 +50,7 @@ + \defgroup IPCacheInternal IP Cache Internals + \ingroup IPCacheAPI + \todo when IP cache is provided as a class. These sub-groups will be obsolete +- * for now they are used to seperate the public and private functions. ++ * for now they are used to separate the public and private functions. + * with the private ones all being in IPCachInternal and public in IPCacheAPI + * + \section InternalOperation Internal Operation + +=== modified file 'src/ssl/ssl_crtd.8' +--- src/ssl/ssl_crtd.8 2017-01-01 00:16:45 +0000 ++++ src/ssl/ssl_crtd.8 2017-03-31 23:47:47 +0000 +@@ -33,7 +33,7 @@ + Because the generation and signing of SSL certificates takes time + Squid must use external process to handle the work. + . +-This process generates new SSL certificates and uses a disk cache of certificatess ++This process generates new SSL certificates and uses a disk cache of certificates + to improve response times on repeated requests. + Communication occurs via TCP sockets bound to the loopback interface. + . +@@ -122,7 +122,7 @@ + . + .PP + For simple configuration the helper defaults can be used. +-Only HTTP listening port options are required to enable generation and set the signign CA certificate. ++Only HTTP listening port options are required to enable generation and set the signing CA certificate. + For Example: + .if !'po4a'hide' .RS + .if !'po4a'hide' .B http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/squid/ssl_cert/www.sample.com.pem + From bffe0abd5950fb3786e0f0d1785f8dc2091571ac Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 3 Apr 2017 21:26:44 +0200 Subject: [PATCH 218/464] squid: Update to 3.5.25 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/squid | 20 +- ...uid-3.5.25-fix-max-file-descriptors.patch} | 0 src/patches/squid/squid-3.5-14142.patch | 72 ---- src/patches/squid/squid-3.5-14143.patch | 55 --- src/patches/squid/squid-3.5-14144.patch | 43 --- src/patches/squid/squid-3.5-14145.patch | 33 -- src/patches/squid/squid-3.5-14146.patch | 41 -- src/patches/squid/squid-3.5-14147.patch | 37 -- src/patches/squid/squid-3.5-14148.patch | 62 --- src/patches/squid/squid-3.5-14149.patch | 78 ---- src/patches/squid/squid-3.5-14150.patch | 32 -- src/patches/squid/squid-3.5-14151.patch | 36 -- src/patches/squid/squid-3.5-14152.patch | 35 -- src/patches/squid/squid-3.5-14153.patch | 353 ------------------ 14 files changed, 4 insertions(+), 893 deletions(-) rename src/patches/{squid-3.5.24-fix-max-file-descriptors.patch => squid-3.5.25-fix-max-file-descriptors.patch} (100%) delete mode 100644 src/patches/squid/squid-3.5-14142.patch delete mode 100644 src/patches/squid/squid-3.5-14143.patch delete mode 100644 src/patches/squid/squid-3.5-14144.patch delete mode 100644 src/patches/squid/squid-3.5-14145.patch delete mode 100644 src/patches/squid/squid-3.5-14146.patch delete mode 100644 src/patches/squid/squid-3.5-14147.patch delete mode 100644 src/patches/squid/squid-3.5-14148.patch delete mode 100644 src/patches/squid/squid-3.5-14149.patch delete mode 100644 src/patches/squid/squid-3.5-14150.patch delete mode 100644 src/patches/squid/squid-3.5-14151.patch delete mode 100644 src/patches/squid/squid-3.5-14152.patch delete mode 100644 src/patches/squid/squid-3.5-14153.patch diff --git a/lfs/squid b/lfs/squid index 269902067..70d83b04c 100644 --- a/lfs/squid +++ b/lfs/squid @@ -24,7 +24,7 @@ include Config -VER = 3.5.24 +VER = 3.5.25 THISAPP = squid-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 3fae511e16b6379b61c011914673973d +$(DL_FILE)_MD5 = 6b7dd7b42b1adacf08f3155640ea2782 install : $(TARGET) @@ -70,19 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14142.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14143.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14144.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14145.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14146.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14147.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14148.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14149.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14150.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14151.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14152.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid/squid-3.5-14153.patch - cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.24-fix-max-file-descriptors.patch + cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/squid-3.5.25-fix-max-file-descriptors.patch cd $(DIR_APP) && autoreconf -vfi cd $(DIR_APP)/libltdl && autoreconf -vfi @@ -159,7 +147,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cp -f $(DIR_SRC)/config/updxlrator/lscache /var/ipfire/updatexlrator/bin/lscache cp -f $(DIR_SRC)/config/updxlrator/checkdeaddl /var/ipfire/updatexlrator/bin/checkdeaddl - cp -f $(DIR_SRC)/config/updxlrator/updxlrator-lib.pl /var/ipfire/updatexlrator//updxlrator-lib.pl + cp -f $(DIR_SRC)/config/updxlrator/updxlrator-lib.pl /var/ipfire/updatexlrator/updxlrator-lib.pl chmod 755 /usr/sbin/updxlrator /var/ipfire/updatexlrator/bin/checkup \ /var/ipfire/updatexlrator/bin/download \ diff --git a/src/patches/squid-3.5.24-fix-max-file-descriptors.patch b/src/patches/squid-3.5.25-fix-max-file-descriptors.patch similarity index 100% rename from src/patches/squid-3.5.24-fix-max-file-descriptors.patch rename to src/patches/squid-3.5.25-fix-max-file-descriptors.patch diff --git a/src/patches/squid/squid-3.5-14142.patch b/src/patches/squid/squid-3.5-14142.patch deleted file mode 100644 index 8649e27f9..000000000 --- a/src/patches/squid/squid-3.5-14142.patch +++ /dev/null @@ -1,72 +0,0 @@ ------------------------------------------------------------- -revno: 14142 -revision-id: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq -parent: squid3@treenet.co.nz-20170128035415-bpwt79jsobv1rqx3 -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Wed 2017-02-08 18:40:33 +1300 -message: - Bump SSL client on [more] errors encountered before ssl_bump evaluation - - ... such as ERR_ACCESS_DENIED with HTTP/403 Forbidden triggered by an - http_access deny rule match. - - The old code allowed ssl_bump step1 rules to be evaluated in the - presence of an error. An ssl_bump splicing decision would then trigger - the useless "send the error to the client now" processing logic instead - of going down the "to serve an error, bump the client first" path. - - Furthermore, the ssl_bump evaluation result itself could be surprising - to the admin because ssl_bump (and most other) rules are not meant to be - evaluated for a transaction in an error state. This complicated triage. - - Also polished an important comment to clarify that we want to bump on - error if (and only if) the SslBump feature is applicable to the failed - transaction (i.e., if the ssl_bump rules would have been evaluated if - there were no prior errors). The old comment could have been - misinterpreted that ssl_bump rules must be evaluated to allow an - "ssl_bump splice" match to hide the error. - - This is a Measurement Factory project. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 8c3f2a03f86aa1b1484195a63742bc4002ba2359 -# timestamp: 2017-02-08 05:51:15 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170128035415-\ -# bpwt79jsobv1rqx3 -# -# Begin patch -=== modified file 'src/client_side_request.cc' ---- src/client_side_request.cc 2017-01-23 02:05:46 +0000 -+++ src/client_side_request.cc 2017-02-08 05:40:33 +0000 -@@ -1442,6 +1442,13 @@ - return false; - } - -+ if (error) { -+ debugs(85, 5, "SslBump applies. Force bump action on error " << err_type_str[(error->type >= ERR_NONE && error->type < ERR_MAX) ? error->type : ERR_NONE]); -+ http->sslBumpNeed(Ssl::bumpBump); -+ http->al->ssl.bumpMode = Ssl::bumpBump; -+ return false; -+ } -+ - // Do not bump during authentication: clients would not proxy-authenticate - // if we delay a 407 response and respond with 200 OK to CONNECT. - if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { -@@ -1781,8 +1788,9 @@ - } - - #if USE_OPENSSL -- // We need to check for SslBump even if the calloutContext->error is set -- // because bumping may require delaying the error until after CONNECT. -+ // Even with calloutContext->error, we call sslBumpAccessCheck() to decide -+ // whether SslBump applies to this transaction. If it applies, we will -+ // attempt to bump the client to serve the error. - if (!calloutContext->sslBumpCheckDone) { - calloutContext->sslBumpCheckDone = true; - if (calloutContext->sslBumpAccessCheck()) - diff --git a/src/patches/squid/squid-3.5-14143.patch b/src/patches/squid/squid-3.5-14143.patch deleted file mode 100644 index 49b3eb8ef..000000000 --- a/src/patches/squid/squid-3.5-14143.patch +++ /dev/null @@ -1,55 +0,0 @@ ------------------------------------------------------------- -revno: 14143 -revision-id: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 -parent: squid3@treenet.co.nz-20170208054033-pxqn8rs4yu713ijq -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sat 2017-02-25 18:50:14 +1300 -message: - Fix regression in CONNECT authentication after rev.14142 ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: bedc99ffdffd1e999c98c33faa830d4e9d1fc01d -# timestamp: 2017-02-25 05:51:22 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170208054033-\ -# pxqn8rs4yu713ijq -# -# Begin patch -=== modified file 'src/client_side_request.cc' ---- src/client_side_request.cc 2017-02-08 05:40:33 +0000 -+++ src/client_side_request.cc 2017-02-25 05:50:14 +0000 -@@ -1442,6 +1442,14 @@ - return false; - } - -+ // Do not bump during authentication: clients would not proxy-authenticate -+ // if we delay a 407 response and respond with 200 OK to CONNECT. -+ if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { -+ http->al->ssl.bumpMode = Ssl::bumpEnd; // SslBump does not apply; log - -+ debugs(85, 5, HERE << "no SslBump during proxy authentication"); -+ return false; -+ } -+ - if (error) { - debugs(85, 5, "SslBump applies. Force bump action on error " << err_type_str[(error->type >= ERR_NONE && error->type < ERR_MAX) ? error->type : ERR_NONE]); - http->sslBumpNeed(Ssl::bumpBump); -@@ -1449,14 +1457,6 @@ - return false; - } - -- // Do not bump during authentication: clients would not proxy-authenticate -- // if we delay a 407 response and respond with 200 OK to CONNECT. -- if (error && error->httpStatus == Http::scProxyAuthenticationRequired) { -- http->al->ssl.bumpMode = Ssl::bumpEnd; // SslBump does not apply; log - -- debugs(85, 5, HERE << "no SslBump during proxy authentication"); -- return false; -- } -- - debugs(85, 5, HERE << "SslBump possible, checking ACL"); - - ACLFilledChecklist *aclChecklist = clientAclChecklistCreate(Config.accessList.ssl_bump, http); - diff --git a/src/patches/squid/squid-3.5-14144.patch b/src/patches/squid/squid-3.5-14144.patch deleted file mode 100644 index 592a774d6..000000000 --- a/src/patches/squid/squid-3.5-14144.patch +++ /dev/null @@ -1,43 +0,0 @@ ------------------------------------------------------------- -revno: 14144 -revision-id: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g -parent: squid3@treenet.co.nz-20170225055014-j7v5xax13u4jddr9 -author: Alex Rousskov -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2017-02-26 21:46:24 +1300 -message: - Fix crash when configuring with invalid delay_parameters restore value. - - ... like none/none. Introduced in rev which fixed another, much - bigger delay_parameters parsing bug. - - TODO: Reject all invalid input, including restore/max of "-/100". - - TODO: Fix misleading/wrong associated error messages. For example: - ERROR: invalid delay rate 'none/none'. Expecting restore/max or 'none' - ERROR: restore rate in '1/none' is not a number. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 42f47b8ee1da049d57e6af76ce755e459d2fc9fd -# timestamp: 2017-02-26 08:51:02 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170225055014-\ -# j7v5xax13u4jddr9 -# -# Begin patch -=== modified file 'src/DelaySpec.cc' ---- src/DelaySpec.cc 2017-01-01 00:16:45 +0000 -+++ src/DelaySpec.cc 2017-02-26 08:46:24 +0000 -@@ -55,7 +55,7 @@ - - // parse the first digits into restore_bps - const char *p = NULL; -- if (!StringToInt(token, restore_bps, &p, 10) && *p != '/') { -+ if (!StringToInt(token, restore_bps, &p, 10) || *p != '/') { - debugs(77, DBG_CRITICAL, "ERROR: invalid delay rate '" << token << "'. Expecting restore/max or 'none'."); - self_destruct(); - } - diff --git a/src/patches/squid/squid-3.5-14145.patch b/src/patches/squid/squid-3.5-14145.patch deleted file mode 100644 index aaa56ed33..000000000 --- a/src/patches/squid/squid-3.5-14145.patch +++ /dev/null @@ -1,33 +0,0 @@ ------------------------------------------------------------- -revno: 14145 -revision-id: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s -parent: squid3@treenet.co.nz-20170226084624-5tkl3bdrqz8nlp9g -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2017-02-26 21:50:09 +1300 -message: - Fix missing CRLF on FTP timeout ABORT commands ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: a290f77545e17012eea87e6315a9d375bff16752 -# timestamp: 2017-02-26 08:51:05 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170226084624-\ -# 5tkl3bdrqz8nlp9g -# -# Begin patch -=== modified file 'src/clients/FtpGateway.cc' ---- src/clients/FtpGateway.cc 2017-01-01 00:16:45 +0000 -+++ src/clients/FtpGateway.cc 2017-02-26 08:50:09 +0000 -@@ -1775,7 +1775,7 @@ - - // ABORT on timeouts. server may be waiting on a broken TCP link. - if (io.xerrno == Comm::TIMEOUT) -- writeCommand("ABOR"); -+ writeCommand("ABOR\r\n"); - - // try another connection attempt with some other method - ftpSendPassive(this); - diff --git a/src/patches/squid/squid-3.5-14146.patch b/src/patches/squid/squid-3.5-14146.patch deleted file mode 100644 index 391fa35d8..000000000 --- a/src/patches/squid/squid-3.5-14146.patch +++ /dev/null @@ -1,41 +0,0 @@ ------------------------------------------------------------- -revno: 14146 -revision-id: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t -parent: squid3@treenet.co.nz-20170226085009-tj3o81s5ybk8ly9s -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2017-02-26 21:52:45 +1300 -message: - Check that -k argument is provided before trying to use it. - - Detected by Coverity Scan. Issue 1364726. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 31bba06ced5b67f892e4be897b05ec3744b2a942 -# timestamp: 2017-02-26 09:51:00 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170226085009-\ -# tj3o81s5ybk8ly9s -# -# Begin patch -=== modified file 'src/main.cc' ---- src/main.cc 2017-01-01 00:16:45 +0000 -+++ src/main.cc 2017-02-26 08:52:45 +0000 -@@ -425,11 +425,11 @@ - /** \par k - * Run the administrative action given following the option */ - -- /** \li When its an unknown option display the usage help. */ -- if ((int) strlen(optarg) < 1) -+ /** \li When it is missing or an unknown option display the usage help. */ -+ if (!optarg || strlen(optarg) < 1) - usage(); - -- if (!strncmp(optarg, "reconfigure", strlen(optarg))) -+ else if (!strncmp(optarg, "reconfigure", strlen(optarg))) - /** \li On reconfigure send SIGHUP. */ - opt_send_signal = SIGHUP; - else if (!strncmp(optarg, "rotate", strlen(optarg))) - diff --git a/src/patches/squid/squid-3.5-14147.patch b/src/patches/squid/squid-3.5-14147.patch deleted file mode 100644 index a8b52f388..000000000 --- a/src/patches/squid/squid-3.5-14147.patch +++ /dev/null @@ -1,37 +0,0 @@ ------------------------------------------------------------- -revno: 14147 -revision-id: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn -parent: squid3@treenet.co.nz-20170226085245-vcvc7nemupizbe4t -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sun 2017-02-26 21:56:17 +1300 -message: - ext_kerberos_ldap_group_acl: fix unused value warnings - - Detected by Coverity Scan. Issues 1364748 and 1364749. ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: fd770175ba851fc62de4a085414c8fd996b53e46 -# timestamp: 2017-02-26 09:51:04 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170226085245-\ -# vcvc7nemupizbe4t -# -# Begin patch -=== modified file 'helpers/external_acl/kerberos_ldap_group/support_ldap.cc' ---- helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2017-01-01 00:16:45 +0000 -+++ helpers/external_acl/kerberos_ldap_group/support_ldap.cc 2017-02-26 08:56:17 +0000 -@@ -919,8 +919,8 @@ - /* - * Initialise ldap - */ -- ldap_debug = 127 /* LDAP_DEBUG_TRACE */ ; -- ldap_debug = -1 /* LDAP_DEBUG_ANY */ ; -+// ldap_debug = 127 /* LDAP_DEBUG_TRACE */ ; -+// ldap_debug = -1 /* LDAP_DEBUG_ANY */ ; - ldap_debug = 0; - (void) ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldap_debug); - #endif - diff --git a/src/patches/squid/squid-3.5-14148.patch b/src/patches/squid/squid-3.5-14148.patch deleted file mode 100644 index ce7d9667c..000000000 --- a/src/patches/squid/squid-3.5-14148.patch +++ /dev/null @@ -1,62 +0,0 @@ ------------------------------------------------------------- -revno: 14148 -revision-id: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is -parent: squid3@treenet.co.nz-20170226085617-89jfjndt62i83qtn -author: Alexander Gozman -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Mon 2017-02-27 00:09:42 +1300 -message: - Native FTP relay: NAT and TPROXY interception fixes ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 63f57f0ddddf0f231c3ef88a12728a707828c6ad -# timestamp: 2017-02-26 11:51:04 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170226085617-\ -# 89jfjndt62i83qtn -# -# Begin patch -=== modified file 'src/servers/FtpServer.cc' ---- src/servers/FtpServer.cc 2017-01-01 00:16:45 +0000 -+++ src/servers/FtpServer.cc 2017-02-26 11:09:42 +0000 -@@ -1454,9 +1454,33 @@ - Comm::ConnectionPointer conn = new Comm::Connection(); - conn->flags |= COMM_DOBIND; - -- // Use local IP address of the control connection as the source address -- // of the active data connection, or some clients will refuse to accept. -- conn->setAddrs(clientConnection->local, cltAddr); -+ if (clientConnection->flags & COMM_INTERCEPTION) { -+ // In the case of NAT interception conn->local value is not set -+ // because the TCP stack will automatically pick correct source -+ // address for the data connection. We must only ensure that IP -+ // version matches client's address. -+ conn->local.setAnyAddr(); -+ -+ if (cltAddr.isIPv4()) -+ conn->local.setIPv4(); -+ -+ conn->remote = cltAddr; -+ } else { -+ // In the case of explicit-proxy the local IP of the control connection -+ // is the Squid IP the client is knowingly talking to. -+ // -+ // In the case of TPROXY the IP address of the control connection is -+ // server IP the client is connecting to, it can be spoofed by Squid. -+ // -+ // In both cases some clients may refuse to accept data connections if -+ // these control connectin local-IP's are not used. -+ conn->setAddrs(clientConnection->local, cltAddr); -+ -+ // Using non-local addresses in TPROXY mode requires appropriate socket option. -+ if (clientConnection->flags & COMM_TRANSPARENT) -+ conn->flags |= COMM_TRANSPARENT; -+ } -+ - // RFC 959 requires active FTP connections to originate from port 20 - // but that would preclude us from supporting concurrent transfers! (XXX?) - conn->local.port(0); - diff --git a/src/patches/squid/squid-3.5-14149.patch b/src/patches/squid/squid-3.5-14149.patch deleted file mode 100644 index a9fa59754..000000000 --- a/src/patches/squid/squid-3.5-14149.patch +++ /dev/null @@ -1,78 +0,0 @@ ------------------------------------------------------------- -revno: 14149 -revision-id: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 -parent: squid3@treenet.co.nz-20170226110942-90rcwhx3fwa2l7is -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4508 -author: Christos Tsantilas -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2017-03-31 01:31:22 +1200 -message: - Bug 4508: Host forgery stalls intercepted being-spliced connections. - - Most SslBump splicing happens after getting SNI. SNI goes into the - second fake CONNECT request, where it may fail the host forgery check. - A failed check triggers an HTTP error response from Squid. When - attempting to send that response to the TLS client, Squid checks whether - all previously pipelined HTTP requests on the connection have finished. - - Prior to this fix, Squid left the first fake CONNECT request in the - connection pipeline despite adding the second fake CONNECT. That first - CONNECT stalled the error response described above, with Squid waiting, - in vain, for that already handled [fake] transaction to finish. - - Also call quitAfterError() to force Squid to close the connection (after - writing the discussed error response) instead of just logging a - [misleading] "kick abandoning [connection]" message in cache.log. - - TODO: Always pop the first CONNECT when generating a second one. - Unifying CONNECT treatment is difficult because code like tunnel.cc - wants that CONNECT to be in the pipeline. Polishing that would probably - require disassociating ConnStateData from tunnel.cc (at least). - - TODO: Apply the existing "delayed error" logic (that optionally bumps - TLS connections to deliver [some] errors to [some] SSL/TLS clients) to - host forgery errors. Otherwise, the plain HTTP error message cannot be - understood by the intercepted TLS client. - - This is a Measurement Factory project ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: db616fff2ac0df73cf41d380f07a96b773cf2be5 -# timestamp: 2017-03-30 13:51:17 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170226110942-\ -# 90rcwhx3fwa2l7is -# -# Begin patch -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2017-01-27 13:38:24 +0000 -+++ src/client_side.cc 2017-03-30 13:31:22 +0000 -@@ -4376,7 +4376,12 @@ - fd_table[connState->clientConnection->fd].read_method = &default_read_method; - fd_table[connState->clientConnection->fd].write_method = &default_write_method; - -+ ClientSocketContext::Pointer context = connState->getCurrentContext(); -+ Must(context != NULL); - if (connState->transparent()) { -+ // If we are going to fake the second CONNECT, clear the first one. -+ context->connIsFinished(); -+ - // fake a CONNECT request to force connState to tunnel - // XXX: copy from MemBuf reallocates, not a regression since old code did too - SBuf temp; - -=== modified file 'src/client_side_request.cc' ---- src/client_side_request.cc 2017-02-25 05:50:14 +0000 -+++ src/client_side_request.cc 2017-03-30 13:31:22 +0000 -@@ -561,6 +561,7 @@ - debugs(85, DBG_IMPORTANT, "SECURITY ALERT: on URL: " << urlCanonical(http->request)); - - // IP address validation for Host: failed. reject the connection. -+ http->getConn()->quitAfterError(http->request); - clientStreamNode *node = (clientStreamNode *)http->client_stream.tail->prev->data; - clientReplyContext *repContext = dynamic_cast(node->data.getRaw()); - assert (repContext); - diff --git a/src/patches/squid/squid-3.5-14150.patch b/src/patches/squid/squid-3.5-14150.patch deleted file mode 100644 index dfe97a0ef..000000000 --- a/src/patches/squid/squid-3.5-14150.patch +++ /dev/null @@ -1,32 +0,0 @@ ------------------------------------------------------------- -revno: 14150 -revision-id: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y -parent: squid3@treenet.co.nz-20170330133122-zcpblbvnuq7mjvq3 -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Fri 2017-03-31 12:51:52 +1200 -message: - Fix variable shadowing after rev.14149 ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: ae1e30fff31cf8b411c62eba344fdc944692aecf -# timestamp: 2017-03-31 01:51:06 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170330133122-\ -# zcpblbvnuq7mjvq3 -# -# Begin patch -=== modified file 'src/client_side.cc' ---- src/client_side.cc 2017-03-30 13:31:22 +0000 -+++ src/client_side.cc 2017-03-31 00:51:52 +0000 -@@ -4390,7 +4390,6 @@ - } else { - // in.buf still has the "CONNECT ..." request data, reset it to SSL hello message - connState->in.buf.append(rbuf.content(), rbuf.contentSize()); -- ClientSocketContext::Pointer context = connState->getCurrentContext(); - ClientHttpRequest *http = context->http; - tunnelStart(http, &http->out.size, &http->al->http.code, http->al); - } - diff --git a/src/patches/squid/squid-3.5-14151.patch b/src/patches/squid/squid-3.5-14151.patch deleted file mode 100644 index d22387d53..000000000 --- a/src/patches/squid/squid-3.5-14151.patch +++ /dev/null @@ -1,36 +0,0 @@ ------------------------------------------------------------- -revno: 14151 -revision-id: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id -parent: squid3@treenet.co.nz-20170331005152-8exm3hsly1v1jk8y -author: Garri Djavadyan -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sat 2017-04-01 12:38:31 +1300 -message: - Docs: update refresh_pattern description regarding 'max' option ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: be64101730dcb2deb664d6594d20a7295a666b98 -# timestamp: 2017-03-31 23:40:50 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170331005152-\ -# 8exm3hsly1v1jk8y -# -# Begin patch -=== modified file 'src/cf.data.pre' ---- src/cf.data.pre 2017-01-01 00:16:45 +0000 -+++ src/cf.data.pre 2017-03-31 23:38:31 +0000 -@@ -5401,7 +5401,9 @@ - will be considered fresh. - - 'Max' is an upper limit on how long objects without an explicit -- expiry time will be considered fresh. -+ expiry time will be considered fresh. The value is also used -+ to form Cache-Control: max-age header for a request sent from -+ Squid to origin/parent. - - options: override-expire - override-lastmod - diff --git a/src/patches/squid/squid-3.5-14152.patch b/src/patches/squid/squid-3.5-14152.patch deleted file mode 100644 index 81bd3a039..000000000 --- a/src/patches/squid/squid-3.5-14152.patch +++ /dev/null @@ -1,35 +0,0 @@ ------------------------------------------------------------- -revno: 14152 -revision-id: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl -parent: squid3@treenet.co.nz-20170331233831-m3hfrigo82uhz4id -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sat 2017-04-01 12:39:21 +1300 -message: - libtrie: Fix 'make check' when run before 'make all' ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: 8399bbfe7b517fa6306bdc61d212a9a4fcc9e88b -# timestamp: 2017-03-31 23:40:52 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170331233831-\ -# m3hfrigo82uhz4id -# -# Begin patch -=== modified file 'lib/libTrie/Makefile.am' ---- lib/libTrie/Makefile.am 2017-01-01 00:16:45 +0000 -+++ lib/libTrie/Makefile.am 2017-03-31 23:39:21 +0000 -@@ -8,8 +8,8 @@ - include $(top_srcdir)/src/Common.am - include $(top_srcdir)/src/TestHeaders.am - --DIST_SUBDIRS = test --SUBDIRS = test -+DIST_SUBDIRS = . test -+SUBDIRS = . test - - noinst_LIBRARIES = libTrie.a - - diff --git a/src/patches/squid/squid-3.5-14153.patch b/src/patches/squid/squid-3.5-14153.patch deleted file mode 100644 index c236a6115..000000000 --- a/src/patches/squid/squid-3.5-14153.patch +++ /dev/null @@ -1,353 +0,0 @@ ------------------------------------------------------------- -revno: 14153 -revision-id: squid3@treenet.co.nz-20170331234747-59glu40hhx0kf8fx -parent: squid3@treenet.co.nz-20170331233921-efxhs8vy025fvrnl -fixes bug: http://bugs.squid-cache.org/show_bug.cgi?id=4688 -author: Lubos Uhliarik -committer: Amos Jeffries -branch nick: 3.5 -timestamp: Sat 2017-04-01 12:47:47 +1300 -message: - Bug 4688: various typo error(s) in man page(s) ------------------------------------------------------------- -# Bazaar merge directive format 2 (Bazaar 0.90) -# revision_id: squid3@treenet.co.nz-20170331234747-59glu40hhx0kf8fx -# target_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# testament_sha1: a05d98a4e328e39f2a490cfeff72ad8735cc6b6e -# timestamp: 2017-03-31 23:48:51 +0000 -# source_branch: http://bzr.squid-cache.org/bzr/squid3/3.5 -# base_revision_id: squid3@treenet.co.nz-20170331233921-\ -# efxhs8vy025fvrnl -# -# Begin patch -=== modified file 'compat/compat.h' ---- compat/compat.h 2017-01-01 00:16:45 +0000 -+++ compat/compat.h 2017-03-31 23:47:47 +0000 -@@ -11,7 +11,7 @@ - - /* - * From discussions it was chosen to push compat code as far down as possible. -- * That means we can have a seperate compat for most -+ * That means we can have a separate compat for most - * compatability and portability hacks and resolutions. - * - * This file is meant to collate all those hacks files together and - -=== modified file 'helpers/basic_auth/DB/basic_db_auth.pl.in' ---- helpers/basic_auth/DB/basic_db_auth.pl.in 2017-01-01 00:16:45 +0000 -+++ helpers/basic_auth/DB/basic_db_auth.pl.in 2017-03-31 23:47:47 +0000 -@@ -14,7 +14,7 @@ - - basic_db_auth [options] - --=head1 DESCRIPTOIN -+=head1 DESCRIPTION - - This program verifies username & password to a database - -@@ -97,7 +97,7 @@ - Copyright (C) 2007 Henrik Nordstrom - Copyright (C) 2010 Luis Daniel Lucio Quiroz (Joomla support) - This program is free software. You may redistribute copies of it under the --terms of the GNU General Public License version 2, or (at youropinion) any -+terms of the GNU General Public License version 2, or (at your opinion) any - later version. - - =head1 QUESTIONS - -=== modified file 'helpers/basic_auth/LDAP/basic_ldap_auth.8' ---- helpers/basic_auth/LDAP/basic_ldap_auth.8 2017-01-01 00:16:45 +0000 -+++ helpers/basic_auth/LDAP/basic_ldap_auth.8 2017-03-31 23:47:47 +0000 -@@ -98,7 +98,7 @@ - .B Note: - This can only be done if all your users are located directly under - the same position in the LDAP tree and the login name is used for naming --each user object. If your LDAP tree does not match these criterias or if -+each user object. If your LDAP tree does not match these criteria or if - you want to filter who are valid users then you need to use a search filter - to search for your users DN ( - .B \-f -@@ -186,15 +186,15 @@ - .B never - dereference aliases (default), - .B always --dereference aliases, only while --.B search ing -+dereference aliases, only during a -+.B search - or only to - .B find - the base object. - . - .if !'po4a'hide' .TP - .if !'po4a'hide' .B "\-H ldap_uri --Specity the LDAP server to connect to by LDAP URI (requires OpenLDAP libraries). -+Specify the LDAP server to connect to by LDAP URI (requires OpenLDAP libraries). - Servers can also be specified last on the command line. - . - .if !'po4a'hide' .TP - -=== modified file 'helpers/digest_auth/LDAP/digest_pw_auth.cc' ---- helpers/digest_auth/LDAP/digest_pw_auth.cc 2017-01-01 00:16:45 +0000 -+++ helpers/digest_auth/LDAP/digest_pw_auth.cc 2017-03-31 23:47:47 +0000 -@@ -30,7 +30,7 @@ - * the file format. However storing such a triple does little to - * improve security: If compromised the username:realm:HA1 combination - * is "plaintext equivalent" - for the purposes of digest authentication -- * they allow the user access. Password syncronisation is not tackled -+ * they allow the user access. Password synchronization is not tackled - * by digest - just preventing on the wire compromise. - * - * Copyright (c) 2003 Robert Collins - -=== modified file 'helpers/digest_auth/eDirectory/digest_pw_auth.cc' ---- helpers/digest_auth/eDirectory/digest_pw_auth.cc 2017-01-01 00:16:45 +0000 -+++ helpers/digest_auth/eDirectory/digest_pw_auth.cc 2017-03-31 23:47:47 +0000 -@@ -30,7 +30,7 @@ - * the file format. However storing such a triple does little to - * improve security: If compromised the username:realm:HA1 combination - * is "plaintext equivalent" - for the purposes of digest authentication -- * they allow the user access. Password syncronisation is not tackled -+ * they allow the user access. Password synchronization is not tackled - * by digest - just preventing on the wire compromise. - * - * Copyright (c) 2003 Robert Collins - -=== modified file 'helpers/digest_auth/file/digest_file_auth.8' ---- helpers/digest_auth/file/digest_file_auth.8 2017-01-01 00:16:45 +0000 -+++ helpers/digest_auth/file/digest_file_auth.8 2017-03-31 23:47:47 +0000 -@@ -15,7 +15,7 @@ - is an installed binary authentication program for Squid. It handles digest - authentication protocol and authenticates against a text file backend. - . --This program will automatically detect the existence of a concurrecy channel-ID and adjust appropriately. -+This program will automatically detect the existence of a concurrency channel-ID and adjust appropriately. - It may be used with any value 0 or above for the auth_param children concurrency= parameter. - . - .SH OPTIONS -@@ -54,7 +54,7 @@ - improve security: If compromised the - .B username:realm:HA1 - combination is "plaintext equivalent" - for the purposes of digest authentication --they allow the user access. Password syncronisation is not tackled -+they allow the user access. Password synchronization is not tackled - by digest - just preventing on the wire compromise. - . - .SH AUTHOR - -=== modified file 'helpers/digest_auth/file/digest_file_auth.cc' ---- helpers/digest_auth/file/digest_file_auth.cc 2017-01-01 00:16:45 +0000 -+++ helpers/digest_auth/file/digest_file_auth.cc 2017-03-31 23:47:47 +0000 -@@ -33,7 +33,7 @@ - * the file format. However storing such a triple does little to - * improve security: If compromised the username:realm:HA1 combination - * is "plaintext equivalent" - for the purposes of digest authentication -- * they allow the user access. Password syncronisation is not tackled -+ * they allow the user access. Password synchronization is not tackled - * by digest - just preventing on the wire compromise. - * - * Copyright (c) 2003 Robert Collins - -=== modified file 'helpers/digest_auth/file/text_backend.cc' ---- helpers/digest_auth/file/text_backend.cc 2017-01-01 00:16:45 +0000 -+++ helpers/digest_auth/file/text_backend.cc 2017-03-31 23:47:47 +0000 -@@ -29,7 +29,7 @@ - * the file format. However storing such a triple does little to - * improve security: If compromised the username:realm:HA1 combination - * is "plaintext equivalent" - for the purposes of digest authentication -- * they allow the user access. Password syncronisation is not tackled -+ * they allow the user access. Password synchronization is not tackled - * by digest - just preventing on the wire compromise. - * - * Copyright (c) 2003 Robert Collins - -=== modified file 'helpers/external_acl/LDAP_group/ext_ldap_group_acl.8' ---- helpers/external_acl/LDAP_group/ext_ldap_group_acl.8 2017-01-01 00:16:45 +0000 -+++ helpers/external_acl/LDAP_group/ext_ldap_group_acl.8 2017-03-31 23:47:47 +0000 -@@ -52,8 +52,8 @@ - .BI never - dereference aliases (default), - .BI always --dereference aliases, only while --.BR search ing -+dereference aliases, only during a -+.BR search - or only to - .B find - the base object -@@ -143,7 +143,7 @@ - . - .if !'po4a'hide' .TP - .if !'po4a'hide' .BI \-H " ldapuri" --Specity the LDAP server to connect to by a LDAP URI (requires OpenLDAP libraries) -+Specify the LDAP server to connect to by a LDAP URI (requires OpenLDAP libraries) - . - .if !'po4a'hide' .TP - .if !'po4a'hide' .BI \-K - -=== modified file 'helpers/external_acl/kerberos_ldap_group/README' ---- helpers/external_acl/kerberos_ldap_group/README 2010-08-13 10:17:20 +0000 -+++ helpers/external_acl/kerberos_ldap_group/README 2017-03-31 23:47:47 +0000 -@@ -65,7 +65,7 @@ - export KRB5_KTNAME - - If you use a different Kerberos domain than the machine itself is in you can point squid to --the seperate Kerberos config file by setting the following environmnet variable in the startup -+the separate Kerberos config file by setting the following environment variable in the startup - script. - - KRB5_CONFIG=/etc/krb5-squid.conf - -=== modified file 'helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8' ---- helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8 2015-03-21 06:32:34 +0000 -+++ helpers/external_acl/kerberos_ldap_group/ext_kerberos_ldap_group_acl.8 2017-03-31 23:47:47 +0000 -@@ -163,7 +163,7 @@ - .if !'po4a'hide' .ft - . - If you use a different Kerberos domain than the machine itself is in you can point squid to --the seperate Kerberos config file by setting the following environmnet variable in the startup -+the separate Kerberos config file by setting the following environment variable in the startup - script. - .if !'po4a'hide' .P - .if !'po4a'hide' .ft CR - -=== modified file 'helpers/external_acl/session/ext_session_acl.8' ---- helpers/external_acl/session/ext_session_acl.8 2017-01-01 00:16:45 +0000 -+++ helpers/external_acl/session/ext_session_acl.8 2017-03-31 23:47:47 +0000 -@@ -21,7 +21,7 @@ - ) or a fixed period of time ( - .B \-T - ). The former is suitable for displaying terms and conditions to a user; the --latter is suitable for the display of advertisments or other notices (both as a -+latter is suitable for the display of advertisements or other notices (both as a - splash page \- see config examples in the wiki online). The session helper can also be used - to force users to re\-authenticate if the - .B %LOGIN -@@ -55,7 +55,7 @@ - environment is created within the directory. The advantage of the latter - is better database support between multiple instances of the session - helper. Using multiple instances of the session helper with a single --database file will cause synchronisation problems between processes. -+database file will cause synchronization problems between processes. - If this option is not specified the session details will be kept in - memory only and all sessions will reset each time Squid restarts its - helpers (Squid restart or rotation of logs). - -=== modified file 'helpers/log_daemon/DB/log_db_daemon.pl.in' ---- helpers/log_daemon/DB/log_db_daemon.pl.in 2017-01-01 00:16:45 +0000 -+++ helpers/log_daemon/DB/log_db_daemon.pl.in 2017-03-31 23:47:47 +0000 -@@ -18,7 +18,7 @@ - - log_db_daemon DSN [options] - --=head1 DESCRIPTOIN -+=head1 DESCRIPTION - - This program writes Squid access.log entries to a database. - Presently only accepts the B native format -@@ -373,7 +373,7 @@ - WHERE squid_request_status LIKE '%MISS%') - / - (SELECT COUNT(*) FROM access_log)*100 -- AS pecentage; -+ AS percentage; - - =item Response time ranges - -@@ -433,7 +433,7 @@ - - This script currently implements only the C (i.e. "append a line to the log") command, therefore the log lines are never purged from the table. This approach has an obvious scalability problem. - --One solution would be to implement e.g. the "rotate log" command in a way that would calculate some summary values, put them in a "summary table" and then delete the lines used to caluclate those values. -+One solution would be to implement e.g. the "rotate log" command in a way that would calculate some summary values, put them in a "summary table" and then delete the lines used to calculate those values. - - Similar cleanup code could be implemented in an external script and run periodically independently from squid log commands. - - -=== modified file 'helpers/negotiate_auth/kerberos/README' ---- helpers/negotiate_auth/kerberos/README 2008-10-03 02:25:50 +0000 -+++ helpers/negotiate_auth/kerberos/README 2017-03-31 23:47:47 +0000 -@@ -53,7 +53,7 @@ - export KRB5_KTNAME - - If you use a different Kerberos domain than the machine itself is in you can point squid to --the seperate Kerberos config file by setting the following environmnet variable in the startup -+the separate Kerberos config file by setting the following environment variable in the startup - script. - - KRB5_CONFIG=/etc/krb-squid5.conf - -=== modified file 'helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8' ---- helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8 2014-12-20 17:10:25 +0000 -+++ helpers/negotiate_auth/kerberos/negotiate_kerberos_auth.8 2017-03-31 23:47:47 +0000 -@@ -69,7 +69,7 @@ - export KRB5_KTNAME - - If you use a different Kerberos domain than the machine itself is in you can point squid to --the seperate Kerberos config file by setting the following environmnet variable in the startup -+the separate Kerberos config file by setting the following environment variable in the startup - script. - - KRB5_CONFIG=/etc/krb5\-squid.conf - -=== modified file 'helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in' ---- helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in 2017-01-01 00:16:45 +0000 -+++ helpers/storeid_rewrite/file/storeid_file_rewrite.pl.in 2017-03-31 23:47:47 +0000 -@@ -29,7 +29,7 @@ - Rewrite rules are matched in the same order as they appear in the rules file. - So for best performance, sort it in order of frequency of occurrence. - --This program will automatically detect the existence of a concurrecy channel-ID and adjust appropriately. -+This program will automatically detect the existence of a concurrency channel-ID and adjust appropriately. - It may be used with any value 0 or above for the store_id_children concurrency= parameter. - - =head1 OPTIONS - -=== modified file 'src/StoreFileSystem.h' ---- src/StoreFileSystem.h 2017-01-01 00:16:45 +0000 -+++ src/StoreFileSystem.h 2017-03-31 23:47:47 +0000 -@@ -47,7 +47,7 @@ - \par - * configure will take a list of storage types through the - * --enable-store-io parameter. This parameter takes a list of -- * space seperated storage types. For example, -+ * space separated storage types. For example, - * --enable-store-io="ufs aufs" . - * - \par - -=== modified file 'src/ipcache.cc' ---- src/ipcache.cc 2017-01-01 00:16:45 +0000 -+++ src/ipcache.cc 2017-03-31 23:47:47 +0000 -@@ -50,7 +50,7 @@ - \defgroup IPCacheInternal IP Cache Internals - \ingroup IPCacheAPI - \todo when IP cache is provided as a class. These sub-groups will be obsolete -- * for now they are used to seperate the public and private functions. -+ * for now they are used to separate the public and private functions. - * with the private ones all being in IPCachInternal and public in IPCacheAPI - * - \section InternalOperation Internal Operation - -=== modified file 'src/ssl/ssl_crtd.8' ---- src/ssl/ssl_crtd.8 2017-01-01 00:16:45 +0000 -+++ src/ssl/ssl_crtd.8 2017-03-31 23:47:47 +0000 -@@ -33,7 +33,7 @@ - Because the generation and signing of SSL certificates takes time - Squid must use external process to handle the work. - . --This process generates new SSL certificates and uses a disk cache of certificatess -+This process generates new SSL certificates and uses a disk cache of certificates - to improve response times on repeated requests. - Communication occurs via TCP sockets bound to the loopback interface. - . -@@ -122,7 +122,7 @@ - . - .PP - For simple configuration the helper defaults can be used. --Only HTTP listening port options are required to enable generation and set the signign CA certificate. -+Only HTTP listening port options are required to enable generation and set the signing CA certificate. - For Example: - .if !'po4a'hide' .RS - .if !'po4a'hide' .B http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/squid/ssl_cert/www.sample.com.pem - From 7ea716b46b2308f6939cb1f9ade1dc2484e5fc6d Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Mon, 3 Apr 2017 23:04:03 +0200 Subject: [PATCH 219/464] core110: finish update Signed-off-by: Arne Fitzenreiter --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 24ea77711..183ee7d24 100755 --- a/make.sh +++ b/make.sh @@ -26,7 +26,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number CORE="110" # Core Level (Filename) -PAKFIRE_CORE="109" # Core Level (PAKFIRE) +PAKFIRE_CORE="110" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir From 09f518fbb1c0a7db4f2e7202338ecf5ff8ea82c6 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Tue, 4 Apr 2017 19:14:31 +0200 Subject: [PATCH 220/464] mpd: mpd needs opus libs Signed-off-by: Arne Fitzenreiter --- lfs/mpd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/mpd b/lfs/mpd index 3213b27f6..4134b71e8 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -34,7 +34,7 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd PAK_VER = 15 -DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis" +DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis opus" ############################################################################### # Top-level Rules From 2709b42dc4fa904d6103c30a18ba27df2ed84bc7 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Tue, 4 Apr 2017 19:14:31 +0200 Subject: [PATCH 221/464] mpd: mpd needs opus libs Signed-off-by: Arne Fitzenreiter Signed-off-by: Michael Tremer --- lfs/mpd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/mpd b/lfs/mpd index 3213b27f6..4134b71e8 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -34,7 +34,7 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd PAK_VER = 15 -DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis" +DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis opus" ############################################################################### # Top-level Rules From ba2247a4b27afc5ae6985a61c65e20dda1a73454 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 4 Apr 2017 18:59:44 +0100 Subject: [PATCH 222/464] apache only supports MaxClients up to 256 Signed-off-by: Michael Tremer --- config/httpd/server-tuning.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/httpd/server-tuning.conf b/config/httpd/server-tuning.conf index 8f1eae5a2..90410186d 100644 --- a/config/httpd/server-tuning.conf +++ b/config/httpd/server-tuning.conf @@ -20,7 +20,7 @@ KeepAliveTimeout 15 MinSpareServers 1 MaxSpareServers 10 StartServers 2 -MaxClients 1000 +MaxClients 256 # # The following directives modify normal HTTP response behavior to From be3d3959d2e7ee03caf40e37993d6a815f8829bf Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 4 Apr 2017 19:08:34 +0100 Subject: [PATCH 223/464] openssh: Remove deprecated configuration options This was used for SSH version 1 which is not supported any more Signed-off-by: Michael Tremer --- config/rootfiles/core/110/update.sh | 3 +++ lfs/openssh | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/rootfiles/core/110/update.sh b/config/rootfiles/core/110/update.sh index 84e0ddf14..2011d4d9d 100644 --- a/config/rootfiles/core/110/update.sh +++ b/config/rootfiles/core/110/update.sh @@ -44,6 +44,9 @@ ldconfig # Update Language cache /usr/local/bin/update-lang-cache +# Remove deprecated options +sed -e "/^RSAAuthentication/d" -i /etc/ssh/sshd_config + # Start services /etc/init.d/unbound start /etc/init.d/sshd restart diff --git a/lfs/openssh b/lfs/openssh index 005e4dffa..56ac55a96 100644 --- a/lfs/openssh +++ b/lfs/openssh @@ -80,7 +80,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) sed -i -e 's/^#\?Port .*$$/Port 222/' \ -e 's/^#\?Protocol .*$$/Protocol 2/' \ -e 's/^#\?LoginGraceTime .*$$/LoginGraceTime 30s/' \ - -e 's/^#\?RSAAuthentication .*$$/RSAAuthentication yes/' \ -e 's/^#\?PubkeyAuthentication .*$$/PubkeyAuthentication yes/' \ -e 's/^#\?PasswordAuthentication .*$$/PasswordAuthentication yes/' \ -e 's/^#\?MaxStartups .*$$/MaxStartups 5/' \ From 31b34f950912478f8594f41cdf20dc715b15bc34 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 4 Apr 2017 00:46:38 +0200 Subject: [PATCH 224/464] logwatch 7.4.1: fix for rootfile Hi, One missing '#' and all underlying 'services' in 'usr/share/logwatch/scripts/services' are installed. 147 files are active, but it should be only 33. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/logwatch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rootfiles/common/logwatch b/config/rootfiles/common/logwatch index 998ab8ae2..f0e83e36c 100644 --- a/config/rootfiles/common/logwatch +++ b/config/rootfiles/common/logwatch @@ -213,7 +213,7 @@ usr/share/logwatch/scripts/logfiles/xferlog/removeheaders #usr/share/logwatch/scripts/logfiles/yum #usr/share/logwatch/scripts/logfiles/yum/applydate usr/share/logwatch/scripts/logwatch.pl -usr/share/logwatch/scripts/services +#usr/share/logwatch/scripts/services #usr/share/logwatch/scripts/services/afpd usr/share/logwatch/scripts/services/amavis #usr/share/logwatch/scripts/services/arpwatch From 9d8574996e7833f8a009cc4012990c2fcc8113cc Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 4 Apr 2017 12:38:33 +0200 Subject: [PATCH 225/464] logwatch 7.4.1: another fix for rootfile Hi, similar to: http://git.ipfire.org/?p=people/mfischer/ipfire-2.x.git;a=commit;h=9f46e637ac345509ff75248d1087b1bff117ff20 A missing '#' for "usr/share/logwatch/default.conf/services" in rootfile. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/logwatch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rootfiles/common/logwatch b/config/rootfiles/common/logwatch index f0e83e36c..9dea4bffd 100644 --- a/config/rootfiles/common/logwatch +++ b/config/rootfiles/common/logwatch @@ -72,7 +72,7 @@ usr/share/logwatch/default.conf/logfiles/xferlog.conf #usr/share/logwatch/default.conf/logfiles/yum.conf #usr/share/logwatch/default.conf/logfiles/zypp.conf usr/share/logwatch/default.conf/logwatch.conf -usr/share/logwatch/default.conf/services +#usr/share/logwatch/default.conf/services #usr/share/logwatch/default.conf/services/afpd.conf usr/share/logwatch/default.conf/services/amavis.conf #usr/share/logwatch/default.conf/services/arpwatch.conf From 3fa1cb5f35dd59fed503211898662c5cf22c3c97 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 4 Apr 2017 12:45:12 +0200 Subject: [PATCH 226/464] logwatch: Update to 7.4.3 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/logwatch | 9 ++++----- lfs/logwatch | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/config/rootfiles/common/logwatch b/config/rootfiles/common/logwatch index 9dea4bffd..36b90677d 100644 --- a/config/rootfiles/common/logwatch +++ b/config/rootfiles/common/logwatch @@ -1,11 +1,6 @@ #etc/logwatch etc/logwatch/conf #etc/logwatch/logwatch.cron -#etc/logwatch/conf/ignore.conf -#etc/logwatch/conf/logfiles -#etc/logwatch/conf/logwatch.conf -#etc/logwatch/conf/override.conf -#etc/logwatch/conf/services etc/logwatch/scripts etc/logwatch/scripts/services usr/sbin/logwatch @@ -166,10 +161,12 @@ usr/share/logwatch/default.conf/services/scsi.conf #usr/share/logwatch/default.conf/services/spamassassin.conf usr/share/logwatch/default.conf/services/sshd.conf usr/share/logwatch/default.conf/services/sshd2.conf +#usr/share/logwatch/default.conf/services/sssd.conf #usr/share/logwatch/default.conf/services/stunnel.conf usr/share/logwatch/default.conf/services/sudo.conf #usr/share/logwatch/default.conf/services/syslog-ng.conf usr/share/logwatch/default.conf/services/syslogd.conf +#usr/share/logwatch/default.conf/services/systemd.conf #usr/share/logwatch/default.conf/services/tac_acc.conf #usr/share/logwatch/default.conf/services/tivoli-smc.conf #usr/share/logwatch/default.conf/services/up2date.conf @@ -308,10 +305,12 @@ usr/share/logwatch/scripts/services/scsi #usr/share/logwatch/scripts/services/spamassassin usr/share/logwatch/scripts/services/sshd usr/share/logwatch/scripts/services/sshd2 +#usr/share/logwatch/scripts/services/sssd #usr/share/logwatch/scripts/services/stunnel usr/share/logwatch/scripts/services/sudo #usr/share/logwatch/scripts/services/syslog-ng usr/share/logwatch/scripts/services/syslogd +#usr/share/logwatch/scripts/services/systemd #usr/share/logwatch/scripts/services/tac_acc #usr/share/logwatch/scripts/services/tivoli-smc #usr/share/logwatch/scripts/services/up2date diff --git a/lfs/logwatch b/lfs/logwatch index 7144d07f3..9f9a0db55 100644 --- a/lfs/logwatch +++ b/lfs/logwatch @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2015 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 7.4.1 +VER = 7.4.3 THISAPP = logwatch-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = a0c3d8721f877bdcd4a9089eb1b4691b +$(DL_FILE)_MD5 = 22bd22841caa45f12c605abc3e0c2b09 install : $(TARGET) From 4f6790a7e48c1c5bf52ad53c060ef6f3274bd5a1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 5 Apr 2017 10:33:49 +0100 Subject: [PATCH 227/464] ipsecctrl: Reload IPsec block rules after connection is deleted Signed-off-by: Michael Tremer --- src/misc-progs/ipsecctrl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/misc-progs/ipsecctrl.c b/src/misc-progs/ipsecctrl.c index 7499e94c9..204753640 100644 --- a/src/misc-progs/ipsecctrl.c +++ b/src/misc-progs/ipsecctrl.c @@ -173,6 +173,9 @@ void turn_connection_off (char *name) { // Reload, so the connection is dropped. ipsec_reload(); + + // Reload the IPsec block chain + safe_system("/usr/lib/firewall/ipsec-block >/dev/null"); } int main(int argc, char *argv[]) { From 570d54fd84ead452753ac7fd498c7ee760caa3ff Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 5 Apr 2017 11:42:55 +0100 Subject: [PATCH 228/464] IPsec: Drop SHA1 and MODP<=1536 from proposed ciphers IPsec is still proposing to use SHA1 and MODP-1536 or MODP-1024 when initiating a connection. These are considered weak although many off-the-shelf hardware is still using this as defaults. This patch disables those algorithms and additionally changes default behaviour to only accept the configured cipher suites. This might create some interoperability issues, but increases security of IPFire-to-IPFire IPsec connections. Signed-off-by: Michael Tremer --- html/cgi-bin/vpnmain.cgi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index f4eccb1f0..5c9a0f4d8 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -1897,15 +1897,15 @@ END #use default advanced value $cgiparams{'IKE_ENCRYPTION'} = 'aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[18]; - $cgiparams{'IKE_INTEGRITY'} = 'sha2_512|sha2_256|sha'; #[19]; - $cgiparams{'IKE_GROUPTYPE'} = '4096|3072|2048|1536|1024'; #[20]; + $cgiparams{'IKE_INTEGRITY'} = 'sha2_512|sha2_256'; #[19]; + $cgiparams{'IKE_GROUPTYPE'} = '4096|3072|2048'; #[20]; $cgiparams{'IKE_LIFETIME'} = '3'; #[16]; $cgiparams{'ESP_ENCRYPTION'} = 'aes256gcm128|aes256gcm96|aes256gcm64|aes256|aes192gcm128|aes192gcm96|aes192gcm64|aes192|aes128gcm128|aes128gcm96|aes128gcm64|aes128'; #[21]; - $cgiparams{'ESP_INTEGRITY'} = 'sha2_512|sha2_256|sha1'; #[22]; - $cgiparams{'ESP_GROUPTYPE'} = '4096|3072|2048|1536|1024'; #[23]; + $cgiparams{'ESP_INTEGRITY'} = 'sha2_512|sha2_256'; #[22]; + $cgiparams{'ESP_GROUPTYPE'} = '4096|3072|2048'; #[23]; $cgiparams{'ESP_KEYLIFE'} = '1'; #[17]; $cgiparams{'COMPRESSION'} = 'on'; #[13]; - $cgiparams{'ONLY_PROPOSED'} = 'off'; #[24]; + $cgiparams{'ONLY_PROPOSED'} = 'on'; #[24]; $cgiparams{'PFS'} = 'on'; #[28]; } From 1ef80c435225c6bd35df4d510b728ea6bfad772a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 5 Apr 2017 12:08:39 +0100 Subject: [PATCH 229/464] strongswan: Update to version 5.5.2 Introduces support for Curve25519 for IKE as defined by RFC8031. Signed-off-by: Michael Tremer --- config/rootfiles/common/strongswan | 8 ++++++++ lfs/strongswan | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/common/strongswan b/config/rootfiles/common/strongswan index 354ecd7b5..fbc57866a 100644 --- a/config/rootfiles/common/strongswan +++ b/config/rootfiles/common/strongswan @@ -21,6 +21,7 @@ etc/strongswan.d/charon/cmac.conf etc/strongswan.d/charon/constraints.conf etc/strongswan.d/charon/ctr.conf etc/strongswan.d/charon/curl.conf +etc/strongswan.d/charon/curve25519.conf etc/strongswan.d/charon/des.conf etc/strongswan.d/charon/dhcp.conf etc/strongswan.d/charon/dnskey.conf @@ -105,6 +106,11 @@ usr/lib/ipsec/libstrongswan.so.0.0.0 usr/lib/ipsec/libtls.so usr/lib/ipsec/libtls.so.0 usr/lib/ipsec/libtls.so.0.0.0 +#usr/lib/ipsec/libtpmtss.a +#usr/lib/ipsec/libtpmtss.la +usr/lib/ipsec/libtpmtss.so +usr/lib/ipsec/libtpmtss.so.0 +usr/lib/ipsec/libtpmtss.so.0.0.0 #usr/lib/ipsec/libvici.a #usr/lib/ipsec/libvici.la usr/lib/ipsec/libvici.so @@ -118,6 +124,7 @@ usr/lib/ipsec/plugins/libstrongswan-cmac.so usr/lib/ipsec/plugins/libstrongswan-constraints.so usr/lib/ipsec/plugins/libstrongswan-ctr.so usr/lib/ipsec/plugins/libstrongswan-curl.so +usr/lib/ipsec/plugins/libstrongswan-curve25519.so usr/lib/ipsec/plugins/libstrongswan-des.so usr/lib/ipsec/plugins/libstrongswan-dhcp.so usr/lib/ipsec/plugins/libstrongswan-dnskey.so @@ -201,6 +208,7 @@ usr/sbin/swanctl #usr/share/strongswan/templates/config/plugins/constraints.conf #usr/share/strongswan/templates/config/plugins/ctr.conf #usr/share/strongswan/templates/config/plugins/curl.conf +#usr/share/strongswan/templates/config/plugins/curve25519.conf #usr/share/strongswan/templates/config/plugins/des.conf #usr/share/strongswan/templates/config/plugins/dhcp.conf #usr/share/strongswan/templates/config/plugins/dnskey.conf diff --git a/lfs/strongswan b/lfs/strongswan index fffa9af0f..7f6a95b6e 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -24,7 +24,7 @@ include Config -VER = 5.5.1 +VER = 5.5.2 THISAPP = strongswan-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4eba9474f7dc6c8c8d7037261358e68d +$(DL_FILE)_MD5 = 546f7e5346b754f5946ff1282702ceb9 install : $(TARGET) From 64056cae466b49993af8fe831731d2eed77f683a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 5 Apr 2017 12:15:20 +0100 Subject: [PATCH 230/464] IPsec: Allow selecting Curve 25519 as group type Signed-off-by: Michael Tremer --- html/cgi-bin/vpnmain.cgi | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index 5c9a0f4d8..dfd5bfa8e 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2178,7 +2178,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || goto ADVANCED_ERROR; } foreach my $val (@temp) { - if ($val !~ /^(e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) { + if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) { $errormessage = $Lang::tr{'invalid input'}; goto ADVANCED_ERROR; } @@ -2219,7 +2219,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || goto ADVANCED_ERROR; } foreach my $val (@temp) { - if ($val !~ /^(e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) { + if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) { $errormessage = $Lang::tr{'invalid input'}; goto ADVANCED_ERROR; } @@ -2338,6 +2338,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || $checked{'IKE_INTEGRITY'}{'aesxcbc'} = ''; @temp = split('\|', $cgiparams{'IKE_INTEGRITY'}); foreach my $key (@temp) {$checked{'IKE_INTEGRITY'}{$key} = "selected='selected'"; } + $checked{'IKE_GROUPTYPE'}{'curve25519'} = ''; $checked{'IKE_GROUPTYPE'}{'768'} = ''; $checked{'IKE_GROUPTYPE'}{'1024'} = ''; $checked{'IKE_GROUPTYPE'}{'1536'} = ''; @@ -2378,6 +2379,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || $checked{'ESP_INTEGRITY'}{'aesxcbc'} = ''; @temp = split('\|', $cgiparams{'ESP_INTEGRITY'}); foreach my $key (@temp) {$checked{'ESP_INTEGRITY'}{$key} = "selected='selected'"; } + $checked{'ESP_GROUPTYPE'}{'curve25519'} = ''; $checked{'ESP_GROUPTYPE'}{'768'} = ''; $checked{'ESP_GROUPTYPE'}{'1024'} = ''; $checked{'ESP_GROUPTYPE'}{'1536'} = ''; @@ -2532,6 +2534,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
    END - # Check if some hosts have been add to be ignored. + # Check if some hosts have been added to be ignored. if (keys (%ignored)) { my $col = ""; - # Loop through all entries of the hash.. + # Loop through all entries of the hash. while( (my $key) = each %ignored) { # Assign data array positions to some nice variable names. my $address = $ignored{$key}[0]; @@ -784,7 +784,7 @@ END &Header::closebox(); } -# Function to list currently bocked addresses from guardian and unblock them or add custom entries to block. +# Function to list currently blocked addresses from guardian and unblock them or add custom entries to block. sub showBlockedBox() { &Header::openbox('100%', 'center', $Lang::tr{'guardian blocked hosts'}); @@ -795,7 +795,7 @@ sub showBlockedBox() { END - # Lauch function to get the currently blocked hosts. + # Launch function to get the currently blocked hosts. my @blocked_hosts = &GetBlockedHosts(); my $id = 0; @@ -828,7 +828,7 @@ END END } - # If the loop only has been runs once the id still is "0", which means there are no + # If the loop only has been run once the id still is "0", which means there are no # additional entries (blocked hosts) in the iptables chain. if ($id == 0) { @@ -890,11 +890,11 @@ sub GetBlockedHosts() { # Create new, empty array. my @hosts; - # Lauch helper to get chains from iptables. + # Launch helper to get chains from iptables. system('/usr/local/bin/getipstat'); # Open temporary file which contains the chains and rules. - open (FILE, '/srv/web/ipfire/html/iptables.txt'); + open (FILE, '/var/tmp/iptables.txt'); # Loop through the entire file. while () { @@ -909,7 +909,7 @@ sub GetBlockedHosts() { next if ($line =~ /^Chain/); next if ($line =~ /^ pkts/); - # Generate array, based on the line content (seperator is a single or multiple space's) + # Generate array, based on the line content (separator is a single or multiple space) my @comps = split(/\s{1,}/, $line); my ($lead, $pkts, $bytes, $target, $prot, $opt, $in, $out, $source, $destination) = @comps; @@ -927,9 +927,9 @@ sub GetBlockedHosts() { close(FILE); # Remove recently created temporary files of the "getipstat" binary. - system(rm -f "/srv/web/ipfire/html/iptables.txt"); - system(rm -f "/srv/web/ipfire/html/iptablesmangle.txt"); - system(rm -f "/srv/web/ipfire/html/iptablesnat.txt"); + system("rm -f /var/tmp/iptables.txt"); + system("rm -f /var/tmp/iptablesmangle.txt"); + system("rm -f /var/tmp/iptablesnat.txt"); # Convert entries, sort them, write back and store the sorted entries into new array. my @sorted = map { $_->[0] } @@ -947,7 +947,7 @@ sub BuildConfiguration() { my $configfile = "${General::swroot}/guardian/guardian.conf"; - # Create the configfile if not exist yet. + # Create the configfile if none exists yet. unless (-e "$configfile") { system("touch $configfile"); } # Open configfile for writing. From ac69a292a8b41224b31e7dd8c0335e3d9b604129 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 17 Apr 2017 14:25:59 +0200 Subject: [PATCH 279/464] libevent2-compat: newpackage Keeps older packages that have been linked against this version of libevent2 working. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/libevent2-compat | 10 +++ lfs/libevent2-compat | 95 ++++++++++++++++++++++++ make.sh | 1 + 3 files changed, 106 insertions(+) create mode 100644 config/rootfiles/common/libevent2-compat create mode 100644 lfs/libevent2-compat diff --git a/config/rootfiles/common/libevent2-compat b/config/rootfiles/common/libevent2-compat new file mode 100644 index 000000000..edeb449e2 --- /dev/null +++ b/config/rootfiles/common/libevent2-compat @@ -0,0 +1,10 @@ +usr/lib/libevent-2.0.so.5 +usr/lib/libevent-2.0.so.5.1.9 +usr/lib/libevent_core-2.0.so.5 +usr/lib/libevent_core-2.0.so.5.1.9 +usr/lib/libevent_extra-2.0.so.5 +usr/lib/libevent_extra-2.0.so.5.1.9 +usr/lib/libevent_openssl-2.0.so.5 +usr/lib/libevent_openssl-2.0.so.5.1.9 +usr/lib/libevent_pthreads-2.0.so.5 +usr/lib/libevent_pthreads-2.0.so.5.1.9 diff --git a/lfs/libevent2-compat b/lfs/libevent2-compat new file mode 100644 index 000000000..954b7dd75 --- /dev/null +++ b/lfs/libevent2-compat @@ -0,0 +1,95 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2017 IPFire Team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.0.22-stable + +THISAPP = libevent-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = c4c56f986aa985677ca1db89630a2e11 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-static + + cd $(DIR_APP) && make $(MAKETUNING) + + cd $(DIR_APP) && install -m 755 .libs/libevent-2.0.so.5.1.9 /usr/lib + ln -svf libevent-2.0.so.5.1.9 /usr/lib/libevent-2.0.so.5 + + cd $(DIR_APP) && install -m 755 .libs/libevent_core-2.0.so.5.1.9 /usr/lib + ln -svf libevent_core-2.0.so.5.1.9 /usr/lib/libevent_core-2.0.so.5 + + cd $(DIR_APP) && install -m 755 .libs/libevent_extra-2.0.so.5.1.9 /usr/lib + ln -svf libevent_extra-2.0.so.5.1.9 /usr/lib/libevent_extra-2.0.so.5 + + cd $(DIR_APP) && install -m 755 .libs/libevent_openssl-2.0.so.5.1.9 /usr/lib + ln -svf libevent_openssl-2.0.so.5.1.9 /usr/lib/libevent_openssl-2.0.so.5 + + cd $(DIR_APP) && install -m 755 .libs/libevent_pthreads-2.0.so.5.1.9 /usr/lib + ln -svf libevent_pthreads-2.0.so.5.1.9 /usr/lib/libevent_pthreads-2.0.so.5 + + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 7fe25b5c0..a87f706ff 100755 --- a/make.sh +++ b/make.sh @@ -491,6 +491,7 @@ buildipfire() { ipfiremake nettle ipfiremake libevent ipfiremake libevent2 + ipfiremake libevent2-compat ipfiremake expat ipfiremake unbound ipfiremake gnutls From 77cdccf4c0a2b1c0a2b8d6e4aab86fbcbd5439b9 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 16 Apr 2017 23:01:33 +0200 Subject: [PATCH 280/464] BUG 11318: Fix deletion of temporary files from IPTables-GUI For details see: https://bugzilla.ipfire.org/show_bug.cgi?id=11318 Temporary files for 'iptables', 'iptablesmangle' and 'iptablesnat' created by 'iptables.cgi' were not deleted after use but stayed in '/srv/weg/ipfire/html/'. As a workaround I changed 'getipstat.c' to create these files in '/var/tmp' and the "open (file..." and "rm" commands in 'iptables.cgi'. Works here. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- html/cgi-bin/iptables.cgi | 12 ++++++------ src/misc-progs/getipstat.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/html/cgi-bin/iptables.cgi b/html/cgi-bin/iptables.cgi index 30fce2721..b52d74fcf 100644 --- a/html/cgi-bin/iptables.cgi +++ b/html/cgi-bin/iptables.cgi @@ -88,7 +88,7 @@ END # start with an Chain the the name, start- and endline of the # chain is extracted into a hash - open (FILE, '/srv/web/ipfire/html/iptables.txt'); + open (FILE, '/var/tmp/iptables.txt'); while (){ $iplines[$lines] = $_; @@ -210,7 +210,7 @@ END # start with an Chain the the name, start- and endline of the # chain is extracted into a hash - open (FILE, '/srv/web/ipfire/html/iptablesmangle.txt'); + open (FILE, '/var/tmp/iptablesmangle.txt'); while (){ $ipmlines[$manlines] = $_; @@ -337,7 +337,7 @@ END # start with an Chain the the name, start- and endline of the # chain is extracted into a hash - open (FILE, '/srv/web/ipfire/html/iptablesnat.txt'); + open (FILE, '/var/tmp/iptablesnat.txt'); while (){ $ipnatlines[$natlines] = $_; @@ -434,6 +434,6 @@ print "
    + + +
    +
    +
    +
    * $Lang::tr{'required field'} + * $Lang::tr{'required field'} $Lang::tr{'grouptype'}

    "; &Header::closebigbox(); &Header::closepage(); -system(rm -f "/srv/web/ipfire/html/iptables.txt"); -system(rm -f "/srv/web/ipfire/html/iptablesmangle.txt"); -system(rm -f "/srv/web/ipfire/html/iptablesnat.txt"); +system("rm -f /var/tmp/iptables.txt"); +system("rm -f /var/tmp/iptablesmangle.txt"); +system("rm -f /var/tmp/iptablesnat.txt"); diff --git a/src/misc-progs/getipstat.c b/src/misc-progs/getipstat.c index 38701686e..c806d54a9 100644 --- a/src/misc-progs/getipstat.c +++ b/src/misc-progs/getipstat.c @@ -3,7 +3,7 @@ * Get the list from IPTABLES -L * */ - + #include #include #include @@ -17,11 +17,11 @@ int main(void) { if (!(initsetuid())) exit(1); - - safe_system("/sbin/iptables -L -v -n > /srv/web/ipfire/html/iptables.txt"); - safe_system("/sbin/iptables -L -v -n -t nat > /srv/web/ipfire/html/iptablesnat.txt"); - safe_system("/sbin/iptables -t mangle -L -v -n > /srv/web/ipfire/html/iptablesmangle.txt"); - safe_system("chown nobody.nobody /srv/web/ipfire/html/iptables.txt /srv/web/ipfire/html/iptablesnat.txt /srv/web/ipfire/html/iptablesmangle.txt"); + + safe_system("/sbin/iptables -L -v -n > /var/tmp/iptables.txt"); + safe_system("/sbin/iptables -L -v -n -t nat > /var/tmp/iptablesnat.txt"); + safe_system("/sbin/iptables -t mangle -L -v -n > /var/tmp/iptablesmangle.txt"); + safe_system("chown nobody.nobody /var/tmp/iptables.txt /var/tmp/iptablesnat.txt /var/tmp/iptablesmangle.txt"); return 0; } From 4c6b2034921fcfbff5fc92ab567c56c47fe99137 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 18 Apr 2017 14:56:05 +0200 Subject: [PATCH 281/464] git: update to 2.12.1 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/packages/git | 29 ++++++++++++++++------------- lfs/git | 8 ++++---- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/config/rootfiles/packages/git b/config/rootfiles/packages/git index ea31b20a1..bf9e3728f 100644 --- a/config/rootfiles/packages/git +++ b/config/rootfiles/packages/git @@ -10,18 +10,18 @@ usr/lib/perl5/site_perl/5.12.3/Error.pm usr/lib/perl5/site_perl/5.12.3/Git.pm usr/lib/perl5/site_perl/5.12.3/Git/I18N.pm usr/lib/perl5/site_perl/5.12.3/Git/IndexInfo.pm -#usr/lib/perl5/site_perl/5.12.3/Git/SVN -usr/lib/perl5/site_perl/5.12.3/Git/SVN.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Editor.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Fetcher.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/GlobSpec.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Log.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize/YAML.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Migration.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Prompt.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Ra.pm -usr/lib/perl5/site_perl/5.12.3/Git/SVN/Utils.pm +usr/lib/perl5/site_perl/5.12.3/Git/SVN +#usr/lib/perl5/site_perl/5.12.3/Git/SVN.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Editor.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Fetcher.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/GlobSpec.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Log.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Memoize/YAML.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Migration.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Prompt.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Ra.pm +#usr/lib/perl5/site_perl/5.12.3/Git/SVN/Utils.pm #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git/.packlist #usr/libexec/git-core @@ -138,7 +138,6 @@ usr/libexec/git-core/git-rebase--interactive usr/libexec/git-core/git-rebase--merge usr/libexec/git-core/git-receive-pack usr/libexec/git-core/git-reflog -usr/libexec/git-core/git-relink usr/libexec/git-core/git-remote usr/libexec/git-core/git-remote-ext usr/libexec/git-core/git-remote-fd @@ -201,6 +200,7 @@ usr/libexec/git-core/mergetools/diffmerge usr/libexec/git-core/mergetools/diffuse usr/libexec/git-core/mergetools/ecmerge usr/libexec/git-core/mergetools/emerge +usr/libexec/git-core/mergetools/examdiff usr/libexec/git-core/mergetools/gvimdiff usr/libexec/git-core/mergetools/gvimdiff2 usr/libexec/git-core/mergetools/gvimdiff3 @@ -228,6 +228,7 @@ usr/share/git-core/templates/hooks/pre-applypatch.sample usr/share/git-core/templates/hooks/pre-commit.sample usr/share/git-core/templates/hooks/pre-push.sample usr/share/git-core/templates/hooks/pre-rebase.sample +usr/share/git-core/templates/hooks/pre-receive.sample usr/share/git-core/templates/hooks/prepare-commit-msg.sample usr/share/git-core/templates/hooks/update.sample #usr/share/git-core/templates/info @@ -270,6 +271,7 @@ usr/share/git-core/templates/info/exclude #usr/share/git-gui/lib/msgs/ja.msg #usr/share/git-gui/lib/msgs/nb.msg #usr/share/git-gui/lib/msgs/pt_br.msg +#usr/share/git-gui/lib/msgs/pt_pt.msg #usr/share/git-gui/lib/msgs/ru.msg #usr/share/git-gui/lib/msgs/sv.msg #usr/share/git-gui/lib/msgs/vi.msg @@ -302,6 +304,7 @@ usr/share/git-core/templates/info/exclude #usr/share/gitk/lib/msgs/it.msg #usr/share/gitk/lib/msgs/ja.msg #usr/share/gitk/lib/msgs/pt_br.msg +#usr/share/gitk/lib/msgs/pt_pt.msg #usr/share/gitk/lib/msgs/ru.msg #usr/share/gitk/lib/msgs/sv.msg #usr/share/gitk/lib/msgs/vi.msg diff --git a/lfs/git b/lfs/git index 564bc098d..9ffd08950 100644 --- a/lfs/git +++ b/lfs/git @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2013 IPFire Team # +# Copyright (C) 2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.7.4 +VER = 2.12.2 THISAPP = git-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = git -PAK_VER = 13 +PAK_VER = 14 DEPS = "perl-Authen-SASL perl-MIME-Base64 perl-Net-SMTP-SSL" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b0219fcb6d73104361f4fbdba3741d00 +$(DL_FILE)_MD5 = ad5ae08664c40caf074392abc301cccd install : $(TARGET) From aa6ee515c59cd42b12d69981329a2438e4d6e933 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 17:35:43 +0100 Subject: [PATCH 282/464] avahi: Drop package The daemon locks up when starting up in avahi_log_info() and probably the other logging functions, too. Since avahi is not really used a lot in the distribution, has been in testing for four years and has virtually no users I am going to drop it instead of wasting time on fixing this. Signed-off-by: Michael Tremer --- config/avahi/avahi | 45 --------- config/avahi/smb.service | 9 -- config/backup/includes/avahi | 1 - config/rootfiles/packages/avahi | 172 -------------------------------- config/rootfiles/packages/cups | 3 - lfs/avahi | 99 ------------------ lfs/cups | 8 +- make.sh | 1 - src/paks/avahi/install.sh | 37 ------- src/paks/avahi/uninstall.sh | 28 ------ src/paks/avahi/update.sh | 26 ----- 11 files changed, 4 insertions(+), 425 deletions(-) delete mode 100755 config/avahi/avahi delete mode 100644 config/avahi/smb.service delete mode 100644 config/backup/includes/avahi delete mode 100644 config/rootfiles/packages/avahi delete mode 100644 lfs/avahi delete mode 100644 src/paks/avahi/install.sh delete mode 100644 src/paks/avahi/uninstall.sh delete mode 100644 src/paks/avahi/update.sh diff --git a/config/avahi/avahi b/config/avahi/avahi deleted file mode 100755 index 7413f56f1..000000000 --- a/config/avahi/avahi +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# Begin $rc_base/init.d/avahi - -# Based on sysklogd script from LFS-3.1 and earlier. -# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org - -#$LastChangedBy: bdubbs $ -#$Date: 2005-08-01 14:29:19 -0500 (Mon, 01 Aug 2005) $ - -. /etc/sysconfig/rc -. $rc_functions - -case "$1" in - start) - boot_mesg "Starting avahi..." - loadproc /usr/sbin/avahi-daemon -f /etc/avahi/avahi-daemon.conf -D - ;; - - stop) - boot_mesg "Stopping avahi..." - /usr/sbin/avahi-daemon -k - ;; - - reload) - boot_mesg "Reloading avahi..." - reloadproc /usr/sbin/avahi-daemon -f /etc/avahi/avahi-daemon.conf -D - ;; - - restart) - $0 stop - sleep 1 - $0 start - ;; - - status) - statusproc /usr/sbin/avahi-daemon -c - ;; - - *) - echo "Usage: $0 {start|stop|reload|restart|status}" - exit 1 - ;; -esac - -# End $rc_base/init.d/avahi diff --git a/config/avahi/smb.service b/config/avahi/smb.service deleted file mode 100644 index d89535438..000000000 --- a/config/avahi/smb.service +++ /dev/null @@ -1,9 +0,0 @@ - - - - Samba Shares on %h - - _smb._tcp - 139 - - diff --git a/config/backup/includes/avahi b/config/backup/includes/avahi deleted file mode 100644 index 7f32af64d..000000000 --- a/config/backup/includes/avahi +++ /dev/null @@ -1 +0,0 @@ -/etc/avahi/avahi-daemon.conf diff --git a/config/rootfiles/packages/avahi b/config/rootfiles/packages/avahi deleted file mode 100644 index 4a3b57232..000000000 --- a/config/rootfiles/packages/avahi +++ /dev/null @@ -1,172 +0,0 @@ -etc/avahi -etc/avahi/avahi-autoipd.action -etc/avahi/avahi-daemon.conf -etc/avahi/avahi-dnsconfd.action -etc/avahi/hosts -etc/avahi/services -etc/avahi/services/sftp-ssh.service -etc/avahi/services/smb.service -etc/avahi/services/ssh.service -etc/dbus-1/system.d/avahi-dbus.conf -etc/rc.d/init.d/avahi -usr/bin/avahi-browse -usr/bin/avahi-browse-domains -usr/bin/avahi-publish -usr/bin/avahi-publish-address -usr/bin/avahi-publish-service -usr/bin/avahi-resolve -usr/bin/avahi-resolve-address -usr/bin/avahi-resolve-host-name -usr/bin/avahi-set-host-name -#usr/include/avahi-client -#usr/include/avahi-client/client.h -#usr/include/avahi-client/lookup.h -#usr/include/avahi-client/publish.h -#usr/include/avahi-common -#usr/include/avahi-common/address.h -#usr/include/avahi-common/alternative.h -#usr/include/avahi-common/cdecl.h -#usr/include/avahi-common/defs.h -#usr/include/avahi-common/domain.h -#usr/include/avahi-common/error.h -#usr/include/avahi-common/gccmacro.h -#usr/include/avahi-common/llist.h -#usr/include/avahi-common/malloc.h -#usr/include/avahi-common/rlist.h -#usr/include/avahi-common/simple-watch.h -#usr/include/avahi-common/strlst.h -#usr/include/avahi-common/thread-watch.h -#usr/include/avahi-common/timeval.h -#usr/include/avahi-common/watch.h -#usr/include/avahi-core -#usr/include/avahi-core/core.h -#usr/include/avahi-core/log.h -#usr/include/avahi-core/lookup.h -#usr/include/avahi-core/publish.h -#usr/include/avahi-core/rr.h -#usr/include/avahi-glib -#usr/include/avahi-glib/glib-malloc.h -#usr/include/avahi-glib/glib-watch.h -#usr/include/avahi-gobject -#usr/include/avahi-gobject/ga-client.h -#usr/include/avahi-gobject/ga-entry-group.h -#usr/include/avahi-gobject/ga-enums.h -#usr/include/avahi-gobject/ga-error.h -#usr/include/avahi-gobject/ga-record-browser.h -#usr/include/avahi-gobject/ga-service-browser.h -#usr/include/avahi-gobject/ga-service-resolver.h -#usr/lib/avahi -usr/lib/avahi/service-types.db -#usr/lib/libavahi-client.a -#usr/lib/libavahi-client.la -#usr/lib/libavahi-client.so -usr/lib/libavahi-client.so.3 -usr/lib/libavahi-client.so.3.2.9 -#usr/lib/libavahi-common.a -#usr/lib/libavahi-common.la -#usr/lib/libavahi-common.so -usr/lib/libavahi-common.so.3 -usr/lib/libavahi-common.so.3.5.3 -#usr/lib/libavahi-core.a -#usr/lib/libavahi-core.la -#usr/lib/libavahi-core.so -usr/lib/libavahi-core.so.7 -usr/lib/libavahi-core.so.7.0.2 -#usr/lib/libavahi-glib.a -#usr/lib/libavahi-glib.la -#usr/lib/libavahi-glib.so -usr/lib/libavahi-glib.so.1 -usr/lib/libavahi-glib.so.1.0.2 -#usr/lib/libavahi-gobject.a -#usr/lib/libavahi-gobject.la -#usr/lib/libavahi-gobject.so -usr/lib/libavahi-gobject.so.0 -usr/lib/libavahi-gobject.so.0.0.4 -#usr/lib/pkgconfig/avahi-client.pc -#usr/lib/pkgconfig/avahi-core.pc -#usr/lib/pkgconfig/avahi-glib.pc -#usr/lib/pkgconfig/avahi-gobject.pc -usr/lib/python2.7/site-packages/avahi -usr/lib/python2.7/site-packages/avahi/ServiceTypeDatabase.py -usr/sbin/avahi-autoipd -usr/sbin/avahi-daemon -usr/sbin/avahi-dnsconfd -usr/share/avahi -usr/share/avahi/avahi-service.dtd -usr/share/avahi/service-types -#usr/share/dbus-1/interfaces -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.AddressResolver.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.DomainBrowser.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.EntryGroup.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.HostNameResolver.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.RecordBrowser.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.Server.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceBrowser.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceResolver.xml -usr/share/dbus-1/interfaces/org.freedesktop.Avahi.ServiceTypeBrowser.xml -#usr/share/locale/ach -#usr/share/locale/ach/LC_MESSAGES -#usr/share/locale/ach/LC_MESSAGES/avahi.mo -#usr/share/locale/ar/LC_MESSAGES/avahi.mo -#usr/share/locale/bg/LC_MESSAGES/avahi.mo -#usr/share/locale/ca/LC_MESSAGES/avahi.mo -#usr/share/locale/cs/LC_MESSAGES/avahi.mo -#usr/share/locale/da/LC_MESSAGES/avahi.mo -#usr/share/locale/de/LC_MESSAGES/avahi.mo -#usr/share/locale/el/LC_MESSAGES/avahi.mo -#usr/share/locale/en_AU/LC_MESSAGES/avahi.mo -#usr/share/locale/en_CA/LC_MESSAGES/avahi.mo -#usr/share/locale/en_GB/LC_MESSAGES/avahi.mo -#usr/share/locale/en_NZ -#usr/share/locale/en_NZ/LC_MESSAGES -#usr/share/locale/en_NZ/LC_MESSAGES/avahi.mo -#usr/share/locale/eo/LC_MESSAGES/avahi.mo -#usr/share/locale/es/LC_MESSAGES/avahi.mo -#usr/share/locale/et/LC_MESSAGES/avahi.mo -#usr/share/locale/fa/LC_MESSAGES/avahi.mo -#usr/share/locale/fi/LC_MESSAGES/avahi.mo -#usr/share/locale/fo -#usr/share/locale/fo/LC_MESSAGES -#usr/share/locale/fo/LC_MESSAGES/avahi.mo -#usr/share/locale/fr/LC_MESSAGES/avahi.mo -#usr/share/locale/gl/LC_MESSAGES/avahi.mo -#usr/share/locale/he/LC_MESSAGES/avahi.mo -#usr/share/locale/hu/LC_MESSAGES/avahi.mo -#usr/share/locale/id/LC_MESSAGES/avahi.mo -#usr/share/locale/it/LC_MESSAGES/avahi.mo -#usr/share/locale/ja/LC_MESSAGES/avahi.mo -#usr/share/locale/ko/LC_MESSAGES/avahi.mo -#usr/share/locale/lv/LC_MESSAGES/avahi.mo -#usr/share/locale/ms/LC_MESSAGES/avahi.mo -#usr/share/locale/nl/LC_MESSAGES/avahi.mo -#usr/share/locale/pl/LC_MESSAGES/avahi.mo -#usr/share/locale/pt_BR/LC_MESSAGES/avahi.mo -#usr/share/locale/ro/LC_MESSAGES/avahi.mo -#usr/share/locale/ru/LC_MESSAGES/avahi.mo -#usr/share/locale/sk/LC_MESSAGES/avahi.mo -#usr/share/locale/sl/LC_MESSAGES/avahi.mo -#usr/share/locale/sr/LC_MESSAGES/avahi.mo -#usr/share/locale/sr@latin/LC_MESSAGES/avahi.mo -#usr/share/locale/sv/LC_MESSAGES/avahi.mo -#usr/share/locale/tr/LC_MESSAGES/avahi.mo -#usr/share/locale/uk/LC_MESSAGES/avahi.mo -#usr/share/locale/zh_CN/LC_MESSAGES/avahi.mo -#usr/share/locale/zh_TW/LC_MESSAGES/avahi.mo -#usr/share/man/man1/avahi-bookmarks.1 -#usr/share/man/man1/avahi-browse-domains.1 -#usr/share/man/man1/avahi-browse.1 -#usr/share/man/man1/avahi-publish-address.1 -#usr/share/man/man1/avahi-publish-service.1 -#usr/share/man/man1/avahi-publish.1 -#usr/share/man/man1/avahi-resolve-address.1 -#usr/share/man/man1/avahi-resolve-host-name.1 -#usr/share/man/man1/avahi-resolve.1 -#usr/share/man/man1/avahi-set-host-name.1 -#usr/share/man/man5/avahi-daemon.conf.5 -#usr/share/man/man5/avahi.hosts.5 -#usr/share/man/man5/avahi.service.5 -#usr/share/man/man8/avahi-autoipd.8 -#usr/share/man/man8/avahi-autoipd.action.8 -#usr/share/man/man8/avahi-daemon.8 -#usr/share/man/man8/avahi-dnsconfd.8 -#usr/share/man/man8/avahi-dnsconfd.action.8 diff --git a/config/rootfiles/packages/cups b/config/rootfiles/packages/cups index 3881d4aee..70b4eb468 100644 --- a/config/rootfiles/packages/cups +++ b/config/rootfiles/packages/cups @@ -16,7 +16,6 @@ usr/bin/cancel #usr/bin/cups-config usr/bin/cupstestdsc usr/bin/cupstestppd -usr/bin/ippfind usr/bin/ipptool usr/bin/lp usr/bin/lpoptions @@ -47,7 +46,6 @@ usr/bin/ppdpo #usr/include/cups/versioning.h usr/lib/cups usr/lib/cups/backend -usr/lib/cups/backend/dnssd usr/lib/cups/backend/http usr/lib/cups/backend/https usr/lib/cups/backend/ipp @@ -722,7 +720,6 @@ usr/share/locale/ru/cups_ru.po #usr/share/man/man1/cups.1.gz #usr/share/man/man1/cupstestdsc.1.gz #usr/share/man/man1/cupstestppd.1.gz -#usr/share/man/man1/ippfind.1.gz #usr/share/man/man1/ipptool.1.gz #usr/share/man/man1/lp.1.gz #usr/share/man/man1/lpoptions.1.gz diff --git a/lfs/avahi b/lfs/avahi deleted file mode 100644 index adcb84c54..000000000 --- a/lfs/avahi +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.6.32 - -THISAPP = avahi-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = avahi -PAK_VER = 4 - -DEPS = "dbus libdaemon" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 22b5e705d3eabb31d26f2e1e7b074013 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure \ - --prefix=/usr \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --with-avahi-user=avahi \ - --disable-qt3 \ - --disable-qt4 \ - --disable-gtk \ - --disable-gtk3 \ - --disable-pygtk \ - --disable-python-dbus \ - --disable-mono \ - --disable-monodoc \ - --with-distro=none - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - cp -avf $(DIR_SRC)/config/avahi/avahi /etc/init.d/ - cp -avf $(DIR_SRC)/config/avahi/smb.service /etc/avahi/services/smb.service - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/cups b/lfs/cups index 47f71f876..a9e2b1ac0 100644 --- a/lfs/cups +++ b/lfs/cups @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/cups-$(VER) TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups -PAK_VER = 15 +PAK_VER = 16 -DEPS = "avahi cups-filters dbus ghostscript krb5 libtiff" +DEPS = "cups-filters dbus ghostscript krb5 libtiff" ############################################################################### # Top-level Rules @@ -83,10 +83,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --sysconfdir=/var/ipfire \ --localstatedir=/var \ --enable-debug \ - --enable-avahi \ --enable-dbus \ --enable-gnutls \ - --enable-libusb + --enable-libusb \ + --disable-avahi cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install diff --git a/make.sh b/make.sh index 183ee7d24..7d3665c73 100755 --- a/make.sh +++ b/make.sh @@ -648,7 +648,6 @@ buildipfire() { ipfiremake dbus ipfiremake intltool ipfiremake libdaemon - ipfiremake avahi ipfiremake cups ipfiremake ghostscript ipfiremake lcms2 diff --git a/src/paks/avahi/install.sh b/src/paks/avahi/install.sh deleted file mode 100644 index cb0266bae..000000000 --- a/src/paks/avahi/install.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh - -# Create Username and group. -getent group avahi >/dev/null || groupadd -r avahi -getent passwd avahi >/dev/null || \ - useradd -r -g avahi -d /var/run/avahi-daemon -s /sbin/nologin \ - -c "Avahi mDNS daemon" avahi - -extract_files -ln -svf ../init.d/avahi /etc/rc.d/rc3.d/S65avahi -ln -svf ../init.d/avahi /etc/rc.d/rc0.d/K35avahi -ln -svf ../init.d/avahi /etc/rc.d/rc6.d/K35avahi -restore_backup ${NAME} -start_service --background ${NAME} diff --git a/src/paks/avahi/uninstall.sh b/src/paks/avahi/uninstall.sh deleted file mode 100644 index 1c8e67c9a..000000000 --- a/src/paks/avahi/uninstall.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service ${NAME} -make_backup ${NAME} -remove_files -rm -rf /etc/rc.d/rc*.d/*avahi diff --git a/src/paks/avahi/update.sh b/src/paks/avahi/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/avahi/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh From 2a77d2a2cee7a04d8bb1af541afd58ab7cf82810 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Thu, 13 Apr 2017 09:08:21 +0200 Subject: [PATCH 283/464] cups-filters: Fix for lfs-file (dropped avahi package) Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/cups-filters | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lfs/cups-filters b/lfs/cups-filters index 84d7e8ecf..d46bc7c4b 100644 --- a/lfs/cups-filters +++ b/lfs/cups-filters @@ -84,7 +84,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --localstatedir=/var \ --with-pdftops=hybrid \ --disable-ijs \ - --disable-mutool + --disable-mutool \ + --disable-avahi cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From b7d071af817c11b6daf54abfeea82360185208f3 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 19 Apr 2017 10:10:05 +0200 Subject: [PATCH 284/464] php 5.3.27: Source format improvements Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/php | 82 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/lfs/php b/lfs/php index 8139e2128..1f33f0d7e 100644 --- a/lfs/php +++ b/lfs/php @@ -79,47 +79,49 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/idn-* $(DIR_SRC)/Log-* $(DIR_SRC)/package.xml && \ cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr \ - --sysconfdir=/etc \ - --with-apxs2 \ - --enable-force-cgi-redirect \ - --enable-discard-path \ - --enable-fastcgi \ - --with-config-file-path=/etc \ - --with-openssl \ - --with-kerberos \ - --with-zlib \ - --enable-bcmath \ - --with-bz2 \ - --enable-calendar \ - --with-curl \ - --with-curlwrappers \ - --enable-dba=shared \ - --with-gdbm \ - --with-db4 \ - --with-inifile \ - --with-flatfile \ - --enable-exif \ - --enable-ftp \ - --with-openssl-dir=/usr \ - --with-gd=/usr \ - --with-jpeg-dir=/usr \ - --with-png-dir=/usr \ - --with-zlib-dir=/usr \ - --with-freetype-dir=/usr \ - --with-gettext \ - --with-gmp \ - --enable-mbstring \ - --with-mysql \ - --with-mysql-sock=/var/run/mysql \ - --with-ncurses \ - --with-pdo-mysql \ - --with-pdo-sqlite \ - --with-readline \ - --enable-sockets \ - --with-xsl \ - --with-iconv \ - --enable-zip + --sysconfdir=/etc \ + --with-apxs2 \ + --enable-force-cgi-redirect \ + --enable-discard-path \ + --enable-fastcgi \ + --with-config-file-path=/etc \ + --with-openssl \ + --with-kerberos \ + --with-zlib \ + --enable-bcmath \ + --with-bz2 \ + --enable-calendar \ + --with-curl \ + --with-curlwrappers \ + --enable-dba=shared \ + --with-gdbm \ + --with-db4 \ + --with-inifile \ + --with-flatfile \ + --enable-exif \ + --enable-ftp \ + --with-openssl-dir=/usr \ + --with-gd=/usr \ + --with-jpeg-dir=/usr \ + --with-png-dir=/usr \ + --with-zlib-dir=/usr \ + --with-freetype-dir=/usr \ + --with-gettext \ + --with-gmp \ + --enable-mbstring \ + --with-mysql \ + --with-mysql-sock=/var/run/mysql \ + --with-ncurses \ + --with-pdo-mysql \ + --with-pdo-sqlite \ + --with-readline \ + --enable-sockets \ + --with-xsl \ + --with-iconv \ + --enable-zip + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install cd $(DIR_APP) && install -v -m644 $(DIR_SRC)/config/php/php.ini /etc/php.ini From 4d376982163c134907415d44778af2a1f03b1485 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 19 Apr 2017 15:26:06 +0200 Subject: [PATCH 285/464] Revert "gdbm: update to 1.13" This reverts commit dc539daf8823ef97c931f12b514453c25e867c45. With "gdbm-Update to 1.13", 'php 5.3.27' failed to build. Best, Matthias Signed-off-by: Michael Tremer --- lfs/gdbm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lfs/gdbm b/lfs/gdbm index 82957c652..4db986cf5 100644 --- a/lfs/gdbm +++ b/lfs/gdbm @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2017 IPFire Team # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.13 +VER = 1.8.3 THISAPP = gdbm-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 8929dcda2a8de3fd2367bdbf66769376 +$(DL_FILE)_MD5 = 1d1b1d5c0245b1c00aff92da751e9aa1 install : $(TARGET) @@ -70,8 +70,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=$(PREFIX) --disable-nls --disable-static --enable-libgdbm-compat + cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make BINOWN=root BINGRP=root install + cd $(DIR_APP) && make BINOWN=root BINGRP=root install-compat @rm -rf $(DIR_APP) @$(POSTBUILD) From 1e645047b23939036c5aa4c86c0709c8b128a906 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 10 Apr 2017 00:35:50 +0200 Subject: [PATCH 286/464] libevent2: Update to 2.1.8-stable Contains lots of build- and bugfixes since 2.0.22 - for details see: https://raw.githubusercontent.com/libevent/libevent/release-2.1.8-stable/ChangeLog Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/libevent2 | 25 +++++++++++++------------ lfs/libevent2 | 6 +++--- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/config/rootfiles/common/libevent2 b/config/rootfiles/common/libevent2 index aab354ebe..d5c60c233 100644 --- a/config/rootfiles/common/libevent2 +++ b/config/rootfiles/common/libevent2 @@ -24,22 +24,23 @@ #usr/include/event2/tag_compat.h #usr/include/event2/thread.h #usr/include/event2/util.h -usr/lib/libevent-2.0.so.5 -usr/lib/libevent-2.0.so.5.1.9 -usr/lib/libevent_core-2.0.so.5 -usr/lib/libevent_core-2.0.so.5.1.9 -usr/lib/libevent_extra-2.0.so.5 -usr/lib/libevent_extra-2.0.so.5.1.9 -usr/lib/libevent_openssl-2.0.so.5 -usr/lib/libevent_openssl-2.0.so.5.1.9 -#usr/lib/libevent_openssl.a +#usr/include/event2/visibility.h +usr/lib/libevent-2.1.so.6 +usr/lib/libevent-2.1.so.6.0.2 +usr/lib/libevent_core-2.1.so.6 +usr/lib/libevent_core-2.1.so.6.0.2 +usr/lib/libevent_extra-2.1.so.6 +usr/lib/libevent_extra-2.1.so.6.0.2 +usr/lib/libevent_openssl-2.1.so.6 +usr/lib/libevent_openssl-2.1.so.6.0.2 #usr/lib/libevent_openssl.la usr/lib/libevent_openssl.so -usr/lib/libevent_pthreads-2.0.so.5 -usr/lib/libevent_pthreads-2.0.so.5.1.9 -#usr/lib/libevent_pthreads.a +usr/lib/libevent_pthreads-2.1.so.6 +usr/lib/libevent_pthreads-2.1.so.6.0.2 #usr/lib/libevent_pthreads.la usr/lib/libevent_pthreads.so #usr/lib/pkgconfig/libevent.pc +#usr/lib/pkgconfig/libevent_core.pc +#usr/lib/pkgconfig/libevent_extra.pc #usr/lib/pkgconfig/libevent_openssl.pc #usr/lib/pkgconfig/libevent_pthreads.pc diff --git a/lfs/libevent2 b/lfs/libevent2 index 2482dda17..014086403 100644 --- a/lfs/libevent2 +++ b/lfs/libevent2 @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2015 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.0.22-stable +VER = 2.1.8-stable THISAPP = libevent-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c4c56f986aa985677ca1db89630a2e11 +$(DL_FILE)_MD5 = f3eeaed018542963b7d2416ef1135ecc install : $(TARGET) From 2c2cf3918bee850ede133562ae1c42bf8c73ef68 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 12:44:27 +0100 Subject: [PATCH 287/464] IPsec: Allow using MODP-768 in proposal MODP-768 is broken but some systems out there (for example old Cisco ASAs) do not support anything better. Hence it is better to allow this instead of using no VPN at all. Signed-off-by: Michael Tremer --- html/cgi-bin/vpnmain.cgi | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index cc891c9f5..4da18dea8 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2178,7 +2178,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || goto ADVANCED_ERROR; } foreach my $val (@temp) { - if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) { + if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) { $errormessage = $Lang::tr{'invalid input'}; goto ADVANCED_ERROR; } @@ -2219,7 +2219,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || goto ADVANCED_ERROR; } foreach my $val (@temp) { - if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) { + if ($val !~ /^(curve25519|e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|768|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192|none)$/) { $errormessage = $Lang::tr{'invalid input'}; goto ADVANCED_ERROR; } @@ -2350,9 +2350,6 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || @temp = split('\|', $cgiparams{'IKE_GROUPTYPE'}); foreach my $key (@temp) {$checked{'IKE_GROUPTYPE'}{$key} = "selected='selected'"; } - # 768 is not supported by strongswan - $checked{'IKE_GROUPTYPE'}{'768'} = ''; - $checked{'ESP_ENCRYPTION'}{'aes256'} = ''; $checked{'ESP_ENCRYPTION'}{'aes192'} = ''; $checked{'ESP_ENCRYPTION'}{'aes128'} = ''; @@ -2554,6 +2551,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || + @@ -2578,6 +2576,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || + From c94d1976d3bf2fd760834a0093eeb286a90c8fdd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 12:53:53 +0100 Subject: [PATCH 288/464] IPsec: Mark MODP<=1024 and MD5 as broken and SHA1 as weak Since we somehow have to support these algorithms this patch adds some information for the user that it is very strongly discouraged to use them in production. Signed-off-by: Michael Tremer --- doc/language_issues.es | 2 ++ doc/language_issues.fr | 2 ++ doc/language_issues.it | 2 ++ doc/language_issues.nl | 2 ++ doc/language_issues.pl | 2 ++ doc/language_issues.ru | 2 ++ doc/language_issues.tr | 2 ++ doc/language_missings | 8 ++++++++ html/cgi-bin/vpnmain.cgi | 16 ++++++++-------- langs/de/cgi-bin/de.pl | 2 ++ langs/en/cgi-bin/en.pl | 2 ++ 11 files changed, 34 insertions(+), 8 deletions(-) diff --git a/doc/language_issues.es b/doc/language_issues.es index 3dec2dbb3..48afe09bb 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1143,6 +1143,7 @@ WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand @@ -1152,6 +1153,7 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.fr b/doc/language_issues.fr index fa5387c8b..a048e983a 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1160,6 +1160,7 @@ WARNING: untranslated string: urlfilter mode block WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand @@ -1169,6 +1170,7 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.it b/doc/language_issues.it index 09338a28a..077ab75e1 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -819,6 +819,7 @@ WARNING: untranslated string: search WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action @@ -827,3 +828,4 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 3390ef368..c27d5e764 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -867,6 +867,7 @@ WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: upload dh key WARNING: untranslated string: vendor +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action @@ -875,3 +876,4 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 3dec2dbb3..48afe09bb 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1143,6 +1143,7 @@ WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand @@ -1152,6 +1153,7 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 303e19b95..c8595703d 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1138,6 +1138,7 @@ WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand @@ -1147,6 +1148,7 @@ WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.tr b/doc/language_issues.tr index af17e3756..ad150abc2 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -753,8 +753,10 @@ WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed WARNING: untranslated string: routing table +WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistics n2n +WARNING: untranslated string: vpn weak diff --git a/doc/language_missings b/doc/language_missings index a6c7188a6..aaf060410 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -561,6 +561,7 @@ < urlfilter redirect template < vendor < visit us at +< vpn broken < vpn keyexchange < vpn on-demand < vpn start action @@ -568,6 +569,7 @@ < vpn start action start < vpn statistic n2n < vpn statistic rw +< vpn weak < wlanap access point < wlanap channel < wlanap country @@ -1180,6 +1182,7 @@ < urlfilter redirect template < vendor < visit us at +< vpn broken < vpn keyexchange < vpn on-demand < vpn start action @@ -1187,6 +1190,7 @@ < vpn start action start < vpn statistic n2n < vpn statistic rw +< vpn weak < wlanap country < wlan client < wlan client advanced settings @@ -1764,6 +1768,7 @@ < urlfilter redirect template < vendor < visit us at +< vpn broken < vpn keyexchange < vpn on-demand < vpn start action @@ -1771,6 +1776,7 @@ < vpn start action start < vpn statistic n2n < vpn statistic rw +< vpn weak < wlanap country < wlan client < wlan client advanced settings @@ -2353,6 +2359,7 @@ < urlfilter redirect template < vendor < visit us at +< vpn broken < vpn keyexchange < vpn on-demand < vpn start action @@ -2360,6 +2367,7 @@ < vpn start action start < vpn statistic n2n < vpn statistic rw +< vpn weak < week-graph < wlanap country < wlan client diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index 4da18dea8..88159499b 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2503,8 +2503,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - - + + @@ -2513,8 +2513,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - - + + @@ -2550,8 +2550,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - - + + @@ -2575,8 +2575,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - - + + diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index bda0e2692..0d6836b9a 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2605,6 +2605,7 @@ 'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Wenn möglich, vermeiden (preshared Schlüssel wird im Klartext übertragen)!', 'vpn altname syntax' => 'Der Subjekt Alternativ Name ist eine durch Komma getrennte Liste von Email, DNS, URI, RID und IP Objekten.
    Email: eine Email Adresse. Syntax Email: \'copy\' benutzt die Email Adresse aus dem Zertifikatfeld.
    DNS: ein gültiger Domain Name.
    URI: eine gültige URI.
    RID: Registriertes Objekt Identifikation.
    IP: eine IP Adresse.
    Bitte beachten: der Zeichensatz ist eingeschränkt und die Groß-/Kleinschreibung ist entscheidend.
    Beispiel:
    email:info@ipfire.org,email:copy,DNS:www.ipfire.org,IP:127.0.0.1,URI:http://url/nach/irgendwo', 'vpn auth-dn' => 'Peer wird identifiziert durch entweder ein IPV4_ADDR, FQDN, USER_FQDN oder DER_ASN1_DN string in Remote ID Feld', +'vpn broken' => 'Gebrochen', 'vpn delayed start' => 'Verzögerung bevor VPN gestartet wird (Sekunden)', 'vpn delayed start help' => 'Falls notwendig, kann diese Verzögerung dazu verwendet werden, um Dynamic-DNS-Updates ordnungsgemäß anzuwenden. 60 ist ein gängiger Wert, wenn ROT (RED) eine dynamische IP Adresse ist.', 'vpn incompatible use of defaultroute' => 'Hostname=%defaultroute nicht zulässig', @@ -2627,6 +2628,7 @@ 'vpn statistic rw' => 'OpenVPN-Roadwarrior-Statistik', 'vpn subjectaltname' => 'Subjekt Alternativer Name', 'vpn watch' => 'Netz-zu-Netz VPN neu starten, wenn sich Remote-IP ändert (DynDNS).', +'vpn weak' => 'Schwach', 'waiting to synchronize clock' => 'Bitte warten, die Uhr wird synchronisiert', 'warn when traffic reaches' => 'Warnen wenn Traffic x % erreicht', 'warning messages' => 'Warnhinweise', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 6608ceb63..925f66528 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2648,6 +2648,7 @@ 'vpn aggrmode' => 'IKE aggressive mode allowed. Avoid if possible (preshared key is transmitted in clear text)!', 'vpn altname syntax' => 'SubjectAltName is a comma separated list of e-mail, dns, uri, rid and ip objects.
    email:an email address. Syntax email:copy takes the email field from the cert to be used.
    DNS:a valid domain name.
    URI:any valid uri.
    RID:registered object identifier.
    IP:an IP address.
    Note:charset is limited and case is significant.
    Example:
    e-mail:ipfire@foo.org,email:copy,DNS:www.ipfire.org,IP:127.0.0.1,URI:http://url/to/something', 'vpn auth-dn' => 'Peer is identified by either IPV4_ADDR, FQDN, USER_FQDN or DER_ASN1_DN string in remote ID field', +'vpn broken' => 'Broken', 'vpn configuration main' => 'VPN Configuration', 'vpn delayed start' => 'Delay before launching VPN (seconds)', 'vpn delayed start help' => 'If required, this delay can be used to allow dynamic DNS updates to propagate properly. 60 is a common value when RED is a dynamic IP.', @@ -2672,6 +2673,7 @@ 'vpn statistic rw' => 'OpenVPN Roadwarrior Statistics', 'vpn subjectaltname' => 'Subject Alt Name', 'vpn watch' => 'Restart net-to-net vpn when remote peer IP changes (dyndns).', +'vpn weak' => 'Weak', 'waiting to synchronize clock' => 'Waiting to synchronize clock', 'warn when traffic reaches' => 'Warn when traffic reaches x %', 'warning messages' => 'Warning messages', From 1fab4edfa690b410a255b9dd1d896178512e03d5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 13:00:42 +0100 Subject: [PATCH 289/464] IPsec: Show status in WUI when VPN is connecting This is helpful when debugging on-demand connections when you can see if strongswan tries to connect or is still idle. Signed-off-by: Michael Tremer --- doc/language_issues.es | 1 + doc/language_issues.fr | 1 + doc/language_issues.it | 1 + doc/language_issues.nl | 1 + doc/language_issues.pl | 1 + doc/language_issues.ru | 1 + doc/language_issues.tr | 1 + doc/language_missings | 4 ++++ html/cgi-bin/index.cgi | 3 +++ html/cgi-bin/vpnmain.cgi | 3 +++ langs/de/cgi-bin/de.pl | 1 + langs/en/cgi-bin/en.pl | 1 + 12 files changed, 19 insertions(+) diff --git a/doc/language_issues.es b/doc/language_issues.es index 48afe09bb..09dae68d4 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1144,6 +1144,7 @@ WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand diff --git a/doc/language_issues.fr b/doc/language_issues.fr index a048e983a..1f4f9c357 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1161,6 +1161,7 @@ WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand diff --git a/doc/language_issues.it b/doc/language_issues.it index 077ab75e1..6b5639c0f 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -820,6 +820,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action diff --git a/doc/language_issues.nl b/doc/language_issues.nl index c27d5e764..30744829d 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -868,6 +868,7 @@ WARNING: untranslated string: uncheck all WARNING: untranslated string: upload dh key WARNING: untranslated string: vendor WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 48afe09bb..09dae68d4 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1144,6 +1144,7 @@ WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand diff --git a/doc/language_issues.ru b/doc/language_issues.ru index c8595703d..f4944db94 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1139,6 +1139,7 @@ WARNING: untranslated string: urlfilter redirect template WARNING: untranslated string: vendor WARNING: untranslated string: visit us at WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike WARNING: untranslated string: vpn keyexchange WARNING: untranslated string: vpn on-demand diff --git a/doc/language_issues.tr b/doc/language_issues.tr index ad150abc2..ac7a82dc1 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -754,6 +754,7 @@ WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed WARNING: untranslated string: routing table WARNING: untranslated string: vpn broken +WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn on-demand WARNING: untranslated string: vpn start action WARNING: untranslated string: vpn start action route diff --git a/doc/language_missings b/doc/language_missings index aaf060410..72fe07594 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -562,6 +562,7 @@ < vendor < visit us at < vpn broken +< vpn connecting < vpn keyexchange < vpn on-demand < vpn start action @@ -1183,6 +1184,7 @@ < vendor < visit us at < vpn broken +< vpn connecting < vpn keyexchange < vpn on-demand < vpn start action @@ -1769,6 +1771,7 @@ < vendor < visit us at < vpn broken +< vpn connecting < vpn keyexchange < vpn on-demand < vpn start action @@ -2360,6 +2363,7 @@ < vendor < visit us at < vpn broken +< vpn connecting < vpn keyexchange < vpn on-demand < vpn start action diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index 7c1746259..80a86afb2 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -425,6 +425,9 @@ END if (($line =~ /\"$vpnconfig{$key}[1]\".*IPsec SA established/) || ($line =~/$vpnconfig{$key}[1]\{.*INSTALLED/ )){ $activecolor = $Header::colourgreen; $activestatus = $Lang::tr{'capsopen'}; + } elsif ($line =~ /$vpnconfig{$key}[1]\[.*CONNECTING/) { + $activecolor = $Header::colourorange; + $activestatus = $Lang::tr{'vpn connecting'}; } elsif ($line =~ /$vpnconfig{$key}[1]\{.*ROUTED/) { $activecolor = $Header::colourorange; $activestatus = $Lang::tr{'vpn on-demand'}; diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index 88159499b..d3e4fe8f9 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2808,6 +2808,9 @@ END ($line =~ /$confighash{$key}[1]\{.*INSTALLED/)) { $col1="bgcolor='${Header::colourgreen}'"; $active = "$Lang::tr{'capsopen'}"; + } elsif ($line =~ /$confighash{$key}[1]\[.*CONNECTING/) { + $col1="bgcolor='${Header::colourorange}'"; + $active = "$Lang::tr{'vpn connecting'}"; } elsif ($line =~ /$confighash{$key}[1]\{.*ROUTED/) { $col1="bgcolor='${Header::colourorange}'"; $active = "$Lang::tr{'vpn on-demand'}"; diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 0d6836b9a..68d925d8c 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2606,6 +2606,7 @@ 'vpn altname syntax' => 'Der Subjekt Alternativ Name ist eine durch Komma getrennte Liste von Email, DNS, URI, RID und IP Objekten.
    Email: eine Email Adresse. Syntax Email: \'copy\' benutzt die Email Adresse aus dem Zertifikatfeld.
    DNS: ein gültiger Domain Name.
    URI: eine gültige URI.
    RID: Registriertes Objekt Identifikation.
    IP: eine IP Adresse.
    Bitte beachten: der Zeichensatz ist eingeschränkt und die Groß-/Kleinschreibung ist entscheidend.
    Beispiel:
    email:info@ipfire.org,email:copy,DNS:www.ipfire.org,IP:127.0.0.1,URI:http://url/nach/irgendwo', 'vpn auth-dn' => 'Peer wird identifiziert durch entweder ein IPV4_ADDR, FQDN, USER_FQDN oder DER_ASN1_DN string in Remote ID Feld', 'vpn broken' => 'Gebrochen', +'vpn connecting' => 'VERBINDUNGSAUFBAU', 'vpn delayed start' => 'Verzögerung bevor VPN gestartet wird (Sekunden)', 'vpn delayed start help' => 'Falls notwendig, kann diese Verzögerung dazu verwendet werden, um Dynamic-DNS-Updates ordnungsgemäß anzuwenden. 60 ist ein gängiger Wert, wenn ROT (RED) eine dynamische IP Adresse ist.', 'vpn incompatible use of defaultroute' => 'Hostname=%defaultroute nicht zulässig', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 925f66528..4f30f562d 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2650,6 +2650,7 @@ 'vpn auth-dn' => 'Peer is identified by either IPV4_ADDR, FQDN, USER_FQDN or DER_ASN1_DN string in remote ID field', 'vpn broken' => 'Broken', 'vpn configuration main' => 'VPN Configuration', +'vpn connecting' => 'CONNECTING', 'vpn delayed start' => 'Delay before launching VPN (seconds)', 'vpn delayed start help' => 'If required, this delay can be used to allow dynamic DNS updates to propagate properly. 60 is a common value when RED is a dynamic IP.', 'vpn force mobike' => 'Force using MOBIKE (only IKEv2)', From 5b62ae49d8188a0f28fc1df8e80dcb35c29771ac Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 20 Apr 2017 20:26:38 +0200 Subject: [PATCH 290/464] core110: remove avahi from system and pakfire db Signed-off-by: Arne Fitzenreiter --- config/rootfiles/core/110/update.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/rootfiles/core/110/update.sh b/config/rootfiles/core/110/update.sh index 2011d4d9d..0f54184da 100644 --- a/config/rootfiles/core/110/update.sh +++ b/config/rootfiles/core/110/update.sh @@ -47,6 +47,13 @@ ldconfig # Remove deprecated options sed -e "/^RSAAuthentication/d" -i /etc/ssh/sshd_config +# Remove avahi from system and pakfire db +for i in $(cat /opt/pakfire/db/rootfiles/avahi); do + rm -rfv /${i} +done +rm -fv /opt/pakfire/db/rootfiles/avahi +rm -fv /opt/pakfire/db/*/meta-avahi + # Start services /etc/init.d/unbound start /etc/init.d/sshd restart From e3922c1b5665d3e8c004e4b455525644c035989c Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 20 Apr 2017 20:32:42 +0200 Subject: [PATCH 291/464] avahi-remove: bump package versions to remove avahi dep Signed-off-by: Arne Fitzenreiter --- lfs/cups-filters | 2 +- lfs/libvirt | 2 +- lfs/samba | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/cups-filters b/lfs/cups-filters index d46bc7c4b..109db07d7 100644 --- a/lfs/cups-filters +++ b/lfs/cups-filters @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = cups-filters -PAK_VER = 1 +PAK_VER = 2 DEPS = "cups ghostscript" diff --git a/lfs/libvirt b/lfs/libvirt index 5a9548d49..7eed5c816 100644 --- a/lfs/libvirt +++ b/lfs/libvirt @@ -33,7 +33,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = i586 x86_64 PROG = libvirt -PAK_VER = 12 +PAK_VER = 13 DEPS = "libpciaccess libyajl ncat qemu" diff --git a/lfs/samba b/lfs/samba index 076152f48..2714321f4 100644 --- a/lfs/samba +++ b/lfs/samba @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = samba -PAK_VER = 64 +PAK_VER = 65 DEPS = "cups krb5" From 9598998f686a75079519fdcce5553529700418e6 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sat, 22 Apr 2017 08:19:05 +0200 Subject: [PATCH 292/464] core110: remove avahi startlinks Signed-off-by: Arne Fitzenreiter --- config/rootfiles/core/110/update.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/core/110/update.sh b/config/rootfiles/core/110/update.sh index 0f54184da..ada4fc59c 100644 --- a/config/rootfiles/core/110/update.sh +++ b/config/rootfiles/core/110/update.sh @@ -53,6 +53,7 @@ for i in $(cat /opt/pakfire/db/rootfiles/avahi); do done rm -fv /opt/pakfire/db/rootfiles/avahi rm -fv /opt/pakfire/db/*/meta-avahi +rm -fv /etc/rc.d/rc*.d/???avahi # Start services /etc/init.d/unbound start From 5ba5f8c02bda20d9de226eecb5bb73654c23173a Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sat, 22 Apr 2017 09:54:05 +0200 Subject: [PATCH 293/464] avahi-remove: bump mpd version. Signed-off-by: Arne Fitzenreiter --- lfs/mpd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/mpd b/lfs/mpd index 6b057f7c3..93039b772 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/${THISAPP} TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd -PAK_VER = 16 +PAK_VER = 17 DEPS = "alsa faad2 ffmpeg-libs flac lame libmad libshout libogg libid3tag libvorbis opus" From 723d1d911ff717ac43c24738960e76fca11c4cbd Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 21 Apr 2017 19:00:21 +0200 Subject: [PATCH 294/464] unbound 1.6.1: Linking against libevent2 Hi, this was triggered by unbound-users@unbound.net - it seems that the 'configure'-option '--with-libevent-support' is not enough: ***SNIP*** ... When building unbound with --with-libevent support, the make install phase should also call make unbound-event-install or else unbound-event.h does not get installed and the header file for using the unbound event functionality is not available. ... This install is triggered by the option --enable-event-api. Just enabling --with-libevent does not trigger the install by itself. Best regards, Wouter ... ***SNAP*** I built 'unbound' this way - its running without any problems so far. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/unbound | 1 + lfs/unbound | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/config/rootfiles/common/unbound b/config/rootfiles/common/unbound index a94ea2564..824567e1f 100644 --- a/config/rootfiles/common/unbound +++ b/config/rootfiles/common/unbound @@ -6,6 +6,7 @@ etc/unbound/icannbundle.pem etc/unbound/local.d etc/unbound/root.hints etc/unbound/unbound.conf +#usr/include/unbound-event.h #usr/include/unbound.h #usr/lib/libunbound.la #usr/lib/libunbound.so diff --git a/lfs/unbound b/lfs/unbound index f361f24f0..d78bd9509 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -78,7 +78,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --with-pidfile=/var/run/unbound.pid \ --with-rootkey-file=/var/lib/unbound/root.key \ --disable-static \ - --with-libevent + --with-libevent \ + --enable-event-api + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install From 1bea8be2ce2ce0c4ee2a07bcffb978f4ea07ab89 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 21 Apr 2017 22:37:28 +0200 Subject: [PATCH 295/464] GUI: Some simple FW-Log cosmetics Fixed the 'details'-Button in 'firewalllogcountry.dat' by adding missing translation string. Each 'Loggraphs'-Page got a unique title and a new heading for the corresponding diagram. Just cosmetics... Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- html/cgi-bin/logs.cgi/firewalllogcountry.dat | 6 +++--- html/cgi-bin/logs.cgi/firewalllogip.dat | 4 ++-- html/cgi-bin/logs.cgi/firewalllogport.dat | 4 ++-- langs/de/cgi-bin/de.pl | 8 ++++++-- langs/en/cgi-bin/en.pl | 8 ++++++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/html/cgi-bin/logs.cgi/firewalllogcountry.dat b/html/cgi-bin/logs.cgi/firewalllogcountry.dat index 26920b5da..f2b6048f7 100644 --- a/html/cgi-bin/logs.cgi/firewalllogcountry.dat +++ b/html/cgi-bin/logs.cgi/firewalllogcountry.dat @@ -213,7 +213,7 @@ if ($multifile) { my $MODNAME="fwlogs"; &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log country'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); @@ -281,7 +281,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', 'Firewall Logs'); +&Header::openbox('100%', 'left', $Lang::tr{'firewall graph country'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; my $red_interface = &General::get_red_interface(); @@ -471,7 +471,7 @@ for($s=0;$s<$lines;$s++) print""; print""; print""; - print""; + print""; } elsif ($key[$s] eq 'unknown') { print "unknown"; diff --git a/html/cgi-bin/logs.cgi/firewalllogip.dat b/html/cgi-bin/logs.cgi/firewalllogip.dat index 08ef1c4be..9e366745d 100644 --- a/html/cgi-bin/logs.cgi/firewalllogip.dat +++ b/html/cgi-bin/logs.cgi/firewalllogip.dat @@ -212,7 +212,7 @@ if ($multifile) { my $MODNAME="fwlogs"; &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log ip'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); @@ -283,7 +283,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', 'Firewall Logs'); +&Header::openbox('100%', 'left', $Lang::tr{'firewall graph ip'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; my $linesjc = 0; diff --git a/html/cgi-bin/logs.cgi/firewalllogport.dat b/html/cgi-bin/logs.cgi/firewalllogport.dat index fbc92e43b..67fe6aa6e 100644 --- a/html/cgi-bin/logs.cgi/firewalllogport.dat +++ b/html/cgi-bin/logs.cgi/firewalllogport.dat @@ -213,7 +213,7 @@ if ($multifile) { my $MODNAME="fwlogs"; &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log port'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { @@ -281,7 +281,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', 'Firewall Logs'); +&Header::openbox('100%', 'left', $Lang::tr{'firewall graph port'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; my $linesjc = 0; diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 68d925d8c..6443abe7e 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -948,11 +948,15 @@ 'fireinfo why read more' => 'Mehr über die Gründe.', 'fireinfo your profile id' => 'Profil-ID', 'firewall' => 'Firewall', -'firewall graphs' => 'Firewall-Diagramme', +'firewall graph country' => 'Firewall-Diagramm (Land)', +'firewall graph ip' => 'Firewall-Diagramm (IP)', +'firewall graph port' => 'Firewall-Diagramm (Port)', 'firewall hits' => 'Gesamtanzahl der Firewall-Treffer für', 'firewall hits per' => 'Firewalltreffer pro', 'firewall log' => 'Firewall-Protokoll', -'firewall log viewer' => 'Betrachter der Firewall-Logdateien', +'firewall log country' => 'Firewall-Protokoll (Land)', +'firewall log ip' => 'Firewall-Protokoll (IP)', +'firewall log port' => 'Firewall-Protokoll (Port)', 'firewall logs' => 'Firewall-Logdateien', 'firewall logs country' => 'Fw-Logdiagramme (Land)', 'firewall logs ip' => 'Fw-Logdiagramme (IP)', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 4f30f562d..4c62471f7 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -975,11 +975,15 @@ 'fireinfo why read more' => 'Read more about the reasons.', 'fireinfo your profile id' => 'Your profile ID', 'firewall' => 'Firewall', -'firewall graphs' => 'Firewall Graphs', +'firewall graph country' => 'Firewall-Diagram (Country)', +'firewall graph ip' => 'Firewall-Diagram (IP)', +'firewall graph port' => 'Firewall-Diagram (Port)', 'firewall hits' => 'Total number of firewall hits for', 'firewall hits per' => 'firewallhits per', 'firewall log' => 'Firewall log', -'firewall log viewer' => 'Firewall Log Viewer', +'firewall log country' => 'Firewall log (Country)', +'firewall log ip' => 'Firewall log (IP)', +'firewall log port' => 'Firewall log (Port)', 'firewall logs' => 'Firewall Logs', 'firewall logs country' => 'Fw-Loggraphs (Country)', 'firewall logs ip' => 'Fw-Loggraphs (IP)', From d55d05b6cb6bb3ddb7fde20d975cf4f9546afedf Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 12 Jul 2016 12:56:42 +0200 Subject: [PATCH 296/464] vnstat: Update to 1.15 Changelog: http://humdi.net/vnstat/CHANGES I had to add some 'configure'-lines to build this - nevertheless: its working. ;-) 'vnstat.conf' needed some additional 'sed'-lines, too. Please review, test and confirm. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/vnstat | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lfs/vnstat b/lfs/vnstat index 1c1333b53..07cca6939 100644 --- a/lfs/vnstat +++ b/lfs/vnstat @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.11 +VER = 1.15 THISAPP = vnstat-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = a5a113f9176cd61fb954f2ba297f5fdb +$(DL_FILE)_MD5 = 351051ef3005e3ca99123eec07ac0a7d install : $(TARGET) @@ -73,9 +73,16 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && make all $(MAKETUNING) LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes" + + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --sysconfdir=/etc + + cd $(DIR_APP) && make all $(MAKETUNING) LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes" cd $(DIR_APP) && make install sed -i 's|eth0|green0|g' /etc/vnstat.conf sed -i 's|/var/lib/vnstat|/var/log/vnstat|g' /etc/vnstat.conf + sed -i 's|/var/log/vnstat/vnstat.log|/var/log/vnstat.log|g' /etc/vnstat.conf + sed -i 's|/var/run/vnstat/vnstat.pid|/var/run/vnstat.pid|g' /etc/vnstat.conf @rm -rf $(DIR_APP) @$(POSTBUILD) From 0e8f275e80d8ad517019f7c0f8349a5a16ea9f1b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 22 Apr 2017 18:17:27 +0200 Subject: [PATCH 297/464] vnstat: Update to 1.17 For details see: http://humdi.net/vnstat/CHANGES Please note - this commit is based on: http://git.ipfire.org/?p=people/mfischer/ipfire-2.x.git;a=commit;h=f92c3ef6b97d4bd5e3db9c6c783ab0059016b211 1.15 was running here since then, upgrading to 1.17 showed no problems so far. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/vnstat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/vnstat b/lfs/vnstat index 07cca6939..376a1e999 100644 --- a/lfs/vnstat +++ b/lfs/vnstat @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.15 +VER = 1.17 THISAPP = vnstat-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 351051ef3005e3ca99123eec07ac0a7d +$(DL_FILE)_MD5 = 8de1c7e40806509943804bb4b26f5409 install : $(TARGET) From 7090074557516deaaff9b1a84f4f8beec6c4dadd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 28 Apr 2017 13:01:41 +0100 Subject: [PATCH 298/464] OpenVPN: Use SHA512 by default This will break compatibility with old clients like Windows XP, but these are too old now to be supported. SHA1 is considered to be weak and should not be used any more Signed-off-by: Michael Tremer --- html/cgi-bin/ovpnmain.cgi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index 037894d50..618dfc1af 100644 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -2631,7 +2631,7 @@ ADV_ERROR: $cgiparams{'PMTU_DISCOVERY'} = 'off'; } if ($cgiparams{'DAUTH'} eq '') { - $cgiparams{'DAUTH'} = 'SHA1'; + $cgiparams{'DAUTH'} = 'SHA512'; } if ($cgiparams{'TLSAUTH'} eq '') { $cgiparams{'TLSAUTH'} = 'off'; @@ -4454,7 +4454,7 @@ if ($cgiparams{'TYPE'} eq 'net') { $cgiparams{'MSSFIX'} = 'on'; $cgiparams{'FRAGMENT'} = '1300'; $cgiparams{'PMTU_DISCOVERY'} = 'off'; - $cgiparams{'DAUTH'} = 'SHA1'; + $cgiparams{'DAUTH'} = 'SHA512'; ### # m.a.d n2n end ### @@ -5037,7 +5037,7 @@ END $cgiparams{'MSSFIX'} = 'off'; } if ($cgiparams{'DAUTH'} eq '') { - $cgiparams{'DAUTH'} = 'SHA1'; + $cgiparams{'DAUTH'} = 'SHA512'; } if ($cgiparams{'DOVPN_SUBNET'} eq '') { $cgiparams{'DOVPN_SUBNET'} = '10.' . int(rand(256)) . '.' . int(rand(256)) . '.0/255.255.255.0'; From f3dfb261c8c78f7806bcf215646f9d3618d151f5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 28 Apr 2017 13:03:46 +0100 Subject: [PATCH 299/464] OpenVPN: Mark SHA1 as weak Signed-off-by: Michael Tremer --- html/cgi-bin/ovpnmain.cgi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index 618dfc1af..d46a14e79 100644 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -2821,7 +2821,7 @@ print <SHA2 (512 $Lang::tr{'bit'}) - + $Lang::tr{'openvpn default'}: SHA1 (160 $Lang::tr{'bit'}) @@ -4705,7 +4705,7 @@ if ($cgiparams{'TYPE'} eq 'net') { - + From 3d5c499e0ca73c9a787815b8894d6cfcb0416a1b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 28 Apr 2017 08:17:33 +0200 Subject: [PATCH 300/464] logrotate: Update to 3.12.1 For details see: https://github.com/logrotate/logrotate/blob/master/ChangeLog.md Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/logrotate | 4 ++-- lfs/logrotate | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/config/rootfiles/common/logrotate b/config/rootfiles/common/logrotate index 8ef728c94..0583525ea 100644 --- a/config/rootfiles/common/logrotate +++ b/config/rootfiles/common/logrotate @@ -1,6 +1,6 @@ #etc/logrotate.d etc/logrotate.d/.empty -#usr/man/man5/logrotate.conf.5 -#usr/man/man8/logrotate.8 usr/sbin/logrotate +#usr/share/man/man5/logrotate.conf.5 +#usr/share/man/man8/logrotate.8 var/lib/logrotate.status diff --git a/lfs/logrotate b/lfs/logrotate index 0d50103e5..476f146eb 100644 --- a/lfs/logrotate +++ b/lfs/logrotate @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,10 +24,10 @@ include Config -VER = 3.9.1 +VER = 3.12.1 THISAPP = logrotate-$(VER) -DL_FILE = logrotate_$(VER).orig.tar.gz +DL_FILE = logrotate-$(VER).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 4492b145b6d542e4a2f41e77fa199ab0 +$(DL_FILE)_MD5 = 066b49891bad2849d5044c1952613ea6 install : $(TARGET) @@ -70,6 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + + cd $(DIR_APP) && ./autogen.sh + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install mkdir -pv /etc/logrotate.d From abd12bd073dd0be74d97e2f204027f2a4346549a Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 25 Apr 2017 21:13:17 +0200 Subject: [PATCH 301/464] nano: Update to 2.8.1 For details see: https://www.nano-editor.org/news.php Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/packages/nano | 3 ++- lfs/nano | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/config/rootfiles/packages/nano b/config/rootfiles/packages/nano index f8171b4df..0e9341d68 100644 --- a/config/rootfiles/packages/nano +++ b/config/rootfiles/packages/nano @@ -1,11 +1,12 @@ #etc/nano -etc/nano/nanorc.sample +etc/nano/sample.nanorc usr/bin/nano usr/bin/pico usr/bin/rnano #usr/share/doc/nano #usr/share/doc/nano/faq.html #usr/share/doc/nano/nano.1.html +#usr/share/doc/nano/nano.html #usr/share/doc/nano/nanorc.5.html #usr/share/doc/nano/rnano.1.html #usr/share/info/nano.info diff --git a/lfs/nano b/lfs/nano index 2ecb1a5f8..34e8444f9 100644 --- a/lfs/nano +++ b/lfs/nano @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.7.3 +VER = 2.8.1 THISAPP = nano-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nano -PAK_VER = 14 +PAK_VER = 15 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 007ba6321212d3ec38f46236465b6ea8 +$(DL_FILE)_MD5 = 0dec96d839657e7f1a8396d7dbb19c07 install : $(TARGET) @@ -87,7 +87,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - cd $(DIR_APP) && install -v -m644 -D doc/nanorc.sample /etc/nano/nanorc.sample + cd $(DIR_APP) && install -v -m644 -D doc/sample.nanorc /etc/nano/sample.nanorc ln -sf /usr/bin/nano /usr/bin/pico @rm -rf $(DIR_APP) @$(POSTBUILD) From 07002f2bca7efd49d8baea0dadf193a29f27604b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Tue, 25 Apr 2017 21:08:32 +0200 Subject: [PATCH 302/464] bind: Update to 9.11.1 For details see: https://ftp.isc.org/isc/bind9/9.11.1/RELEASE-NOTES-bind-9.11.1.html "Security Fixes rndc "" could trigger an assertion failure in named. This flaw is disclosed in (CVE-2017-3138). [RT #44924] Some chaining (i.e., type CNAME or DNAME) responses to upstream queries could trigger assertion failures. This flaw is disclosed in CVE-2017-3137. [RT #44734] dns64 with break-dnssec yes; can result in an assertion failure. This flaw is disclosed in CVE-2017-3136. [RT #44653] If a server is configured with a response policy zone (RPZ) that rewrites an answer with local data, and is also configured for DNS64 address mapping, a NULL pointer can be read triggering a server crash. This flaw is disclosed in CVE-2017-3135. [RT #44434] A coding error in the nxdomain-redirect feature could lead to an assertion failure if the redirection namespace was served from a local authoritative data source such as a local zone or a DLZ instead of via recursive lookup. This flaw is disclosed in CVE-2016-9778. [RT #43837] named could mishandle authority sections with missing RRSIGs, triggering an assertion failure. This flaw is disclosed in CVE-2016-9444. [RT #43632] named mishandled some responses where covering RRSIG records were returned without the requested data, resulting in an assertion failure. This flaw is disclosed in CVE-2016-9147. [RT #43548] named incorrectly tried to cache TKEY records which could trigger an assertion failure when there was a class mismatch. This flaw is disclosed in CVE-2016-9131. [RT #43522] It was possible to trigger assertions when processing responses containing answers of type DNAME. This flaw is disclosed in CVE-2016-8864. [RT #43465] Added the ability to specify the maximum number of records permitted in a zone (max-records #;). This provides a mechanism to block overly large zone transfers, which is a potential risk with slave zones from other parties, as described in CVE-2016-6170. [RT #42143] Bug Fixes A synthesized CNAME record appearing in a response before the associated DNAME could be cached, when it should not have been. This was a regression introduced while addressing CVE-2016-8864. [RT #44318] named could deadlock if multiple changes to NSEC/NSEC3 parameters for the same zone were being processed at the same time. [RT #42770] named could trigger an assertion when sending NOTIFY messages. [RT #44019] Referencing a nonexistent zone in a response-policy statement could cause an assertion failure during configuration. [RT #43787] rndc addzone could cause a crash when attempting to add a zone with a type other than master or slave. Such zones are now rejected. [RT #43665] named could hang when encountering log file names with large apparent gaps in version number (for example, when files exist called "logfile.0", "logfile.1", and "logfile.1482954169"). This is now handled correctly. [RT #38688] If a zone was updated while named was processing a query for nonexistent data, it could return out-of-sync NSEC3 records causing potential DNSSEC validation failure. [RT #43247]" Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/bind | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/bind b/lfs/bind index ea6fb835b..1269e4155 100644 --- a/lfs/bind +++ b/lfs/bind @@ -25,7 +25,7 @@ include Config -VER = 9.11.0-P5 +VER = 9.11.1 THISAPP = bind-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -43,7 +43,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 3e1e525fc640308316cdf98cd29cfa11 +$(DL_FILE)_MD5 = c384ab071d902bac13487c1268e5a32f install : $(TARGET) From b5fe050fce03a7ee2547a1162452c8211d2eea8d Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 24 Apr 2017 20:56:29 +0200 Subject: [PATCH 303/464] unbound: Update to 1.6.2 For details see: http://www.unbound.net/download.html Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/unbound | 2 +- lfs/unbound | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/rootfiles/common/unbound b/config/rootfiles/common/unbound index 824567e1f..c626fd639 100644 --- a/config/rootfiles/common/unbound +++ b/config/rootfiles/common/unbound @@ -11,7 +11,7 @@ etc/unbound/unbound.conf #usr/lib/libunbound.la #usr/lib/libunbound.so usr/lib/libunbound.so.2 -usr/lib/libunbound.so.2.4.4 +usr/lib/libunbound.so.2.5.1 usr/sbin/unbound usr/sbin/unbound-anchor usr/sbin/unbound-checkconf diff --git a/lfs/unbound b/lfs/unbound index d78bd9509..c40f0ad9a 100644 --- a/lfs/unbound +++ b/lfs/unbound @@ -24,7 +24,7 @@ include Config -VER = 1.6.1 +VER = 1.6.2 THISAPP = unbound-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = aa808f33d94a36c9312d1b8ad8805e14 +$(DL_FILE)_MD5 = 5a5d0cdf7164957ff2e7498db1758f01 install : $(TARGET) From 094a27c8f9bf39b5b5b6df1a28d976d9f52e776f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 30 Apr 2017 13:09:51 +0100 Subject: [PATCH 304/464] unbound: Update dnssec-status file The status file was not updated when DNSSEC was disabled before and has been enabled after which always caused the webif to show that DNSSEC was disabled. Fixes #11315 Signed-off-by: Michael Tremer --- src/initscripts/system/unbound | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/initscripts/system/unbound b/src/initscripts/system/unbound index a1763a1fe..7437d93b8 100644 --- a/src/initscripts/system/unbound +++ b/src/initscripts/system/unbound @@ -436,12 +436,12 @@ can_resolve_root() { enable_dnssec() { local status=$(unbound-control get_option val-permissive-mode) - # Don't do anything if DNSSEC is already activated - [ "${status}" = "no" ] && return 0 - # Log DNSSEC status echo "on" > /var/ipfire/red/dnssec-status + # Don't do anything if DNSSEC is already activated + [ "${status}" = "no" ] && return 0 + # Activate DNSSEC and flush cache with any stale and unvalidated data unbound-control -q set_option val-permissive-mode: no unbound-control -q flush_zone . From 057aaf42b6c6f82eb14808b5167eec703bcc4989 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 28 Apr 2017 21:29:58 +0200 Subject: [PATCH 305/464] BUG 11305: Suggested fix for '/var/log/btmp' permissions Fixes BUG 11305, for details see: https://bugzilla.ipfire.org/show_bug.cgi?id=11305 Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/stage2 | 1 + 1 file changed, 1 insertion(+) diff --git a/lfs/stage2 b/lfs/stage2 index 2d2a6459d..1256fd365 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -127,6 +127,7 @@ endif -mkdir -pv /var/log/{counter,calamaris} chown nobody.nobody /var/log/calamaris touch /var/log/{btmp,lastlog,wtmp} + chmod -v 600 /var/log/btmp chgrp -v utmp /var/log/lastlog chmod -v 664 /var/log/lastlog From 415cbcecfae2330a8c4211dc4c17e8a98ee4f64b Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sun, 30 Apr 2017 12:59:23 +0200 Subject: [PATCH 306/464] GUI: Some simple FW-Log cosmetics I altered 'showrequestfromcountry.dat', 'showrequestfromip.dat' and 'showrequestfromport.dat' in the same manner as the 'Loggraphs'-Pages in commit Each 'Details'-page got a unique title. Furthermore, I added a 'Back'-Button to go back to the previous page. For this, I used 'back.png' from 'wio' (thanks Stephan! ;-) ) since I found no other appropriate image. 'ipinfo.cgi' got a centered 'Back'-Button, too. Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- html/cgi-bin/ipinfo.cgi | 2 +- html/cgi-bin/logs.cgi/showrequestfromcountry.dat | 6 ++++-- html/cgi-bin/logs.cgi/showrequestfromip.dat | 6 ++++-- html/cgi-bin/logs.cgi/showrequestfromport.dat | 6 ++++-- html/html/images/back.png | Bin 0 -> 315 bytes 5 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 html/html/images/back.png diff --git a/html/cgi-bin/ipinfo.cgi b/html/cgi-bin/ipinfo.cgi index 8cefe6e85..16541f126 100644 --- a/html/cgi-bin/ipinfo.cgi +++ b/html/cgi-bin/ipinfo.cgi @@ -102,7 +102,7 @@ print < - +
    $Lang::tr{'back'}$Lang::tr{
    diff --git a/html/cgi-bin/logs.cgi/showrequestfromcountry.dat b/html/cgi-bin/logs.cgi/showrequestfromcountry.dat index cd97f8780..b6383ed59 100644 --- a/html/cgi-bin/logs.cgi/showrequestfromcountry.dat +++ b/html/cgi-bin/logs.cgi/showrequestfromcountry.dat @@ -233,7 +233,7 @@ if ($multifile) { } &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log country'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { @@ -292,7 +292,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', $Lang::tr{'firewall log'}); +&Header::openbox('100%', 'left', $Lang::tr{'firewall log country'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; if ($start == -1) { @@ -415,6 +415,8 @@ END &oldernewer(); + print"
    $Lang::tr{
    "; + &Header::closebox(); &Header::closebigbox(); diff --git a/html/cgi-bin/logs.cgi/showrequestfromip.dat b/html/cgi-bin/logs.cgi/showrequestfromip.dat index 154fa4030..31cd42c33 100644 --- a/html/cgi-bin/logs.cgi/showrequestfromip.dat +++ b/html/cgi-bin/logs.cgi/showrequestfromip.dat @@ -194,7 +194,7 @@ if ($multifile) { } &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log ip'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { @@ -252,7 +252,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', $Lang::tr{'firewall log'}); +&Header::openbox('100%', 'left', $Lang::tr{'firewall log ip'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; if ($start == -1) { @@ -357,6 +357,8 @@ END &oldernewer(); + print"
    $Lang::tr{
    "; + &Header::closebox(); &Header::closebigbox(); diff --git a/html/cgi-bin/logs.cgi/showrequestfromport.dat b/html/cgi-bin/logs.cgi/showrequestfromport.dat index e1f00aed8..004a00e6a 100644 --- a/html/cgi-bin/logs.cgi/showrequestfromport.dat +++ b/html/cgi-bin/logs.cgi/showrequestfromport.dat @@ -202,7 +202,7 @@ if ($multifile) { } &Header::showhttpheaders(); -&Header::openpage($Lang::tr{'firewall log'}, 1, ''); +&Header::openpage($Lang::tr{'firewall log port'}, 1, ''); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { @@ -260,7 +260,7 @@ END &Header::closebox(); -&Header::openbox('100%', 'left', $Lang::tr{'firewall log'}); +&Header::openbox('100%', 'left', $Lang::tr{'firewall log port'}); print "

    $Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines

    "; if ($start == -1) { @@ -367,6 +367,8 @@ END &oldernewer(); + print"
    $Lang::tr{
    "; + &Header::closebox(); &Header::closebigbox(); diff --git a/html/html/images/back.png b/html/html/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..66921afb2ab5d73312b3498d0b5a2a2a28a6a657 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj>?NMQuI%?&_&NCG=N~`J4;11o z@Q5sCU|>xIVMfLqwI6|kEa{HEjtmSN`?>!lvI6<1JY5_^DsH` literal 0 HcmV?d00001 From 19f0fa5694d9224c128ff362673c42e9b169351c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 11:17:06 +0100 Subject: [PATCH 307/464] wlan client: Allow configuration of EAP-PEAP and EAP-TTLS on web user interface Signed-off-by: Michael Tremer --- doc/language_issues.de | 2 - doc/language_issues.en | 2 - doc/language_issues.es | 15 +++++ doc/language_issues.fr | 15 +++++ doc/language_issues.it | 15 +++++ doc/language_issues.nl | 15 +++++ doc/language_issues.pl | 15 +++++ doc/language_issues.ru | 15 +++++ doc/language_issues.tr | 15 +++++ doc/language_missings | 60 +++++++++++++++++ html/cgi-bin/wirelessclient.cgi | 113 +++++++++++++++++++++++++++++--- langs/de/cgi-bin/de.pl | 9 +++ langs/en/cgi-bin/en.pl | 9 +++ 13 files changed, 287 insertions(+), 13 deletions(-) diff --git a/doc/language_issues.de b/doc/language_issues.de index 48d7f6a1c..b9f774758 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -205,8 +205,6 @@ WARNING: translation string unused: extrahd WARNING: translation string unused: extrahd unable to read WARNING: translation string unused: extrahd unable to write WARNING: translation string unused: filename -WARNING: translation string unused: firewall graphs -WARNING: translation string unused: firewall log viewer WARNING: translation string unused: firmware WARNING: translation string unused: firmware upload WARNING: translation string unused: force update diff --git a/doc/language_issues.en b/doc/language_issues.en index f2b6eb7b4..f2f6ab7d3 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -228,8 +228,6 @@ WARNING: translation string unused: extrahd WARNING: translation string unused: extrahd unable to read WARNING: translation string unused: extrahd unable to write WARNING: translation string unused: filename -WARNING: translation string unused: firewall graphs -WARNING: translation string unused: firewall log viewer WARNING: translation string unused: firmware WARNING: translation string unused: firmware upload WARNING: translation string unused: force update diff --git a/doc/language_issues.es b/doc/language_issues.es index 09dae68d4..b0a3adbca 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first @@ -1158,25 +1164,34 @@ WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client bssid WARNING: untranslated string: wlan client ccmp WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid +WARNING: untranslated string: wlan client eap authentication method WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption +WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client encryption none WARNING: untranslated string: wlan client encryption wep WARNING: untranslated string: wlan client encryption wpa WARNING: untranslated string: wlan client encryption wpa2 WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm +WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher WARNING: untranslated string: wlan client pairwise key algorithm WARNING: untranslated string: wlan client pairwise key group key +WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 1f4f9c357..0407d0e57 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -776,6 +776,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first @@ -1175,25 +1181,34 @@ WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client bssid WARNING: untranslated string: wlan client ccmp WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid +WARNING: untranslated string: wlan client eap authentication method WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption +WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client encryption none WARNING: untranslated string: wlan client encryption wep WARNING: untranslated string: wlan client encryption wpa WARNING: untranslated string: wlan client encryption wpa2 WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm +WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher WARNING: untranslated string: wlan client pairwise key algorithm WARNING: untranslated string: wlan client pairwise key group key +WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip diff --git a/doc/language_issues.it b/doc/language_issues.it index 6b5639c0f..8964ff9ef 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -731,6 +731,12 @@ WARNING: untranslated string: email settings WARNING: untranslated string: email testmail WARNING: untranslated string: email tls WARNING: untranslated string: email usemail +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: fwdfw err concon WARNING: untranslated string: fwdfw err ratecon WARNING: untranslated string: fwdfw limitconcon @@ -830,3 +836,12 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings +WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client encryption eap +WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client password diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 30744829d..b9f935c74 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -743,6 +743,12 @@ WARNING: untranslated string: email settings WARNING: untranslated string: email testmail WARNING: untranslated string: email tls WARNING: untranslated string: email usemail +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: fwdfw err concon WARNING: untranslated string: fwdfw err ratecon @@ -878,3 +884,12 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings +WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client encryption eap +WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client password diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 09dae68d4..b0a3adbca 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first @@ -1158,25 +1164,34 @@ WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client bssid WARNING: untranslated string: wlan client ccmp WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid +WARNING: untranslated string: wlan client eap authentication method WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption +WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client encryption none WARNING: untranslated string: wlan client encryption wep WARNING: untranslated string: wlan client encryption wpa WARNING: untranslated string: wlan client encryption wpa2 WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm +WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher WARNING: untranslated string: wlan client pairwise key algorithm WARNING: untranslated string: wlan client pairwise key group key +WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip diff --git a/doc/language_issues.ru b/doc/language_issues.ru index f4944db94..83c2170fb 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -760,6 +760,12 @@ WARNING: untranslated string: extrahd maybe the device is in use WARNING: untranslated string: extrahd to WARNING: untranslated string: extrahd to root WARNING: untranslated string: extrahd you cant mount +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first @@ -1153,25 +1159,34 @@ WARNING: untranslated string: vpn weak WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client bssid WARNING: untranslated string: wlan client ccmp WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid +WARNING: untranslated string: wlan client eap authentication method WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption +WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client encryption none WARNING: untranslated string: wlan client encryption wep WARNING: untranslated string: wlan client encryption wpa WARNING: untranslated string: wlan client encryption wpa2 WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm +WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher WARNING: untranslated string: wlan client pairwise key algorithm WARNING: untranslated string: wlan client pairwise key group key +WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip diff --git a/doc/language_issues.tr b/doc/language_issues.tr index ac7a82dc1..e268462c8 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -707,6 +707,12 @@ WARNING: untranslated string: Scan for Songs WARNING: untranslated string: application layer gateways WARNING: untranslated string: bytes WARNING: untranslated string: dnssec disabled warning +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: fwhost cust geoipgrp WARNING: untranslated string: fwhost err hostip WARNING: untranslated string: guardian @@ -761,3 +767,12 @@ WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wlan client anonymous identity +WARNING: untranslated string: wlan client auth auto +WARNING: untranslated string: wlan client auth peap +WARNING: untranslated string: wlan client auth ttls +WARNING: untranslated string: wlan client authentication settings +WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client encryption eap +WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client password diff --git a/doc/language_missings b/doc/language_missings index 72fe07594..a2f2fed9a 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -161,6 +161,12 @@ < fireinfo why enable < fireinfo why read more < fireinfo your profile id +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -595,25 +601,34 @@ < wlan client < wlan client advanced settings < wlan client and +< wlan client anonymous identity +< wlan client auth auto +< wlan client authentication settings +< wlan client auth peap +< wlan client auth ttls < wlan client bssid < wlan client ccmp < wlan client configuration < wlan client disconnected < wlan client duplicate ssid +< wlan client eap authentication method < wlan client edit entry < wlan client encryption +< wlan client encryption eap < wlan client encryption none < wlan client encryption wep < wlan client encryption wpa < wlan client encryption wpa2 < wlan client group cipher < wlan client group key algorithm +< wlan client identity < wlan client invalid key length < wlan client new entry < wlan client new network < wlan client pairwise cipher < wlan client pairwise key algorithm < wlan client pairwise key group key +< wlan client password < wlan client psk < wlan clients < wlan client ssid @@ -780,6 +795,12 @@ < fireinfo why enable < fireinfo why read more < fireinfo your profile id +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -1197,25 +1218,34 @@ < wlan client < wlan client advanced settings < wlan client and +< wlan client anonymous identity +< wlan client auth auto +< wlan client authentication settings +< wlan client auth peap +< wlan client auth ttls < wlan client bssid < wlan client ccmp < wlan client configuration < wlan client disconnected < wlan client duplicate ssid +< wlan client eap authentication method < wlan client edit entry < wlan client encryption +< wlan client encryption eap < wlan client encryption none < wlan client encryption wep < wlan client encryption wpa < wlan client encryption wpa2 < wlan client group cipher < wlan client group key algorithm +< wlan client identity < wlan client invalid key length < wlan client new entry < wlan client new network < wlan client pairwise cipher < wlan client pairwise key algorithm < wlan client pairwise key group key +< wlan client password < wlan client psk < wlan clients < wlan client ssid @@ -1373,6 +1403,12 @@ < extrahd unable to read < extrahd unable to write < extrahd you cant mount +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -1784,25 +1820,34 @@ < wlan client < wlan client advanced settings < wlan client and +< wlan client anonymous identity +< wlan client auth auto +< wlan client authentication settings +< wlan client auth peap +< wlan client auth ttls < wlan client bssid < wlan client ccmp < wlan client configuration < wlan client disconnected < wlan client duplicate ssid +< wlan client eap authentication method < wlan client edit entry < wlan client encryption +< wlan client encryption eap < wlan client encryption none < wlan client encryption wep < wlan client encryption wpa < wlan client encryption wpa2 < wlan client group cipher < wlan client group key algorithm +< wlan client identity < wlan client invalid key length < wlan client new entry < wlan client new network < wlan client pairwise cipher < wlan client pairwise key algorithm < wlan client pairwise key group key +< wlan client password < wlan client psk < wlan clients < wlan client ssid @@ -1964,6 +2009,12 @@ < extrahd unable to read < extrahd unable to write < extrahd you cant mount +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -2377,25 +2428,34 @@ < wlan client < wlan client advanced settings < wlan client and +< wlan client anonymous identity +< wlan client auth auto +< wlan client authentication settings +< wlan client auth peap +< wlan client auth ttls < wlan client bssid < wlan client ccmp < wlan client configuration < wlan client disconnected < wlan client duplicate ssid +< wlan client eap authentication method < wlan client edit entry < wlan client encryption +< wlan client encryption eap < wlan client encryption none < wlan client encryption wep < wlan client encryption wpa < wlan client encryption wpa2 < wlan client group cipher < wlan client group key algorithm +< wlan client identity < wlan client invalid key length < wlan client new entry < wlan client new network < wlan client pairwise cipher < wlan client pairwise key algorithm < wlan client pairwise key group key +< wlan client password < wlan client psk < wlan clients < wlan client ssid diff --git a/html/cgi-bin/wirelessclient.cgi b/html/cgi-bin/wirelessclient.cgi index a2d0273df..70ab10a56 100644 --- a/html/cgi-bin/wirelessclient.cgi +++ b/html/cgi-bin/wirelessclient.cgi @@ -19,8 +19,8 @@ # # ############################################################################### -# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO -# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2 +# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO,AUTH,ANONYMOUS,IDENTITY,PASSWORD +# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2,TTLS,anonymous,username,password use strict; @@ -132,6 +132,10 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) { push(@config, $settings{'SSID'}); push(@config, $settings{'PSK'}); push(@config, $settings{'PRIO'}); + push(@config, $settings{'AUTH'}); + push(@config, $settings{'ANONYMOUS'}); + push(@config, $settings{'IDENTITY'}); + push(@config, $settings{'PASSWORD'}); # Add the new configuration and write all the stuff to the configuration file. my $line = join(',', @config) . "\n"; @@ -164,6 +168,10 @@ if ($settings{'ACTION'} eq $Lang::tr{'edit'}) { $settings{'SSID'} = $config[5]; $settings{'PSK'} = $config[6]; $settings{'PRIO'} = $config[7]; + $settings{'AUTH'} = $config[8]; + $settings{'ANONYMOUS'} = $config[9]; + $settings{'IDENTITY'} = $config[10]; + $settings{'PASSWORD'} = $config[11]; } } } @@ -181,12 +189,16 @@ if ($settings{'ACTION'} eq $Lang::tr{'update'}) { if ($config[0] eq $settings{'ID'}) { # Update all configuration settings. # ID and INTERFACE cannot be changed. - $config[2] = $settings{'ENABLED'}; - $config[3] = $settings{'ENCRYPTION'}; - $config[4] = $settings{'WPA_MODE'}; - $config[5] = $settings{'SSID'}; - $config[6] = $settings{'PSK'}; - $config[7] = $settings{'PRIO'}; + $config[2] = $settings{'ENABLED'}; + $config[3] = $settings{'ENCRYPTION'}; + $config[4] = $settings{'WPA_MODE'}; + $config[5] = $settings{'SSID'}; + $config[6] = $settings{'PSK'}; + $config[7] = $settings{'PRIO'}; + $config[8] = $settings{'AUTH'}; + $config[9] = $settings{'ANONYMOUS'}; + $config[10] = $settings{'IDENTITY'}; + $config[11] = $settings{'PASSWORD'}; $line = join(',', @config); } @@ -312,9 +324,34 @@ END $encryption_mode = $Lang::tr{'wlan client encryption wpa'}; } elsif ($config[3] eq "WPA2") { $encryption_mode = $Lang::tr{'wlan client encryption wpa2'}; + } elsif ($config[3] eq "EAP") { + $encryption_mode = $Lang::tr{'wlan client encryption eap'}; } - if (($config[3] eq "WPA") || ($config[3] eq "WPA2")) { + if ($config[3] eq "EAP") { + if ($config[8] eq "PEAP") { + $encryption_mode .= " ($Lang::tr{'wlan client auth peap'})"; + } elsif ($config[8] eq "TTLS") { + $encryption_mode .= " ($Lang::tr{'wlan client auth ttls'})"; + } else { + $encryption_mode .= " ($Lang::tr{'wlan client auth auto'})"; + } + + $encryption_mode .= "
    "; + + if ($config[10]) { + $encryption_mode .= "$Lang::tr{'wlan client identity'}: "; + $encryption_mode .= $config[10]; + } + + # Anonymous identity + if ($config[9]) { + $encryption_mode .= "
    "; + $encryption_mode .= "$Lang::tr{'wlan client anonymous identity'}: "; + $encryption_mode .= $config[9]; + } + + } elsif (($config[3] eq "WPA") || ($config[3] eq "WPA2")) { my $wpa_pairwise = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}"; my $wpa_group = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}"; @@ -437,6 +474,12 @@ sub showEditBox() { $selected{'WPA_MODE'}{'TKIP-TKIP'} = ''; $selected{'WPA_MODE'}{$settings{'WPA_MODE'}} = "selected='selected'"; + $selected{'AUTH'} = (); + $selected{'AUTH'}{''} = ''; + $selected{'AUTH'}{'PEAP'} = ''; + $selected{'AUTH'}{'TTLS'} = ''; + $selected{'AUTH'}{$settings{'AUTH'}} = "selected='selected'"; + $selected{'PRIO'} = (); $selected{'PRIO'}{'0'} = ''; $selected{'PRIO'}{'1'} = ''; @@ -461,6 +504,7 @@ sub showEditBox() { + + + + + + + + + + $Lang::tr{'wlan client anonymous identity'}: + + + + + + + + + $Lang::tr{'wlan client identity'}: + + + + + + + + + $Lang::tr{'wlan client password'}: + + + + + + + + +
    +
    + $Lang::tr{'wlan client advanced settings'}: diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 6443abe7e..c65a64ba6 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2659,25 +2659,34 @@ 'wlan client' => 'WLAN-Client', 'wlan client advanced settings' => 'Erweiterte Einstellungen', 'wlan client and' => 'und', +'wlan client anonymous identity' => 'Anonyme Identität', +'wlan client auth auto' => 'Auto', +'wlan client auth peap' => 'PEAP', +'wlan client auth ttls' => 'TTLS', +'wlan client authentication settings' => 'Authentifizierungseinstellungen', 'wlan client bssid' => 'BSSID', 'wlan client ccmp' => 'CCMP', 'wlan client configuration' => 'WLAN-Client-Konfiguration', 'wlan client disconnected' => 'Nicht verbunden', 'wlan client duplicate ssid' => 'Doppelte SSID', +'wlan client eap authentication method' => 'EAP-Authentifizierungsmethode', 'wlan client edit entry' => 'Verbindung bearbeiten', 'wlan client encryption' => 'Verschlüsselung', +'wlan client encryption eap' => 'EAP', 'wlan client encryption none' => 'Keine', 'wlan client encryption wep' => 'WEP', 'wlan client encryption wpa' => 'WPA', 'wlan client encryption wpa2' => 'WPA2', 'wlan client group cipher' => 'Gruppenchiffre', 'wlan client group key algorithm' => 'GKA', +'wlan client identity' => 'Identität', 'wlan client invalid key length' => 'Ungültige Schlüssellänge.', 'wlan client new entry' => 'Neue WLAN-Client-Konfiguration erstellen', 'wlan client new network' => 'Neues Netzwerk', 'wlan client pairwise cipher' => 'Paarweise Chiffre', 'wlan client pairwise key algorithm' => 'PKA', 'wlan client pairwise key group key' => 'Paarweise-/Gruppenschlüssel', +'wlan client password' => 'Passwort', 'wlan client psk' => 'Schlüssel', 'wlan client ssid' => 'SSID', 'wlan client tkip' => 'TKIP', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 4c62471f7..71a283cc5 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2704,25 +2704,34 @@ 'wlan client' => 'Wireless client', 'wlan client advanced settings' => 'Advanced settings', 'wlan client and' => 'and', +'wlan client anonymous identity' => 'Anonymous Identity', +'wlan client auth auto' => 'Auto', +'wlan client auth peap' => 'PEAP', +'wlan client auth ttls' => 'TTLS', +'wlan client authentication settings' => 'Authentication Settings', 'wlan client bssid' => 'BSSID', 'wlan client ccmp' => 'CCMP', 'wlan client configuration' => 'Wireless Client Configuration', 'wlan client disconnected' => 'Disconnected', 'wlan client duplicate ssid' => 'Duplicate SSID', +'wlan client eap authentication method' => 'EAP Authentication Method', 'wlan client edit entry' => 'Edit wireless client configuration', 'wlan client encryption' => 'Encryption', +'wlan client encryption eap' => 'EAP', 'wlan client encryption none' => 'None', 'wlan client encryption wep' => 'WEP', 'wlan client encryption wpa' => 'WPA', 'wlan client encryption wpa2' => 'WPA2', 'wlan client group cipher' => 'Group cipher', 'wlan client group key algorithm' => 'GKA', +'wlan client identity' => 'Identity', 'wlan client invalid key length' => 'Invalid key length.', 'wlan client new entry' => 'Create new wireless client configuration', 'wlan client new network' => 'New network', 'wlan client pairwise cipher' => 'Pairwise cipher', 'wlan client pairwise key algorithm' => 'PKA', 'wlan client pairwise key group key' => 'Pairwise key/group key', +'wlan client password' => 'Password', 'wlan client psk' => 'Pre-shared key', 'wlan client ssid' => 'SSID', 'wlan client tkip' => 'TKIP', From f2c94780088c6b172e63493705906142dbad0727 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 11:31:36 +0100 Subject: [PATCH 308/464] wlan client: Generate wpa_supplicant configuration file for EAP Signed-off-by: Michael Tremer --- src/initscripts/system/wlanclient | 45 +++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/initscripts/system/wlanclient b/src/initscripts/system/wlanclient index ee24c43a1..b32a4cb4a 100644 --- a/src/initscripts/system/wlanclient +++ b/src/initscripts/system/wlanclient @@ -62,7 +62,11 @@ function wpa_supplicant_make_config() { --wpa-mode="${line[4]}" \ --ssid="${line[5]}" \ --psk="${line[6]}" \ - --priority="${line[7]}" + --priority="${line[7]}" \ + --auth-mode="${line[8]}" \ + --anonymous-identity="${line[9]}" \ + --identity="${line[10]}" \ + --password="${line[11]}" items=$(( ${items} + 1 )) @@ -82,12 +86,16 @@ function wpa_supplicant_config_line() { local config=${2} shift 2 + local anonymous_identity local auth_alg + local auth_mode + local identity local proto local key_mgmt local pairwise local group local mode + local password local priority local psk local ssid @@ -98,9 +106,21 @@ function wpa_supplicant_config_line() { while [ $# -gt 0 ]; do case "${1}" in + --anonymous-identity=*) + anonymous_identity=${1#--anonymous-identity=} + ;; + --auth-mode=*) + auth_mode=${1#--auth-mode=} + ;; + --identity=*) + identity=${1#--identity=} + ;; --mode=*) mode=${1#--mode=} ;; + --password=*) + password=${1#--password=} + ;; --priority=*) priority=${1#--priority=} ;; @@ -121,6 +141,9 @@ function wpa_supplicant_config_line() { done case "${mode}" in + EAP) + key_mgmt="WPA-EAP" + ;; WPA2) auth_alg="OPEN" proto="RSN" @@ -149,7 +172,7 @@ function wpa_supplicant_config_line() { ;; esac - if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then + if [ "${mode}" = "EAP" -o "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then case "${wpa_mode}" in CCMP-CCMP) pairwise="CCMP" @@ -205,6 +228,24 @@ function wpa_supplicant_config_line() { echo " priority=${priority}" fi + # EAP + if [ "${mode}" = "EAP" ]; then + if [ -n "${auth_mode}" ]; then + echo " eap=${auth_mode}" + else + echo " eap=PEAP TTLS" + fi + + if [ "${auth_mode}" = "TTLS" -a -n "${anonymous_identity}" ]; then + echo " anonymous_identity=\"${anonymous_identity}\"" + fi + + if [ -n "${identity}" -a -n "${password}" ]; then + echo " identity=\"${identity}\"" + echo " password=\"${password}\"" + fi + fi + echo "}" echo ) >> ${config} From 86282bdc7dc7a45872558866aadbb780fcd12f43 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 12:02:21 +0100 Subject: [PATCH 309/464] vpnmain.cgi: Fix typo Signed-off-by: Michael Tremer --- html/cgi-bin/vpnmain.cgi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index d3e4fe8f9..f9508b53d 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -2504,7 +2504,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - + From 5e06cb2778c66096d4b4f2cf443f45e3d126c6bb Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Fri, 5 May 2017 23:22:30 +0200 Subject: [PATCH 310/464] web-user-interface: Fix for rootfile Added 'back.png' for Firewall-GUI Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/web-user-interface | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/common/web-user-interface b/config/rootfiles/common/web-user-interface index 8c94d2e16..1330ed7a8 100644 --- a/config/rootfiles/common/web-user-interface +++ b/config/rootfiles/common/web-user-interface @@ -117,6 +117,7 @@ srv/web/ipfire/html/images/audio-volume-low-red.png srv/web/ipfire/html/images/audio-volume-low.png srv/web/ipfire/html/images/audio-x-generic-red.png srv/web/ipfire/html/images/audio-x-generic.png +srv/web/ipfire/html/images/back.png srv/web/ipfire/html/images/background.gif srv/web/ipfire/html/images/bookmark-new.png srv/web/ipfire/html/images/clock.gif From a7f7657c4b2282e3f3f33e1dfb7c4d4a963ad713 Mon Sep 17 00:00:00 2001 From: Gabriel Rolland Date: Thu, 4 May 2017 10:28:35 +0200 Subject: [PATCH 311/464] Italian translations in it.pl after 110 Missing or incorrect translations. Signed-off-by: Michael Tremer --- doc/language_issues.de | 2 - doc/language_issues.en | 2 - doc/language_issues.es | 6 ++ doc/language_issues.fr | 6 ++ doc/language_issues.it | 6 ++ doc/language_issues.nl | 6 ++ doc/language_issues.pl | 6 ++ doc/language_issues.ru | 6 ++ doc/language_issues.tr | 6 ++ doc/language_missings | 24 +++++ langs/it/cgi-bin/it.pl | 224 ++++++++++++++++++++--------------------- 11 files changed, 178 insertions(+), 116 deletions(-) diff --git a/doc/language_issues.de b/doc/language_issues.de index 48d7f6a1c..b9f774758 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -205,8 +205,6 @@ WARNING: translation string unused: extrahd WARNING: translation string unused: extrahd unable to read WARNING: translation string unused: extrahd unable to write WARNING: translation string unused: filename -WARNING: translation string unused: firewall graphs -WARNING: translation string unused: firewall log viewer WARNING: translation string unused: firmware WARNING: translation string unused: firmware upload WARNING: translation string unused: force update diff --git a/doc/language_issues.en b/doc/language_issues.en index f2b6eb7b4..f2f6ab7d3 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -228,8 +228,6 @@ WARNING: translation string unused: extrahd WARNING: translation string unused: extrahd unable to read WARNING: translation string unused: extrahd unable to write WARNING: translation string unused: filename -WARNING: translation string unused: firewall graphs -WARNING: translation string unused: firewall log viewer WARNING: translation string unused: firmware WARNING: translation string unused: firmware upload WARNING: translation string unused: force update diff --git a/doc/language_issues.es b/doc/language_issues.es index 09dae68d4..e16b83a71 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 1f4f9c357..9865a12b8 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -776,6 +776,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first diff --git a/doc/language_issues.it b/doc/language_issues.it index 6b5639c0f..c99fb1e8e 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -731,6 +731,12 @@ WARNING: untranslated string: email settings WARNING: untranslated string: email testmail WARNING: untranslated string: email tls WARNING: untranslated string: email usemail +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: fwdfw err concon WARNING: untranslated string: fwdfw err ratecon WARNING: untranslated string: fwdfw limitconcon diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 30744829d..fd80711f3 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -743,6 +743,12 @@ WARNING: untranslated string: email settings WARNING: untranslated string: email testmail WARNING: untranslated string: email tls WARNING: untranslated string: email usemail +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: fwdfw err concon WARNING: untranslated string: fwdfw err ratecon diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 09dae68d4..e16b83a71 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -766,6 +766,12 @@ WARNING: untranslated string: fireinfo why descr2 WARNING: untranslated string: fireinfo why enable WARNING: untranslated string: fireinfo why read more WARNING: untranslated string: fireinfo your profile id +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first diff --git a/doc/language_issues.ru b/doc/language_issues.ru index f4944db94..4b6eee4cf 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -760,6 +760,12 @@ WARNING: untranslated string: extrahd maybe the device is in use WARNING: untranslated string: extrahd to WARNING: untranslated string: extrahd to root WARNING: untranslated string: extrahd you cant mount +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: firewall logs country WARNING: untranslated string: firewall rules WARNING: untranslated string: first diff --git a/doc/language_issues.tr b/doc/language_issues.tr index ac7a82dc1..0235601dd 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -707,6 +707,12 @@ WARNING: untranslated string: Scan for Songs WARNING: untranslated string: application layer gateways WARNING: untranslated string: bytes WARNING: untranslated string: dnssec disabled warning +WARNING: untranslated string: firewall graph country +WARNING: untranslated string: firewall graph ip +WARNING: untranslated string: firewall graph port +WARNING: untranslated string: firewall log country +WARNING: untranslated string: firewall log ip +WARNING: untranslated string: firewall log port WARNING: untranslated string: fwhost cust geoipgrp WARNING: untranslated string: fwhost err hostip WARNING: untranslated string: guardian diff --git a/doc/language_missings b/doc/language_missings index 72fe07594..81bb27b95 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -161,6 +161,12 @@ < fireinfo why enable < fireinfo why read more < fireinfo your profile id +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -780,6 +786,12 @@ < fireinfo why enable < fireinfo why read more < fireinfo your profile id +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -1373,6 +1385,12 @@ < extrahd unable to read < extrahd unable to write < extrahd you cant mount +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first @@ -1964,6 +1982,12 @@ < extrahd unable to read < extrahd unable to write < extrahd you cant mount +< firewall graph country +< firewall graph ip +< firewall graph port +< firewall log country +< firewall log ip +< firewall log port < firewall logs country < firewall rules < first diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl index 36698fd2c..02e047bb3 100644 --- a/langs/it/cgi-bin/it.pl +++ b/langs/it/cgi-bin/it.pl @@ -47,7 +47,7 @@ 'Pages' => 'Pagine', 'Ping' => 'Ping :', 'Port Rule' => 'Regola-Porta', -'QoS not enabled' => 'QoS non è abilitata!', +'QoS not enabled' => 'Il QoS non è abilitato!', 'Queuelenght' => 'Queuelenght', 'Remote IP' => 'IP Remoto / Hostname (DynDNS):', 'Remote VPN IP' => 'VPN Subnet (e.g. 10.0.10.0/255.255.255.0):', @@ -203,7 +203,7 @@ 'advproxy chgwebpwd old password' => 'Password attuale', 'advproxy chgwebpwd username' => 'Username', 'advproxy classroom extensions' => 'estensioni di classe', -'advproxy clear cache' => 'Clear Cache', +'advproxy clear cache' => 'Cancella la cache', 'advproxy client IP forwarding' => 'Indirizzo del client per inoltro IP', 'advproxy common settings' => 'Impostazioni Comuni', 'advproxy content based throttling' => 'Abilita limitazioni per contenuto', @@ -408,7 +408,7 @@ 'backupaddon' => 'Addon Backup', 'backupprofile' => 'In case reconnection fails, switch to profile', 'backups' => 'Backups', -'backupwarning' => 'Per favore prima di ripristinare il backup del sistema e/o il backup addon, Si prega di mantenere il nome del file originale, di quando é stato scaricato.', +'backupwarning' => 'Per favore prima di ripristinare il backup del sistema e/o il backup addon, Si prega di mantenere il nome del file originale di quando é stato scaricato.', 'bad characters in' => 'Bad characters in ', 'bad characters in script field' => 'Bad characters in script field', 'bad characters in the telephone number field' => 'Bad characters in the telephone number field.', @@ -417,7 +417,7 @@ 'bad return code' => 'Helper program returned error code', 'bad source range' => 'The Source port range has a first value that is greater than or equal to the second value.', 'bandwidth usage' => 'bandwidth usage (external)', -'bandwitherror' => 'You cannot change the bandwithsettings, with Qos being enabled. First disable Qos.

    ', +'bandwitherror' => 'Per modificare le impostazioni devi prima disattivare il Qos.

    ', 'bandwithsettings' => 'Bandwithsettings', 'basic options' => 'Opzioni di base', 'beep when ppp connects or disconnects' => 'Segnale acustico quando IPFire si connette o disconnette', @@ -454,10 +454,10 @@ 'calamaris enable performance report' => 'Abilita report di prestazioni', 'calamaris enable requester report' => 'Abilita report richiedente', 'calamaris enable verbose reporting' => 'Attiva la segnalazione dettagliata', -'calamaris high' => 'high', +'calamaris high' => 'alta', 'calamaris histogram resolution' => 'Risoluzione istogramma', -'calamaris low' => 'low', -'calamaris medium' => 'medium', +'calamaris low' => 'bassa', +'calamaris medium' => 'media', 'calamaris no reports available' => 'Non ci sono report disponibili', 'calamaris none' => 'none', 'calamaris number of content types' => 'Numero di tipi di contenuto', @@ -466,10 +466,10 @@ 'calamaris number of requesting hosts' => 'Numero di host che lo richiedono', 'calamaris performance options' => 'Opzione prestazione', 'calamaris proxy reports' => 'Report del Proxy', -'calamaris refresh list' => 'Refresh list', -'calamaris report interval (in minutes)' => 'Intervallo del Report in minuti', -'calamaris report options' => 'Opzioni del Report', -'calamaris report period' => 'Periodo del Report', +'calamaris refresh list' => 'Aggiorna le liste', +'calamaris report interval (in minutes)' => 'Intervallo del report in minuti', +'calamaris report options' => 'Opzioni del report', +'calamaris report period' => 'Periodo del report', 'calamaris run as background task' => 'Eseguito come processo in background', 'calamaris show usernames' => 'Mostra usernames', 'calamaris skip archived logfiles' => 'Ignora file di registro archiviati', @@ -568,13 +568,13 @@ 'connect' => 'OVPN Start / Connect', 'connect the modem' => 'Connect the modem', 'connect timeout' => 'Connect timeout:', -'connected' => 'Connected', -'connecting' => 'Connecting...', +'connected' => 'Connesso', +'connecting' => 'In connessione...', 'connection' => 'connessione', -'connection closed' => 'Not connected...', +'connection closed' => 'Non connesso...', 'connection debugging' => 'Connection debugging', 'connection status and controlc' => 'Stato della connessione e controllo', -'connection tracking' => 'iptables Connection Tracking', +'connection tracking' => 'Monitoraggio connessioni iptables', 'connection type' => 'Connection Type', 'connection type is invalid' => 'Connection type is invalid.', 'connections' => 'Connessioni', @@ -608,7 +608,7 @@ 'cpu nice usage' => 'Nice CPU Usage', 'cpu steal usage' => 'Steal CPU Usage', 'cpu system usage' => 'System CPU Usage', -'cpu usage per' => 'CPU Usage per', +'cpu usage per' => 'Utilizzo CPU per', 'cpu user usage' => 'User CPU Usage', 'create' => 'Create', 'create mask' => 'UNIX rights for new created files', @@ -726,14 +726,14 @@ 'dial user password' => 'Dial user password:', 'dial user password has been changed' => 'Dial user password has been changed.', 'dialing mode' => 'Dialing mode:', -'dialup red not ppp' => 'Dialup profiles can only used if RED is set to PPP Dialup
    Check the networking setup.', +'dialup red not ppp' => 'I profili dialup possono essere utilizzati solo se l\'interfacciaRED è impostata su PPP Dialup
    Controlla la configurazione di rete.', 'dialup settings' => 'Dialup Settings', 'directory mask' => 'UNIX directory rights', 'directory writeable' => 'directory writeable', 'disabled' => 'disabled', 'disconnect' => 'OVPN Stop / Disconnect', 'disconnects' => 'Disconnects', -'disk access per' => 'Disk Access per', +'disk access per' => 'Accessi al disco per', 'disk usage' => 'utilizzo del disco', 'display' => 'Display', 'display charset' => 'Display Charset', @@ -788,9 +788,9 @@ 'domain name' => 'Nome del Dominio', 'domain name suffix' => 'Suffisso del Dominio:', 'domain not set' => 'Domain not set.', -'donation' => 'Donation', +'donation' => 'Donazione', 'donation-link' => 'https://www.paypal.com/en_US/GB/i/btn/btn_donateCC_LG.gif', -'donation-text' => 'IPFire is driven and maintained by volunteers in their free time. To keep this project running costs incurred, if you like to support us we would be pleased by a small donation.', +'donation-text' => 'IPFire è sviluppato da volontari nel loro tempo libero. Per sostenere questo progetto e i relativi costi di gestione puoi effettuare una piccola donazione.', 'done' => 'Do it', 'dos charset' => 'DOS Charset', 'down and up speed' => 'Enter your Down- and Uplink-Speed
    and then press Save.', @@ -802,7 +802,7 @@ 'download certificate' => 'Download certificate', 'download dh parameter' => 'Download Diffie-Hellman parameters', 'download host certificate' => 'Download host certificate', -'download new ruleset' => 'Download new ruleset', +'download new ruleset' => 'Scarica il nuovo set di regole', 'download pkcs12 file' => 'Download PKCS12 file', 'download root certificate' => 'Download root certificate', 'download tls-auth key' => 'Download tls-auth key', @@ -829,7 +829,7 @@ 'duplicate ip bold' => 'Duplicate addresses are in bold', 'duplicate mac' => 'Duplicate MAC address entered', 'duplicate name' => 'That name is already being used, please choose another.', -'dyn dns source choice' => 'Dynamic DNS provider(s) will receive an IP address for this IPFire from:', +'dyn dns source choice' => 'Il provider DDNS oterrà l\'indirizzo IP per questo IPFire da:', 'dynamic dns' => 'Dynamic DNS', 'dynamic dns client' => 'Dynamic DNS Client', 'e-mail address too long' => 'E-mail address is too long; it should not be longer than 40 characters.', @@ -893,8 +893,8 @@ 'expected' => 'Expected', 'expertoptions' => 'Expert options', 'expires' => 'Scade', -'export' => 'Export', -'exportkey' => 'Export PSK', +'export' => 'Esporta', +'exportkey' => 'Esporta PSK', 'external access' => 'External Access', 'external access configuration' => 'External access configuration', 'external access rule added' => 'External access rule added; restarting access controller', @@ -904,9 +904,9 @@ 'extrahd' => 'ExtraHD', 'extrahd because there is already a device mounted' => ', because there is already a device mounted', 'extrahd cant umount' => 'Can\'t umount', -'extrahd detected drives' => 'detected drives', -'extrahd install or load driver' => 'If your device isn\'t listed here, you need to install or load the driver.
    If you can see your device but no partitions you have to create them first.', -'extrahd maybe the device is in use' => '. Maybe the device is in use', +'extrahd detected drives' => 'Unità rilevate', +'extrahd install or load driver' => 'Se il dispositivo non è elencato, è necessario installare o caricare il driver.
    Se è possibile vedere il dispositivo, ma non le partizioni è necessario crearle prima.', +'extrahd maybe the device is in use' => '. Il dispositivo potrebbe essere in uso', 'extrahd to' => 'to', 'extrahd to root' => 'to root', 'extrahd unable to read' => 'Unable to read', @@ -916,26 +916,26 @@ 'false max bandwith' => 'Maximum bandwith is false.', 'false min bandwith' => 'Minimum bandwith is false.', 'february' => 'Febbraio', -'fetch ip from' => 'Guess the real public IP with help of an external server', +'fetch ip from' => 'Ottieni l\'indirizzo IP pubblico con l\'aiuto di un server esterno', 'filename' => 'Filename', 'filesystem full' => 'Filesystem full', -'fireinfo ipfire version' => 'IPFire version', +'fireinfo ipfire version' => 'Versione IPFire', 'fireinfo is disabled' => 'Fireinfo is disabled', 'fireinfo is enabled' => 'Fireinfo is enabled', -'fireinfo is submitted' => 'Your profile is submitted to the fireinfo service.', +'fireinfo is submitted' => 'Il tuo profilo è inviato al servizio fireinfo.', 'fireinfo is submitted button' => 'No, non voglio più inviare il mio profilo', 'fireinfo kernel version' => 'Kernel version', -'fireinfo not submitted' => 'Your profile is not submitted to the fireinfo service.', -'fireinfo not submitted button' => 'Yes, I want to send my profile', -'fireinfo pakfire version' => 'Pakfire version', -'fireinfo please enable' => 'Please enable the fireinfo service.', -'fireinfo settings' => 'Fireinfo settings', +'fireinfo not submitted' => 'Il tuo profilo non viene inviato al servizio fireinfo.', +'fireinfo not submitted button' => 'Sì, voglio inviae il mio profilo', +'fireinfo pakfire version' => 'Versione Pakfire', +'fireinfo please enable' => 'Ti preghiamo di attivare il servizio fireinfo.', +'fireinfo settings' => 'Impostazioni Fireinfo', 'fireinfo system version' => 'Versione del Sistema', -'fireinfo why descr1' => 'It is very important for the development of IPFire that you enable this', -'fireinfo why descr2' => 'service. ', -'fireinfo why enable' => 'Why should I enable fireinfo?', -'fireinfo why read more' => 'Read more about the reasons.', -'fireinfo your profile id' => 'Your profile ID', +'fireinfo why descr1' => 'È molto importante per lo sviluppo di IPFire che questa opzione venga attivata', +'fireinfo why descr2' => 'servizio. ', +'fireinfo why enable' => 'Perché dovrei attivare fireinfo?', +'fireinfo why read more' => 'Per saperne di più sulle ragioni.', +'fireinfo your profile id' => 'L\'ID del tuo profilo', 'firewall' => 'Firewall', 'firewall graphs' => 'Firewall Graphs', 'firewall hits' => 'Numero totale di visite per firewall', @@ -946,7 +946,7 @@ 'firewall logs country' => 'Fw-Loggraphs (Country)', 'firewall logs ip' => 'Fw-Loggraphs (IP)', 'firewall logs port' => 'Fw-Loggraphs (Port)', -'firewall rules' => 'Firewall Rules', +'firewall rules' => 'Regole del firewall', 'firewallhits' => 'firewallhits', 'firmware' => 'Firmware', 'firmware upload' => 'Upload Firmware/Drivers', @@ -988,7 +988,7 @@ 'fwdfw MODE2' => 'Accept all packets', 'fwdfw REJECT' => 'REJECT', 'fwdfw action' => 'Action', -'fwdfw additional' => 'Additional settings', +'fwdfw additional' => 'Impostazioni aggiuntive', 'fwdfw addrule' => 'Add/Edit rule:', 'fwdfw all icmp' => 'All ICMP types', 'fwdfw change' => 'Update', @@ -1030,36 +1030,36 @@ 'fwdfw man port' => 'Port(s):', 'fwdfw many' => 'Many', 'fwdfw menu' => 'Firewall', -'fwdfw movedown' => 'Move down', -'fwdfw moveup' => 'Move up', +'fwdfw movedown' => 'Sposta giù', +'fwdfw moveup' => 'Sposta su', 'fwdfw natport used' => 'The given port for NAPT is already in use by an other DNAT rule.', -'fwdfw newrule' => 'New rule', +'fwdfw newrule' => 'Nuova regola', 'fwdfw p2p txt' => 'Grant/deny access to P2P networks.', 'fwdfw pol allow' => 'Allowed', 'fwdfw pol block' => 'Blocked', -'fwdfw pol text' => 'Sets the default firewall behaviour for connections from local networks. You may either allow all new connections or block them by default. Connections between the local networks are also blocked in the latter mode.', -'fwdfw pol text1' => 'Sets the default firewall behaviour for connections initiated by the firewall itself. Attention! You may lock yourself out.', -'fwdfw pol title' => 'Default firewall behaviour', +'fwdfw pol text' => 'Imposta il comportamento predefinito del firewall per le connessioni da reti locali. Si può consentire tutte le nuove connessioni o bloccarle per impostazione predefinita. Anche le connessioni tra le reti locali sono bloccate in quest\'ultima modalità.', +'fwdfw pol text1' => 'Imposta il comportamento predefinito del firewall per le connessioni avviate dal firewall stesso. Attenzione! Potreste bloccare il vostro stesso accesso.', +'fwdfw pol title' => 'Comportamento di default del firewall', 'fwdfw prot41' => 'IPv6 Encapsulation (Protocol 41)', 'fwdfw prot41 short' => 'IPv6 Encap', 'fwdfw red' => 'ROSSO', -'fwdfw reread' => 'Apply changes', +'fwdfw reread' => 'Applica le modifiche', 'fwdfw rule action' => 'Rule action:', -'fwdfw rule activate' => 'Activate rule', -'fwdfw rulepos' => 'Rule position', -'fwdfw rules' => 'Rules', +'fwdfw rule activate' => 'Attiva la regola', +'fwdfw rulepos' => 'Posizione della regola', +'fwdfw rules' => 'Regole', 'fwdfw snat' => 'Source NAT', 'fwdfw source' => 'Source', -'fwdfw sourceip' => 'Source address (MAC/IP address or network):', +'fwdfw sourceip' => 'Source address (Indirizzo MAC/IP o network):', 'fwdfw std network' => 'Standard networks:', 'fwdfw target' => 'Destinazione', -'fwdfw targetip' => 'Destination address (IP address or network):', +'fwdfw targetip' => 'Destination address (Indirizzo IP o network):', 'fwdfw till' => 'Until:', 'fwdfw time' => 'Time Constraints', 'fwdfw timeframe' => 'Use time constraints', 'fwdfw toggle' => 'Activate or deactivate', 'fwdfw togglelog' => 'Activate or deactivate logging', -'fwdfw use nat' => 'Use Network Address Translation (NAT)', +'fwdfw use nat' => 'Usa Network Address Translation (NAT)', 'fwdfw use srcport' => 'Source port:', 'fwdfw use srv' => 'Destination port:', 'fwdfw useless rule' => 'This rule is useless.', @@ -1088,7 +1088,7 @@ 'fwhost addservicegrp' => 'Add new service group', 'fwhost any' => 'Any', 'fwhost attention' => 'ATTENTION', -'fwhost back' => 'Back', +'fwhost back' => 'Indietro', 'fwhost blue' => 'Blu', 'fwhost ccdhost' => 'OpenVPN clients:', 'fwhost ccdnet' => 'OpenVPN networks:', @@ -1149,9 +1149,9 @@ 'fwhost orange' => 'Orange', 'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net', 'fwhost port' => 'Port(s)', -'fwhost prot' => 'Protocolo', -'fwhost reread' => 'Firewall rules need to be updated.', -'fwhost reset' => 'Cancel', +'fwhost prot' => 'Protocollo', +'fwhost reread' => 'Le regole del firewall devono essere aggiornate.', +'fwhost reset' => 'Cancella', 'fwhost services' => 'Servizio:', 'fwhost srv_name' => 'Nome servizio', 'fwhost stdnet' => 'Standard networks:', @@ -1185,20 +1185,20 @@ 'graph' => 'Grafico', 'graph per' => 'per', 'green' => 'Verde', -'green interface' => 'Interface Verde', +'green interface' => 'Interfaccia Verde', 'grouptype' => 'Grouptype:', 'guest ok' => 'allow guests to access', 'gui settings' => 'Settaggio GUI', 'gz with key' => 'Only an encrypted archive can be restored on this machine.', 'hangup' => 'Disconnect', 'hangup string' => 'Hangup:', -'harddisk temperature' => 'Temperatura Harddisk', +'harddisk temperature' => 'Temperatura hard disk', 'harddisk temperature graphs' => 'Grafico HDD', 'hardware graphs' => 'Grafico Hardware', 'hardware support' => 'Supporto Hardware', -'hdd temperature in' => 'Temperatura Harddisk', +'hdd temperature in' => 'Temperatura hard disk', 'help' => 'Help', -'high' => 'High', +'high' => 'Alto', 'high memory usage' => 'High memory usage', 'hint' => 'Hint:', 'holdoff' => 'Holdoff time (in seconds)', @@ -1229,10 +1229,10 @@ 'ids log viewer' => 'IDS log viewer', 'ids logs' => 'IDS Logs', 'ids preprocessor' => 'IDS preprocessor', -'ids rules license' => 'To utilize Sourcefire VRT Certified Rules, you need to register on', +'ids rules license' => 'Per utilizzare le regole Sourcefire VRT è necessario registrarsi su', 'ids rules license1' => '.', -'ids rules license2' => 'Acknowledge the license, activate your account by visiting the url you got via mail. Then go to', -'ids rules license3' => 'press the "Generate code"-button and copy the 40 character Oinkcode into the field below.', +'ids rules license2' => 'Accettate la licenza, attivate il vostro account visitando l\'URL ricevuto via e-mail. Poi vai a', +'ids rules license3' => 'premete il tasto "Generate code" e copiate i 40 caratteri dell\'Oinkcode nel campo sottostante.', 'ids rules update' => 'Snort rules update', 'iface' => 'Iface', 'ignore filter' => 'Ignora filtro', @@ -1262,8 +1262,8 @@ 'installed updates' => 'Installed updates:', 'instant update' => 'Instant Update', 'integrity' => 'Integrity:', -'interface' => 'Interface', -'interfaces' => 'Interfaces', +'interface' => 'Interfaccia', +'interfaces' => 'Interfacce', 'internet' => 'INTERNET', 'intrusion detection' => 'Intrusion Detection', 'intrusion detection system' => 'Intrusion Detection System', @@ -1365,7 +1365,7 @@ 'june' => 'Giugno', 'kernel' => 'Kernel', 'kernel logging server' => 'Kernel Logging Server', -'kernel version' => 'Kernel version:', +'kernel version' => 'Versione del Kernel:', 'key stuff' => '2. Keys and Certificates', 'keyreset' => 'Reset Keys', 'keys' => 'keys', @@ -1395,7 +1395,7 @@ 'log' => 'Log', 'log enabled' => 'Abilito Log', 'log level' => 'Log Level', -'log lines per page' => 'Line per pagina', +'log lines per page' => 'Linee per pagina', 'log server address' => 'Syslog server:', 'log settings' => 'Impostazioni di Log', 'log summaries' => 'Sommario Log', @@ -1412,9 +1412,9 @@ 'logs' => 'Gestione Log', 'lookup failed' => 'Reverse lookup failed', 'loosedirectorychecking' => 'Loosedirectorychecking', -'low' => 'Low', +'low' => 'Basso', 'ls_dhcpd' => 'DHCP Server:', -'ls_disk space' => 'Disk space:', +'ls_disk space' => 'Spazio sul disco:', 'ls_free/swan' => 'VPN:', 'ls_httpd' => 'HTTP Server:', 'ls_init' => 'Init:', @@ -1480,10 +1480,10 @@ 'meaning' => 'meaning', 'media' => 'Media', 'media information' => 'Informazioni Media', -'medium' => 'Medium', +'medium' => 'Medio', 'memory' => 'Memoria', 'memory information' => 'informazione Memoria', -'memory usage per' => 'Memory Usage per', +'memory usage per' => 'Utilizzo memoria per', 'messages logging' => 'Log settings for /var/log/messages', 'method' => 'Method:', 'min costs' => 'Minimum costs', @@ -1602,11 +1602,11 @@ 'noservicename' => 'No Service Name entered', 'not a valid ca certificate' => 'Not a valid CA certificate.', 'not a valid dh key' => 'Not a valid Diffie-Hellman parameters file. Please use a length of 1024, 2048, 3072 or 4096 bits and the PKCS#3 format.', -'not enough disk space' => 'Not enough disk space', -'not present' => 'Not present', +'not enough disk space' => 'Spazio su disco insufficiente', +'not present' => 'Non presente', 'not running' => 'not running', 'not set' => 'not set', -'notes' => 'Notes', +'notes' => 'Note', 'notice' => 'Notice', 'november' => 'Novembre', 'ntp common settings' => 'Impostazioni Comuni', @@ -1649,7 +1649,7 @@ 'optional at cmd' => 'optional AT command', 'optional data' => '3. Optional Settings:', 'options' => 'Options', -'options fw' => 'Firewall Options', +'options fw' => 'Opzioni firewall', 'optionsfw portlist hint' => 'The list of ports has to be comma separated (e.g. 137,138). You can specify up to a maximum of 15 ports per protocol.', 'optionsfw warning' => 'Modifying these options implies restart of firewall', 'or' => 'or', @@ -1659,7 +1659,7 @@ 'organization too long' => 'Organization is too long; it should not be longer than 60 characters.', 'original' => 'Original', 'os level' => 'OS Level', -'other' => 'Other', +'other' => 'Altro', 'other countries' => 'Other countries', 'other login script' => 'Other login script', 'otherip' => 'other IP', @@ -1681,8 +1681,8 @@ 'outgoing firewall mode1' => 'Using this mode, only connections based on the defined rules are allowed.', 'outgoing firewall mode2' => 'Using this mode, all connections are allowed despited off the defined ones.', 'outgoing firewall outgoing firewall reserved groupname' => 'Please use another group name, this name is reserved.', -'outgoing firewall p2p allow' => 'Using the P2P protocol is allowed', -'outgoing firewall p2p deny' => 'Using the P2P protocol is forbidden', +'outgoing firewall p2p allow' => 'L\'utilizzo del protocollo P2P è consentito', +'outgoing firewall p2p deny' => 'L\'utilizzo del protocollo P2P è impedito', 'outgoing firewall p2p description 1' => 'The button', 'outgoing firewall p2p description 2' => 'means that the p2p protocol is allowed or', 'outgoing firewall p2p description 3' => 'that the p2p protocol is denied.', @@ -1744,10 +1744,10 @@ 'ovpnstatus log' => 'OVPN-Status-Log', 'ovpnsys log' => 'OVPN-System-Log', 'p2p block' => 'P2P networks', -'p2p block save notice' => 'Please reload the firewall ruleset in order to apply your changes.', +'p2p block save notice' => 'Ricarica le regole del firewall per applicare le modifiche.', 'package failed to install' => 'Package failed to install.', 'pagerefresh' => 'Page is beeing refreshed, please wait.', -'pakfire accept all' => 'Do you want to install all packages?', +'pakfire accept all' => 'Vuoi installare tutti i pacchetti?', 'pakfire ago' => 'ago.', 'pakfire available addons' => 'Addons disponibili:', 'pakfire configuration' => 'Configurazione Pakfire', @@ -1757,10 +1757,10 @@ 'pakfire install description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e
    fai clic sul segno più per installare.', 'pakfire install package' => 'You want to install the following packages: ', 'pakfire installed addons' => 'Addons installati:', -'pakfire last core list update' => 'Last core list update made', -'pakfire last package update' => 'Last packages list update made', -'pakfire last serverlist update' => 'Last server list update made', -'pakfire last update' => 'Last update made', +'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema', +'pakfire last package update' => 'Ultimo aggiornamento della lista pacchetti', +'pakfire last serverlist update' => 'Ultimo aggiornamento della lista server', +'pakfire last update' => 'Ultimo aggiornamento di sistema effettuato', 'pakfire possible dependency' => ' There may be depending packages, here is a list of packages that need to be installed.', 'pakfire register' => 'Registrati sul pakfire-server:', 'pakfire system state' => 'Stato del Sistema', @@ -1768,7 +1768,7 @@ 'pakfire uninstall package' => 'You want to uninstall the following packages: ', 'pakfire update daily' => 'Ricerca gli aggiornamenti una volta al giorno:', 'pakfire updates' => 'Available Update:', -'pakfire working' => 'Pakfire is working ... Please wait until all operations have completed successfully.', +'pakfire working' => 'Pakfire sta lavorando... Per favore attendi il termine delle operazioni', 'pap or chap' => 'PAP or CHAP', 'parentclass' => 'Parentclass', 'parentclass add' => 'Add parentclass', @@ -1814,9 +1814,9 @@ 'printername' => 'Printername', 'printing' => 'Printing', 'printing options' => 'printing options', -'priority' => 'Priority', -'processes' => 'Processo', -'profile' => 'Profile', +'priority' => 'Priorità', +'processes' => 'Processi', +'profile' => 'Profilo', 'profile deleted' => 'Profile deleted: ', 'profile has errors' => 'Profile has errors', 'profile made current' => 'Profile made current: ', @@ -1837,7 +1837,7 @@ 'proxy no proxy extend' => 'or specify a list of not proxied destination', 'proxy no proxy local' => 'Disallow local proxying on Blu/Verde networks', 'proxy port' => 'Porta Proxy', -'proxy reconfigure' => 'Save and Reload', +'proxy reconfigure' => 'Salva e ricarica', 'proxy reports' => 'Report del Proxy', 'proxy reports daily' => 'Daily reports', 'proxy reports monthly' => 'Monthly reports', @@ -1869,7 +1869,7 @@ 'red' => 'Internet', 'red1' => 'ROSSO', 'references' => 'References', -'refresh' => 'Refresh', +'refresh' => 'Aggiorna', 'refresh index page while connected' => 'Aggiorna la pagina index.cgi mentre si é collegati', 'refresh update list' => 'Refresh update list', 'registered user rules' => 'Sourcefire VRT rules for registered users', @@ -1959,7 +1959,7 @@ 'services' => 'Servizi', 'services settings' => 'Firewall-Impostazioni Servizi', 'set' => 'set', -'set time now' => 'Set time now', +'set time now' => 'Aggiorna adesso la data', 'set time now help' => 'Per accodare un evento di sincronizzazione in qualsiasi momento (anche durante l\'utilizzo di un programma di ripetizione), premere il pulsante Imposta ora ora. Si prega di notare che potrebbe essere necessario attendere per cinque minuti, o più, prima che si verifichi un evento di sincronizzazione.', 'settings' => 'Impostazioni', 'shaping add options' => 'Add service', @@ -2039,10 +2039,10 @@ 'ssh is enabled' => 'SSH is enabled. Restarting.', 'ssh key' => 'Key', 'ssh key size' => 'Size (bits)', -'ssh keys' => 'Chiave basata Autenticazione pubblica', +'ssh keys' => 'Autenticazione con la chiave pubblica SSH', 'ssh no auth' => 'You have not allowed any authentication methods; this will stop you logging in', 'ssh passwords' => 'Consenti autenticazione basata su password', -'ssh port' => 'SSH porta TCP/IP 22 (default é 222)', +'ssh port' => 'SSH sulla porta TCP/IP 22 (default é 222)', 'ssh portfw' => 'Consenti inoltro TCP', 'ssh tempstart15' => 'Stop SSH dopo 15 minuti', 'ssh tempstart30' => 'Stop SSH dopo 30 minuti', @@ -2079,9 +2079,9 @@ 'successfully refreshed updates list' => 'Successfully refreshed updates list.', 'summaries kept' => 'Tenere il sommaro per', 'sunday' => 'Domenica', -'support donation' => 'Support the IPFire project with your donation', +'support donation' => 'Sostieni il progetto IPFire con la tua donazione', 'swap' => 'Swap', -'swap usage per' => 'Swap usage per', +'swap usage per' => 'Utilizzo swap per', 'system' => 'Sistema', 'system graphs' => 'Grafico sistema', 'system has hwrng' => 'This system has got a hardware random number generator.', @@ -2093,7 +2093,7 @@ 'ta key' => 'TLS-Authentification-Key', 'telephone not set' => 'Telephone not set.', 'template' => 'Preset', -'template warning' => 'You have two options to set up Qos. The First, you press the save button and generate the classes and rules on your own. The second, you press the preset button and classes and rules will be set up by a template.', +'template warning' => 'Ci sono due opzioni per impostare il Qos. La prima: si preme il pulsante Salva e poi si generano le classi e le regole da soli. La seconda: si preme il tasto di preset e le classi e le regole saranno automaticamente generate da un modello.', 'teovpn_fragment' => 'Fragmentsize', 'test' => 'test', 'test email could not be sent' => 'Could not sent Testemail', @@ -2116,7 +2116,7 @@ 'time server' => 'Ora Server', 'timeout must be a number' => 'Timeout must be a number.', 'title' => 'Title', -'to' => 'To', +'to' => 'Al', 'to email adr' => 'To e-mail address', 'to install an update' => 'To install an update please upload the .tgz.gpg file below:', 'to warn email bad' => 'To e-mail address is not valid', @@ -2186,8 +2186,8 @@ 'traffic calc time' => 'Time of calculation', 'traffic calc time bad' => 'Calculation time is not correct', 'traffic info messages' => 'Info messages', -'traffic monitor' => 'Traffic Monitor', -'traffic on' => 'Traffic on', +'traffic monitor' => 'Monitor del traffico', +'traffic on' => 'Traffico su', 'traffic shaping' => 'Traffic Shaping', 'traffic shaping settings' => 'Traffic Shaping Settings', 'traffic warn level bad' => 'Warnlevel is not correct', @@ -2199,7 +2199,7 @@ 'trafficorange' => 'DMZ', 'trafficout' => 'Output', 'trafficred' => 'Internet', -'traffics' => 'Panoramica-Utilizzo', +'traffics' => 'Panoramica utilizzo', 'trafficsum' => 'Totals', 'trafficto' => 'To', 'transfer limits' => 'Transfer limits', @@ -2226,13 +2226,13 @@ 'unix shell' => 'UNIX Shell', 'unknown' => 'UNKNOWN', 'unnamed' => 'Unnamed', -'update' => 'Update', +'update' => 'Aggiorna', 'update accelerator' => 'Update Accelerator', 'update time' => 'Aggiornamento ora:', 'update transcript' => 'Update transcript', 'updatedatabase' => 'Update Database with last report', -'updates' => 'Updates', -'updates installed' => 'Ruleset update from', +'updates' => 'aggiornamenti', +'updates installed' => 'Aggiornamento delle regole effettuato il', 'updates is old1' => 'Your update file is ', 'updates is old2' => 'days old. We recommend you update it on the System>Updates page.', 'updxlrtr 3 months' => 'three months', @@ -2286,7 +2286,7 @@ 'updxlrtr progress' => 'Progress', 'updxlrtr purge' => 'Purge', 'updxlrtr remove file' => 'Remove from cache', -'updxlrtr save and restart' => 'Save and Restart', +'updxlrtr save and restart' => 'Salva e riavvia', 'updxlrtr source' => 'Source', 'updxlrtr source checkup' => 'Source checkup', 'updxlrtr source checkup schedule' => 'Source checkup schedule', @@ -2411,8 +2411,8 @@ 'urlfilter enabled' => 'Enabled:', 'urlfilter example' => 'Esempio: www.domain.com', 'urlfilter example ads' => 'Esempio: www.domain.com/ads/', -'urlfilter export blacklist' => 'Export blacklist', -'urlfilter export error' => 'Unable to create export file', +'urlfilter export blacklist' => 'Esporta blacklist', +'urlfilter export error' => 'Impossibile creare il file di esportazione', 'urlfilter expressions' => 'Expressions (one per line)', 'urlfilter file ext block' => 'Blocco estenzione file', 'urlfilter filename' => 'Name', @@ -2434,7 +2434,7 @@ 'urlfilter load blacklist' => 'Load blacklist', 'urlfilter local file redirection' => 'Redirezione di file locale', 'urlfilter log' => 'urlfilter log', -'urlfilter log summary' => 'Numero totale di URL filtrati per', +'urlfilter log summary' => 'Numero totale di URL bloccati il', 'urlfilter log viewer' => 'URL filter log viewer', 'urlfilter logs' => 'LOG del filtro URL', 'urlfilter maintenance' => 'Manutenzione del filtro URL', @@ -2532,7 +2532,7 @@ 'use a pre-shared key' => 'Use a pre-shared key:', 'use dov' => 'Use data over voice (DOV):', 'use ibod' => 'Use Bandwidth on Demand (iBOD):', -'use ipfire red ip' => 'The classical RED IP used by IPFire during connection', +'use ipfire red ip' => 'L\'indirizzo IP utilizzato dall\'interfaccia RED durante la connessione', 'use only proposed settings' => 'Use only proposed settings.', 'used' => 'Usato', 'used memory' => 'Memoria Usata ', @@ -2553,7 +2553,7 @@ 'virtual address' => 'Virtual Address', 'virtual private networking' => 'Virtual Private Networking', 'visible in browselist' => 'visible in browselist', -'visit us at' => 'Visit us at', +'visit us at' => 'Visita il nostro sito', 'voldown10' => 'Decrease volume by 10', 'voldown5' => 'Decrease volume by 5', 'volup10' => 'Increase volume by 10', From 59b2133892ca3592da4aaa92e57bb38ba924191b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 16 May 2017 11:33:40 +0100 Subject: [PATCH 312/464] tor: Update to 0.3.0.7 Fixes various security vulnerabilities of medium severity in the relay component. Signed-off-by: Michael Tremer --- lfs/tor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/tor b/lfs/tor index 4da2c7c73..8613e03aa 100644 --- a/lfs/tor +++ b/lfs/tor @@ -24,7 +24,7 @@ include Config -VER = 0.2.9.9 +VER = 0.3.0.7 THISAPP = tor-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = tor -PAK_VER = 19 +PAK_VER = 20 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d9d8a2d1f65c151eb2b448f6a93fc326 +$(DL_FILE)_MD5 = fee12ede9172905ba3258db871b6c499 install : $(TARGET) From 0628d956a7cc1d952b236494de0559cbea52c0ff Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 16 May 2017 15:05:25 +0200 Subject: [PATCH 313/464] WiFi: Show EAP status on wireless client page This patch adds some status information so that we know what authentication an access point is using. Signed-off-by: Michael Tremer --- doc/language_issues.es | 5 ++++ doc/language_issues.fr | 5 ++++ doc/language_issues.it | 5 ++++ doc/language_issues.nl | 5 ++++ doc/language_issues.pl | 5 ++++ doc/language_issues.ru | 5 ++++ doc/language_issues.tr | 5 ++++ doc/language_missings | 20 +++++++++++++ html/cgi-bin/wirelessclient.cgi | 53 +++++++++++++++++++++++++++++++++ langs/de/cgi-bin/de.pl | 5 ++++ langs/en/cgi-bin/en.pl | 5 ++++ 11 files changed, 118 insertions(+) diff --git a/doc/language_issues.es b/doc/language_issues.es index b0a3adbca..e2391cb41 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1175,6 +1175,8 @@ WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption WARNING: untranslated string: wlan client encryption eap @@ -1186,6 +1188,7 @@ WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher @@ -1195,6 +1198,8 @@ WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version WARNING: untranslated string: wlan client wpa mode WARNING: untranslated string: wlan client wpa mode all WARNING: untranslated string: wlan client wpa mode ccmp ccmp diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 0407d0e57..dd8e3f8cd 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1192,6 +1192,8 @@ WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption WARNING: untranslated string: wlan client encryption eap @@ -1203,6 +1205,7 @@ WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher @@ -1212,6 +1215,8 @@ WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version WARNING: untranslated string: wlan client wpa mode WARNING: untranslated string: wlan client wpa mode all WARNING: untranslated string: wlan client wpa mode ccmp ccmp diff --git a/doc/language_issues.it b/doc/language_issues.it index 8964ff9ef..119f72d97 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -842,6 +842,11 @@ WARNING: untranslated string: wlan client auth peap WARNING: untranslated string: wlan client auth ttls WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client password +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version diff --git a/doc/language_issues.nl b/doc/language_issues.nl index b9f935c74..f7cca4a1b 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -890,6 +890,11 @@ WARNING: untranslated string: wlan client auth peap WARNING: untranslated string: wlan client auth ttls WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client password +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version diff --git a/doc/language_issues.pl b/doc/language_issues.pl index b0a3adbca..e2391cb41 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1175,6 +1175,8 @@ WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption WARNING: untranslated string: wlan client encryption eap @@ -1186,6 +1188,7 @@ WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher @@ -1195,6 +1198,8 @@ WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version WARNING: untranslated string: wlan client wpa mode WARNING: untranslated string: wlan client wpa mode all WARNING: untranslated string: wlan client wpa mode ccmp ccmp diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 83c2170fb..77b6aae57 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1170,6 +1170,8 @@ WARNING: untranslated string: wlan client configuration WARNING: untranslated string: wlan client disconnected WARNING: untranslated string: wlan client duplicate ssid WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client edit entry WARNING: untranslated string: wlan client encryption WARNING: untranslated string: wlan client encryption eap @@ -1181,6 +1183,7 @@ WARNING: untranslated string: wlan client group cipher WARNING: untranslated string: wlan client group key algorithm WARNING: untranslated string: wlan client identity WARNING: untranslated string: wlan client invalid key length +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client new entry WARNING: untranslated string: wlan client new network WARNING: untranslated string: wlan client pairwise cipher @@ -1190,6 +1193,8 @@ WARNING: untranslated string: wlan client password WARNING: untranslated string: wlan client psk WARNING: untranslated string: wlan client ssid WARNING: untranslated string: wlan client tkip +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version WARNING: untranslated string: wlan client wpa mode WARNING: untranslated string: wlan client wpa mode all WARNING: untranslated string: wlan client wpa mode ccmp ccmp diff --git a/doc/language_issues.tr b/doc/language_issues.tr index e268462c8..40b43f222 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -773,6 +773,11 @@ WARNING: untranslated string: wlan client auth peap WARNING: untranslated string: wlan client auth ttls WARNING: untranslated string: wlan client authentication settings WARNING: untranslated string: wlan client eap authentication method +WARNING: untranslated string: wlan client eap phase2 method +WARNING: untranslated string: wlan client eap state WARNING: untranslated string: wlan client encryption eap WARNING: untranslated string: wlan client identity +WARNING: untranslated string: wlan client method WARNING: untranslated string: wlan client password +WARNING: untranslated string: wlan client tls cipher +WARNING: untranslated string: wlan client tls version diff --git a/doc/language_missings b/doc/language_missings index a2f2fed9a..422266bed 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -612,6 +612,8 @@ < wlan client disconnected < wlan client duplicate ssid < wlan client eap authentication method +< wlan client eap phase2 method +< wlan client eap state < wlan client edit entry < wlan client encryption < wlan client encryption eap @@ -623,6 +625,7 @@ < wlan client group key algorithm < wlan client identity < wlan client invalid key length +< wlan client method < wlan client new entry < wlan client new network < wlan client pairwise cipher @@ -633,6 +636,8 @@ < wlan clients < wlan client ssid < wlan client tkip +< wlan client tls cipher +< wlan client tls version < wlan client wpa mode < wlan client wpa mode all < wlan client wpa mode ccmp ccmp @@ -1229,6 +1234,8 @@ < wlan client disconnected < wlan client duplicate ssid < wlan client eap authentication method +< wlan client eap phase2 method +< wlan client eap state < wlan client edit entry < wlan client encryption < wlan client encryption eap @@ -1240,6 +1247,7 @@ < wlan client group key algorithm < wlan client identity < wlan client invalid key length +< wlan client method < wlan client new entry < wlan client new network < wlan client pairwise cipher @@ -1250,6 +1258,8 @@ < wlan clients < wlan client ssid < wlan client tkip +< wlan client tls cipher +< wlan client tls version < wlan client wpa mode < wlan client wpa mode all < wlan client wpa mode ccmp ccmp @@ -1831,6 +1841,8 @@ < wlan client disconnected < wlan client duplicate ssid < wlan client eap authentication method +< wlan client eap phase2 method +< wlan client eap state < wlan client edit entry < wlan client encryption < wlan client encryption eap @@ -1842,6 +1854,7 @@ < wlan client group key algorithm < wlan client identity < wlan client invalid key length +< wlan client method < wlan client new entry < wlan client new network < wlan client pairwise cipher @@ -1852,6 +1865,8 @@ < wlan clients < wlan client ssid < wlan client tkip +< wlan client tls cipher +< wlan client tls version < wlan client wpa mode < wlan client wpa mode all < wlan client wpa mode ccmp ccmp @@ -2439,6 +2454,8 @@ < wlan client disconnected < wlan client duplicate ssid < wlan client eap authentication method +< wlan client eap phase2 method +< wlan client eap state < wlan client edit entry < wlan client encryption < wlan client encryption eap @@ -2450,6 +2467,7 @@ < wlan client group key algorithm < wlan client identity < wlan client invalid key length +< wlan client method < wlan client new entry < wlan client new network < wlan client pairwise cipher @@ -2460,6 +2478,8 @@ < wlan clients < wlan client ssid < wlan client tkip +< wlan client tls cipher +< wlan client tls version < wlan client wpa mode < wlan client wpa mode all < wlan client wpa mode ccmp ccmp diff --git a/html/cgi-bin/wirelessclient.cgi b/html/cgi-bin/wirelessclient.cgi index 70ab10a56..6978663cf 100644 --- a/html/cgi-bin/wirelessclient.cgi +++ b/html/cgi-bin/wirelessclient.cgi @@ -680,6 +680,59 @@ sub ShowStatus() { END + if ($status{'EAP state'}) { + my $selected_method = $status{'selectedMethod'}; + $selected_method =~ s/\d+ \((.*)\)/$1/e; + + print < + + $Lang::tr{'wlan client encryption eap'} + + + + + $Lang::tr{'wlan client eap state'} + + + $status{'EAP state'} + + + + + $Lang::tr{'wlan client method'} + + + $selected_method + + + + + $Lang::tr{'wlan client tls version'} + + + $status{'eap_tls_version'} + + + + + $Lang::tr{'wlan client tls cipher'} + + + $status{'EAP TLS cipher'} + + + + + $Lang::tr{'wlan client eap phase2 method'} + + + $status{"${selected_method}v0 Phase2 method"} + + +END + } + if (($status{'pairwise_cipher'} ne "NONE") || ($status{'group_cipher'} ne "NONE")) { print < diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index c65a64ba6..a27220bc6 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2670,6 +2670,8 @@ 'wlan client disconnected' => 'Nicht verbunden', 'wlan client duplicate ssid' => 'Doppelte SSID', 'wlan client eap authentication method' => 'EAP-Authentifizierungsmethode', +'wlan client eap phase2 method' => 'EAP-Phase-2-Methode', +'wlan client eap state' => 'EAP-Status', 'wlan client edit entry' => 'Verbindung bearbeiten', 'wlan client encryption' => 'Verschlüsselung', 'wlan client encryption eap' => 'EAP', @@ -2681,6 +2683,7 @@ 'wlan client group key algorithm' => 'GKA', 'wlan client identity' => 'Identität', 'wlan client invalid key length' => 'Ungültige Schlüssellänge.', +'wlan client method' => 'Methode', 'wlan client new entry' => 'Neue WLAN-Client-Konfiguration erstellen', 'wlan client new network' => 'Neues Netzwerk', 'wlan client pairwise cipher' => 'Paarweise Chiffre', @@ -2690,6 +2693,8 @@ 'wlan client psk' => 'Schlüssel', 'wlan client ssid' => 'SSID', 'wlan client tkip' => 'TKIP', +'wlan client tls cipher' => 'TLS-Chiffre', +'wlan client tls version' => 'TLS-Version', 'wlan client wpa mode' => 'WPA-Modus', 'wlan client wpa mode all' => 'Automatisch', 'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 71a283cc5..dc30f2254 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2715,6 +2715,8 @@ 'wlan client disconnected' => 'Disconnected', 'wlan client duplicate ssid' => 'Duplicate SSID', 'wlan client eap authentication method' => 'EAP Authentication Method', +'wlan client eap phase2 method' => 'EAP Phase 2 Method', +'wlan client eap state' => 'EAP Status', 'wlan client edit entry' => 'Edit wireless client configuration', 'wlan client encryption' => 'Encryption', 'wlan client encryption eap' => 'EAP', @@ -2726,6 +2728,7 @@ 'wlan client group key algorithm' => 'GKA', 'wlan client identity' => 'Identity', 'wlan client invalid key length' => 'Invalid key length.', +'wlan client method' => 'Method', 'wlan client new entry' => 'Create new wireless client configuration', 'wlan client new network' => 'New network', 'wlan client pairwise cipher' => 'Pairwise cipher', @@ -2735,6 +2738,8 @@ 'wlan client psk' => 'Pre-shared key', 'wlan client ssid' => 'SSID', 'wlan client tkip' => 'TKIP', +'wlan client tls cipher' => 'TLS Cipher', +'wlan client tls version' => 'TLS Version', 'wlan client wpa mode' => 'WPA mode', 'wlan client wpa mode all' => 'Auto', 'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP', From c335b0cd8edb800795cf1b4422043ef3c24a036b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 16 May 2017 16:02:25 +0200 Subject: [PATCH 314/464] index.cgi: Show WiFi properties on front page Signed-off-by: Michael Tremer --- config/cfgroot/network-functions.pl | 59 +++++++++++++++++++++++++++++ doc/language_issues.es | 2 + doc/language_issues.fr | 2 + doc/language_issues.it | 2 + doc/language_issues.nl | 2 + doc/language_issues.pl | 2 + doc/language_issues.ru | 2 + doc/language_issues.tr | 2 + doc/language_missings | 8 ++++ html/cgi-bin/index.cgi | 43 ++++++++++++++++++++- langs/de/cgi-bin/de.pl | 2 + langs/en/cgi-bin/en.pl | 2 + 12 files changed, 127 insertions(+), 1 deletion(-) diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 5f53704cd..66f1ed554 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -315,6 +315,65 @@ sub setup_upstream_proxy() { } } +my %wireless_status = (); + +sub _get_wireless_status($) { + my $intf = shift; + + if (!$wireless_status{$intf}) { + $wireless_status{$intf} = `iwconfig $intf`; + } + + return $wireless_status{$intf}; +} + +sub wifi_get_essid($) { + my $status = &_get_wireless_status(shift); + + my ($essid) = $status =~ /ESSID:\"(.*)\"/; + + return $essid; +} + +sub wifi_get_frequency($) { + my $status = &_get_wireless_status(shift); + + my ($frequency) = $status =~ /Frequency:(\d+\.\d+ GHz)/; + + return $frequency; +} + +sub wifi_get_access_point($) { + my $status = &_get_wireless_status(shift); + + my ($access_point) = $status =~ /Access Point: ([0-9A-F:]+)/; + + return $access_point; +} + +sub wifi_get_bit_rate($) { + my $status = &_get_wireless_status(shift); + + my ($bit_rate) = $status =~ /Bit Rate=(\d+ [GM]b\/s)/; + + return $bit_rate; +} + +sub wifi_get_link_quality($) { + my $status = &_get_wireless_status(shift); + + my ($cur, $max) = $status =~ /Link Quality=(\d+)\/(\d+)/; + + return $cur * 100 / $max; +} + +sub wifi_get_signal_level($) { + my $status = &_get_wireless_status(shift); + + my ($signal_level) = $status =~ /Signal level=(\-\d+ dBm)/; + + return $signal_level; +} 1; # Remove the next line to enable the testsuite diff --git a/doc/language_issues.es b/doc/language_issues.es index e2391cb41..d34d63f59 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -1144,6 +1144,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: uplink +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: upload dh key WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template @@ -1161,6 +1162,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.fr b/doc/language_issues.fr index dd8e3f8cd..4a916761b 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -1158,6 +1158,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: uplink +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: upload dh key WARNING: untranslated string: upload new ruleset WARNING: untranslated string: uptime load average @@ -1178,6 +1179,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.it b/doc/language_issues.it index 119f72d97..0baf40086 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -825,6 +825,7 @@ WARNING: untranslated string: search WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn force mobike @@ -836,6 +837,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client anonymous identity WARNING: untranslated string: wlan client auth auto WARNING: untranslated string: wlan client auth peap diff --git a/doc/language_issues.nl b/doc/language_issues.nl index f7cca4a1b..4f64b5d68 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -871,6 +871,7 @@ WARNING: untranslated string: ta key WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: upload dh key WARNING: untranslated string: vendor WARNING: untranslated string: vpn broken @@ -884,6 +885,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client anonymous identity WARNING: untranslated string: wlan client auth auto WARNING: untranslated string: wlan client auth peap diff --git a/doc/language_issues.pl b/doc/language_issues.pl index e2391cb41..d34d63f59 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -1144,6 +1144,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: uplink +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: upload dh key WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template @@ -1161,6 +1162,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 77b6aae57..d07c421eb 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -1139,6 +1139,7 @@ WARNING: untranslated string: unblock WARNING: untranslated string: unblock all WARNING: untranslated string: uncheck all WARNING: untranslated string: uplink +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: upload dh key WARNING: untranslated string: uptime load average WARNING: untranslated string: urlfilter redirect template @@ -1156,6 +1157,7 @@ WARNING: untranslated string: vpn statistic n2n WARNING: untranslated string: vpn statistic rw WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client WARNING: untranslated string: wlan client advanced settings WARNING: untranslated string: wlan client and diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 40b43f222..034dd2a7b 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -759,6 +759,7 @@ WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed WARNING: untranslated string: routing table +WARNING: untranslated string: uplink bit rate WARNING: untranslated string: vpn broken WARNING: untranslated string: vpn connecting WARNING: untranslated string: vpn on-demand @@ -767,6 +768,7 @@ WARNING: untranslated string: vpn start action route WARNING: untranslated string: vpn start action start WARNING: untranslated string: vpn statistics n2n WARNING: untranslated string: vpn weak +WARNING: untranslated string: wireless network WARNING: untranslated string: wlan client anonymous identity WARNING: untranslated string: wlan client auth auto WARNING: untranslated string: wlan client auth peap diff --git a/doc/language_missings b/doc/language_missings index 422266bed..fd372c15f 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -558,6 +558,7 @@ < updxlrtr sources < updxlrtr standard view < uplink +< uplink bit rate < upload dh key < upload new ruleset < uptime @@ -577,6 +578,7 @@ < vpn statistic n2n < vpn statistic rw < vpn weak +< wireless network < wlanap access point < wlanap channel < wlanap country @@ -1203,6 +1205,7 @@ < updxlrtr sources < updxlrtr standard view < uplink +< uplink bit rate < upload dh key < uptime < uptime load average @@ -1219,6 +1222,7 @@ < vpn statistic n2n < vpn statistic rw < vpn weak +< wireless network < wlanap country < wlan client < wlan client advanced settings @@ -1810,6 +1814,7 @@ < updxlrtr sources < updxlrtr standard view < uplink +< uplink bit rate < upload dh key < uptime < uptime load average @@ -1826,6 +1831,7 @@ < vpn statistic n2n < vpn statistic rw < vpn weak +< wireless network < wlanap country < wlan client < wlan client advanced settings @@ -2422,6 +2428,7 @@ < updxlrtr sources < updxlrtr standard view < uplink +< uplink bit rate < upload dh key < uptime < uptime load average @@ -2439,6 +2446,7 @@ < vpn statistic rw < vpn weak < week-graph +< wireless network < wlanap country < wlan client < wlan client advanced settings diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index 80a86afb2..6ba345dde 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -217,7 +217,48 @@ END - +END + + if (&General::RedIsWireless()) { + my $iface = $netsettings{"RED_DEV"} || "red0"; + + my $essid = &Network::wifi_get_essid($iface); + my $frequency = &Network::wifi_get_frequency($iface); + my $access_point = &Network::wifi_get_access_point($iface); + my $bit_rate = &Network::wifi_get_bit_rate($iface); + my $link_quality = &Network::wifi_get_link_quality($iface); + my $signal_level = &Network::wifi_get_signal_level($iface); + + print < + + $Lang::tr{'wireless network'}: + + + $essid + + + $access_point @ $frequency + + + + + + $Lang::tr{'uplink bit rate'}: + + + + $bit_rate + + + $link_quality% @ $signal_level + + +END + } + + print < END #Dial profiles diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index a27220bc6..b0cb96df2 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2356,6 +2356,7 @@ 'updxlrtr year' => 'einem Jahr', 'upgrade' => 'upgrade', 'uplink' => 'Uplink', +'uplink bit rate' => 'Ausgehende Datenrate', 'uplink speed' => 'Uplink-Geschwindigkeit (kbit/sek)', 'uplink std class' => 'Uploadstandardklasse', 'upload' => 'Hochladen', @@ -2656,6 +2657,7 @@ 'wireless config added' => 'Wireless-Konfiguration hinzugefügt', 'wireless config changed' => 'Wireless-Konfiguration geändert', 'wireless configuration' => 'Wireless-Konfiguration', +'wireless network' => 'WLAN-Netzwerk', 'wlan client' => 'WLAN-Client', 'wlan client advanced settings' => 'Erweiterte Einstellungen', 'wlan client and' => 'und', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index dc30f2254..b3aee5a2b 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2398,6 +2398,7 @@ 'updxlrtr year' => 'one year', 'upgrade' => 'upgrade', 'uplink' => 'Uplink', +'uplink bit rate' => 'Uplink Bit Rate', 'uplink speed' => 'Uplink speed (kbit/sec)', 'uplink std class' => 'uplink standard class', 'upload' => 'Upload', @@ -2701,6 +2702,7 @@ 'wireless config added' => 'Wireless config added', 'wireless config changed' => 'Wireless config changed', 'wireless configuration' => 'Wireless Configuration', +'wireless network' => 'WiFi Network', 'wlan client' => 'Wireless client', 'wlan client advanced settings' => 'Advanced settings', 'wlan client and' => 'and', From a0ab2f880e9dd8809b327b9245fb36cd7cb9b67e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 11:47:07 +0100 Subject: [PATCH 315/464] Start Core Update 111 Signed-off-by: Michael Tremer --- config/rootfiles/core/111/exclude | 30 ++++++++ .../rootfiles/core/111/filelists/armv5tel/gcc | 1 + .../rootfiles/core/111/filelists/armv5tel/gmp | 1 + config/rootfiles/core/111/filelists/bind | 1 + config/rootfiles/core/111/filelists/coreutils | 1 + config/rootfiles/core/111/filelists/dhcp | 1 + config/rootfiles/core/111/filelists/file | 1 + config/rootfiles/core/111/filelists/files | 22 ++++++ config/rootfiles/core/111/filelists/gzip | 1 + config/rootfiles/core/111/filelists/i586/gcc | 1 + config/rootfiles/core/111/filelists/i586/gmp | 1 + .../111/filelists/i586/strongswan-padlock | 1 + config/rootfiles/core/111/filelists/libevent2 | 1 + .../core/111/filelists/libevent2-compat | 1 + config/rootfiles/core/111/filelists/logrotate | 1 + config/rootfiles/core/111/filelists/logwatch | 1 + config/rootfiles/core/111/filelists/mpfr | 1 + config/rootfiles/core/111/filelists/pcre | 1 + config/rootfiles/core/111/filelists/php | 1 + config/rootfiles/core/111/filelists/rrdtool | 1 + .../rootfiles/core/111/filelists/strongswan | 1 + config/rootfiles/core/111/filelists/unbound | 1 + config/rootfiles/core/111/filelists/vnstat | 1 + .../rootfiles/core/111/filelists/x86_64/gcc | 1 + .../rootfiles/core/111/filelists/x86_64/gmp | 1 + config/rootfiles/core/111/meta | 1 + config/rootfiles/core/111/update.sh | 69 +++++++++++++++++++ 27 files changed, 145 insertions(+) create mode 100644 config/rootfiles/core/111/exclude create mode 120000 config/rootfiles/core/111/filelists/armv5tel/gcc create mode 120000 config/rootfiles/core/111/filelists/armv5tel/gmp create mode 120000 config/rootfiles/core/111/filelists/bind create mode 120000 config/rootfiles/core/111/filelists/coreutils create mode 120000 config/rootfiles/core/111/filelists/dhcp create mode 120000 config/rootfiles/core/111/filelists/file create mode 100644 config/rootfiles/core/111/filelists/files create mode 120000 config/rootfiles/core/111/filelists/gzip create mode 120000 config/rootfiles/core/111/filelists/i586/gcc create mode 120000 config/rootfiles/core/111/filelists/i586/gmp create mode 120000 config/rootfiles/core/111/filelists/i586/strongswan-padlock create mode 120000 config/rootfiles/core/111/filelists/libevent2 create mode 120000 config/rootfiles/core/111/filelists/libevent2-compat create mode 120000 config/rootfiles/core/111/filelists/logrotate create mode 120000 config/rootfiles/core/111/filelists/logwatch create mode 120000 config/rootfiles/core/111/filelists/mpfr create mode 120000 config/rootfiles/core/111/filelists/pcre create mode 120000 config/rootfiles/core/111/filelists/php create mode 120000 config/rootfiles/core/111/filelists/rrdtool create mode 120000 config/rootfiles/core/111/filelists/strongswan create mode 120000 config/rootfiles/core/111/filelists/unbound create mode 120000 config/rootfiles/core/111/filelists/vnstat create mode 120000 config/rootfiles/core/111/filelists/x86_64/gcc create mode 120000 config/rootfiles/core/111/filelists/x86_64/gmp create mode 100644 config/rootfiles/core/111/meta create mode 100644 config/rootfiles/core/111/update.sh diff --git a/config/rootfiles/core/111/exclude b/config/rootfiles/core/111/exclude new file mode 100644 index 000000000..d6fd053b6 --- /dev/null +++ b/config/rootfiles/core/111/exclude @@ -0,0 +1,30 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/ovpn +var/lib/alternatives +var/log/cache +var/log/dhcpcd.log +var/log/messages +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/111/filelists/armv5tel/gcc b/config/rootfiles/core/111/filelists/armv5tel/gcc new file mode 120000 index 000000000..84f7b9344 --- /dev/null +++ b/config/rootfiles/core/111/filelists/armv5tel/gcc @@ -0,0 +1 @@ +../../../../common/armv5tel/gcc \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/armv5tel/gmp b/config/rootfiles/core/111/filelists/armv5tel/gmp new file mode 120000 index 000000000..2bdf30dac --- /dev/null +++ b/config/rootfiles/core/111/filelists/armv5tel/gmp @@ -0,0 +1 @@ +../../../../common/armv5tel/gmp \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/bind b/config/rootfiles/core/111/filelists/bind new file mode 120000 index 000000000..48a0ebaef --- /dev/null +++ b/config/rootfiles/core/111/filelists/bind @@ -0,0 +1 @@ +../../../common/bind \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/coreutils b/config/rootfiles/core/111/filelists/coreutils new file mode 120000 index 000000000..7351ed2cf --- /dev/null +++ b/config/rootfiles/core/111/filelists/coreutils @@ -0,0 +1 @@ +../../../common/coreutils \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/dhcp b/config/rootfiles/core/111/filelists/dhcp new file mode 120000 index 000000000..32d8da443 --- /dev/null +++ b/config/rootfiles/core/111/filelists/dhcp @@ -0,0 +1 @@ +../../../common/dhcp \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/file b/config/rootfiles/core/111/filelists/file new file mode 120000 index 000000000..0c60e43aa --- /dev/null +++ b/config/rootfiles/core/111/filelists/file @@ -0,0 +1 @@ +../../../common/file \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/files b/config/rootfiles/core/111/filelists/files new file mode 100644 index 000000000..dbe65e2f0 --- /dev/null +++ b/config/rootfiles/core/111/filelists/files @@ -0,0 +1,22 @@ +etc/system-release +etc/issue +etc/rc.d/init.d/wlanclient +srv/web/ipfire/cgi-bin/index.cgi +srv/web/ipfire/cgi-bin/ipinfo.cgi +srv/web/ipfire/cgi-bin/iptables.cgi +srv/web/ipfire/cgi-bin/logs.cgi/firewalllogcountry.dat +srv/web/ipfire/cgi-bin/logs.cgi/firewalllogip.dat +srv/web/ipfire/cgi-bin/logs.cgi/firewalllogport.dat +srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromcountry.dat +srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromip.dat +srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromport.dat +srv/web/ipfire/cgi-bin/ovpnmain.cgi +srv/web/ipfire/cgi-bin/vpnmain.cgi +srv/web/ipfire/cgi-bin/wirelessclient.cgi +srv/web/ipfire/html/images/back.png +usr/local/bin/getipstat +usr/local/bin/ipsecctrl +var/ipfire/langs +var/ipfire/graphs.pl +var/ipfire/network-functions.pl +var/ipfire/qos/bin/makeqosscripts.pl diff --git a/config/rootfiles/core/111/filelists/gzip b/config/rootfiles/core/111/filelists/gzip new file mode 120000 index 000000000..aebcccd87 --- /dev/null +++ b/config/rootfiles/core/111/filelists/gzip @@ -0,0 +1 @@ +../../../common/gzip \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/i586/gcc b/config/rootfiles/core/111/filelists/i586/gcc new file mode 120000 index 000000000..ba328e3b6 --- /dev/null +++ b/config/rootfiles/core/111/filelists/i586/gcc @@ -0,0 +1 @@ +../../../../common/i586/gcc \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/i586/gmp b/config/rootfiles/core/111/filelists/i586/gmp new file mode 120000 index 000000000..52a09cd0b --- /dev/null +++ b/config/rootfiles/core/111/filelists/i586/gmp @@ -0,0 +1 @@ +../../../../common/i586/gmp \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/i586/strongswan-padlock b/config/rootfiles/core/111/filelists/i586/strongswan-padlock new file mode 120000 index 000000000..2412824fb --- /dev/null +++ b/config/rootfiles/core/111/filelists/i586/strongswan-padlock @@ -0,0 +1 @@ +../../../../common/i586/strongswan-padlock \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/libevent2 b/config/rootfiles/core/111/filelists/libevent2 new file mode 120000 index 000000000..42edc99c3 --- /dev/null +++ b/config/rootfiles/core/111/filelists/libevent2 @@ -0,0 +1 @@ +../../../common/libevent2 \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/libevent2-compat b/config/rootfiles/core/111/filelists/libevent2-compat new file mode 120000 index 000000000..4ea809b9b --- /dev/null +++ b/config/rootfiles/core/111/filelists/libevent2-compat @@ -0,0 +1 @@ +../../../common/libevent2-compat \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/logrotate b/config/rootfiles/core/111/filelists/logrotate new file mode 120000 index 000000000..bc192c05d --- /dev/null +++ b/config/rootfiles/core/111/filelists/logrotate @@ -0,0 +1 @@ +../../../common/logrotate \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/logwatch b/config/rootfiles/core/111/filelists/logwatch new file mode 120000 index 000000000..f14eabda9 --- /dev/null +++ b/config/rootfiles/core/111/filelists/logwatch @@ -0,0 +1 @@ +../../../common/logwatch \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/mpfr b/config/rootfiles/core/111/filelists/mpfr new file mode 120000 index 000000000..c8468bf42 --- /dev/null +++ b/config/rootfiles/core/111/filelists/mpfr @@ -0,0 +1 @@ +../../../common/mpfr \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/pcre b/config/rootfiles/core/111/filelists/pcre new file mode 120000 index 000000000..b390d9a36 --- /dev/null +++ b/config/rootfiles/core/111/filelists/pcre @@ -0,0 +1 @@ +../../../common/pcre \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/php b/config/rootfiles/core/111/filelists/php new file mode 120000 index 000000000..1ae48d7a7 --- /dev/null +++ b/config/rootfiles/core/111/filelists/php @@ -0,0 +1 @@ +../../../common/php \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/rrdtool b/config/rootfiles/core/111/filelists/rrdtool new file mode 120000 index 000000000..7a82e414b --- /dev/null +++ b/config/rootfiles/core/111/filelists/rrdtool @@ -0,0 +1 @@ +../../../common/rrdtool \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/strongswan b/config/rootfiles/core/111/filelists/strongswan new file mode 120000 index 000000000..90c727e26 --- /dev/null +++ b/config/rootfiles/core/111/filelists/strongswan @@ -0,0 +1 @@ +../../../common/strongswan \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/unbound b/config/rootfiles/core/111/filelists/unbound new file mode 120000 index 000000000..66adf0924 --- /dev/null +++ b/config/rootfiles/core/111/filelists/unbound @@ -0,0 +1 @@ +../../../common/unbound \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/vnstat b/config/rootfiles/core/111/filelists/vnstat new file mode 120000 index 000000000..2e2e6100b --- /dev/null +++ b/config/rootfiles/core/111/filelists/vnstat @@ -0,0 +1 @@ +../../../common/vnstat \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/x86_64/gcc b/config/rootfiles/core/111/filelists/x86_64/gcc new file mode 120000 index 000000000..d1616d377 --- /dev/null +++ b/config/rootfiles/core/111/filelists/x86_64/gcc @@ -0,0 +1 @@ +../../../../common/x86_64/gcc \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/x86_64/gmp b/config/rootfiles/core/111/filelists/x86_64/gmp new file mode 120000 index 000000000..7c59c60c6 --- /dev/null +++ b/config/rootfiles/core/111/filelists/x86_64/gmp @@ -0,0 +1 @@ +../../../../common/x86_64/gmp \ No newline at end of file diff --git a/config/rootfiles/core/111/meta b/config/rootfiles/core/111/meta new file mode 100644 index 000000000..d547fa86f --- /dev/null +++ b/config/rootfiles/core/111/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/core/111/update.sh b/config/rootfiles/core/111/update.sh new file mode 100644 index 000000000..1c3cc2795 --- /dev/null +++ b/config/rootfiles/core/111/update.sh @@ -0,0 +1,69 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 3 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2017 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=111 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Stop services +ipsec stop +/etc/init.d/unbound stop + +# Extract files +extract_files + +# update linker config +ldconfig + +# Update Language cache +/usr/local/bin/update-lang-cache + +# Start services +/etc/init.d/unbound start + +if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then + ipsec start +fi + +# This update need a reboot... +touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 From 3f9ecfdc27263ed0c419a3500112411f5c07b08c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 14:10:36 +0200 Subject: [PATCH 316/464] make.sh: Show last lines of log when build aborts Signed-off-by: Michael Tremer --- tools/make-functions | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/make-functions b/tools/make-functions index d5f0a7126..49e8fba62 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -310,6 +310,16 @@ exiterror() { losetup -d /dev/loop${i} 2>/dev/null fi; done + + if [ -n "${LOGFILE}" ]; then + echo # empty line + + local line + while read -r line; do + echo " ${line}" + done <<< "$(tail -n30 ${LOGFILE})" + fi + echo -e "\nERROR: $*" echo " Check $LOGFILE for errors if applicable" exit 1 From 70ba2380d3088a4384abd25893d2d93828b627b0 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:38:42 +0200 Subject: [PATCH 317/464] fake-environ: Fix typos Signed-off-by: Michael Tremer --- src/fake-environ/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fake-environ/Makefile b/src/fake-environ/Makefile index 3c3a3b42a..5af7718ff 100644 --- a/src/fake-environ/Makefile +++ b/src/fake-environ/Makefile @@ -1,10 +1,10 @@ ifeq "$(CFLAGS)" "" - $(error CLFAGS not defined.) + $(error CFLAGS not defined) endif ifeq "$(TOOLS_DIR)" "" - $(error TOOLS_DIR not defined.) + $(error TOOLS_DIR not defined) endif LIB = libpakfire_preload.so From fdfddd64620ea6fcb109f50633c304f14a354b4d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 8 Apr 2017 12:12:42 +0200 Subject: [PATCH 318/464] kernel headers: Install correct headers for all architectures Signed-off-by: Michael Tremer --- lfs/linux | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lfs/linux b/lfs/linux index d7b21e6d1..3c85a23ba 100644 --- a/lfs/linux +++ b/lfs/linux @@ -40,10 +40,10 @@ CXXFLAGS = PAK_VER = 73 DEPS = "" -KERNEL_ARCH = $(MACHINE) - ifeq "$(MACHINE)" "i586" KERNEL_ARCH = i386 +else + KERNEL_ARCH = $(MACHINE) endif VERSUFIX=ipfire$(KCFG) @@ -56,9 +56,19 @@ else HEADERS_PREFIX = /usr endif -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(MACHINE)" "armv5tel" HEADERS_ARCH=arm -else +endif + +ifeq "$(MACHINE)" "aarch64" + HEADERS_ARCH=arm64 +endif + +ifeq "$(MACHINE)" "x86_64" + HEADERS_ARCH=x86 +endif + +ifeq "$(MACHINE)" "i586" HEADERS_ARCH=x86 endif From e467a2f274cdff830b5d3646ed9c9ac5a117940d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 19:01:28 +0200 Subject: [PATCH 319/464] make.sh: Adjust toolchain PATH in lfsmake1 instead of globally Signed-off-by: Michael Tremer --- make.sh | 3 --- tools/make-functions | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/make.sh b/make.sh index a87f706ff..e8af68a2c 100755 --- a/make.sh +++ b/make.sh @@ -279,8 +279,6 @@ buildtoolchain() { LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE - local ORG_PATH=$PATH - export PATH="/tools/ccache/bin:/tools/bin:$PATH" lfsmake1 ccache PASS=1 lfsmake1 binutils PASS=1 lfsmake1 gcc PASS=1 @@ -316,7 +314,6 @@ buildtoolchain() { lfsmake1 xz lfsmake1 fake-environ lfsmake1 cleanup-toolchain PASS=2 - export PATH=$ORG_PATH } buildbase() { diff --git a/tools/make-functions b/tools/make-functions index 49e8fba62..00478173a 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -565,7 +565,9 @@ lfsmake1() { local PKG_TIME_START=`date +%s` - cd $BASEDIR/lfs && make -f $* BUILDTARGET=$BUILDTARGET \ + cd $BASEDIR/lfs && \ + PATH="/tools/ccache/bin:/tools/bin:$PATH" \ + make -f $* BUILDTARGET=$BUILDTARGET \ CROSSTARGET="${CROSSTARGET}" \ MACHINE=$MACHINE \ MACHINE_TYPE=$MACHINE_TYPE \ From b4b62a341450b085fd95b4f5f8ce4da09bec4327 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 19:02:21 +0200 Subject: [PATCH 320/464] make.sh: Set TOOLCHAIN=1 in toolchain stage This allows better lfs files and fewer ifdefs in toolchain stage. Signed-off-by: Michael Tremer --- tools/make-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index 00478173a..0180ded17 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -567,7 +567,7 @@ lfsmake1() { cd $BASEDIR/lfs && \ PATH="/tools/ccache/bin:/tools/bin:$PATH" \ - make -f $* BUILDTARGET=$BUILDTARGET \ + make -f $* TOOLCHAIN=1 BUILDTARGET=$BUILDTARGET \ CROSSTARGET="${CROSSTARGET}" \ MACHINE=$MACHINE \ MACHINE_TYPE=$MACHINE_TYPE \ From 8c31790a2f706ff05471e864ecde7853fec0cb3a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 19:16:25 +0200 Subject: [PATCH 321/464] ccache: Cleanup makefile Signed-off-by: Michael Tremer --- lfs/ccache | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lfs/ccache b/lfs/ccache index 682f4998a..c35c6705d 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -83,7 +83,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install -ifeq "$(PASS)" "1" +ifeq "$(TOOLCHAIN)" "1" + ifeq "$(PASS)" "1" mkdir -pv /tools/ccache/bin ln -svf ../../bin/ccache /tools/ccache/bin/gcc ln -svf ../../bin/ccache /tools/ccache/bin/g++ @@ -93,13 +94,14 @@ ifeq "$(PASS)" "1" ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-g++ ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-cc ln -svf ../../bin/ccache /tools/ccache/bin/$(CROSSTARGET)-c++ -endif + endif -ifeq "$(PASS)" "2" + ifeq "$(PASS)" "2" ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-gcc ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-g++ ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-cc ln -svf ../../bin/ccache /tools/ccache/bin/$(BUILDTARGET)-c++ + endif endif @rm -rf $(DIR_APP) From 42661bf875f609f13e0757a9838a70d07aa57269 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:13:04 +0200 Subject: [PATCH 322/464] cpio: Update to 2.12 FTBFS on aarch64 Signed-off-by: Michael Tremer --- lfs/cpio | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/cpio b/lfs/cpio index 48a4393e6..4d9a752d1 100644 --- a/lfs/cpio +++ b/lfs/cpio @@ -24,7 +24,7 @@ include Config -VER = 2.11 +VER = 2.12 THISAPP = cpio-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 1112bb6c45863468b5496ba128792f6c +$(DL_FILE)_MD5 = fc207561a86b63862eea4b8300313e86 install : $(TARGET) From 488c7e7e31d52387609a3ee8b29015158d7ecaf3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 11:55:20 +0100 Subject: [PATCH 323/464] core111: Ship updated cpio Signed-off-by: Michael Tremer --- config/rootfiles/core/111/filelists/cpio | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/111/filelists/cpio diff --git a/config/rootfiles/core/111/filelists/cpio b/config/rootfiles/core/111/filelists/cpio new file mode 120000 index 000000000..fbab21a7a --- /dev/null +++ b/config/rootfiles/core/111/filelists/cpio @@ -0,0 +1 @@ +../../../common/cpio \ No newline at end of file From 8e48347732af5dedf2cafa10becc0d38af261885 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 12 Mar 2017 17:53:22 +0100 Subject: [PATCH 324/464] gcc: Enable --with-float only on armv5tel Signed-off-by: Michael Tremer --- lfs/gcc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/gcc b/lfs/gcc index 86524165b..ba57caff3 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -138,7 +138,7 @@ endif CFLAGS += -fno-stack-protector endif -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(MACHINE)" "armv5tel" EXTRA_CONFIG += \ --with-float=soft \ --disable-sjlj-exceptions From 6323c4d0e2a0ddf5d78830c325ffc28d39a8013e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 12 Mar 2017 17:54:41 +0100 Subject: [PATCH 325/464] gcc: Package doesn't support build in parallel Signed-off-by: Michael Tremer --- lfs/gcc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/gcc b/lfs/gcc index ba57caff3..d30b7f927 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -275,7 +275,7 @@ ifeq "$(PASS)" "L" $(EXTRA_ENV) \ $(DIR_APP)/libstdc++-v3/configure \ $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install else # The actual build. @@ -283,7 +283,7 @@ else $(EXTRA_ENV) \ $(DIR_APP)/configure \ $(EXTRA_CONFIG) - cd $(DIR_SRC)/gcc-build && make $(MAKETUNING) $(EXTRA_MAKE) + cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install endif From 9c59597ba49c3bcec23bc5397eb203cddc38cc35 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:39:04 +0200 Subject: [PATCH 326/464] pkg-config: Fix compilation with newer GCCs Signed-off-by: Michael Tremer --- lfs/pkg-config | 3 ++ .../pkg-config-0.29-glib-compile-fix.patch | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/patches/pkg-config-0.29-glib-compile-fix.patch diff --git a/lfs/pkg-config b/lfs/pkg-config index 3c3b8b27e..d58fbe2ab 100644 --- a/lfs/pkg-config +++ b/lfs/pkg-config @@ -42,6 +42,8 @@ else PREFIX = /tools endif +CFLAGS += Wno-error=format-nonliteral + ############################################################################### # Top-level Rules ############################################################################### @@ -80,6 +82,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP)/glib && patch -Np1 < $(DIR_SRC)/src/patches/pkg-config-0.29-glib-compile-fix.patch ifeq "$(ROOT)" "" else mkdir -pv /tools/lib/pkgconfig diff --git a/src/patches/pkg-config-0.29-glib-compile-fix.patch b/src/patches/pkg-config-0.29-glib-compile-fix.patch new file mode 100644 index 000000000..a092882ab --- /dev/null +++ b/src/patches/pkg-config-0.29-glib-compile-fix.patch @@ -0,0 +1,29 @@ +From 0817af40e8c74c721c30f6ef482b1f53d12044c7 Mon Sep 17 00:00:00 2001 +From: coypu +Date: Mon, 8 Feb 2016 00:06:06 +0200 +Subject: gdate: Suppress string format literal warning + +Newer versions of GCC emit an error here, but we know it's safe. +https://bugzilla.gnome.org/761550 +--- + glib/gdate.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/glib/gdate.c b/glib/gdate.c +index 4aece02..cdc735c 100644 +--- a/glib/gdate.c ++++ b/glib/gdate.c +@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s, + * recognize whether strftime actually failed or just returned "". + */ + tmpbuf[0] = '\1'; ++ #pragma GCC diagnostic push ++ #pragma GCC diagnostic ignored "-Wformat-nonliteral" + tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm); ++ #pragma GCC diagnostic pop + + if (tmplen == 0 && tmpbuf[0] != '\0') + { +-- +cgit v0.12 + From cfd39a32dff5dfb1e81e8f0dadc35945ea297fee Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:44:31 +0200 Subject: [PATCH 327/464] gcc: Update to version 6.3.0 Signed-off-by: Michael Tremer --- lfs/gcc | 27 +- src/patches/gcc-4.4.3-startfiles_fix-1.patch | 33 - src/patches/gcc-4.4.7-texinfo-5.patch | 89 -- src/patches/gcc/gcc-fix-inlining-issues.patch | 1064 ----------------- src/patches/gcc/gcc49-i386-libgomp.patch | 11 - src/patches/gcc/gcc49-libtool-no-rpath.patch | 27 - src/patches/gcc/gcc49-no-add-needed.patch | 50 - src/patches/gcc/gcc49-pr38757.patch | 106 -- src/patches/gcc/gcc49-pr64336.patch | 17 - 9 files changed, 10 insertions(+), 1414 deletions(-) delete mode 100644 src/patches/gcc-4.4.3-startfiles_fix-1.patch delete mode 100644 src/patches/gcc-4.4.7-texinfo-5.patch delete mode 100644 src/patches/gcc/gcc-fix-inlining-issues.patch delete mode 100644 src/patches/gcc/gcc49-i386-libgomp.patch delete mode 100644 src/patches/gcc/gcc49-libtool-no-rpath.patch delete mode 100644 src/patches/gcc/gcc49-no-add-needed.patch delete mode 100644 src/patches/gcc/gcc49-pr38757.patch delete mode 100644 src/patches/gcc/gcc49-pr64336.patch diff --git a/lfs/gcc b/lfs/gcc index d30b7f927..927621e85 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -24,14 +24,14 @@ include Config -VER = 4.9.4 +VER = 6.3.0 GMP_VER = 5.0.5 MPFR_VER = 2.4.2 MPC_VER = 1.0.3 THISAPP = gcc-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -68,6 +68,8 @@ ifeq "$(PASS)" "1" --target=$(CROSSTARGET) \ --prefix=/tools \ --with-sysroot=$(ROOT) \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ --disable-nls \ --disable-shared \ --disable-decimal-float \ @@ -177,7 +179,7 @@ gmp-$(GMP_VER).tar.bz2 = $(DL_FROM)/gmp-$(GMP_VER).tar.bz2 mpfr-$(MPFR_VER).tar.bz2 = $(DL_FROM)/mpfr-$(MPFR_VER).tar.bz2 mpc-$(MPC_VER).tar.gz = $(DL_FROM)/mpc-$(MPC_VER).tar.gz -$(DL_FILE)_MD5 = 87c24a4090c1577ba817ec6882602491 +$(DL_FILE)_MD5 = 6e5ea04789678f1250c1b30c4d9ec417 gmp-$(GMP_VER).tar.bz2_MD5 = 041487d25e9c230b0c42b106361055fe mpfr-$(MPFR_VER).tar.bz2_MD5 = 89e59fe665e2b3ad44a6789f40b059a0 mpc-$(MPC_VER).tar.gz_MD5 = d6a1d5f8ddea3abd2cc3e98f58352d26 @@ -212,14 +214,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/gcc-build - # Apply patches. - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-i386-libgomp.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-libtool-no-rpath.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-no-add-needed.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-pr38757.patch - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/gcc/gcc49-pr64336.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gcc/gcc-fix-inlining-issues.patch - ifneq "$(ROOT)" "" # Build gmp and mpfr internally in toolchain. cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2 @@ -230,12 +224,8 @@ ifneq "$(ROOT)" "" cd $(DIR_APP) && mv -v mpc-$(MPC_VER) mpc ifeq "$(PASS)" "1" - # GCC does not detect stack protection correctly, which causes problems - # for the build of libresolv_pic.a. - cd $(DIR_APP) && sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure - for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ - -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ + -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \ echo "Processing $${file}..."; \ sed -i $${file} \ -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ @@ -251,7 +241,7 @@ ifeq "$(PASS)" "2" cd $(DIR_APP) && cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name)`/include-fixed/limits.h for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ - -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h); do \ + -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \ echo "Processing $${file}..."; \ sed -i $${file} \ -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ @@ -277,6 +267,9 @@ ifeq "$(PASS)" "L" $(EXTRA_CONFIG) cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install + + # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936 + sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib else # The actual build. cd $(DIR_SRC)/gcc-build && \ diff --git a/src/patches/gcc-4.4.3-startfiles_fix-1.patch b/src/patches/gcc-4.4.3-startfiles_fix-1.patch deleted file mode 100644 index a2eac9e46..000000000 --- a/src/patches/gcc-4.4.3-startfiles_fix-1.patch +++ /dev/null @@ -1,33 +0,0 @@ -Submitted By: Jeremy Huntwork (jhuntwork AT linuxfromscratch DOT org) -Date: 2008-12-05 -Initial Package Version: 4.3.2 -Upstream Status: See below. -Origin: DIY Linux, See below. -Description: Original patch follows: - -# DIY Linux Patch -Date: 2008-09-09 -Author: Refer Origin. -Origin: Partial revert of http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00416.html -Maker: Greg Schafer -Upstream Status: Not applicable. Tweak only for Temptools phase GCC-Pass2. -Description: Partially revert GCC driver to pre-GCC-4.3 state to allow startfiles to be - found in $prefix when GCC is configured for a non-standard prefix eg: /temptools. Full - background info in thread starting here: http://gcc.gnu.org/ml/gcc/2008-03/msg00095.html - and GCC bugzilla here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532 - -diff -Naur gcc-4.3.0-RC-20080222.orig/gcc/gcc.c gcc-4.3.0-RC-20080222/gcc/gcc.c ---- gcc-4.3.0-RC-20080222.orig/gcc/gcc.c 2008-01-24 18:57:12.000000000 +0000 -+++ gcc-4.3.0-RC-20080222/gcc/gcc.c 2008-03-02 06:07:36.000000000 +0000 -@@ -6370,6 +6370,11 @@ - machine_suffix, - standard_startfile_prefix, NULL), - NULL, PREFIX_PRIORITY_LAST, 0, 1); -+ add_prefix (&startfile_prefixes, -+ concat (standard_exec_prefix, -+ machine_suffix, -+ standard_startfile_prefix, NULL), -+ NULL, PREFIX_PRIORITY_LAST, 0, 1); - } - - /* Sysrooted prefixes are relocated because target_system_root is diff --git a/src/patches/gcc-4.4.7-texinfo-5.patch b/src/patches/gcc-4.4.7-texinfo-5.patch deleted file mode 100644 index 7b2e94594..000000000 --- a/src/patches/gcc-4.4.7-texinfo-5.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff -Naur gcc-4.4.7.org/gcc/doc/cppopts.texi gcc-4.4.7/gcc/doc/cppopts.texi ---- gcc-4.4.7.org/gcc/doc/cppopts.texi 2008-06-15 11:42:13.000000000 +0200 -+++ gcc-4.4.7/gcc/doc/cppopts.texi 2013-09-08 16:50:14.353507748 +0200 -@@ -758,7 +758,7 @@ - Enable special code to work around file systems which only permit very - short file names, such as MS-DOS@. - --@itemx --help -+@item --help - @itemx --target-help - @opindex help - @opindex target-help -diff -Naur gcc-4.4.7.org/gcc/doc/c-tree.texi gcc-4.4.7/gcc/doc/c-tree.texi ---- gcc-4.4.7.org/gcc/doc/c-tree.texi 2009-02-20 16:20:38.000000000 +0100 -+++ gcc-4.4.7/gcc/doc/c-tree.texi 2013-09-08 17:53:21.055167463 +0200 -@@ -2338,13 +2338,13 @@ - not matter. The type of the operands and that of the result are - always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}. - --@itemx POINTER_PLUS_EXPR -+@item POINTER_PLUS_EXPR - This node represents pointer arithmetic. The first operand is always - a pointer/reference type. The second operand is always an unsigned - integer type compatible with sizetype. This is the only binary - arithmetic operand that can operate on pointer types. - --@itemx PLUS_EXPR -+@item PLUS_EXPR - @itemx MINUS_EXPR - @itemx MULT_EXPR - These nodes represent various binary arithmetic operations. -diff -Naur gcc-4.4.7.org/gcc/doc/invoke.texi gcc-4.4.7/gcc/doc/invoke.texi ---- gcc-4.4.7.org/gcc/doc/invoke.texi 2011-03-23 23:02:12.000000000 +0100 -+++ gcc-4.4.7/gcc/doc/invoke.texi 2013-09-08 17:10:49.503066254 +0200 -@@ -4645,11 +4645,11 @@ - @option{-fdump-rtl-ce3} enable dumping after the three - if conversion passes. - --@itemx -fdump-rtl-cprop_hardreg -+@item -fdump-rtl-cprop_hardreg - @opindex fdump-rtl-cprop_hardreg - Dump after hard register copy propagation. - --@itemx -fdump-rtl-csa -+@item -fdump-rtl-csa - @opindex fdump-rtl-csa - Dump after combining stack adjustments. - -@@ -4660,11 +4660,11 @@ - @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after - the two common sub-expression elimination passes. - --@itemx -fdump-rtl-dce -+@item -fdump-rtl-dce - @opindex fdump-rtl-dce - Dump after the standalone dead code elimination passes. - --@itemx -fdump-rtl-dbr -+@item -fdump-rtl-dbr - @opindex fdump-rtl-dbr - Dump after delayed branch scheduling. - -@@ -4709,7 +4709,7 @@ - @opindex fdump-rtl-initvals - Dump after the computation of the initial value sets. - --@itemx -fdump-rtl-into_cfglayout -+@item -fdump-rtl-into_cfglayout - @opindex fdump-rtl-into_cfglayout - Dump after converting to cfglayout mode. - -@@ -4739,7 +4739,7 @@ - @opindex fdump-rtl-rnreg - Dump after register renumbering. - --@itemx -fdump-rtl-outof_cfglayout -+@item -fdump-rtl-outof_cfglayout - @opindex fdump-rtl-outof_cfglayout - Dump after converting from cfglayout mode. - -@@ -4751,7 +4751,7 @@ - @opindex fdump-rtl-postreload - Dump after post-reload optimizations. - --@itemx -fdump-rtl-pro_and_epilogue -+@item -fdump-rtl-pro_and_epilogue - @opindex fdump-rtl-pro_and_epilogue - Dump after generating the function pro and epilogues. - diff --git a/src/patches/gcc/gcc-fix-inlining-issues.patch b/src/patches/gcc/gcc-fix-inlining-issues.patch deleted file mode 100644 index 3c638e21c..000000000 --- a/src/patches/gcc/gcc-fix-inlining-issues.patch +++ /dev/null @@ -1,1064 +0,0 @@ -From: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 - ---- trunk/libitm/local_atomic 2015/08/20 17:43:55 227039 -+++ trunk/libitm/local_atomic 2015/08/20 17:55:24 227040 -@@ -41,8 +41,7 @@ - #ifndef _GLIBCXX_ATOMIC - #define _GLIBCXX_ATOMIC 1 - --#undef __always_inline --#define __always_inline __attribute__((always_inline)) -+#define __libitm_always_inline __attribute__((always_inline)) - - // #pragma GCC system_header - -@@ -74,7 +73,7 @@ - memory_order_seq_cst - } memory_order; - -- inline __always_inline memory_order -+ inline __libitm_always_inline memory_order - __calculate_memory_order(memory_order __m) noexcept - { - const bool __cond1 = __m == memory_order_release; -@@ -84,13 +83,13 @@ - return __mo2; - } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_thread_fence(memory_order __m) noexcept - { - __atomic_thread_fence (__m); - } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_signal_fence(memory_order __m) noexcept - { - __atomic_thread_fence (__m); -@@ -280,19 +279,19 @@ - // Conversion to ATOMIC_FLAG_INIT. - atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { } - -- __always_inline bool -+ __libitm_always_inline bool - test_and_set(memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_test_and_set (&_M_i, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_test_and_set (&_M_i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - clear(memory_order __m = memory_order_seq_cst) noexcept - { - // __glibcxx_assert(__m != memory_order_consume); -@@ -302,7 +301,7 @@ - __atomic_clear (&_M_i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - clear(memory_order __m = memory_order_seq_cst) volatile noexcept - { - // __glibcxx_assert(__m != memory_order_consume); -@@ -455,7 +454,7 @@ - is_lock_free() const volatile noexcept - { return __atomic_is_lock_free (sizeof (_M_i), &_M_i); } - -- __always_inline void -+ __libitm_always_inline void - store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept - { - // __glibcxx_assert(__m != memory_order_acquire); -@@ -465,7 +464,7 @@ - __atomic_store_n(&_M_i, __i, __m); - } - -- __always_inline void -+ __libitm_always_inline void - store(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -476,7 +475,7 @@ - __atomic_store_n(&_M_i, __i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -485,7 +484,7 @@ - return __atomic_load_n(&_M_i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -494,21 +493,21 @@ - return __atomic_load_n(&_M_i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_exchange_n(&_M_i, __i, __m); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - exchange(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_exchange_n(&_M_i, __i, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { -@@ -519,7 +518,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -531,7 +530,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -539,7 +538,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -547,7 +546,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, memory_order __m2) noexcept - { -@@ -558,7 +557,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -570,7 +569,7 @@ - return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -578,7 +577,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__int_type& __i1, __int_type __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -586,52 +585,52 @@ - __calculate_memory_order(__m)); - } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_add(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_add(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_add(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_sub(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_sub(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_sub(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_and(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_and(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_and(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_or(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_or(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_or(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_xor(&_M_i, __i, __m); } - -- __always_inline __int_type -+ __libitm_always_inline __int_type - fetch_xor(__int_type __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_xor(&_M_i, __i, __m); } -@@ -733,7 +732,7 @@ - is_lock_free() const volatile noexcept - { return __atomic_is_lock_free (sizeof (_M_p), &_M_p); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -744,7 +743,7 @@ - __atomic_store_n(&_M_p, __p, __m); - } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -755,7 +754,7 @@ - __atomic_store_n(&_M_p, __p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -764,7 +763,7 @@ - return __atomic_load_n(&_M_p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { - // __glibcxx_assert(__m != memory_order_release); -@@ -773,21 +772,21 @@ - return __atomic_load_n(&_M_p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { - return __atomic_exchange_n(&_M_p, __p, __m); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { - return __atomic_exchange_n(&_M_p, __p, __m); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) noexcept -@@ -799,7 +798,7 @@ - return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept -@@ -811,22 +810,22 @@ - return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_add(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_add(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return __atomic_fetch_sub(&_M_p, __d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return __atomic_fetch_sub(&_M_p, __d, __m); } -@@ -870,67 +869,67 @@ - bool - is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } - -- __always_inline void -+ __libitm_always_inline void - store(bool __i, memory_order __m = memory_order_seq_cst) noexcept - { _M_base.store(__i, __m); } - -- __always_inline void -+ __libitm_always_inline void - store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept - { _M_base.store(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - load(memory_order __m = memory_order_seq_cst) const noexcept - { return _M_base.load(__m); } - -- __always_inline bool -+ __libitm_always_inline bool - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { return _M_base.load(__m); } - -- __always_inline bool -+ __libitm_always_inline bool - exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.exchange(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - exchange(bool __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.exchange(__i, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.compare_exchange_weak(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(bool& __i1, bool __i2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_base.compare_exchange_strong(__i1, __i2, __m); } -@@ -980,11 +979,11 @@ - store(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept - { __atomic_store(&_M_i, &__i, _m); } - -- __always_inline void -+ __libitm_always_inline void - store(_Tp __i, memory_order _m = memory_order_seq_cst) volatile noexcept - { __atomic_store(&_M_i, &__i, _m); } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - load(memory_order _m = memory_order_seq_cst) const noexcept - { - _Tp tmp; -@@ -992,7 +991,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - load(memory_order _m = memory_order_seq_cst) const volatile noexcept - { - _Tp tmp; -@@ -1000,7 +999,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - exchange(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept - { - _Tp tmp; -@@ -1008,7 +1007,7 @@ - return tmp; - } - -- __always_inline _Tp -+ __libitm_always_inline _Tp - exchange(_Tp __i, - memory_order _m = memory_order_seq_cst) volatile noexcept - { -@@ -1017,50 +1016,50 @@ - return tmp; - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) volatile noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) noexcept - { return compare_exchange_weak(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return compare_exchange_weak(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, - memory_order __f) volatile noexcept - { - return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) noexcept - { return compare_exchange_strong(__e, __i, __m, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(_Tp& __e, _Tp __i, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return compare_exchange_strong(__e, __i, __m, __m); } -@@ -1153,46 +1152,46 @@ - is_lock_free() const volatile noexcept - { return _M_b.is_lock_free(); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.store(__p, __m); } - -- __always_inline void -+ __libitm_always_inline void - store(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.store(__p, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const noexcept - { return _M_b.load(__m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - load(memory_order __m = memory_order_seq_cst) const volatile noexcept - { return _M_b.load(__m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.exchange(__p, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - exchange(__pointer_type __p, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.exchange(__p, __m); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, memory_order __m2) noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -1200,7 +1199,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -1208,18 +1207,18 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, memory_order __m2) noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m1, - memory_order __m2) volatile noexcept - { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) noexcept - { -@@ -1227,7 +1226,7 @@ - __calculate_memory_order(__m)); - } - -- __always_inline bool -+ __libitm_always_inline bool - compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, - memory_order __m = memory_order_seq_cst) volatile noexcept - { -@@ -1235,22 +1234,22 @@ - __calculate_memory_order(__m)); - } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.fetch_add(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_add(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.fetch_add(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) noexcept - { return _M_b.fetch_sub(__d, __m); } - -- __always_inline __pointer_type -+ __libitm_always_inline __pointer_type - fetch_sub(ptrdiff_t __d, - memory_order __m = memory_order_seq_cst) volatile noexcept - { return _M_b.fetch_sub(__d, __m); } -@@ -1544,98 +1543,98 @@ - - - // Function definitions, atomic_flag operations. -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set_explicit(atomic_flag* __a, - memory_order __m) noexcept - { return __a->test_and_set(__m); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, - memory_order __m) noexcept - { return __a->test_and_set(__m); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept - { __a->clear(__m); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear_explicit(volatile atomic_flag* __a, - memory_order __m) noexcept - { __a->clear(__m); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set(atomic_flag* __a) noexcept - { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline bool -+ inline __libitm_always_inline bool - atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept - { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear(atomic_flag* __a) noexcept - { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } - -- inline __always_inline void -+ inline __libitm_always_inline void - atomic_flag_clear(volatile atomic_flag* __a) noexcept - { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } - - - // Function templates generally applicable to atomic types. - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_is_lock_free(const atomic<_ITp>* __a) noexcept - { return __a->is_lock_free(); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept - { return __a->is_lock_free(); } - - template -- __always_inline void -+ __libitm_always_inline void - atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept; - - template -- __always_inline void -+ __libitm_always_inline void - atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept; - - template -- __always_inline void -+ __libitm_always_inline void - atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { __a->store(__i, __m); } - - template -- __always_inline void -+ __libitm_always_inline void - atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { __a->store(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept - { return __a->load(__m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load_explicit(const volatile atomic<_ITp>* __a, - memory_order __m) noexcept - { return __a->load(__m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->exchange(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->exchange(__i, __m); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1643,7 +1642,7 @@ - { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1651,7 +1650,7 @@ - { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1659,7 +1658,7 @@ - { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2, - memory_order __m1, -@@ -1668,37 +1667,37 @@ - - - template -- __always_inline void -+ __libitm_always_inline void - atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept - { atomic_store_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline void -+ __libitm_always_inline void - atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept - { atomic_store_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load(const atomic<_ITp>* __a) noexcept - { return atomic_load_explicit(__a, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_load(const volatile atomic<_ITp>* __a) noexcept - { return atomic_load_explicit(__a, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept - { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept - { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1708,7 +1707,7 @@ - } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1718,7 +1717,7 @@ - } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong(atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1728,7 +1727,7 @@ - } - - template -- __always_inline bool -+ __libitm_always_inline bool - atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, - _ITp* __i1, _ITp __i2) noexcept - { -@@ -1742,158 +1741,158 @@ - // intergral types as specified in the standard, excluding address - // types. - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_add(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_add(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_sub(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_sub(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_and(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_and(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_or(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_or(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_xor(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, - memory_order __m) noexcept - { return __a->fetch_xor(__i, __m); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } - - template -- __always_inline _ITp -+ __libitm_always_inline _ITp - atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept - { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } - - - // Partial specializations for pointers. - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_add(__d, __m); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_add(__d, __m); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_add(__d); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_add(__d); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a, - ptrdiff_t __d, memory_order __m) noexcept - { return __a->fetch_sub(__d, __m); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d, - memory_order __m) noexcept - { return __a->fetch_sub(__d, __m); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_sub(__d); } - - template -- __always_inline _ITp* -+ __libitm_always_inline _ITp* - atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept - { return __a->fetch_sub(__d); } - // @} group atomics diff --git a/src/patches/gcc/gcc49-i386-libgomp.patch b/src/patches/gcc/gcc49-i386-libgomp.patch deleted file mode 100644 index 520561e5a..000000000 --- a/src/patches/gcc/gcc49-i386-libgomp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 -+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 -@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then - ;; - *) - if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" - fi - esac - ;; diff --git a/src/patches/gcc/gcc49-libtool-no-rpath.patch b/src/patches/gcc/gcc49-libtool-no-rpath.patch deleted file mode 100644 index 466c661e0..000000000 --- a/src/patches/gcc/gcc49-libtool-no-rpath.patch +++ /dev/null @@ -1,27 +0,0 @@ -libtool sucks. ---- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 -+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 -@@ -5394,6 +5394,7 @@ EOF - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6071,6 +6072,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6120,6 +6122,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then diff --git a/src/patches/gcc/gcc49-no-add-needed.patch b/src/patches/gcc/gcc49-no-add-needed.patch deleted file mode 100644 index b6ca777eb..000000000 --- a/src/patches/gcc/gcc49-no-add-needed.patch +++ /dev/null @@ -1,50 +0,0 @@ -2010-02-08 Roland McGrath - - * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the - linker. - * config/gnu-user.h (LINK_EH_SPEC): Likewise. - * config/alpha/elf.h (LINK_EH_SPEC): Likewise. - * config/ia64/linux.h (LINK_EH_SPEC): Likewise. - ---- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100 -+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100 -@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu - I imagine that other systems will catch up. In the meantime, it - doesn't harm to make sure that the data exists to be used later. */ - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif ---- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100 -+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100 -@@ -77,7 +77,7 @@ do { \ - Signalize that because we have fde-glibc, we don't need all C shared libs - linked against -lgcc_s. */ - #undef LINK_EH_SPEC --#define LINK_EH_SPEC "" -+#define LINK_EH_SPEC "--no-add-needed " - - /* Put all *tf routines in libgcc. */ - #undef LIBGCC2_HAS_TF_MODE ---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100 -+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100 -@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI - #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC - - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #undef LINK_GCC_C_SEQUENCE_SPEC ---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100 -+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100 -@@ -820,7 +820,7 @@ extern int fixuplabelno; - -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) --# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/src/patches/gcc/gcc49-pr38757.patch b/src/patches/gcc/gcc49-pr38757.patch deleted file mode 100644 index 42065844b..000000000 --- a/src/patches/gcc/gcc49-pr38757.patch +++ /dev/null @@ -1,106 +0,0 @@ -2009-03-18 Jakub Jelinek - - PR debug/38757 - * langhooks.h (struct lang_hooks): Add source_language langhook. - * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL. - (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE. - * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype - also for DW_LANG_{C,C99,ObjC}. - (gen_compile_unit_die): Use lang_hooks.source_language () to - determine if DW_LANG_C99 or DW_LANG_C89 should be returned. -c/ - * c-lang.c (c_source_language): New function. - (LANG_HOOKS_SOURCE_LANGUAGE): Define. - ---- gcc/langhooks.h.jj 2011-01-03 12:53:05.125745450 +0100 -+++ gcc/langhooks.h 2011-01-04 17:59:43.166744926 +0100 -@@ -467,6 +467,10 @@ struct lang_hooks - gimplification. */ - bool deep_unsharing; - -+ /* Return year of the source language standard version if the FE supports -+ multiple versions of the standard. */ -+ int (*source_language) (void); -+ - /* Whenever you add entries here, make sure you adjust langhooks-def.h - and langhooks.c accordingly. */ - }; ---- gcc/langhooks-def.h.jj 2011-01-03 12:53:05.000000000 +0100 -+++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100 -@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_ - #define LANG_HOOKS_BLOCK_MAY_FALLTHRU hook_bool_const_tree_true - #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false - #define LANG_HOOKS_DEEP_UNSHARING false -+#define LANG_HOOKS_SOURCE_LANGUAGE NULL - - /* Attribute hooks. */ - #define LANG_HOOKS_ATTRIBUTE_TABLE NULL -@@ -303,7 +304,8 @@ extern void lhd_end_section (void); - LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \ - LANG_HOOKS_BLOCK_MAY_FALLTHRU, \ - LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \ -- LANG_HOOKS_DEEP_UNSHARING \ -+ LANG_HOOKS_DEEP_UNSHARING, \ -+ LANG_HOOKS_SOURCE_LANGUAGE \ - } - - #endif /* GCC_LANG_HOOKS_DEF_H */ ---- gcc/c/c-lang.c.jj 2011-01-03 12:53:05.376056936 +0100 -+++ gcc/c/c-lang.c 2011-01-04 17:59:43.167743798 +0100 -@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3. - - enum c_language_kind c_language = clk_c; - -+static int -+c_source_language (void) -+{ -+ return flag_isoc99 ? 1999 : 1989; -+} -+ - /* Lang hooks common to C and ObjC are declared in c-objc-common.h; - consequently, there should be very few hooks below. */ - -@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c; - #define LANG_HOOKS_INIT c_objc_common_init - #undef LANG_HOOKS_INIT_TS - #define LANG_HOOKS_INIT_TS c_common_init_ts -+#undef LANG_HOOKS_SOURCE_LANGUAGE -+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language - - /* Each front end provides its own lang hook initializer. */ - struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; ---- gcc/dwarf2out.c.jj 2011-01-03 12:53:05.102056475 +0100 -+++ gcc/dwarf2out.c 2011-01-04 18:03:14.534151763 +0100 -@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die, - static inline void - add_prototyped_attribute (dw_die_ref die, tree func_type) - { -- if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89 -- && prototype_p (func_type)) -- add_AT_flag (die, DW_AT_prototyped, 1); -+ switch (get_AT_unsigned (comp_unit_die (), DW_AT_language)) -+ { -+ case DW_LANG_C: -+ case DW_LANG_C89: -+ case DW_LANG_C99: -+ case DW_LANG_ObjC: -+ if (prototype_p (func_type)) -+ add_AT_flag (die, DW_AT_prototyped, 1); -+ break; -+ default: -+ break; -+ } - } - - /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found -@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena - if (strcmp (language_string, "GNU Go") == 0) - language = DW_LANG_Go; - } -+ else if (strcmp (language_string, "GNU C") == 0 -+ && lang_hooks.source_language -+ && lang_hooks.source_language () >= 1999) -+ language = DW_LANG_C99; - } - /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ - else if (strcmp (language_string, "GNU Fortran") == 0) diff --git a/src/patches/gcc/gcc49-pr64336.patch b/src/patches/gcc/gcc49-pr64336.patch deleted file mode 100644 index 86fddd5c0..000000000 --- a/src/patches/gcc/gcc49-pr64336.patch +++ /dev/null @@ -1,17 +0,0 @@ -2014-12-17 Jakub Jelinek - - PR sanitizer/64336 - * tsan.c (instrument_expr): Ignore TREE_READONLY bit - on MEM_REFs. - ---- gcc/tsan.c.jj 2014-12-17 10:53:30.000000000 +0100 -+++ gcc/tsan.c 2014-12-17 11:55:12.793058159 +0100 -@@ -138,7 +138,7 @@ instrument_expr (gimple_stmt_iterator gs - return false; - } - -- if (TREE_READONLY (base) -+ if ((TREE_READONLY (base) && TREE_CODE (base) != MEM_REF) - || (TREE_CODE (base) == VAR_DECL - && DECL_HARD_REGISTER (base))) - return false; From 7cefbe1c0dd9eb7abb3cf6aa4762ae6f37f8274a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:45:41 +0200 Subject: [PATCH 328/464] binutils: Update to version 2.28 Signed-off-by: Michael Tremer --- lfs/binutils | 20 +- .../binutils-2.24-pt-pax-flags-20131231.patch | 1030 ----------------- 2 files changed, 9 insertions(+), 1041 deletions(-) delete mode 100644 src/patches/binutils-2.24-pt-pax-flags-20131231.patch diff --git a/lfs/binutils b/lfs/binutils index 5afaeec2f..ff5fc6f85 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -24,10 +24,10 @@ include Config -VER = 2.24 +VER = 2.28 THISAPP = binutils-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -75,7 +75,7 @@ else endif endif -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(MACHINE)" "armv5tel" EXTRA_CONFIG += \ --with-abi=aapcs-linux \ --with-float=soft @@ -92,7 +92,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = e0f71a7b2ddab0f8612336ac81d9636b +$(DL_FILE)_MD5 = d5d270fd0b698ed59ca5ade8e1b5059c install : $(TARGET) @@ -121,23 +121,21 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/binutils-2.24-pt-pax-flags-20131231.patch - + @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/binutils-build # Prevent installing libiberty to lib64. cd $(DIR_APP) && sed -i 's%\(^MULTIOSDIR = \).*%\1 ../lib%' libiberty/Makefile.in cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include else ifeq "$(PASS)" "2" - cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= + cd $(DIR_SRC)/binutils-build && make -C ld clean + cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin endif endif diff --git a/src/patches/binutils-2.24-pt-pax-flags-20131231.patch b/src/patches/binutils-2.24-pt-pax-flags-20131231.patch deleted file mode 100644 index cfb203511..000000000 --- a/src/patches/binutils-2.24-pt-pax-flags-20131231.patch +++ /dev/null @@ -1,1030 +0,0 @@ ---- binutils-2.24/bfd/elf-bfd.h -+++ binutils-2.24/bfd/elf-bfd.h -@@ -1577,6 +1577,9 @@ struct elf_obj_tdata - /* Segment flags for the PT_GNU_STACK segment. */ - unsigned int stack_flags; - -+ /* Segment flags for the PT_PAX_FLAGS segment. */ -+ unsigned int pax_flags; -+ - /* This is set to TRUE if the object was created by the backend - linker. */ - bfd_boolean linker; -@@ -1707,6 +1707,7 @@ - #define elf_eh_frame_hdr(bfd) (elf_tdata(bfd) -> o->eh_frame_hdr) - #define elf_linker(bfd) (elf_tdata(bfd) -> o->linker) - #define elf_stack_flags(bfd) (elf_tdata(bfd) -> o->stack_flags) -+#define elf_pax_flags(bfd) (elf_tdata(bfd) -> o->pax_flags) - #define elf_shstrtab(bfd) (elf_tdata(bfd) -> o->strtab_ptr) - #define elf_onesymtab(bfd) (elf_tdata(bfd) -> symtab_section) - #define elf_symtab_shndx(bfd) (elf_tdata(bfd) -> symtab_shndx_section) ---- binutils-2.24/bfd/elf.c -+++ binutils-2.24/bfd/elf.c -@@ -1158,6 +1158,7 @@ get_segment_type (unsigned int p_type) - case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break; - case PT_GNU_STACK: pt = "STACK"; break; - case PT_GNU_RELRO: pt = "RELRO"; break; -+ case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break; - default: pt = NULL; break; - } - return pt; -@@ -2477,6 +2478,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index) - case PT_GNU_RELRO: - return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro"); - -+ case PT_PAX_FLAGS: -+ return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags"); -+ - default: - /* Check for any processor-specific program segment types. */ - bed = get_elf_backend_data (abfd); -@@ -3551,6 +3555,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info) - ++segs; - } - -+ { -+ /* We need a PT_PAX_FLAGS segment. */ -+ ++segs; -+ } -+ - for (s = abfd->sections; s != NULL; s = s->next) - { - if ((s->flags & SEC_LOAD) != 0 -@@ -4153,6 +4162,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) - } - } - -+ { -+ amt = sizeof (struct elf_segment_map); -+ m = bfd_zalloc (abfd, amt); -+ if (m == NULL) -+ goto error_return; -+ m->next = NULL; -+ m->p_type = PT_PAX_FLAGS; -+ m->p_flags = elf_pax_flags (abfd); -+ m->p_flags_valid = 1; -+ -+ *pm = m; -+ pm = &m->next; -+ } -+ - free (sections); - elf_tdata (abfd)->segment_map = mfirst; - } -@@ -5417,7 +5440,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) - 6. PT_TLS segment includes only SHF_TLS sections. - 7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments. - 8. PT_DYNAMIC should not contain empty sections at the beginning -- (with the possible exception of .dynamic). */ -+ (with the possible exception of .dynamic). -+ 9. PT_PAX_FLAGS segments do not include any sections. */ - #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed) \ - ((((segment->p_paddr \ - ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \ -@@ -5425,6 +5449,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) - && (section->flags & SEC_ALLOC) != 0) \ - || IS_NOTE (segment, section)) \ - && segment->p_type != PT_GNU_STACK \ -+ && segment->p_type != PT_PAX_FLAGS \ - && (segment->p_type != PT_TLS \ - || (section->flags & SEC_THREAD_LOCAL)) \ - && (segment->p_type == PT_LOAD \ ---- binutils-2.24/bfd/elflink.c -+++ binutils-2.24/bfd/elflink.c -@@ -5545,17 +5545,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, - && ! (*bed->elf_backend_always_size_sections) (output_bfd, info)) - return FALSE; - -+ elf_pax_flags (output_bfd) = PF_NORANDEXEC; -+ if (info->execheap) -+ elf_pax_flags (output_bfd) |= PF_NOMPROTECT; -+ else if (info->noexecheap) -+ elf_pax_flags (output_bfd) |= PF_MPROTECT; -+ - /* Determine any GNU_STACK segment requirements, after the backend - has had a chance to set a default segment size. */ - if (info->execstack) -- elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X; -+ { -+ elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X; -+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP; -+ } - else if (info->noexecstack) -- elf_stack_flags (output_bfd) = PF_R | PF_W; -+ { -+ elf_stack_flags (output_bfd) = PF_R | PF_W; -+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP; -+ } - else - { - bfd *inputobj; - asection *notesec = NULL; - int exec = 0; - -+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP; - for (inputobj = info->input_bfds; - inputobj; - inputobj = inputobj->link_next) -@@ -5567,7 +5581,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd, - if (s) - { - if (s->flags & SEC_CODE) -- exec = PF_X; -+ { -+ elf_pax_flags (output_bfd) &= ~PF_NOEMUTRAMP; -+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP; -+ exec = PF_X; -+ } - notesec = s; - } - else if (bed->default_execstack) ---- binutils-2.24/binutils/readelf.c -+++ binutils-2.24/binutils/readelf.c -@@ -2740,6 +2740,7 @@ get_segment_type (unsigned long p_type) - return "GNU_EH_FRAME"; - case PT_GNU_STACK: return "GNU_STACK"; - case PT_GNU_RELRO: return "GNU_RELRO"; -+ case PT_PAX_FLAGS: return "PAX_FLAGS"; - - default: - if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC)) ---- binutils-2.24/include/bfdlink.h -+++ binutils-2.24/include/bfdlink.h -@@ -322,6 +322,14 @@ struct bfd_link_info - /* TRUE if PT_GNU_RELRO segment should be created. */ - unsigned int relro: 1; - -+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT -+ flags. */ -+ unsigned int execheap: 1; -+ -+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT -+ flags. */ -+ unsigned int noexecheap: 1; -+ - /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment - should be created. */ - unsigned int eh_frame_hdr: 1; ---- binutils-2.24/include/elf/common.h -+++ binutils-2.24/include/elf/common.h -@@ -429,6 +429,7 @@ - #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */ - #define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */ - #define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */ -+#define PT_PAX_FLAGS (PT_LOOS + 0x5041580) /* PaX flags */ - - /* Program segment permissions, in program header p_flags field. */ - -@@ -439,6 +440,21 @@ - #define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ - #define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */ - -+/* Flags to control PaX behavior. */ -+ -+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */ -+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */ -+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */ -+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */ -+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */ -+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */ -+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */ -+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */ -+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */ -+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */ -+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */ -+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */ -+ - /* Values for section header, sh_type field. */ - - #define SHT_NULL 0 /* Section header table entry unused */ ---- binutils-2.24/ld/emultempl/elf32.em -+++ binutils-2.24/ld/emultempl/elf32.em -@@ -2285,6 +2285,16 @@ fragment <: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge2.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge2.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+1e0 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge3.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge3.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+210 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge4.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge4.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+240 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/merge5.d -+++ binutils-2.24/ld/testsuite/ld-ia64/merge5.d -@@ -4,7 +4,7 @@ - #objdump: -d - - #... --0+270 <.text>: -+[a-f0-9]+ <.text>: - [ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;; - [ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1 - [ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;; ---- binutils-2.24/ld/testsuite/ld-ia64/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-ia64/tlsbin.rd -@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -- +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8 -- +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 -+ +PHDR +0x0+40 0x40+40 0x40+40 (0x[0-9a-f]+) \1 R E 0x8 -+ +INTERP +0x0+([0-9a-f]+) (0x40+\1) \2 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1 - .*Requesting program interpreter.* - +LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000 - +LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 - +DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW +0x8 - +TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - +IA_64_UNWIND .* R +0x8 - #... - ---- binutils-2.24/ld/testsuite/ld-ia64/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-ia64/tlspic.rd -@@ -40,6 +40,7 @@ Program Headers: - +LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000 - +DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW +0x8 - +TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - +IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R +0x8 - #... - ---- binutils-2.24/ld/testsuite/ld-mips-elf/multi-got-no-shared.d -+++ binutils-2.24/ld/testsuite/ld-mips-elf/multi-got-no-shared.d -@@ -8,9 +8,9 @@ - .*: +file format.* - - Disassembly of section \.text: --004000b0 <[^>]*> 3c1c0043 lui gp,0x43 --004000b4 <[^>]*> 279c9ff0 addiu gp,gp,-24592 --004000b8 <[^>]*> afbc0008 sw gp,8\(sp\) -+004000d0 <[^>]*> 3c1c0043 lui gp,0x43 -+004000d4 <[^>]*> 279c9ff0 addiu gp,gp,-24592 -+004000d8 <[^>]*> afbc0008 sw gp,8\(sp\) - #... - 00408d60 <[^>]*> 3c1c0043 lui gp,0x43 - 00408d64 <[^>]*> 279c2c98 addiu gp,gp,11416 ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd -@@ -1,7 +1,7 @@ - - Elf file type is DYN \(Shared object file\) - Entry point .* --There are 5 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -9,6 +9,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.* - * LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -18,3 +19,4 @@ Program Headers: - *0*2 * \.data \.got * - *0*3 * \.dynamic * - *0*4 * -+ *0*5 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 *\.got \.data * - *0*6 *\.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * \.got \.data \.bss * - *0*6 * \.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * \.got \.data \.bss * - *0*6 * \.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * \.got \.data \.bss * - *0*6 * \.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 7 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -12,6 +12,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -23,3 +24,4 @@ Program Headers: - *0*4 * \.got \.data \.bss * - *0*5 * \.dynamic * - *0*6 * -+ *0*7 * ---- binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd -+++ binutils-2.24/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd -@@ -1,7 +1,7 @@ - - Elf file type is EXEC \(Executable file\) - Entry point 0x44000 --There are 8 program headers, starting at offset .* -+There are [0-9] program headers, starting at offset .* - - Program Headers: - * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align -@@ -13,6 +13,7 @@ Program Headers: - * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.* - * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.* - * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .* -+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - * NULL * .* - - *Section to Segment mapping: -@@ -25,3 +26,4 @@ Program Headers: - *0*5 * \.got \.data \.bss * - *0*6 * \.dynamic * - *0*7 * -+ *0*8 * ---- binutils-2.24/ld/testsuite/ld-powerpc/tlsexe32.r -+++ binutils-2.24/ld/testsuite/ld-powerpc/tlsexe32.r -@@ -33,13 +33,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align -- +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4 -- +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1 -+ +PHDR +0x000034 0x01800034 0x01800034 (0x000[0-9a-f]{2}) \1 R E 0x4 -+ +INTERP +0x000([0-9a-f]{3}) 0x01800\1 0x01800\1 0x00011 0x00011 R +0x1 - +\[Requesting program interpreter: .*\] - +LOAD .* R E 0x10000 - +LOAD .* RWE 0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0001c 0x00038 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections\.\.\. -@@ -49,6 +50,7 @@ Program Headers: - +03 +\.tdata \.dynamic \.got \.plt - +04 +\.dynamic - +05 +\.tdata \.tbss -+ +06 + - - Relocation section '\.rela\.dyn' at offset .* contains 2 entries: - Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-powerpc/tlsso32.r -+++ binutils-2.24/ld/testsuite/ld-powerpc/tlsso32.r -@@ -35,6 +35,7 @@ Program Headers: - +LOAD .* RWE 0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+1c 0x0+38 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections\.\.\. -@@ -42,6 +43,7 @@ Program Headers: - +01 +\.tdata \.dynamic \.got \.plt - +02 +\.dynamic - +03 +\.tdata \.tbss -+ +04 + - - Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries: - Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend -@@ -52,9 +54,9 @@ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries: - [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0 - [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0 - [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0 --[0-9a-f ]+R_PPC_TPREL16 +0+103d0 +\.tdata \+ 103e4 --[0-9a-f ]+R_PPC_TPREL16_HA +0+103d0 +\.tdata \+ 103e8 --[0-9a-f ]+R_PPC_TPREL16_LO +0+103d0 +\.tdata \+ 103e8 -+[0-9a-f ]+R_PPC_TPREL16 +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3} -+[0-9a-f ]+R_PPC_TPREL16_HA +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3} -+[0-9a-f ]+R_PPC_TPREL16_LO +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3} - [0-9a-f ]+R_PPC_DTPMOD32 +0 - [0-9a-f ]+R_PPC_DTPREL32 +0 - [0-9a-f ]+R_PPC_DTPMOD32 +0 ---- binutils-2.24/ld/testsuite/ld-s390/tlsbin.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlsbin.rd -@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+60 0x0+a0 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -52,6 +53,7 @@ Program Headers: - +03 +.tdata .dynamic .got * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rela.dyn' at offset .* contains 4 entries: - Offset +Info +Type +Sym.Value +Sym. Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlsbin_64.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlsbin_64.rd -@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+a0 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -52,6 +53,7 @@ Program Headers: - +03 +.tdata .dynamic .got * - +04 +.dynamic * - +05 +.tdata .tbss * -+ +06 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlspic.rd -@@ -39,6 +39,7 @@ Program Headers: - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+60 0x0+80 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -46,6 +47,7 @@ Program Headers: - +01 +.tdata .dynamic .got - +02 +.dynamic - +03 +.tdata .tbss -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - Offset +Info +Type +Sym.Value +Sym. Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-s390/tlspic_64.rd -+++ binutils-2.24/ld/testsuite/ld-s390/tlspic_64.rd -@@ -39,6 +39,7 @@ Program Headers: - +LOAD .* RW +0x1000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+80 R +0x20 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -46,6 +47,7 @@ Program Headers: - +01 +.tdata .dynamic .got * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-sh/tlsbin-2.d -+++ binutils-2.24/ld/testsuite/ld-sh/tlsbin-2.d -@@ -44,6 +44,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections\.\.\. -@@ -53,6 +54,7 @@ Program Headers: - +03 +\.tdata \.dynamic \.got * - +04 +\.dynamic * - +05 +\.tdata \.tbss * -+ +06 + - - Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries: - Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-sh/tlspic-2.d -+++ binutils-2.24/ld/testsuite/ld-sh/tlspic-2.d -@@ -32,7 +32,7 @@ Key to Flags: - - Elf file type is DYN \(Shared object file\) - Entry point 0x[0-9a-f]+ --There are 4 program headers, starting at offset [0-9]+ -+There are [0-9] program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -@@ -40,6 +40,7 @@ Program Headers: - +LOAD.* - +DYNAMIC.* - +TLS .* 0x0+18 0x0+20 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections\.\.\. -@@ -47,6 +48,7 @@ Program Headers: - +01 +\.tdata \.dynamic \.got * - +02 +\.dynamic * - +03 +\.tdata \.tbss * -+ +04 + - - Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries: - Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-sparc/gotop32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/gotop32.rd -@@ -31,6 +31,7 @@ Program Headers: - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000 - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000 - +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/gotop64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/gotop64.rd -@@ -31,6 +31,7 @@ Program Headers: - +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000 - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000 - +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunbin32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunbin32.rd -@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align -- +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4 -- +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1 -+ +PHDR +0x0+34 0x0+10034 0x0+10034 (0x[0-9a-f]+) \1 R E 0x4 -+ +INTERP +(0x[0-9a-f]+ ){3}0x0+11 0x0+11 R +0x1 - .*Requesting program interpreter.* - +LOAD .* R E 0x10000 - +LOAD .* RW +0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+1060 0x0+10a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunbin64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunbin64.rd -@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: - +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align -- +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8 -- +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1 -+ +PHDR +0x0+40 0x0+100040 0x0+100040 (0x[0-9a-f]+) \1 R E 0x8 -+ +INTERP +0x0+([0-9a-f]+) (0x0+10+\1) \2 0x0+19 0x0+19 R +0x1 - .*Requesting program interpreter.* - +LOAD .* R E 0x100000 - +LOAD .* RW +0x100000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+60 0x0+a0 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic32.rd -@@ -32,6 +32,7 @@ Program Headers: - +LOAD .* RW +0x10000 - +DYNAMIC .* RW +0x4 - +TLS .* 0x0+ 0x0+24 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunnopic64.rd -@@ -32,6 +32,7 @@ Program Headers: - +LOAD .* RW +0x100000 - +DYNAMIC .* RW +0x8 - +TLS .* 0x0+ 0x0+24 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunpic32.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunpic32.rd -@@ -36,6 +36,7 @@ Program Headers: - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000 - +DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4 - +TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-sparc/tlssunpic64.rd -+++ binutils-2.24/ld/testsuite/ld-sparc/tlssunpic64.rd -@@ -36,6 +36,7 @@ Program Headers: - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000 - +DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8 - +TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - #... - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: ---- binutils-2.24/ld/testsuite/ld-x86-64/tlsgdesc.rd -+++ binutils-2.24/ld/testsuite/ld-x86-64/tlsgdesc.rd -@@ -36,12 +36,14 @@ Program Headers: - +LOAD.* - +LOAD.* - +DYNAMIC.* -+ +PAX_FLAGS.* - - Section to Segment mapping: - +Segment Sections... - +00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text * - +01 +.dynamic .got .got.plt * - +02 +.dynamic * -+ +03 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend ---- binutils-2.24/ld/testsuite/ld-x86-64/tlspic.rd -+++ binutils-2.24/ld/testsuite/ld-x86-64/tlspic.rd -@@ -40,6 +40,7 @@ Program Headers: - +LOAD +0x0+131a 0x0+20131a 0x0+20131a 0x0+246 0x0+246 RW +0x200000 - +DYNAMIC +0x0+1380 0x0+201380 0x0+201380 0x0+130 0x0+130 RW +0x8 - +TLS +0x0+131a 0x0+20131a 0x0+20131a 0x0+60 0x0+80 R +0x1 -+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48] - - Section to Segment mapping: - +Segment Sections... -@@ -47,6 +48,7 @@ Program Headers: - +01 +.tdata .dynamic .got .got.plt * - +02 +.dynamic * - +03 +.tdata .tbss * -+ +04 + - - Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries: - +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend From 6b9f806e95f6bedaf27f7b8b62e59cf0e21b02d5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:47:47 +0200 Subject: [PATCH 329/464] glibc: Update to 2.25 Signed-off-by: Michael Tremer --- lfs/glibc | 294 +- ...accept-make-versions-4.0-and-greater.patch | 35 - src/patches/glibc-cfi-entry-not-closed.patch | 23 - ...c-remove-ctors-dtors-output-sections.patch | 150 - src/patches/glibc-resolv-stack_chk_fail.patch | 35 - .../glibc-test-installation.pl-libgcc_s.patch | 88 - ...glibc-test-installation.pl-nss_test1.patch | 31 - src/patches/glibc/glibc-aliasing.patch | 87 - src/patches/glibc/glibc-fedora.patch | 2106 - src/patches/glibc/glibc-getlogin-r.patch | 36 - src/patches/glibc/glibc-localedata.patch | 18 - src/patches/glibc/glibc-mq_open.patch | 34 - src/patches/glibc/glibc-recvmmsg.patch | 182 - src/patches/glibc/glibc-rh1008310.patch | 45 - src/patches/glibc/glibc-rh1019916.patch | 39 - src/patches/glibc/glibc-rh1022022.patch | 20 - src/patches/glibc/glibc-rh1023306.patch | 64 - src/patches/glibc/glibc-rh1025933.patch | 287 - src/patches/glibc/glibc-rh1027101.patch | 58 - src/patches/glibc/glibc-rh1027261.patch | 28 - src/patches/glibc/glibc-rh1028285.patch | 149 - src/patches/glibc/glibc-rh1032628.patch | 166 - src/patches/glibc/glibc-rh1039988.patch | 141 - src/patches/glibc/glibc-rh1043557.patch | 145 - src/patches/glibc/glibc-rh1044628.patch | 28 - src/patches/glibc/glibc-rh1053178.patch | 214 - src/patches/glibc/glibc-rh1054846.patch | 57 - src/patches/glibc/glibc-rh1066724.patch | 620 - src/patches/glibc/glibc-rh1074342.patch | 26 - src/patches/glibc/glibc-rh1074353.patch | 398 - src/patches/glibc/glibc-rh1082379.patch | 63 - src/patches/glibc/glibc-rh1085273.patch | 31 - src/patches/glibc/glibc-rh1085289.patch | 60 - src/patches/glibc/glibc-rh1085312.patch | 34 - src/patches/glibc/glibc-rh1087833.patch | 65 - src/patches/glibc/glibc-rh1088301.patch | 142 - src/patches/glibc/glibc-rh1091915.patch | 40 - src/patches/glibc/glibc-rh1099025-2.patch | 159 - src/patches/glibc/glibc-rh1099025.patch | 47 - src/patches/glibc/glibc-rh1111460.patch | 341 - src/patches/glibc/glibc-rh1116050-1.patch | 57 - src/patches/glibc/glibc-rh1116050.patch | 407 - src/patches/glibc/glibc-rh1124204.patch | 47 - src/patches/glibc/glibc-rh1125307.patch | 19 - src/patches/glibc/glibc-rh1133810-1.patch | 199 - src/patches/glibc/glibc-rh1133810-2.patch | 625 - src/patches/glibc/glibc-rh1138769.patch | 45 - src/patches/glibc/glibc-rh1144019.patch | 27 - src/patches/glibc/glibc-rh1144132.patch | 58 - src/patches/glibc/glibc-rh1154563.patch | 333 - src/patches/glibc/glibc-rh1159167.patch | 15 - src/patches/glibc/glibc-rh1171296.patch | 163 - src/patches/glibc/glibc-rh1172044.patch | 154 - src/patches/glibc/glibc-rh1176907.patch | 22 - src/patches/glibc/glibc-rh1183534.patch | 223 - .../glibc/glibc-rh1195453-avx512.patch | 481 - src/patches/glibc/glibc-rh1207236.patch | 12 - src/patches/glibc/glibc-rh1209376.patch | 18 - src/patches/glibc/glibc-rh1217186.patch | 65 - src/patches/glibc/glibc-rh1256812-2.patch | 15 - src/patches/glibc/glibc-rh1256812-3.patch | 138 - src/patches/glibc/glibc-rh1256812-4.patch | 45 - src/patches/glibc/glibc-rh1256812.patch | 56 - src/patches/glibc/glibc-rh1256890.patch | 12 - src/patches/glibc/glibc-rh1256891.patch | 26 - src/patches/glibc/glibc-rh1291270.patch | 41 - src/patches/glibc/glibc-rh1296031-0.patch | 465 - src/patches/glibc/glibc-rh1296031.patch | 544 - src/patches/glibc/glibc-rh1299319-0.patch | 61 - src/patches/glibc/glibc-rh1299319-1.patch | 19 - src/patches/glibc/glibc-rh552960.patch | 1213 - src/patches/glibc/glibc-rh580498.patch | 296 - src/patches/glibc/glibc-rh582738.patch | 13 - src/patches/glibc/glibc-rh587360.patch | 13 - src/patches/glibc/glibc-rh593396.patch | 42 - src/patches/glibc/glibc-rh593686.patch | 179 - src/patches/glibc/glibc-rh601686.patch | 4640 -- src/patches/glibc/glibc-rh607010.patch | 26 - src/patches/glibc/glibc-rh607461.patch | 22 - src/patches/glibc/glibc-rh615090.patch | 21 - src/patches/glibc/glibc-rh615701.patch | 23 - src/patches/glibc/glibc-rh621959.patch | 120 - src/patches/glibc/glibc-rh623187.patch | 18 - src/patches/glibc/glibc-rh625893.patch | 79 - src/patches/glibc/glibc-rh629823-2.patch | 95 - src/patches/glibc/glibc-rh629823.patch | 1954 - src/patches/glibc/glibc-rh630801.patch | 29 - src/patches/glibc/glibc-rh631011.patch | 17 - src/patches/glibc/glibc-rh641128.patch | 78 - src/patches/glibc/glibc-rh642584.patch | 41 - src/patches/glibc/glibc-rh643822.patch | 64 - src/patches/glibc/glibc-rh645672.patch | 215 - src/patches/glibc/glibc-rh646954.patch | 216 - src/patches/glibc/glibc-rh647448.patch | 58 - src/patches/glibc/glibc-rh652661.patch | 21 - src/patches/glibc/glibc-rh656014.patch | 45 - src/patches/glibc/glibc-rh656530.patch | 21 - src/patches/glibc/glibc-rh657572.patch | 141 - src/patches/glibc/glibc-rh661982.patch | 188 - src/patches/glibc/glibc-rh663641-2.patch | 279 - src/patches/glibc/glibc-rh663641-3.patch | 31 - src/patches/glibc/glibc-rh663641.patch | 191 - src/patches/glibc/glibc-rh667974.patch | 160 - src/patches/glibc/glibc-rh676076.patch | 714 - src/patches/glibc/glibc-rh676591.patch | 352 - src/patches/glibc/glibc-rh681054.patch | 514 - src/patches/glibc/glibc-rh688720.patch | 1638 - src/patches/glibc/glibc-rh688980.patch | 20 - src/patches/glibc/glibc-rh689471.patch | 333 - src/patches/glibc/glibc-rh692177.patch | 137 - src/patches/glibc/glibc-rh692838.patch | 6165 --- src/patches/glibc/glibc-rh694386.patch | 86 - src/patches/glibc/glibc-rh695595.patch | 17 - src/patches/glibc/glibc-rh695963.patch | 1284 - src/patches/glibc/glibc-rh696472.patch | 36 - src/patches/glibc/glibc-rh697421.patch | 10 - src/patches/glibc/glibc-rh699724.patch | 188 - src/patches/glibc/glibc-rh700507.patch | 26 - src/patches/glibc/glibc-rh703480.patch | 68 - src/patches/glibc/glibc-rh703481.patch | 875 - src/patches/glibc/glibc-rh705465.patch | 449 - src/patches/glibc/glibc-rh711927.patch | 503 - src/patches/glibc/glibc-rh711987.patch | 136 - src/patches/glibc/glibc-rh712248.patch | 69 - src/patches/glibc/glibc-rh713134.patch | 36 - src/patches/glibc/glibc-rh714823.patch | 126 - src/patches/glibc/glibc-rh718057.patch | 109 - src/patches/glibc/glibc-rh726517.patch | 173 - src/patches/glibc/glibc-rh730379.patch | 34 - src/patches/glibc/glibc-rh731042.patch | 51 - src/patches/glibc/glibc-rh736346.patch | 116 - src/patches/glibc/glibc-rh737778.patch | 122 - src/patches/glibc/glibc-rh738665.patch | 149 - src/patches/glibc/glibc-rh738763.patch | 17 - src/patches/glibc/glibc-rh739184.patch | 18 - src/patches/glibc/glibc-rh739971.patch | 44 - src/patches/glibc/glibc-rh740506-2.patch | 35 - src/patches/glibc/glibc-rh740506.patch | 132 - src/patches/glibc/glibc-rh749188.patch | 32 - src/patches/glibc/glibc-rh750531.patch | 122 - src/patches/glibc/glibc-rh751750.patch | 28 - src/patches/glibc/glibc-rh752122.patch | 260 - src/patches/glibc/glibc-rh757888.patch | 225 - src/patches/glibc/glibc-rh766513.patch | 14 - src/patches/glibc/glibc-rh767146.patch | 21 - src/patches/glibc/glibc-rh767693-2.patch | 79 - src/patches/glibc/glibc-rh767693.patch | 89 - src/patches/glibc/glibc-rh767746.patch | 14 - src/patches/glibc/glibc-rh771342.patch | 155 - src/patches/glibc/glibc-rh782585.patch | 329 - src/patches/glibc/glibc-rh784402.patch | 166 - src/patches/glibc/glibc-rh785984.patch | 20 - src/patches/glibc/glibc-rh788959-2.patch | 92 - src/patches/glibc/glibc-rh788959.patch | 130 - src/patches/glibc/glibc-rh789189.patch | 12 - src/patches/glibc/glibc-rh789209.patch | 12 - src/patches/glibc/glibc-rh789238-2.patch | 114 - src/patches/glibc/glibc-rh789238.patch | 119 - src/patches/glibc/glibc-rh794817-2.patch | 85 - src/patches/glibc/glibc-rh794817.patch | 239 - src/patches/glibc/glibc-rh795498.patch | 13 - src/patches/glibc/glibc-rh797094-1.patch | 657 - src/patches/glibc/glibc-rh797094-2.patch | 862 - src/patches/glibc/glibc-rh804686.patch | 87 - src/patches/glibc/glibc-rh804689.patch | 23 - src/patches/glibc/glibc-rh806404.patch | 12 - src/patches/glibc/glibc-rh808337.patch | 21 - src/patches/glibc/glibc-rh808545.patch | 44 - src/patches/glibc/glibc-rh809602.patch | 47 - src/patches/glibc/glibc-rh809726.patch | 89 - src/patches/glibc/glibc-rh823909.patch | 25 - src/patches/glibc/glibc-rh826149.patch | 80 - src/patches/glibc/glibc-rh827362.patch | 250 - src/patches/glibc/glibc-rh830127.patch | 403 - src/patches/glibc/glibc-rh832516.patch | 19 - src/patches/glibc/glibc-rh832694.patch | 22 - src/patches/glibc/glibc-rh833717.patch | 45265 ---------------- src/patches/glibc/glibc-rh834386-2.patch | 107 - src/patches/glibc/glibc-rh834386.patch | 181 - src/patches/glibc/glibc-rh837695.patch | 54 - src/patches/glibc/glibc-rh837918.patch | 7183 --- src/patches/glibc/glibc-rh841787.patch | 42 - src/patches/glibc/glibc-rh843673.patch | 31 - src/patches/glibc/glibc-rh845218.patch | 218 - src/patches/glibc/glibc-rh846342.patch | 48 - src/patches/glibc/glibc-rh847932.patch | 364 - src/patches/glibc/glibc-rh848082.patch | 88 - src/patches/glibc/glibc-rh848748.patch | 70 - src/patches/glibc/glibc-rh849203.patch | 195 - src/patches/glibc/glibc-rh849651.patch | 343 - src/patches/glibc/glibc-rh851470.patch | 52 - src/patches/glibc/glibc-rh852445.patch | 105 - src/patches/glibc/glibc-rh859965.patch | 854 - src/patches/glibc/glibc-rh861167.patch | 86 - src/patches/glibc/glibc-rh862094.patch | 68 - src/patches/glibc/glibc-rh863384.patch | 14 - src/patches/glibc/glibc-rh863453.patch | 81 - src/patches/glibc/glibc-rh864322.patch | 12 - src/patches/glibc/glibc-rh867679.patch | 139 - src/patches/glibc/glibc-rh868808.patch | 99 - src/patches/glibc/glibc-rh886968.patch | 33 - src/patches/glibc/glibc-rh905575.patch | 72 - src/patches/glibc/glibc-rh905874.patch | 174 - src/patches/glibc/glibc-rh905941.patch | 146 - src/patches/glibc/glibc-rh916986.patch | 123 - src/patches/glibc/glibc-rh919562.patch | 190 - src/patches/glibc/glibc-rh928318.patch | 31 - src/patches/glibc/glibc-rh929302.patch | 98 - src/patches/glibc/glibc-rh929388.patch | 21 - src/patches/glibc/glibc-rh947882.patch | 63 - src/patches/glibc/glibc-rh952422.patch | 127 - src/patches/glibc/glibc-rh966775.patch | 177 - src/patches/glibc/glibc-rh966778.patch | 54 - src/patches/glibc/glibc-rh970090.patch | 24 - src/patches/glibc/glibc-rh970776.patch | 279 - src/patches/glibc/glibc-rh978098.patch | 124 - src/patches/glibc/glibc-rh981942.patch | 22 - src/patches/glibc/glibc-rh988931.patch | 33 - src/patches/glibc/glibc-rh995972.patch | 246 - 219 files changed, 13 insertions(+), 99043 deletions(-) delete mode 100644 src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch delete mode 100644 src/patches/glibc-cfi-entry-not-closed.patch delete mode 100644 src/patches/glibc-remove-ctors-dtors-output-sections.patch delete mode 100644 src/patches/glibc-resolv-stack_chk_fail.patch delete mode 100644 src/patches/glibc-test-installation.pl-libgcc_s.patch delete mode 100644 src/patches/glibc-test-installation.pl-nss_test1.patch delete mode 100644 src/patches/glibc/glibc-aliasing.patch delete mode 100644 src/patches/glibc/glibc-fedora.patch delete mode 100644 src/patches/glibc/glibc-getlogin-r.patch delete mode 100644 src/patches/glibc/glibc-localedata.patch delete mode 100644 src/patches/glibc/glibc-mq_open.patch delete mode 100644 src/patches/glibc/glibc-recvmmsg.patch delete mode 100644 src/patches/glibc/glibc-rh1008310.patch delete mode 100644 src/patches/glibc/glibc-rh1019916.patch delete mode 100644 src/patches/glibc/glibc-rh1022022.patch delete mode 100644 src/patches/glibc/glibc-rh1023306.patch delete mode 100644 src/patches/glibc/glibc-rh1025933.patch delete mode 100644 src/patches/glibc/glibc-rh1027101.patch delete mode 100644 src/patches/glibc/glibc-rh1027261.patch delete mode 100644 src/patches/glibc/glibc-rh1028285.patch delete mode 100644 src/patches/glibc/glibc-rh1032628.patch delete mode 100644 src/patches/glibc/glibc-rh1039988.patch delete mode 100644 src/patches/glibc/glibc-rh1043557.patch delete mode 100644 src/patches/glibc/glibc-rh1044628.patch delete mode 100644 src/patches/glibc/glibc-rh1053178.patch delete mode 100644 src/patches/glibc/glibc-rh1054846.patch delete mode 100644 src/patches/glibc/glibc-rh1066724.patch delete mode 100644 src/patches/glibc/glibc-rh1074342.patch delete mode 100644 src/patches/glibc/glibc-rh1074353.patch delete mode 100644 src/patches/glibc/glibc-rh1082379.patch delete mode 100644 src/patches/glibc/glibc-rh1085273.patch delete mode 100644 src/patches/glibc/glibc-rh1085289.patch delete mode 100644 src/patches/glibc/glibc-rh1085312.patch delete mode 100644 src/patches/glibc/glibc-rh1087833.patch delete mode 100644 src/patches/glibc/glibc-rh1088301.patch delete mode 100644 src/patches/glibc/glibc-rh1091915.patch delete mode 100644 src/patches/glibc/glibc-rh1099025-2.patch delete mode 100644 src/patches/glibc/glibc-rh1099025.patch delete mode 100644 src/patches/glibc/glibc-rh1111460.patch delete mode 100644 src/patches/glibc/glibc-rh1116050-1.patch delete mode 100644 src/patches/glibc/glibc-rh1116050.patch delete mode 100644 src/patches/glibc/glibc-rh1124204.patch delete mode 100644 src/patches/glibc/glibc-rh1125307.patch delete mode 100644 src/patches/glibc/glibc-rh1133810-1.patch delete mode 100644 src/patches/glibc/glibc-rh1133810-2.patch delete mode 100644 src/patches/glibc/glibc-rh1138769.patch delete mode 100644 src/patches/glibc/glibc-rh1144019.patch delete mode 100644 src/patches/glibc/glibc-rh1144132.patch delete mode 100644 src/patches/glibc/glibc-rh1154563.patch delete mode 100644 src/patches/glibc/glibc-rh1159167.patch delete mode 100644 src/patches/glibc/glibc-rh1171296.patch delete mode 100644 src/patches/glibc/glibc-rh1172044.patch delete mode 100644 src/patches/glibc/glibc-rh1176907.patch delete mode 100644 src/patches/glibc/glibc-rh1183534.patch delete mode 100644 src/patches/glibc/glibc-rh1195453-avx512.patch delete mode 100644 src/patches/glibc/glibc-rh1207236.patch delete mode 100644 src/patches/glibc/glibc-rh1209376.patch delete mode 100644 src/patches/glibc/glibc-rh1217186.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-2.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-3.patch delete mode 100644 src/patches/glibc/glibc-rh1256812-4.patch delete mode 100644 src/patches/glibc/glibc-rh1256812.patch delete mode 100644 src/patches/glibc/glibc-rh1256890.patch delete mode 100644 src/patches/glibc/glibc-rh1256891.patch delete mode 100644 src/patches/glibc/glibc-rh1291270.patch delete mode 100644 src/patches/glibc/glibc-rh1296031-0.patch delete mode 100644 src/patches/glibc/glibc-rh1296031.patch delete mode 100644 src/patches/glibc/glibc-rh1299319-0.patch delete mode 100644 src/patches/glibc/glibc-rh1299319-1.patch delete mode 100644 src/patches/glibc/glibc-rh552960.patch delete mode 100644 src/patches/glibc/glibc-rh580498.patch delete mode 100644 src/patches/glibc/glibc-rh582738.patch delete mode 100644 src/patches/glibc/glibc-rh587360.patch delete mode 100644 src/patches/glibc/glibc-rh593396.patch delete mode 100644 src/patches/glibc/glibc-rh593686.patch delete mode 100644 src/patches/glibc/glibc-rh601686.patch delete mode 100644 src/patches/glibc/glibc-rh607010.patch delete mode 100644 src/patches/glibc/glibc-rh607461.patch delete mode 100644 src/patches/glibc/glibc-rh615090.patch delete mode 100644 src/patches/glibc/glibc-rh615701.patch delete mode 100644 src/patches/glibc/glibc-rh621959.patch delete mode 100644 src/patches/glibc/glibc-rh623187.patch delete mode 100644 src/patches/glibc/glibc-rh625893.patch delete mode 100644 src/patches/glibc/glibc-rh629823-2.patch delete mode 100644 src/patches/glibc/glibc-rh629823.patch delete mode 100644 src/patches/glibc/glibc-rh630801.patch delete mode 100644 src/patches/glibc/glibc-rh631011.patch delete mode 100644 src/patches/glibc/glibc-rh641128.patch delete mode 100644 src/patches/glibc/glibc-rh642584.patch delete mode 100644 src/patches/glibc/glibc-rh643822.patch delete mode 100644 src/patches/glibc/glibc-rh645672.patch delete mode 100644 src/patches/glibc/glibc-rh646954.patch delete mode 100644 src/patches/glibc/glibc-rh647448.patch delete mode 100644 src/patches/glibc/glibc-rh652661.patch delete mode 100644 src/patches/glibc/glibc-rh656014.patch delete mode 100644 src/patches/glibc/glibc-rh656530.patch delete mode 100644 src/patches/glibc/glibc-rh657572.patch delete mode 100644 src/patches/glibc/glibc-rh661982.patch delete mode 100644 src/patches/glibc/glibc-rh663641-2.patch delete mode 100644 src/patches/glibc/glibc-rh663641-3.patch delete mode 100644 src/patches/glibc/glibc-rh663641.patch delete mode 100644 src/patches/glibc/glibc-rh667974.patch delete mode 100644 src/patches/glibc/glibc-rh676076.patch delete mode 100644 src/patches/glibc/glibc-rh676591.patch delete mode 100644 src/patches/glibc/glibc-rh681054.patch delete mode 100644 src/patches/glibc/glibc-rh688720.patch delete mode 100644 src/patches/glibc/glibc-rh688980.patch delete mode 100644 src/patches/glibc/glibc-rh689471.patch delete mode 100644 src/patches/glibc/glibc-rh692177.patch delete mode 100644 src/patches/glibc/glibc-rh692838.patch delete mode 100644 src/patches/glibc/glibc-rh694386.patch delete mode 100644 src/patches/glibc/glibc-rh695595.patch delete mode 100644 src/patches/glibc/glibc-rh695963.patch delete mode 100644 src/patches/glibc/glibc-rh696472.patch delete mode 100644 src/patches/glibc/glibc-rh697421.patch delete mode 100644 src/patches/glibc/glibc-rh699724.patch delete mode 100644 src/patches/glibc/glibc-rh700507.patch delete mode 100644 src/patches/glibc/glibc-rh703480.patch delete mode 100644 src/patches/glibc/glibc-rh703481.patch delete mode 100644 src/patches/glibc/glibc-rh705465.patch delete mode 100644 src/patches/glibc/glibc-rh711927.patch delete mode 100644 src/patches/glibc/glibc-rh711987.patch delete mode 100644 src/patches/glibc/glibc-rh712248.patch delete mode 100644 src/patches/glibc/glibc-rh713134.patch delete mode 100644 src/patches/glibc/glibc-rh714823.patch delete mode 100644 src/patches/glibc/glibc-rh718057.patch delete mode 100644 src/patches/glibc/glibc-rh726517.patch delete mode 100644 src/patches/glibc/glibc-rh730379.patch delete mode 100644 src/patches/glibc/glibc-rh731042.patch delete mode 100644 src/patches/glibc/glibc-rh736346.patch delete mode 100644 src/patches/glibc/glibc-rh737778.patch delete mode 100644 src/patches/glibc/glibc-rh738665.patch delete mode 100644 src/patches/glibc/glibc-rh738763.patch delete mode 100644 src/patches/glibc/glibc-rh739184.patch delete mode 100644 src/patches/glibc/glibc-rh739971.patch delete mode 100644 src/patches/glibc/glibc-rh740506-2.patch delete mode 100644 src/patches/glibc/glibc-rh740506.patch delete mode 100644 src/patches/glibc/glibc-rh749188.patch delete mode 100644 src/patches/glibc/glibc-rh750531.patch delete mode 100644 src/patches/glibc/glibc-rh751750.patch delete mode 100644 src/patches/glibc/glibc-rh752122.patch delete mode 100644 src/patches/glibc/glibc-rh757888.patch delete mode 100644 src/patches/glibc/glibc-rh766513.patch delete mode 100644 src/patches/glibc/glibc-rh767146.patch delete mode 100644 src/patches/glibc/glibc-rh767693-2.patch delete mode 100644 src/patches/glibc/glibc-rh767693.patch delete mode 100644 src/patches/glibc/glibc-rh767746.patch delete mode 100644 src/patches/glibc/glibc-rh771342.patch delete mode 100644 src/patches/glibc/glibc-rh782585.patch delete mode 100644 src/patches/glibc/glibc-rh784402.patch delete mode 100644 src/patches/glibc/glibc-rh785984.patch delete mode 100644 src/patches/glibc/glibc-rh788959-2.patch delete mode 100644 src/patches/glibc/glibc-rh788959.patch delete mode 100644 src/patches/glibc/glibc-rh789189.patch delete mode 100644 src/patches/glibc/glibc-rh789209.patch delete mode 100644 src/patches/glibc/glibc-rh789238-2.patch delete mode 100644 src/patches/glibc/glibc-rh789238.patch delete mode 100644 src/patches/glibc/glibc-rh794817-2.patch delete mode 100644 src/patches/glibc/glibc-rh794817.patch delete mode 100644 src/patches/glibc/glibc-rh795498.patch delete mode 100644 src/patches/glibc/glibc-rh797094-1.patch delete mode 100644 src/patches/glibc/glibc-rh797094-2.patch delete mode 100644 src/patches/glibc/glibc-rh804686.patch delete mode 100644 src/patches/glibc/glibc-rh804689.patch delete mode 100644 src/patches/glibc/glibc-rh806404.patch delete mode 100644 src/patches/glibc/glibc-rh808337.patch delete mode 100644 src/patches/glibc/glibc-rh808545.patch delete mode 100644 src/patches/glibc/glibc-rh809602.patch delete mode 100644 src/patches/glibc/glibc-rh809726.patch delete mode 100644 src/patches/glibc/glibc-rh823909.patch delete mode 100644 src/patches/glibc/glibc-rh826149.patch delete mode 100644 src/patches/glibc/glibc-rh827362.patch delete mode 100644 src/patches/glibc/glibc-rh830127.patch delete mode 100644 src/patches/glibc/glibc-rh832516.patch delete mode 100644 src/patches/glibc/glibc-rh832694.patch delete mode 100644 src/patches/glibc/glibc-rh833717.patch delete mode 100644 src/patches/glibc/glibc-rh834386-2.patch delete mode 100644 src/patches/glibc/glibc-rh834386.patch delete mode 100644 src/patches/glibc/glibc-rh837695.patch delete mode 100644 src/patches/glibc/glibc-rh837918.patch delete mode 100644 src/patches/glibc/glibc-rh841787.patch delete mode 100644 src/patches/glibc/glibc-rh843673.patch delete mode 100644 src/patches/glibc/glibc-rh845218.patch delete mode 100644 src/patches/glibc/glibc-rh846342.patch delete mode 100644 src/patches/glibc/glibc-rh847932.patch delete mode 100644 src/patches/glibc/glibc-rh848082.patch delete mode 100644 src/patches/glibc/glibc-rh848748.patch delete mode 100644 src/patches/glibc/glibc-rh849203.patch delete mode 100644 src/patches/glibc/glibc-rh849651.patch delete mode 100644 src/patches/glibc/glibc-rh851470.patch delete mode 100644 src/patches/glibc/glibc-rh852445.patch delete mode 100644 src/patches/glibc/glibc-rh859965.patch delete mode 100644 src/patches/glibc/glibc-rh861167.patch delete mode 100644 src/patches/glibc/glibc-rh862094.patch delete mode 100644 src/patches/glibc/glibc-rh863384.patch delete mode 100644 src/patches/glibc/glibc-rh863453.patch delete mode 100644 src/patches/glibc/glibc-rh864322.patch delete mode 100644 src/patches/glibc/glibc-rh867679.patch delete mode 100644 src/patches/glibc/glibc-rh868808.patch delete mode 100644 src/patches/glibc/glibc-rh886968.patch delete mode 100644 src/patches/glibc/glibc-rh905575.patch delete mode 100644 src/patches/glibc/glibc-rh905874.patch delete mode 100644 src/patches/glibc/glibc-rh905941.patch delete mode 100644 src/patches/glibc/glibc-rh916986.patch delete mode 100644 src/patches/glibc/glibc-rh919562.patch delete mode 100644 src/patches/glibc/glibc-rh928318.patch delete mode 100644 src/patches/glibc/glibc-rh929302.patch delete mode 100644 src/patches/glibc/glibc-rh929388.patch delete mode 100644 src/patches/glibc/glibc-rh947882.patch delete mode 100644 src/patches/glibc/glibc-rh952422.patch delete mode 100644 src/patches/glibc/glibc-rh966775.patch delete mode 100644 src/patches/glibc/glibc-rh966778.patch delete mode 100644 src/patches/glibc/glibc-rh970090.patch delete mode 100644 src/patches/glibc/glibc-rh970776.patch delete mode 100644 src/patches/glibc/glibc-rh978098.patch delete mode 100644 src/patches/glibc/glibc-rh981942.patch delete mode 100644 src/patches/glibc/glibc-rh988931.patch delete mode 100644 src/patches/glibc/glibc-rh995972.patch diff --git a/lfs/glibc b/lfs/glibc index c0af6fc06..d850a503c 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -24,11 +24,10 @@ include Config -VER = 2.12-2-gc4ccff1 -PORTS_VER = 2.12.1 +VER = 2.25 THISAPP = glibc-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) @@ -40,8 +39,6 @@ ifeq "$(ROOT)" "" --build=$(BUILDTARGET) \ --prefix=/usr \ --libexecdir=/usr/lib/glibc - EXTRA_MAKE = - EXTRA_INSTALL = else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = \ @@ -50,23 +47,18 @@ else --prefix=/tools \ --with-headers=/tools/include \ libc_cv_forced_unwind=yes \ - libc_cv_ctors_header=yes \ - libc_cv_c_cleanup=yes \ - CC=/tools/bin/$(CROSSTARGET)-gcc - EXTRA_MAKE = - EXTRA_INSTALL = + libc_cv_c_cleanup=yes endif -# Enable some extra optimization for the glibc code. -CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC \ - -DNO_CTORS_DTORS_SECTIONS +# Enable some extra optimization for the glibc code +CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC ifeq "$(MACHINE)" "i586" CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs endif -ifeq "$(MACHINE_TYPE)" "arm" - # Disable hardware FP for ARM. +# Disable hardware FP for armv5tel +ifeq "$(MACHINE)" "armv5tel" EXTRA_CONFIG += \ --without-fp endif @@ -74,11 +66,12 @@ endif # Add some general configuration flags EXTRA_CONFIG += \ --disable-profile \ - --enable-kernel=2.6.0 \ + --enable-kernel=3.2 \ --enable-add-ons \ --without-selinux \ --enable-experimental-malloc \ - --enable-bind-now + --enable-bind-now \ + --enable-stack-protector=strong ############################################################################### # Top-level Rules @@ -88,14 +81,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 450958ad3d3b5a432b356376904c96b0 - -# ARM needs glibc-ports -ifeq "$(MACHINE_TYPE)" "arm" - objects += glibc-ports-$(PORTS_VER).tar.bz2 - glibc-ports-$(PORTS_VER).tar.bz2 = $(DL_FROM)/glibc-ports-$(PORTS_VER).tar.bz2 - glibc-ports-$(PORTS_VER).tar.bz2_MD5 = cb01ab976180e98287cef5079e35359e -endif +$(DL_FILE)_MD5 = 0c9f827298841dbf3bff3060f3d7f19c install : $(TARGET) @@ -124,252 +110,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && tar jxf $(DIR_DL)/glibc-ports-$(PORTS_VER).tar.bz2 - cd $(DIR_APP) && mv -v glibc-ports-$(PORTS_VER) ports - - # http://sourceware.org/bugzilla/show_bug.cgi?id=12354 - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-cfi-entry-not-closed.patch -endif - - # Apply all patches. - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-aliasing.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-fedora.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-getlogin-r.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-localedata.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-recvmmsg.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh587360.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh582738.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593396.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh593686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607461.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh621959.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh607010.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh630801.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh631011.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh641128.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh642584.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh643822.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh645672.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh580498.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615090.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh623187.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh646954.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh647448.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh615701.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh652661.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656530.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh656014.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh661982.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh601686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676076.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh667974.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh625893.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh681054.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh689471.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692177.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh692838.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703480.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh705465.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh703481.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh694386.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh676591.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711987.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695595.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh695963.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh713134.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh714823.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh718057.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688980.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh712248.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh731042.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh730379.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh700507.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh699724.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh736346.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh737778.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738665.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh738763.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739184.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh711927.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh688720.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh726517.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh752122.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh739971.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh751750.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh757888.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh750531.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh749188.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767746.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh740506-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh696472.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh771342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh657572.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767693-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh782585.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh784402.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh697421.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh785984.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh767146.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh766513.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789209.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789189.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh797094-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh789238-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh795498.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh794817-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804689.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809602.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808337.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh788959-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh808545.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh833717.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh823909.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh826149.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh841787.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh809726.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh806404.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832516.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh830127.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh832694.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh843673.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh847932.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837918.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849203.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh849651.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh827362.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh837695.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh804686.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh848082.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh846342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh852445.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh861167.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh863453.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh864322.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh929388.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh919562.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh886968.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966775.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh834386.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh834386-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh862094.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh851470.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh868808.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh552960.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh848748.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh952422.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh663641-3.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh916986.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970776.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966778.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh863384.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh629823.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh629823-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh947882.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905874.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh929302.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh928318.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905575.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh988931.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970090.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1008310.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1022022.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1043557.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1039988.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh995972.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh981942.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1032628.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1027101.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1025933.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh845218.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1044628.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085273.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1074342.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085289.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1082379.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1074353.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1019916.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1028285.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1099025.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1087833.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1027261.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905941.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1054846.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1111460.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1099025-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1133810-1.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1133810-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1138769.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1171296.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1172044.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1154563.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1125307.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1176907.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1183534.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1159167.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1023306.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1085312.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1091915.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh859965.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1124204.patch -ifneq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh978098.patch -endif - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1144019.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1053178.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1144132.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1116050.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1116050-1.patch -ifneq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh867679.patch -endif - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1088301.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1195453-avx512.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1066724.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1209376.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1207236.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1217186.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-2.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-3.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256812-4.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256890.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1256891.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1291270.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1296031.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1296031-0.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1299319-0.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh1299319-1.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-resolv-stack_chk_fail.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-remove-ctors-dtors-output-sections.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-nss_test1.patch - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-test-installation.pl-libgcc_s.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-mq_open.patch - - # Fixes: - # Makefile:235: *** mixed implicit and normal rules. Stop. - cd $(DIR_APP) && sed -i 's/ot \$$/ot:\n\ttouch $$@\n$$/' manual/Makefile - -ifeq "$(MACHINE_TYPE)" "arm" - # http://sourceware.org/ml/libc-ports/2011-09/msg00018.html - cd $(DIR_APP) && sed -e "s/PIC/SHARED/g" -i ports/sysdeps/arm/{,eabi/}{set,__long}jmp.S -endif - ifeq "$(ROOT)" "" ifeq "$(MACHINE_TYPE)" "arm" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ @@ -389,21 +132,10 @@ endif CFLAGS="$(CFLAGS) -fno-asynchronous-unwind-tables" \ $(DIR_APP)/configure $(EXTRA_CONFIG) - sed -i $(DIR_SRC)/glibc-build/config.make \ - -e "s/^build-pic-default=.*/build-pic-default=yes/" - - # Build the glibc libraries without stack protection (as this is not supported) - echo "build-programs=no" >> $(DIR_SRC)/glibc-build/configparms - cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ - CFLAGS="$(CFLAGS) -fno-stack-protector -U_FORTIFY_SOURCE" \ - CXXFLAGS="$(CXXFLAGS) -fno-stack-protector -U_FORTIFY_SOURCE" - - # Build the programs with hardening - : > $(DIR_SRC)/glibc-build/configparms cd $(DIR_SRC)/glibc-build && make PARALLELMFLAGS=$(MAKETUNING) \ CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" - cd $(DIR_SRC)/glibc-build && make $(EXTRA_INSTALL) install + cd $(DIR_SRC)/glibc-build && make install ifeq "$(ROOT)" "" # Creating the locales diff --git a/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch b/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch deleted file mode 100644 index 7faf857fa..000000000 --- a/src/patches/glibc-2.12-accept-make-versions-4.0-and-greater.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 28d708c44bc47b56f6551ff285f78edcf61c208a Mon Sep 17 00:00:00 2001 -From: Marc-Antoine Perennou -Date: Thu, 31 Oct 2013 12:37:50 +1000 -Subject: Accept make versions 4.0 and greater - - -diff --git a/configure b/configure -index f382138..5e61abd 100755 ---- a/configure -+++ b/configure -@@ -4761,7 +4761,7 @@ $as_echo_n "checking version of $MAKE... " >&6; } - ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 3.79* | 3.[89]*) -+ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - -diff --git a/configure.in b/configure.in -index 49b70fd..6da8efd 100644 ---- a/configure.in -+++ b/configure.in -@@ -984,7 +984,7 @@ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, - critic_missing="$critic_missing gcc") - AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, - [GNU Make[^0-9]*\([0-9][0-9.]*\)], -- [3.79* | 3.[89]*], critic_missing="$critic_missing make") -+ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") - - AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, - [GNU gettext.* \([0-9]*\.[0-9.]*\)], --- -cgit v0.10.2 - diff --git a/src/patches/glibc-cfi-entry-not-closed.patch b/src/patches/glibc-cfi-entry-not-closed.patch deleted file mode 100644 index 02cfe8fa6..000000000 --- a/src/patches/glibc-cfi-entry-not-closed.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 22:22:41.000000000 +0400 -+++ glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 21:44:49.000000000 +0400 -@@ -18,16 +18,20 @@ - - #include - -+ .text -+ - /* If no SA_RESTORER function was specified by the application we use - one of these. This avoids the need for the kernel to synthesise a return - instruction on the stack, which would involve expensive cache flushes. */ - - ENTRY(__default_sa_restorer) - swi SYS_ify(sigreturn) -+PSEUDO_END (__default_sa_restorer) - - #ifdef __NR_rt_sigreturn - - ENTRY(__default_rt_sa_restorer) - swi SYS_ify(rt_sigreturn) -+PSEUDO_END (__default_rt_sa_restorer) - - #endif diff --git a/src/patches/glibc-remove-ctors-dtors-output-sections.patch b/src/patches/glibc-remove-ctors-dtors-output-sections.patch deleted file mode 100644 index 91155c9af..000000000 --- a/src/patches/glibc-remove-ctors-dtors-output-sections.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001 -From: H.J. Lu -Date: Fri, 24 Dec 2010 20:14:37 -0500 -Subject: [PATCH] Remove `.ctors' and `.dtors' output sections - ---- - config.h.in | 3 + - configure.in | 2 + - elf/sofini.c | 2 + - elf/soinit.c | 2 + - sysdeps/i386/init-first.c | 2 + - sysdeps/mach/hurd/i386/init-first.c | 2 +- - sysdeps/mach/hurd/powerpc/init-first.c | 2 +- - sysdeps/sh/init-first.c | 2 + - sysdeps/unix/sysv/linux/init-first.c | 2 +- - 9 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/config.h.in b/config.h.in -index 18bf01a..9e797eb 100644 ---- a/config.h.in -+++ b/config.h.in -@@ -201,6 +201,9 @@ - /* Define if multi-arch DSOs should be generated. */ - #undef USE_MULTIARCH - -+/* Define if `.ctors' and `.dtors' sections shouldn't be used. */ -+#undef NO_CTORS_DTORS_SECTIONS -+ - /* - */ - -diff --git a/configure.in b/configure.in -index d8cd5f1..ad25b9b 100644 ---- a/configure.in -+++ b/configure.in -@@ -1497,6 +1497,8 @@ EOF - rm -f conftest*]) - if test $libc_cv_initfini_array != yes; then - AC_MSG_ERROR([Need linker with .init_array/.fini_array support.]) -+ elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then -+ AC_DEFINE(NO_CTORS_DTORS_SECTIONS) - fi - - AC_CACHE_CHECK(for libunwind-support in compiler, -diff --git a/elf/sofini.c b/elf/sofini.c -index 5e06f0c..13e74b7 100644 ---- a/elf/sofini.c -+++ b/elf/sofini.c -@@ -1,12 +1,14 @@ - /* Finalizer module for ELF shared C library. This provides terminating - null pointer words in the `.ctors' and `.dtors' sections. */ - -+#ifndef NO_CTORS_DTORS_SECTIONS - static void (*const __CTOR_END__[1]) (void) - __attribute__ ((used, section (".ctors"))) - = { 0 }; - static void (*const __DTOR_END__[1]) (void) - __attribute__ ((used, section (".dtors"))) - = { 0 }; -+#endif - - /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; - this would be the 'length' field in a real FDE. */ -diff --git a/elf/soinit.c b/elf/soinit.c -index 6fecbb5..1db676a 100644 ---- a/elf/soinit.c -+++ b/elf/soinit.c -@@ -3,6 +3,7 @@ - the `.ctors' and `.dtors' sections so the lists are terminated, and - calling those lists of functions. */ - -+#ifndef NO_CTORS_DTORS_SECTIONS - #include - #include - -@@ -40,3 +41,4 @@ __libc_fini (void) - - void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) - = &__libc_fini; -+#endif -diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c -index c6355a8..2af042f 100644 ---- a/sysdeps/i386/init-first.c -+++ b/sysdeps/i386/init-first.c -@@ -59,7 +59,9 @@ _init (int argc, ...) - { - init (&argc); - -+#ifndef NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); -+#endif - } - #endif - -diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c -index f9a7a58..60823bd 100644 ---- a/sysdeps/mach/hurd/i386/init-first.c -+++ b/sysdeps/mach/hurd/i386/init-first.c -@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp) - __getopt_clean_environment (envp); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } -diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c -index 20fa1d4..21b5054 100644 ---- a/sysdeps/mach/hurd/powerpc/init-first.c -+++ b/sysdeps/mach/hurd/powerpc/init-first.c -@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp) - __getopt_clean_environment (__environ); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } -diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c -index d816625..1f3a821 100644 ---- a/sysdeps/sh/init-first.c -+++ b/sysdeps/sh/init-first.c -@@ -59,7 +59,9 @@ _init (int argc, ...) - { - init (&argc); - -+#ifndef NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); -+#endif - } - #endif - -diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c -index 7b2333d..a60212f 100644 ---- a/sysdeps/unix/sysv/linux/init-first.c -+++ b/sysdeps/unix/sysv/linux/init-first.c -@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp) - __getopt_clean_environment (envp); - #endif - --#ifdef SHARED -+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS - __libc_global_ctors (); - #endif - } --- -1.7.3.4 - diff --git a/src/patches/glibc-resolv-stack_chk_fail.patch b/src/patches/glibc-resolv-stack_chk_fail.patch deleted file mode 100644 index 00bb710ab..000000000 --- a/src/patches/glibc-resolv-stack_chk_fail.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e057a1b5930ec538c2b8abbba700a436ef2c81d5 Mon Sep 17 00:00:00 2001 -From: Joseph Myers -Date: Wed, 21 Sep 2011 13:27:50 -0700 -Subject: [PATCH] Link libresolv.so with ld.so for __stack_chk_guard. - ---- - resolv/Makefile | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -diff --git a/resolv/Makefile b/resolv/Makefile -index ec3788f..b4287de 100644 ---- a/resolv/Makefile -+++ b/resolv/Makefile -@@ -1,4 +1,5 @@ --# Copyright (C) 1994-2001,2003,2004,2007,2008 Free Software Foundation, Inc. -+# Copyright (C) 1994-2001,2003,2004,2007,2008,2011 -+# Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -88,6 +89,11 @@ CFLAGS-res_hconf.c = -fexceptions - # This ensures they will load libc.so for needed symbols if loaded by - # a statically-linked program that hasn't already loaded it. - $(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a -+# Some hosts need '__stack_chk_guard', so pull in the definition from -+# ld.so if required. -+ifeq (yesyes,$(have-ssp)$(elf)) -+LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed) -+endif - - # The DNS NSS modules needs the resolver. - $(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \ --- -1.7.3.4 - diff --git a/src/patches/glibc-test-installation.pl-libgcc_s.patch b/src/patches/glibc-test-installation.pl-libgcc_s.patch deleted file mode 100644 index 222135339..000000000 --- a/src/patches/glibc-test-installation.pl-libgcc_s.patch +++ /dev/null @@ -1,88 +0,0 @@ -diff -Naur glibc-2.12-2-gc4ccff1.org/nptl/sysdeps/pthread/unwind-forcedunwind.c glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/unwind-forcedunwind.c -index db56428..495f4b7 100644 ---- glibc-2.12-2-gc4ccff1.org/nptl/sysdeps/pthread/unwind-forcedunwind.c -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/unwind-forcedunwind.c -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - - static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); -diff -Naur glibc-2.12-2-gc4ccff1.org/scripts/test-installation.pl glibc-2.12-2-gc4ccff1/scripts/test-installation.pl -index 25a919b..3f409ab 100755 ---- glibc-2.12-2-gc4ccff1.org/scripts/test-installation.pl -+++ glibc-2.12-2-gc4ccff1/scripts/test-installation.pl -@@ -106,9 +106,10 @@ while () { - # - libnss1_* from glibc-compat add-on - # - libthread_db since it contains unresolved references - # - it's just a test NSS module -+ # - We don't provide the libgcc so we don't test it - if ($name ne "nss_ldap" && $name ne "db1" - && !($name =~/^nss1_/) && $name ne "thread_db" -- && $name ne "nss_test1") { -+ && $name ne "nss_test1" && $name ne "libgcc_s") { - $link_libs .= " -l$name"; - $versions{$name} = $version; - } -diff -Naur glibc-2.12-2-gc4ccff1.org/shlib-versions glibc-2.12-2-gc4ccff1/shlib-versions -index d3e8407..ac98e49 100644 ---- glibc-2.12-2-gc4ccff1.org/shlib-versions -+++ glibc-2.12-2-gc4ccff1/shlib-versions -@@ -138,3 +138,7 @@ sparc64.*-.*-.* libBrokenLocale=1 GLIBC_2.2 - - # The asynchronous name lookup library. - .*-.*-.* libanl=1 -+ -+# This defines the libgcc soname version this glibc is to load for -+# asynchronous cancellation to work correctly. -+.*-.*-.* libgcc_s=1 -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/generic/framestate.c glibc-2.12-2-gc4ccff1/sysdeps/generic/framestate.c -index 80375bb..edc3539 100644 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/generic/framestate.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/framestate.c -@@ -1,5 +1,5 @@ - /* __frame_state_for unwinder helper function wrapper. -- Copyright (C) 2001, 2003 Free Software Foundation, Inc. -+ Copyright (C) 2001-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2001. - -@@ -24,7 +24,7 @@ - #define __frame_state_for fallback_frame_state_for - #include - #undef __frame_state_for --#include -+#include - - typedef struct frame_state * (*framesf)(void *pc, struct frame_state *); - struct frame_state *__frame_state_for (void *pc, -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h -deleted file mode 100644 -index e74a103..0000000 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/generic/libgcc_s.h -+++ /dev/null -@@ -1,2 +0,0 @@ --/* Name of libgcc_s library provided by gcc. */ --#define LIBGCC_S_SO "libgcc_s.so.1" -diff -Naur glibc-2.12-2-gc4ccff1.org/sysdeps/gnu/unwind-resume.c glibc-2.12-2-gc4ccff1/sysdeps/gnu/unwind-resume.c -index f8ff0c4..dab4370 100644 ---- glibc-2.12-2-gc4ccff1.org/sysdeps/gnu/unwind-resume.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/gnu/unwind-resume.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003 Free Software Foundation, Inc. -+/* Copyright (C) 2003-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek . - -@@ -22,7 +22,7 @@ - #include - #include - #include --#include -+#include - - static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); diff --git a/src/patches/glibc-test-installation.pl-nss_test1.patch b/src/patches/glibc-test-installation.pl-nss_test1.patch deleted file mode 100644 index 8881d9498..000000000 --- a/src/patches/glibc-test-installation.pl-nss_test1.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9191c04a7e19fffbea0a08523e579cd8e55142df Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper -Date: Sat, 23 Jul 2011 15:28:31 -0400 -Subject: [PATCH] Adjust test for correct installation - -diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl -index 90cd9d7..25a919b 100755 ---- a/scripts/test-installation.pl -+++ b/scripts/test-installation.pl -@@ -1,5 +1,5 @@ - #! /usr/bin/perl -w --# Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc. -+# Copyright (C) 1997, 1998, 1999, 2004, 2011 Free Software Foundation, Inc. - # This file is part of the GNU C Library. - # Contributed by Andreas Jaeger , 1997. - -@@ -105,8 +105,10 @@ while () { - # - libdb1 since it conflicts with libdb - # - libnss1_* from glibc-compat add-on - # - libthread_db since it contains unresolved references -+ # - it's just a test NSS module - if ($name ne "nss_ldap" && $name ne "db1" -- && !($name =~/^nss1_/) && $name ne "thread_db") { -+ && !($name =~/^nss1_/) && $name ne "thread_db" -+ && $name ne "nss_test1") { - $link_libs .= " -l$name"; - $versions{$name} = $version; - } --- -1.7.3.4 - diff --git a/src/patches/glibc/glibc-aliasing.patch b/src/patches/glibc/glibc-aliasing.patch deleted file mode 100644 index 016a4d496..000000000 --- a/src/patches/glibc/glibc-aliasing.patch +++ /dev/null @@ -1,87 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -129,6 +129,7 @@ include ../Makeconfig - ifeq ($(unwind-find-fde),yes) - routines += unwind-dw2-fde-glibc - shared-only-routines += unwind-dw2-fde-glibc -+CFLAGS-unwind-dw2-fde-glibc.c += -fno-strict-aliasing - endif - - before-compile = $(objpfx)trusted-dirs.h -Index: glibc-2.12-2-gc4ccff1/inet/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/inet/Makefile -+++ glibc-2.12-2-gc4ccff1/inet/Makefile -@@ -57,6 +57,8 @@ tests := htontest test_ifindex tst-ntoa - - include ../Rules - -+CFLAGS-tst-inet6_rth.c += -fno-strict-aliasing -+ - ifeq ($(have-thread-library),yes) - - CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions -Index: glibc-2.12-2-gc4ccff1/nis/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/Makefile -+++ glibc-2.12-2-gc4ccff1/nis/Makefile -@@ -69,6 +69,8 @@ libnss_nisplus-inhibit-o = $(filter-out - - include ../Rules - -+CFLAGS-nis_findserv.c += -fno-strict-aliasing -+CFLAGS-ypclnt.c += -fno-strict-aliasing - - $(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version) - $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \ -Index: glibc-2.12-2-gc4ccff1/nss/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Makefile -+++ glibc-2.12-2-gc4ccff1/nss/Makefile -@@ -74,6 +74,7 @@ endif - - include ../Rules - -+CFLAGS-files-hosts.c += -fno-strict-aliasing - - ifeq (yes,$(build-static-nss)) - $(objpfx)getent: $(objpfx)libnss_files.a -Index: glibc-2.12-2-gc4ccff1/resolv/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/Makefile -+++ glibc-2.12-2-gc4ccff1/resolv/Makefile -@@ -77,6 +77,7 @@ CPPFLAGS += -Dgethostbyname=res_gethostb - -Dgetnetbyaddr=res_getnetbyaddr - - CFLAGS-res_hconf.c = -fexceptions -+CFLAGS-res_send.c += -fno-strict-aliasing - - # The BIND code elicits some harmless warnings. - +cflags += -Wno-strict-prototypes -Wno-write-strings -Index: glibc-2.12-2-gc4ccff1/sunrpc/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sunrpc/Makefile -+++ glibc-2.12-2-gc4ccff1/sunrpc/Makefile -@@ -129,6 +129,10 @@ CFLAGS-openchild.c = -fexceptions - - CPPFLAGS += -D_RPC_THREAD_SAFE_ - -+CFLAGS-clnt_tcp.c += -fno-strict-aliasing -+CFLAGS-clnt_udp.c += -fno-strict-aliasing -+CFLAGS-clnt_unix.c += -fno-strict-aliasing -+ - include ../Rules - - $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/powerpc/powerpc64/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/elf/Makefile -@@ -9,3 +9,5 @@ CFLAGS-rtld-mempcpy.os = $(no-special-re - CFLAGS-rtld-memmove.os = $(no-special-regs) - CFLAGS-rtld-memchr.os = $(no-special-regs) - CFLAGS-rtld-strnlen.os = $(no-special-regs) -+ -+CFLAGS-gmon-start.c += -fno-strict-aliasing diff --git a/src/patches/glibc/glibc-fedora.patch b/src/patches/glibc/glibc-fedora.patch deleted file mode 100644 index 5a7fce94d..000000000 --- a/src/patches/glibc/glibc-fedora.patch +++ /dev/null @@ -1,2106 +0,0 @@ ---- glibc-2.12-2-gc4ccff1/ChangeLog -+++ glibc-2.12-1/ChangeLog -@@ -241,6 +241,12 @@ - - * Makerules (libc-abis): Fix search for libc-abis in add-ons. - -+2010-04-06 Ulrich Drepper -+ -+ * sysdeps/posix/getaddrinfo.c (default_scopes): Assign global -+ scope to RFC 1918 addresses. -+ * posix/gai.conf: Document difference from RFC 3484. -+ - 2010-04-05 Thomas Schwinge - - * sysdeps/gnu/unwind-resume.c: New, moved from nptl/sysdeps/pthread/. -@@ -995,6 +1001,19 @@ - * sysdeps/x86_64/fpu/fegetenv.c: Likewise - * sysdeps/s390/fpu/fegetenv.c: Likewise. Remove unused headers. - -+2009-10-27 Aurelien Jarno -+ -+ [BZ #10855] -+ * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory -+ used later with MMAP_FIXED | MMAP_SHARED to cope with different -+ alignment restrictions. -+ -+2010-02-08 Andreas Schwab -+ -+ [BZ #11155] -+ * sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c: Include i386 -+ version. -+ - 2010-02-05 H.J. Lu - - [BZ #11230] -@@ -2938,6 +2957,11 @@ d2009-10-30 Ulrich Drepper -+ -+ * Makeconfig (ASFLAGS): Append $(sysdep-ASFLAGS). -+ * sysdeps/i386/Makefile (sysdep-ASFLAGS): Add -U__i686. -+ - 2009-07-21 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strstr.c: Minor cleanups. Remove -@@ -3203,6 +3227,11 @@ d2009-10-30 Ulrich Drepper -+ -+ * timezone/zic.c (stringzone): Don't try to generate a POSIX TZ -+ string when the timezone ends in DST. -+ - 2009-06-26 Ulrich Drepper - - * resolv/resolv.h: Define RES_SNGLKUPREOP. -@@ -11896,6 +11925,10 @@ d2009-10-30 Ulrich Drepper -+ -+ * locale/programs/locarchive.c (add_alias, insert_name): Remove static. -+ - 2007-04-16 Ulrich Drepper - - [BZ #4364] -@@ -13153,6 +13186,15 @@ d2009-10-30 Ulrich Drepper -+ -+ * sysdeps/unix/sysv/linux/netlinkaccess.h: Include linux/if_addr.h -+ if IFA_MAX is not defined. -+ (IFA_RTA, IFA_PAYLOAD, IFLA_RTA, IFLA_PAYLOAD): Define if not -+ defined. -+ * sysdeps/unix/sysv/linux/check_pf.c: Include netlinkaccess.h -+ instead of asm/types.h, linux/netlink.h and linux/rtnetlink.h. -+ - 2006-12-09 Ulrich Drepper - - [BZ #3632] ---- glibc-2.12-2-gc4ccff1/ChangeLog.15 -+++ glibc-2.12-1/ChangeLog.15 -@@ -477,6 +477,14 @@ - - 2004-11-26 Jakub Jelinek - -+ * posix/Makefile (generated: Add getconf.speclist. -+ ($(inst_libexecdir)/getconf): Use getconf.speclist instead of -+ getconf output. -+ ($(objpfx)getconf.speclist): New rule. -+ * posix/getconf.speclist.h: New file. -+ -+2004-11-26 Jakub Jelinek -+ - * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR. - - 2004-11-26 Kaz Kojima -@@ -1103,6 +1111,13 @@ - * sysdeps/generic/tempname.c (__path_search): Add missing argument - TRY_TMPDIR. - -+2004-11-02 Jakub Jelinek -+ -+ * include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat -+ GCC 3.4.x-RH >= 3.4.2-8. -+ * debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not -+ being able to recognize subobjects. -+ - 2004-10-31 Mariusz Mazur - - * sysdeps/unix/sysv/linux/alpha/setregid.c: New file. -@@ -1443,6 +1458,11 @@ - * sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ... - (__readonly_area): ... this. - -+2004-10-19 Jakub Jelinek -+ -+ * include/features.h (__USE_FORTIFY_LEVEL): Enable even with -+ Red Hat gcc4 4.0.0 and above. -+ - 2004-10-18 Jakub Jelinek - - * sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking -@@ -3182,6 +3202,23 @@ - before return type. - * locale/localename.c (__current_locale_name): Likewise. - -+2004-08-31 Jakub Jelinek -+ -+ * elf/ldconfig.c (parse_conf): Add prefix argument, prepend it -+ before arguments to add_dir and pass to parse_conf_include. -+ (parse_conf_include): Add prefix argument, pass it down to -+ parse_conf. -+ (main): Call arch_startup. Adjust parse_conf caller. -+ Call add_arch_dirs. -+ * sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/i386/dl-cache.h: New file. -+ * sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup, -+ add_arch_dirs): Define. -+ * sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend -+ /emul/ia32-linux before the 32-bit ld.so pathname. -+ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file. -+ * sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file. -+ - 2004-08-30 Roland McGrath - - * scripts/extract-abilist.awk: If `lastversion' variable defined, omit ---- glibc-2.12-2-gc4ccff1/ChangeLog.16 -+++ glibc-2.12-1/ChangeLog.16 -@@ -2042,6 +2042,9 @@ - (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT - followed by __THROW. - -+ * sysdeps/unix/sysv/linux/futimesat.c (futimesat): If -+ file == NULL, use __futimes unconditionally. -+ - 2006-02-02 Ulrich Drepper - - * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] -@@ -2101,6 +2104,11 @@ - * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. - * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. - -+2006-01-30 Jakub Jelinek -+ -+ * include/bits/stdlib-ldbl.h: New file. -+ * include/bits/wchar-ldbl.h: New file. -+ - 2006-01-19 Thomas Schwinge - - * libio/genops.c: Include . -@@ -8922,6 +8930,12 @@ - * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. - (__argp_failure): Likewise. - -+2005-08-08 Jakub Jelinek -+ -+ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): -+ Shift marked &errno down on big-endian instead of up. -+ * elf/tst-stackguard1.c (do_test): Fix a typo. -+ - 2005-08-08 Ulrich Drepper - - * nscd/cache.c (cache_add): Commit hash table and header to disk. -@@ -9046,6 +9060,17 @@ - __syslog_chk. - * misc/Versions: Export __syslog_chk and __vsyslog_chk. - -+2005-07-29 Jakub Jelinek -+ -+ * sysdeps/unix/sysv/linux/dl-osinfo.h: Include errno.h, hp-timing.h, -+ endian.h. -+ (_dl_setup_stack_chk_guard): Even without -+ --enable-stackguard-randomization attempt to do some guard -+ randomization using hp-timing (if available) and kernel stack and -+ mmap randomization. -+ * elf/tst-stackguard1.c (do_test): Don't fail if the poor man's -+ randomization doesn't work well enough. -+ - 2005-07-28 Thomas Schwinge - - [BZ #1137] ---- glibc-2.12-2-gc4ccff1/Makeconfig -+++ glibc-2.12-1/Makeconfig -@@ -789,12 +789,12 @@ endif - # The assembler can generate debug information too. - ifndef ASFLAGS - ifeq ($(have-cpp-asm-debuginfo),yes) --ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) -+ASFLAGS = $(filter -g% -fdebug-prefix-map=%,$(CFLAGS)) - else --ASFLAGS := -+ASFLAGS = - endif - endif --ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) -+ASFLAGS += $(ASFLAGS-config) $(asflags-cpu) $(sysdep-ASFLAGS) - - ifndef BUILD_CC - BUILD_CC = $(CC) ---- glibc-2.12-2-gc4ccff1/csu/Makefile -+++ glibc-2.12-1/csu/Makefile -@@ -93,7 +93,8 @@ omit-deps += $(crtstuff) - $(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h - $(compile.S) -g0 $(ASFLAGS-.os) -o $@ - --CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ -+ -fno-asynchronous-unwind-tables - - vpath initfini.c $(sysdirs) - ---- glibc-2.12-2-gc4ccff1/csu/elf-init.c -+++ glibc-2.12-1/csu/elf-init.c -@@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, - extern void (*__fini_array_start []) (void) attribute_hidden; - extern void (*__fini_array_end []) (void) attribute_hidden; - -+#if defined HAVE_VISIBILITY_ATTRIBUTE \ -+ && (defined SHARED || defined LIBC_NONSHARED) -+# define hidden_undef_2(x) #x -+# define hidden_undef_1(x) hidden_undef_2 (x) -+# define hidden_undef(x) \ -+ __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \ -+ __asm (".hidden " #x); -+#else -+# define hidden_undef(x) -+#endif -+ -+hidden_undef (__preinit_array_start) -+hidden_undef (__preinit_array_end) -+hidden_undef (__init_array_start) -+hidden_undef (__init_array_end) -+hidden_undef (__fini_array_start) -+hidden_undef (__fini_array_end) - - /* These function symbols are provided for the .init/.fini section entry - points automagically by the linker. */ ---- glibc-2.12-2-gc4ccff1/debug/tst-chk1.c -+++ glibc-2.12-1/debug/tst-chk1.c -@@ -17,6 +17,9 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+/* Hack: make sure GCC doesn't know __chk_fail () will not return. */ -+#define __noreturn__ -+ - #include - #include - #include -@@ -242,7 +245,7 @@ do_test (void) - if (memcmp (a.buf1, "aabcdabcjj", 10)) - FAIL (); - --#if __USE_FORTIFY_LEVEL < 2 -+#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0) - /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2 - and sufficient GCC support, as the string operations overflow - from a.buf1 into a.buf2. */ -@@ -357,7 +360,7 @@ do_test (void) - memset (a.buf1 + 9, 'j', l0 + 2); - CHK_FAIL_END - --# if __USE_FORTIFY_LEVEL >= 2 -+# if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0) - # define O 0 - # else - # define O 1 ---- glibc-2.12-2-gc4ccff1/elf/ldconfig.c -+++ glibc-2.12-1/elf/ldconfig.c -@@ -1031,17 +1031,19 @@ search_dirs (void) - - - static void parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern); -+ const char *prefix, bool do_chroot, -+ const char *pattern); - - /* Parse configuration file. */ - static void --parse_conf (const char *filename, bool do_chroot) -+parse_conf (const char *filename, const char *prefix, bool do_chroot) - { - FILE *file = NULL; - char *line = NULL; - const char *canon; - size_t len = 0; - unsigned int lineno; -+ size_t prefix_len = prefix ? strlen (prefix) : 0; - - if (do_chroot && opt_chroot) - { -@@ -1102,7 +1104,14 @@ parse_conf (const char *filename, bool d - cp += 8; - while ((dir = strsep (&cp, " \t")) != NULL) - if (dir[0] != '\0') -- parse_conf_include (filename, lineno, do_chroot, dir); -+ parse_conf_include (filename, lineno, prefix, do_chroot, dir); -+ } -+ else if (prefix != NULL) -+ { -+ size_t cp_len = strlen (cp); -+ char new_cp [prefix_len + cp_len + 1]; -+ memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1); -+ add_dir (new_cp); - } - else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5])) - { -@@ -1165,7 +1174,7 @@ parse_conf (const char *filename, bool d - config files to read. */ - static void - parse_conf_include (const char *config_file, unsigned int lineno, -- bool do_chroot, const char *pattern) -+ const char *prefix, bool do_chroot, const char *pattern) - { - if (opt_chroot && pattern[0] != '/') - error (EXIT_FAILURE, 0, -@@ -1197,7 +1206,7 @@ parse_conf_include (const char *config_f - { - case 0: - for (size_t i = 0; i < gl.gl_pathc; ++i) -- parse_conf (gl.gl_pathv[i], false); -+ parse_conf (gl.gl_pathv[i], prefix, false); - globfree64 (&gl); - break; - -@@ -1240,6 +1249,8 @@ main (int argc, char **argv) - /* Set the text message domain. */ - textdomain (_libc_intl_domainname); - -+ arch_startup (argc, argv); -+ - /* Parse and process arguments. */ - int remaining; - argp_parse (&argp, argc, argv, 0, &remaining, NULL); -@@ -1349,12 +1360,14 @@ main (int argc, char **argv) - - if (!opt_only_cline) - { -- parse_conf (config_file, true); -+ parse_conf (config_file, NULL, true); - - /* Always add the standard search paths. */ - add_system_dir (SLIBDIR); - if (strcmp (SLIBDIR, LIBDIR)) - add_system_dir (LIBDIR); -+ -+ add_arch_dirs (config_file); - } - - char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE; ---- glibc-2.12-2-gc4ccff1/elf/tst-stackguard1.c -+++ glibc-2.12-1/elf/tst-stackguard1.c -@@ -160,17 +160,21 @@ do_test (void) - the 16 runs, something is very wrong. */ - int ndifferences = 0; - int ndefaults = 0; -+ int npartlyrandomized = 0; - for (i = 0; i < N; ++i) - { - if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) - ndifferences++; - else if (child_stack_chk_guards[i] == default_guard) - ndefaults++; -+ else if (*(char *) &child_stack_chk_guards[i] == 0) -+ npartlyrandomized++; - } - -- printf ("differences %d defaults %d\n", ndifferences, ndefaults); -+ printf ("differences %d defaults %d partly randomized %d\n", -+ ndifferences, ndefaults, npartlyrandomized); - -- if (ndifferences < N / 2 && ndefaults < N / 2) -+ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) - { - puts ("stack guard canaries are not randomized enough"); - puts ("nor equal to the default canary value"); ---- glibc-2.12-2-gc4ccff1/include/bits/stdlib-ldbl.h -+++ glibc-2.12-1/include/bits/stdlib-ldbl.h -@@ -0,0 +1 @@ -+#include ---- glibc-2.12-2-gc4ccff1/include/bits/wchar-ldbl.h -+++ glibc-2.12-1/include/bits/wchar-ldbl.h -@@ -0,0 +1 @@ -+#include ---- glibc-2.12-2-gc4ccff1/include/features.h -+++ glibc-2.12-1/include/features.h -@@ -308,8 +308,13 @@ - #endif - - #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ -- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 --# if _FORTIFY_SOURCE > 1 -+ && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 -+# if !__GNUC_PREREQ (4, 1) -+# ifdef __GNUC_RH_RELEASE__ -+# warning _FORTIFY_SOURCE supported only with GCC 4.1 and later -+# endif -+# define __USE_FORTIFY_LEVEL 0 -+# elif _FORTIFY_SOURCE > 1 - # define __USE_FORTIFY_LEVEL 2 - # else - # define __USE_FORTIFY_LEVEL 1 ---- glibc-2.12-2-gc4ccff1/intl/locale.alias -+++ glibc-2.12-1/intl/locale.alias -@@ -57,8 +57,6 @@ korean ko_KR.eucKR - korean.euc ko_KR.eucKR - ko_KR ko_KR.eucKR - lithuanian lt_LT.ISO-8859-13 --no_NO nb_NO.ISO-8859-1 --no_NO.ISO-8859-1 nb_NO.ISO-8859-1 - norwegian nb_NO.ISO-8859-1 - nynorsk nn_NO.ISO-8859-1 - polish pl_PL.ISO-8859-2 ---- glibc-2.12-2-gc4ccff1/libio/stdio.h -+++ glibc-2.12-1/libio/stdio.h -@@ -165,10 +165,12 @@ typedef _G_fpos64_t fpos64_t; - extern struct _IO_FILE *stdin; /* Standard input stream. */ - extern struct _IO_FILE *stdout; /* Standard output stream. */ - extern struct _IO_FILE *stderr; /* Standard error output stream. */ -+#ifdef __STDC__ - /* C89/C99 say they're macros. Make them happy. */ - #define stdin stdin - #define stdout stdout - #define stderr stderr -+#endif - - __BEGIN_NAMESPACE_STD - /* Remove file FILENAME. */ ---- glibc-2.12-2-gc4ccff1/locale/iso-4217.def -+++ glibc-2.12-1/locale/iso-4217.def -@@ -8,6 +8,7 @@ - * - * !!! The list has to be sorted !!! - */ -+DEFINE_INT_CURR("ADP") /* Andorran Peseta -> EUR */ - DEFINE_INT_CURR("AED") /* United Arab Emirates Dirham */ - DEFINE_INT_CURR("AFN") /* Afghanistan Afgani */ - DEFINE_INT_CURR("ALL") /* Albanian Lek */ -@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD") /* Armenia Dram - DEFINE_INT_CURR("ANG") /* Netherlands Antilles */ - DEFINE_INT_CURR("AOA") /* Angolan Kwanza */ - DEFINE_INT_CURR("ARS") /* Argentine Peso */ -+DEFINE_INT_CURR("ATS") /* Austrian Schilling -> EUR */ - DEFINE_INT_CURR("AUD") /* Australian Dollar */ - DEFINE_INT_CURR("AWG") /* Aruba Guilder */ - DEFINE_INT_CURR("AZM") /* Azerbaijan Manat */ - DEFINE_INT_CURR("BAM") /* Bosnian and Herzegovina Convertible Mark */ - DEFINE_INT_CURR("BBD") /* Barbados Dollar */ - DEFINE_INT_CURR("BDT") /* Bangladesh Taka */ -+DEFINE_INT_CURR("BEF") /* Belgian Franc -> EUR */ - DEFINE_INT_CURR("BGN") /* Bulgarian Lev */ - DEFINE_INT_CURR("BHD") /* Bahraini Dinar */ - DEFINE_INT_CURR("BIF") /* Burundi Franc */ -@@ -44,6 +47,7 @@ DEFINE_INT_CURR("CUP") /* Cuban Peso * - DEFINE_INT_CURR("CVE") /* Cape Verde Escudo */ - DEFINE_INT_CURR("CYP") /* Cypriot Pound */ - DEFINE_INT_CURR("CZK") /* Czech Koruna */ -+DEFINE_INT_CURR("DEM") /* German Mark -> EUR */ - DEFINE_INT_CURR("DJF") /* Djibouti Franc */ - DEFINE_INT_CURR("DKK") /* Danish Krone (Faroe Islands, Greenland) */ - DEFINE_INT_CURR("DOP") /* Dominican Republic */ -@@ -51,16 +55,20 @@ DEFINE_INT_CURR("DZD") /* Algerian Dina - DEFINE_INT_CURR("EEK") /* Estonian Kroon */ - DEFINE_INT_CURR("EGP") /* Egyptian Pound */ - DEFINE_INT_CURR("ERN") /* Eritrean Nakfa */ -+DEFINE_INT_CURR("ESP") /* Spanish Peseta -> EUR */ - DEFINE_INT_CURR("ETB") /* Ethiopian Birr */ - DEFINE_INT_CURR("EUR") /* European Union Euro */ -+DEFINE_INT_CURR("FIM") /* Finnish Markka -> EUR */ - DEFINE_INT_CURR("FJD") /* Fiji Dollar */ - DEFINE_INT_CURR("FKP") /* Falkland Islands Pound (Malvinas) */ -+DEFINE_INT_CURR("FRF") /* French Franc -> EUR */ - DEFINE_INT_CURR("GBP") /* British Pound */ - DEFINE_INT_CURR("GEL") /* Georgia Lari */ - DEFINE_INT_CURR("GHC") /* Ghana Cedi */ - DEFINE_INT_CURR("GIP") /* Gibraltar Pound */ - DEFINE_INT_CURR("GMD") /* Gambian Dalasi */ - DEFINE_INT_CURR("GNF") /* Guinea Franc */ -+DEFINE_INT_CURR("GRD") /* Greek Drachma -> EUR */ - DEFINE_INT_CURR("GTQ") /* Guatemala Quetzal */ - DEFINE_INT_CURR("GYD") /* Guyana Dollar */ - DEFINE_INT_CURR("HKD") /* Hong Kong Dollar */ -@@ -69,12 +77,14 @@ DEFINE_INT_CURR("HRK") /* Croatia Kuna - DEFINE_INT_CURR("HTG") /* Haiti Gourde */ - DEFINE_INT_CURR("HUF") /* Hungarian Forint */ - DEFINE_INT_CURR("IDR") /* Indonesia Rupiah */ -+DEFINE_INT_CURR("IEP") /* Irish Pound -> EUR */ - DEFINE_INT_CURR("ILS") /* Israeli Shekel */ - DEFINE_INT_CURR("IMP") /* Isle of Man Pounds */ - DEFINE_INT_CURR("INR") /* Indian Rupee (Bhutan) */ - DEFINE_INT_CURR("IQD") /* Iraqi Dinar */ - DEFINE_INT_CURR("IRR") /* Iranian Rial */ - DEFINE_INT_CURR("ISK") /* Iceland Krona */ -+DEFINE_INT_CURR("ITL") /* Italian Lira -> EUR */ - DEFINE_INT_CURR("JEP") /* Jersey Pound */ - DEFINE_INT_CURR("JMD") /* Jamaican Dollar */ - DEFINE_INT_CURR("JOD") /* Jordanian Dinar */ -@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR") /* Sri Lankan Ru - DEFINE_INT_CURR("LRD") /* Liberian Dollar */ - DEFINE_INT_CURR("LSL") /* Lesotho Maloti */ - DEFINE_INT_CURR("LTL") /* Lithuanian Litas */ -+DEFINE_INT_CURR("LUF") /* Luxembourg Franc -> EUR */ - DEFINE_INT_CURR("LVL") /* Latvia Lat */ - DEFINE_INT_CURR("LYD") /* Libyan Arab Jamahiriya Dinar */ - DEFINE_INT_CURR("MAD") /* Moroccan Dirham */ -@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM") /* Mozambique Me - DEFINE_INT_CURR("NAD") /* Namibia Dollar */ - DEFINE_INT_CURR("NGN") /* Nigeria Naira */ - DEFINE_INT_CURR("NIO") /* Nicaragua Cordoba Oro */ -+DEFINE_INT_CURR("NLG") /* Netherlands Guilder -> EUR */ - DEFINE_INT_CURR("NOK") /* Norwegian Krone */ - DEFINE_INT_CURR("NPR") /* Nepalese Rupee */ - DEFINE_INT_CURR("NZD") /* New Zealand Dollar */ -@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK") /* Papau New Gui - DEFINE_INT_CURR("PHP") /* Philippines Peso */ - DEFINE_INT_CURR("PKR") /* Pakistan Rupee */ - DEFINE_INT_CURR("PLN") /* Polish Zloty */ -+DEFINE_INT_CURR("PTE") /* Portugese Escudo -> EUR */ - DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ - DEFINE_INT_CURR("QAR") /* Qatar Rial */ - DEFINE_INT_CURR("ROL") /* Romanian Leu */ ---- glibc-2.12-2-gc4ccff1/locale/programs/locarchive.c -+++ glibc-2.12-1/locale/programs/locarchive.c -@@ -134,7 +134,7 @@ create_archive (const char *archivefname - size_t reserved = RESERVE_MMAP_SIZE; - int xflags = 0; - if (total < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -241,9 +241,9 @@ oldlocrecentcmp (const void *a, const vo - /* forward decls for below */ - static uint32_t add_locale (struct locarhandle *ah, const char *name, - locale_data_t data, bool replace); --static void add_alias (struct locarhandle *ah, const char *alias, -- bool replace, const char *oldname, -- uint32_t *locrec_offset_p); -+void add_alias (struct locarhandle *ah, const char *alias, -+ bool replace, const char *oldname, -+ uint32_t *locrec_offset_p); - - - static bool -@@ -396,7 +396,7 @@ enlarge_archive (struct locarhandle *ah, - size_t reserved = RESERVE_MMAP_SIZE; - int xflags = 0; - if (total < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -614,7 +614,7 @@ open_archive (struct locarhandle *ah, bo - int xflags = 0; - void *p; - if (st.st_size < reserved -- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, -+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, - -1, 0)) != MAP_FAILED)) - xflags = MAP_FIXED; - else -@@ -649,7 +649,7 @@ close_archive (struct locarhandle *ah) - #include "../../intl/explodename.c" - #include "../../intl/l10nflist.c" - --static struct namehashent * -+struct namehashent * - insert_name (struct locarhandle *ah, - const char *name, size_t name_len, bool replace) - { -@@ -707,7 +707,7 @@ insert_name (struct locarhandle *ah, - return &namehashtab[idx]; - } - --static void -+void - add_alias (struct locarhandle *ah, const char *alias, bool replace, - const char *oldname, uint32_t *locrec_offset_p) - { ---- glibc-2.12-2-gc4ccff1/localedata/Makefile -+++ glibc-2.12-1/localedata/Makefile -@@ -227,6 +227,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo - echo -n '...'; \ - input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ - $(LOCALEDEF) --alias-file=../intl/locale.alias \ -+ --no-archive \ - -i locales/$$input -c -f charmaps/$$charset \ - $(addprefix --prefix=,$(install_root)) $$locale; \ - echo ' done'; \ ---- glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -+++ glibc-2.12-1/localedata/SUPPORTED -@@ -85,6 +85,7 @@ cy_GB.UTF-8/UTF-8 \ - cy_GB/ISO-8859-14 \ - da_DK.UTF-8/UTF-8 \ - da_DK/ISO-8859-1 \ -+da_DK.ISO-8859-15/ISO-8859-15 \ - de_AT.UTF-8/UTF-8 \ - de_AT/ISO-8859-1 \ - de_AT@euro/ISO-8859-15 \ -@@ -116,6 +117,7 @@ en_DK.UTF-8/UTF-8 \ - en_DK/ISO-8859-1 \ - en_GB.UTF-8/UTF-8 \ - en_GB/ISO-8859-1 \ -+en_GB.ISO-8859-15/ISO-8859-15 \ - en_HK.UTF-8/UTF-8 \ - en_HK/ISO-8859-1 \ - en_IE.UTF-8/UTF-8 \ -@@ -131,6 +133,7 @@ en_SG.UTF-8/UTF-8 \ - en_SG/ISO-8859-1 \ - en_US.UTF-8/UTF-8 \ - en_US/ISO-8859-1 \ -+en_US.ISO-8859-15/ISO-8859-15 \ - en_ZA.UTF-8/UTF-8 \ - en_ZA/ISO-8859-1 \ - en_ZW.UTF-8/UTF-8 \ -@@ -307,6 +310,8 @@ nl_NL/ISO-8859-1 \ - nl_NL@euro/ISO-8859-15 \ - nn_NO.UTF-8/UTF-8 \ - nn_NO/ISO-8859-1 \ -+no_NO.UTF-8/UTF-8 \ -+no_NO/ISO-8859-1 \ - nr_ZA/UTF-8 \ - nso_ZA/UTF-8 \ - oc_FR.UTF-8/UTF-8 \ -@@ -367,6 +372,7 @@ sv_FI/ISO-8859-1 \ - sv_FI@euro/ISO-8859-15 \ - sv_SE.UTF-8/UTF-8 \ - sv_SE/ISO-8859-1 \ -+sv_SE.ISO-8859-15/ISO-8859-15 \ - ta_IN/UTF-8 \ - te_IN/UTF-8 \ - tg_TJ.UTF-8/UTF-8 \ ---- glibc-2.12-2-gc4ccff1/localedata/locales/cy_GB -+++ glibc-2.12-1/localedata/locales/cy_GB -@@ -248,8 +248,11 @@ mon "" - d_fmt "" - t_fmt "" --am_pm "";"" --t_fmt_ampm "" -+am_pm "";"" -+t_fmt_ampm "" -+date_fmt "/ -+/ -+" - END LC_TIME - - LC_MESSAGES ---- glibc-2.12-2-gc4ccff1/localedata/locales/en_GB -+++ glibc-2.12-1/localedata/locales/en_GB -@@ -116,8 +116,8 @@ mon "" - d_fmt "" - t_fmt "" --am_pm "";"" --t_fmt_ampm "" -+am_pm "";"" -+t_fmt_ampm "" - date_fmt "/ - / - " ---- glibc-2.12-2-gc4ccff1/localedata/locales/no_NO -+++ glibc-2.12-1/localedata/locales/no_NO -@@ -0,0 +1,69 @@ -+escape_char / -+comment_char % -+ -+% Norwegian language locale for Norway -+% Source: Norsk Standardiseringsforbund -+% Address: University Library, -+% Drammensveien 41, N-9242 Oslo, Norge -+% Contact: Kolbjoern Aamboe -+% Tel: +47 - 22859109 -+% Fax: +47 - 22434497 -+% Email: kolbjorn.aambo@usit.uio.no -+% Language: no -+% Territory: NO -+% Revision: 4.3 -+% Date: 1996-10-15 -+% Application: general -+% Users: general -+% Repertoiremap: mnemonic.ds -+% Charset: ISO-8859-1 -+% Distribution and use is free, also -+% for commercial purposes. -+ -+LC_IDENTIFICATION -+copy "nb_NO" -+END LC_IDENTIFICATION -+ -+LC_COLLATE -+copy "nb_NO" -+END LC_COLLATE -+ -+LC_CTYPE -+copy "nb_NO" -+END LC_CTYPE -+ -+LC_MONETARY -+copy "nb_NO" -+END LC_MONETARY -+ -+LC_NUMERIC -+copy "nb_NO" -+END LC_NUMERIC -+ -+LC_TIME -+copy "nb_NO" -+END LC_TIME -+ -+LC_MESSAGES -+copy "nb_NO" -+END LC_MESSAGES -+ -+LC_PAPER -+copy "nb_NO" -+END LC_PAPER -+ -+LC_TELEPHONE -+copy "nb_NO" -+END LC_TELEPHONE -+ -+LC_MEASUREMENT -+copy "nb_NO" -+END LC_MEASUREMENT -+ -+LC_NAME -+copy "nb_NO" -+END LC_NAME -+ -+LC_ADDRESS -+copy "nb_NO" -+END LC_ADDRESS ---- glibc-2.12-2-gc4ccff1/localedata/locales/zh_TW -+++ glibc-2.12-1/localedata/locales/zh_TW -@@ -1,7 +1,7 @@ - comment_char % - escape_char / - % --% Chinese language locale for Taiwan R.O.C. -+% Chinese language locale for Taiwan - % charmap: BIG5-CP950 - % - % Original Author: -@@ -17,7 +17,7 @@ escape_char / - % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf - - LC_IDENTIFICATION --title "Chinese locale for Taiwan R.O.C." -+title "Chinese locale for Taiwan" - source "" - address "" - contact "" -@@ -25,7 +25,7 @@ email "bug-glibc-locales@gnu.org" - tel "" - fax "" - language "Chinese" --territory "Taiwan R.O.C." -+territory "Taiwan" - revision "0.2" - date "2000-08-02" - % ---- glibc-2.12-2-gc4ccff1/malloc/mcheck.c -+++ glibc-2.12-1/malloc/mcheck.c -@@ -24,9 +24,25 @@ - # include - # include - # include -+# include - # include - #endif - -+#ifdef _LIBC -+extern __typeof (malloc) __libc_malloc; -+extern __typeof (free) __libc_free; -+extern __typeof (realloc) __libc_realloc; -+libc_hidden_proto (__libc_malloc) -+libc_hidden_proto (__libc_realloc) -+libc_hidden_proto (__libc_free) -+libc_hidden_proto (__libc_memalign) -+#else -+# define __libc_malloc(sz) malloc (sz) -+# define __libc_free(ptr) free (ptr) -+# define __libc_realloc(ptr, sz) realloc (ptr, sz) -+# define __libc_memalign(al, sz) memalign (al, sz) -+#endif -+ - /* Old hook values. */ - static void (*old_free_hook) (__ptr_t ptr, __const __ptr_t); - static __ptr_t (*old_malloc_hook) (__malloc_size_t size, const __ptr_t); -@@ -197,7 +213,7 @@ freehook (__ptr_t ptr, const __ptr_t cal - if (old_free_hook != NULL) - (*old_free_hook) (ptr, caller); - else -- free (ptr); -+ __libc_free (ptr); - __free_hook = freehook; - } - -@@ -214,7 +230,7 @@ mallochook (__malloc_size_t size, const - hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1, - caller); - else -- hdr = (struct hdr *) malloc (sizeof (struct hdr) + size + 1); -+ hdr = (struct hdr *) __libc_malloc (sizeof (struct hdr) + size + 1); - __malloc_hook = mallochook; - if (hdr == NULL) - return NULL; -@@ -245,7 +261,7 @@ memalignhook (__malloc_size_t alignment, - if (old_memalign_hook != NULL) - block = (*old_memalign_hook) (alignment, slop + size + 1, caller); - else -- block = memalign (alignment, slop + size + 1); -+ block = __libc_memalign (alignment, slop + size + 1); - __memalign_hook = memalignhook; - if (block == NULL) - return NULL; -@@ -300,8 +316,8 @@ reallochook (__ptr_t ptr, __malloc_size_ - sizeof (struct hdr) + size + 1, - caller); - else -- hdr = (struct hdr *) realloc ((__ptr_t) hdr, -- sizeof (struct hdr) + size + 1); -+ hdr = (struct hdr *) __libc_realloc ((__ptr_t) hdr, -+ sizeof (struct hdr) + size + 1); - __free_hook = freehook; - __malloc_hook = mallochook; - __memalign_hook = memalignhook; -@@ -361,8 +377,8 @@ mcheck (func) - if (__malloc_initialized <= 0 && !mcheck_used) - { - /* We call malloc() once here to ensure it is initialized. */ -- void *p = malloc (0); -- free (p); -+ void *p = __libc_malloc (0); -+ __libc_free (p); - - old_free_hook = __free_hook; - __free_hook = freehook; ---- glibc-2.12-2-gc4ccff1/manual/libc.texinfo -+++ glibc-2.12-1/manual/libc.texinfo -@@ -5,7 +5,7 @@ - @c setchapternewpage odd - - @comment Tell install-info what to do. --@dircategory Software libraries -+@dircategory Libraries - @direntry - * Libc: (libc). C library. - @end direntry ---- glibc-2.12-2-gc4ccff1/misc/sys/cdefs.h -+++ glibc-2.12-1/misc/sys/cdefs.h -@@ -132,7 +132,10 @@ - #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) - #define __bos0(ptr) __builtin_object_size (ptr, 0) - --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __warndecl(name, msg) \ - extern void name (void) __attribute__((__warning__ (msg))) - # define __warnattr(msg) __attribute__((__warning__ (msg))) -@@ -291,10 +294,16 @@ - - /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. */ --#if !defined __cplusplus || __GNUC_PREREQ (4,3) -+#if !defined __cplusplus || __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # if defined __GNUC_STDC_INLINE__ || defined __cplusplus - # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) --# if __GNUC_PREREQ (4,3) -+# if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __extern_always_inline \ - extern __always_inline __attribute__ ((__gnu_inline__, __artificial__)) - # else -@@ -314,7 +323,10 @@ - - /* GCC 4.3 and above allow passing all anonymous arguments of an - __extern_always_inline function to some other vararg function. */ --#if __GNUC_PREREQ (4,3) -+#if __GNUC_PREREQ (4,3) \ -+ || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \ -+ && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \ -+ && __GNUC_RH_RELEASE__ >= 31) - # define __va_arg_pack() __builtin_va_arg_pack () - # define __va_arg_pack_len() __builtin_va_arg_pack_len () - #endif ---- glibc-2.12-2-gc4ccff1/nis/nss -+++ glibc-2.12-1/nis/nss -@@ -25,7 +25,7 @@ - # memory with every getXXent() call. Otherwise each getXXent() call - # might result into a network communication with the server to get - # the next entry. --#SETENT_BATCH_READ=TRUE -+SETENT_BATCH_READ=TRUE - # - # ADJUNCT_AS_SHADOW - # If set to TRUE, the passwd routines in the NIS NSS module will not ---- glibc-2.12-2-gc4ccff1/nptl/ChangeLog -+++ glibc-2.12-1/nptl/ChangeLog -@@ -3884,6 +3884,15 @@ - Use __sigfillset. Document that sigfillset does the right thing wrt - to SIGSETXID. - -+2005-08-08 Jakub Jelinek -+ -+ * tst-stackguard1.c (do_test): Likewise. -+ -+2005-07-29 Jakub Jelinek -+ -+ * tst-stackguard1.c (do_test): Don't fail if the poor man's -+ randomization doesn't work well enough. -+ - 2005-07-11 Jakub Jelinek - - [BZ #1102] -@@ -4620,6 +4629,11 @@ - Move definition inside libpthread, libc, librt check. Provide - definition for rtld. - -+2004-09-02 Jakub Jelinek -+ -+ * pthread_cond_destroy.c (__pthread_cond_destroy): If there are -+ waiters, awake all waiters on the associated mutex. -+ - 2004-09-02 Ulrich Drepper - - * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. -@@ -6694,6 +6708,11 @@ - - * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). - -+2003-07-22 Jakub Jelinek -+ -+ * descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h -+ if __need_struct_pthread_size, instead define lll_lock_t. -+ - 2003-07-25 Jakub Jelinek - - * tst-cancel17.c (do_test): Check if aio_cancel failed. ---- glibc-2.12-2-gc4ccff1/nptl/Makefile -+++ glibc-2.12-1/nptl/Makefile -@@ -341,7 +341,8 @@ endif - extra-objs += $(crti-objs) $(crtn-objs) - omit-deps += crti crtn - --CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) -+CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) \ -+ -fno-asynchronous-unwind-tables - endif - - CFLAGS-flockfile.c = -D_IO_MTSAFE_IO -@@ -527,15 +528,19 @@ $(addprefix $(objpfx), \ - $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so --# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, -+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so, - # since otherwise libpthread.so comes before libc.so when linking. - $(addprefix $(objpfx), $(tests-reverse)): \ -- $(objpfx)../libc.so $(objpfx)libpthread.so \ -+ $(objpfx)linklibc.so $(objpfx)libpthread.so \ - $(objpfx)libpthread_nonshared.a - $(objpfx)../libc.so: $(common-objpfx)libc.so ; - $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a - - $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so -+ -+$(objpfx)linklibc.so: $(common-objpfx)libc.so -+ ln -s ../libc.so $@ -+generated += libclink.so - else - $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a - endif ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h -+++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h -@@ -189,4 +189,7 @@ - /* Typed memory objects are not available. */ - #define _POSIX_TYPED_MEMORY_OBJECTS -1 - -+/* Streams are not available. */ -+#define _XOPEN_STREAMS -1 -+ - #endif /* bits/posix_opt.h */ ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-1/nptl/sysdeps/unix/sysv/linux/kernel-features.h -@@ -0,0 +1,6 @@ -+#include_next -+ -+/* NPTL can always assume all clone thread flags work. */ -+#ifndef __ASSUME_CLONE_THREAD_FLAGS -+# define __ASSUME_CLONE_THREAD_FLAGS 1 -+#endif ---- glibc-2.12-2-gc4ccff1/nptl/tst-stackguard1.c -+++ glibc-2.12-1/nptl/tst-stackguard1.c -@@ -190,17 +190,21 @@ do_test (void) - the 16 runs, something is very wrong. */ - int ndifferences = 0; - int ndefaults = 0; -+ int npartlyrandomized = 0; - for (i = 0; i < N; ++i) - { - if (child_stack_chk_guards[i] != child_stack_chk_guards[i+1]) - ndifferences++; - else if (child_stack_chk_guards[i] == default_guard) - ndefaults++; -+ else if (*(char *) &child_stack_chk_guards[i] == 0) -+ npartlyrandomized++; - } - -- printf ("differences %d defaults %d\n", ndifferences, ndefaults); -+ printf ("differences %d defaults %d partly randomized %d\n", -+ ndifferences, ndefaults, npartlyrandomized); - -- if (ndifferences < N / 2 && ndefaults < N / 2) -+ if ((ndifferences + ndefaults + npartlyrandomized) < 3 * N / 4) - { - puts ("stack guard canaries are not randomized enough"); - puts ("nor equal to the default canary value"); ---- glibc-2.12-2-gc4ccff1/nscd/nscd.conf -+++ glibc-2.12-1/nscd/nscd.conf -@@ -33,7 +33,7 @@ - # logfile /var/log/nscd.log - # threads 4 - # max-threads 32 --# server-user nobody -+ server-user nscd - # stat-user somebody - debug-level 0 - # reload-count 5 ---- glibc-2.12-2-gc4ccff1/nscd/nscd.init -+++ glibc-2.12-1/nscd/nscd.init -@@ -9,6 +9,7 @@ - # slow naming services like NIS, NIS+, LDAP, or hesiod. - # processname: /usr/sbin/nscd - # config: /etc/nscd.conf -+# config: /etc/sysconfig/nscd - # - ### BEGIN INIT INFO - # Provides: nscd -@@ -28,20 +29,8 @@ - # Source function library. - . /etc/init.d/functions - --# nscd does not run on any kernel lower than 2.2.0 because of threading --# problems, so we require that in first place. --case $(uname -r) in -- 2.[2-9].*) -- # this is okay -- ;; -- [3-9]*) -- # these are of course also okay -- ;; -- *) -- #this is not -- exit 1 -- ;; --esac -+# Source an auxiliary options file if we have one, and pick up NSCD_OPTIONS. -+[ -r /etc/sysconfig/nscd ] && . /etc/sysconfig/nscd - - RETVAL=0 - prog=nscd -@@ -50,7 +39,7 @@ start () { - [ -d /var/run/nscd ] || mkdir /var/run/nscd - [ -d /var/db/nscd ] || mkdir /var/db/nscd - echo -n $"Starting $prog: " -- daemon /usr/sbin/nscd -+ daemon /usr/sbin/nscd $NSCD_OPTIONS - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd -@@ -83,7 +72,7 @@ restart() { - # See how we were called. - case "$1" in - start) -- start -+ [ -e /var/lock/subsys/nscd ] || start - RETVAL=$? - ;; - stop) -@@ -99,14 +88,17 @@ case "$1" in - RETVAL=$? - ;; - try-restart | condrestart) -- [ -e /var/lock/subsys/nscd ] && restart -+ [ ! -e /var/lock/subsys/nscd ] || restart - RETVAL=$? - ;; - force-reload | reload) - echo -n $"Reloading $prog: " -- killproc /usr/sbin/nscd -HUP -- RETVAL=$? -- echo -+ RETVAL=0 -+ /usr/sbin/nscd -i passwd || RETVAL=$? -+ /usr/sbin/nscd -i group || RETVAL=$? -+ /usr/sbin/nscd -i hosts || RETVAL=$? -+ /usr/sbin/nscd -i services || RETVAL=$? -+ echo - ;; - *) - echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" ---- glibc-2.12-2-gc4ccff1/posix/Makefile -+++ glibc-2.12-1/posix/Makefile -@@ -305,15 +305,8 @@ $(inst_libexecdir)/getconf: $(inst_bindi - mv -f $@/$$spec.new $@/$$spec; \ - done < $(objpfx)getconf.speclist - --$(objpfx)getconf.speclist: $(objpfx)getconf --ifeq (no,$(cross-compiling)) -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V7_WIDTH_RESTRICTED_ENVS > $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS >> $@.new -- LC_ALL=C GETCONF_DIR=/dev/null \ -- $(run-program-prefix) $< _XBS5_WIDTH_RESTRICTED_ENVS >> $@.new --else -- > $@.new --endif -+$(objpfx)getconf.speclist: getconf.speclist.h -+ $(CC) -E $(CFLAGS) $(CPPFLAGS) $< \ -+ | sed -n -e '/START_OF_STRINGS/,$${/\(POSIX_V[67]\|_XBS5\)_/{s/^[^"]*"//;s/".*$$//;p}}' \ -+ > $@.new - mv -f $@.new $@ ---- glibc-2.12-2-gc4ccff1/posix/gai.conf -+++ glibc-2.12-1/posix/gai.conf -@@ -41,7 +41,7 @@ - # - # precedence - # Add another rule to the RFC 3484 precedence table. See section 2.1 --# and 10.3 in RFC 3484. The default is: -+# and 10.3 in RFC 3484. The RFC requires: - # - #precedence ::1/128 50 - #precedence ::/0 40 -@@ -58,7 +58,7 @@ - # Add another rule to the RFC 3484 scope table for IPv4 addresses. - # By default the scope IDs described in section 3.2 in RFC 3484 are - # used. Changing these defaults should hardly ever be necessary. --# The defaults are equivalent to: -+# The definitions in RFC 1918 are equivalent to: - # - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 -@@ -75,3 +75,5 @@ - #scopev4 ::ffff:169.254.0.0/112 2 - #scopev4 ::ffff:127.0.0.0/104 2 - #scopev4 ::ffff:0.0.0.0/96 14 -+# -+# This is what the Red Hat setting currently uses. ---- glibc-2.12-2-gc4ccff1/posix/getconf.speclist.h -+++ glibc-2.12-1/posix/getconf.speclist.h -@@ -0,0 +1,39 @@ -+#include -+const char *START_OF_STRINGS = -+#if _POSIX_V7_ILP32_OFF32 == 1 -+"POSIX_V7_ILP32_OFF32" -+#endif -+#if _POSIX_V7_ILP32_OFFBIG == 1 -+"POSIX_V7_ILP32_OFFBIG" -+#endif -+#if _POSIX_V7_LP64_OFF64 == 1 -+"POSIX_V7_LP64_OFF64" -+#endif -+#if _POSIX_V7_LPBIG_OFFBIG == 1 -+"POSIX_V7_LPBIG_OFFBIG" -+#endif -+#if _POSIX_V6_ILP32_OFF32 == 1 -+"POSIX_V6_ILP32_OFF32" -+#endif -+#if _POSIX_V6_ILP32_OFFBIG == 1 -+"POSIX_V6_ILP32_OFFBIG" -+#endif -+#if _POSIX_V6_LP64_OFF64 == 1 -+"POSIX_V6_LP64_OFF64" -+#endif -+#if _POSIX_V6_LPBIG_OFFBIG == 1 -+"POSIX_V6_LPBIG_OFFBIG" -+#endif -+#if _XBS5_ILP32_OFF32 == 1 -+"XBS5_ILP32_OFF32" -+#endif -+#if _XBS5_ILP32_OFFBIG == 1 -+"XBS5_ILP32_OFFBIG" -+#endif -+#if _XBS5_LP64_OFF64 == 1 -+"XBS5_LP64_OFF64" -+#endif -+#if _XBS5_LPBIG_OFFBIG == 1 -+"XBS5_LPBIG_OFFBIG" -+#endif -+""; ---- glibc-2.12-2-gc4ccff1/streams/Makefile -+++ glibc-2.12-1/streams/Makefile -@@ -21,7 +21,7 @@ - # - subdir := streams - --headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h -+#headers = stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h - routines = isastream getmsg getpmsg putmsg putpmsg fattach fdetach - - include ../Rules ---- glibc-2.12-2-gc4ccff1/sysdeps/generic/dl-cache.h -+++ glibc-2.12-1/sysdeps/generic/dl-cache.h -@@ -36,6 +36,14 @@ - # define add_system_dir(dir) add_dir (dir) - #endif - -+#ifndef arch_startup -+# define arch_startup(argc, argv) do { } while (0) -+#endif -+ -+#ifndef add_arch_dirs -+# define add_arch_dirs(config_file) do { } while (0) -+#endif -+ - #define CACHEMAGIC "ld.so-1.7.0" - - /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another ---- glibc-2.12-2-gc4ccff1/sysdeps/i386/Makefile -+++ glibc-2.12-1/sysdeps/i386/Makefile -@@ -2,6 +2,8 @@ - # Every i386 port in use uses gas syntax (I think). - asm-CPPFLAGS += -DGAS_SYNTAX - -+sysdep-ASFLAGS += -U__i686 -+ - # The i386 `long double' is a distinct type we support. - long-double-fcts = yes - -@@ -64,6 +66,14 @@ endif - - ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) - defines += -DNO_TLS_DIRECT_SEG_REFS -+else -+# .a libraries are not performance critical and so we -+# build them without direct TLS segment references -+# always. -+CPPFLAGS-.o += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.o += -mno-tls-direct-seg-refs -+CPPFLAGS-.oS += -DNO_TLS_DIRECT_SEG_REFS -+CFLAGS-.oS += -mno-tls-direct-seg-refs - endif - - ifeq ($(subdir),elf) ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/Makefile -+++ glibc-2.12-1/sysdeps/ia64/Makefile -@@ -12,8 +12,8 @@ elide-routines.os += hp-timing - - ifeq (yes,$(build-shared)) - # Compatibility --sysdep_routines += ia64libgcc --shared-only-routines += ia64libgcc -+sysdep_routines += libgcc-compat -+shared-only-routines += libgcc-compat - endif - endif - ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/ia64libgcc.S -+++ glibc-2.12-1/sysdeps/ia64/ia64libgcc.S -@@ -1,350 +0,0 @@ --/* From the Intel IA-64 Optimization Guide, choose the minimum latency -- alternative. */ -- --#include --#undef ret -- --#include -- --#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -- --/* __divtf3 -- Compute a 80-bit IEEE double-extended quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divtf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fnma.s1 f11 = farg1, f10, f1 --(p6) fma.s1 f12 = farg0, f10, f0 -- ;; --(p6) fma.s1 f13 = f11, f11, f0 --(p6) fma.s1 f14 = f11, f11, f11 -- ;; --(p6) fma.s1 f11 = f13, f13, f11 --(p6) fma.s1 f13 = f14, f10, f10 -- ;; --(p6) fma.s1 f10 = f13, f11, f10 --(p6) fnma.s1 f11 = farg1, f12, farg0 -- ;; --(p6) fma.s1 f11 = f11, f10, f12 --(p6) fnma.s1 f12 = farg1, f10, f1 -- ;; --(p6) fma.s1 f10 = f12, f10, f10 --(p6) fnma.s1 f12 = farg1, f11, farg0 -- ;; --(p6) fma.s0 fret0 = f12, f10, f11 --(p7) mov fret0 = f10 -- br.ret.sptk rp --END(___divtf3) -- .symver ___divtf3, __divtf3@GLIBC_2.2 -- --/* __divdf3 -- Compute a 64-bit IEEE double quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divdf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fmpy.s1 f11 = farg0, f10 --(p6) fnma.s1 f12 = farg1, f10, f1 -- ;; --(p6) fma.s1 f11 = f12, f11, f11 --(p6) fmpy.s1 f13 = f12, f12 -- ;; --(p6) fma.s1 f10 = f12, f10, f10 --(p6) fma.s1 f11 = f13, f11, f11 -- ;; --(p6) fmpy.s1 f12 = f13, f13 --(p6) fma.s1 f10 = f13, f10, f10 -- ;; --(p6) fma.d.s1 f11 = f12, f11, f11 --(p6) fma.s1 f10 = f12, f10, f10 -- ;; --(p6) fnma.d.s1 f8 = farg1, f11, farg0 -- ;; --(p6) fma.d fret0 = f8, f10, f11 --(p7) mov fret0 = f10 -- br.ret.sptk rp -- ;; --END(___divdf3) -- .symver ___divdf3, __divdf3@GLIBC_2.2 -- --/* __divsf3 -- Compute a 32-bit IEEE float quotient. -- farg0 holds the dividend. farg1 holds the divisor. */ -- --ENTRY(___divsf3) -- cmp.eq p7, p0 = r0, r0 -- frcpa.s0 f10, p6 = farg0, farg1 -- ;; --(p6) cmp.ne p7, p0 = r0, r0 -- .pred.rel.mutex p6, p7 --(p6) fmpy.s1 f8 = farg0, f10 --(p6) fnma.s1 f9 = farg1, f10, f1 -- ;; --(p6) fma.s1 f8 = f9, f8, f8 --(p6) fmpy.s1 f9 = f9, f9 -- ;; --(p6) fma.s1 f8 = f9, f8, f8 --(p6) fmpy.s1 f9 = f9, f9 -- ;; --(p6) fma.d.s1 f10 = f9, f8, f8 -- ;; --(p6) fnorm.s.s0 fret0 = f10 --(p7) mov fret0 = f10 -- br.ret.sptk rp -- ;; --END(___divsf3) -- .symver ___divsf3, __divsf3@GLIBC_2.2 -- --/* __divdi3 -- Compute a 64-bit integer quotient. -- in0 holds the dividend. in1 holds the divisor. */ -- --ENTRY(___divdi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f8 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, so that they won't be treated as -- unsigned. */ -- fcvt.xf f8 = f8 -- fcvt.xf f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fnma.s1 f11 = f9, f10, f1 --(p6) fmpy.s1 f12 = f8, f10 -- ;; --(p6) fmpy.s1 f13 = f11, f11 --(p6) fma.s1 f12 = f11, f12, f12 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an integer. */ -- fcvt.fx.trunc.s1 f10 = f10 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___divdi3) -- .symver ___divdi3, __divdi3@GLIBC_2.2 -- --/* __moddi3 -- Compute a 64-bit integer modulus. -- in0 holds the dividend (a). in1 holds the divisor (b). */ -- --ENTRY(___moddi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f14 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, so that they won't be treated as -- unsigned. */ -- fcvt.xf f8 = f14 -- fcvt.xf f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fmpy.s1 f12 = f8, f10 --(p6) fnma.s1 f11 = f9, f10, f1 -- ;; --(p6) fma.s1 f12 = f11, f12, f12 --(p6) fmpy.s1 f13 = f11, f11 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; -- sub in1 = r0, in1 --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; -- setf.sig f9 = in1 --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- fcvt.fx.trunc.s1 f10 = f10 -- ;; -- /* r = q * (-b) + a */ -- xma.l f10 = f10, f9, f14 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___moddi3) -- .symver ___moddi3, __moddi3@GLIBC_2.2 -- --/* __udivdi3 -- Compute a 64-bit unsigned integer quotient. -- in0 holds the dividend. in1 holds the divisor. */ -- --ENTRY(___udivdi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f8 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, to avoid FP software-assist faults. */ -- fcvt.xuf.s1 f8 = f8 -- fcvt.xuf.s1 f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fnma.s1 f11 = f9, f10, f1 --(p6) fmpy.s1 f12 = f8, f10 -- ;; --(p6) fmpy.s1 f13 = f11, f11 --(p6) fma.s1 f12 = f11, f12, f12 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an unsigned integer. */ -- fcvt.fxu.trunc.s1 f10 = f10 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___udivdi3) -- .symver ___udivdi3, __udivdi3@GLIBC_2.2 -- --/* __umoddi3 -- Compute a 64-bit unsigned integer modulus. -- in0 holds the dividend (a). in1 holds the divisor (b). */ -- --ENTRY(___umoddi3) -- .regstk 2,0,0,0 -- /* Transfer inputs to FP registers. */ -- setf.sig f14 = in0 -- setf.sig f9 = in1 -- ;; -- /* Convert the inputs to FP, to avoid FP software assist faults. */ -- fcvt.xuf.s1 f8 = f14 -- fcvt.xuf.s1 f9 = f9 -- ;; -- /* Compute the reciprocal approximation. */ -- frcpa.s1 f10, p6 = f8, f9 -- ;; -- /* 3 Newton-Raphson iterations. */ --(p6) fmpy.s1 f12 = f8, f10 --(p6) fnma.s1 f11 = f9, f10, f1 -- ;; --(p6) fma.s1 f12 = f11, f12, f12 --(p6) fmpy.s1 f13 = f11, f11 -- ;; --(p6) fma.s1 f10 = f11, f10, f10 --(p6) fma.s1 f11 = f13, f12, f12 -- ;; -- sub in1 = r0, in1 --(p6) fma.s1 f10 = f13, f10, f10 --(p6) fnma.s1 f12 = f9, f11, f8 -- ;; -- setf.sig f9 = in1 --(p6) fma.s1 f10 = f12, f10, f11 -- ;; -- /* Round quotient to an unsigned integer. */ -- fcvt.fxu.trunc.s1 f10 = f10 -- ;; -- /* r = q * (-b) + a */ -- xma.l f10 = f10, f9, f14 -- ;; -- /* Transfer result to GP registers. */ -- getf.sig ret0 = f10 -- br.ret.sptk rp -- ;; --END(___umoddi3) -- .symver ___umoddi3, __umoddi3@GLIBC_2.2 -- --/* __multi3 -- Compute a 128-bit multiply of 128-bit multiplicands. -- in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b). */ -- --ENTRY(___multi3) -- .regstk 4,0,0,0 -- setf.sig f6 = in1 -- movl r19 = 0xffffffff -- setf.sig f7 = in2 -- ;; -- and r14 = r19, in0 -- ;; -- setf.sig f10 = r14 -- and r14 = r19, in2 -- xmpy.l f9 = f6, f7 -- ;; -- setf.sig f6 = r14 -- shr.u r14 = in0, 32 -- ;; -- setf.sig f7 = r14 -- shr.u r14 = in2, 32 -- ;; -- setf.sig f8 = r14 -- xmpy.l f11 = f10, f6 -- xmpy.l f6 = f7, f6 -- ;; -- getf.sig r16 = f11 -- xmpy.l f7 = f7, f8 -- ;; -- shr.u r14 = r16, 32 -- and r16 = r19, r16 -- getf.sig r17 = f6 -- setf.sig f6 = in0 -- ;; -- setf.sig f11 = r14 -- getf.sig r21 = f7 -- setf.sig f7 = in3 -- ;; -- xma.l f11 = f10, f8, f11 -- xma.l f6 = f6, f7, f9 -- ;; -- getf.sig r18 = f11 -- ;; -- add r18 = r18, r17 -- ;; -- and r15 = r19, r18 -- cmp.ltu p7, p6 = r18, r17 -- ;; -- getf.sig r22 = f6 --(p7) adds r14 = 1, r19 -- ;; --(p7) add r21 = r21, r14 -- shr.u r14 = r18, 32 -- shl r15 = r15, 32 -- ;; -- add r20 = r21, r14 -- ;; -- add ret0 = r15, r16 -- add ret1 = r22, r20 -- br.ret.sptk rp -- ;; --END(___multi3) -- .symver ___multi3, __multi3@GLIBC_2.2 -- --#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/libgcc-compat.c -+++ glibc-2.12-1/sysdeps/ia64/libgcc-compat.c -@@ -0,0 +1,84 @@ -+/* pre-.hidden libgcc compatibility -+ Copyright (C) 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+ -+#include -+#include -+ -+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6) -+ -+typedef int int128_t __attribute__((__mode__(TI))); -+ -+extern long double __divtf3 (long double, long double) attribute_hidden; -+long double INTUSE (__divtf3) (long double x, long double y) -+{ -+ return __divtf3 (x, y); -+} -+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2); -+ -+extern double __divdf3 (double, double) attribute_hidden; -+double INTUSE (__divdf3) (double x, double y) -+{ -+ return __divdf3 (x, y); -+} -+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2); -+ -+extern float __divsf3 (float, float) attribute_hidden; -+float INTUSE (__divsf3) (float x, float y) -+{ -+ return __divsf3 (x, y); -+} -+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2); -+ -+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__divdi3) (int64_t x, int64_t y) -+{ -+ return __divdi3 (x, y); -+} -+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2); -+ -+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden; -+int64_t INTUSE (__moddi3) (int64_t x, int64_t y) -+{ -+ return __moddi3 (x, y); -+} -+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2); -+ -+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y) -+{ -+ return __udivdi3 (x, y); -+} -+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2); -+ -+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden; -+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y) -+{ -+ return __umoddi3 (x, y); -+} -+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2); -+ -+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden; -+int128_t INTUSE (__multi3) (int128_t x, int128_t y) -+{ -+ return __multi3 (x, y); -+} -+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); -+ -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -+++ glibc-2.12-1/sysdeps/posix/getaddrinfo.c -@@ -1099,10 +1099,12 @@ static const struct scopeentry - /* Link-local addresses: scope 2. */ - { { { 169, 254, 0, 0 } }, htonl_c (0xffff0000), 2 }, - { { { 127, 0, 0, 0 } }, htonl_c (0xff000000), 2 }, -+#if 0 - /* Site-local addresses: scope 5. */ - { { { 10, 0, 0, 0 } }, htonl_c (0xff000000), 5 }, - { { { 172, 16, 0, 0 } }, htonl_c (0xfff00000), 5 }, - { { { 192, 168, 0, 0 } }, htonl_c (0xffff0000), 5 }, -+#endif - /* Default: scope 14. */ - { { { 0, 0, 0, 0 } }, htonl_c (0x00000000), 14 } - }; ---- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/powerpc64/Makefile -+++ glibc-2.12-1/sysdeps/powerpc/powerpc64/Makefile -@@ -30,6 +30,7 @@ ifneq ($(elf),no) - # we use -fpic instead which is much better. - CFLAGS-initfini.s += -fpic -O1 - endif -+CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables - endif - - ifeq ($(subdir),elf) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/nice.c -+++ glibc-2.12-1/sysdeps/unix/nice.c -@@ -42,7 +42,12 @@ nice (int incr) - __set_errno (save); - } - -- result = setpriority (PRIO_PROCESS, 0, prio + incr); -+ prio += incr; -+ if (prio < PRIO_MIN) -+ prio = PRIO_MIN; -+ else if (prio >= PRIO_MAX) -+ prio = PRIO_MAX - 1; -+ result = setpriority (PRIO_PROCESS, 0, prio); - if (result == -1) - { - if (errno == EACCES) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/check_pf.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/check_pf.c -@@ -27,13 +27,10 @@ - #include - #include - --#include --#include --#include -- - #include - #include - -+#include "netlinkaccess.h" - - #ifndef IFA_F_HOMEADDRESS - # define IFA_F_HOMEADDRESS 0 ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/dl-osinfo.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/dl-osinfo.h -@@ -17,10 +17,13 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#include - #include - #include - #include - #include -+#include -+#include - - #ifndef MIN - # define MIN(a,b) (((a)<(b))?(a):(b)) -@@ -80,6 +83,32 @@ _dl_setup_stack_chk_guard (void *dl_rand - unsigned char *p = (unsigned char *) &ret; - p[sizeof (ret) - 1] = 255; - p[sizeof (ret) - 2] = '\n'; -+#ifdef HP_TIMING_NOW -+ hp_timing_t hpt; -+ HP_TIMING_NOW (hpt); -+ hpt = (hpt & 0xffff) << 8; -+ ret ^= hpt; -+#endif -+ uintptr_t stk; -+ /* Avoid GCC being too smart. */ -+ asm ("" : "=r" (stk) : "r" (p)); -+ stk &= 0x7ffff0; -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ stk <<= (__WORDSIZE - 23); -+#elif __WORDSIZE == 64 -+ stk <<= 31; -+#endif -+ ret ^= stk; -+ /* Avoid GCC being too smart. */ -+ p = (unsigned char *) &errno; -+ asm ("" : "=r" (stk) : "r" (p)); -+ stk &= 0x7fff00; -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ stk <<= (__WORDSIZE - 29); -+#else -+ stk >>= 8; -+#endif -+ ret ^= stk; - } - else - #endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/futimesat.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/futimesat.c -@@ -37,14 +37,14 @@ futimesat (fd, file, tvp) - { - int result; - -+ if (file == NULL) -+ return __futimes (fd, tvp); -+ - #ifdef __NR_futimesat - # ifndef __ASSUME_ATFCTS - if (__have_atfcts >= 0) - # endif - { -- if (file == NULL) -- return __futimes (fd, tvp); -- - result = INLINE_SYSCALL (futimesat, 3, fd, file, tvp); - # ifndef __ASSUME_ATFCTS - if (result == -1 && errno == ENOSYS) -@@ -58,22 +58,7 @@ futimesat (fd, file, tvp) - #ifndef __ASSUME_ATFCTS - char *buf = NULL; - -- if (file == NULL) -- { -- static const char procfd[] = "/proc/self/fd/%d"; -- /* Buffer for the path name we are going to use. It consists of -- - the string /proc/self/fd/ -- - the file descriptor number. -- The final NUL is included in the sizeof. A bit of overhead -- due to the format elements compensates for possible negative -- numbers. */ -- size_t buflen = sizeof (procfd) + sizeof (int) * 3; -- buf = alloca (buflen); -- -- __snprintf (buf, buflen, procfd, fd); -- file = buf; -- } -- else if (fd != AT_FDCWD && file[0] != '/') -+ if (fd != AT_FDCWD && file[0] != '/') - { - size_t filelen = strlen (file); - if (__builtin_expect (filelen == 0, 0)) ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/dl-cache.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/i386/dl-cache.h -@@ -0,0 +1,59 @@ -+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. -+ Copyright (C) 2004 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+static inline int -+is_ia64 (void) -+{ -+ unsigned int fl1, fl2; -+ -+ /* See if we can use cpuid. */ -+ __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" -+ "pushl %0; popfl; pushfl; popl %0; popfl" -+ : "=&r" (fl1), "=&r" (fl2) -+ : "i" (0x00200000)); -+ if (((fl1 ^ fl2) & 0x00200000) == 0) -+ return 0; -+ -+ /* Host supports cpuid. See if cpuid gives capabilities, try -+ CPUID(0). Preserve %ebx and %ecx; cpuid insn clobbers these, we -+ don't need their CPUID values here, and %ebx may be the PIC -+ register. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=a" (fl1) : "0" (0) : "edx", "cc"); -+ if (fl1 == 0) -+ return 0; -+ -+ /* Invoke CPUID(1), return %edx; caller can examine bits to -+ determine what's supported. */ -+ __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx" -+ : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc"); -+ return (fl2 & (1 << 30)) != 0; -+} -+ -+#define arch_startup(argc, argv) \ -+ do { \ -+ /* On IA-64, try to execute 64-bit ldconfig if possible. \ -+ This is because the badly designed /emul/ia32-linux hack \ -+ will cause 32-bit ldconfig to do all sorts of weird things. */ \ -+ if (is_ia64 ()) \ -+ execv ("/emul/ia32-linux/../../sbin/ldconfig", \ -+ (char *const *) argv); \ -+ } while (0) -+ -+#include_next ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-cache.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-cache.h -@@ -22,4 +22,31 @@ - #define _dl_cache_check_flags(flags) \ - ((flags) == _DL_CACHE_DEFAULT_ID) - -+#define EMUL_HACK "/emul/ia32-linux" -+ -+#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE) -+ -+#define add_arch_dirs(config_file) \ -+ do { \ -+ int save_verbose = opt_verbose; \ -+ opt_verbose = 0; \ -+ \ -+ parse_conf (config_file, EMUL_HACK, true); \ -+ \ -+ /* Always add the standard search paths. */ \ -+ add_system_dir (EMUL_HACK SLIBDIR); \ -+ if (strcmp (SLIBDIR, LIBDIR)) \ -+ add_system_dir (EMUL_HACK LIBDIR); \ -+ \ -+ char emul_config_file[strlen (config_file) \ -+ + sizeof EMUL_HACK]; \ -+ strcpy (mempcpy (emul_config_file, EMUL_HACK, \ -+ strlen (EMUL_HACK)), config_file); \ -+ \ -+ if (! access (emul_config_file, R_OK)) \ -+ parse_conf (emul_config_file, EMUL_HACK, true); \ -+ \ -+ opt_verbose = save_verbose; \ -+ } while (0) -+ - #include_next ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include -+#else -+#include -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h -@@ -0,0 +1,5 @@ -+#ifdef IS_IN_ldconfig -+#include -+#else -+#include -+#endif ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed -@@ -1 +1 @@ --s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 \2\3"_ -+s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/netlinkaccess.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/netlinkaccess.h -@@ -25,6 +25,24 @@ - - #include - -+#ifndef IFA_MAX -+/* 2.6.19 kernel headers helpfully removed some macros and -+ moved lots of stuff into new headers, some of which aren't -+ included by linux/rtnetlink.h. */ -+#include -+#endif -+ -+#ifndef IFA_RTA -+# define IFA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifaddrmsg)))) -+# define IFA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifaddrmsg)) -+#endif -+ -+#ifndef IFLA_RTA -+# define IFLA_RTA(r) \ -+ ((struct rtattr*) ((char*)(r) + NLMSG_ALIGN (sizeof (struct ifinfomsg)))) -+# define IFLA_PAYLOAD(n) NLMSG_PAYLOAD (n, sizeof (struct ifinfomsg)) -+#endif - - struct netlink_res - { ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/paths.h -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/paths.h -@@ -62,7 +62,7 @@ - #define _PATH_TTY "/dev/tty" - #define _PATH_UNIX "/boot/vmlinux" - #define _PATH_UTMP "/var/run/utmp" --#define _PATH_VI "/usr/bin/vi" -+#define _PATH_VI "/bin/vi" - #define _PATH_WTMP "/var/log/wtmp" - - /* Provide trailing slash, since mostly used for building pathnames. */ ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/sparc/sparc64/fxstat.c -@@ -1 +1 @@ --#include "../../fxstat.c" -+#include "../../i386/fxstat.c" ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/tcsetattr.c -+++ glibc-2.12-1/sysdeps/unix/sysv/linux/tcsetattr.c -@@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios - { - struct __kernel_termios k_termios; - unsigned long int cmd; -+ int retval; - - switch (optional_actions) - { -@@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios - memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], - __KERNEL_NCCS * sizeof (cc_t)); - -- return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); -+ -+ if (retval == 0 && cmd == TCSETS) -+ { -+ /* The Linux kernel has a bug which silently ignore the invalid -+ c_cflag on pty. We have to check it here. */ -+ int save = errno; -+ retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); -+ if (retval) -+ { -+ /* We cannot verify if the setting is ok. We don't return -+ an error (?). */ -+ __set_errno (save); -+ retval = 0; -+ } -+ else if ((termios_p->c_cflag & (PARENB | CREAD)) -+ != (k_termios.c_cflag & (PARENB | CREAD)) -+ || ((termios_p->c_cflag & CSIZE) -+ && ((termios_p->c_cflag & CSIZE) -+ != (k_termios.c_cflag & CSIZE)))) -+ { -+ /* It looks like the Linux kernel silently changed the -+ PARENB/CREAD/CSIZE bits in c_cflag. Report it as an -+ error. */ -+ __set_errno (EINVAL); -+ retval = -1; -+ } -+ } -+ -+ return retval; - } - libc_hidden_def (tcsetattr) ---- glibc-2.12-2-gc4ccff1/timezone/zic.c -+++ glibc-2.12-1/timezone/zic.c -@@ -1921,7 +1921,7 @@ const int zonecount; - if (stdrp != NULL && stdrp->r_hiyear == 2037) - return; - } -- if (stdrp == NULL && zp->z_nrules != 0) -+ if (stdrp == NULL && (zp->z_nrules != 0 || zp->z_stdoff != 0)) - return; - abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar; - doabbr(result, zp->z_format, abbrvar, FALSE, TRUE); diff --git a/src/patches/glibc/glibc-getlogin-r.patch b/src/patches/glibc/glibc-getlogin-r.patch deleted file mode 100644 index 9181ce12c..000000000 --- a/src/patches/glibc/glibc-getlogin-r.patch +++ /dev/null @@ -1,36 +0,0 @@ -2010-05-05 Ulrich Drepper - - [BZ #11571] - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle - too small buffers according to the standard. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -@@ -81,13 +81,22 @@ __getlogin_r_loginuid (name, namesize) - if (tpwd == NULL) - goto fail; - -- strncpy (name, pwd.pw_name, namesize - 1); -- name[namesize - 1] = '\0'; -+ int result = 0; -+ size_t needed = strlen (pwd.pw_name) + 1; -+ if (needed > namesize) -+ { -+ __set_errno (ERANGE); -+ result = ERANGE; -+ goto out; -+ } - -+ memcpy (name, pwd.pw_name, needed); -+ -+ out: - if (use_malloc) - free (buf); - -- return 0; -+ return result; - } - - diff --git a/src/patches/glibc/glibc-localedata.patch b/src/patches/glibc/glibc-localedata.patch deleted file mode 100644 index 15de7c6d6..000000000 --- a/src/patches/glibc/glibc-localedata.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-05-04 Andreas Schwab - - * SUPPORTED (SUPPORTED-LOCALES): Fix name of tt_RU.UTF-8@iqtelif - locale. - -Index: glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/SUPPORTED -+++ glibc-2.12-2-gc4ccff1/localedata/SUPPORTED -@@ -392,7 +392,7 @@ tr_TR.UTF-8/UTF-8 \ - tr_TR/ISO-8859-9 \ - ts_ZA/UTF-8 \ - tt_RU.UTF-8/UTF-8 \ --tt_RU@iqtelif.UTF-8/UTF-8 \ -+tt_RU.UTF-8@iqtelif/UTF-8 \ - ug_CN/UTF-8 \ - uk_UA.UTF-8/UTF-8 \ - uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-mq_open.patch b/src/patches/glibc/glibc-mq_open.patch deleted file mode 100644 index a7a0f11ed..000000000 --- a/src/patches/glibc/glibc-mq_open.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: https://sourceware.org/bugzilla/show_bug.cgi?id=12841 - ---- libc/rt/bits/mqueue2.h 2009-05-16 19:23:37.000000000 +0200 -+++ libc/rt/bits/mqueue2.h 2011-06-04 19:05:38.322333773 +0200 -@@ -1,5 +1,5 @@ - /* Checking macros for mq functions. -- Copyright (C) 2007 Free Software Foundation, Inc. -+ Copyright (C) 2007, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -25,16 +25,18 @@ - parameter. */ - extern mqd_t mq_open (__const char *__name, int __oflag, ...) - __THROW __nonnull ((1)); --extern mqd_t __mq_open_2 (__const char *__name, int __oflag) __nonnull ((1)); --extern mqd_t __REDIRECT (__mq_open_alias, (__const char *__name, int __oflag, ...), -- mq_open) __nonnull ((1)); -+extern mqd_t __mq_open_2 (__const char *__name, int __oflag) -+ __THROW __nonnull ((1)); -+extern mqd_t __REDIRECT_NTH (__mq_open_alias, (__const char *__name, -+ int __oflag, ...), mq_open) -+ __nonnull ((1)); - __errordecl (__mq_open_wrong_number_of_args, - "mq_open can be called either with 2 or 4 arguments"); - __errordecl (__mq_open_missing_mode_and_attr, - "mq_open with O_CREAT in second argument needs 4 arguments"); - - __extern_always_inline mqd_t --mq_open (__const char *__name, int __oflag, ...) -+__NTH (mq_open (__const char *__name, int __oflag, ...)) - { - if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2) - __mq_open_wrong_number_of_args (); diff --git a/src/patches/glibc/glibc-recvmmsg.patch b/src/patches/glibc/glibc-recvmmsg.patch deleted file mode 100644 index 9e3aa7ade..000000000 --- a/src/patches/glibc/glibc-recvmmsg.patch +++ /dev/null @@ -1,182 +0,0 @@ -2010-05-21 Andreas Schwab - - * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add recvmmsg - and internal_recvmmsg. - * sysdeps/unix/sysv/linux/recvmmsg.c: New file. - * sysdeps/unix/sysv/linux/internal_recvmmsg.S: New file. - * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_recvmmsg): Define. - * sysdeps/unix/sysv/linux/syscalls.list (recvmmsg): Remove. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/Makefile -@@ -12,7 +12,7 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2 - endif - - ifeq ($(subdir),socket) --sysdep_routines += internal_accept4 -+sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg - endif - - ifeq ($(subdir),misc) -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_recvmmsg.S -@@ -0,0 +1,14 @@ -+#include -+#include -+#if !defined __NR_recvmmsg && defined __NR_socketcall -+# define socket recvmmsg -+# ifdef __ASSUME_RECVMMSG -+# define __socket recvmmsg -+# else -+# define __socket __internal_recvmmsg -+# endif -+# define NARGS 5 -+# define NEED_CANCELLATION -+# define NO_WEAK_ALIAS -+# include -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -@@ -547,3 +547,8 @@ - #if __LINUX_KERNEL_VERSION >= 0x020620 - # define __ASSUME_F_GETOWN_EX 1 - #endif -+ -+/* Support for the recvmmsg syscall was added in 2.6.33. */ -+#if __LINUX_KERNEL_VERSION >= 0x020621 -+# define __ASSUME_RECVMMSG 1 -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/recvmmsg.c -@@ -0,0 +1,100 @@ -+/* Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Andreas Schwab , 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+#include -+#include -+#include -+ -+ -+#ifdef __NR_recvmmsg -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ if (SINGLE_THREAD_P) -+ return INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); -+ -+ int oldtype = LIBC_CANCEL_ASYNC (); -+ -+ int result = INLINE_SYSCALL (recvmmsg, 5, fd, vmessages, vlen, flags, tmo); -+ -+ LIBC_CANCEL_RESET (oldtype); -+ -+ return result; -+} -+#elif defined __NR_socketcall -+# ifndef __ASSUME_RECVMMSG -+extern int __internal_recvmmsg (int fd, struct mmsghdr *vmessages, -+ unsigned int vlen, int flags, -+ const struct timespec *tmo) -+ attribute_hidden; -+ -+static int have_recvmmsg; -+ -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ if (__builtin_expect (have_recvmmsg >= 0, 1)) -+ { -+ int ret = __internal_recvmmsg (fd, vmessages, vlen, flags, tmo); -+ /* The kernel returns -EINVAL for unknown socket operations. -+ We need to convert that error to an ENOSYS error. */ -+ if (__builtin_expect (ret < 0, 0) -+ && have_recvmmsg == 0 -+ && errno == EINVAL) -+ { -+ /* Try another call, this time with an invalid file -+ descriptor and all other parameters cleared. This call -+ will not cause any harm and it will return -+ immediately. */ -+ ret = __internal_recvmmsg (-1, 0, 0, 0, 0); -+ if (errno == EINVAL) -+ { -+ have_recvmmsg = -1; -+ __set_errno (ENOSYS); -+ } -+ else -+ { -+ have_recvmmsg = 1; -+ __set_errno (EINVAL); -+ } -+ return -1; -+ } -+ return ret; -+ } -+ __set_errno (ENOSYS); -+ return -1; -+} -+# else -+/* When __ASSUME_RECVMMSG recvmmsg is defined in internal_recvmmsg.S. */ -+# endif -+#else -+int -+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, -+ const struct timespec *tmo) -+{ -+ __set_errno (ENOSYS); -+ return -1; -+} -+stub_warning (recvmmsg) -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/socketcall.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/socketcall.h -@@ -44,5 +44,6 @@ - #define SOCKOP_sendmsg 16 - #define SOCKOP_recvmsg 17 - #define SOCKOP_accept4 18 -+#define SOCKOP_recvmmsg 19 - - #endif /* sys/socketcall.h */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/syscalls.list -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/syscalls.list -@@ -53,7 +53,6 @@ prctl EXTRA prctl i:iiiii __prctl prc - putpmsg - putpmsg i:ippii putpmsg - query_module EXTRA query_module i:sipip query_module - quotactl EXTRA quotactl i:isip quotactl --recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg - remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages - sched_getp - sched_getparam i:ip __sched_getparam sched_getparam - sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler diff --git a/src/patches/glibc/glibc-rh1008310.patch b/src/patches/glibc/glibc-rh1008310.patch deleted file mode 100644 index 3658a9f31..000000000 --- a/src/patches/glibc/glibc-rh1008310.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -Nrup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2013-09-23 17:08:33.698331221 -0400 -+++ b/malloc/malloc.c 2013-09-23 21:04:25.901270645 -0400 -@@ -3879,6 +3879,13 @@ public_mEMALIGn(size_t alignment, size_t - /* Otherwise, ensure that it is at least a minimum chunk size */ - if (alignment < MINSIZE) alignment = MINSIZE; - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - alignment - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - arena_get(ar_ptr, bytes + alignment + MINSIZE); - if(!ar_ptr) - return 0; -@@ -3924,6 +3931,13 @@ public_vALLOc(size_t bytes) - - size_t pagesz = mp_.pagesize; - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - pagesz - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, - __const __malloc_ptr_t)) = - force_reg (__memalign_hook); -@@ -3975,6 +3989,13 @@ public_pVALLOc(size_t bytes) - size_t page_mask = mp_.pagesize - 1; - size_t rounded_bytes = (bytes + page_mask) & ~(page_mask); - -+ /* Check for overflow. */ -+ if (bytes > SIZE_MAX - 2*pagesz - MINSIZE) -+ { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, - __const __malloc_ptr_t)) = - force_reg (__memalign_hook); diff --git a/src/patches/glibc/glibc-rh1019916.patch b/src/patches/glibc/glibc-rh1019916.patch deleted file mode 100644 index f67af90c4..000000000 --- a/src/patches/glibc/glibc-rh1019916.patch +++ /dev/null @@ -1,39 +0,0 @@ -commit 48b67d71ec677d1b3168e52a68b644784cead604 -Author: Andreas Schwab -Date: Wed Sep 14 12:12:25 2011 +0200 - - Also relocate in dependency order when doing symbol dependency testing - -diff --git a/elf/rtld.c b/elf/rtld.c -index 764140d..324d979 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2027,24 +2027,21 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - { - /* We have to do symbol dependency testing. */ - struct relocate_args args; -- struct link_map *l; -+ unsigned int i; - - args.reloc_mode = GLRO(dl_lazy) ? RTLD_LAZY : 0; - -- l = main_map; -- while (l->l_next != NULL) -- l = l->l_next; -- do -+ i = main_map->l_searchlist.r_nlist; -+ while (i-- > 0) - { -+ struct link_map *l = main_map->l_initfini[i]; - if (l != &GL(dl_rtld_map) && ! l->l_faked) - { - args.l = l; - _dl_receive_error (print_unresolved, relocate_doit, - &args); - } -- l = l->l_prev; - } -- while (l != NULL); - - if ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK) - && rtld_multiple_ref) diff --git a/src/patches/glibc/glibc-rh1022022.patch b/src/patches/glibc/glibc-rh1022022.patch deleted file mode 100644 index 6d23bb1e1..000000000 --- a/src/patches/glibc/glibc-rh1022022.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 81e928a..05883bd 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -832,8 +832,13 @@ gaih_inet (const char *name, const struct gaih_service *service, - while (!no_more) - { - no_data = 0; -- nss_gethostbyname4_r fct4 -- = __nss_lookup_function (nip, "gethostbyname4_r"); -+ nss_gethostbyname4_r fct4 = NULL; -+ -+ /* gethostbyname4_r sends out parallel A and AAAA queries and -+ is thus only suitable for PF_UNSPEC. */ -+ if (req->ai_family == PF_UNSPEC) -+ fct4 = __nss_lookup_function (nip, "gethostbyname4_r"); -+ - if (fct4 != NULL) - { - int herrno; diff --git a/src/patches/glibc/glibc-rh1023306.patch b/src/patches/glibc/glibc-rh1023306.patch deleted file mode 100644 index 738052d8e..000000000 --- a/src/patches/glibc/glibc-rh1023306.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefile ---- glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:51:24.882747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/Makefile 2013-07-31 11:58:55.964731526 +0530 -@@ -276,10 +276,7 @@ gen-as-const-headers = pthread-errnos.sy - LDFLAGS-tst-cond24 = -lrt - LDFLAGS-tst-cond25 = -lrt - --# The size is 1MB + 4KB. The extra 4KB has been added to prevent allocatestack --# from resizing the input size to avoid the 64K aliasing conflict on Intel --# processors. --DEFAULT_STACKSIZE=1052672 -+DEFAULT_STACKSIZE=1048576 - CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) - tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) - -diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686.new/nptl/tst-default-attr.c ---- glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 11:51:24.885747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/tst-default-attr.c 2013-07-31 12:18:10.016691337 +0530 -@@ -38,6 +38,7 @@ - - /* DEFAULT_STACKSIZE macro is defined in the Makefile. */ - static size_t stacksize = DEFAULT_STACKSIZE; -+long int pagesize; - - static int - verify_stacksize_result (pthread_attr_t *attr) -@@ -46,12 +47,20 @@ verify_stacksize_result (pthread_attr_t - - RETURN_IF_FAIL (pthread_attr_getstacksize, attr, &stack); - -- if (stacksize != stack) -+ /* pthread_create perturbs the stack size by a page if it aligns to 64K to -+ avoid the 64K aliasing conflict. We cannot simply add 4K to the size in -+ the Makefile because it breaks the test on powerpc since the page size -+ there is 64K, resulting in a resize in __pthread_initialize_minimal. -+ Hence, our check is to ensure that the stack size is not more than a page -+ more than the requested size. */ -+ if (stack < stacksize || stack > stacksize + pagesize) - { - printf ("failed to set default stacksize (%zu, %zu)\n", stacksize, stack); - return 1; - } - -+ printf ("Requested %zu and got %zu\n", stacksize, stack); -+ - return 0; - } - -@@ -101,6 +110,15 @@ run_threads (void) - static int - do_test (void) - { -+ pthread_attr_t attr; -+ -+ pagesize = sysconf (_SC_PAGESIZE); -+ if (pagesize < 0) -+ { -+ printf ("sysconf failed: %s\n", strerror (errno)); -+ return 1; -+ } -+ - RETURN_IF_FAIL (run_threads); - return 0; - } diff --git a/src/patches/glibc/glibc-rh1025933.patch b/src/patches/glibc/glibc-rh1025933.patch deleted file mode 100644 index 9dc98b99b..000000000 --- a/src/patches/glibc/glibc-rh1025933.patch +++ /dev/null @@ -1,287 +0,0 @@ -commit 0699f766b10c86912b75f35bef697106b70c1cf6 -Author: Carlos O'Donell -Date: Thu Apr 10 18:31:53 2014 -0400 - - nscd: Make SELinux checks dynamic. - - The SELinux team has indicated to me that glibc's SELinux checks - in nscd are not being carried out as they would expect the API - to be used today. They would like to move away from static header - defines for class and permissions and instead use dynamic checks - at runtime that provide an answer which is dependent on the runtime - status of SELinux i.e. more dynamic. - - The following patch is a minimal change that moves us forward in - this direction. - - It does the following: - - * Stop checking for SELinux headers that define NSCD__SHMEMHOST. - Check only for the presence or absence of the library. - - * Don't encode the specific SELinux permission constants into a - table at build time, and instead use the symbolic name for the - permission as expected. - - * Lookup the "What do we do if we don't know this permission?" - policy and use that if we find SELinux's policy is older than - the glibc policy e.g. we make a request for a permission that - SELinux doesn't know about. - - * Lastly, translate the class and permission and then make - the permission check. This is done every time we lookup - a permission, and this is the expected way to use the API. - SELinux will optimize this for us, and we expect the network - latencies to hide these extra library calls. - - Tested on x86, x86-64, and via Fedora Rawhide since November 2013. - - See: - https://sourceware.org/ml/libc-alpha/2014-04/msg00179.html - -diff --git a/configure b/configure -index abefcdb..8b0b222 100755 ---- a/configure -+++ b/configure -@@ -7774,64 +7774,10 @@ else - have_selinux=no - fi - -- # See if we have the SELinux header with the NSCD permissions in it. -- if test x$have_selinux = xyes ; then -- { $as_echo "$as_me:$LINENO: checking for NSCD Flask permissions in selinux/av_permissions.h" >&5 --$as_echo_n "checking for NSCD Flask permissions in selinux/av_permissions.h... " >&6; } -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include --int --main () --{ --#ifdef NSCD__SHMEMHOST -- return 0; -- #else -- #error NSCD__SHMEMHOST not defined -- #endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- have_selinux=yes --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- have_selinux=no --fi -- --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -- { $as_echo "$as_me:$LINENO: result: $have_selinux" >&5 --$as_echo "$have_selinux" >&6; } -- fi -- - if test x$with_selinux = xyes ; then - if test x$have_selinux = xno ; then -- { { $as_echo "$as_me:$LINENO: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&5 --$as_echo "$as_me: error: SELinux explicitly required, but sufficiently recent SELinux library not found" >&2;} -+ { { $as_echo "$as_me:$LINENO: error: SELinux explicitly required, but SELinux library not found" >&5 -+$as_echo "$as_me: error: SELinux explicitly required, but SELinux library not found" >&2;} - { (exit 1); exit 1; }; } - fi - fi -diff --git a/configure.in b/configure.in -index 6291872..97a9591 100644 ---- a/configure.in -+++ b/configure.in -@@ -1945,22 +1945,9 @@ else - # See if we have the SELinux library - AC_CHECK_LIB(selinux, is_selinux_enabled, - have_selinux=yes, have_selinux=no) -- # See if we have the SELinux header with the NSCD permissions in it. -- if test x$have_selinux = xyes ; then -- AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h]) -- AC_TRY_COMPILE([#include ], -- [#ifdef NSCD__SHMEMHOST -- return 0; -- #else -- #error NSCD__SHMEMHOST not defined -- #endif], -- have_selinux=yes, have_selinux=no) -- AC_MSG_RESULT($have_selinux) -- fi -- - if test x$with_selinux = xyes ; then - if test x$have_selinux = xno ; then -- AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found]) -+ AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found]) - fi - fi - fi -diff --git a/nscd/selinux.c b/nscd/selinux.c -index 46b0ea9..9a8a5a8 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c -@@ -28,7 +28,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -44,35 +43,31 @@ - /* Global variable to tell if the kernel has SELinux support. */ - int selinux_enabled; - --/* Define mappings of access vector permissions to request types. */ --static const access_vector_t perms[LASTREQ] = -+/* Define mappings of request type to AVC permission name. */ -+static const char *perms[LASTREQ] = - { -- [GETPWBYNAME] = NSCD__GETPWD, -- [GETPWBYUID] = NSCD__GETPWD, -- [GETGRBYNAME] = NSCD__GETGRP, -- [GETGRBYGID] = NSCD__GETGRP, -- [GETHOSTBYNAME] = NSCD__GETHOST, -- [GETHOSTBYNAMEv6] = NSCD__GETHOST, -- [GETHOSTBYADDR] = NSCD__GETHOST, -- [GETHOSTBYADDRv6] = NSCD__GETHOST, -- [GETSTAT] = NSCD__GETSTAT, -- [SHUTDOWN] = NSCD__ADMIN, -- [INVALIDATE] = NSCD__ADMIN, -- [GETFDPW] = NSCD__SHMEMPWD, -- [GETFDGR] = NSCD__SHMEMGRP, -- [GETFDHST] = NSCD__SHMEMHOST, -- [GETAI] = NSCD__GETHOST, -- [INITGROUPS] = NSCD__GETGRP, --#ifdef NSCD__GETSERV -- [GETSERVBYNAME] = NSCD__GETSERV, -- [GETSERVBYPORT] = NSCD__GETSERV, -- [GETFDSERV] = NSCD__SHMEMSERV, --#endif --#ifdef NSCD__GETNETGRP -- [GETNETGRENT] = NSCD__GETNETGRP, -- [INNETGR] = NSCD__GETNETGRP, -- [GETFDNETGR] = NSCD__SHMEMNETGRP, --#endif -+ [GETPWBYNAME] = "getpwd", -+ [GETPWBYUID] = "getpwd", -+ [GETGRBYNAME] = "getgrp", -+ [GETGRBYGID] = "getgrp", -+ [GETHOSTBYNAME] = "gethost", -+ [GETHOSTBYNAMEv6] = "gethost", -+ [GETHOSTBYADDR] = "gethost", -+ [GETHOSTBYADDRv6] = "gethost", -+ [SHUTDOWN] = "admin", -+ [GETSTAT] = "getstat", -+ [INVALIDATE] = "admin", -+ [GETFDPW] = "shmempwd", -+ [GETFDGR] = "shmemgrp", -+ [GETFDHST] = "shmemhost", -+ [GETAI] = "gethost", -+ [INITGROUPS] = "getgrp", -+ [GETSERVBYNAME] = "getserv", -+ [GETSERVBYPORT] = "getserv", -+ [GETFDSERV] = "shmemserv", -+ [GETNETGRENT] = "getnetgrp", -+ [INNETGR] = "getnetgrp", -+ [GETFDNETGR] = "shmemnetgrp", - }; - - /* Store an entry ref to speed AVC decisions. */ -@@ -344,7 +339,16 @@ nscd_avc_init (void) - - - /* Check the permission from the caller (via getpeercon) to nscd. -- Returns 0 if access is allowed, 1 if denied, and -1 on error. */ -+ Returns 0 if access is allowed, 1 if denied, and -1 on error. -+ -+ The SELinux policy, enablement, and permission bits are all dynamic and the -+ caching done by glibc is not entirely correct. This nscd support should be -+ rewritten to use selinux_check_permission. A rewrite is risky though and -+ requires some refactoring. Currently we use symbolic mappings instead of -+ compile time constants (which SELinux upstream says are going away), and we -+ use security_deny_unknown to determine what to do if selinux-policy* doesn't -+ have a definition for the the permission or object class we are looking -+ up. */ - int - nscd_request_avc_has_perm (int fd, request_type req) - { -@@ -354,6 +358,33 @@ nscd_request_avc_has_perm (int fd, request_type req) - security_id_t ssid = NULL; - security_id_t tsid = NULL; - int rc = -1; -+ security_class_t sc_nscd; -+ access_vector_t perm; -+ int avc_deny_unknown; -+ -+ /* Check if SELinux denys or allows unknown object classes -+ and permissions. It is 0 if they are allowed, 1 if they -+ are not allowed and -1 on error. */ -+ if ((avc_deny_unknown = security_deny_unknown ()) == -1) -+ dbg_log (_("Error querying policy for undefined object classes " -+ "or permissions.")); -+ -+ /* Get the security class for nscd. If this fails we will likely be -+ unable to do anything unless avc_deny_unknown is 0. */ -+ sc_nscd = string_to_security_class ("nscd"); -+ if (perm == 0 && avc_deny_unknown == 1) -+ dbg_log (_("Error getting security class for nscd.")); -+ -+ /* Convert permission to AVC bits. */ -+ perm = string_to_av_perm (sc_nscd, perms[req]); -+ if (perm == 0 && avc_deny_unknown == 1) -+ dbg_log (_("Error translating permission name " -+ "\"%s\" to access vector bit."), perms[req]); -+ -+ /* If the nscd security class was not found or perms were not -+ found and AVC does not deny unknown values then allow it. */ -+ if ((sc_nscd == 0 || perm == 0) && avc_deny_unknown == 0) -+ return 0; - - if (getpeercon (fd, &scon) < 0) - { -@@ -372,15 +403,13 @@ nscd_request_avc_has_perm (int fd, request_type req) - goto out; - } - --#ifndef NSCD__GETSERV -- if (perms[req] == 0) -- { -- dbg_log (_("compile-time support for database policy missing")); -- goto out; -- } --#endif -- -- rc = avc_has_perm (ssid, tsid, SECCLASS_NSCD, perms[req], &aeref, NULL) < 0; -+ /* The SELinux API for avc_has_perm conflates access denied and error into -+ the return code -1, while nscd_request_avs_has_perm has distinct error -+ (-1) and denied (1) return codes. We map the avc_has_perm access denied or -+ error into an access denied at the nscd interface level (we do accurately -+ report error for the getpeercon, getcon, and avc_context_to_sid interfaces -+ used above). */ -+ rc = avc_has_perm (ssid, tsid, sc_nscd, perm, &aeref, NULL) < 0; - - out: - if (scon) diff --git a/src/patches/glibc/glibc-rh1027101.patch b/src/patches/glibc/glibc-rh1027101.patch deleted file mode 100644 index 782568282..000000000 --- a/src/patches/glibc/glibc-rh1027101.patch +++ /dev/null @@ -1,58 +0,0 @@ -commit 362b47fe09ca9a928d444c7e2f7992f7f61bfc3e -Author: Maxim Kuvyrkov -Date: Tue Dec 24 09:44:50 2013 +1300 - - Fix race in free() of fastbin chunk: BZ #15073 - - Perform sanity check only if we have_lock. Due to lockless nature of fastbins - we need to be careful derefencing pointers to fastbin entries (chunksize(old) - in this case) in multithreaded environments. - - The fix is to add have_lock to the if-condition checks. The rest of the patch - only makes code more readable. - - * malloc/malloc.c (_int_free): Perform sanity check only if we - have_lock. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index b1668b5..5e419ad 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -3783,25 +3783,29 @@ _int_free(mstate av, mchunkptr p, int have_lock) - fb = &fastbin (av, idx); - - #ifdef ATOMIC_FASTBINS -- mchunkptr fd; -- mchunkptr old = *fb; -+ /* Atomically link P to its fastbin: P->FD = *FB; *FB = P; */ -+ mchunkptr old = *fb, old2; - unsigned int old_idx = ~0u; - do - { -- /* Another simple check: make sure the top of the bin is not the -- record we are going to add (i.e., double free). */ -+ /* Check that the top of the bin is not the record we are going to add -+ (i.e., double free). */ - if (__builtin_expect (old == p, 0)) - { - errstr = "double free or corruption (fasttop)"; - goto errout; - } -- if (old != NULL) -+ /* Check that size of fastbin chunk at the top is the same as -+ size of the chunk that we are adding. We can dereference OLD -+ only if we have the lock, otherwise it might have already been -+ deallocated. See use of OLD_IDX below for the actual check. */ -+ if (have_lock && old != NULL) - old_idx = fastbin_index(chunksize(old)); -- p->fd = fd = old; -+ p->fd = old2 = old; - } -- while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); -+ while ((old = catomic_compare_and_exchange_val_rel (fb, p, old2)) != old2); - -- if (fd != NULL && __builtin_expect (old_idx != idx, 0)) -+ if (have_lock && old != NULL && __builtin_expect (old_idx != idx, 0)) - { - errstr = "invalid fastbin entry (free)"; - goto errout; diff --git a/src/patches/glibc/glibc-rh1027261.patch b/src/patches/glibc/glibc-rh1027261.patch deleted file mode 100644 index 8599cf02e..000000000 --- a/src/patches/glibc/glibc-rh1027261.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 4d653a59ffeae0f46f76a40230e2cfa9587b7e7e -Author: Siddhesh Poyarekar -Date: Fri May 30 22:43:52 2014 +0530 - - Add mmap usage in malloc_info output - - The current malloc_info xml output only has information about - allocations on the heap. Display information about number of mappings - and total mmapped size to this to complete the picture. - -diff -pruN a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2014-06-02 07:35:22.573256155 +0530 -+++ b/malloc/malloc.c 2014-06-02 07:34:58.856257177 +0530 -@@ -6553,12 +6553,14 @@ malloc_info (int options, FILE *fp) - fprintf (fp, - "\n" - "\n" -+ "\n" - "\n" - "\n" - "\n" - "\n" - "\n", - total_nfastblocks, total_fastavail, total_nblocks, total_avail, -+ mp_.n_mmaps, mp_.mmapped_mem, - total_system, total_max_system, - total_aspace, total_aspace_mprotect); - diff --git a/src/patches/glibc/glibc-rh1028285.patch b/src/patches/glibc/glibc-rh1028285.patch deleted file mode 100644 index 3bf8c4f06..000000000 --- a/src/patches/glibc/glibc-rh1028285.patch +++ /dev/null @@ -1,149 +0,0 @@ -From a5675717e35a02a3eba7e13701c6f9c0d7222e13 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Fri, 7 Jun 2013 14:50:23 -0500 -Subject: [PATCH 2/2] PowerPC: gettimeofday optimization by using IFUNC - -Backport of ef26eece6331a1f6d959818e37c438cc7ce68e53 from master. ---- - sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h | 10 ++++ - sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 49 +++++++++++++++------- - 2 files changed, 44 insertions(+), 15 deletions(-) - -commit 76a9b9986141b1a7d9fd290c349d27fcee780c7a -Author: Adhemerval Zanella -Date: Thu Nov 7 05:34:22 2013 -0600 - - PowerPC: Fix vDSO missing ODP entries - - This patch fixes the vDSO symbol used directed in IFUNC resolver where - they do not have an associated ODP entry leading to undefined behavior - in some cases. It adds an artificial OPD static entry to such cases - and set its TOC to non 0 to avoid triggering lazy resolutions. - -commit d98720e07f67fbeec00f9e1347840404240d3c48 -Author: Adhemerval Zanella -Date: Mon Jan 20 12:29:51 2014 -0600 - - PowerPC: Fix gettimeofday ifunc selection - - The IFUNC selector for gettimeofday runs before _libc_vdso_platform_setup where - __vdso_gettimeofday is set. The selector then sets __gettimeofday (the internal - version used within GLIBC) to use the system call version instead of the vDSO one. - This patch changes the check if vDSO is available to get its value directly - instead of rely on __vdso_gettimeofday. - - This patch changes it by getting the vDSO value directly. - - It fixes BZ#16431. - -diff -pruN a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2014-05-20 14:46:51.026871920 +0530 -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2014-05-20 14:44:39.294877321 +0530 -@@ -33,6 +33,36 @@ extern void *__vdso_get_tbfreq; - - extern void *__vdso_getcpu; - -+#if defined(__PPC64__) || defined(__powerpc64__) -+/* The correct solution is for _dl_vdso_vsym to return the address of the OPD -+ for the kernel VDSO function. That address would then be stored in the -+ __vdso_* variables and returned as the result of the IFUNC resolver function. -+ Yet, the kernel does not contain any OPD entries for the VDSO functions -+ (incomplete implementation). However, PLT relocations for IFUNCs still expect -+ the address of an OPD to be returned from the IFUNC resolver function (since -+ PLT entries on PPC64 are just copies of OPDs). The solution for now is to -+ create an artificial static OPD for each VDSO function returned by a resolver -+ function. The TOC value is set to a non-zero value to avoid triggering lazy -+ symbol resolution via .glink0/.plt0 for a zero TOC (requires thread-safe PLT -+ sequences) when the dynamic linker isn't prepared for it e.g. RTLD_NOW. None -+ of the kernel VDSO routines use the TOC or AUX values so any non-zero value -+ will work. Note that function pointer comparisons will not use this artificial -+ static OPD since those are resolved via ADDR64 relocations and will point at -+ the non-IFUNC default OPD for the symbol. Lastly, because the IFUNC relocations -+ are processed immediately at startup the resolver functions and this code need -+ not be thread-safe, but if the caller writes to a PLT slot it must do so in a -+ thread-safe manner with all the required barriers. */ -+#define VDSO_IFUNC_RET(value) \ -+ ({ \ -+ static Elf64_FuncDesc vdso_opd = { .fd_toc = ~0x0 }; \ -+ vdso_opd.fd_func = (Elf64_Addr)value; \ -+ &vdso_opd; \ -+ }) -+ -+#else -+#define VDSO_IFUNC_RET(value) ((void *) (value)) -+#endif -+ - #endif - - #endif /* _LIBC_VDSO_H */ -diff -pruN a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2014-05-20 14:44:39.298877321 +0530 -@@ -16,27 +16,51 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - --#include --#include --#include - #include --#include --#include - --#undef __gettimeofday --#include -+#ifdef SHARED - --/* Get the current time of day and timezone information, -- putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. -- Returns 0 on success, -1 on errors. */ -- --int --__gettimeofday (tv, tz) -- struct timeval *tv; -- struct timezone *tz; -+# include -+# include -+# include -+ -+void *gettimeofday_ifunc (void) __asm__ ("__gettimeofday"); -+ -+static int -+__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) -+{ -+ return INLINE_SYSCALL (gettimeofday, 2, tv, tz); -+} -+ -+void * -+gettimeofday_ifunc (void) -+{ -+ PREPARE_VERSION (linux2615, "LINUX_2.6.15", 123718565); -+ -+ /* If the vDSO is not available we fall back syscall. */ -+ void *vdso_gettimeofday = _dl_vdso_vsym ("__kernel_gettimeofday", &linux2615); -+ return (vdso_gettimeofday ? VDSO_IFUNC_RET (vdso_gettimeofday) -+ : (void*)__gettimeofday_syscall); -+} -+asm (".type __gettimeofday, %gnu_indirect_function"); -+ -+/* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't -+ let us do it in C because it doesn't know we're defining __gettimeofday -+ here in this file. */ -+asm (".globl __GI___gettimeofday\n" -+ "__GI___gettimeofday = __gettimeofday"); -+ -+#else -+ -+# include -+# include -+ -+int -+__gettimeofday (struct timeval *tv, struct timezone *tz) - { -- return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); -+ return INLINE_SYSCALL (gettimeofday, 2, tv, tz); - } - -+#endif - INTDEF (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) diff --git a/src/patches/glibc/glibc-rh1032628.patch b/src/patches/glibc/glibc-rh1032628.patch deleted file mode 100644 index 6140c190d..000000000 --- a/src/patches/glibc/glibc-rh1032628.patch +++ /dev/null @@ -1,166 +0,0 @@ -commit 028478fa40d85a73b19638dbe3f83b1acebf370c -Author: Ulrich Drepper -Date: Thu Mar 10 12:51:33 2011 -0500 - - Fix copy relocations handling of unique objects. - - 2011-03-06 Ulrich Drepper - -and a part of: - -commit 33f85a3fb9fe432e0ebf6a3481bc2d5e29cb605f -Author: Ulrich Drepper -Date: Thu Mar 10 03:18:21 2011 -0500 - - Don't run tests checking xecutable stack when SELinux is enforcing. - -since the latter incorrectly had a bit of the former changes. - -Additionally, the test case needs -lstdc++ to build. - -diff --git a/elf/Makefile b/elf/Makefile -index c427679..56cb1b1 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -201,7 +201,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ - tst-audit1 tst-audit2 tst-audit9 \ - tst-stackguard1 tst-addr1 tst-thrlock \ -- tst-unique1 tst-unique2 -+ tst-unique1 tst-unique2 tst-unique3 - # reldep9 - test-srcs = tst-pathopt - tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog -@@ -255,6 +255,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ - tst-unique2mod1 tst-unique2mod2 \ -+ tst-unique3lib tst-unique3lib2 \ - tst-auditmod9a tst-auditmod9b - ifeq (yes,$(have-initfini-array)) - modules-names += tst-array2dep tst-array5dep -@@ -1178,6 +1179,11 @@ $(objpfx)tst-unique1.out: $(objpfx)tst-unique1mod1.so \ - $(objpfx)tst-unique2: $(libdl) $(objpfx)tst-unique2mod1.so - $(objpfx)tst-unique2.out: $(objpfx)tst-unique2mod2.so - -+LDLIBS-tst-unique3lib.so = -lstdc++ -+LDLIBS-tst-unique3lib2.so = -lstdc++ -+$(objpfx)tst-unique3: $(libdl) $(objpfx)tst-unique3lib.so -+$(objpfx)tst-unique3.out: $(objpfx)tst-unique3lib2.so -+ - ifeq (yes,$(config-cflags-avx)) - CFLAGS-tst-audit4.c += -mavx - CFLAGS-tst-auditmod4a.c += -mavx -diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c -index 78c8669..874a4bb 100644 ---- a/elf/dl-lookup.c -+++ b/elf/dl-lookup.c -@@ -364,8 +363,19 @@ do_lookup_x (const char *undef_name, uint_fast32_t new_hash, - if (entries[idx].hashval == new_hash - && strcmp (entries[idx].name, undef_name) == 0) - { -- result->s = entries[idx].sym; -- result->m = (struct link_map *) entries[idx].map; -+ if ((type_class & ELF_RTYPE_CLASS_COPY) != 0) -+ { -+ /* We possibly have to initialize the central -+ copy from the copy addressed through the -+ relocation. */ -+ result->s = sym; -+ result->m = (struct link_map *) map; -+ } -+ else -+ { -+ result->s = entries[idx].sym; -+ result->m = (struct link_map *) entries[idx].map; -+ } - __rtld_lock_unlock_recursive (tab->lock); - return 1; - } -diff --git a/elf/tst-unique3.cc b/elf/tst-unique3.cc -new file mode 100644 -index 0000000..b2c9593 ---- /dev/null -+++ b/elf/tst-unique3.cc -@@ -0,0 +1,23 @@ -+#include "tst-unique3.h" -+#include -+#include "../dlfcn/dlfcn.h" -+ -+int t = S::i; -+ -+int -+main (void) -+{ -+ std::printf ("%d %d\n", S::i, t); -+ int result = S::i++ != 1 || t != 1; -+ result |= in_lib (); -+ void *d = dlopen ("$ORIGIN/tst-unique3lib2.so", RTLD_LAZY); -+ int (*fp) (); -+ if (d == NULL || (fp = (int(*)()) dlsym (d, "in_lib2")) == NULL) -+ { -+ std::printf ("failed to get symbol in_lib2\n"); -+ return 1; -+ } -+ result |= fp (); -+ dlclose (d); -+ return result; -+} -diff --git a/elf/tst-unique3.h b/elf/tst-unique3.h -new file mode 100644 -index 0000000..716d236 ---- /dev/null -+++ b/elf/tst-unique3.h -@@ -0,0 +1,8 @@ -+// BZ 12510 -+template -+struct S -+{ -+ static int i; -+}; -+ -+extern int in_lib (void); -diff --git a/elf/tst-unique3lib.cc b/elf/tst-unique3lib.cc -new file mode 100644 -index 0000000..fa8e85a ---- /dev/null -+++ b/elf/tst-unique3lib.cc -@@ -0,0 +1,11 @@ -+#include -+#include "tst-unique3.h" -+template int S::i = 1; -+static int i = S::i; -+ -+int -+in_lib (void) -+{ -+ std::printf ("in_lib: %d %d\n", S::i, i); -+ return S::i++ != 2 || i != 1; -+} -diff --git a/elf/tst-unique3lib2.cc b/elf/tst-unique3lib2.cc -new file mode 100644 -index 0000000..17d817e ---- /dev/null -+++ b/elf/tst-unique3lib2.cc -@@ -0,0 +1,12 @@ -+#include -+#include "tst-unique3.h" -+ -+template int S::i; -+ -+extern "C" -+int -+in_lib2 () -+{ -+ std::printf ("in_lib2: %d\n", S::i); -+ return S::i != 3; -+} -diff --git a/include/bits/dlfcn.h b/include/bits/dlfcn.h -index cb4a5c2..c31a645 100644 ---- a/include/bits/dlfcn.h -+++ b/include/bits/dlfcn.h -@@ -1,4 +1,3 @@ - #include_next - --extern void _dl_mcount_wrapper_check (void *__selfpc); - libc_hidden_proto (_dl_mcount_wrapper_check) diff --git a/src/patches/glibc/glibc-rh1039988.patch b/src/patches/glibc/glibc-rh1039988.patch deleted file mode 100644 index 253b31133..000000000 --- a/src/patches/glibc/glibc-rh1039988.patch +++ /dev/null @@ -1,141 +0,0 @@ -commit 9a3c6a6ff602c88d7155139a7d7d0000b7b7e946 -Author: Siddhesh Poyarekar -Date: Thu Jan 2 10:05:27 2014 +0530 - - Fix return code from getent netgroup when the netgroup is not found (bz #16366) - - nscd incorrectly returns a success even when the netgroup in question - is not found and adds a positive result in the cache. this patch - fixes this behaviour by adding a negative lookup entry to cache and - returning an error when the netgroup is not found. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 50936ee..9fc1664 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -65,6 +65,55 @@ struct dataset - char strdata[0]; - }; - -+/* Sends a notfound message and prepares a notfound dataset to write to the -+ cache. Returns true if there was enough memory to allocate the dataset and -+ returns the dataset in DATASETP, total bytes to write in TOTALP and the -+ timeout in TIMEOUTP. KEY_COPY is set to point to the copy of the key in the -+ dataset. */ -+static bool -+do_notfound (struct database_dyn *db, int fd, request_header *req, -+ const char *key, struct dataset **datasetp, ssize_t *totalp, -+ time_t *timeoutp, char **key_copy) -+{ -+ struct dataset *dataset; -+ ssize_t total; -+ time_t timeout; -+ bool cacheable = false; -+ -+ total = sizeof (notfound); -+ timeout = time (NULL) + db->negtimeout; -+ -+ if (fd != -1) -+ TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -+ -+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -+ /* If we cannot permanently store the result, so be it. */ -+ if (dataset != NULL) -+ { -+ dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -+ dataset->head.recsize = total; -+ dataset->head.notfound = true; -+ dataset->head.nreloads = 0; -+ dataset->head.usable = true; -+ -+ /* Compute the timeout time. */ -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; -+ -+ /* This is the reply. */ -+ memcpy (&dataset->resp, ¬found, total); -+ -+ /* Copy the key data. */ -+ memcpy (dataset->strdata, key, req->key_len); -+ *key_copy = dataset->strdata; -+ -+ cacheable = true; -+ } -+ *timeoutp = timeout; -+ *totalp = total; -+ *datasetp = dataset; -+ return cacheable; -+} - - static time_t - addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, -@@ -84,6 +133,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - struct dataset *dataset; - bool cacheable = false; - ssize_t total; -+ bool found = false; - - char *key_copy = NULL; - struct __netgrent data; -@@ -103,35 +153,8 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - && __nss_database_lookup ("netgroup", NULL, NULL, &netgroup_database)) - { - /* No such service. */ -- total = sizeof (notfound); -- timeout = time (NULL) + db->negtimeout; -- -- if (fd != -1) -- TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -- -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -- { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -- -- /* This is the reply. */ -- memcpy (&dataset->resp, ¬found, total); -- -- /* Copy the key data. */ -- memcpy (dataset->strdata, key, req->key_len); -- -- cacheable = true; -- } -- -+ cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout, -+ &key_copy); - goto writeout; - } - -@@ -167,6 +190,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - - if (status == NSS_STATUS_SUCCESS) - { -+ found = true; - union - { - enum nss_status (*f) (struct __netgrent *, char *, size_t, -@@ -326,6 +350,15 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - } - -+ /* No results. Return a failure and write out a notfound record in the -+ cache. */ -+ if (!found) -+ { -+ cacheable = do_notfound (db, fd, req, key, &dataset, &total, &timeout, -+ &key_copy); -+ goto writeout; -+ } -+ - total = buffilled; - - /* Fill in the dataset. */ diff --git a/src/patches/glibc/glibc-rh1043557.patch b/src/patches/glibc/glibc-rh1043557.patch deleted file mode 100644 index affbe964c..000000000 --- a/src/patches/glibc/glibc-rh1043557.patch +++ /dev/null @@ -1,145 +0,0 @@ -commit af37a8a3496327a6e5617a2c76f17aa1e8db835e -Author: Siddhesh Poyarekar -Date: Mon Jan 27 11:32:44 2014 +0530 - - Avoid undefined behaviour in netgroupcache - - Using a buffer after it has been reallocated is undefined behaviour, - so get offsets of the triplets in the old buffer before reallocating - it. - -commit 5d41dadf31bc8a2f9c34c40d52a442d3794e405c -Author: Siddhesh Poyarekar -Date: Fri Jan 24 13:51:15 2014 +0530 - - Adjust pointers to triplets in netgroup query data (BZ #16474) - - The _nss_*_getnetgrent_r query populates the netgroup results in the - allocated buffer and then sets the result triplet to point to strings - in the buffer. This is a problem when the buffer is reallocated since - the pointers to the triplet strings are no longer valid. The pointers - need to be adjusted so that they now point to strings in the - reallocated buffer. - -commit 980cb5180e1b71224a57ca52b995c959b7148c09 -Author: Siddhesh Poyarekar -Date: Thu Jan 16 10:20:22 2014 +0530 - - Don't use alloca in addgetnetgrentX (BZ #16453) - - addgetnetgrentX has a buffer which is grown as per the needs of the - requested size either by using alloca or by falling back to malloc if - the size is larger than 1K. There are two problems with the alloca - bits: firstly, it doesn't really extend the buffer since it does not - use the return value of the extend_alloca macro, which is the location - of the reallocated buffer. Due to this the buffer does not actually - extend itself and hence a subsequent write may overwrite stuff on the - stack. - - The second problem is more subtle - the buffer growth on the stack is - discontinuous due to block scope local variables. Combine that with - the fact that unlike realloc, extend_alloca does not copy over old - content and you have a situation where the buffer just has garbage in - the space where it should have had data. - - This could have been fixed by adding code to copy over old data - whenever we call extend_alloca, but it seems unnecessarily - complicated. This code is not exactly a performance hotspot (it's - called when there is a cache miss, so factors like network lookup or - file reads will dominate over memory allocation/reallocation), so this - premature optimization is unnecessary. - - Thanks Brad Hubbard for his help with debugging - the problem. - -diff -pruN glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c ---- glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c 2014-04-09 12:13:58.618582111 +0530 -+++ glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c 2014-04-09 12:07:21.486598665 +0530 -@@ -93,7 +93,6 @@ addgetnetgrentX (struct database_dyn *db - size_t buffilled = sizeof (*dataset); - char *buffer = NULL; - size_t nentries = 0; -- bool use_malloc = false; - size_t group_len = strlen (key) + 1; - union - { -@@ -138,7 +137,7 @@ addgetnetgrentX (struct database_dyn *db - } - - memset (&data, '\0', sizeof (data)); -- buffer = alloca (buflen); -+ buffer = xmalloc (buflen); - first_needed.elem.next = &first_needed.elem; - memcpy (first_needed.elem.name, key, group_len); - data.needed_groups = &first_needed.elem; -@@ -218,21 +217,24 @@ addgetnetgrentX (struct database_dyn *db - - if (buflen - req->key_len - bufused < needed) - { -- size_t newsize = MAX (2 * buflen, -- buflen + 2 * needed); -- if (use_malloc || newsize > 1024 * 1024) -- { -- buflen = newsize; -- char *newbuf = xrealloc (use_malloc -- ? buffer -- : NULL, -- buflen); -- -- buffer = newbuf; -- use_malloc = true; -- } -- else -- extend_alloca (buffer, buflen, newsize); -+ buflen += MAX (buflen, 2 * needed); -+ /* Save offset in the old buffer. We don't -+ bother with the NULL check here since -+ we'll do that later anyway. */ -+ size_t nhostdiff = nhost - buffer; -+ size_t nuserdiff = nuser - buffer; -+ size_t ndomaindiff = ndomain - buffer; -+ -+ char *newbuf = xrealloc (buffer, buflen); -+ /* Fix up the triplet pointers into the new -+ buffer. */ -+ nhost = (nhost ? newbuf + nhostdiff -+ : NULL); -+ nuser = (nuser ? newbuf + nuserdiff -+ : NULL); -+ ndomain = (ndomain ? newbuf + ndomaindiff -+ : NULL); -+ buffer = newbuf; - } - - nhost = memcpy (buffer + bufused, -@@ -299,18 +301,8 @@ addgetnetgrentX (struct database_dyn *db - } - else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) - { -- size_t newsize = 2 * buflen; -- if (use_malloc || newsize > 1024 * 1024) -- { -- buflen = newsize; -- char *newbuf = xrealloc (use_malloc -- ? buffer : NULL, buflen); -- -- buffer = newbuf; -- use_malloc = true; -- } -- else -- extend_alloca (buffer, buflen, newsize); -+ buflen *= 2; -+ buffer = xrealloc (buffer, buflen); - } - } - -@@ -446,8 +438,7 @@ addgetnetgrentX (struct database_dyn *db - } - - out: -- if (use_malloc) -- free (buffer); -+ free (buffer); - - *resultp = dataset; - diff --git a/src/patches/glibc/glibc-rh1044628.patch b/src/patches/glibc/glibc-rh1044628.patch deleted file mode 100644 index e5ff3ca1b..000000000 --- a/src/patches/glibc/glibc-rh1044628.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a -Author: Siddhesh Poyarekar -Date: Thu May 15 12:33:11 2014 +0530 - - Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (BZ #16849) - - getaddrinfo correctly returns EAI_AGAIN for AF_INET and AF_INET6 - queries. For AF_UNSPEC however, an older change - (a682a1bf553b1efe4dbb03207fece5b719cec482) broke the check and due to - that the returned error was EAI_NONAME. - - This patch fixes the check so that a non-authoritative not-found is - returned as EAI_AGAIN to the user instead of EAI_NONAME. - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 6258330..8f392b9 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -867,8 +867,7 @@ gaih_inet (const char *name, const struct gaih_service *service, - if (status != NSS_STATUS_TRYAGAIN - || rc != ERANGE || herrno != NETDB_INTERNAL) - { -- if (status == NSS_STATUS_TRYAGAIN -- && herrno == TRY_AGAIN) -+ if (herrno == TRY_AGAIN) - no_data = EAI_AGAIN; - else - no_data = herrno == NO_DATA; diff --git a/src/patches/glibc/glibc-rh1053178.patch b/src/patches/glibc/glibc-rh1053178.patch deleted file mode 100644 index a662cfe46..000000000 --- a/src/patches/glibc/glibc-rh1053178.patch +++ /dev/null @@ -1,214 +0,0 @@ -# -# Based on the commit: -# -# commit 6c82a2f8d7c8e21e39237225c819f182ae438db3 -# Author: Carlos O'Donell -# Date: Fri Sep 6 01:02:30 2013 -0400 -# -# Coordinate IPv6 definitions for Linux and glibc -# -# This change synchronizes the glibc headers with the Linux kernel -# headers and arranges to coordinate the definition of structures -# already defined the Linux kernel UAPI headers. -# -# It is now safe to include glibc's netinet/in.h or Linux's linux/in6.h -# in any order in a userspace application and you will get the same -# ABI. The ABI is guaranteed by UAPI and glibc. -# -# 2013-09-05 Carlos O'Donell -# Cong Wang -# -# * sysdeps/unix/sysv/linux/bits/in.h -# [_UAPI_LINUX_IN6_H]: Define __USE_KERNEL_IPV6_DEFS. -# * inet/netinet/in.h: Move in_addr definition and bits/in.h inclusion -# before __USE_KERNEL_IPV6_DEFS uses. -# * inet/netinet/in.h [!__USE_KERNEL_IPV6_DEFS]: Define IPPROTO_MH, and -# IPPROTO_BEETPH. -# [__USE_KERNEL_IPV6_DEFS]: Don't define any of IPPROTO_*, in6_addr, -# sockaddr_in6, or ipv6_mreq. -# -diff -urN glibc-2.12-2-gc4ccff1/inet/netinet/in.h glibc-2.12-2-gc4ccff1.mod/inet/netinet/in.h ---- glibc-2.12-2-gc4ccff1/inet/netinet/in.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/inet/netinet/in.h 2015-02-18 13:06:56.436802873 -0500 -@@ -28,13 +28,21 @@ - - __BEGIN_DECLS - -+/* Internet address. */ -+typedef uint32_t in_addr_t; -+struct in_addr -+ { -+ in_addr_t s_addr; -+ }; -+ -+/* Get system-specific definitions. */ -+#include -+ - /* Standard well-defined IP protocols. */ - enum - { - IPPROTO_IP = 0, /* Dummy protocol for TCP. */ - #define IPPROTO_IP IPPROTO_IP -- IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ --#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS - IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ - #define IPPROTO_ICMP IPPROTO_ICMP - IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ -@@ -57,10 +65,6 @@ - #define IPPROTO_DCCP IPPROTO_DCCP - IPPROTO_IPV6 = 41, /* IPv6 header. */ - #define IPPROTO_IPV6 IPPROTO_IPV6 -- IPPROTO_ROUTING = 43, /* IPv6 routing header. */ --#define IPPROTO_ROUTING IPPROTO_ROUTING -- IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ --#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT - IPPROTO_RSVP = 46, /* Reservation Protocol. */ - #define IPPROTO_RSVP IPPROTO_RSVP - IPPROTO_GRE = 47, /* General Routing Encapsulation. */ -@@ -69,14 +73,10 @@ - #define IPPROTO_ESP IPPROTO_ESP - IPPROTO_AH = 51, /* authentication header. */ - #define IPPROTO_AH IPPROTO_AH -- IPPROTO_ICMPV6 = 58, /* ICMPv6. */ --#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 -- IPPROTO_NONE = 59, /* IPv6 no next header. */ --#define IPPROTO_NONE IPPROTO_NONE -- IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ --#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS - IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ - #define IPPROTO_MTP IPPROTO_MTP -+ IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET. */ -+#define IPPROTO_BEETPH IPPROTO_BEETPH - IPPROTO_ENCAP = 98, /* Encapsulation Header. */ - #define IPPROTO_ENCAP IPPROTO_ENCAP - IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ -@@ -92,6 +92,28 @@ - IPPROTO_MAX - }; - -+/* If __USER_KERNEL_IPV6_DEFS is defined then the user has included the kernel -+ network headers first and we should use those ABI-identical definitions -+ instead of our own. */ -+#ifndef __USE_KERNEL_IPV6_DEFS -+enum -+ { -+ IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ -+#define IPPROTO_HOPOPTS IPPROTO_HOPOPTS -+ IPPROTO_ROUTING = 43, /* IPv6 routing header. */ -+#define IPPROTO_ROUTING IPPROTO_ROUTING -+ IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ -+#define IPPROTO_FRAGMENT IPPROTO_FRAGMENT -+ IPPROTO_ICMPV6 = 58, /* ICMPv6. */ -+#define IPPROTO_ICMPV6 IPPROTO_ICMPV6 -+ IPPROTO_NONE = 59, /* IPv6 no next header. */ -+#define IPPROTO_NONE IPPROTO_NONE -+ IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ -+#define IPPROTO_DSTOPTS IPPROTO_DSTOPTS -+ IPPROTO_MH = 135, /* IPv6 mobility header. */ -+#define IPPROTO_MH IPPROTO_MH -+ }; -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - /* Type to represent a port. */ - typedef uint16_t in_port_t; -@@ -136,15 +158,6 @@ - IPPORT_USERRESERVED = 5000 - }; - -- --/* Internet address. */ --typedef uint32_t in_addr_t; --struct in_addr -- { -- in_addr_t s_addr; -- }; -- -- - /* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to -@@ -193,7 +206,7 @@ - #define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */ - #define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */ - -- -+#ifndef __USE_KERNEL_IPV6_DEFS - /* IPv6 address */ - struct in6_addr - { -@@ -211,6 +224,7 @@ - # define s6_addr32 __in6_u.__u6_addr32 - #endif - }; -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - extern const struct in6_addr in6addr_any; /* :: */ - extern const struct in6_addr in6addr_loopback; /* ::1 */ -@@ -235,6 +249,7 @@ - sizeof (struct in_addr)]; - }; - -+#ifndef __USE_KERNEL_IPV6_DEFS - /* Ditto, for IPv6. */ - struct sockaddr_in6 - { -@@ -244,7 +259,7 @@ - struct in6_addr sin6_addr; /* IPv6 address */ - uint32_t sin6_scope_id; /* IPv6 scope-id */ - }; -- -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - #if defined __USE_MISC || defined __USE_GNU - /* IPv4 multicast request. */ -@@ -270,7 +285,7 @@ - }; - #endif - -- -+#ifndef __USE_KERNEL_IPV6_DEFS - /* Likewise, for IPv6. */ - struct ipv6_mreq - { -@@ -280,7 +295,7 @@ - /* local interface */ - unsigned int ipv6mr_interface; - }; -- -+#endif /* !__USE_KERNEL_IPV6_DEFS */ - - #if defined __USE_MISC || defined __USE_GNU - /* Multicast group request. */ -@@ -351,10 +366,6 @@ - * sizeof (struct sockaddr_storage))) - #endif - -- --/* Get system-specific definitions. */ --#include -- - /* Functions to convert between host and network byte order. - - Please note that these functions normally take `unsigned long int' or -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h glibc-2.12-2-gc4ccff1.mod/sysdeps/unix/sysv/linux/bits/in.h ---- glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h 2015-02-18 13:04:15.547734092 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/unix/sysv/linux/bits/in.h 2015-02-18 13:06:56.436802873 -0500 -@@ -22,6 +22,18 @@ - # error "Never use directly; include instead." - #endif - -+/* If the application has already included linux/in6.h from a linux-based -+ kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the -+ defines), sockaddr_in6, or ipv6_mreq. The ABI used by the linux-kernel and -+ glibc match exactly. Neither the linux kernel nor glibc should break this -+ ABI without coordination. */ -+#ifdef _UAPI_LINUX_IN6_H -+/* This is not quite the same API since the kernel always defines s6_addr16 and -+ s6_addr32. This is not a violation of POSIX since POSIX says "at least the -+ following member" and that holds true. */ -+# define __USE_KERNEL_IPV6_DEFS -+#endif -+ - /* Options for use with `getsockopt' and `setsockopt' at the IP level. - The first word in the comment at the right is the data type used; - "bool" means a boolean value stored in an `int'. */ diff --git a/src/patches/glibc/glibc-rh1054846.patch b/src/patches/glibc/glibc-rh1054846.patch deleted file mode 100644 index 50b41096f..000000000 --- a/src/patches/glibc/glibc-rh1054846.patch +++ /dev/null @@ -1,57 +0,0 @@ -commit fbd6b5a4052316f7eb03c4617eebfaafc59dcc06 -Author: Siddhesh Poyarekar -Date: Thu Mar 27 07:15:22 2014 +0530 - - Fix nscd lookup for innetgr when netgroup has wildcards (BZ #16758) - - nscd works correctly when the request in innetgr is a wildcard, - i.e. when one or more of host, user or domain parameters is NULL. - However, it does not work when the the triplet in the netgroup - definition has a wildcard. This is easy to reproduce for a triplet - defined as follows: - - foonet (,foo,) - - Here, an innetgr call that looks like this: - - innetgr ("foonet", "foohost", "foo", NULL); - - should succeed and so should: - - innetgr ("foonet", NULL, "foo", "foodomain"); - - It does succeed with nscd disabled, but not with nscd enabled. This - fix adds this additional check for all three parts of the triplet so - that it gives the correct result. - - [BZ #16758] - * nscd/netgroupcache.c (addinnetgrX): Succeed if triplet has - blank values. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 5ba1e1f..5d15aa4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -560,15 +560,19 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req, - { - bool success = true; - -- if (host != NULL) -+ /* For the host, user and domain in each triplet, we assume success -+ if the value is blank because that is how the wildcard entry to -+ match anything is stored in the netgroup cache. */ -+ if (host != NULL && *triplets != '\0') - success = strcmp (host, triplets) == 0; - triplets = (const char *) rawmemchr (triplets, '\0') + 1; - -- if (success && user != NULL) -+ if (success && user != NULL && *triplets != '\0') - success = strcmp (user, triplets) == 0; - triplets = (const char *) rawmemchr (triplets, '\0') + 1; - -- if (success && (domain == NULL || strcmp (domain, triplets) == 0)) -+ if (success && (domain == NULL || *triplets == '\0' -+ || strcmp (domain, triplets) == 0)) - { - dataset->resp.result = 1; - break; diff --git a/src/patches/glibc/glibc-rh1066724.patch b/src/patches/glibc/glibc-rh1066724.patch deleted file mode 100644 index a03f1d10a..000000000 --- a/src/patches/glibc/glibc-rh1066724.patch +++ /dev/null @@ -1,620 +0,0 @@ -diff --git a/malloc/Makefile b/malloc/Makefile -index e7ec1ab..5330a3b 100644 ---- a/malloc/Makefile -+++ b/malloc/Makefile -@@ -27,7 +27,8 @@ all: - dist-headers := malloc.h - headers := $(dist-headers) obstack.h mcheck.h - tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \ -- tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 -+ tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \ -+ tst-malloc-backtrace - test-srcs = tst-mtrace - - distribute = thread-m.h mtrace.pl mcheck-init.c stackinfo.h memusage.h \ -@@ -49,6 +50,9 @@ extra-libs-others = $(extra-libs) - libmemusage-routines = memusage - libmemusage-inhibit-o = $(filter-out .os,$(object-suffixes)) - -+$(objpfx)tst-malloc-backtrace: $(common-objpfx)nptl/libpthread.so \ -+ $(common-objpfx)nptl/libpthread_nonshared.a -+ - # These should be removed by `make clean'. - extra-objs = mcheck-init.o libmcheck.a - -diff --git a/malloc/arena.c b/malloc/arena.c -index 18bea2b..5180516 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -123,7 +123,7 @@ int __malloc_initialized = -1; - - #ifdef PER_THREAD - #define arena_lock(ptr, size) do { \ -- if(ptr) \ -+ if(ptr && !arena_is_corrupt (ptr)) \ - (void)mutex_lock(&ptr->mutex); \ - else \ - ptr = arena_get2(ptr, (size), false); \ -@@ -1011,7 +1011,21 @@ reused_arena (bool retrying) - if (retrying && result == &main_arena) - result = result->next; - -- /* No arena available. Wait for the next in line. */ -+ /* Make sure that the arena we get is not corrupted. */ -+ mstate begin = result; -+ while (arena_is_corrupt (result)) -+ { -+ result = result->next; -+ if (result == begin) -+ break; -+ } -+ -+ /* We could not find any arena that was either not corrupted or not the one -+ we wanted to avoid. */ -+ if (result == begin) -+ return NULL; -+ -+ /* No arena available without contention. Wait for the next in line. */ - (void)mutex_lock(&result->mutex); - - out: -diff --git a/malloc/hooks.c b/malloc/hooks.c -index cc83d21..38d2542 100644 ---- a/malloc/hooks.c -+++ b/malloc/hooks.c -@@ -220,7 +220,8 @@ top_check() - return 0; - - mutex_unlock(&main_arena); -- malloc_printerr (check_action, "malloc: top chunk is corrupt", t); -+ malloc_printerr (check_action, "malloc: top chunk is corrupt", t, -+ &main_arena); - mutex_lock(&main_arena); - - /* Try to set up a new top chunk. */ -@@ -283,7 +284,7 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller; - if(!p) { - (void)mutex_unlock(&main_arena.mutex); - -- malloc_printerr(check_action, "free(): invalid pointer", mem); -+ malloc_printerr(check_action, "free(): invalid pointer", mem, &main_arena); - return; - } - #if HAVE_MMAP -@@ -329,7 +330,8 @@ realloc_check(oldmem, bytes, caller) - const mchunkptr oldp = mem2chunk_check(oldmem, &magic_p); - (void)mutex_unlock(&main_arena.mutex); - if(!oldp) { -- malloc_printerr(check_action, "realloc(): invalid pointer", oldmem); -+ malloc_printerr(check_action, "realloc(): invalid pointer", oldmem, -+ &main_arena); - return malloc_check(bytes, NULL); - } - const INTERNAL_SIZE_T oldsize = chunksize(oldp); -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 597c7b0..20ac534 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -1633,7 +1633,7 @@ static size_t mUSABLe(Void_t*); - static void mSTATs(void); - static int mALLOPt(int, int); - static struct mallinfo mALLINFo(mstate); --static void malloc_printerr(int action, const char *str, void *ptr); -+static void malloc_printerr(int action, const char *str, void *ptr, mstate av); - - static Void_t* internal_function mem2mem_check(Void_t *p, size_t sz); - static int internal_function top_check(void); -@@ -2114,7 +2114,8 @@ typedef struct malloc_chunk* mbinptr; - BK = P->bk; \ - if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ - mutex_unlock(&(AV)->mutex); \ -- malloc_printerr (check_action, "corrupted double-linked list", P); \ -+ malloc_printerr (check_action, "corrupted double-linked list", P, \ -+ AV); \ - mutex_lock(&(AV)->mutex); \ - } else { \ - FD->bk = BK; \ -@@ -2344,6 +2345,15 @@ typedef struct malloc_chunk* mfastbinptr; - #define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT) - #define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT) - -+/* ARENA_CORRUPTION_BIT is set if a memory corruption was detected on the -+ arena. Such an arena is no longer used to allocate chunks. Chunks -+ allocated in that arena before detecting corruption are not freed. */ -+ -+#define ARENA_CORRUPTION_BIT (4U) -+ -+#define arena_is_corrupt(A) (((A)->flags & ARENA_CORRUPTION_BIT)) -+#define set_arena_corrupt(A) ((A)->flags |= ARENA_CORRUPTION_BIT) -+ - /* - Set value of max_fast. - Use impossibly small value if 0. -@@ -3002,8 +3012,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - rather than expanding top. - */ - -- if ((unsigned long)(nb) >= (unsigned long)(mp_.mmap_threshold) && -- (mp_.n_mmaps < mp_.n_mmaps_max)) { -+ if (av == NULL -+ || ((unsigned long)(nb) >= (unsigned long)(mp_.mmap_threshold) && -+ (mp_.n_mmaps < mp_.n_mmaps_max))) { - - char* mm; /* return value from mmap call*/ - -@@ -3079,6 +3090,10 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - } - #endif - -+ /* There are no usable arenas and mmap also failed. */ -+ if (av == NULL) -+ return 0; -+ - /* Record incoming configuration of top */ - - old_top = av->top; -@@ -3260,7 +3275,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av; - else if (contiguous(av) && old_size && brk < old_end) { - /* Oops! Someone else killed our space.. Can't touch anything. */ - mutex_unlock(&av->mutex); -- malloc_printerr (3, "break adjusted to free malloc space", brk); -+ malloc_printerr (3, "break adjusted to free malloc space", brk, av); - mutex_lock(&av->mutex); - } - -@@ -3542,7 +3557,7 @@ munmap_chunk(p) mchunkptr p; - if (__builtin_expect (((block | total_size) & (mp_.pagesize - 1)) != 0, 0)) - { - malloc_printerr (check_action, "munmap_chunk(): invalid pointer", -- chunk2mem (p)); -+ chunk2mem (p), NULL); - return; - } - -@@ -3625,65 +3640,31 @@ public_mALLOc(size_t bytes) - if (__builtin_expect (hook != NULL, 0)) - return (*hook)(bytes, RETURN_ADDRESS (0)); - -- arena_lookup(ar_ptr); --#if 0 -- // XXX We need double-word CAS and fastbins must be extended to also -- // XXX hold a generation counter for each entry. -- if (ar_ptr) { -- INTERNAL_SIZE_T nb; /* normalized request size */ -- checked_request2size(bytes, nb); -- if (nb <= get_max_fast ()) { -- long int idx = fastbin_index(nb); -- mfastbinptr* fb = &fastbin (ar_ptr, idx); -- mchunkptr pp = *fb; -- mchunkptr v; -- do -- { -- v = pp; -- if (v == NULL) -- break; -- } -- while ((pp = catomic_compare_and_exchange_val_acq (fb, v->fd, v)) != v); -- if (v != 0) { -- if (__builtin_expect (fastbin_index (chunksize (v)) != idx, 0)) -- malloc_printerr (check_action, "malloc(): memory corruption (fast)", -- chunk2mem (v)); -- check_remalloced_chunk(ar_ptr, v, nb); -- void *p = chunk2mem(v); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -- return p; -- } -- } -- } --#endif -+ arena_get(ar_ptr, bytes); - -- arena_lock(ar_ptr, bytes); -- if(!ar_ptr) -- return 0; - victim = _int_malloc(ar_ptr, bytes); -- if(!victim) { -+ if(!victim && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - victim = _int_malloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - victim = _int_malloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!victim || chunk_is_mmapped(mem2chunk(victim)) || - ar_ptr == arena_for_chunk(mem2chunk(victim))); - return victim; -@@ -3773,6 +3754,11 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - /* its size */ - const INTERNAL_SIZE_T oldsize = chunksize(oldp); - -+ if (chunk_is_mmapped (oldp)) -+ ar_ptr = NULL; -+ else -+ ar_ptr = arena_for_chunk (oldp); -+ - /* Little security check which won't hurt performance: the - allocator never wrapps around at the end of the address space. - Therefore we can exclude some size values which might appear -@@ -3780,7 +3766,8 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - if (__builtin_expect ((uintptr_t) oldp > (uintptr_t) -oldsize, 0) - || __builtin_expect (misaligned_chunk (oldp), 0)) - { -- malloc_printerr (check_action, "realloc(): invalid pointer", oldmem); -+ malloc_printerr (check_action, "realloc(): invalid pointer", oldmem, -+ ar_ptr); - return NULL; - } - -@@ -3806,7 +3793,6 @@ public_rEALLOc(Void_t* oldmem, size_t bytes) - } - #endif - -- ar_ptr = arena_for_chunk(oldp); - #if THREAD_STATS - if(!mutex_trylock(&ar_ptr->mutex)) - ++(ar_ptr->stat_lock_direct); -@@ -3887,31 +3873,29 @@ public_mEMALIGn(size_t alignment, size_t bytes) - } - - arena_get(ar_ptr, bytes + alignment + MINSIZE); -- if(!ar_ptr) -- return 0; - p = _int_memalign(ar_ptr, alignment, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, alignment, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, alignment, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - return p; -@@ -3945,31 +3929,29 @@ public_vALLOc(size_t bytes) - return (*hook)(pagesz, bytes, RETURN_ADDRESS (0)); - - arena_get(ar_ptr, bytes + pagesz + MINSIZE); -- if(!ar_ptr) -- return 0; - p = _int_valloc(ar_ptr, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, pagesz, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4004,28 +3986,28 @@ public_pVALLOc(size_t bytes) - - arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); - p = _int_pvalloc(ar_ptr, bytes); -- if(!p) { -+ if(!p && ar_ptr != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); -- if(ar_ptr) { -+ if(ar_ptr) - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -- (void)mutex_unlock(&ar_ptr->mutex); -- } - #endif - } -- } else -+ } -+ -+ if (ar_ptr != NULL) - (void)mutex_unlock(&ar_ptr->mutex); -+ - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4072,55 +4054,65 @@ public_cALLOc(size_t n, size_t elem_size) - sz = bytes; - - arena_get(av, sz); -- if(!av) -- return 0; - -- /* Check if we hand out the top chunk, in which case there may be no -- need to clear. */ -+ if (av) -+ { -+ /* Check if we hand out the top chunk, in which case there may be no -+ need to clear. */ - #if MORECORE_CLEARS -- oldtop = top(av); -- oldtopsize = chunksize(top(av)); -+ oldtop = top(av); -+ oldtopsize = chunksize(top(av)); - #if MORECORE_CLEARS < 2 -- /* Only newly allocated memory is guaranteed to be cleared. */ -- if (av == &main_arena && -- oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) -- oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); -+ /* Only newly allocated memory is guaranteed to be cleared. */ -+ if (av == &main_arena && -+ oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) -+ oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); - #endif -- if (av != &main_arena) -+ if (av != &main_arena) -+ { -+ heap_info *heap = heap_for_ptr (oldtop); -+ if (oldtopsize < (char *) heap + heap->mprotect_size - (char *) oldtop) -+ oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; -+ } -+#endif -+ } -+ else - { -- heap_info *heap = heap_for_ptr (oldtop); -- if (oldtopsize < (char *) heap + heap->mprotect_size - (char *) oldtop) -- oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; -+ /* No usable arenas. */ -+ oldtop = 0; -+ oldtopsize = 0; - } --#endif - mem = _int_malloc(av, sz); - -- - assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || - av == arena_for_chunk(mem2chunk(mem))); - -- if (mem == 0) { -+ if (mem == 0 && av != NULL) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { - (void)mutex_unlock(&av->mutex); - (void)mutex_lock(&main_arena.mutex); - mem = _int_malloc(&main_arena, sz); -- (void)mutex_unlock(&main_arena.mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); - av = arena_get2(prev, sz, true); -- if(av) { -+ if(av) - mem = _int_malloc(av, sz); -- (void)mutex_unlock(&av->mutex); -- } - #endif - } - if (mem == 0) return 0; -- } else -+ } -+ -+ if (av != NULL) - (void)mutex_unlock(&av->mutex); -+ -+ /* Allocation failed even after a retry. */ -+ if (mem == 0) -+ return 0; -+ - p = mem2chunk(mem); - - /* Two optional cases in which clearing not necessary */ -@@ -4175,6 +4167,8 @@ public_cALLOc(size_t n, size_t elem_size) - } - - #ifndef _LIBC -+/* XXX These functions are not patched to detect arena corruption because they -+ are not built in glibc. */ - - Void_t** - public_iCALLOc(size_t n, size_t elem_size, Void_t** chunks) -@@ -4309,6 +4303,16 @@ _int_malloc(mstate av, size_t bytes) - - checked_request2size(bytes, nb); - -+ /* There are no usable arenas. Fall back to sysmalloc to get a chunk from -+ mmap. */ -+ if (__glibc_unlikely (av == NULL)) -+ { -+ void *p = sYSMALLOc (nb, av); -+ if (p != NULL) -+ alloc_perturb (p, bytes); -+ return p; -+ } -+ - /* - If the size qualifies as a fastbin, first check corresponding bin. - This code is safe to execute even if av is not yet initialized, so we -@@ -4337,7 +4341,7 @@ _int_malloc(mstate av, size_t bytes) - errstr = "malloc(): memory corruption (fast)"; - errout: - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, errstr, chunk2mem (victim)); -+ malloc_printerr (check_action, errstr, chunk2mem (victim), av); - mutex_lock(&av->mutex); - return NULL; - } -@@ -4429,7 +4433,7 @@ _int_malloc(mstate av, size_t bytes) - { - void *p = chunk2mem(victim); - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, "malloc(): memory corruption", p); -+ malloc_printerr (check_action, "malloc(): memory corruption", p, av); - mutex_lock(&av->mutex); - } - size = chunksize(victim); -@@ -4829,7 +4833,7 @@ _int_free(mstate av, mchunkptr p) - if (have_lock || locked) - (void)mutex_unlock(&av->mutex); - #endif -- malloc_printerr (check_action, errstr, chunk2mem(p)); -+ malloc_printerr (check_action, errstr, chunk2mem(p), av); - #ifdef ATOMIC_FASTBINS - if (have_lock) - mutex_lock(&av->mutex); -@@ -5281,7 +5285,7 @@ _int_realloc(mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize, - errstr = "realloc(): invalid old size"; - errout: - mutex_unlock(&av->mutex); -- malloc_printerr (check_action, errstr, chunk2mem(oldp)); -+ malloc_printerr (check_action, errstr, chunk2mem(oldp), av); - mutex_lock(&av->mutex); - return NULL; - } -@@ -5881,6 +5885,10 @@ static int mTRIm(mstate av, size_t pad) - static int mTRIm(av, pad) mstate av; size_t pad; - #endif - { -+ /* Don't touch corrupt arenas. */ -+ if (arena_is_corrupt (av)) -+ return 0; -+ - /* Ensure initialization/consolidation */ - malloc_consolidate (av); - -@@ -6320,8 +6328,14 @@ int mALLOPt(param_number, value) int param_number; int value; - extern char **__libc_argv attribute_hidden; - - static void --malloc_printerr(int action, const char *str, void *ptr) -+malloc_printerr(int action, const char *str, void *ptr, mstate ar_ptr) - { -+ /* Avoid using this arena in future. We do not attempt to synchronize this -+ with anything else because we minimally want to ensure that __libc_message -+ gets its resources safely without stumbling on the current corruption. */ -+ if (ar_ptr) -+ set_arena_corrupt (ar_ptr); -+ - if ((action & 5) == 5) - __libc_message (action & 2, "%s\n", str); - else if (action & 1) -diff --git a/malloc/tst-malloc-backtrace.c b/malloc/tst-malloc-backtrace.c -new file mode 100644 -index 0000000..796a42f ---- /dev/null -+++ b/malloc/tst-malloc-backtrace.c -@@ -0,0 +1,50 @@ -+/* Verify that backtrace does not deadlock on itself on memory corruption. -+ Copyright (C) 2015 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+ -+#include -+ -+#define SIZE 4096 -+ -+/* Wrap free with a function to prevent gcc from optimizing it out. */ -+static void -+__attribute__((noinline)) -+call_free (void *ptr) -+{ -+ free (ptr); -+ *(size_t *)(ptr - sizeof (size_t)) = 1; -+} -+ -+int -+do_test (void) -+{ -+ void *ptr1 = malloc (SIZE); -+ void *ptr2 = malloc (SIZE); -+ -+ call_free ((void *) ptr1); -+ ptr1 = malloc (SIZE); -+ -+ /* Not reached. The return statement is to put ptr2 into use so that gcc -+ doesn't optimize out that malloc call. */ -+ return (ptr1 == ptr2); -+} -+ -+#define TEST_FUNCTION do_test () -+#define EXPECTED_SIGNAL SIGABRT -+ -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1074342.patch b/src/patches/glibc/glibc-rh1074342.patch deleted file mode 100644 index 121127e6e..000000000 --- a/src/patches/glibc/glibc-rh1074342.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit c44496df2f090a56d3bf75df930592dac6bba46f -Author: Siddhesh Poyarekar -Date: Wed Mar 12 17:27:22 2014 +0530 - - Provide correct buffer length to netgroup queries in nscd (BZ #16695) - - The buffer to query netgroup entries is allocated sufficient space for - the netgroup entries and the key to be appended at the end, but it - sends in an incorrect available length to the NSS netgroup query - functions, resulting in overflow of the buffer in some special cases. - The fix here is to factor in the key length when sending the available - buffer and buffer length to the query functions. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 426d3c5..5ba1e1f 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -202,7 +202,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - { - int e; - status = getfct.f (&data, buffer + buffilled, -- buflen - buffilled, &e); -+ buflen - buffilled - req->key_len, &e); - if (status == NSS_STATUS_RETURN - || status == NSS_STATUS_NOTFOUND) - /* This was either the last one for this group or the diff --git a/src/patches/glibc/glibc-rh1074353.patch b/src/patches/glibc/glibc-rh1074353.patch deleted file mode 100644 index c8aa8b0d6..000000000 --- a/src/patches/glibc/glibc-rh1074353.patch +++ /dev/null @@ -1,398 +0,0 @@ -commit bc8f194c8c29e46e8ee4034f06e46988dfff38f7 -Author: Siddhesh Poyarekar -Date: Wed Apr 30 12:00:39 2014 +0530 - - Initialize all of datahead structure in nscd (BZ #16791) - - The datahead structure has an unused padding field that remains - uninitialized. Valgrind prints out a warning for it on querying a - netgroups entry. This is harmless, but is a potential data leak since - it would result in writing out an uninitialized byte to the cache - file. Besides, this happens only when there is a cache miss, so we're - not adding computation to any fast path. - -commit 1cdeb2372ddecac0dfe0c132a033e9590ffa07d2 -Author: Siddhesh Poyarekar -Date: Wed Apr 30 11:57:09 2014 +0530 - - Consolidate code to initialize nscd dataset header - - This patch consolidates the code to initialize the header of a dataset - into a single set of functions (one for positive and another for - negative datasets) primarily to reduce repetition of code. The - secondary reason is to simplify Patch 2/2 which fixes the problem of - an uninitialized byte in the header by initializing an unused field in - the structure and hence preventing a possible data leak into the cache - file. - -diff --git a/nscd/aicache.c b/nscd/aicache.c -index 98d40a1..d7966bd 100644 ---- a/nscd/aicache.c -+++ b/nscd/aicache.c -@@ -383,17 +383,12 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, - cp = family; - } - -- /* Fill in the rest of the dataset. */ -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -- timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ ttl == INT32_MAX ? db->postimeout : ttl); - -+ /* Fill in the rest of the dataset. */ - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; - dataset->resp.naddrs = naddrs; -@@ -528,15 +523,9 @@ next_nip: - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ sizeof (struct dataset) + req->key_len, -+ total, db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -diff --git a/nscd/grpcache.c b/nscd/grpcache.c -index b5a33eb..df59fa7 100644 ---- a/nscd/grpcache.c -+++ b/nscd/grpcache.c -@@ -128,14 +128,10 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, - } - else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -232,14 +228,10 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, - dataset_temporary = true; - } - -- dataset->head.allocsize = total + n; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + n, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/hstcache.c b/nscd/hstcache.c -index a79b67a..d4f1ad2 100644 ---- a/nscd/hstcache.c -+++ b/nscd/hstcache.c -@@ -152,15 +152,11 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; -- timeout = dataset->head.timeout = t + dataset->head.ttl; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ (ttl == INT32_MAX -+ ? db->negtimeout : ttl)); - - /* This is the reply. */ - memcpy (&dataset->resp, resp, total); -@@ -257,15 +253,10 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -- timeout = dataset->head.timeout = t + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ ttl == INT32_MAX ? db->postimeout : ttl); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c -index 1bf9f0d..361319f 100644 ---- a/nscd/initgrcache.c -+++ b/nscd/initgrcache.c -@@ -213,14 +213,10 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -276,14 +272,10 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 820d823..b3d40e9 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -90,15 +90,9 @@ do_notfound (struct database_dyn *db, int fd, request_header *req, - /* If we cannot permanently store the result, so be it. */ - if (dataset != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -- dataset->head.ttl = db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ sizeof (struct dataset) + req->key_len, -+ total, db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -359,13 +353,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - - /* Fill in the dataset. */ - dataset = (struct dataset *) buffer; -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- dataset->head.ttl = db->postimeout; -- timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -541,12 +532,12 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req, - dataset = &dataset_mem; - } - -- dataset->head.allocsize = sizeof (*dataset) + req->key_len; -- dataset->head.recsize = sizeof (innetgroup_response_header); -+ datahead_init_pos (&dataset->head, sizeof (*dataset) + req->key_len, -+ sizeof (innetgroup_response_header), -+ he == NULL ? 0 : dh->nreloads + 1, result->head.ttl); -+ /* Set the notfound status and timeout based on the result from -+ getnetgrent. */ - dataset->head.notfound = result->head.notfound; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- dataset->head.ttl = result->head.ttl; - dataset->head.timeout = timeout; - - dataset->resp.version = NSCD_VERSION; -diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h -index 98f77e7..ee16df6 100644 ---- a/nscd/nscd-client.h -+++ b/nscd/nscd-client.h -@@ -236,6 +236,48 @@ struct datahead - } data[0]; - }; - -+static inline time_t -+datahead_init_common (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint32_t ttl) -+{ -+ /* Initialize so that we don't write out junk in uninitialized data to the -+ cache. */ -+ memset (head, 0, sizeof (*head)); -+ -+ head->allocsize = allocsize; -+ head->recsize = recsize; -+ head->usable = true; -+ -+ head->ttl = ttl; -+ -+ /* Compute and return the timeout time. */ -+ return head->timeout = time (NULL) + ttl; -+} -+ -+static inline time_t -+datahead_init_pos (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint8_t nreloads, uint32_t ttl) -+{ -+ time_t ret = datahead_init_common (head, allocsize, recsize, ttl); -+ -+ head->notfound = false; -+ head->nreloads = nreloads; -+ -+ return ret; -+} -+ -+static inline time_t -+datahead_init_neg (struct datahead *head, nscd_ssize_t allocsize, -+ nscd_ssize_t recsize, uint32_t ttl) -+{ -+ time_t ret = datahead_init_common (head, allocsize, recsize, ttl); -+ -+ /* We don't need to touch nreloads here since it is set to our desired value -+ (0) when we clear the structure. */ -+ head->notfound = true; -+ -+ return ret; -+} - - /* Structure for one hash table entry. */ - struct hashentry -diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c -index fa355c3..41c245b 100644 ---- a/nscd/pwdcache.c -+++ b/nscd/pwdcache.c -@@ -135,14 +135,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -215,14 +211,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + n; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + n, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -diff --git a/nscd/servicescache.c b/nscd/servicescache.c -index 12ce9b2..95bdcfe 100644 ---- a/nscd/servicescache.c -+++ b/nscd/servicescache.c -@@ -120,14 +120,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, - else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) - + req->key_len), 1)) != NULL) - { -- dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -- dataset->head.recsize = total; -- dataset->head.notfound = true; -- dataset->head.nreloads = 0; -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->negtimeout; -+ timeout = datahead_init_neg (&dataset->head, -+ (sizeof (struct dataset) -+ + req->key_len), total, -+ db->negtimeout); - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -207,14 +203,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, - alloca_used = true; - } - -- dataset->head.allocsize = total + req->key_len; -- dataset->head.recsize = total - offsetof (struct dataset, resp); -- dataset->head.notfound = false; -- dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -- dataset->head.usable = true; -- -- /* Compute the timeout time. */ -- timeout = dataset->head.timeout = t + db->postimeout; -+ timeout = datahead_init_pos (&dataset->head, total + req->key_len, -+ total - offsetof (struct dataset, resp), -+ he == NULL ? 0 : dh->nreloads + 1, -+ db->postimeout); - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; diff --git a/src/patches/glibc/glibc-rh1082379.patch b/src/patches/glibc/glibc-rh1082379.patch deleted file mode 100644 index 60a0ece0d..000000000 --- a/src/patches/glibc/glibc-rh1082379.patch +++ /dev/null @@ -1,63 +0,0 @@ -commit ea7d8b95e2fcb81f68b04ed7787a3dbda023991a -Author: Siddhesh Poyarekar -Date: Thu Mar 27 19:48:15 2014 +0530 - - Avoid overlapping addresses to stpcpy calls in nscd (BZ #16760) - - Calls to stpcpy from nscd netgroups code will have overlapping source - and destination when all three values in the returned triplet are - non-NULL and in the expected (host,user,domain) order. This is seen - in valgrind as: - - ==3181== Source and destination overlap in stpcpy(0x19973b48, 0x19973b48) - ==3181== at 0x4C2F30A: stpcpy (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) - ==3181== by 0x12567A: addgetnetgrentX (string3.h:111) - ==3181== by 0x12722D: addgetnetgrent (netgroupcache.c:665) - ==3181== by 0x11114C: nscd_run_worker (connections.c:1338) - ==3181== by 0x4E3C102: start_thread (pthread_create.c:309) - ==3181== by 0x59B81AC: clone (clone.S:111) - ==3181== - - Fix this by using memmove instead of stpcpy. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 5d15aa4..820d823 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -216,6 +216,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - const char *nuser = data.val.triple.user; - const char *ndomain = data.val.triple.domain; - -+ size_t hostlen = strlen (nhost ?: "") + 1; -+ size_t userlen = strlen (nuser ?: "") + 1; -+ size_t domainlen = strlen (ndomain ?: "") + 1; -+ - if (nhost == NULL || nuser == NULL || ndomain == NULL - || nhost > nuser || nuser > ndomain) - { -@@ -233,9 +237,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - : last + strlen (last) + 1 - buffer); - - /* We have to make temporary copies. */ -- size_t hostlen = strlen (nhost ?: "") + 1; -- size_t userlen = strlen (nuser ?: "") + 1; -- size_t domainlen = strlen (ndomain ?: "") + 1; - size_t needed = hostlen + userlen + domainlen; - - if (buflen - req->key_len - bufused < needed) -@@ -269,9 +270,12 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - - char *wp = buffer + buffilled; -- wp = stpcpy (wp, nhost) + 1; -- wp = stpcpy (wp, nuser) + 1; -- wp = stpcpy (wp, ndomain) + 1; -+ wp = memmove (wp, nhost ?: "", hostlen); -+ wp += hostlen; -+ wp = memmove (wp, nuser ?: "", userlen); -+ wp += userlen; -+ wp = memmove (wp, ndomain ?: "", domainlen); -+ wp += domainlen; - buffilled = wp - buffer; - ++nentries; - } diff --git a/src/patches/glibc/glibc-rh1085273.patch b/src/patches/glibc/glibc-rh1085273.patch deleted file mode 100644 index ee0f2898e..000000000 --- a/src/patches/glibc/glibc-rh1085273.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit d41242129ba693cdbc8db85b846fcaccf9f0b7c4 -Author: Siddhesh Poyarekar -Date: Thu Jan 2 10:03:12 2014 +0530 - - Fix infinite loop in nscd when netgroup is empty (bz #16365) - - Currently, when a user looks up a netgroup that does not have any - members, nscd goes into an infinite loop trying to find members in the - group. This is because it does not handle cases when getnetgrent - returns an NSS_STATUS_NOTFOUND (which is what it does on empty group). - Fixed to handle this in the same way as NSS_STATUS_RETURN, similar to - what getgrent does by itself. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index baebdd7..50936ee 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -180,9 +180,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - int e; - status = getfct.f (&data, buffer + buffilled, - buflen - buffilled, &e); -- if (status == NSS_STATUS_RETURN) -- /* This was the last one for this group. Look -- at next group if available. */ -+ if (status == NSS_STATUS_RETURN -+ || status == NSS_STATUS_NOTFOUND) -+ /* This was either the last one for this group or the -+ group was empty. Look at next group if available. */ - break; - if (status == NSS_STATUS_SUCCESS) - { diff --git a/src/patches/glibc/glibc-rh1085289.patch b/src/patches/glibc/glibc-rh1085289.patch deleted file mode 100644 index 9bd284ebf..000000000 --- a/src/patches/glibc/glibc-rh1085289.patch +++ /dev/null @@ -1,60 +0,0 @@ -commit dd3022d75e6fb8957843d6d84257a5d8457822d5 -Author: Siddhesh Poyarekar -Date: Thu Mar 27 19:49:51 2014 +0530 - - Return NULL for wildcard values in getnetgrent from nscd (BZ #16759) - - getnetgrent is supposed to return NULL for values that are wildcards - in the (host, user, domain) triplet. This works correctly with nscd - disabled, but with it enabled, it returns a blank ("") instead of a - NULL. This is easily seen with the output of `getent netgroup foonet` - for a netgroup foonet defined as follows in /etc/netgroup: - - foonet (,foo,) - - The output with nscd disabled is: - - foonet ( ,foo,) - - while with nscd enabled, it is: - - foonet (,foo,) - - The extra space with nscd disabled is due to the fact that `getent - netgroup` adds it if the return value from getnetgrent is NULL for - either host or user. - -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c -index 62cdfda..f6d064d 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c -@@ -235,6 +235,14 @@ endnetgrent (void) - libc_hidden_proto (internal_getnetgrent_r) - - -+static const char * -+get_nonempty_val (const char *in) -+{ -+ if (*in == '\0') -+ return NULL; -+ return in; -+} -+ - static enum nss_status - nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, - int *errnop) -@@ -243,11 +251,11 @@ nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, - return NSS_STATUS_UNAVAIL; - - datap->type = triple_val; -- datap->val.triple.host = datap->cursor; -+ datap->val.triple.host = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -- datap->val.triple.user = datap->cursor; -+ datap->val.triple.user = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -- datap->val.triple.domain = datap->cursor; -+ datap->val.triple.domain = get_nonempty_val (datap->cursor); - datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; - - return NSS_STATUS_SUCCESS; diff --git a/src/patches/glibc/glibc-rh1085312.patch b/src/patches/glibc/glibc-rh1085312.patch deleted file mode 100644 index bafb30338..000000000 --- a/src/patches/glibc/glibc-rh1085312.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit 58b930ae216bfa98cd60212b954b07b9963d6d04 -Author: Siddhesh Poyarekar -Date: Wed Sep 10 21:51:50 2014 +0530 - - Return failure in getnetgrent only when all netgroups have been searched (#17363) - - The netgroups lookup code fails when one of the groups in the search - tree is empty. In such a case it only returns the leaves of the tree - after the blank netgroup. This is because the line parser returns a - NOTFOUND status when the netgroup exists but is empty. The - __getnetgrent_internal implementation needs to be fixed to try - remaining groups if the current group is entry. This patch implements - this fix. Tested on x86_64. - - [BZ #17363] - * inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next - group if the current group is empty. - -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c -index f6d064d..e101537 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c -@@ -297,7 +297,10 @@ __internal_getnetgrent_r (char **hostp, char **userp, char **domainp, - { - status = (*fct) (datap, buffer, buflen, &errno); - -- if (status == NSS_STATUS_RETURN) -+ if (status == NSS_STATUS_RETURN -+ /* The service returned a NOTFOUND, but there are more groups that we -+ need to resolve before we give up. */ -+ || (status == NSS_STATUS_NOTFOUND && datap->needed_groups != NULL)) - { - /* This was the last one for this group. Look at next group - if available. */ diff --git a/src/patches/glibc/glibc-rh1087833.patch b/src/patches/glibc/glibc-rh1087833.patch deleted file mode 100644 index ca8f1f047..000000000 --- a/src/patches/glibc/glibc-rh1087833.patch +++ /dev/null @@ -1,65 +0,0 @@ -commit c3ec475c5dd16499aa040908e11d382c3ded9692 -Author: Siddhesh Poyarekar -Date: Mon May 26 11:40:08 2014 +0530 - - Use NSS_STATUS_TRYAGAIN to indicate insufficient buffer (BZ #16878) - - The netgroups nss modules in the glibc tree use NSS_STATUS_UNAVAIL - (with errno as ERANGE) when the supplied buffer does not have - sufficient space for the result. This is wrong, because the canonical - way to indicate insufficient buffer is to set the errno to ERANGE and - the status to NSS_STATUS_TRYAGAIN, as is used by all other modules. - - This fixes nscd behaviour when the nss_ldap module returns - NSS_STATUS_TRYAGAIN to indicate that a netgroup entry is too long to - fit into the supplied buffer. - -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index b3d40e9..edab174 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -197,11 +197,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - int e; - status = getfct.f (&data, buffer + buffilled, - buflen - buffilled - req->key_len, &e); -- if (status == NSS_STATUS_RETURN -- || status == NSS_STATUS_NOTFOUND) -- /* This was either the last one for this group or the -- group was empty. Look at next group if available. */ -- break; - if (status == NSS_STATUS_SUCCESS) - { - if (data.type == triple_val) -@@ -320,11 +315,18 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - } - } -- else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) -+ else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) - { - buflen *= 2; - buffer = xrealloc (buffer, buflen); - } -+ else if (status == NSS_STATUS_RETURN -+ || status == NSS_STATUS_NOTFOUND -+ || status == NSS_STATUS_UNAVAIL) -+ /* This was either the last one for this group or the -+ group was empty or the NSS module had an internal -+ failure. Look at next group if available. */ -+ break; - } - - enum nss_status (*endfct) (struct __netgrent *); -diff --git a/nss/nss_files/files-netgrp.c b/nss/nss_files/files-netgrp.c -index 34eae4c..bc0b367 100644 ---- a/nss/nss_files/files-netgrp.c -+++ b/nss/nss_files/files-netgrp.c -@@ -252,7 +252,7 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result, - if (cp - host > buflen) - { - *errnop = ERANGE; -- status = NSS_STATUS_UNAVAIL; -+ status = NSS_STATUS_TRYAGAIN; - } - else - { diff --git a/src/patches/glibc/glibc-rh1088301.patch b/src/patches/glibc/glibc-rh1088301.patch deleted file mode 100644 index d26eb14ec..000000000 --- a/src/patches/glibc/glibc-rh1088301.patch +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/resolv/arpa/nameser.h b/resolv/arpa/nameser.h -index fb8513b..372d5cd 100644 ---- a/resolv/arpa/nameser.h -+++ b/resolv/arpa/nameser.h -@@ -293,6 +293,9 @@ typedef enum __ns_type { - ns_t_sink = 40, /*%< Kitchen sink (experimentatl) */ - ns_t_opt = 41, /*%< EDNS0 option (meta-RR) */ - ns_t_apl = 42, /*%< Address prefix list (RFC3123) */ -+ ns_t_rrsig = 46, /*%< DNSSEC RRset Signature (RFC4034) */ -+ ns_t_nsec = 47, /*%< DNSSEC Next-Secure Record (RFC4034)*/ -+ ns_t_dnskey = 48, /*%< DNSSEC key record (RFC4034) */ - ns_t_tkey = 249, /*%< Transaction key */ - ns_t_tsig = 250, /*%< Transaction signature. */ - ns_t_ixfr = 251, /*%< Incremental zone transfer. */ -diff --git a/resolv/arpa/nameser_compat.h b/resolv/arpa/nameser_compat.h -index d59c9e4..284bff7 100644 ---- a/resolv/arpa/nameser_compat.h -+++ b/resolv/arpa/nameser_compat.h -@@ -164,6 +164,9 @@ typedef struct { - #define T_NAPTR ns_t_naptr - #define T_A6 ns_t_a6 - #define T_DNAME ns_t_dname -+#define T_RRSIG ns_t_rrsig -+#define T_NSEC ns_t_nsec -+#define T_DNSKEY ns_t_dnskey - #define T_TSIG ns_t_tsig - #define T_IXFR ns_t_ixfr - #define T_AXFR ns_t_axfr -diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c -index a861a84..ae55fac 100644 ---- a/resolv/gethnamaddr.c -+++ b/resolv/gethnamaddr.c -@@ -331,23 +331,36 @@ getanswer (const querybuf *answer, int anslen, const char *qname, int qtype) - buflen -= n; - continue; - } -- if ((type == T_SIG) || (type == T_KEY) || (type == T_NXT)) { -- /* We don't support DNSSEC yet. For now, ignore -- * the record and send a low priority message -- * to syslog. -- */ -- syslog(LOG_DEBUG|LOG_AUTH, -+ if ((type == T_SIG) || (type == T_KEY) || (type == T_NXT) -+ || (type == T_RRSIG) || (type == T_NSEC) -+ || (type == T_DNSKEY)) { -+ /* We don't support DNSSEC responses yet, but we do -+ * allow setting the DO bit. If the DNS server sent us -+ * these records without us asking for it, ignore the -+ * record and send a low priority message to syslog. -+ */ -+ if ((_res.options & RES_USE_DNSSEC) == 0) { -+ syslog(LOG_DEBUG|LOG_AUTH, - "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", -- qname, p_class(C_IN), p_type(qtype), -- p_type(type)); -+ qname, p_class(C_IN), p_type(qtype), -+ p_type(type)); -+ } - cp += n; - continue; - } - if (type != qtype) { -- syslog(LOG_NOTICE|LOG_AUTH, -+ /* Skip logging if we received a DNAME when we have set -+ * the DO bit. DNAME records are a convenient way to -+ * set up DNSSEC records and such setups can make this -+ * log message needlessly noisy. -+ */ -+ if (!((_res.options & RES_USE_DNSSEC) -+ && type == T_DNAME)) { -+ syslog(LOG_NOTICE|LOG_AUTH, - "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", -- qname, p_class(C_IN), p_type(qtype), -- p_type(type)); -+ qname, p_class(C_IN), p_type(qtype), -+ p_type(type)); -+ } - cp += n; - continue; /* XXX - had_error++ ? */ - } -diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c -index f715ab0..510d388 100644 ---- a/resolv/nss_dns/dns-host.c -+++ b/resolv/nss_dns/dns-host.c -@@ -822,13 +822,20 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - } - if (__builtin_expect (type == T_SIG, 0) - || __builtin_expect (type == T_KEY, 0) -- || __builtin_expect (type == T_NXT, 0)) -+ || __builtin_expect (type == T_NXT, 0) -+ || __builtin_expect (type == T_RRSIG, 0) -+ || __builtin_expect (type == T_NSEC, 0) -+ || __builtin_expect (type == T_DNSKEY, 0)) - { -- /* We don't support DNSSEC yet. For now, ignore the record -- and send a low priority message to syslog. */ -- syslog (LOG_DEBUG | LOG_AUTH, -- "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", -- qname, p_class (C_IN), p_type(qtype), p_type (type)); -+ /* We don't support DNSSEC responses yet, but we do allow setting the -+ DO bit. If the DNS server sent us these records without us asking -+ for it, ignore the record and send a low priority message to -+ syslog. */ -+ if ((_res.options & RES_USE_DNSSEC) == 0) -+ syslog (LOG_DEBUG | LOG_AUTH, -+ "gethostby*.getanswer: asked for \"%s %s %s\", " -+ "got type \"%s\"", -+ qname, p_class (C_IN), p_type(qtype), p_type (type)); - cp += n; - continue; - } -@@ -837,9 +844,14 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - have_to_map = 1; - else if (__builtin_expect (type != qtype, 0)) - { -- syslog (LOG_NOTICE | LOG_AUTH, -- "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", -- qname, p_class (C_IN), p_type (qtype), p_type (type)); -+ /* Skip logging if we received a DNAME when we have set the DO bit. -+ DNAME records are a convenient way to set up DNSSEC records and -+ such setups can make this log message needlessly noisy. */ -+ if (!((_res.options & RES_USE_DNSSEC) && type == T_DNAME)) -+ syslog (LOG_NOTICE | LOG_AUTH, -+ "gethostby*.getanswer: asked for \"%s %s %s\", " -+ "got type \"%s\"", -+ qname, p_class (C_IN), p_type (qtype), p_type (type)); - cp += n; - continue; /* XXX - had_error++ ? */ - } -diff --git a/resolv/res_debug.c b/resolv/res_debug.c -index 7843439..4a49629 100644 ---- a/resolv/res_debug.c -+++ b/resolv/res_debug.c -@@ -450,6 +450,8 @@ const struct res_sym __p_type_syms[] = { - {ns_t_kx, "KX", "Key Exchange"}, - {ns_t_cert, "CERT", "Certificate"}, - {ns_t_any, "ANY", "\"any\""}, -+ /* TODO Add RRSIG, NSEC and DNSKEY once we actually do something with -+ them. */ - {0, NULL, NULL} - }; - libresolv_hidden_data_def (__p_type_syms) diff --git a/src/patches/glibc/glibc-rh1091915.patch b/src/patches/glibc/glibc-rh1091915.patch deleted file mode 100644 index d1af874dc..000000000 --- a/src/patches/glibc/glibc-rh1091915.patch +++ /dev/null @@ -1,40 +0,0 @@ -commit 3cb26316b45b23dc5cfecbafdc489b28c3a52029 -Author: Siddhesh Poyarekar -Date: Thu Jan 29 10:30:09 2015 +0530 - - Initialize nscd stats data [BZ #17892] - - The padding bytes in the statsdata struct are not initialized, due to - which valgrind throws a warning: - - ==11384== Memcheck, a memory error detector - ==11384== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. - ==11384== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info - ==11384== Command: nscd -d - ==11384== - Fri 25 Apr 2014 10:34:53 AM CEST - 11384: handle_request: request received (Version = 2) from PID 11396 - Fri 25 Apr 2014 10:34:53 AM CEST - 11384: GETSTAT - ==11384== Thread 6: - ==11384== Syscall param socketcall.sendto(msg) points to uninitialised byte(s) - ==11384== at 0x4E4ACDC: send (in /lib64/libpthread-2.12.so) - ==11384== by 0x11AF6B: send_stats (in /usr/sbin/nscd) - ==11384== by 0x112F75: nscd_run_worker (in /usr/sbin/nscd) - ==11384== by 0x4E439D0: start_thread (in /lib64/libpthread-2.12.so) - ==11384== by 0x599AB6C: clone (in /lib64/libc-2.12.so) - ==11384== Address 0x15708395 is on thread 6's stack - - Fix the warning by initializing the structure. - -diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c -index 0f1f3c0..7aaa21b 100644 ---- a/nscd/nscd_stat.c -+++ b/nscd/nscd_stat.c -@@ -94,6 +94,8 @@ send_stats (int fd, struct database_dyn dbs[lastdb]) - struct statdata data; - int cnt; - -+ memset (&data, 0, sizeof (data)); -+ - memcpy (data.version, compilation, sizeof (compilation)); - data.debug_level = debug_level; - data.runtime = time (NULL) - start_time; diff --git a/src/patches/glibc/glibc-rh1099025-2.patch b/src/patches/glibc/glibc-rh1099025-2.patch deleted file mode 100644 index 58fe121aa..000000000 --- a/src/patches/glibc/glibc-rh1099025-2.patch +++ /dev/null @@ -1,159 +0,0 @@ -commit d6c33fda03457ca8ca87a562fa2681af16ca4ea5 -Author: Roland McGrath -Date: Thu May 24 11:37:30 2012 -0700 - - Switch gettimeofday from INTUSE to libc_hidden_proto. - -diff --git a/include/sys/time.h b/include/sys/time.h -index d5de942..599e189 100644 ---- a/include/sys/time.h -+++ b/include/sys/time.h -@@ -4,9 +4,8 @@ - /* Now document the internal interfaces. */ - extern int __gettimeofday (struct timeval *__tv, - struct timezone *__tz); --extern int __gettimeofday_internal (struct timeval *__tv, -- struct timezone *__tz) -- attribute_hidden; -+libc_hidden_proto (__gettimeofday) -+libc_hidden_proto (gettimeofday) - extern int __settimeofday (__const struct timeval *__tv, - __const struct timezone *__tz) - attribute_hidden; -@@ -22,8 +21,4 @@ extern int __utimes (const char *__file, const struct timeval __tvp[2]) - attribute_hidden; - extern int __futimes (int fd, __const struct timeval tvp[2]) attribute_hidden; - --#ifndef NOT_IN_libc --# define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz) --#endif -- - #endif -diff --git a/sysdeps/mach/gettimeofday.c b/sysdeps/mach/gettimeofday.c -index 88dca8e..293a775 100644 ---- a/sysdeps/mach/gettimeofday.c -+++ b/sysdeps/mach/gettimeofday.c -@@ -20,8 +20,6 @@ - #include - #include - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -42,6 +40,6 @@ __gettimeofday (tv, tz) - } - return 0; - } -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/posix/gettimeofday.c b/sysdeps/posix/gettimeofday.c -index 31b3dd3..1108ff0 100644 ---- a/sysdeps/posix/gettimeofday.c -+++ b/sysdeps/posix/gettimeofday.c -@@ -19,8 +19,6 @@ - #include - #include - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -66,6 +64,6 @@ __gettimeofday (tv, tz) - - return 0; - } -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list -index 39c40ed..bd780f5 100644 ---- a/sysdeps/unix/common/syscalls.list -+++ b/sysdeps/unix/common/syscalls.list -@@ -5,7 +5,7 @@ getpid - getpid Ei: __getpid getpid - fchown - fchown i:iii __fchown fchown - ftruncate - ftruncate i:ii __ftruncate ftruncate - getrusage - getrusage i:ip __getrusage getrusage --gettimeofday - gettimeofday i:PP __gettimeofday gettimeofday __gettimeofday_internal -+gettimeofday - gettimeofday i:pP __gettimeofday gettimeofday - settimeofday - settimeofday i:PP __settimeofday settimeofday - setpgid - setpgrp i:ii __setpgid setpgid - setregid - setregid i:ii __setregid setregid -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -index b2ef2da..7376135 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -@@ -35,5 +35,6 @@ __gettimeofday (tv, tz) - } -- --#endif --INTDEF (__gettimeofday) -+libc_hidden_def (__gettimeofday) -+ -+#endif - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/sysdeps/unix/sysv/linux/s390/gettimeofday.c b/sysdeps/unix/sysv/linux/s390/gettimeofday.c -index 63faef8..efbf1e8 100644 ---- a/sysdeps/unix/sysv/linux/s390/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/s390/gettimeofday.c -@@ -22,7 +22,6 @@ - #include - #include - --#undef __gettimeofday - #include - - /* Get the current time of day and timezone information, -@@ -36,6 +35,6 @@ __gettimeofday (tv, tz) - { - return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); - } -- --INTDEF (__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -diff --git a/time/gettimeofday.c b/time/gettimeofday.c -index cfe6549..7eb770c 100644 ---- a/time/gettimeofday.c -+++ b/time/gettimeofday.c -@@ -18,8 +18,6 @@ - #include - #include - --#undef __gettimeofday -- - /* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -@@ -31,8 +29,9 @@ __gettimeofday (tv, tz) - __set_errno (ENOSYS); - return -1; - } --stub_warning (gettimeofday) -- --INTDEF(__gettimeofday) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) -+ -+stub_warning (gettimeofday) - #include ---- a/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2014-07-28 14:40:24.640144825 +0530 -+++ b/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2014-07-28 14:40:21.320120072 +0530 -@@ -45,5 +45,6 @@ - ret - PSEUDO_END(__gettimeofday) - --strong_alias (__gettimeofday, __gettimeofday_internal) -+libc_hidden_def (__gettimeofday) - weak_alias (__gettimeofday, gettimeofday) -+libc_hidden_weak (gettimeofday) diff --git a/src/patches/glibc/glibc-rh1099025.patch b/src/patches/glibc/glibc-rh1099025.patch deleted file mode 100644 index d075be86e..000000000 --- a/src/patches/glibc/glibc-rh1099025.patch +++ /dev/null @@ -1,47 +0,0 @@ -commit 736c304a1ab4cee36a2f3343f1698bc0abae4608 -Author: Adhemerval Zanella -Date: Thu Jan 16 06:53:18 2014 -0600 - - PowerPC: Fix ftime gettimeofday internal call returning bogus data - - This patches fixes BZ#16430 by setting a different symbol for internal - GLIBC calls that points to ifunc resolvers. For PPC32, if the symbol - is defined as hidden (which is the case for gettimeofday and time) the - compiler will create local branches (symbol@local) and linker will not - create PLT calls (required for IFUNC). This will leads to internal symbol - calling the IFUNC resolver instead of the resolved symbol. - For PPC64 this behavior does not occur because a call to a function in - another translation unit might use a different toc pointer thus requiring - a PLT call. - -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -index 29a5e08..2085b68 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -@@ -44,8 +44,24 @@ asm (".type __gettimeofday, %gnu_indirect_function"); - /* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't - let us do it in C because it doesn't know we're defining __gettimeofday - here in this file. */ --asm (".globl __GI___gettimeofday\n" -- "__GI___gettimeofday = __gettimeofday"); -+asm (".globl __GI___gettimeofday"); -+ -+/* __GI___gettimeofday is defined as hidden and for ppc32 it enables the -+ compiler make a local call (symbol@local) for internal GLIBC usage. It -+ means the PLT won't be used and the ifunc resolver will be called directly. -+ For ppc64 a call to a function in another translation unit might use a -+ different toc pointer thus disallowing direct branchess and making internal -+ ifuncs calls safe. */ -+#ifdef __powerpc64__ -+asm ("__GI___gettimeofday = __gettimeofday"); -+#else -+int -+__gettimeofday_vsyscall (struct timeval *tv, struct timezone *tz) -+{ -+ return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); -+} -+asm ("__GI___gettimeofday = __gettimeofday_vsyscall"); -+#endif - - #else - diff --git a/src/patches/glibc/glibc-rh1111460.patch b/src/patches/glibc/glibc-rh1111460.patch deleted file mode 100644 index 1a4315d5b..000000000 --- a/src/patches/glibc/glibc-rh1111460.patch +++ /dev/null @@ -1,341 +0,0 @@ -commit 7cbcdb3699584db8913ca90f705d6337633ee10f -Author: Siddhesh Poyarekar -Date: Fri Oct 25 10:22:12 2013 +0530 - - Fix stack overflow due to large AF_INET6 requests - - Resolves #16072 (CVE-2013-4458). - - This patch fixes another stack overflow in getaddrinfo when it is - called with AF_INET6. The AF_UNSPEC case was fixed as CVE-2013-1914, - but the AF_INET6 case went undetected back then. - -commit 91ce40854d0b7f865cf5024ef95a8026b76096f3 -Author: Florian Weimer -Date: Fri Aug 16 09:38:52 2013 +0200 - - CVE-2013-4237, BZ #14699: Buffer overflow in readdir_r - - * sysdeps/posix/dirstream.h (struct __dirstream): Add errcode - member. - * sysdeps/posix/opendir.c (__alloc_dir): Initialize errcode - member. - * sysdeps/posix/rewinddir.c (rewinddir): Reset errcode member. - * sysdeps/posix/readdir_r.c (__READDIR_R): Enforce NAME_MAX limit. - Return delayed error code. Remove GETDENTS_64BIT_ALIGNED - conditional. - * sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: Do not define - GETDENTS_64BIT_ALIGNED. - * sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise. - * manual/filesys.texi (Reading/Closing Directory): Document - ENAMETOOLONG return value of readdir_r. Recommend readdir more - strongly. - * manual/conf.texi (Limits for Files): Add portability note to - NAME_MAX, PATH_MAX. - (Pathconf): Add portability note for _PC_NAME_MAX, _PC_PATH_MAX. - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index e6ce4cf..8ff74b4 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -197,7 +197,22 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, - &rc, &herrno, NULL, &localcanon)); \ - if (rc != ERANGE || herrno != NETDB_INTERNAL) \ - break; \ -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \ -+ if (!malloc_tmpbuf && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) \ -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, 2 * tmpbuflen, \ -+ alloca_used); \ -+ else \ -+ { \ -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, \ -+ 2 * tmpbuflen); \ -+ if (newp == NULL) \ -+ { \ -+ result = -EAI_MEMORY; \ -+ goto free_and_return; \ -+ } \ -+ tmpbuf = newp; \ -+ malloc_tmpbuf = true; \ -+ tmpbuflen = 2 * tmpbuflen; \ -+ } \ - } \ - if (status == NSS_STATUS_SUCCESS && rc == 0) \ - h = &th; \ -@@ -209,7 +224,8 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, - { \ - __set_h_errno (herrno); \ - _res.options = old_res_options; \ -- return -EAI_SYSTEM; \ -+ result = -EAI_SYSTEM; \ -+ goto free_and_return; \ - } \ - if (herrno == TRY_AGAIN) \ - no_data = EAI_AGAIN; \ - -diff --git a/manual/conf.texi b/manual/conf.texi -index 7eb8b36..c720063 100644 ---- a/manual/conf.texi -+++ b/manual/conf.texi -@@ -1149,6 +1149,9 @@ typed ahead as input. @xref{I/O Queues}. - @comment POSIX.1 - @deftypevr Macro int NAME_MAX - The uniform system limit (if any) for the length of a file name component. -+ -+@strong{Portability Note:} On some systems, the GNU C Library defines -+@code{NAME_MAX}, but does not actually enforce this limit. - @end deftypevr - - @comment limits.h -@@ -1157,6 +1160,9 @@ including the terminating null character. - @deftypevr Macro int PATH_MAX - The uniform system limit (if any) for the length of an entire file name (that - is, the argument given to system calls such as @code{open}). -+ -+@strong{Portability Note:} The GNU C Library does not enforce this limit -+even if @code{PATH_MAX} is defined. - @end deftypevr - - @cindex limits, pipe buffer size -@@ -1476,6 +1482,9 @@ Inquire about the value of @code{POSIX_REC_MIN_XFER_SIZE}. - Inquire about the value of @code{POSIX_REC_XFER_ALIGN}. - @end table - -+@strong{Portability Note:} On some systems, the GNU C Library does not -+enforce @code{_PC_NAME_MAX} or @code{_PC_PATH_MAX} limits. -+ - @node Utility Limits - @section Utility Program Capacity Limits - -diff --git a/manual/filesys.texi b/manual/filesys.texi -index 1df9cf2..814c210 100644 ---- a/manual/filesys.texi -+++ b/manual/filesys.texi -@@ -444,9 +444,9 @@ symbols are declared in the header file @file{dirent.h}. - @comment POSIX.1 - @deftypefun {struct dirent *} readdir (DIR *@var{dirstream}) - This function reads the next entry from the directory. It normally --returns a pointer to a structure containing information about the file. --This structure is statically allocated and can be rewritten by a --subsequent call. -+returns a pointer to a structure containing information about the -+file. This structure is associated with the @var{dirstream} handle -+and can be rewritten by a subsequent call. - - @strong{Portability Note:} On some systems @code{readdir} may not - return entries for @file{.} and @file{..}, even though these are always -@@ -461,19 +461,61 @@ conditions are defined for this function: - The @var{dirstream} argument is not valid. - @end table - --@code{readdir} is not thread safe. Multiple threads using --@code{readdir} on the same @var{dirstream} may overwrite the return --value. Use @code{readdir_r} when this is critical. -+To distinguish between an end-of-directory condition or an error, you -+must set @code{errno} to zero before calling @code{readdir}. To avoid -+entering an infinite loop, you should stop reading from the directory -+after the first error. -+ -+In POSIX.1-2008, @code{readdir} is not thread-safe. In the GNU C Library -+implementation, it is safe to call @code{readdir} concurrently on -+different @var{dirstream}s, but multiple threads accessing the same -+@var{dirstream} result in undefined behavior. @code{readdir_r} is a -+fully thread-safe alternative, but suffers from poor portability (see -+below). It is recommended that you use @code{readdir}, with external -+locking if multiple threads access the same @var{dirstream}. - @end deftypefun - - @comment dirent.h - @comment GNU - @deftypefun int readdir_r (DIR *@var{dirstream}, struct dirent *@var{entry}, struct dirent **@var{result}) --This function is the reentrant version of @code{readdir}. Like --@code{readdir} it returns the next entry from the directory. But to --prevent conflicts between simultaneously running threads the result is --not stored in statically allocated memory. Instead the argument --@var{entry} points to a place to store the result. -+This function is a version of @code{readdir} which performs internal -+locking. Like @code{readdir} it returns the next entry from the -+directory. To prevent conflicts between simultaneously running -+threads the result is stored inside the @var{entry} object. -+ -+@strong{Portability Note:} It is recommended to use @code{readdir} -+instead of @code{readdir_r} for the following reasons: -+ -+@itemize @bullet -+@item -+On systems which do not define @code{NAME_MAX}, it may not be possible -+to use @code{readdir_r} safely because the caller does not specify the -+length of the buffer for the directory entry. -+ -+@item -+On some systems, @code{readdir_r} cannot read directory entries with -+very long names. If such a name is encountered, the GNU C Library -+implementation of @code{readdir_r} returns with an error code of -+@code{ENAMETOOLONG} after the final directory entry has been read. On -+other systems, @code{readdir_r} may return successfully, but the -+@code{d_name} member may not be NUL-terminated or may be truncated. -+ -+@item -+POSIX-1.2008 does not guarantee that @code{readdir} is thread-safe, -+even when access to the same @var{dirstream} is serialized. But in -+current implementations (including the GNU C Library), it is safe to call -+@code{readdir} concurrently on different @var{dirstream}s, so there is -+no need to use @code{readdir_r} in most multi-threaded programs. In -+the rare case that multiple threads need to read from the same -+@var{dirstream}, it is still better to use @code{readdir} and external -+synchronization. -+ -+@item -+It is expected that future versions of POSIX will obsolete -+@code{readdir_r} and mandate the level of thread safety for -+@code{readdir} which is provided by the GNU C Library and other -+implementations today. -+@end itemize - - Normally @code{readdir_r} returns zero and sets @code{*@var{result}} - to @var{entry}. If there are no more entries in the directory or an -@@ -481,15 +523,6 @@ error is detected, @code{readdir_r} sets @code{*@var{result}} to a - null pointer and returns a nonzero error code, also stored in - @code{errno}, as described for @code{readdir}. - --@strong{Portability Note:} On some systems @code{readdir_r} may not --return a NUL terminated string for the file name, even when there is no --@code{d_reclen} field in @code{struct dirent} and the file --name is the maximum allowed size. Modern systems all have the --@code{d_reclen} field, and on old systems multi-threading is not --critical. In any case there is no such problem with the @code{readdir} --function, so that even on systems without the @code{d_reclen} member one --could use multiple threads by using external locking. -- - It is also important to look at the definition of the @code{struct - dirent} type. Simply passing a pointer to an object of this type for - the second parameter of @code{readdir_r} might not be enough. Some -diff --git a/sysdeps/unix/dirstream.h b/sysdeps/unix/dirstream.h -index a7a074d..8e8570d 100644 ---- a/sysdeps/unix/dirstream.h -+++ b/sysdeps/unix/dirstream.h -@@ -39,6 +39,8 @@ struct __dirstream - - off_t filepos; /* Position of next entry to read. */ - -+ int errcode; /* Delayed error code. */ -+ - /* Directory block. */ - char data[0] __attribute__ ((aligned (__alignof__ (void*)))); - }; -diff --git a/sysdeps/unix/opendir.c b/sysdeps/unix/opendir.c -index ddfc3a7..fc05b0f 100644 ---- a/sysdeps/unix/opendir.c -+++ b/sysdeps/unix/opendir.c -@@ -231,6 +231,7 @@ __alloc_dir (int fd, bool close_fd, int flags, const struct stat64 *statp) - dirp->size = 0; - dirp->offset = 0; - dirp->filepos = 0; -+ dirp->errcode = 0; - - return dirp; - } -diff --git a/sysdeps/unix/readdir_r.c b/sysdeps/unix/readdir_r.c -index b5a8e2e..8ed5c3f 100644 ---- a/sysdeps/unix/readdir_r.c -+++ b/sysdeps/unix/readdir_r.c -@@ -40,6 +40,7 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - DIRENT_TYPE *dp; - size_t reclen; - const int saved_errno = errno; -+ int ret; - - __libc_lock_lock (dirp->lock); - -@@ -70,10 +71,10 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - bytes = 0; - __set_errno (saved_errno); - } -+ if (bytes < 0) -+ dirp->errcode = errno; - - dp = NULL; -- /* Reclen != 0 signals that an error occurred. */ -- reclen = bytes != 0; - break; - } - dirp->size = (size_t) bytes; -@@ -106,28 +107,46 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) - dirp->filepos += reclen; - #endif - -- /* Skip deleted files. */ -+#ifdef NAME_MAX -+ if (reclen > offsetof (DIRENT_TYPE, d_name) + NAME_MAX + 1) -+ { -+ /* The record is very long. It could still fit into the -+ caller-supplied buffer if we can skip padding at the -+ end. */ -+ size_t namelen = _D_EXACT_NAMLEN (dp); -+ if (namelen <= NAME_MAX) -+ reclen = offsetof (DIRENT_TYPE, d_name) + namelen + 1; -+ else -+ { -+ /* The name is too long. Ignore this file. */ -+ dirp->errcode = ENAMETOOLONG; -+ dp->d_ino = 0; -+ continue; -+ } -+ } -+#endif -+ -+ /* Skip deleted and ignored files. */ - } - while (dp->d_ino == 0); - - if (dp != NULL) - { --#ifdef GETDENTS_64BIT_ALIGNED -- /* The d_reclen value might include padding which is not part of -- the DIRENT_TYPE data structure. */ -- reclen = MIN (reclen, sizeof (DIRENT_TYPE)); --#endif - *result = memcpy (entry, dp, reclen); --#ifdef GETDENTS_64BIT_ALIGNED -+#ifdef _DIRENT_HAVE_D_RECLEN - entry->d_reclen = reclen; - #endif -+ ret = 0; - } - else -- *result = NULL; -+ { -+ *result = NULL; -+ ret = dirp->errcode; -+ } - - __libc_lock_unlock (dirp->lock); - -- return dp != NULL ? 0 : reclen ? errno : 0; -+ return ret; - } - - #ifdef __READDIR_R_ALIAS -diff --git a/sysdeps/unix/rewinddir.c b/sysdeps/unix/rewinddir.c -index 2935a8e..d4991ad 100644 ---- a/sysdeps/unix/rewinddir.c -+++ b/sysdeps/unix/rewinddir.c -@@ -33,5 +33,6 @@ rewinddir (dirp) - dirp->filepos = 0; - dirp->offset = 0; - dirp->size = 0; -+ dirp->errcode = 0; - __libc_lock_unlock (dirp->lock); - } -diff --git a/sysdeps/unix/sysv/linux/i386/readdir64_r.c b/sysdeps/unix/sysv/linux/i386/readdir64_r.c -index 8ebbcfd..a7d114e 100644 ---- a/sysdeps/unix/sysv/linux/i386/readdir64_r.c -+++ b/sysdeps/unix/sysv/linux/i386/readdir64_r.c -@@ -18,7 +18,6 @@ - #define __READDIR_R __readdir64_r - #define __GETDENTS __getdents64 - #define DIRENT_TYPE struct dirent64 --#define GETDENTS_64BIT_ALIGNED 1 - - #include - diff --git a/src/patches/glibc/glibc-rh1116050-1.patch b/src/patches/glibc/glibc-rh1116050-1.patch deleted file mode 100644 index 439cf6d0c..000000000 --- a/src/patches/glibc/glibc-rh1116050-1.patch +++ /dev/null @@ -1,57 +0,0 @@ -# -# In rhel-6.x the Makerules are not entirely as mature as they are -# in glibc 2.21 (from which the example link-libc-args is taken from). -# In rhel-6.x the applications are not built like their counterpart -# real applications, and because of that compiling DSOs that use TLS -# will fail with undefined references to __tls_get_addr which resides -# in ld.so and is never included in the link. This patch enhances -# only the build-module and build-module-asneeded targets to include -# a more fully and correct link line as the compiler driver would use -# when constructing an application or DSO. We do not adjust the link -# lines used to build lib* targets. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/Makerules glibc-2.12-2-gc4ccff1/Makerules ---- glibc-2.12-2-gc4ccff1.orig/Makerules 2015-02-18 19:53:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/Makerules 2015-02-18 20:08:33.299000028 -0500 -@@ -443,6 +443,25 @@ - load-map-file = $(map-file:%=-Wl,--version-script=%) - endif - -+# Compiler arguments to use to link a shared object with libc and -+# ld.so. This is intended to be as similar as possible to a default -+# link with an installed libc. -+link-libc-args = -Wl,--start-group \ -+ $(libc-for-link) \ -+ $(common-objpfx)libc_nonshared.a \ -+ $(as-needed) $(elf-objpfx)ld.so $(no-as-needed) \ -+ -Wl,--end-group -+ -+# The corresponding shared libc to use. This may be modified for a -+# particular target. -+libc-for-link = $(common-objpfx)libc.so -+ -+# The corresponding dependencies. As these are used in dependencies, -+# not just commands, they cannot use target-specific variables so need -+# to name both possible libc.so objects. -+link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \ -+ $(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so -+ - # Pattern rule to build a shared object from an archive of PIC objects. - # This must come after the installation rules so Make doesn't try to - # build shared libraries in place from the installed *_pic.a files. -@@ -557,12 +576,13 @@ - # not for shared objects - define build-module - $(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \ -- $(csu-objpfx)abi-note.o $(build-module-objlist) -+ $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args) - endef - define build-module-asneeded - $(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \ - $(csu-objpfx)abi-note.o \ -- -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed -+ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \ -+ $(link-libc-args) - endef - else - ifneq (,$(findstring aix,$(config-os))) diff --git a/src/patches/glibc/glibc-rh1116050.patch b/src/patches/glibc/glibc-rh1116050.patch deleted file mode 100644 index 7631312d5..000000000 --- a/src/patches/glibc/glibc-rh1116050.patch +++ /dev/null @@ -1,407 +0,0 @@ -# -# Based on this upstream commit: -# -# commit d8dd00805b8f3a011735d7a407097fb1c408d867 -# Author: H.J. Lu -# Date: Fri Nov 28 07:54:07 2014 -0800 -# -# Resize DTV if the current DTV isn't big enough -# -# This patch changes _dl_allocate_tls_init to resize DTV if the current DTV -# isn't big enough. Tested on X86-64, x32 and ia32. -# -# [BZ #13862] -# * elf/dl-tls.c: Include . -# (oom): Remove #ifdef SHARED/#endif. -# (_dl_static_dtv, _dl_initial_dtv): Moved before ... -# (_dl_resize_dtv): This. Extracted from _dl_update_slotinfo. -# (_dl_allocate_tls_init): Resize DTV if the current DTV isn't -# big enough. -# (_dl_update_slotinfo): Call _dl_resize_dtv to resize DTV. -# * nptl/Makefile (tests): Add tst-stack4. -# (modules-names): Add tst-stack4mod. -# ($(objpfx)tst-stack4): New. -# (tst-stack4mod.sos): Likewise. -# ($(objpfx)tst-stack4.out): Likewise. -# ($(tst-stack4mod.sos)): Likewise. -# (clean): Likewise. -# * nptl/tst-stack4.c: New file. -# * nptl/tst-stack4mod.c: Likewise. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-tls.c glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2015-02-18 14:15:28.078461873 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c 2015-02-18 14:38:37.630374771 -0500 -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -35,14 +36,12 @@ - - - /* Out-of-memory handler. */ --#ifdef SHARED - static void - __attribute__ ((__noreturn__)) - oom (void) - { - _dl_fatal_printf ("cannot allocate memory for thread-local data: ABORT\n"); - } --#endif - - - size_t -@@ -392,6 +391,52 @@ - return result; - } - -+static dtv_t * -+_dl_resize_dtv (dtv_t *dtv) -+{ -+ /* Resize the dtv. */ -+ dtv_t *newp; -+ /* Load GL(dl_tls_max_dtv_idx) atomically since it may be written to by -+ other threads concurrently. -- We don't have the required atomic -+ infrastructure to load dl_tls_max_dtv_idx atomically, but on all the -+ architectures we care about it should load atomically. If this had -+ an atomic_load_acquire we would still be missing the releases for -+ the writes. */ -+ size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; -+ size_t oldsize = dtv[-1].counter; -+ -+#if SHARED -+ if (dtv == GL(dl_initial_dtv)) -+ { -+ /* This is the initial dtv that was either statically allocated in -+ __libc_setup_tls or allocated during rtld startup using the -+ dl-minimal.c malloc instead of the real malloc. We can't free -+ it, we have to abandon the old storage. */ -+ -+ newp = malloc ((2 + newsize) * sizeof (dtv_t)); -+ if (newp == NULL) -+ oom (); -+ memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); -+ } -+ else -+#endif -+ { -+ newp = realloc (&dtv[-1], -+ (2 + newsize) * sizeof (dtv_t)); -+ if (newp == NULL) -+ oom (); -+ } -+ -+ newp[0].counter = newsize; -+ -+ /* Clear the newly allocated part. */ -+ memset (newp + 2 + oldsize, '\0', -+ (newsize - oldsize) * sizeof (dtv_t)); -+ -+ /* Return the generation counter. */ -+ return &newp[1]; -+} -+ - - void * - internal_function -@@ -406,6 +451,16 @@ - size_t total = 0; - size_t maxgen = 0; - -+ /* Check if the current dtv is big enough. */ -+ if (dtv[-1].counter < GL(dl_tls_max_dtv_idx)) -+ { -+ /* Resize the dtv. */ -+ dtv = _dl_resize_dtv (dtv); -+ -+ /* Install this new dtv in the thread data structures. */ -+ INSTALL_DTV (result, &dtv[-1]); -+ } -+ - /* We have to prepare the dtv for all currently loaded modules using - TLS. For those which are dynamically loaded we add the values - indicating deferred allocation. */ -@@ -637,41 +692,10 @@ - assert (total + cnt == modid); - if (dtv[-1].counter < modid) - { -- /* Reallocate the dtv. */ -- dtv_t *newp; -- size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; -- size_t oldsize = dtv[-1].counter; -- -- assert (map->l_tls_modid <= newsize); -- -- if (dtv == GL(dl_initial_dtv)) -- { -- /* This is the initial dtv that was allocated -- during rtld startup using the dl-minimal.c -- malloc instead of the real malloc. We can't -- free it, we have to abandon the old storage. */ -- -- newp = malloc ((2 + newsize) * sizeof (dtv_t)); -- if (newp == NULL) -- oom (); -- memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); -- } -- else -- { -- newp = realloc (&dtv[-1], -- (2 + newsize) * sizeof (dtv_t)); -- if (newp == NULL) -- oom (); -- } -- -- newp[0].counter = newsize; -- -- /* Clear the newly allocated part. */ -- memset (newp + 2 + oldsize, '\0', -- (newsize - oldsize) * sizeof (dtv_t)); -+ /* Resize the dtv. */ -+ dtv = _dl_resize_dtv (dtv); - -- /* Point dtv to the generation counter. */ -- dtv = &newp[1]; -+ assert (modid <= dtv[-1].counter); - - /* Install this new dtv in the thread data - structures. */ -diff -urN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.mod/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2015-02-18 14:15:28.073462028 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/Makefile 2015-02-18 14:15:49.817786667 -0500 -@@ -245,7 +245,7 @@ - tst-exec1 tst-exec2 tst-exec3 tst-exec4 \ - tst-exit1 tst-exit2 tst-exit3 \ - tst-stdio1 tst-stdio2 \ -- tst-stack1 tst-stack2 tst-stack3 \ -+ tst-stack1 tst-stack2 tst-stack3 tst-stack4 \ - tst-unload \ - tst-dlsym1 \ - tst-sysconf \ -@@ -304,7 +304,7 @@ - - modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \ - tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \ -- tst-tls5modd tst-tls5mode tst-tls5modf \ -+ tst-tls5modd tst-tls5mode tst-tls5modf tst-stack4mod \ - tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod - extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o - test-extras += $(modules-names) -@@ -459,6 +459,19 @@ - $(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@ - generated += tst-stack3-mem tst-stack3.mtrace - -+$(objpfx)tst-stack4: $(libdl) $(shared-thread-library) -+tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \ -+ 11 12 13 14 15 16 17 18 19; do \ -+ for j in 0 1 2 3 4 5 6 7 8 9 10 \ -+ 11 12 13 14 15 16 17 18 19; do \ -+ echo $(objpfx)tst-stack4mod-$$i-$$j.so; \ -+ done; done) -+$(objpfx)tst-stack4.out: $(tst-stack4mod.sos) -+$(tst-stack4mod.sos): $(objpfx)tst-stack4mod.so -+ cp -f $< $@ -+clean: -+ rm -f $(tst-stack4mod.sos) -+ - $(objpfx)tst-cleanup4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) - $(objpfx)tst-cleanupx4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) - -diff -urN glibc-2.12-2-gc4ccff1/nptl/tst-stack4.c glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-stack4.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4.c 2015-02-18 14:15:49.817786667 -0500 -@@ -0,0 +1,159 @@ -+/* Test DTV size oveflow when pthread_create reuses old DTV and TLS is -+ used by dlopened shared object. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+/* The choices of thread count, and file counts are arbitary. -+ The point is simply to run enough threads that an exiting -+ thread has it's stack reused by another thread at the same -+ time as new libraries have been loaded. */ -+#define DSO_SHARED_FILES 20 -+#define DSO_OPEN_THREADS 20 -+#define DSO_EXEC_THREADS 2 -+ -+/* Used to make sure that only one thread is calling dlopen and dlclose -+ at a time. */ -+pthread_mutex_t g_lock; -+ -+typedef void (*function) (void); -+ -+void * -+dso_invoke(void *dso_fun) -+{ -+ function *fun_vec = (function *) dso_fun; -+ int dso; -+ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ (*fun_vec[dso]) (); -+ -+ pthread_exit (NULL); -+} -+ -+void * -+dso_process (void * p) -+{ -+ void *handle[DSO_SHARED_FILES]; -+ function fun_vec[DSO_SHARED_FILES]; -+ char dso_path[DSO_SHARED_FILES][100]; -+ int dso; -+ uintptr_t t = (uintptr_t) p; -+ -+ /* Open DSOs and get a function. */ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ { -+ sprintf (dso_path[dso], "tst-stack4mod-%i-%i.so", t, dso); -+ -+ pthread_mutex_lock (&g_lock); -+ -+ handle[dso] = dlopen (dso_path[dso], RTLD_NOW); -+ assert (handle[dso]); -+ -+ fun_vec[dso] = (function) dlsym (handle[dso], "function"); -+ assert (fun_vec[dso]); -+ -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ /* Spawn workers. */ -+ pthread_t thread[DSO_EXEC_THREADS]; -+ int i, ret; -+ uintptr_t result = 0; -+ for (i = 0; i < DSO_EXEC_THREADS; i++) -+ { -+ pthread_mutex_lock (&g_lock); -+ ret = pthread_create (&thread[i], NULL, dso_invoke, (void *) fun_vec); -+ if (ret != 0) -+ { -+ printf ("pthread_create failed: %d\n", ret); -+ result = 1; -+ } -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ if (!result) -+ for (i = 0; i < DSO_EXEC_THREADS; i++) -+ { -+ ret = pthread_join (thread[i], NULL); -+ if (ret != 0) -+ { -+ printf ("pthread_join failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ -+ /* Close all DSOs. */ -+ for (dso = 0; dso < DSO_SHARED_FILES; dso++) -+ { -+ pthread_mutex_lock (&g_lock); -+ dlclose (handle[dso]); -+ pthread_mutex_unlock (&g_lock); -+ } -+ -+ /* Exit. */ -+ pthread_exit ((void *) result); -+} -+ -+static int -+do_test (void) -+{ -+ pthread_t thread[DSO_OPEN_THREADS]; -+ int i,j; -+ int ret; -+ int result = 0; -+ -+ pthread_mutex_init (&g_lock, NULL); -+ -+ /* 100 is arbitrary here and is known to trigger PR 13862. */ -+ for (j = 0; j < 100; j++) -+ { -+ for (i = 0; i < DSO_OPEN_THREADS; i++) -+ { -+ ret = pthread_create (&thread[i], NULL, dso_process, -+ (void *) (uintptr_t) i); -+ if (ret != 0) -+ { -+ printf ("pthread_create failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ -+ if (result) -+ break; -+ -+ for (i = 0; i < DSO_OPEN_THREADS; i++) -+ { -+ ret = pthread_join (thread[i], NULL); -+ if (ret != 0) -+ { -+ printf ("pthread_join failed: %d\n", ret); -+ result = 1; -+ } -+ } -+ } -+ -+ return result; -+} -+ -+#define TEST_FUNCTION do_test () -+#define TIMEOUT 100 -+#include "../test-skeleton.c" -diff -urN glibc-2.12-2-gc4ccff1/nptl/tst-stack4mod.c glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4mod.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-stack4mod.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/tst-stack4mod.c 2015-02-18 14:15:49.817786667 -0500 -@@ -0,0 +1,28 @@ -+/* This tests DTV usage with TLS in dlopened shared object. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* 256 is arbitrary here and is known to trigger PR 13862. */ -+__thread int var[256] attribute_hidden = {0}; -+ -+void -+function (void) -+{ -+ int i; -+ for (i = 0; i < sizeof (var) / sizeof (int); i++) -+ var[i] = i; -+} diff --git a/src/patches/glibc/glibc-rh1124204.patch b/src/patches/glibc/glibc-rh1124204.patch deleted file mode 100644 index f14c4cb24..000000000 --- a/src/patches/glibc/glibc-rh1124204.patch +++ /dev/null @@ -1,47 +0,0 @@ -# -# Derived from this upstream commit: -# -# commit 58a1335e76a553e1cf4edeebc27f16fc9b53d6e6 -# Author: Petr Baudis -# Date: Thu Mar 14 01:16:53 2013 +0100 -# -# Fix __times() handling of EFAULT when buf is NULL -# -# 2013-03-14 Petr Baudis -# -# * sysdeps/unix/sysv/linux/times.c (__times): On EFAULT, test -# for non-NULL pointer before the memory validity test. Pointed -# out by Holger Brunck . -# -diff --git a/sysdeps/unix/sysv/linux/times.c b/sysdeps/unix/sysv/linux/times.c -index f3b5f01..e59bb4e 100644 ---- a/sysdeps/unix/sysv/linux/times.c -+++ b/sysdeps/unix/sysv/linux/times.c -@@ -26,13 +26,14 @@ __times (struct tms *buf) - INTERNAL_SYSCALL_DECL (err); - clock_t ret = INTERNAL_SYSCALL (times, err, 1, buf); - if (INTERNAL_SYSCALL_ERROR_P (ret, err) -- && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0)) -+ && __builtin_expect (INTERNAL_SYSCALL_ERRNO (ret, err) == EFAULT, 0) -+ && buf) - { - /* This might be an error or not. For architectures which have - no separate return value and error indicators we cannot - distinguish a return value of -1 from an error. Do it the -- hard way. We crash applications which pass in an invalid BUF -- pointer. */ -+ hard way. We crash applications which pass in an invalid -+ non-NULL BUF pointer. Linux allows BUF to be NULL. */ - #define touch(v) \ - do { \ - clock_t temp = v; \ -@@ -44,7 +45,8 @@ __times (struct tms *buf) - touch (buf->tms_cutime); - touch (buf->tms_cstime); - -- /* If we come here the memory is valid and the kernel did not -+ /* If we come here the memory is valid (or BUF is NULL, which is -+ * a valid condition for the kernel syscall) and the kernel did not - return an EFAULT error. Return the value given by the kernel. */ - } - diff --git a/src/patches/glibc/glibc-rh1125307.patch b/src/patches/glibc/glibc-rh1125307.patch deleted file mode 100644 index 72ba01db2..000000000 --- a/src/patches/glibc/glibc-rh1125307.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit a11892631d92f594c690d0d50a642b0d1aba58b8 -Author: OndÅ™ej Bílka -Date: Wed May 7 14:08:57 2014 +0200 - - Fix typo in nscd/selinux.c - -diff --git a/nscd/selinux.c b/nscd/selinux.c -index 9a8a5a8..eaed6dd 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c -@@ -372,7 +372,7 @@ nscd_request_avc_has_perm (int fd, request_type req) - /* Get the security class for nscd. If this fails we will likely be - unable to do anything unless avc_deny_unknown is 0. */ - sc_nscd = string_to_security_class ("nscd"); -- if (perm == 0 && avc_deny_unknown == 1) -+ if (sc_nscd == 0 && avc_deny_unknown == 1) - dbg_log (_("Error getting security class for nscd.")); - - /* Convert permission to AVC bits. */ diff --git a/src/patches/glibc/glibc-rh1133810-1.patch b/src/patches/glibc/glibc-rh1133810-1.patch deleted file mode 100644 index 12b99499f..000000000 --- a/src/patches/glibc/glibc-rh1133810-1.patch +++ /dev/null @@ -1,199 +0,0 @@ -2014-08-21 Florian Weimer - - [BZ #17187] - * iconv/gconv_trans.c (struct known_trans, search_tree, lock, - trans_compare, open_translit, __gconv_translit_find): - Remove module loading code. - -diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c -index 1e25854..d71c029 100644 ---- a/iconv/gconv_trans.c -+++ b/iconv/gconv_trans.c -@@ -238,181 +238,11 @@ __gconv_transliterate (struct __gconv_step *step, - return __GCONV_ILLEGAL_INPUT; - } - -- --/* Structure to represent results of found (or not) transliteration -- modules. */ --struct known_trans --{ -- /* This structure must remain the first member. */ -- struct trans_struct info; -- -- char *fname; -- void *handle; -- int open_count; --}; -- -- --/* Tree with results of previous calls to __gconv_translit_find. */ --static void *search_tree; -- --/* We modify global data. */ --__libc_lock_define_initialized (static, lock); -- -- --/* Compare two transliteration entries. */ --static int --trans_compare (const void *p1, const void *p2) --{ -- const struct known_trans *s1 = (const struct known_trans *) p1; -- const struct known_trans *s2 = (const struct known_trans *) p2; -- -- return strcmp (s1->info.name, s2->info.name); --} -- -- --/* Open (maybe reopen) the module named in the struct. Get the function -- and data structure pointers we need. */ --static int --open_translit (struct known_trans *trans) --{ -- __gconv_trans_query_fct queryfct; -- -- trans->handle = __libc_dlopen (trans->fname); -- if (trans->handle == NULL) -- /* Not available. */ -- return 1; -- -- /* Find the required symbol. */ -- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context"); -- if (queryfct == NULL) -- { -- /* We cannot live with that. */ -- close_and_out: -- __libc_dlclose (trans->handle); -- trans->handle = NULL; -- return 1; -- } -- -- /* Get the context. */ -- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames) -- != 0) -- goto close_and_out; -- -- /* Of course we also have to have the actual function. */ -- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans"); -- if (trans->info.trans_fct == NULL) -- goto close_and_out; -- -- /* Now the optional functions. */ -- trans->info.trans_init_fct = -- __libc_dlsym (trans->handle, "gconv_trans_init"); -- trans->info.trans_context_fct = -- __libc_dlsym (trans->handle, "gconv_trans_context"); -- trans->info.trans_end_fct = -- __libc_dlsym (trans->handle, "gconv_trans_end"); -- -- trans->open_count = 1; -- -- return 0; --} -- -- - int - internal_function - __gconv_translit_find (struct trans_struct *trans) - { -- struct known_trans **found; -- const struct path_elem *runp; -- int res = 1; -- -- /* We have to have a name. */ -- assert (trans->name != NULL); -- -- /* Acquire the lock. */ -- __libc_lock_lock (lock); -- -- /* See whether we know this module already. */ -- found = __tfind (trans, &search_tree, trans_compare); -- if (found != NULL) -- { -- /* Is this module available? */ -- if ((*found)->handle != NULL) -- { -- /* Maybe we have to reopen the file. */ -- if ((*found)->handle != (void *) -1) -- /* The object is not unloaded. */ -- res = 0; -- else if (open_translit (*found) == 0) -- { -- /* Copy the data. */ -- *trans = (*found)->info; -- (*found)->open_count++; -- res = 0; -- } -- } -- } -- else -- { -- size_t name_len = strlen (trans->name) + 1; -- int need_so = 0; -- struct known_trans *newp; -- -- /* We have to continue looking for the module. */ -- if (__gconv_path_elem == NULL) -- __gconv_get_path (); -- -- /* See whether we have to append .so. */ -- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0) -- need_so = 1; -- -- /* Create a new entry. */ -- newp = (struct known_trans *) malloc (sizeof (struct known_trans) -- + (__gconv_max_path_elem_len -- + name_len + 3) -- + name_len); -- if (newp != NULL) -- { -- char *cp; -- -- /* Clear the struct. */ -- memset (newp, '\0', sizeof (struct known_trans)); -- -- /* Store a copy of the module name. */ -- newp->info.name = cp = (char *) (newp + 1); -- cp = __mempcpy (cp, trans->name, name_len); -- -- newp->fname = cp; -- -- /* Search in all the directories. */ -- for (runp = __gconv_path_elem; runp->name != NULL; ++runp) -- { -- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name), -- trans->name, name_len); -- if (need_so) -- memcpy (cp, ".so", sizeof (".so")); -- -- if (open_translit (newp) == 0) -- { -- /* We found a module. */ -- res = 0; -- break; -- } -- } -- -- if (res) -- newp->fname = NULL; -- -- /* In any case we'll add the entry to our search tree. */ -- if (__tsearch (newp, &search_tree, trans_compare) == NULL) -- { -- /* Yickes, this should not happen. Unload the object. */ -- res = 1; -- /* XXX unload here. */ -- } -- } -- } -- -- __libc_lock_unlock (lock); -- -- return res; -+ /* This function always fails. Transliteration module loading is -+ not implemented. */ -+ return 1; - } --- -1.9.3 - diff --git a/src/patches/glibc/glibc-rh1133810-2.patch b/src/patches/glibc/glibc-rh1133810-2.patch deleted file mode 100644 index 8148abbbc..000000000 --- a/src/patches/glibc/glibc-rh1133810-2.patch +++ /dev/null @@ -1,625 +0,0 @@ -commit 585367266923156ac6fb789939a923641ba5aaf4 -Author: Florian Weimer -Date: Wed May 28 14:05:03 2014 +0200 - - manual: Update the locale documentation - -commit 4e8f95a0df7c2300b830ec12c0ae1e161bc8a8a3 -Author: Florian Weimer -Date: Mon May 12 15:24:12 2014 +0200 - - _nl_find_locale: Improve handling of crafted locale names [BZ #17137] - - Prevent directory traversal in locale-related environment variables - (CVE-2014-0475). - -commit d183645616b0533b3acee28f1a95570bffbdf50f -Author: Florian Weimer -Date: Wed May 28 14:41:52 2014 +0200 - - setlocale: Use the heap for the copy of the locale argument - - This avoids alloca calls with potentially large arguments. - -diff -pruN glibc-2.18/locale/findlocale.c glibc-2.18.patched/locale/findlocale.c ---- glibc-2.18/locale/findlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/findlocale.c 2014-08-26 16:14:50.403253778 +0530 -@@ -17,6 +17,7 @@ - 02111-1307 USA. */ - - #include -+#include - #include - #include - #include -@@ -57,6 +58,45 @@ struct loaded_l10nfile *_nl_locale_file_ - - const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR; - -+/* Checks if the name is actually present, that is, not NULL and not -+ empty. */ -+static inline int -+name_present (const char *name) -+{ -+ return name != NULL && name[0] != '\0'; -+} -+ -+/* Checks that the locale name neither extremely long, nor contains a -+ ".." path component (to prevent directory traversal). */ -+static inline int -+valid_locale_name (const char *name) -+{ -+ /* Not set. */ -+ size_t namelen = strlen (name); -+ /* Name too long. The limit is arbitrary and prevents stack overflow -+ issues later. */ -+ if (__builtin_expect (namelen > 255, 0)) -+ return 0; -+ /* Directory traversal attempt. */ -+ static const char slashdot[4] = {'/', '.', '.', '/'}; -+ if (__builtin_expect (memmem (name, namelen, -+ slashdot, sizeof (slashdot)) != NULL, 0)) -+ return 0; -+ if (namelen == 2 && __builtin_expect (name[0] == '.' && name [1] == '.', 0)) -+ return 0; -+ if (namelen >= 3 -+ && __builtin_expect (((name[0] == '.' -+ && name[1] == '.' -+ && name[2] == '/') -+ || (name[namelen - 3] == '/' -+ && name[namelen - 2] == '.' -+ && name[namelen - 1] == '.')), 0)) -+ return 0; -+ /* If there is a slash in the name, it must start with one. */ -+ if (__builtin_expect (memchr (name, '/', namelen) != NULL, 0) && name[0] != '/') -+ return 0; -+ return 1; -+} - - struct __locale_data * - internal_function -@@ -65,7 +105,7 @@ _nl_find_locale (const char *locale_path - { - int mask; - /* Name of the locale for this category. */ -- char *loc_name; -+ char *loc_name = (char *) *name; - const char *language; - const char *modifier; - const char *territory; -@@ -73,31 +113,39 @@ _nl_find_locale (const char *locale_path - const char *normalized_codeset; - struct loaded_l10nfile *locale_file; - -- if ((*name)[0] == '\0') -+ if (loc_name[0] == '\0') - { - /* The user decides which locale to use by setting environment - variables. */ -- *name = getenv ("LC_ALL"); -- if (*name == NULL || (*name)[0] == '\0') -- *name = getenv (_nl_category_names.str -+ loc_name = getenv ("LC_ALL"); -+ if (!name_present (loc_name)) -+ loc_name = getenv (_nl_category_names.str - + _nl_category_name_idxs[category]); -- if (*name == NULL || (*name)[0] == '\0') -- *name = getenv ("LANG"); -+ if (!name_present (loc_name)) -+ loc_name = getenv ("LANG"); -+ if (!name_present (loc_name)) -+ loc_name = (char *) _nl_C_name; - } - -- if (*name == NULL || (*name)[0] == '\0' -- || (__builtin_expect (__libc_enable_secure, 0) -- && strchr (*name, '/') != NULL)) -- *name = (char *) _nl_C_name; -+ /* We used to fall back to the C locale if the name contains a slash -+ character '/', but we now check for directory traversal in -+ valid_locale_name, so this is no longer necessary. */ - -- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0 -- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0) -+ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0 -+ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0) - { - /* We need not load anything. The needed data is contained in - the library itself. */ - *name = (char *) _nl_C_name; - return _nl_C[category]; - } -+ else if (!valid_locale_name (loc_name)) -+ { -+ __set_errno (EINVAL); -+ return NULL; -+ } -+ -+ *name = loc_name; - - /* We really have to load some data. First we try the archive, - but only if there was no LOCPATH environment variable specified. */ -diff -pruN glibc-2.18/locale/setlocale.c glibc-2.18.patched/locale/setlocale.c ---- glibc-2.18/locale/setlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/setlocale.c 2014-08-26 16:14:50.401253764 +0530 -@@ -272,6 +272,8 @@ setlocale (int category, const char *loc - of entries of the form `CATEGORY=VALUE'. */ - const char *newnames[__LC_LAST]; - struct __locale_data *newdata[__LC_LAST]; -+ /* Copy of the locale argument, for in-place splitting. */ -+ char *locale_copy = NULL; - - /* Set all name pointers to the argument name. */ - for (category = 0; category < __LC_LAST; ++category) -@@ -281,7 +283,13 @@ setlocale (int category, const char *loc - if (__builtin_expect (strchr (locale, ';') != NULL, 0)) - { - /* This is a composite name. Make a copy and split it up. */ -- char *np = strdupa (locale); -+ locale_copy = strdup (locale); -+ if (__builtin_expect (locale_copy == NULL, 0)) -+ { -+ __libc_rwlock_unlock (__libc_setlocale_lock); -+ return NULL; -+ } -+ char *np = locale_copy; - char *cp; - int cnt; - -@@ -299,6 +307,7 @@ setlocale (int category, const char *loc - { - error_return: - __libc_rwlock_unlock (__libc_setlocale_lock); -+ free (locale_copy); - - /* Bogus category name. */ - ERROR_RETURN; -@@ -391,8 +400,9 @@ setlocale (int category, const char *loc - /* Critical section left. */ - __libc_rwlock_unlock (__libc_setlocale_lock); - -- /* Free the resources (the locale path variable). */ -+ /* Free the resources. */ - free (locale_path); -+ free (locale_copy); - - return composite; - } -diff -pruN glibc-2.18/localedata/Makefile glibc-2.18.patched/localedata/Makefile ---- glibc-2.18/localedata/Makefile 2014-08-26 16:15:22.656474571 +0530 -+++ glibc-2.18.patched/localedata/Makefile 2014-08-26 16:14:50.403253778 +0530 -@@ -77,7 +77,7 @@ locale_test_suite := tst_iswalnum tst_is - - tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ - tst-leaks tst-mbswcs6 tst-xlocale1 tst-xlocale2 bug-usesetlocale \ -- tst-strfmon1 tst-sscanf tst-strptime -+ tst-strfmon1 tst-sscanf tst-strptime tst-setlocale3 - ifeq (yes,$(build-shared)) - ifneq (no,$(PERL)) - tests: $(objpfx)mtrace-tst-leaks -@@ -288,6 +288,7 @@ tst-strfmon1-ENV = $(TEST_MBWC_ENV) - tst-strptime-ENV = $(TEST_MBWC_ENV) - - tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-JP -+tst-setlocale3-ENV = LOCPATH=$(common-objpfx)localedata - - bug-iconv-trans-ENV = LOCPATH=$(common-objpfx)localedata - -diff -pruN glibc-2.18/localedata/tst-setlocale3.c glibc-2.18.patched/localedata/tst-setlocale3.c ---- glibc-2.18/localedata/tst-setlocale3.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.18.patched/localedata/tst-setlocale3.c 2014-08-26 16:14:50.403253778 +0530 -@@ -0,0 +1,203 @@ -+/* Regression test for setlocale invalid environment variable handling. -+ Copyright (C) 2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+/* The result of setlocale may be overwritten by subsequent calls, so -+ this wrapper makes a copy. */ -+static char * -+setlocale_copy (int category, const char *locale) -+{ -+ const char *result = setlocale (category, locale); -+ if (result == NULL) -+ return NULL; -+ return strdup (result); -+} -+ -+static char *de_locale; -+ -+static void -+setlocale_fail (const char *envstring) -+{ -+ setenv ("LC_CTYPE", envstring, 1); -+ if (setlocale (LC_CTYPE, "") != NULL) -+ { -+ printf ("unexpected setlocale success for \"%s\" locale\n", envstring); -+ exit (1); -+ } -+ const char *newloc = setlocale (LC_CTYPE, NULL); -+ if (strcmp (newloc, de_locale) != 0) -+ { -+ printf ("failed setlocale call \"%s\" changed locale to \"%s\"\n", -+ envstring, newloc); -+ exit (1); -+ } -+} -+ -+static void -+setlocale_success (const char *envstring) -+{ -+ setenv ("LC_CTYPE", envstring, 1); -+ char *newloc = setlocale_copy (LC_CTYPE, ""); -+ if (newloc == NULL) -+ { -+ printf ("setlocale for \"%s\": %m\n", envstring); -+ exit (1); -+ } -+ if (strcmp (newloc, de_locale) == 0) -+ { -+ printf ("setlocale with LC_CTYPE=\"%s\" left locale at \"%s\"\n", -+ envstring, de_locale); -+ exit (1); -+ } -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("restoring locale \"%s\" with LC_CTYPE=\"%s\": %m\n", -+ de_locale, envstring); -+ exit (1); -+ } -+ char *newloc2 = setlocale_copy (LC_CTYPE, newloc); -+ if (newloc2 == NULL) -+ { -+ printf ("restoring locale \"%s\" following \"%s\": %m\n", -+ newloc, envstring); -+ exit (1); -+ } -+ if (strcmp (newloc, newloc2) != 0) -+ { -+ printf ("representation of locale \"%s\" changed from \"%s\" to \"%s\"", -+ envstring, newloc, newloc2); -+ exit (1); -+ } -+ free (newloc); -+ free (newloc2); -+ -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("restoring locale \"%s\" with LC_CTYPE=\"%s\": %m\n", -+ de_locale, envstring); -+ exit (1); -+ } -+} -+ -+/* Checks that a known-good locale still works if LC_ALL contains a -+ value which should be ignored. */ -+static void -+setlocale_ignore (const char *to_ignore) -+{ -+ const char *fr_locale = "fr_FR.UTF-8"; -+ setenv ("LC_CTYPE", fr_locale, 1); -+ char *expected_locale = setlocale_copy (LC_CTYPE, ""); -+ if (expected_locale == NULL) -+ { -+ printf ("setlocale with LC_CTYPE=\"%s\" failed: %m\n", fr_locale); -+ exit (1); -+ } -+ if (setlocale (LC_CTYPE, de_locale) == NULL) -+ { -+ printf ("failed to restore locale: %m\n"); -+ exit (1); -+ } -+ unsetenv ("LC_CTYPE"); -+ -+ setenv ("LC_ALL", to_ignore, 1); -+ setenv ("LC_CTYPE", fr_locale, 1); -+ const char *actual_locale = setlocale (LC_CTYPE, ""); -+ if (actual_locale == NULL) -+ { -+ printf ("setlocale with LC_ALL, LC_CTYPE=\"%s\" failed: %m\n", -+ fr_locale); -+ exit (1); -+ } -+ if (strcmp (actual_locale, expected_locale) != 0) -+ { -+ printf ("setlocale under LC_ALL failed: got \"%s\", expected \"%s\"\n", -+ actual_locale, expected_locale); -+ exit (1); -+ } -+ unsetenv ("LC_CTYPE"); -+ setlocale_success (fr_locale); -+ unsetenv ("LC_ALL"); -+ free (expected_locale); -+} -+ -+static int -+do_test (void) -+{ -+ /* The glibc test harness sets this environment variable -+ uncondionally. */ -+ unsetenv ("LC_ALL"); -+ -+ de_locale = setlocale_copy (LC_CTYPE, "de_DE.UTF-8"); -+ if (de_locale == NULL) -+ { -+ printf ("setlocale (LC_CTYPE, \"de_DE.UTF-8\"): %m\n"); -+ return 1; -+ } -+ setlocale_success ("C"); -+ setlocale_success ("en_US.UTF-8"); -+ setlocale_success ("/en_US.UTF-8"); -+ setlocale_success ("//en_US.UTF-8"); -+ setlocale_ignore (""); -+ -+ setlocale_fail ("does-not-exist"); -+ setlocale_fail ("/"); -+ setlocale_fail ("/../localedata/en_US.UTF-8"); -+ setlocale_fail ("en_US.UTF-8/"); -+ setlocale_fail ("en_US.UTF-8/.."); -+ setlocale_fail ("en_US.UTF-8/../en_US.UTF-8"); -+ setlocale_fail ("../localedata/en_US.UTF-8"); -+ { -+ size_t large_length = 1024; -+ char *large_name = malloc (large_length + 1); -+ if (large_name == NULL) -+ { -+ puts ("malloc failure"); -+ return 1; -+ } -+ memset (large_name, '/', large_length); -+ const char *suffix = "en_US.UTF-8"; -+ strcpy (large_name + large_length - strlen (suffix), suffix); -+ setlocale_fail (large_name); -+ free (large_name); -+ } -+ { -+ size_t huge_length = 64 * 1024 * 1024; -+ char *huge_name = malloc (huge_length + 1); -+ if (huge_name == NULL) -+ { -+ puts ("malloc failure"); -+ return 1; -+ } -+ memset (huge_name, 'X', huge_length); -+ huge_name[huge_length] = '\0'; -+ /* Construct a composite locale specification. */ -+ const char *prefix = "LC_CTYPE=de_DE.UTF-8;LC_TIME="; -+ memcpy (huge_name, prefix, strlen (prefix)); -+ setlocale_fail (huge_name); -+ free (huge_name); -+ } -+ -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.18/manual/locale.texi glibc-2.18.patched/manual/locale.texi ---- glibc-2.18/manual/locale.texi 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/manual/locale.texi 2014-08-26 16:14:50.404253785 +0530 -@@ -29,6 +29,7 @@ will follow the conventions preferred by - * Setting the Locale:: How a program specifies the locale - with library functions. - * Standard Locales:: Locale names available on all systems. -+* Locale Names:: Format of system-specific locale names. - * Locale Information:: How to access the information for the locale. - * Formatting Numbers:: A dedicated function to format numbers. - * Yes-or-No Questions:: Check a Response against the locale. -@@ -99,14 +100,16 @@ locale named @samp{espana-castellano} to - most of Spain. - - The set of locales supported depends on the operating system you are --using, and so do their names. We can't make any promises about what --locales will exist, except for one standard locale called @samp{C} or --@samp{POSIX}. Later we will describe how to construct locales. --@comment (@pxref{Building Locale Files}). -+using, and so do their names, except that the standard locale called -+@samp{C} or @samp{POSIX} always exist. @xref{Locale Names}. -+ -+In order to force the system to always use the default locale, the -+user can set the @code{LC_ALL} environment variable to @samp{C}. - - @cindex combining locales --A user also has the option of specifying different locales for different --purposes---in effect, choosing a mixture of multiple locales. -+A user also has the option of specifying different locales for -+different purposes---in effect, choosing a mixture of multiple -+locales. @xref{Locale Categories}. - - For example, the user might specify the locale @samp{espana-castellano} - for most purposes, but specify the locale @samp{usa-english} for -@@ -120,7 +123,7 @@ which locales apply. However, the user - for a particular subset of those purposes. - - @node Locale Categories, Setting the Locale, Choosing Locale, Locales --@section Categories of Activities that Locales Affect -+@section Locale Categories - @cindex categories for locales - @cindex locale categories - -@@ -128,7 +131,11 @@ The purposes that locales serve are grou - that a user or a program can choose the locale for each category - independently. Here is a table of categories; each name is both an - environment variable that a user can set, and a macro name that you can --use as an argument to @code{setlocale}. -+use as the first argument to @code{setlocale}. -+ -+The contents of the environment variable (or the string in the second -+argument to @code{setlocale}) has to be a valid locale name. -+@xref{Locale Names}. - - @vtable @code - @comment locale.h -@@ -172,7 +179,7 @@ for affirmative and negative responses. - @comment locale.h - @comment ISO - @item LC_ALL --This is not an environment variable; it is only a macro that you can use -+This is not a category; it is only a macro that you can use - with @code{setlocale} to set a single locale for all purposes. Setting - this environment variable overwrites all selections by the other - @code{LC_*} variables or @code{LANG}. -@@ -225,13 +232,7 @@ The symbols in this section are defined - @comment ISO - @deftypefun {char *} setlocale (int @var{category}, const char *@var{locale}) - The function @code{setlocale} sets the current locale for category --@var{category} to @var{locale}. A list of all the locales the system --provides can be created by running -- --@pindex locale --@smallexample -- locale -a --@end smallexample -+@var{category} to @var{locale}. - - If @var{category} is @code{LC_ALL}, this specifies the locale for all - purposes. The other possible values of @var{category} specify an -@@ -256,10 +257,9 @@ is passed in as @var{locale} parameter. - - When you read the current locale for category @code{LC_ALL}, the value - encodes the entire combination of selected locales for all categories. --In this case, the value is not just a single locale name. In fact, we --don't make any promises about what it looks like. But if you specify --the same ``locale name'' with @code{LC_ALL} in a subsequent call to --@code{setlocale}, it restores the same combination of locale selections. -+If you specify the same ``locale name'' with @code{LC_ALL} in a -+subsequent call to @code{setlocale}, it restores the same combination -+of locale selections. - - To be sure you can use the returned string encoding the currently selected - locale at a later time, you must make a copy of the string. It is not -@@ -275,6 +275,11 @@ for @var{category}. - If a nonempty string is given for @var{locale}, then the locale of that - name is used if possible. - -+The effective locale name (either the second argument to -+@code{setlocale}, or if the argument is an empty string, the name -+obtained from the process environment) must be valid locale name. -+@xref{Locale Names}. -+ - If you specify an invalid locale name, @code{setlocale} returns a null - pointer and leaves the current locale unchanged. - @end deftypefun -@@ -328,7 +323,7 @@ locale categories, and future versions o - portability, assume that any symbol beginning with @samp{LC_} might be - defined in @file{locale.h}. - --@node Standard Locales, Locale Information, Setting the Locale, Locales -+@node Standard Locales, Locale Names, Setting the Locale, Locales - @section Standard Locales - - The only locale names you can count on finding on all operating systems -@@ -362,7 +357,94 @@ with the environment, rather than trying - locale explicitly by name. Remember, different machines might have - different sets of locales installed. - --@node Locale Information, Formatting Numbers, Standard Locales, Locales -+@node Locale Names, Locale Information, Standard Locales, Locales -+@section Locale Names -+ -+The following command prints a list of locales supported by the -+system: -+ -+@pindex locale -+@smallexample -+ locale -a -+@end smallexample -+ -+@strong{Portability Note:} With the notable exception of the standard -+locale names @samp{C} and @samp{POSIX}, locale names are -+system-specific. -+ -+Most locale names follow XPG syntax and consist of up to four parts: -+ -+@smallexample -+@var{language}[_@var{territory}[.@var{codeset}]][@@@var{modifier}] -+@end smallexample -+ -+Beside the first part, all of them are allowed to be missing. If the -+full specified locale is not found, less specific ones are looked for. -+The various parts will be stripped off, in the following order: -+ -+@enumerate -+@item -+codeset -+@item -+normalized codeset -+@item -+territory -+@item -+modifier -+@end enumerate -+ -+For example, the locale name @samp{de_AT.iso885915@@euro} denotes a -+German-language locale for use in Austria, using the ISO-8859-15 -+(Latin-9) character set, and with the Euro as the currency symbol. -+ -+In addition to locale names which follow XPG syntax, systems may -+provide aliases such as @samp{german}. Both categories of names must -+not contain the slash character @samp{/}. -+ -+If the locale name starts with a slash @samp{/}, it is treated as a -+path relative to the configured locale directories; see @code{LOCPATH} -+below. The specified path must not contain a component @samp{..}, or -+the name is invalid, and @code{setlocale} will fail. -+ -+@strong{Portability Note:} POSIX suggests that if a locale name starts -+with a slash @samp{/}, it is resolved as an absolute path. However, -+the GNU C Library treats it as a relative path under the directories listed -+in @code{LOCPATH} (or the default locale directory if @code{LOCPATH} -+is unset). -+ -+Locale names which are longer than an implementation-defined limit are -+invalid and cause @code{setlocale} to fail. -+ -+As a special case, locale names used with @code{LC_ALL} can combine -+several locales, reflecting different locale settings for different -+categories. For example, you might want to use a U.S. locale with ISO -+A4 paper format, so you set @code{LANG} to @samp{en_US.UTF-8}, and -+@code{LC_PAPER} to @samp{de_DE.UTF-8}. In this case, the -+@code{LC_ALL}-style combined locale name is -+ -+@smallexample -+LC_CTYPE=en_US.UTF-8;LC_TIME=en_US.UTF-8;LC_PAPER=de_DE.UTF-8;@dots{} -+@end smallexample -+ -+followed by other category settings not shown here. -+ -+@vindex LOCPATH -+The path used for finding locale data can be set using the -+@code{LOCPATH} environment variable. This variable lists the -+directories in which to search for locale definitions, separated by a -+colon @samp{:}. -+ -+The default path for finding locale data is system specific. A typical -+value for the @code{LOCPATH} default is: -+ -+@smallexample -+/usr/share/locale -+@end smallexample -+ -+The value of @code{LOCPATH} is ignored by privileged programs for -+security reasons, and only the default directory is used. -+ -+@node Locale Information, Formatting Numbers, Locale Names, Locales - @section Accessing Locale Information - - There are several ways to access locale information. The simplest diff --git a/src/patches/glibc/glibc-rh1138769.patch b/src/patches/glibc/glibc-rh1138769.patch deleted file mode 100644 index 94a7d2a62..000000000 --- a/src/patches/glibc/glibc-rh1138769.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit e35c53e397e7abbd41fedacdedcfa5af7b5c2c52 -Author: Siddhesh Poyarekar -Date: Tue Jul 8 16:40:24 2014 +0530 - - Check value at resplen2 if it is not NULL - - There was a typo in the previous patch due to which resplen2 was - checked for non-zero instead of the value at resplen2. Fix that and - improve the condition by checking resplen2 for non-NULL (instead of - answerp2) and also adding the check in a third place. - -diff --git a/resolv/res_query.c b/resolv/res_query.c -index 4e6612c..e4ee2a6 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -384,7 +384,7 @@ __libc_res_nsearch(res_state statp, - answerp2, nanswerp2, resplen2); - if (ret > 0 || trailing_dot - /* If the second response is valid then we use that. */ -- || (ret == 0 && answerp2 != NULL && resplen2 > 0)) -+ || (ret == 0 && resplen2 != NULL && *resplen2 > 0)) - return (ret); - saved_herrno = h_errno; - tried_as_is++; -@@ -424,8 +424,8 @@ __libc_res_nsearch(res_state statp, - answer, anslen, answerp, - answerp2, nanswerp2, - resplen2); -- if (ret > 0 || (ret == 0 && answerp2 != NULL -- && resplen2 > 0)) -+ if (ret > 0 || (ret == 0 && resplen2 != NULL -+ && *resplen2 > 0)) - return (ret); - - if (answerp && *answerp != answer) { -@@ -494,7 +494,8 @@ __libc_res_nsearch(res_state statp, - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, - answerp2, nanswerp2, resplen2); -- if (ret > 0) -+ if (ret > 0 || (ret == 0 && resplen2 != NULL -+ && *resplen2 > 0)) - return (ret); - } - diff --git a/src/patches/glibc/glibc-rh1144019.patch b/src/patches/glibc/glibc-rh1144019.patch deleted file mode 100644 index 1732de649..000000000 --- a/src/patches/glibc/glibc-rh1144019.patch +++ /dev/null @@ -1,27 +0,0 @@ -# -# Based on the following commit: -# -# commit f9d2d03254a58d92635a311a42253eeed5a40a47 -# Author: Andreas Schwab -# Date: Mon May 26 18:01:31 2014 +0200 -# -# Fix invalid file descriptor reuse while sending DNS query (BZ #15946) -# -# 2014-06-03 Andreas Schwab -# -# [BZ #15946] -# * resolv/res_send.c (send_dg): Reload file descriptor after -# calling reopen. -# -diff --git a/resolv/res_send.c b/resolv/res_send.c -index 3273d55..af42b8a 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1410,6 +1410,7 @@ send_dg(res_state statp, - retval = reopen (statp, terrno, ns); - if (retval <= 0) - return retval; -+ pfd[0].fd = EXT(statp).nssocks[ns]; - } - } - goto wait; diff --git a/src/patches/glibc/glibc-rh1144132.patch b/src/patches/glibc/glibc-rh1144132.patch deleted file mode 100644 index 4114b5897..000000000 --- a/src/patches/glibc/glibc-rh1144132.patch +++ /dev/null @@ -1,58 +0,0 @@ -# -# Based on this commit: -# -# commit 62058ce612ed3459501b4c4332e268edfe977f59 -# Author: Carlos O'Donell -# Date: Mon Sep 29 13:14:21 2014 -0400 -# -# Correctly size profiling reloc table (bug 17411) -# -# During auditing or profiling modes the dynamic loader -# builds a cache of the relocated PLT entries in order -# to reuse them when called again through the same PLT -# entry. This way the PLT entry is never completed and -# the call into the resolver always results in profiling -# or auditing code running. -# -# The problem is that the PLT relocation cache size -# is not computed correctly. The size of the cache -# should be "Size of a relocation result structure" -# x "Number of PLT-related relocations". Instead the -# code erroneously computes "Size of a relocation -# result" x "Number of bytes worth of PLT-related -# relocations". I can only assume this was a mistake -# in the understanding of the value of DT_PLTRELSZ -# which is the number of bytes of PLT-related relocs. -# We do have a DT_RELACOUNT entry, which is a count -# for dynamic relative relocs, but we have no -# DT_PLTRELCOUNT and thus we need to compute it. -# -# This patch corrects the computation of the size of the -# relocation table used by the glibc profiling code. -# -# For more details see: -# https://sourceware.org/ml/libc-alpha/2014-09/msg00513.html -# -# [BZ #17411] -# * elf/dl-reloc.c (_dl_relocate_object): Allocate correct amount for -# l_reloc_result. -# -diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c -index d2c6dac..97a7119 100644 ---- a/elf/dl-reloc.c -+++ b/elf/dl-reloc.c -@@ -279,8 +279,12 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], - l->l_name); - } - -- l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), -- l->l_info[DT_PLTRELSZ]->d_un.d_val); -+ size_t sizeofrel = l->l_info[DT_PLTREL]->d_un.d_val == DT_RELA -+ ? sizeof (ElfW(Rela)) -+ : sizeof (ElfW(Rel)); -+ size_t relcount = l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeofrel; -+ l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), relcount); -+ - if (l->l_reloc_result == NULL) - { - errstring = N_("\ diff --git a/src/patches/glibc/glibc-rh1154563.patch b/src/patches/glibc/glibc-rh1154563.patch deleted file mode 100644 index 22821b1f9..000000000 --- a/src/patches/glibc/glibc-rh1154563.patch +++ /dev/null @@ -1,333 +0,0 @@ -# -# This is a special patch for rhel-6 to fix recursive dlopen. -# It is likely the upstream patch will always be too risky for -# rhel-6 and will involve reorganizing the way in which recursive -# dlopen is allowed to operate and how the _r_debug and stap -# points are used by gdb for the recursive case. -# -# This fix changes the internal API to duplicate the ldconfig -# cache data. This means that at any point the cache can be -# unmapped without any consequences. The caller is responsible -# fore freeing the returned string. -# -# A regression test is added to verify the assertion for _r_debug -# is no longer triggered due to the recursive dlopen. The test to -# verify the fix in _dl_load_cache_lookup is not automated and -# has to be run by hand. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-cache.c glibc-2.12-2-gc4ccff1.mod/elf/dl-cache.c ---- glibc-2.12-2-gc4ccff1/elf/dl-cache.c 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-cache.c 2014-12-10 21:54:08.801985045 -0500 -@@ -175,9 +175,12 @@ - - - /* Look up NAME in ld.so.cache and return the file name stored there, -- or null if none is found. */ -- --const char * -+ or null if none is found. -+ The caller is responsible for freeing the returned string. The ld.so.cache -+ may be unmapped at any time by a completing recursive dlopen and -+ this function must take care that it does not return references to -+ any data in the mapping. */ -+char * - internal_function - _dl_load_cache_lookup (const char *name) - { -@@ -290,7 +293,17 @@ - && best != NULL) - _dl_debug_printf (" trying file=%s\n", best); - -- return best; -+ if (best == NULL) -+ return NULL; -+ -+ /* The double copy is *required* since malloc may be interposed -+ and call dlopen itself whose completion would unmap the data -+ we are accessing. Therefore we must make the copy of the -+ mapping data without using malloc. */ -+ char *temp; -+ temp = alloca (strlen (best) + 1); -+ strcpy (temp, best); -+ return strdup (temp); - } - - #ifndef MAP_COPY -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-load.c glibc-2.12-2-gc4ccff1.mod/elf/dl-load.c ---- glibc-2.12-2-gc4ccff1/elf/dl-load.c 2014-12-10 11:03:17.966048404 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-load.c 2014-12-10 21:47:29.319387538 -0500 -@@ -2126,7 +2126,7 @@ - { - /* Check the list of libraries in the file /etc/ld.so.cache, - for compatibility with Linux's ldconfig program. */ -- const char *cached = _dl_load_cache_lookup (name); -+ char *cached = _dl_load_cache_lookup (name); - - if (cached != NULL) - { -@@ -2156,6 +2156,7 @@ - if (memcmp (cached, dirp, system_dirs_len[cnt]) == 0) - { - /* The prefix matches. Don't use the entry. */ -+ free (cached); - cached = NULL; - break; - } -@@ -2172,14 +2173,9 @@ - &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded, - LA_SER_CONFIG, &found_other_class, false); - if (__builtin_expect (fd != -1, 1)) -- { -- realname = local_strdup (cached); -- if (realname == NULL) -- { -- __close (fd); -- fd = -1; -- } -- } -+ realname = cached; -+ else -+ free (cached); - } - } - } -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-open.c glibc-2.12-2-gc4ccff1.mod/elf/dl-open.c ---- glibc-2.12-2-gc4ccff1/elf/dl-open.c 2014-12-10 11:03:18.083048497 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-open.c 2014-12-10 20:34:16.017503638 -0500 -@@ -220,7 +220,11 @@ - } - } - -- assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); -+ /* One might be tempted to assert that we are RT_CONSISTENT at this point, but that -+ may not be true if this is a recursive call to dlopen. -+ TODO: Fix all of the debug state so we end up at RT_CONSISTENT only when the last -+ recursive dlopen completes. */ -+ _dl_debug_initialize (0, args->nsid); - - /* Load the named object. */ - struct link_map *new; -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1.mod/sysdeps/generic/ldsodefs.h ---- glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h 2014-12-10 11:03:17.944048387 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/generic/ldsodefs.h 2014-12-10 21:46:14.071344018 -0500 -@@ -996,8 +996,8 @@ - internal_function; - - /* Look up NAME in ld.so.cache and return the file name stored there, -- or null if none is found. */ --extern const char *_dl_load_cache_lookup (const char *name) -+ or null if none is found. Caller must free returned string. */ -+extern char *_dl_load_cache_lookup (const char *name) - internal_function; - - /* If the system does not support MAP_COPY we cannot leave the file open -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/Makefile glibc-2.12-2-gc4ccff1.mod/dlfcn/Makefile ---- glibc-2.12-2-gc4ccff1/dlfcn/Makefile 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/Makefile 2014-12-11 16:58:55.719803063 -0500 -@@ -42,12 +42,12 @@ - ifeq (yes,$(build-shared)) - tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ - bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \ -- bug-atexit3 tstatexit -+ bug-atexit3 tstatexit tst-rec-dlopen - endif - modules-names = glreflib1 glreflib2 glreflib3 failtestmod defaultmod1 \ - defaultmod2 errmsg1mod modatexit modcxaatexit \ - bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \ -- bug-atexit2-lib bug-atexit3-lib -+ bug-atexit2-lib bug-atexit3-lib moddummy1 moddummy2 - - failtestmod.so-no-z-defs = yes - glreflib2.so-no-z-defs = yes -@@ -142,6 +142,8 @@ - $(objpfx)bug-atexit3-lib.so: $(common-objpfx)libc.so \ - $(common-objpfx)libc_nonshared.a - -+LDLIBS-tst-rec-dlopen = -ldl -+$(objpfx)tst-rec-dlopen: $(libdl) - - # Depend on libc.so so a DT_NEEDED is generated in the shared objects. - # This ensures they will load libc.so for needed symbols if loaded by -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/moddummy1.c glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy1.c ---- glibc-2.12-2-gc4ccff1/dlfcn/moddummy1.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy1.c 2014-12-11 16:57:54.108797285 -0500 -@@ -0,0 +1,13 @@ -+/* Provide a dummy DSO for tst-recursive-dlopen to use. */ -+#include -+#include -+ -+int called_dummy1; -+ -+void -+dummy1 (void) -+{ -+ printf ("Called dummy1()\n"); -+ called_dummy1++; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/moddummy2.c glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy2.c ---- glibc-2.12-2-gc4ccff1/dlfcn/moddummy2.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/moddummy2.c 2014-12-11 16:57:54.108797285 -0500 -@@ -0,0 +1,13 @@ -+/* Provide a dummy DSO for tst-recursive-dlopen to use. */ -+#include -+#include -+ -+int called_dummy2; -+ -+void -+dummy2 (void) -+{ -+ printf ("Called dummy2()\n"); -+ called_dummy2++; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1/dlfcn/tst-rec-dlopen.c glibc-2.12-2-gc4ccff1.mod/dlfcn/tst-rec-dlopen.c ---- glibc-2.12-2-gc4ccff1/dlfcn/tst-rec-dlopen.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/dlfcn/tst-rec-dlopen.c 2014-12-11 20:53:28.617848774 -0500 -@@ -0,0 +1,145 @@ -+/* Test recursive dlopen using malloc hooks. -+ Copyright (C) 1998-2014 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 1998. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+ -+#define DSO "moddummy1.so" -+#define FUNC "dummy1" -+ -+#define DSO1 "moddummy2.so" -+#define FUNC1 "dummy2" -+ -+/* Prevent the compiler from moving the assignment to called_func -+ before (*func)() since the compiler doesn't know we might abort -+ or catch a SIGSEGV signal and it may move the store. */ -+volatile int called_func; -+ -+/* Prototype for my hook. */ -+void *custom_malloc_hook (size_t, const void *); -+ -+/* Pointer to old malloc hooks. */ -+void *(*old_malloc_hook) (size_t, const void *); -+ -+/* Call function func_name in DSO dso_name via dlopen. */ -+void -+call_func (const char *dso_name, const char *func_name) -+{ -+ int ret; -+ void *dso; -+ void (*func) (void); -+ char *err; -+ -+ /* Open the DSO. */ -+ dso = dlopen (dso_name, RTLD_NOW|RTLD_GLOBAL); -+ if (dso == NULL) -+ { -+ err = dlerror (); -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ /* Clear any errors. */ -+ dlerror (); -+ -+ /* Lookup func. */ -+ *(void **) (&func) = dlsym (dso, func_name); -+ if (func == NULL) -+ { -+ err = dlerror (); -+ if (err != NULL) -+ { -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ } -+ /* Call func. */ -+ (*func) (); -+ called_func = 1; -+ -+ /* Close the library and look for errors too. */ -+ ret = dlclose (dso); -+ if (ret != 0) -+ { -+ err = dlerror (); -+ fprintf (stderr, "%s\n", err); -+ exit (1); -+ } -+ -+} -+ -+/* Empty hook that does nothing. */ -+void * -+custom_malloc_hook (size_t size, const void *caller) -+{ -+ void *result; -+ /* Restore old hooks. */ -+ __malloc_hook = old_malloc_hook; -+ /* First call a function in another library via dlopen. */ -+ call_func (DSO1, FUNC1); -+ /* Called recursively. */ -+ result = malloc (size); -+ /* Restore new hooks. */ -+ __malloc_hook = custom_malloc_hook; -+ return result; -+} -+ -+static int -+do_test (void) -+{ -+ /* Save old hook. */ -+ old_malloc_hook = __malloc_hook; -+ /* Install new hook. */ -+ __malloc_hook = custom_malloc_hook; -+ -+ /* Bug 17702 fixes two things: -+ * A recursive dlopen unmapping the ld.so.cache. -+ * An assertion that _r_debug is RT_CONSISTENT at entry to dlopen. -+ We can only test the latter. Testing the former requires modifying -+ ld.so.conf to cache the dummy libraries, then running ldconfig, -+ then run the test. If you do all of that (and glibc's test -+ infrastructure doesn't support that yet) then the test will -+ SEGFAULT without the fix. If you don't do that, then the test -+ will abort because of the assert described in detail below. */ -+ call_func (DSO, FUNC); -+ -+ /* Restore old hook. */ -+ __malloc_hook = old_malloc_hook; -+ -+ /* The function dummy2() is called by the malloc hook. Check to -+ see that it was called. This ensures the second recursive -+ dlopen happened and we called the function in that library. -+ -+ Before the fix you either get a SIGSEGV when accessing mmap'd -+ ld.so.cache data or an assertion failure about _r_debug not -+ beint RT_CONSISTENT. We don't test for the SIGSEGV since it -+ would require finding moddummy1 or moddummy2 in the cache and -+ we don't have any infrastructure to test that, but the _r_debug -+ assertion triggers. */ -+ if (called_func > 0) -+ printf ("PASS: Function call_func() called more than once.\n"); -+ else -+ printf ("FAIL: Function call_func() not called.\n"); -+ -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1159167.patch b/src/patches/glibc/glibc-rh1159167.patch deleted file mode 100644 index 59f4a6f41..000000000 --- a/src/patches/glibc/glibc-rh1159167.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/sunrpc/svc.c b/sunrpc/svc.c -index ccf0902..30c3a93 100644 ---- a/sunrpc/svc.c -+++ b/sunrpc/svc.c -@@ -97,8 +97,8 @@ xprt_register (SVCXPRT *xprt) - - if (xports == NULL) - { -- xports = (SVCXPRT **) malloc (_rpc_dtablesize () * sizeof (SVCXPRT *)); -- if (xports == NULL) /* Don´t add handle */ -+ xports = (SVCXPRT **) calloc (_rpc_dtablesize (), sizeof (SVCXPRT *)); -+ if (xports == NULL) /* Don't add handle */ - return; - } - diff --git a/src/patches/glibc/glibc-rh1171296.patch b/src/patches/glibc/glibc-rh1171296.patch deleted file mode 100644 index 1accbf3e7..000000000 --- a/src/patches/glibc/glibc-rh1171296.patch +++ /dev/null @@ -1,163 +0,0 @@ -# -# commit a39208bd7fb76c1b01c127b4c61f9bfd915bfe7c -# Author: Carlos O'Donell -# Date: Wed Nov 19 11:44:12 2014 -0500 -# -# CVE-2014-7817: wordexp fails to honour WRDE_NOCMD. -# -# The function wordexp() fails to properly handle the WRDE_NOCMD -# flag when processing arithmetic inputs in the form of "$((... ``))" -# where "..." can be anything valid. The backticks in the arithmetic -# epxression are evaluated by in a shell even if WRDE_NOCMD forbade -# command substitution. This allows an attacker to attempt to pass -# dangerous commands via constructs of the above form, and bypass -# the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD -# in exec_comm(), the only place that can execute a shell. All other -# checks for WRDE_NOCMD are superfluous and removed. -# -# We expand the testsuite and add 3 new regression tests of roughly -# the same form but with a couple of nested levels. -# -# On top of the 3 new tests we add fork validation to the WRDE_NOCMD -# testing. If any forks are detected during the execution of a wordexp() -# call with WRDE_NOCMD, the test is marked as failed. This is slightly -# heuristic since vfork might be used in the future, but it provides a -# higher level of assurance that no shells were executed as part of -# command substitution with WRDE_NOCMD in effect. In addition it doesn't -# require libpthread or libdl, instead we use the public implementation -# namespace function __register_atfork (already part of the public ABI -# for libpthread). -# -# Tested on x86_64 with no regressions. -# -diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c -index 4957006..bdd65e4 100644 ---- a/posix/wordexp-test.c -+++ b/posix/wordexp-test.c -@@ -27,6 +27,25 @@ - - #define IFS " \n\t" - -+extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden"))); -+extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *); -+ -+static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void)) -+{ -+ return __register_atfork (prepare, parent, child, -+ &__dso_handle == NULL ? NULL : __dso_handle); -+} -+ -+/* Number of forks seen. */ -+static int registered_forks; -+ -+/* For each fork increment the fork count. */ -+static void -+register_fork (void) -+{ -+ registered_forks++; -+} -+ - struct test_case_struct - { - int retval; -@@ -206,6 +225,12 @@ struct test_case_struct - { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS }, - { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS }, - { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS }, -+ /* Test for CVE-2014-7817. We test 3 combinations of command -+ substitution inside an arithmetic expression to make sure that -+ no commands are executed and error is returned. */ -+ { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS }, -+ { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS }, -+ { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS }, - - { -1, NULL, NULL, 0, 0, { NULL, }, IFS }, - }; -@@ -258,6 +283,15 @@ main (int argc, char *argv[]) - return -1; - } - -+ /* If we are not allowed to do command substitution, we install -+ fork handlers to verify that no forks happened. No forks should -+ happen at all if command substitution is disabled. */ -+ if (__app_register_atfork (register_fork, NULL, NULL) != 0) -+ { -+ printf ("Failed to register fork handler.\n"); -+ return -1; -+ } -+ - for (test = 0; test_case[test].retval != -1; test++) - if (testit (&test_case[test])) - ++fail; -@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc) - - printf ("Test %d (%s): ", ++tests, tc->words); - -+ if (tc->flags & WRDE_NOCMD) -+ registered_forks = 0; -+ - if (tc->flags & WRDE_APPEND) - { - /* initial wordexp() call, to be appended to */ -@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc) - } - retval = wordexp (tc->words, &we, tc->flags); - -+ if ((tc->flags & WRDE_NOCMD) -+ && (registered_forks > 0)) -+ { -+ printf ("FAILED fork called for WRDE_NOCMD\n"); -+ return 1; -+ } -+ - if (tc->flags & WRDE_DOOFFS) - start_offs = sav_we.we_offs; - -diff --git a/posix/wordexp.c b/posix/wordexp.c -index b6b65dd..26f3a26 100644 ---- a/posix/wordexp.c -+++ b/posix/wordexp.c -@@ -893,6 +893,10 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length, - pid_t pid; - int noexec = 0; - -+ /* Do nothing if command substitution should not succeed. */ -+ if (flags & WRDE_NOCMD) -+ return WRDE_CMDSUB; -+ - /* Don't fork() unless necessary */ - if (!comm || !*comm) - return 0; -@@ -2082,9 +2086,6 @@ parse_dollars (char **word, size_t *word_length, size_t *max_length, - } - } - -- if (flags & WRDE_NOCMD) -- return WRDE_CMDSUB; -- - (*offset) += 2; - return parse_comm (word, word_length, max_length, words, offset, flags, - quoted? NULL : pwordexp, ifs, ifs_white); -@@ -2196,9 +2197,6 @@ parse_dquote (char **word, size_t *word_length, size_t *max_length, - break; - - case '`': -- if (flags & WRDE_NOCMD) -- return WRDE_CMDSUB; -- - ++(*offset); - error = parse_backtick (word, word_length, max_length, words, - offset, flags, NULL, NULL, NULL); -@@ -2357,12 +2355,6 @@ wordexp (const char *words, wordexp_t *pwordexp, int flags) - break; - - case '`': -- if (flags & WRDE_NOCMD) -- { -- error = WRDE_CMDSUB; -- goto do_error; -- } -- - ++words_offset; - error = parse_backtick (&word, &word_length, &max_length, words, - &words_offset, flags, pwordexp, ifs, diff --git a/src/patches/glibc/glibc-rh1172044.patch b/src/patches/glibc/glibc-rh1172044.patch deleted file mode 100644 index b1320a737..000000000 --- a/src/patches/glibc/glibc-rh1172044.patch +++ /dev/null @@ -1,154 +0,0 @@ -commit 41488498b6d9440ee66ab033808cce8323bba7ac -Author: Florian Weimer -Date: Wed Sep 3 19:45:43 2014 +0200 - - CVE-2014-6040: Crashes on invalid input in IBM gconv modules [BZ #17325] - - These changes are based on the fix for BZ #14134 in commit - 6e230d11837f3ae7b375ea69d7905f0d18eb79e5. - -diff --git a/iconvdata/Makefile b/iconvdata/Makefile -index 0a410a1..b6327d6 100644 ---- a/iconvdata/Makefile -+++ b/iconvdata/Makefile -@@ -297,6 +297,7 @@ $(objpfx)tst-iconv7.out: $(objpfx)gconv-modules \ - $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ - $(addprefix $(objpfx),$(modules.so)) \ - $(common-objdir)/iconv/iconv_prog TESTS -+ iconv_modules="$(modules)" \ - $(SHELL) -e $< $(common-objdir) > $@ - - $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \ -diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c -index 0b5484f..cf80993 100644 ---- a/iconvdata/ibm1364.c -+++ b/iconvdata/ibm1364.c -@@ -221,7 +221,8 @@ enum - ++rp2; \ - \ - uint32_t res; \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (res = DB_TO_UCS4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ - { \ -diff --git a/iconvdata/ibm932.c b/iconvdata/ibm932.c -index f5dca59..aa69d65 100644 ---- a/iconvdata/ibm932.c -+++ b/iconvdata/ibm932.c -@@ -74,11 +74,12 @@ - } \ - \ - ch = (ch * 0x100) + inptr[1]; \ -+ /* ch was less than 0xfd. */ \ -+ assert (ch < 0xfd00); \ - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -- || __builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm932db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, '\1') == 0 && ch !=0)) \ - { \ -diff --git a/iconvdata/ibm933.c b/iconvdata/ibm933.c -index f46dfb5..461fb5e 100644 ---- a/iconvdata/ibm933.c -+++ b/iconvdata/ibm933.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm933db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm935.c b/iconvdata/ibm935.c -index a8e4e6c..132d816 100644 ---- a/iconvdata/ibm935.c -+++ b/iconvdata/ibm935.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm935db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm937.c b/iconvdata/ibm937.c -index 239be61..69b154d 100644 ---- a/iconvdata/ibm937.c -+++ b/iconvdata/ibm937.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm937db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm939.c b/iconvdata/ibm939.c -index 5d0db36..9936e2c 100644 ---- a/iconvdata/ibm939.c -+++ b/iconvdata/ibm939.c -@@ -162,7 +162,7 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm939db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm943.c b/iconvdata/ibm943.c -index be0c14f..c5d5742 100644 ---- a/iconvdata/ibm943.c -+++ b/iconvdata/ibm943.c -@@ -75,11 +75,12 @@ - } \ - \ - ch = (ch * 0x100) + inptr[1]; \ -+ /* ch was less than 0xfd. */ \ -+ assert (ch < 0xfd00); \ - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (rp2 == NULL, 0) \ -- || __builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm943db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, '\1') == 0 && ch !=0)) \ - { \ -diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh -index c98c929..5dfb69f 100755 ---- a/iconvdata/run-iconv-test.sh -+++ b/iconvdata/run-iconv-test.sh -@@ -184,6 +184,24 @@ while read utf8 from filename; do - - done < TESTS2 - -+# Check for crashes in decoders. -+printf '\016\377\377\377\377\377\377\377' > $temp1 -+for from in $iconv_modules ; do -+ echo $ac_n "test decoder $from $ac_c" -+ PROG=`eval echo $ICONV` -+ if $PROG < $temp1 >/dev/null 2>&1 ; then -+ : # fall through -+ else -+ status=$? -+ if test $status -gt 1 ; then -+ echo "/FAILED" -+ failed=1 -+ continue -+ fi -+ fi -+ echo "OK" -+done -+ - exit $failed - # Local Variables: - # mode:shell-script diff --git a/src/patches/glibc/glibc-rh1176907.patch b/src/patches/glibc/glibc-rh1176907.patch deleted file mode 100644 index 29cdacfc0..000000000 --- a/src/patches/glibc/glibc-rh1176907.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 7d81e8d6db95c112c297930a8f2f9617c305529a -Author: Florian Weimer -Date: Tue Dec 23 16:16:32 2014 +0100 - - iconvdata/run-iconv-test.sh: Actually test iconv modules - - Arjun Shankar noticed that this test case was not testing anything - because iconv was invoked without the required arguments. - -diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh -index 5dfb69f..1d0bf52 100755 ---- a/iconvdata/run-iconv-test.sh -+++ b/iconvdata/run-iconv-test.sh -@@ -189,7 +189,7 @@ printf '\016\377\377\377\377\377\377\377' > $temp1 - for from in $iconv_modules ; do - echo $ac_n "test decoder $from $ac_c" - PROG=`eval echo $ICONV` -- if $PROG < $temp1 >/dev/null 2>&1 ; then -+ if $PROG -f $from -t UTF8 < $temp1 >/dev/null 2>&1 ; then - : # fall through - else - status=$? diff --git a/src/patches/glibc/glibc-rh1183534.patch b/src/patches/glibc/glibc-rh1183534.patch deleted file mode 100644 index eab7a3fa4..000000000 --- a/src/patches/glibc/glibc-rh1183534.patch +++ /dev/null @@ -1,223 +0,0 @@ -commit d5dd6189d506068ed11c8bfa1e1e9bffde04decd -Author: Andreas Schwab -Date: Mon Jan 21 17:41:28 2013 +0100 - - Fix parsing of numeric hosts in gethostbyname_r - -diff --git a/nss/Makefile b/nss/Makefile -index 449a258..553eafa 100644 ---- a/nss/Makefile -+++ b/nss/Makefile -@@ -37,7 +37,7 @@ install-bin := getent makedb - others := getent - install-bin := getent - --tests = test-netdb tst-nss-test1 -+tests = test-netdb tst-nss-test1 test-digits-dots - xtests = bug-erange - - include ../Makeconfig -diff --git a/nss/digits_dots.c b/nss/digits_dots.c -index 2b86295..e007ef4 100644 ---- a/nss/digits_dots.c -+++ b/nss/digits_dots.c -@@ -46,7 +46,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - { - if (h_errnop) - *h_errnop = NETDB_INTERNAL; -- *result = NULL; -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_TRYAGAIN; -+ else -+ *result = NULL; - return -1; - } - -@@ -83,14 +86,16 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - } - - size_needed = (sizeof (*host_addr) -- + sizeof (*h_addr_ptrs) + strlen (name) + 1); -+ + sizeof (*h_addr_ptrs) -+ + sizeof (*h_alias_ptr) + strlen (name) + 1); - - if (buffer_size == NULL) - { - if (buflen < size_needed) - { -+ *status = NSS_STATUS_TRYAGAIN; - if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -+ *h_errnop = NETDB_INTERNAL; - __set_errno (ERANGE); - goto done; - } -@@ -109,7 +114,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - *buffer_size = 0; - __set_errno (save); - if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -+ *h_errnop = NETDB_INTERNAL; - *result = NULL; - goto done; - } -@@ -149,7 +154,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (! ok) - { - *h_errnop = HOST_NOT_FOUND; -- if (buffer_size) -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else - *result = NULL; - goto done; - } -@@ -190,7 +197,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (buffer_size == NULL) - *status = NSS_STATUS_SUCCESS; - else -- *result = resbuf; -+ *result = resbuf; - goto done; - } - -@@ -201,15 +208,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - - if ((isxdigit (name[0]) && strchr (name, ':') != NULL) || name[0] == ':') - { -- const char *cp; -- char *hostname; -- typedef unsigned char host_addr_t[16]; -- host_addr_t *host_addr; -- typedef char *host_addr_list_t[2]; -- host_addr_list_t *h_addr_ptrs; -- size_t size_needed; -- int addr_size; -- - switch (af) - { - default: -@@ -225,7 +223,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - /* This is not possible. We cannot represent an IPv6 address - in an `struct in_addr' variable. */ - *h_errnop = HOST_NOT_FOUND; -- *result = NULL; -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else -+ *result = NULL; - goto done; - - case AF_INET6: -@@ -233,42 +234,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - break; - } - -- size_needed = (sizeof (*host_addr) -- + sizeof (*h_addr_ptrs) + strlen (name) + 1); -- -- if (buffer_size == NULL && buflen < size_needed) -- { -- if (h_errnop != NULL) -- *h_errnop = TRY_AGAIN; -- __set_errno (ERANGE); -- goto done; -- } -- else if (buffer_size != NULL && *buffer_size < size_needed) -- { -- char *new_buf; -- *buffer_size = size_needed; -- new_buf = realloc (*buffer, *buffer_size); -- -- if (new_buf == NULL) -- { -- save = errno; -- free (*buffer); -- __set_errno (save); -- *buffer = NULL; -- *buffer_size = 0; -- *result = NULL; -- goto done; -- } -- *buffer = new_buf; -- } -- -- memset (*buffer, '\0', size_needed); -- -- host_addr = (host_addr_t *) *buffer; -- h_addr_ptrs = (host_addr_list_t *) -- ((char *) host_addr + sizeof (*host_addr)); -- hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs); -- - for (cp = name;; ++cp) - { - if (!*cp) -@@ -281,7 +246,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, - if (inet_pton (AF_INET6, name, host_addr) <= 0) - { - *h_errnop = HOST_NOT_FOUND; -- if (buffer_size) -+ if (buffer_size == NULL) -+ *status = NSS_STATUS_NOTFOUND; -+ else - *result = NULL; - goto done; - } -diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c -index 1067744..44d00f4 100644 ---- a/nss/getXXbyYY_r.c -+++ b/nss/getXXbyYY_r.c -@@ -179,6 +179,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, - case -1: - return errno; - case 1: -+#ifdef NEED_H_ERRNO -+ any_service = true; -+#endif - goto done; - } - #endif -diff --git a/nss/test-digits-dots.c b/nss/test-digits-dots.c -new file mode 100644 -index 0000000..1efa344 ---- /dev/null -+++ b/nss/test-digits-dots.c -@@ -0,0 +1,38 @@ -+/* Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* Testcase for BZ #15014 */ -+ -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ char buf[32]; -+ struct hostent *result = NULL; -+ struct hostent ret; -+ int h_err = 0; -+ int err; -+ -+ err = gethostbyname_r ("1.2.3.4", &ret, buf, sizeof (buf), &result, &h_err); -+ return err == ERANGE && h_err == NETDB_INTERNAL ? EXIT_SUCCESS : EXIT_FAILURE; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh1195453-avx512.patch b/src/patches/glibc/glibc-rh1195453-avx512.patch deleted file mode 100644 index 4c70e5e1e..000000000 --- a/src/patches/glibc/glibc-rh1195453-avx512.patch +++ /dev/null @@ -1,481 +0,0 @@ -# -# Based on AVX-512 support for glibc, but heavaily modified for rhel-6.7. -# Without assembler support we drop all of the configure checks and simply -# output using .byte directives the minimal AVX512 instructsion required -# by the loader. Likewise testing is also impossible, so instead we use -# the Intel emulator running in `-skx` (Skylake Xeon) emulation mode and -# verify that a pre-built set of tests passes. -# -# commit 6986b98a18490e76b16911d1c6b1ba013598d40d -# Author: Ulrich Drepper -# Date: Wed Jul 20 14:20:00 2011 -0400 -# -# Force :a_x86_64_ymm to be 16-byte aligned -# -# commit aa4de9cea5c07d43caeaca9722c2d417e9a2919c -# Author: H.J. Lu -# Date: Fri Mar 14 08:51:25 2014 -0700 -# -# Check AVX-512 assembler support first -# -# It checks AVX-512 assembler support first and sets libc_cv_cc_avx512 to -# $libc_cv_asm_avx512, instead of yes. GCC won't support AVX-512 if -# assembler doesn't support it. -# -# * sysdeps/x86_64/configure.ac: Check AVX-512 assembler support -# first. Disable AVX-512 GCC support if assembler doesn't support -# it. -# * sysdeps/x86_64/configure: Regenerated. -# -# commit 2d63a517e4084ec80403cd9f278690fa8b676cc4 -# Author: Igor Zamyatin -# Date: Thu Mar 13 11:10:22 2014 -0700 -# -# Save and restore AVX-512 zmm registers to x86-64 ld.so -# -# AVX-512 ISA adds 512-bit zmm registers. This patch updates -# _dl_runtime_profile to pass zmm registers to run-time audit. It also -# changes _dl_x86_64_save_sse and _dl_x86_64_restore_sse to upport zmm -# registers, which are called when only when RTLD_PREPARE_FOREIGN_CALL -# is used. Its performance impact is minimum. -# -# * config.h.in (HAVE_AVX512_SUPPORT): New #undef. -# (HAVE_AVX512_ASM_SUPPORT): Likewise. -# * sysdeps/x86_64/bits/link.h (La_x86_64_zmm): New. -# (La_x86_64_vector): Add zmm. -# * sysdeps/x86_64/Makefile (tests): Add tst-audit10. -# (modules-names): Add tst-auditmod10a and tst-auditmod10b. -# ($(objpfx)tst-audit10): New target. -# ($(objpfx)tst-audit10.out): Likewise. -# (tst-audit10-ENV): New. -# (AVX512-CFLAGS): Likewise. -# (CFLAGS-tst-audit10.c): Likewise. -# (CFLAGS-tst-auditmod10a.c): Likewise. -# (CFLAGS-tst-auditmod10b.c): Likewise. -# * sysdeps/x86_64/configure.ac: Set config-cflags-avx512, -# HAVE_AVX512_SUPPORT and HAVE_AVX512_ASM_SUPPORT. -# * sysdeps/x86_64/configure: Regenerated. -# * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Add -# AVX-512 zmm register support. -# (_dl_x86_64_save_sse): Likewise. -# (_dl_x86_64_restore_sse): Likewise. -# * sysdeps/x86_64/dl-trampoline.h: Updated to support different -# size vector registers. -# * sysdeps/x86_64/link-defines.sym (YMM_SIZE): New. -# (ZMM_SIZE): Likewise. -# * sysdeps/x86_64/tst-audit10.c: New file. -# * sysdeps/x86_64/tst-auditmod10a.c: Likewise. -# * sysdeps/x86_64/tst-auditmod10b.c: Likewise. -# -# In addition adds: -# https://sourceware.org/ml/libc-alpha/2014-09/msg00228.html -# To extend zmm register checking. -# -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/bits/link.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/bits/link.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/bits/link.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/bits/link.h 2015-03-03 23:03:25.041829238 -0500 -@@ -65,7 +65,10 @@ - /* Registers for entry into PLT on x86-64. */ - # if __GNUC_PREREQ (4,0) - typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16))); --typedef float La_x86_64_ymm __attribute__ ((__vector_size__ (32))); -+typedef float La_x86_64_ymm __attribute__ ((__vector_size__ (32), -+ __aligned__ (16))); -+typedef double La_x86_64_zmm __attribute__ ((__vector_size__ (64), -+ __aligned__ (16))); - # else - typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__))); - # endif -@@ -74,9 +77,10 @@ - { - # if __GNUC_PREREQ (4,0) - La_x86_64_ymm ymm[2]; -+ La_x86_64_zmm zmm[1]; - # endif - La_x86_64_xmm xmm[4]; --} La_x86_64_vector __attribute__ ((aligned(16))); -+} La_x86_64_vector __attribute__ ((__aligned__(16))); - - typedef struct La_x86_64_regs - { -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h 2015-03-03 23:03:05.109457627 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.h 2015-03-03 23:06:58.434101818 -0500 -@@ -20,14 +20,26 @@ - - #ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ -- vmovdqu %ymm0, (LR_VECTOR_OFFSET)(%rsp) -- vmovdqu %ymm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) -- vmovdqu %ymm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) -- vmovdqu %ymm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) -- vmovdqu %ymm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) -- vmovdqu %ymm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) -- vmovdqu %ymm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) -- vmovdqu %ymm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ /* Restore AVX-512 registers. Use .byte becaues we lack assembler support. */ -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x44,0x24,0x03 # vmovdqu64 %zmm0,0xc0(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x4c,0x24,0x04 # vmovdqu64 %zmm1,0x100(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x54,0x24,0x05 # vmovdqu64 %zmm2,0x140(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x5c,0x24,0x06 # vmovdqu64 %zmm3,0x180(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x64,0x24,0x07 # vmovdqu64 %zmm4,0x1c0(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x6c,0x24,0x08 # vmovdqu64 %zmm5,0x200(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x74,0x24,0x09 # vmovdqu64 %zmm6,0x240(%rsp) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x7c,0x24,0x0a # vmovdqu64 %zmm7,0x280(%rsp) -+# else -+ VMOV %VEC(0), (LR_VECTOR_OFFSET)(%rsp) -+ VMOV %VEC(1), (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) -+ VMOV %VEC(2), (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) -+ VMOV %VEC(3), (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) -+ VMOV %VEC(4), (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) -+ VMOV %VEC(5), (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) -+ VMOV %VEC(6), (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) -+ VMOV %VEC(7), (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) -+# endif - - /* Save xmm0-xmm7 registers to detect if any of them are - changed by audit module. */ -@@ -73,7 +85,11 @@ - je 2f - vmovdqa %xmm0, (LR_VECTOR_OFFSET)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET)(%rsp), %ymm0 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x44,0x24,0x03 # vmovdqu64 0xc0(%rsp),%zmm0 -+# else -+2: VMOV (LR_VECTOR_OFFSET)(%rsp), %VEC(0) -+# endif - vmovdqa %xmm0, (LR_XMM_OFFSET)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm8 -@@ -82,7 +98,11 @@ - je 2f - vmovdqa %xmm1, (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp), %ymm1 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x4c,0x24,0x04 # vmovdqu64 0x100(%rsp),%zmm1 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE)(%rsp), %VEC(1) -+# endif - vmovdqa %xmm1, (LR_XMM_OFFSET + XMM_SIZE)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*2)(%rsp), %xmm2, %xmm8 -@@ -91,7 +111,11 @@ - je 2f - vmovdqa %xmm2, (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp), %ymm2 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x54,0x24,0x05 # vmovdqu64 0x140(%rsp),%zmm2 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*2)(%rsp), %VEC(2) -+# endif - vmovdqa %xmm2, (LR_XMM_OFFSET + XMM_SIZE*2)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*3)(%rsp), %xmm3, %xmm8 -@@ -100,7 +124,11 @@ - je 2f - vmovdqa %xmm3, (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp), %ymm3 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x5c,0x24,0x06 # vmovdqu64 0x180(%rsp),%zmm3 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*3)(%rsp), %VEC(3) -+# endif - vmovdqa %xmm3, (LR_XMM_OFFSET + XMM_SIZE*3)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*4)(%rsp), %xmm4, %xmm8 -@@ -109,7 +137,11 @@ - je 2f - vmovdqa %xmm4, (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp), %ymm4 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x64,0x24,0x07 # vmovdqu64 0x1c0(%rsp),%zmm4 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*4)(%rsp), %VEC(4) -+# endif - vmovdqa %xmm4, (LR_XMM_OFFSET + XMM_SIZE*4)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*5)(%rsp), %xmm5, %xmm8 -@@ -118,7 +150,11 @@ - je 2f - vmovdqa %xmm5, (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp), %ymm5 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x6c,0x24,0x08 # vmovdqu64 0x200(%rsp),%zmm5 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*5)(%rsp), %VEC(5) -+# endif - vmovdqa %xmm5, (LR_XMM_OFFSET + XMM_SIZE*5)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*6)(%rsp), %xmm6, %xmm8 -@@ -127,7 +163,11 @@ - je 2f - vmovdqa %xmm6, (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp), %ymm6 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x74,0x24,0x09 # vmovdqu64 0x240(%rsp),%zmm6 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*6)(%rsp), %VEC(6) -+# endif - vmovdqa %xmm6, (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp) - - 1: vpcmpeqq (LR_SIZE + XMM_SIZE*7)(%rsp), %xmm7, %xmm8 -@@ -136,7 +176,11 @@ - je 2f - vmovdqa %xmm7, (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp) - jmp 1f --2: vmovdqu (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp), %ymm7 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+2: .byte 0x62,0xf1,0xfe,0x48,0x6f,0x7c,0x24,0x0a # vmovdqu64 0x280(%rsp),%zmm7 -+# else -+2: VMOV (LR_VECTOR_OFFSET + VECTOR_SIZE*7)(%rsp), %VEC(7) -+# endif - vmovdqa %xmm7, (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp) - - 1: -@@ -214,8 +258,13 @@ - - #ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ -- vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) -- vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x81,0x50,0x00,0x00,0x00 # vmovdqu64 %zmm0,0x50(%rcx) -+ .byte 0x62,0xf1,0xfe,0x48,0x7f,0x89,0x90,0x00,0x00,0x00 # vmovdqu64 %zmm1,0x90(%rcx) -+# else -+ VMOV %VEC(0), LRV_VECTOR0_OFFSET(%rcx) -+ VMOV %VEC(1), LRV_VECTOR1_OFFSET(%rcx) -+# endif - - /* Save xmm0/xmm1 registers to detect if they are changed - by audit module. */ -@@ -244,13 +293,21 @@ - vpmovmskb %xmm2, %esi - cmpl $0xffff, %esi - jne 1f -- vmovdqu LRV_VECTOR0_OFFSET(%rsp), %ymm0 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x6f,0x84,0x24,0x50,0x00,0x00,0x00 # vmovdqu64 0x50(%rsp),%zmm0 -+# else -+ VMOV LRV_VECTOR0_OFFSET(%rsp), %VEC(0) -+# endif - - 1: vpcmpeqq (LRV_SIZE + XMM_SIZE)(%rsp), %xmm1, %xmm2 - vpmovmskb %xmm2, %esi - cmpl $0xffff, %esi - jne 1f -- vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 -+# if HAVE_NO_AVX512_ASM_SUPPORT -+ .byte 0x62,0xf1,0xfe,0x48,0x6f,0x8c,0x24,0x90,0x00,0x00,0x00 # vmovdqu64 0x90(%rsp),%zmm1 -+# else -+ VMOV LRV_VECTOR1_OFFSET(%rsp), %VEC(1) -+# endif - - 1: - #endif -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.S ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S 2015-03-03 23:03:05.108457659 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-trampoline.S 2015-03-03 23:07:31.799049953 -0500 -@@ -134,7 +134,7 @@ - .previous - - cmpl $0, L(have_avx)(%rip) -- jne 1f -+ jne L(defined) - movq %rbx, %r11 # Save rbx - movl $1, %eax - cpuid -@@ -143,18 +143,51 @@ - // AVX and XSAVE supported? - andl $((1 << 28) | (1 << 27)), %ecx - cmpl $((1 << 28) | (1 << 27)), %ecx -- jne 2f -+ jne 10f -+ // AVX512 supported in processor? -+ movq %rbx, %r11 # Save rbx -+ xorl %ecx, %ecx -+ mov $0x7, %eax -+ cpuid -+ andl $(1 << 16), %ebx - xorl %ecx, %ecx - // Get XFEATURE_ENABLED_MASK - xgetbv -- andl $0x6, %eax --2: subl $0x5, %eax -+ test %ebx, %ebx -+ movq %r11, %rbx # Restore rbx -+ je 20f -+ // Verify that XCR0[7:5] = '111b' and -+ // XCR0[2:1] = '11b' which means -+ // that zmm state is enabled -+ andl $0xe6, %eax -+ cmpl $0xe6, %eax -+ jne 20f -+ movl %eax, L(have_avx)(%rip) -+L(avx512): -+# define RESTORE_AVX -+# define HAVE_NO_AVX512_ASM_SUPPORT 1 -+# define VMOV vmovdqu64 -+# define VEC(i) zmm##i -+# define MORE_CODE -+# include "dl-trampoline.h" -+# undef VMOV -+# undef VEC -+# undef RESTORE_AVX -+# undef HAVE_NO_AVX512_ASM_SUPPORT -+20: andl $0x6, %eax -+10: subl $0x5, %eax - movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - --1: js L(no_avx) -+L(defined): -+ js L(no_avx) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512) -+ - - # define RESTORE_AVX -+# define VMOV vmovdqu -+# define VEC(i) ymm##i - # define MORE_CODE - # include "dl-trampoline.h" - -@@ -178,7 +211,7 @@ - _dl_x86_64_save_sse: - # ifdef HAVE_AVX_SUPPORT - cmpl $0, L(have_avx)(%rip) -- jne 1f -+ jne L(defined_5) - movq %rbx, %r11 # Save rbx - movl $1, %eax - cpuid -@@ -187,21 +220,37 @@ - // AVX and XSAVE supported? - andl $((1 << 28) | (1 << 27)), %ecx - cmpl $((1 << 28) | (1 << 27)), %ecx -- jne 2f -+ jne 1f -+ // AVX512 supported in a processor? -+ movq %rbx, %r11 # Save rbx -+ xorl %ecx,%ecx -+ mov $0x7,%eax -+ cpuid -+ andl $(1 << 16), %ebx - xorl %ecx, %ecx - // Get XFEATURE_ENABLED_MASK - xgetbv -- andl $0x6, %eax -- cmpl $0x6, %eax -- // Nonzero if SSE and AVX state saving is enabled. -- sete %al --2: leal -1(%eax,%eax), %eax -+ test %ebx, %ebx -+ movq %r11, %rbx # Restore rbx -+ je 2f -+ // Verify that XCR0[7:5] = '111b' and -+ // XCR0[2:1] = '11b' which means -+ // that zmm state is enabled -+ andl $0xe6, %eax - movl %eax, L(have_avx)(%rip) -- cmpl $0, %eax -+ cmpl $0xe6, %eax -+ je L(avx512_5) - --1: js L(no_avx5) -+2: andl $0x6, %eax -+1: subl $0x5, %eax -+ movl %eax, L(have_avx)(%rip) -+ cmpl $0, %eax - --# define YMM_SIZE 32 -+L(defined_5): -+ js L(no_avx5) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512_5) -+ - vmovdqa %ymm0, %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE - vmovdqa %ymm1, %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE - vmovdqa %ymm2, %fs:RTLD_SAVESPACE_SSE+2*YMM_SIZE -@@ -211,6 +260,26 @@ - vmovdqa %ymm6, %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE - vmovdqa %ymm7, %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE - ret -+L(avx512_5): -+# Original instructions: -+# vmovdqu64 %zmm0, %fs:RTLD_SAVESPACE_SSE+0*ZMM_SIZE -+# vmovdqu64 %zmm1, %fs:RTLD_SAVESPACE_SSE+1*ZMM_SIZE -+# vmovdqu64 %zmm2, %fs:RTLD_SAVESPACE_SSE+2*ZMM_SIZE -+# vmovdqu64 %zmm3, %fs:RTLD_SAVESPACE_SSE+3*ZMM_SIZE -+# vmovdqu64 %zmm4, %fs:RTLD_SAVESPACE_SSE+4*ZMM_SIZE -+# vmovdqu64 %zmm5, %fs:RTLD_SAVESPACE_SSE+5*ZMM_SIZE -+# vmovdqu64 %zmm6, %fs:RTLD_SAVESPACE_SSE+6*ZMM_SIZE -+# vmovdqu64 %zmm7, %fs:RTLD_SAVESPACE_SSE+7*ZMM_SIZE -+# Assembled instructions: -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x04,0x25,0x80,0x00,0x00,0x00 # vmovdqu64 %zmm0,%fs:0x80 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x0c,0x25,0xc0,0x00,0x00,0x00 # vmovdqu64 %zmm1,%fs:0xc0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x14,0x25,0x00,0x01,0x00,0x00 # vmovdqu64 %zmm2,%fs:0x100 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x1c,0x25,0x40,0x01,0x00,0x00 # vmovdqu64 %zmm3,%fs:0x140 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x24,0x25,0x80,0x01,0x00,0x00 # vmovdqu64 %zmm4,%fs:0x180 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x2c,0x25,0xc0,0x01,0x00,0x00 # vmovdqu64 %zmm5,%fs:0x1c0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x34,0x25,0x00,0x02,0x00,0x00 # vmovdqu64 %zmm6,%fs:0x200 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x7f,0x3c,0x25,0x40,0x02,0x00,0x00 # vmovdqu64 %zmm7,%fs:0x240 -+ ret - L(no_avx5): - # endif - movdqa %xmm0, %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE -@@ -234,6 +303,8 @@ - # ifdef HAVE_AVX_SUPPORT - cmpl $0, L(have_avx)(%rip) - js L(no_avx6) -+ cmpl $0xe6, L(have_avx)(%rip) -+ je L(avx512_6) - - vmovdqa %fs:RTLD_SAVESPACE_SSE+0*YMM_SIZE, %ymm0 - vmovdqa %fs:RTLD_SAVESPACE_SSE+1*YMM_SIZE, %ymm1 -@@ -244,6 +315,26 @@ - vmovdqa %fs:RTLD_SAVESPACE_SSE+6*YMM_SIZE, %ymm6 - vmovdqa %fs:RTLD_SAVESPACE_SSE+7*YMM_SIZE, %ymm7 - ret -+L(avx512_6): -+# Original instructions: -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+0*ZMM_SIZE, %zmm0 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+1*ZMM_SIZE, %zmm1 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+2*ZMM_SIZE, %zmm2 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+3*ZMM_SIZE, %zmm3 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+4*ZMM_SIZE, %zmm4 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+5*ZMM_SIZE, %zmm5 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+6*ZMM_SIZE, %zmm6 -+# vmovdqu64 %fs:RTLD_SAVESPACE_SSE+7*ZMM_SIZE, %zmm7 -+# Assembled instructions: -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x04,0x25,0x80,0x00,0x00,0x00 # vmovdqu64 %fs:0x80,%zmm0 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x0c,0x25,0xc0,0x00,0x00,0x00 # vmovdqu64 %fs:0xc0,%zmm1 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x14,0x25,0x00,0x01,0x00,0x00 # vmovdqu64 %fs:0x100,%zmm2 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x1c,0x25,0x40,0x01,0x00,0x00 # vmovdqu64 %fs:0x140,%zmm3 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x24,0x25,0x80,0x01,0x00,0x00 # vmovdqu64 %fs:0x180,%zmm4 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x2c,0x25,0xc0,0x01,0x00,0x00 # vmovdqu64 %fs:0x1c0,%zmm5 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x34,0x25,0x00,0x02,0x00,0x00 # vmovdqu64 %fs:0x200,%zmm6 -+ .byte 0x64,0x62,0xf1,0xfe,0x48,0x6f,0x3c,0x25,0x40,0x02,0x00,0x00 # vmovdqu64 %fs:0x240,%zmm7 -+ ret - L(no_avx6): - # endif - movdqa %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE, %xmm0 -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/link-defines.sym glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/link-defines.sym ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/link-defines.sym 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/link-defines.sym 2015-03-03 23:03:25.042829206 -0500 -@@ -4,6 +4,8 @@ - -- - VECTOR_SIZE sizeof (La_x86_64_vector) - XMM_SIZE sizeof (La_x86_64_xmm) -+YMM_SIZE sizeof (La_x86_64_ymm) -+ZMM_SIZE sizeof (La_x86_64_zmm) - - LR_SIZE sizeof (struct La_x86_64_regs) - LR_RDX_OFFSET offsetof (struct La_x86_64_regs, lr_rdx) diff --git a/src/patches/glibc/glibc-rh1207236.patch b/src/patches/glibc/glibc-rh1207236.patch deleted file mode 100644 index 5671fd87d..000000000 --- a/src/patches/glibc/glibc-rh1207236.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-04-10 12:02:54.011106386 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-04-10 12:02:35.867958292 +0530 -@@ -5850,7 +5850,7 @@ _int_valloc(av, bytes) mstate av; size_t - #endif - { - /* Ensure initialization/consolidation */ -- if (have_fastchunks(av)) malloc_consolidate(av); -+ if (av && have_fastchunks(av)) malloc_consolidate(av); - return _int_memalign(av, mp_.pagesize, bytes); - } - diff --git a/src/patches/glibc/glibc-rh1209376.patch b/src/patches/glibc/glibc-rh1209376.patch deleted file mode 100644 index 74393f039..000000000 --- a/src/patches/glibc/glibc-rh1209376.patch +++ /dev/null @@ -1,18 +0,0 @@ -@@ -, +, @@ - resolv/nss_dns/dns-host.c:getanswer_r. ---- - resolv/nss_dns/dns-host.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) ---- a/resolv/nss_dns/dns-host.c -+++ a/resolv/nss_dns/dns-host.c -@@ -615,7 +615,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, - int have_to_map = 0; - uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); - buffer += pad; -- if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) -+ buflen = buflen > pad ? buflen - pad : 0; -+ if (__builtin_expect (buflen < sizeof (struct host_data), 0)) - { - /* The buffer is too small. */ - too_small: --- diff --git a/src/patches/glibc/glibc-rh1217186.patch b/src/patches/glibc/glibc-rh1217186.patch deleted file mode 100644 index 6c6c3934e..000000000 --- a/src/patches/glibc/glibc-rh1217186.patch +++ /dev/null @@ -1,65 +0,0 @@ -# -# Author: Carlos O'Donell -# Upstream status: Needs to go upstream (2015-05-07) -# -diff --git a/inet/rcmd.c b/inet/rcmd.c -index acacaa0..9f2443b 100644 ---- a/inet/rcmd.c -+++ b/inet/rcmd.c -@@ -803,29 +803,38 @@ __validuser2_sa(hostf, ra, ralen, luser, ruser, rhost) - *p = '\0'; /* terminate username (+host?) */ - - /* buf -> host(?) ; user -> username(?) */ -+ if (*buf == '\0') -+ break; -+ if (*user == '\0') -+ user = luser; -+ -+ /* First check the user part. This is an optimization, since -+ one should always check the host first in order to detect -+ negative host checks (which we check for later). */ -+ ucheck = __icheckuser (user, ruser); -+ -+ /* Either we found the user, or we didn't and this is a -+ negative host check. We must do the negative host lookup -+ in order to preserve the semantics of stopping on this line -+ before processing others. */ -+ if (ucheck != 0 || *buf == '-') { -+ -+ /* Next check host part */ -+ hcheck = __checkhost_sa (ra, ralen, buf, rhost); -+ -+ /* Negative '-host user(?)' match? */ -+ if (hcheck < 0) -+ break; - -- /* First check host part */ -- hcheck = __checkhost_sa (ra, ralen, buf, rhost); -- -- if (hcheck < 0) -- break; -- -- if (hcheck) { -- /* Then check user part */ -- if (! (*user)) -- user = luser; -- -- ucheck = __icheckuser (user, ruser); -- -- /* Positive 'host user' match? */ -- if (ucheck > 0) { -+ /* Positive 'host user' match? */ -+ if (hcheck > 0 && ucheck > 0) { - retval = 0; - break; - } - -- /* Negative 'host -user' match? */ -- if (ucheck < 0) -- break; -+ /* Negative 'host -user' match? */ -+ if (hcheck > 0 && ucheck < 0) -+ break; - - /* Neither, go on looking for match */ - } diff --git a/src/patches/glibc/glibc-rh1256812-2.patch b/src/patches/glibc/glibc-rh1256812-2.patch deleted file mode 100644 index 5596de7bd..000000000 --- a/src/patches/glibc/glibc-rh1256812-2.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-07-28 22:28:22.517107147 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-07-28 22:24:59.541394493 +0530 -@@ -4087,8 +4087,9 @@ public_cALLOc(size_t n, size_t elem_size - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { - (void)mutex_unlock(&av->mutex); -- (void)mutex_lock(&main_arena.mutex); -- mem = _int_malloc(&main_arena, sz); -+ av = &main_arena; -+ (void)mutex_lock(&av->mutex); -+ mem = _int_malloc(av, sz); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ diff --git a/src/patches/glibc/glibc-rh1256812-3.patch b/src/patches/glibc/glibc-rh1256812-3.patch deleted file mode 100644 index e8fbb1b34..000000000 --- a/src/patches/glibc/glibc-rh1256812-3.patch +++ /dev/null @@ -1,138 +0,0 @@ -commit fdc0f374bcd2d0513569aa8d600f960e43e8af1d -Author: Ulrich Drepper -Date: Sun Oct 24 22:37:00 2010 -0400 - - Fix perturbing in malloc on free. - -commit e8349efd466cfedc0aa98be61d88ca8795c9e565 -Author: OndÅ™ej Bílka -Date: Mon Dec 9 17:25:19 2013 +0100 - - Simplify perturb_byte logic. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 4821deb..ac8c3f6 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -1870,8 +1870,20 @@ static int check_action = DEFAULT_CHECK_ACTION; - - static int perturb_byte; - --#define alloc_perturb(p, n) memset (p, (perturb_byte ^ 0xff) & 0xff, n) --#define free_perturb(p, n) memset (p, perturb_byte & 0xff, n) -+static inline void -+alloc_perturb (char *p, size_t n) -+{ -+ if (__glibc_unlikely (perturb_byte)) -+ memset (p, perturb_byte ^ 0xff, n); -+} -+ -+static inline void -+free_perturb (char *p, size_t n) -+{ -+ if (__glibc_unlikely (perturb_byte)) -+ memset (p, perturb_byte, n); -+} -+ - - - /* ------------------- Support for multiple arenas -------------------- */ -@@ -3287,8 +3299,7 @@ _int_malloc(mstate av, size_t bytes) - #endif - check_remalloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3323,8 +3334,7 @@ _int_malloc(mstate av, size_t bytes) - victim->size |= NON_MAIN_ARENA; - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3403,8 +3413,7 @@ _int_malloc(mstate av, size_t bytes) - - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3420,8 +3429,7 @@ _int_malloc(mstate av, size_t bytes) - victim->size |= NON_MAIN_ARENA; - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3545,8 +3553,7 @@ _int_malloc(mstate av, size_t bytes) - } - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3649,8 +3656,7 @@ _int_malloc(mstate av, size_t bytes) - } - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - } -@@ -3684,8 +3690,7 @@ _int_malloc(mstate av, size_t bytes) - - check_malloced_chunk(av, victim, nb); - void *p = chunk2mem(victim); -- if (__builtin_expect (perturb_byte, 0)) -- alloc_perturb (p, bytes); -+ alloc_perturb (p, bytes); - return p; - } - -@@ -3705,7 +3710,7 @@ _int_malloc(mstate av, size_t bytes) - */ - else { - void *p = sYSMALLOc(nb, av); -- if (p != NULL && __builtin_expect (perturb_byte, 0)) -+ if (p != NULL) - alloc_perturb (p, bytes); - return p; - } -@@ -3798,8 +3803,7 @@ _int_free(mstate av, mchunkptr p, int have_lock) - #endif - } - -- if (__builtin_expect (perturb_byte, 0)) -- free_perturb (chunk2mem(p), size - SIZE_SZ); -+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ); - - set_fastchunks(av); - unsigned int idx = fastbin_index(size); -@@ -3881,8 +3885,7 @@ _int_free(mstate av, mchunkptr p, int have_lock) - goto errout; - } - -- if (__builtin_expect (perturb_byte, 0)) -- free_perturb (chunk2mem(p), size - SIZE_SZ); -+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ); - - /* consolidate backward */ - if (!prev_inuse(p)) { diff --git a/src/patches/glibc/glibc-rh1256812-4.patch b/src/patches/glibc/glibc-rh1256812-4.patch deleted file mode 100644 index 1e497f327..000000000 --- a/src/patches/glibc/glibc-rh1256812-4.patch +++ /dev/null @@ -1,45 +0,0 @@ -commit 55765a349a96482207fbf927d3666a51878f973b -Author: Josef Bacik -Date: Wed Aug 19 14:06:56 2015 +0530 - - Don't fall back to mmap if the original arena is not corrupt - - The new logic to find an uncontended non-corrupt arena misses a case - where the current arena is contended, but is not corrupt. In the - degenerate case, this is the only arena. In both cases, the logic - falls back to using mmap despite there being an available arena. - - Attached patch by Josef Bacik makes sure that all arenas are indeed - corrupt before falling back to malloc. Verified on x86_64. - - * malloc/arena.c (reused_arena): return NULL only if all - arenas are corrupt. - -diff --git a/malloc/arena.c b/malloc/arena.c -index 21ecc5a1..0424273 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -823,16 +823,21 @@ reused_arena (mstate avoid_arena) - - /* Make sure that the arena we get is not corrupted. */ - mstate begin = result; -+ bool looped = false; -+ - while (arena_is_corrupt (result)) - { - result = result->next; - if (result == begin) -- break; -+ { -+ looped = true; -+ break; -+ } - } - - /* We could not find any arena that was either not corrupted or not the one - we wanted to avoid. */ -- if (result == begin) -+ if (looped) - return NULL; - - /* No arena available without contention. Wait for the next in line. */ diff --git a/src/patches/glibc/glibc-rh1256812.patch b/src/patches/glibc/glibc-rh1256812.patch deleted file mode 100644 index 1eafcc17b..000000000 --- a/src/patches/glibc/glibc-rh1256812.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.v2/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-07-24 19:29:37.679907396 +0530 -+++ glibc-2.12-2-gc4ccff1.v2/malloc/malloc.c 2015-07-24 18:59:59.928055174 +0530 -@@ -3737,8 +3737,7 @@ public_mALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- victim = _int_malloc(ar_ptr, bytes); -+ victim = _int_malloc(ar_ptr, bytes); - #endif - } - } -@@ -3968,8 +3967,7 @@ public_mEMALIGn(size_t alignment, size_t - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, alignment, bytes); -+ p = _int_memalign(ar_ptr, alignment, bytes); - #endif - } - } -@@ -4024,8 +4022,7 @@ public_vALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, pagesz, bytes); -+ p = _int_memalign(ar_ptr, pagesz, bytes); - #endif - } - } -@@ -4080,8 +4077,7 @@ public_pVALLOc(size_t bytes) - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); -- if(ar_ptr) -- p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -+ p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - #endif - } - } -@@ -4180,11 +4176,9 @@ public_cALLOc(size_t n, size_t elem_size - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); - av = arena_get2(prev, sz, true); -- if(av) -- mem = _int_malloc(av, sz); -+ mem = _int_malloc(av, sz); - #endif - } -- if (mem == 0) return 0; - } - - if (av != NULL) diff --git a/src/patches/glibc/glibc-rh1256890.patch b/src/patches/glibc/glibc-rh1256890.patch deleted file mode 100644 index 4683dc40c..000000000 --- a/src/patches/glibc/glibc-rh1256890.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/malloc/malloc.c glibc-2.12-2-gc4ccff1.new/malloc/malloc.c ---- glibc-2.12-2-gc4ccff1/malloc/malloc.c 2015-08-19 23:13:52.826205930 +0530 -+++ glibc-2.12-2-gc4ccff1.new/malloc/malloc.c 2015-08-19 23:13:40.021049289 +0530 -@@ -5867,7 +5867,7 @@ _int_pvalloc(av, bytes) mstate av, size_ - size_t pagesz; - - /* Ensure initialization/consolidation */ -- if (have_fastchunks(av)) malloc_consolidate(av); -+ if (av && have_fastchunks(av)) malloc_consolidate(av); - pagesz = mp_.pagesize; - return _int_memalign(av, pagesz, (bytes + pagesz - 1) & ~(pagesz - 1)); - } diff --git a/src/patches/glibc/glibc-rh1256891.patch b/src/patches/glibc/glibc-rh1256891.patch deleted file mode 100644 index 5364dba0a..000000000 --- a/src/patches/glibc/glibc-rh1256891.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 5c44738353ecaa1c81efca063ee8b55e092d7a43 -Author: Alexandre Oliva -Date: Wed Sep 5 15:43:04 2012 -0300 - - Don't change no_dyn_threshold on mallopt failure - - * malloc/malloc.c (__libc_mallopt) : Do not - change internal state upon failure. - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index bd562df..c69e281 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -4769,8 +4769,10 @@ int __libc_mallopt(int param_number, int value) - res = 0; - else - #endif -- mp_.mmap_threshold = value; -- mp_.no_dyn_threshold = 1; -+ { -+ mp_.mmap_threshold = value; -+ mp_.no_dyn_threshold = 1; -+ } - break; - - case M_MMAP_MAX: diff --git a/src/patches/glibc/glibc-rh1291270.patch b/src/patches/glibc/glibc-rh1291270.patch deleted file mode 100644 index 8d12d95e7..000000000 --- a/src/patches/glibc/glibc-rh1291270.patch +++ /dev/null @@ -1,41 +0,0 @@ -Description: Allow loading more libraries with static TLS. -Author: Carlos O'Donell -Origin: PATCH -Bug-RHEL: #1291270 (rhel-6.7.z), #1198802 (rhel-6.8), #1202952 (rhel-7.2) -Bug-Fedora: #1124987 (F21) -Bug-Upstream: #17090, #17620, #17621, #17628 (2.22) -Upstream status: not-needed -# -# The correct fix for this is already upstream and involves -# changing the heuristics for DTV slot increases. In RHEL6 -# we take the conservative approach and provide a larger -# slot surplus. This matches what was done in Fedora 21 before -# we had the upstream fix: f8aeae347377f3dfa8cbadde057adf1827fb1d44. -# In RHEL7 we have the upstream fix. This is fixed upstream as of -# glibc 2.22. -# -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -496,8 +496,18 @@ struct rtld_global - have to iterate beyond the first element in the slotinfo list. */ - #define TLS_SLOTINFO_SURPLUS (62) - --/* Number of additional slots in the dtv allocated. */ --#define DTV_SURPLUS (14) -+/* Number of additional allocated dtv slots. This was initially -+ 14, but problems with python, MESA, and X11's uses of static TLS meant -+ that most distributions were very close to this limit when they loaded -+ dynamically interpreted languages that used graphics. The simplest -+ solution was to roughly double the number of slots. The actual static -+ image space usage was relatively small, for example in MESA you -+ had only two dispatch pointers for a total of 16 bytes. If we hit up -+ against this limit again we should start a campaign with the -+ distributions to coordinate the usage of static TLS. Any user of this -+ resource is effectively coordinating a global resource since this -+ surplus is allocated for each thread at startup. */ -+#define DTV_SURPLUS (32) - - /* Initial dtv of the main thread, not allocated with normal malloc. */ - EXTERN void *_dl_initial_dtv; diff --git a/src/patches/glibc/glibc-rh1296031-0.patch b/src/patches/glibc/glibc-rh1296031-0.patch deleted file mode 100644 index d44e4911a..000000000 --- a/src/patches/glibc/glibc-rh1296031-0.patch +++ /dev/null @@ -1,465 +0,0 @@ -Sourceware bug 16574 - -commit d668061994a7486a3ba9c7d5e7882d85a2883707 -Author: Andreas Schwab -Date: Thu Feb 13 11:01:57 2014 +0100 - - Fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer - -commit ab7ac0f2cf8731fe4c3f3aea6088a7c0127b5725 -Author: OndÅ™ej Bílka -Date: Sun Feb 16 12:59:23 2014 +0100 - - Deduplicate resolv/nss_dns/dns-host.c - - In resolv/nss_dns/dns-host.c one of code path duplicated code after - that. We merge these paths. - -commit ab09bf616ad527b249aca5f2a4956fd526f0712f -Author: Andreas Schwab -Date: Tue Feb 18 10:57:25 2014 +0100 - - Properly fix memory leak in _nss_dns_gethostbyname4_r with big DNS answer - - Instead of trying to guess whether the second buffer needs to be freed - set a flag at the place it is allocated - -Index: glibc-2.12-2-gc4ccff1/include/resolv.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/resolv.h -+++ glibc-2.12-2-gc4ccff1/include/resolv.h -@@ -58,11 +58,11 @@ libc_hidden_proto (__res_randomid) - libc_hidden_proto (__res_state) - - int __libc_res_nquery (res_state, const char *, int, int, u_char *, int, -- u_char **, u_char **, int *, int *); -+ u_char **, u_char **, int *, int *, int *); - int __libc_res_nsearch (res_state, const char *, int, int, u_char *, int, -- u_char **, u_char **, int *, int *); -+ u_char **, u_char **, int *, int *, int *); - int __libc_res_nsend (res_state, const u_char *, int, const u_char *, int, -- u_char *, int, u_char **, u_char **, int *, int *) -+ u_char *, int, u_char **, u_char **, int *, int *, int *) - attribute_hidden; - - libresolv_hidden_proto (_sethtent) -Index: glibc-2.12-2-gc4ccff1/resolv/gethnamaddr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/gethnamaddr.c -+++ glibc-2.12-2-gc4ccff1/resolv/gethnamaddr.c -@@ -634,7 +634,7 @@ gethostbyname2(name, af) - buf.buf = origbuf = (querybuf *) alloca (1024); - - if ((n = __libc_res_nsearch(&_res, name, C_IN, type, buf.buf->buf, 1024, -- &buf.ptr, NULL, NULL, NULL)) < 0) { -+ &buf.ptr, NULL, NULL, NULL, NULL)) < 0) { - if (buf.buf != origbuf) - free (buf.buf); - Dprintf("res_nsearch failed (%d)\n", n); -@@ -729,12 +729,12 @@ gethostbyaddr(addr, len, af) - buf.buf = orig_buf = (querybuf *) alloca (1024); - - n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, 1024, -- &buf.ptr, NULL, NULL, NULL); -+ &buf.ptr, NULL, NULL, NULL, NULL); - if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) { - strcpy(qp, "ip6.int"); - n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, - buf.buf != orig_buf ? MAXPACKET : 1024, -- &buf.ptr, NULL, NULL, NULL); -+ &buf.ptr, NULL, NULL, NULL, NULL); - } - if (n < 0) { - if (buf.buf != orig_buf) -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-canon.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-canon.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-canon.c -@@ -62,7 +62,7 @@ _nss_dns_getcanonname_r (const char *nam - { - int r = __libc_res_nquery (&_res, name, ns_c_in, qtypes[i], - buf, sizeof (buf), &ansp.ptr, NULL, NULL, -- NULL); -+ NULL, NULL); - if (r > 0) - { - /* We need to decode the response. Just one question record. -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -191,7 +191,7 @@ _nss_dns_gethostbyname3_r (const char *n - host_buffer.buf = orig_host_buffer = (querybuf *) alloca (1024); - - n = __libc_res_nsearch (&_res, name, C_IN, type, host_buffer.buf->buf, -- 1024, &host_buffer.ptr, NULL, NULL, NULL); -+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL); - if (n < 0) - { - switch (errno) -@@ -221,7 +221,7 @@ _nss_dns_gethostbyname3_r (const char *n - n = __libc_res_nsearch (&_res, name, C_IN, T_A, host_buffer.buf->buf, - host_buffer.buf != orig_host_buffer - ? MAXPACKET : 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - - if (n < 0) - { -@@ -304,13 +304,20 @@ _nss_dns_gethostbyname4_r (const char *n - u_char *ans2p = NULL; - int nans2p = 0; - int resplen2 = 0; -+ int ans2p_malloced = 0; - - int olderr = errno; - enum nss_status status; - int n = __libc_res_nsearch (&_res, name, C_IN, T_UNSPEC, - host_buffer.buf->buf, 2048, &host_buffer.ptr, -- &ans2p, &nans2p, &resplen2); -- if (n < 0) -+ &ans2p, &nans2p, &resplen2, &ans2p_malloced); -+ if (n >= 0) -+ { -+ status = gaih_getanswer (host_buffer.buf, n, (const querybuf *) ans2p, -+ resplen2, name, pat, buffer, buflen, -+ errnop, herrnop, ttlp); -+ } -+ else - { - if (errno == ESRCH) - { -@@ -325,16 +332,11 @@ _nss_dns_gethostbyname4_r (const char *n - *errnop = EAGAIN; - else - __set_errno (olderr); -- -- if (host_buffer.buf != orig_host_buffer) -- free (host_buffer.buf); -- -- return status; - } - -- status = gaih_getanswer(host_buffer.buf, n, (const querybuf *) ans2p, -- resplen2, name, pat, buffer, buflen, -- errnop, herrnop, ttlp); -+ /* Check whether ans2p was separately allocated. */ -+ if (ans2p_malloced) -+ free (ans2p); - - if (host_buffer.buf != orig_host_buffer) - free (host_buffer.buf); -@@ -444,7 +446,7 @@ _nss_dns_gethostbyaddr2_r (const void *a - strcpy (qp, "].ip6.arpa"); - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, - host_buffer.buf->buf, 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - if (n >= 0) - goto got_it_already; - } -@@ -465,14 +467,14 @@ _nss_dns_gethostbyaddr2_r (const void *a - } - - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, -- 1024, &host_buffer.ptr, NULL, NULL, NULL); -+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL); - if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) - { - strcpy (qp, "ip6.int"); - n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, - host_buffer.buf != orig_host_buffer - ? MAXPACKET : 1024, &host_buffer.ptr, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - } - if (n < 0) - { -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-network.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-network.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-network.c -@@ -130,7 +130,7 @@ _nss_dns_getnetbyname_r (const char *nam - net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); - - anslen = __libc_res_nsearch (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf, -- 1024, &net_buffer.ptr, NULL, NULL, NULL); -+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL); - if (anslen < 0) - { - /* Nothing found. */ -@@ -206,7 +206,7 @@ _nss_dns_getnetbyaddr_r (uint32_t net, i - net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); - - anslen = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf, -- 1024, &net_buffer.ptr, NULL, NULL, NULL); -+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL); - if (anslen < 0) - { - /* Nothing found. */ -Index: glibc-2.12-2-gc4ccff1/resolv/res_query.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_query.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_query.c -@@ -98,7 +98,7 @@ static int - __libc_res_nquerydomain(res_state statp, const char *name, const char *domain, - int class, int type, u_char *answer, int anslen, - u_char **answerp, u_char **answerp2, int *nanswerp2, -- int *resplen2); -+ int *resplen2, int *answerp2_malloced); - - /* - * Formulate a normal query, send, and await answer. -@@ -119,7 +119,8 @@ __libc_res_nquery(res_state statp, - u_char **answerp, /* if buffer needs to be enlarged */ - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - HEADER *hp = (HEADER *) answer; - HEADER *hp2; -@@ -224,7 +225,8 @@ __libc_res_nquery(res_state statp, - } - assert (answerp == NULL || (void *) *answerp == (void *) answer); - n = __libc_res_nsend(statp, query1, nquery1, query2, nquery2, answer, -- anslen, answerp, answerp2, nanswerp2, resplen2); -+ anslen, answerp, answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (use_malloc) - free (buf); - if (n < 0) { -@@ -316,7 +318,7 @@ res_nquery(res_state statp, - int anslen) /* size of answer buffer */ - { - return __libc_res_nquery(statp, name, class, type, answer, anslen, -- NULL, NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nquery) - -@@ -335,7 +337,8 @@ __libc_res_nsearch(res_state statp, - u_char **answerp, - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - const char *cp, * const *domain; - HEADER *hp = (HEADER *) answer; -@@ -359,7 +362,7 @@ __libc_res_nsearch(res_state statp, - if (!dots && (cp = res_hostalias(statp, name, tmp, sizeof tmp))!= NULL) - return (__libc_res_nquery(statp, cp, class, type, answer, - anslen, answerp, answerp2, -- nanswerp2, resplen2)); -+ nanswerp2, resplen2, answerp2_malloced)); - - #ifdef DEBUG - if (statp->options & RES_DEBUG) -@@ -376,7 +379,8 @@ __libc_res_nsearch(res_state statp, - if (dots >= statp->ndots || trailing_dot) { - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, -- answerp2, nanswerp2, resplen2); -+ answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (ret > 0 || trailing_dot - /* If the second response is valid then we use that. */ - || (ret == 0 && resplen2 != NULL && *resplen2 > 0)) -@@ -387,12 +391,12 @@ __libc_res_nsearch(res_state statp, - answer = *answerp; - anslen = MAXPACKET; - } -- if (answerp2 -- && (*answerp2 < answer || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); - *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - } - -@@ -418,7 +422,7 @@ __libc_res_nsearch(res_state statp, - class, type, - answer, anslen, answerp, - answerp2, nanswerp2, -- resplen2); -+ resplen2, answerp2_malloced); - if (ret > 0 || (ret == 0 && resplen2 != NULL - && *resplen2 > 0)) - return (ret); -@@ -427,13 +431,12 @@ __libc_res_nsearch(res_state statp, - answer = *answerp; - anslen = MAXPACKET; - } -- if (answerp2 -- && (*answerp2 < answer -- || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); - *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - - /* -@@ -489,7 +492,8 @@ __libc_res_nsearch(res_state statp, - if (dots && !(tried_as_is || root_on_list)) { - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, -- answerp2, nanswerp2, resplen2); -+ answerp2, nanswerp2, resplen2, -+ answerp2_malloced); - if (ret > 0 || (ret == 0 && resplen2 != NULL - && *resplen2 > 0)) - return (ret); -@@ -502,11 +506,12 @@ __libc_res_nsearch(res_state statp, - * else send back meaningless H_ERRNO, that being the one from - * the last DNSRCH we did. - */ -- if (answerp2 && (*answerp2 < answer || *answerp2 >= answer + anslen)) -+ if (answerp2 && *answerp2_malloced) - { - free (*answerp2); -- *nanswerp2 = NULL; -+ *nanswerp2 = 0; - *answerp2 = NULL; -+ *answerp2_malloced = 0; - } - if (saved_herrno != -1) - RES_SET_H_ERRNO(statp, saved_herrno); -@@ -526,7 +531,7 @@ res_nsearch(res_state statp, - int anslen) /* size of answer */ - { - return __libc_res_nsearch(statp, name, class, type, answer, -- anslen, NULL, NULL, NULL, NULL); -+ anslen, NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nsearch) - -@@ -544,7 +549,8 @@ __libc_res_nquerydomain(res_state statp, - u_char **answerp, - u_char **answerp2, - int *nanswerp2, -- int *resplen2) -+ int *resplen2, -+ int *answerp2_malloced) - { - char nbuf[MAXDNAME]; - const char *longname = nbuf; -@@ -582,7 +588,7 @@ __libc_res_nquerydomain(res_state statp, - } - return (__libc_res_nquery(statp, longname, class, type, answer, - anslen, answerp, answerp2, nanswerp2, -- resplen2)); -+ resplen2, answerp2_malloced)); - } - - int -@@ -594,7 +600,8 @@ res_nquerydomain(res_state statp, - int anslen) /* size of answer */ - { - return __libc_res_nquerydomain(statp, name, domain, class, type, -- answer, anslen, NULL, NULL, NULL, NULL); -+ answer, anslen, NULL, NULL, NULL, NULL, -+ NULL); - } - libresolv_hidden_def (res_nquerydomain) - -Index: glibc-2.12-2-gc4ccff1/resolv/res_send.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_send.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_send.c -@@ -203,12 +203,12 @@ evNowTime(struct timespec *res) { - static int send_vc(res_state, const u_char *, int, - const u_char *, int, - u_char **, int *, int *, int, u_char **, -- u_char **, int *, int *); -+ u_char **, int *, int *, int *); - static int send_dg(res_state, const u_char *, int, - const u_char *, int, - u_char **, int *, int *, int, - int *, int *, u_char **, -- u_char **, int *, int *); -+ u_char **, int *, int *, int *); - #ifdef DEBUG - static void Aerror(const res_state, FILE *, const char *, int, - const struct sockaddr *); -@@ -360,7 +360,7 @@ int - __libc_res_nsend(res_state statp, const u_char *buf, int buflen, - const u_char *buf2, int buflen2, - u_char *ans, int anssiz, u_char **ansp, u_char **ansp2, -- int *nansp2, int *resplen2) -+ int *nansp2, int *resplen2, int *ansp2_malloced) - { - int gotsomewhere, terrno, try, v_circuit, resplen, ns, n; - -@@ -565,7 +565,8 @@ __libc_res_nsend(res_state statp, const - try = statp->retry; - n = send_vc(statp, buf, buflen, buf2, buflen2, - &ans, &anssiz, &terrno, -- ns, ansp, ansp2, nansp2, resplen2); -+ ns, ansp, ansp2, nansp2, resplen2, -+ ansp2_malloced); - if (n < 0) - return (-1); - if (n == 0 && (buf2 == NULL || *resplen2 == 0)) -@@ -575,7 +576,7 @@ __libc_res_nsend(res_state statp, const - n = send_dg(statp, buf, buflen, buf2, buflen2, - &ans, &anssiz, &terrno, - ns, &v_circuit, &gotsomewhere, ansp, -- ansp2, nansp2, resplen2); -+ ansp2, nansp2, resplen2, ansp2_malloced); - if (n < 0) - return (-1); - if (n == 0 && (buf2 == NULL || *resplen2 == 0)) -@@ -665,7 +666,7 @@ res_nsend(res_state statp, - const u_char *buf, int buflen, u_char *ans, int anssiz) - { - return __libc_res_nsend(statp, buf, buflen, NULL, 0, ans, anssiz, -- NULL, NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL, NULL); - } - libresolv_hidden_def (res_nsend) - -@@ -747,7 +748,7 @@ send_vc(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, - u_char **ansp, int *anssizp, - int *terrno, int ns, u_char **anscp, u_char **ansp2, int *anssizp2, -- int *resplen2) -+ int *resplen2, int *ansp2_malloced) - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -@@ -896,6 +897,8 @@ send_vc(res_state statp, - } - *thisanssizp = MAXPACKET; - *thisansp = newp; -+ if (thisansp == ansp2) -+ *ansp2_malloced = 1; - anhp = (HEADER *) newp; - /* A uint16_t can't be larger than MAXPACKET - thus it's safe to allocate MAXPACKET but -@@ -1128,7 +1131,7 @@ send_dg(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, - u_char **ansp, int *anssizp, - int *terrno, int ns, int *v_circuit, int *gotsomewhere, u_char **anscp, -- u_char **ansp2, int *anssizp2, int *resplen2) -+ u_char **ansp2, int *anssizp2, int *resplen2, int *ansp2_malloced) - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -@@ -1289,6 +1292,8 @@ send_dg(res_state statp, - if (newp != NULL) { - *thisanssizp = MAXPACKET; - *thisansp = newp; -+ if (thisansp == ansp2) -+ *ansp2_malloced = 1; - } - } - /* We could end up with truncation if anscp was NULL diff --git a/src/patches/glibc/glibc-rh1296031.patch b/src/patches/glibc/glibc-rh1296031.patch deleted file mode 100644 index c430abba1..000000000 --- a/src/patches/glibc/glibc-rh1296031.patch +++ /dev/null @@ -1,544 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -1043,7 +1043,10 @@ gaih_getanswer_slice (const querybuf *an - int h_namelen = 0; - - if (ancount == 0) -- return NSS_STATUS_NOTFOUND; -+ { -+ *h_errnop = HOST_NOT_FOUND; -+ return NSS_STATUS_NOTFOUND; -+ } - - while (ancount-- > 0 && cp < end_of_message && had_error == 0) - { -@@ -1217,7 +1220,14 @@ gaih_getanswer_slice (const querybuf *an - /* Special case here: if the resolver sent a result but it only - contains a CNAME while we are looking for a T_A or T_AAAA record, - we fail with NOTFOUND instead of TRYAGAIN. */ -- return canon == NULL ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND; -+ if (canon != NULL) -+ { -+ *h_errnop = HOST_NOT_FOUND; -+ return NSS_STATUS_NOTFOUND; -+ } -+ -+ *h_errnop = NETDB_INTERNAL; -+ return NSS_STATUS_TRYAGAIN; - } - - -@@ -1231,11 +1241,101 @@ gaih_getanswer (const querybuf *answer1, - - enum nss_status status = NSS_STATUS_NOTFOUND; - -+ /* Combining the NSS status of two distinct queries requires some -+ compromise and attention to symmetry (A or AAAA queries can be -+ returned in any order). What follows is a breakdown of how this -+ code is expected to work and why. We discuss only SUCCESS, -+ TRYAGAIN, NOTFOUND and UNAVAIL, since they are the only returns -+ that apply (though RETURN and MERGE exist). We make a distinction -+ between TRYAGAIN (recoverable) and TRYAGAIN' (not-recoverable). -+ A recoverable TRYAGAIN is almost always due to buffer size issues -+ and returns ERANGE in errno and the caller is expected to retry -+ with a larger buffer. -+ -+ Lastly, you may be tempted to make significant changes to the -+ conditions in this code to bring about symmetry between responses. -+ Please don't change anything without due consideration for -+ expected application behaviour. Some of the synthesized responses -+ aren't very well thought out and sometimes appear to imply that -+ IPv4 responses are always answer 1, and IPv6 responses are always -+ answer 2, but that's not true (see the implemetnation of send_dg -+ and send_vc to see response can arrive in any order, particlarly -+ for UDP). However, we expect it holds roughly enough of the time -+ that this code works, but certainly needs to be fixed to make this -+ a more robust implementation. -+ -+ ---------------------------------------------- -+ | Answer 1 Status / | Synthesized | Reason | -+ | Answer 2 Status | Status | | -+ |--------------------------------------------| -+ | SUCCESS/SUCCESS | SUCCESS | [1] | -+ | SUCCESS/TRYAGAIN | TRYAGAIN | [5] | -+ | SUCCESS/TRYAGAIN' | SUCCESS | [1] | -+ | SUCCESS/NOTFOUND | SUCCESS | [1] | -+ | SUCCESS/UNAVAIL | SUCCESS | [1] | -+ | TRYAGAIN/SUCCESS | TRYAGAIN | [2] | -+ | TRYAGAIN/TRYAGAIN | TRYAGAIN | [2] | -+ | TRYAGAIN/TRYAGAIN' | TRYAGAIN | [2] | -+ | TRYAGAIN/NOTFOUND | TRYAGAIN | [2] | -+ | TRYAGAIN/UNAVAIL | TRYAGAIN | [2] | -+ | TRYAGAIN'/SUCCESS | SUCCESS | [3] | -+ | TRYAGAIN'/TRYAGAIN | TRYAGAIN | [3] | -+ | TRYAGAIN'/TRYAGAIN' | TRYAGAIN' | [3] | -+ | TRYAGAIN'/NOTFOUND | TRYAGAIN' | [3] | -+ | TRYAGAIN'/UNAVAIL | UNAVAIL | [3] | -+ | NOTFOUND/SUCCESS | SUCCESS | [3] | -+ | NOTFOUND/TRYAGAIN | TRYAGAIN | [3] | -+ | NOTFOUND/TRYAGAIN' | TRYAGAIN' | [3] | -+ | NOTFOUND/NOTFOUND | NOTFOUND | [3] | -+ | NOTFOUND/UNAVAIL | UNAVAIL | [3] | -+ | UNAVAIL/SUCCESS | UNAVAIL | [4] | -+ | UNAVAIL/TRYAGAIN | UNAVAIL | [4] | -+ | UNAVAIL/TRYAGAIN' | UNAVAIL | [4] | -+ | UNAVAIL/NOTFOUND | UNAVAIL | [4] | -+ | UNAVAIL/UNAVAIL | UNAVAIL | [4] | -+ ---------------------------------------------- -+ -+ [1] If the first response is a success we return success. -+ This ignores the state of the second answer and in fact -+ incorrectly sets errno and h_errno to that of the second -+ answer. However because the response is a success we ignore -+ *errnop and *h_errnop (though that means you touched errno on -+ success). We are being conservative here and returning the -+ likely IPv4 response in the first answer as a success. -+ -+ [2] If the first response is a recoverable TRYAGAIN we return -+ that instead of looking at the second response. The -+ expectation here is that we have failed to get an IPv4 response -+ and should retry both queries. -+ -+ [3] If the first response was not a SUCCESS and the second -+ response is not NOTFOUND (had a SUCCESS, need to TRYAGAIN, -+ or failed entirely e.g. TRYAGAIN' and UNAVAIL) then use the -+ result from the second response, otherwise the first responses -+ status is used. Again we have some odd side-effects when the -+ second response is NOTFOUND because we overwrite *errnop and -+ *h_errnop that means that a first answer of NOTFOUND might see -+ its *errnop and *h_errnop values altered. Whether it matters -+ in practice that a first response NOTFOUND has the wrong -+ *errnop and *h_errnop is undecided. -+ -+ [4] If the first response is UNAVAIL we return that instead of -+ looking at the second response. The expectation here is that -+ it will have failed similarly e.g. configuration failure. -+ -+ [5] Testing this code is complicated by the fact that truncated -+ second response buffers might be returned as SUCCESS if the -+ first answer is a SUCCESS. To fix this we add symmetry to -+ TRYAGAIN with the second response. If the second response -+ is a recoverable error we now return TRYAGIN even if the first -+ response was SUCCESS. */ -+ - if (anslen1 > 0) - status = gaih_getanswer_slice(answer1, anslen1, qname, - &pat, &buffer, &buflen, - errnop, h_errnop, ttlp, - &first); -+ - if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND - || (status == NSS_STATUS_TRYAGAIN - && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) -@@ -1245,8 +1345,15 @@ gaih_getanswer (const querybuf *answer1, - &pat, &buffer, &buflen, - errnop, h_errnop, ttlp, - &first); -+ /* Use the second response status in some cases. */ - if (status != NSS_STATUS_SUCCESS && status2 != NSS_STATUS_NOTFOUND) - status = status2; -+ /* Do not return a truncated second response (unless it was -+ unavoidable e.g. unrecoverable TRYAGAIN). */ -+ if (status == NSS_STATUS_SUCCESS -+ && (status2 == NSS_STATUS_TRYAGAIN -+ && *errnop == ERANGE && *h_errnop != NO_RECOVERY)) -+ status = NSS_STATUS_TRYAGAIN; - } - - return status; -Index: glibc-2.12-2-gc4ccff1/resolv/res_send.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_send.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_send.c -@@ -1,3 +1,20 @@ -+/* Copyright (C) 2016 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ - /* - * Copyright (c) 1985, 1989, 1993 - * The Regents of the University of California. All rights reserved. -@@ -360,6 +377,8 @@ __libc_res_nsend(res_state statp, const - #ifdef USE_HOOKS - if (__builtin_expect (statp->qhook || statp->rhook, 0)) { - if (anssiz < MAXPACKET && ansp) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *buf = malloc (MAXPACKET); - if (buf == NULL) - return (-1); -@@ -652,6 +671,77 @@ libresolv_hidden_def (res_nsend) - - /* Private */ - -+/* The send_vc function is responsible for sending a DNS query over TCP -+ to the nameserver numbered NS from the res_state STATP i.e. -+ EXT(statp).nssocks[ns]. The function supports sending both IPv4 and -+ IPv6 queries at the same serially on the same socket. -+ -+ Please note that for TCP there is no way to disable sending both -+ queries, unlike UDP, which honours RES_SNGLKUP and RES_SNGLKUPREOP -+ and sends the queries serially and waits for the result after each -+ sent query. This implemetnation should be corrected to honour these -+ options. -+ -+ Please also note that for TCP we send both queries over the same -+ socket one after another. This technically violates best practice -+ since the server is allowed to read the first query, respond, and -+ then close the socket (to service another client). If the server -+ does this, then the remaining second query in the socket data buffer -+ will cause the server to send the client an RST which will arrive -+ asynchronously and the client's OS will likely tear down the socket -+ receive buffer resulting in a potentially short read and lost -+ response data. This will force the client to retry the query again, -+ and this process may repeat until all servers and connection resets -+ are exhausted and then the query will fail. It's not known if this -+ happens with any frequency in real DNS server implementations. This -+ implementation should be corrected to use two sockets by default for -+ parallel queries. -+ -+ The query stored in BUF of BUFLEN length is sent first followed by -+ the query stored in BUF2 of BUFLEN2 length. Queries are sent -+ serially on the same socket. -+ -+ Answers to the query are stored firstly in *ANSP up to a max of -+ *ANSSIZP bytes. If more than *ANSSIZP bytes are needed and ANSCP -+ is non-NULL (to indicate that modifying the answer buffer is allowed) -+ then malloc is used to allocate a new response buffer and ANSCP and -+ ANSP will both point to the new buffer. If more than *ANSSIZP bytes -+ are needed but ANSCP is NULL, then as much of the response as -+ possible is read into the buffer, but the results will be truncated. -+ When truncation happens because of a small answer buffer the DNS -+ packets header feild TC will bet set to 1, indicating a truncated -+ message and the rest of the socket data will be read and discarded. -+ -+ Answers to the query are stored secondly in *ANSP2 up to a max of -+ *ANSSIZP2 bytes, with the actual response length stored in -+ *RESPLEN2. If more than *ANSSIZP bytes are needed and ANSP2 -+ is non-NULL (required for a second query) then malloc is used to -+ allocate a new response buffer, *ANSSIZP2 is set to the new buffer -+ size and *ANSP2_MALLOCED is set to 1. -+ -+ The ANSP2_MALLOCED argument will eventually be removed as the -+ change in buffer pointer can be used to detect the buffer has -+ changed and that the caller should use free on the new buffer. -+ -+ Note that the answers may arrive in any order from the server and -+ therefore the first and second answer buffers may not correspond to -+ the first and second queries. -+ -+ It is not supported to call this function with a non-NULL ANSP2 -+ but a NULL ANSCP. Put another way, you can call send_vc with a -+ single unmodifiable buffer or two modifiable buffers, but no other -+ combination is supported. -+ -+ It is the caller's responsibility to free the malloc allocated -+ buffers by detecting that the pointers have changed from their -+ original values i.e. *ANSCP or *ANSP2 has changed. -+ -+ If errors are encountered then *TERRNO is set to an appropriate -+ errno value and a zero result is returned for a recoverable error, -+ and a less-than zero result is returned for a non-recoverable error. -+ -+ If no errors are encountered then *TERRNO is left unmodified and -+ a the length of the first response in bytes is returned. */ - static int - send_vc(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, -@@ -661,11 +751,7 @@ send_vc(res_state statp, - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -- u_char *ans = *ansp; -- int orig_anssizp = *anssizp; -- // XXX REMOVE -- // int anssiz = *anssizp; -- HEADER *anhp = (HEADER *) ans; -+ HEADER *anhp = (HEADER *) *ansp; - struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns]; - int truncating, connreset, resplen, n; - struct iovec iov[4]; -@@ -741,6 +827,8 @@ send_vc(res_state statp, - * Receive length & response - */ - int recvresp1 = 0; -+ /* Skip the second response if there is no second query. -+ To do that we mark the second response as received. */ - int recvresp2 = buf2 == NULL; - uint16_t rlen16; - read_len: -@@ -777,33 +865,14 @@ send_vc(res_state statp, - u_char **thisansp; - int *thisresplenp; - if ((recvresp1 | recvresp2) == 0 || buf2 == NULL) { -+ /* We have not received any responses -+ yet or we only have one response to -+ receive. */ - thisanssizp = anssizp; - thisansp = anscp ?: ansp; - assert (anscp != NULL || ansp2 == NULL); - thisresplenp = &resplen; - } else { -- if (*anssizp != MAXPACKET) { -- /* No buffer allocated for the first -- reply. We can try to use the rest -- of the user-provided buffer. */ --#ifdef _STRING_ARCH_unaligned -- *anssizp2 = orig_anssizp - resplen; -- *ansp2 = *ansp + resplen; --#else -- int aligned_resplen -- = ((resplen + __alignof__ (HEADER) - 1) -- & ~(__alignof__ (HEADER) - 1)); -- *anssizp2 = orig_anssizp - aligned_resplen; -- *ansp2 = *ansp + aligned_resplen; --#endif -- } else { -- /* The first reply did not fit into the -- user-provided buffer. Maybe the second -- answer will. */ -- *anssizp2 = orig_anssizp; -- *ansp2 = *ansp; -- } -- - thisanssizp = anssizp2; - thisansp = ansp2; - thisresplenp = resplen2; -@@ -811,10 +880,14 @@ send_vc(res_state statp, - anhp = (HEADER *) *thisansp; - - *thisresplenp = rlen; -- if (rlen > *thisanssizp) { -- /* Yes, we test ANSCP here. If we have two buffers -- both will be allocatable. */ -- if (__builtin_expect (anscp != NULL, 1)) { -+ /* Is the answer buffer too small? */ -+ if (*thisanssizp < rlen) { -+ /* If the current buffer is non-NULL and it's not -+ pointing at the static user-supplied buffer then -+ we can reallocate it. */ -+ if (thisansp != NULL && thisansp != ansp) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *newp = malloc (MAXPACKET); - if (newp == NULL) { - *terrno = ENOMEM; -@@ -824,6 +897,9 @@ send_vc(res_state statp, - *thisanssizp = MAXPACKET; - *thisansp = newp; - anhp = (HEADER *) newp; -+ /* A uint16_t can't be larger than MAXPACKET -+ thus it's safe to allocate MAXPACKET but -+ read RLEN bytes instead. */ - len = rlen; - } else { - Dprint(statp->options & RES_DEBUG, -@@ -987,6 +1063,66 @@ reopen (res_state statp, int *terrno, in - return 1; - } - -+/* The send_dg function is responsible for sending a DNS query over UDP -+ to the nameserver numbered NS from the res_state STATP i.e. -+ EXT(statp).nssocks[ns]. The function supports IPv4 and IPv6 queries -+ along with the ability to send the query in parallel for both stacks -+ (default) or serially (RES_SINGLKUP). It also supports serial lookup -+ with a close and reopen of the socket used to talk to the server -+ (RES_SNGLKUPREOP) to work around broken name servers. -+ -+ The query stored in BUF of BUFLEN length is sent first followed by -+ the query stored in BUF2 of BUFLEN2 length. Queries are sent -+ in parallel (default) or serially (RES_SINGLKUP or RES_SNGLKUPREOP). -+ -+ Answers to the query are stored firstly in *ANSP up to a max of -+ *ANSSIZP bytes. If more than *ANSSIZP bytes are needed and ANSCP -+ is non-NULL (to indicate that modifying the answer buffer is allowed) -+ then malloc is used to allocate a new response buffer and ANSCP and -+ ANSP will both point to the new buffer. If more than *ANSSIZP bytes -+ are needed but ANSCP is NULL, then as much of the response as -+ possible is read into the buffer, but the results will be truncated. -+ When truncation happens because of a small answer buffer the DNS -+ packets header feild TC will bet set to 1, indicating a truncated -+ message, while the rest of the UDP packet is discarded. -+ -+ Answers to the query are stored secondly in *ANSP2 up to a max of -+ *ANSSIZP2 bytes, with the actual response length stored in -+ *RESPLEN2. If more than *ANSSIZP bytes are needed and ANSP2 -+ is non-NULL (required for a second query) then malloc is used to -+ allocate a new response buffer, *ANSSIZP2 is set to the new buffer -+ size and *ANSP2_MALLOCED is set to 1. -+ -+ The ANSP2_MALLOCED argument will eventually be removed as the -+ change in buffer pointer can be used to detect the buffer has -+ changed and that the caller should use free on the new buffer. -+ -+ Note that the answers may arrive in any order from the server and -+ therefore the first and second answer buffers may not correspond to -+ the first and second queries. -+ -+ It is not supported to call this function with a non-NULL ANSP2 -+ but a NULL ANSCP. Put another way, you can call send_vc with a -+ single unmodifiable buffer or two modifiable buffers, but no other -+ combination is supported. -+ -+ It is the caller's responsibility to free the malloc allocated -+ buffers by detecting that the pointers have changed from their -+ original values i.e. *ANSCP or *ANSP2 has changed. -+ -+ If an answer is truncated because of UDP datagram DNS limits then -+ *V_CIRCUIT is set to 1 and the return value non-zero to indicate to -+ the caller to retry with TCP. The value *GOTSOMEWHERE is set to 1 -+ if any progress was made reading a response from the nameserver and -+ is used by the caller to distinguish between ECONNREFUSED and -+ ETIMEDOUT (the latter if *GOTSOMEWHERE is 1). -+ -+ If errors are encountered then *TERRNO is set to an appropriate -+ errno value and a zero result is returned for a recoverable error, -+ and a less-than zero result is returned for a non-recoverable error. -+ -+ If no errors are encountered then *TERRNO is left unmodified and -+ a the length of the first response in bytes is returned. */ - static int - send_dg(res_state statp, - const u_char *buf, int buflen, const u_char *buf2, int buflen2, -@@ -996,8 +1132,6 @@ send_dg(res_state statp, - { - const HEADER *hp = (HEADER *) buf; - const HEADER *hp2 = (HEADER *) buf2; -- u_char *ans = *ansp; -- int orig_anssizp = *anssizp; - struct timespec now, timeout, finish; - struct pollfd pfd[1]; - int ptimeout; -@@ -1029,6 +1163,8 @@ send_dg(res_state statp, - int need_recompute = 0; - int nwritten = 0; - int recvresp1 = 0; -+ /* Skip the second response if there is no second query. -+ To do that we mark the second response as received. */ - int recvresp2 = buf2 == NULL; - pfd[0].fd = EXT(statp).nssocks[ns]; - pfd[0].events = POLLOUT; -@@ -1125,50 +1261,52 @@ send_dg(res_state statp, - int *thisresplenp; - - if ((recvresp1 | recvresp2) == 0 || buf2 == NULL) { -+ /* We have not received any responses -+ yet or we only have one response to -+ receive. */ - thisanssizp = anssizp; - thisansp = anscp ?: ansp; - assert (anscp != NULL || ansp2 == NULL); - thisresplenp = &resplen; - } else { -- if (*anssizp != MAXPACKET) { -- /* No buffer allocated for the first -- reply. We can try to use the rest -- of the user-provided buffer. */ --#ifdef _STRING_ARCH_unaligned -- *anssizp2 = orig_anssizp - resplen; -- *ansp2 = *ansp + resplen; --#else -- int aligned_resplen -- = ((resplen + __alignof__ (HEADER) - 1) -- & ~(__alignof__ (HEADER) - 1)); -- *anssizp2 = orig_anssizp - aligned_resplen; -- *ansp2 = *ansp + aligned_resplen; --#endif -- } else { -- /* The first reply did not fit into the -- user-provided buffer. Maybe the second -- answer will. */ -- *anssizp2 = orig_anssizp; -- *ansp2 = *ansp; -- } -- - thisanssizp = anssizp2; - thisansp = ansp2; - thisresplenp = resplen2; - } - - if (*thisanssizp < MAXPACKET -- /* Yes, we test ANSCP here. If we have two buffers -- both will be allocatable. */ -- && anscp -+ /* If the current buffer is non-NULL and it's not -+ pointing at the static user-supplied buffer then -+ we can reallocate it. */ -+ && (thisansp != NULL && thisansp != ansp) -+ /* Is the size too small? */ - && (ioctl (pfd[0].fd, FIONREAD, thisresplenp) < 0 -- || *thisanssizp < *thisresplenp)) { -+ || *thisanssizp < *thisresplenp) -+ ) { -+ /* Always allocate MAXPACKET, callers expect -+ this specific size. */ - u_char *newp = malloc (MAXPACKET); - if (newp != NULL) { -- *anssizp = MAXPACKET; -- *thisansp = ans = newp; -+ *thisanssizp = MAXPACKET; -+ *thisansp = newp; - } - } -+ /* We could end up with truncation if anscp was NULL -+ (not allowed to change caller's buffer) and the -+ response buffer size is too small. This isn't a -+ reliable way to detect truncation because the ioctl -+ may be an inaccurate report of the UDP message size. -+ Therefore we use this only to issue debug output. -+ To do truncation accurately with UDP we need -+ MSG_TRUNC which is only available on Linux. We -+ can abstract out the Linux-specific feature in the -+ future to detect truncation. */ -+ if (__glibc_unlikely (*thisanssizp < *thisresplenp)) { -+ Dprint(statp->options & RES_DEBUG, -+ (stdout, ";; response may be truncated (UDP)\n") -+ ); -+ } -+ - HEADER *anhp = (HEADER *) *thisansp; - socklen_t fromlen = sizeof(struct sockaddr_in6); - assert (sizeof(from) <= fromlen); -Index: glibc-2.12-2-gc4ccff1/resolv/res_query.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/res_query.c -+++ glibc-2.12-2-gc4ccff1/resolv/res_query.c -@@ -391,6 +391,7 @@ __libc_res_nsearch(res_state statp, - && (*answerp2 < answer || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = 0; - *answerp2 = NULL; - } - } -@@ -431,6 +432,7 @@ __libc_res_nsearch(res_state statp, - || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = 0; - *answerp2 = NULL; - } - -@@ -503,6 +505,7 @@ __libc_res_nsearch(res_state statp, - if (answerp2 && (*answerp2 < answer || *answerp2 >= answer + anslen)) - { - free (*answerp2); -+ *nanswerp2 = NULL; - *answerp2 = NULL; - } - if (saved_herrno != -1) diff --git a/src/patches/glibc/glibc-rh1299319-0.patch b/src/patches/glibc/glibc-rh1299319-0.patch deleted file mode 100644 index f27eccd67..000000000 --- a/src/patches/glibc/glibc-rh1299319-0.patch +++ /dev/null @@ -1,61 +0,0 @@ -commit 2c1094bd700e63a8d7f547b3f5495bedb55c0a08 -Author: Ulrich Drepper -Date: Thu Dec 22 22:43:39 2011 -0500 - - Create internal threads with sufficient stack size - -Index: glibc-2.12-2-gc4ccff1/nptl/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Versions -+++ glibc-2.12-2-gc4ccff1/nptl/Versions -@@ -255,6 +255,6 @@ libpthread { - GLIBC_PRIVATE { - __pthread_initialize_minimal; - __pthread_clock_gettime; __pthread_clock_settime; -- __pthread_unwind; -+ __pthread_unwind; __pthread_get_minstack; - } - } -Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c -+++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -@@ -507,3 +507,13 @@ __pthread_initialize_minimal_internal (i - } - strong_alias (__pthread_initialize_minimal_internal, - __pthread_initialize_minimal) -+ -+ -+size_t -+__pthread_get_minstack (const pthread_attr_t *attr) -+{ -+ struct pthread_attr *iattr = (struct pthread_attr *) attr; -+ -+ return (GLRO(dl_pagesize) + __static_tls_size + PTHREAD_STACK_MIN -+ + iattr->guardsize); -+} -Index: glibc-2.12-2-gc4ccff1/nptl/pthreadP.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/pthreadP.h -+++ glibc-2.12-2-gc4ccff1/nptl/pthreadP.h -@@ -397,6 +397,7 @@ weak_function; - - extern void __pthread_init_static_tls (struct link_map *) attribute_hidden; - -+extern size_t __pthread_get_minstack (const pthread_attr_t *attr); - - /* Namespace save aliases. */ - extern int __pthread_getschedparam (pthread_t thread_id, int *policy, -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/timer_routines.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/timer_routines.c -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/timer_routines.c -@@ -165,7 +165,7 @@ __start_helper_thread (void) - and should go away automatically when canceled. */ - pthread_attr_t attr; - (void) pthread_attr_init (&attr); -- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN); -+ (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); - - /* Block all signals in the helper thread but SIGSETXID. To do this - thoroughly we temporarily have to block all signals here. The diff --git a/src/patches/glibc/glibc-rh1299319-1.patch b/src/patches/glibc/glibc-rh1299319-1.patch deleted file mode 100644 index e6288a24c..000000000 --- a/src/patches/glibc/glibc-rh1299319-1.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 232872379ee82cd040a52a48cbbae65a249b5765 -Author: Adhemerval Zanella -Date: Sun Jan 8 19:56:52 2012 -0500 - - Use __pthread_get_minstack for AIO helper thread - -diff --git a/nptl/sysdeps/unix/sysv/linux/aio_misc.h b/nptl/sysdeps/unix/sysv/linux/aio_misc.h -index 406d96e..8011c3e 100644 ---- a/nptl/sysdeps/unix/sysv/linux/aio_misc.h -+++ b/nptl/sysdeps/unix/sysv/linux/aio_misc.h -@@ -47,7 +47,7 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), - pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); - - /* The helper thread needs only very little resources. */ -- (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN); -+ (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); - - /* Block all signals in the helper thread. To do this thoroughly we - temporarily have to block all signals here. */ diff --git a/src/patches/glibc/glibc-rh552960.patch b/src/patches/glibc/glibc-rh552960.patch deleted file mode 100644 index 41eccb7d4..000000000 --- a/src/patches/glibc/glibc-rh552960.patch +++ /dev/null @@ -1,1213 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2013-07-09 10:18:22.267421846 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile 2013-07-09 10:16:22.043427519 +0530 -@@ -207,7 +207,8 @@ tests = tst-typesizes \ - tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \ - tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \ - tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \ -- tst-cond20 tst-cond21 tst-cond22 tst-cond23 \ -+ tst-cond20 tst-cond21 tst-cond22 tst-cond23 tst-cond24 tst-cond25 \ -+ tst-cond-except \ - tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \ - tst-robust6 tst-robust7 tst-robust8 tst-robust9 \ - tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 tst-robustpi5 \ -@@ -275,6 +276,8 @@ gen-as-const-headers = pthread-errnos.sy - - LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst - -+LDFLAGS-tst-cond24 = -lrt -+LDFLAGS-tst-cond25 = -lrt - - include ../Makeconfig - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2013-07-09 10:16:22.044427519 +0530 -@@ -203,9 +203,11 @@ __pthread_cond_timedwait: - 42: leal (%ebp), %esi - movl 28(%esp), %edx - addl $cond_futex, %ebx -+.Ladd_cond_futex_pi: - movl $SYS_futex, %eax - ENTER_KERNEL - subl $cond_futex, %ebx -+.Lsub_cond_futex_pi: - movl %eax, %esi - /* Set the pi-requeued flag only if the kernel has returned 0. The - kernel does not hold the mutex on ETIMEDOUT or any other error. */ -@@ -213,8 +215,23 @@ __pthread_cond_timedwait: - sete 24(%esp) - je 41f - -- /* Normal and PI futexes dont mix. Use normal futex functions only -- if the kernel does not support the PI futex functions. */ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (24(%esp)) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN (barring -+ the ETIMEOUT of course, for the timeout case in futex) since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ - cmpl $-ENOSYS, %eax - jne 41f - xorl %ecx, %ecx -@@ -274,9 +291,24 @@ __pthread_cond_timedwait: - jne 9f - - 15: cmpl $-ETIMEDOUT, %esi -- jne 8b -+ je 28f - -- addl $1, wakeup_seq(%ebx) -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+ movl 24(%esp), %edx -+ test %edx, %edx -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movl dep_mutex(%ebx), %eax -+ call __pthread_mutex_cond_lock_adjust -+ xorl %edx, %edx -+ call __pthread_mutex_unlock_usercnt -+ jmp 8b -+ -+28: addl $1, wakeup_seq(%ebx) - adcl $0, wakeup_seq+4(%ebx) - addl $1, cond_futex(%ebx) - movl $ETIMEDOUT, %esi -@@ -644,10 +676,27 @@ __condvar_tw_cleanup: - movl $0x7fffffff, %edx - ENTER_KERNEL - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movl 24+FRAME_SIZE(%esp), %eax -- call __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%eax), %ebx -+ andl $(ROBUST_BIT|PI_BIT), %ebx -+ cmpl $PI_BIT, %ebx -+ jne 8f -+ -+ movl (%eax), %ebx -+ andl $TID_MASK, %ebx -+ cmpl %ebx, %gs:TID -+ jne 8f -+ /* We managed to get the lock. Fix it up before returning. */ -+ call __pthread_mutex_cond_lock_adjust -+ jmp 9f -+ -+8: call __pthread_mutex_cond_lock - -- movl %esi, (%esp) -+9: movl %esi, (%esp) - .LcallUR: - call _Unwind_Resume - hlt -@@ -665,7 +714,15 @@ __condvar_tw_cleanup: - .uleb128 .Lcstend-.Lcstbegin - .Lcstbegin: - .long .LcleanupSTART-.LSTARTCODE -- .long .Ladd_cond_futex-.LcleanupSTART -+ .long .Ladd_cond_futex_pi-.LcleanupSTART -+ .long __condvar_tw_cleanup-.LSTARTCODE -+ .uleb128 0 -+ .long .Ladd_cond_futex_pi-.LSTARTCODE -+ .long .Lsub_cond_futex_pi-.Ladd_cond_futex_pi -+ .long __condvar_tw_cleanup2-.LSTARTCODE -+ .uleb128 0 -+ .long .Lsub_cond_futex_pi-.LSTARTCODE -+ .long .Ladd_cond_futex-.Lsub_cond_futex_pi - .long __condvar_tw_cleanup-.LSTARTCODE - .uleb128 0 - .long .Ladd_cond_futex-.LSTARTCODE -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2013-07-09 10:16:22.046427519 +0530 -@@ -138,17 +138,33 @@ __pthread_cond_wait: - movl %ebp, %edx - xorl %esi, %esi - addl $cond_futex, %ebx -+.Ladd_cond_futex_pi: - movl $SYS_futex, %eax - ENTER_KERNEL - subl $cond_futex, %ebx -+.Lsub_cond_futex_pi: - /* Set the pi-requeued flag only if the kernel has returned 0. The - kernel does not hold the mutex on error. */ - cmpl $0, %eax - sete 16(%esp) - je 19f - -- /* Normal and PI futexes dont mix. Use normal futex functions only -- if the kernel does not support the PI futex functions. */ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (16(%esp)) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ - cmpl $-ENOSYS, %eax - jne 19f - xorl %ecx, %ecx -@@ -198,12 +214,12 @@ __pthread_cond_wait: - cmpl 8(%esp), %edx - jne 7f - cmpl 4(%esp), %edi -- je 8b -+ je 22f - - 7: cmpl %ecx, %edx - jne 9f - cmp %eax, %edi -- je 8b -+ je 22f - - 9: addl $1, woken_seq(%ebx) - adcl $0, woken_seq+4(%ebx) -@@ -279,6 +295,22 @@ __pthread_cond_wait: - jmp 20b - - cfi_adjust_cfa_offset(-FRAME_SIZE); -+ -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+22: movl 16(%esp), %edx -+ test %edx, %edx -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movl dep_mutex(%ebx), %eax -+ call __pthread_mutex_cond_lock_adjust -+ xorl %edx, %edx -+ call __pthread_mutex_unlock_usercnt -+ jmp 8b -+ - /* Initial locking failed. */ - 1: - #if cond_lock == 0 -@@ -391,6 +423,7 @@ __pthread_cond_wait: - #endif - call __lll_unlock_wake - jmp 11b -+ - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -531,10 +564,27 @@ __condvar_w_cleanup: - movl $0x7fffffff, %edx - ENTER_KERNEL - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movl 24+FRAME_SIZE(%esp), %eax -- call __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%eax), %ebx -+ andl $(ROBUST_BIT|PI_BIT), %ebx -+ cmpl $PI_BIT, %ebx -+ jne 8f -+ -+ movl (%eax), %ebx -+ andl $TID_MASK, %ebx -+ cmpl %ebx, %gs:TID -+ jne 8f -+ /* We managed to get the lock. Fix it up before returning. */ -+ call __pthread_mutex_cond_lock_adjust -+ jmp 9f - -- movl %esi, (%esp) -+8: call __pthread_mutex_cond_lock -+ -+9: movl %esi, (%esp) - .LcallUR: - call _Unwind_Resume - hlt -@@ -552,7 +602,15 @@ __condvar_w_cleanup: - .uleb128 .Lcstend-.Lcstbegin - .Lcstbegin: - .long .LcleanupSTART-.LSTARTCODE -- .long .Ladd_cond_futex-.LcleanupSTART -+ .long .Ladd_cond_futex_pi-.LcleanupSTART -+ .long __condvar_w_cleanup-.LSTARTCODE -+ .uleb128 0 -+ .long .Ladd_cond_futex_pi-.LSTARTCODE -+ .long .Lsub_cond_futex_pi-.Ladd_cond_futex_pi -+ .long __condvar_w_cleanup2-.LSTARTCODE -+ .uleb128 0 -+ .long .Lsub_cond_futex_pi-.LSTARTCODE -+ .long .Ladd_cond_futex-.Lsub_cond_futex_pi - .long __condvar_w_cleanup-.LSTARTCODE - .uleb128 0 - .long .Ladd_cond_futex-.LSTARTCODE -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/pthread-pi-defines.sym 2013-07-09 10:16:22.047427519 +0530 -@@ -6,3 +6,4 @@ MUTEX_KIND offsetof (pthread_mutex_t, __ - ROBUST_BIT PTHREAD_MUTEX_ROBUST_NORMAL_NP - PI_BIT PTHREAD_MUTEX_PRIO_INHERIT_NP - PS_BIT PTHREAD_MUTEX_PSHARED_BIT -+TID_MASK FUTEX_TID_MASK -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2013-07-09 10:18:22.506421835 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2013-07-09 10:16:22.048427519 +0530 -@@ -104,6 +104,8 @@ __pthread_cond_timedwait: - movq %rsi, dep_mutex(%rdi) - - 22: -+ xorb %r15b, %r15b -+ - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - # ifdef PIC - cmpl $0, __have_futex_clock_realtime(%rip) -@@ -189,18 +191,39 @@ __pthread_cond_timedwait: - movl $SYS_futex, %eax - syscall - -- movl $1, %r15d -+ cmpl $0, %eax -+ sete %r15b -+ - #ifdef __ASSUME_REQUEUE_PI - jmp 62f - #else -- cmpq $-4095, %rax -- jnae 62f -+ je 62f -+ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (%r15b) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN (barring -+ the ETIMEOUT of course, for the timeout case in futex) since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ -+ cmpl $-ENOSYS, %eax -+ jne 62f - - subq $cond_futex, %rdi - #endif - - 61: movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG), %esi --60: xorl %r15d, %r15d -+60: xorb %r15b, %r15b - xorl %eax, %eax - /* The following only works like this because we only support - two clocks, represented using a single bit. */ -@@ -247,7 +270,23 @@ __pthread_cond_timedwait: - ja 39f - - 45: cmpq $-ETIMEDOUT, %r14 -- jne 38b -+ je 99f -+ -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+ test %r15b, %r15b -+ jz 38b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the -+ mutex correctly. */ -+ movq %r8, %rdi -+ callq __pthread_mutex_cond_lock_adjust -+ xorl %esi, %esi -+ callq __pthread_mutex_unlock_usercnt -+ /* Reload cond_var. */ -+ movq 8(%rsp), %rdi -+ jmp 38b - - 99: incq wakeup_seq(%rdi) - incl cond_futex(%rdi) -@@ -297,7 +336,7 @@ __pthread_cond_timedwait: - /* If requeue_pi is used the kernel performs the locking of the - mutex. */ - 41: movq 16(%rsp), %rdi -- testl %r15d, %r15d -+ testb %r15b, %r15b - jnz 64f - - callq __pthread_mutex_cond_lock -@@ -405,8 +444,6 @@ __pthread_cond_timedwait: - - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: -- xorl %r15d, %r15d -- - /* Get internal lock. */ - movl $1, %esi - xorl %eax, %eax -@@ -765,10 +802,27 @@ __condvar_cleanup2: - movl $SYS_futex, %eax - syscall - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movq 16(%rsp), %rdi -- callq __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%rdi), %eax -+ andl $(ROBUST_BIT|PI_BIT), %eax -+ cmpl $PI_BIT, %eax -+ jne 7f -+ -+ movl (%rdi), %eax -+ andl $TID_MASK, %eax -+ cmpl %eax, %fs:TID -+ jne 7f -+ /* We managed to get the lock. Fix it up before returning. */ -+ callq __pthread_mutex_cond_lock_adjust -+ jmp 8f -+ -+7: callq __pthread_mutex_cond_lock - -- movq 24(%rsp), %rdi -+8: movq 24(%rsp), %rdi - movq FRAME_SIZE(%rsp), %r15 - movq FRAME_SIZE+8(%rsp), %r14 - movq FRAME_SIZE+16(%rsp), %r13 -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2013-07-09 10:18:22.507421834 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2013-07-09 10:16:22.048427519 +0530 -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - #include - -@@ -137,12 +138,32 @@ __pthread_cond_wait: - movl $SYS_futex, %eax - syscall - -- movl $1, %r8d -+ cmpl $0, %eax -+ sete %r8b -+ - #ifdef __ASSUME_REQUEUE_PI - jmp 62f - #else -- cmpq $-4095, %rax -- jnae 62f -+ je 62f -+ -+ /* When a futex syscall with FUTEX_WAIT_REQUEUE_PI returns -+ successfully, it has already locked the mutex for us and the -+ pi_flag (%r8b) is set to denote that fact. However, if another -+ thread changed the futex value before we entered the wait, the -+ syscall may return an EAGAIN and the mutex is not locked. We go -+ ahead with a success anyway since later we look at the pi_flag to -+ decide if we got the mutex or not. The sequence numbers then make -+ sure that only one of the threads actually wake up. We retry using -+ normal FUTEX_WAIT only if the kernel returned ENOSYS, since normal -+ and PI futexes don't mix. -+ -+ Note that we don't check for EAGAIN specifically; we assume that the -+ only other error the futex function could return is EAGAIN since -+ anything else would mean an error in our function. It is too -+ expensive to do that check for every call (which is quite common in -+ case of a large number of threads), so it has been skipped. */ -+ cmpl $-ENOSYS, %eax -+ jne 62f - - # ifndef __ASSUME_PRIVATE_FUTEX - movl $FUTEX_WAIT, %esi -@@ -155,7 +176,7 @@ __pthread_cond_wait: - #else - orl %fs:PRIVATE_FUTEX, %esi - #endif --60: xorl %r8d, %r8d -+60: xorb %r8b, %r8b - movl $SYS_futex, %eax - syscall - -@@ -185,10 +206,10 @@ __pthread_cond_wait: - jne 16f - - cmpq 24(%rsp), %r9 -- jbe 8b -+ jbe 19f - - cmpq %rax, %r9 -- jna 8b -+ jna 19f - - incq woken_seq(%rdi) - -@@ -230,7 +251,7 @@ __pthread_cond_wait: - /* If requeue_pi is used the kernel performs the locking of the - mutex. */ - 11: movq 16(%rsp), %rdi -- testl %r8d, %r8d -+ testb %r8b, %r8b - jnz 18f - - callq __pthread_mutex_cond_lock -@@ -247,6 +268,23 @@ __pthread_cond_wait: - xorl %eax, %eax - jmp 14b - -+ /* We need to go back to futex_wait. If we're using requeue_pi, then -+ release the mutex we had acquired and go back. */ -+19: testb %r8b, %r8b -+ jz 8b -+ -+ /* Adjust the mutex values first and then unlock it. The unlock -+ should always succeed or else the kernel did not lock the mutex -+ correctly. */ -+ movq 16(%rsp), %rdi -+ callq __pthread_mutex_cond_lock_adjust -+ movq %rdi, %r8 -+ xorl %esi, %esi -+ callq __pthread_mutex_unlock_usercnt -+ /* Reload cond_var. */ -+ movq 8(%rsp), %rdi -+ jmp 8b -+ - /* Initial locking failed. */ - 1: - #if cond_lock != 0 -@@ -324,6 +362,7 @@ __pthread_cond_wait: - - 13: movq %r10, %rax - jmp 14b -+ - .size __pthread_cond_wait, .-__pthread_cond_wait - versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, - GLIBC_2_3_2) -@@ -454,10 +493,28 @@ __condvar_cleanup1: - movl $SYS_futex, %eax - syscall - -+ /* Lock the mutex only if we don't own it already. This only happens -+ in case of PI mutexes, if we got cancelled after a successful -+ return of the futex syscall and before disabling async -+ cancellation. */ - 5: movq 16(%rsp), %rdi -- callq __pthread_mutex_cond_lock -+ movl MUTEX_KIND(%rdi), %eax -+ andl $(ROBUST_BIT|PI_BIT), %eax -+ cmpl $PI_BIT, %eax -+ jne 7f -+ -+ movl (%rdi), %eax -+ andl $TID_MASK, %eax -+ cmpl %eax, %fs:TID -+ jne 7f -+ /* We managed to get the lock. Fix it up before returning. */ -+ callq __pthread_mutex_cond_lock_adjust -+ jmp 8f -+ - -- movq 24(%rsp), %rdi -+7: callq __pthread_mutex_cond_lock -+ -+8: movq 24(%rsp), %rdi - .LcallUR: - call _Unwind_Resume@PLT - hlt -@@ -476,11 +533,11 @@ __condvar_cleanup1: - .uleb128 .LcleanupSTART-.LSTARTCODE - .uleb128 .LcleanupEND-.LcleanupSTART - .uleb128 __condvar_cleanup1-.LSTARTCODE -- .uleb128 0 -+ .uleb128 0 - .uleb128 .LcallUR-.LSTARTCODE - .uleb128 .LENDCODE-.LcallUR - .uleb128 0 -- .uleb128 0 -+ .uleb128 0 - .Lcstend: - - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond24.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond24.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond24.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond24.c 2013-07-09 10:19:10.008419593 +0530 -@@ -0,0 +1,249 @@ -+/* Verify that condition variables synchronized by PI mutexes don't hang. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define THREADS_NUM 5 -+#define MAXITER 50000 -+ -+static pthread_mutex_t mutex; -+static pthread_mutexattr_t mutex_attr; -+static pthread_cond_t cond; -+static pthread_t threads[THREADS_NUM]; -+static int pending = 0; -+ -+typedef void * (*threadfunc) (void *); -+ -+void * -+thread_fun_timed (void *arg) -+{ -+ int *ret = arg; -+ int rv, i; -+ -+ printf ("Started thread_fun_timed[%d]\n", *ret); -+ -+ for (i = 0; i < MAXITER / THREADS_NUM; i++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ -+ while (!pending) -+ { -+ struct timespec ts; -+ clock_gettime(CLOCK_REALTIME, &ts); -+ ts.tv_sec += 20; -+ rv = pthread_cond_timedwait (&cond, &mutex, &ts); -+ -+ /* There should be no timeout either. */ -+ if (rv) -+ { -+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ pending--; -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ *ret = 0; -+ -+out: -+ return ret; -+} -+ -+void * -+thread_fun (void *arg) -+{ -+ int *ret = arg; -+ int rv, i; -+ -+ printf ("Started thread_fun[%d]\n", *ret); -+ -+ for (i = 0; i < MAXITER / THREADS_NUM; i++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ -+ while (!pending) -+ { -+ rv = pthread_cond_wait (&cond, &mutex); -+ -+ if (rv) -+ { -+ printf ("pthread_cond_wait: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ pending--; -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ *ret = 1; -+ goto out; -+ } -+ } -+ -+ *ret = 0; -+ -+out: -+ return ret; -+} -+ -+static int -+do_test_wait (threadfunc f) -+{ -+ int i; -+ int rv; -+ int counter = 0; -+ int retval[THREADS_NUM]; -+ -+ puts ("Starting test"); -+ -+ rv = pthread_mutexattr_init (&mutex_attr); -+ if (rv) -+ { -+ printf ("pthread_mutexattr_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutexattr_setprotocol (&mutex_attr, PTHREAD_PRIO_INHERIT); -+ if (rv) -+ { -+ printf ("pthread_mutexattr_setprotocol: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutex_init (&mutex, &mutex_attr); -+ if (rv) -+ { -+ printf ("pthread_mutex_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_cond_init (&cond, NULL); -+ if (rv) -+ { -+ printf ("pthread_cond_init: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ for (i = 0; i < THREADS_NUM; i++) -+ { -+ retval[i] = i; -+ rv = pthread_create (&threads[i], NULL, f, &retval[i]); -+ if (rv) -+ { -+ printf ("pthread_create: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ } -+ -+ for (; counter < MAXITER; counter++) -+ { -+ rv = pthread_mutex_lock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_lock: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ if (!(counter % 100)) -+ printf ("counter: %d\n", counter); -+ pending += 1; -+ -+ rv = pthread_cond_signal (&cond); -+ if (rv) -+ { -+ printf ("pthread_cond_signal: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ -+ rv = pthread_mutex_unlock (&mutex); -+ if (rv) -+ { -+ printf ("pthread_mutex_unlock: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ } -+ -+ for (i = 0; i < THREADS_NUM; i++) -+ { -+ void *ret; -+ rv = pthread_join (threads[i], &ret); -+ if (rv) -+ { -+ printf ("pthread_join: %s(%d)\n", strerror (rv), rv); -+ return 1; -+ } -+ if (ret && *(int *)ret) -+ { -+ printf ("Thread %d returned with an error\n", i); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ puts ("Testing pthread_cond_wait"); -+ int ret = do_test_wait (thread_fun); -+ if (ret) -+ return ret; -+ -+ puts ("Testing pthread_cond_timedwait"); -+ return do_test_wait (thread_fun_timed); -+} -+ -+#define TIMEOUT 20 -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond25.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond25.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond25.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond25.c 2013-07-09 10:19:15.472419335 +0530 -@@ -0,0 +1,281 @@ -+/* Verify that condition variables synchronized by PI mutexes don't hang on -+ on cancellation. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define NUM 5 -+#define ITERS 10000 -+#define COUNT 100 -+ -+typedef void *(*thr_func) (void *); -+ -+pthread_mutex_t mutex; -+pthread_cond_t cond; -+ -+void cleanup (void *u) -+{ -+ /* pthread_cond_wait should always return with the mutex locked. */ -+ if (pthread_mutex_unlock (&mutex)) -+ abort (); -+} -+ -+void * -+signaller (void *u) -+{ -+ int i, ret = 0; -+ void *tret = NULL; -+ -+ for (i = 0; i < ITERS; i++) -+ { -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:mutex_lock failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ if ((ret = pthread_cond_signal (&cond)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:signal failed: %s\n", strerror (ret)); -+ goto unlock_out; -+ } -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *)1; -+ printf ("signaller:mutex_unlock failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ pthread_testcancel (); -+ } -+ -+out: -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("signaller:mutex_unlock[2] failed: %s\n", strerror (ret)); -+ goto out; -+} -+ -+void * -+waiter (void *u) -+{ -+ int i, ret = 0; -+ void *tret = NULL; -+ int seq = (uintptr_t) u; -+ -+ for (i = 0; i < ITERS / NUM; i++) -+ { -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_lock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_push (cleanup, NULL); -+ -+ if ((ret = pthread_cond_wait (&cond, &mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:wait failed: %s\n", seq, strerror (ret)); -+ goto unlock_out; -+ } -+ -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_unlock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_pop (0); -+ } -+ -+out: -+ puts ("waiter tests done"); -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("waiter:mutex_unlock[2] failed: %s\n", strerror (ret)); -+ goto out; -+} -+ -+void * -+timed_waiter (void *u) -+{ -+ int i, ret; -+ void *tret = NULL; -+ int seq = (uintptr_t) u; -+ -+ for (i = 0; i < ITERS / NUM; i++) -+ { -+ struct timespec ts; -+ -+ if ((ret = clock_gettime(CLOCK_REALTIME, &ts)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("%u:clock_gettime failed: %s\n", seq, strerror (errno)); -+ goto out; -+ } -+ ts.tv_sec += 20; -+ -+ if ((ret = pthread_mutex_lock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_lock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_push (cleanup, NULL); -+ -+ /* We should not time out either. */ -+ if ((ret = pthread_cond_timedwait (&cond, &mutex, &ts)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:timedwait failed: %s\n", seq, strerror (ret)); -+ goto unlock_out; -+ } -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ { -+ tret = (void *) (uintptr_t) 1; -+ printf ("waiter[%u]:mutex_unlock failed: %s\n", seq, strerror (ret)); -+ goto out; -+ } -+ pthread_cleanup_pop (0); -+ } -+ -+out: -+ puts ("timed_waiter tests done"); -+ return tret; -+ -+unlock_out: -+ if ((ret = pthread_mutex_unlock (&mutex)) != 0) -+ printf ("waiter[%u]:mutex_unlock[2] failed: %s\n", seq, strerror (ret)); -+ goto out; -+} -+ -+int -+do_test_wait (thr_func f) -+{ -+ pthread_t w[NUM]; -+ pthread_t s; -+ pthread_mutexattr_t attr; -+ int i, j, ret = 0; -+ void *thr_ret; -+ -+ for (i = 0; i < COUNT; i++) -+ { -+ if ((ret = pthread_mutexattr_init (&attr)) != 0) -+ { -+ printf ("mutexattr_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_mutexattr_setprotocol (&attr, -+ PTHREAD_PRIO_INHERIT)) != 0) -+ { -+ printf ("mutexattr_setprotocol failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_cond_init (&cond, NULL)) != 0) -+ { -+ printf ("cond_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_mutex_init (&mutex, &attr)) != 0) -+ { -+ printf ("mutex_init failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ for (j = 0; j < NUM; j++) -+ if ((ret = pthread_create (&w[j], NULL, -+ f, (void *) (uintptr_t) j)) != 0) -+ { -+ printf ("waiter[%d]: create failed: %s\n", j, strerror (ret)); -+ goto out; -+ } -+ -+ if ((ret = pthread_create (&s, NULL, signaller, NULL)) != 0) -+ { -+ printf ("signaller: create failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ for (j = 0; j < NUM; j++) -+ { -+ pthread_cancel (w[j]); -+ -+ if ((ret = pthread_join (w[j], &thr_ret)) != 0) -+ { -+ printf ("waiter[%d]: join failed: %s\n", j, strerror (ret)); -+ goto out; -+ } -+ -+ if (thr_ret != NULL && thr_ret != PTHREAD_CANCELED) -+ { -+ ret = 1; -+ goto out; -+ } -+ } -+ -+ /* The signalling thread could have ended before it was cancelled. */ -+ pthread_cancel (s); -+ -+ if ((ret = pthread_join (s, &thr_ret)) != 0) -+ { -+ printf ("signaller: join failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ if (thr_ret != NULL && thr_ret != PTHREAD_CANCELED) -+ { -+ ret = 1; -+ goto out; -+ } -+ } -+ -+out: -+ return ret; -+} -+ -+int -+do_test (int argc, char **argv) -+{ -+ int ret = do_test_wait (waiter); -+ -+ if (ret) -+ return ret; -+ -+ return do_test_wait (timed_waiter); -+} -+ -+#define TIMEOUT 5 -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-cond-except.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond-except.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-cond-except.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-cond-except.c 2013-07-09 10:19:01.334420002 +0530 -@@ -0,0 +1,110 @@ -+/* Verify that exception table for pthread_cond_wait is correct. -+ Copyright (C) 2012-2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+pthread_mutex_t mutex; -+pthread_cond_t cond; -+ -+#define CHECK_RETURN_VAL_OR_FAIL(ret,str) \ -+ ({ if ((ret) != 0) \ -+ { \ -+ printf ("%s failed: %s\n", (str), strerror (ret)); \ -+ ret = 1; \ -+ goto out; \ -+ } \ -+ }) -+ -+ -+void -+clean (void *arg) -+{ -+ puts ("clean: Unlocking mutex..."); -+ pthread_mutex_unlock ((pthread_mutex_t *) arg); -+ puts ("clean: Mutex unlocked..."); -+} -+ -+void * -+thr (void *arg) -+{ -+ int ret = 0; -+ pthread_mutexattr_t mutexAttr; -+ ret = pthread_mutexattr_init (&mutexAttr); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutexattr_init"); -+ -+ ret = pthread_mutexattr_setprotocol (&mutexAttr, PTHREAD_PRIO_INHERIT); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutexattr_setprotocol"); -+ -+ ret = pthread_mutex_init (&mutex, &mutexAttr); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutex_init"); -+ -+ ret = pthread_cond_init (&cond, 0); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cond_init"); -+ -+ puts ("th: Init done, entering wait..."); -+ -+ pthread_cleanup_push (clean, (void *) &mutex); -+ ret = pthread_mutex_lock (&mutex); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_mutex_lock"); -+ while (1) -+ { -+ ret = pthread_cond_wait (&cond, &mutex); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cond_wait"); -+ } -+ pthread_cleanup_pop (1); -+ -+out: -+ return (void *) (uintptr_t) ret; -+} -+ -+int -+do_test (void) -+{ -+ pthread_t thread; -+ int ret = 0; -+ void *thr_ret = 0; -+ ret = pthread_create (&thread, 0, thr, &thr_ret); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_create"); -+ -+ puts ("main: Thread created, waiting a bit..."); -+ sleep (2); -+ -+ puts ("main: Cancelling thread..."); -+ ret = pthread_cancel (thread); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_cancel"); -+ -+ puts ("main: Joining th..."); -+ ret = pthread_join (thread, NULL); -+ CHECK_RETURN_VAL_OR_FAIL (ret, "pthread_join"); -+ -+ if (thr_ret != NULL) -+ return 1; -+ -+ puts ("main: Joined thread, done!"); -+ -+out: -+ return ret; -+} -+ -+#define TEST_FUNCTION do_test () -+#define TIMEOUT 5 -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh580498.patch b/src/patches/glibc/glibc-rh580498.patch deleted file mode 100644 index 05b673a9f..000000000 --- a/src/patches/glibc/glibc-rh580498.patch +++ /dev/null @@ -1,296 +0,0 @@ -2010-07-03 Ulrich Drepper - - * tst-abstime.c (do_test): Some more cleanups - -2010-07-02 Ulrich Drepper - - * tst-abstime.c: Correct testing and add test for sem_timedwait. - -2010-07-01 Andreas Schwab - Ulrich Drepper - - * Makefile (tests): Add tst-abstime. - * tst-abstime.c: New file. - * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S - (__lll_timedlock_wait): Check for timestamp before the Epoch. - * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S - (__lll_timedlock_wait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S - (__lll_robust_timedlock_wait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S - (__pthread_cond_timedwait): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S - (pthread_rwlock_timedrdlock): Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S - (pthread_rwlock_timedwrlock): Likewise. - * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): - Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Makefile -+++ glibc-2.12-2-gc4ccff1/nptl/Makefile -@@ -256,6 +256,7 @@ tests = tst-typesizes \ - tst-sched1 \ - tst-backtrace1 \ - tst-oddstacklimit \ -+ tst-abstime \ - tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \ - tst-getpid1 tst-getpid2 tst-getpid3 \ - tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99) -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S -@@ -188,6 +188,9 @@ __lll_timedlock_wait: - je .Lreltmo - # endif - -+ cmpl $0, (%edx) -+ js 8f -+ - movl %ecx, %ebx - movl %esi, %ecx - movl %edx, %esi -@@ -223,6 +226,9 @@ __lll_timedlock_wait: - cfi_restore(%ebp) - ret - -+8: movl $ETIMEDOUT, %eax -+ jmp 7b -+ - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - /* Check for a valid timeout value. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S -@@ -169,9 +169,13 @@ __lll_timedlock_wait: - je .Lreltmo - # endif - -+ cmpq $0, (%rdx) -+ js 5f -+ - pushq %r9 - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r9, 0) -+ - movq %rdx, %r10 - movl $0xffffffff, %r9d - LOAD_FUTEX_WAIT_ABS (%esi) -@@ -202,6 +206,9 @@ __lll_timedlock_wait: - cfi_restore(%r9) - retq - -+5: movl $ETIMEDOUT, %eax -+ retq -+ - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - /* Check for a valid timeout value. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S -@@ -125,6 +125,9 @@ __lll_robust_timedlock_wait: - je .Lreltmo - # endif - -+ cmpq $0, (%rdx) -+ js 7f -+ - pushq %r9 - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r9, 0) -@@ -180,6 +183,9 @@ __lll_robust_timedlock_wait: - cfi_adjust_cfa_offset(-8) - cfi_restore(%r9) - -+7: movl $ETIMEDOUT, %eax -+ retq -+ - - # ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -@@ -144,6 +144,10 @@ __pthread_cond_timedwait: - movq %r9, 24(%rsp) - movl %edx, 4(%rsp) - -+ cmpq $0, (%r13) -+ movq $-ETIMEDOUT, %r14 -+ js 36f -+ - 38: movl cond_futex(%rdi), %r12d - - /* Unlock. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S -@@ -102,6 +102,9 @@ pthread_rwlock_timedrdlock: - je .Lreltmo - #endif - -+ cmpq $0, (%r13) -+ js 16f /* Time is already up. */ -+ - movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi - xorl PSHARED(%r12), %esi - movq %r13, %r10 -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S -@@ -99,6 +99,9 @@ pthread_rwlock_timedwrlock: - je .Lreltmo - #endif - -+ cmpq $0, (%r13) -+ js 16f /* Time is already up. */ -+ - movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi - xorl PSHARED(%r12), %esi - movq %r13, %r10 -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S -@@ -77,6 +77,9 @@ sem_timedwait: - je .Lreltmo - #endif - -+ cmpq $0, (%rsi) -+ js 16f -+ - /* This push is only needed to store the sem_t pointer for the - exception handler. */ - pushq %rdi -@@ -169,6 +172,19 @@ sem_timedwait: - - retq - -+16: -+#if USE___THREAD -+ movq errno@gottpoff(%rip), %rdx -+ movl $ETIMEDOUT, %fs:(%rdx) -+#else -+ callq __errno_location@plt -+ movl $ETIMEDOUT, (%rax) -+#endif -+ -+ orl $-1, %eax -+ -+ retq -+ - #ifndef __ASSUME_FUTEX_CLOCK_REALTIME - .Lreltmo: - pushq %r12 -Index: glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/nptl/tst-abstime.c -@@ -0,0 +1,98 @@ -+/* Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Andreas Schwab , 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+ -+static pthread_cond_t c = PTHREAD_COND_INITIALIZER; -+static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; -+static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; -+static pthread_rwlock_t rw1 = PTHREAD_RWLOCK_INITIALIZER; -+static pthread_rwlock_t rw2 = PTHREAD_RWLOCK_INITIALIZER; -+static sem_t sem; -+ -+static void * -+th (void *arg) -+{ -+ long int res = 0; -+ int r; -+ struct timespec t = { -2, 0 }; -+ -+ r = pthread_mutex_timedlock (&m1, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_mutex_timedlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ r = pthread_rwlock_timedrdlock (&rw1, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ r = pthread_rwlock_timedwrlock (&rw2, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT"); -+ res = 1; -+ } -+ return (void *) res; -+} -+ -+static int -+do_test (void) -+{ -+ int res = 0; -+ int r; -+ struct timespec t = { -2, 0 }; -+ pthread_t pth; -+ -+ sem_init (&sem, 0, 0); -+ r = sem_timedwait (&sem, &t); -+ if (r != -1 || errno != ETIMEDOUT) -+ { -+ puts ("sem_timedwait did not fail with ETIMEDOUT"); -+ res = 1; -+ } -+ -+ pthread_mutex_lock (&m1); -+ pthread_rwlock_wrlock (&rw1); -+ pthread_rwlock_rdlock (&rw2); -+ pthread_mutex_lock (&m2); -+ if (pthread_create (&pth, 0, th, 0) != 0) -+ { -+ puts ("cannot create thread"); -+ return 1; -+ } -+ r = pthread_cond_timedwait (&c, &m2, &t); -+ if (r != ETIMEDOUT) -+ { -+ puts ("pthread_cond_timedwait did not return ETIMEDOUT"); -+ res = 1; -+ } -+ void *thres; -+ pthread_join (pth, &thres); -+ return res | (thres != NULL); -+} -+ -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh582738.patch b/src/patches/glibc/glibc-rh582738.patch deleted file mode 100644 index 40f7b80ff..000000000 --- a/src/patches/glibc/glibc-rh582738.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: glibc-2.11-382-g1cdb215/nscd/nscd.init -=================================================================== ---- glibc-2.11-382-g1cdb215.orig/nscd/nscd.init -+++ glibc-2.11-382-g1cdb215/nscd/nscd.init -@@ -76,7 +76,7 @@ case "$1" in - RETVAL=$? - ;; - stop) -- stop -+ [ ! -e /var/lock/subsys/nscd ] || stop - RETVAL=$? - ;; - status) diff --git a/src/patches/glibc/glibc-rh587360.patch b/src/patches/glibc/glibc-rh587360.patch deleted file mode 100644 index 07b62e60b..000000000 --- a/src/patches/glibc/glibc-rh587360.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: glibc-2.11-382-g1cdb215/posix/regexec.c -=================================================================== ---- glibc-2.11-382-g1cdb215.orig/posix/regexec.c -+++ glibc-2.11-382-g1cdb215/posix/regexec.c -@@ -4031,7 +4031,7 @@ find_collation_sequence_value (const uns - /* Skip the collation sequence value. */ - idx += sizeof (uint32_t); - /* Skip the wide char sequence of the collating element. */ -- idx = idx + sizeof (uint32_t) * (extra[idx] + 1); -+ idx = idx + sizeof (uint32_t) * (*(int32_t *) (extra + idx) + 1); - /* If we found the entry, return the sequence value. */ - if (found) - return *(uint32_t *) (extra + idx); diff --git a/src/patches/glibc/glibc-rh593396.patch b/src/patches/glibc/glibc-rh593396.patch deleted file mode 100644 index b907a364d..000000000 --- a/src/patches/glibc/glibc-rh593396.patch +++ /dev/null @@ -1,42 +0,0 @@ -2010-05-06 Ulrich Drepper - - * malloc/malloc.c (_int_free): Possible race in the most recently - added check. Only act on the data if no current modification - happened. - -Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c -+++ glibc-2.12-2-gc4ccff1/malloc/malloc.c -@@ -4859,6 +4859,7 @@ _int_free(mstate av, mchunkptr p) - #ifdef ATOMIC_FASTBINS - mchunkptr fd; - mchunkptr old = *fb; -+ unsigned int old_idx = ~0u; - do - { - /* Another simple check: make sure the top of the bin is not the -@@ -4868,15 +4869,17 @@ _int_free(mstate av, mchunkptr p) - errstr = "double free or corruption (fasttop)"; - goto errout; - } -- if (old != NULL -- && __builtin_expect (fastbin_index(chunksize(old)) != idx, 0)) -- { -- errstr = "invalid fastbin entry (free)"; -- goto errout; -- } -+ if (old != NULL) -+ old_idx = fastbin_index(chunksize(old)); - p->fd = fd = old; - } - while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd); -+ -+ if (fd != NULL && __builtin_expect (old_idx != idx, 0)) -+ { -+ errstr = "invalid fastbin entry (free)"; -+ goto errout; -+ } - #else - /* Another simple check: make sure the top of the bin is not the - record we are going to add (i.e., double free). */ diff --git a/src/patches/glibc/glibc-rh593686.patch b/src/patches/glibc/glibc-rh593686.patch deleted file mode 100644 index 3eceb6829..000000000 --- a/src/patches/glibc/glibc-rh593686.patch +++ /dev/null @@ -1,179 +0,0 @@ -2010-05-26 Andreas Schwab - - * elf/Makefile: Add rules to build and run unload8 test. - * elf/unload8.c: New file. - * elf/unload8mod1.c: New file. - * elf/unload8mod1x.c: New file. - * elf/unload8mod2.c: New file. - * elf/unload8mod3.c: New file. - - * elf/dl-close.c (_dl_close_worker): Reset private search list if - it wasn't used. - -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -89,6 +89,7 @@ distribute := rtld-Rules \ - unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ - unload6mod1.c unload6mod2.c unload6mod3.c \ - unload7mod1.c unload7mod2.c \ -+ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ - tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ - tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ - tst-auditmod4a.c tst-auditmod4b.c \ -@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest l - tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ -- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ -+ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ - tst-audit1 tst-audit2 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 -@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testob - unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ - unload6mod1 unload6mod2 unload6mod3 \ - unload7mod1 unload7mod2 \ -+ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ - tst-unique2mod1 tst-unique2mod2 -@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) - $(objpfx)unload6mod3.so: $(libdl) - $(objpfx)unload7mod1.so: $(libdl) - $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so -+$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so -+$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so -+$(objpfx)unload8mod3.so: $(libdl) - - LDFLAGS-tst-tlsmod5.so = -nostdlib - LDFLAGS-tst-tlsmod6.so = -nostdlib -@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) - $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so - unload7-ENV = MALLOC_PERTURB_=85 - -+$(objpfx)unload8: $(libdl) -+$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so -+ - ifdef libdl - $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a - $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so -Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-close.c -@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) - - imap->l_scope_max = new_size; - } -+ else if (new_list != NULL) -+ { -+ /* We didn't change the scope array, so reset the search -+ list. */ -+ imap->l_searchlist.r_list = NULL; -+ imap->l_searchlist.r_nlist = 0; -+ } - - /* The loader is gone, so mark the object as not having one. - Note: l_idx != IDX_STILL_USED -> object will be removed. */ -Index: glibc-2.12-2-gc4ccff1/elf/unload8.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8.c -@@ -0,0 +1,33 @@ -+#include -+#include -+ -+int -+main (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod1.so failed"); -+ return 1; -+ } -+ -+ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); -+ if (h2 == NULL) -+ { -+ puts ("dlopen unload8mod1x.so failed"); -+ return 1; -+ } -+ dlclose (h2); -+ -+ int (*mod1) (void) = dlsym (h, "mod1"); -+ if (mod1 == NULL) -+ { -+ puts ("dlsym failed"); -+ return 1; -+ } -+ -+ mod1 (); -+ dlclose (h); -+ -+ return 0; -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod1.c -@@ -0,0 +1,7 @@ -+extern void mod2 (void); -+ -+void -+mod1 (void) -+{ -+ mod2 (); -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod1x.c -@@ -0,0 +1 @@ -+int mod1x; -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod2.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod2.c -@@ -0,0 +1,7 @@ -+extern void mod3 (void); -+ -+void -+mod2 (void) -+{ -+ mod3 (); -+} -Index: glibc-2.12-2-gc4ccff1/elf/unload8mod3.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/elf/unload8mod3.c -@@ -0,0 +1,27 @@ -+#include -+#include -+#include -+ -+void -+mod3_fini2 (void) -+{ -+} -+ -+void -+mod3_fini (void) -+{ -+ mod3_fini2 (); -+} -+ -+void -+mod3 (void) -+{ -+ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); -+ if (h == NULL) -+ { -+ puts ("dlopen unload8mod2.so failed"); -+ exit (1); -+ } -+ -+ atexit (mod3_fini); -+} diff --git a/src/patches/glibc/glibc-rh601686.patch b/src/patches/glibc/glibc-rh601686.patch deleted file mode 100644 index 01e42dce4..000000000 --- a/src/patches/glibc/glibc-rh601686.patch +++ /dev/null @@ -1,4640 +0,0 @@ -2010-11-09 H.J. Lu - - [BZ #12205] - * string/test-strncasecmp.c (check_result): New function. - (do_one_test): Use it. - (check1): New function. - (test_main): Use it. - * sysdeps/i386/i686/multiarch/strcmp.S (nibble_ashr_use_sse4_2_exit): - Support strcasecmp and strncasecmp. - -2010-10-03 Ulrich Drepper - - [BZ #12077] - * sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer - for strncmp and strncasecmp. - * string/stratcliff.c: Add tests for strcmp and strncmp. - * wcsmbs/wcsatcliff.c: Adjust for stratcliff change. - -2010-09-20 Ulrich Drepper - - * sysdeps/x86_64/strcmp.S: Fix another type in strncasecmp limit - detection. - -2010-08-19 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strcmp.S: Fix two typos in strncasecmp - handling. - -2010-08-15 Ulrich Drepper - - * sysdeps/x86_64/strcmp.S: Use correct register for fourth parameter - of strncasecmp_l. - * sysdeps/multiarch/strcmp.S: Likewise. - -2010-08-14 Ulrich Drepper - - * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add - strncase_l-nonascii. - * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): - Add strncase_l-ssse3. - * sysdeps/x86_64/multiarch/strcmp.S: Prepare for use as strncasecmp. - * sysdeps/x86_64/strcmp.S: Likewise. - * sysdeps/x86_64/multiarch/strncase_l-ssse3.S: New file. - * sysdeps/x86_64/multiarch/strncase_l.S: New file. - * sysdeps/x86_64/strncase.S: New file. - * sysdeps/x86_64/strncase_l-nonascii.c: New file. - * sysdeps/x86_64/strncase_l.S: New file. - * string/Makefile (strop-tests): Add strncasecmp. - * string/test-strncasecmp.c: New file. - - * sysdeps/x86_64/strcasecmp_l-nonascii.c: Add prototype to avoid - warning. - - * sysdeps/x86_64/strcmp.S: Move definition of NO_NOLOCALE_ALIAS to... - * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: ... here. - -2010-07-31 Ulrich Drepper - - * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines): - Add strcasecmp_l-ssse3. - * sysdeps/x86_64/multiarch/strcmp.S: Add support to compile for - strcasecmp. - * sysdeps/x86_64/strcmp.S: Allow more flexible compiling of strcasecmp. - * sysdeps/x86_64/multiarch/strcasecmp_l.S: New file. - * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: New file. - -2010-07-30 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strcmp.S: Pretty printing. - - * string/Makefile (strop-tests): Add strcasecmp. - * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add - strcasecmp_l-nonascii. - (gen-as-const-headers): Add locale-defines.sym. - * sysdeps/x86_64/strcmp.S: Add support for strcasecmp implementation. - * sysdeps/x86_64/strcasecmp.S: New file. - * sysdeps/x86_64/strcasecmp_l.S: New file. - * sysdeps/x86_64/strcasecmp_l-nonascii.c: New file. - * sysdeps/x86_64/locale-defines.sym: New file. - * string/test-strcasecmp.c: New file. - - * string/test-strcasestr.c: Test both ends of the range of characters. - * sysdeps/x86_64/multiarch/strstr.c: Fix UCHIGH definition. - -2010-07-26 Ulrich Drepper - - * string/test-strnlen.c: New file. - * string/Makefile (strop-tests): Add strnlen. - * string/tester.c (test_strnlen): Add a few more test cases. - * string/tst-strlen.c: Better error reporting. - - * sysdeps/x86_64/strnlen.S: New file. - -2010-07-24 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strstr.c (__m128i_strloadu_tolower): Use - lower-latency instructions. - -2010-07-23 Ulrich Drepper - - * string/test-strcasestr.c: New file. - * string/test-strstr.c: New file. - * string/Makefile (strop-tests): Add strstr and strcasestr. - * string/str-two-way.h: Don't undefine MAX. - * string/strcasestr.c: Don't define alias if NO_ALIAS is defined. - -2010-07-21 Andreas Schwab - - * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add - strcasestr-nonascii. - (CFLAGS-strcasestr-nonascii.c): Define. - * sysdeps/i386/i686/multiarch/strcasestr-nonascii.c: New file. - * sysdeps/x86_64/multiarch/strcasestr-nonascii.c (STRSTR_SSE42): - Remove unused attribute. - -2010-07-16 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function - call in strcasestr. - * sysdeps/x86_64/multiarch/strcasestr.c: Declare - __strcasestr_sse42_nonascii. - * sysdeps/x86_64/multiarch/Makefile: Add rules to build - strcasestr-nonascii.c. - * sysdeps/x86_64/multiarch/strcasestr-nonascii.c: New file. - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -48,7 +48,8 @@ o-objects.ob := memcpy.o memset.o memchr - - strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ - stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ -- strlen strncmp strncpy strpbrk strrchr strspn memmem -+ strlen strncmp strncpy strpbrk strrchr strspn memmem \ -+ strstr strcasestr strnlen strcasecmp strncasecmp - tests := tester inl-tester noinl-tester testcopy test-ffs \ - tst-strlen stratcliff tst-svc tst-inlcall \ - bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ -Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h -+++ glibc-2.12-2-gc4ccff1/string/str-two-way.h -@@ -426,5 +426,4 @@ two_way_long_needle (const unsigned char - #undef AVAILABLE - #undef CANON_ELEMENT - #undef CMP_FUNC --#undef MAX - #undef RETURN_TYPE -Index: glibc-2.12-2-gc4ccff1/string/stratcliff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/stratcliff.c -+++ glibc-2.12-2-gc4ccff1/string/stratcliff.c -@@ -47,6 +47,8 @@ - # define MEMCPY memcpy - # define MEMPCPY mempcpy - # define MEMCHR memchr -+# define STRCMP strcmp -+# define STRNCMP strncmp - #endif - - -@@ -277,7 +279,74 @@ do_test (void) - - adr[inner] = L('T'); - } -- } -+ } -+ -+ /* strcmp/wcscmp tests */ -+ for (outer = 1; outer < 32; ++outer) -+ for (middle = 0; middle < 16; ++middle) -+ { -+ MEMSET (adr + middle, L('T'), 256); -+ adr[256] = L('\0'); -+ MEMSET (dest + nchars - outer, L('T'), outer - 1); -+ dest[nchars - 1] = L('\0'); -+ -+ if (STRCMP (adr + middle, dest + nchars - outer) <= 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d\n", -+ STRINGIFY (STRCMP), outer, middle); -+ result = 1; -+ } -+ -+ if (STRCMP (dest + nchars - outer, adr + middle) >= 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d\n", -+ STRINGIFY (STRCMP), outer, middle); -+ result = 1; -+ } -+ } -+ -+ /* strncmp/wcsncmp tests */ -+ for (outer = 1; outer < 32; ++outer) -+ for (middle = 0; middle < 16; ++middle) -+ { -+ MEMSET (adr + middle, L('T'), 256); -+ adr[256] = L('\0'); -+ MEMSET (dest + nchars - outer, L('T'), outer - 1); -+ dest[nchars - 1] = L('U'); -+ -+ for (inner = 0; inner < outer; ++inner) -+ { -+ if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d, " -+ "inner = %d\n", -+ STRINGIFY (STRNCMP), outer, middle, inner); -+ result = 1; -+ } -+ -+ if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d, " -+ "inner = %d\n", -+ STRINGIFY (STRNCMP), outer, middle, inner); -+ result = 1; -+ } -+ } -+ -+ if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0) -+ { -+ printf ("%s 1 flunked for outer = %d, middle = %d, full\n", -+ STRINGIFY (STRNCMP), outer, middle); -+ result = 1; -+ } -+ -+ if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0) -+ { -+ printf ("%s 2 flunked for outer = %d, middle = %d, full\n", -+ STRINGIFY (STRNCMP), outer, middle); -+ result = 1; -+ } -+ } - - /* strncpy/wcsncpy tests */ - adr[nchars - 1] = L('T'); -Index: glibc-2.12-2-gc4ccff1/string/strcasestr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/strcasestr.c -+++ glibc-2.12-2-gc4ccff1/string/strcasestr.c -@@ -103,4 +103,6 @@ STRCASESTR (const char *haystack_start, - - #undef LONG_NEEDLE_THRESHOLD - -+#ifndef NO_ALIAS - weak_alias (__strcasestr, strcasestr) -+#endif -Index: glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strcasecmp.c -@@ -0,0 +1,276 @@ -+/* Test and measure strcasecmp functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek , 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef int (*proto_t) (const char *, const char *); -+static int simple_strcasecmp (const char *, const char *); -+static int stupid_strcasecmp (const char *, const char *); -+ -+IMPL (stupid_strcasecmp, 0) -+IMPL (simple_strcasecmp, 0) -+IMPL (strcasecmp, 1) -+ -+static int -+simple_strcasecmp (const char *s1, const char *s2) -+{ -+ int ret; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ ++s2; -+ return ret; -+} -+ -+static int -+stupid_strcasecmp (const char *s1, const char *s2) -+{ -+ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) -+{ -+ int result = CALL (impl, s1, s2); -+ if ((exp_result == 0 && result != 0) -+ || (exp_result < 0 && result >= 0) -+ || (exp_result > 0 && result <= 0)) -+ { -+ error (0, 0, "Wrong result in function %s %d %d", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align1, align2, pos, len1, len2; -+ int result; -+ long r; -+ unsigned char *p1 = buf1 + page_size - 512; -+ unsigned char *p2 = buf2 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align1 = random () & 31; -+ if (random () & 1) -+ align2 = random () & 31; -+ else -+ align2 = align1 + (random () & 24); -+ pos = random () & 511; -+ j = align1 > align2 ? align1 : align2; -+ if (pos + j >= 511) -+ pos = 510 - j - (random () & 7); -+ len1 = random () & 511; -+ if (pos >= len1 && (random () & 1)) -+ len1 = pos + (random () & 7); -+ if (len1 + j >= 512) -+ len1 = 511 - j - (random () & 7); -+ if (pos >= len1) -+ len2 = len1; -+ else -+ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); -+ j = (pos > len2 ? pos : len2) + align1 + 64; -+ if (j > 512) -+ j = 512; -+ for (i = 0; i < j; ++i) -+ { -+ p1[i] = tolower (random () & 255); -+ if (i < len1 + align1 && !p1[i]) -+ { -+ p1[i] = tolower (random () & 255); -+ if (!p1[i]) -+ p1[i] = tolower (1 + (random () & 127)); -+ } -+ } -+ for (i = 0; i < j; ++i) -+ { -+ p2[i] = toupper (random () & 255); -+ if (i < len2 + align2 && !p2[i]) -+ { -+ p2[i] = toupper (random () & 255); -+ if (!p2[i]) -+ toupper (p2[i] = 1 + (random () & 127)); -+ } -+ } -+ -+ result = 0; -+ memcpy (p2 + align2, p1 + align1, pos); -+ if (pos < len1) -+ { -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ { -+ p2[align2 + pos] = toupper (random () & 255); -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ p2[align2 + pos] = toupper (p1[align1 + pos] -+ + 3 + (random () & 127)); -+ } -+ -+ if (p1[align1 + pos] < tolower (p2[align2 + pos])) -+ result = -1; -+ else -+ result = 1; -+ } -+ p1[len1 + align1] = 0; -+ p2[len2 + align2] = 0; -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2)); -+ /* Test whether on 64-bit architectures where ABI requires -+ callee to promote has the promotion been done. */ -+ asm ("" : "=g" (r) : "0" (r)); -+ if ((r == 0 && result) -+ || (r < 0 && result >= 0) -+ || (r > 0 && result <= 0)) -+ { -+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", -+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i, 127, 0); -+ do_test (i, i, i, 127, 1); -+ do_test (i, i, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 254, 0); -+ do_test (0, 0, 2 << i, 127, 1); -+ do_test (0, 0, 2 << i, 254, 1); -+ do_test (0, 0, 2 << i, 127, -1); -+ do_test (0, 0, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, 127, 0); -+ do_test (2 * i, i, 8 << i, 254, 0); -+ do_test (i, 2 * i, 8 << i, 127, 1); -+ do_test (2 * i, i, 8 << i, 254, 1); -+ do_test (i, 2 * i, 8 << i, 127, -1); -+ do_test (2 * i, i, 8 << i, 254, -1); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strcasestr.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strcasestr.c -@@ -0,0 +1,197 @@ -+/* Test and measure strcasestr functions. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Ulrich Drepper , 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+ -+#define STRCASESTR simple_strcasestr -+#define NO_ALIAS -+#define __strncasecmp strncasecmp -+#include "strcasestr.c" -+ -+ -+static char * -+stupid_strcasestr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (tolower (s1[i + j]) != tolower (s2[j])) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strcasestr, 0) -+IMPL (simple_strcasestr, 0) -+IMPL (strcasestr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ char *result = CALL (impl, s1, s2); -+ if (result != exp_result) -+ { -+ error (0, 0, "Wrong result in function %s %s %s", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcxyz"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ for (size_t i = 0; i < len2; ++i) -+ s1[len1 - len2 + i] = toupper (s2[i]); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strncasecmp.c -@@ -0,0 +1,349 @@ -+/* Test and measure strncasecmp functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek , 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef int (*proto_t) (const char *, const char *, size_t); -+static int simple_strncasecmp (const char *, const char *, size_t); -+static int stupid_strncasecmp (const char *, const char *, size_t); -+ -+IMPL (stupid_strncasecmp, 0) -+IMPL (simple_strncasecmp, 0) -+IMPL (strncasecmp, 1) -+ -+static int -+simple_strncasecmp (const char *s1, const char *s2, size_t n) -+{ -+ int ret; -+ -+ if (n == 0) -+ return 0; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ { -+ if (--n == 0) -+ return 0; -+ ++s2; -+ } -+ return ret; -+} -+ -+static int -+stupid_strncasecmp (const char *s1, const char *s2, size_t max) -+{ -+ size_t ns1 = strlen (s1) + 1; -+ size_t ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ if (n > max) -+ n = max; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static int -+check_result (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ int result = CALL (impl, s1, s2, n); -+ if ((exp_result == 0 && result != 0) -+ || (exp_result < 0 && result >= 0) -+ || (exp_result > 0 && result <= 0)) -+ { -+ error (0, 0, "Wrong result in function %s %d %d", impl->name, -+ result, exp_result); -+ ret = 1; -+ return -1; -+ } -+ -+ return 0; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ if (check_result (impl, s1, s2, n, exp_result) < 0) -+ return; -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, n, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align1, align2, pos, len1, len2; -+ int result; -+ long r; -+ unsigned char *p1 = buf1 + page_size - 512; -+ unsigned char *p2 = buf2 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align1 = random () & 31; -+ if (random () & 1) -+ align2 = random () & 31; -+ else -+ align2 = align1 + (random () & 24); -+ pos = random () & 511; -+ j = align1 > align2 ? align1 : align2; -+ if (pos + j >= 511) -+ pos = 510 - j - (random () & 7); -+ len1 = random () & 511; -+ if (pos >= len1 && (random () & 1)) -+ len1 = pos + (random () & 7); -+ if (len1 + j >= 512) -+ len1 = 511 - j - (random () & 7); -+ if (pos >= len1) -+ len2 = len1; -+ else -+ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0); -+ j = (pos > len2 ? pos : len2) + align1 + 64; -+ if (j > 512) -+ j = 512; -+ for (i = 0; i < j; ++i) -+ { -+ p1[i] = tolower (random () & 255); -+ if (i < len1 + align1 && !p1[i]) -+ { -+ p1[i] = tolower (random () & 255); -+ if (!p1[i]) -+ p1[i] = tolower (1 + (random () & 127)); -+ } -+ } -+ for (i = 0; i < j; ++i) -+ { -+ p2[i] = toupper (random () & 255); -+ if (i < len2 + align2 && !p2[i]) -+ { -+ p2[i] = toupper (random () & 255); -+ if (!p2[i]) -+ toupper (p2[i] = 1 + (random () & 127)); -+ } -+ } -+ -+ result = 0; -+ memcpy (p2 + align2, p1 + align1, pos); -+ if (pos < len1) -+ { -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ { -+ p2[align2 + pos] = toupper (random () & 255); -+ if (tolower (p2[align2 + pos]) == p1[align1 + pos]) -+ p2[align2 + pos] = toupper (p1[align1 + pos] -+ + 3 + (random () & 127)); -+ } -+ -+ if (p1[align1 + pos] < tolower (p2[align2 + pos])) -+ result = -1; -+ else -+ result = 1; -+ } -+ p1[len1 + align1] = 0; -+ p2[len2 + align2] = 0; -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2), -+ pos + 1 + (random () & 255)); -+ /* Test whether on 64-bit architectures where ABI requires -+ callee to promote has the promotion been done. */ -+ asm ("" : "=g" (r) : "0" (r)); -+ if ((r == 0 && result) -+ || (r < 0 && result >= 0) -+ || (r > 0 && result <= 0)) -+ { -+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", -+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+ -+static void -+check1 (void) -+{ -+ static char cp [4096+16] __attribute__ ((aligned(4096))); -+ static char gotrel[4096] __attribute__ ((aligned(4096))); -+ char *s1 = cp + 0xffa; -+ char *s2 = gotrel + 0xcbe; -+ int exp_result; -+ size_t n = 6; -+ -+ strcpy (s1, "gottpoff"); -+ strcpy (s2, "GOTPLT"); -+ -+ exp_result = simple_strncasecmp (s1, s2, n); -+ FOR_EACH_IMPL (impl, 0) -+ check_result (impl, s1, s2, n, exp_result); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ check1 (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i - 1, i, 127, 0); -+ -+ do_test (i, i, i, i, 127, 0); -+ do_test (i, i, i, i, 127, 1); -+ do_test (i, i, i, i, 127, -1); -+ -+ do_test (i, i, i + 1, i, 127, 0); -+ do_test (i, i, i + 1, i, 127, 1); -+ do_test (i, i, i + 1, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 2 << i, 254, 0); -+ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); -+ -+ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); -+ -+ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strnlen.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strnlen.c -@@ -0,0 +1,197 @@ -+/* Test and measure strlen functions. -+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Jakub Jelinek , 1999. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+typedef size_t (*proto_t) (const char *, size_t); -+size_t simple_strnlen (const char *, size_t); -+ -+IMPL (simple_strnlen, 0) -+IMPL (strnlen, 1) -+ -+size_t -+simple_strnlen (const char *s, size_t maxlen) -+{ -+ size_t i; -+ -+ for (i = 0; i < maxlen && s[i]; ++i); -+ return i; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) -+{ -+ size_t len = CALL (impl, s, maxlen); -+ if (len != exp_len) -+ { -+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, -+ len, exp_len); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, maxlen); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t len, size_t maxlen, int max_char) -+{ -+ size_t i; -+ -+ align &= 7; -+ if (align + len >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ buf1[align + i] = 1 + 7 * i % max_char; -+ buf1[align + len] = 0; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", len, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ size_t i, j, n, align, len; -+ unsigned char *p = buf1 + page_size - 512; -+ -+ for (n = 0; n < ITERATIONS; n++) -+ { -+ align = random () & 15; -+ len = random () & 511; -+ if (len + align > 510) -+ len = 511 - align - (random () & 7); -+ j = len + align + 64; -+ if (j > 512) -+ j = 512; -+ -+ for (i = 0; i < j; i++) -+ { -+ if (i == len + align) -+ p[i] = 0; -+ else -+ { -+ p[i] = random () & 255; -+ if (i >= align && i < len + align && !p[i]) -+ p[i] = (random () & 127) + 1; -+ } -+ } -+ -+ FOR_EACH_IMPL (impl, 1) -+ { -+ if (len > 0 -+ && CALL (impl, (char *) (p + align), len - 1) != len - 1) -+ { -+ error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len - 1), len - 1, p); -+ ret = 1; -+ } -+ if (CALL (impl, (char *) (p + align), len) != len) -+ { -+ error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len), len, p); -+ ret = 1; -+ } -+ if (CALL (impl, (char *) (p + align), len + 1) != len) -+ { -+ error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p", -+ n, impl->name, align, -+ CALL (impl, (char *) (p + align), len + 1), len, p); -+ ret = 1; -+ } -+ } -+ } -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, i, i - 1, 127); -+ do_test (0, i, i, 127); -+ do_test (0, i, i + 1, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, i, i - 1, 127); -+ do_test (i, i, i, 127); -+ do_test (i, i, i + 1, 127); -+ } -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 127); -+ do_test (1, 1 << i, 5000, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ do_test (0, i, 5000, 255); -+ -+ for (i = 1; i < 8; ++i) -+ do_test (i, i, 5000, 255); -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 255); -+ do_test (1, 1 << i, 5000, 255); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/test-strstr.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/test-strstr.c -@@ -0,0 +1,194 @@ -+/* Test and measure strstr functions. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Written by Ulrich Drepper , 2010. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#define TEST_MAIN -+#include "test-string.h" -+ -+ -+#define STRSTR simple_strstr -+#include "strstr.c" -+ -+ -+static char * -+stupid_strstr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (s1[i + j] != s2[j]) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strstr, 0) -+IMPL (simple_strstr, 0) -+IMPL (strstr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ char *result = CALL (impl, s1, s2); -+ if (result != exp_result) -+ { -+ error (0, 0, "Wrong result in function %s %s %s", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcdef"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ memcpy (s1 + len1 - len2, s2, len2); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/string/tester.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/tester.c -+++ glibc-2.12-2-gc4ccff1/string/tester.c -@@ -441,20 +441,21 @@ test_strnlen (void) - check (strnlen ("", 10) == 0, 1); /* Empty. */ - check (strnlen ("a", 10) == 1, 2); /* Single char. */ - check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */ -- check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */ -+ check (strnlen ("foo", (size_t) -1) == 3, 4); /* limits of n. */ -+ check (strnlen ("abcd", 0) == 0, 5); /* Restricted. */ -+ check (strnlen ("abcd", 1) == 1, 6); /* Restricted. */ -+ check (strnlen ("abcd", 2) == 2, 7); /* Restricted. */ -+ check (strnlen ("abcd", 3) == 3, 8); /* Restricted. */ -+ check (strnlen ("abcd", 4) == 4, 9); /* Restricted. */ - -- { -- char buf[4096]; -- int i; -- char *p; -- for (i=0; i < 0x100; i++) -- { -- p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; -- strcpy (p, "OK"); -- strcpy (p+3, "BAD/WRONG"); -- check (strnlen (p, 100) == 2, 5+i); -- } -- } -+ char buf[4096]; -+ for (int i = 0; i < 0x100; ++i) -+ { -+ char *p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i; -+ strcpy (p, "OK"); -+ strcpy (p + 3, "BAD/WRONG"); -+ check (strnlen (p, 100) == 2, 10 + i); -+ } - } - - static void -Index: glibc-2.12-2-gc4ccff1/string/tst-strlen.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/tst-strlen.c -+++ glibc-2.12-2-gc4ccff1/string/tst-strlen.c -@@ -31,11 +31,21 @@ main(int argc, char *argv[]) - buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0'; - buf[words * 4 + 4] = '\0'; - -- if (strlen (buf) != words * 4 + lens[last] -- || strnlen (buf, -1) != words * 4 + lens[last]) -+ if (strlen (buf) != words * 4 + lens[last]) - { -- printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n", -- base, words, last); -+ printf ("\ -+strlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", -+ base, words, last, -+ strlen (buf), words * 4 + lens[last]); -+ return 1; -+ } -+ -+ if (strnlen (buf, -1) != words * 4 + lens[last]) -+ { -+ printf ("\ -+strnlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n", -+ base, words, last, -+ strnlen (buf, -1), words * 4 + lens[last]); - return 1; - } - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -@@ -9,7 +9,7 @@ sysdep_routines += bzero-sse2 memset-sse - memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ - memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ - strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ -- memcmp-ssse3 memcmp-sse4 -+ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -@@ -17,6 +17,7 @@ CFLAGS-strpbrk-c.c += -msse4 - CFLAGS-strspn-c.c += -msse4 - CFLAGS-strstr.c += -msse4 - CFLAGS-strcasestr.c += -msse4 -+CFLAGS-strcasestr-nonascii.c += -msse4 - endif - endif - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c -@@ -0,0 +1,2 @@ -+#include -+#include -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/Makefile -@@ -12,7 +12,8 @@ sysdep_routines += _mcount - endif - - ifeq ($(subdir),string) --sysdep_routines += cacheinfo -+sysdep_routines += cacheinfo strcasecmp_l-nonascii strncase_l-nonascii -+gen-as-const-headers += locale-defines.sym - endif - - ifeq ($(subdir),elf) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/locale-defines.sym -@@ -0,0 +1,11 @@ -+#include -+#include -+#include -+ -+-- -+ -+LOCALE_T___LOCALES offsetof (struct __locale_struct, __locales) -+LC_CTYPE -+_NL_CTYPE_NONASCII_CASE -+LOCALE_DATA_VALUES offsetof (struct __locale_data, values) -+SIZEOF_VALUES sizeof (((struct __locale_data *) 0)->values[0]) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -@@ -5,7 +5,9 @@ endif - - ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ -- strend-sse4 memcmp-sse4 -+ strend-sse4 memcmp-sse4 \ -+ strcasestr-nonascii strcasecmp_l-ssse3 \ -+ strncase_l-ssse3 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -@@ -13,5 +15,6 @@ CFLAGS-strpbrk-c.c += -msse4 - CFLAGS-strspn-c.c += -msse4 - CFLAGS-strstr.c += -msse4 - CFLAGS-strcasestr.c += -msse4 -+CFLAGS-strcasestr-nonascii.c += -msse4 - endif - endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S -@@ -0,0 +1,6 @@ -+#define USE_SSSE3 1 -+#define USE_AS_STRCASECMP_L -+#define NO_NOLOCALE_ALIAS -+#define STRCMP __strcasecmp_l_ssse3 -+#define __strcasecmp __strcasecmp_ssse3 -+#include "../strcmp.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasecmp_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strcasecmp_l -+#define USE_AS_STRCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strcasecmp_l, strcasecmp_l) -+libc_hidden_def (strcasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr-nonascii.c -@@ -0,0 +1,50 @@ -+/* strstr with SSE4.2 intrinsics -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+# include -+ -+ -+/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C -+ locale. */ -+static inline __m128i -+__m128i_strloadu_tolower (const unsigned char *p) -+{ -+ union -+ { -+ char b[16]; -+ __m128i x; -+ } u; -+ -+ for (int i = 0; i < 16; ++i) -+ if (p[i] == 0) -+ { -+ u.b[i] = 0; -+ break; -+ } -+ else -+ u.b[i] = tolower (p[i]); -+ -+ return u.x; -+} -+ -+ -+#define STRCASESTR_NONASCII -+#define USE_AS_STRCASESTR -+#define STRSTR_SSE42 __strcasestr_sse42_nonascii -+#include "strstr.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcasestr.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcasestr.c -@@ -1,3 +1,7 @@ -+extern char *__strcasestr_sse42_nonascii (const unsigned char *s1, -+ const unsigned char *s2) -+ attribute_hidden; -+ - #define USE_AS_STRCASESTR - #define STRSTR_SSE42 __strcasestr_sse42 - #include "strstr.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -@@ -24,7 +24,7 @@ - #ifdef USE_AS_STRNCMP - /* Since the counter, %r11, is unsigned, we branch to strcmp_exitz - if the new counter > the old one or is 0. */ --#define UPDATE_STRNCMP_COUNTER \ -+# define UPDATE_STRNCMP_COUNTER \ - /* calculate left number to compare */ \ - lea -16(%rcx, %r11), %r9; \ - cmp %r9, %r11; \ -@@ -33,23 +33,50 @@ - je LABEL(strcmp_exitz_sse4_2); \ - mov %r9, %r11 - --#define STRCMP_SSE42 __strncmp_sse42 --#define STRCMP_SSSE3 __strncmp_ssse3 --#define STRCMP_SSE2 __strncmp_sse2 --#define __GI_STRCMP __GI_strncmp -+# define STRCMP_SSE42 __strncmp_sse42 -+# define STRCMP_SSSE3 __strncmp_ssse3 -+# define STRCMP_SSE2 __strncmp_sse2 -+# define __GI_STRCMP __GI_strncmp -+#elif defined USE_AS_STRCASECMP_L -+# include "locale-defines.h" -+ -+# define UPDATE_STRNCMP_COUNTER -+ -+# define STRCMP_SSE42 __strcasecmp_l_sse42 -+# define STRCMP_SSSE3 __strcasecmp_l_ssse3 -+# define STRCMP_SSE2 __strcasecmp_l_sse2 -+# define __GI_STRCMP __GI___strcasecmp_l -+#elif defined USE_AS_STRNCASECMP_L -+# include "locale-defines.h" -+ -+/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz -+ if the new counter > the old one or is 0. */ -+# define UPDATE_STRNCMP_COUNTER \ -+ /* calculate left number to compare */ \ -+ lea -16(%rcx, %r11), %r9; \ -+ cmp %r9, %r11; \ -+ jb LABEL(strcmp_exitz_sse4_2); \ -+ test %r9, %r9; \ -+ je LABEL(strcmp_exitz_sse4_2); \ -+ mov %r9, %r11 -+ -+# define STRCMP_SSE42 __strncasecmp_l_sse42 -+# define STRCMP_SSSE3 __strncasecmp_l_ssse3 -+# define STRCMP_SSE2 __strncasecmp_l_sse2 -+# define __GI_STRCMP __GI___strncasecmp_l - #else --#define UPDATE_STRNCMP_COUNTER --#ifndef STRCMP --#define STRCMP strcmp --#define STRCMP_SSE42 __strcmp_sse42 --#define STRCMP_SSSE3 __strcmp_ssse3 --#define STRCMP_SSE2 __strcmp_sse2 --#define __GI_STRCMP __GI_strcmp --#endif -+# define UPDATE_STRNCMP_COUNTER -+# ifndef STRCMP -+# define STRCMP strcmp -+# define STRCMP_SSE42 __strcmp_sse42 -+# define STRCMP_SSSE3 __strcmp_ssse3 -+# define STRCMP_SSE2 __strcmp_sse2 -+# define __GI_STRCMP __GI_strcmp -+# endif - #endif - - #ifndef LABEL --#define LABEL(l) L(l) -+# define LABEL(l) L(l) - #endif - - /* Define multiple versions only for the definition in libc. Don't -@@ -73,6 +100,43 @@ ENTRY(STRCMP) - 2: ret - END(STRCMP) - -+# ifdef USE_AS_STRCASECMP_L -+ENTRY(__strcasecmp) -+ .type __strcasecmp, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: -+ leaq __strcasecmp_sse42(%rip), %rax -+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) -+ jnz 2f -+ leaq __strcasecmp_ssse3(%rip), %rax -+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) -+ jnz 2f -+ leaq __strcasecmp_sse2(%rip), %rax -+2: ret -+END(__strcasecmp) -+weak_alias (__strcasecmp, strcasecmp) -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ENTRY(__strncasecmp) -+ .type __strncasecmp, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: -+ leaq __strncasecmp_sse42(%rip), %rax -+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) -+ jnz 2f -+ leaq __strncasecmp_ssse3(%rip), %rax -+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip) -+ jnz 2f -+ leaq __strncasecmp_sse2(%rip), %rax -+2: ret -+END(__strncasecmp) -+weak_alias (__strncasecmp, strncasecmp) -+# endif -+ - /* We use 0x1a: - _SIDD_SBYTE_OPS - | _SIDD_CMP_EQUAL_EACH -@@ -101,8 +165,31 @@ END(STRCMP) - - /* Put all SSE 4.2 functions together. */ - .section .text.sse4.2,"ax",@progbits -- .align 16 -+ .align 16 - .type STRCMP_SSE42, @function -+# ifdef USE_AS_STRCASECMP_L -+ENTRY (__strcasecmp_sse42) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rdx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END (__strcasecmp_sse42) -+ /* FALLTHROUGH to strcasecmp_l. */ -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ENTRY (__strncasecmp_sse42) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rcx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END (__strncasecmp_sse42) -+ /* FALLTHROUGH to strncasecmp_l. */ -+# endif -+ - STRCMP_SSE42: - cfi_startproc - CALL_MCOUNT -@@ -110,24 +197,87 @@ STRCMP_SSE42: - /* - * This implementation uses SSE to compare up to 16 bytes at a time. - */ --#ifdef USE_AS_STRNCMP -+# ifdef USE_AS_STRCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax -+# else -+ movq (%rdx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strcasecmp_l_nonascii -+# endif -+# ifdef USE_AS_STRNCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax -+# else -+ movq (%rcx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strncasecmp_l_nonascii -+# endif -+ -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - test %rdx, %rdx - je LABEL(strcmp_exitz_sse4_2) - cmp $1, %rdx - je LABEL(Byte0_sse4_2) - mov %rdx, %r11 --#endif -+# endif - mov %esi, %ecx - mov %edi, %eax - /* Use 64bit AND here to avoid long NOP padding. */ - and $0x3f, %rcx /* rsi alignment in cache line */ - and $0x3f, %rax /* rdi alignment in cache line */ -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+.Lbelowupper_sse4: -+ .quad 0x4040404040404040 -+ .quad 0x4040404040404040 -+.Ltopupper_sse4: -+ .quad 0x5b5b5b5b5b5b5b5b -+ .quad 0x5b5b5b5b5b5b5b5b -+.Ltouppermask_sse4: -+ .quad 0x2020202020202020 -+ .quad 0x2020202020202020 -+ .previous -+ movdqa .Lbelowupper_sse4(%rip), %xmm4 -+# define UCLOW_reg %xmm4 -+ movdqa .Ltopupper_sse4(%rip), %xmm5 -+# define UCHIGH_reg %xmm5 -+ movdqa .Ltouppermask_sse4(%rip), %xmm6 -+# define LCQWORD_reg %xmm6 -+# endif - cmp $0x30, %ecx - ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */ - cmp $0x30, %eax - ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */ - movdqu (%rdi), %xmm1 - movdqu (%rsi), %xmm2 -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+# define TOLOWER(reg1, reg2) \ -+ movdqa reg1, %xmm7; \ -+ movdqa UCHIGH_reg, %xmm8; \ -+ movdqa reg2, %xmm9; \ -+ movdqa UCHIGH_reg, %xmm10; \ -+ pcmpgtb UCLOW_reg, %xmm7; \ -+ pcmpgtb reg1, %xmm8; \ -+ pcmpgtb UCLOW_reg, %xmm9; \ -+ pcmpgtb reg2, %xmm10; \ -+ pand %xmm8, %xmm7; \ -+ pand %xmm10, %xmm9; \ -+ pand LCQWORD_reg, %xmm7; \ -+ pand LCQWORD_reg, %xmm9; \ -+ por %xmm7, reg1; \ -+ por %xmm9, reg2 -+ TOLOWER (%xmm1, %xmm2) -+# else -+# define TOLOWER(reg1, reg2) -+# endif - pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ -@@ -135,10 +285,10 @@ STRCMP_SSE42: - pmovmskb %xmm1, %edx - sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ - jnz LABEL(less16bytes_sse4_2)/* If not, find different value or null char */ --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2)/* finish comparision */ --#endif -+# endif - add $16, %rsi /* prepare to search next 16 bytes */ - add $16, %rdi /* prepare to search next 16 bytes */ - -@@ -180,7 +330,13 @@ LABEL(ashr_0_sse4_2): - movdqa (%rsi), %xmm1 - pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ -+# else -+ movdqa (%rdi), %xmm2 -+ TOLOWER (%xmm1, %xmm2) -+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ -+# endif - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ - pmovmskb %xmm1, %r9d - shr %cl, %edx /* adjust 0xffff for offset */ -@@ -204,44 +360,60 @@ LABEL(ashr_0_sse4_2): - .p2align 4 - LABEL(ashr_0_use_sse4_2): - movdqa (%rdi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - lea 16(%rdx), %rdx - jbe LABEL(ashr_0_use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - movdqa (%rdi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - lea 16(%rdx), %rdx - jbe LABEL(ashr_0_use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - jmp LABEL(ashr_0_use_sse4_2) - - - .p2align 4 - LABEL(ashr_0_use_sse4_2_exit): - jnc LABEL(strcmp_exitz_sse4_2) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rcx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - lea -16(%rdx, %rcx), %rcx - movzbl (%rdi, %rcx), %eax - movzbl (%rsi, %rcx), %edx -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx -+ movl (%rcx,%rax,4), %eax -+ movl (%rcx,%rdx,4), %edx -+# endif - sub %edx, %eax - ret - - - -- - /* - * The following cases will be handled by ashr_1 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(15) n -15 0(15 +(n-15) - n) ashr_1 - */ - .p2align 4 -@@ -251,6 +423,7 @@ LABEL(ashr_1_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pslldq $15, %xmm2 /* shift first string to align with second */ -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ - pmovmskb %xmm2, %r9d -@@ -281,12 +454,18 @@ LABEL(loop_ashr_1_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -294,12 +473,18 @@ LABEL(loop_ashr_1_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_1_use_sse4_2) - -@@ -309,10 +494,10 @@ LABEL(nibble_ashr_1_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $1, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $14, %ecx - ja LABEL(loop_ashr_1_use_sse4_2) - -@@ -320,7 +505,7 @@ LABEL(nibble_ashr_1_use_sse4_2): - - /* - * The following cases will be handled by ashr_2 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(14~15) n -14 1(15 +(n-14) - n) ashr_2 - */ - .p2align 4 -@@ -330,6 +515,7 @@ LABEL(ashr_2_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $14, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -360,12 +546,18 @@ LABEL(loop_ashr_2_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -373,12 +565,18 @@ LABEL(loop_ashr_2_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_2_use_sse4_2) - -@@ -388,10 +586,10 @@ LABEL(nibble_ashr_2_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $2, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $13, %ecx - ja LABEL(loop_ashr_2_use_sse4_2) - -@@ -409,6 +607,7 @@ LABEL(ashr_3_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $13, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -439,12 +638,18 @@ LABEL(loop_ashr_3_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -452,12 +657,18 @@ LABEL(loop_ashr_3_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_3_use_sse4_2) - -@@ -467,10 +678,10 @@ LABEL(nibble_ashr_3_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $3, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $12, %ecx - ja LABEL(loop_ashr_3_use_sse4_2) - -@@ -488,6 +699,7 @@ LABEL(ashr_4_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $12, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -519,12 +731,18 @@ LABEL(loop_ashr_4_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -532,12 +750,18 @@ LABEL(loop_ashr_4_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_4_use_sse4_2) - -@@ -547,10 +771,10 @@ LABEL(nibble_ashr_4_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $4, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $11, %ecx - ja LABEL(loop_ashr_4_use_sse4_2) - -@@ -559,7 +783,7 @@ LABEL(nibble_ashr_4_use_sse4_2): - /* - * The following cases will be handled by ashr_5 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 -+ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5 - */ - .p2align 4 - LABEL(ashr_5_sse4_2): -@@ -568,6 +792,7 @@ LABEL(ashr_5_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $11, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -599,12 +824,18 @@ LABEL(loop_ashr_5_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $5, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -613,12 +844,18 @@ LABEL(loop_ashr_5_use_sse4_2): - movdqa (%rdi, %rdx), %xmm0 - - palignr $5, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_5_use_sse4_2) - -@@ -628,10 +865,10 @@ LABEL(nibble_ashr_5_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $5, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $10, %ecx - ja LABEL(loop_ashr_5_use_sse4_2) - -@@ -640,7 +877,7 @@ LABEL(nibble_ashr_5_use_sse4_2): - /* - * The following cases will be handled by ashr_6 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 -+ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6 - */ - .p2align 4 - LABEL(ashr_6_sse4_2): -@@ -649,6 +886,7 @@ LABEL(ashr_6_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $10, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -680,12 +918,18 @@ LABEL(loop_ashr_6_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -693,12 +937,18 @@ LABEL(loop_ashr_6_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_6_use_sse4_2) - -@@ -708,10 +958,10 @@ LABEL(nibble_ashr_6_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $6, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $9, %ecx - ja LABEL(loop_ashr_6_use_sse4_2) - -@@ -720,7 +970,7 @@ LABEL(nibble_ashr_6_use_sse4_2): - /* - * The following cases will be handled by ashr_7 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 -+ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7 - */ - .p2align 4 - LABEL(ashr_7_sse4_2): -@@ -729,6 +979,7 @@ LABEL(ashr_7_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $9, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -760,12 +1011,18 @@ LABEL(loop_ashr_7_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -773,12 +1030,18 @@ LABEL(loop_ashr_7_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_7_use_sse4_2) - -@@ -788,10 +1051,10 @@ LABEL(nibble_ashr_7_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $7, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $8, %ecx - ja LABEL(loop_ashr_7_use_sse4_2) - -@@ -800,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): - /* - * The following cases will be handled by ashr_8 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 -+ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8 - */ - .p2align 4 - LABEL(ashr_8_sse4_2): -@@ -809,6 +1072,7 @@ LABEL(ashr_8_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $8, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -840,12 +1104,18 @@ LABEL(loop_ashr_8_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -853,12 +1123,18 @@ LABEL(loop_ashr_8_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_8_use_sse4_2) - -@@ -868,10 +1144,10 @@ LABEL(nibble_ashr_8_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $8, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $7, %ecx - ja LABEL(loop_ashr_8_use_sse4_2) - -@@ -880,7 +1156,7 @@ LABEL(nibble_ashr_8_use_sse4_2): - /* - * The following cases will be handled by ashr_9 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 -+ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9 - */ - .p2align 4 - LABEL(ashr_9_sse4_2): -@@ -889,6 +1165,7 @@ LABEL(ashr_9_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $7, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -921,12 +1198,18 @@ LABEL(loop_ashr_9_use_sse4_2): - movdqa (%rdi, %rdx), %xmm0 - - palignr $9, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -934,12 +1217,18 @@ LABEL(loop_ashr_9_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $9, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_9_use_sse4_2) - -@@ -949,10 +1238,10 @@ LABEL(nibble_ashr_9_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $9, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $6, %ecx - ja LABEL(loop_ashr_9_use_sse4_2) - -@@ -961,7 +1250,7 @@ LABEL(nibble_ashr_9_use_sse4_2): - /* - * The following cases will be handled by ashr_10 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 -+ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10 - */ - .p2align 4 - LABEL(ashr_10_sse4_2): -@@ -970,6 +1259,7 @@ LABEL(ashr_10_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $6, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1001,12 +1291,18 @@ LABEL(loop_ashr_10_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1014,12 +1310,18 @@ LABEL(loop_ashr_10_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_10_use_sse4_2) - -@@ -1029,10 +1331,10 @@ LABEL(nibble_ashr_10_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $10, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $5, %ecx - ja LABEL(loop_ashr_10_use_sse4_2) - -@@ -1041,7 +1343,7 @@ LABEL(nibble_ashr_10_use_sse4_2): - /* - * The following cases will be handled by ashr_11 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 -+ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11 - */ - .p2align 4 - LABEL(ashr_11_sse4_2): -@@ -1050,6 +1352,7 @@ LABEL(ashr_11_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $5, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1081,12 +1384,18 @@ LABEL(loop_ashr_11_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1094,12 +1403,18 @@ LABEL(loop_ashr_11_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_11_use_sse4_2) - -@@ -1109,10 +1424,10 @@ LABEL(nibble_ashr_11_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $11, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $4, %ecx - ja LABEL(loop_ashr_11_use_sse4_2) - -@@ -1121,7 +1436,7 @@ LABEL(nibble_ashr_11_use_sse4_2): - /* - * The following cases will be handled by ashr_12 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 -+ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12 - */ - .p2align 4 - LABEL(ashr_12_sse4_2): -@@ -1130,6 +1445,7 @@ LABEL(ashr_12_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $4, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1161,12 +1477,18 @@ LABEL(loop_ashr_12_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1174,12 +1496,18 @@ LABEL(loop_ashr_12_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_12_use_sse4_2) - -@@ -1189,10 +1517,10 @@ LABEL(nibble_ashr_12_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $12, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $3, %ecx - ja LABEL(loop_ashr_12_use_sse4_2) - -@@ -1201,7 +1529,7 @@ LABEL(nibble_ashr_12_use_sse4_2): - /* - * The following cases will be handled by ashr_13 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 -+ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13 - */ - .p2align 4 - LABEL(ashr_13_sse4_2): -@@ -1210,6 +1538,7 @@ LABEL(ashr_13_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $3, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1242,12 +1571,18 @@ LABEL(loop_ashr_13_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1255,12 +1590,18 @@ LABEL(loop_ashr_13_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_13_use_sse4_2) - -@@ -1270,10 +1611,10 @@ LABEL(nibble_ashr_13_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $13, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $2, %ecx - ja LABEL(loop_ashr_13_use_sse4_2) - -@@ -1282,7 +1623,7 @@ LABEL(nibble_ashr_13_use_sse4_2): - /* - * The following cases will be handled by ashr_14 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 -+ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14 - */ - .p2align 4 - LABEL(ashr_14_sse4_2): -@@ -1291,6 +1632,7 @@ LABEL(ashr_14_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $2, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1323,12 +1665,18 @@ LABEL(loop_ashr_14_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1336,12 +1684,18 @@ LABEL(loop_ashr_14_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_14_use_sse4_2) - -@@ -1351,10 +1705,10 @@ LABEL(nibble_ashr_14_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $14, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $1, %ecx - ja LABEL(loop_ashr_14_use_sse4_2) - -@@ -1363,7 +1717,7 @@ LABEL(nibble_ashr_14_use_sse4_2): - /* - * The following cases will be handled by ashr_15 - * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -- * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 -+ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15 - */ - .p2align 4 - LABEL(ashr_15_sse4_2): -@@ -1372,6 +1726,7 @@ LABEL(ashr_15_sse4_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $1, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1406,12 +1761,18 @@ LABEL(loop_ashr_15_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - - add $16, %rdx - add $16, %r10 -@@ -1419,12 +1780,18 @@ LABEL(loop_ashr_15_use_sse4_2): - - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 -- pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - jbe LABEL(use_sse4_2_exit) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add $16, %rdx - jmp LABEL(loop_ashr_15_use_sse4_2) - -@@ -1434,22 +1801,28 @@ LABEL(nibble_ashr_15_use_sse4_2): - movdqa -16(%rdi, %rdx), %xmm0 - psrldq $15, %xmm0 - pcmpistri $0x3a,%xmm0, %xmm0 --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - cmp %r11, %rcx - jae LABEL(nibble_ashr_use_sse4_2_exit) --#endif -+# endif - cmp $0, %ecx - ja LABEL(loop_ashr_15_use_sse4_2) - - LABEL(nibble_ashr_use_sse4_2_exit): -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpistri $0x1a,(%rsi,%rdx), %xmm0 -+# else -+ movdqa (%rsi,%rdx), %xmm1 -+ TOLOWER (%xmm0, %xmm1) -+ pcmpistri $0x1a, %xmm1, %xmm0 -+# endif - .p2align 4 - LABEL(use_sse4_2_exit): - jnc LABEL(strcmp_exitz_sse4_2) --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rcx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - add %rcx, %rdx - lea -16(%rdi, %r9), %rdi - movzbl (%rdi, %rdx), %eax -@@ -1458,6 +1831,12 @@ LABEL(use_sse4_2_exit): - jz LABEL(use_sse4_2_ret_sse4_2) - xchg %eax, %edx - LABEL(use_sse4_2_ret_sse4_2): -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx -+ movl (%rcx,%rdx,4), %edx -+ movl (%rcx,%rax,4), %eax -+# endif -+ - sub %edx, %eax - ret - -@@ -1473,13 +1852,19 @@ LABEL(ret_sse4_2): - LABEL(less16bytes_sse4_2): - bsf %rdx, %rdx /* find and store bit index in %rdx */ - --#ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rdx, %r11 - jbe LABEL(strcmp_exitz_sse4_2) --#endif -+# endif - movzbl (%rsi, %rdx), %ecx - movzbl (%rdi, %rdx), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - -@@ -1488,15 +1873,27 @@ LABEL(strcmp_exitz_sse4_2): - ret - - .p2align 4 -+ // XXX Same as code above - LABEL(Byte0_sse4_2): - movzx (%rsi), %ecx - movzx (%rdi), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - cfi_endproc - .size STRCMP_SSE42, .-STRCMP_SSE42 - -+# undef UCLOW_reg -+# undef UCHIGH_reg -+# undef LCQWORD_reg -+# undef TOLOWER -+ - /* Put all SSE 4.2 functions together. */ - .section .rodata.sse4.2,"a",@progbits - .p2align 3 -@@ -1528,6 +1925,27 @@ LABEL(unaligned_table_sse4_2): - # undef END - # define END(name) \ - cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2 -+ -+# ifdef USE_AS_STRCASECMP_L -+# define ENTRY2(name) \ -+ .type __strcasecmp_sse2, @function; \ -+ .align 16; \ -+ __strcasecmp_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# define END2(name) \ -+ cfi_endproc; .size __strcasecmp_sse2, .-__strcasecmp_sse2 -+# endif -+ -+# ifdef USE_AS_STRNCASECMP_L -+# define ENTRY2(name) \ -+ .type __strncasecmp_sse2, @function; \ -+ .align 16; \ -+ __strncasecmp_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# define END2(name) \ -+ cfi_endproc; .size __strncasecmp_sse2, .-__strncasecmp_sse2 -+# endif -+ - # undef libc_hidden_builtin_def - /* It doesn't make sense to send libc-internal strcmp calls through a PLT. - The speedup we get from using SSE4.2 instruction is likely eaten away -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l-ssse3.S -@@ -0,0 +1,6 @@ -+#define USE_SSSE3 1 -+#define USE_AS_STRNCASECMP_L -+#define NO_NOLOCALE_ALIAS -+#define STRCMP __strncasecmp_l_ssse3 -+#define __strncasecmp __strncasecmp_ssse3 -+#include "../strcmp.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strncase_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strncasecmp_l -+#define USE_AS_STRNCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strncasecmp_l, strncasecmp_l) -+libc_hidden_def (strncasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strstr.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strstr.c -@@ -67,10 +67,10 @@ - - case ECX CFlag ZFlag SFlag - 3 X 1 0 0/1 -- 4a 0 1 0 0 -- 4b 0 1 0 1 -- 4c 0 < X 1 0 0/1 -- 5 16 0 1 0 -+ 4a 0 1 0 0 -+ 4b 0 1 0 1 -+ 4c 0 < X 1 0 0/1 -+ 5 16 0 1 0 - - 3. An initial ordered-comparison fragment match, we fix up to do - subsequent string comparison -@@ -147,8 +147,7 @@ __m128i_shift_right (__m128i value, int - If EOS occurs within less than 16B before 4KB boundary, we don't - cross to next page. */ - --static __m128i --__attribute__ ((section (".text.sse4.2"))) -+static inline __m128i - __m128i_strloadu (const unsigned char * p) - { - int offset = ((size_t) p & (16 - 1)); -@@ -164,59 +163,36 @@ __m128i_strloadu (const unsigned char * - return _mm_loadu_si128 ((__m128i *) p); - } - --#ifdef USE_AS_STRCASESTR -+#if defined USE_AS_STRCASESTR && !defined STRCASESTR_NONASCII - - /* Similar to __m128i_strloadu. Convert to lower case for POSIX/C - locale. */ -- --static __m128i --__attribute__ ((section (".text.sse4.2"))) --__m128i_strloadu_tolower_posix (const unsigned char * p) -+static inline __m128i -+__m128i_strloadu_tolower (const unsigned char *p, __m128i rangeuc, -+ __m128i u2ldelta) - { - __m128i frag = __m128i_strloadu (p); - -- /* Convert frag to lower case for POSIX/C locale. */ -- __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); -- __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); -- __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44); -- __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1); -- mask2 = _mm_sub_epi8 (mask2, u2ldelta); -- return _mm_blendv_epi8 (frag, mask2, mask1); -+#define UCLOW 0x4040404040404040ULL -+#define UCHIGH 0x5b5b5b5b5b5b5b5bULL -+#define LCQWORD 0x2020202020202020ULL -+ /* Compare if 'Z' > bytes. Inverted way to get a mask for byte <= 'Z'. */ -+ __m128i r2 = _mm_cmpgt_epi8 (_mm_set1_epi64x (UCHIGH), frag); -+ /* Compare if bytes are > 'A' - 1. */ -+ __m128i r1 = _mm_cmpgt_epi8 (frag, _mm_set1_epi64x (UCLOW)); -+ /* Mask byte == ff if byte(r2) <= 'Z' and byte(r1) > 'A' - 1. */ -+ __m128i mask = _mm_and_si128 (r2, r1); -+ /* Apply lowercase bit 6 mask for above mask bytes == ff. */ -+ return _mm_or_si128 (frag, _mm_and_si128 (mask, _mm_set1_epi64x (LCQWORD))); - } - --/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C -- locale. */ -- --static __m128i --__attribute__ ((section (".text.sse4.2"))) --__m128i_strloadu_tolower (const unsigned char * p) --{ -- union -- { -- char b[16]; -- __m128i x; -- } u; -- -- for (int i = 0; i < 16; i++) -- if (p[i] == 0) -- { -- u.b[i] = 0; -- break; -- } -- else -- u.b[i] = tolower (p[i]); -- -- return u.x; --} - #endif - - /* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP - algorithm) overlap for a fully populated 16B vector. - Input parameter: 1st 16Byte loaded from the reference string of a - strstr function. -- We don't use KMP algorithm if reference string is less than 16B. -- */ -- -+ We don't use KMP algorithm if reference string is less than 16B. */ - static int - __inline__ __attribute__ ((__always_inline__,)) - KMP16Bovrlap (__m128i s2) -@@ -236,7 +212,7 @@ KMP16Bovrlap (__m128i s2) - return 1; - else if (!k1) - { -- /* There are al least two ditinct char in s2. If byte 0 and 1 are -+ /* There are al least two distinct chars in s2. If byte 0 and 1 are - idential and the distinct value lies farther down, we can deduce - the next byte offset to restart full compare is least no earlier - than byte 3. */ -@@ -256,23 +232,30 @@ STRSTR_SSE42 (const unsigned char *s1, c - #define p1 s1 - const unsigned char *p2 = s2; - -- if (p2[0] == '\0') -+#ifndef STRCASESTR_NONASCII -+ if (__builtin_expect (p2[0] == '\0', 0)) - return (char *) p1; - -- if (p1[0] == '\0') -+ if (__builtin_expect (p1[0] == '\0', 0)) - return NULL; - - /* Check if p1 length is 1 byte long. */ -- if (p1[1] == '\0') -+ if (__builtin_expect (p1[1] == '\0', 0)) - return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL; -+#endif - - #ifdef USE_AS_STRCASESTR -- __m128i (*strloadu) (const unsigned char *); -- -- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0) -- strloadu = __m128i_strloadu_tolower_posix; -- else -- strloadu = __m128i_strloadu_tolower; -+# ifndef STRCASESTR_NONASCII -+ if (__builtin_expect (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) -+ != 0, 0)) -+ return __strcasestr_sse42_nonascii (s1, s2); -+ -+ const __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41); -+ const __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0); -+# define strloadu(p) __m128i_strloadu_tolower (p, rangeuc, u2ldelta) -+# else -+# define strloadu __m128i_strloadu_tolower -+# endif - #else - # define strloadu __m128i_strloadu - #endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp.S -@@ -0,0 +1 @@ -+/* In strcasecmp_l.S. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l-nonascii.c -@@ -0,0 +1,8 @@ -+#include -+ -+extern int __strcasecmp_l_nonascii (__const char *__s1, __const char *__s2, -+ __locale_t __loc); -+ -+#define __strcasecmp_l __strcasecmp_l_nonascii -+#define USE_IN_EXTENDED_LOCALE_MODEL 1 -+#include -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcasecmp_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strcasecmp_l -+#define USE_AS_STRCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strcasecmp_l, strcasecmp_l) -+libc_hidden_def (strcasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strcmp.S -@@ -51,6 +51,31 @@ - je LABEL(strcmp_exitz); \ - mov %r9, %r11 - -+#elif defined USE_AS_STRCASECMP_L -+# include "locale-defines.h" -+ -+/* No support for strcasecmp outside libc so far since it is not needed. */ -+# ifdef NOT_IN_lib -+# error "strcasecmp_l not implemented so far" -+# endif -+ -+# define UPDATE_STRNCMP_COUNTER -+#elif defined USE_AS_STRNCASECMP_L -+# include "locale-defines.h" -+ -+/* No support for strncasecmp outside libc so far since it is not needed. */ -+# ifdef NOT_IN_lib -+# error "strncasecmp_l not implemented so far" -+# endif -+ -+# define UPDATE_STRNCMP_COUNTER \ -+ /* calculate left number to compare */ \ -+ lea -16(%rcx, %r11), %r9; \ -+ cmp %r9, %r11; \ -+ jb LABEL(strcmp_exitz); \ -+ test %r9, %r9; \ -+ je LABEL(strcmp_exitz); \ -+ mov %r9, %r11 - #else - # define UPDATE_STRNCMP_COUNTER - # ifndef STRCMP -@@ -64,6 +89,46 @@ - .section .text.ssse3,"ax",@progbits - #endif - -+#ifdef USE_AS_STRCASECMP_L -+# ifndef ENTRY2 -+# define ENTRY2(name) ENTRY (name) -+# define END2(name) END (name) -+# endif -+ -+ENTRY2 (__strcasecmp) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rdx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END2 (__strcasecmp) -+# ifndef NO_NOLOCALE_ALIAS -+weak_alias (__strcasecmp, strcasecmp) -+libc_hidden_def (__strcasecmp) -+# endif -+ /* FALLTHROUGH to strcasecmp_l. */ -+#elif defined USE_AS_STRNCASECMP_L -+# ifndef ENTRY2 -+# define ENTRY2(name) ENTRY (name) -+# define END2(name) END (name) -+# endif -+ -+ENTRY2 (__strncasecmp) -+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax -+ movq %fs:(%rax),%rcx -+ -+ // XXX 5 byte should be before the function -+ /* 5-byte NOP. */ -+ .byte 0x0f,0x1f,0x44,0x00,0x00 -+END2 (__strncasecmp) -+# ifndef NO_NOLOCALE_ALIAS -+weak_alias (__strncasecmp, strncasecmp) -+libc_hidden_def (__strncasecmp) -+# endif -+ /* FALLTHROUGH to strncasecmp_l. */ -+#endif -+ - ENTRY (BP_SYM (STRCMP)) - #ifdef NOT_IN_libc - /* Simple version since we can't use SSE registers in ld.so. */ -@@ -84,10 +149,32 @@ L(neq): movl $1, %eax - ret - END (BP_SYM (STRCMP)) - #else /* NOT_IN_libc */ -+# ifdef USE_AS_STRCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax -+# else -+ movq (%rdx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strcasecmp_l_nonascii -+# elif defined USE_AS_STRNCASECMP_L -+ /* We have to fall back on the C implementation for locales -+ with encodings not matching ASCII for single bytes. */ -+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0 -+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax -+# else -+ movq (%rcx), %rax -+# endif -+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax) -+ jne __strncasecmp_l_nonascii -+# endif -+ - /* - * This implementation uses SSE to compare up to 16 bytes at a time. - */ --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - test %rdx, %rdx - je LABEL(strcmp_exitz) - cmp $1, %rdx -@@ -99,6 +186,26 @@ END (BP_SYM (STRCMP)) - /* Use 64bit AND here to avoid long NOP padding. */ - and $0x3f, %rcx /* rsi alignment in cache line */ - and $0x3f, %rax /* rdi alignment in cache line */ -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ .section .rodata.cst16,"aM",@progbits,16 -+ .align 16 -+.Lbelowupper: -+ .quad 0x4040404040404040 -+ .quad 0x4040404040404040 -+.Ltopupper: -+ .quad 0x5b5b5b5b5b5b5b5b -+ .quad 0x5b5b5b5b5b5b5b5b -+.Ltouppermask: -+ .quad 0x2020202020202020 -+ .quad 0x2020202020202020 -+ .previous -+ movdqa .Lbelowupper(%rip), %xmm5 -+# define UCLOW_reg %xmm5 -+ movdqa .Ltopupper(%rip), %xmm6 -+# define UCHIGH_reg %xmm6 -+ movdqa .Ltouppermask(%rip), %xmm7 -+# define LCQWORD_reg %xmm7 -+# endif - cmp $0x30, %ecx - ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */ - cmp $0x30, %eax -@@ -107,6 +214,26 @@ END (BP_SYM (STRCMP)) - movlpd (%rsi), %xmm2 - movhpd 8(%rdi), %xmm1 - movhpd 8(%rsi), %xmm2 -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+# define TOLOWER(reg1, reg2) \ -+ movdqa reg1, %xmm8; \ -+ movdqa UCHIGH_reg, %xmm9; \ -+ movdqa reg2, %xmm10; \ -+ movdqa UCHIGH_reg, %xmm11; \ -+ pcmpgtb UCLOW_reg, %xmm8; \ -+ pcmpgtb reg1, %xmm9; \ -+ pcmpgtb UCLOW_reg, %xmm10; \ -+ pcmpgtb reg2, %xmm11; \ -+ pand %xmm9, %xmm8; \ -+ pand %xmm11, %xmm10; \ -+ pand LCQWORD_reg, %xmm8; \ -+ pand LCQWORD_reg, %xmm10; \ -+ por %xmm8, reg1; \ -+ por %xmm10, reg2 -+ TOLOWER (%xmm1, %xmm2) -+# else -+# define TOLOWER(reg1, reg2) -+# endif - pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */ -@@ -114,7 +241,7 @@ END (BP_SYM (STRCMP)) - pmovmskb %xmm1, %edx - sub $0xffff, %edx /* if first 16 bytes are same, edx == 0xffff */ - jnz LABEL(less16bytes) /* If not, find different value or null char */ --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) /* finish comparision */ - # endif -@@ -159,7 +286,13 @@ LABEL(ashr_0): - movdqa (%rsi), %xmm1 - pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */ - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ -+# if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L - pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */ -+# else -+ movdqa (%rdi), %xmm2 -+ TOLOWER (%xmm1, %xmm2) -+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */ -+# endif - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ - pmovmskb %xmm1, %r9d - shr %cl, %edx /* adjust 0xffff for offset */ -@@ -183,6 +316,7 @@ LABEL(ashr_0): - LABEL(loop_ashr_0): - movdqa (%rsi, %rcx), %xmm1 - movdqa (%rdi, %rcx), %xmm2 -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -191,13 +325,14 @@ LABEL(loop_ashr_0): - sub $0xffff, %edx - jnz LABEL(exit) /* mismatch or null char seen */ - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif - add $16, %rcx - movdqa (%rsi, %rcx), %xmm1 - movdqa (%rdi, %rcx), %xmm2 -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -205,7 +340,7 @@ LABEL(loop_ashr_0): - pmovmskb %xmm1, %edx - sub $0xffff, %edx - jnz LABEL(exit) --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -214,7 +349,7 @@ LABEL(loop_ashr_0): - - /* - * The following cases will be handled by ashr_1 -- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case -+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case - * n(15) n -15 0(15 +(n-15) - n) ashr_1 - */ - .p2align 4 -@@ -224,6 +359,7 @@ LABEL(ashr_1): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 /* Any null chars? */ - pslldq $15, %xmm2 /* shift first string to align with second */ -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */ - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ - pmovmskb %xmm2, %r9d -@@ -263,6 +399,7 @@ LABEL(gobble_ashr_1): - # else - palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -271,7 +408,7 @@ LABEL(gobble_ashr_1): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -292,6 +429,7 @@ LABEL(gobble_ashr_1): - # else - palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -300,7 +438,7 @@ LABEL(gobble_ashr_1): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -319,8 +457,8 @@ LABEL(nibble_ashr_1): - test $0xfffe, %edx - jnz LABEL(ashr_1_exittail) /* find null char*/ - --# ifdef USE_AS_STRNCMP -- cmp $14, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $15, %r11 - jbe LABEL(ashr_1_exittail) - # endif - -@@ -351,6 +489,7 @@ LABEL(ashr_2): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $14, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -390,6 +529,7 @@ LABEL(gobble_ashr_2): - # else - palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -398,7 +538,7 @@ LABEL(gobble_ashr_2): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -420,6 +560,7 @@ LABEL(gobble_ashr_2): - # else - palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -428,7 +569,7 @@ LABEL(gobble_ashr_2): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -444,8 +585,8 @@ LABEL(nibble_ashr_2): - test $0xfffc, %edx - jnz LABEL(ashr_2_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $13, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $14, %r11 - jbe LABEL(ashr_2_exittail) - # endif - -@@ -472,6 +613,7 @@ LABEL(ashr_3): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $13, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -512,6 +654,7 @@ LABEL(gobble_ashr_3): - # else - palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -520,7 +663,7 @@ LABEL(gobble_ashr_3): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -542,6 +685,7 @@ LABEL(gobble_ashr_3): - # else - palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -550,7 +694,7 @@ LABEL(gobble_ashr_3): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -566,8 +710,8 @@ LABEL(nibble_ashr_3): - test $0xfff8, %edx - jnz LABEL(ashr_3_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $12, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $13, %r11 - jbe LABEL(ashr_3_exittail) - # endif - -@@ -594,6 +738,7 @@ LABEL(ashr_4): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $12, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -634,6 +779,7 @@ LABEL(gobble_ashr_4): - # else - palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -642,7 +788,7 @@ LABEL(gobble_ashr_4): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -664,6 +810,7 @@ LABEL(gobble_ashr_4): - # else - palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -672,7 +819,7 @@ LABEL(gobble_ashr_4): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -688,8 +835,8 @@ LABEL(nibble_ashr_4): - test $0xfff0, %edx - jnz LABEL(ashr_4_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $11, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $12, %r11 - jbe LABEL(ashr_4_exittail) - # endif - -@@ -716,6 +863,7 @@ LABEL(ashr_5): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $11, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -756,6 +904,7 @@ LABEL(gobble_ashr_5): - # else - palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -764,7 +913,7 @@ LABEL(gobble_ashr_5): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -786,6 +935,7 @@ LABEL(gobble_ashr_5): - # else - palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -794,7 +944,7 @@ LABEL(gobble_ashr_5): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -810,8 +960,8 @@ LABEL(nibble_ashr_5): - test $0xffe0, %edx - jnz LABEL(ashr_5_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $10, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $11, %r11 - jbe LABEL(ashr_5_exittail) - # endif - -@@ -838,6 +988,7 @@ LABEL(ashr_6): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $10, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -878,6 +1029,7 @@ LABEL(gobble_ashr_6): - # else - palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -886,7 +1038,7 @@ LABEL(gobble_ashr_6): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -908,6 +1060,7 @@ LABEL(gobble_ashr_6): - # else - palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -916,7 +1069,7 @@ LABEL(gobble_ashr_6): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -932,8 +1085,8 @@ LABEL(nibble_ashr_6): - test $0xffc0, %edx - jnz LABEL(ashr_6_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $9, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $10, %r11 - jbe LABEL(ashr_6_exittail) - # endif - -@@ -960,6 +1113,7 @@ LABEL(ashr_7): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $9, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1000,6 +1154,7 @@ LABEL(gobble_ashr_7): - # else - palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1008,7 +1163,7 @@ LABEL(gobble_ashr_7): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1030,6 +1185,7 @@ LABEL(gobble_ashr_7): - # else - palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1038,7 +1194,7 @@ LABEL(gobble_ashr_7): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1054,8 +1210,8 @@ LABEL(nibble_ashr_7): - test $0xff80, %edx - jnz LABEL(ashr_7_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $8, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $9, %r11 - jbe LABEL(ashr_7_exittail) - # endif - -@@ -1082,6 +1238,7 @@ LABEL(ashr_8): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $8, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1122,6 +1279,7 @@ LABEL(gobble_ashr_8): - # else - palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1130,7 +1288,7 @@ LABEL(gobble_ashr_8): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1152,6 +1310,7 @@ LABEL(gobble_ashr_8): - # else - palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1160,7 +1319,7 @@ LABEL(gobble_ashr_8): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1176,8 +1335,8 @@ LABEL(nibble_ashr_8): - test $0xff00, %edx - jnz LABEL(ashr_8_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $7, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $8, %r11 - jbe LABEL(ashr_8_exittail) - # endif - -@@ -1204,6 +1363,7 @@ LABEL(ashr_9): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $7, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1244,6 +1404,7 @@ LABEL(gobble_ashr_9): - # else - palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1252,7 +1413,7 @@ LABEL(gobble_ashr_9): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1274,6 +1435,7 @@ LABEL(gobble_ashr_9): - # else - palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1282,7 +1444,7 @@ LABEL(gobble_ashr_9): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1298,8 +1460,8 @@ LABEL(nibble_ashr_9): - test $0xfe00, %edx - jnz LABEL(ashr_9_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $6, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $7, %r11 - jbe LABEL(ashr_9_exittail) - # endif - -@@ -1326,6 +1488,7 @@ LABEL(ashr_10): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $6, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1366,6 +1529,7 @@ LABEL(gobble_ashr_10): - # else - palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1374,7 +1538,7 @@ LABEL(gobble_ashr_10): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1396,6 +1560,7 @@ LABEL(gobble_ashr_10): - # else - palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1404,7 +1569,7 @@ LABEL(gobble_ashr_10): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1420,8 +1585,8 @@ LABEL(nibble_ashr_10): - test $0xfc00, %edx - jnz LABEL(ashr_10_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $5, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $6, %r11 - jbe LABEL(ashr_10_exittail) - # endif - -@@ -1448,6 +1613,7 @@ LABEL(ashr_11): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $5, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1488,6 +1654,7 @@ LABEL(gobble_ashr_11): - # else - palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1496,7 +1663,7 @@ LABEL(gobble_ashr_11): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1518,6 +1685,7 @@ LABEL(gobble_ashr_11): - # else - palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1526,7 +1694,7 @@ LABEL(gobble_ashr_11): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1542,8 +1710,8 @@ LABEL(nibble_ashr_11): - test $0xf800, %edx - jnz LABEL(ashr_11_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $4, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $5, %r11 - jbe LABEL(ashr_11_exittail) - # endif - -@@ -1570,6 +1738,7 @@ LABEL(ashr_12): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $4, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1610,6 +1779,7 @@ LABEL(gobble_ashr_12): - # else - palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1618,7 +1788,7 @@ LABEL(gobble_ashr_12): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1640,6 +1810,7 @@ LABEL(gobble_ashr_12): - # else - palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1648,7 +1819,7 @@ LABEL(gobble_ashr_12): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1664,8 +1835,8 @@ LABEL(nibble_ashr_12): - test $0xf000, %edx - jnz LABEL(ashr_12_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $3, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $4, %r11 - jbe LABEL(ashr_12_exittail) - # endif - -@@ -1692,6 +1863,7 @@ LABEL(ashr_13): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $3, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1732,6 +1904,7 @@ LABEL(gobble_ashr_13): - # else - palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1740,7 +1913,7 @@ LABEL(gobble_ashr_13): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1762,6 +1935,7 @@ LABEL(gobble_ashr_13): - # else - palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1770,7 +1944,7 @@ LABEL(gobble_ashr_13): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1786,8 +1960,8 @@ LABEL(nibble_ashr_13): - test $0xe000, %edx - jnz LABEL(ashr_13_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $2, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $3, %r11 - jbe LABEL(ashr_13_exittail) - # endif - -@@ -1814,6 +1988,7 @@ LABEL(ashr_14): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $2, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1854,6 +2029,7 @@ LABEL(gobble_ashr_14): - # else - palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1862,7 +2038,7 @@ LABEL(gobble_ashr_14): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1884,6 +2060,7 @@ LABEL(gobble_ashr_14): - # else - palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1892,7 +2069,7 @@ LABEL(gobble_ashr_14): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP | defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -1908,8 +2085,8 @@ LABEL(nibble_ashr_14): - test $0xc000, %edx - jnz LABEL(ashr_14_exittail) - --# ifdef USE_AS_STRNCMP -- cmp $1, %r11 -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmp $2, %r11 - jbe LABEL(ashr_14_exittail) - # endif - -@@ -1936,6 +2113,7 @@ LABEL(ashr_15): - movdqa (%rsi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pslldq $1, %xmm2 -+ TOLOWER (%xmm1, %xmm2) - pcmpeqb %xmm1, %xmm2 - psubb %xmm0, %xmm2 - pmovmskb %xmm2, %r9d -@@ -1978,6 +2156,7 @@ LABEL(gobble_ashr_15): - # else - palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -1986,7 +2165,7 @@ LABEL(gobble_ashr_15): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -2008,6 +2187,7 @@ LABEL(gobble_ashr_15): - # else - palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */ - # endif -+ TOLOWER (%xmm1, %xmm2) - - pcmpeqb %xmm1, %xmm0 - pcmpeqb %xmm2, %xmm1 -@@ -2016,7 +2196,7 @@ LABEL(gobble_ashr_15): - sub $0xffff, %edx - jnz LABEL(exit) - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub $16, %r11 - jbe LABEL(strcmp_exitz) - # endif -@@ -2032,9 +2212,9 @@ LABEL(nibble_ashr_15): - test $0x8000, %edx - jnz LABEL(ashr_15_exittail) - --# ifdef USE_AS_STRNCMP -- test %r11, %r11 -- je LABEL(ashr_15_exittail) -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L -+ cmpq $1, %r11 -+ jbe LABEL(ashr_15_exittail) - # endif - - pxor %xmm0, %xmm0 -@@ -2049,6 +2229,7 @@ LABEL(ashr_15_exittail): - - .p2align 4 - LABEL(aftertail): -+ TOLOWER (%xmm1, %xmm3) - pcmpeqb %xmm3, %xmm1 - psubb %xmm0, %xmm1 - pmovmskb %xmm1, %edx -@@ -2069,13 +2250,19 @@ LABEL(ret): - LABEL(less16bytes): - bsf %rdx, %rdx /* find and store bit index in %rdx */ - --# ifdef USE_AS_STRNCMP -+# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L - sub %rdx, %r11 - jbe LABEL(strcmp_exitz) - # endif - movzbl (%rsi, %rdx), %ecx - movzbl (%rdi, %rdx), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - -@@ -2088,6 +2275,12 @@ LABEL(Byte0): - movzx (%rsi), %ecx - movzx (%rdi), %eax - -+# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L -+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx -+ movl (%rdx,%rcx,4), %ecx -+ movl (%rdx,%rax,4), %eax -+# endif -+ - sub %ecx, %eax - ret - END (BP_SYM (STRCMP)) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase.S -@@ -0,0 +1 @@ -+/* In strncase_l.S. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l-nonascii.c -@@ -0,0 +1,8 @@ -+#include -+ -+extern int __strncasecmp_l_nonascii (__const char *__s1, __const char *__s2, -+ size_t __n, __locale_t __loc); -+ -+#define __strncasecmp_l __strncasecmp_l_nonascii -+#define USE_IN_EXTENDED_LOCALE_MODEL 1 -+#include -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strncase_l.S -@@ -0,0 +1,6 @@ -+#define STRCMP __strncasecmp_l -+#define USE_AS_STRNCASECMP_L -+#include "strcmp.S" -+ -+weak_alias (__strncasecmp_l, strncasecmp_l) -+libc_hidden_def (strncasecmp_l) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strnlen.S -@@ -0,0 +1,64 @@ -+/* strnlen(str,maxlen) -- determine the length of the string STR up to MAXLEN. -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Ulrich Drepper . -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+ -+ -+ .text -+ENTRY(__strnlen) -+ movq %rsi, %rax -+ testq %rsi, %rsi -+ jz 3f -+ pxor %xmm2, %xmm2 -+ movq %rdi, %rcx -+ movq %rdi, %r8 -+ movq $16, %r9 -+ andq $~15, %rdi -+ movdqa %xmm2, %xmm1 -+ pcmpeqb (%rdi), %xmm2 -+ orl $0xffffffff, %r10d -+ subq %rdi, %rcx -+ shll %cl, %r10d -+ subq %rcx, %r9 -+ pmovmskb %xmm2, %edx -+ andl %r10d, %edx -+ jnz 1f -+ subq %r9, %rsi -+ jbe 3f -+ -+2: movdqa 16(%rdi), %xmm0 -+ leaq 16(%rdi), %rdi -+ pcmpeqb %xmm1, %xmm0 -+ pmovmskb %xmm0, %edx -+ testl %edx, %edx -+ jnz 1f -+ subq $16, %rsi -+ jnbe 2b -+3: ret -+ -+1: subq %r8, %rdi -+ bsfl %edx, %edx -+ addq %rdi, %rdx -+ cmpq %rdx, %rax -+ cmovnbq %rdx, %rax -+ ret -+END(__strnlen) -+weak_alias (__strnlen, strnlen) -+libc_hidden_def (strnlen) -Index: glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wcsatcliff.c -+++ glibc-2.12-2-gc4ccff1/wcsmbs/wcsatcliff.c -@@ -16,6 +16,8 @@ - #define MEMCPY wmemcpy - #define MEMPCPY wmempcpy - #define MEMCHR wmemchr -+#define STRCMP wcscmp -+#define STRNCMP wcsncmp - - - #include "../string/stratcliff.c" diff --git a/src/patches/glibc/glibc-rh607010.patch b/src/patches/glibc/glibc-rh607010.patch deleted file mode 100644 index 6952dad85..000000000 --- a/src/patches/glibc/glibc-rh607010.patch +++ /dev/null @@ -1,26 +0,0 @@ -2010-09-07 H.J. Lu - - * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round cache sizes - up to multiple of 256 bytes. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -661,12 +661,16 @@ init_cacheinfo (void) - - if (data > 0) - { -+ /* Round data cache size up to multiple of 256 bytes. */ -+ data = (data + 255) & ~255L; - __x86_64_data_cache_size_half = data / 2; - __x86_64_data_cache_size = data; - } - - if (shared > 0) - { -+ /* Round shared cache size up to multiple of 256 bytes. */ -+ shared = (shared + 255) & ~255L; - __x86_64_shared_cache_size_half = shared / 2; - __x86_64_shared_cache_size = shared; - } diff --git a/src/patches/glibc/glibc-rh607461.patch b/src/patches/glibc/glibc-rh607461.patch deleted file mode 100644 index 79fc72cb6..000000000 --- a/src/patches/glibc/glibc-rh607461.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c -+++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -@@ -994,7 +994,16 @@ setxid_mark_thread (struct xid_command * - - /* If the thread is exiting right now, ignore it. */ - if ((ch & EXITING_BITMASK) != 0) -- return; -+ { -+ /* Release the futex if there is no other setxid in -+ progress. */ -+ if ((ch & SETXID_BITMASK) == 0) -+ { -+ t->setxid_futex = 1; -+ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE); -+ } -+ return; -+ } - } - while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling, - ch | SETXID_BITMASK, ch)); diff --git a/src/patches/glibc/glibc-rh615090.patch b/src/patches/glibc/glibc-rh615090.patch deleted file mode 100644 index e6c00f05b..000000000 --- a/src/patches/glibc/glibc-rh615090.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-07-27 Andreas Schwab - - * manual/memory.texi (Malloc Tunable Parameters): Document - M_PERTURB. - -Index: glibc-2.12-2-gc4ccff1/manual/memory.texi -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/manual/memory.texi -+++ glibc-2.12-2-gc4ccff1/manual/memory.texi -@@ -702,6 +702,11 @@ be allocated via @code{mmap}. - @item M_MMAP_MAX - The maximum number of chunks to allocate with @code{mmap}. Setting this - to zero disables all use of @code{mmap}. -+@item M_PERTURB -+If non-zero, memory blocks are filled with values depending on some -+low order bits of this parameter when they are allocated (except when -+allocated by @code{calloc}) and freed. This can be used to debug the -+use of uninitialized or freed heap memory. - @end table - - @end deftypefun diff --git a/src/patches/glibc/glibc-rh615701.patch b/src/patches/glibc/glibc-rh615701.patch deleted file mode 100644 index 283e3feb1..000000000 --- a/src/patches/glibc/glibc-rh615701.patch +++ /dev/null @@ -1,23 +0,0 @@ -2010-07-20 Roland McGrath - - * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to - dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in - ld.so.cache was broken. With it, there is no way to disable dsocaps - like LD_HWCAP_MASK can disable hwcaps. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-sysdep.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-sysdep.c -@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platfo - { - const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1]; - GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA; -+ /* Note that we add the dsocaps to the set already chosen by the -+ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT). -+ So there is no way to request ignoring an OS-supplied dsocap -+ string and bit like you can ignore an OS-supplied HWCAP bit. */ -+ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA; - size_t len; - for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1) - { diff --git a/src/patches/glibc/glibc-rh621959.patch b/src/patches/glibc/glibc-rh621959.patch deleted file mode 100644 index 315521f66..000000000 --- a/src/patches/glibc/glibc-rh621959.patch +++ /dev/null @@ -1,120 +0,0 @@ -2010-08-06 Ulrich Drepper - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): - Also fail if tpwd after pwuid call is NULL. - -2010-06-21 Andreas Schwab - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): - Restore proper fallback handling. - -2010-06-19 Ulrich Drepper - - * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Handle - OOM in getpwuid_r correctly. Return error number when the caller - should return, otherwise -1. - (getlogin_r): Adjust to return also for result of __getlogin_r_loginuid - call returning > 0 value. - * sysdeps/unix/sysv/linux/getlogin.c (getlogin): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin.c -@@ -32,8 +32,9 @@ - char * - getlogin (void) - { -- if (__getlogin_r_loginuid (name, sizeof (name)) == 0) -- return name; -+ int res = __getlogin_r_loginuid (name, sizeof (name)); -+ if (res >= 0) -+ return res == 0 ? name : NULL; - - return getlogin_fd0 (); - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getlogin_r.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getlogin_r.c -@@ -27,6 +27,10 @@ static int getlogin_r_fd0 (char *name, s - #undef getlogin_r - - -+/* Try to determine login name from /proc/self/loginuid and return 0 -+ if successful. If /proc/self/loginuid cannot be read return -1. -+ Otherwise return the error number. */ -+ - int - attribute_hidden - __getlogin_r_loginuid (name, namesize) -@@ -35,7 +39,7 @@ __getlogin_r_loginuid (name, namesize) - { - int fd = open_not_cancel_2 ("/proc/self/loginuid", O_RDONLY); - if (fd == -1) -- return 1; -+ return -1; - - /* We are reading a 32-bit number. 12 bytes are enough for the text - representation. If not, something is wrong. */ -@@ -51,37 +55,38 @@ __getlogin_r_loginuid (name, namesize) - || (uidbuf[n] = '\0', - uid = strtoul (uidbuf, &endp, 10), - endp == uidbuf || *endp != '\0')) -- return 1; -+ return -1; - - size_t buflen = 1024; - char *buf = alloca (buflen); - bool use_malloc = false; - struct passwd pwd; - struct passwd *tpwd; -+ int result = 0; - int res; - -- while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) != 0) -+ while ((res = __getpwuid_r (uid, &pwd, buf, buflen, &tpwd)) == ERANGE) - if (__libc_use_alloca (2 * buflen)) -- extend_alloca (buf, buflen, 2 * buflen); -+ buf = extend_alloca (buf, buflen, 2 * buflen); - else - { - buflen *= 2; - char *newp = realloc (use_malloc ? buf : NULL, buflen); - if (newp == NULL) - { -- fail: -- if (use_malloc) -- free (buf); -- return 1; -+ result = ENOMEM; -+ goto out; - } - buf = newp; - use_malloc = true; - } - -- if (tpwd == NULL) -- goto fail; -+ if (res != 0 || tpwd == NULL) -+ { -+ result = -1; -+ goto out; -+ } - -- int result = 0; - size_t needed = strlen (pwd.pw_name) + 1; - if (needed > namesize) - { -@@ -109,8 +114,9 @@ getlogin_r (name, namesize) - char *name; - size_t namesize; - { -- if (__getlogin_r_loginuid (name, namesize) == 0) -- return 0; -+ int res = __getlogin_r_loginuid (name, namesize); -+ if (res >= 0) -+ return res; - - return getlogin_r_fd0 (name, namesize); - } diff --git a/src/patches/glibc/glibc-rh623187.patch b/src/patches/glibc/glibc-rh623187.patch deleted file mode 100644 index 596fdd6bc..000000000 --- a/src/patches/glibc/glibc-rh623187.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-08-10 Dinakar Guniguntala - Stefan Hajnoczi - - * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If - FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S -@@ -163,7 +163,6 @@ __pthread_cond_signal: - #endif - orl $FUTEX_WAKE, %ecx - -- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx - movl $SYS_futex, %eax - /* %edx should be 1 already from $FUTEX_WAKE_OP syscall. - movl $1, %edx */ diff --git a/src/patches/glibc/glibc-rh625893.patch b/src/patches/glibc/glibc-rh625893.patch deleted file mode 100644 index 5337a425c..000000000 --- a/src/patches/glibc/glibc-rh625893.patch +++ /dev/null @@ -1,79 +0,0 @@ -2010-08-12 Andreas Schwab - - [BZ #11904] - * locale/programs/locale.c (print_assignment): New function. - (show_locale_vars): Use it. - -Index: glibc-2.12-2-gc4ccff1/locale/programs/locale.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/programs/locale.c -+++ glibc-2.12-2-gc4ccff1/locale/programs/locale.c -@@ -762,6 +762,29 @@ write_charmaps (void) - twalk (all_data, print_names); - } - -+/* Print a properly quoted assignment of NAME with VAL, using double -+ quotes iff DQUOTE is true. */ -+static void -+print_assignment (const char *name, const char *val, bool dquote) -+{ -+ printf ("%s=", name); -+ if (dquote) -+ putchar ('"'); -+ while (*val != '\0') -+ { -+ size_t segment -+ = strcspn (val, dquote ? "$`\"\\" : "~|&;<>()$`\\\"' \t\n"); -+ printf ("%.*s", (int) segment, val); -+ val += segment; -+ if (*val == '\0') -+ break; -+ putchar ('\\'); -+ putchar (*val++); -+ } -+ if (dquote) -+ putchar ('"'); -+ putchar ('\n'); -+} - - /* We have to show the contents of the environments determining the - locale. */ -@@ -769,7 +792,7 @@ static void - show_locale_vars (void) - { - size_t cat_no; -- const char *lcall = getenv ("LC_ALL"); -+ const char *lcall = getenv ("LC_ALL") ? : ""; - const char *lang = getenv ("LANG") ? : ""; - - auto void get_source (const char *name); -@@ -778,15 +801,15 @@ show_locale_vars (void) - { - char *val = getenv (name); - -- if ((lcall ?: "")[0] != '\0' || val == NULL) -- printf ("%s=\"%s\"\n", name, -- (lcall ?: "")[0] ? lcall : (lang ?: "")[0] ? lang : "POSIX"); -+ if (lcall[0] != '\0' || val == NULL) -+ print_assignment (name, lcall[0] ? lcall : lang[0] ? lang : "POSIX", -+ true); - else -- printf ("%s=%s\n", name, val); -+ print_assignment (name, val, false); - } - - /* LANG has to be the first value. */ -- printf ("LANG=%s\n", lang); -+ print_assignment ("LANG", lang, false); - - /* Now all categories in an unspecified order. */ - for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no) -@@ -794,7 +817,7 @@ show_locale_vars (void) - get_source (category[cat_no].name); - - /* The last is the LC_ALL value. */ -- printf ("LC_ALL=%s\n", lcall ? : ""); -+ print_assignment ("LC_ALL", lcall, false); - } - - diff --git a/src/patches/glibc/glibc-rh629823-2.patch b/src/patches/glibc/glibc-rh629823-2.patch deleted file mode 100644 index d3e4f45f4..000000000 --- a/src/patches/glibc/glibc-rh629823-2.patch +++ /dev/null @@ -1,95 +0,0 @@ -commit 50fd745b4dec07e8e213cf2703b5cabcfa128225 -Author: Andreas Schwab -Date: Mon Jun 10 14:39:09 2013 +0200 - - Fix handling of netgroup cache in nscd - -diff --git a/nscd/connections.c b/nscd/connections.c -index 7099215..69e3e7d 100644 ---- a/nscd/connections.c -+++ b/nscd/connections.c -@@ -1779,7 +1779,7 @@ nscd_run_worker (void *p) - else - { - /* Get the key. */ -- char keybuf[MAXKEYLEN]; -+ char keybuf[MAXKEYLEN + 1]; - - if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf, - req.key_len)) -@@ -1791,6 +1791,7 @@ nscd_run_worker (void *p) - strerror_r (errno, buf, sizeof (buf))); - goto close_and_out; - } -+ keybuf[req.key_len] = '\0'; - - if (__builtin_expect (debug_level, 0) > 0) - { -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c -index 2d6c5aa..dd06ce4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c -@@ -192,18 +192,26 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - const char *nuser = data.val.triple.user; - const char *ndomain = data.val.triple.domain; - -- if (data.val.triple.host > data.val.triple.user -- || data.val.triple.user > data.val.triple.domain) -+ if (nhost == NULL || nuser == NULL || ndomain == NULL -+ || nhost > nuser || nuser > ndomain) - { -- const char *last = MAX (nhost, -- MAX (nuser, ndomain)); -- size_t bufused = (last + strlen (last) + 1 -- - buffer); -+ const char *last = nhost; -+ if (last == NULL -+ || (nuser != NULL && nuser > last)) -+ last = nuser; -+ if (last == NULL -+ || (ndomain != NULL && ndomain > last)) -+ last = ndomain; -+ -+ size_t bufused -+ = (last == NULL -+ ? buffilled -+ : last + strlen (last) + 1 - buffer); - - /* We have to make temporary copies. */ -- size_t hostlen = strlen (nhost) + 1; -- size_t userlen = strlen (nuser) + 1; -- size_t domainlen = strlen (ndomain) + 1; -+ size_t hostlen = strlen (nhost ?: "") + 1; -+ size_t userlen = strlen (nuser ?: "") + 1; -+ size_t domainlen = strlen (ndomain ?: "") + 1; - size_t needed = hostlen + userlen + domainlen; - - if (buflen - req->key_len - bufused < needed) -@@ -226,11 +234,11 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, - } - - nhost = memcpy (buffer + bufused, -- nhost, hostlen); -+ nhost ?: "", hostlen); - nuser = memcpy ((char *) nhost + hostlen, -- nuser, userlen); -+ nuser ?: "", userlen); - ndomain = memcpy ((char *) nuser + userlen, -- ndomain, domainlen); -+ ndomain ?: "", domainlen); - } - - char *wp = buffer + buffilled; -diff --git a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c -index cac4ebf..acb2c81 100644 ---- a/nscd/nscd_netgroup.c -+++ b/nscd/nscd_netgroup.c -@@ -48,7 +48,7 @@ __nscd_setnetgrent (const char *group, struct __netgrent *datap) - { - int gc_cycle; - int nretries = 0; -- size_t group_len = strlen (group); -+ size_t group_len = strlen (group) + 1; - - /* If the mapping is available, try to search there instead of - communicating with the nscd. */ diff --git a/src/patches/glibc/glibc-rh629823.patch b/src/patches/glibc/glibc-rh629823.patch deleted file mode 100644 index 6315246f2..000000000 --- a/src/patches/glibc/glibc-rh629823.patch +++ /dev/null @@ -1,1954 +0,0 @@ -diff -Nrup a/grp/initgroups.c b/grp/initgroups.c ---- a/grp/initgroups.c 2012-08-06 15:07:48.935060494 -0600 -+++ b/grp/initgroups.c 2012-08-23 14:19:49.370442142 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1989,91,93,1996-2005,2006,2008 Free Software Foundation, Inc. -+/* Copyright (C) 1989,91,93,1996-2006,2008,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -58,7 +58,8 @@ internal_getgrouplist (const char *user, - if (__nss_not_use_nscd_group > 0 - && ++__nss_not_use_nscd_group > NSS_NSCD_RETRY) - __nss_not_use_nscd_group = 0; -- if (!__nss_not_use_nscd_group) -+ if (!__nss_not_use_nscd_group -+ && !__nss_database_custom[NSS_DBSIDX_group]) - { - int n = __nscd_getgrouplist (user, group, size, groupsp, limit); - if (n >= 0) -diff -Nrup a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c ---- a/inet/getnetgrent_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/inet/getnetgrent_r.c 2012-08-06 15:10:05.865520055 -0600 -@@ -28,6 +28,7 @@ - #include "netgroup.h" - #include "nsswitch.h" - #include -+#include - - - /* Protect above variable against multiple uses at the same time. */ -@@ -101,7 +102,7 @@ endnetgrent_hook (struct __netgrent *dat - { - enum nss_status (*endfct) (struct __netgrent *); - -- if (datap->nip == NULL) -+ if (datap->nip == NULL || datap->nip == (service_user *) -1l) - return; - - endfct = __nss_lookup_function (datap->nip, "endnetgrent"); -@@ -189,8 +190,21 @@ setnetgrent (const char *group) - - __libc_lock_lock (lock); - -+ if (__nss_not_use_nscd_netgroup > 0 -+ && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) -+ __nss_not_use_nscd_netgroup = 0; -+ -+ if (!__nss_not_use_nscd_netgroup -+ && !__nss_database_custom[NSS_DBSIDX_netgroup]) -+ { -+ result = __nscd_setnetgrent (group, &dataset); -+ if (result >= 0) -+ goto out; -+ } -+ - result = internal_setnetgrent (group, &dataset); - -+ out: - __libc_lock_unlock (lock); - - return result; -@@ -226,6 +240,26 @@ int internal_getnetgrent_r (char **hostp - char *buffer, size_t buflen, int *errnop); - libc_hidden_proto (internal_getnetgrent_r) - -+ -+static enum nss_status -+nscd_getnetgrent (struct __netgrent *datap, char *buffer, size_t buflen, -+ int *errnop) -+{ -+ if (datap->cursor >= datap->data + datap->data_size) -+ return NSS_STATUS_UNAVAIL; -+ -+ datap->type = triple_val; -+ datap->val.triple.host = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ datap->val.triple.user = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ datap->val.triple.domain = datap->cursor; -+ datap->cursor = (char *) __rawmemchr (datap->cursor, '\0') + 1; -+ -+ return NSS_STATUS_SUCCESS; -+} -+ -+ - int - internal_getnetgrent_r (char **hostp, char **userp, char **domainp, - struct __netgrent *datap, -@@ -239,9 +273,18 @@ internal_getnetgrent_r (char **hostp, ch - /* Run through available functions, starting with the same function last - run. We will repeat each function as long as it succeeds, and then go - on to the next service action. */ -- int no_more = (datap->nip == NULL -- || (fct = __nss_lookup_function (datap->nip, "getnetgrent_r")) -- == NULL); -+ int no_more = datap->nip == NULL; -+ if (! no_more) -+ { -+ if (datap->nip == (service_user *) -1l) -+ fct = nscd_getnetgrent; -+ else -+ { -+ fct = __nss_lookup_function (datap->nip, "getnetgrent_r"); -+ no_more = fct == NULL; -+ } -+ } -+ - while (! no_more) - { - status = (*fct) (datap, buffer, buflen, &errno); -@@ -337,6 +380,18 @@ int - innetgr (const char *netgroup, const char *host, const char *user, - const char *domain) - { -+ if (__nss_not_use_nscd_netgroup > 0 -+ && ++__nss_not_use_nscd_netgroup > NSS_NSCD_RETRY) -+ __nss_not_use_nscd_netgroup = 0; -+ -+ if (!__nss_not_use_nscd_netgroup -+ && !__nss_database_custom[NSS_DBSIDX_netgroup]) -+ { -+ int result = __nscd_innetgr (netgroup, host, user, domain); -+ if (result >= 0) -+ return result; -+ } -+ - union - { - int (*f) (const char *, struct __netgrent *); -@@ -444,7 +499,7 @@ innetgr (const char *netgroup, const cha - entry.needed_groups = tmp->next; - tmp->next = entry.known_groups; - entry.known_groups = tmp; -- current_group = entry.known_groups->name; -+ current_group = tmp->name; - continue; - } - -diff -Nrup a/nscd/Makefile b/nscd/Makefile ---- a/nscd/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/Makefile 2012-08-06 15:08:19.045941627 -0600 -@@ -22,7 +22,7 @@ - subdir := nscd - - routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \ -- nscd_initgroups nscd_getserv_r -+ nscd_initgroups nscd_getserv_r nscd_netgroup - aux := nscd_helper - - include ../Makeconfig -@@ -34,7 +34,8 @@ nscd-modules := nscd connections pwdcach - getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm3_r \ - getsrvbynm_r getsrvbypt_r servicescache \ - dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \ -- xmalloc xstrdup aicache initgrcache gai res_hconf -+ xmalloc xstrdup aicache initgrcache gai res_hconf \ -+ netgroupcache - - ifeq ($(have-thread-library),yes) - -@@ -122,6 +123,7 @@ CFLAGS-servicescache.c += $(nscd-cflags) - CFLAGS-getsrvbynm_r.c += $(nscd-cflags) - CFLAGS-getsrvbypt_r.c += $(nscd-cflags) - CFLAGS-res_hconf.c += $(nscd-cflags) -+CFLAGS-netgroupcache.c += $(nscd-cflags) - - ifeq (yesyes,$(have-fpie)$(build-shared)) - relro-LDFLAGS += -Wl,-z,now -diff -Nrup a/nscd/cache.c b/nscd/cache.c ---- a/nscd/cache.c 2012-08-06 15:07:48.973060344 -0600 -+++ b/nscd/cache.c 2012-08-06 15:08:19.046941626 -0600 -@@ -60,7 +60,9 @@ static time_t (*const readdfcts[LASTREQ] - [GETAI] = readdhstai, - [INITGROUPS] = readdinitgroups, - [GETSERVBYNAME] = readdservbyname, -- [GETSERVBYPORT] = readdservbyport -+ [GETSERVBYPORT] = readdservbyport, -+ [GETNETGRENT] = readdgetnetgrent, -+ [INNETGR] = readdinnetgr - }; - - -@@ -70,7 +72,7 @@ static time_t (*const readdfcts[LASTREQ] - - This function must be called with the read-lock held. */ - struct datahead * --cache_search (request_type type, void *key, size_t len, -+cache_search (request_type type, const void *key, size_t len, - struct database_dyn *table, uid_t owner) - { - unsigned long int hash = __nis_hash (key, len) % table->head->module; -diff -Nrup a/nscd/connections.c b/nscd/connections.c ---- a/nscd/connections.c 2012-08-06 15:07:49.076059937 -0600 -+++ b/nscd/connections.c 2012-08-21 21:36:10.210358578 -0600 -@@ -57,11 +57,6 @@ - #endif - - --/* Wrapper functions with error checking for standard functions. */ --extern void *xmalloc (size_t n); --extern void *xcalloc (size_t n, size_t s); --extern void *xrealloc (void *o, size_t n); -- - /* Support to run nscd as an unprivileged user */ - const char *server_user; - static uid_t server_uid; -@@ -100,7 +95,10 @@ const char *const serv2str[LASTREQ] = - [INITGROUPS] = "INITGROUPS", - [GETSERVBYNAME] = "GETSERVBYNAME", - [GETSERVBYPORT] = "GETSERVBYPORT", -- [GETFDSERV] = "GETFDSERV" -+ [GETFDSERV] = "GETFDSERV", -+ [GETNETGRENT] = "GETNETGRENT", -+ [INNETGR] = "INNETGR", -+ [GETFDNETGR] = "GETFDNETGR" - }; - - /* The control data structures for the services. */ -@@ -189,6 +187,27 @@ struct database_dyn dbs[lastdb] = - .wr_fd = -1, - .ro_fd = -1, - .mmap_used = false -+ }, -+ [netgrdb] = { -+ .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP, -+ .prune_lock = PTHREAD_MUTEX_INITIALIZER, -+ .prune_run_lock = PTHREAD_MUTEX_INITIALIZER, -+ .enabled = 0, -+ .check_file = 1, -+ .persistent = 0, -+ .propagate = 0, /* Not used. */ -+ .shared = 0, -+ .max_db_size = DEFAULT_MAX_DB_SIZE, -+ .suggested_module = DEFAULT_SUGGESTED_MODULE, -+ .reset_res = 0, -+ .filename = "/etc/netgroup", -+ .db_filename = _PATH_NSCD_NETGROUP_DB, -+ .disabled_iov = &netgroup_iov_disabled, -+ .postimeout = 28800, -+ .negtimeout = 20, -+ .wr_fd = -1, -+ .ro_fd = -1, -+ .mmap_used = false - } - }; - -@@ -218,7 +237,10 @@ static struct - [INITGROUPS] = { true, &dbs[grpdb] }, - [GETSERVBYNAME] = { true, &dbs[servdb] }, - [GETSERVBYPORT] = { true, &dbs[servdb] }, -- [GETFDSERV] = { false, &dbs[servdb] } -+ [GETFDSERV] = { false, &dbs[servdb] }, -+ [GETNETGRENT] = { true, &dbs[netgrdb] }, -+ [INNETGR] = { true, &dbs[netgrdb] }, -+ [GETFDNETGR] = { false, &dbs[netgrdb] } - }; - - -@@ -366,7 +388,8 @@ check_use (const char *data, nscd_ssize_ - static int - verify_persistent_db (void *mem, struct database_pers_head *readhead, int dbnr) - { -- assert (dbnr == pwddb || dbnr == grpdb || dbnr == hstdb || dbnr == servdb); -+ assert (dbnr == pwddb || dbnr == grpdb || dbnr == hstdb || dbnr == servdb -+ || dbnr == netgrdb); - - time_t now = time (NULL); - -@@ -1241,6 +1264,14 @@ request from '%s' [%ld] not handled due - addservbyport (db, fd, req, key, uid); - break; - -+ case GETNETGRENT: -+ addgetnetgrent (db, fd, req, key, uid); -+ break; -+ -+ case INNETGR: -+ addinnetgr (db, fd, req, key, uid); -+ break; -+ - case GETSTAT: - case SHUTDOWN: - case INVALIDATE: -@@ -1287,6 +1318,7 @@ request from '%s' [%ld] not handled due - case GETFDGR: - case GETFDHST: - case GETFDSERV: -+ case GETFDNETGR: - #ifdef SCM_RIGHTS - send_ro_fd (reqinfo[req->type].db, key, fd); - #endif -diff -Nrup a/nscd/netgroupcache.c b/nscd/netgroupcache.c ---- a/nscd/netgroupcache.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nscd/netgroupcache.c 2012-08-24 11:38:05.118254176 -0600 -@@ -0,0 +1,667 @@ -+/* Cache handling for netgroup lookup. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 2011. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published -+ by the Free Software Foundation; version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software Foundation, -+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "../inet/netgroup.h" -+#include "nscd.h" -+#include "dbg_log.h" -+#ifdef HAVE_SENDFILE -+# include -+#endif -+ -+ -+/* This is the standard reply in case the service is disabled. */ -+static const netgroup_response_header disabled = -+{ -+ .version = NSCD_VERSION, -+ .found = -1, -+ .nresults = 0, -+ .result_len = 0 -+}; -+ -+/* This is the struct describing how to write this record. */ -+const struct iovec netgroup_iov_disabled = -+{ -+ .iov_base = (void *) &disabled, -+ .iov_len = sizeof (disabled) -+}; -+ -+ -+/* This is the standard reply in case we haven't found the dataset. */ -+static const netgroup_response_header notfound = -+{ -+ .version = NSCD_VERSION, -+ .found = 0, -+ .nresults = 0, -+ .result_len = 0 -+}; -+ -+ -+struct dataset -+{ -+ struct datahead head; -+ netgroup_response_header resp; -+ char strdata[0]; -+}; -+ -+ -+static time_t -+addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, -+ const char *key, uid_t uid, struct hashentry *he, -+ struct datahead *dh, struct dataset **resultp) -+{ -+ if (__builtin_expect (debug_level > 0, 0)) -+ { -+ if (he == NULL) -+ dbg_log (_("Haven't found \"%s\" in netgroup cache!"), key); -+ else -+ dbg_log (_("Reloading \"%s\" in netgroup cache!"), key); -+ } -+ -+ static service_user *netgroup_database; -+ time_t timeout; -+ struct dataset *dataset; -+ bool cacheable = false; -+ ssize_t total; -+ -+ char *key_copy = NULL; -+ struct __netgrent data; -+ size_t buflen = MAX (1024, sizeof (*dataset) + req->key_len); -+ size_t buffilled = sizeof (*dataset); -+ char *buffer = NULL; -+ size_t nentries = 0; -+ bool use_malloc = false; -+ size_t group_len = strlen (key) + 1; -+ union -+ { -+ struct name_list elem; -+ char mem[sizeof (struct name_list) + group_len]; -+ } first_needed; -+ -+ if (netgroup_database == NULL -+ && __nss_database_lookup ("netgroup", NULL, NULL, &netgroup_database)) -+ { -+ /* No such service. */ -+ total = sizeof (notfound); -+ timeout = time (NULL) + db->negtimeout; -+ -+ if (fd != -1) -+ TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); -+ -+ dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -+ /* If we cannot permanently store the result, so be it. */ -+ if (dataset != NULL) -+ { -+ dataset->head.allocsize = sizeof (struct dataset) + req->key_len; -+ dataset->head.recsize = total; -+ dataset->head.notfound = true; -+ dataset->head.nreloads = 0; -+ dataset->head.usable = true; -+ -+ /* Compute the timeout time. */ -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; -+ -+ /* This is the reply. */ -+ memcpy (&dataset->resp, ¬found, total); -+ -+ /* Copy the key data. */ -+ memcpy (dataset->strdata, key, req->key_len); -+ -+ cacheable = true; -+ } -+ -+ goto writeout; -+ } -+ -+ memset (&data, '\0', sizeof (data)); -+ buffer = alloca (buflen); -+ first_needed.elem.next = &first_needed.elem; -+ memcpy (first_needed.elem.name, key, group_len); -+ data.needed_groups = &first_needed.elem; -+ -+ while (data.needed_groups != NULL) -+ { -+ /* Add the next group to the list of those which are known. */ -+ struct name_list *this_group = data.needed_groups->next; -+ if (this_group == data.needed_groups) -+ data.needed_groups = NULL; -+ else -+ data.needed_groups->next = this_group->next; -+ this_group->next = data.known_groups; -+ data.known_groups = this_group; -+ -+ union -+ { -+ enum nss_status (*f) (const char *, struct __netgrent *); -+ void *ptr; -+ } setfct; -+ -+ service_user *nip = netgroup_database; -+ int no_more = __nss_lookup (&nip, "setnetgrent", NULL, &setfct.ptr); -+ while (!no_more) -+ { -+ enum nss_status status -+ = DL_CALL_FCT (*setfct.f, (data.known_groups->name, &data)); -+ -+ if (status == NSS_STATUS_SUCCESS) -+ { -+ union -+ { -+ enum nss_status (*f) (struct __netgrent *, char *, size_t, -+ int *); -+ void *ptr; -+ } getfct; -+ getfct.ptr = __nss_lookup_function (nip, "getnetgrent_r"); -+ if (getfct.f != NULL) -+ while (1) -+ { -+ int e; -+ status = getfct.f (&data, buffer + buffilled, -+ buflen - buffilled, &e); -+ if (status == NSS_STATUS_RETURN) -+ /* This was the last one for this group. Look -+ at next group if available. */ -+ break; -+ if (status == NSS_STATUS_SUCCESS) -+ { -+ if (data.type == triple_val) -+ { -+ const char *nhost = data.val.triple.host; -+ const char *nuser = data.val.triple.user; -+ const char *ndomain = data.val.triple.domain; -+ -+ if (data.val.triple.host > data.val.triple.user -+ || data.val.triple.user > data.val.triple.domain) -+ { -+ const char *last = MAX (nhost, -+ MAX (nuser, ndomain)); -+ size_t bufused = (last + strlen (last) + 1 -+ - buffer); -+ -+ /* We have to make temporary copies. */ -+ size_t hostlen = strlen (nhost) + 1; -+ size_t userlen = strlen (nuser) + 1; -+ size_t domainlen = strlen (ndomain) + 1; -+ size_t needed = hostlen + userlen + domainlen; -+ -+ if (buflen - req->key_len - bufused < needed) -+ { -+ size_t newsize = MAX (2 * buflen, -+ buflen + 2 * needed); -+ if (use_malloc || newsize > 1024 * 1024) -+ { -+ buflen = newsize; -+ char *newbuf = xrealloc (use_malloc -+ ? buffer -+ : NULL, -+ buflen); -+ -+ buffer = newbuf; -+ use_malloc = true; -+ } -+ else -+ extend_alloca (buffer, buflen, newsize); -+ } -+ -+ nhost = memcpy (buffer + bufused, -+ nhost, hostlen); -+ nuser = memcpy ((char *) nhost + hostlen, -+ nuser, userlen); -+ ndomain = memcpy ((char *) nuser + userlen, -+ ndomain, domainlen); -+ } -+ -+ char *wp = buffer + buffilled; -+ wp = stpcpy (wp, nhost) + 1; -+ wp = stpcpy (wp, nuser) + 1; -+ wp = stpcpy (wp, ndomain) + 1; -+ buffilled = wp - buffer; -+ ++nentries; -+ } -+ else -+ { -+ /* Check that the group has not been -+ requested before. */ -+ struct name_list *runp = data.needed_groups; -+ if (runp != NULL) -+ while (1) -+ { -+ if (strcmp (runp->name, data.val.group) == 0) -+ break; -+ -+ runp = runp->next; -+ if (runp == data.needed_groups) -+ { -+ runp = NULL; -+ break; -+ } -+ } -+ -+ if (runp == NULL) -+ { -+ runp = data.known_groups; -+ while (runp != NULL) -+ if (strcmp (runp->name, data.val.group) == 0) -+ break; -+ else -+ runp = runp->next; -+ } -+ -+ if (runp == NULL) -+ { -+ /* A new group is requested. */ -+ size_t namelen = strlen (data.val.group) + 1; -+ struct name_list *newg = alloca (sizeof (*newg) -+ + namelen); -+ memcpy (newg->name, data.val.group, namelen); -+ if (data.needed_groups == NULL) -+ data.needed_groups = newg->next = newg; -+ else -+ { -+ newg->next = data.needed_groups->next; -+ data.needed_groups->next = newg; -+ data.needed_groups = newg; -+ } -+ } -+ } -+ } -+ else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) -+ { -+ size_t newsize = 2 * buflen; -+ if (use_malloc || newsize > 1024 * 1024) -+ { -+ buflen = newsize; -+ char *newbuf = xrealloc (use_malloc -+ ? buffer : NULL, buflen); -+ -+ buffer = newbuf; -+ use_malloc = true; -+ } -+ else -+ extend_alloca (buffer, buflen, newsize); -+ } -+ } -+ -+ enum nss_status (*endfct) (struct __netgrent *); -+ endfct = __nss_lookup_function (nip, "endnetgrent"); -+ if (endfct != NULL) -+ (void) DL_CALL_FCT (*endfct, (&data)); -+ -+ break; -+ } -+ -+ no_more = __nss_next2 (&nip, "setnetgrent", NULL, &setfct.ptr, -+ status, 0); -+ } -+ } -+ -+ total = buffilled; -+ -+ /* Fill in the dataset. */ -+ dataset = (struct dataset *) buffer; -+ dataset->head.allocsize = total + req->key_len; -+ dataset->head.recsize = total - offsetof (struct dataset, resp); -+ dataset->head.notfound = false; -+ dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -+ dataset->head.usable = true; -+ dataset->head.ttl = db->postimeout; -+ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; -+ -+ dataset->resp.version = NSCD_VERSION; -+ dataset->resp.found = 1; -+ dataset->resp.nresults = nentries; -+ dataset->resp.result_len = buffilled - sizeof (*dataset); -+ -+ assert (buflen - buffilled >= req->key_len); -+ key_copy = memcpy (buffer + buffilled, key, req->key_len); -+ buffilled += req->key_len; -+ -+ /* Now we can determine whether on refill we have to create a new -+ record or not. */ -+ if (he != NULL) -+ { -+ assert (fd == -1); -+ -+ if (dataset->head.allocsize == dh->allocsize -+ && dataset->head.recsize == dh->recsize -+ && memcmp (&dataset->resp, dh->data, -+ dh->allocsize - offsetof (struct dataset, resp)) == 0) -+ { -+ /* The data has not changed. We will just bump the timeout -+ value. Note that the new record has been allocated on -+ the stack and need not be freed. */ -+ dh->timeout = dataset->head.timeout; -+ dh->ttl = dataset->head.ttl; -+ ++dh->nreloads; -+ dataset = (struct dataset *) dh; -+ -+ goto out; -+ } -+ } -+ -+ { -+ struct dataset *newp -+ = (struct dataset *) mempool_alloc (db, total + req->key_len, 1); -+ if (__builtin_expect (newp != NULL, 1)) -+ { -+ /* Adjust pointer into the memory block. */ -+ key_copy = (char *) newp + (key_copy - buffer); -+ -+ dataset = memcpy (newp, dataset, total + req->key_len); -+ cacheable = true; -+ -+ if (he != NULL) -+ /* Mark the old record as obsolete. */ -+ dh->usable = false; -+ } -+ } -+ -+ if (he == NULL && fd != -1) -+ { -+ /* We write the dataset before inserting it to the database -+ since while inserting this thread might block and so would -+ unnecessarily let the receiver wait. */ -+ writeout: -+#ifdef HAVE_SENDFILE -+ if (__builtin_expect (db->mmap_used, 1) && cacheable) -+ { -+ assert (db->wr_fd != -1); -+ assert ((char *) &dataset->resp > (char *) db->data); -+ assert ((char *) dataset - (char *) db->head + total -+ <= (sizeof (struct database_pers_head) -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); -+# ifndef __ASSUME_SENDFILE -+ ssize_t written = -+# endif -+ sendfileall (fd, db->wr_fd, (char *) &dataset->resp -+ - (char *) db->head, dataset->head.recsize); -+# ifndef __ASSUME_SENDFILE -+ if (written == -1 && errno == ENOSYS) -+ goto use_write; -+# endif -+ } -+ else -+#endif -+ { -+#if defined HAVE_SENDFILE && !defined __ASSUME_SENDFILE -+ use_write: -+#endif -+ writeall (fd, &dataset->resp, dataset->head.recsize); -+ } -+ } -+ -+ if (cacheable) -+ { -+ /* If necessary, we also propagate the data to disk. */ -+ if (db->persistent) -+ { -+ // XXX async OK? -+ uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1; -+ msync ((void *) pval, -+ ((uintptr_t) dataset & pagesize_m1) + total + req->key_len, -+ MS_ASYNC); -+ } -+ -+ (void) cache_add (req->type, key_copy, req->key_len, &dataset->head, -+ true, db, uid, he == NULL); -+ -+ pthread_rwlock_unlock (&db->lock); -+ -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ -+ out: -+ if (use_malloc) -+ free (buffer); -+ -+ *resultp = dataset; -+ -+ return timeout; -+} -+ -+ -+static time_t -+addinnetgrX (struct database_dyn *db, int fd, request_header *req, -+ char *key, uid_t uid, struct hashentry *he, -+ struct datahead *dh) -+{ -+ const char *group = key; -+ key = (char *) rawmemchr (key, '\0') + 1; -+ size_t group_len = key - group - 1; -+ const char *host = *key++ ? key : NULL; -+ if (host != NULL) -+ key = (char *) rawmemchr (key, '\0') + 1; -+ const char *user = *key++ ? key : NULL; -+ if (user != NULL) -+ key = (char *) rawmemchr (key, '\0') + 1; -+ const char *domain = *key++ ? key : NULL; -+ -+ if (__builtin_expect (debug_level > 0, 0)) -+ { -+ if (he == NULL) -+ dbg_log (_("Haven't found \"%s (%s,%s,%s)\" in netgroup cache!"), -+ group, host ?: "", user ?: "", domain ?: ""); -+ else -+ dbg_log (_("Reloading \"%s (%s,%s,%s)\" in netgroup cache!"), -+ group, host ?: "", user ?: "", domain ?: ""); -+ } -+ -+ struct dataset *result = (struct dataset *) cache_search (GETNETGRENT, -+ group, group_len, -+ db, uid); -+ time_t timeout; -+ if (result != NULL) -+ timeout = result->head.timeout; -+ else -+ { -+ request_header req_get = -+ { -+ .type = GETNETGRENT, -+ .key_len = group_len -+ }; -+ timeout = addgetnetgrentX (db, -1, &req_get, group, uid, NULL, NULL, -+ &result); -+ } -+ -+ struct indataset -+ { -+ struct datahead head; -+ innetgroup_response_header resp; -+ } *dataset -+ = (struct indataset *) mempool_alloc (db, -+ sizeof (*dataset) + req->key_len, -+ 1); -+ struct indataset dataset_mem; -+ bool cacheable = true; -+ if (__builtin_expect (dataset == NULL, 0)) -+ { -+ cacheable = false; -+ dataset = &dataset_mem; -+ } -+ -+ dataset->head.allocsize = sizeof (*dataset) + req->key_len; -+ dataset->head.recsize = sizeof (innetgroup_response_header); -+ dataset->head.notfound = result->head.notfound; -+ dataset->head.nreloads = he == NULL ? 0 : (dh->nreloads + 1); -+ dataset->head.usable = true; -+ dataset->head.ttl = result->head.ttl; -+ dataset->head.timeout = timeout; -+ -+ dataset->resp.version = NSCD_VERSION; -+ dataset->resp.found = result->resp.found; -+ /* Until we find a matching entry the result is 0. */ -+ dataset->resp.result = 0; -+ -+ char *key_copy = memcpy ((char *) (dataset + 1), group, req->key_len); -+ -+ if (dataset->resp.found) -+ { -+ const char *triplets = (const char *) (&result->resp + 1); -+ -+ for (nscd_ssize_t i = result->resp.nresults; i > 0; --i) -+ { -+ bool success = true; -+ -+ if (host != NULL) -+ success = strcmp (host, triplets) == 0; -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ -+ if (success && user != NULL) -+ success = strcmp (user, triplets) == 0; -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ -+ if (success && (domain == NULL || strcmp (domain, triplets) == 0)) -+ { -+ dataset->resp.result = 1; -+ break; -+ } -+ triplets = (const char *) rawmemchr (triplets, '\0') + 1; -+ } -+ } -+ -+ if (he != NULL && dh->data[0].innetgroupdata.result == dataset->resp.result) -+ { -+ /* The data has not changed. We will just bump the timeout -+ value. Note that the new record has been allocated on -+ the stack and need not be freed. */ -+ dh->timeout = timeout; -+ dh->ttl = dataset->head.ttl; -+ ++dh->nreloads; -+ return timeout; -+ } -+ -+ if (he == NULL) -+ { -+ /* We write the dataset before inserting it to the database -+ since while inserting this thread might block and so would -+ unnecessarily let the receiver wait. */ -+ assert (fd != -1); -+ -+#ifdef HAVE_SENDFILE -+ if (__builtin_expect (db->mmap_used, 1) && cacheable) -+ { -+ assert (db->wr_fd != -1); -+ assert ((char *) &dataset->resp > (char *) db->data); -+ assert ((char *) dataset - (char *) db->head + sizeof (*dataset) -+ <= (sizeof (struct database_pers_head) -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); -+# ifndef __ASSUME_SENDFILE -+ ssize_t written = -+# endif -+ sendfileall (fd, db->wr_fd, -+ (char *) &dataset->resp - (char *) db->head, -+ sizeof (innetgroup_response_header)); -+# ifndef __ASSUME_SENDFILE -+ if (written == -1 && errno == ENOSYS) -+ goto use_write; -+# endif -+ } -+ else -+# ifndef __ASSUME_SENDFILE -+ use_write: -+# endif -+#endif -+ writeall (fd, &dataset->resp, sizeof (innetgroup_response_header)); -+ } -+ -+ if (cacheable) -+ { -+ /* If necessary, we also propagate the data to disk. */ -+ if (db->persistent) -+ { -+ // XXX async OK? -+ uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1; -+ msync ((void *) pval, -+ ((uintptr_t) dataset & pagesize_m1) + sizeof (*dataset) -+ + req->key_len, -+ MS_ASYNC); -+ } -+ -+ (void) cache_add (req->type, key_copy, req->key_len, &dataset->head, -+ true, db, uid, he == NULL); -+ -+ pthread_rwlock_unlock (&db->lock); -+ -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ -+ return timeout; -+} -+ -+ -+void -+addgetnetgrent (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid) -+{ -+ struct dataset *ignore; -+ -+ addgetnetgrentX (db, fd, req, key, uid, NULL, NULL, &ignore); -+} -+ -+ -+time_t -+readdgetnetgrent (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh) -+{ -+ request_header req = -+ { -+ .type = GETNETGRENT, -+ .key_len = he->len -+ }; -+ struct dataset *ignore; -+ -+ return addgetnetgrentX (db, -1, &req, db->data + he->key, he->owner, he, dh, -+ &ignore); -+} -+ -+ -+void -+addinnetgr (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid) -+{ -+ addinnetgrX (db, fd, req, key, uid, NULL, NULL); -+} -+ -+ -+time_t -+readdinnetgr (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh) -+{ -+ request_header req = -+ { -+ .type = INNETGR, -+ .key_len = he->len -+ }; -+ -+ return addinnetgrX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+} -diff -Nrup a/nscd/nscd-client.h b/nscd/nscd-client.h ---- a/nscd/nscd-client.h 2012-08-06 15:07:49.082059915 -0600 -+++ b/nscd/nscd-client.h 2012-08-06 15:08:19.090941456 -0600 -@@ -70,6 +70,9 @@ typedef enum - GETSERVBYNAME, - GETSERVBYPORT, - GETFDSERV, -+ GETNETGRENT, -+ INNETGR, -+ GETFDNETGR, - LASTREQ - } request_type; - -@@ -171,6 +174,24 @@ typedef struct - } serv_response_header; - - -+/* Structure send in reply to netgroup query. Note that this struct is -+ sent also if the service is disabled or there is no record found. */ -+typedef struct -+{ -+ int32_t version; -+ int32_t found; -+ nscd_ssize_t nresults; -+ nscd_ssize_t result_len; -+} netgroup_response_header; -+ -+typedef struct -+{ -+ int32_t version; -+ int32_t found; -+ int32_t result; -+} innetgroup_response_header; -+ -+ - /* Type for offsets in data part of database. */ - typedef uint32_t ref_t; - /* Value for invalid/no reference. */ -@@ -210,6 +231,8 @@ struct datahead - ai_response_header aidata; - initgr_response_header initgrdata; - serv_response_header servdata; -+ netgroup_response_header netgroupdata; -+ innetgroup_response_header innetgroupdata; - nscd_ssize_t align1; - nscd_time_t align2; - } data[0]; -diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-08-06 15:07:48.553062002 -0600 -+++ b/nscd/nscd.conf 2012-08-06 15:08:19.091941452 -0600 -@@ -77,3 +77,12 @@ - persistent services yes - shared services yes - max-db-size services 33554432 -+ -+ enable-cache netgroup yes -+ positive-time-to-live netgroup 28800 -+ negative-time-to-live netgroup 20 -+ suggested-size netgroup 211 -+ check-files netgroup yes -+ persistent netgroup yes -+ shared netgroup yes -+ max-db-size netgroup 33554432 -diff -Nrup a/nscd/nscd.h b/nscd/nscd.h ---- a/nscd/nscd.h 2012-08-06 15:07:49.085059903 -0600 -+++ b/nscd/nscd.h 2012-08-06 15:08:19.093941443 -0600 -@@ -38,6 +38,7 @@ typedef enum - grpdb, - hstdb, - servdb, -+ netgrdb, - lastdb - } dbtype; - -@@ -107,6 +108,7 @@ struct database_dyn - #define _PATH_NSCD_GROUP_DB "/var/db/nscd/group" - #define _PATH_NSCD_HOSTS_DB "/var/db/nscd/hosts" - #define _PATH_NSCD_SERVICES_DB "/var/db/nscd/services" -+#define _PATH_NSCD_NETGROUP_DB "/var/db/nscd/netgroup" - - /* Path used when not using persistent storage. */ - #define _PATH_NSCD_XYZ_DB_TMP "/var/run/nscd/dbXXXXXX" -@@ -140,6 +142,7 @@ extern const struct iovec pwd_iov_disabl - extern const struct iovec grp_iov_disabled; - extern const struct iovec hst_iov_disabled; - extern const struct iovec serv_iov_disabled; -+extern const struct iovec netgroup_iov_disabled; - - - /* Initial number of threads to run. */ -@@ -185,6 +188,11 @@ extern gid_t old_gid; - - /* Prototypes for global functions. */ - -+/* Wrapper functions with error checking for standard functions. */ -+extern void *xmalloc (size_t n); -+extern void *xcalloc (size_t n, size_t s); -+extern void *xrealloc (void *o, size_t n); -+ - /* nscd.c */ - extern void termination_handler (int signum) __attribute__ ((__noreturn__)); - extern int nscd_open_socket (void); -@@ -203,8 +211,8 @@ extern void send_stats (int fd, struct d - extern int receive_print_stats (void) __attribute__ ((__noreturn__)); - - /* cache.c */ --extern struct datahead *cache_search (request_type, void *key, size_t len, -- struct database_dyn *table, -+extern struct datahead *cache_search (request_type, const void *key, -+ size_t len, struct database_dyn *table, - uid_t owner); - extern int cache_add (int type, const void *key, size_t len, - struct datahead *packet, bool first, -@@ -273,6 +281,16 @@ extern void addservbyport (struct databa - extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); - -+/* netgroupcache.c */ -+extern void addinnetgr (struct database_dyn *db, int fd, request_header *req, -+ void *key, uid_t uid); -+extern time_t readdinnetgr (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern void addgetnetgrent (struct database_dyn *db, int fd, -+ request_header *req, void *key, uid_t uid); -+extern time_t readdgetnetgrent (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+ - /* mem.c */ - extern void *mempool_alloc (struct database_dyn *db, size_t len, - int data_alloc); -diff -Nrup a/nscd/nscd_conf.c b/nscd/nscd_conf.c ---- a/nscd/nscd_conf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/nscd_conf.c 2012-08-06 15:08:19.093941443 -0600 -@@ -43,7 +43,8 @@ const char *const dbnames[lastdb] = - [pwddb] = "passwd", - [grpdb] = "group", - [hstdb] = "hosts", -- [servdb] = "services" -+ [servdb] = "services", -+ [netgrdb] = "netgroup" - }; - - -diff -Nrup a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c ---- a/nscd/nscd_netgroup.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nscd/nscd_netgroup.c 2012-08-06 15:08:19.094941439 -0600 -@@ -0,0 +1,290 @@ -+/* Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Ulrich Drepper , 2011. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "nscd-client.h" -+#include "nscd_proto.h" -+ -+int __nss_not_use_nscd_netgroup; -+ -+ -+libc_locked_map_ptr (static, map_handle); -+/* Note that we only free the structure if necessary. The memory -+ mapping is not removed since it is not visible to the malloc -+ handling. */ -+libc_freeres_fn (pw_map_free) -+{ -+ if (map_handle.mapped != NO_MAPPING) -+ { -+ void *p = map_handle.mapped; -+ map_handle.mapped = NO_MAPPING; -+ free (p); -+ } -+} -+ -+ -+int -+__nscd_setnetgrent (const char *group, struct __netgrent *datap) -+{ -+ int gc_cycle; -+ int nretries = 0; -+ size_t group_len = strlen (group); -+ -+ /* If the mapping is available, try to search there instead of -+ communicating with the nscd. */ -+ struct mapped_database *mapped; -+ mapped = __nscd_get_map_ref (GETFDNETGR, "netgroup", &map_handle, &gc_cycle); -+ -+ retry:; -+ char *respdata = NULL; -+ int retval = -1; -+ netgroup_response_header netgroup_resp; -+ -+ if (mapped != NO_MAPPING) -+ { -+ struct datahead *found = __nscd_cache_search (GETNETGRENT, group, -+ group_len, mapped, -+ sizeof netgroup_resp); -+ if (found != NULL) -+ { -+ respdata = (char *) (&found->data[0].netgroupdata + 1); -+ netgroup_resp = found->data[0].netgroupdata; -+ /* Now check if we can trust pw_resp fields. If GC is -+ in progress, it can contain anything. */ -+ if (mapped->head->gc_cycle != gc_cycle) -+ { -+ retval = -2; -+ goto out; -+ } -+ } -+ } -+ -+ int sock = -1; -+ if (respdata == NULL) -+ { -+ sock = __nscd_open_socket (group, group_len, GETNETGRENT, -+ &netgroup_resp, sizeof (netgroup_resp)); -+ if (sock == -1) -+ { -+ /* nscd not running or wrong version. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out; -+ } -+ } -+ -+ if (netgroup_resp.found == 1) -+ { -+ size_t datalen = netgroup_resp.result_len; -+ -+ /* If we do not have to read the data here it comes from the -+ mapped data and does not have to be freed. */ -+ if (respdata == NULL) -+ { -+ /* The data will come via the socket. */ -+ respdata = malloc (datalen); -+ if (respdata == NULL) -+ goto out_close; -+ -+ if ((size_t) __readall (sock, respdata, datalen) != datalen) -+ { -+ free (respdata); -+ goto out_close; -+ } -+ } -+ -+ datap->data = respdata; -+ datap->data_size = datalen; -+ datap->cursor = respdata; -+ datap->first = 1; -+ datap->nip = (service_user *) -1l; -+ datap->known_groups = NULL; -+ datap->needed_groups = NULL; -+ -+ retval = 1; -+ } -+ else -+ { -+ if (__builtin_expect (netgroup_resp.found == -1, 0)) -+ { -+ /* The daemon does not cache this database. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out_close; -+ } -+ -+ /* Set errno to 0 to indicate no error, just no found record. */ -+ __set_errno (0); -+ /* Even though we have not found anything, the result is zero. */ -+ retval = 0; -+ } -+ -+ out_close: -+ if (sock != -1) -+ close_not_cancel_no_status (sock); -+ out: -+ if (__nscd_drop_map_ref (mapped, &gc_cycle) != 0) -+ { -+ /* When we come here this means there has been a GC cycle while we -+ were looking for the data. This means the data might have been -+ inconsistent. Retry if possible. */ -+ if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1) -+ { -+ /* nscd is just running gc now. Disable using the mapping. */ -+ if (atomic_decrement_val (&mapped->counter) == 0) -+ __nscd_unmap (mapped); -+ mapped = NO_MAPPING; -+ } -+ -+ if (retval != -1) -+ goto retry; -+ } -+ -+ return retval; -+} -+ -+ -+int -+__nscd_innetgr (const char *netgroup, const char *host, const char *user, -+ const char *domain) -+{ -+ size_t key_len = (strlen (netgroup) + strlen (host ?: "") -+ + strlen (user ?: "") + strlen (domain ?: "") + 7); -+ char *key; -+ bool use_alloca = __libc_use_alloca (key_len); -+ if (use_alloca) -+ key = alloca (key_len); -+ else -+ { -+ key = malloc (key_len); -+ if (key == NULL) -+ return -1; -+ } -+ char *wp = stpcpy (key, netgroup) + 1; -+ if (host != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, host) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ if (user != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, user) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ if (domain != NULL) -+ { -+ *wp++ = '\1'; -+ wp = stpcpy (wp, domain) + 1; -+ } -+ else -+ *wp++ = '\0'; -+ key_len = wp - key; -+ -+ /* If the mapping is available, try to search there instead of -+ communicating with the nscd. */ -+ int gc_cycle; -+ int nretries = 0; -+ struct mapped_database *mapped; -+ mapped = __nscd_get_map_ref (GETFDNETGR, "netgroup", &map_handle, &gc_cycle); -+ -+ retry:; -+ int retval = -1; -+ innetgroup_response_header innetgroup_resp; -+ int sock = -1; -+ -+ if (mapped != NO_MAPPING) -+ { -+ struct datahead *found = __nscd_cache_search (INNETGR, key, -+ key_len, mapped, -+ sizeof innetgroup_resp); -+ if (found != NULL) -+ { -+ innetgroup_resp = found->data[0].innetgroupdata; -+ /* Now check if we can trust pw_resp fields. If GC is -+ in progress, it can contain anything. */ -+ if (mapped->head->gc_cycle != gc_cycle) -+ { -+ retval = -2; -+ goto out; -+ } -+ -+ goto found_entry; -+ } -+ } -+ -+ sock = __nscd_open_socket (key, key_len, INNETGR, -+ &innetgroup_resp, sizeof (innetgroup_resp)); -+ if (sock == -1) -+ { -+ /* nscd not running or wrong version. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out; -+ } -+ -+ found_entry: -+ if (innetgroup_resp.found == 1) -+ retval = innetgroup_resp.result; -+ else -+ { -+ if (__builtin_expect (innetgroup_resp.found == -1, 0)) -+ { -+ /* The daemon does not cache this database. */ -+ __nss_not_use_nscd_netgroup = 1; -+ goto out_close; -+ } -+ -+ /* Set errno to 0 to indicate no error, just no found record. */ -+ __set_errno (0); -+ /* Even though we have not found anything, the result is zero. */ -+ retval = 0; -+ } -+ -+ out_close: -+ if (sock != -1) -+ close_not_cancel_no_status (sock); -+ out: -+ if (__nscd_drop_map_ref (mapped, &gc_cycle) != 0) -+ { -+ /* When we come here this means there has been a GC cycle while we -+ were looking for the data. This means the data might have been -+ inconsistent. Retry if possible. */ -+ if ((gc_cycle & 1) != 0 || ++nretries == 5 || retval == -1) -+ { -+ /* nscd is just running gc now. Disable using the mapping. */ -+ if (atomic_decrement_val (&mapped->counter) == 0) -+ __nscd_unmap (mapped); -+ mapped = NO_MAPPING; -+ } -+ -+ if (retval != -1) -+ goto retry; -+ } -+ -+ if (! use_alloca) -+ free (key); -+ -+ return retval; -+} -diff -Nrup a/nscd/nscd_proto.h b/nscd/nscd_proto.h ---- a/nscd/nscd_proto.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/nscd_proto.h 2012-08-06 15:14:24.446648305 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998-2000, 2002, 2004, 2007 Free Software Foundation, Inc. -+/* Copyright (C) 1998-2000,2002,2004,2007,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1998. - -@@ -36,6 +36,7 @@ extern int __nss_not_use_nscd_passwd att - extern int __nss_not_use_nscd_group attribute_hidden; - extern int __nss_not_use_nscd_hosts attribute_hidden; - extern int __nss_not_use_nscd_services attribute_hidden; -+extern int __nss_not_use_nscd_netgroup attribute_hidden; - - extern int __nscd_getpwnam_r (const char *name, struct passwd *resultbuf, - char *buffer, size_t buflen, -@@ -71,5 +72,9 @@ extern int __nscd_getservbyname_r (const - extern int __nscd_getservbyport_r (int port, const char *proto, - struct servent *result_buf, char *buf, - size_t buflen, struct servent **result); -+extern int __nscd_innetgr (const char *netgroup, const char *host, -+ const char *user, const char *domain); -+extern int __nscd_setnetgrent (const char *group, struct __netgrent *datap); -+ - - #endif /* _NSCD_PROTO_H */ -diff -Nrup a/nscd/selinux.c b/nscd/selinux.c ---- a/nscd/selinux.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nscd/selinux.c 2012-08-06 15:08:19.096941431 -0600 -@@ -1,5 +1,5 @@ - /* SELinux access controls for nscd. -- Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2004,2005,2006,2007,2009,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Matthew Rickard , 2004. - -@@ -46,7 +46,7 @@ - int selinux_enabled; - - /* Define mappings of access vector permissions to request types. */ --static const int perms[LASTREQ] = -+static const access_vector_t perms[LASTREQ] = - { - [GETPWBYNAME] = NSCD__GETPWD, - [GETPWBYUID] = NSCD__GETPWD, -@@ -69,6 +69,11 @@ static const int perms[LASTREQ] = - [GETSERVBYPORT] = NSCD__GETSERV, - [GETFDSERV] = NSCD__SHMEMSERV, - #endif -+#ifdef NSCD__GETNETGRP -+ [GETNETGRENT] = NSCD__GETNETGRP, -+ [INNETGR] = NSCD__GETNETGRP, -+ [GETFDNETGR] = NSCD__SHMEMNETGRP, -+#endif - }; - - /* Store an entry ref to speed AVC decisions. */ -diff -Nrup a/nss/Makefile b/nss/Makefile ---- a/nss/Makefile 2012-08-06 15:07:48.938060482 -0600 -+++ b/nss/Makefile 2012-08-23 14:19:49.382442094 -0600 -@@ -1,4 +1,5 @@ --# Copyright (C) 1996-1998,2000-2002,2007,2009 Free Software Foundation, Inc. -+# Copyright (C) 1996-1998,2000-2002,2007,2009,2010 -+# Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -39,7 +40,7 @@ databases = proto service hosts network - others := getent - install-bin := getent - --tests = test-netdb -+tests = test-netdb tst-nss-test1 - xtests = bug-erange - - include ../Makeconfig -@@ -85,3 +86,14 @@ endif - # a statically-linked program that hasn't already loaded it. - $(services:%=$(objpfx)libnss_%.so): $(common-objpfx)libc.so \ - $(common-objpfx)libc_nonshared.a -+ -+ -+distribute += nss_test1.c -+ -+CFLAGS-nss_test1.c = -DNOT_IN_libc=1 -+$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \ -+ $(common-objpfx)libc_nonshared.a -+ $(build-module) -+$(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so -+ $(make-link) -+$(objpfx)tst-nss-test1.out: $(objpfx)/libnss_test1.so$(libnss_test1.so-version) -diff -Nrup a/nss/Versions b/nss/Versions ---- a/nss/Versions 2012-08-06 15:07:48.939060479 -0600 -+++ b/nss/Versions 2012-08-06 15:08:19.096941431 -0600 -@@ -12,7 +12,7 @@ libc { - __nss_disable_nscd; __nss_lookup_function; _nss_files_parse_sgent; - - __nss_passwd_lookup2; __nss_group_lookup2; __nss_hosts_lookup2; -- __nss_services_lookup2; __nss_next2; -+ __nss_services_lookup2; __nss_next2; __nss_lookup; - } - } - -diff -Nrup a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c ---- a/nss/getXXbyYY_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/getXXbyYY_r.c 2012-08-23 14:19:49.403442011 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2004, 2006, 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2004,2006,2007,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - -@@ -87,6 +87,8 @@ - # define NOT_USENSCD_NAME ADD_NOT_NSCDUSE (DATABASE_NAME) - # define ADD_NOT_NSCDUSE(name) ADD_NOT_NSCDUSE1 (name) - # define ADD_NOT_NSCDUSE1(name) __nss_not_use_nscd_##name -+# define CONCAT2(arg1, arg2) CONCAT2_2 (arg1, arg2) -+# define CONCAT2_2(arg1, arg2) arg1##arg2 - #endif - - #define FUNCTION_NAME_STRING STRINGIZE (FUNCTION_NAME) -@@ -186,7 +188,8 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, L - if (NOT_USENSCD_NAME > 0 && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY) - NOT_USENSCD_NAME = 0; - -- if (!NOT_USENSCD_NAME) -+ if (!NOT_USENSCD_NAME -+ && !__nss_database_custom[CONCAT2 (NSS_DBSIDX_, DATABASE_NAME)]) - { - nscd_status = NSCD_NAME (ADD_VARIABLES, resbuf, buffer, buflen, result - H_ERRNO_VAR); -diff -Nrup a/nss/getent.c b/nss/getent.c ---- a/nss/getent.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/getent.c 2012-08-06 15:15:06.479427609 -0600 -@@ -466,7 +466,6 @@ static int - netgroup_keys (int number, char *key[]) - { - int result = 0; -- int i; - - if (number == 0) - { -@@ -474,18 +473,28 @@ netgroup_keys (int number, char *key[]) - return 3; - } - -- for (i = 0; i < number; ++i) -+ if (number == 4) - { -- if (!setnetgrent (key[i])) -+ char *host = strcmp (key[1], "*") == 0 ? NULL : key[1]; -+ char *user = strcmp (key[2], "*") == 0 ? NULL : key[2]; -+ char *domain = strcmp (key[3], "*") == 0 ? NULL : key[3]; -+ -+ printf ("%-21s (%s,%s,%s) = %d\n", -+ key[0], host ?: "", user ?: "", domain ?: "", -+ innetgr (key[0], host, user, domain)); -+ } -+ else if (number == 1) -+ { -+ if (!setnetgrent (key[0])) - result = 2; - else - { - char *p[3]; - -- printf ("%-21s", key[i]); -+ printf ("%-21s", key[0]); - - while (getnetgrent (p, p + 1, p + 2)) -- printf (" (%s, %s, %s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); -+ printf (" (%s,%s,%s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); - putchar_unlocked ('\n'); - } - } -diff -Nrup a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c ---- a/nss/nss_files/files-parse.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nss_files/files-parse.c 2012-08-23 14:19:49.418441951 -0600 -@@ -1,5 +1,5 @@ - /* Common code for file-based database parsers in nss_files module. -- Copyright (C) 1996-2000, 2003, 2004, 2009 Free Software Foundation, Inc. -+ Copyright (C) 1996-2000,2003,2004,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -29,7 +29,7 @@ - DATABASE -- string of the database file's name ("hosts", "passwd"). - - ENTDATA -- if defined, `struct ENTDATA' is used by the parser to store -- things pointed to by the resultant `struct STRUCTURE'. -+ things pointed to by the resultant `struct STRUCTURE'. - - NEED_H_ERRNO - defined iff an arg `int *herrnop' is used. - -@@ -229,7 +229,7 @@ strtou32 (const char *nptr, char **endpt - char **list = parse_list (&line, buf_start, buf_end, '\0', errnop); \ - if (list) \ - result->TRAILING_LIST_MEMBER = list; \ -- else \ -+ else \ - return -1; /* -1 indicates we ran out of space. */ \ - } - -diff -Nrup a/nss/nss_test1.c b/nss/nss_test1.c ---- a/nss/nss_test1.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nss/nss_test1.c 2012-08-23 14:19:49.418441951 -0600 -@@ -0,0 +1,154 @@ -+#include -+#include -+#include -+#include -+ -+ -+#define COPY_IF_ROOM(s) \ -+ ({ size_t len_ = strlen (s) + 1; \ -+ char *start_ = cp; \ -+ buflen - (cp - buffer) < len_ \ -+ ? NULL \ -+ : (cp = mempcpy (cp, s, len_), start_); }) -+ -+ -+/* Password handling. */ -+#include -+ -+static struct passwd pwd_data[] = -+ { -+#define PWD(u) \ -+ { .pw_name = (char *) "name" #u, .pw_passwd = (char *) "*", .pw_uid = u, \ -+ .pw_gid = 100, .pw_gecos = (char *) "*", .pw_dir = (char *) "*", \ -+ .pw_shell = (char *) "*" } -+ PWD (100), -+ PWD (30), -+ PWD (200), -+ PWD (60), -+ PWD (20000) -+ }; -+#define npwd_data (sizeof (pwd_data) / sizeof (pwd_data[0])) -+ -+static size_t pwd_iter; -+#define CURPWD pwd_data[pwd_iter] -+ -+static pthread_mutex_t pwd_lock = PTHREAD_MUTEX_INITIALIZER; -+ -+ -+enum nss_status -+_nss_test1_setpwent (int stayopen) -+{ -+ pwd_iter = 0; -+ return NSS_STATUS_SUCCESS; -+} -+ -+ -+enum nss_status -+_nss_test1_endpwent (void) -+{ -+ return NSS_STATUS_SUCCESS; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwent_r (struct passwd *result, char *buffer, size_t buflen, -+ int *errnop) -+{ -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ pthread_mutex_lock (&pwd_lock); -+ -+ if (pwd_iter >= npwd_data) -+ res = NSS_STATUS_NOTFOUND; -+ else -+ { -+ result->pw_name = COPY_IF_ROOM (CURPWD.pw_name); -+ result->pw_passwd = COPY_IF_ROOM (CURPWD.pw_passwd); -+ result->pw_uid = CURPWD.pw_uid; -+ result->pw_gid = CURPWD.pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (CURPWD.pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (CURPWD.pw_dir); -+ result->pw_shell = COPY_IF_ROOM (CURPWD.pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ ++pwd_iter; -+ } -+ -+ pthread_mutex_unlock (&pwd_lock); -+ -+ return res; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwuid_r (uid_t uid, struct passwd *result, char *buffer, -+ size_t buflen, int *errnop) -+{ -+ for (size_t idx = 0; idx < npwd_data; ++idx) -+ if (pwd_data[idx].pw_uid == uid) -+ { -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ result->pw_name = COPY_IF_ROOM (pwd_data[idx].pw_name); -+ result->pw_passwd = COPY_IF_ROOM (pwd_data[idx].pw_passwd); -+ result->pw_uid = pwd_data[idx].pw_uid; -+ result->pw_gid = pwd_data[idx].pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (pwd_data[idx].pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (pwd_data[idx].pw_dir); -+ result->pw_shell = COPY_IF_ROOM (pwd_data[idx].pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ return res; -+ } -+ -+ return NSS_STATUS_NOTFOUND; -+} -+ -+ -+enum nss_status -+_nss_test1_getpwnam_r (const char *name, struct passwd *result, char *buffer, -+ size_t buflen, int *errnop) -+{ -+ for (size_t idx = 0; idx < npwd_data; ++idx) -+ if (strcmp (pwd_data[idx].pw_name, name) == 0) -+ { -+ char *cp = buffer; -+ int res = NSS_STATUS_SUCCESS; -+ -+ result->pw_name = COPY_IF_ROOM (pwd_data[idx].pw_name); -+ result->pw_passwd = COPY_IF_ROOM (pwd_data[idx].pw_passwd); -+ result->pw_uid = pwd_data[idx].pw_uid; -+ result->pw_gid = pwd_data[idx].pw_gid; -+ result->pw_gecos = COPY_IF_ROOM (pwd_data[idx].pw_gecos); -+ result->pw_dir = COPY_IF_ROOM (pwd_data[idx].pw_dir); -+ result->pw_shell = COPY_IF_ROOM (pwd_data[idx].pw_shell); -+ -+ if (result->pw_name == NULL || result->pw_passwd == NULL -+ || result->pw_gecos == NULL || result->pw_dir == NULL -+ || result->pw_shell == NULL) -+ { -+ *errnop = ERANGE; -+ res = NSS_STATUS_TRYAGAIN; -+ } -+ -+ return res; -+ } -+ -+ return NSS_STATUS_NOTFOUND; -+} -diff -Nrup a/nss/nsswitch.c b/nss/nsswitch.c ---- a/nss/nsswitch.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.c 2012-08-23 14:19:49.430441903 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-1999, 2001-2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1996-1999,2001-2007,2009,2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - -@@ -71,6 +71,9 @@ static const struct - }; - #define ndatabases (sizeof (databases) / sizeof (databases[0])) - -+/* Flags whether custom rules for database is set. */ -+bool __nss_database_custom[NSS_DBSIDX_max]; -+ - - __libc_lock_define_initialized (static, lock) - -@@ -165,6 +168,7 @@ __nss_lookup (service_user **ni, const c - - return *fctp != NULL ? 0 : (*ni)->next == NULL ? 1 : -1; - } -+libc_hidden_def (__nss_lookup) - - - /* -1 == not found -@@ -265,6 +269,7 @@ __nss_configure_lookup (const char *dbna - - /* Install new rules. */ - *databases[cnt].dbp = new_db; -+ __nss_database_custom[cnt] = true; - - __libc_lock_unlock (lock); - -@@ -729,6 +734,7 @@ __nss_disable_nscd (void) - __nss_not_use_nscd_group = -1; - __nss_not_use_nscd_hosts = -1; - __nss_not_use_nscd_services = -1; -+ __nss_not_use_nscd_netgroup = -1; - } - - -diff -Nrup a/nss/nsswitch.h b/nss/nsswitch.h ---- a/nss/nsswitch.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.h 2012-08-23 14:19:49.431441899 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-1999,2001,2002,2003,2004,2007 -+/* Copyright (C) 1996-1999,2001,2002,2003,2004,2007,2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - - /* Actions performed after lookup finished. */ - typedef enum -@@ -96,6 +97,19 @@ typedef struct name_database - } name_database; - - -+/* Indices into DATABASES in nsswitch.c and __NSS_DATABASE_CUSTOM. */ -+enum -+ { -+#define DEFINE_DATABASE(arg) NSS_DBSIDX_##arg, -+#include "databases.def" -+#undef DEFINE_DATABASE -+ NSS_DBSIDX_max -+ }; -+ -+/* Flags whether custom rules for database is set. */ -+extern bool __nss_database_custom[NSS_DBSIDX_max]; -+ -+ - /* Interface functions for NSS. */ - - /* Get the data structure representing the specified database. -@@ -111,7 +125,8 @@ libc_hidden_proto (__nss_database_lookup - position is remembered in NI. The function returns a value < 0 if - an error occurred or no such function exists. */ - extern int __nss_lookup (service_user **ni, const char *fct_name, -- const char *fct2_name, void **fctp) attribute_hidden; -+ const char *fct2_name, void **fctp); -+libc_hidden_proto (__nss_lookup) - - /* Determine the next step in the lookup process according to the - result STATUS of the call to the last function returned by -diff -Nrup a/nss/tst-nss-test1.c b/nss/tst-nss-test1.c ---- a/nss/tst-nss-test1.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/nss/tst-nss-test1.c 2012-08-23 14:19:49.432441895 -0600 -@@ -0,0 +1,72 @@ -+#include -+#include -+#include -+#include -+#include -+ -+ -+static int -+do_test (void) -+{ -+ int retval = 0; -+ -+ __nss_configure_lookup ("passwd", "test1"); -+ -+ static const unsigned int pwdids[] = { 100, 30, 200, 60, 20000 }; -+#define npwdids (sizeof (pwdids) / sizeof (pwdids[0])) -+ setpwent (); -+ -+ const unsigned int *np = pwdids; -+ for (struct passwd *p = getpwent (); p != NULL; ++np, p = getpwent ()) -+ if (p->pw_uid != *np || strncmp (p->pw_name, "name", 4) != 0 -+ || atol (p->pw_name + 4) != *np) -+ { -+ printf ("passwd entry %ju wrong (%s, %u)\n", -+ np - pwdids, p->pw_name, p->pw_uid); -+ retval = 1; -+ break; -+ } -+ -+ endpwent (); -+ -+ for (int i = npwdids - 1; i >= 0; --i) -+ { -+ char buf[30]; -+ snprintf (buf, sizeof (buf), "name%u", pwdids[i]); -+ -+ struct passwd *p = getpwnam (buf); -+ if (p == NULL || p->pw_uid != pwdids[i] || strcmp (buf, p->pw_name) != 0) -+ { -+ printf ("passwd entry \"%s\" wrong\n", buf); -+ retval = 1; -+ } -+ -+ p = getpwuid (pwdids[i]); -+ if (p == NULL || p->pw_uid != pwdids[i] || strcmp (buf, p->pw_name) != 0) -+ { -+ printf ("passwd entry %u wrong\n", pwdids[i]); -+ retval = 1; -+ } -+ -+ snprintf (buf, sizeof (buf), "name%u", pwdids[i] + 1); -+ -+ p = getpwnam (buf); -+ if (p != NULL) -+ { -+ printf ("passwd entry \"%s\" wrong\n", buf); -+ retval = 1; -+ } -+ -+ p = getpwuid (pwdids[i] + 1); -+ if (p != NULL) -+ { -+ printf ("passwd entry %u wrong\n", pwdids[i] + 1); -+ retval = 1; -+ } -+ } -+ -+ return retval; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/shlib-versions b/shlib-versions ---- a/shlib-versions 2010-05-04 05:27:23.000000000 -0600 -+++ b/shlib-versions 2012-08-23 14:19:49.473441732 -0600 -@@ -114,6 +114,10 @@ alpha.*-.*-linux.* libresolv=2.1 - .*-.*-.* libnss_ldap=2 - .*-.*-.* libnss_hesiod=2 - -+# Tests for NSS. They must have the same NSS_SHLIB_REVISION number as -+# the rest. -+.*-.*-.* libnss_test1=2 -+ - # Version for libnsl with YP and NIS+ functions. - alpha.*-.*-linux.* libnsl=1.1 - .*-.*-.* libnsl=1 -diff -Nrup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-08-06 15:07:49.571057983 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-08-23 14:19:49.541441461 -0600 -@@ -669,7 +669,8 @@ gaih_inet (const char *name, const struc - && ++__nss_not_use_nscd_hosts > NSS_NSCD_RETRY) - __nss_not_use_nscd_hosts = 0; - -- if (!__nss_not_use_nscd_hosts) -+ if (!__nss_not_use_nscd_hosts -+ && !__nss_database_custom[NSS_DBSIDX_hosts]) - { - /* Try to use nscd. */ - struct nscd_ai_result *air = NULL; diff --git a/src/patches/glibc/glibc-rh630801.patch b/src/patches/glibc/glibc-rh630801.patch deleted file mode 100644 index 5bd3c6652..000000000 --- a/src/patches/glibc/glibc-rh630801.patch +++ /dev/null @@ -1,29 +0,0 @@ -2010-05-26 H.J. Lu - - [BZ #11640] - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Properly check family and model. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -62,15 +62,15 @@ __init_cpu_features (void) - unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; - unsigned int extended_family = (eax >> 20) & 0xff; - unsigned int extended_model = (eax >> 12) & 0xf0; -- if (__cpu_features.family == 0x0f) -+ if (family == 0x0f) - { - family += extended_family; - model += extended_model; - } -- else if (__cpu_features.family == 0x06) -+ else if (family == 0x06) - { - model += extended_model; -- switch (__cpu_features.model) -+ switch (model) - { - case 0x1a: - case 0x1e: diff --git a/src/patches/glibc/glibc-rh631011.patch b/src/patches/glibc/glibc-rh631011.patch deleted file mode 100644 index 42a1a56e4..000000000 --- a/src/patches/glibc/glibc-rh631011.patch +++ /dev/null @@ -1,17 +0,0 @@ -2010-08-19 Andreas Schwab - - * sysdeps/i386/i686/multiarch/strspn.S [!SHARED]: Fix SSE4.2 check. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strspn.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strspn.S -@@ -65,7 +65,7 @@ ENTRY(strspn) - jne 1f - call __init_cpu_features - 1: leal __strspn_ia32, %eax -- testl $index_SSE2, CPUID_OFFSET+index_SSE4_2+__cpu_features -+ testl $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features - jz 2f - leal __strspn_sse42, %eax - 2: ret diff --git a/src/patches/glibc/glibc-rh641128.patch b/src/patches/glibc/glibc-rh641128.patch deleted file mode 100644 index 52df4aee0..000000000 --- a/src/patches/glibc/glibc-rh641128.patch +++ /dev/null @@ -1,78 +0,0 @@ -2010-10-06 Ulrich Drepper - - * string/bug-strstr1.c: New file. - * string/Makefile: Add rules to build and run bug-strstr1. - -2010-10-05 Eric Blake - - [BZ #12092] - * string/str-two-way.h (two_way_long_needle): Always clear memory - when skipping input due to the shift table. - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -54,7 +54,8 @@ tests := tester inl-tester noinl-tester - bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ - tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ - bug-strtok1 $(addprefix test-,$(strop-tests)) \ -- bug-envz1 tst-strxfrm2 tst-endian tst-svc2 -+ bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ -+ bug-strstr1 - distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ - str-two-way.h - -@@ -73,6 +74,7 @@ CFLAGS-tst-strlen.c = -fno-builtin - CFLAGS-stratcliff.c = -fno-builtin - CFLAGS-test-ffs.c = -fno-builtin - CFLAGS-tst-inlcall.c = -fno-builtin -+CFLAGS-bug-strstr1.c = -fno-builtin - - ifeq ($(cross-compiling),no) - tests: $(objpfx)tst-svc.out -Index: glibc-2.12-2-gc4ccff1/string/bug-strstr1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/bug-strstr1.c -@@ -0,0 +1,26 @@ -+#include -+#include -+ -+int main (int argc, char** argv) -+{ -+ const char haystack[] = -+ "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD_C3_A7_20_EF_BF_BD"; -+ -+ const char needle[] = -+ "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; -+ -+ const char* sub = strstr (haystack, needle); -+ -+ if (sub != NULL) -+ { -+ int j; -+ -+ fprintf (stderr, "BUG: expected NULL, got:\n%s\n%s\n", sub, needle); -+ for (j = 0; needle[j] != '\0'; ++j) -+ putchar (needle[j] == sub[j] ? ' ' : '^'); -+ puts (""); -+ return 1; -+ } -+ -+ return 0; -+} -Index: glibc-2.12-2-gc4ccff1/string/str-two-way.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/str-two-way.h -+++ glibc-2.12-2-gc4ccff1/string/str-two-way.h -@@ -350,8 +350,8 @@ two_way_long_needle (const unsigned char - a byte out of place, there can be no match until - after the mismatch. */ - shift = needle_len - period; -- memory = 0; - } -+ memory = 0; - j += shift; - continue; - } diff --git a/src/patches/glibc/glibc-rh642584.patch b/src/patches/glibc/glibc-rh642584.patch deleted file mode 100644 index 7fd390d3c..000000000 --- a/src/patches/glibc/glibc-rh642584.patch +++ /dev/null @@ -1,41 +0,0 @@ -2010-10-13 H.J. Lu - - [BZ #12113] - * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32. - * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment - of "struct pthread". - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/pthreaddef.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/pthreaddef.h -@@ -27,8 +27,9 @@ - /* Minimal stack size after allocating thread descriptor and guard size. */ - #define MINIMAL_REST_STACK 2048 - --/* Alignment requirement for TCB. */ --#define TCB_ALIGNMENT 16 -+/* Alignment requirement for TCB. Need to store post-AVX vector registers -+ in the TCB and we want the storage to be aligned at 32-byte. */ -+#define TCB_ALIGNMENT 32 - - - /* Location of current stack frame. The frame pointer is not usable. */ -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/x86_64/tls.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/x86_64/tls.h -@@ -117,12 +117,7 @@ typedef struct - # define TLS_TCB_SIZE sizeof (struct pthread) - - /* Alignment requirements for the TCB. */ --//# define TLS_TCB_ALIGN __alignof__ (struct pthread) --// Normally the above would be correct But we have to store post-AVX --// vector registers in the TCB and we want the storage to be aligned. --// unfortunately there isn't yet a type for these values and hence no --// 32-byte alignment requirement. Make this explicit, for now. --# define TLS_TCB_ALIGN 32 -+# define TLS_TCB_ALIGN __alignof__ (struct pthread) - - /* The TCB can have any size and the memory following the address the - thread pointer points to is unspecified. Allocate the TCB there. */ diff --git a/src/patches/glibc/glibc-rh643822.patch b/src/patches/glibc/glibc-rh643822.patch deleted file mode 100644 index c32c1fea1..000000000 --- a/src/patches/glibc/glibc-rh643822.patch +++ /dev/null @@ -1,64 +0,0 @@ -2010-12-09 Andreas Schwab - - * elf/dl-object.c (_dl_new_object): Ignore origin of privileged - program. - -2010-10-18 Andreas Schwab - - * elf/dl-open.c (dl_open_worker): Don't expand DST here, let - _dl_map_object do it. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-object.c -@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const ch - out: - new->l_origin = origin; - } -+ else if (INTUSE(__libc_enable_secure) && type == lt_executable) -+ /* The origin of a privileged program cannot be trusted. */ -+ new->l_origin = (char *) -1; - - return new; - } -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -221,35 +221,6 @@ dl_open_worker (void *a) - - assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); - -- /* Maybe we have to expand a DST. */ -- if (__builtin_expect (dst != NULL, 0)) -- { -- size_t len = strlen (file); -- -- /* Determine how much space we need. We have to allocate the -- memory locally. */ -- size_t required = DL_DST_REQUIRED (call_map, file, len, -- _dl_dst_count (dst, 0)); -- -- /* Get space for the new file name. */ -- char *new_file = (char *) alloca (required + 1); -- -- /* Generate the new file name. */ -- _dl_dst_substitute (call_map, file, new_file, 0); -- -- /* If the substitution failed don't try to load. */ -- if (*new_file == '\0') -- _dl_signal_error (0, "dlopen", NULL, -- N_("empty dynamic string token substitution")); -- -- /* Now we have a new file name. */ -- file = new_file; -- -- /* It does not matter whether call_map is set even if we -- computed it only because of the DST. Since the path contains -- a slash the value is not used. See dl-load.c. */ -- } -- - /* Load the named object. */ - struct link_map *new; - args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, diff --git a/src/patches/glibc/glibc-rh645672.patch b/src/patches/glibc/glibc-rh645672.patch deleted file mode 100644 index 644614ed6..000000000 --- a/src/patches/glibc/glibc-rh645672.patch +++ /dev/null @@ -1,215 +0,0 @@ -2010-10-22 Andreas Schwab - - * include/dlfcn.h (__RTLD_SECURE): Define. - * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use - mode & __RTLD_SECURE instead. - (open_path): Remove preloaded parameter to secure. - * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration. - * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object. - * elf/dl-deps.c (openaux): Likewise. - * elf/rtld.c (struct map_args): Remove is_preloaded. - (map_doit): Don't use it. - (dl_main): Likewise. - (do_preload): Use __RTLD_SECURE instead of is_preloaded. - (dlmopen_doit): Add __RTLD_SECURE to mode bits. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c -@@ -62,7 +62,7 @@ openaux (void *a) - { - struct openaux_args *args = (struct openaux_args *) a; - -- args->aux = _dl_map_object (args->map, args->name, 0, -+ args->aux = _dl_map_object (args->map, args->name, - (args->map->l_type == lt_executable - ? lt_library : args->map->l_type), - args->trace_mode, args->open_mode, -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -1811,7 +1811,7 @@ open_verify (const char *name, struct fi - if MAY_FREE_DIRS is true. */ - - static int --open_path (const char *name, size_t namelen, int preloaded, -+open_path (const char *name, size_t namelen, int secure, - struct r_search_path_struct *sps, char **realname, - struct filebuf *fbp, struct link_map *loader, int whatcode, - bool *found_other_class) -@@ -1893,7 +1893,7 @@ open_path (const char *name, size_t name - /* Remember whether we found any existing directory. */ - here_any |= this_dir->status[cnt] != nonexisting; - -- if (fd != -1 && __builtin_expect (preloaded, 0) -+ if (fd != -1 && __builtin_expect (secure, 0) - && INTUSE(__libc_enable_secure)) - { - /* This is an extra security effort to make sure nobody can -@@ -1962,7 +1962,7 @@ open_path (const char *name, size_t name - - struct link_map * - internal_function --_dl_map_object (struct link_map *loader, const char *name, int preloaded, -+_dl_map_object (struct link_map *loader, const char *name, - int type, int trace_mode, int mode, Lmid_t nsid) - { - int fd; -@@ -2066,7 +2066,8 @@ _dl_map_object (struct link_map *loader, - for (l = loader; l; l = l->l_loader) - if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH")) - { -- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, -+ &l->l_rpath_dirs, - &realname, &fb, loader, LA_SER_RUNPATH, - &found_other_class); - if (fd != -1) -@@ -2081,14 +2082,15 @@ _dl_map_object (struct link_map *loader, - && main_map != NULL && main_map->l_type != lt_loaded - && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH, - "RPATH")) -- fd = open_path (name, namelen, preloaded, &main_map->l_rpath_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, -+ &main_map->l_rpath_dirs, - &realname, &fb, loader ?: main_map, LA_SER_RUNPATH, - &found_other_class); - } - - /* Try the LD_LIBRARY_PATH environment variable. */ - if (fd == -1 && env_path_list.dirs != (void *) -1) -- fd = open_path (name, namelen, preloaded, &env_path_list, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &env_path_list, - &realname, &fb, - loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded, - LA_SER_LIBPATH, &found_other_class); -@@ -2097,12 +2099,12 @@ _dl_map_object (struct link_map *loader, - if (fd == -1 && loader != NULL - && cache_rpath (loader, &loader->l_runpath_dirs, - DT_RUNPATH, "RUNPATH")) -- fd = open_path (name, namelen, preloaded, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, - &loader->l_runpath_dirs, &realname, &fb, loader, - LA_SER_RUNPATH, &found_other_class); - - if (fd == -1 -- && (__builtin_expect (! preloaded, 1) -+ && (__builtin_expect (! (mode & __RTLD_SECURE), 1) - || ! INTUSE(__libc_enable_secure))) - { - /* Check the list of libraries in the file /etc/ld.so.cache, -@@ -2168,7 +2170,7 @@ _dl_map_object (struct link_map *loader, - && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL - || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1)) - && rtld_search_dirs.dirs != (void *) -1) -- fd = open_path (name, namelen, preloaded, &rtld_search_dirs, -+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs, - &realname, &fb, l, LA_SER_DEFAULT, &found_other_class); - - /* Add another newline when we are tracing the library loading. */ -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -252,7 +252,7 @@ dl_open_worker (void *a) - - /* Load the named object. */ - struct link_map *new; -- args->map = new = _dl_map_object (call_map, file, 0, lt_loaded, 0, -+ args->map = new = _dl_map_object (call_map, file, lt_loaded, 0, - mode | __RTLD_CALLMAP, args->nsid); - - /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -589,7 +589,6 @@ struct map_args - /* Argument to map_doit. */ - char *str; - struct link_map *loader; -- int is_preloaded; - int mode; - /* Return value of map_doit. */ - struct link_map *map; -@@ -627,16 +626,17 @@ static void - map_doit (void *a) - { - struct map_args *args = (struct map_args *) a; -- args->map = _dl_map_object (args->loader, args->str, -- args->is_preloaded, lt_library, 0, args->mode, -- LM_ID_BASE); -+ args->map = _dl_map_object (args->loader, args->str, lt_library, 0, -+ args->mode, LM_ID_BASE); - } - - static void - dlmopen_doit (void *a) - { - struct dlmopen_args *args = (struct dlmopen_args *) a; -- args->map = _dl_open (args->fname, RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT, -+ args->map = _dl_open (args->fname, -+ (RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT -+ | __RTLD_SECURE), - dl_main, LM_ID_NEWLM, _dl_argc, INTUSE(_dl_argv), - __environ); - } -@@ -806,8 +806,7 @@ do_preload (char *fname, struct link_map - - args.str = fname; - args.loader = main_map; -- args.is_preloaded = 1; -- args.mode = 0; -+ args.mode = __RTLD_SECURE; - - unsigned int old_nloaded = GL(dl_ns)[LM_ID_BASE]._ns_nloaded; - -@@ -1054,7 +1053,6 @@ of this helper program; chances are you - - args.str = rtld_progname; - args.loader = NULL; -- args.is_preloaded = 0; - args.mode = __RTLD_OPENEXEC; - (void) _dl_catch_error (&objname, &err_str, &malloced, map_doit, - &args); -@@ -1066,7 +1064,7 @@ of this helper program; chances are you - else - { - HP_TIMING_NOW (start); -- _dl_map_object (NULL, rtld_progname, 0, lt_library, 0, -+ _dl_map_object (NULL, rtld_progname, lt_library, 0, - __RTLD_OPENEXEC, LM_ID_BASE); - HP_TIMING_NOW (stop); - -Index: glibc-2.12-2-gc4ccff1/include/dlfcn.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/dlfcn.h -+++ glibc-2.12-2-gc4ccff1/include/dlfcn.h -@@ -9,6 +9,7 @@ - #define __RTLD_OPENEXEC 0x20000000 - #define __RTLD_CALLMAP 0x10000000 - #define __RTLD_AUDIT 0x08000000 -+#define __RTLD_SECURE 0x04000000 /* Apply additional security checks. */ - - #define __LM_ID_CALLER -2 - -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -824,11 +824,9 @@ extern void _dl_receive_error (receiver_ - - /* Open the shared object NAME and map in its segments. - LOADER's DT_RPATH is used in searching for NAME. -- If the object is already opened, returns its existing map. -- For preloaded shared objects PRELOADED is set to a non-zero -- value to allow additional security checks. */ -+ If the object is already opened, returns its existing map. */ - extern struct link_map *_dl_map_object (struct link_map *loader, -- const char *name, int preloaded, -+ const char *name, - int type, int trace_mode, int mode, - Lmid_t nsid) - internal_function attribute_hidden; diff --git a/src/patches/glibc/glibc-rh646954.patch b/src/patches/glibc/glibc-rh646954.patch deleted file mode 100644 index bbb959e5a..000000000 --- a/src/patches/glibc/glibc-rh646954.patch +++ /dev/null @@ -1,216 +0,0 @@ -2010-10-26 Ulrich Drepper - - * elf/rtld.c (dl_main): Move assertion after the point where rtld map - is added to the list. - -2010-10-20 Andreas Krebbel - Ulrich Drepper - - * elf/dl-object.c (_dl_new_object): Don't append the new object to - the global list here. Move code to... - (_dl_add_to_namespace_list): ...here. New function. - * elf/rtld.c (dl_main): Invoke _dl_add_to_namespace_list. - * sysdeps/generic/ldsodefs.h (_dl_add_to_namespace_list): Declare. - * elf/dl-load.c (lose): Don't remove the element from the list. - (_dl_map_object_from_fd): Invoke _dl_add_to_namespace_list. - (_dl_map_object): Likewise. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -797,22 +797,7 @@ lose (int code, int fd, const char *name - /* The file might already be closed. */ - if (fd != -1) - (void) __close (fd); -- if (l != NULL) -- { -- /* We modify the list of loaded objects. */ -- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -- /* Remove the stillborn object from the list and free it. */ -- assert (l->l_next == NULL); -- if (l->l_prev == NULL) -- /* No other module loaded. This happens only in the static library, -- or in rtld under --verify. */ -- GL(dl_ns)[l->l_ns]._ns_loaded = NULL; -- else -- l->l_prev->l_next = NULL; -- --GL(dl_ns)[l->l_ns]._ns_nloaded; -- free (l); -- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -- } -+ free (l); - free (realname); - - if (r != NULL) -@@ -897,6 +882,9 @@ _dl_map_object_from_fd (const char *name - never be unloaded. */ - __close (fd); - -+ /* Add the map for the mirrored object to the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - return l; - } - #endif -@@ -1491,6 +1479,9 @@ cannot enable executable stack as shared - add_name_to_object (l, ((const char *) D_PTR (l, l_info[DT_STRTAB]) - + l->l_info[DT_SONAME]->d_un.d_val)); - -+ /* Now that the object is fully initialized add it to the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - #ifdef SHARED - /* Auditing checkpoint: we have a new object. */ - if (__builtin_expect (GLRO(dl_naudit) > 0, 0) -@@ -2215,7 +2206,7 @@ _dl_map_object (struct link_map *loader, - have. */ - static const Elf_Symndx dummy_bucket = STN_UNDEF; - -- /* Enter the new object in the list of loaded objects. */ -+ /* Allocate a new object map. */ - if ((name_copy = local_strdup (name)) == NULL - || (l = _dl_new_object (name_copy, name, type, loader, - mode, nsid)) == NULL) -@@ -2233,6 +2224,9 @@ _dl_map_object (struct link_map *loader, - l->l_nbuckets = 1; - l->l_relocated = 1; - -+ /* Enter the object in the object list. */ -+ _dl_add_to_namespace_list (l, nsid); -+ - return l; - } - else if (found_other_class) -Index: glibc-2.12-2-gc4ccff1/elf/dl-object.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-object.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-object.c -@@ -26,16 +26,41 @@ - #include - - -+/* Add the new link_map NEW to the end of the namespace list. */ -+void -+internal_function -+_dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) -+{ -+ /* We modify the list of loaded objects. */ -+ __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -+ -+ if (GL(dl_ns)[nsid]._ns_loaded != NULL) -+ { -+ struct link_map *l = GL(dl_ns)[nsid]._ns_loaded; -+ while (l->l_next != NULL) -+ l = l->l_next; -+ new->l_prev = l; -+ /* new->l_next = NULL; Would be necessary but we use calloc. */ -+ l->l_next = new; -+ } -+ else -+ GL(dl_ns)[nsid]._ns_loaded = new; -+ ++GL(dl_ns)[nsid]._ns_nloaded; -+ new->l_serial = GL(dl_load_adds); -+ ++GL(dl_load_adds); -+ -+ __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -+} -+ -+ - /* Allocate a `struct link_map' for a new object being loaded, - and enter it into the _dl_loaded list. */ -- - struct link_map * - internal_function - _dl_new_object (char *realname, const char *libname, int type, - struct link_map *loader, int mode, Lmid_t nsid) - { - struct link_map *l; -- int idx; - size_t libname_len = strlen (libname) + 1; - struct link_map *new; - struct libname_list *newname; -@@ -93,31 +118,12 @@ _dl_new_object (char *realname, const ch - new->l_scope = new->l_scope_mem; - new->l_scope_max = sizeof (new->l_scope_mem) / sizeof (new->l_scope_mem[0]); - -- /* We modify the list of loaded objects. */ -- __rtld_lock_lock_recursive (GL(dl_load_write_lock)); -- - /* Counter for the scopes we have to handle. */ -- idx = 0; -+ int idx = 0; - - if (GL(dl_ns)[nsid]._ns_loaded != NULL) -- { -- l = GL(dl_ns)[nsid]._ns_loaded; -- while (l->l_next != NULL) -- l = l->l_next; -- new->l_prev = l; -- /* new->l_next = NULL; Would be necessary but we use calloc. */ -- l->l_next = new; -- -- /* Add the global scope. */ -- new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; -- } -- else -- GL(dl_ns)[nsid]._ns_loaded = new; -- ++GL(dl_ns)[nsid]._ns_nloaded; -- new->l_serial = GL(dl_load_adds); -- ++GL(dl_load_adds); -- -- __rtld_lock_unlock_recursive (GL(dl_load_write_lock)); -+ /* Add the global scope. */ -+ new->l_scope[idx++] = &GL(dl_ns)[nsid]._ns_loaded->l_searchlist; - - /* If we have no loader the new object acts as it. */ - if (loader == NULL) -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -1108,11 +1108,15 @@ of this helper program; chances are you - main_map = _dl_new_object ((char *) "", "", lt_executable, NULL, - __RTLD_OPENEXEC, LM_ID_BASE); - assert (main_map != NULL); -- assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); - main_map->l_phdr = phdr; - main_map->l_phnum = phnum; - main_map->l_entry = *user_entry; - -+ /* Even though the link map is not yet fully initialized we can add -+ it to the map list since there are no possible users running yet. */ -+ _dl_add_to_namespace_list (main_map, LM_ID_BASE); -+ assert (main_map == GL(dl_ns)[LM_ID_BASE]._ns_loaded); -+ - /* At this point we are in a bit of trouble. We would have to - fill in the values for l_dev and l_ino. But in general we - do not know where the file is. We also do not handle AT_EXECFD -@@ -1380,6 +1384,9 @@ of this helper program; chances are you - l->l_libname->name = memcpy (copy, dsoname, len); - } - -+ /* Add the vDSO to the object list. */ -+ _dl_add_to_namespace_list (l, LM_ID_BASE); -+ - /* Rearrange the list so this DSO appears after rtld_map. */ - assert (l->l_next == NULL); - assert (l->l_prev == main_map); -Index: glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h -@@ -891,8 +891,11 @@ extern lookup_t _dl_lookup_symbol_x (con - extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name) - internal_function; - --/* Allocate a `struct link_map' for a new object being loaded, -- and enter it into the _dl_main_map list. */ -+/* Add the new link_map NEW to the end of the namespace list. */ -+extern void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid) -+ internal_function attribute_hidden; -+ -+/* Allocate a `struct link_map' for a new object being loaded. */ - extern struct link_map *_dl_new_object (char *realname, const char *libname, - int type, struct link_map *loader, - int mode, Lmid_t nsid) diff --git a/src/patches/glibc/glibc-rh647448.patch b/src/patches/glibc/glibc-rh647448.patch deleted file mode 100644 index ff5594560..000000000 --- a/src/patches/glibc/glibc-rh647448.patch +++ /dev/null @@ -1,58 +0,0 @@ -2010-10-25 Ulrich Drepper - - [BZ #12159] - * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte - into all bytes of SSE register. - Patch by Richard Li . - -Index: glibc-2.12-2-gc4ccff1/string/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/Makefile -+++ glibc-2.12-2-gc4ccff1/string/Makefile -@@ -55,7 +55,7 @@ tests := tester inl-tester noinl-tester - tst-strtok tst-strxfrm bug-strcoll1 tst-strfry \ - bug-strtok1 $(addprefix test-,$(strop-tests)) \ - bug-envz1 tst-strxfrm2 tst-endian tst-svc2 \ -- bug-strstr1 -+ bug-strstr1 bug-strchr1 - distribute := memcopy.h pagecopy.h tst-svc.expect test-string.h \ - str-two-way.h - -Index: glibc-2.12-2-gc4ccff1/string/bug-strchr1.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/string/bug-strchr1.c -@@ -0,0 +1,14 @@ -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ char s[] __attribute__((aligned(16))) = "\xff"; -+ char *p = strchr (s, '\xfe'); -+ printf ("%p\n", p); -+ return p != NULL; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strchr.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strchr.S -@@ -87,13 +87,13 @@ __strchr_sse42: - pxor %xmm2, %xmm2 - movd %esi, %xmm1 - movl %edi, %ecx -+ pshufb %xmm2, %xmm1 - andl $15, %ecx - movq %rdi, %r8 - je L(aligned_start) - - /* Handle unaligned string. */ - andq $-16, %r8 -- pshufb %xmm2, %xmm1 - movdqa (%r8), %xmm0 - pcmpeqb %xmm0, %xmm2 - pcmpeqb %xmm1, %xmm0 diff --git a/src/patches/glibc/glibc-rh652661.patch b/src/patches/glibc/glibc-rh652661.patch deleted file mode 100644 index 79a3212a7..000000000 --- a/src/patches/glibc/glibc-rh652661.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-05-20 Andreas Schwab - - * sysdeps/unix/sysv/linux/sys/timex.h: Use __REDIRECT_NTH. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sys/timex.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sys/timex.h -@@ -140,9 +140,9 @@ __BEGIN_DECLS - extern int __adjtimex (struct timex *__ntx) __THROW; - extern int adjtimex (struct timex *__ntx) __THROW; - --#if defined __GNUC__ && __GNUC__ >= 2 --extern int ntp_gettime (struct ntptimeval *__ntv) -- __asm__ ("ntp_gettimex") __THROW; -+#ifdef __REDIRECT_NTH -+extern int __REDIRECT_NTH (ntp_gettime, (struct ntptimeval *__ntv), -+ ntp_gettimex); - #else - extern int ntp_gettimex (struct ntptimeval *__ntv) __THROW; - # define ntp_gettime ntp_gettimex diff --git a/src/patches/glibc/glibc-rh656014.patch b/src/patches/glibc/glibc-rh656014.patch deleted file mode 100644 index 5ef68dcbf..000000000 --- a/src/patches/glibc/glibc-rh656014.patch +++ /dev/null @@ -1,45 +0,0 @@ -2010-11-24 Andreas Schwab - - * resolv/nss_dns/dns-host.c (getanswer_r): Don't handle ttl == 0 - specially. - (gaih_getanswer_slice): Likewise. - -Index: glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/resolv/nss_dns/dns-host.c -+++ glibc-2.12-2-gc4ccff1/resolv/nss_dns/dns-host.c -@@ -599,7 +599,6 @@ getanswer_r (const querybuf *answer, int - int (*name_ok) (const char *); - u_char packtmp[NS_MAXCDNAME]; - int have_to_map = 0; -- int32_t ttl = 0; - uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); - buffer += pad; - if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) -@@ -733,7 +732,7 @@ getanswer_r (const querybuf *answer, int - cp += INT16SZ; /* type */ - class = __ns_get16 (cp); - cp += INT16SZ; /* class */ -- ttl = __ns_get32 (cp); -+ int32_t ttl = __ns_get32 (cp); - cp += INT32SZ; /* TTL */ - n = __ns_get16 (cp); - cp += INT16SZ; /* len */ -@@ -907,7 +906,7 @@ getanswer_r (const querybuf *answer, int - { - register int nn; - -- if (ttlp != NULL && ttl != 0) -+ if (ttlp != NULL) - *ttlp = ttl; - if (canonp != NULL) - *canonp = bp; -@@ -1163,7 +1162,7 @@ gaih_getanswer_slice (const querybuf *an - - if (*firstp) - { -- if (ttl != 0 && ttlp != NULL) -+ if (ttlp != NULL) - *ttlp = ttl; - - (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh656530.patch b/src/patches/glibc/glibc-rh656530.patch deleted file mode 100644 index f10143069..000000000 --- a/src/patches/glibc/glibc-rh656530.patch +++ /dev/null @@ -1,21 +0,0 @@ -2010-11-10 Luis Machado - - * sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (__ieee754_sqrtl): Force - signed comparison. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c -@@ -73,9 +73,9 @@ long double __ieee754_sqrtl(long double - m = ((a.i[2] >> 20) & 0x7ff) - 54; - } - m += n; -- if (m > 0) -+ if ((int) m > 0) - a.i[2] = (a.i[2] & 0x800fffff) | (m << 20); -- else if (m <= -54) { -+ else if ((int) m <= -54) { - a.i[2] &= 0x80000000; - a.i[3] = 0; - } else { diff --git a/src/patches/glibc/glibc-rh657572.patch b/src/patches/glibc/glibc-rh657572.patch deleted file mode 100644 index a7201309d..000000000 --- a/src/patches/glibc/glibc-rh657572.patch +++ /dev/null @@ -1,141 +0,0 @@ -commit 42c5011242e48f846111237552d3bf3ca18c4885 -Author: Ulrich Drepper -Date: Fri Dec 23 09:51:10 2011 -0500 - - Various fixes to fi_FI - - 2011-12-23 Ulrich Drepper - - [BZ #12962] - * locales/fi_FI: Various fixups. - Patch by Marko Myllynen . - -diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI -index acc9ce6..f51700c 100644 ---- a/localedata/locales/fi_FI -+++ b/localedata/locales/fi_FI -@@ -1,4 +1,4 @@ --escape_char / -+escape_char / - comment_char % - - % Finnish language locale for Finland -@@ -45,10 +45,10 @@ category "fi_FI:2000";LC_NUMERIC - category "fi_FI:2000";LC_MONETARY - category "fi_FI:2000";LC_MESSAGES - category "fi_FI:2000";LC_PAPER -+category "fi_FI:2000";LC_MEASUREMENT - category "fi_FI:2000";LC_NAME - category "fi_FI:2000";LC_ADDRESS - category "fi_FI:2000";LC_TELEPHONE -- - END LC_IDENTIFICATION - - LC_COLLATE -@@ -125,7 +125,6 @@ reorder-after - ;;;IGNORE - - reorder-end -- - END LC_COLLATE - - LC_CTYPE -@@ -146,12 +145,10 @@ positive_sign "" - negative_sign "" - int_frac_digits 2 - frac_digits 2 --% int_curr_symbol precedes --% curr_symbol succeeds - p_cs_precedes 0 --p_sep_by_space 2 -+p_sep_by_space 1 - n_cs_precedes 0 --n_sep_by_space 2 -+n_sep_by_space 1 - p_sign_posn 1 - n_sign_posn 1 - END LC_MONETARY -@@ -173,18 +170,18 @@ day "";/ - "";/ - "";/ - "" --abmon "";/ -- "";/ -+abmon "";/ -+ "";/ - "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ - "";/ -- "" -+ "" - mon "";/ - "";/ - "";/ -@@ -207,13 +204,14 @@ t_fmt_ampm "" - date_fmt "/ - / - " -+week 7;19971130;4 - first_weekday 2 % Monday - first_workday 2 % Monday - END LC_TIME - - LC_MESSAGES --yesexpr "" --noexpr "" -+yesexpr "" -+noexpr "" - END LC_MESSAGES - - LC_PAPER -@@ -222,6 +220,7 @@ width 210 - END LC_PAPER - - LC_TELEPHONE -+tel_dom_fmt "" - tel_int_fmt "/ - " - int_prefix "" -@@ -235,15 +234,25 @@ END LC_MEASUREMENT - LC_NAME - name_fmt "/ - " -+% Finnish equivalents for Mr/Mrs/Miss/Ms are herra/rouva/rouva/neiti -+% but they are practically never used, thus we don't define them here. - END LC_NAME - - LC_ADDRESS --postal_fmt "/ --/ --/ --/ -+postal_fmt "/ -+/ -+/ -+/ - " - country_ab2 "" - country_ab3 "" - country_num 246 -+country_name "" -+country_post "" -+country_car "" -+country_isbn 952 -+lang_name "" -+lang_ab "" -+lang_term "" -+lang_lib "" - END LC_ADDRESS diff --git a/src/patches/glibc/glibc-rh661982.patch b/src/patches/glibc/glibc-rh661982.patch deleted file mode 100644 index 60b840bb8..000000000 --- a/src/patches/glibc/glibc-rh661982.patch +++ /dev/null @@ -1,188 +0,0 @@ -2010-12-10 Andreas Schwab - - * wcsmbs/wchar.h (wcpcpy, wcpncpy): Only declare under - _GNU_SOURCE. - -2010-12-10 Andreas Schwab - - * wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict. - * wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset): - Remove __restrict. - (wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy) - (wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict. - -2010-12-09 Jakub Jelinek - - * string/bits/string3.h (memmove, bcopy): Remove __restrict. - -Index: glibc-2.12-2-gc4ccff1/string/bits/string3.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/bits/string3.h -+++ glibc-2.12-2-gc4ccff1/string/bits/string3.h -@@ -53,8 +53,7 @@ __NTH (memcpy (void *__restrict __dest, - } - - __extern_always_inline void * --__NTH (memmove (void *__restrict __dest, __const void *__restrict __src, -- size_t __len)) -+__NTH (memmove (void *__dest, __const void *__src, size_t __len)) - { - return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); - } -@@ -88,8 +87,7 @@ __NTH (memset (void *__dest, int __ch, s - - #ifdef __USE_BSD - __extern_always_inline void --__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest, -- size_t __len)) -+__NTH (bcopy (__const void *__src, void *__dest, size_t __len)) - { - (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); - } -Index: glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/bits/wchar2.h -+++ glibc-2.12-2-gc4ccff1/wcsmbs/bits/wchar2.h -@@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo - __const wchar_t *__s2, - size_t __n), wmemmove); - extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, -- (wchar_t *__restrict __s1, -- __const wchar_t *__restrict __s2, size_t __n, -- size_t __ns1), __wmemmove_chk) -+ (wchar_t *__s1, __const wchar_t *__s2, -+ size_t __n, size_t __ns1), __wmemmove_chk) - __warnattr ("wmemmove called with length bigger than size of destination " - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, -- size_t __n)) -+__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)) - { - if (__bos0 (__s1) != (size_t) -1) - { -@@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) -+__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) - { - if (__bos0 (__s) != (size_t) -1) - { -@@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy - __const wchar_t *__restrict __src), wcscpy); - - __extern_always_inline wchar_t * --__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const - } - - --extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src, -+extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src, - size_t __destlen) __THROW; --extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest, -- __const wchar_t *__src), -- wcpcpy); -+extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, -+ (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src), wcpcpy); - - __extern_always_inline wchar_t * --__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - { -@@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp - "buffer"); - - __extern_always_inline wchar_t * --__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - { -@@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat - __const wchar_t *__restrict __src), wcscat); - - __extern_always_inline wchar_t * --__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) -+__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) - { - if (__bos (__dest) != (size_t) -1) - return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); -@@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca - size_t __n), wcsncat); - - __extern_always_inline wchar_t * --__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) -+__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, -+ size_t __n)) - { - if (__bos (__dest) != (size_t) -1) - return __wcsncat_chk (__dest, __src, __n, -@@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s - #endif - - --extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p, -- size_t __buflen) __THROW __wur; -+extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, -+ mbstate_t *__restrict __p, -+ size_t __buflen) __THROW __wur; - extern size_t __REDIRECT_NTH (__wcrtomb_alias, - (char *__restrict __s, wchar_t __wchar, - mbstate_t *__restrict __ps), wcrtomb) __wur; - - __extern_always_inline __wur size_t --__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) -+__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, -+ mbstate_t *__restrict __ps)) - { - /* We would have to include to get a definition of MB_LEN_MAX. - But this would only disturb the namespace. So we define our own -Index: glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/wcsmbs/wchar.h -+++ glibc-2.12-2-gc4ccff1/wcsmbs/wchar.h -@@ -555,17 +555,17 @@ extern float wcstof_l (__const wchar_t * - extern long double wcstold_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - __locale_t __loc) __THROW; --#endif /* GNU */ - - --#ifdef __USE_XOPEN2K8 - /* Copy SRC to DEST, returning the address of the terminating L'\0' in - DEST. */ --extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; -+extern wchar_t *wcpcpy (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src) __THROW; - - /* Copy no more than N characters of SRC to DEST, returning the address of - the last character written into DEST. */ --extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) -+extern wchar_t *wcpncpy (wchar_t *__restrict __dest, -+ __const wchar_t *__restrict __src, size_t __n) - __THROW; - #endif /* use GNU */ - diff --git a/src/patches/glibc/glibc-rh663641-2.patch b/src/patches/glibc/glibc-rh663641-2.patch deleted file mode 100644 index 13c1bee4d..000000000 --- a/src/patches/glibc/glibc-rh663641-2.patch +++ /dev/null @@ -1,279 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/csu/libc-start.c glibc-2.12-2-gc4ccff1.fixed/csu/libc-start.c ---- glibc-2.12-2-gc4ccff1/csu/libc-start.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/csu/libc-start.c 2013-07-09 23:34:59.596859295 +0530 -@@ -33,7 +33,7 @@ extern int __libc_multiple_libcs; - #include - #ifndef SHARED - # include --extern void __pthread_initialize_minimal (void); -+extern void __pthread_initialize_minimal (int, char **, char **); - # ifndef THREAD_SET_STACK_GUARD - /* Only exported for architectures that don't store the stack guard canary - in thread local area. */ -@@ -143,7 +143,7 @@ LIBC_START_MAIN (int (*main) (int, char - /* Initialize the thread library at least a bit since the libgcc - functions are using thread functions if these are available and - we need to setup errno. */ -- __pthread_initialize_minimal (); -+ __pthread_initialize_minimal (argc, argv, __environ); - - /* Set up the stack checker's canary. */ - uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); -diff -pruN glibc-2.12-2-gc4ccff1/csu/libc-tls.c glibc-2.12-2-gc4ccff1.fixed/csu/libc-tls.c ---- glibc-2.12-2-gc4ccff1/csu/libc-tls.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/csu/libc-tls.c 2013-07-09 23:34:59.596859295 +0530 -@@ -244,7 +244,7 @@ _dl_tls_setup (void) - not used. */ - void - __attribute__ ((weak)) --__pthread_initialize_minimal (void) -+__pthread_initialize_minimal (int argc, char **argv, char **envp) - { - __libc_setup_tls (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN); - } -diff -pruN glibc-2.12-2-gc4ccff1/nptl/Makefile glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile ---- glibc-2.12-2-gc4ccff1/nptl/Makefile 2013-07-09 23:35:21.692858252 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/Makefile 2013-07-09 23:34:59.597859295 +0530 -@@ -197,7 +197,7 @@ CFLAGS-pt-system.c = -fexceptions - - - tests = tst-typesizes \ -- tst-attr1 tst-attr2 tst-attr3 \ -+ tst-attr1 tst-attr2 tst-attr3 tst-default-attr \ - tst-mutex1 tst-mutex2 tst-mutex3 tst-mutex4 tst-mutex5 tst-mutex6 \ - tst-mutex7 tst-mutex8 tst-mutex9 tst-mutex5a tst-mutex7a \ - tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 tst-mutexpi5 \ -@@ -279,6 +279,13 @@ LDFLAGS-pthread.so = -Wl,--enable-new-dt - LDFLAGS-tst-cond24 = -lrt - LDFLAGS-tst-cond25 = -lrt - -+# The size is 1MB + 4KB. The extra 4KB has been added to prevent allocatestack -+# from resizing the input size to avoid the 64K aliasing conflict on Intel -+# processors. -+DEFAULT_STACKSIZE=1052672 -+CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) -+tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) -+ - include ../Makeconfig - - ifeq ($(have-forced-unwind),yes) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/nptl-init.c glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c ---- glibc-2.12-2-gc4ccff1/nptl/nptl-init.c 2013-07-09 23:35:21.723858250 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c 2013-07-09 23:36:35.070854789 +0530 -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - - - /* Size and alignment of static TLS block. */ -@@ -288,8 +289,28 @@ extern void **__libc_dl_error_tsd (void) - /* This can be set by the debugger before initialization is complete. */ - static bool __nptl_initial_report_events __attribute_used__; - -+/* Validate and set the default stacksize. */ -+static void -+set_default_stacksize (size_t stacksize) -+{ -+ if (stacksize < PTHREAD_STACK_MIN) -+ stacksize = PTHREAD_STACK_MIN; -+ -+ /* Make sure it meets the minimum size that allocate_stack -+ (allocatestack.c) will demand, which depends on the page size. */ -+ const uintptr_t pagesz = GLRO(dl_pagesize); -+ const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK; -+ -+ if (stacksize < minstack) -+ stacksize = minstack; -+ -+ /* Round the resource limit up to page size. */ -+ stacksize = ALIGN_UP (stacksize, pagesz); -+ __default_pthread_attr.stacksize = stacksize; -+} -+ - void --__pthread_initialize_minimal_internal (void) -+__pthread_initialize_minimal_internal (int argc, char **argv, char **envp) - { - #ifndef SHARED - /* Unlike in the dynamically linked case the dynamic linker has not -@@ -413,29 +434,44 @@ __pthread_initialize_minimal_internal (v - - __static_tls_size = roundup (__static_tls_size, static_tls_align); - -- /* Determine the default allowed stack size. This is the size used -- in case the user does not specify one. */ -- struct rlimit limit; -- if (getrlimit (RLIMIT_STACK, &limit) != 0 -- || limit.rlim_cur == RLIM_INFINITY) -- /* The system limit is not usable. Use an architecture-specific -- default. */ -- limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE; -- else if (limit.rlim_cur < PTHREAD_STACK_MIN) -- /* The system limit is unusably small. -- Use the minimal size acceptable. */ -- limit.rlim_cur = PTHREAD_STACK_MIN; -+ /* Initialize the environment. libc.so gets initialized after us due to a -+ circular dependency and hence __environ is not available otherwise. */ -+ __environ = envp; - -- /* Make sure it meets the minimum size that allocate_stack -- (allocatestack.c) will demand, which depends on the page size. */ -- const uintptr_t pagesz = __sysconf (_SC_PAGESIZE); -- const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK; -- if (limit.rlim_cur < minstack) -- limit.rlim_cur = minstack; -+#ifndef SHARED -+ __libc_init_secure (); -+#endif - -- /* Round the resource limit up to page size. */ -- limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; -- __default_pthread_attr.stacksize = limit.rlim_cur; -+ /* Get the default stack size from the environment variable if it is set and -+ is valid. */ -+ size_t stacksize = 0; -+ char *envval = __secure_getenv ("GLIBC_PTHREAD_STACKSIZE"); -+ -+ if (__builtin_expect (envval != NULL && envval[0] != '\0', 0)) -+ { -+ char *env_conv = envval; -+ size_t ret = strtoul (envval, &env_conv, 0); -+ -+ if (*env_conv == '\0' && env_conv != envval) -+ stacksize = ret; -+ } -+ -+ if (stacksize == 0) -+ { -+ /* Determine the default allowed stack size. */ -+ struct rlimit limit; -+ if (getrlimit (RLIMIT_STACK, &limit) != 0 -+ || limit.rlim_cur == RLIM_INFINITY) -+ /* The system limit is not usable. Use an architecture-specific -+ default. */ -+ stacksize = ARCH_STACK_DEFAULT_SIZE; -+ else -+ stacksize = limit.rlim_cur; -+ } -+ -+ /* Finally, set the default stack size. This size is used when the user does -+ not specify a stack size during thread creation. */ -+ set_default_stacksize (stacksize); - __default_pthread_attr.guardsize = GLRO (dl_pagesize); - - #ifdef SHARED -diff -pruN glibc-2.12-2-gc4ccff1/nptl/tst-default-attr.c glibc-2.12-2-gc4ccff1.fixed/nptl/tst-default-attr.c ---- glibc-2.12-2-gc4ccff1/nptl/tst-default-attr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/tst-default-attr.c 2013-07-09 23:34:59.598859295 +0530 -@@ -0,0 +1,109 @@ -+/* Verify that default stack size gets set correctly from the environment -+ variable. -+ -+ Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define RETURN_IF_FAIL(f, ...) \ -+ ({ \ -+ int ret = f (__VA_ARGS__); \ -+ if (ret != 0) \ -+ { \ -+ printf ("%s:%d: %s returned %d (errno = %d)\n", __FILE__, __LINE__, \ -+ #f, ret, errno); \ -+ return ret; \ -+ } \ -+ }) -+ -+/* DEFAULT_STACKSIZE macro is defined in the Makefile. */ -+static size_t stacksize = DEFAULT_STACKSIZE; -+ -+static int -+verify_stacksize_result (pthread_attr_t *attr) -+{ -+ size_t stack; -+ -+ RETURN_IF_FAIL (pthread_attr_getstacksize, attr, &stack); -+ -+ if (stacksize != stack) -+ { -+ printf ("failed to set default stacksize (%zu, %zu)\n", stacksize, stack); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static void * -+thr (void *unused __attribute__ ((unused))) -+{ -+ pthread_attr_t attr; -+ int ret; -+ -+ memset (&attr, 0xab, sizeof attr); -+ /* To verify that the attributes actually got applied. */ -+ if ((ret = pthread_getattr_np (pthread_self (), &attr)) != 0) -+ { -+ printf ("pthread_getattr_np failed: %s\n", strerror (ret)); -+ goto out; -+ } -+ -+ ret = verify_stacksize_result (&attr); -+ -+out: -+ return (void *) (uintptr_t) ret; -+} -+ -+static int -+run_threads (void) -+{ -+ pthread_t t; -+ void *tret = NULL; -+ -+ /* Run twice to ensure that the attributes do not get overwritten in the -+ first run somehow. */ -+ for (int i = 0; i < 2; i++) -+ { -+ RETURN_IF_FAIL (pthread_create, &t, NULL, thr, NULL); -+ RETURN_IF_FAIL (pthread_join, t, &tret); -+ -+ if (tret != NULL) -+ { -+ puts ("Thread failed"); -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ RETURN_IF_FAIL (run_threads); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh663641-3.patch b/src/patches/glibc/glibc-rh663641-3.patch deleted file mode 100644 index 182fe99a6..000000000 --- a/src/patches/glibc/glibc-rh663641-3.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/pt-initfini.c glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/pthread/pt-initfini.c ---- glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/pt-initfini.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/sysdeps/pthread/pt-initfini.c 2013-07-22 21:52:03.519184065 +0530 -@@ -63,21 +63,21 @@ asm ("\n/*@TESTS_END*/"); - asm ("\n/*@_init_PROLOG_BEGINS*/"); - - static void --call_initialize_minimal (void) -+call_initialize_minimal (int argc, char **argv, char **envp) - { -- extern void __pthread_initialize_minimal_internal (void) -+ extern void __pthread_initialize_minimal_internal (int, char **, char **) - __attribute ((visibility ("hidden"))); - -- __pthread_initialize_minimal_internal (); -+ __pthread_initialize_minimal_internal (argc, argv, envp); - } - - SECTION (".init"); --extern void __attribute__ ((section (".init"))) _init (void); -+extern void __attribute__ ((section (".init"))) _init (int, char **, char **); - void --_init (void) -+_init (int argc, char **argv, char **envp) - { - /* The very first thing we must do is to set up the registers. */ -- call_initialize_minimal (); -+ call_initialize_minimal (argc, argv, envp); - - asm ("ALIGN"); - asm("END_INIT"); diff --git a/src/patches/glibc/glibc-rh663641.patch b/src/patches/glibc/glibc-rh663641.patch deleted file mode 100644 index e1ca4f1a4..000000000 --- a/src/patches/glibc/glibc-rh663641.patch +++ /dev/null @@ -1,191 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/include/libc-internal.h glibc-2.12-2-gc4ccff1.fixed/include/libc-internal.h ---- glibc-2.12-2-gc4ccff1/include/libc-internal.h 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/include/libc-internal.h 2013-07-09 23:44:00.272833779 +0530 -@@ -34,4 +34,24 @@ extern void __libc_thread_freeres (void) - /* Define and initialize `__progname' et. al. */ - extern void __init_misc (int, char **, char **); - -+/* Align a value by rounding down to closest size. -+ e.g. Using size of 4096, we get this behavior: -+ {4095, 4096, 4097} = {0, 4096, 4096}. */ -+#define ALIGN_DOWN(base, size) ((base) & -((__typeof__ (base)) (size))) -+ -+/* Align a value by rounding up to closest size. -+ e.g. Using size of 4096, we get this behavior: -+ {4095, 4096, 4097} = {4096, 4096, 8192}. -+ -+ Note: The size argument has side effects (expanded multiple times). */ -+#define ALIGN_UP(base, size) ALIGN_DOWN ((base) + (size) - 1, (size)) -+ -+/* Same as ALIGN_DOWN(), but automatically casts when base is a pointer. */ -+#define PTR_ALIGN_DOWN(base, size) \ -+ ((__typeof__ (base)) ALIGN_DOWN ((uintptr_t) (base), (size))) -+ -+/* Same as ALIGN_UP(), but automatically casts when base is a pointer. */ -+#define PTR_ALIGN_UP(base, size) \ -+ ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size))) -+ - #endif /* _LIBC_INTERNAL */ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/allocatestack.c glibc-2.12-2-gc4ccff1.fixed/nptl/allocatestack.c ---- glibc-2.12-2-gc4ccff1/nptl/allocatestack.c 2013-07-09 23:43:09.427836179 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/allocatestack.c 2013-07-09 23:43:52.727834136 +0530 -@@ -351,7 +351,7 @@ allocate_stack (const struct pthread_att - - /* Get the stack size from the attribute if it is set. Otherwise we - use the default we determined at start time. */ -- size = attr->stacksize ?: __default_stacksize; -+ size = attr->stacksize ?: __default_pthread_attr.stacksize; - - /* Get memory for the stack. */ - if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0)) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/nptl-init.c glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c ---- glibc-2.12-2-gc4ccff1/nptl/nptl-init.c 2013-07-09 23:43:09.553836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/nptl-init.c 2013-07-09 23:43:52.728834135 +0530 -@@ -435,7 +435,8 @@ __pthread_initialize_minimal_internal (v - - /* Round the resource limit up to page size. */ - limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; -- __default_stacksize = limit.rlim_cur; -+ __default_pthread_attr.stacksize = limit.rlim_cur; -+ __default_pthread_attr.guardsize = GLRO (dl_pagesize); - - #ifdef SHARED - /* Transfer the old value from the dynamic linker's internal location. */ -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_attr_getstacksize.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_attr_getstacksize.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_attr_getstacksize.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_attr_getstacksize.c 2013-07-09 23:43:52.817834131 +0530 -@@ -33,7 +33,7 @@ __pthread_attr_getstacksize (attr, stack - - /* If the user has not set a stack size we return what the system - will use as the default. */ -- *stacksize = iattr->stacksize ?: __default_stacksize; -+ *stacksize = iattr->stacksize ?: __default_pthread_attr.stacksize; - - return 0; - } -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_barrier_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_barrier_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_barrier_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_barrier_init.c 2013-07-09 23:43:52.821834131 +0530 -@@ -23,7 +23,7 @@ - #include - - --static const struct pthread_barrierattr default_attr = -+static const struct pthread_barrierattr default_barrierattr = - { - .pshared = PTHREAD_PROCESS_PRIVATE - }; -@@ -43,7 +43,7 @@ pthread_barrier_init (barrier, attr, cou - const struct pthread_barrierattr *iattr - = (attr != NULL - ? iattr = (struct pthread_barrierattr *) attr -- : &default_attr); -+ : &default_barrierattr); - - if (iattr->pshared != PTHREAD_PROCESS_PRIVATE - && __builtin_expect (iattr->pshared != PTHREAD_PROCESS_SHARED, 0)) -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_create.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_create.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_create.c 2013-07-09 23:43:09.542836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_create.c 2013-07-09 23:43:52.822834131 +0530 -@@ -425,15 +425,6 @@ start_thread (void *arg) - } - - --/* Default thread attributes for the case when the user does not -- provide any. */ --static const struct pthread_attr default_attr = -- { -- /* Just some value > 0 which gets rounded to the nearest page size. */ -- .guardsize = 1, -- }; -- -- - int - __pthread_create_2_1 (newthread, attr, start_routine, arg) - pthread_t *newthread; -@@ -447,7 +438,7 @@ __pthread_create_2_1 (newthread, attr, s - if (iattr == NULL) - /* Is this the best idea? On NUMA machines this could mean - accessing far-away memory. */ -- iattr = &default_attr; -+ iattr = &__default_pthread_attr; - - struct pthread *pd = NULL; - int err = ALLOCATE_STACK (iattr, &pd); -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_mutex_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_mutex_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_mutex_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_mutex_init.c 2013-07-09 23:43:52.822834131 +0530 -@@ -24,7 +24,7 @@ - #include - #include "pthreadP.h" - --static const struct pthread_mutexattr default_attr = -+static const struct pthread_mutexattr default_mutexattr = - { - /* Default is a normal mutex, not shared between processes. */ - .mutexkind = PTHREAD_MUTEX_NORMAL -@@ -45,7 +45,8 @@ __pthread_mutex_init (mutex, mutexattr) - - assert (sizeof (pthread_mutex_t) <= __SIZEOF_PTHREAD_MUTEX_T); - -- imutexattr = (const struct pthread_mutexattr *) mutexattr ?: &default_attr; -+ imutexattr = ((const struct pthread_mutexattr *) mutexattr -+ ?: &default_mutexattr); - - /* Sanity checks. */ - switch (__builtin_expect (imutexattr->mutexkind -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthreadP.h glibc-2.12-2-gc4ccff1.fixed/nptl/pthreadP.h ---- glibc-2.12-2-gc4ccff1/nptl/pthreadP.h 2013-07-09 23:43:09.553836173 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthreadP.h 2013-07-09 23:43:52.823834131 +0530 -@@ -148,8 +148,8 @@ enum - /* Internal variables. */ - - --/* Default stack size. */ --extern size_t __default_stacksize attribute_hidden; -+/* Default pthread attributes. */ -+extern struct pthread_attr __default_pthread_attr attribute_hidden; - - /* Size and alignment of static TLS block. */ - extern size_t __static_tls_size attribute_hidden; -diff -pruN glibc-2.12-2-gc4ccff1/nptl/pthread_rwlock_init.c glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_rwlock_init.c ---- glibc-2.12-2-gc4ccff1/nptl/pthread_rwlock_init.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/pthread_rwlock_init.c 2013-07-09 23:43:52.823834131 +0530 -@@ -21,7 +21,7 @@ - #include - - --static const struct pthread_rwlockattr default_attr = -+static const struct pthread_rwlockattr default_rwlockattr = - { - .lockkind = PTHREAD_RWLOCK_DEFAULT_NP, - .pshared = PTHREAD_PROCESS_PRIVATE -@@ -35,7 +35,7 @@ __pthread_rwlock_init (rwlock, attr) - { - const struct pthread_rwlockattr *iattr; - -- iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_attr; -+ iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_rwlockattr; - - memset (rwlock, '\0', sizeof (*rwlock)); - -diff -pruN glibc-2.12-2-gc4ccff1/nptl/vars.c glibc-2.12-2-gc4ccff1.fixed/nptl/vars.c ---- glibc-2.12-2-gc4ccff1/nptl/vars.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/nptl/vars.c 2013-07-09 23:43:52.824834131 +0530 -@@ -21,13 +21,9 @@ - #include - #include - --/* Default stack size. */ --size_t __default_stacksize attribute_hidden --#ifdef SHARED --; --#else -- = PTHREAD_STACK_MIN; --#endif -+/* Default thread attributes for the case when the user does not -+ provide any. */ -+struct pthread_attr __default_pthread_attr attribute_hidden; - - /* Flag whether the machine is SMP or not. */ - int __is_smp attribute_hidden; diff --git a/src/patches/glibc/glibc-rh667974.patch b/src/patches/glibc/glibc-rh667974.patch deleted file mode 100644 index 48aacac8c..000000000 --- a/src/patches/glibc/glibc-rh667974.patch +++ /dev/null @@ -1,160 +0,0 @@ -2011-03-14 Andreas Schwab - - * elf/dl-load.c (is_dst): Remove parameter secure, all callers - changed. Don't check for isolated use. - (_dl_dst_substitute): Ignore rpath elements containing - non-isolated use of $ORIGIN when privileged. - - * elf/dl-load.c (_dl_dst_substitute): When skipping the first - rpath element also skip the following colon. - (expand_dynamic_string_token): Add is_path parameter and pass - down to DL_DST_REQUIRED and _dl_dst_substitute. - (decompose_rpath): Call expand_dynamic_string_token with - non-zero is_path. Ignore empty rpaths. - (_dl_map_object_from_fd): Call expand_dynamic_string_token - with zero is_path. - -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -169,8 +169,7 @@ local_strdup (const char *s) - - - static size_t --is_dst (const char *start, const char *name, const char *str, -- int is_path, int secure) -+is_dst (const char *start, const char *name, const char *str, int is_path) - { - size_t len; - bool is_curly = false; -@@ -199,11 +198,6 @@ is_dst (const char *start, const char *n - && (!is_path || name[len] != ':')) - return 0; - -- if (__builtin_expect (secure, 0) -- && ((name[len] != '\0' && (!is_path || name[len] != ':')) -- || (name != start + 1 && (!is_path || name[-2] != ':')))) -- return 0; -- - return len; - } - -@@ -218,13 +212,10 @@ _dl_dst_count (const char *name, int is_ - { - size_t len; - -- /* $ORIGIN is not expanded for SUID/GUID programs (except if it -- is $ORIGIN alone) and it must always appear first in path. */ - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0 -- || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 -- || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0 -+ || (len = is_dst (start, name, "PLATFORM", is_path)) != 0 -+ || (len = is_dst (start, name, "LIB", is_path)) != 0) - ++cnt; - - name = strchr (name + len, '$'); -@@ -256,9 +247,16 @@ _dl_dst_substitute (struct link_map *l, - size_t len; - - ++name; -- if ((len = is_dst (start, name, "ORIGIN", is_path, -- INTUSE(__libc_enable_secure))) != 0) -+ if ((len = is_dst (start, name, "ORIGIN", is_path)) != 0) - { -+ /* $ORIGIN is not expanded for SUID/GUID programs -+ (except if it is $ORIGIN alone) and it must always -+ appear first in path. */ -+ if (__builtin_expect (INTUSE(__libc_enable_secure), 0) -+ && ((name[len] != '\0' && (!is_path || name[len] != ':')) -+ || (name != start + 1 && (!is_path || name[-2] != ':')))) -+ repl = (const char *) -1; -+ else - #ifndef SHARED - if (l == NULL) - repl = _dl_get_origin (); -@@ -266,9 +264,9 @@ _dl_dst_substitute (struct link_map *l, - #endif - repl = l->l_origin; - } -- else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "PLATFORM", is_path)) != 0) - repl = GLRO(dl_platform); -- else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) -+ else if ((len = is_dst (start, name, "LIB", is_path)) != 0) - repl = DL_DST_LIB; - - if (repl != NULL && repl != (const char *) -1) -@@ -284,6 +282,10 @@ _dl_dst_substitute (struct link_map *l, - name += len; - while (*name != '\0' && (!is_path || *name != ':')) - ++name; -+ /* Also skip following colon if this is the first rpath -+ element, but keep an empty element at the end. */ -+ if (wp == result && is_path && *name == ':' && name[1] != '\0') -+ ++name; - } - else - /* No DST we recognize. */ -@@ -310,7 +312,7 @@ _dl_dst_substitute (struct link_map *l, - belonging to the map is loaded. In this case the path element - containing $ORIGIN is left out. */ - static char * --expand_dynamic_string_token (struct link_map *l, const char *s) -+expand_dynamic_string_token (struct link_map *l, const char *s, int is_path) - { - /* We make two runs over the string. First we determine how large the - resulting string is and then we copy it over. Since this is no -@@ -321,7 +323,7 @@ expand_dynamic_string_token (struct link - char *result; - - /* Determine the number of DST elements. */ -- cnt = DL_DST_COUNT (s, 1); -+ cnt = DL_DST_COUNT (s, is_path); - - /* If we do not have to replace anything simply copy the string. */ - if (__builtin_expect (cnt, 0) == 0) -@@ -335,7 +337,7 @@ expand_dynamic_string_token (struct link - if (result == NULL) - return NULL; - -- return _dl_dst_substitute (l, s, result, 1); -+ return _dl_dst_substitute (l, s, result, is_path); - } - - -@@ -551,13 +553,21 @@ decompose_rpath (struct r_search_path_st - - /* Make a writable copy. At the same time expand possible dynamic - string tokens. */ -- copy = expand_dynamic_string_token (l, rpath); -+ copy = expand_dynamic_string_token (l, rpath, 1); - if (copy == NULL) - { - errstring = N_("cannot create RUNPATH/RPATH copy"); - goto signal_error; - } - -+ /* Ignore empty rpaths. */ -+ if (*copy == 0) -+ { -+ free (copy); -+ sps->dirs = (char *) -1; -+ return false; -+ } -+ - /* Count the number of necessary elements in the result array. */ - nelems = 0; - for (cp = copy; *cp != '\0'; ++cp) -@@ -2176,7 +2186,7 @@ _dl_map_object (struct link_map *loader, - { - /* The path may contain dynamic string tokens. */ - realname = (loader -- ? expand_dynamic_string_token (loader, name) -+ ? expand_dynamic_string_token (loader, name, 0) - : local_strdup (name)); - if (realname == NULL) - fd = -1; diff --git a/src/patches/glibc/glibc-rh676076.patch b/src/patches/glibc/glibc-rh676076.patch deleted file mode 100644 index c5aa2d430..000000000 --- a/src/patches/glibc/glibc-rh676076.patch +++ /dev/null @@ -1,714 +0,0 @@ -2011-03-02 Harsha Jagasia - Ulrich Drepper - - * sysdeps/x86_64/memset.S: After aligning destination, code - branches to different locations depending on the value of - misalignment, when multiarch is enabled. Fix this. - -2011-03-02 Harsha Jagasia - - * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): - Set _x86_64_preferred_memory_instruction for AMD processsors. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Set bit_Prefer_SSE_for_memop for AMD processors. - -2010-11-07 H.J. Lu - - * sysdeps/x86_64/memset.S: Check USE_MULTIARCH and USE_SSE2 for - IFUNC support. - * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add - memset-x86-64. - * sysdeps/x86_64/multiarch/bzero.S: New file. - * sysdeps/x86_64/multiarch/cacheinfo.c: New file. - * sysdeps/x86_64/multiarch/memset-x86-64.S: New file. - * sysdeps/x86_64/multiarch/memset.S: New file. - * sysdeps/x86_64/multiarch/memset_chk.S: New file. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Set bit_Prefer_SSE_for_memop for Intel processors. - * sysdeps/x86_64/multiarch/init-arch.h (bit_Prefer_SSE_for_memop): - Define. - (index_Prefer_SSE_for_memop): Define. - (HAS_PREFER_SSE_FOR_MEMOP): Define. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -613,6 +613,25 @@ init_cacheinfo (void) - long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); - shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); - -+#ifndef DISABLE_PREFERRED_MEMORY_INSTRUCTION -+# ifdef USE_MULTIARCH -+ eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; -+ ebx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx; -+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; -+ edx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx; -+# else -+ __cpuid (1, eax, ebx, ecx, edx); -+# endif -+ -+ /* AMD prefers SSSE3 instructions for memory/string routines -+ if they are avaiable, otherwise it prefers integer -+ instructions. */ -+ if ((ecx & 0x200)) -+ __x86_64_preferred_memory_instruction = 3; -+ else -+ __x86_64_preferred_memory_instruction = 0; -+#endif -+ - /* Get maximum extended function. */ - __cpuid (0x80000000, max_cpuid_ex, ebx, ecx, edx); - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/memset.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/memset.S -@@ -24,7 +24,7 @@ - #define __STOS_UPPER_BOUNDARY $65536 - - .text --#ifndef NOT_IN_libc -+#if !defined NOT_IN_libc && !defined USE_MULTIARCH - ENTRY(__bzero) - mov %rsi,%rdx /* Adjust parameter. */ - xorl %esi,%esi /* Fill with 0s. */ -@@ -34,10 +34,10 @@ weak_alias (__bzero, bzero) - #endif - - #if defined PIC && !defined NOT_IN_libc --ENTRY (__memset_chk) -+ENTRY_CHK (__memset_chk) - cmpq %rdx, %rcx - jb HIDDEN_JUMPTARGET (__chk_fail) --END (__memset_chk) -+END_CHK (__memset_chk) - #endif - ENTRY (memset) - L(memset_entry): -@@ -591,157 +591,15 @@ L(A6Q1): mov %dx,-0xe(%rdi) - L(A7Q0): mov %dl,-0x7(%rdi) - L(A6Q0): mov %dx,-0x6(%rdi) - mov %edx,-0x4(%rdi) -- jmp L(aligned_now) -- -- .balign 16 --L(aligned_now): -- -- cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) -- jg L(SSE_pre) -- --L(8byte_move_try): -- cmpq __STOS_LOWER_BOUNDARY,%r8 -- jae L(8byte_stos_try) -- -- .balign 16 --L(8byte_move): -- movq %r8,%rcx -- shrq $7,%rcx -- jz L(8byte_move_skip) -- -- .p2align 4 -- --L(8byte_move_loop): -- decq %rcx -- -- movq %rdx, (%rdi) -- movq %rdx, 8 (%rdi) -- movq %rdx, 16 (%rdi) -- movq %rdx, 24 (%rdi) -- movq %rdx, 32 (%rdi) -- movq %rdx, 40 (%rdi) -- movq %rdx, 48 (%rdi) -- movq %rdx, 56 (%rdi) -- movq %rdx, 64 (%rdi) -- movq %rdx, 72 (%rdi) -- movq %rdx, 80 (%rdi) -- movq %rdx, 88 (%rdi) -- movq %rdx, 96 (%rdi) -- movq %rdx, 104 (%rdi) -- movq %rdx, 112 (%rdi) -- movq %rdx, 120 (%rdi) -- -- leaq 128 (%rdi),%rdi -- -- jnz L(8byte_move_loop) -- --L(8byte_move_skip): -- andl $127,%r8d -- lea (%rdi,%r8,1),%rdi -- --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC --#else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 --#endif -- -- .balign 16 --L(8byte_stos_try): -- mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size -- cmpq %r8,%r9 // calculate the lesser of remaining -- cmovaq %r8,%r9 // bytes and largest cache size -- jbe L(8byte_stos) -- --L(8byte_move_reuse_try): -- cmp __STOS_UPPER_BOUNDARY,%r8 -- jae L(8byte_move) -- -- .balign 16 --L(8byte_stos): -- movq %r9,%rcx -- andq $-8,%r9 -- -- shrq $3,%rcx -- jz L(8byte_stos_skip) -- -- xchgq %rax,%rdx -- -- rep -- stosq -- -- xchgq %rax,%rdx -- --L(8byte_stos_skip): -- subq %r9,%r8 -- ja L(8byte_nt_move) -- -- andl $7,%r8d -- lea (%rdi,%r8,1),%rdi --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC --#else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 --#endif - -- .balign 16 --L(8byte_nt_move): -- movq %r8,%rcx -- shrq $7,%rcx -- jz L(8byte_nt_move_skip) -- -- .balign 16 --L(8byte_nt_move_loop): -- decq %rcx -- -- movntiq %rdx, (%rdi) -- movntiq %rdx, 8 (%rdi) -- movntiq %rdx, 16 (%rdi) -- movntiq %rdx, 24 (%rdi) -- movntiq %rdx, 32 (%rdi) -- movntiq %rdx, 40 (%rdi) -- movntiq %rdx, 48 (%rdi) -- movntiq %rdx, 56 (%rdi) -- movntiq %rdx, 64 (%rdi) -- movntiq %rdx, 72 (%rdi) -- movntiq %rdx, 80 (%rdi) -- movntiq %rdx, 88 (%rdi) -- movntiq %rdx, 96 (%rdi) -- movntiq %rdx, 104 (%rdi) -- movntiq %rdx, 112 (%rdi) -- movntiq %rdx, 120 (%rdi) -- -- leaq 128 (%rdi),%rdi -- -- jnz L(8byte_nt_move_loop) -- -- sfence -- --L(8byte_nt_move_skip): -- andl $127,%r8d -+#ifndef USE_MULTIARCH -+ jmp L(aligned_now) - -- lea (%rdi,%r8,1),%rdi --#ifndef PIC -- lea L(setPxQx)(%rip),%r11 -- jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+L(SSE_pre): - #else -- lea L(Got0)(%rip),%r11 -- lea L(setPxQx)(%rip),%rcx -- movswq (%rcx,%r8,2),%rcx -- lea (%rcx,%r11,1),%r11 -- jmpq *%r11 -+L(aligned_now): - #endif -- --L(SSE_pre): -+#if !defined USE_MULTIARCH || defined USE_SSE2 - # fill RegXMM0 with the pattern - movd %rdx,%xmm0 - punpcklqdq %xmm0,%xmm0 -@@ -1342,11 +1200,162 @@ L(SSExDx): - .short L(SSE15QB)-L(SSE0Q0) - #endif - .popsection -+#endif /* !defined USE_MULTIARCH || defined USE_SSE2 */ -+ -+ .balign 16 -+#ifndef USE_MULTIARCH -+L(aligned_now): -+ -+ cmpl $0x1,__x86_64_preferred_memory_instruction(%rip) -+ jg L(SSE_pre) -+#endif /* USE_MULTIARCH */ -+ -+L(8byte_move_try): -+ cmpq __STOS_LOWER_BOUNDARY,%r8 -+ jae L(8byte_stos_try) -+ -+ .balign 16 -+L(8byte_move): -+ movq %r8,%rcx -+ shrq $7,%rcx -+ jz L(8byte_move_skip) -+ -+ .p2align 4 -+ -+L(8byte_move_loop): -+ decq %rcx -+ -+ movq %rdx, (%rdi) -+ movq %rdx, 8 (%rdi) -+ movq %rdx, 16 (%rdi) -+ movq %rdx, 24 (%rdi) -+ movq %rdx, 32 (%rdi) -+ movq %rdx, 40 (%rdi) -+ movq %rdx, 48 (%rdi) -+ movq %rdx, 56 (%rdi) -+ movq %rdx, 64 (%rdi) -+ movq %rdx, 72 (%rdi) -+ movq %rdx, 80 (%rdi) -+ movq %rdx, 88 (%rdi) -+ movq %rdx, 96 (%rdi) -+ movq %rdx, 104 (%rdi) -+ movq %rdx, 112 (%rdi) -+ movq %rdx, 120 (%rdi) -+ -+ leaq 128 (%rdi),%rdi -+ -+ jnz L(8byte_move_loop) -+ -+L(8byte_move_skip): -+ andl $127,%r8d -+ lea (%rdi,%r8,1),%rdi -+ -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif -+ -+ .balign 16 -+L(8byte_stos_try): -+ mov __x86_64_shared_cache_size(%rip),%r9d // ck largest cache size -+ cmpq %r8,%r9 // calculate the lesser of remaining -+ cmovaq %r8,%r9 // bytes and largest cache size -+ jbe L(8byte_stos) -+ -+L(8byte_move_reuse_try): -+ cmp __STOS_UPPER_BOUNDARY,%r8 -+ jae L(8byte_move) -+ -+ .balign 16 -+L(8byte_stos): -+ movq %r9,%rcx -+ andq $-8,%r9 -+ -+ shrq $3,%rcx -+ jz L(8byte_stos_skip) -+ -+ xchgq %rax,%rdx -+ -+ rep -+ stosq -+ -+ xchgq %rax,%rdx -+ -+L(8byte_stos_skip): -+ subq %r9,%r8 -+ ja L(8byte_nt_move) -+ -+ andl $7,%r8d -+ lea (%rdi,%r8,1),%rdi -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif -+ -+ .balign 16 -+L(8byte_nt_move): -+ movq %r8,%rcx -+ shrq $7,%rcx -+ jz L(8byte_nt_move_skip) -+ -+ .balign 16 -+L(8byte_nt_move_loop): -+ decq %rcx -+ -+ movntiq %rdx, (%rdi) -+ movntiq %rdx, 8 (%rdi) -+ movntiq %rdx, 16 (%rdi) -+ movntiq %rdx, 24 (%rdi) -+ movntiq %rdx, 32 (%rdi) -+ movntiq %rdx, 40 (%rdi) -+ movntiq %rdx, 48 (%rdi) -+ movntiq %rdx, 56 (%rdi) -+ movntiq %rdx, 64 (%rdi) -+ movntiq %rdx, 72 (%rdi) -+ movntiq %rdx, 80 (%rdi) -+ movntiq %rdx, 88 (%rdi) -+ movntiq %rdx, 96 (%rdi) -+ movntiq %rdx, 104 (%rdi) -+ movntiq %rdx, 112 (%rdi) -+ movntiq %rdx, 120 (%rdi) -+ -+ leaq 128 (%rdi),%rdi -+ -+ jnz L(8byte_nt_move_loop) -+ -+ sfence -+ -+L(8byte_nt_move_skip): -+ andl $127,%r8d -+ -+ lea (%rdi,%r8,1),%rdi -+#ifndef PIC -+ lea L(setPxQx)(%rip),%r11 -+ jmpq *(%r11,%r8,8) # old scheme remained for nonPIC -+#else -+ lea L(Got0)(%rip),%r11 -+ lea L(setPxQx)(%rip),%rcx -+ movswq (%rcx,%r8,2),%rcx -+ lea (%rcx,%r11,1),%r11 -+ jmpq *%r11 -+#endif - - END (memset) - libc_hidden_builtin_def (memset) - --#if defined PIC && !defined NOT_IN_libc -+#if defined PIC && !defined NOT_IN_libc && !defined USE_MULTIARCH - strong_alias (__memset_chk, __memset_zero_constant_len_parameter) - .section .gnu.warning.__memset_zero_constant_len_parameter - .string "memset used with constant zero length parameter; this could be due to transposed parameters" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/Makefile -@@ -7,7 +7,8 @@ ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ - strend-sse4 memcmp-sse4 \ - strcasestr-nonascii strcasecmp_l-ssse3 \ -- strncase_l-ssse3 -+ strncase_l-ssse3 \ -+ memset-x86-64 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/bzero.S -@@ -0,0 +1,56 @@ -+/* Multiple versions of bzero -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+ .text -+ENTRY(__bzero) -+ .type __bzero, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __bzero_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __bzero_sse2(%rip), %rax -+2: ret -+END(__bzero) -+ -+ .type __bzero_sse2, @function -+__bzero_sse2: -+ cfi_startproc -+ CALL_MCOUNT -+ mov %rsi,%rdx /* Adjust parameter. */ -+ xorl %esi,%esi /* Fill with 0s. */ -+ jmp __memset_sse2 -+ cfi_endproc -+ .size __bzero_sse2, .-__bzero_sse2 -+ -+ .type __bzero_x86_64, @function -+__bzero_x86_64: -+ cfi_startproc -+ CALL_MCOUNT -+ mov %rsi,%rdx /* Adjust parameter. */ -+ xorl %esi,%esi /* Fill with 0s. */ -+ jmp __memset_x86_64 -+ cfi_endproc -+ .size __bzero_x86_64, .-__bzero_x86_64 -+ -+weak_alias (__bzero, bzero) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/cacheinfo.c -@@ -0,0 +1,2 @@ -+#define DISABLE_PREFERRED_MEMORY_INSTRUCTION -+#include "../cacheinfo.c" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -59,6 +59,11 @@ __init_cpu_features (void) - - get_common_indeces (&family, &model); - -+ /* Intel processors prefer SSE instruction for memory/string -+ routines if they are avaiable. */ -+ __cpu_features.feature[index_Prefer_SSE_for_memop] -+ |= bit_Prefer_SSE_for_memop; -+ - unsigned int eax = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax; - unsigned int extended_family = (eax >> 20) & 0xff; - unsigned int extended_model = (eax >> 12) & 0xf0; -@@ -92,6 +97,14 @@ __init_cpu_features (void) - kind = arch_kind_amd; - - get_common_indeces (&family, &model); -+ -+ unsigned int ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; -+ -+ /* AMD processors prefer SSE instructions for memory/string routines -+ if they are available, otherwise they prefer integer instructions. */ -+ if ((ecx & 0x200)) -+ __cpu_features.feature[index_Prefer_SSE_for_memop] -+ |= bit_Prefer_SSE_for_memop; - } - else - kind = arch_kind_other; -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.h -@@ -16,7 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - --#define bit_Fast_Rep_String (1 << 0) -+#define bit_Fast_Rep_String (1 << 0) -+#define bit_Prefer_SSE_for_memop (1 << 3) - - #ifdef __ASSEMBLER__ - -@@ -33,6 +34,7 @@ - # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET - - #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE -+# define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE - - #else /* __ASSEMBLER__ */ - -@@ -103,5 +105,12 @@ extern const struct cpu_features *__get_ - # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) - - # define index_Fast_Rep_String FEATURE_INDEX_1 -+# define index_Prefer_SSE_for_memop FEATURE_INDEX_1 -+ -+#define HAS_ARCH_FEATURE(idx, bit) \ -+ ((__get_cpu_features ()->feature[idx] & (bit)) != 0) -+ -+#define HAS_PREFER_SSE_FOR_MEMOP \ -+ HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) - - #endif /* __ASSEMBLER__ */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset-x86-64.S -@@ -0,0 +1,18 @@ -+#include -+ -+#ifndef NOT_IN_libc -+# undef ENTRY_CHK -+# define ENTRY_CHK(name) \ -+ .type __memset_chk_x86_64, @function; \ -+ .globl __memset_chk_x86_64; \ -+ .p2align 4; \ -+ __memset_chk_x86_64: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END_CHK -+# define END_CHK(name) \ -+ cfi_endproc; .size __memset_chk_x86_64, .-__memset_chk_x86_64 -+ -+# define libc_hidden_builtin_def(name) -+# define memset __memset_x86_64 -+# include "../memset.S" -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset.S -@@ -0,0 +1,74 @@ -+/* Multiple versions of memset -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+/* Define multiple versions only for the definition in lib. */ -+#ifndef NOT_IN_libc -+ENTRY(memset) -+ .type memset, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __memset_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __memset_sse2(%rip), %rax -+2: ret -+END(memset) -+ -+# define USE_SSE2 1 -+ -+# undef ENTRY -+# define ENTRY(name) \ -+ .type __memset_sse2, @function; \ -+ .globl __memset_sse2; \ -+ .p2align 4; \ -+ __memset_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END -+# define END(name) \ -+ cfi_endproc; .size __memset_sse2, .-__memset_sse2 -+ -+# undef ENTRY_CHK -+# define ENTRY_CHK(name) \ -+ .type __memset_chk_sse2, @function; \ -+ .globl __memset_chk_sse2; \ -+ .p2align 4; \ -+ __memset_chk_sse2: cfi_startproc; \ -+ CALL_MCOUNT -+# undef END_CHK -+# define END_CHK(name) \ -+ cfi_endproc; .size __memset_chk_sse2, .-__memset_chk_sse2 -+ -+# ifdef SHARED -+# undef libc_hidden_builtin_def -+/* It doesn't make sense to send libc-internal memset calls through a PLT. -+ The speedup we get from using GPR instruction is likely eaten away -+ by the indirect call in the PLT. */ -+# define libc_hidden_builtin_def(name) \ -+ .globl __GI_memset; __GI_memset = __memset_sse2 -+# endif -+ -+# undef strong_alias -+# define strong_alias(original, alias) -+#endif -+ -+#include "../memset.S" -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/memset_chk.S -@@ -0,0 +1,44 @@ -+/* Multiple versions of __memset_chk -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+/* Define multiple versions only for the definition in lib. */ -+#ifndef NOT_IN_libc -+# ifdef SHARED -+ENTRY(__memset_chk) -+ .type __memset_chk, @gnu_indirect_function -+ cmpl $0, __cpu_features+KIND_OFFSET(%rip) -+ jne 1f -+ call __init_cpu_features -+1: leaq __memset_chk_x86_64(%rip), %rax -+ testl $bit_Prefer_SSE_for_memop, __cpu_features+FEATURE_OFFSET+index_Prefer_SSE_for_memop(%rip) -+ jz 2f -+ leaq __memset_chk_sse2(%rip), %rax -+2: ret -+END(__memset_chk) -+ -+strong_alias (__memset_chk, __memset_zero_constant_len_parameter) -+ .section .gnu.warning.__memset_zero_constant_len_parameter -+ .string "memset used with constant zero length parameter; this could be due to transposed parameters" -+# else -+# include "../memset_chk.S" -+# endif -+#endif diff --git a/src/patches/glibc/glibc-rh676591.patch b/src/patches/glibc/glibc-rh676591.patch deleted file mode 100644 index fd6df1e42..000000000 --- a/src/patches/glibc/glibc-rh676591.patch +++ /dev/null @@ -1,352 +0,0 @@ -2011-05-15 Ulrich Drepper - - [BZ #11901] - * include/stdlib.h: Move include protection to the right place. - Define abort_msg_s. Declare __abort_msg with it. - * stdlib/abort.c (__abort_msg): Adjust type. - * assert/assert.c (__assert_fail_base): New function. Majority - of code from __assert_fail. Allocate memory for __abort_msg with - mmap. - (__assert_fail): Now call __assert_fail_base. - * assert/assert-perr.c: Remove bulk of implementation. Use - __assert_fail_base. - * include/assert.hL Declare __assert_fail_base. - * sysdeps/posix/libc_fatal.c: Allocate memory for __abort_msg with - mmap. - * sysdeps/unix/sysv/linux/libc_fatal.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/assert/assert-perr.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/assert/assert-perr.c -+++ glibc-2.12-2-gc4ccff1/assert/assert-perr.c -@@ -17,66 +17,23 @@ - 02111-1307 USA. */ - - #include --#include - #include --#include --#include - #include --#include --#include - - --extern const char *__progname; -- --#ifdef USE_IN_LIBIO --# include --# include --# define fflush(s) INTUSE(_IO_fflush) (s) --#endif -- - /* This function, when passed an error number, a filename, and a line - number, prints a message on the standard error stream of the form: -- a.c:10: foobar: Unexpected error: Computer bought the farm -+ a.c:10: foobar: Unexpected error: Computer bought the farm - It then aborts program execution via a call to `abort'. */ -- --#ifdef FATAL_PREPARE_INCLUDE --# include FATAL_PREPARE_INCLUDE --#endif -- - void - __assert_perror_fail (int errnum, - const char *file, unsigned int line, - const char *function) - { - char errbuf[1024]; -- char *buf; -- --#ifdef FATAL_PREPARE -- FATAL_PREPARE; --#endif -- -- if (__asprintf (&buf, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"), -- __progname, __progname[0] ? ": " : "", -- file, line, -- function ? function : "", function ? ": " : "", -- __strerror_r (errnum, errbuf, sizeof errbuf)) >= 0) -- { -- /* Print the message. */ -- (void) __fxprintf (NULL, "%s", buf); -- (void) fflush (stderr); -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -- } -- else -- { -- /* At least print a minimal message. */ -- static const char errstr[] = "Unexpected error.\n"; -- __libc_write (STDERR_FILENO, errstr, sizeof (errstr) - 1); -- } - -- abort (); -+ char *e = __strerror_r (errnum, errbuf, sizeof errbuf); -+ __assert_fail_base (_("%s%s%s:%u: %s%sUnexpected error: %s.\n"), -+ e, file, line, function); - } - libc_hidden_def (__assert_perror_fail) -Index: glibc-2.12-2-gc4ccff1/assert/assert.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/assert/assert.c -+++ glibc-2.12-2-gc4ccff1/assert/assert.c -@@ -19,11 +19,13 @@ - - #include - #include -+#include - #include - #include - #include - #include - #include -+#include - - - extern const char *__progname; -@@ -45,31 +47,44 @@ extern const char *__progname; - #endif - - --#undef __assert_fail - void --__assert_fail (const char *assertion, const char *file, unsigned int line, -- const char *function) -+__assert_fail_base (const char *fmt, const char *assertion, const char *file, -+ unsigned int line, const char *function) - { -- char *buf; -+ char *str; - - #ifdef FATAL_PREPARE - FATAL_PREPARE; - #endif - -- if (__asprintf (&buf, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"), -+ int total; -+ if (__asprintf (&str, fmt, - __progname, __progname[0] ? ": " : "", - file, line, - function ? function : "", function ? ": " : "", -- assertion) >= 0) -+ assertion, &total) >= 0) - { - /* Print the message. */ -- (void) __fxprintf (NULL, "%s", buf); -+ (void) __fxprintf (NULL, "%s", str); - (void) fflush (stderr); - -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); -+ struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (__builtin_expect (buf != MAP_FAILED, 1)) -+ { -+ buf->size = total; -+ strcpy (buf->msg, str); -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, buf); -+ -+ if (old != NULL) -+ __munmap (old, old->size); -+ } -+ -+ free (str); - } - else - { -@@ -80,4 +95,14 @@ __assert_fail (const char *assertion, co - - abort (); - } -+ -+ -+#undef __assert_fail -+void -+__assert_fail (const char *assertion, const char *file, unsigned int line, -+ const char *function) -+{ -+ __assert_fail_base (_("%s%s%s:%u: %s%sAssertion `%s' failed.\n%n"), -+ assertion, file, line, function); -+} - hidden_def(__assert_fail) -Index: glibc-2.12-2-gc4ccff1/include/assert.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/assert.h -+++ glibc-2.12-2-gc4ccff1/include/assert.h -@@ -13,6 +13,12 @@ extern void __assert_perror_fail (int __ - __const char *__function) - __THROW __attribute__ ((__noreturn__)); - -+/* The real implementation of the two functions above. */ -+extern void __assert_fail_base (const char *fmt, const char *assertion, -+ const char *file, unsigned int line, -+ const char *function) -+ __THROW __attribute__ ((__noreturn__)); -+ - #if !defined NOT_IN_libc || defined IS_IN_rtld - hidden_proto (__assert_fail) - hidden_proto (__assert_perror_fail) -Index: glibc-2.12-2-gc4ccff1/include/stdlib.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/stdlib.h -+++ glibc-2.12-2-gc4ccff1/include/stdlib.h -@@ -223,16 +223,21 @@ extern int __qfcvt_r (long double __valu - # define __cxa_atexit(func, arg, d) INTUSE(__cxa_atexit) (func, arg, d) - # endif - --#endif -- - extern void *__default_morecore (ptrdiff_t) __THROW; - libc_hidden_proto (__default_morecore) - --extern char *__abort_msg; -+struct abort_msg_s -+{ -+ unsigned int size; -+ char msg[0]; -+}; -+extern struct abort_msg_s *__abort_msg; - libc_hidden_proto (__abort_msg) - - __END_DECLS - -+#endif -+ - #undef __Need_M_And_C - - #endif /* include/stdlib.h */ -Index: glibc-2.12-2-gc4ccff1/stdlib/abort.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/stdlib/abort.c -+++ glibc-2.12-2-gc4ccff1/stdlib/abort.c -@@ -37,7 +37,7 @@ - #endif - - /* Exported variable to locate abort message in core files etc. */ --char *__abort_msg __attribute__ ((nocommon)); -+struct abort_msg_s *__abort_msg __attribute__ ((nocommon)); - libc_hidden_def (__abort_msg) - - /* We must avoid to run in circles. Therefore we remember how far we -Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/libc_fatal.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/libc_fatal.c -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -125,18 +126,28 @@ __libc_message (int do_abort, const char - if (TEMP_FAILURE_RETRY (__writev (fd, iov, nlist)) == total) - written = true; - -- char *buf = do_abort ? malloc (total + 1) : NULL; -- if (buf != NULL) -+ if (do_abort) - { -- char *wp = buf; -- for (int cnt = 0; cnt < nlist; ++cnt) -- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -- *wp = '\0'; -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = ((total + 1 + GLRO(dl_pagesize) - 1) -+ & ~(GLRO(dl_pagesize) - 1)); -+ struct abort_msg_s *buf = __mmap (NULL, total, -+ PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (buf != MAP_FAILED) -+ { -+ buf->size = total; -+ char *wp = buf->msg; -+ for (int cnt = 0; cnt < nlist; ++cnt) -+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -+ *wp = '\0'; -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, -+ buf); -+ if (old != NULL) -+ __munmap (old, old->size); -+ } - } - } - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/libc_fatal.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/libc_fatal.c -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -28,6 +29,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -134,18 +136,28 @@ __libc_message (int do_abort, const char - if (cnt == total) - written = true; - -- char *buf = do_abort ? malloc (total + 1) : NULL; -- if (buf != NULL) -+ if (do_abort) - { -- char *wp = buf; -- for (int cnt = 0; cnt < nlist; ++cnt) -- wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -- *wp = '\0'; -- -- /* We have to free the old buffer since the application might -- catch the SIGABRT signal. */ -- char *old = atomic_exchange_acq (&__abort_msg, buf); -- free (old); -+ total = ((total + 1 + GLRO(dl_pagesize) - 1) -+ & ~(GLRO(dl_pagesize) - 1)); -+ struct abort_msg_s *buf = __mmap (NULL, total, -+ PROT_READ | PROT_WRITE, -+ MAP_ANON | MAP_PRIVATE, -1, 0); -+ if (__builtin_expect (buf != MAP_FAILED, 1)) -+ { -+ buf->size = total; -+ char *wp = buf->msg; -+ for (int cnt = 0; cnt < nlist; ++cnt) -+ wp = mempcpy (wp, iov[cnt].iov_base, iov[cnt].iov_len); -+ *wp = '\0'; -+ -+ /* We have to free the old buffer since the application might -+ catch the SIGABRT signal. */ -+ struct abort_msg_s *old = atomic_exchange_acq (&__abort_msg, -+ buf); -+ if (old != NULL) -+ __munmap (old, old->size); -+ } - } - } - diff --git a/src/patches/glibc/glibc-rh681054.patch b/src/patches/glibc/glibc-rh681054.patch deleted file mode 100644 index 27b736183..000000000 --- a/src/patches/glibc/glibc-rh681054.patch +++ /dev/null @@ -1,514 +0,0 @@ -2011-03-18 Ulrich Drepper - - * posix/fnmatch.c (fnmatch): Check size of pattern in wide - character representation. - Partly based on a patch by Tomas Hoger . - -2010-11-11 Andreas Schwab - - * posix/fnmatch_loop.c (NEW_PATTERN): Fix use of alloca. - * posix/Makefile (tests): Add $(objpfx)tst-fnmatch-mem. - (tst-fnmatch-ENV): Set MALLOC_TRACE. - ($(objpfx)tst-fnmatch-mem): New rule. - (generated): Add tst-fnmatch-mem and tst-fnmatch.mtrace. - * posix/tst-fnmatch.c (main): Call mtrace. - -2010-08-09 Ulrich Drepper - - [BZ #11883] - * posix/fnmatch.c: Keep track of alloca use and fall back on malloc. - * posix/fnmatch_loop.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/posix/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/Makefile -+++ glibc-2.12-2-gc4ccff1/posix/Makefile -@@ -114,7 +114,8 @@ generated := $(addprefix wordexp-test-re - tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ - tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \ - bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \ -- tst-vfork3-mem tst-vfork3.mtrace getconf.speclist -+ tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \ -+ tst-fnmatch-mem tst-fnmatch.mtrace - - include ../Rules - -@@ -226,7 +227,7 @@ ifeq (no,$(cross-compiling)) - tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \ - $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \ - $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \ -- $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem -+ $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem - xtests: $(objpfx)bug-ga2-mem - endif - -@@ -238,6 +239,11 @@ annexc-CFLAGS = -O - $(objpfx)annexc: annexc.c - $(native-compile) - -+tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace -+ -+$(objpfx)tst-fnmatch-mem: $(objpfx)tst-fnmatch.out -+ $(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@ -+ - bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace - - $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out -Index: glibc-2.12-2-gc4ccff1/posix/fnmatch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch.c -+++ glibc-2.12-2-gc4ccff1/posix/fnmatch.c -@@ -41,6 +41,12 @@ - # include - #endif - -+#ifdef _LIBC -+# include -+#else -+# define alloca_account(size., var) alloca (size) -+#endif -+ - /* For platform which support the ISO C amendement 1 functionality we - support user defined character classes. */ - #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) -@@ -330,8 +336,11 @@ fnmatch (pattern, string, flags) - mbstate_t ps; - size_t n; - const char *p; -+ wchar_t *wpattern_malloc = NULL; - wchar_t *wpattern; -+ wchar_t *wstring_malloc = NULL; - wchar_t *wstring; -+ size_t alloca_used = 0; - - /* Convert the strings into wide characters. */ - memset (&ps, '\0', sizeof (ps)); -@@ -343,7 +352,8 @@ fnmatch (pattern, string, flags) - #endif - if (__builtin_expect (n < 1024, 1)) - { -- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ wpattern = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), -+ alloca_used); - n = mbsrtowcs (wpattern, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) - /* Something wrong. -@@ -365,8 +375,16 @@ fnmatch (pattern, string, flags) - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ - return -1; -- wpattern = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) -+ { -+ __set_errno (ENOMEM); -+ return -2; -+ } -+ wpattern_malloc = wpattern -+ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); - assert (mbsinit (&ps)); -+ if (wpattern == NULL) -+ return -2; - (void) mbsrtowcs (wpattern, &pattern, n + 1, &ps); - } - -@@ -379,13 +397,18 @@ fnmatch (pattern, string, flags) - p = string; - if (__builtin_expect (n < 1024, 1)) - { -- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ wstring = (wchar_t *) alloca_account ((n + 1) * sizeof (wchar_t), -+ alloca_used); - n = mbsrtowcs (wstring, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ { -+ /* Something wrong. -+ XXX Do we have to set `errno' to something which -+ mbsrtows hasn't already done? */ -+ free_return: -+ free (wpattern_malloc); -+ return -1; -+ } - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -400,19 +423,38 @@ fnmatch (pattern, string, flags) - /* Something wrong. - XXX Do we have to set `errno' to something which mbsrtows hasn't - already done? */ -- return -1; -- wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); -+ goto free_return; -+ if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) -+ { -+ free (wpattern_malloc); -+ __set_errno (ENOMEM); -+ return -2; -+ } -+ -+ wstring_malloc = wstring -+ = (wchar_t *) malloc ((n + 1) * sizeof (wchar_t)); -+ if (wstring == NULL) -+ { -+ free (wpattern_malloc); -+ return -2; -+ } - assert (mbsinit (&ps)); - (void) mbsrtowcs (wstring, &string, n + 1, &ps); - } - -- return internal_fnwmatch (wpattern, wstring, wstring + n, -- flags & FNM_PERIOD, flags, NULL); -+ int res = internal_fnwmatch (wpattern, wstring, wstring + n, -+ flags & FNM_PERIOD, flags, NULL, -+ alloca_used); -+ -+ free (wstring_malloc); -+ free (wpattern_malloc); -+ -+ return res; - } - # endif /* mbstate_t and mbsrtowcs or _LIBC. */ - - return internal_fnmatch (pattern, string, string + strlen (string), -- flags & FNM_PERIOD, flags, NULL); -+ flags & FNM_PERIOD, flags, NULL, 0); - } - - # ifdef _LIBC -Index: glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/fnmatch_loop.c -+++ glibc-2.12-2-gc4ccff1/posix/fnmatch_loop.c -@@ -28,22 +28,24 @@ struct STRUCT - it matches, nonzero if not. */ - static int FCT (const CHAR *pattern, const CHAR *string, - const CHAR *string_end, int no_leading_period, int flags, -- struct STRUCT *ends) -+ struct STRUCT *ends, size_t alloca_used) - internal_function; - static int EXT (INT opt, const CHAR *pattern, const CHAR *string, -- const CHAR *string_end, int no_leading_period, int flags) -+ const CHAR *string_end, int no_leading_period, int flags, -+ size_t alloca_used) - internal_function; - static const CHAR *END (const CHAR *patternp) internal_function; - - static int - internal_function --FCT (pattern, string, string_end, no_leading_period, flags, ends) -+FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - const CHAR *pattern; - const CHAR *string; - const CHAR *string_end; - int no_leading_period; - int flags; - struct STRUCT *ends; -+ size_t alloca_used; - { - register const CHAR *p = pattern, *n = string; - register UCHAR c; -@@ -67,10 +69,8 @@ FCT (pattern, string, string_end, no_lea - case L('?'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, -- flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, -+ flags, alloca_used); - if (res != -1) - return res; - } -@@ -99,10 +99,8 @@ FCT (pattern, string, string_end, no_lea - case L('*'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, -- flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, -+ flags, alloca_used); - if (res != -1) - return res; - } -@@ -191,7 +189,7 @@ FCT (pattern, string, string_end, no_lea - - for (--p; n < endp; ++n, no_leading_period = 0) - if (FCT (p, n, string_end, no_leading_period, flags2, -- &end) == 0) -+ &end, alloca_used) == 0) - goto found; - } - else if (c == L('/') && (flags & FNM_FILE_NAME)) -@@ -200,7 +198,7 @@ FCT (pattern, string, string_end, no_lea - ++n; - if (n < string_end && *n == L('/') - && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags, -- NULL) == 0)) -+ NULL, alloca_used) == 0)) - return 0; - } - else -@@ -214,7 +212,7 @@ FCT (pattern, string, string_end, no_lea - for (--p; n < endp; ++n, no_leading_period = 0) - if (FOLD ((UCHAR) *n) == c - && (FCT (p, n, string_end, no_leading_period, flags2, -- &end) == 0)) -+ &end, alloca_used) == 0)) - { - found: - if (end.pattern == NULL) -@@ -749,7 +747,7 @@ FCT (pattern, string, string_end, no_lea - _NL_COLLATE_SYMB_EXTRAMB); - - /* Locate the character in the hashing -- table. */ -+ table. */ - hash = elem_hash (str, c1); - - idx = 0; -@@ -971,9 +969,8 @@ FCT (pattern, string, string_end, no_lea - case L('!'): - if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(') - { -- int res; -- -- res = EXT (c, p, n, string_end, no_leading_period, flags); -+ int res = EXT (c, p, n, string_end, no_leading_period, flags, -+ alloca_used); - if (res != -1) - return res; - } -@@ -1052,26 +1049,32 @@ END (const CHAR *pattern) - static int - internal_function - EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end, -- int no_leading_period, int flags) -+ int no_leading_period, int flags, size_t alloca_used) - { - const CHAR *startp; - int level; - struct patternlist - { - struct patternlist *next; -+ CHAR malloced; - CHAR str[0]; - } *list = NULL; - struct patternlist **lastp = &list; - size_t pattern_len = STRLEN (pattern); -+ int any_malloced = 0; - const CHAR *p; - const CHAR *rs; -+ int retval = 0; - - /* Parse the pattern. Store the individual parts in the list. */ - level = 0; - for (startp = p = pattern + 1; level >= 0; ++p) - if (*p == L('\0')) -- /* This is an invalid pattern. */ -- return -1; -+ { -+ /* This is an invalid pattern. */ -+ retval = -1; -+ goto out; -+ } - else if (*p == L('[')) - { - /* Handle brackets special. */ -@@ -1088,8 +1091,11 @@ EXT (INT opt, const CHAR *pattern, const - /* Skip over all characters of the list. */ - while (*p != L(']')) - if (*p++ == L('\0')) -- /* This is no valid pattern. */ -- return -1; -+ { -+ /* This is no valid pattern. */ -+ retval = -1; -+ goto out; -+ } - } - else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@') - || *p == L('!')) && p[1] == L('(')) -@@ -1102,15 +1108,25 @@ EXT (INT opt, const CHAR *pattern, const - /* This means we found the end of the pattern. */ - #define NEW_PATTERN \ - struct patternlist *newp; \ -- \ -- if (opt == L('?') || opt == L('@')) \ -- newp = alloca (sizeof (struct patternlist) \ -- + (pattern_len * sizeof (CHAR))); \ -+ size_t slen = (opt == L('?') || opt == L('@') \ -+ ? pattern_len : (p - startp + 1)); \ -+ slen = sizeof (struct patternlist) + (slen * sizeof (CHAR)); \ -+ int malloced = ! __libc_use_alloca (alloca_used + slen); \ -+ if (__builtin_expect (malloced, 0)) \ -+ { \ -+ newp = malloc (slen); \ -+ if (newp == NULL) \ -+ { \ -+ retval = -2; \ -+ goto out; \ -+ } \ -+ any_malloced = 1; \ -+ } \ - else \ -- newp = alloca (sizeof (struct patternlist) \ -- + ((p - startp + 1) * sizeof (CHAR))); \ -- *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ -+ newp = alloca_account (slen, alloca_used); \ - newp->next = NULL; \ -+ newp->malloced = malloced; \ -+ *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0'); \ - *lastp = newp; \ - lastp = &newp->next - NEW_PATTERN; -@@ -1131,8 +1147,9 @@ EXT (INT opt, const CHAR *pattern, const - switch (opt) - { - case L('*'): -- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) -- return 0; -+ if (FCT (p, string, string_end, no_leading_period, flags, NULL, -+ alloca_used) == 0) -+ goto success; - /* FALLTHROUGH */ - - case L('+'): -@@ -1143,7 +1160,7 @@ EXT (INT opt, const CHAR *pattern, const - current pattern. */ - if (FCT (list->str, string, rs, no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0 -+ NULL, alloca_used) == 0 - /* This was successful. Now match the rest with the rest - of the pattern. */ - && (FCT (p, rs, string_end, -@@ -1151,7 +1168,7 @@ EXT (INT opt, const CHAR *pattern, const - ? no_leading_period - : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, - flags & FNM_FILE_NAME -- ? flags : flags & ~FNM_PERIOD, NULL) == 0 -+ ? flags : flags & ~FNM_PERIOD, NULL, alloca_used) == 0 - /* This didn't work. Try the whole pattern. */ - || (rs != string - && FCT (pattern - 1, rs, string_end, -@@ -1160,18 +1177,21 @@ EXT (INT opt, const CHAR *pattern, const - : (rs[-1] == '/' && NO_LEADING_PERIOD (flags) - ? 1 : 0), - flags & FNM_FILE_NAME -- ? flags : flags & ~FNM_PERIOD, NULL) == 0))) -+ ? flags : flags & ~FNM_PERIOD, NULL, -+ alloca_used) == 0))) - /* It worked. Signal success. */ -- return 0; -+ goto success; - } - while ((list = list->next) != NULL); - - /* None of the patterns lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - case L('?'): -- if (FCT (p, string, string_end, no_leading_period, flags, NULL) == 0) -- return 0; -+ if (FCT (p, string, string_end, no_leading_period, flags, NULL, -+ alloca_used) == 0) -+ goto success; - /* FALLTHROUGH */ - - case L('@'): -@@ -1183,13 +1203,14 @@ EXT (INT opt, const CHAR *pattern, const - if (FCT (STRCAT (list->str, p), string, string_end, - no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0) -+ NULL, alloca_used) == 0) - /* It worked. Signal success. */ -- return 0; -+ goto success; - while ((list = list->next) != NULL); - - /* None of the patterns lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - case L('!'): - for (rs = string; rs <= string_end; ++rs) -@@ -1199,7 +1220,7 @@ EXT (INT opt, const CHAR *pattern, const - for (runp = list; runp != NULL; runp = runp->next) - if (FCT (runp->str, string, rs, no_leading_period, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0) -+ NULL, alloca_used) == 0) - break; - - /* If none of the patterns matched see whether the rest does. */ -@@ -1209,21 +1230,34 @@ EXT (INT opt, const CHAR *pattern, const - ? no_leading_period - : rs[-1] == '/' && NO_LEADING_PERIOD (flags) ? 1 : 0, - flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD, -- NULL) == 0)) -+ NULL, alloca_used) == 0)) - /* This is successful. */ -- return 0; -+ goto success; - } - - /* None of the patterns together with the rest of the pattern - lead to a match. */ -- return FNM_NOMATCH; -+ retval = FNM_NOMATCH; -+ break; - - default: - assert (! "Invalid extended matching operator"); -+ retval = -1; - break; - } - -- return -1; -+ success: -+ out: -+ if (any_malloced) -+ while (list != NULL) -+ { -+ struct patternlist *old = list; -+ list = list->next; -+ if (old->malloced) -+ free (old); -+ } -+ -+ return retval; - } - - -Index: glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/posix/tst-fnmatch.c -+++ glibc-2.12-2-gc4ccff1/posix/tst-fnmatch.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - - static char *next_input (char **line, int first, int last); -@@ -46,6 +47,8 @@ main (void) - size_t escpatternlen = 0; - int nr = 0; - -+ mtrace (); -+ - /* Read lines from stdin with the following format: - - locale input-string match-string flags result diff --git a/src/patches/glibc/glibc-rh688720.patch b/src/patches/glibc/glibc-rh688720.patch deleted file mode 100644 index 0c86f2540..000000000 --- a/src/patches/glibc/glibc-rh688720.patch +++ /dev/null @@ -1,1638 +0,0 @@ -2011-11-11 Ulrich Drepper - - [BZ #13147] - * locales/de_AT: Use de_DE for LC_NUMERIC. - * locales/es_BO: Use es_ES for LC_MESSAGES and LC_NUMERIC. - * locales/es_CL: Likewise. - * locales/es_CO: Likewise. - * locales/es_DO: Likewise. - * locales/es_EC: Likewise. - * locales/es_GT: Likewise. - * locales/es_HN: Likewise. - * locales/es_MX: Likewise. - * locales/es_NI: Likewise. - * locales/es_PA: Likewise. - * locales/es_PE: Likewise. - * locales/es_PR: Likewise. - * locales/es_PY: Likewise. - * locales/es_SV: Likewise. - * locales/es_UY: Likewise. - * locales/es_VE: Likewise. - * locales/es_ES: Fix LC_NUMERIC. - * locales/es_CR: Use es_ES for LC_MESSAGES. - * locales/fr_BE: Actually use grouping in LC_NUMERIC. - * locales/fr_CA: Use fr_FR for LC_MESSAGES and LC_NUMERIC. - * locales/fr_CH: Use de_CH for LC_NUMERIC. - * locales/fr_LU: Use same grouping in LC_NUMERIC as in LC_MONETARY. - -2010-05-17 Andreas Schwab - - * locales/es_CR (LC_ADDRESS): Fix character names in lang_ab. - -Index: glibc-2.12-2-gc4ccff1/localedata/locales/de_AT -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/de_AT -+++ glibc-2.12-2-gc4ccff1/localedata/locales/de_AT -@@ -78,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "de_DE" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_BO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_BO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_BO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CL -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CL -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CL -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_CR -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_CR -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_CR -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,34 +78,34 @@ END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -@@ -157,7 +156,7 @@ country_post "" - country_car "" - country_isbn "9930,9977,9968" - lang_name "" --lang_ab "<0065><0073>" -+lang_ab "" - lang_term "" - country_ab2 "" - country_ab3 "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_DO -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_DO -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_DO -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_EC -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_EC -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_EC -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_ES -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_ES -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_ES -@@ -85,40 +85,40 @@ END LC_MONETARY - - LC_NUMERIC - decimal_point "" --thousands_sep "" --grouping 0;0 -+thousands_sep "" -+grouping 3;3 - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_GT -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_GT -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_GT -@@ -55,8 +55,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -78,9 +77,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_HN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_HN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_HN -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_MX -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_MX -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_MX -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_NI -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_NI -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_NI -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -70,9 +69,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PA -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PA -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PA -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PE -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PR -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PR -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PR -@@ -47,8 +47,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -70,41 +69,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_PY -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_PY -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_PY -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_SV -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_SV -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_SV -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,9 +78,7 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_UY -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_UY -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_UY -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/es_VE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/es_VE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/es_VE -@@ -56,8 +56,7 @@ copy "es_ES" - END LC_CTYPE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "es_ES" - END LC_MESSAGES - - LC_MONETARY -@@ -79,41 +78,39 @@ n_sign_posn 1 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "es_ES" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_BE -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_BE -@@ -79,7 +79,7 @@ END LC_MONETARY - LC_NUMERIC - decimal_point "" - thousands_sep "" --grouping 0;0 -+grouping 3;3 - END LC_NUMERIC - - LC_TIME -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CA -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CA -@@ -55,8 +55,7 @@ copy "en_CA" - END LC_COLLATE - - LC_MESSAGES --yesexpr "" --noexpr "" -+copy "fr_FR" - END LC_MESSAGES - - LC_MONETARY -@@ -78,41 +77,39 @@ n_sign_posn 0 - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "fr_FR" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_CH -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_CH -@@ -64,41 +64,39 @@ copy "de_CH" - END LC_MONETARY - - LC_NUMERIC --decimal_point "" --thousands_sep "" --grouping 0;0 -+copy "de_CH" - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" -Index: glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/fr_LU -+++ glibc-2.12-2-gc4ccff1/localedata/locales/fr_LU -@@ -78,40 +78,40 @@ END LC_MONETARY - - LC_NUMERIC - decimal_point "" --thousands_sep "" --grouping 0;0 -+thousands_sep "" -+grouping 3;3 - END LC_NUMERIC - - LC_TIME - abday "";"";/ -- "";"";/ -- "";"";/ -- "" -+ "";"";/ -+ "";"";/ -+ "" - day "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"" -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"" - mon "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "";/ -- "" -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "";/ -+ "" - d_t_fmt "" - d_fmt "" - t_fmt "" diff --git a/src/patches/glibc/glibc-rh688980.patch b/src/patches/glibc/glibc-rh688980.patch deleted file mode 100644 index ce989264f..000000000 --- a/src/patches/glibc/glibc-rh688980.patch +++ /dev/null @@ -1,20 +0,0 @@ -2011-05-11 Ulrich Drepper - - [BZ #12625] - * misc/mntent_r.c (addmntent): Flush the stream after the output - -Index: glibc-2.12-2-gc4ccff1/misc/mntent_r.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/misc/mntent_r.c -+++ glibc-2.12-2-gc4ccff1/misc/mntent_r.c -@@ -263,8 +263,8 @@ __addmntent (FILE *stream, const struct - mntcopy.mnt_type, - mntcopy.mnt_opts, - mntcopy.mnt_freq, -- mntcopy.mnt_passno) -- < 0 ? 1 : 0); -+ mntcopy.mnt_passno) < 0 -+ || fflush (stream) != 0); - } - weak_alias (__addmntent, addmntent) - diff --git a/src/patches/glibc/glibc-rh689471.patch b/src/patches/glibc/glibc-rh689471.patch deleted file mode 100644 index 4c7fc8a7f..000000000 --- a/src/patches/glibc/glibc-rh689471.patch +++ /dev/null @@ -1,333 +0,0 @@ -2011-03-20 H.J. Lu - - [BZ #12597] - * string/test-strncmp.c (do_page_test): New function. - (check2): Likewise. - (test_main): Call check2. - * sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary. - -Index: glibc-2.12-2-gc4ccff1/string/test-strncmp.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/string/test-strncmp.c -+++ glibc-2.12-2-gc4ccff1/string/test-strncmp.c -@@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, s - } - - static void -+do_page_test (size_t offset1, size_t offset2, char *s2) -+{ -+ char *s1; -+ int exp_result; -+ -+ if (offset1 >= page_size || offset2 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + offset1); -+ s2 += offset2; -+ -+ exp_result= *s1; -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ check_result (impl, s1, s2, page_size, -exp_result); -+ check_result (impl, s2, s1, page_size, exp_result); -+ } -+} -+ -+static void - do_random_tests (void) - { - size_t i, j, n, align1, align2, pos, len1, len2, size; -@@ -312,6 +333,25 @@ check1 (void) - } - } - -+static void -+check2 (void) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ s1 = (char *) buf1; -+ for (i = 0; i < page_size - 1; i++) -+ s1[i] = 23; -+ s1[i] = 0; -+ -+ s2 = strdup (s1); -+ -+ for (i = 0; i < 64; ++i) -+ do_page_test (3990 + i, 2635, s2); -+ -+ free (s2); -+} -+ - int - test_main (void) - { -@@ -320,6 +360,7 @@ test_main (void) - test_init (); - - check1 (); -+ check2 (); - - printf ("%23s", ""); - FOR_EACH_IMPL (impl, 0) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S -@@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_1_use_sse4_2) - -+LABEL(nibble_ashr_1_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $1, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $14, %ecx -- ja LABEL(loop_ashr_1_use_sse4_2) -+ ja LABEL(nibble_ashr_1_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_2_use_sse4_2) - -+LABEL(nibble_ashr_2_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $2, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $13, %ecx -- ja LABEL(loop_ashr_2_use_sse4_2) -+ ja LABEL(nibble_ashr_2_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_3_use_sse4_2) - -+LABEL(nibble_ashr_3_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $3, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $12, %ecx -- ja LABEL(loop_ashr_3_use_sse4_2) -+ ja LABEL(nibble_ashr_3_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_4_use_sse4_2) - -+LABEL(nibble_ashr_4_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $4, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $11, %ecx -- ja LABEL(loop_ashr_4_use_sse4_2) -+ ja LABEL(nibble_ashr_4_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_5_use_sse4_2) - -+LABEL(nibble_ashr_5_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $5, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $10, %ecx -- ja LABEL(loop_ashr_5_use_sse4_2) -+ ja LABEL(nibble_ashr_5_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_6_use_sse4_2) - -+LABEL(nibble_ashr_6_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $6, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $9, %ecx -- ja LABEL(loop_ashr_6_use_sse4_2) -+ ja LABEL(nibble_ashr_6_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_7_use_sse4_2) - -+LABEL(nibble_ashr_7_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $7, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $8, %ecx -- ja LABEL(loop_ashr_7_use_sse4_2) -+ ja LABEL(nibble_ashr_7_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_8_use_sse4_2) - -+LABEL(nibble_ashr_8_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $8, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $7, %ecx -- ja LABEL(loop_ashr_8_use_sse4_2) -+ ja LABEL(nibble_ashr_8_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_9_use_sse4_2) - -+LABEL(nibble_ashr_9_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - - palignr $9, -16(%rdi, %rdx), %xmm0 -@@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $6, %ecx -- ja LABEL(loop_ashr_9_use_sse4_2) -+ ja LABEL(nibble_ashr_9_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_10_use_sse4_2) - -+LABEL(nibble_ashr_10_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $10, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $5, %ecx -- ja LABEL(loop_ashr_10_use_sse4_2) -+ ja LABEL(nibble_ashr_10_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_11_use_sse4_2) - -+LABEL(nibble_ashr_11_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $11, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $4, %ecx -- ja LABEL(loop_ashr_11_use_sse4_2) -+ ja LABEL(nibble_ashr_11_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_12_use_sse4_2) - -+LABEL(nibble_ashr_12_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $12, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $3, %ecx -- ja LABEL(loop_ashr_12_use_sse4_2) -+ ja LABEL(nibble_ashr_12_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_13_use_sse4_2) - -+LABEL(nibble_ashr_13_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $13, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $2, %ecx -- ja LABEL(loop_ashr_13_use_sse4_2) -+ ja LABEL(nibble_ashr_13_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_14_use_sse4_2) - -+LABEL(nibble_ashr_14_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $14, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $1, %ecx -- ja LABEL(loop_ashr_14_use_sse4_2) -+ ja LABEL(nibble_ashr_14_use_sse4_2_restart) - - jmp LABEL(nibble_ashr_use_sse4_2_exit) - -@@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2): - add $16, %r10 - jg LABEL(nibble_ashr_15_use_sse4_2) - -+LABEL(nibble_ashr_15_use_sse4_2_restart): - movdqa (%rdi, %rdx), %xmm0 - palignr $15, -16(%rdi, %rdx), %xmm0 - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L -@@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2): - jae LABEL(nibble_ashr_use_sse4_2_exit) - # endif - cmp $0, %ecx -- ja LABEL(loop_ashr_15_use_sse4_2) -+ ja LABEL(nibble_ashr_15_use_sse4_2_restart) - - LABEL(nibble_ashr_use_sse4_2_exit): - # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L diff --git a/src/patches/glibc/glibc-rh692177.patch b/src/patches/glibc/glibc-rh692177.patch deleted file mode 100644 index 1036769bf..000000000 --- a/src/patches/glibc/glibc-rh692177.patch +++ /dev/null @@ -1,137 +0,0 @@ -2011-03-22 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment - round counter. - * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. - -2011-03-20 Ulrich Drepper - - [BZ #12587] - * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): - Handle cache information in CPU leaf 4. - * sysdeps/x86_64/cacheinfo.c (intel_check_word): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/sysconf.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/sysconf.c -@@ -186,6 +186,57 @@ intel_check_word (int name, unsigned int - /* No need to look further. */ - break; - } -+ else if (byte == 0xff) -+ { -+ /* CPUID leaf 0x4 contains all the information. We need to -+ iterate over it. */ -+ unsigned int eax; -+ unsigned int ebx; -+ unsigned int ecx; -+ unsigned int edx; -+ -+ unsigned int round = 0; -+ while (1) -+ { -+ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" -+ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) -+ : "0" (4), "2" (round)); -+ -+ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; -+ if (type == null) -+ /* That was the end. */ -+ break; -+ -+ unsigned int level = (eax >> 5) & 0x7; -+ -+ if ((level == 1 && type == data -+ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) -+ || (level == 1 && type == inst -+ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) -+ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) -+ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -+ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) -+ { -+ unsigned int offset = M(name) - folded_rel_name; -+ -+ if (offset == 0) -+ /* Cache size. */ -+ return (((ebx >> 22) + 1) -+ * (((ebx >> 12) & 0x3ff) + 1) -+ * ((ebx & 0xfff) + 1) -+ * (ecx + 1)); -+ if (offset == 1) -+ return (ebx >> 22) + 1; -+ -+ assert (offset == 2); -+ return (ebx & 0xfff) + 1; -+ } -+ -+ ++round; -+ } -+ /* There is no other cache information anywhere else. */ -+ break; -+ } - else - { - if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/cacheinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/cacheinfo.c -@@ -181,6 +181,57 @@ intel_check_word (int name, unsigned int - /* No need to look further. */ - break; - } -+ else if (byte == 0xff) -+ { -+ /* CPUID leaf 0x4 contains all the information. We need to -+ iterate over it. */ -+ unsigned int eax; -+ unsigned int ebx; -+ unsigned int ecx; -+ unsigned int edx; -+ -+ unsigned int round = 0; -+ while (1) -+ { -+ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" -+ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) -+ : "0" (4), "2" (round)); -+ -+ enum { null = 0, data = 1, inst = 2, uni = 3 } type = eax & 0x1f; -+ if (type == null) -+ /* That was the end. */ -+ break; -+ -+ unsigned int level = (eax >> 5) & 0x7; -+ -+ if ((level == 1 && type == data -+ && folded_rel_name == M(_SC_LEVEL1_DCACHE_SIZE)) -+ || (level == 1 && type == inst -+ && folded_rel_name == M(_SC_LEVEL1_ICACHE_SIZE)) -+ || (level == 2 && folded_rel_name == M(_SC_LEVEL2_CACHE_SIZE)) -+ || (level == 3 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) -+ || (level == 4 && folded_rel_name == M(_SC_LEVEL4_CACHE_SIZE))) -+ { -+ unsigned int offset = M(name) - folded_rel_name; -+ -+ if (offset == 0) -+ /* Cache size. */ -+ return (((ebx >> 22) + 1) -+ * (((ebx >> 12) & 0x3ff) + 1) -+ * ((ebx & 0xfff) + 1) -+ * (ecx + 1)); -+ if (offset == 1) -+ return (ebx >> 22) + 1; -+ -+ assert (offset == 2); -+ return (ebx & 0xfff) + 1; -+ } -+ -+ ++round; -+ } -+ /* There is no other cache information anywhere else. */ -+ break; -+ } - else - { - if (byte == 0x49 && folded_rel_name == M(_SC_LEVEL3_CACHE_SIZE)) diff --git a/src/patches/glibc/glibc-rh692838.patch b/src/patches/glibc/glibc-rh692838.patch deleted file mode 100644 index aa2adf14f..000000000 --- a/src/patches/glibc/glibc-rh692838.patch +++ /dev/null @@ -1,6165 +0,0 @@ -2011-05-09 Ulrich Drepper - - [BZ #12541] - * locales/ar_IN: Update currency_symbol. - * locales/as_IN: Likewise. - * locales/bn_IN: Likewise. - * locales/en_IN: Likewise. - * locales/gu_IN: Likewise. - * locales/hi_IN: Likewise. - * locales/kn_IN: Likewise. - * locales/kok_IN: Likewise. - * locales/ks_IN: Likewise. - * locales/ml_IN: Likewise. - * locales/mr_IN: Likewise. - * locales/or_IN: Likewise. - * locales/pa_IN: Likewise. - * locales/sa_IN: Likewise. - * locales/sd_IN: Likewise. - * locales/ta_IN: Likewise. - * locales/te_IN: Likewise. - Patch by pravin.d.s@gmail.com. - -2011-05-09 Ulrich Drepper - - [BZ #12711] - * locale/C-translit.h.in: Add entry for U20B9. - Patch by pravin.d.s@gmail.com. - -Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h -+++ glibc-2.12-2-gc4ccff1/locale/C-translit.h -@@ -1,4 +1,4 @@ --#define NTRANSLIT 1353 -+#define NTRANSLIT 1354 - static const uint32_t translit_from_idx[] = - { - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, -@@ -113,7 +113,7 @@ static const uint32_t translit_from_idx[ - 2616, 2618, 2620, 2622, 2624, 2626, 2628, 2630, 2632, 2634, 2636, 2638, - 2640, 2642, 2644, 2646, 2648, 2650, 2652, 2654, 2656, 2658, 2660, 2662, - 2664, 2666, 2668, 2670, 2672, 2674, 2676, 2678, 2680, 2682, 2684, 2686, -- 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704 -+ 2688, 2690, 2692, 2694, 2696, 2698, 2700, 2702, 2704, 2706 - }; - static const wchar_t translit_from_tbl[] = - L"\x00a0" L"\0" L"\x00a9" L"\0" L"\x00ab" L"\0" L"\x00ad" L"\0" L"\x00ae" -@@ -134,334 +134,334 @@ static const wchar_t translit_from_tbl[] - L"\0" L"\x2035" L"\0" L"\x2036" L"\0" L"\x2037" L"\0" L"\x2039" L"\0" - L"\x203a" L"\0" L"\x203c" L"\0" L"\x2044" L"\0" L"\x2047" L"\0" L"\x2048" - L"\0" L"\x2049" L"\0" L"\x205f" L"\0" L"\x2060" L"\0" L"\x2061" L"\0" -- L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x2100" -- L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" L"\x2106" L"\0" -- L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" L"\0" L"\x210e" -- L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" L"\x2113" L"\0" -- L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" L"\0" L"\x211b" -- L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" L"\x2122" L"\0" -- L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" L"\0" L"\x212d" -- L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" L"\x2131" L"\0" -- L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" L"\0" L"\x2146" -- L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" L"\x2153" L"\0" -- L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" L"\0" L"\x2158" -- L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" L"\x215c" L"\0" -- L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" L"\0" L"\x2161" -- L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" L"\x2165" L"\0" -- L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" L"\0" L"\x216a" -- L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" L"\x216e" L"\0" -- L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" L"\0" L"\x2173" -- L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" L"\x2177" L"\0" -- L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" L"\0" L"\x217c" -- L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" L"\x2190" L"\0" -- L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" L"\0" L"\x21d4" -- L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" L"\x2217" L"\0" -- L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" L"\0" L"\x2265" -- L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" L"\x22d9" L"\0" -- L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" L"\0" L"\x2404" -- L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" L"\x2408" L"\0" -- L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" L"\0" L"\x240d" -- L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" L"\x2411" L"\0" -- L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" L"\0" L"\x2416" -- L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" L"\x241a" L"\0" -- L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" L"\0" L"\x241f" -- L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" L"\x2424" L"\0" -- L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" L"\0" L"\x2464" -- L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" L"\x2468" L"\0" -- L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" L"\0" L"\x246d" -- L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" L"\x2471" L"\0" -- L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" L"\0" L"\x2476" -- L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" L"\x247a" L"\0" -- L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" L"\0" L"\x247f" -- L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" L"\x2483" L"\0" -- L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" L"\0" L"\x2488" -- L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" L"\x248c" L"\0" -- L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" L"\0" L"\x2491" -- L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" L"\x2495" L"\0" -- L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" L"\0" L"\x249a" -- L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" L"\x249e" L"\0" -- L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" L"\0" L"\x24a3" -- L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" L"\x24a7" L"\0" -- L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" L"\0" L"\x24ac" -- L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" L"\x24b0" L"\0" -- L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" L"\0" L"\x24b5" -- L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" L"\x24b9" L"\0" -- L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" L"\0" L"\x24be" -- L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" L"\x24c2" L"\0" -- L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" L"\0" L"\x24c7" -- L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" L"\x24cb" L"\0" -- L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" L"\0" L"\x24d0" -- L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" L"\x24d4" L"\0" -- L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" L"\0" L"\x24d9" -- L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" L"\x24dd" L"\0" -- L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" L"\0" L"\x24e2" -- L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" L"\x24e6" L"\0" -- L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" L"\0" L"\x2500" -- L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" L"\x2514" L"\0" -- L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" L"\0" L"\x2534" -- L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" L"\x2a75" L"\0" -- L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" L"\0" L"\x3252" -- L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" L"\x3256" L"\0" -- L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" L"\0" L"\x325b" -- L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" L"\x325f" L"\0" -- L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" L"\0" L"\x32b5" -- L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" L"\x32b9" L"\0" -- L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" L"\0" L"\x32be" -- L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" L"\x3373" L"\0" -- L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" L"\0" L"\x3381" -- L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" L"\x3385" L"\0" -- L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" L"\0" L"\x338a" -- L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" L"\x338e" L"\0" -- L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" L"\0" L"\x3393" -- L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" L"\x3397" L"\0" -- L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" L"\0" L"\x339c" -- L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" L"\x33a0" L"\0" -- L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" L"\0" L"\x33a5" -- L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" L"\x33a9" L"\0" -- L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" L"\0" L"\x33ae" -- L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" L"\x33b2" L"\0" -- L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" L"\0" L"\x33b7" -- L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" L"\x33bb" L"\0" -- L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" L"\0" L"\x33c2" -- L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" L"\x33c6" L"\0" -- L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" L"\0" L"\x33cb" -- L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" L"\x33cf" L"\0" -- L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" L"\0" L"\x33d4" -- L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" L"\x33d8" L"\0" -- L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" L"\0" L"\x33dd" -- L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" L"\xfb03" L"\0" -- L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" L"\0" L"\xfe01" -- L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" L"\xfe05" L"\0" -- L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" L"\0" L"\xfe0a" -- L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" L"\xfe0e" L"\0" -- L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" L"\0" L"\xfe50" -- L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" L"\xfe56" L"\0" -- L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" L"\0" L"\xfe5c" -- L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" L"\xfe62" L"\0" -- L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" L"\0" L"\xfe68" -- L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" L"\xfeff" L"\0" -- L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" L"\0" L"\xff05" -- L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" L"\xff09" L"\0" -- L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" L"\0" L"\xff0e" -- L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" L"\xff12" L"\0" -- L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" L"\0" L"\xff17" -- L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" L"\xff1b" L"\0" -- L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" L"\0" L"\xff20" -- L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" L"\xff24" L"\0" -- L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" L"\0" L"\xff29" -- L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" L"\xff2d" L"\0" -- L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" L"\0" L"\xff32" -- L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" L"\xff36" L"\0" -- L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" L"\0" L"\xff3b" -- L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" L"\xff3f" L"\0" -- L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" L"\0" L"\xff44" -- L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" L"\xff48" L"\0" -- L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" L"\0" L"\xff4d" -- L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" L"\xff51" L"\0" -- L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" L"\0" L"\xff56" -- L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" L"\xff5a" L"\0" -- L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" L"\0" -- L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" L"\x0001d403" -- L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" L"\0" -- L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" L"\x0001d40a" -- L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" L"\0" -- L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" L"\x0001d411" -- L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" L"\0" -- L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" L"\x0001d418" -- L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" L"\0" -- L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" L"\x0001d41f" -- L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" L"\0" -- L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" L"\x0001d426" -- L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" L"\0" -- L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" L"\x0001d42d" -- L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" L"\0" -- L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" L"\x0001d434" -- L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" L"\0" -- L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" L"\x0001d43b" -- L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" L"\0" -- L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" L"\x0001d442" -- L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" L"\0" -- L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" L"\x0001d449" -- L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" L"\0" -- L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" L"\x0001d450" -- L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" L"\0" -- L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" L"\x0001d458" -- L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" L"\0" -- L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" L"\x0001d45f" -- L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" L"\0" -- L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" L"\x0001d466" -- L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" L"\0" -- L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" L"\x0001d46d" -- L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" L"\0" -- L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" L"\x0001d474" -- L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" L"\0" -- L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" L"\x0001d47b" -- L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" L"\0" -- L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" L"\x0001d482" -- L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" L"\0" -- L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" L"\x0001d489" -- L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" L"\0" -- L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" L"\x0001d490" -- L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" L"\0" -- L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" L"\x0001d497" -- L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" L"\0" -- L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" L"\x0001d49f" -- L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" L"\0" -- L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" L"\x0001d4ac" -- L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" L"\0" -- L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" L"\x0001d4b4" -- L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" L"\0" -- L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" L"\x0001d4bd" -- L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" L"\0" -- L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" L"\x0001d4c6" -- L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" L"\0" -- L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" L"\x0001d4cd" -- L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" L"\0" -- L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" L"\x0001d4d4" -- L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" L"\0" -- L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" L"\x0001d4db" -- L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" L"\0" -- L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" L"\x0001d4e2" -- L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" L"\0" -- L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" L"\x0001d4e9" -- L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" L"\0" -- L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" L"\x0001d4f0" -- L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" L"\0" -- L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" L"\x0001d4f7" -- L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" L"\0" -- L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" L"\x0001d4fe" -- L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" L"\0" -- L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" L"\x0001d505" -- L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" L"\0" -- L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" L"\x0001d50f" -- L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" L"\0" -- L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" L"\x0001d517" -- L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" L"\0" -- L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" L"\x0001d51f" -- L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" L"\0" -- L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" L"\x0001d526" -- L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" L"\0" -- L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" L"\x0001d52d" -- L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" L"\0" -- L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" L"\x0001d534" -- L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" L"\0" -- L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" L"\x0001d53c" -- L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" L"\0" -- L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" L"\x0001d544" -- L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" L"\0" -- L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" L"\x0001d54f" -- L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" L"\0" -- L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" L"\x0001d557" -- L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" L"\0" -- L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" L"\x0001d55e" -- L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" L"\0" -- L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" L"\x0001d565" -- L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" L"\0" -- L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" L"\x0001d56c" -- L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" L"\0" -- L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" L"\x0001d573" -- L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" L"\0" -- L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" L"\x0001d57a" -- L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" L"\0" -- L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" L"\x0001d581" -- L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" L"\0" -- L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" L"\x0001d588" -- L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" L"\0" -- L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" L"\x0001d58f" -- L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" L"\0" -- L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" L"\x0001d596" -- L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" L"\0" -- L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" L"\x0001d59d" -- L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" L"\0" -- L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" L"\x0001d5a4" -- L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" L"\0" -- L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" L"\x0001d5ab" -- L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" L"\0" -- L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" L"\x0001d5b2" -- L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" L"\0" -- L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" L"\x0001d5b9" -- L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" L"\0" -- L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" L"\x0001d5c0" -- L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" L"\0" -- L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" L"\x0001d5c7" -- L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" L"\0" -- L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" L"\x0001d5ce" -- L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" L"\0" -- L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" L"\x0001d5d5" -- L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" L"\0" -- L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" L"\x0001d5dc" -- L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" L"\0" -- L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" L"\x0001d5e3" -- L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" L"\0" -- L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" L"\x0001d5ea" -- L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" L"\0" -- L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" L"\x0001d5f1" -- L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" L"\0" -- L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" L"\x0001d5f8" -- L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" L"\0" -- L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" L"\x0001d5ff" -- L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" L"\0" -- L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" L"\x0001d606" -- L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" L"\0" -- L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" L"\x0001d60d" -- L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" L"\0" -- L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" L"\x0001d614" -- L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" L"\0" -- L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" L"\x0001d61b" -- L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" L"\0" -- L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" L"\x0001d622" -- L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" L"\0" -- L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" L"\x0001d629" -- L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" L"\0" -- L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" L"\x0001d630" -- L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" L"\0" -- L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" L"\x0001d637" -- L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" L"\0" -- L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" L"\x0001d63e" -- L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" L"\0" -- L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" L"\x0001d645" -- L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" L"\0" -- L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" L"\x0001d64c" -- L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" L"\0" -- L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" L"\x0001d653" -- L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" L"\0" -- L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" L"\x0001d65a" -- L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" L"\0" -- L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" L"\x0001d661" -- L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" L"\0" -- L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" L"\x0001d668" -- L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" L"\0" -- L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" L"\x0001d66f" -- L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" L"\0" -- L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" L"\x0001d676" -- L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" L"\0" -- L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" L"\x0001d67d" -- L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" L"\0" -- L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" L"\x0001d684" -- L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" L"\0" -- L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" L"\x0001d68b" -- L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" L"\0" -- L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" L"\x0001d692" -- L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" L"\0" -- L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" L"\x0001d699" -- L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" L"\0" -- L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" L"\x0001d6a0" -- L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" L"\0" -- L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" L"\x0001d7d1" -- L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" L"\0" -- L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" L"\x0001d7d8" -- L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" L"\0" -- L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" L"\x0001d7df" -- L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" L"\0" -- L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" L"\x0001d7e6" -- L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" L"\0" -- L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" L"\x0001d7ed" -- L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" L"\0" -- L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" L"\x0001d7f4" -- L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" L"\0" -- L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" L"\x0001d7fb" -- L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" L"\0" -- L"\x0001d7ff"; -+ L"\x2062" L"\0" L"\x2063" L"\0" L"\x20a8" L"\0" L"\x20ac" L"\0" L"\x20b9" -+ L"\0" L"\x2100" L"\0" L"\x2101" L"\0" L"\x2102" L"\0" L"\x2105" L"\0" -+ L"\x2106" L"\0" L"\x210a" L"\0" L"\x210b" L"\0" L"\x210c" L"\0" L"\x210d" -+ L"\0" L"\x210e" L"\0" L"\x2110" L"\0" L"\x2111" L"\0" L"\x2112" L"\0" -+ L"\x2113" L"\0" L"\x2115" L"\0" L"\x2116" L"\0" L"\x2119" L"\0" L"\x211a" -+ L"\0" L"\x211b" L"\0" L"\x211c" L"\0" L"\x211d" L"\0" L"\x2121" L"\0" -+ L"\x2122" L"\0" L"\x2124" L"\0" L"\x2126" L"\0" L"\x2128" L"\0" L"\x212c" -+ L"\0" L"\x212d" L"\0" L"\x212e" L"\0" L"\x212f" L"\0" L"\x2130" L"\0" -+ L"\x2131" L"\0" L"\x2133" L"\0" L"\x2134" L"\0" L"\x2139" L"\0" L"\x2145" -+ L"\0" L"\x2146" L"\0" L"\x2147" L"\0" L"\x2148" L"\0" L"\x2149" L"\0" -+ L"\x2153" L"\0" L"\x2154" L"\0" L"\x2155" L"\0" L"\x2156" L"\0" L"\x2157" -+ L"\0" L"\x2158" L"\0" L"\x2159" L"\0" L"\x215a" L"\0" L"\x215b" L"\0" -+ L"\x215c" L"\0" L"\x215d" L"\0" L"\x215e" L"\0" L"\x215f" L"\0" L"\x2160" -+ L"\0" L"\x2161" L"\0" L"\x2162" L"\0" L"\x2163" L"\0" L"\x2164" L"\0" -+ L"\x2165" L"\0" L"\x2166" L"\0" L"\x2167" L"\0" L"\x2168" L"\0" L"\x2169" -+ L"\0" L"\x216a" L"\0" L"\x216b" L"\0" L"\x216c" L"\0" L"\x216d" L"\0" -+ L"\x216e" L"\0" L"\x216f" L"\0" L"\x2170" L"\0" L"\x2171" L"\0" L"\x2172" -+ L"\0" L"\x2173" L"\0" L"\x2174" L"\0" L"\x2175" L"\0" L"\x2176" L"\0" -+ L"\x2177" L"\0" L"\x2178" L"\0" L"\x2179" L"\0" L"\x217a" L"\0" L"\x217b" -+ L"\0" L"\x217c" L"\0" L"\x217d" L"\0" L"\x217e" L"\0" L"\x217f" L"\0" -+ L"\x2190" L"\0" L"\x2192" L"\0" L"\x2194" L"\0" L"\x21d0" L"\0" L"\x21d2" -+ L"\0" L"\x21d4" L"\0" L"\x2212" L"\0" L"\x2215" L"\0" L"\x2216" L"\0" -+ L"\x2217" L"\0" L"\x2223" L"\0" L"\x2236" L"\0" L"\x223c" L"\0" L"\x2264" -+ L"\0" L"\x2265" L"\0" L"\x226a" L"\0" L"\x226b" L"\0" L"\x22d8" L"\0" -+ L"\x22d9" L"\0" L"\x2400" L"\0" L"\x2401" L"\0" L"\x2402" L"\0" L"\x2403" -+ L"\0" L"\x2404" L"\0" L"\x2405" L"\0" L"\x2406" L"\0" L"\x2407" L"\0" -+ L"\x2408" L"\0" L"\x2409" L"\0" L"\x240a" L"\0" L"\x240b" L"\0" L"\x240c" -+ L"\0" L"\x240d" L"\0" L"\x240e" L"\0" L"\x240f" L"\0" L"\x2410" L"\0" -+ L"\x2411" L"\0" L"\x2412" L"\0" L"\x2413" L"\0" L"\x2414" L"\0" L"\x2415" -+ L"\0" L"\x2416" L"\0" L"\x2417" L"\0" L"\x2418" L"\0" L"\x2419" L"\0" -+ L"\x241a" L"\0" L"\x241b" L"\0" L"\x241c" L"\0" L"\x241d" L"\0" L"\x241e" -+ L"\0" L"\x241f" L"\0" L"\x2420" L"\0" L"\x2421" L"\0" L"\x2423" L"\0" -+ L"\x2424" L"\0" L"\x2460" L"\0" L"\x2461" L"\0" L"\x2462" L"\0" L"\x2463" -+ L"\0" L"\x2464" L"\0" L"\x2465" L"\0" L"\x2466" L"\0" L"\x2467" L"\0" -+ L"\x2468" L"\0" L"\x2469" L"\0" L"\x246a" L"\0" L"\x246b" L"\0" L"\x246c" -+ L"\0" L"\x246d" L"\0" L"\x246e" L"\0" L"\x246f" L"\0" L"\x2470" L"\0" -+ L"\x2471" L"\0" L"\x2472" L"\0" L"\x2473" L"\0" L"\x2474" L"\0" L"\x2475" -+ L"\0" L"\x2476" L"\0" L"\x2477" L"\0" L"\x2478" L"\0" L"\x2479" L"\0" -+ L"\x247a" L"\0" L"\x247b" L"\0" L"\x247c" L"\0" L"\x247d" L"\0" L"\x247e" -+ L"\0" L"\x247f" L"\0" L"\x2480" L"\0" L"\x2481" L"\0" L"\x2482" L"\0" -+ L"\x2483" L"\0" L"\x2484" L"\0" L"\x2485" L"\0" L"\x2486" L"\0" L"\x2487" -+ L"\0" L"\x2488" L"\0" L"\x2489" L"\0" L"\x248a" L"\0" L"\x248b" L"\0" -+ L"\x248c" L"\0" L"\x248d" L"\0" L"\x248e" L"\0" L"\x248f" L"\0" L"\x2490" -+ L"\0" L"\x2491" L"\0" L"\x2492" L"\0" L"\x2493" L"\0" L"\x2494" L"\0" -+ L"\x2495" L"\0" L"\x2496" L"\0" L"\x2497" L"\0" L"\x2498" L"\0" L"\x2499" -+ L"\0" L"\x249a" L"\0" L"\x249b" L"\0" L"\x249c" L"\0" L"\x249d" L"\0" -+ L"\x249e" L"\0" L"\x249f" L"\0" L"\x24a0" L"\0" L"\x24a1" L"\0" L"\x24a2" -+ L"\0" L"\x24a3" L"\0" L"\x24a4" L"\0" L"\x24a5" L"\0" L"\x24a6" L"\0" -+ L"\x24a7" L"\0" L"\x24a8" L"\0" L"\x24a9" L"\0" L"\x24aa" L"\0" L"\x24ab" -+ L"\0" L"\x24ac" L"\0" L"\x24ad" L"\0" L"\x24ae" L"\0" L"\x24af" L"\0" -+ L"\x24b0" L"\0" L"\x24b1" L"\0" L"\x24b2" L"\0" L"\x24b3" L"\0" L"\x24b4" -+ L"\0" L"\x24b5" L"\0" L"\x24b6" L"\0" L"\x24b7" L"\0" L"\x24b8" L"\0" -+ L"\x24b9" L"\0" L"\x24ba" L"\0" L"\x24bb" L"\0" L"\x24bc" L"\0" L"\x24bd" -+ L"\0" L"\x24be" L"\0" L"\x24bf" L"\0" L"\x24c0" L"\0" L"\x24c1" L"\0" -+ L"\x24c2" L"\0" L"\x24c3" L"\0" L"\x24c4" L"\0" L"\x24c5" L"\0" L"\x24c6" -+ L"\0" L"\x24c7" L"\0" L"\x24c8" L"\0" L"\x24c9" L"\0" L"\x24ca" L"\0" -+ L"\x24cb" L"\0" L"\x24cc" L"\0" L"\x24cd" L"\0" L"\x24ce" L"\0" L"\x24cf" -+ L"\0" L"\x24d0" L"\0" L"\x24d1" L"\0" L"\x24d2" L"\0" L"\x24d3" L"\0" -+ L"\x24d4" L"\0" L"\x24d5" L"\0" L"\x24d6" L"\0" L"\x24d7" L"\0" L"\x24d8" -+ L"\0" L"\x24d9" L"\0" L"\x24da" L"\0" L"\x24db" L"\0" L"\x24dc" L"\0" -+ L"\x24dd" L"\0" L"\x24de" L"\0" L"\x24df" L"\0" L"\x24e0" L"\0" L"\x24e1" -+ L"\0" L"\x24e2" L"\0" L"\x24e3" L"\0" L"\x24e4" L"\0" L"\x24e5" L"\0" -+ L"\x24e6" L"\0" L"\x24e7" L"\0" L"\x24e8" L"\0" L"\x24e9" L"\0" L"\x24ea" -+ L"\0" L"\x2500" L"\0" L"\x2502" L"\0" L"\x250c" L"\0" L"\x2510" L"\0" -+ L"\x2514" L"\0" L"\x2518" L"\0" L"\x251c" L"\0" L"\x2524" L"\0" L"\x252c" -+ L"\0" L"\x2534" L"\0" L"\x253c" L"\0" L"\x25e6" L"\0" L"\x2a74" L"\0" -+ L"\x2a75" L"\0" L"\x2a76" L"\0" L"\x3000" L"\0" L"\x30a0" L"\0" L"\x3251" -+ L"\0" L"\x3252" L"\0" L"\x3253" L"\0" L"\x3254" L"\0" L"\x3255" L"\0" -+ L"\x3256" L"\0" L"\x3257" L"\0" L"\x3258" L"\0" L"\x3259" L"\0" L"\x325a" -+ L"\0" L"\x325b" L"\0" L"\x325c" L"\0" L"\x325d" L"\0" L"\x325e" L"\0" -+ L"\x325f" L"\0" L"\x32b1" L"\0" L"\x32b2" L"\0" L"\x32b3" L"\0" L"\x32b4" -+ L"\0" L"\x32b5" L"\0" L"\x32b6" L"\0" L"\x32b7" L"\0" L"\x32b8" L"\0" -+ L"\x32b9" L"\0" L"\x32ba" L"\0" L"\x32bb" L"\0" L"\x32bc" L"\0" L"\x32bd" -+ L"\0" L"\x32be" L"\0" L"\x32bf" L"\0" L"\x3371" L"\0" L"\x3372" L"\0" -+ L"\x3373" L"\0" L"\x3374" L"\0" L"\x3375" L"\0" L"\x3376" L"\0" L"\x3380" -+ L"\0" L"\x3381" L"\0" L"\x3382" L"\0" L"\x3383" L"\0" L"\x3384" L"\0" -+ L"\x3385" L"\0" L"\x3386" L"\0" L"\x3387" L"\0" L"\x3388" L"\0" L"\x3389" -+ L"\0" L"\x338a" L"\0" L"\x338b" L"\0" L"\x338c" L"\0" L"\x338d" L"\0" -+ L"\x338e" L"\0" L"\x338f" L"\0" L"\x3390" L"\0" L"\x3391" L"\0" L"\x3392" -+ L"\0" L"\x3393" L"\0" L"\x3394" L"\0" L"\x3395" L"\0" L"\x3396" L"\0" -+ L"\x3397" L"\0" L"\x3398" L"\0" L"\x3399" L"\0" L"\x339a" L"\0" L"\x339b" -+ L"\0" L"\x339c" L"\0" L"\x339d" L"\0" L"\x339e" L"\0" L"\x339f" L"\0" -+ L"\x33a0" L"\0" L"\x33a1" L"\0" L"\x33a2" L"\0" L"\x33a3" L"\0" L"\x33a4" -+ L"\0" L"\x33a5" L"\0" L"\x33a6" L"\0" L"\x33a7" L"\0" L"\x33a8" L"\0" -+ L"\x33a9" L"\0" L"\x33aa" L"\0" L"\x33ab" L"\0" L"\x33ac" L"\0" L"\x33ad" -+ L"\0" L"\x33ae" L"\0" L"\x33af" L"\0" L"\x33b0" L"\0" L"\x33b1" L"\0" -+ L"\x33b2" L"\0" L"\x33b3" L"\0" L"\x33b4" L"\0" L"\x33b5" L"\0" L"\x33b6" -+ L"\0" L"\x33b7" L"\0" L"\x33b8" L"\0" L"\x33b9" L"\0" L"\x33ba" L"\0" -+ L"\x33bb" L"\0" L"\x33bc" L"\0" L"\x33bd" L"\0" L"\x33be" L"\0" L"\x33bf" -+ L"\0" L"\x33c2" L"\0" L"\x33c3" L"\0" L"\x33c4" L"\0" L"\x33c5" L"\0" -+ L"\x33c6" L"\0" L"\x33c7" L"\0" L"\x33c8" L"\0" L"\x33c9" L"\0" L"\x33ca" -+ L"\0" L"\x33cb" L"\0" L"\x33cc" L"\0" L"\x33cd" L"\0" L"\x33ce" L"\0" -+ L"\x33cf" L"\0" L"\x33d0" L"\0" L"\x33d1" L"\0" L"\x33d2" L"\0" L"\x33d3" -+ L"\0" L"\x33d4" L"\0" L"\x33d5" L"\0" L"\x33d6" L"\0" L"\x33d7" L"\0" -+ L"\x33d8" L"\0" L"\x33d9" L"\0" L"\x33da" L"\0" L"\x33db" L"\0" L"\x33dc" -+ L"\0" L"\x33dd" L"\0" L"\xfb00" L"\0" L"\xfb01" L"\0" L"\xfb02" L"\0" -+ L"\xfb03" L"\0" L"\xfb04" L"\0" L"\xfb06" L"\0" L"\xfb29" L"\0" L"\xfe00" -+ L"\0" L"\xfe01" L"\0" L"\xfe02" L"\0" L"\xfe03" L"\0" L"\xfe04" L"\0" -+ L"\xfe05" L"\0" L"\xfe06" L"\0" L"\xfe07" L"\0" L"\xfe08" L"\0" L"\xfe09" -+ L"\0" L"\xfe0a" L"\0" L"\xfe0b" L"\0" L"\xfe0c" L"\0" L"\xfe0d" L"\0" -+ L"\xfe0e" L"\0" L"\xfe0f" L"\0" L"\xfe4d" L"\0" L"\xfe4e" L"\0" L"\xfe4f" -+ L"\0" L"\xfe50" L"\0" L"\xfe52" L"\0" L"\xfe54" L"\0" L"\xfe55" L"\0" -+ L"\xfe56" L"\0" L"\xfe57" L"\0" L"\xfe59" L"\0" L"\xfe5a" L"\0" L"\xfe5b" -+ L"\0" L"\xfe5c" L"\0" L"\xfe5f" L"\0" L"\xfe60" L"\0" L"\xfe61" L"\0" -+ L"\xfe62" L"\0" L"\xfe63" L"\0" L"\xfe64" L"\0" L"\xfe65" L"\0" L"\xfe66" -+ L"\0" L"\xfe68" L"\0" L"\xfe69" L"\0" L"\xfe6a" L"\0" L"\xfe6b" L"\0" -+ L"\xfeff" L"\0" L"\xff01" L"\0" L"\xff02" L"\0" L"\xff03" L"\0" L"\xff04" -+ L"\0" L"\xff05" L"\0" L"\xff06" L"\0" L"\xff07" L"\0" L"\xff08" L"\0" -+ L"\xff09" L"\0" L"\xff0a" L"\0" L"\xff0b" L"\0" L"\xff0c" L"\0" L"\xff0d" -+ L"\0" L"\xff0e" L"\0" L"\xff0f" L"\0" L"\xff10" L"\0" L"\xff11" L"\0" -+ L"\xff12" L"\0" L"\xff13" L"\0" L"\xff14" L"\0" L"\xff15" L"\0" L"\xff16" -+ L"\0" L"\xff17" L"\0" L"\xff18" L"\0" L"\xff19" L"\0" L"\xff1a" L"\0" -+ L"\xff1b" L"\0" L"\xff1c" L"\0" L"\xff1d" L"\0" L"\xff1e" L"\0" L"\xff1f" -+ L"\0" L"\xff20" L"\0" L"\xff21" L"\0" L"\xff22" L"\0" L"\xff23" L"\0" -+ L"\xff24" L"\0" L"\xff25" L"\0" L"\xff26" L"\0" L"\xff27" L"\0" L"\xff28" -+ L"\0" L"\xff29" L"\0" L"\xff2a" L"\0" L"\xff2b" L"\0" L"\xff2c" L"\0" -+ L"\xff2d" L"\0" L"\xff2e" L"\0" L"\xff2f" L"\0" L"\xff30" L"\0" L"\xff31" -+ L"\0" L"\xff32" L"\0" L"\xff33" L"\0" L"\xff34" L"\0" L"\xff35" L"\0" -+ L"\xff36" L"\0" L"\xff37" L"\0" L"\xff38" L"\0" L"\xff39" L"\0" L"\xff3a" -+ L"\0" L"\xff3b" L"\0" L"\xff3c" L"\0" L"\xff3d" L"\0" L"\xff3e" L"\0" -+ L"\xff3f" L"\0" L"\xff40" L"\0" L"\xff41" L"\0" L"\xff42" L"\0" L"\xff43" -+ L"\0" L"\xff44" L"\0" L"\xff45" L"\0" L"\xff46" L"\0" L"\xff47" L"\0" -+ L"\xff48" L"\0" L"\xff49" L"\0" L"\xff4a" L"\0" L"\xff4b" L"\0" L"\xff4c" -+ L"\0" L"\xff4d" L"\0" L"\xff4e" L"\0" L"\xff4f" L"\0" L"\xff50" L"\0" -+ L"\xff51" L"\0" L"\xff52" L"\0" L"\xff53" L"\0" L"\xff54" L"\0" L"\xff55" -+ L"\0" L"\xff56" L"\0" L"\xff57" L"\0" L"\xff58" L"\0" L"\xff59" L"\0" -+ L"\xff5a" L"\0" L"\xff5b" L"\0" L"\xff5c" L"\0" L"\xff5d" L"\0" L"\xff5e" -+ L"\0" L"\x0001d400" L"\0" L"\x0001d401" L"\0" L"\x0001d402" L"\0" -+ L"\x0001d403" L"\0" L"\x0001d404" L"\0" L"\x0001d405" L"\0" L"\x0001d406" -+ L"\0" L"\x0001d407" L"\0" L"\x0001d408" L"\0" L"\x0001d409" L"\0" -+ L"\x0001d40a" L"\0" L"\x0001d40b" L"\0" L"\x0001d40c" L"\0" L"\x0001d40d" -+ L"\0" L"\x0001d40e" L"\0" L"\x0001d40f" L"\0" L"\x0001d410" L"\0" -+ L"\x0001d411" L"\0" L"\x0001d412" L"\0" L"\x0001d413" L"\0" L"\x0001d414" -+ L"\0" L"\x0001d415" L"\0" L"\x0001d416" L"\0" L"\x0001d417" L"\0" -+ L"\x0001d418" L"\0" L"\x0001d419" L"\0" L"\x0001d41a" L"\0" L"\x0001d41b" -+ L"\0" L"\x0001d41c" L"\0" L"\x0001d41d" L"\0" L"\x0001d41e" L"\0" -+ L"\x0001d41f" L"\0" L"\x0001d420" L"\0" L"\x0001d421" L"\0" L"\x0001d422" -+ L"\0" L"\x0001d423" L"\0" L"\x0001d424" L"\0" L"\x0001d425" L"\0" -+ L"\x0001d426" L"\0" L"\x0001d427" L"\0" L"\x0001d428" L"\0" L"\x0001d429" -+ L"\0" L"\x0001d42a" L"\0" L"\x0001d42b" L"\0" L"\x0001d42c" L"\0" -+ L"\x0001d42d" L"\0" L"\x0001d42e" L"\0" L"\x0001d42f" L"\0" L"\x0001d430" -+ L"\0" L"\x0001d431" L"\0" L"\x0001d432" L"\0" L"\x0001d433" L"\0" -+ L"\x0001d434" L"\0" L"\x0001d435" L"\0" L"\x0001d436" L"\0" L"\x0001d437" -+ L"\0" L"\x0001d438" L"\0" L"\x0001d439" L"\0" L"\x0001d43a" L"\0" -+ L"\x0001d43b" L"\0" L"\x0001d43c" L"\0" L"\x0001d43d" L"\0" L"\x0001d43e" -+ L"\0" L"\x0001d43f" L"\0" L"\x0001d440" L"\0" L"\x0001d441" L"\0" -+ L"\x0001d442" L"\0" L"\x0001d443" L"\0" L"\x0001d444" L"\0" L"\x0001d445" -+ L"\0" L"\x0001d446" L"\0" L"\x0001d447" L"\0" L"\x0001d448" L"\0" -+ L"\x0001d449" L"\0" L"\x0001d44a" L"\0" L"\x0001d44b" L"\0" L"\x0001d44c" -+ L"\0" L"\x0001d44d" L"\0" L"\x0001d44e" L"\0" L"\x0001d44f" L"\0" -+ L"\x0001d450" L"\0" L"\x0001d451" L"\0" L"\x0001d452" L"\0" L"\x0001d453" -+ L"\0" L"\x0001d454" L"\0" L"\x0001d456" L"\0" L"\x0001d457" L"\0" -+ L"\x0001d458" L"\0" L"\x0001d459" L"\0" L"\x0001d45a" L"\0" L"\x0001d45b" -+ L"\0" L"\x0001d45c" L"\0" L"\x0001d45d" L"\0" L"\x0001d45e" L"\0" -+ L"\x0001d45f" L"\0" L"\x0001d460" L"\0" L"\x0001d461" L"\0" L"\x0001d462" -+ L"\0" L"\x0001d463" L"\0" L"\x0001d464" L"\0" L"\x0001d465" L"\0" -+ L"\x0001d466" L"\0" L"\x0001d467" L"\0" L"\x0001d468" L"\0" L"\x0001d469" -+ L"\0" L"\x0001d46a" L"\0" L"\x0001d46b" L"\0" L"\x0001d46c" L"\0" -+ L"\x0001d46d" L"\0" L"\x0001d46e" L"\0" L"\x0001d46f" L"\0" L"\x0001d470" -+ L"\0" L"\x0001d471" L"\0" L"\x0001d472" L"\0" L"\x0001d473" L"\0" -+ L"\x0001d474" L"\0" L"\x0001d475" L"\0" L"\x0001d476" L"\0" L"\x0001d477" -+ L"\0" L"\x0001d478" L"\0" L"\x0001d479" L"\0" L"\x0001d47a" L"\0" -+ L"\x0001d47b" L"\0" L"\x0001d47c" L"\0" L"\x0001d47d" L"\0" L"\x0001d47e" -+ L"\0" L"\x0001d47f" L"\0" L"\x0001d480" L"\0" L"\x0001d481" L"\0" -+ L"\x0001d482" L"\0" L"\x0001d483" L"\0" L"\x0001d484" L"\0" L"\x0001d485" -+ L"\0" L"\x0001d486" L"\0" L"\x0001d487" L"\0" L"\x0001d488" L"\0" -+ L"\x0001d489" L"\0" L"\x0001d48a" L"\0" L"\x0001d48b" L"\0" L"\x0001d48c" -+ L"\0" L"\x0001d48d" L"\0" L"\x0001d48e" L"\0" L"\x0001d48f" L"\0" -+ L"\x0001d490" L"\0" L"\x0001d491" L"\0" L"\x0001d492" L"\0" L"\x0001d493" -+ L"\0" L"\x0001d494" L"\0" L"\x0001d495" L"\0" L"\x0001d496" L"\0" -+ L"\x0001d497" L"\0" L"\x0001d498" L"\0" L"\x0001d499" L"\0" L"\x0001d49a" -+ L"\0" L"\x0001d49b" L"\0" L"\x0001d49c" L"\0" L"\x0001d49e" L"\0" -+ L"\x0001d49f" L"\0" L"\x0001d4a2" L"\0" L"\x0001d4a5" L"\0" L"\x0001d4a6" -+ L"\0" L"\x0001d4a9" L"\0" L"\x0001d4aa" L"\0" L"\x0001d4ab" L"\0" -+ L"\x0001d4ac" L"\0" L"\x0001d4ae" L"\0" L"\x0001d4af" L"\0" L"\x0001d4b0" -+ L"\0" L"\x0001d4b1" L"\0" L"\x0001d4b2" L"\0" L"\x0001d4b3" L"\0" -+ L"\x0001d4b4" L"\0" L"\x0001d4b5" L"\0" L"\x0001d4b6" L"\0" L"\x0001d4b7" -+ L"\0" L"\x0001d4b8" L"\0" L"\x0001d4b9" L"\0" L"\x0001d4bb" L"\0" -+ L"\x0001d4bd" L"\0" L"\x0001d4be" L"\0" L"\x0001d4bf" L"\0" L"\x0001d4c0" -+ L"\0" L"\x0001d4c2" L"\0" L"\x0001d4c3" L"\0" L"\x0001d4c5" L"\0" -+ L"\x0001d4c6" L"\0" L"\x0001d4c7" L"\0" L"\x0001d4c8" L"\0" L"\x0001d4c9" -+ L"\0" L"\x0001d4ca" L"\0" L"\x0001d4cb" L"\0" L"\x0001d4cc" L"\0" -+ L"\x0001d4cd" L"\0" L"\x0001d4ce" L"\0" L"\x0001d4cf" L"\0" L"\x0001d4d0" -+ L"\0" L"\x0001d4d1" L"\0" L"\x0001d4d2" L"\0" L"\x0001d4d3" L"\0" -+ L"\x0001d4d4" L"\0" L"\x0001d4d5" L"\0" L"\x0001d4d6" L"\0" L"\x0001d4d7" -+ L"\0" L"\x0001d4d8" L"\0" L"\x0001d4d9" L"\0" L"\x0001d4da" L"\0" -+ L"\x0001d4db" L"\0" L"\x0001d4dc" L"\0" L"\x0001d4dd" L"\0" L"\x0001d4de" -+ L"\0" L"\x0001d4df" L"\0" L"\x0001d4e0" L"\0" L"\x0001d4e1" L"\0" -+ L"\x0001d4e2" L"\0" L"\x0001d4e3" L"\0" L"\x0001d4e4" L"\0" L"\x0001d4e5" -+ L"\0" L"\x0001d4e6" L"\0" L"\x0001d4e7" L"\0" L"\x0001d4e8" L"\0" -+ L"\x0001d4e9" L"\0" L"\x0001d4ea" L"\0" L"\x0001d4eb" L"\0" L"\x0001d4ec" -+ L"\0" L"\x0001d4ed" L"\0" L"\x0001d4ee" L"\0" L"\x0001d4ef" L"\0" -+ L"\x0001d4f0" L"\0" L"\x0001d4f1" L"\0" L"\x0001d4f2" L"\0" L"\x0001d4f3" -+ L"\0" L"\x0001d4f4" L"\0" L"\x0001d4f5" L"\0" L"\x0001d4f6" L"\0" -+ L"\x0001d4f7" L"\0" L"\x0001d4f8" L"\0" L"\x0001d4f9" L"\0" L"\x0001d4fa" -+ L"\0" L"\x0001d4fb" L"\0" L"\x0001d4fc" L"\0" L"\x0001d4fd" L"\0" -+ L"\x0001d4fe" L"\0" L"\x0001d4ff" L"\0" L"\x0001d500" L"\0" L"\x0001d501" -+ L"\0" L"\x0001d502" L"\0" L"\x0001d503" L"\0" L"\x0001d504" L"\0" -+ L"\x0001d505" L"\0" L"\x0001d507" L"\0" L"\x0001d508" L"\0" L"\x0001d509" -+ L"\0" L"\x0001d50a" L"\0" L"\x0001d50d" L"\0" L"\x0001d50e" L"\0" -+ L"\x0001d50f" L"\0" L"\x0001d510" L"\0" L"\x0001d511" L"\0" L"\x0001d512" -+ L"\0" L"\x0001d513" L"\0" L"\x0001d514" L"\0" L"\x0001d516" L"\0" -+ L"\x0001d517" L"\0" L"\x0001d518" L"\0" L"\x0001d519" L"\0" L"\x0001d51a" -+ L"\0" L"\x0001d51b" L"\0" L"\x0001d51c" L"\0" L"\x0001d51e" L"\0" -+ L"\x0001d51f" L"\0" L"\x0001d520" L"\0" L"\x0001d521" L"\0" L"\x0001d522" -+ L"\0" L"\x0001d523" L"\0" L"\x0001d524" L"\0" L"\x0001d525" L"\0" -+ L"\x0001d526" L"\0" L"\x0001d527" L"\0" L"\x0001d528" L"\0" L"\x0001d529" -+ L"\0" L"\x0001d52a" L"\0" L"\x0001d52b" L"\0" L"\x0001d52c" L"\0" -+ L"\x0001d52d" L"\0" L"\x0001d52e" L"\0" L"\x0001d52f" L"\0" L"\x0001d530" -+ L"\0" L"\x0001d531" L"\0" L"\x0001d532" L"\0" L"\x0001d533" L"\0" -+ L"\x0001d534" L"\0" L"\x0001d535" L"\0" L"\x0001d536" L"\0" L"\x0001d537" -+ L"\0" L"\x0001d538" L"\0" L"\x0001d539" L"\0" L"\x0001d53b" L"\0" -+ L"\x0001d53c" L"\0" L"\x0001d53d" L"\0" L"\x0001d53e" L"\0" L"\x0001d540" -+ L"\0" L"\x0001d541" L"\0" L"\x0001d542" L"\0" L"\x0001d543" L"\0" -+ L"\x0001d544" L"\0" L"\x0001d546" L"\0" L"\x0001d54a" L"\0" L"\x0001d54b" -+ L"\0" L"\x0001d54c" L"\0" L"\x0001d54d" L"\0" L"\x0001d54e" L"\0" -+ L"\x0001d54f" L"\0" L"\x0001d550" L"\0" L"\x0001d552" L"\0" L"\x0001d553" -+ L"\0" L"\x0001d554" L"\0" L"\x0001d555" L"\0" L"\x0001d556" L"\0" -+ L"\x0001d557" L"\0" L"\x0001d558" L"\0" L"\x0001d559" L"\0" L"\x0001d55a" -+ L"\0" L"\x0001d55b" L"\0" L"\x0001d55c" L"\0" L"\x0001d55d" L"\0" -+ L"\x0001d55e" L"\0" L"\x0001d55f" L"\0" L"\x0001d560" L"\0" L"\x0001d561" -+ L"\0" L"\x0001d562" L"\0" L"\x0001d563" L"\0" L"\x0001d564" L"\0" -+ L"\x0001d565" L"\0" L"\x0001d566" L"\0" L"\x0001d567" L"\0" L"\x0001d568" -+ L"\0" L"\x0001d569" L"\0" L"\x0001d56a" L"\0" L"\x0001d56b" L"\0" -+ L"\x0001d56c" L"\0" L"\x0001d56d" L"\0" L"\x0001d56e" L"\0" L"\x0001d56f" -+ L"\0" L"\x0001d570" L"\0" L"\x0001d571" L"\0" L"\x0001d572" L"\0" -+ L"\x0001d573" L"\0" L"\x0001d574" L"\0" L"\x0001d575" L"\0" L"\x0001d576" -+ L"\0" L"\x0001d577" L"\0" L"\x0001d578" L"\0" L"\x0001d579" L"\0" -+ L"\x0001d57a" L"\0" L"\x0001d57b" L"\0" L"\x0001d57c" L"\0" L"\x0001d57d" -+ L"\0" L"\x0001d57e" L"\0" L"\x0001d57f" L"\0" L"\x0001d580" L"\0" -+ L"\x0001d581" L"\0" L"\x0001d582" L"\0" L"\x0001d583" L"\0" L"\x0001d584" -+ L"\0" L"\x0001d585" L"\0" L"\x0001d586" L"\0" L"\x0001d587" L"\0" -+ L"\x0001d588" L"\0" L"\x0001d589" L"\0" L"\x0001d58a" L"\0" L"\x0001d58b" -+ L"\0" L"\x0001d58c" L"\0" L"\x0001d58d" L"\0" L"\x0001d58e" L"\0" -+ L"\x0001d58f" L"\0" L"\x0001d590" L"\0" L"\x0001d591" L"\0" L"\x0001d592" -+ L"\0" L"\x0001d593" L"\0" L"\x0001d594" L"\0" L"\x0001d595" L"\0" -+ L"\x0001d596" L"\0" L"\x0001d597" L"\0" L"\x0001d598" L"\0" L"\x0001d599" -+ L"\0" L"\x0001d59a" L"\0" L"\x0001d59b" L"\0" L"\x0001d59c" L"\0" -+ L"\x0001d59d" L"\0" L"\x0001d59e" L"\0" L"\x0001d59f" L"\0" L"\x0001d5a0" -+ L"\0" L"\x0001d5a1" L"\0" L"\x0001d5a2" L"\0" L"\x0001d5a3" L"\0" -+ L"\x0001d5a4" L"\0" L"\x0001d5a5" L"\0" L"\x0001d5a6" L"\0" L"\x0001d5a7" -+ L"\0" L"\x0001d5a8" L"\0" L"\x0001d5a9" L"\0" L"\x0001d5aa" L"\0" -+ L"\x0001d5ab" L"\0" L"\x0001d5ac" L"\0" L"\x0001d5ad" L"\0" L"\x0001d5ae" -+ L"\0" L"\x0001d5af" L"\0" L"\x0001d5b0" L"\0" L"\x0001d5b1" L"\0" -+ L"\x0001d5b2" L"\0" L"\x0001d5b3" L"\0" L"\x0001d5b4" L"\0" L"\x0001d5b5" -+ L"\0" L"\x0001d5b6" L"\0" L"\x0001d5b7" L"\0" L"\x0001d5b8" L"\0" -+ L"\x0001d5b9" L"\0" L"\x0001d5ba" L"\0" L"\x0001d5bb" L"\0" L"\x0001d5bc" -+ L"\0" L"\x0001d5bd" L"\0" L"\x0001d5be" L"\0" L"\x0001d5bf" L"\0" -+ L"\x0001d5c0" L"\0" L"\x0001d5c1" L"\0" L"\x0001d5c2" L"\0" L"\x0001d5c3" -+ L"\0" L"\x0001d5c4" L"\0" L"\x0001d5c5" L"\0" L"\x0001d5c6" L"\0" -+ L"\x0001d5c7" L"\0" L"\x0001d5c8" L"\0" L"\x0001d5c9" L"\0" L"\x0001d5ca" -+ L"\0" L"\x0001d5cb" L"\0" L"\x0001d5cc" L"\0" L"\x0001d5cd" L"\0" -+ L"\x0001d5ce" L"\0" L"\x0001d5cf" L"\0" L"\x0001d5d0" L"\0" L"\x0001d5d1" -+ L"\0" L"\x0001d5d2" L"\0" L"\x0001d5d3" L"\0" L"\x0001d5d4" L"\0" -+ L"\x0001d5d5" L"\0" L"\x0001d5d6" L"\0" L"\x0001d5d7" L"\0" L"\x0001d5d8" -+ L"\0" L"\x0001d5d9" L"\0" L"\x0001d5da" L"\0" L"\x0001d5db" L"\0" -+ L"\x0001d5dc" L"\0" L"\x0001d5dd" L"\0" L"\x0001d5de" L"\0" L"\x0001d5df" -+ L"\0" L"\x0001d5e0" L"\0" L"\x0001d5e1" L"\0" L"\x0001d5e2" L"\0" -+ L"\x0001d5e3" L"\0" L"\x0001d5e4" L"\0" L"\x0001d5e5" L"\0" L"\x0001d5e6" -+ L"\0" L"\x0001d5e7" L"\0" L"\x0001d5e8" L"\0" L"\x0001d5e9" L"\0" -+ L"\x0001d5ea" L"\0" L"\x0001d5eb" L"\0" L"\x0001d5ec" L"\0" L"\x0001d5ed" -+ L"\0" L"\x0001d5ee" L"\0" L"\x0001d5ef" L"\0" L"\x0001d5f0" L"\0" -+ L"\x0001d5f1" L"\0" L"\x0001d5f2" L"\0" L"\x0001d5f3" L"\0" L"\x0001d5f4" -+ L"\0" L"\x0001d5f5" L"\0" L"\x0001d5f6" L"\0" L"\x0001d5f7" L"\0" -+ L"\x0001d5f8" L"\0" L"\x0001d5f9" L"\0" L"\x0001d5fa" L"\0" L"\x0001d5fb" -+ L"\0" L"\x0001d5fc" L"\0" L"\x0001d5fd" L"\0" L"\x0001d5fe" L"\0" -+ L"\x0001d5ff" L"\0" L"\x0001d600" L"\0" L"\x0001d601" L"\0" L"\x0001d602" -+ L"\0" L"\x0001d603" L"\0" L"\x0001d604" L"\0" L"\x0001d605" L"\0" -+ L"\x0001d606" L"\0" L"\x0001d607" L"\0" L"\x0001d608" L"\0" L"\x0001d609" -+ L"\0" L"\x0001d60a" L"\0" L"\x0001d60b" L"\0" L"\x0001d60c" L"\0" -+ L"\x0001d60d" L"\0" L"\x0001d60e" L"\0" L"\x0001d60f" L"\0" L"\x0001d610" -+ L"\0" L"\x0001d611" L"\0" L"\x0001d612" L"\0" L"\x0001d613" L"\0" -+ L"\x0001d614" L"\0" L"\x0001d615" L"\0" L"\x0001d616" L"\0" L"\x0001d617" -+ L"\0" L"\x0001d618" L"\0" L"\x0001d619" L"\0" L"\x0001d61a" L"\0" -+ L"\x0001d61b" L"\0" L"\x0001d61c" L"\0" L"\x0001d61d" L"\0" L"\x0001d61e" -+ L"\0" L"\x0001d61f" L"\0" L"\x0001d620" L"\0" L"\x0001d621" L"\0" -+ L"\x0001d622" L"\0" L"\x0001d623" L"\0" L"\x0001d624" L"\0" L"\x0001d625" -+ L"\0" L"\x0001d626" L"\0" L"\x0001d627" L"\0" L"\x0001d628" L"\0" -+ L"\x0001d629" L"\0" L"\x0001d62a" L"\0" L"\x0001d62b" L"\0" L"\x0001d62c" -+ L"\0" L"\x0001d62d" L"\0" L"\x0001d62e" L"\0" L"\x0001d62f" L"\0" -+ L"\x0001d630" L"\0" L"\x0001d631" L"\0" L"\x0001d632" L"\0" L"\x0001d633" -+ L"\0" L"\x0001d634" L"\0" L"\x0001d635" L"\0" L"\x0001d636" L"\0" -+ L"\x0001d637" L"\0" L"\x0001d638" L"\0" L"\x0001d639" L"\0" L"\x0001d63a" -+ L"\0" L"\x0001d63b" L"\0" L"\x0001d63c" L"\0" L"\x0001d63d" L"\0" -+ L"\x0001d63e" L"\0" L"\x0001d63f" L"\0" L"\x0001d640" L"\0" L"\x0001d641" -+ L"\0" L"\x0001d642" L"\0" L"\x0001d643" L"\0" L"\x0001d644" L"\0" -+ L"\x0001d645" L"\0" L"\x0001d646" L"\0" L"\x0001d647" L"\0" L"\x0001d648" -+ L"\0" L"\x0001d649" L"\0" L"\x0001d64a" L"\0" L"\x0001d64b" L"\0" -+ L"\x0001d64c" L"\0" L"\x0001d64d" L"\0" L"\x0001d64e" L"\0" L"\x0001d64f" -+ L"\0" L"\x0001d650" L"\0" L"\x0001d651" L"\0" L"\x0001d652" L"\0" -+ L"\x0001d653" L"\0" L"\x0001d654" L"\0" L"\x0001d655" L"\0" L"\x0001d656" -+ L"\0" L"\x0001d657" L"\0" L"\x0001d658" L"\0" L"\x0001d659" L"\0" -+ L"\x0001d65a" L"\0" L"\x0001d65b" L"\0" L"\x0001d65c" L"\0" L"\x0001d65d" -+ L"\0" L"\x0001d65e" L"\0" L"\x0001d65f" L"\0" L"\x0001d660" L"\0" -+ L"\x0001d661" L"\0" L"\x0001d662" L"\0" L"\x0001d663" L"\0" L"\x0001d664" -+ L"\0" L"\x0001d665" L"\0" L"\x0001d666" L"\0" L"\x0001d667" L"\0" -+ L"\x0001d668" L"\0" L"\x0001d669" L"\0" L"\x0001d66a" L"\0" L"\x0001d66b" -+ L"\0" L"\x0001d66c" L"\0" L"\x0001d66d" L"\0" L"\x0001d66e" L"\0" -+ L"\x0001d66f" L"\0" L"\x0001d670" L"\0" L"\x0001d671" L"\0" L"\x0001d672" -+ L"\0" L"\x0001d673" L"\0" L"\x0001d674" L"\0" L"\x0001d675" L"\0" -+ L"\x0001d676" L"\0" L"\x0001d677" L"\0" L"\x0001d678" L"\0" L"\x0001d679" -+ L"\0" L"\x0001d67a" L"\0" L"\x0001d67b" L"\0" L"\x0001d67c" L"\0" -+ L"\x0001d67d" L"\0" L"\x0001d67e" L"\0" L"\x0001d67f" L"\0" L"\x0001d680" -+ L"\0" L"\x0001d681" L"\0" L"\x0001d682" L"\0" L"\x0001d683" L"\0" -+ L"\x0001d684" L"\0" L"\x0001d685" L"\0" L"\x0001d686" L"\0" L"\x0001d687" -+ L"\0" L"\x0001d688" L"\0" L"\x0001d689" L"\0" L"\x0001d68a" L"\0" -+ L"\x0001d68b" L"\0" L"\x0001d68c" L"\0" L"\x0001d68d" L"\0" L"\x0001d68e" -+ L"\0" L"\x0001d68f" L"\0" L"\x0001d690" L"\0" L"\x0001d691" L"\0" -+ L"\x0001d692" L"\0" L"\x0001d693" L"\0" L"\x0001d694" L"\0" L"\x0001d695" -+ L"\0" L"\x0001d696" L"\0" L"\x0001d697" L"\0" L"\x0001d698" L"\0" -+ L"\x0001d699" L"\0" L"\x0001d69a" L"\0" L"\x0001d69b" L"\0" L"\x0001d69c" -+ L"\0" L"\x0001d69d" L"\0" L"\x0001d69e" L"\0" L"\x0001d69f" L"\0" -+ L"\x0001d6a0" L"\0" L"\x0001d6a1" L"\0" L"\x0001d6a2" L"\0" L"\x0001d6a3" -+ L"\0" L"\x0001d7ce" L"\0" L"\x0001d7cf" L"\0" L"\x0001d7d0" L"\0" -+ L"\x0001d7d1" L"\0" L"\x0001d7d2" L"\0" L"\x0001d7d3" L"\0" L"\x0001d7d4" -+ L"\0" L"\x0001d7d5" L"\0" L"\x0001d7d6" L"\0" L"\x0001d7d7" L"\0" -+ L"\x0001d7d8" L"\0" L"\x0001d7d9" L"\0" L"\x0001d7da" L"\0" L"\x0001d7db" -+ L"\0" L"\x0001d7dc" L"\0" L"\x0001d7dd" L"\0" L"\x0001d7de" L"\0" -+ L"\x0001d7df" L"\0" L"\x0001d7e0" L"\0" L"\x0001d7e1" L"\0" L"\x0001d7e2" -+ L"\0" L"\x0001d7e3" L"\0" L"\x0001d7e4" L"\0" L"\x0001d7e5" L"\0" -+ L"\x0001d7e6" L"\0" L"\x0001d7e7" L"\0" L"\x0001d7e8" L"\0" L"\x0001d7e9" -+ L"\0" L"\x0001d7ea" L"\0" L"\x0001d7eb" L"\0" L"\x0001d7ec" L"\0" -+ L"\x0001d7ed" L"\0" L"\x0001d7ee" L"\0" L"\x0001d7ef" L"\0" L"\x0001d7f0" -+ L"\0" L"\x0001d7f1" L"\0" L"\x0001d7f2" L"\0" L"\x0001d7f3" L"\0" -+ L"\x0001d7f4" L"\0" L"\x0001d7f5" L"\0" L"\x0001d7f6" L"\0" L"\x0001d7f7" -+ L"\0" L"\x0001d7f8" L"\0" L"\x0001d7f9" L"\0" L"\x0001d7fa" L"\0" -+ L"\x0001d7fb" L"\0" L"\x0001d7fc" L"\0" L"\x0001d7fd" L"\0" L"\x0001d7fe" -+ L"\0" L"\x0001d7ff"; - static const uint32_t translit_to_idx[] = - { - 0, 3, 8, 12, 15, 20, 23, 26, 30, 37, 44, 51, -@@ -471,22 +471,22 @@ static const uint32_t translit_to_idx[] - 180, 183, 186, 189, 192, 196, 199, 202, 205, 208, 211, 214, - 217, 221, 224, 227, 230, 233, 237, 242, 245, 248, 252, 257, - 260, 263, 267, 270, 274, 278, 282, 285, 287, 289, 291, 293, -- 297, 302, 307, 312, 315, 320, 325, 328, 331, 334, 337, 340, -- 343, 346, 349, 352, 355, 359, 362, 365, 368, 371, 374, 379, -- 385, 388, 393, 396, 399, 402, 405, 408, 411, 414, 417, 420, -- 423, 426, 429, 432, 435, 438, 445, 452, 459, 466, 473, 480, -- 487, 494, 501, 508, 515, 522, 527, 530, 534, 539, 543, 546, -- 550, 555, 561, 565, 568, 572, 577, 580, 583, 586, 589, 592, -- 596, 601, 605, 608, 612, 617, 623, 627, 630, 634, 639, 642, -- 645, 648, 651, 655, 659, 664, 668, 672, 677, 680, 683, 686, -- 689, 692, 695, 698, 702, 706, 710, 714, 719, 724, 729, 734, -- 739, 744, 749, 754, 759, 764, 768, 772, 776, 780, 784, 788, -- 792, 796, 801, 806, 811, 816, 821, 826, 831, 836, 841, 845, -- 850, 855, 859, 863, 867, 871, 875, 880, 883, 887, 892, 897, -- 902, 907, 912, 917, 922, 927, 932, 938, 944, 950, 956, 962, -- 968, 974, 980, 986, 992, 998, 1003, 1008, 1013, 1018, 1023, 1028, -- 1033, 1038, 1043, 1049, 1055, 1061, 1067, 1073, 1079, 1085, 1091, 1097, -- 1103, 1109, 1113, 1117, 1121, 1125, 1129, 1133, 1137, 1141, 1145, 1150, -+ 297, 302, 307, 312, 317, 320, 325, 330, 333, 336, 339, 342, -+ 345, 348, 351, 354, 357, 360, 364, 367, 370, 373, 376, 379, -+ 384, 390, 393, 398, 401, 404, 407, 410, 413, 416, 419, 422, -+ 425, 428, 431, 434, 437, 440, 443, 450, 457, 464, 471, 478, -+ 485, 492, 499, 506, 513, 520, 527, 532, 535, 539, 544, 548, -+ 551, 555, 560, 566, 570, 573, 577, 582, 585, 588, 591, 594, -+ 597, 601, 606, 610, 613, 617, 622, 628, 632, 635, 639, 644, -+ 647, 650, 653, 656, 660, 664, 669, 673, 677, 682, 685, 688, -+ 691, 694, 697, 700, 703, 707, 711, 715, 719, 724, 729, 734, -+ 739, 744, 749, 754, 759, 764, 769, 773, 777, 781, 785, 789, -+ 793, 797, 801, 806, 811, 816, 821, 826, 831, 836, 841, 846, -+ 850, 855, 860, 864, 868, 872, 876, 880, 885, 888, 892, 897, -+ 902, 907, 912, 917, 922, 927, 932, 937, 943, 949, 955, 961, -+ 967, 973, 979, 985, 991, 997, 1003, 1008, 1013, 1018, 1023, 1028, -+ 1033, 1038, 1043, 1048, 1054, 1060, 1066, 1072, 1078, 1084, 1090, 1096, -+ 1102, 1108, 1114, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146, 1150, - 1155, 1160, 1165, 1170, 1175, 1180, 1185, 1190, 1195, 1200, 1205, 1210, - 1215, 1220, 1225, 1230, 1235, 1240, 1245, 1250, 1255, 1260, 1265, 1270, - 1275, 1280, 1285, 1290, 1295, 1300, 1305, 1310, 1315, 1320, 1325, 1330, -@@ -494,89 +494,89 @@ static const uint32_t translit_to_idx[] - 1395, 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445, 1450, - 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500, 1505, 1510, - 1515, 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, -- 1575, 1580, 1585, 1590, 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616, -- 1619, 1622, 1625, 1628, 1631, 1636, 1640, 1645, 1648, 1651, 1657, 1663, -- 1669, 1675, 1681, 1687, 1693, 1699, 1705, 1711, 1717, 1723, 1729, 1735, -- 1741, 1747, 1753, 1759, 1765, 1771, 1777, 1783, 1789, 1795, 1801, 1807, -- 1813, 1819, 1825, 1831, 1836, 1840, 1844, 1849, 1853, 1857, 1861, 1865, -- 1869, 1873, 1877, 1881, 1885, 1889, 1894, 1900, 1904, 1908, 1912, 1916, -- 1920, 1924, 1928, 1933, 1938, 1943, 1948, 1952, 1956, 1960, 1964, 1968, -- 1972, 1976, 1980, 1984, 1988, 1994, 2000, 2005, 2011, 2017, 2023, 2028, -- 2034, 2039, 2046, 2050, 2055, 2060, 2065, 2070, 2077, 2086, 2090, 2094, -- 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, -- 2146, 2150, 2156, 2160, 2164, 2168, 2174, 2179, 2183, 2187, 2191, 2195, -- 2199, 2203, 2207, 2211, 2215, 2219, 2224, 2228, 2232, 2237, 2242, 2246, -- 2252, 2257, 2261, 2265, 2269, 2273, 2277, 2281, 2285, 2290, 2295, 2299, -- 2302, 2304, 2306, 2308, 2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324, -- 2326, 2328, 2330, 2332, 2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, -- 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382, 2385, 2388, 2391, -- 2394, 2397, 2400, 2403, 2406, 2409, 2411, 2414, 2417, 2420, 2423, 2426, -- 2429, 2432, 2435, 2438, 2441, 2444, 2447, 2450, 2453, 2456, 2459, 2462, -- 2465, 2468, 2471, 2474, 2477, 2480, 2483, 2486, 2489, 2492, 2495, 2498, -- 2501, 2504, 2507, 2510, 2513, 2516, 2519, 2522, 2525, 2528, 2531, 2534, -- 2537, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, -- 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600, 2603, 2606, -- 2609, 2612, 2615, 2618, 2621, 2624, 2627, 2630, 2633, 2636, 2639, 2642, -- 2645, 2648, 2651, 2654, 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, -- 2681, 2684, 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, -- 2717, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, -- 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, -- 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, -- 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, -- 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2888, 2891, 2894, -- 2897, 2900, 2903, 2906, 2909, 2912, 2915, 2918, 2921, 2924, 2927, 2930, -- 2933, 2936, 2939, 2942, 2945, 2948, 2951, 2954, 2957, 2960, 2963, 2966, -- 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2990, 2993, 2996, 2999, 3002, -- 3005, 3008, 3011, 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, -- 3041, 3044, 3047, 3050, 3053, 3056, 3059, 3062, 3065, 3068, 3071, 3074, -- 3077, 3080, 3083, 3086, 3089, 3092, 3095, 3098, 3101, 3104, 3107, 3110, -- 3113, 3116, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, -- 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, -- 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, -- 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3245, 3248, 3251, 3254, -- 3257, 3260, 3263, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287, 3290, -- 3293, 3296, 3299, 3302, 3305, 3308, 3311, 3314, 3317, 3320, 3323, 3326, -- 3329, 3332, 3335, 3338, 3341, 3344, 3347, 3350, 3353, 3356, 3359, 3362, -- 3365, 3368, 3371, 3374, 3377, 3380, 3383, 3386, 3389, 3392, 3395, 3398, -- 3401, 3404, 3407, 3410, 3413, 3416, 3419, 3422, 3425, 3428, 3431, 3434, -- 3437, 3440, 3443, 3446, 3449, 3452, 3455, 3458, 3461, 3464, 3467, 3470, -- 3473, 3476, 3479, 3482, 3485, 3488, 3491, 3494, 3497, 3500, 3503, 3506, -- 3509, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536, 3539, 3542, -- 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566, 3569, 3572, 3575, 3578, -- 3581, 3584, 3587, 3590, 3593, 3596, 3599, 3602, 3605, 3608, 3611, 3614, -- 3617, 3620, 3623, 3626, 3629, 3632, 3635, 3638, 3641, 3644, 3647, 3650, -- 3653, 3656, 3659, 3662, 3665, 3668, 3671, 3674, 3677, 3680, 3683, 3686, -- 3689, 3692, 3695, 3698, 3701, 3704, 3707, 3710, 3713, 3716, 3719, 3722, -- 3725, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, -- 3761, 3764, 3767, 3770, 3773, 3776, 3779, 3782, 3785, 3788, 3791, 3794, -- 3797, 3800, 3803, 3806, 3809, 3812, 3815, 3818, 3821, 3824, 3827, 3830, -- 3833, 3836, 3839, 3842, 3845, 3848, 3851, 3854, 3857, 3860, 3863, 3866, -- 3869, 3872, 3875, 3878, 3881, 3884, 3887, 3890, 3893, 3896, 3899, 3902, -- 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, -- 3941, 3944, 3947, 3950, 3953, 3956, 3959, 3962, 3965, 3968, 3971, 3974, -- 3977, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, -- 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, -- 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, -- 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4106, 4109, 4112, 4115, 4118, -- 4121, 4124, 4127, 4130, 4133, 4136, 4139, 4142, 4145, 4148, 4151, 4154, -- 4157, 4160, 4163, 4166, 4169, 4172, 4175, 4178, 4181, 4184, 4187, 4190, -- 4193, 4196, 4199, 4202, 4205, 4208, 4211, 4214, 4217, 4220, 4223, 4226, -- 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253, 4256, 4259, 4262, -- 4265, 4268, 4271, 4274, 4277, 4280, 4283, 4286, 4289, 4292, 4295, 4298, -- 4301, 4304, 4307, 4310, 4313, 4316, 4319, 4322, 4325, 4328, 4331, 4334, -- 4337, 4340, 4343, 4346, 4349, 4352, 4355, 4358, 4361, 4364, 4367, 4370, -- 4373, 4376, 4379, 4382, 4385, 4388, 4391, 4394, 4397, 4400, 4403, 4406, -- 4409, 4412, 4415, 4418, 4421, 4424, 4427, 4430, 4433, 4436, 4439, 4442, -- 4445, 4448, 4451, 4454, 4457, 4460, 4463, 4466, 4469, 4472, 4475, 4478, -- 4481, 4484, 4487, 4490, 4493, 4496, 4499, 4502, 4505, 4508, 4511, 4514, -- 4517, 4520, 4523, 4526, 4529, 4532, 4535, 4538, 4541, 4544, 4547, 4550, -- 4553, 4556, 4559, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 4583, 4586, -- 4589, 4592, 4595, 4598, 4601, 4604, 4607, 4610, 4613, 4616, 4619, 4622, -- 4625, 4628, 4631, 4634, 4637, 4640, 4643, 4646, 4649, 4652, 4655, 4658, -- 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, -- 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, -- 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, -- 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793 -+ 1575, 1580, 1585, 1590, 1595, 1600, 1603, 1606, 1609, 1612, 1615, 1618, -+ 1621, 1624, 1627, 1630, 1633, 1636, 1641, 1645, 1650, 1653, 1656, 1662, -+ 1668, 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728, 1734, -+ 1740, 1746, 1752, 1758, 1764, 1770, 1776, 1782, 1788, 1794, 1800, 1806, -+ 1812, 1818, 1824, 1830, 1836, 1841, 1845, 1849, 1854, 1858, 1862, 1866, -+ 1870, 1874, 1878, 1882, 1886, 1890, 1894, 1899, 1905, 1909, 1913, 1917, -+ 1921, 1925, 1929, 1933, 1938, 1943, 1948, 1953, 1957, 1961, 1965, 1969, -+ 1973, 1977, 1981, 1985, 1989, 1993, 1999, 2005, 2010, 2016, 2022, 2028, -+ 2033, 2039, 2044, 2051, 2055, 2060, 2065, 2070, 2075, 2082, 2091, 2095, -+ 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, 2135, 2139, 2143, -+ 2147, 2151, 2155, 2161, 2165, 2169, 2173, 2179, 2184, 2188, 2192, 2196, -+ 2200, 2204, 2208, 2212, 2216, 2220, 2224, 2229, 2233, 2237, 2242, 2247, -+ 2251, 2257, 2262, 2266, 2270, 2274, 2278, 2282, 2286, 2290, 2295, 2300, -+ 2304, 2307, 2309, 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, -+ 2329, 2331, 2333, 2335, 2337, 2339, 2342, 2345, 2348, 2351, 2354, 2357, -+ 2360, 2363, 2366, 2369, 2372, 2375, 2378, 2381, 2384, 2387, 2390, 2393, -+ 2396, 2399, 2402, 2405, 2408, 2411, 2414, 2416, 2419, 2422, 2425, 2428, -+ 2431, 2434, 2437, 2440, 2443, 2446, 2449, 2452, 2455, 2458, 2461, 2464, -+ 2467, 2470, 2473, 2476, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, -+ 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, -+ 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, -+ 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, -+ 2611, 2614, 2617, 2620, 2623, 2626, 2629, 2632, 2635, 2638, 2641, 2644, -+ 2647, 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2671, 2674, 2677, 2680, -+ 2683, 2686, 2689, 2692, 2695, 2698, 2701, 2704, 2707, 2710, 2713, 2716, -+ 2719, 2722, 2725, 2728, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, -+ 2755, 2758, 2761, 2764, 2767, 2770, 2773, 2776, 2779, 2782, 2785, 2788, -+ 2791, 2794, 2797, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824, -+ 2827, 2830, 2833, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, -+ 2863, 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, -+ 2899, 2902, 2905, 2908, 2911, 2914, 2917, 2920, 2923, 2926, 2929, 2932, -+ 2935, 2938, 2941, 2944, 2947, 2950, 2953, 2956, 2959, 2962, 2965, 2968, -+ 2971, 2974, 2977, 2980, 2983, 2986, 2989, 2992, 2995, 2998, 3001, 3004, -+ 3007, 3010, 3013, 3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, -+ 3043, 3046, 3049, 3052, 3055, 3058, 3061, 3064, 3067, 3070, 3073, 3076, -+ 3079, 3082, 3085, 3088, 3091, 3094, 3097, 3100, 3103, 3106, 3109, 3112, -+ 3115, 3118, 3121, 3124, 3127, 3130, 3133, 3136, 3139, 3142, 3145, 3148, -+ 3151, 3154, 3157, 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, -+ 3187, 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217, 3220, -+ 3223, 3226, 3229, 3232, 3235, 3238, 3241, 3244, 3247, 3250, 3253, 3256, -+ 3259, 3262, 3265, 3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, -+ 3295, 3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3325, 3328, -+ 3331, 3334, 3337, 3340, 3343, 3346, 3349, 3352, 3355, 3358, 3361, 3364, -+ 3367, 3370, 3373, 3376, 3379, 3382, 3385, 3388, 3391, 3394, 3397, 3400, -+ 3403, 3406, 3409, 3412, 3415, 3418, 3421, 3424, 3427, 3430, 3433, 3436, -+ 3439, 3442, 3445, 3448, 3451, 3454, 3457, 3460, 3463, 3466, 3469, 3472, -+ 3475, 3478, 3481, 3484, 3487, 3490, 3493, 3496, 3499, 3502, 3505, 3508, -+ 3511, 3514, 3517, 3520, 3523, 3526, 3529, 3532, 3535, 3538, 3541, 3544, -+ 3547, 3550, 3553, 3556, 3559, 3562, 3565, 3568, 3571, 3574, 3577, 3580, -+ 3583, 3586, 3589, 3592, 3595, 3598, 3601, 3604, 3607, 3610, 3613, 3616, -+ 3619, 3622, 3625, 3628, 3631, 3634, 3637, 3640, 3643, 3646, 3649, 3652, -+ 3655, 3658, 3661, 3664, 3667, 3670, 3673, 3676, 3679, 3682, 3685, 3688, -+ 3691, 3694, 3697, 3700, 3703, 3706, 3709, 3712, 3715, 3718, 3721, 3724, -+ 3727, 3730, 3733, 3736, 3739, 3742, 3745, 3748, 3751, 3754, 3757, 3760, -+ 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784, 3787, 3790, 3793, 3796, -+ 3799, 3802, 3805, 3808, 3811, 3814, 3817, 3820, 3823, 3826, 3829, 3832, -+ 3835, 3838, 3841, 3844, 3847, 3850, 3853, 3856, 3859, 3862, 3865, 3868, -+ 3871, 3874, 3877, 3880, 3883, 3886, 3889, 3892, 3895, 3898, 3901, 3904, -+ 3907, 3910, 3913, 3916, 3919, 3922, 3925, 3928, 3931, 3934, 3937, 3940, -+ 3943, 3946, 3949, 3952, 3955, 3958, 3961, 3964, 3967, 3970, 3973, 3976, -+ 3979, 3982, 3985, 3988, 3991, 3994, 3997, 4000, 4003, 4006, 4009, 4012, -+ 4015, 4018, 4021, 4024, 4027, 4030, 4033, 4036, 4039, 4042, 4045, 4048, -+ 4051, 4054, 4057, 4060, 4063, 4066, 4069, 4072, 4075, 4078, 4081, 4084, -+ 4087, 4090, 4093, 4096, 4099, 4102, 4105, 4108, 4111, 4114, 4117, 4120, -+ 4123, 4126, 4129, 4132, 4135, 4138, 4141, 4144, 4147, 4150, 4153, 4156, -+ 4159, 4162, 4165, 4168, 4171, 4174, 4177, 4180, 4183, 4186, 4189, 4192, -+ 4195, 4198, 4201, 4204, 4207, 4210, 4213, 4216, 4219, 4222, 4225, 4228, -+ 4231, 4234, 4237, 4240, 4243, 4246, 4249, 4252, 4255, 4258, 4261, 4264, -+ 4267, 4270, 4273, 4276, 4279, 4282, 4285, 4288, 4291, 4294, 4297, 4300, -+ 4303, 4306, 4309, 4312, 4315, 4318, 4321, 4324, 4327, 4330, 4333, 4336, -+ 4339, 4342, 4345, 4348, 4351, 4354, 4357, 4360, 4363, 4366, 4369, 4372, -+ 4375, 4378, 4381, 4384, 4387, 4390, 4393, 4396, 4399, 4402, 4405, 4408, -+ 4411, 4414, 4417, 4420, 4423, 4426, 4429, 4432, 4435, 4438, 4441, 4444, -+ 4447, 4450, 4453, 4456, 4459, 4462, 4465, 4468, 4471, 4474, 4477, 4480, -+ 4483, 4486, 4489, 4492, 4495, 4498, 4501, 4504, 4507, 4510, 4513, 4516, -+ 4519, 4522, 4525, 4528, 4531, 4534, 4537, 4540, 4543, 4546, 4549, 4552, -+ 4555, 4558, 4561, 4564, 4567, 4570, 4573, 4576, 4579, 4582, 4585, 4588, -+ 4591, 4594, 4597, 4600, 4603, 4606, 4609, 4612, 4615, 4618, 4621, 4624, -+ 4627, 4630, 4633, 4636, 4639, 4642, 4645, 4648, 4651, 4654, 4657, 4660, -+ 4663, 4666, 4669, 4672, 4675, 4678, 4681, 4684, 4687, 4690, 4693, 4696, -+ 4699, 4702, 4705, 4708, 4711, 4714, 4717, 4720, 4723, 4726, 4729, 4732, -+ 4735, 4738, 4741, 4744, 4747, 4750, 4753, 4756, 4759, 4762, 4765, 4768, -+ 4771, 4774, 4777, 4780, 4783, 4786, 4789, 4792, 4795, 4798 - }; - static const wchar_t translit_to_tbl[] = - L" \0" L"\0" L"(C)\0" L"\0" L"<<\0" L"\0" L"-\0" L"\0" L"(R)\0" L"\0" L"u\0" -@@ -594,73 +594,73 @@ static const wchar_t translit_to_tbl[] = - L"\0" L"..\0" L"\0" L"...\0" L"\0" L" \0" L"\0" L"`\0" L"\0" L"``\0" L"\0" - L"```\0" L"\0" L"<\0" L"\0" L">\0" L"\0" L"!!\0" L"\0" L"/\0" L"\0" L"??\0" - L"\0" L"?!\0" L"\0" L"!?\0" L"\0" L" \0" L"\0" L"\0" L"\0" L"\0" L"\0" L"\0" -- L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"a/c\0" L"\0" L"a/s\0" L"\0" -- L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" L"H\0" L"\0" L"H\0" -- L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" L"\0" L"L\0" L"\0" -- L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" L"Q\0" L"\0" L"R\0" -- L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" L"\0" L"Z\0" L"\0" -- L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" L"e\0" L"\0" L"e\0" -- L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" L"\0" L"i\0" L"\0" -- L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" L"j\0" L"\0" L" 1/3 \0" -- L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" L"\0" L" 3/5 \0" L"\0" -- L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" L" 1/8 \0" L"\0" -- L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" L"\0" L"I\0" -- L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" L"VI\0" L"\0" -- L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" L"XI\0" L"\0" -- L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" L"\0" L"i\0" -- L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" L"vi\0" L"\0" -- L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" L"xi\0" L"\0" -- L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" L"\0" L"<-\0" -- L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" L"<=>\0" -- L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" L"\0" L"*\0" L"\0" L"|\0" L"\0" -- L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" L">>\0" -- L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" L"STX\0" -- L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" L"BEL\0" -- L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" L"FF\0" L"\0" -- L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" L"DC1\0" L"\0" -- L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" L"SYN\0" L"\0" -- L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" L"ESC\0" L"\0" -- L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" L"SP\0" L"\0" -- L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" L"(2)\0" L"\0" -- L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" L"(7)\0" L"\0" -- L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" L"(12)\0" -- L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" L"\0" -- L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" L"(1)\0" -- L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" -- L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" -- L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" -- L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" -- L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" L"5.\0" L"\0" -- L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" L"10.\0" L"\0" -- L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" L"15.\0" L"\0" -- L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" L"20.\0" L"\0" -- L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" -- L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" -- L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" -- L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" -- L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" -- L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" L"(D)\0" L"\0" -- L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" L"(I)\0" L"\0" -- L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" L"(N)\0" L"\0" -- L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" L"(S)\0" L"\0" -- L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" L"(X)\0" L"\0" -- L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" -- L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" -- L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" -- L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" -- L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" -- L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" L"-\0" L"\0" -- L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" -- L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"o\0" L"\0" -- L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" L"\0" -- L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" L"(25)\0" -- L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" L"\0" -- L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" L"(34)\0" -- L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" L"\0" -- L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" L"(43)\0" -- L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" L"\0" -- L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" L"\0" -- L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" -+ L"\0" L"\0" L"\0" L"Rs\0" L"\0" L"EUR\0" L"\0" L"INR\0" L"\0" L"a/c\0" L"\0" -+ L"a/s\0" L"\0" L"C\0" L"\0" L"c/o\0" L"\0" L"c/u\0" L"\0" L"g\0" L"\0" -+ L"H\0" L"\0" L"H\0" L"\0" L"H\0" L"\0" L"h\0" L"\0" L"I\0" L"\0" L"I\0" -+ L"\0" L"L\0" L"\0" L"l\0" L"\0" L"N\0" L"\0" L"No\0" L"\0" L"P\0" L"\0" -+ L"Q\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"R\0" L"\0" L"TEL\0" L"\0" L"(TM)\0" -+ L"\0" L"Z\0" L"\0" L"Ohm\0" L"\0" L"Z\0" L"\0" L"B\0" L"\0" L"C\0" L"\0" -+ L"e\0" L"\0" L"e\0" L"\0" L"E\0" L"\0" L"F\0" L"\0" L"M\0" L"\0" L"o\0" -+ L"\0" L"i\0" L"\0" L"D\0" L"\0" L"d\0" L"\0" L"e\0" L"\0" L"i\0" L"\0" -+ L"j\0" L"\0" L" 1/3 \0" L"\0" L" 2/3 \0" L"\0" L" 1/5 \0" L"\0" L" 2/5 \0" -+ L"\0" L" 3/5 \0" L"\0" L" 4/5 \0" L"\0" L" 1/6 \0" L"\0" L" 5/6 \0" L"\0" -+ L" 1/8 \0" L"\0" L" 3/8 \0" L"\0" L" 5/8 \0" L"\0" L" 7/8 \0" L"\0" L" 1/\0" -+ L"\0" L"I\0" L"\0" L"II\0" L"\0" L"III\0" L"\0" L"IV\0" L"\0" L"V\0" L"\0" -+ L"VI\0" L"\0" L"VII\0" L"\0" L"VIII\0" L"\0" L"IX\0" L"\0" L"X\0" L"\0" -+ L"XI\0" L"\0" L"XII\0" L"\0" L"L\0" L"\0" L"C\0" L"\0" L"D\0" L"\0" L"M\0" -+ L"\0" L"i\0" L"\0" L"ii\0" L"\0" L"iii\0" L"\0" L"iv\0" L"\0" L"v\0" L"\0" -+ L"vi\0" L"\0" L"vii\0" L"\0" L"viii\0" L"\0" L"ix\0" L"\0" L"x\0" L"\0" -+ L"xi\0" L"\0" L"xii\0" L"\0" L"l\0" L"\0" L"c\0" L"\0" L"d\0" L"\0" L"m\0" -+ L"\0" L"<-\0" L"\0" L"->\0" L"\0" L"<->\0" L"\0" L"<=\0" L"\0" L"=>\0" L"\0" -+ L"<=>\0" L"\0" L"-\0" L"\0" L"/\0" L"\0" L"\\\0" L"\0" L"*\0" L"\0" L"|\0" -+ L"\0" L":\0" L"\0" L"~\0" L"\0" L"<=\0" L"\0" L">=\0" L"\0" L"<<\0" L"\0" -+ L">>\0" L"\0" L"<<<\0" L"\0" L">>>\0" L"\0" L"NUL\0" L"\0" L"SOH\0" L"\0" -+ L"STX\0" L"\0" L"ETX\0" L"\0" L"EOT\0" L"\0" L"ENQ\0" L"\0" L"ACK\0" L"\0" -+ L"BEL\0" L"\0" L"BS\0" L"\0" L"HT\0" L"\0" L"LF\0" L"\0" L"VT\0" L"\0" -+ L"FF\0" L"\0" L"CR\0" L"\0" L"SO\0" L"\0" L"SI\0" L"\0" L"DLE\0" L"\0" -+ L"DC1\0" L"\0" L"DC2\0" L"\0" L"DC3\0" L"\0" L"DC4\0" L"\0" L"NAK\0" L"\0" -+ L"SYN\0" L"\0" L"ETB\0" L"\0" L"CAN\0" L"\0" L"EM\0" L"\0" L"SUB\0" L"\0" -+ L"ESC\0" L"\0" L"FS\0" L"\0" L"GS\0" L"\0" L"RS\0" L"\0" L"US\0" L"\0" -+ L"SP\0" L"\0" L"DEL\0" L"\0" L"_\0" L"\0" L"NL\0" L"\0" L"(1)\0" L"\0" -+ L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" L"(6)\0" L"\0" -+ L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" L"(11)\0" L"\0" -+ L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" L"\0" L"(16)\0" -+ L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" L"(20)\0" L"\0" -+ L"(1)\0" L"\0" L"(2)\0" L"\0" L"(3)\0" L"\0" L"(4)\0" L"\0" L"(5)\0" L"\0" -+ L"(6)\0" L"\0" L"(7)\0" L"\0" L"(8)\0" L"\0" L"(9)\0" L"\0" L"(10)\0" L"\0" -+ L"(11)\0" L"\0" L"(12)\0" L"\0" L"(13)\0" L"\0" L"(14)\0" L"\0" L"(15)\0" -+ L"\0" L"(16)\0" L"\0" L"(17)\0" L"\0" L"(18)\0" L"\0" L"(19)\0" L"\0" -+ L"(20)\0" L"\0" L"1.\0" L"\0" L"2.\0" L"\0" L"3.\0" L"\0" L"4.\0" L"\0" -+ L"5.\0" L"\0" L"6.\0" L"\0" L"7.\0" L"\0" L"8.\0" L"\0" L"9.\0" L"\0" -+ L"10.\0" L"\0" L"11.\0" L"\0" L"12.\0" L"\0" L"13.\0" L"\0" L"14.\0" L"\0" -+ L"15.\0" L"\0" L"16.\0" L"\0" L"17.\0" L"\0" L"18.\0" L"\0" L"19.\0" L"\0" -+ L"20.\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" L"(c)\0" L"\0" L"(d)\0" L"\0" -+ L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" L"(h)\0" L"\0" L"(i)\0" L"\0" -+ L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" L"(m)\0" L"\0" L"(n)\0" L"\0" -+ L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" L"(r)\0" L"\0" L"(s)\0" L"\0" -+ L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" L"(w)\0" L"\0" L"(x)\0" L"\0" -+ L"(y)\0" L"\0" L"(z)\0" L"\0" L"(A)\0" L"\0" L"(B)\0" L"\0" L"(C)\0" L"\0" -+ L"(D)\0" L"\0" L"(E)\0" L"\0" L"(F)\0" L"\0" L"(G)\0" L"\0" L"(H)\0" L"\0" -+ L"(I)\0" L"\0" L"(J)\0" L"\0" L"(K)\0" L"\0" L"(L)\0" L"\0" L"(M)\0" L"\0" -+ L"(N)\0" L"\0" L"(O)\0" L"\0" L"(P)\0" L"\0" L"(Q)\0" L"\0" L"(R)\0" L"\0" -+ L"(S)\0" L"\0" L"(T)\0" L"\0" L"(U)\0" L"\0" L"(V)\0" L"\0" L"(W)\0" L"\0" -+ L"(X)\0" L"\0" L"(Y)\0" L"\0" L"(Z)\0" L"\0" L"(a)\0" L"\0" L"(b)\0" L"\0" -+ L"(c)\0" L"\0" L"(d)\0" L"\0" L"(e)\0" L"\0" L"(f)\0" L"\0" L"(g)\0" L"\0" -+ L"(h)\0" L"\0" L"(i)\0" L"\0" L"(j)\0" L"\0" L"(k)\0" L"\0" L"(l)\0" L"\0" -+ L"(m)\0" L"\0" L"(n)\0" L"\0" L"(o)\0" L"\0" L"(p)\0" L"\0" L"(q)\0" L"\0" -+ L"(r)\0" L"\0" L"(s)\0" L"\0" L"(t)\0" L"\0" L"(u)\0" L"\0" L"(v)\0" L"\0" -+ L"(w)\0" L"\0" L"(x)\0" L"\0" L"(y)\0" L"\0" L"(z)\0" L"\0" L"(0)\0" L"\0" -+ L"-\0" L"\0" L"|\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" -+ L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" L"+\0" L"\0" -+ L"o\0" L"\0" L"::=\0" L"\0" L"==\0" L"\0" L"===\0" L"\0" L" \0" L"\0" L"=\0" -+ L"\0" L"(21)\0" L"\0" L"(22)\0" L"\0" L"(23)\0" L"\0" L"(24)\0" L"\0" -+ L"(25)\0" L"\0" L"(26)\0" L"\0" L"(27)\0" L"\0" L"(28)\0" L"\0" L"(29)\0" -+ L"\0" L"(30)\0" L"\0" L"(31)\0" L"\0" L"(32)\0" L"\0" L"(33)\0" L"\0" -+ L"(34)\0" L"\0" L"(35)\0" L"\0" L"(36)\0" L"\0" L"(37)\0" L"\0" L"(38)\0" -+ L"\0" L"(39)\0" L"\0" L"(40)\0" L"\0" L"(41)\0" L"\0" L"(42)\0" L"\0" -+ L"(43)\0" L"\0" L"(44)\0" L"\0" L"(45)\0" L"\0" L"(46)\0" L"\0" L"(47)\0" -+ L"\0" L"(48)\0" L"\0" L"(49)\0" L"\0" L"(50)\0" L"\0" L"hPa\0" L"\0" L"da\0" -+ L"\0" L"AU\0" L"\0" L"bar\0" L"\0" L"oV\0" L"\0" L"pc\0" L"\0" L"pA\0" L"\0" - L"nA\0" L"\0" L"uA\0" L"\0" L"mA\0" L"\0" L"kA\0" L"\0" L"KB\0" L"\0" - L"MB\0" L"\0" L"GB\0" L"\0" L"cal\0" L"\0" L"kcal\0" L"\0" L"pF\0" L"\0" - L"nF\0" L"\0" L"uF\0" L"\0" L"ug\0" L"\0" L"mg\0" L"\0" L"kg\0" L"\0" -Index: glibc-2.12-2-gc4ccff1/locale/C-translit.h.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/C-translit.h.in -+++ glibc-2.12-2-gc4ccff1/locale/C-translit.h.in -@@ -105,6 +105,7 @@ - "\x2063" "" /* INVISIBLE SEPARATOR */ - "\x20a8" "Rs" /* RUPEE SIGN */ - "\x20ac" "EUR" /* EURO SIGN */ -+"\x20b9" "INR" /* INDIAN RUPEE SIGN */ - "\x2100" "a/c" /* ACCOUNT OF */ - "\x2101" "a/s" /* ADDRESSED TO THE SUBJECT */ - "\x2102" "C" /* DOUBLE-STRUCK CAPITAL C */ -Index: glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/charmaps/UTF-8 -+++ glibc-2.12-2-gc4ccff1/localedata/charmaps/UTF-8 -@@ -1312,6 +1312,10 @@ CHARMAP - /xd4/xa1 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK - /xd4/xa2 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK - /xd4/xa3 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK -+ /xd4/xa4 CYRILLIC CAPITAL LETTER PE WITH DESCENDER -+ /xd4/xa5 CYRILLIC SMALL LETTER PE WITH DESCENDER -+ /xd4/xa6 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER -+ /xd4/xa7 CYRILLIC SMALL LETTER SHHA WITH DESCENDER - /xd4/xb1 ARMENIAN CAPITAL LETTER AYB - /xd4/xb2 ARMENIAN CAPITAL LETTER BEN - /xd4/xb3 ARMENIAN CAPITAL LETTER GIM -@@ -1513,6 +1517,7 @@ CHARMAP - /xd8/x9b ARABIC SEMICOLON - /xd8/x9e ARABIC TRIPLE DOT PUNCTUATION MARK - /xd8/x9f ARABIC QUESTION MARK -+ /xd8/xa0 ARABIC LETTER KASHMIRI YEH - /xd8/xa1 ARABIC LETTER HAMZA - /xd8/xa2 ARABIC LETTER ALEF WITH MADDA ABOVE - /xd8/xa3 ARABIC LETTER ALEF WITH HAMZA ABOVE -@@ -1575,6 +1580,7 @@ CHARMAP - /xd9/x9c ARABIC VOWEL SIGN DOT BELOW - /xd9/x9d ARABIC REVERSED DAMMA - /xd9/x9e ARABIC FATHA WITH TWO DOTS -+ /xd9/x9f ARABIC WAVY HAMZA BELOW - /xd9/xa0 ARABIC-INDIC DIGIT ZERO - /xd9/xa1 ARABIC-INDIC DIGIT ONE - /xd9/xa2 ARABIC-INDIC DIGIT TWO -@@ -1969,6 +1975,97 @@ CHARMAP - /xdf/xb8 NKO COMMA - /xdf/xb9 NKO EXCLAMATION MARK - /xdf/xba NKO LAJANYALAN -+ /xe0/xa0/x80 SAMARITAN LETTER ALAF -+ /xe0/xa0/x81 SAMARITAN LETTER BIT -+ /xe0/xa0/x82 SAMARITAN LETTER GAMAN -+ /xe0/xa0/x83 SAMARITAN LETTER DALAT -+ /xe0/xa0/x84 SAMARITAN LETTER IY -+ /xe0/xa0/x85 SAMARITAN LETTER BAA -+ /xe0/xa0/x86 SAMARITAN LETTER ZEN -+ /xe0/xa0/x87 SAMARITAN LETTER IT -+ /xe0/xa0/x88 SAMARITAN LETTER TIT -+ /xe0/xa0/x89 SAMARITAN LETTER YUT -+ /xe0/xa0/x8a SAMARITAN LETTER KAAF -+ /xe0/xa0/x8b SAMARITAN LETTER LABAT -+ /xe0/xa0/x8c SAMARITAN LETTER MIM -+ /xe0/xa0/x8d SAMARITAN LETTER NUN -+ /xe0/xa0/x8e SAMARITAN LETTER SINGAAT -+ /xe0/xa0/x8f SAMARITAN LETTER IN -+ /xe0/xa0/x90 SAMARITAN LETTER FI -+ /xe0/xa0/x91 SAMARITAN LETTER TSAADIY -+ /xe0/xa0/x92 SAMARITAN LETTER QUF -+ /xe0/xa0/x93 SAMARITAN LETTER RISH -+ /xe0/xa0/x94 SAMARITAN LETTER SHAN -+ /xe0/xa0/x95 SAMARITAN LETTER TAAF -+ /xe0/xa0/x96 SAMARITAN MARK IN -+ /xe0/xa0/x97 SAMARITAN MARK IN-ALAF -+ /xe0/xa0/x98 SAMARITAN MARK OCCLUSION -+ /xe0/xa0/x99 SAMARITAN MARK DAGESH -+ /xe0/xa0/x9a SAMARITAN MODIFIER LETTER EPENTHETIC YUT -+ /xe0/xa0/x9b SAMARITAN MARK EPENTHETIC YUT -+ /xe0/xa0/x9c SAMARITAN VOWEL SIGN LONG E -+ /xe0/xa0/x9d SAMARITAN VOWEL SIGN E -+ /xe0/xa0/x9e SAMARITAN VOWEL SIGN OVERLONG AA -+ /xe0/xa0/x9f SAMARITAN VOWEL SIGN LONG AA -+ /xe0/xa0/xa0 SAMARITAN VOWEL SIGN AA -+ /xe0/xa0/xa1 SAMARITAN VOWEL SIGN OVERLONG A -+ /xe0/xa0/xa2 SAMARITAN VOWEL SIGN LONG A -+ /xe0/xa0/xa3 SAMARITAN VOWEL SIGN A -+ /xe0/xa0/xa4 SAMARITAN MODIFIER LETTER SHORT A -+ /xe0/xa0/xa5 SAMARITAN VOWEL SIGN SHORT A -+ /xe0/xa0/xa6 SAMARITAN VOWEL SIGN LONG U -+ /xe0/xa0/xa7 SAMARITAN VOWEL SIGN U -+ /xe0/xa0/xa8 SAMARITAN MODIFIER LETTER I -+ /xe0/xa0/xa9 SAMARITAN VOWEL SIGN LONG I -+ /xe0/xa0/xaa SAMARITAN VOWEL SIGN I -+ /xe0/xa0/xab SAMARITAN VOWEL SIGN O -+ /xe0/xa0/xac SAMARITAN VOWEL SIGN SUKUN -+ /xe0/xa0/xad SAMARITAN MARK NEQUDAA -+ /xe0/xa0/xb0 SAMARITAN PUNCTUATION NEQUDAA -+ /xe0/xa0/xb1 SAMARITAN PUNCTUATION AFSAAQ -+ /xe0/xa0/xb2 SAMARITAN PUNCTUATION ANGED -+ /xe0/xa0/xb3 SAMARITAN PUNCTUATION BAU -+ /xe0/xa0/xb4 SAMARITAN PUNCTUATION ATMAAU -+ /xe0/xa0/xb5 SAMARITAN PUNCTUATION SHIYYAALAA -+ /xe0/xa0/xb6 SAMARITAN ABBREVIATION MARK -+ /xe0/xa0/xb7 SAMARITAN PUNCTUATION MELODIC QITSA -+ /xe0/xa0/xb8 SAMARITAN PUNCTUATION ZIQAA -+ /xe0/xa0/xb9 SAMARITAN PUNCTUATION QITSA -+ /xe0/xa0/xba SAMARITAN PUNCTUATION ZAEF -+ /xe0/xa0/xbb SAMARITAN PUNCTUATION TURU -+ /xe0/xa0/xbc SAMARITAN PUNCTUATION ARKAANU -+ /xe0/xa0/xbd SAMARITAN PUNCTUATION SOF MASHFAAT -+ /xe0/xa0/xbe SAMARITAN PUNCTUATION ANNAAU -+ /xe0/xa1/x80 MANDAIC LETTER HALQA -+ /xe0/xa1/x81 MANDAIC LETTER AB -+ /xe0/xa1/x82 MANDAIC LETTER AG -+ /xe0/xa1/x83 MANDAIC LETTER AD -+ /xe0/xa1/x84 MANDAIC LETTER AH -+ /xe0/xa1/x85 MANDAIC LETTER USHENNA -+ /xe0/xa1/x86 MANDAIC LETTER AZ -+ /xe0/xa1/x87 MANDAIC LETTER IT -+ /xe0/xa1/x88 MANDAIC LETTER ATT -+ /xe0/xa1/x89 MANDAIC LETTER AKSA -+ /xe0/xa1/x8a MANDAIC LETTER AK -+ /xe0/xa1/x8b MANDAIC LETTER AL -+ /xe0/xa1/x8c MANDAIC LETTER AM -+ /xe0/xa1/x8d MANDAIC LETTER AN -+ /xe0/xa1/x8e MANDAIC LETTER AS -+ /xe0/xa1/x8f MANDAIC LETTER IN -+ /xe0/xa1/x90 MANDAIC LETTER AP -+ /xe0/xa1/x91 MANDAIC LETTER ASZ -+ /xe0/xa1/x92 MANDAIC LETTER AQ -+ /xe0/xa1/x93 MANDAIC LETTER AR -+ /xe0/xa1/x94 MANDAIC LETTER ASH -+ /xe0/xa1/x95 MANDAIC LETTER AT -+ /xe0/xa1/x96 MANDAIC LETTER DUSHENNA -+ /xe0/xa1/x97 MANDAIC LETTER KAD -+ /xe0/xa1/x98 MANDAIC LETTER AIN -+ /xe0/xa1/x99 MANDAIC AFFRICATION MARK -+ /xe0/xa1/x9a MANDAIC VOCALIZATION MARK -+ /xe0/xa1/x9b MANDAIC GEMINATION MARK -+ /xe0/xa1/x9e MANDAIC PUNCTUATION -+ /xe0/xa4/x80 DEVANAGARI SIGN INVERTED CANDRABINDU - /xe0/xa4/x81 DEVANAGARI SIGN CANDRABINDU - /xe0/xa4/x82 DEVANAGARI SIGN ANUSVARA - /xe0/xa4/x83 DEVANAGARI SIGN VISARGA -@@ -2026,6 +2123,8 @@ CHARMAP - /xe0/xa4/xb7 DEVANAGARI LETTER SSA - /xe0/xa4/xb8 DEVANAGARI LETTER SA - /xe0/xa4/xb9 DEVANAGARI LETTER HA -+ /xe0/xa4/xba DEVANAGARI VOWEL SIGN OE -+ /xe0/xa4/xbb DEVANAGARI VOWEL SIGN OOE - /xe0/xa4/xbc DEVANAGARI SIGN NUKTA - /xe0/xa4/xbd DEVANAGARI SIGN AVAGRAHA - /xe0/xa4/xbe DEVANAGARI VOWEL SIGN AA -@@ -2044,11 +2143,16 @@ CHARMAP - /xe0/xa5/x8b DEVANAGARI VOWEL SIGN O - /xe0/xa5/x8c DEVANAGARI VOWEL SIGN AU - /xe0/xa5/x8d DEVANAGARI SIGN VIRAMA -+ /xe0/xa5/x8e DEVANAGARI VOWEL SIGN PRISHTHAMATRA E -+ /xe0/xa5/x8f DEVANAGARI VOWEL SIGN AW - /xe0/xa5/x90 DEVANAGARI OM - /xe0/xa5/x91 DEVANAGARI STRESS SIGN UDATTA - /xe0/xa5/x92 DEVANAGARI STRESS SIGN ANUDATTA - /xe0/xa5/x93 DEVANAGARI GRAVE ACCENT - /xe0/xa5/x94 DEVANAGARI ACUTE ACCENT -+ /xe0/xa5/x95 DEVANAGARI VOWEL SIGN CANDRA LONG E -+ /xe0/xa5/x96 DEVANAGARI VOWEL SIGN UE -+ /xe0/xa5/x97 DEVANAGARI VOWEL SIGN UUE - /xe0/xa5/x98 DEVANAGARI LETTER QA - /xe0/xa5/x99 DEVANAGARI LETTER KHHA - /xe0/xa5/x9a DEVANAGARI LETTER GHHA -@@ -2076,6 +2180,13 @@ CHARMAP - /xe0/xa5/xb0 DEVANAGARI ABBREVIATION SIGN - /xe0/xa5/xb1 DEVANAGARI SIGN HIGH SPACING DOT - /xe0/xa5/xb2 DEVANAGARI LETTER CANDRA A -+ /xe0/xa5/xb3 DEVANAGARI LETTER OE -+ /xe0/xa5/xb4 DEVANAGARI LETTER OOE -+ /xe0/xa5/xb5 DEVANAGARI LETTER AW -+ /xe0/xa5/xb6 DEVANAGARI LETTER UE -+ /xe0/xa5/xb7 DEVANAGARI LETTER UUE -+ /xe0/xa5/xb9 DEVANAGARI LETTER ZHA -+ /xe0/xa5/xba DEVANAGARI LETTER HEAVY YA - /xe0/xa5/xbb DEVANAGARI LETTER GGA - /xe0/xa5/xbc DEVANAGARI LETTER JJA - /xe0/xa5/xbd DEVANAGARI LETTER GLOTTAL STOP -@@ -2172,6 +2283,7 @@ CHARMAP - /xe0/xa7/xb8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR - /xe0/xa7/xb9 BENGALI CURRENCY DENOMINATOR SIXTEEN - /xe0/xa7/xba BENGALI ISSHAR -+ /xe0/xa7/xbb BENGALI GANDA MARK - /xe0/xa8/x81 GURMUKHI SIGN ADAK BINDI - /xe0/xa8/x82 GURMUKHI SIGN BINDI - /xe0/xa8/x83 GURMUKHI SIGN VISARGA -@@ -2418,6 +2530,12 @@ CHARMAP - /xe0/xad/xaf ORIYA DIGIT NINE - /xe0/xad/xb0 ORIYA ISSHAR - /xe0/xad/xb1 ORIYA LETTER WA -+ /xe0/xad/xb2 ORIYA FRACTION ONE QUARTER -+ /xe0/xad/xb3 ORIYA FRACTION ONE HALF -+ /xe0/xad/xb4 ORIYA FRACTION THREE QUARTERS -+ /xe0/xad/xb5 ORIYA FRACTION ONE SIXTEENTH -+ /xe0/xad/xb6 ORIYA FRACTION ONE EIGHTH -+ /xe0/xad/xb7 ORIYA FRACTION THREE SIXTEENTHS - /xe0/xae/x82 TAMIL SIGN ANUSVARA - /xe0/xae/x83 TAMIL SIGN VISARGA - /xe0/xae/x85 TAMIL LETTER A -@@ -2705,6 +2823,7 @@ CHARMAP - /xe0/xb4/xa6 MALAYALAM LETTER DA - /xe0/xb4/xa7 MALAYALAM LETTER DHA - /xe0/xb4/xa8 MALAYALAM LETTER NA -+ /xe0/xb4/xa9 MALAYALAM LETTER NNNA - /xe0/xb4/xaa MALAYALAM LETTER PA - /xe0/xb4/xab MALAYALAM LETTER PHA - /xe0/xb4/xac MALAYALAM LETTER BA -@@ -2721,6 +2840,7 @@ CHARMAP - /xe0/xb4/xb7 MALAYALAM LETTER SSA - /xe0/xb4/xb8 MALAYALAM LETTER SA - /xe0/xb4/xb9 MALAYALAM LETTER HA -+ /xe0/xb4/xba MALAYALAM LETTER TTTA - /xe0/xb4/xbd MALAYALAM SIGN AVAGRAHA - /xe0/xb4/xbe MALAYALAM VOWEL SIGN AA - /xe0/xb4/xbf MALAYALAM VOWEL SIGN I -@@ -2736,6 +2856,7 @@ CHARMAP - /xe0/xb5/x8b MALAYALAM VOWEL SIGN OO - /xe0/xb5/x8c MALAYALAM VOWEL SIGN AU - /xe0/xb5/x8d MALAYALAM SIGN VIRAMA -+ /xe0/xb5/x8e MALAYALAM LETTER DOT REPH - /xe0/xb5/x97 MALAYALAM AU LENGTH MARK - /xe0/xb5/xa0 MALAYALAM LETTER VOCALIC RR - /xe0/xb5/xa1 MALAYALAM LETTER VOCALIC LL -@@ -3131,6 +3252,10 @@ CHARMAP - /xe0/xbe/x89 TIBETAN SIGN MCHU CAN - /xe0/xbe/x8a TIBETAN SIGN GRU CAN RGYINGS - /xe0/xbe/x8b TIBETAN SIGN GRU MED RGYINGS -+ /xe0/xbe/x8c TIBETAN SIGN INVERTED MCHU CAN -+ /xe0/xbe/x8d TIBETAN SUBJOINED SIGN LCE TSA CAN -+ /xe0/xbe/x8e TIBETAN SUBJOINED SIGN MCHU CAN -+ /xe0/xbe/x8f TIBETAN SUBJOINED SIGN INVERTED MCHU CAN - /xe0/xbe/x90 TIBETAN SUBJOINED LETTER KA - /xe0/xbe/x91 TIBETAN SUBJOINED LETTER KHA - /xe0/xbe/x92 TIBETAN SUBJOINED LETTER GA -@@ -3197,6 +3322,12 @@ CHARMAP - /xe0/xbf/x92 TIBETAN MARK NYIS TSHEG - /xe0/xbf/x93 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA - /xe0/xbf/x94 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA -+ /xe0/xbf/x95 RIGHT-FACING SVASTI SIGN -+ /xe0/xbf/x96 LEFT-FACING SVASTI SIGN -+ /xe0/xbf/x97 RIGHT-FACING SVASTI SIGN WITH DOTS -+ /xe0/xbf/x98 LEFT-FACING SVASTI SIGN WITH DOTS -+ /xe0/xbf/x99 TIBETAN MARK LEADING MCHAN RTAGS -+ /xe0/xbf/x9a TIBETAN MARK TRAILING MCHAN RTAGS - /xe1/x80/x80 MYANMAR LETTER KA - /xe1/x80/x81 MYANMAR LETTER KHA - /xe1/x80/x82 MYANMAR LETTER GA -@@ -3351,6 +3482,10 @@ CHARMAP - /xe1/x82/x97 MYANMAR SHAN DIGIT SEVEN - /xe1/x82/x98 MYANMAR SHAN DIGIT EIGHT - /xe1/x82/x99 MYANMAR SHAN DIGIT NINE -+ /xe1/x82/x9a MYANMAR SIGN KHAMTI TONE-1 -+ /xe1/x82/x9b MYANMAR SIGN KHAMTI TONE-3 -+ /xe1/x82/x9c MYANMAR VOWEL SIGN AITON A -+ /xe1/x82/x9d MYANMAR VOWEL SIGN AITON AI - /xe1/x82/x9e MYANMAR SYMBOL SHAN ONE - /xe1/x82/x9f MYANMAR SYMBOL SHAN EXCLAMATION - /xe1/x82/xa0 GEORGIAN CAPITAL LETTER AN -@@ -3526,6 +3661,11 @@ CHARMAP - /xe1/x85/x97 HANGUL CHOSEONG KAPYEOUNPHIEUPH - /xe1/x85/x98 HANGUL CHOSEONG SSANGHIEUH - /xe1/x85/x99 HANGUL CHOSEONG YEORINHIEUH -+ /xe1/x85/x9a HANGUL CHOSEONG KIYEOK-TIKEUT -+ /xe1/x85/x9b HANGUL CHOSEONG NIEUN-SIOS -+ /xe1/x85/x9c HANGUL CHOSEONG NIEUN-CIEUC -+ /xe1/x85/x9d HANGUL CHOSEONG NIEUN-HIEUH -+ /xe1/x85/x9e HANGUL CHOSEONG TIKEUT-RIEUL - /xe1/x85/x9f HANGUL CHOSEONG FILLER - /xe1/x85/xa0 HANGUL JUNGSEONG FILLER - /xe1/x85/xa1 HANGUL JUNGSEONG A -@@ -3594,6 +3734,11 @@ CHARMAP - /xe1/x86/xa0 HANGUL JUNGSEONG ARAEA-U - /xe1/x86/xa1 HANGUL JUNGSEONG ARAEA-I - /xe1/x86/xa2 HANGUL JUNGSEONG SSANGARAEA -+ /xe1/x86/xa3 HANGUL JUNGSEONG A-EU -+ /xe1/x86/xa4 HANGUL JUNGSEONG YA-U -+ /xe1/x86/xa5 HANGUL JUNGSEONG YEO-YA -+ /xe1/x86/xa6 HANGUL JUNGSEONG O-YA -+ /xe1/x86/xa7 HANGUL JUNGSEONG O-YAE - /xe1/x86/xa8 HANGUL JONGSEONG KIYEOK - /xe1/x86/xa9 HANGUL JONGSEONG SSANGKIYEOK - /xe1/x86/xaa HANGUL JONGSEONG KIYEOK-SIOS -@@ -3676,6 +3821,12 @@ CHARMAP - /xe1/x87/xb7 HANGUL JONGSEONG HIEUH-MIEUM - /xe1/x87/xb8 HANGUL JONGSEONG HIEUH-PIEUP - /xe1/x87/xb9 HANGUL JONGSEONG YEORINHIEUH -+ /xe1/x87/xba HANGUL JONGSEONG KIYEOK-NIEUN -+ /xe1/x87/xbb HANGUL JONGSEONG KIYEOK-PIEUP -+ /xe1/x87/xbc HANGUL JONGSEONG KIYEOK-CHIEUCH -+ /xe1/x87/xbd HANGUL JONGSEONG KIYEOK-KHIEUKH -+ /xe1/x87/xbe HANGUL JONGSEONG KIYEOK-HIEUH -+ /xe1/x87/xbf HANGUL JONGSEONG SSANGNIEUN - /xe1/x88/x80 ETHIOPIC SYLLABLE HA - /xe1/x88/x81 ETHIOPIC SYLLABLE HU - /xe1/x88/x82 ETHIOPIC SYLLABLE HI -@@ -4002,6 +4153,8 @@ CHARMAP - /xe1/x8d/x98 ETHIOPIC SYLLABLE RYA - /xe1/x8d/x99 ETHIOPIC SYLLABLE MYA - /xe1/x8d/x9a ETHIOPIC SYLLABLE FYA -+ /xe1/x8d/x9d ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK -+ /xe1/x8d/x9e ETHIOPIC COMBINING VOWEL LENGTH MARK - /xe1/x8d/x9f ETHIOPIC COMBINING GEMINATION MARK - /xe1/x8d/xa0 ETHIOPIC SECTION MARK - /xe1/x8d/xa1 ETHIOPIC WORDSPACE -@@ -4143,6 +4296,7 @@ CHARMAP - /xe1/x8f/xb2 CHEROKEE LETTER YO - /xe1/x8f/xb3 CHEROKEE LETTER YU - /xe1/x8f/xb4 CHEROKEE LETTER YV -+ /xe1/x90/x80 CANADIAN SYLLABICS HYPHEN - /xe1/x90/x81 CANADIAN SYLLABICS E - /xe1/x90/x82 CANADIAN SYLLABICS AAI - /xe1/x90/x83 CANADIAN SYLLABICS I -@@ -4773,6 +4927,15 @@ CHARMAP - /xe1/x99/xb4 CANADIAN SYLLABICS NNGOO - /xe1/x99/xb5 CANADIAN SYLLABICS NNGA - /xe1/x99/xb6 CANADIAN SYLLABICS NNGAA -+ /xe1/x99/xb7 CANADIAN SYLLABICS WOODS-CREE THWEE -+ /xe1/x99/xb8 CANADIAN SYLLABICS WOODS-CREE THWI -+ /xe1/x99/xb9 CANADIAN SYLLABICS WOODS-CREE THWII -+ /xe1/x99/xba CANADIAN SYLLABICS WOODS-CREE THWO -+ /xe1/x99/xbb CANADIAN SYLLABICS WOODS-CREE THWOO -+ /xe1/x99/xbc CANADIAN SYLLABICS WOODS-CREE THWA -+ /xe1/x99/xbd CANADIAN SYLLABICS WOODS-CREE THWAA -+ /xe1/x99/xbe CANADIAN SYLLABICS WOODS-CREE FINAL TH -+ /xe1/x99/xbf CANADIAN SYLLABICS BLACKFOOT W - /xe1/x9a/x80 OGHAM SPACE MARK - /xe1/x9a/x81 OGHAM LETTER BEITH - /xe1/x9a/x82 OGHAM LETTER LUIS -@@ -5234,6 +5397,76 @@ CHARMAP - /xe1/xa2/xa8 MONGOLIAN LETTER MANCHU ALI GALI BHA - /xe1/xa2/xa9 MONGOLIAN LETTER ALI GALI DAGALGA - /xe1/xa2/xaa MONGOLIAN LETTER MANCHU ALI GALI LHA -+ /xe1/xa2/xb0 CANADIAN SYLLABICS OY -+ /xe1/xa2/xb1 CANADIAN SYLLABICS AY -+ /xe1/xa2/xb2 CANADIAN SYLLABICS AAY -+ /xe1/xa2/xb3 CANADIAN SYLLABICS WAY -+ /xe1/xa2/xb4 CANADIAN SYLLABICS POY -+ /xe1/xa2/xb5 CANADIAN SYLLABICS PAY -+ /xe1/xa2/xb6 CANADIAN SYLLABICS PWOY -+ /xe1/xa2/xb7 CANADIAN SYLLABICS TAY -+ /xe1/xa2/xb8 CANADIAN SYLLABICS KAY -+ /xe1/xa2/xb9 CANADIAN SYLLABICS KWAY -+ /xe1/xa2/xba CANADIAN SYLLABICS MAY -+ /xe1/xa2/xbb CANADIAN SYLLABICS NOY -+ /xe1/xa2/xbc CANADIAN SYLLABICS NAY -+ /xe1/xa2/xbd CANADIAN SYLLABICS LAY -+ /xe1/xa2/xbe CANADIAN SYLLABICS SOY -+ /xe1/xa2/xbf CANADIAN SYLLABICS SAY -+ /xe1/xa3/x80 CANADIAN SYLLABICS SHOY -+ /xe1/xa3/x81 CANADIAN SYLLABICS SHAY -+ /xe1/xa3/x82 CANADIAN SYLLABICS SHWOY -+ /xe1/xa3/x83 CANADIAN SYLLABICS YOY -+ /xe1/xa3/x84 CANADIAN SYLLABICS YAY -+ /xe1/xa3/x85 CANADIAN SYLLABICS RAY -+ /xe1/xa3/x86 CANADIAN SYLLABICS NWI -+ /xe1/xa3/x87 CANADIAN SYLLABICS OJIBWAY NWI -+ /xe1/xa3/x88 CANADIAN SYLLABICS NWII -+ /xe1/xa3/x89 CANADIAN SYLLABICS OJIBWAY NWII -+ /xe1/xa3/x8a CANADIAN SYLLABICS NWO -+ /xe1/xa3/x8b CANADIAN SYLLABICS OJIBWAY NWO -+ /xe1/xa3/x8c CANADIAN SYLLABICS NWOO -+ /xe1/xa3/x8d CANADIAN SYLLABICS OJIBWAY NWOO -+ /xe1/xa3/x8e CANADIAN SYLLABICS RWEE -+ /xe1/xa3/x8f CANADIAN SYLLABICS RWI -+ /xe1/xa3/x90 CANADIAN SYLLABICS RWII -+ /xe1/xa3/x91 CANADIAN SYLLABICS RWO -+ /xe1/xa3/x92 CANADIAN SYLLABICS RWOO -+ /xe1/xa3/x93 CANADIAN SYLLABICS RWA -+ /xe1/xa3/x94 CANADIAN SYLLABICS OJIBWAY P -+ /xe1/xa3/x95 CANADIAN SYLLABICS OJIBWAY T -+ /xe1/xa3/x96 CANADIAN SYLLABICS OJIBWAY K -+ /xe1/xa3/x97 CANADIAN SYLLABICS OJIBWAY C -+ /xe1/xa3/x98 CANADIAN SYLLABICS OJIBWAY M -+ /xe1/xa3/x99 CANADIAN SYLLABICS OJIBWAY N -+ /xe1/xa3/x9a CANADIAN SYLLABICS OJIBWAY S -+ /xe1/xa3/x9b CANADIAN SYLLABICS OJIBWAY SH -+ /xe1/xa3/x9c CANADIAN SYLLABICS EASTERN W -+ /xe1/xa3/x9d CANADIAN SYLLABICS WESTERN W -+ /xe1/xa3/x9e CANADIAN SYLLABICS FINAL SMALL RING -+ /xe1/xa3/x9f CANADIAN SYLLABICS FINAL RAISED DOT -+ /xe1/xa3/xa0 CANADIAN SYLLABICS R-CREE RWE -+ /xe1/xa3/xa1 CANADIAN SYLLABICS WEST-CREE LOO -+ /xe1/xa3/xa2 CANADIAN SYLLABICS WEST-CREE LAA -+ /xe1/xa3/xa3 CANADIAN SYLLABICS THWE -+ /xe1/xa3/xa4 CANADIAN SYLLABICS THWA -+ /xe1/xa3/xa5 CANADIAN SYLLABICS TTHWE -+ /xe1/xa3/xa6 CANADIAN SYLLABICS TTHOO -+ /xe1/xa3/xa7 CANADIAN SYLLABICS TTHAA -+ /xe1/xa3/xa8 CANADIAN SYLLABICS TLHWE -+ /xe1/xa3/xa9 CANADIAN SYLLABICS TLHOO -+ /xe1/xa3/xaa CANADIAN SYLLABICS SAYISI SHWE -+ /xe1/xa3/xab CANADIAN SYLLABICS SAYISI SHOO -+ /xe1/xa3/xac CANADIAN SYLLABICS SAYISI HOO -+ /xe1/xa3/xad CANADIAN SYLLABICS CARRIER GWU -+ /xe1/xa3/xae CANADIAN SYLLABICS CARRIER DENE GEE -+ /xe1/xa3/xaf CANADIAN SYLLABICS CARRIER GAA -+ /xe1/xa3/xb0 CANADIAN SYLLABICS CARRIER GWA -+ /xe1/xa3/xb1 CANADIAN SYLLABICS SAYISI JUU -+ /xe1/xa3/xb2 CANADIAN SYLLABICS CARRIER JWA -+ /xe1/xa3/xb3 CANADIAN SYLLABICS BEAVER DENE L -+ /xe1/xa3/xb4 CANADIAN SYLLABICS BEAVER DENE R -+ /xe1/xa3/xb5 CANADIAN SYLLABICS CARRIER DENTAL S - /xe1/xa4/x80 LIMBU VOWEL-CARRIER LETTER - /xe1/xa4/x81 LIMBU LETTER KA - /xe1/xa4/x82 LIMBU LETTER KHA -@@ -5377,6 +5610,8 @@ CHARMAP - /xe1/xa6/xa7 NEW TAI LUE LETTER HIGH XVA - /xe1/xa6/xa8 NEW TAI LUE LETTER LOW KVA - /xe1/xa6/xa9 NEW TAI LUE LETTER LOW XVA -+ /xe1/xa6/xaa NEW TAI LUE LETTER HIGH SUA -+ /xe1/xa6/xab NEW TAI LUE LETTER LOW SUA - /xe1/xa6/xb0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER - /xe1/xa6/xb1 NEW TAI LUE VOWEL SIGN AA - /xe1/xa6/xb2 NEW TAI LUE VOWEL SIGN II -@@ -5413,6 +5648,7 @@ CHARMAP - /xe1/xa7/x97 NEW TAI LUE DIGIT SEVEN - /xe1/xa7/x98 NEW TAI LUE DIGIT EIGHT - /xe1/xa7/x99 NEW TAI LUE DIGIT NINE -+ /xe1/xa7/x9a NEW TAI LUE THAM DIGIT ONE - /xe1/xa7/x9e NEW TAI LUE SIGN LAE - /xe1/xa7/x9f NEW TAI LUE SIGN LAEV - /xe1/xa7/xa0 KHMER SYMBOL PATHAMASAT -@@ -5477,6 +5713,133 @@ CHARMAP - /xe1/xa8/x9b BUGINESE VOWEL SIGN AE - /xe1/xa8/x9e BUGINESE PALLAWA - /xe1/xa8/x9f BUGINESE END OF SECTION -+ /xe1/xa8/xa0 TAI THAM LETTER HIGH KA -+ /xe1/xa8/xa1 TAI THAM LETTER HIGH KHA -+ /xe1/xa8/xa2 TAI THAM LETTER HIGH KXA -+ /xe1/xa8/xa3 TAI THAM LETTER LOW KA -+ /xe1/xa8/xa4 TAI THAM LETTER LOW KXA -+ /xe1/xa8/xa5 TAI THAM LETTER LOW KHA -+ /xe1/xa8/xa6 TAI THAM LETTER NGA -+ /xe1/xa8/xa7 TAI THAM LETTER HIGH CA -+ /xe1/xa8/xa8 TAI THAM LETTER HIGH CHA -+ /xe1/xa8/xa9 TAI THAM LETTER LOW CA -+ /xe1/xa8/xaa TAI THAM LETTER LOW SA -+ /xe1/xa8/xab TAI THAM LETTER LOW CHA -+ /xe1/xa8/xac TAI THAM LETTER NYA -+ /xe1/xa8/xad TAI THAM LETTER RATA -+ /xe1/xa8/xae TAI THAM LETTER HIGH RATHA -+ /xe1/xa8/xaf TAI THAM LETTER DA -+ /xe1/xa8/xb0 TAI THAM LETTER LOW RATHA -+ /xe1/xa8/xb1 TAI THAM LETTER RANA -+ /xe1/xa8/xb2 TAI THAM LETTER HIGH TA -+ /xe1/xa8/xb3 TAI THAM LETTER HIGH THA -+ /xe1/xa8/xb4 TAI THAM LETTER LOW TA -+ /xe1/xa8/xb5 TAI THAM LETTER LOW THA -+ /xe1/xa8/xb6 TAI THAM LETTER NA -+ /xe1/xa8/xb7 TAI THAM LETTER BA -+ /xe1/xa8/xb8 TAI THAM LETTER HIGH PA -+ /xe1/xa8/xb9 TAI THAM LETTER HIGH PHA -+ /xe1/xa8/xba TAI THAM LETTER HIGH FA -+ /xe1/xa8/xbb TAI THAM LETTER LOW PA -+ /xe1/xa8/xbc TAI THAM LETTER LOW FA -+ /xe1/xa8/xbd TAI THAM LETTER LOW PHA -+ /xe1/xa8/xbe TAI THAM LETTER MA -+ /xe1/xa8/xbf TAI THAM LETTER LOW YA -+ /xe1/xa9/x80 TAI THAM LETTER HIGH YA -+ /xe1/xa9/x81 TAI THAM LETTER RA -+ /xe1/xa9/x82 TAI THAM LETTER RUE -+ /xe1/xa9/x83 TAI THAM LETTER LA -+ /xe1/xa9/x84 TAI THAM LETTER LUE -+ /xe1/xa9/x85 TAI THAM LETTER WA -+ /xe1/xa9/x86 TAI THAM LETTER HIGH SHA -+ /xe1/xa9/x87 TAI THAM LETTER HIGH SSA -+ /xe1/xa9/x88 TAI THAM LETTER HIGH SA -+ /xe1/xa9/x89 TAI THAM LETTER HIGH HA -+ /xe1/xa9/x8a TAI THAM LETTER LLA -+ /xe1/xa9/x8b TAI THAM LETTER A -+ /xe1/xa9/x8c TAI THAM LETTER LOW HA -+ /xe1/xa9/x8d TAI THAM LETTER I -+ /xe1/xa9/x8e TAI THAM LETTER II -+ /xe1/xa9/x8f TAI THAM LETTER U -+ /xe1/xa9/x90 TAI THAM LETTER UU -+ /xe1/xa9/x91 TAI THAM LETTER EE -+ /xe1/xa9/x92 TAI THAM LETTER OO -+ /xe1/xa9/x93 TAI THAM LETTER LAE -+ /xe1/xa9/x94 TAI THAM LETTER GREAT SA -+ /xe1/xa9/x95 TAI THAM CONSONANT SIGN MEDIAL RA -+ /xe1/xa9/x96 TAI THAM CONSONANT SIGN MEDIAL LA -+ /xe1/xa9/x97 TAI THAM CONSONANT SIGN LA TANG LAI -+ /xe1/xa9/x98 TAI THAM SIGN MAI KANG LAI -+ /xe1/xa9/x99 TAI THAM CONSONANT SIGN FINAL NGA -+ /xe1/xa9/x9a TAI THAM CONSONANT SIGN LOW PA -+ /xe1/xa9/x9b TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA -+ /xe1/xa9/x9c TAI THAM CONSONANT SIGN MA -+ /xe1/xa9/x9d TAI THAM CONSONANT SIGN BA -+ /xe1/xa9/x9e TAI THAM CONSONANT SIGN SA -+ /xe1/xa9/xa0 TAI THAM SIGN SAKOT -+ /xe1/xa9/xa1 TAI THAM VOWEL SIGN A -+ /xe1/xa9/xa2 TAI THAM VOWEL SIGN MAI SAT -+ /xe1/xa9/xa3 TAI THAM VOWEL SIGN AA -+ /xe1/xa9/xa4 TAI THAM VOWEL SIGN TALL AA -+ /xe1/xa9/xa5 TAI THAM VOWEL SIGN I -+ /xe1/xa9/xa6 TAI THAM VOWEL SIGN II -+ /xe1/xa9/xa7 TAI THAM VOWEL SIGN UE -+ /xe1/xa9/xa8 TAI THAM VOWEL SIGN UUE -+ /xe1/xa9/xa9 TAI THAM VOWEL SIGN U -+ /xe1/xa9/xaa TAI THAM VOWEL SIGN UU -+ /xe1/xa9/xab TAI THAM VOWEL SIGN O -+ /xe1/xa9/xac TAI THAM VOWEL SIGN OA BELOW -+ /xe1/xa9/xad TAI THAM VOWEL SIGN OY -+ /xe1/xa9/xae TAI THAM VOWEL SIGN E -+ /xe1/xa9/xaf TAI THAM VOWEL SIGN AE -+ /xe1/xa9/xb0 TAI THAM VOWEL SIGN OO -+ /xe1/xa9/xb1 TAI THAM VOWEL SIGN AI -+ /xe1/xa9/xb2 TAI THAM VOWEL SIGN THAM AI -+ /xe1/xa9/xb3 TAI THAM VOWEL SIGN OA ABOVE -+ /xe1/xa9/xb4 TAI THAM SIGN MAI KANG -+ /xe1/xa9/xb5 TAI THAM SIGN TONE-1 -+ /xe1/xa9/xb6 TAI THAM SIGN TONE-2 -+ /xe1/xa9/xb7 TAI THAM SIGN KHUEN TONE-3 -+ /xe1/xa9/xb8 TAI THAM SIGN KHUEN TONE-4 -+ /xe1/xa9/xb9 TAI THAM SIGN KHUEN TONE-5 -+ /xe1/xa9/xba TAI THAM SIGN RA HAAM -+ /xe1/xa9/xbb TAI THAM SIGN MAI SAM -+ /xe1/xa9/xbc TAI THAM SIGN KHUEN-LUE KARAN -+ /xe1/xa9/xbf TAI THAM COMBINING CRYPTOGRAMMIC DOT -+ /xe1/xaa/x80 TAI THAM HORA DIGIT ZERO -+ /xe1/xaa/x81 TAI THAM HORA DIGIT ONE -+ /xe1/xaa/x82 TAI THAM HORA DIGIT TWO -+ /xe1/xaa/x83 TAI THAM HORA DIGIT THREE -+ /xe1/xaa/x84 TAI THAM HORA DIGIT FOUR -+ /xe1/xaa/x85 TAI THAM HORA DIGIT FIVE -+ /xe1/xaa/x86 TAI THAM HORA DIGIT SIX -+ /xe1/xaa/x87 TAI THAM HORA DIGIT SEVEN -+ /xe1/xaa/x88 TAI THAM HORA DIGIT EIGHT -+ /xe1/xaa/x89 TAI THAM HORA DIGIT NINE -+ /xe1/xaa/x90 TAI THAM THAM DIGIT ZERO -+ /xe1/xaa/x91 TAI THAM THAM DIGIT ONE -+ /xe1/xaa/x92 TAI THAM THAM DIGIT TWO -+ /xe1/xaa/x93 TAI THAM THAM DIGIT THREE -+ /xe1/xaa/x94 TAI THAM THAM DIGIT FOUR -+ /xe1/xaa/x95 TAI THAM THAM DIGIT FIVE -+ /xe1/xaa/x96 TAI THAM THAM DIGIT SIX -+ /xe1/xaa/x97 TAI THAM THAM DIGIT SEVEN -+ /xe1/xaa/x98 TAI THAM THAM DIGIT EIGHT -+ /xe1/xaa/x99 TAI THAM THAM DIGIT NINE -+ /xe1/xaa/xa0 TAI THAM SIGN WIANG -+ /xe1/xaa/xa1 TAI THAM SIGN WIANGWAAK -+ /xe1/xaa/xa2 TAI THAM SIGN SAWAN -+ /xe1/xaa/xa3 TAI THAM SIGN KEOW -+ /xe1/xaa/xa4 TAI THAM SIGN HOY -+ /xe1/xaa/xa5 TAI THAM SIGN DOKMAI -+ /xe1/xaa/xa6 TAI THAM SIGN REVERSED ROTATED RANA -+ /xe1/xaa/xa7 TAI THAM SIGN MAI YAMOK -+ /xe1/xaa/xa8 TAI THAM SIGN KAAN -+ /xe1/xaa/xa9 TAI THAM SIGN KAANKUU -+ /xe1/xaa/xaa TAI THAM SIGN SATKAAN -+ /xe1/xaa/xab TAI THAM SIGN SATKAANKUU -+ /xe1/xaa/xac TAI THAM SIGN HANG -+ /xe1/xaa/xad TAI THAM SIGN CAANG - /xe1/xac/x80 BALINESE SIGN ULU RICEM - /xe1/xac/x81 BALINESE SIGN ULU CANDRA - /xe1/xac/x82 BALINESE SIGN CECEK -@@ -5653,6 +6016,62 @@ CHARMAP - /xe1/xae/xb7 SUNDANESE DIGIT SEVEN - /xe1/xae/xb8 SUNDANESE DIGIT EIGHT - /xe1/xae/xb9 SUNDANESE DIGIT NINE -+ /xe1/xaf/x80 BATAK LETTER A -+ /xe1/xaf/x81 BATAK LETTER SIMALUNGUN A -+ /xe1/xaf/x82 BATAK LETTER HA -+ /xe1/xaf/x83 BATAK LETTER SIMALUNGUN HA -+ /xe1/xaf/x84 BATAK LETTER MANDAILING HA -+ /xe1/xaf/x85 BATAK LETTER BA -+ /xe1/xaf/x86 BATAK LETTER KARO BA -+ /xe1/xaf/x87 BATAK LETTER PA -+ /xe1/xaf/x88 BATAK LETTER SIMALUNGUN PA -+ /xe1/xaf/x89 BATAK LETTER NA -+ /xe1/xaf/x8a BATAK LETTER MANDAILING NA -+ /xe1/xaf/x8b BATAK LETTER WA -+ /xe1/xaf/x8c BATAK LETTER SIMALUNGUN WA -+ /xe1/xaf/x8d BATAK LETTER PAKPAK WA -+ /xe1/xaf/x8e BATAK LETTER GA -+ /xe1/xaf/x8f BATAK LETTER SIMALUNGUN GA -+ /xe1/xaf/x90 BATAK LETTER JA -+ /xe1/xaf/x91 BATAK LETTER DA -+ /xe1/xaf/x92 BATAK LETTER RA -+ /xe1/xaf/x93 BATAK LETTER SIMALUNGUN RA -+ /xe1/xaf/x94 BATAK LETTER MA -+ /xe1/xaf/x95 BATAK LETTER SIMALUNGUN MA -+ /xe1/xaf/x96 BATAK LETTER SOUTHERN TA -+ /xe1/xaf/x97 BATAK LETTER NORTHERN TA -+ /xe1/xaf/x98 BATAK LETTER SA -+ /xe1/xaf/x99 BATAK LETTER SIMALUNGUN SA -+ /xe1/xaf/x9a BATAK LETTER MANDAILING SA -+ /xe1/xaf/x9b BATAK LETTER YA -+ /xe1/xaf/x9c BATAK LETTER SIMALUNGUN YA -+ /xe1/xaf/x9d BATAK LETTER NGA -+ /xe1/xaf/x9e BATAK LETTER LA -+ /xe1/xaf/x9f BATAK LETTER SIMALUNGUN LA -+ /xe1/xaf/xa0 BATAK LETTER NYA -+ /xe1/xaf/xa1 BATAK LETTER CA -+ /xe1/xaf/xa2 BATAK LETTER NDA -+ /xe1/xaf/xa3 BATAK LETTER MBA -+ /xe1/xaf/xa4 BATAK LETTER I -+ /xe1/xaf/xa5 BATAK LETTER U -+ /xe1/xaf/xa6 BATAK SIGN TOMPI -+ /xe1/xaf/xa7 BATAK VOWEL SIGN E -+ /xe1/xaf/xa8 BATAK VOWEL SIGN PAKPAK E -+ /xe1/xaf/xa9 BATAK VOWEL SIGN EE -+ /xe1/xaf/xaa BATAK VOWEL SIGN I -+ /xe1/xaf/xab BATAK VOWEL SIGN KARO I -+ /xe1/xaf/xac BATAK VOWEL SIGN O -+ /xe1/xaf/xad BATAK VOWEL SIGN KARO O -+ /xe1/xaf/xae BATAK VOWEL SIGN U -+ /xe1/xaf/xaf BATAK VOWEL SIGN U FOR SIMALUNGUN SA -+ /xe1/xaf/xb0 BATAK CONSONANT SIGN NG -+ /xe1/xaf/xb1 BATAK CONSONANT SIGN H -+ /xe1/xaf/xb2 BATAK PANGOLAT -+ /xe1/xaf/xb3 BATAK PANONGONAN -+ /xe1/xaf/xbc BATAK SYMBOL BINDU NA METEK -+ /xe1/xaf/xbd BATAK SYMBOL BINDU PINARBORAS -+ /xe1/xaf/xbe BATAK SYMBOL BINDU JUDUL -+ /xe1/xaf/xbf BATAK SYMBOL BINDU PANGOLAT - /xe1/xb0/x80 LEPCHA LETTER KA - /xe1/xb0/x81 LEPCHA LETTER KLA - /xe1/xb0/x82 LEPCHA LETTER KHA -@@ -5775,6 +6194,41 @@ CHARMAP - /xe1/xb1/xbd OL CHIKI AHAD - /xe1/xb1/xbe OL CHIKI PUNCTUATION MUCAAD - /xe1/xb1/xbf OL CHIKI PUNCTUATION DOUBLE MUCAAD -+ /xe1/xb3/x90 VEDIC TONE KARSHANA -+ /xe1/xb3/x91 VEDIC TONE SHARA -+ /xe1/xb3/x92 VEDIC TONE PRENKHA -+ /xe1/xb3/x93 VEDIC SIGN NIHSHVASA -+ /xe1/xb3/x94 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA -+ /xe1/xb3/x95 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA -+ /xe1/xb3/x96 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA -+ /xe1/xb3/x97 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA -+ /xe1/xb3/x98 VEDIC TONE CANDRA BELOW -+ /xe1/xb3/x99 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER -+ /xe1/xb3/x9a VEDIC TONE DOUBLE SVARITA -+ /xe1/xb3/x9b VEDIC TONE TRIPLE SVARITA -+ /xe1/xb3/x9c VEDIC TONE KATHAKA ANUDATTA -+ /xe1/xb3/x9d VEDIC TONE DOT BELOW -+ /xe1/xb3/x9e VEDIC TONE TWO DOTS BELOW -+ /xe1/xb3/x9f VEDIC TONE THREE DOTS BELOW -+ /xe1/xb3/xa0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA -+ /xe1/xb3/xa1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA -+ /xe1/xb3/xa2 VEDIC SIGN VISARGA SVARITA -+ /xe1/xb3/xa3 VEDIC SIGN VISARGA UDATTA -+ /xe1/xb3/xa4 VEDIC SIGN REVERSED VISARGA UDATTA -+ /xe1/xb3/xa5 VEDIC SIGN VISARGA ANUDATTA -+ /xe1/xb3/xa6 VEDIC SIGN REVERSED VISARGA ANUDATTA -+ /xe1/xb3/xa7 VEDIC SIGN VISARGA UDATTA WITH TAIL -+ /xe1/xb3/xa8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL -+ /xe1/xb3/xa9 VEDIC SIGN ANUSVARA ANTARGOMUKHA -+ /xe1/xb3/xaa VEDIC SIGN ANUSVARA BAHIRGOMUKHA -+ /xe1/xb3/xab VEDIC SIGN ANUSVARA VAMAGOMUKHA -+ /xe1/xb3/xac VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL -+ /xe1/xb3/xad VEDIC SIGN TIRYAK -+ /xe1/xb3/xae VEDIC SIGN HEXIFORM LONG ANUSVARA -+ /xe1/xb3/xaf VEDIC SIGN LONG ANUSVARA -+ /xe1/xb3/xb0 VEDIC SIGN RTHANG LONG ANUSVARA -+ /xe1/xb3/xb1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA -+ /xe1/xb3/xb2 VEDIC SIGN ARDHAVISARGA - /xe1/xb4/x80 LATIN LETTER SMALL CAPITAL A - /xe1/xb4/x81 LATIN LETTER SMALL CAPITAL AE - /xe1/xb4/x82 LATIN SMALL LETTER TURNED AE -@@ -6006,6 +6460,8 @@ CHARMAP - /xe1/xb7/xa4 COMBINING LATIN SMALL LETTER S - /xe1/xb7/xa5 COMBINING LATIN SMALL LETTER LONG S - /xe1/xb7/xa6 COMBINING LATIN SMALL LETTER Z -+ /xe1/xb7/xbc COMBINING DOUBLE INVERTED BREVE BELOW -+ /xe1/xb7/xbd COMBINING ALMOST EQUAL TO BELOW - /xe1/xb7/xbe COMBINING LEFT ARROWHEAD ABOVE - /xe1/xb7/xbf COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW - /xe1/xb8/x80 LATIN CAPITAL LETTER A WITH RING BELOW -@@ -6638,6 +7094,14 @@ CHARMAP - /xe2/x82/x92 LATIN SUBSCRIPT SMALL LETTER O - /xe2/x82/x93 LATIN SUBSCRIPT SMALL LETTER X - /xe2/x82/x94 LATIN SUBSCRIPT SMALL LETTER SCHWA -+ /xe2/x82/x95 LATIN SUBSCRIPT SMALL LETTER H -+ /xe2/x82/x96 LATIN SUBSCRIPT SMALL LETTER K -+ /xe2/x82/x97 LATIN SUBSCRIPT SMALL LETTER L -+ /xe2/x82/x98 LATIN SUBSCRIPT SMALL LETTER M -+ /xe2/x82/x99 LATIN SUBSCRIPT SMALL LETTER N -+ /xe2/x82/x9a LATIN SUBSCRIPT SMALL LETTER P -+ /xe2/x82/x9b LATIN SUBSCRIPT SMALL LETTER S -+ /xe2/x82/x9c LATIN SUBSCRIPT SMALL LETTER T - /xe2/x82/xa0 EURO-CURRENCY SIGN - /xe2/x82/xa1 COLON SIGN - /xe2/x82/xa2 CRUZEIRO SIGN -@@ -6660,6 +7124,10 @@ CHARMAP - /xe2/x82/xb3 AUSTRAL SIGN - /xe2/x82/xb4 HRYVNIA SIGN - /xe2/x82/xb5 CEDI SIGN -+ /xe2/x82/xb6 LIVRE TOURNOIS SIGN -+ /xe2/x82/xb7 SPESMILO SIGN -+ /xe2/x82/xb8 TENGE SIGN -+ /xe2/x82/xb9 INDIAN RUPEE SIGN - /xe2/x83/x90 COMBINING LEFT HARPOON ABOVE - /xe2/x83/x91 COMBINING RIGHT HARPOON ABOVE - /xe2/x83/x92 COMBINING LONG VERTICAL LINE OVERLAY -@@ -6773,6 +7241,9 @@ CHARMAP - /xe2/x85/x8d AKTIESELSKAB - /xe2/x85/x8e TURNED SMALL F - /xe2/x85/x8f SYMBOL FOR SAMARITAN SOURCE -+ /xe2/x85/x90 VULGAR FRACTION ONE SEVENTH -+ /xe2/x85/x91 VULGAR FRACTION ONE NINTH -+ /xe2/x85/x92 VULGAR FRACTION ONE TENTH - /xe2/x85/x93 VULGAR FRACTION ONE THIRD - /xe2/x85/x94 VULGAR FRACTION TWO THIRDS - /xe2/x85/x95 VULGAR FRACTION ONE FIFTH -@@ -6827,6 +7298,7 @@ CHARMAP - /xe2/x86/x86 ROMAN NUMERAL FIFTY EARLY FORM - /xe2/x86/x87 ROMAN NUMERAL FIFTY THOUSAND - /xe2/x86/x88 ROMAN NUMERAL ONE HUNDRED THOUSAND -+ /xe2/x86/x89 VULGAR FRACTION ZERO THIRDS - /xe2/x86/x90 LEFTWARDS ARROW - /xe2/x86/x91 UPWARDS ARROW - /xe2/x86/x92 RIGHTWARDS ARROW -@@ -7427,6 +7899,18 @@ CHARMAP - /xe2/x8f/xa5 FLATNESS - /xe2/x8f/xa6 AC CURRENT - /xe2/x8f/xa7 ELECTRICAL INTERSECTION -+ /xe2/x8f/xa8 DECIMAL EXPONENT SYMBOL -+ /xe2/x8f/xa9 BLACK RIGHT-POINTING DOUBLE TRIANGLE -+ /xe2/x8f/xaa BLACK LEFT-POINTING DOUBLE TRIANGLE -+ /xe2/x8f/xab BLACK UP-POINTING DOUBLE TRIANGLE -+ /xe2/x8f/xac BLACK DOWN-POINTING DOUBLE TRIANGLE -+ /xe2/x8f/xad BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -+ /xe2/x8f/xae BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR -+ /xe2/x8f/xaf BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR -+ /xe2/x8f/xb0 ALARM CLOCK -+ /xe2/x8f/xb1 STOPWATCH -+ /xe2/x8f/xb2 TIMER CLOCK -+ /xe2/x8f/xb3 HOURGLASS WITH FLOWING SAND - /xe2/x90/x80 SYMBOL FOR NULL - /xe2/x90/x81 SYMBOL FOR START OF HEADING - /xe2/x90/x82 SYMBOL FOR START OF TEXT -@@ -8051,6 +8535,8 @@ CHARMAP - /xe2/x9a/x9b ATOM SYMBOL - /xe2/x9a/x9c FLEUR-DE-LIS - /xe2/x9a/x9d OUTLINED WHITE STAR -+ /xe2/x9a/x9e THREE LINES CONVERGING RIGHT -+ /xe2/x9a/x9f THREE LINES CONVERGING LEFT - /xe2/x9a/xa0 WARNING SIGN - /xe2/x9a/xa1 HIGH VOLTAGE SIGN - /xe2/x9a/xa2 DOUBLED FEMALE SIGN -@@ -8080,18 +8566,84 @@ CHARMAP - /xe2/x9a/xba SEMISEXTILE - /xe2/x9a/xbb QUINCUNX - /xe2/x9a/xbc SESQUIQUADRATE -+ /xe2/x9a/xbd SOCCER BALL -+ /xe2/x9a/xbe BASEBALL -+ /xe2/x9a/xbf SQUARED KEY - /xe2/x9b/x80 WHITE DRAUGHTS MAN - /xe2/x9b/x81 WHITE DRAUGHTS KING - /xe2/x9b/x82 BLACK DRAUGHTS MAN - /xe2/x9b/x83 BLACK DRAUGHTS KING -+ /xe2/x9b/x84 SNOWMAN WITHOUT SNOW -+ /xe2/x9b/x85 SUN BEHIND CLOUD -+ /xe2/x9b/x86 RAIN -+ /xe2/x9b/x87 BLACK SNOWMAN -+ /xe2/x9b/x88 THUNDER CLOUD AND RAIN -+ /xe2/x9b/x89 TURNED WHITE SHOGI PIECE -+ /xe2/x9b/x8a TURNED BLACK SHOGI PIECE -+ /xe2/x9b/x8b WHITE DIAMOND IN SQUARE -+ /xe2/x9b/x8c CROSSING LANES -+ /xe2/x9b/x8d DISABLED CAR -+ /xe2/x9b/x8e OPHIUCHUS -+ /xe2/x9b/x8f PICK -+ /xe2/x9b/x90 CAR SLIDING -+ /xe2/x9b/x91 HELMET WITH WHITE CROSS -+ /xe2/x9b/x92 CIRCLED CROSSING LANES -+ /xe2/x9b/x93 CHAINS -+ /xe2/x9b/x94 NO ENTRY -+ /xe2/x9b/x95 ALTERNATE ONE-WAY LEFT WAY TRAFFIC -+ /xe2/x9b/x96 BLACK TWO-WAY LEFT WAY TRAFFIC -+ /xe2/x9b/x97 WHITE TWO-WAY LEFT WAY TRAFFIC -+ /xe2/x9b/x98 BLACK LEFT LANE MERGE -+ /xe2/x9b/x99 WHITE LEFT LANE MERGE -+ /xe2/x9b/x9a DRIVE SLOW SIGN -+ /xe2/x9b/x9b HEAVY WHITE DOWN-POINTING TRIANGLE -+ /xe2/x9b/x9c LEFT CLOSED ENTRY -+ /xe2/x9b/x9d SQUARED SALTIRE -+ /xe2/x9b/x9e FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE -+ /xe2/x9b/x9f BLACK TRUCK -+ /xe2/x9b/xa0 RESTRICTED LEFT ENTRY-1 -+ /xe2/x9b/xa1 RESTRICTED LEFT ENTRY-2 -+ /xe2/x9b/xa2 ASTRONOMICAL SYMBOL FOR URANUS -+ /xe2/x9b/xa3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE -+ /xe2/x9b/xa4 PENTAGRAM -+ /xe2/x9b/xa5 RIGHT-HANDED INTERLACED PENTAGRAM -+ /xe2/x9b/xa6 LEFT-HANDED INTERLACED PENTAGRAM -+ /xe2/x9b/xa7 INVERTED PENTAGRAM -+ /xe2/x9b/xa8 BLACK CROSS ON SHIELD -+ /xe2/x9b/xa9 SHINTO SHRINE -+ /xe2/x9b/xaa CHURCH -+ /xe2/x9b/xab CASTLE -+ /xe2/x9b/xac HISTORIC SITE -+ /xe2/x9b/xad GEAR WITHOUT HUB -+ /xe2/x9b/xae GEAR WITH HANDLES -+ /xe2/x9b/xaf MAP SYMBOL FOR LIGHTHOUSE -+ /xe2/x9b/xb0 MOUNTAIN -+ /xe2/x9b/xb1 UMBRELLA ON GROUND -+ /xe2/x9b/xb2 FOUNTAIN -+ /xe2/x9b/xb3 FLAG IN HOLE -+ /xe2/x9b/xb4 FERRY -+ /xe2/x9b/xb5 SAILBOAT -+ /xe2/x9b/xb6 SQUARE FOUR CORNERS -+ /xe2/x9b/xb7 SKIER -+ /xe2/x9b/xb8 ICE SKATE -+ /xe2/x9b/xb9 PERSON WITH BALL -+ /xe2/x9b/xba TENT -+ /xe2/x9b/xbb JAPANESE BANK SYMBOL -+ /xe2/x9b/xbc HEADSTONE GRAVEYARD SYMBOL -+ /xe2/x9b/xbd FUEL PUMP -+ /xe2/x9b/xbe CUP ON BLACK SQUARE -+ /xe2/x9b/xbf WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE - /xe2/x9c/x81 UPPER BLADE SCISSORS - /xe2/x9c/x82 BLACK SCISSORS - /xe2/x9c/x83 LOWER BLADE SCISSORS - /xe2/x9c/x84 WHITE SCISSORS -+ /xe2/x9c/x85 WHITE HEAVY CHECK MARK - /xe2/x9c/x86 TELEPHONE LOCATION SIGN - /xe2/x9c/x87 TAPE DRIVE - /xe2/x9c/x88 AIRPLANE - /xe2/x9c/x89 ENVELOPE -+ /xe2/x9c/x8a RAISED FIST -+ /xe2/x9c/x8b RAISED HAND - /xe2/x9c/x8c VICTORY HAND - /xe2/x9c/x8d WRITING HAND - /xe2/x9c/x8e LOWER RIGHT PENCIL -@@ -8120,6 +8672,7 @@ CHARMAP - /xe2/x9c/xa5 FOUR CLUB-SPOKED ASTERISK - /xe2/x9c/xa6 BLACK FOUR POINTED STAR - /xe2/x9c/xa7 WHITE FOUR POINTED STAR -+ /xe2/x9c/xa8 SPARKLES - /xe2/x9c/xa9 STRESS OUTLINED WHITE STAR - /xe2/x9c/xaa CIRCLED WHITE STAR - /xe2/x9c/xab OPEN CENTRE BLACK STAR -@@ -8155,12 +8708,18 @@ CHARMAP - /xe2/x9d/x89 BALLOON-SPOKED ASTERISK - /xe2/x9d/x8a EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - /xe2/x9d/x8b HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -+ /xe2/x9d/x8c CROSS MARK - /xe2/x9d/x8d SHADOWED WHITE CIRCLE -+ /xe2/x9d/x8e NEGATIVE SQUARED CROSS MARK - /xe2/x9d/x8f LOWER RIGHT DROP-SHADOWED WHITE SQUARE - /xe2/x9d/x90 UPPER RIGHT DROP-SHADOWED WHITE SQUARE - /xe2/x9d/x91 LOWER RIGHT SHADOWED WHITE SQUARE - /xe2/x9d/x92 UPPER RIGHT SHADOWED WHITE SQUARE -+ /xe2/x9d/x93 BLACK QUESTION MARK ORNAMENT -+ /xe2/x9d/x94 WHITE QUESTION MARK ORNAMENT -+ /xe2/x9d/x95 WHITE EXCLAMATION MARK ORNAMENT - /xe2/x9d/x96 BLACK DIAMOND MINUS WHITE X -+ /xe2/x9d/x97 HEAVY EXCLAMATION MARK SYMBOL - /xe2/x9d/x98 LIGHT VERTICAL BAR - /xe2/x9d/x99 MEDIUM VERTICAL BAR - /xe2/x9d/x9a HEAVY VERTICAL BAR -@@ -8168,6 +8727,8 @@ CHARMAP - /xe2/x9d/x9c HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT - /xe2/x9d/x9d HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT - /xe2/x9d/x9e HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -+ /xe2/x9d/x9f HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT -+ /xe2/x9d/xa0 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT - /xe2/x9d/xa1 CURVED STEM PARAGRAPH SIGN ORNAMENT - /xe2/x9d/xa2 HEAVY EXCLAMATION MARK ORNAMENT - /xe2/x9d/xa3 HEAVY HEART EXCLAMATION MARK ORNAMENT -@@ -8220,6 +8781,9 @@ CHARMAP - /xe2/x9e/x92 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE - /xe2/x9e/x93 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN - /xe2/x9e/x94 HEAVY WIDE-HEADED RIGHTWARDS ARROW -+ /xe2/x9e/x95 HEAVY PLUS SIGN -+ /xe2/x9e/x96 HEAVY MINUS SIGN -+ /xe2/x9e/x97 HEAVY DIVISION SIGN - /xe2/x9e/x98 HEAVY SOUTH EAST ARROW - /xe2/x9e/x99 HEAVY RIGHTWARDS ARROW - /xe2/x9e/x9a HEAVY NORTH EAST ARROW -@@ -8244,6 +8808,7 @@ CHARMAP - /xe2/x9e/xad HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - /xe2/x9e/xae HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - /xe2/x9e/xaf NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -+ /xe2/x9e/xb0 CURLY LOOP - /xe2/x9e/xb1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - /xe2/x9e/xb2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW - /xe2/x9e/xb3 WHITE-FEATHERED RIGHTWARDS ARROW -@@ -8258,6 +8823,7 @@ CHARMAP - /xe2/x9e/xbc WEDGE-TAILED RIGHTWARDS ARROW - /xe2/x9e/xbd HEAVY WEDGE-TAILED RIGHTWARDS ARROW - /xe2/x9e/xbe OPEN-OUTLINED RIGHTWARDS ARROW -+ /xe2/x9e/xbf DOUBLE CURLY LOOP - /xe2/x9f/x80 THREE DIMENSIONAL ANGLE - /xe2/x9f/x81 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE - /xe2/x9f/x82 PERPENDICULAR -@@ -8270,6 +8836,8 @@ CHARMAP - /xe2/x9f/x89 SUPERSET PRECEDING SOLIDUS - /xe2/x9f/x8a VERTICAL BAR WITH HORIZONTAL STROKE - /xe2/x9f/x8c LONG DIVISION -+ /xe2/x9f/x8e SQUARED LOGICAL AND -+ /xe2/x9f/x8f SQUARED LOGICAL OR - /xe2/x9f/x90 WHITE DIAMOND WITH CENTRED DOT - /xe2/x9f/x91 AND WITH DOT - /xe2/x9f/x92 ELEMENT OF OPENING UPWARDS -@@ -9168,6 +9736,11 @@ CHARMAP - /xe2/xad/x92 WHITE SMALL STAR - /xe2/xad/x93 BLACK RIGHT-POINTING PENTAGON - /xe2/xad/x94 WHITE RIGHT-POINTING PENTAGON -+ /xe2/xad/x95 HEAVY LARGE CIRCLE -+ /xe2/xad/x96 HEAVY OVAL WITH OVAL INSIDE -+ /xe2/xad/x97 HEAVY CIRCLE WITH CIRCLE INSIDE -+ /xe2/xad/x98 HEAVY CIRCLE -+ /xe2/xad/x99 HEAVY CIRCLED SALTIRE - /xe2/xb0/x80 GLAGOLITIC CAPITAL LETTER AZU - /xe2/xb0/x81 GLAGOLITIC CAPITAL LETTER BUKY - /xe2/xb0/x82 GLAGOLITIC CAPITAL LETTER VEDE -@@ -9278,6 +9851,7 @@ CHARMAP - /xe2/xb1/xad LATIN CAPITAL LETTER ALPHA - /xe2/xb1/xae LATIN CAPITAL LETTER M WITH HOOK - /xe2/xb1/xaf LATIN CAPITAL LETTER TURNED A -+ /xe2/xb1/xb0 LATIN CAPITAL LETTER TURNED ALPHA - /xe2/xb1/xb1 LATIN SMALL LETTER V WITH RIGHT HOOK - /xe2/xb1/xb2 LATIN CAPITAL LETTER W WITH HOOK - /xe2/xb1/xb3 LATIN SMALL LETTER W WITH HOOK -@@ -9291,6 +9865,8 @@ CHARMAP - /xe2/xb1/xbb LATIN LETTER SMALL CAPITAL TURNED E - /xe2/xb1/xbc LATIN SUBSCRIPT SMALL LETTER J - /xe2/xb1/xbd MODIFIER LETTER CAPITAL V -+ /xe2/xb1/xbe LATIN CAPITAL LETTER S WITH SWASH TAIL -+ /xe2/xb1/xbf LATIN CAPITAL LETTER Z WITH SWASH TAIL - /xe2/xb2/x80 COPTIC CAPITAL LETTER ALFA - /xe2/xb2/x81 COPTIC SMALL LETTER ALFA - /xe2/xb2/x82 COPTIC CAPITAL LETTER VIDA -@@ -9398,6 +9974,13 @@ CHARMAP - /xe2/xb3/xa8 COPTIC SYMBOL TAU RO - /xe2/xb3/xa9 COPTIC SYMBOL KHI RO - /xe2/xb3/xaa COPTIC SYMBOL SHIMA SIMA -+ /xe2/xb3/xab COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI -+ /xe2/xb3/xac COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI -+ /xe2/xb3/xad COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA -+ /xe2/xb3/xae COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA -+ /xe2/xb3/xaf COPTIC COMBINING NI ABOVE -+ /xe2/xb3/xb0 COPTIC COMBINING SPIRITUS ASPER -+ /xe2/xb3/xb1 COPTIC COMBINING SPIRITUS LENIS - /xe2/xb3/xb9 COPTIC OLD NUBIAN FULL STOP - /xe2/xb3/xba COPTIC OLD NUBIAN DIRECT QUESTION MARK - /xe2/xb3/xbb COPTIC OLD NUBIAN INDIRECT QUESTION MARK -@@ -9498,6 +10081,8 @@ CHARMAP - /xe2/xb5/xa4 TIFINAGH LETTER TAWELLEMET YAZ - /xe2/xb5/xa5 TIFINAGH LETTER YAZZ - /xe2/xb5/xaf TIFINAGH MODIFIER LETTER LABIALIZATION MARK -+ /xe2/xb5/xb0 TIFINAGH SEPARATOR MARK -+ /xe2/xb5/xbf TIFINAGH CONSONANT JOINER - /xe2/xb6/x80 ETHIOPIC SYLLABLE LOA - /xe2/xb6/x81 ETHIOPIC SYLLABLE MOA - /xe2/xb6/x82 ETHIOPIC SYLLABLE ROA -@@ -9658,6 +10243,7 @@ CHARMAP - /xe2/xb8/xae REVERSED QUESTION MARK - /xe2/xb8/xaf VERTICAL TILDE - /xe2/xb8/xb0 RING POINT -+ /xe2/xb8/xb1 WORD SEPARATOR MIDDLE DOT - /xe2/xba/x80 CJK RADICAL REPEAT - /xe2/xba/x81 CJK RADICAL CLIFF - /xe2/xba/x82 CJK RADICAL SECOND ONE -@@ -10427,6 +11013,9 @@ CHARMAP - /xe3/x86/xb5 BOPOMOFO FINAL LETTER T - /xe3/x86/xb6 BOPOMOFO FINAL LETTER K - /xe3/x86/xb7 BOPOMOFO FINAL LETTER H -+ /xe3/x86/xb8 BOPOMOFO LETTER GH -+ /xe3/x86/xb9 BOPOMOFO LETTER LH -+ /xe3/x86/xba BOPOMOFO LETTER ZY - /xe3/x87/x80 CJK STROKE T - /xe3/x87/x81 CJK STROKE WG - /xe3/x87/x82 CJK STROKE XG -@@ -10546,6 +11135,18 @@ CHARMAP - /xe3/x89/x81 PARENTHESIZED IDEOGRAPH REST - /xe3/x89/x82 PARENTHESIZED IDEOGRAPH SELF - /xe3/x89/x83 PARENTHESIZED IDEOGRAPH REACH -+ /xe3/x89/x84 CIRCLED IDEOGRAPH QUESTION -+ /xe3/x89/x85 CIRCLED IDEOGRAPH KINDERGARTEN -+ /xe3/x89/x86 CIRCLED IDEOGRAPH SCHOOL -+ /xe3/x89/x87 CIRCLED IDEOGRAPH KOTO -+ /xe3/x89/x88 CIRCLED NUMBER TEN ON BLACK SQUARE -+ /xe3/x89/x89 CIRCLED NUMBER TWENTY ON BLACK SQUARE -+ /xe3/x89/x8a CIRCLED NUMBER THIRTY ON BLACK SQUARE -+ /xe3/x89/x8b CIRCLED NUMBER FORTY ON BLACK SQUARE -+ /xe3/x89/x8c CIRCLED NUMBER FIFTY ON BLACK SQUARE -+ /xe3/x89/x8d CIRCLED NUMBER SIXTY ON BLACK SQUARE -+ /xe3/x89/x8e CIRCLED NUMBER SEVENTY ON BLACK SQUARE -+ /xe3/x89/x8f CIRCLED NUMBER EIGHTY ON BLACK SQUARE - /xe3/x89/x90 PARTNERSHIP SIGN - /xe3/x89/x91 CIRCLED NUMBER TWENTY ONE - /xe3/x89/x92 CIRCLED NUMBER TWENTY TWO -@@ -12691,6 +13292,54 @@ CHARMAP - /xea/x93/x84 YI RADICAL ZZIET - /xea/x93/x85 YI RADICAL NBIE - /xea/x93/x86 YI RADICAL KE -+ /xea/x93/x90 LISU LETTER BA -+ /xea/x93/x91 LISU LETTER PA -+ /xea/x93/x92 LISU LETTER PHA -+ /xea/x93/x93 LISU LETTER DA -+ /xea/x93/x94 LISU LETTER TA -+ /xea/x93/x95 LISU LETTER THA -+ /xea/x93/x96 LISU LETTER GA -+ /xea/x93/x97 LISU LETTER KA -+ /xea/x93/x98 LISU LETTER KHA -+ /xea/x93/x99 LISU LETTER JA -+ /xea/x93/x9a LISU LETTER CA -+ /xea/x93/x9b LISU LETTER CHA -+ /xea/x93/x9c LISU LETTER DZA -+ /xea/x93/x9d LISU LETTER TSA -+ /xea/x93/x9e LISU LETTER TSHA -+ /xea/x93/x9f LISU LETTER MA -+ /xea/x93/xa0 LISU LETTER NA -+ /xea/x93/xa1 LISU LETTER LA -+ /xea/x93/xa2 LISU LETTER SA -+ /xea/x93/xa3 LISU LETTER ZHA -+ /xea/x93/xa4 LISU LETTER ZA -+ /xea/x93/xa5 LISU LETTER NGA -+ /xea/x93/xa6 LISU LETTER HA -+ /xea/x93/xa7 LISU LETTER XA -+ /xea/x93/xa8 LISU LETTER HHA -+ /xea/x93/xa9 LISU LETTER FA -+ /xea/x93/xaa LISU LETTER WA -+ /xea/x93/xab LISU LETTER SHA -+ /xea/x93/xac LISU LETTER YA -+ /xea/x93/xad LISU LETTER GHA -+ /xea/x93/xae LISU LETTER A -+ /xea/x93/xaf LISU LETTER AE -+ /xea/x93/xb0 LISU LETTER E -+ /xea/x93/xb1 LISU LETTER EU -+ /xea/x93/xb2 LISU LETTER I -+ /xea/x93/xb3 LISU LETTER O -+ /xea/x93/xb4 LISU LETTER U -+ /xea/x93/xb5 LISU LETTER UE -+ /xea/x93/xb6 LISU LETTER UH -+ /xea/x93/xb7 LISU LETTER OE -+ /xea/x93/xb8 LISU LETTER TONE MYA TI -+ /xea/x93/xb9 LISU LETTER TONE NA PO -+ /xea/x93/xba LISU LETTER TONE MYA CYA -+ /xea/x93/xbb LISU LETTER TONE MYA BO -+ /xea/x93/xbc LISU LETTER TONE MYA NA -+ /xea/x93/xbd LISU LETTER TONE MYA JEU -+ /xea/x93/xbe LISU PUNCTUATION COMMA -+ /xea/x93/xbf LISU PUNCTUATION FULL STOP - /xea/x94/x80 VAI SYLLABLE EE - /xea/x94/x81 VAI SYLLABLE EEN - /xea/x94/x82 VAI SYLLABLE HEE -@@ -13023,6 +13672,8 @@ CHARMAP - /xea/x99/x9d CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS - /xea/x99/x9e CYRILLIC CAPITAL LETTER YN - /xea/x99/x9f CYRILLIC SMALL LETTER YN -+ /xea/x99/xa0 CYRILLIC CAPITAL LETTER REVERSED TSE -+ /xea/x99/xa1 CYRILLIC SMALL LETTER REVERSED TSE - /xea/x99/xa2 CYRILLIC CAPITAL LETTER SOFT DE - /xea/x99/xa3 CYRILLIC SMALL LETTER SOFT DE - /xea/x99/xa4 CYRILLIC CAPITAL LETTER SOFT EL -@@ -13069,6 +13720,94 @@ CHARMAP - /xea/x9a/x95 CYRILLIC SMALL LETTER HWE - /xea/x9a/x96 CYRILLIC CAPITAL LETTER SHWE - /xea/x9a/x97 CYRILLIC SMALL LETTER SHWE -+ /xea/x9a/xa0 BAMUM LETTER A -+ /xea/x9a/xa1 BAMUM LETTER KA -+ /xea/x9a/xa2 BAMUM LETTER U -+ /xea/x9a/xa3 BAMUM LETTER KU -+ /xea/x9a/xa4 BAMUM LETTER EE -+ /xea/x9a/xa5 BAMUM LETTER REE -+ /xea/x9a/xa6 BAMUM LETTER TAE -+ /xea/x9a/xa7 BAMUM LETTER O -+ /xea/x9a/xa8 BAMUM LETTER NYI -+ /xea/x9a/xa9 BAMUM LETTER I -+ /xea/x9a/xaa BAMUM LETTER LA -+ /xea/x9a/xab BAMUM LETTER PA -+ /xea/x9a/xac BAMUM LETTER RII -+ /xea/x9a/xad BAMUM LETTER RIEE -+ /xea/x9a/xae BAMUM LETTER LEEEE -+ /xea/x9a/xaf BAMUM LETTER MEEEE -+ /xea/x9a/xb0 BAMUM LETTER TAA -+ /xea/x9a/xb1 BAMUM LETTER NDAA -+ /xea/x9a/xb2 BAMUM LETTER NJAEM -+ /xea/x9a/xb3 BAMUM LETTER M -+ /xea/x9a/xb4 BAMUM LETTER SUU -+ /xea/x9a/xb5 BAMUM LETTER MU -+ /xea/x9a/xb6 BAMUM LETTER SHII -+ /xea/x9a/xb7 BAMUM LETTER SI -+ /xea/x9a/xb8 BAMUM LETTER SHEUX -+ /xea/x9a/xb9 BAMUM LETTER SEUX -+ /xea/x9a/xba BAMUM LETTER KYEE -+ /xea/x9a/xbb BAMUM LETTER KET -+ /xea/x9a/xbc BAMUM LETTER NUAE -+ /xea/x9a/xbd BAMUM LETTER NU -+ /xea/x9a/xbe BAMUM LETTER NJUAE -+ /xea/x9a/xbf BAMUM LETTER YOQ -+ /xea/x9b/x80 BAMUM LETTER SHU -+ /xea/x9b/x81 BAMUM LETTER YUQ -+ /xea/x9b/x82 BAMUM LETTER YA -+ /xea/x9b/x83 BAMUM LETTER NSHA -+ /xea/x9b/x84 BAMUM LETTER KEUX -+ /xea/x9b/x85 BAMUM LETTER PEUX -+ /xea/x9b/x86 BAMUM LETTER NJEE -+ /xea/x9b/x87 BAMUM LETTER NTEE -+ /xea/x9b/x88 BAMUM LETTER PUE -+ /xea/x9b/x89 BAMUM LETTER WUE -+ /xea/x9b/x8a BAMUM LETTER PEE -+ /xea/x9b/x8b BAMUM LETTER FEE -+ /xea/x9b/x8c BAMUM LETTER RU -+ /xea/x9b/x8d BAMUM LETTER LU -+ /xea/x9b/x8e BAMUM LETTER MI -+ /xea/x9b/x8f BAMUM LETTER NI -+ /xea/x9b/x90 BAMUM LETTER REUX -+ /xea/x9b/x91 BAMUM LETTER RAE -+ /xea/x9b/x92 BAMUM LETTER KEN -+ /xea/x9b/x93 BAMUM LETTER NGKWAEN -+ /xea/x9b/x94 BAMUM LETTER NGGA -+ /xea/x9b/x95 BAMUM LETTER NGA -+ /xea/x9b/x96 BAMUM LETTER SHO -+ /xea/x9b/x97 BAMUM LETTER PUAE -+ /xea/x9b/x98 BAMUM LETTER FU -+ /xea/x9b/x99 BAMUM LETTER FOM -+ /xea/x9b/x9a BAMUM LETTER WA -+ /xea/x9b/x9b BAMUM LETTER NA -+ /xea/x9b/x9c BAMUM LETTER LI -+ /xea/x9b/x9d BAMUM LETTER PI -+ /xea/x9b/x9e BAMUM LETTER LOQ -+ /xea/x9b/x9f BAMUM LETTER KO -+ /xea/x9b/xa0 BAMUM LETTER MBEN -+ /xea/x9b/xa1 BAMUM LETTER REN -+ /xea/x9b/xa2 BAMUM LETTER MEN -+ /xea/x9b/xa3 BAMUM LETTER MA -+ /xea/x9b/xa4 BAMUM LETTER TI -+ /xea/x9b/xa5 BAMUM LETTER KI -+ /xea/x9b/xa6 BAMUM LETTER MO -+ /xea/x9b/xa7 BAMUM LETTER MBAA -+ /xea/x9b/xa8 BAMUM LETTER TET -+ /xea/x9b/xa9 BAMUM LETTER KPA -+ /xea/x9b/xaa BAMUM LETTER TEN -+ /xea/x9b/xab BAMUM LETTER NTUU -+ /xea/x9b/xac BAMUM LETTER SAMBA -+ /xea/x9b/xad BAMUM LETTER FAAMAE -+ /xea/x9b/xae BAMUM LETTER KOVUU -+ /xea/x9b/xaf BAMUM LETTER KOGHOM -+ /xea/x9b/xb0 BAMUM COMBINING MARK KOQNDON -+ /xea/x9b/xb1 BAMUM COMBINING MARK TUKWENTIS -+ /xea/x9b/xb2 BAMUM NJAEMLI -+ /xea/x9b/xb3 BAMUM FULL STOP -+ /xea/x9b/xb4 BAMUM COLON -+ /xea/x9b/xb5 BAMUM COMMA -+ /xea/x9b/xb6 BAMUM SEMICOLON -+ /xea/x9b/xb7 BAMUM QUESTION MARK - /xea/x9c/x80 MODIFIER LETTER CHINESE TONE YIN PING - /xea/x9c/x81 MODIFIER LETTER CHINESE TONE YANG PING - /xea/x9c/x82 MODIFIER LETTER CHINESE TONE YIN SHANG -@@ -13210,6 +13949,21 @@ CHARMAP - /xea/x9e/x8a MODIFIER LETTER SHORT EQUALS SIGN - /xea/x9e/x8b LATIN CAPITAL LETTER SALTILLO - /xea/x9e/x8c LATIN SMALL LETTER SALTILLO -+ /xea/x9e/x8d LATIN CAPITAL LETTER TURNED H -+ /xea/x9e/x8e LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT -+ /xea/x9e/x90 LATIN CAPITAL LETTER N WITH DESCENDER -+ /xea/x9e/x91 LATIN SMALL LETTER N WITH DESCENDER -+ /xea/x9e/xa0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE -+ /xea/x9e/xa1 LATIN SMALL LETTER G WITH OBLIQUE STROKE -+ /xea/x9e/xa2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE -+ /xea/x9e/xa3 LATIN SMALL LETTER K WITH OBLIQUE STROKE -+ /xea/x9e/xa4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE -+ /xea/x9e/xa5 LATIN SMALL LETTER N WITH OBLIQUE STROKE -+ /xea/x9e/xa6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE -+ /xea/x9e/xa7 LATIN SMALL LETTER R WITH OBLIQUE STROKE -+ /xea/x9e/xa8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE -+ /xea/x9e/xa9 LATIN SMALL LETTER S WITH OBLIQUE STROKE -+ /xea/x9f/xba LATIN LETTER SMALL CAPITAL TURNED M - /xea/x9f/xbb LATIN EPIGRAPHIC LETTER REVERSED F - /xea/x9f/xbc LATIN EPIGRAPHIC LETTER REVERSED P - /xea/x9f/xbd LATIN EPIGRAPHIC LETTER INVERTED M -@@ -13259,6 +14013,16 @@ CHARMAP - /xea/xa0/xa9 SYLOTI NAGRI POETRY MARK-2 - /xea/xa0/xaa SYLOTI NAGRI POETRY MARK-3 - /xea/xa0/xab SYLOTI NAGRI POETRY MARK-4 -+ /xea/xa0/xb0 NORTH INDIC FRACTION ONE QUARTER -+ /xea/xa0/xb1 NORTH INDIC FRACTION ONE HALF -+ /xea/xa0/xb2 NORTH INDIC FRACTION THREE QUARTERS -+ /xea/xa0/xb3 NORTH INDIC FRACTION ONE SIXTEENTH -+ /xea/xa0/xb4 NORTH INDIC FRACTION ONE EIGHTH -+ /xea/xa0/xb5 NORTH INDIC FRACTION THREE SIXTEENTHS -+ /xea/xa0/xb6 NORTH INDIC QUARTER MARK -+ /xea/xa0/xb7 NORTH INDIC PLACEHOLDER MARK -+ /xea/xa0/xb8 NORTH INDIC RUPEE MARK -+ /xea/xa0/xb9 NORTH INDIC QUANTITY MARK - /xea/xa1/x80 PHAGS-PA LETTER KA - /xea/xa1/x81 PHAGS-PA LETTER KHA - /xea/xa1/x82 PHAGS-PA LETTER GA -@@ -13396,6 +14160,34 @@ CHARMAP - /xea/xa3/x97 SAURASHTRA DIGIT SEVEN - /xea/xa3/x98 SAURASHTRA DIGIT EIGHT - /xea/xa3/x99 SAURASHTRA DIGIT NINE -+ /xea/xa3/xa0 COMBINING DEVANAGARI DIGIT ZERO -+ /xea/xa3/xa1 COMBINING DEVANAGARI DIGIT ONE -+ /xea/xa3/xa2 COMBINING DEVANAGARI DIGIT TWO -+ /xea/xa3/xa3 COMBINING DEVANAGARI DIGIT THREE -+ /xea/xa3/xa4 COMBINING DEVANAGARI DIGIT FOUR -+ /xea/xa3/xa5 COMBINING DEVANAGARI DIGIT FIVE -+ /xea/xa3/xa6 COMBINING DEVANAGARI DIGIT SIX -+ /xea/xa3/xa7 COMBINING DEVANAGARI DIGIT SEVEN -+ /xea/xa3/xa8 COMBINING DEVANAGARI DIGIT EIGHT -+ /xea/xa3/xa9 COMBINING DEVANAGARI DIGIT NINE -+ /xea/xa3/xaa COMBINING DEVANAGARI LETTER A -+ /xea/xa3/xab COMBINING DEVANAGARI LETTER U -+ /xea/xa3/xac COMBINING DEVANAGARI LETTER KA -+ /xea/xa3/xad COMBINING DEVANAGARI LETTER NA -+ /xea/xa3/xae COMBINING DEVANAGARI LETTER PA -+ /xea/xa3/xaf COMBINING DEVANAGARI LETTER RA -+ /xea/xa3/xb0 COMBINING DEVANAGARI LETTER VI -+ /xea/xa3/xb1 COMBINING DEVANAGARI SIGN AVAGRAHA -+ /xea/xa3/xb2 DEVANAGARI SIGN SPACING CANDRABINDU -+ /xea/xa3/xb3 DEVANAGARI SIGN CANDRABINDU VIRAMA -+ /xea/xa3/xb4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA -+ /xea/xa3/xb5 DEVANAGARI SIGN CANDRABINDU TWO -+ /xea/xa3/xb6 DEVANAGARI SIGN CANDRABINDU THREE -+ /xea/xa3/xb7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA -+ /xea/xa3/xb8 DEVANAGARI SIGN PUSHPIKA -+ /xea/xa3/xb9 DEVANAGARI GAP FILLER -+ /xea/xa3/xba DEVANAGARI CARET -+ /xea/xa3/xbb DEVANAGARI HEADSTROKE - /xea/xa4/x80 KAYAH LI DIGIT ZERO - /xea/xa4/x81 KAYAH LI DIGIT ONE - /xea/xa4/x82 KAYAH LI DIGIT TWO -@@ -13481,6 +14273,126 @@ CHARMAP - /xea/xa5/x92 REJANG CONSONANT SIGN H - /xea/xa5/x93 REJANG VIRAMA - /xea/xa5/x9f REJANG SECTION MARK -+ /xea/xa5/xa0 HANGUL CHOSEONG TIKEUT-MIEUM -+ /xea/xa5/xa1 HANGUL CHOSEONG TIKEUT-PIEUP -+ /xea/xa5/xa2 HANGUL CHOSEONG TIKEUT-SIOS -+ /xea/xa5/xa3 HANGUL CHOSEONG TIKEUT-CIEUC -+ /xea/xa5/xa4 HANGUL CHOSEONG RIEUL-KIYEOK -+ /xea/xa5/xa5 HANGUL CHOSEONG RIEUL-SSANGKIYEOK -+ /xea/xa5/xa6 HANGUL CHOSEONG RIEUL-TIKEUT -+ /xea/xa5/xa7 HANGUL CHOSEONG RIEUL-SSANGTIKEUT -+ /xea/xa5/xa8 HANGUL CHOSEONG RIEUL-MIEUM -+ /xea/xa5/xa9 HANGUL CHOSEONG RIEUL-PIEUP -+ /xea/xa5/xaa HANGUL CHOSEONG RIEUL-SSANGPIEUP -+ /xea/xa5/xab HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP -+ /xea/xa5/xac HANGUL CHOSEONG RIEUL-SIOS -+ /xea/xa5/xad HANGUL CHOSEONG RIEUL-CIEUC -+ /xea/xa5/xae HANGUL CHOSEONG RIEUL-KHIEUKH -+ /xea/xa5/xaf HANGUL CHOSEONG MIEUM-KIYEOK -+ /xea/xa5/xb0 HANGUL CHOSEONG MIEUM-TIKEUT -+ /xea/xa5/xb1 HANGUL CHOSEONG MIEUM-SIOS -+ /xea/xa5/xb2 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH -+ /xea/xa5/xb3 HANGUL CHOSEONG PIEUP-KHIEUKH -+ /xea/xa5/xb4 HANGUL CHOSEONG PIEUP-HIEUH -+ /xea/xa5/xb5 HANGUL CHOSEONG SSANGSIOS-PIEUP -+ /xea/xa5/xb6 HANGUL CHOSEONG IEUNG-RIEUL -+ /xea/xa5/xb7 HANGUL CHOSEONG IEUNG-HIEUH -+ /xea/xa5/xb8 HANGUL CHOSEONG SSANGCIEUC-HIEUH -+ /xea/xa5/xb9 HANGUL CHOSEONG SSANGTHIEUTH -+ /xea/xa5/xba HANGUL CHOSEONG PHIEUPH-HIEUH -+ /xea/xa5/xbb HANGUL CHOSEONG HIEUH-SIOS -+ /xea/xa5/xbc HANGUL CHOSEONG SSANGYEORINHIEUH -+ /xea/xa6/x80 JAVANESE SIGN PANYANGGA -+ /xea/xa6/x81 JAVANESE SIGN CECAK -+ /xea/xa6/x82 JAVANESE SIGN LAYAR -+ /xea/xa6/x83 JAVANESE SIGN WIGNYAN -+ /xea/xa6/x84 JAVANESE LETTER A -+ /xea/xa6/x85 JAVANESE LETTER I KAWI -+ /xea/xa6/x86 JAVANESE LETTER I -+ /xea/xa6/x87 JAVANESE LETTER II -+ /xea/xa6/x88 JAVANESE LETTER U -+ /xea/xa6/x89 JAVANESE LETTER PA CEREK -+ /xea/xa6/x8a JAVANESE LETTER NGA LELET -+ /xea/xa6/x8b JAVANESE LETTER NGA LELET RASWADI -+ /xea/xa6/x8c JAVANESE LETTER E -+ /xea/xa6/x8d JAVANESE LETTER AI -+ /xea/xa6/x8e JAVANESE LETTER O -+ /xea/xa6/x8f JAVANESE LETTER KA -+ /xea/xa6/x90 JAVANESE LETTER KA SASAK -+ /xea/xa6/x91 JAVANESE LETTER KA MURDA -+ /xea/xa6/x92 JAVANESE LETTER GA -+ /xea/xa6/x93 JAVANESE LETTER GA MURDA -+ /xea/xa6/x94 JAVANESE LETTER NGA -+ /xea/xa6/x95 JAVANESE LETTER CA -+ /xea/xa6/x96 JAVANESE LETTER CA MURDA -+ /xea/xa6/x97 JAVANESE LETTER JA -+ /xea/xa6/x98 JAVANESE LETTER NYA MURDA -+ /xea/xa6/x99 JAVANESE LETTER JA MAHAPRANA -+ /xea/xa6/x9a JAVANESE LETTER NYA -+ /xea/xa6/x9b JAVANESE LETTER TTA -+ /xea/xa6/x9c JAVANESE LETTER TTA MAHAPRANA -+ /xea/xa6/x9d JAVANESE LETTER DDA -+ /xea/xa6/x9e JAVANESE LETTER DDA MAHAPRANA -+ /xea/xa6/x9f JAVANESE LETTER NA MURDA -+ /xea/xa6/xa0 JAVANESE LETTER TA -+ /xea/xa6/xa1 JAVANESE LETTER TA MURDA -+ /xea/xa6/xa2 JAVANESE LETTER DA -+ /xea/xa6/xa3 JAVANESE LETTER DA MAHAPRANA -+ /xea/xa6/xa4 JAVANESE LETTER NA -+ /xea/xa6/xa5 JAVANESE LETTER PA -+ /xea/xa6/xa6 JAVANESE LETTER PA MURDA -+ /xea/xa6/xa7 JAVANESE LETTER BA -+ /xea/xa6/xa8 JAVANESE LETTER BA MURDA -+ /xea/xa6/xa9 JAVANESE LETTER MA -+ /xea/xa6/xaa JAVANESE LETTER YA -+ /xea/xa6/xab JAVANESE LETTER RA -+ /xea/xa6/xac JAVANESE LETTER RA AGUNG -+ /xea/xa6/xad JAVANESE LETTER LA -+ /xea/xa6/xae JAVANESE LETTER WA -+ /xea/xa6/xaf JAVANESE LETTER SA MURDA -+ /xea/xa6/xb0 JAVANESE LETTER SA MAHAPRANA -+ /xea/xa6/xb1 JAVANESE LETTER SA -+ /xea/xa6/xb2 JAVANESE LETTER HA -+ /xea/xa6/xb3 JAVANESE SIGN CECAK TELU -+ /xea/xa6/xb4 JAVANESE VOWEL SIGN TARUNG -+ /xea/xa6/xb5 JAVANESE VOWEL SIGN TOLONG -+ /xea/xa6/xb6 JAVANESE VOWEL SIGN WULU -+ /xea/xa6/xb7 JAVANESE VOWEL SIGN WULU MELIK -+ /xea/xa6/xb8 JAVANESE VOWEL SIGN SUKU -+ /xea/xa6/xb9 JAVANESE VOWEL SIGN SUKU MENDUT -+ /xea/xa6/xba JAVANESE VOWEL SIGN TALING -+ /xea/xa6/xbb JAVANESE VOWEL SIGN DIRGA MURE -+ /xea/xa6/xbc JAVANESE VOWEL SIGN PEPET -+ /xea/xa6/xbd JAVANESE CONSONANT SIGN KERET -+ /xea/xa6/xbe JAVANESE CONSONANT SIGN PENGKAL -+ /xea/xa6/xbf JAVANESE CONSONANT SIGN CAKRA -+ /xea/xa7/x80 JAVANESE PANGKON -+ /xea/xa7/x81 JAVANESE LEFT RERENGGAN -+ /xea/xa7/x82 JAVANESE RIGHT RERENGGAN -+ /xea/xa7/x83 JAVANESE PADA ANDAP -+ /xea/xa7/x84 JAVANESE PADA MADYA -+ /xea/xa7/x85 JAVANESE PADA LUHUR -+ /xea/xa7/x86 JAVANESE PADA WINDU -+ /xea/xa7/x87 JAVANESE PADA PANGKAT -+ /xea/xa7/x88 JAVANESE PADA LINGSA -+ /xea/xa7/x89 JAVANESE PADA LUNGSI -+ /xea/xa7/x8a JAVANESE PADA ADEG -+ /xea/xa7/x8b JAVANESE PADA ADEG ADEG -+ /xea/xa7/x8c JAVANESE PADA PISELEH -+ /xea/xa7/x8d JAVANESE TURNED PADA PISELEH -+ /xea/xa7/x8f JAVANESE PANGRANGKEP -+ /xea/xa7/x90 JAVANESE DIGIT ZERO -+ /xea/xa7/x91 JAVANESE DIGIT ONE -+ /xea/xa7/x92 JAVANESE DIGIT TWO -+ /xea/xa7/x93 JAVANESE DIGIT THREE -+ /xea/xa7/x94 JAVANESE DIGIT FOUR -+ /xea/xa7/x95 JAVANESE DIGIT FIVE -+ /xea/xa7/x96 JAVANESE DIGIT SIX -+ /xea/xa7/x97 JAVANESE DIGIT SEVEN -+ /xea/xa7/x98 JAVANESE DIGIT EIGHT -+ /xea/xa7/x99 JAVANESE DIGIT NINE -+ /xea/xa7/x9e JAVANESE PADA TIRTA TUMETES -+ /xea/xa7/x9f JAVANESE PADA ISEN-ISEN - /xea/xa8/x80 CHAM LETTER A - /xea/xa8/x81 CHAM LETTER I - /xea/xa8/x82 CHAM LETTER U -@@ -13564,6 +14476,194 @@ CHARMAP - /xea/xa9/x9d CHAM PUNCTUATION DANDA - /xea/xa9/x9e CHAM PUNCTUATION DOUBLE DANDA - /xea/xa9/x9f CHAM PUNCTUATION TRIPLE DANDA -+ /xea/xa9/xa0 MYANMAR LETTER KHAMTI GA -+ /xea/xa9/xa1 MYANMAR LETTER KHAMTI CA -+ /xea/xa9/xa2 MYANMAR LETTER KHAMTI CHA -+ /xea/xa9/xa3 MYANMAR LETTER KHAMTI JA -+ /xea/xa9/xa4 MYANMAR LETTER KHAMTI JHA -+ /xea/xa9/xa5 MYANMAR LETTER KHAMTI NYA -+ /xea/xa9/xa6 MYANMAR LETTER KHAMTI TTA -+ /xea/xa9/xa7 MYANMAR LETTER KHAMTI TTHA -+ /xea/xa9/xa8 MYANMAR LETTER KHAMTI DDA -+ /xea/xa9/xa9 MYANMAR LETTER KHAMTI DDHA -+ /xea/xa9/xaa MYANMAR LETTER KHAMTI DHA -+ /xea/xa9/xab MYANMAR LETTER KHAMTI NA -+ /xea/xa9/xac MYANMAR LETTER KHAMTI SA -+ /xea/xa9/xad MYANMAR LETTER KHAMTI HA -+ /xea/xa9/xae MYANMAR LETTER KHAMTI HHA -+ /xea/xa9/xaf MYANMAR LETTER KHAMTI FA -+ /xea/xa9/xb0 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION -+ /xea/xa9/xb1 MYANMAR LETTER KHAMTI XA -+ /xea/xa9/xb2 MYANMAR LETTER KHAMTI ZA -+ /xea/xa9/xb3 MYANMAR LETTER KHAMTI RA -+ /xea/xa9/xb4 MYANMAR LOGOGRAM KHAMTI OAY -+ /xea/xa9/xb5 MYANMAR LOGOGRAM KHAMTI QN -+ /xea/xa9/xb6 MYANMAR LOGOGRAM KHAMTI HM -+ /xea/xa9/xb7 MYANMAR SYMBOL AITON EXCLAMATION -+ /xea/xa9/xb8 MYANMAR SYMBOL AITON ONE -+ /xea/xa9/xb9 MYANMAR SYMBOL AITON TWO -+ /xea/xa9/xba MYANMAR LETTER AITON RA -+ /xea/xa9/xbb MYANMAR SIGN PAO KAREN TONE -+ /xea/xaa/x80 TAI VIET LETTER LOW KO -+ /xea/xaa/x81 TAI VIET LETTER HIGH KO -+ /xea/xaa/x82 TAI VIET LETTER LOW KHO -+ /xea/xaa/x83 TAI VIET LETTER HIGH KHO -+ /xea/xaa/x84 TAI VIET LETTER LOW KHHO -+ /xea/xaa/x85 TAI VIET LETTER HIGH KHHO -+ /xea/xaa/x86 TAI VIET LETTER LOW GO -+ /xea/xaa/x87 TAI VIET LETTER HIGH GO -+ /xea/xaa/x88 TAI VIET LETTER LOW NGO -+ /xea/xaa/x89 TAI VIET LETTER HIGH NGO -+ /xea/xaa/x8a TAI VIET LETTER LOW CO -+ /xea/xaa/x8b TAI VIET LETTER HIGH CO -+ /xea/xaa/x8c TAI VIET LETTER LOW CHO -+ /xea/xaa/x8d TAI VIET LETTER HIGH CHO -+ /xea/xaa/x8e TAI VIET LETTER LOW SO -+ /xea/xaa/x8f TAI VIET LETTER HIGH SO -+ /xea/xaa/x90 TAI VIET LETTER LOW NYO -+ /xea/xaa/x91 TAI VIET LETTER HIGH NYO -+ /xea/xaa/x92 TAI VIET LETTER LOW DO -+ /xea/xaa/x93 TAI VIET LETTER HIGH DO -+ /xea/xaa/x94 TAI VIET LETTER LOW TO -+ /xea/xaa/x95 TAI VIET LETTER HIGH TO -+ /xea/xaa/x96 TAI VIET LETTER LOW THO -+ /xea/xaa/x97 TAI VIET LETTER HIGH THO -+ /xea/xaa/x98 TAI VIET LETTER LOW NO -+ /xea/xaa/x99 TAI VIET LETTER HIGH NO -+ /xea/xaa/x9a TAI VIET LETTER LOW BO -+ /xea/xaa/x9b TAI VIET LETTER HIGH BO -+ /xea/xaa/x9c TAI VIET LETTER LOW PO -+ /xea/xaa/x9d TAI VIET LETTER HIGH PO -+ /xea/xaa/x9e TAI VIET LETTER LOW PHO -+ /xea/xaa/x9f TAI VIET LETTER HIGH PHO -+ /xea/xaa/xa0 TAI VIET LETTER LOW FO -+ /xea/xaa/xa1 TAI VIET LETTER HIGH FO -+ /xea/xaa/xa2 TAI VIET LETTER LOW MO -+ /xea/xaa/xa3 TAI VIET LETTER HIGH MO -+ /xea/xaa/xa4 TAI VIET LETTER LOW YO -+ /xea/xaa/xa5 TAI VIET LETTER HIGH YO -+ /xea/xaa/xa6 TAI VIET LETTER LOW RO -+ /xea/xaa/xa7 TAI VIET LETTER HIGH RO -+ /xea/xaa/xa8 TAI VIET LETTER LOW LO -+ /xea/xaa/xa9 TAI VIET LETTER HIGH LO -+ /xea/xaa/xaa TAI VIET LETTER LOW VO -+ /xea/xaa/xab TAI VIET LETTER HIGH VO -+ /xea/xaa/xac TAI VIET LETTER LOW HO -+ /xea/xaa/xad TAI VIET LETTER HIGH HO -+ /xea/xaa/xae TAI VIET LETTER LOW O -+ /xea/xaa/xaf TAI VIET LETTER HIGH O -+ /xea/xaa/xb0 TAI VIET MAI KANG -+ /xea/xaa/xb1 TAI VIET VOWEL AA -+ /xea/xaa/xb2 TAI VIET VOWEL I -+ /xea/xaa/xb3 TAI VIET VOWEL UE -+ /xea/xaa/xb4 TAI VIET VOWEL U -+ /xea/xaa/xb5 TAI VIET VOWEL E -+ /xea/xaa/xb6 TAI VIET VOWEL O -+ /xea/xaa/xb7 TAI VIET MAI KHIT -+ /xea/xaa/xb8 TAI VIET VOWEL IA -+ /xea/xaa/xb9 TAI VIET VOWEL UEA -+ /xea/xaa/xba TAI VIET VOWEL UA -+ /xea/xaa/xbb TAI VIET VOWEL AUE -+ /xea/xaa/xbc TAI VIET VOWEL AY -+ /xea/xaa/xbd TAI VIET VOWEL AN -+ /xea/xaa/xbe TAI VIET VOWEL AM -+ /xea/xaa/xbf TAI VIET TONE MAI EK -+ /xea/xab/x80 TAI VIET TONE MAI NUENG -+ /xea/xab/x81 TAI VIET TONE MAI THO -+ /xea/xab/x82 TAI VIET TONE MAI SONG -+ /xea/xab/x9b TAI VIET SYMBOL KON -+ /xea/xab/x9c TAI VIET SYMBOL NUENG -+ /xea/xab/x9d TAI VIET SYMBOL SAM -+ /xea/xab/x9e TAI VIET SYMBOL HO HOI -+ /xea/xab/x9f TAI VIET SYMBOL KOI KOI -+ /xea/xac/x81 ETHIOPIC SYLLABLE TTHU -+ /xea/xac/x82 ETHIOPIC SYLLABLE TTHI -+ /xea/xac/x83 ETHIOPIC SYLLABLE TTHAA -+ /xea/xac/x84 ETHIOPIC SYLLABLE TTHEE -+ /xea/xac/x85 ETHIOPIC SYLLABLE TTHE -+ /xea/xac/x86 ETHIOPIC SYLLABLE TTHO -+ /xea/xac/x89 ETHIOPIC SYLLABLE DDHU -+ /xea/xac/x8a ETHIOPIC SYLLABLE DDHI -+ /xea/xac/x8b ETHIOPIC SYLLABLE DDHAA -+ /xea/xac/x8c ETHIOPIC SYLLABLE DDHEE -+ /xea/xac/x8d ETHIOPIC SYLLABLE DDHE -+ /xea/xac/x8e ETHIOPIC SYLLABLE DDHO -+ /xea/xac/x91 ETHIOPIC SYLLABLE DZU -+ /xea/xac/x92 ETHIOPIC SYLLABLE DZI -+ /xea/xac/x93 ETHIOPIC SYLLABLE DZAA -+ /xea/xac/x94 ETHIOPIC SYLLABLE DZEE -+ /xea/xac/x95 ETHIOPIC SYLLABLE DZE -+ /xea/xac/x96 ETHIOPIC SYLLABLE DZO -+ /xea/xac/xa0 ETHIOPIC SYLLABLE CCHHA -+ /xea/xac/xa1 ETHIOPIC SYLLABLE CCHHU -+ /xea/xac/xa2 ETHIOPIC SYLLABLE CCHHI -+ /xea/xac/xa3 ETHIOPIC SYLLABLE CCHHAA -+ /xea/xac/xa4 ETHIOPIC SYLLABLE CCHHEE -+ /xea/xac/xa5 ETHIOPIC SYLLABLE CCHHE -+ /xea/xac/xa6 ETHIOPIC SYLLABLE CCHHO -+ /xea/xac/xa8 ETHIOPIC SYLLABLE BBA -+ /xea/xac/xa9 ETHIOPIC SYLLABLE BBU -+ /xea/xac/xaa ETHIOPIC SYLLABLE BBI -+ /xea/xac/xab ETHIOPIC SYLLABLE BBAA -+ /xea/xac/xac ETHIOPIC SYLLABLE BBEE -+ /xea/xac/xad ETHIOPIC SYLLABLE BBE -+ /xea/xac/xae ETHIOPIC SYLLABLE BBO -+ /xea/xaf/x80 MEETEI MAYEK LETTER KOK -+ /xea/xaf/x81 MEETEI MAYEK LETTER SAM -+ /xea/xaf/x82 MEETEI MAYEK LETTER LAI -+ /xea/xaf/x83 MEETEI MAYEK LETTER MIT -+ /xea/xaf/x84 MEETEI MAYEK LETTER PA -+ /xea/xaf/x85 MEETEI MAYEK LETTER NA -+ /xea/xaf/x86 MEETEI MAYEK LETTER CHIL -+ /xea/xaf/x87 MEETEI MAYEK LETTER TIL -+ /xea/xaf/x88 MEETEI MAYEK LETTER KHOU -+ /xea/xaf/x89 MEETEI MAYEK LETTER NGOU -+ /xea/xaf/x8a MEETEI MAYEK LETTER THOU -+ /xea/xaf/x8b MEETEI MAYEK LETTER WAI -+ /xea/xaf/x8c MEETEI MAYEK LETTER YANG -+ /xea/xaf/x8d MEETEI MAYEK LETTER HUK -+ /xea/xaf/x8e MEETEI MAYEK LETTER UN -+ /xea/xaf/x8f MEETEI MAYEK LETTER I -+ /xea/xaf/x90 MEETEI MAYEK LETTER PHAM -+ /xea/xaf/x91 MEETEI MAYEK LETTER ATIYA -+ /xea/xaf/x92 MEETEI MAYEK LETTER GOK -+ /xea/xaf/x93 MEETEI MAYEK LETTER JHAM -+ /xea/xaf/x94 MEETEI MAYEK LETTER RAI -+ /xea/xaf/x95 MEETEI MAYEK LETTER BA -+ /xea/xaf/x96 MEETEI MAYEK LETTER JIL -+ /xea/xaf/x97 MEETEI MAYEK LETTER DIL -+ /xea/xaf/x98 MEETEI MAYEK LETTER GHOU -+ /xea/xaf/x99 MEETEI MAYEK LETTER DHOU -+ /xea/xaf/x9a MEETEI MAYEK LETTER BHAM -+ /xea/xaf/x9b MEETEI MAYEK LETTER KOK LONSUM -+ /xea/xaf/x9c MEETEI MAYEK LETTER LAI LONSUM -+ /xea/xaf/x9d MEETEI MAYEK LETTER MIT LONSUM -+ /xea/xaf/x9e MEETEI MAYEK LETTER PA LONSUM -+ /xea/xaf/x9f MEETEI MAYEK LETTER NA LONSUM -+ /xea/xaf/xa0 MEETEI MAYEK LETTER TIL LONSUM -+ /xea/xaf/xa1 MEETEI MAYEK LETTER NGOU LONSUM -+ /xea/xaf/xa2 MEETEI MAYEK LETTER I LONSUM -+ /xea/xaf/xa3 MEETEI MAYEK VOWEL SIGN ONAP -+ /xea/xaf/xa4 MEETEI MAYEK VOWEL SIGN INAP -+ /xea/xaf/xa5 MEETEI MAYEK VOWEL SIGN ANAP -+ /xea/xaf/xa6 MEETEI MAYEK VOWEL SIGN YENAP -+ /xea/xaf/xa7 MEETEI MAYEK VOWEL SIGN SOUNAP -+ /xea/xaf/xa8 MEETEI MAYEK VOWEL SIGN UNAP -+ /xea/xaf/xa9 MEETEI MAYEK VOWEL SIGN CHEINAP -+ /xea/xaf/xaa MEETEI MAYEK VOWEL SIGN NUNG -+ /xea/xaf/xab MEETEI MAYEK CHEIKHEI -+ /xea/xaf/xac MEETEI MAYEK LUM IYEK -+ /xea/xaf/xad MEETEI MAYEK APUN IYEK -+ /xea/xaf/xb0 MEETEI MAYEK DIGIT ZERO -+ /xea/xaf/xb1 MEETEI MAYEK DIGIT ONE -+ /xea/xaf/xb2 MEETEI MAYEK DIGIT TWO -+ /xea/xaf/xb3 MEETEI MAYEK DIGIT THREE -+ /xea/xaf/xb4 MEETEI MAYEK DIGIT FOUR -+ /xea/xaf/xb5 MEETEI MAYEK DIGIT FIVE -+ /xea/xaf/xb6 MEETEI MAYEK DIGIT SIX -+ /xea/xaf/xb7 MEETEI MAYEK DIGIT SEVEN -+ /xea/xaf/xb8 MEETEI MAYEK DIGIT EIGHT -+ /xea/xaf/xb9 MEETEI MAYEK DIGIT NINE - /xea/xb0/x80 HANGUL SYLLABLE GA - /xea/xb0/x81 HANGUL SYLLABLE GAG - /xea/xb0/x82 HANGUL SYLLABLE GAGG -@@ -24736,6 +25836,78 @@ CHARMAP - /xed/x9e/xa1 HANGUL SYLLABLE HIT - /xed/x9e/xa2 HANGUL SYLLABLE HIP - /xed/x9e/xa3 HANGUL SYLLABLE HIH -+ /xed/x9e/xb0 HANGUL JUNGSEONG O-YEO -+ /xed/x9e/xb1 HANGUL JUNGSEONG O-O-I -+ /xed/x9e/xb2 HANGUL JUNGSEONG YO-A -+ /xed/x9e/xb3 HANGUL JUNGSEONG YO-AE -+ /xed/x9e/xb4 HANGUL JUNGSEONG YO-EO -+ /xed/x9e/xb5 HANGUL JUNGSEONG U-YEO -+ /xed/x9e/xb6 HANGUL JUNGSEONG U-I-I -+ /xed/x9e/xb7 HANGUL JUNGSEONG YU-AE -+ /xed/x9e/xb8 HANGUL JUNGSEONG YU-O -+ /xed/x9e/xb9 HANGUL JUNGSEONG EU-A -+ /xed/x9e/xba HANGUL JUNGSEONG EU-EO -+ /xed/x9e/xbb HANGUL JUNGSEONG EU-E -+ /xed/x9e/xbc HANGUL JUNGSEONG EU-O -+ /xed/x9e/xbd HANGUL JUNGSEONG I-YA-O -+ /xed/x9e/xbe HANGUL JUNGSEONG I-YAE -+ /xed/x9e/xbf HANGUL JUNGSEONG I-YEO -+ /xed/x9f/x80 HANGUL JUNGSEONG I-YE -+ /xed/x9f/x81 HANGUL JUNGSEONG I-O-I -+ /xed/x9f/x82 HANGUL JUNGSEONG I-YO -+ /xed/x9f/x83 HANGUL JUNGSEONG I-YU -+ /xed/x9f/x84 HANGUL JUNGSEONG I-I -+ /xed/x9f/x85 HANGUL JUNGSEONG ARAEA-A -+ /xed/x9f/x86 HANGUL JUNGSEONG ARAEA-E -+ /xed/x9f/x8b HANGUL JONGSEONG NIEUN-RIEUL -+ /xed/x9f/x8c HANGUL JONGSEONG NIEUN-CHIEUCH -+ /xed/x9f/x8d HANGUL JONGSEONG SSANGTIKEUT -+ /xed/x9f/x8e HANGUL JONGSEONG SSANGTIKEUT-PIEUP -+ /xed/x9f/x8f HANGUL JONGSEONG TIKEUT-PIEUP -+ /xed/x9f/x90 HANGUL JONGSEONG TIKEUT-SIOS -+ /xed/x9f/x91 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK -+ /xed/x9f/x92 HANGUL JONGSEONG TIKEUT-CIEUC -+ /xed/x9f/x93 HANGUL JONGSEONG TIKEUT-CHIEUCH -+ /xed/x9f/x94 HANGUL JONGSEONG TIKEUT-THIEUTH -+ /xed/x9f/x95 HANGUL JONGSEONG RIEUL-SSANGKIYEOK -+ /xed/x9f/x96 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH -+ /xed/x9f/x97 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH -+ /xed/x9f/x98 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH -+ /xed/x9f/x99 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT -+ /xed/x9f/x9a HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH -+ /xed/x9f/x9b HANGUL JONGSEONG RIEUL-YESIEUNG -+ /xed/x9f/x9c HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH -+ /xed/x9f/x9d HANGUL JONGSEONG KAPYEOUNRIEUL -+ /xed/x9f/x9e HANGUL JONGSEONG MIEUM-NIEUN -+ /xed/x9f/x9f HANGUL JONGSEONG MIEUM-SSANGNIEUN -+ /xed/x9f/xa0 HANGUL JONGSEONG SSANGMIEUM -+ /xed/x9f/xa1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS -+ /xed/x9f/xa2 HANGUL JONGSEONG MIEUM-CIEUC -+ /xed/x9f/xa3 HANGUL JONGSEONG PIEUP-TIKEUT -+ /xed/x9f/xa4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH -+ /xed/x9f/xa5 HANGUL JONGSEONG PIEUP-MIEUM -+ /xed/x9f/xa6 HANGUL JONGSEONG SSANGPIEUP -+ /xed/x9f/xa7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT -+ /xed/x9f/xa8 HANGUL JONGSEONG PIEUP-CIEUC -+ /xed/x9f/xa9 HANGUL JONGSEONG PIEUP-CHIEUCH -+ /xed/x9f/xaa HANGUL JONGSEONG SIOS-MIEUM -+ /xed/x9f/xab HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP -+ /xed/x9f/xac HANGUL JONGSEONG SSANGSIOS-KIYEOK -+ /xed/x9f/xad HANGUL JONGSEONG SSANGSIOS-TIKEUT -+ /xed/x9f/xae HANGUL JONGSEONG SIOS-PANSIOS -+ /xed/x9f/xaf HANGUL JONGSEONG SIOS-CIEUC -+ /xed/x9f/xb0 HANGUL JONGSEONG SIOS-CHIEUCH -+ /xed/x9f/xb1 HANGUL JONGSEONG SIOS-THIEUTH -+ /xed/x9f/xb2 HANGUL JONGSEONG SIOS-HIEUH -+ /xed/x9f/xb3 HANGUL JONGSEONG PANSIOS-PIEUP -+ /xed/x9f/xb4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP -+ /xed/x9f/xb5 HANGUL JONGSEONG YESIEUNG-MIEUM -+ /xed/x9f/xb6 HANGUL JONGSEONG YESIEUNG-HIEUH -+ /xed/x9f/xb7 HANGUL JONGSEONG CIEUC-PIEUP -+ /xed/x9f/xb8 HANGUL JONGSEONG CIEUC-SSANGPIEUP -+ /xed/x9f/xb9 HANGUL JONGSEONG SSANGCIEUC -+ /xed/x9f/xba HANGUL JONGSEONG PHIEUPH-SIOS -+ /xed/x9f/xbb HANGUL JONGSEONG PHIEUPH-THIEUTH - % /xed/xa0/x80 - % /xed/xad/xbf - % /xed/xae/x80 -@@ -25203,6 +26375,9 @@ CHARMAP - /xef/xa9/xa8 CJK COMPATIBILITY IDEOGRAPH-FA68 - /xef/xa9/xa9 CJK COMPATIBILITY IDEOGRAPH-FA69 - /xef/xa9/xaa CJK COMPATIBILITY IDEOGRAPH-FA6A -+ /xef/xa9/xab CJK COMPATIBILITY IDEOGRAPH-FA6B -+ /xef/xa9/xac CJK COMPATIBILITY IDEOGRAPH-FA6C -+ /xef/xa9/xad CJK COMPATIBILITY IDEOGRAPH-FA6D - /xef/xa9/xb0 CJK COMPATIBILITY IDEOGRAPH-FA70 - /xef/xa9/xb1 CJK COMPATIBILITY IDEOGRAPH-FA71 - /xef/xa9/xb2 CJK COMPATIBILITY IDEOGRAPH-FA72 -@@ -25465,6 +26640,22 @@ CHARMAP - /xef/xae/xaf ARABIC LETTER YEH BARREE FINAL FORM - /xef/xae/xb0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM - /xef/xae/xb1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -+ /xef/xae/xb2 ARABIC SYMBOL DOT ABOVE -+ /xef/xae/xb3 ARABIC SYMBOL DOT BELOW -+ /xef/xae/xb4 ARABIC SYMBOL TWO DOTS ABOVE -+ /xef/xae/xb5 ARABIC SYMBOL TWO DOTS BELOW -+ /xef/xae/xb6 ARABIC SYMBOL THREE DOTS ABOVE -+ /xef/xae/xb7 ARABIC SYMBOL THREE DOTS BELOW -+ /xef/xae/xb8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE -+ /xef/xae/xb9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW -+ /xef/xae/xba ARABIC SYMBOL FOUR DOTS ABOVE -+ /xef/xae/xbb ARABIC SYMBOL FOUR DOTS BELOW -+ /xef/xae/xbc ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW -+ /xef/xae/xbd ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE -+ /xef/xae/xbe ARABIC SYMBOL TWO DOTS VERTICALLY BELOW -+ /xef/xae/xbf ARABIC SYMBOL RING -+ /xef/xaf/x80 ARABIC SYMBOL SMALL TAH ABOVE -+ /xef/xaf/x81 ARABIC SYMBOL SMALL TAH BELOW - /xef/xaf/x93 ARABIC LETTER NG ISOLATED FORM - /xef/xaf/x94 ARABIC LETTER NG FINAL FORM - /xef/xaf/x95 ARABIC LETTER NG INITIAL FORM -@@ -27269,6 +28460,37 @@ CHARMAP - /xf0/x90/xa0/xb8 CYPRIOT SYLLABLE XE - /xf0/x90/xa0/xbc CYPRIOT SYLLABLE ZA - /xf0/x90/xa0/xbf CYPRIOT SYLLABLE ZO -+ /xf0/x90/xa1/x80 IMPERIAL ARAMAIC LETTER ALEPH -+ /xf0/x90/xa1/x81 IMPERIAL ARAMAIC LETTER BETH -+ /xf0/x90/xa1/x82 IMPERIAL ARAMAIC LETTER GIMEL -+ /xf0/x90/xa1/x83 IMPERIAL ARAMAIC LETTER DALETH -+ /xf0/x90/xa1/x84 IMPERIAL ARAMAIC LETTER HE -+ /xf0/x90/xa1/x85 IMPERIAL ARAMAIC LETTER WAW -+ /xf0/x90/xa1/x86 IMPERIAL ARAMAIC LETTER ZAYIN -+ /xf0/x90/xa1/x87 IMPERIAL ARAMAIC LETTER HETH -+ /xf0/x90/xa1/x88 IMPERIAL ARAMAIC LETTER TETH -+ /xf0/x90/xa1/x89 IMPERIAL ARAMAIC LETTER YODH -+ /xf0/x90/xa1/x8a IMPERIAL ARAMAIC LETTER KAPH -+ /xf0/x90/xa1/x8b IMPERIAL ARAMAIC LETTER LAMEDH -+ /xf0/x90/xa1/x8c IMPERIAL ARAMAIC LETTER MEM -+ /xf0/x90/xa1/x8d IMPERIAL ARAMAIC LETTER NUN -+ /xf0/x90/xa1/x8e IMPERIAL ARAMAIC LETTER SAMEKH -+ /xf0/x90/xa1/x8f IMPERIAL ARAMAIC LETTER AYIN -+ /xf0/x90/xa1/x90 IMPERIAL ARAMAIC LETTER PE -+ /xf0/x90/xa1/x91 IMPERIAL ARAMAIC LETTER SADHE -+ /xf0/x90/xa1/x92 IMPERIAL ARAMAIC LETTER QOPH -+ /xf0/x90/xa1/x93 IMPERIAL ARAMAIC LETTER RESH -+ /xf0/x90/xa1/x94 IMPERIAL ARAMAIC LETTER SHIN -+ /xf0/x90/xa1/x95 IMPERIAL ARAMAIC LETTER TAW -+ /xf0/x90/xa1/x97 IMPERIAL ARAMAIC SECTION SIGN -+ /xf0/x90/xa1/x98 IMPERIAL ARAMAIC NUMBER ONE -+ /xf0/x90/xa1/x99 IMPERIAL ARAMAIC NUMBER TWO -+ /xf0/x90/xa1/x9a IMPERIAL ARAMAIC NUMBER THREE -+ /xf0/x90/xa1/x9b IMPERIAL ARAMAIC NUMBER TEN -+ /xf0/x90/xa1/x9c IMPERIAL ARAMAIC NUMBER TWENTY -+ /xf0/x90/xa1/x9d IMPERIAL ARAMAIC NUMBER ONE HUNDRED -+ /xf0/x90/xa1/x9e IMPERIAL ARAMAIC NUMBER ONE THOUSAND -+ /xf0/x90/xa1/x9f IMPERIAL ARAMAIC NUMBER TEN THOUSAND - /xf0/x90/xa4/x80 PHOENICIAN LETTER ALF - /xf0/x90/xa4/x81 PHOENICIAN LETTER BET - /xf0/x90/xa4/x82 PHOENICIAN LETTER GAML -@@ -27295,6 +28517,8 @@ CHARMAP - /xf0/x90/xa4/x97 PHOENICIAN NUMBER TEN - /xf0/x90/xa4/x98 PHOENICIAN NUMBER TWENTY - /xf0/x90/xa4/x99 PHOENICIAN NUMBER ONE HUNDRED -+ /xf0/x90/xa4/x9a PHOENICIAN NUMBER TWO -+ /xf0/x90/xa4/x9b PHOENICIAN NUMBER THREE - /xf0/x90/xa4/x9f PHOENICIAN WORD SEPARATOR - /xf0/x90/xa4/xa0 LYDIAN LETTER A - /xf0/x90/xa4/xa1 LYDIAN LETTER B -@@ -27388,6 +28612,434 @@ CHARMAP - /xf0/x90/xa9/x96 KHAROSHTHI PUNCTUATION DANDA - /xf0/x90/xa9/x97 KHAROSHTHI PUNCTUATION DOUBLE DANDA - /xf0/x90/xa9/x98 KHAROSHTHI PUNCTUATION LINES -+ /xf0/x90/xa9/xa0 OLD SOUTH ARABIAN LETTER HE -+ /xf0/x90/xa9/xa1 OLD SOUTH ARABIAN LETTER LAMEDH -+ /xf0/x90/xa9/xa2 OLD SOUTH ARABIAN LETTER HETH -+ /xf0/x90/xa9/xa3 OLD SOUTH ARABIAN LETTER MEM -+ /xf0/x90/xa9/xa4 OLD SOUTH ARABIAN LETTER QOPH -+ /xf0/x90/xa9/xa5 OLD SOUTH ARABIAN LETTER WAW -+ /xf0/x90/xa9/xa6 OLD SOUTH ARABIAN LETTER SHIN -+ /xf0/x90/xa9/xa7 OLD SOUTH ARABIAN LETTER RESH -+ /xf0/x90/xa9/xa8 OLD SOUTH ARABIAN LETTER BETH -+ /xf0/x90/xa9/xa9 OLD SOUTH ARABIAN LETTER TAW -+ /xf0/x90/xa9/xaa OLD SOUTH ARABIAN LETTER SAT -+ /xf0/x90/xa9/xab OLD SOUTH ARABIAN LETTER KAPH -+ /xf0/x90/xa9/xac OLD SOUTH ARABIAN LETTER NUN -+ /xf0/x90/xa9/xad OLD SOUTH ARABIAN LETTER KHETH -+ /xf0/x90/xa9/xae OLD SOUTH ARABIAN LETTER SADHE -+ /xf0/x90/xa9/xaf OLD SOUTH ARABIAN LETTER SAMEKH -+ /xf0/x90/xa9/xb0 OLD SOUTH ARABIAN LETTER FE -+ /xf0/x90/xa9/xb1 OLD SOUTH ARABIAN LETTER ALEF -+ /xf0/x90/xa9/xb2 OLD SOUTH ARABIAN LETTER AYN -+ /xf0/x90/xa9/xb3 OLD SOUTH ARABIAN LETTER DHADHE -+ /xf0/x90/xa9/xb4 OLD SOUTH ARABIAN LETTER GIMEL -+ /xf0/x90/xa9/xb5 OLD SOUTH ARABIAN LETTER DALETH -+ /xf0/x90/xa9/xb6 OLD SOUTH ARABIAN LETTER GHAYN -+ /xf0/x90/xa9/xb7 OLD SOUTH ARABIAN LETTER TETH -+ /xf0/x90/xa9/xb8 OLD SOUTH ARABIAN LETTER ZAYN -+ /xf0/x90/xa9/xb9 OLD SOUTH ARABIAN LETTER DHALETH -+ /xf0/x90/xa9/xba OLD SOUTH ARABIAN LETTER YODH -+ /xf0/x90/xa9/xbb OLD SOUTH ARABIAN LETTER THAW -+ /xf0/x90/xa9/xbc OLD SOUTH ARABIAN LETTER THETH -+ /xf0/x90/xa9/xbd OLD SOUTH ARABIAN NUMBER ONE -+ /xf0/x90/xa9/xbe OLD SOUTH ARABIAN NUMBER FIFTY -+ /xf0/x90/xa9/xbf OLD SOUTH ARABIAN NUMERIC INDICATOR -+ /xf0/x90/xac/x80 AVESTAN LETTER A -+ /xf0/x90/xac/x81 AVESTAN LETTER AA -+ /xf0/x90/xac/x82 AVESTAN LETTER AO -+ /xf0/x90/xac/x83 AVESTAN LETTER AAO -+ /xf0/x90/xac/x84 AVESTAN LETTER AN -+ /xf0/x90/xac/x85 AVESTAN LETTER AAN -+ /xf0/x90/xac/x86 AVESTAN LETTER AE -+ /xf0/x90/xac/x87 AVESTAN LETTER AEE -+ /xf0/x90/xac/x88 AVESTAN LETTER E -+ /xf0/x90/xac/x89 AVESTAN LETTER EE -+ /xf0/x90/xac/x8a AVESTAN LETTER O -+ /xf0/x90/xac/x8b AVESTAN LETTER OO -+ /xf0/x90/xac/x8c AVESTAN LETTER I -+ /xf0/x90/xac/x8d AVESTAN LETTER II -+ /xf0/x90/xac/x8e AVESTAN LETTER U -+ /xf0/x90/xac/x8f AVESTAN LETTER UU -+ /xf0/x90/xac/x90 AVESTAN LETTER KE -+ /xf0/x90/xac/x91 AVESTAN LETTER XE -+ /xf0/x90/xac/x92 AVESTAN LETTER XYE -+ /xf0/x90/xac/x93 AVESTAN LETTER XVE -+ /xf0/x90/xac/x94 AVESTAN LETTER GE -+ /xf0/x90/xac/x95 AVESTAN LETTER GGE -+ /xf0/x90/xac/x96 AVESTAN LETTER GHE -+ /xf0/x90/xac/x97 AVESTAN LETTER CE -+ /xf0/x90/xac/x98 AVESTAN LETTER JE -+ /xf0/x90/xac/x99 AVESTAN LETTER TE -+ /xf0/x90/xac/x9a AVESTAN LETTER THE -+ /xf0/x90/xac/x9b AVESTAN LETTER DE -+ /xf0/x90/xac/x9c AVESTAN LETTER DHE -+ /xf0/x90/xac/x9d AVESTAN LETTER TTE -+ /xf0/x90/xac/x9e AVESTAN LETTER PE -+ /xf0/x90/xac/x9f AVESTAN LETTER FE -+ /xf0/x90/xac/xa0 AVESTAN LETTER BE -+ /xf0/x90/xac/xa1 AVESTAN LETTER BHE -+ /xf0/x90/xac/xa2 AVESTAN LETTER NGE -+ /xf0/x90/xac/xa3 AVESTAN LETTER NGYE -+ /xf0/x90/xac/xa4 AVESTAN LETTER NGVE -+ /xf0/x90/xac/xa5 AVESTAN LETTER NE -+ /xf0/x90/xac/xa6 AVESTAN LETTER NYE -+ /xf0/x90/xac/xa7 AVESTAN LETTER NNE -+ /xf0/x90/xac/xa8 AVESTAN LETTER ME -+ /xf0/x90/xac/xa9 AVESTAN LETTER HME -+ /xf0/x90/xac/xaa AVESTAN LETTER YYE -+ /xf0/x90/xac/xab AVESTAN LETTER YE -+ /xf0/x90/xac/xac AVESTAN LETTER VE -+ /xf0/x90/xac/xad AVESTAN LETTER RE -+ /xf0/x90/xac/xae AVESTAN LETTER LE -+ /xf0/x90/xac/xaf AVESTAN LETTER SE -+ /xf0/x90/xac/xb0 AVESTAN LETTER ZE -+ /xf0/x90/xac/xb1 AVESTAN LETTER SHE -+ /xf0/x90/xac/xb2 AVESTAN LETTER ZHE -+ /xf0/x90/xac/xb3 AVESTAN LETTER SHYE -+ /xf0/x90/xac/xb4 AVESTAN LETTER SSHE -+ /xf0/x90/xac/xb5 AVESTAN LETTER HE -+ /xf0/x90/xac/xb9 AVESTAN ABBREVIATION MARK -+ /xf0/x90/xac/xba TINY TWO DOTS OVER ONE DOT PUNCTUATION -+ /xf0/x90/xac/xbb SMALL TWO DOTS OVER ONE DOT PUNCTUATION -+ /xf0/x90/xac/xbc LARGE TWO DOTS OVER ONE DOT PUNCTUATION -+ /xf0/x90/xac/xbd LARGE ONE DOT OVER TWO DOTS PUNCTUATION -+ /xf0/x90/xac/xbe LARGE TWO RINGS OVER ONE RING PUNCTUATION -+ /xf0/x90/xac/xbf LARGE ONE RING OVER TWO RINGS PUNCTUATION -+ /xf0/x90/xad/x80 INSCRIPTIONAL PARTHIAN LETTER ALEPH -+ /xf0/x90/xad/x81 INSCRIPTIONAL PARTHIAN LETTER BETH -+ /xf0/x90/xad/x82 INSCRIPTIONAL PARTHIAN LETTER GIMEL -+ /xf0/x90/xad/x83 INSCRIPTIONAL PARTHIAN LETTER DALETH -+ /xf0/x90/xad/x84 INSCRIPTIONAL PARTHIAN LETTER HE -+ /xf0/x90/xad/x85 INSCRIPTIONAL PARTHIAN LETTER WAW -+ /xf0/x90/xad/x86 INSCRIPTIONAL PARTHIAN LETTER ZAYIN -+ /xf0/x90/xad/x87 INSCRIPTIONAL PARTHIAN LETTER HETH -+ /xf0/x90/xad/x88 INSCRIPTIONAL PARTHIAN LETTER TETH -+ /xf0/x90/xad/x89 INSCRIPTIONAL PARTHIAN LETTER YODH -+ /xf0/x90/xad/x8a INSCRIPTIONAL PARTHIAN LETTER KAPH -+ /xf0/x90/xad/x8b INSCRIPTIONAL PARTHIAN LETTER LAMEDH -+ /xf0/x90/xad/x8c INSCRIPTIONAL PARTHIAN LETTER MEM -+ /xf0/x90/xad/x8d INSCRIPTIONAL PARTHIAN LETTER NUN -+ /xf0/x90/xad/x8e INSCRIPTIONAL PARTHIAN LETTER SAMEKH -+ /xf0/x90/xad/x8f INSCRIPTIONAL PARTHIAN LETTER AYIN -+ /xf0/x90/xad/x90 INSCRIPTIONAL PARTHIAN LETTER PE -+ /xf0/x90/xad/x91 INSCRIPTIONAL PARTHIAN LETTER SADHE -+ /xf0/x90/xad/x92 INSCRIPTIONAL PARTHIAN LETTER QOPH -+ /xf0/x90/xad/x93 INSCRIPTIONAL PARTHIAN LETTER RESH -+ /xf0/x90/xad/x94 INSCRIPTIONAL PARTHIAN LETTER SHIN -+ /xf0/x90/xad/x95 INSCRIPTIONAL PARTHIAN LETTER TAW -+ /xf0/x90/xad/x98 INSCRIPTIONAL PARTHIAN NUMBER ONE -+ /xf0/x90/xad/x99 INSCRIPTIONAL PARTHIAN NUMBER TWO -+ /xf0/x90/xad/x9a INSCRIPTIONAL PARTHIAN NUMBER THREE -+ /xf0/x90/xad/x9b INSCRIPTIONAL PARTHIAN NUMBER FOUR -+ /xf0/x90/xad/x9c INSCRIPTIONAL PARTHIAN NUMBER TEN -+ /xf0/x90/xad/x9d INSCRIPTIONAL PARTHIAN NUMBER TWENTY -+ /xf0/x90/xad/x9e INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED -+ /xf0/x90/xad/x9f INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND -+ /xf0/x90/xad/xa0 INSCRIPTIONAL PAHLAVI LETTER ALEPH -+ /xf0/x90/xad/xa1 INSCRIPTIONAL PAHLAVI LETTER BETH -+ /xf0/x90/xad/xa2 INSCRIPTIONAL PAHLAVI LETTER GIMEL -+ /xf0/x90/xad/xa3 INSCRIPTIONAL PAHLAVI LETTER DALETH -+ /xf0/x90/xad/xa4 INSCRIPTIONAL PAHLAVI LETTER HE -+ /xf0/x90/xad/xa5 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH -+ /xf0/x90/xad/xa6 INSCRIPTIONAL PAHLAVI LETTER ZAYIN -+ /xf0/x90/xad/xa7 INSCRIPTIONAL PAHLAVI LETTER HETH -+ /xf0/x90/xad/xa8 INSCRIPTIONAL PAHLAVI LETTER TETH -+ /xf0/x90/xad/xa9 INSCRIPTIONAL PAHLAVI LETTER YODH -+ /xf0/x90/xad/xaa INSCRIPTIONAL PAHLAVI LETTER KAPH -+ /xf0/x90/xad/xab INSCRIPTIONAL PAHLAVI LETTER LAMEDH -+ /xf0/x90/xad/xac INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH -+ /xf0/x90/xad/xad INSCRIPTIONAL PAHLAVI LETTER NUN -+ /xf0/x90/xad/xae INSCRIPTIONAL PAHLAVI LETTER SAMEKH -+ /xf0/x90/xad/xaf INSCRIPTIONAL PAHLAVI LETTER PE -+ /xf0/x90/xad/xb0 INSCRIPTIONAL PAHLAVI LETTER SADHE -+ /xf0/x90/xad/xb1 INSCRIPTIONAL PAHLAVI LETTER SHIN -+ /xf0/x90/xad/xb2 INSCRIPTIONAL PAHLAVI LETTER TAW -+ /xf0/x90/xad/xb8 INSCRIPTIONAL PAHLAVI NUMBER ONE -+ /xf0/x90/xad/xb9 INSCRIPTIONAL PAHLAVI NUMBER TWO -+ /xf0/x90/xad/xba INSCRIPTIONAL PAHLAVI NUMBER THREE -+ /xf0/x90/xad/xbb INSCRIPTIONAL PAHLAVI NUMBER FOUR -+ /xf0/x90/xad/xbc INSCRIPTIONAL PAHLAVI NUMBER TEN -+ /xf0/x90/xad/xbd INSCRIPTIONAL PAHLAVI NUMBER TWENTY -+ /xf0/x90/xad/xbe INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED -+ /xf0/x90/xad/xbf INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND -+ /xf0/x90/xb0/x80 OLD TURKIC LETTER ORKHON A -+ /xf0/x90/xb0/x81 OLD TURKIC LETTER YENISEI A -+ /xf0/x90/xb0/x82 OLD TURKIC LETTER YENISEI AE -+ /xf0/x90/xb0/x83 OLD TURKIC LETTER ORKHON I -+ /xf0/x90/xb0/x84 OLD TURKIC LETTER YENISEI I -+ /xf0/x90/xb0/x85 OLD TURKIC LETTER YENISEI E -+ /xf0/x90/xb0/x86 OLD TURKIC LETTER ORKHON O -+ /xf0/x90/xb0/x87 OLD TURKIC LETTER ORKHON OE -+ /xf0/x90/xb0/x88 OLD TURKIC LETTER YENISEI OE -+ /xf0/x90/xb0/x89 OLD TURKIC LETTER ORKHON AB -+ /xf0/x90/xb0/x8a OLD TURKIC LETTER YENISEI AB -+ /xf0/x90/xb0/x8b OLD TURKIC LETTER ORKHON AEB -+ /xf0/x90/xb0/x8c OLD TURKIC LETTER YENISEI AEB -+ /xf0/x90/xb0/x8d OLD TURKIC LETTER ORKHON AG -+ /xf0/x90/xb0/x8e OLD TURKIC LETTER YENISEI AG -+ /xf0/x90/xb0/x8f OLD TURKIC LETTER ORKHON AEG -+ /xf0/x90/xb0/x90 OLD TURKIC LETTER YENISEI AEG -+ /xf0/x90/xb0/x91 OLD TURKIC LETTER ORKHON AD -+ /xf0/x90/xb0/x92 OLD TURKIC LETTER YENISEI AD -+ /xf0/x90/xb0/x93 OLD TURKIC LETTER ORKHON AED -+ /xf0/x90/xb0/x94 OLD TURKIC LETTER ORKHON EZ -+ /xf0/x90/xb0/x95 OLD TURKIC LETTER YENISEI EZ -+ /xf0/x90/xb0/x96 OLD TURKIC LETTER ORKHON AY -+ /xf0/x90/xb0/x97 OLD TURKIC LETTER YENISEI AY -+ /xf0/x90/xb0/x98 OLD TURKIC LETTER ORKHON AEY -+ /xf0/x90/xb0/x99 OLD TURKIC LETTER YENISEI AEY -+ /xf0/x90/xb0/x9a OLD TURKIC LETTER ORKHON AEK -+ /xf0/x90/xb0/x9b OLD TURKIC LETTER YENISEI AEK -+ /xf0/x90/xb0/x9c OLD TURKIC LETTER ORKHON OEK -+ /xf0/x90/xb0/x9d OLD TURKIC LETTER YENISEI OEK -+ /xf0/x90/xb0/x9e OLD TURKIC LETTER ORKHON AL -+ /xf0/x90/xb0/x9f OLD TURKIC LETTER YENISEI AL -+ /xf0/x90/xb0/xa0 OLD TURKIC LETTER ORKHON AEL -+ /xf0/x90/xb0/xa1 OLD TURKIC LETTER ORKHON ELT -+ /xf0/x90/xb0/xa2 OLD TURKIC LETTER ORKHON EM -+ /xf0/x90/xb0/xa3 OLD TURKIC LETTER ORKHON AN -+ /xf0/x90/xb0/xa4 OLD TURKIC LETTER ORKHON AEN -+ /xf0/x90/xb0/xa5 OLD TURKIC LETTER YENISEI AEN -+ /xf0/x90/xb0/xa6 OLD TURKIC LETTER ORKHON ENT -+ /xf0/x90/xb0/xa7 OLD TURKIC LETTER YENISEI ENT -+ /xf0/x90/xb0/xa8 OLD TURKIC LETTER ORKHON ENC -+ /xf0/x90/xb0/xa9 OLD TURKIC LETTER YENISEI ENC -+ /xf0/x90/xb0/xaa OLD TURKIC LETTER ORKHON ENY -+ /xf0/x90/xb0/xab OLD TURKIC LETTER YENISEI ENY -+ /xf0/x90/xb0/xac OLD TURKIC LETTER YENISEI ANG -+ /xf0/x90/xb0/xad OLD TURKIC LETTER ORKHON ENG -+ /xf0/x90/xb0/xae OLD TURKIC LETTER YENISEI AENG -+ /xf0/x90/xb0/xaf OLD TURKIC LETTER ORKHON EP -+ /xf0/x90/xb0/xb0 OLD TURKIC LETTER ORKHON OP -+ /xf0/x90/xb0/xb1 OLD TURKIC LETTER ORKHON IC -+ /xf0/x90/xb0/xb2 OLD TURKIC LETTER ORKHON EC -+ /xf0/x90/xb0/xb3 OLD TURKIC LETTER YENISEI EC -+ /xf0/x90/xb0/xb4 OLD TURKIC LETTER ORKHON AQ -+ /xf0/x90/xb0/xb5 OLD TURKIC LETTER YENISEI AQ -+ /xf0/x90/xb0/xb6 OLD TURKIC LETTER ORKHON IQ -+ /xf0/x90/xb0/xb7 OLD TURKIC LETTER YENISEI IQ -+ /xf0/x90/xb0/xb8 OLD TURKIC LETTER ORKHON OQ -+ /xf0/x90/xb0/xb9 OLD TURKIC LETTER YENISEI OQ -+ /xf0/x90/xb0/xba OLD TURKIC LETTER ORKHON AR -+ /xf0/x90/xb0/xbb OLD TURKIC LETTER YENISEI AR -+ /xf0/x90/xb0/xbc OLD TURKIC LETTER ORKHON AER -+ /xf0/x90/xb0/xbd OLD TURKIC LETTER ORKHON AS -+ /xf0/x90/xb0/xbe OLD TURKIC LETTER ORKHON AES -+ /xf0/x90/xb0/xbf OLD TURKIC LETTER ORKHON ASH -+ /xf0/x90/xb1/x80 OLD TURKIC LETTER YENISEI ASH -+ /xf0/x90/xb1/x81 OLD TURKIC LETTER ORKHON ESH -+ /xf0/x90/xb1/x82 OLD TURKIC LETTER YENISEI ESH -+ /xf0/x90/xb1/x83 OLD TURKIC LETTER ORKHON AT -+ /xf0/x90/xb1/x84 OLD TURKIC LETTER YENISEI AT -+ /xf0/x90/xb1/x85 OLD TURKIC LETTER ORKHON AET -+ /xf0/x90/xb1/x86 OLD TURKIC LETTER YENISEI AET -+ /xf0/x90/xb1/x87 OLD TURKIC LETTER ORKHON OT -+ /xf0/x90/xb1/x88 OLD TURKIC LETTER ORKHON BASH -+ /xf0/x90/xb9/xa0 RUMI DIGIT ONE -+ /xf0/x90/xb9/xa1 RUMI DIGIT TWO -+ /xf0/x90/xb9/xa2 RUMI DIGIT THREE -+ /xf0/x90/xb9/xa3 RUMI DIGIT FOUR -+ /xf0/x90/xb9/xa4 RUMI DIGIT FIVE -+ /xf0/x90/xb9/xa5 RUMI DIGIT SIX -+ /xf0/x90/xb9/xa6 RUMI DIGIT SEVEN -+ /xf0/x90/xb9/xa7 RUMI DIGIT EIGHT -+ /xf0/x90/xb9/xa8 RUMI DIGIT NINE -+ /xf0/x90/xb9/xa9 RUMI NUMBER TEN -+ /xf0/x90/xb9/xaa RUMI NUMBER TWENTY -+ /xf0/x90/xb9/xab RUMI NUMBER THIRTY -+ /xf0/x90/xb9/xac RUMI NUMBER FORTY -+ /xf0/x90/xb9/xad RUMI NUMBER FIFTY -+ /xf0/x90/xb9/xae RUMI NUMBER SIXTY -+ /xf0/x90/xb9/xaf RUMI NUMBER SEVENTY -+ /xf0/x90/xb9/xb0 RUMI NUMBER EIGHTY -+ /xf0/x90/xb9/xb1 RUMI NUMBER NINETY -+ /xf0/x90/xb9/xb2 RUMI NUMBER ONE HUNDRED -+ /xf0/x90/xb9/xb3 RUMI NUMBER TWO HUNDRED -+ /xf0/x90/xb9/xb4 RUMI NUMBER THREE HUNDRED -+ /xf0/x90/xb9/xb5 RUMI NUMBER FOUR HUNDRED -+ /xf0/x90/xb9/xb6 RUMI NUMBER FIVE HUNDRED -+ /xf0/x90/xb9/xb7 RUMI NUMBER SIX HUNDRED -+ /xf0/x90/xb9/xb8 RUMI NUMBER SEVEN HUNDRED -+ /xf0/x90/xb9/xb9 RUMI NUMBER EIGHT HUNDRED -+ /xf0/x90/xb9/xba RUMI NUMBER NINE HUNDRED -+ /xf0/x90/xb9/xbb RUMI FRACTION ONE HALF -+ /xf0/x90/xb9/xbc RUMI FRACTION ONE QUARTER -+ /xf0/x90/xb9/xbd RUMI FRACTION ONE THIRD -+ /xf0/x90/xb9/xbe RUMI FRACTION TWO THIRDS -+ /xf0/x91/x80/x80 BRAHMI SIGN CANDRABINDU -+ /xf0/x91/x80/x81 BRAHMI SIGN ANUSVARA -+ /xf0/x91/x80/x82 BRAHMI SIGN VISARGA -+ /xf0/x91/x80/x83 BRAHMI SIGN JIHVAMULIYA -+ /xf0/x91/x80/x84 BRAHMI SIGN UPADHMANIYA -+ /xf0/x91/x80/x85 BRAHMI LETTER A -+ /xf0/x91/x80/x86 BRAHMI LETTER AA -+ /xf0/x91/x80/x87 BRAHMI LETTER I -+ /xf0/x91/x80/x88 BRAHMI LETTER II -+ /xf0/x91/x80/x89 BRAHMI LETTER U -+ /xf0/x91/x80/x8a BRAHMI LETTER UU -+ /xf0/x91/x80/x8b BRAHMI LETTER VOCALIC R -+ /xf0/x91/x80/x8c BRAHMI LETTER VOCALIC RR -+ /xf0/x91/x80/x8d BRAHMI LETTER VOCALIC L -+ /xf0/x91/x80/x8e BRAHMI LETTER VOCALIC LL -+ /xf0/x91/x80/x8f BRAHMI LETTER E -+ /xf0/x91/x80/x90 BRAHMI LETTER AI -+ /xf0/x91/x80/x91 BRAHMI LETTER O -+ /xf0/x91/x80/x92 BRAHMI LETTER AU -+ /xf0/x91/x80/x93 BRAHMI LETTER KA -+ /xf0/x91/x80/x94 BRAHMI LETTER KHA -+ /xf0/x91/x80/x95 BRAHMI LETTER GA -+ /xf0/x91/x80/x96 BRAHMI LETTER GHA -+ /xf0/x91/x80/x97 BRAHMI LETTER NGA -+ /xf0/x91/x80/x98 BRAHMI LETTER CA -+ /xf0/x91/x80/x99 BRAHMI LETTER CHA -+ /xf0/x91/x80/x9a BRAHMI LETTER JA -+ /xf0/x91/x80/x9b BRAHMI LETTER JHA -+ /xf0/x91/x80/x9c BRAHMI LETTER NYA -+ /xf0/x91/x80/x9d BRAHMI LETTER TTA -+ /xf0/x91/x80/x9e BRAHMI LETTER TTHA -+ /xf0/x91/x80/x9f BRAHMI LETTER DDA -+ /xf0/x91/x80/xa0 BRAHMI LETTER DDHA -+ /xf0/x91/x80/xa1 BRAHMI LETTER NNA -+ /xf0/x91/x80/xa2 BRAHMI LETTER TA -+ /xf0/x91/x80/xa3 BRAHMI LETTER THA -+ /xf0/x91/x80/xa4 BRAHMI LETTER DA -+ /xf0/x91/x80/xa5 BRAHMI LETTER DHA -+ /xf0/x91/x80/xa6 BRAHMI LETTER NA -+ /xf0/x91/x80/xa7 BRAHMI LETTER PA -+ /xf0/x91/x80/xa8 BRAHMI LETTER PHA -+ /xf0/x91/x80/xa9 BRAHMI LETTER BA -+ /xf0/x91/x80/xaa BRAHMI LETTER BHA -+ /xf0/x91/x80/xab BRAHMI LETTER MA -+ /xf0/x91/x80/xac BRAHMI LETTER YA -+ /xf0/x91/x80/xad BRAHMI LETTER RA -+ /xf0/x91/x80/xae BRAHMI LETTER LA -+ /xf0/x91/x80/xaf BRAHMI LETTER VA -+ /xf0/x91/x80/xb0 BRAHMI LETTER SHA -+ /xf0/x91/x80/xb1 BRAHMI LETTER SSA -+ /xf0/x91/x80/xb2 BRAHMI LETTER SA -+ /xf0/x91/x80/xb3 BRAHMI LETTER HA -+ /xf0/x91/x80/xb4 BRAHMI LETTER LLA -+ /xf0/x91/x80/xb5 BRAHMI LETTER OLD TAMIL LLLA -+ /xf0/x91/x80/xb6 BRAHMI LETTER OLD TAMIL RRA -+ /xf0/x91/x80/xb7 BRAHMI LETTER OLD TAMIL NNNA -+ /xf0/x91/x80/xb8 BRAHMI VOWEL SIGN AA -+ /xf0/x91/x80/xb9 BRAHMI VOWEL SIGN BHATTIPROLU AA -+ /xf0/x91/x80/xba BRAHMI VOWEL SIGN I -+ /xf0/x91/x80/xbb BRAHMI VOWEL SIGN II -+ /xf0/x91/x80/xbc BRAHMI VOWEL SIGN U -+ /xf0/x91/x80/xbd BRAHMI VOWEL SIGN UU -+ /xf0/x91/x80/xbe BRAHMI VOWEL SIGN VOCALIC R -+ /xf0/x91/x80/xbf BRAHMI VOWEL SIGN VOCALIC RR -+ /xf0/x91/x81/x80 BRAHMI VOWEL SIGN VOCALIC L -+ /xf0/x91/x81/x81 BRAHMI VOWEL SIGN VOCALIC LL -+ /xf0/x91/x81/x82 BRAHMI VOWEL SIGN E -+ /xf0/x91/x81/x83 BRAHMI VOWEL SIGN AI -+ /xf0/x91/x81/x84 BRAHMI VOWEL SIGN O -+ /xf0/x91/x81/x85 BRAHMI VOWEL SIGN AU -+ /xf0/x91/x81/x86 BRAHMI VIRAMA -+ /xf0/x91/x81/x87 BRAHMI DANDA -+ /xf0/x91/x81/x88 BRAHMI DOUBLE DANDA -+ /xf0/x91/x81/x89 BRAHMI PUNCTUATION DOT -+ /xf0/x91/x81/x8a BRAHMI PUNCTUATION DOUBLE DOT -+ /xf0/x91/x81/x8b BRAHMI PUNCTUATION LINE -+ /xf0/x91/x81/x8c BRAHMI PUNCTUATION CRESCENT BAR -+ /xf0/x91/x81/x8d BRAHMI PUNCTUATION LOTUS -+ /xf0/x91/x81/x92 BRAHMI NUMBER ONE -+ /xf0/x91/x81/x93 BRAHMI NUMBER TWO -+ /xf0/x91/x81/x94 BRAHMI NUMBER THREE -+ /xf0/x91/x81/x95 BRAHMI NUMBER FOUR -+ /xf0/x91/x81/x96 BRAHMI NUMBER FIVE -+ /xf0/x91/x81/x97 BRAHMI NUMBER SIX -+ /xf0/x91/x81/x98 BRAHMI NUMBER SEVEN -+ /xf0/x91/x81/x99 BRAHMI NUMBER EIGHT -+ /xf0/x91/x81/x9a BRAHMI NUMBER NINE -+ /xf0/x91/x81/x9b BRAHMI NUMBER TEN -+ /xf0/x91/x81/x9c BRAHMI NUMBER TWENTY -+ /xf0/x91/x81/x9d BRAHMI NUMBER THIRTY -+ /xf0/x91/x81/x9e BRAHMI NUMBER FORTY -+ /xf0/x91/x81/x9f BRAHMI NUMBER FIFTY -+ /xf0/x91/x81/xa0 BRAHMI NUMBER SIXTY -+ /xf0/x91/x81/xa1 BRAHMI NUMBER SEVENTY -+ /xf0/x91/x81/xa2 BRAHMI NUMBER EIGHTY -+ /xf0/x91/x81/xa3 BRAHMI NUMBER NINETY -+ /xf0/x91/x81/xa4 BRAHMI NUMBER ONE HUNDRED -+ /xf0/x91/x81/xa5 BRAHMI NUMBER ONE THOUSAND -+ /xf0/x91/x81/xa6 BRAHMI DIGIT ZERO -+ /xf0/x91/x81/xa7 BRAHMI DIGIT ONE -+ /xf0/x91/x81/xa8 BRAHMI DIGIT TWO -+ /xf0/x91/x81/xa9 BRAHMI DIGIT THREE -+ /xf0/x91/x81/xaa BRAHMI DIGIT FOUR -+ /xf0/x91/x81/xab BRAHMI DIGIT FIVE -+ /xf0/x91/x81/xac BRAHMI DIGIT SIX -+ /xf0/x91/x81/xad BRAHMI DIGIT SEVEN -+ /xf0/x91/x81/xae BRAHMI DIGIT EIGHT -+ /xf0/x91/x81/xaf BRAHMI DIGIT NINE -+ /xf0/x91/x82/x80 KAITHI SIGN CANDRABINDU -+ /xf0/x91/x82/x81 KAITHI SIGN ANUSVARA -+ /xf0/x91/x82/x82 KAITHI SIGN VISARGA -+ /xf0/x91/x82/x83 KAITHI LETTER A -+ /xf0/x91/x82/x84 KAITHI LETTER AA -+ /xf0/x91/x82/x85 KAITHI LETTER I -+ /xf0/x91/x82/x86 KAITHI LETTER II -+ /xf0/x91/x82/x87 KAITHI LETTER U -+ /xf0/x91/x82/x88 KAITHI LETTER UU -+ /xf0/x91/x82/x89 KAITHI LETTER E -+ /xf0/x91/x82/x8a KAITHI LETTER AI -+ /xf0/x91/x82/x8b KAITHI LETTER O -+ /xf0/x91/x82/x8c KAITHI LETTER AU -+ /xf0/x91/x82/x8d KAITHI LETTER KA -+ /xf0/x91/x82/x8e KAITHI LETTER KHA -+ /xf0/x91/x82/x8f KAITHI LETTER GA -+ /xf0/x91/x82/x90 KAITHI LETTER GHA -+ /xf0/x91/x82/x91 KAITHI LETTER NGA -+ /xf0/x91/x82/x92 KAITHI LETTER CA -+ /xf0/x91/x82/x93 KAITHI LETTER CHA -+ /xf0/x91/x82/x94 KAITHI LETTER JA -+ /xf0/x91/x82/x95 KAITHI LETTER JHA -+ /xf0/x91/x82/x96 KAITHI LETTER NYA -+ /xf0/x91/x82/x97 KAITHI LETTER TTA -+ /xf0/x91/x82/x98 KAITHI LETTER TTHA -+ /xf0/x91/x82/x99 KAITHI LETTER DDA -+ /xf0/x91/x82/x9a KAITHI LETTER DDDHA -+ /xf0/x91/x82/x9b KAITHI LETTER DDHA -+ /xf0/x91/x82/x9c KAITHI LETTER RHA -+ /xf0/x91/x82/x9d KAITHI LETTER NNA -+ /xf0/x91/x82/x9e KAITHI LETTER TA -+ /xf0/x91/x82/x9f KAITHI LETTER THA -+ /xf0/x91/x82/xa0 KAITHI LETTER DA -+ /xf0/x91/x82/xa1 KAITHI LETTER DHA -+ /xf0/x91/x82/xa2 KAITHI LETTER NA -+ /xf0/x91/x82/xa3 KAITHI LETTER PA -+ /xf0/x91/x82/xa4 KAITHI LETTER PHA -+ /xf0/x91/x82/xa5 KAITHI LETTER BA -+ /xf0/x91/x82/xa6 KAITHI LETTER BHA -+ /xf0/x91/x82/xa7 KAITHI LETTER MA -+ /xf0/x91/x82/xa8 KAITHI LETTER YA -+ /xf0/x91/x82/xa9 KAITHI LETTER RA -+ /xf0/x91/x82/xaa KAITHI LETTER LA -+ /xf0/x91/x82/xab KAITHI LETTER VA -+ /xf0/x91/x82/xac KAITHI LETTER SHA -+ /xf0/x91/x82/xad KAITHI LETTER SSA -+ /xf0/x91/x82/xae KAITHI LETTER SA -+ /xf0/x91/x82/xaf KAITHI LETTER HA -+ /xf0/x91/x82/xb0 KAITHI VOWEL SIGN AA -+ /xf0/x91/x82/xb1 KAITHI VOWEL SIGN I -+ /xf0/x91/x82/xb2 KAITHI VOWEL SIGN II -+ /xf0/x91/x82/xb3 KAITHI VOWEL SIGN U -+ /xf0/x91/x82/xb4 KAITHI VOWEL SIGN UU -+ /xf0/x91/x82/xb5 KAITHI VOWEL SIGN E -+ /xf0/x91/x82/xb6 KAITHI VOWEL SIGN AI -+ /xf0/x91/x82/xb7 KAITHI VOWEL SIGN O -+ /xf0/x91/x82/xb8 KAITHI VOWEL SIGN AU -+ /xf0/x91/x82/xb9 KAITHI SIGN VIRAMA -+ /xf0/x91/x82/xba KAITHI SIGN NUKTA -+ /xf0/x91/x82/xbb KAITHI ABBREVIATION SIGN -+ /xf0/x91/x82/xbc KAITHI ENUMERATION SIGN -+ /xf0/x91/x82/xbd KAITHI NUMBER SIGN -+ /xf0/x91/x82/xbe KAITHI SECTION MARK -+ /xf0/x91/x82/xbf KAITHI DOUBLE SECTION MARK -+ /xf0/x91/x83/x80 KAITHI DANDA -+ /xf0/x91/x83/x81 KAITHI DOUBLE DANDA - /xf0/x92/x80/x80 CUNEIFORM SIGN A - /xf0/x92/x80/x81 CUNEIFORM SIGN A TIMES A - /xf0/x92/x80/x82 CUNEIFORM SIGN A TIMES BAD -@@ -28370,6 +30022,1648 @@ CHARMAP - /xf0/x92/x91/xb1 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON - /xf0/x92/x91/xb2 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON - /xf0/x92/x91/xb3 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON -+ /xf0/x93/x80/x80 EGYPTIAN HIEROGLYPH A001 -+ /xf0/x93/x80/x81 EGYPTIAN HIEROGLYPH A002 -+ /xf0/x93/x80/x82 EGYPTIAN HIEROGLYPH A003 -+ /xf0/x93/x80/x83 EGYPTIAN HIEROGLYPH A004 -+ /xf0/x93/x80/x84 EGYPTIAN HIEROGLYPH A005 -+ /xf0/x93/x80/x85 EGYPTIAN HIEROGLYPH A005A -+ /xf0/x93/x80/x86 EGYPTIAN HIEROGLYPH A006 -+ /xf0/x93/x80/x87 EGYPTIAN HIEROGLYPH A006A -+ /xf0/x93/x80/x88 EGYPTIAN HIEROGLYPH A006B -+ /xf0/x93/x80/x89 EGYPTIAN HIEROGLYPH A007 -+ /xf0/x93/x80/x8a EGYPTIAN HIEROGLYPH A008 -+ /xf0/x93/x80/x8b EGYPTIAN HIEROGLYPH A009 -+ /xf0/x93/x80/x8c EGYPTIAN HIEROGLYPH A010 -+ /xf0/x93/x80/x8d EGYPTIAN HIEROGLYPH A011 -+ /xf0/x93/x80/x8e EGYPTIAN HIEROGLYPH A012 -+ /xf0/x93/x80/x8f EGYPTIAN HIEROGLYPH A013 -+ /xf0/x93/x80/x90 EGYPTIAN HIEROGLYPH A014 -+ /xf0/x93/x80/x91 EGYPTIAN HIEROGLYPH A014A -+ /xf0/x93/x80/x92 EGYPTIAN HIEROGLYPH A015 -+ /xf0/x93/x80/x93 EGYPTIAN HIEROGLYPH A016 -+ /xf0/x93/x80/x94 EGYPTIAN HIEROGLYPH A017 -+ /xf0/x93/x80/x95 EGYPTIAN HIEROGLYPH A017A -+ /xf0/x93/x80/x96 EGYPTIAN HIEROGLYPH A018 -+ /xf0/x93/x80/x97 EGYPTIAN HIEROGLYPH A019 -+ /xf0/x93/x80/x98 EGYPTIAN HIEROGLYPH A020 -+ /xf0/x93/x80/x99 EGYPTIAN HIEROGLYPH A021 -+ /xf0/x93/x80/x9a EGYPTIAN HIEROGLYPH A022 -+ /xf0/x93/x80/x9b EGYPTIAN HIEROGLYPH A023 -+ /xf0/x93/x80/x9c EGYPTIAN HIEROGLYPH A024 -+ /xf0/x93/x80/x9d EGYPTIAN HIEROGLYPH A025 -+ /xf0/x93/x80/x9e EGYPTIAN HIEROGLYPH A026 -+ /xf0/x93/x80/x9f EGYPTIAN HIEROGLYPH A027 -+ /xf0/x93/x80/xa0 EGYPTIAN HIEROGLYPH A028 -+ /xf0/x93/x80/xa1 EGYPTIAN HIEROGLYPH A029 -+ /xf0/x93/x80/xa2 EGYPTIAN HIEROGLYPH A030 -+ /xf0/x93/x80/xa3 EGYPTIAN HIEROGLYPH A031 -+ /xf0/x93/x80/xa4 EGYPTIAN HIEROGLYPH A032 -+ /xf0/x93/x80/xa5 EGYPTIAN HIEROGLYPH A032A -+ /xf0/x93/x80/xa6 EGYPTIAN HIEROGLYPH A033 -+ /xf0/x93/x80/xa7 EGYPTIAN HIEROGLYPH A034 -+ /xf0/x93/x80/xa8 EGYPTIAN HIEROGLYPH A035 -+ /xf0/x93/x80/xa9 EGYPTIAN HIEROGLYPH A036 -+ /xf0/x93/x80/xaa EGYPTIAN HIEROGLYPH A037 -+ /xf0/x93/x80/xab EGYPTIAN HIEROGLYPH A038 -+ /xf0/x93/x80/xac EGYPTIAN HIEROGLYPH A039 -+ /xf0/x93/x80/xad EGYPTIAN HIEROGLYPH A040 -+ /xf0/x93/x80/xae EGYPTIAN HIEROGLYPH A040A -+ /xf0/x93/x80/xaf EGYPTIAN HIEROGLYPH A041 -+ /xf0/x93/x80/xb0 EGYPTIAN HIEROGLYPH A042 -+ /xf0/x93/x80/xb1 EGYPTIAN HIEROGLYPH A042A -+ /xf0/x93/x80/xb2 EGYPTIAN HIEROGLYPH A043 -+ /xf0/x93/x80/xb3 EGYPTIAN HIEROGLYPH A043A -+ /xf0/x93/x80/xb4 EGYPTIAN HIEROGLYPH A044 -+ /xf0/x93/x80/xb5 EGYPTIAN HIEROGLYPH A045 -+ /xf0/x93/x80/xb6 EGYPTIAN HIEROGLYPH A045A -+ /xf0/x93/x80/xb7 EGYPTIAN HIEROGLYPH A046 -+ /xf0/x93/x80/xb8 EGYPTIAN HIEROGLYPH A047 -+ /xf0/x93/x80/xb9 EGYPTIAN HIEROGLYPH A048 -+ /xf0/x93/x80/xba EGYPTIAN HIEROGLYPH A049 -+ /xf0/x93/x80/xbb EGYPTIAN HIEROGLYPH A050 -+ /xf0/x93/x80/xbc EGYPTIAN HIEROGLYPH A051 -+ /xf0/x93/x80/xbd EGYPTIAN HIEROGLYPH A052 -+ /xf0/x93/x80/xbe EGYPTIAN HIEROGLYPH A053 -+ /xf0/x93/x80/xbf EGYPTIAN HIEROGLYPH A054 -+ /xf0/x93/x81/x80 EGYPTIAN HIEROGLYPH A055 -+ /xf0/x93/x81/x81 EGYPTIAN HIEROGLYPH A056 -+ /xf0/x93/x81/x82 EGYPTIAN HIEROGLYPH A057 -+ /xf0/x93/x81/x83 EGYPTIAN HIEROGLYPH A058 -+ /xf0/x93/x81/x84 EGYPTIAN HIEROGLYPH A059 -+ /xf0/x93/x81/x85 EGYPTIAN HIEROGLYPH A060 -+ /xf0/x93/x81/x86 EGYPTIAN HIEROGLYPH A061 -+ /xf0/x93/x81/x87 EGYPTIAN HIEROGLYPH A062 -+ /xf0/x93/x81/x88 EGYPTIAN HIEROGLYPH A063 -+ /xf0/x93/x81/x89 EGYPTIAN HIEROGLYPH A064 -+ /xf0/x93/x81/x8a EGYPTIAN HIEROGLYPH A065 -+ /xf0/x93/x81/x8b EGYPTIAN HIEROGLYPH A066 -+ /xf0/x93/x81/x8c EGYPTIAN HIEROGLYPH A067 -+ /xf0/x93/x81/x8d EGYPTIAN HIEROGLYPH A068 -+ /xf0/x93/x81/x8e EGYPTIAN HIEROGLYPH A069 -+ /xf0/x93/x81/x8f EGYPTIAN HIEROGLYPH A070 -+ /xf0/x93/x81/x90 EGYPTIAN HIEROGLYPH B001 -+ /xf0/x93/x81/x91 EGYPTIAN HIEROGLYPH B002 -+ /xf0/x93/x81/x92 EGYPTIAN HIEROGLYPH B003 -+ /xf0/x93/x81/x93 EGYPTIAN HIEROGLYPH B004 -+ /xf0/x93/x81/x94 EGYPTIAN HIEROGLYPH B005 -+ /xf0/x93/x81/x95 EGYPTIAN HIEROGLYPH B005A -+ /xf0/x93/x81/x96 EGYPTIAN HIEROGLYPH B006 -+ /xf0/x93/x81/x97 EGYPTIAN HIEROGLYPH B007 -+ /xf0/x93/x81/x98 EGYPTIAN HIEROGLYPH B008 -+ /xf0/x93/x81/x99 EGYPTIAN HIEROGLYPH B009 -+ /xf0/x93/x81/x9a EGYPTIAN HIEROGLYPH C001 -+ /xf0/x93/x81/x9b EGYPTIAN HIEROGLYPH C002 -+ /xf0/x93/x81/x9c EGYPTIAN HIEROGLYPH C002A -+ /xf0/x93/x81/x9d EGYPTIAN HIEROGLYPH C002B -+ /xf0/x93/x81/x9e EGYPTIAN HIEROGLYPH C002C -+ /xf0/x93/x81/x9f EGYPTIAN HIEROGLYPH C003 -+ /xf0/x93/x81/xa0 EGYPTIAN HIEROGLYPH C004 -+ /xf0/x93/x81/xa1 EGYPTIAN HIEROGLYPH C005 -+ /xf0/x93/x81/xa2 EGYPTIAN HIEROGLYPH C006 -+ /xf0/x93/x81/xa3 EGYPTIAN HIEROGLYPH C007 -+ /xf0/x93/x81/xa4 EGYPTIAN HIEROGLYPH C008 -+ /xf0/x93/x81/xa5 EGYPTIAN HIEROGLYPH C009 -+ /xf0/x93/x81/xa6 EGYPTIAN HIEROGLYPH C010 -+ /xf0/x93/x81/xa7 EGYPTIAN HIEROGLYPH C010A -+ /xf0/x93/x81/xa8 EGYPTIAN HIEROGLYPH C011 -+ /xf0/x93/x81/xa9 EGYPTIAN HIEROGLYPH C012 -+ /xf0/x93/x81/xaa EGYPTIAN HIEROGLYPH C013 -+ /xf0/x93/x81/xab EGYPTIAN HIEROGLYPH C014 -+ /xf0/x93/x81/xac EGYPTIAN HIEROGLYPH C015 -+ /xf0/x93/x81/xad EGYPTIAN HIEROGLYPH C016 -+ /xf0/x93/x81/xae EGYPTIAN HIEROGLYPH C017 -+ /xf0/x93/x81/xaf EGYPTIAN HIEROGLYPH C018 -+ /xf0/x93/x81/xb0 EGYPTIAN HIEROGLYPH C019 -+ /xf0/x93/x81/xb1 EGYPTIAN HIEROGLYPH C020 -+ /xf0/x93/x81/xb2 EGYPTIAN HIEROGLYPH C021 -+ /xf0/x93/x81/xb3 EGYPTIAN HIEROGLYPH C022 -+ /xf0/x93/x81/xb4 EGYPTIAN HIEROGLYPH C023 -+ /xf0/x93/x81/xb5 EGYPTIAN HIEROGLYPH C024 -+ /xf0/x93/x81/xb6 EGYPTIAN HIEROGLYPH D001 -+ /xf0/x93/x81/xb7 EGYPTIAN HIEROGLYPH D002 -+ /xf0/x93/x81/xb8 EGYPTIAN HIEROGLYPH D003 -+ /xf0/x93/x81/xb9 EGYPTIAN HIEROGLYPH D004 -+ /xf0/x93/x81/xba EGYPTIAN HIEROGLYPH D005 -+ /xf0/x93/x81/xbb EGYPTIAN HIEROGLYPH D006 -+ /xf0/x93/x81/xbc EGYPTIAN HIEROGLYPH D007 -+ /xf0/x93/x81/xbd EGYPTIAN HIEROGLYPH D008 -+ /xf0/x93/x81/xbe EGYPTIAN HIEROGLYPH D008A -+ /xf0/x93/x81/xbf EGYPTIAN HIEROGLYPH D009 -+ /xf0/x93/x82/x80 EGYPTIAN HIEROGLYPH D010 -+ /xf0/x93/x82/x81 EGYPTIAN HIEROGLYPH D011 -+ /xf0/x93/x82/x82 EGYPTIAN HIEROGLYPH D012 -+ /xf0/x93/x82/x83 EGYPTIAN HIEROGLYPH D013 -+ /xf0/x93/x82/x84 EGYPTIAN HIEROGLYPH D014 -+ /xf0/x93/x82/x85 EGYPTIAN HIEROGLYPH D015 -+ /xf0/x93/x82/x86 EGYPTIAN HIEROGLYPH D016 -+ /xf0/x93/x82/x87 EGYPTIAN HIEROGLYPH D017 -+ /xf0/x93/x82/x88 EGYPTIAN HIEROGLYPH D018 -+ /xf0/x93/x82/x89 EGYPTIAN HIEROGLYPH D019 -+ /xf0/x93/x82/x8a EGYPTIAN HIEROGLYPH D020 -+ /xf0/x93/x82/x8b EGYPTIAN HIEROGLYPH D021 -+ /xf0/x93/x82/x8c EGYPTIAN HIEROGLYPH D022 -+ /xf0/x93/x82/x8d EGYPTIAN HIEROGLYPH D023 -+ /xf0/x93/x82/x8e EGYPTIAN HIEROGLYPH D024 -+ /xf0/x93/x82/x8f EGYPTIAN HIEROGLYPH D025 -+ /xf0/x93/x82/x90 EGYPTIAN HIEROGLYPH D026 -+ /xf0/x93/x82/x91 EGYPTIAN HIEROGLYPH D027 -+ /xf0/x93/x82/x92 EGYPTIAN HIEROGLYPH D027A -+ /xf0/x93/x82/x93 EGYPTIAN HIEROGLYPH D028 -+ /xf0/x93/x82/x94 EGYPTIAN HIEROGLYPH D029 -+ /xf0/x93/x82/x95 EGYPTIAN HIEROGLYPH D030 -+ /xf0/x93/x82/x96 EGYPTIAN HIEROGLYPH D031 -+ /xf0/x93/x82/x97 EGYPTIAN HIEROGLYPH D031A -+ /xf0/x93/x82/x98 EGYPTIAN HIEROGLYPH D032 -+ /xf0/x93/x82/x99 EGYPTIAN HIEROGLYPH D033 -+ /xf0/x93/x82/x9a EGYPTIAN HIEROGLYPH D034 -+ /xf0/x93/x82/x9b EGYPTIAN HIEROGLYPH D034A -+ /xf0/x93/x82/x9c EGYPTIAN HIEROGLYPH D035 -+ /xf0/x93/x82/x9d EGYPTIAN HIEROGLYPH D036 -+ /xf0/x93/x82/x9e EGYPTIAN HIEROGLYPH D037 -+ /xf0/x93/x82/x9f EGYPTIAN HIEROGLYPH D038 -+ /xf0/x93/x82/xa0 EGYPTIAN HIEROGLYPH D039 -+ /xf0/x93/x82/xa1 EGYPTIAN HIEROGLYPH D040 -+ /xf0/x93/x82/xa2 EGYPTIAN HIEROGLYPH D041 -+ /xf0/x93/x82/xa3 EGYPTIAN HIEROGLYPH D042 -+ /xf0/x93/x82/xa4 EGYPTIAN HIEROGLYPH D043 -+ /xf0/x93/x82/xa5 EGYPTIAN HIEROGLYPH D044 -+ /xf0/x93/x82/xa6 EGYPTIAN HIEROGLYPH D045 -+ /xf0/x93/x82/xa7 EGYPTIAN HIEROGLYPH D046 -+ /xf0/x93/x82/xa8 EGYPTIAN HIEROGLYPH D046A -+ /xf0/x93/x82/xa9 EGYPTIAN HIEROGLYPH D047 -+ /xf0/x93/x82/xaa EGYPTIAN HIEROGLYPH D048 -+ /xf0/x93/x82/xab EGYPTIAN HIEROGLYPH D048A -+ /xf0/x93/x82/xac EGYPTIAN HIEROGLYPH D049 -+ /xf0/x93/x82/xad EGYPTIAN HIEROGLYPH D050 -+ /xf0/x93/x82/xae EGYPTIAN HIEROGLYPH D050A -+ /xf0/x93/x82/xaf EGYPTIAN HIEROGLYPH D050B -+ /xf0/x93/x82/xb0 EGYPTIAN HIEROGLYPH D050C -+ /xf0/x93/x82/xb1 EGYPTIAN HIEROGLYPH D050D -+ /xf0/x93/x82/xb2 EGYPTIAN HIEROGLYPH D050E -+ /xf0/x93/x82/xb3 EGYPTIAN HIEROGLYPH D050F -+ /xf0/x93/x82/xb4 EGYPTIAN HIEROGLYPH D050G -+ /xf0/x93/x82/xb5 EGYPTIAN HIEROGLYPH D050H -+ /xf0/x93/x82/xb6 EGYPTIAN HIEROGLYPH D050I -+ /xf0/x93/x82/xb7 EGYPTIAN HIEROGLYPH D051 -+ /xf0/x93/x82/xb8 EGYPTIAN HIEROGLYPH D052 -+ /xf0/x93/x82/xb9 EGYPTIAN HIEROGLYPH D052A -+ /xf0/x93/x82/xba EGYPTIAN HIEROGLYPH D053 -+ /xf0/x93/x82/xbb EGYPTIAN HIEROGLYPH D054 -+ /xf0/x93/x82/xbc EGYPTIAN HIEROGLYPH D054A -+ /xf0/x93/x82/xbd EGYPTIAN HIEROGLYPH D055 -+ /xf0/x93/x82/xbe EGYPTIAN HIEROGLYPH D056 -+ /xf0/x93/x82/xbf EGYPTIAN HIEROGLYPH D057 -+ /xf0/x93/x83/x80 EGYPTIAN HIEROGLYPH D058 -+ /xf0/x93/x83/x81 EGYPTIAN HIEROGLYPH D059 -+ /xf0/x93/x83/x82 EGYPTIAN HIEROGLYPH D060 -+ /xf0/x93/x83/x83 EGYPTIAN HIEROGLYPH D061 -+ /xf0/x93/x83/x84 EGYPTIAN HIEROGLYPH D062 -+ /xf0/x93/x83/x85 EGYPTIAN HIEROGLYPH D063 -+ /xf0/x93/x83/x86 EGYPTIAN HIEROGLYPH D064 -+ /xf0/x93/x83/x87 EGYPTIAN HIEROGLYPH D065 -+ /xf0/x93/x83/x88 EGYPTIAN HIEROGLYPH D066 -+ /xf0/x93/x83/x89 EGYPTIAN HIEROGLYPH D067 -+ /xf0/x93/x83/x8a EGYPTIAN HIEROGLYPH D067A -+ /xf0/x93/x83/x8b EGYPTIAN HIEROGLYPH D067B -+ /xf0/x93/x83/x8c EGYPTIAN HIEROGLYPH D067C -+ /xf0/x93/x83/x8d EGYPTIAN HIEROGLYPH D067D -+ /xf0/x93/x83/x8e EGYPTIAN HIEROGLYPH D067E -+ /xf0/x93/x83/x8f EGYPTIAN HIEROGLYPH D067F -+ /xf0/x93/x83/x90 EGYPTIAN HIEROGLYPH D067G -+ /xf0/x93/x83/x91 EGYPTIAN HIEROGLYPH D067H -+ /xf0/x93/x83/x92 EGYPTIAN HIEROGLYPH E001 -+ /xf0/x93/x83/x93 EGYPTIAN HIEROGLYPH E002 -+ /xf0/x93/x83/x94 EGYPTIAN HIEROGLYPH E003 -+ /xf0/x93/x83/x95 EGYPTIAN HIEROGLYPH E004 -+ /xf0/x93/x83/x96 EGYPTIAN HIEROGLYPH E005 -+ /xf0/x93/x83/x97 EGYPTIAN HIEROGLYPH E006 -+ /xf0/x93/x83/x98 EGYPTIAN HIEROGLYPH E007 -+ /xf0/x93/x83/x99 EGYPTIAN HIEROGLYPH E008 -+ /xf0/x93/x83/x9a EGYPTIAN HIEROGLYPH E008A -+ /xf0/x93/x83/x9b EGYPTIAN HIEROGLYPH E009 -+ /xf0/x93/x83/x9c EGYPTIAN HIEROGLYPH E009A -+ /xf0/x93/x83/x9d EGYPTIAN HIEROGLYPH E010 -+ /xf0/x93/x83/x9e EGYPTIAN HIEROGLYPH E011 -+ /xf0/x93/x83/x9f EGYPTIAN HIEROGLYPH E012 -+ /xf0/x93/x83/xa0 EGYPTIAN HIEROGLYPH E013 -+ /xf0/x93/x83/xa1 EGYPTIAN HIEROGLYPH E014 -+ /xf0/x93/x83/xa2 EGYPTIAN HIEROGLYPH E015 -+ /xf0/x93/x83/xa3 EGYPTIAN HIEROGLYPH E016 -+ /xf0/x93/x83/xa4 EGYPTIAN HIEROGLYPH E016A -+ /xf0/x93/x83/xa5 EGYPTIAN HIEROGLYPH E017 -+ /xf0/x93/x83/xa6 EGYPTIAN HIEROGLYPH E017A -+ /xf0/x93/x83/xa7 EGYPTIAN HIEROGLYPH E018 -+ /xf0/x93/x83/xa8 EGYPTIAN HIEROGLYPH E019 -+ /xf0/x93/x83/xa9 EGYPTIAN HIEROGLYPH E020 -+ /xf0/x93/x83/xaa EGYPTIAN HIEROGLYPH E020A -+ /xf0/x93/x83/xab EGYPTIAN HIEROGLYPH E021 -+ /xf0/x93/x83/xac EGYPTIAN HIEROGLYPH E022 -+ /xf0/x93/x83/xad EGYPTIAN HIEROGLYPH E023 -+ /xf0/x93/x83/xae EGYPTIAN HIEROGLYPH E024 -+ /xf0/x93/x83/xaf EGYPTIAN HIEROGLYPH E025 -+ /xf0/x93/x83/xb0 EGYPTIAN HIEROGLYPH E026 -+ /xf0/x93/x83/xb1 EGYPTIAN HIEROGLYPH E027 -+ /xf0/x93/x83/xb2 EGYPTIAN HIEROGLYPH E028 -+ /xf0/x93/x83/xb3 EGYPTIAN HIEROGLYPH E028A -+ /xf0/x93/x83/xb4 EGYPTIAN HIEROGLYPH E029 -+ /xf0/x93/x83/xb5 EGYPTIAN HIEROGLYPH E030 -+ /xf0/x93/x83/xb6 EGYPTIAN HIEROGLYPH E031 -+ /xf0/x93/x83/xb7 EGYPTIAN HIEROGLYPH E032 -+ /xf0/x93/x83/xb8 EGYPTIAN HIEROGLYPH E033 -+ /xf0/x93/x83/xb9 EGYPTIAN HIEROGLYPH E034 -+ /xf0/x93/x83/xba EGYPTIAN HIEROGLYPH E034A -+ /xf0/x93/x83/xbb EGYPTIAN HIEROGLYPH E036 -+ /xf0/x93/x83/xbc EGYPTIAN HIEROGLYPH E037 -+ /xf0/x93/x83/xbd EGYPTIAN HIEROGLYPH E038 -+ /xf0/x93/x83/xbe EGYPTIAN HIEROGLYPH F001 -+ /xf0/x93/x83/xbf EGYPTIAN HIEROGLYPH F001A -+ /xf0/x93/x84/x80 EGYPTIAN HIEROGLYPH F002 -+ /xf0/x93/x84/x81 EGYPTIAN HIEROGLYPH F003 -+ /xf0/x93/x84/x82 EGYPTIAN HIEROGLYPH F004 -+ /xf0/x93/x84/x83 EGYPTIAN HIEROGLYPH F005 -+ /xf0/x93/x84/x84 EGYPTIAN HIEROGLYPH F006 -+ /xf0/x93/x84/x85 EGYPTIAN HIEROGLYPH F007 -+ /xf0/x93/x84/x86 EGYPTIAN HIEROGLYPH F008 -+ /xf0/x93/x84/x87 EGYPTIAN HIEROGLYPH F009 -+ /xf0/x93/x84/x88 EGYPTIAN HIEROGLYPH F010 -+ /xf0/x93/x84/x89 EGYPTIAN HIEROGLYPH F011 -+ /xf0/x93/x84/x8a EGYPTIAN HIEROGLYPH F012 -+ /xf0/x93/x84/x8b EGYPTIAN HIEROGLYPH F013 -+ /xf0/x93/x84/x8c EGYPTIAN HIEROGLYPH F013A -+ /xf0/x93/x84/x8d EGYPTIAN HIEROGLYPH F014 -+ /xf0/x93/x84/x8e EGYPTIAN HIEROGLYPH F015 -+ /xf0/x93/x84/x8f EGYPTIAN HIEROGLYPH F016 -+ /xf0/x93/x84/x90 EGYPTIAN HIEROGLYPH F017 -+ /xf0/x93/x84/x91 EGYPTIAN HIEROGLYPH F018 -+ /xf0/x93/x84/x92 EGYPTIAN HIEROGLYPH F019 -+ /xf0/x93/x84/x93 EGYPTIAN HIEROGLYPH F020 -+ /xf0/x93/x84/x94 EGYPTIAN HIEROGLYPH F021 -+ /xf0/x93/x84/x95 EGYPTIAN HIEROGLYPH F021A -+ /xf0/x93/x84/x96 EGYPTIAN HIEROGLYPH F022 -+ /xf0/x93/x84/x97 EGYPTIAN HIEROGLYPH F023 -+ /xf0/x93/x84/x98 EGYPTIAN HIEROGLYPH F024 -+ /xf0/x93/x84/x99 EGYPTIAN HIEROGLYPH F025 -+ /xf0/x93/x84/x9a EGYPTIAN HIEROGLYPH F026 -+ /xf0/x93/x84/x9b EGYPTIAN HIEROGLYPH F027 -+ /xf0/x93/x84/x9c EGYPTIAN HIEROGLYPH F028 -+ /xf0/x93/x84/x9d EGYPTIAN HIEROGLYPH F029 -+ /xf0/x93/x84/x9e EGYPTIAN HIEROGLYPH F030 -+ /xf0/x93/x84/x9f EGYPTIAN HIEROGLYPH F031 -+ /xf0/x93/x84/xa0 EGYPTIAN HIEROGLYPH F031A -+ /xf0/x93/x84/xa1 EGYPTIAN HIEROGLYPH F032 -+ /xf0/x93/x84/xa2 EGYPTIAN HIEROGLYPH F033 -+ /xf0/x93/x84/xa3 EGYPTIAN HIEROGLYPH F034 -+ /xf0/x93/x84/xa4 EGYPTIAN HIEROGLYPH F035 -+ /xf0/x93/x84/xa5 EGYPTIAN HIEROGLYPH F036 -+ /xf0/x93/x84/xa6 EGYPTIAN HIEROGLYPH F037 -+ /xf0/x93/x84/xa7 EGYPTIAN HIEROGLYPH F037A -+ /xf0/x93/x84/xa8 EGYPTIAN HIEROGLYPH F038 -+ /xf0/x93/x84/xa9 EGYPTIAN HIEROGLYPH F038A -+ /xf0/x93/x84/xaa EGYPTIAN HIEROGLYPH F039 -+ /xf0/x93/x84/xab EGYPTIAN HIEROGLYPH F040 -+ /xf0/x93/x84/xac EGYPTIAN HIEROGLYPH F041 -+ /xf0/x93/x84/xad EGYPTIAN HIEROGLYPH F042 -+ /xf0/x93/x84/xae EGYPTIAN HIEROGLYPH F043 -+ /xf0/x93/x84/xaf EGYPTIAN HIEROGLYPH F044 -+ /xf0/x93/x84/xb0 EGYPTIAN HIEROGLYPH F045 -+ /xf0/x93/x84/xb1 EGYPTIAN HIEROGLYPH F045A -+ /xf0/x93/x84/xb2 EGYPTIAN HIEROGLYPH F046 -+ /xf0/x93/x84/xb3 EGYPTIAN HIEROGLYPH F046A -+ /xf0/x93/x84/xb4 EGYPTIAN HIEROGLYPH F047 -+ /xf0/x93/x84/xb5 EGYPTIAN HIEROGLYPH F047A -+ /xf0/x93/x84/xb6 EGYPTIAN HIEROGLYPH F048 -+ /xf0/x93/x84/xb7 EGYPTIAN HIEROGLYPH F049 -+ /xf0/x93/x84/xb8 EGYPTIAN HIEROGLYPH F050 -+ /xf0/x93/x84/xb9 EGYPTIAN HIEROGLYPH F051 -+ /xf0/x93/x84/xba EGYPTIAN HIEROGLYPH F051A -+ /xf0/x93/x84/xbb EGYPTIAN HIEROGLYPH F051B -+ /xf0/x93/x84/xbc EGYPTIAN HIEROGLYPH F051C -+ /xf0/x93/x84/xbd EGYPTIAN HIEROGLYPH F052 -+ /xf0/x93/x84/xbe EGYPTIAN HIEROGLYPH F053 -+ /xf0/x93/x84/xbf EGYPTIAN HIEROGLYPH G001 -+ /xf0/x93/x85/x80 EGYPTIAN HIEROGLYPH G002 -+ /xf0/x93/x85/x81 EGYPTIAN HIEROGLYPH G003 -+ /xf0/x93/x85/x82 EGYPTIAN HIEROGLYPH G004 -+ /xf0/x93/x85/x83 EGYPTIAN HIEROGLYPH G005 -+ /xf0/x93/x85/x84 EGYPTIAN HIEROGLYPH G006 -+ /xf0/x93/x85/x85 EGYPTIAN HIEROGLYPH G006A -+ /xf0/x93/x85/x86 EGYPTIAN HIEROGLYPH G007 -+ /xf0/x93/x85/x87 EGYPTIAN HIEROGLYPH G007A -+ /xf0/x93/x85/x88 EGYPTIAN HIEROGLYPH G007B -+ /xf0/x93/x85/x89 EGYPTIAN HIEROGLYPH G008 -+ /xf0/x93/x85/x8a EGYPTIAN HIEROGLYPH G009 -+ /xf0/x93/x85/x8b EGYPTIAN HIEROGLYPH G010 -+ /xf0/x93/x85/x8c EGYPTIAN HIEROGLYPH G011 -+ /xf0/x93/x85/x8d EGYPTIAN HIEROGLYPH G011A -+ /xf0/x93/x85/x8e EGYPTIAN HIEROGLYPH G012 -+ /xf0/x93/x85/x8f EGYPTIAN HIEROGLYPH G013 -+ /xf0/x93/x85/x90 EGYPTIAN HIEROGLYPH G014 -+ /xf0/x93/x85/x91 EGYPTIAN HIEROGLYPH G015 -+ /xf0/x93/x85/x92 EGYPTIAN HIEROGLYPH G016 -+ /xf0/x93/x85/x93 EGYPTIAN HIEROGLYPH G017 -+ /xf0/x93/x85/x94 EGYPTIAN HIEROGLYPH G018 -+ /xf0/x93/x85/x95 EGYPTIAN HIEROGLYPH G019 -+ /xf0/x93/x85/x96 EGYPTIAN HIEROGLYPH G020 -+ /xf0/x93/x85/x97 EGYPTIAN HIEROGLYPH G020A -+ /xf0/x93/x85/x98 EGYPTIAN HIEROGLYPH G021 -+ /xf0/x93/x85/x99 EGYPTIAN HIEROGLYPH G022 -+ /xf0/x93/x85/x9a EGYPTIAN HIEROGLYPH G023 -+ /xf0/x93/x85/x9b EGYPTIAN HIEROGLYPH G024 -+ /xf0/x93/x85/x9c EGYPTIAN HIEROGLYPH G025 -+ /xf0/x93/x85/x9d EGYPTIAN HIEROGLYPH G026 -+ /xf0/x93/x85/x9e EGYPTIAN HIEROGLYPH G026A -+ /xf0/x93/x85/x9f EGYPTIAN HIEROGLYPH G027 -+ /xf0/x93/x85/xa0 EGYPTIAN HIEROGLYPH G028 -+ /xf0/x93/x85/xa1 EGYPTIAN HIEROGLYPH G029 -+ /xf0/x93/x85/xa2 EGYPTIAN HIEROGLYPH G030 -+ /xf0/x93/x85/xa3 EGYPTIAN HIEROGLYPH G031 -+ /xf0/x93/x85/xa4 EGYPTIAN HIEROGLYPH G032 -+ /xf0/x93/x85/xa5 EGYPTIAN HIEROGLYPH G033 -+ /xf0/x93/x85/xa6 EGYPTIAN HIEROGLYPH G034 -+ /xf0/x93/x85/xa7 EGYPTIAN HIEROGLYPH G035 -+ /xf0/x93/x85/xa8 EGYPTIAN HIEROGLYPH G036 -+ /xf0/x93/x85/xa9 EGYPTIAN HIEROGLYPH G036A -+ /xf0/x93/x85/xaa EGYPTIAN HIEROGLYPH G037 -+ /xf0/x93/x85/xab EGYPTIAN HIEROGLYPH G037A -+ /xf0/x93/x85/xac EGYPTIAN HIEROGLYPH G038 -+ /xf0/x93/x85/xad EGYPTIAN HIEROGLYPH G039 -+ /xf0/x93/x85/xae EGYPTIAN HIEROGLYPH G040 -+ /xf0/x93/x85/xaf EGYPTIAN HIEROGLYPH G041 -+ /xf0/x93/x85/xb0 EGYPTIAN HIEROGLYPH G042 -+ /xf0/x93/x85/xb1 EGYPTIAN HIEROGLYPH G043 -+ /xf0/x93/x85/xb2 EGYPTIAN HIEROGLYPH G043A -+ /xf0/x93/x85/xb3 EGYPTIAN HIEROGLYPH G044 -+ /xf0/x93/x85/xb4 EGYPTIAN HIEROGLYPH G045 -+ /xf0/x93/x85/xb5 EGYPTIAN HIEROGLYPH G045A -+ /xf0/x93/x85/xb6 EGYPTIAN HIEROGLYPH G046 -+ /xf0/x93/x85/xb7 EGYPTIAN HIEROGLYPH G047 -+ /xf0/x93/x85/xb8 EGYPTIAN HIEROGLYPH G048 -+ /xf0/x93/x85/xb9 EGYPTIAN HIEROGLYPH G049 -+ /xf0/x93/x85/xba EGYPTIAN HIEROGLYPH G050 -+ /xf0/x93/x85/xbb EGYPTIAN HIEROGLYPH G051 -+ /xf0/x93/x85/xbc EGYPTIAN HIEROGLYPH G052 -+ /xf0/x93/x85/xbd EGYPTIAN HIEROGLYPH G053 -+ /xf0/x93/x85/xbe EGYPTIAN HIEROGLYPH G054 -+ /xf0/x93/x85/xbf EGYPTIAN HIEROGLYPH H001 -+ /xf0/x93/x86/x80 EGYPTIAN HIEROGLYPH H002 -+ /xf0/x93/x86/x81 EGYPTIAN HIEROGLYPH H003 -+ /xf0/x93/x86/x82 EGYPTIAN HIEROGLYPH H004 -+ /xf0/x93/x86/x83 EGYPTIAN HIEROGLYPH H005 -+ /xf0/x93/x86/x84 EGYPTIAN HIEROGLYPH H006 -+ /xf0/x93/x86/x85 EGYPTIAN HIEROGLYPH H006A -+ /xf0/x93/x86/x86 EGYPTIAN HIEROGLYPH H007 -+ /xf0/x93/x86/x87 EGYPTIAN HIEROGLYPH H008 -+ /xf0/x93/x86/x88 EGYPTIAN HIEROGLYPH I001 -+ /xf0/x93/x86/x89 EGYPTIAN HIEROGLYPH I002 -+ /xf0/x93/x86/x8a EGYPTIAN HIEROGLYPH I003 -+ /xf0/x93/x86/x8b EGYPTIAN HIEROGLYPH I004 -+ /xf0/x93/x86/x8c EGYPTIAN HIEROGLYPH I005 -+ /xf0/x93/x86/x8d EGYPTIAN HIEROGLYPH I005A -+ /xf0/x93/x86/x8e EGYPTIAN HIEROGLYPH I006 -+ /xf0/x93/x86/x8f EGYPTIAN HIEROGLYPH I007 -+ /xf0/x93/x86/x90 EGYPTIAN HIEROGLYPH I008 -+ /xf0/x93/x86/x91 EGYPTIAN HIEROGLYPH I009 -+ /xf0/x93/x86/x92 EGYPTIAN HIEROGLYPH I009A -+ /xf0/x93/x86/x93 EGYPTIAN HIEROGLYPH I010 -+ /xf0/x93/x86/x94 EGYPTIAN HIEROGLYPH I010A -+ /xf0/x93/x86/x95 EGYPTIAN HIEROGLYPH I011 -+ /xf0/x93/x86/x96 EGYPTIAN HIEROGLYPH I011A -+ /xf0/x93/x86/x97 EGYPTIAN HIEROGLYPH I012 -+ /xf0/x93/x86/x98 EGYPTIAN HIEROGLYPH I013 -+ /xf0/x93/x86/x99 EGYPTIAN HIEROGLYPH I014 -+ /xf0/x93/x86/x9a EGYPTIAN HIEROGLYPH I015 -+ /xf0/x93/x86/x9b EGYPTIAN HIEROGLYPH K001 -+ /xf0/x93/x86/x9c EGYPTIAN HIEROGLYPH K002 -+ /xf0/x93/x86/x9d EGYPTIAN HIEROGLYPH K003 -+ /xf0/x93/x86/x9e EGYPTIAN HIEROGLYPH K004 -+ /xf0/x93/x86/x9f EGYPTIAN HIEROGLYPH K005 -+ /xf0/x93/x86/xa0 EGYPTIAN HIEROGLYPH K006 -+ /xf0/x93/x86/xa1 EGYPTIAN HIEROGLYPH K007 -+ /xf0/x93/x86/xa2 EGYPTIAN HIEROGLYPH K008 -+ /xf0/x93/x86/xa3 EGYPTIAN HIEROGLYPH L001 -+ /xf0/x93/x86/xa4 EGYPTIAN HIEROGLYPH L002 -+ /xf0/x93/x86/xa5 EGYPTIAN HIEROGLYPH L002A -+ /xf0/x93/x86/xa6 EGYPTIAN HIEROGLYPH L003 -+ /xf0/x93/x86/xa7 EGYPTIAN HIEROGLYPH L004 -+ /xf0/x93/x86/xa8 EGYPTIAN HIEROGLYPH L005 -+ /xf0/x93/x86/xa9 EGYPTIAN HIEROGLYPH L006 -+ /xf0/x93/x86/xaa EGYPTIAN HIEROGLYPH L006A -+ /xf0/x93/x86/xab EGYPTIAN HIEROGLYPH L007 -+ /xf0/x93/x86/xac EGYPTIAN HIEROGLYPH L008 -+ /xf0/x93/x86/xad EGYPTIAN HIEROGLYPH M001 -+ /xf0/x93/x86/xae EGYPTIAN HIEROGLYPH M001A -+ /xf0/x93/x86/xaf EGYPTIAN HIEROGLYPH M001B -+ /xf0/x93/x86/xb0 EGYPTIAN HIEROGLYPH M002 -+ /xf0/x93/x86/xb1 EGYPTIAN HIEROGLYPH M003 -+ /xf0/x93/x86/xb2 EGYPTIAN HIEROGLYPH M003A -+ /xf0/x93/x86/xb3 EGYPTIAN HIEROGLYPH M004 -+ /xf0/x93/x86/xb4 EGYPTIAN HIEROGLYPH M005 -+ /xf0/x93/x86/xb5 EGYPTIAN HIEROGLYPH M006 -+ /xf0/x93/x86/xb6 EGYPTIAN HIEROGLYPH M007 -+ /xf0/x93/x86/xb7 EGYPTIAN HIEROGLYPH M008 -+ /xf0/x93/x86/xb8 EGYPTIAN HIEROGLYPH M009 -+ /xf0/x93/x86/xb9 EGYPTIAN HIEROGLYPH M010 -+ /xf0/x93/x86/xba EGYPTIAN HIEROGLYPH M010A -+ /xf0/x93/x86/xbb EGYPTIAN HIEROGLYPH M011 -+ /xf0/x93/x86/xbc EGYPTIAN HIEROGLYPH M012 -+ /xf0/x93/x86/xbd EGYPTIAN HIEROGLYPH M012A -+ /xf0/x93/x86/xbe EGYPTIAN HIEROGLYPH M012B -+ /xf0/x93/x86/xbf EGYPTIAN HIEROGLYPH M012C -+ /xf0/x93/x87/x80 EGYPTIAN HIEROGLYPH M012D -+ /xf0/x93/x87/x81 EGYPTIAN HIEROGLYPH M012E -+ /xf0/x93/x87/x82 EGYPTIAN HIEROGLYPH M012F -+ /xf0/x93/x87/x83 EGYPTIAN HIEROGLYPH M012G -+ /xf0/x93/x87/x84 EGYPTIAN HIEROGLYPH M012H -+ /xf0/x93/x87/x85 EGYPTIAN HIEROGLYPH M013 -+ /xf0/x93/x87/x86 EGYPTIAN HIEROGLYPH M014 -+ /xf0/x93/x87/x87 EGYPTIAN HIEROGLYPH M015 -+ /xf0/x93/x87/x88 EGYPTIAN HIEROGLYPH M015A -+ /xf0/x93/x87/x89 EGYPTIAN HIEROGLYPH M016 -+ /xf0/x93/x87/x8a EGYPTIAN HIEROGLYPH M016A -+ /xf0/x93/x87/x8b EGYPTIAN HIEROGLYPH M017 -+ /xf0/x93/x87/x8c EGYPTIAN HIEROGLYPH M017A -+ /xf0/x93/x87/x8d EGYPTIAN HIEROGLYPH M018 -+ /xf0/x93/x87/x8e EGYPTIAN HIEROGLYPH M019 -+ /xf0/x93/x87/x8f EGYPTIAN HIEROGLYPH M020 -+ /xf0/x93/x87/x90 EGYPTIAN HIEROGLYPH M021 -+ /xf0/x93/x87/x91 EGYPTIAN HIEROGLYPH M022 -+ /xf0/x93/x87/x92 EGYPTIAN HIEROGLYPH M022A -+ /xf0/x93/x87/x93 EGYPTIAN HIEROGLYPH M023 -+ /xf0/x93/x87/x94 EGYPTIAN HIEROGLYPH M024 -+ /xf0/x93/x87/x95 EGYPTIAN HIEROGLYPH M024A -+ /xf0/x93/x87/x96 EGYPTIAN HIEROGLYPH M025 -+ /xf0/x93/x87/x97 EGYPTIAN HIEROGLYPH M026 -+ /xf0/x93/x87/x98 EGYPTIAN HIEROGLYPH M027 -+ /xf0/x93/x87/x99 EGYPTIAN HIEROGLYPH M028 -+ /xf0/x93/x87/x9a EGYPTIAN HIEROGLYPH M028A -+ /xf0/x93/x87/x9b EGYPTIAN HIEROGLYPH M029 -+ /xf0/x93/x87/x9c EGYPTIAN HIEROGLYPH M030 -+ /xf0/x93/x87/x9d EGYPTIAN HIEROGLYPH M031 -+ /xf0/x93/x87/x9e EGYPTIAN HIEROGLYPH M031A -+ /xf0/x93/x87/x9f EGYPTIAN HIEROGLYPH M032 -+ /xf0/x93/x87/xa0 EGYPTIAN HIEROGLYPH M033 -+ /xf0/x93/x87/xa1 EGYPTIAN HIEROGLYPH M033A -+ /xf0/x93/x87/xa2 EGYPTIAN HIEROGLYPH M033B -+ /xf0/x93/x87/xa3 EGYPTIAN HIEROGLYPH M034 -+ /xf0/x93/x87/xa4 EGYPTIAN HIEROGLYPH M035 -+ /xf0/x93/x87/xa5 EGYPTIAN HIEROGLYPH M036 -+ /xf0/x93/x87/xa6 EGYPTIAN HIEROGLYPH M037 -+ /xf0/x93/x87/xa7 EGYPTIAN HIEROGLYPH M038 -+ /xf0/x93/x87/xa8 EGYPTIAN HIEROGLYPH M039 -+ /xf0/x93/x87/xa9 EGYPTIAN HIEROGLYPH M040 -+ /xf0/x93/x87/xaa EGYPTIAN HIEROGLYPH M040A -+ /xf0/x93/x87/xab EGYPTIAN HIEROGLYPH M041 -+ /xf0/x93/x87/xac EGYPTIAN HIEROGLYPH M042 -+ /xf0/x93/x87/xad EGYPTIAN HIEROGLYPH M043 -+ /xf0/x93/x87/xae EGYPTIAN HIEROGLYPH M044 -+ /xf0/x93/x87/xaf EGYPTIAN HIEROGLYPH N001 -+ /xf0/x93/x87/xb0 EGYPTIAN HIEROGLYPH N002 -+ /xf0/x93/x87/xb1 EGYPTIAN HIEROGLYPH N003 -+ /xf0/x93/x87/xb2 EGYPTIAN HIEROGLYPH N004 -+ /xf0/x93/x87/xb3 EGYPTIAN HIEROGLYPH N005 -+ /xf0/x93/x87/xb4 EGYPTIAN HIEROGLYPH N006 -+ /xf0/x93/x87/xb5 EGYPTIAN HIEROGLYPH N007 -+ /xf0/x93/x87/xb6 EGYPTIAN HIEROGLYPH N008 -+ /xf0/x93/x87/xb7 EGYPTIAN HIEROGLYPH N009 -+ /xf0/x93/x87/xb8 EGYPTIAN HIEROGLYPH N010 -+ /xf0/x93/x87/xb9 EGYPTIAN HIEROGLYPH N011 -+ /xf0/x93/x87/xba EGYPTIAN HIEROGLYPH N012 -+ /xf0/x93/x87/xbb EGYPTIAN HIEROGLYPH N013 -+ /xf0/x93/x87/xbc EGYPTIAN HIEROGLYPH N014 -+ /xf0/x93/x87/xbd EGYPTIAN HIEROGLYPH N015 -+ /xf0/x93/x87/xbe EGYPTIAN HIEROGLYPH N016 -+ /xf0/x93/x87/xbf EGYPTIAN HIEROGLYPH N017 -+ /xf0/x93/x88/x80 EGYPTIAN HIEROGLYPH N018 -+ /xf0/x93/x88/x81 EGYPTIAN HIEROGLYPH N018A -+ /xf0/x93/x88/x82 EGYPTIAN HIEROGLYPH N018B -+ /xf0/x93/x88/x83 EGYPTIAN HIEROGLYPH N019 -+ /xf0/x93/x88/x84 EGYPTIAN HIEROGLYPH N020 -+ /xf0/x93/x88/x85 EGYPTIAN HIEROGLYPH N021 -+ /xf0/x93/x88/x86 EGYPTIAN HIEROGLYPH N022 -+ /xf0/x93/x88/x87 EGYPTIAN HIEROGLYPH N023 -+ /xf0/x93/x88/x88 EGYPTIAN HIEROGLYPH N024 -+ /xf0/x93/x88/x89 EGYPTIAN HIEROGLYPH N025 -+ /xf0/x93/x88/x8a EGYPTIAN HIEROGLYPH N025A -+ /xf0/x93/x88/x8b EGYPTIAN HIEROGLYPH N026 -+ /xf0/x93/x88/x8c EGYPTIAN HIEROGLYPH N027 -+ /xf0/x93/x88/x8d EGYPTIAN HIEROGLYPH N028 -+ /xf0/x93/x88/x8e EGYPTIAN HIEROGLYPH N029 -+ /xf0/x93/x88/x8f EGYPTIAN HIEROGLYPH N030 -+ /xf0/x93/x88/x90 EGYPTIAN HIEROGLYPH N031 -+ /xf0/x93/x88/x91 EGYPTIAN HIEROGLYPH N032 -+ /xf0/x93/x88/x92 EGYPTIAN HIEROGLYPH N033 -+ /xf0/x93/x88/x93 EGYPTIAN HIEROGLYPH N033A -+ /xf0/x93/x88/x94 EGYPTIAN HIEROGLYPH N034 -+ /xf0/x93/x88/x95 EGYPTIAN HIEROGLYPH N034A -+ /xf0/x93/x88/x96 EGYPTIAN HIEROGLYPH N035 -+ /xf0/x93/x88/x97 EGYPTIAN HIEROGLYPH N035A -+ /xf0/x93/x88/x98 EGYPTIAN HIEROGLYPH N036 -+ /xf0/x93/x88/x99 EGYPTIAN HIEROGLYPH N037 -+ /xf0/x93/x88/x9a EGYPTIAN HIEROGLYPH N037A -+ /xf0/x93/x88/x9b EGYPTIAN HIEROGLYPH N038 -+ /xf0/x93/x88/x9c EGYPTIAN HIEROGLYPH N039 -+ /xf0/x93/x88/x9d EGYPTIAN HIEROGLYPH N040 -+ /xf0/x93/x88/x9e EGYPTIAN HIEROGLYPH N041 -+ /xf0/x93/x88/x9f EGYPTIAN HIEROGLYPH N042 -+ /xf0/x93/x88/xa0 EGYPTIAN HIEROGLYPH NL001 -+ /xf0/x93/x88/xa1 EGYPTIAN HIEROGLYPH NL002 -+ /xf0/x93/x88/xa2 EGYPTIAN HIEROGLYPH NL003 -+ /xf0/x93/x88/xa3 EGYPTIAN HIEROGLYPH NL004 -+ /xf0/x93/x88/xa4 EGYPTIAN HIEROGLYPH NL005 -+ /xf0/x93/x88/xa5 EGYPTIAN HIEROGLYPH NL005A -+ /xf0/x93/x88/xa6 EGYPTIAN HIEROGLYPH NL006 -+ /xf0/x93/x88/xa7 EGYPTIAN HIEROGLYPH NL007 -+ /xf0/x93/x88/xa8 EGYPTIAN HIEROGLYPH NL008 -+ /xf0/x93/x88/xa9 EGYPTIAN HIEROGLYPH NL009 -+ /xf0/x93/x88/xaa EGYPTIAN HIEROGLYPH NL010 -+ /xf0/x93/x88/xab EGYPTIAN HIEROGLYPH NL011 -+ /xf0/x93/x88/xac EGYPTIAN HIEROGLYPH NL012 -+ /xf0/x93/x88/xad EGYPTIAN HIEROGLYPH NL013 -+ /xf0/x93/x88/xae EGYPTIAN HIEROGLYPH NL014 -+ /xf0/x93/x88/xaf EGYPTIAN HIEROGLYPH NL015 -+ /xf0/x93/x88/xb0 EGYPTIAN HIEROGLYPH NL016 -+ /xf0/x93/x88/xb1 EGYPTIAN HIEROGLYPH NL017 -+ /xf0/x93/x88/xb2 EGYPTIAN HIEROGLYPH NL017A -+ /xf0/x93/x88/xb3 EGYPTIAN HIEROGLYPH NL018 -+ /xf0/x93/x88/xb4 EGYPTIAN HIEROGLYPH NL019 -+ /xf0/x93/x88/xb5 EGYPTIAN HIEROGLYPH NL020 -+ /xf0/x93/x88/xb6 EGYPTIAN HIEROGLYPH NU001 -+ /xf0/x93/x88/xb7 EGYPTIAN HIEROGLYPH NU002 -+ /xf0/x93/x88/xb8 EGYPTIAN HIEROGLYPH NU003 -+ /xf0/x93/x88/xb9 EGYPTIAN HIEROGLYPH NU004 -+ /xf0/x93/x88/xba EGYPTIAN HIEROGLYPH NU005 -+ /xf0/x93/x88/xbb EGYPTIAN HIEROGLYPH NU006 -+ /xf0/x93/x88/xbc EGYPTIAN HIEROGLYPH NU007 -+ /xf0/x93/x88/xbd EGYPTIAN HIEROGLYPH NU008 -+ /xf0/x93/x88/xbe EGYPTIAN HIEROGLYPH NU009 -+ /xf0/x93/x88/xbf EGYPTIAN HIEROGLYPH NU010 -+ /xf0/x93/x89/x80 EGYPTIAN HIEROGLYPH NU010A -+ /xf0/x93/x89/x81 EGYPTIAN HIEROGLYPH NU011 -+ /xf0/x93/x89/x82 EGYPTIAN HIEROGLYPH NU011A -+ /xf0/x93/x89/x83 EGYPTIAN HIEROGLYPH NU012 -+ /xf0/x93/x89/x84 EGYPTIAN HIEROGLYPH NU013 -+ /xf0/x93/x89/x85 EGYPTIAN HIEROGLYPH NU014 -+ /xf0/x93/x89/x86 EGYPTIAN HIEROGLYPH NU015 -+ /xf0/x93/x89/x87 EGYPTIAN HIEROGLYPH NU016 -+ /xf0/x93/x89/x88 EGYPTIAN HIEROGLYPH NU017 -+ /xf0/x93/x89/x89 EGYPTIAN HIEROGLYPH NU018 -+ /xf0/x93/x89/x8a EGYPTIAN HIEROGLYPH NU018A -+ /xf0/x93/x89/x8b EGYPTIAN HIEROGLYPH NU019 -+ /xf0/x93/x89/x8c EGYPTIAN HIEROGLYPH NU020 -+ /xf0/x93/x89/x8d EGYPTIAN HIEROGLYPH NU021 -+ /xf0/x93/x89/x8e EGYPTIAN HIEROGLYPH NU022 -+ /xf0/x93/x89/x8f EGYPTIAN HIEROGLYPH NU022A -+ /xf0/x93/x89/x90 EGYPTIAN HIEROGLYPH O001 -+ /xf0/x93/x89/x91 EGYPTIAN HIEROGLYPH O001A -+ /xf0/x93/x89/x92 EGYPTIAN HIEROGLYPH O002 -+ /xf0/x93/x89/x93 EGYPTIAN HIEROGLYPH O003 -+ /xf0/x93/x89/x94 EGYPTIAN HIEROGLYPH O004 -+ /xf0/x93/x89/x95 EGYPTIAN HIEROGLYPH O005 -+ /xf0/x93/x89/x96 EGYPTIAN HIEROGLYPH O005A -+ /xf0/x93/x89/x97 EGYPTIAN HIEROGLYPH O006 -+ /xf0/x93/x89/x98 EGYPTIAN HIEROGLYPH O006A -+ /xf0/x93/x89/x99 EGYPTIAN HIEROGLYPH O006B -+ /xf0/x93/x89/x9a EGYPTIAN HIEROGLYPH O006C -+ /xf0/x93/x89/x9b EGYPTIAN HIEROGLYPH O006D -+ /xf0/x93/x89/x9c EGYPTIAN HIEROGLYPH O006E -+ /xf0/x93/x89/x9d EGYPTIAN HIEROGLYPH O006F -+ /xf0/x93/x89/x9e EGYPTIAN HIEROGLYPH O007 -+ /xf0/x93/x89/x9f EGYPTIAN HIEROGLYPH O008 -+ /xf0/x93/x89/xa0 EGYPTIAN HIEROGLYPH O009 -+ /xf0/x93/x89/xa1 EGYPTIAN HIEROGLYPH O010 -+ /xf0/x93/x89/xa2 EGYPTIAN HIEROGLYPH O010A -+ /xf0/x93/x89/xa3 EGYPTIAN HIEROGLYPH O010B -+ /xf0/x93/x89/xa4 EGYPTIAN HIEROGLYPH O010C -+ /xf0/x93/x89/xa5 EGYPTIAN HIEROGLYPH O011 -+ /xf0/x93/x89/xa6 EGYPTIAN HIEROGLYPH O012 -+ /xf0/x93/x89/xa7 EGYPTIAN HIEROGLYPH O013 -+ /xf0/x93/x89/xa8 EGYPTIAN HIEROGLYPH O014 -+ /xf0/x93/x89/xa9 EGYPTIAN HIEROGLYPH O015 -+ /xf0/x93/x89/xaa EGYPTIAN HIEROGLYPH O016 -+ /xf0/x93/x89/xab EGYPTIAN HIEROGLYPH O017 -+ /xf0/x93/x89/xac EGYPTIAN HIEROGLYPH O018 -+ /xf0/x93/x89/xad EGYPTIAN HIEROGLYPH O019 -+ /xf0/x93/x89/xae EGYPTIAN HIEROGLYPH O019A -+ /xf0/x93/x89/xaf EGYPTIAN HIEROGLYPH O020 -+ /xf0/x93/x89/xb0 EGYPTIAN HIEROGLYPH O020A -+ /xf0/x93/x89/xb1 EGYPTIAN HIEROGLYPH O021 -+ /xf0/x93/x89/xb2 EGYPTIAN HIEROGLYPH O022 -+ /xf0/x93/x89/xb3 EGYPTIAN HIEROGLYPH O023 -+ /xf0/x93/x89/xb4 EGYPTIAN HIEROGLYPH O024 -+ /xf0/x93/x89/xb5 EGYPTIAN HIEROGLYPH O024A -+ /xf0/x93/x89/xb6 EGYPTIAN HIEROGLYPH O025 -+ /xf0/x93/x89/xb7 EGYPTIAN HIEROGLYPH O025A -+ /xf0/x93/x89/xb8 EGYPTIAN HIEROGLYPH O026 -+ /xf0/x93/x89/xb9 EGYPTIAN HIEROGLYPH O027 -+ /xf0/x93/x89/xba EGYPTIAN HIEROGLYPH O028 -+ /xf0/x93/x89/xbb EGYPTIAN HIEROGLYPH O029 -+ /xf0/x93/x89/xbc EGYPTIAN HIEROGLYPH O029A -+ /xf0/x93/x89/xbd EGYPTIAN HIEROGLYPH O030 -+ /xf0/x93/x89/xbe EGYPTIAN HIEROGLYPH O030A -+ /xf0/x93/x89/xbf EGYPTIAN HIEROGLYPH O031 -+ /xf0/x93/x8a/x80 EGYPTIAN HIEROGLYPH O032 -+ /xf0/x93/x8a/x81 EGYPTIAN HIEROGLYPH O033 -+ /xf0/x93/x8a/x82 EGYPTIAN HIEROGLYPH O033A -+ /xf0/x93/x8a/x83 EGYPTIAN HIEROGLYPH O034 -+ /xf0/x93/x8a/x84 EGYPTIAN HIEROGLYPH O035 -+ /xf0/x93/x8a/x85 EGYPTIAN HIEROGLYPH O036 -+ /xf0/x93/x8a/x86 EGYPTIAN HIEROGLYPH O036A -+ /xf0/x93/x8a/x87 EGYPTIAN HIEROGLYPH O036B -+ /xf0/x93/x8a/x88 EGYPTIAN HIEROGLYPH O036C -+ /xf0/x93/x8a/x89 EGYPTIAN HIEROGLYPH O036D -+ /xf0/x93/x8a/x8a EGYPTIAN HIEROGLYPH O037 -+ /xf0/x93/x8a/x8b EGYPTIAN HIEROGLYPH O038 -+ /xf0/x93/x8a/x8c EGYPTIAN HIEROGLYPH O039 -+ /xf0/x93/x8a/x8d EGYPTIAN HIEROGLYPH O040 -+ /xf0/x93/x8a/x8e EGYPTIAN HIEROGLYPH O041 -+ /xf0/x93/x8a/x8f EGYPTIAN HIEROGLYPH O042 -+ /xf0/x93/x8a/x90 EGYPTIAN HIEROGLYPH O043 -+ /xf0/x93/x8a/x91 EGYPTIAN HIEROGLYPH O044 -+ /xf0/x93/x8a/x92 EGYPTIAN HIEROGLYPH O045 -+ /xf0/x93/x8a/x93 EGYPTIAN HIEROGLYPH O046 -+ /xf0/x93/x8a/x94 EGYPTIAN HIEROGLYPH O047 -+ /xf0/x93/x8a/x95 EGYPTIAN HIEROGLYPH O048 -+ /xf0/x93/x8a/x96 EGYPTIAN HIEROGLYPH O049 -+ /xf0/x93/x8a/x97 EGYPTIAN HIEROGLYPH O050 -+ /xf0/x93/x8a/x98 EGYPTIAN HIEROGLYPH O050A -+ /xf0/x93/x8a/x99 EGYPTIAN HIEROGLYPH O050B -+ /xf0/x93/x8a/x9a EGYPTIAN HIEROGLYPH O051 -+ /xf0/x93/x8a/x9b EGYPTIAN HIEROGLYPH P001 -+ /xf0/x93/x8a/x9c EGYPTIAN HIEROGLYPH P001A -+ /xf0/x93/x8a/x9d EGYPTIAN HIEROGLYPH P002 -+ /xf0/x93/x8a/x9e EGYPTIAN HIEROGLYPH P003 -+ /xf0/x93/x8a/x9f EGYPTIAN HIEROGLYPH P003A -+ /xf0/x93/x8a/xa0 EGYPTIAN HIEROGLYPH P004 -+ /xf0/x93/x8a/xa1 EGYPTIAN HIEROGLYPH P005 -+ /xf0/x93/x8a/xa2 EGYPTIAN HIEROGLYPH P006 -+ /xf0/x93/x8a/xa3 EGYPTIAN HIEROGLYPH P007 -+ /xf0/x93/x8a/xa4 EGYPTIAN HIEROGLYPH P008 -+ /xf0/x93/x8a/xa5 EGYPTIAN HIEROGLYPH P009 -+ /xf0/x93/x8a/xa6 EGYPTIAN HIEROGLYPH P010 -+ /xf0/x93/x8a/xa7 EGYPTIAN HIEROGLYPH P011 -+ /xf0/x93/x8a/xa8 EGYPTIAN HIEROGLYPH Q001 -+ /xf0/x93/x8a/xa9 EGYPTIAN HIEROGLYPH Q002 -+ /xf0/x93/x8a/xaa EGYPTIAN HIEROGLYPH Q003 -+ /xf0/x93/x8a/xab EGYPTIAN HIEROGLYPH Q004 -+ /xf0/x93/x8a/xac EGYPTIAN HIEROGLYPH Q005 -+ /xf0/x93/x8a/xad EGYPTIAN HIEROGLYPH Q006 -+ /xf0/x93/x8a/xae EGYPTIAN HIEROGLYPH Q007 -+ /xf0/x93/x8a/xaf EGYPTIAN HIEROGLYPH R001 -+ /xf0/x93/x8a/xb0 EGYPTIAN HIEROGLYPH R002 -+ /xf0/x93/x8a/xb1 EGYPTIAN HIEROGLYPH R002A -+ /xf0/x93/x8a/xb2 EGYPTIAN HIEROGLYPH R003 -+ /xf0/x93/x8a/xb3 EGYPTIAN HIEROGLYPH R003A -+ /xf0/x93/x8a/xb4 EGYPTIAN HIEROGLYPH R003B -+ /xf0/x93/x8a/xb5 EGYPTIAN HIEROGLYPH R004 -+ /xf0/x93/x8a/xb6 EGYPTIAN HIEROGLYPH R005 -+ /xf0/x93/x8a/xb7 EGYPTIAN HIEROGLYPH R006 -+ /xf0/x93/x8a/xb8 EGYPTIAN HIEROGLYPH R007 -+ /xf0/x93/x8a/xb9 EGYPTIAN HIEROGLYPH R008 -+ /xf0/x93/x8a/xba EGYPTIAN HIEROGLYPH R009 -+ /xf0/x93/x8a/xbb EGYPTIAN HIEROGLYPH R010 -+ /xf0/x93/x8a/xbc EGYPTIAN HIEROGLYPH R010A -+ /xf0/x93/x8a/xbd EGYPTIAN HIEROGLYPH R011 -+ /xf0/x93/x8a/xbe EGYPTIAN HIEROGLYPH R012 -+ /xf0/x93/x8a/xbf EGYPTIAN HIEROGLYPH R013 -+ /xf0/x93/x8b/x80 EGYPTIAN HIEROGLYPH R014 -+ /xf0/x93/x8b/x81 EGYPTIAN HIEROGLYPH R015 -+ /xf0/x93/x8b/x82 EGYPTIAN HIEROGLYPH R016 -+ /xf0/x93/x8b/x83 EGYPTIAN HIEROGLYPH R016A -+ /xf0/x93/x8b/x84 EGYPTIAN HIEROGLYPH R017 -+ /xf0/x93/x8b/x85 EGYPTIAN HIEROGLYPH R018 -+ /xf0/x93/x8b/x86 EGYPTIAN HIEROGLYPH R019 -+ /xf0/x93/x8b/x87 EGYPTIAN HIEROGLYPH R020 -+ /xf0/x93/x8b/x88 EGYPTIAN HIEROGLYPH R021 -+ /xf0/x93/x8b/x89 EGYPTIAN HIEROGLYPH R022 -+ /xf0/x93/x8b/x8a EGYPTIAN HIEROGLYPH R023 -+ /xf0/x93/x8b/x8b EGYPTIAN HIEROGLYPH R024 -+ /xf0/x93/x8b/x8c EGYPTIAN HIEROGLYPH R025 -+ /xf0/x93/x8b/x8d EGYPTIAN HIEROGLYPH R026 -+ /xf0/x93/x8b/x8e EGYPTIAN HIEROGLYPH R027 -+ /xf0/x93/x8b/x8f EGYPTIAN HIEROGLYPH R028 -+ /xf0/x93/x8b/x90 EGYPTIAN HIEROGLYPH R029 -+ /xf0/x93/x8b/x91 EGYPTIAN HIEROGLYPH S001 -+ /xf0/x93/x8b/x92 EGYPTIAN HIEROGLYPH S002 -+ /xf0/x93/x8b/x93 EGYPTIAN HIEROGLYPH S002A -+ /xf0/x93/x8b/x94 EGYPTIAN HIEROGLYPH S003 -+ /xf0/x93/x8b/x95 EGYPTIAN HIEROGLYPH S004 -+ /xf0/x93/x8b/x96 EGYPTIAN HIEROGLYPH S005 -+ /xf0/x93/x8b/x97 EGYPTIAN HIEROGLYPH S006 -+ /xf0/x93/x8b/x98 EGYPTIAN HIEROGLYPH S006A -+ /xf0/x93/x8b/x99 EGYPTIAN HIEROGLYPH S007 -+ /xf0/x93/x8b/x9a EGYPTIAN HIEROGLYPH S008 -+ /xf0/x93/x8b/x9b EGYPTIAN HIEROGLYPH S009 -+ /xf0/x93/x8b/x9c EGYPTIAN HIEROGLYPH S010 -+ /xf0/x93/x8b/x9d EGYPTIAN HIEROGLYPH S011 -+ /xf0/x93/x8b/x9e EGYPTIAN HIEROGLYPH S012 -+ /xf0/x93/x8b/x9f EGYPTIAN HIEROGLYPH S013 -+ /xf0/x93/x8b/xa0 EGYPTIAN HIEROGLYPH S014 -+ /xf0/x93/x8b/xa1 EGYPTIAN HIEROGLYPH S014A -+ /xf0/x93/x8b/xa2 EGYPTIAN HIEROGLYPH S014B -+ /xf0/x93/x8b/xa3 EGYPTIAN HIEROGLYPH S015 -+ /xf0/x93/x8b/xa4 EGYPTIAN HIEROGLYPH S016 -+ /xf0/x93/x8b/xa5 EGYPTIAN HIEROGLYPH S017 -+ /xf0/x93/x8b/xa6 EGYPTIAN HIEROGLYPH S017A -+ /xf0/x93/x8b/xa7 EGYPTIAN HIEROGLYPH S018 -+ /xf0/x93/x8b/xa8 EGYPTIAN HIEROGLYPH S019 -+ /xf0/x93/x8b/xa9 EGYPTIAN HIEROGLYPH S020 -+ /xf0/x93/x8b/xaa EGYPTIAN HIEROGLYPH S021 -+ /xf0/x93/x8b/xab EGYPTIAN HIEROGLYPH S022 -+ /xf0/x93/x8b/xac EGYPTIAN HIEROGLYPH S023 -+ /xf0/x93/x8b/xad EGYPTIAN HIEROGLYPH S024 -+ /xf0/x93/x8b/xae EGYPTIAN HIEROGLYPH S025 -+ /xf0/x93/x8b/xaf EGYPTIAN HIEROGLYPH S026 -+ /xf0/x93/x8b/xb0 EGYPTIAN HIEROGLYPH S026A -+ /xf0/x93/x8b/xb1 EGYPTIAN HIEROGLYPH S026B -+ /xf0/x93/x8b/xb2 EGYPTIAN HIEROGLYPH S027 -+ /xf0/x93/x8b/xb3 EGYPTIAN HIEROGLYPH S028 -+ /xf0/x93/x8b/xb4 EGYPTIAN HIEROGLYPH S029 -+ /xf0/x93/x8b/xb5 EGYPTIAN HIEROGLYPH S030 -+ /xf0/x93/x8b/xb6 EGYPTIAN HIEROGLYPH S031 -+ /xf0/x93/x8b/xb7 EGYPTIAN HIEROGLYPH S032 -+ /xf0/x93/x8b/xb8 EGYPTIAN HIEROGLYPH S033 -+ /xf0/x93/x8b/xb9 EGYPTIAN HIEROGLYPH S034 -+ /xf0/x93/x8b/xba EGYPTIAN HIEROGLYPH S035 -+ /xf0/x93/x8b/xbb EGYPTIAN HIEROGLYPH S035A -+ /xf0/x93/x8b/xbc EGYPTIAN HIEROGLYPH S036 -+ /xf0/x93/x8b/xbd EGYPTIAN HIEROGLYPH S037 -+ /xf0/x93/x8b/xbe EGYPTIAN HIEROGLYPH S038 -+ /xf0/x93/x8b/xbf EGYPTIAN HIEROGLYPH S039 -+ /xf0/x93/x8c/x80 EGYPTIAN HIEROGLYPH S040 -+ /xf0/x93/x8c/x81 EGYPTIAN HIEROGLYPH S041 -+ /xf0/x93/x8c/x82 EGYPTIAN HIEROGLYPH S042 -+ /xf0/x93/x8c/x83 EGYPTIAN HIEROGLYPH S043 -+ /xf0/x93/x8c/x84 EGYPTIAN HIEROGLYPH S044 -+ /xf0/x93/x8c/x85 EGYPTIAN HIEROGLYPH S045 -+ /xf0/x93/x8c/x86 EGYPTIAN HIEROGLYPH S046 -+ /xf0/x93/x8c/x87 EGYPTIAN HIEROGLYPH T001 -+ /xf0/x93/x8c/x88 EGYPTIAN HIEROGLYPH T002 -+ /xf0/x93/x8c/x89 EGYPTIAN HIEROGLYPH T003 -+ /xf0/x93/x8c/x8a EGYPTIAN HIEROGLYPH T003A -+ /xf0/x93/x8c/x8b EGYPTIAN HIEROGLYPH T004 -+ /xf0/x93/x8c/x8c EGYPTIAN HIEROGLYPH T005 -+ /xf0/x93/x8c/x8d EGYPTIAN HIEROGLYPH T006 -+ /xf0/x93/x8c/x8e EGYPTIAN HIEROGLYPH T007 -+ /xf0/x93/x8c/x8f EGYPTIAN HIEROGLYPH T007A -+ /xf0/x93/x8c/x90 EGYPTIAN HIEROGLYPH T008 -+ /xf0/x93/x8c/x91 EGYPTIAN HIEROGLYPH T008A -+ /xf0/x93/x8c/x92 EGYPTIAN HIEROGLYPH T009 -+ /xf0/x93/x8c/x93 EGYPTIAN HIEROGLYPH T009A -+ /xf0/x93/x8c/x94 EGYPTIAN HIEROGLYPH T010 -+ /xf0/x93/x8c/x95 EGYPTIAN HIEROGLYPH T011 -+ /xf0/x93/x8c/x96 EGYPTIAN HIEROGLYPH T011A -+ /xf0/x93/x8c/x97 EGYPTIAN HIEROGLYPH T012 -+ /xf0/x93/x8c/x98 EGYPTIAN HIEROGLYPH T013 -+ /xf0/x93/x8c/x99 EGYPTIAN HIEROGLYPH T014 -+ /xf0/x93/x8c/x9a EGYPTIAN HIEROGLYPH T015 -+ /xf0/x93/x8c/x9b EGYPTIAN HIEROGLYPH T016 -+ /xf0/x93/x8c/x9c EGYPTIAN HIEROGLYPH T016A -+ /xf0/x93/x8c/x9d EGYPTIAN HIEROGLYPH T017 -+ /xf0/x93/x8c/x9e EGYPTIAN HIEROGLYPH T018 -+ /xf0/x93/x8c/x9f EGYPTIAN HIEROGLYPH T019 -+ /xf0/x93/x8c/xa0 EGYPTIAN HIEROGLYPH T020 -+ /xf0/x93/x8c/xa1 EGYPTIAN HIEROGLYPH T021 -+ /xf0/x93/x8c/xa2 EGYPTIAN HIEROGLYPH T022 -+ /xf0/x93/x8c/xa3 EGYPTIAN HIEROGLYPH T023 -+ /xf0/x93/x8c/xa4 EGYPTIAN HIEROGLYPH T024 -+ /xf0/x93/x8c/xa5 EGYPTIAN HIEROGLYPH T025 -+ /xf0/x93/x8c/xa6 EGYPTIAN HIEROGLYPH T026 -+ /xf0/x93/x8c/xa7 EGYPTIAN HIEROGLYPH T027 -+ /xf0/x93/x8c/xa8 EGYPTIAN HIEROGLYPH T028 -+ /xf0/x93/x8c/xa9 EGYPTIAN HIEROGLYPH T029 -+ /xf0/x93/x8c/xaa EGYPTIAN HIEROGLYPH T030 -+ /xf0/x93/x8c/xab EGYPTIAN HIEROGLYPH T031 -+ /xf0/x93/x8c/xac EGYPTIAN HIEROGLYPH T032 -+ /xf0/x93/x8c/xad EGYPTIAN HIEROGLYPH T032A -+ /xf0/x93/x8c/xae EGYPTIAN HIEROGLYPH T033 -+ /xf0/x93/x8c/xaf EGYPTIAN HIEROGLYPH T033A -+ /xf0/x93/x8c/xb0 EGYPTIAN HIEROGLYPH T034 -+ /xf0/x93/x8c/xb1 EGYPTIAN HIEROGLYPH T035 -+ /xf0/x93/x8c/xb2 EGYPTIAN HIEROGLYPH T036 -+ /xf0/x93/x8c/xb3 EGYPTIAN HIEROGLYPH U001 -+ /xf0/x93/x8c/xb4 EGYPTIAN HIEROGLYPH U002 -+ /xf0/x93/x8c/xb5 EGYPTIAN HIEROGLYPH U003 -+ /xf0/x93/x8c/xb6 EGYPTIAN HIEROGLYPH U004 -+ /xf0/x93/x8c/xb7 EGYPTIAN HIEROGLYPH U005 -+ /xf0/x93/x8c/xb8 EGYPTIAN HIEROGLYPH U006 -+ /xf0/x93/x8c/xb9 EGYPTIAN HIEROGLYPH U006A -+ /xf0/x93/x8c/xba EGYPTIAN HIEROGLYPH U006B -+ /xf0/x93/x8c/xbb EGYPTIAN HIEROGLYPH U007 -+ /xf0/x93/x8c/xbc EGYPTIAN HIEROGLYPH U008 -+ /xf0/x93/x8c/xbd EGYPTIAN HIEROGLYPH U009 -+ /xf0/x93/x8c/xbe EGYPTIAN HIEROGLYPH U010 -+ /xf0/x93/x8c/xbf EGYPTIAN HIEROGLYPH U011 -+ /xf0/x93/x8d/x80 EGYPTIAN HIEROGLYPH U012 -+ /xf0/x93/x8d/x81 EGYPTIAN HIEROGLYPH U013 -+ /xf0/x93/x8d/x82 EGYPTIAN HIEROGLYPH U014 -+ /xf0/x93/x8d/x83 EGYPTIAN HIEROGLYPH U015 -+ /xf0/x93/x8d/x84 EGYPTIAN HIEROGLYPH U016 -+ /xf0/x93/x8d/x85 EGYPTIAN HIEROGLYPH U017 -+ /xf0/x93/x8d/x86 EGYPTIAN HIEROGLYPH U018 -+ /xf0/x93/x8d/x87 EGYPTIAN HIEROGLYPH U019 -+ /xf0/x93/x8d/x88 EGYPTIAN HIEROGLYPH U020 -+ /xf0/x93/x8d/x89 EGYPTIAN HIEROGLYPH U021 -+ /xf0/x93/x8d/x8a EGYPTIAN HIEROGLYPH U022 -+ /xf0/x93/x8d/x8b EGYPTIAN HIEROGLYPH U023 -+ /xf0/x93/x8d/x8c EGYPTIAN HIEROGLYPH U023A -+ /xf0/x93/x8d/x8d EGYPTIAN HIEROGLYPH U024 -+ /xf0/x93/x8d/x8e EGYPTIAN HIEROGLYPH U025 -+ /xf0/x93/x8d/x8f EGYPTIAN HIEROGLYPH U026 -+ /xf0/x93/x8d/x90 EGYPTIAN HIEROGLYPH U027 -+ /xf0/x93/x8d/x91 EGYPTIAN HIEROGLYPH U028 -+ /xf0/x93/x8d/x92 EGYPTIAN HIEROGLYPH U029 -+ /xf0/x93/x8d/x93 EGYPTIAN HIEROGLYPH U029A -+ /xf0/x93/x8d/x94 EGYPTIAN HIEROGLYPH U030 -+ /xf0/x93/x8d/x95 EGYPTIAN HIEROGLYPH U031 -+ /xf0/x93/x8d/x96 EGYPTIAN HIEROGLYPH U032 -+ /xf0/x93/x8d/x97 EGYPTIAN HIEROGLYPH U032A -+ /xf0/x93/x8d/x98 EGYPTIAN HIEROGLYPH U033 -+ /xf0/x93/x8d/x99 EGYPTIAN HIEROGLYPH U034 -+ /xf0/x93/x8d/x9a EGYPTIAN HIEROGLYPH U035 -+ /xf0/x93/x8d/x9b EGYPTIAN HIEROGLYPH U036 -+ /xf0/x93/x8d/x9c EGYPTIAN HIEROGLYPH U037 -+ /xf0/x93/x8d/x9d EGYPTIAN HIEROGLYPH U038 -+ /xf0/x93/x8d/x9e EGYPTIAN HIEROGLYPH U039 -+ /xf0/x93/x8d/x9f EGYPTIAN HIEROGLYPH U040 -+ /xf0/x93/x8d/xa0 EGYPTIAN HIEROGLYPH U041 -+ /xf0/x93/x8d/xa1 EGYPTIAN HIEROGLYPH U042 -+ /xf0/x93/x8d/xa2 EGYPTIAN HIEROGLYPH V001 -+ /xf0/x93/x8d/xa3 EGYPTIAN HIEROGLYPH V001A -+ /xf0/x93/x8d/xa4 EGYPTIAN HIEROGLYPH V001B -+ /xf0/x93/x8d/xa5 EGYPTIAN HIEROGLYPH V001C -+ /xf0/x93/x8d/xa6 EGYPTIAN HIEROGLYPH V001D -+ /xf0/x93/x8d/xa7 EGYPTIAN HIEROGLYPH V001E -+ /xf0/x93/x8d/xa8 EGYPTIAN HIEROGLYPH V001F -+ /xf0/x93/x8d/xa9 EGYPTIAN HIEROGLYPH V001G -+ /xf0/x93/x8d/xaa EGYPTIAN HIEROGLYPH V001H -+ /xf0/x93/x8d/xab EGYPTIAN HIEROGLYPH V001I -+ /xf0/x93/x8d/xac EGYPTIAN HIEROGLYPH V002 -+ /xf0/x93/x8d/xad EGYPTIAN HIEROGLYPH V002A -+ /xf0/x93/x8d/xae EGYPTIAN HIEROGLYPH V003 -+ /xf0/x93/x8d/xaf EGYPTIAN HIEROGLYPH V004 -+ /xf0/x93/x8d/xb0 EGYPTIAN HIEROGLYPH V005 -+ /xf0/x93/x8d/xb1 EGYPTIAN HIEROGLYPH V006 -+ /xf0/x93/x8d/xb2 EGYPTIAN HIEROGLYPH V007 -+ /xf0/x93/x8d/xb3 EGYPTIAN HIEROGLYPH V007A -+ /xf0/x93/x8d/xb4 EGYPTIAN HIEROGLYPH V007B -+ /xf0/x93/x8d/xb5 EGYPTIAN HIEROGLYPH V008 -+ /xf0/x93/x8d/xb6 EGYPTIAN HIEROGLYPH V009 -+ /xf0/x93/x8d/xb7 EGYPTIAN HIEROGLYPH V010 -+ /xf0/x93/x8d/xb8 EGYPTIAN HIEROGLYPH V011 -+ /xf0/x93/x8d/xb9 EGYPTIAN HIEROGLYPH V011A -+ /xf0/x93/x8d/xba EGYPTIAN HIEROGLYPH V011B -+ /xf0/x93/x8d/xbb EGYPTIAN HIEROGLYPH V011C -+ /xf0/x93/x8d/xbc EGYPTIAN HIEROGLYPH V012 -+ /xf0/x93/x8d/xbd EGYPTIAN HIEROGLYPH V012A -+ /xf0/x93/x8d/xbe EGYPTIAN HIEROGLYPH V012B -+ /xf0/x93/x8d/xbf EGYPTIAN HIEROGLYPH V013 -+ /xf0/x93/x8e/x80 EGYPTIAN HIEROGLYPH V014 -+ /xf0/x93/x8e/x81 EGYPTIAN HIEROGLYPH V015 -+ /xf0/x93/x8e/x82 EGYPTIAN HIEROGLYPH V016 -+ /xf0/x93/x8e/x83 EGYPTIAN HIEROGLYPH V017 -+ /xf0/x93/x8e/x84 EGYPTIAN HIEROGLYPH V018 -+ /xf0/x93/x8e/x85 EGYPTIAN HIEROGLYPH V019 -+ /xf0/x93/x8e/x86 EGYPTIAN HIEROGLYPH V020 -+ /xf0/x93/x8e/x87 EGYPTIAN HIEROGLYPH V020A -+ /xf0/x93/x8e/x88 EGYPTIAN HIEROGLYPH V020B -+ /xf0/x93/x8e/x89 EGYPTIAN HIEROGLYPH V020C -+ /xf0/x93/x8e/x8a EGYPTIAN HIEROGLYPH V020D -+ /xf0/x93/x8e/x8b EGYPTIAN HIEROGLYPH V020E -+ /xf0/x93/x8e/x8c EGYPTIAN HIEROGLYPH V020F -+ /xf0/x93/x8e/x8d EGYPTIAN HIEROGLYPH V020G -+ /xf0/x93/x8e/x8e EGYPTIAN HIEROGLYPH V020H -+ /xf0/x93/x8e/x8f EGYPTIAN HIEROGLYPH V020I -+ /xf0/x93/x8e/x90 EGYPTIAN HIEROGLYPH V020J -+ /xf0/x93/x8e/x91 EGYPTIAN HIEROGLYPH V020K -+ /xf0/x93/x8e/x92 EGYPTIAN HIEROGLYPH V020L -+ /xf0/x93/x8e/x93 EGYPTIAN HIEROGLYPH V021 -+ /xf0/x93/x8e/x94 EGYPTIAN HIEROGLYPH V022 -+ /xf0/x93/x8e/x95 EGYPTIAN HIEROGLYPH V023 -+ /xf0/x93/x8e/x96 EGYPTIAN HIEROGLYPH V023A -+ /xf0/x93/x8e/x97 EGYPTIAN HIEROGLYPH V024 -+ /xf0/x93/x8e/x98 EGYPTIAN HIEROGLYPH V025 -+ /xf0/x93/x8e/x99 EGYPTIAN HIEROGLYPH V026 -+ /xf0/x93/x8e/x9a EGYPTIAN HIEROGLYPH V027 -+ /xf0/x93/x8e/x9b EGYPTIAN HIEROGLYPH V028 -+ /xf0/x93/x8e/x9c EGYPTIAN HIEROGLYPH V028A -+ /xf0/x93/x8e/x9d EGYPTIAN HIEROGLYPH V029 -+ /xf0/x93/x8e/x9e EGYPTIAN HIEROGLYPH V029A -+ /xf0/x93/x8e/x9f EGYPTIAN HIEROGLYPH V030 -+ /xf0/x93/x8e/xa0 EGYPTIAN HIEROGLYPH V030A -+ /xf0/x93/x8e/xa1 EGYPTIAN HIEROGLYPH V031 -+ /xf0/x93/x8e/xa2 EGYPTIAN HIEROGLYPH V031A -+ /xf0/x93/x8e/xa3 EGYPTIAN HIEROGLYPH V032 -+ /xf0/x93/x8e/xa4 EGYPTIAN HIEROGLYPH V033 -+ /xf0/x93/x8e/xa5 EGYPTIAN HIEROGLYPH V033A -+ /xf0/x93/x8e/xa6 EGYPTIAN HIEROGLYPH V034 -+ /xf0/x93/x8e/xa7 EGYPTIAN HIEROGLYPH V035 -+ /xf0/x93/x8e/xa8 EGYPTIAN HIEROGLYPH V036 -+ /xf0/x93/x8e/xa9 EGYPTIAN HIEROGLYPH V037 -+ /xf0/x93/x8e/xaa EGYPTIAN HIEROGLYPH V037A -+ /xf0/x93/x8e/xab EGYPTIAN HIEROGLYPH V038 -+ /xf0/x93/x8e/xac EGYPTIAN HIEROGLYPH V039 -+ /xf0/x93/x8e/xad EGYPTIAN HIEROGLYPH V040 -+ /xf0/x93/x8e/xae EGYPTIAN HIEROGLYPH V040A -+ /xf0/x93/x8e/xaf EGYPTIAN HIEROGLYPH W001 -+ /xf0/x93/x8e/xb0 EGYPTIAN HIEROGLYPH W002 -+ /xf0/x93/x8e/xb1 EGYPTIAN HIEROGLYPH W003 -+ /xf0/x93/x8e/xb2 EGYPTIAN HIEROGLYPH W003A -+ /xf0/x93/x8e/xb3 EGYPTIAN HIEROGLYPH W004 -+ /xf0/x93/x8e/xb4 EGYPTIAN HIEROGLYPH W005 -+ /xf0/x93/x8e/xb5 EGYPTIAN HIEROGLYPH W006 -+ /xf0/x93/x8e/xb6 EGYPTIAN HIEROGLYPH W007 -+ /xf0/x93/x8e/xb7 EGYPTIAN HIEROGLYPH W008 -+ /xf0/x93/x8e/xb8 EGYPTIAN HIEROGLYPH W009 -+ /xf0/x93/x8e/xb9 EGYPTIAN HIEROGLYPH W009A -+ /xf0/x93/x8e/xba EGYPTIAN HIEROGLYPH W010 -+ /xf0/x93/x8e/xbb EGYPTIAN HIEROGLYPH W010A -+ /xf0/x93/x8e/xbc EGYPTIAN HIEROGLYPH W011 -+ /xf0/x93/x8e/xbd EGYPTIAN HIEROGLYPH W012 -+ /xf0/x93/x8e/xbe EGYPTIAN HIEROGLYPH W013 -+ /xf0/x93/x8e/xbf EGYPTIAN HIEROGLYPH W014 -+ /xf0/x93/x8f/x80 EGYPTIAN HIEROGLYPH W014A -+ /xf0/x93/x8f/x81 EGYPTIAN HIEROGLYPH W015 -+ /xf0/x93/x8f/x82 EGYPTIAN HIEROGLYPH W016 -+ /xf0/x93/x8f/x83 EGYPTIAN HIEROGLYPH W017 -+ /xf0/x93/x8f/x84 EGYPTIAN HIEROGLYPH W017A -+ /xf0/x93/x8f/x85 EGYPTIAN HIEROGLYPH W018 -+ /xf0/x93/x8f/x86 EGYPTIAN HIEROGLYPH W018A -+ /xf0/x93/x8f/x87 EGYPTIAN HIEROGLYPH W019 -+ /xf0/x93/x8f/x88 EGYPTIAN HIEROGLYPH W020 -+ /xf0/x93/x8f/x89 EGYPTIAN HIEROGLYPH W021 -+ /xf0/x93/x8f/x8a EGYPTIAN HIEROGLYPH W022 -+ /xf0/x93/x8f/x8b EGYPTIAN HIEROGLYPH W023 -+ /xf0/x93/x8f/x8c EGYPTIAN HIEROGLYPH W024 -+ /xf0/x93/x8f/x8d EGYPTIAN HIEROGLYPH W024A -+ /xf0/x93/x8f/x8e EGYPTIAN HIEROGLYPH W025 -+ /xf0/x93/x8f/x8f EGYPTIAN HIEROGLYPH X001 -+ /xf0/x93/x8f/x90 EGYPTIAN HIEROGLYPH X002 -+ /xf0/x93/x8f/x91 EGYPTIAN HIEROGLYPH X003 -+ /xf0/x93/x8f/x92 EGYPTIAN HIEROGLYPH X004 -+ /xf0/x93/x8f/x93 EGYPTIAN HIEROGLYPH X004A -+ /xf0/x93/x8f/x94 EGYPTIAN HIEROGLYPH X004B -+ /xf0/x93/x8f/x95 EGYPTIAN HIEROGLYPH X005 -+ /xf0/x93/x8f/x96 EGYPTIAN HIEROGLYPH X006 -+ /xf0/x93/x8f/x97 EGYPTIAN HIEROGLYPH X006A -+ /xf0/x93/x8f/x98 EGYPTIAN HIEROGLYPH X007 -+ /xf0/x93/x8f/x99 EGYPTIAN HIEROGLYPH X008 -+ /xf0/x93/x8f/x9a EGYPTIAN HIEROGLYPH X008A -+ /xf0/x93/x8f/x9b EGYPTIAN HIEROGLYPH Y001 -+ /xf0/x93/x8f/x9c EGYPTIAN HIEROGLYPH Y001A -+ /xf0/x93/x8f/x9d EGYPTIAN HIEROGLYPH Y002 -+ /xf0/x93/x8f/x9e EGYPTIAN HIEROGLYPH Y003 -+ /xf0/x93/x8f/x9f EGYPTIAN HIEROGLYPH Y004 -+ /xf0/x93/x8f/xa0 EGYPTIAN HIEROGLYPH Y005 -+ /xf0/x93/x8f/xa1 EGYPTIAN HIEROGLYPH Y006 -+ /xf0/x93/x8f/xa2 EGYPTIAN HIEROGLYPH Y007 -+ /xf0/x93/x8f/xa3 EGYPTIAN HIEROGLYPH Y008 -+ /xf0/x93/x8f/xa4 EGYPTIAN HIEROGLYPH Z001 -+ /xf0/x93/x8f/xa5 EGYPTIAN HIEROGLYPH Z002 -+ /xf0/x93/x8f/xa6 EGYPTIAN HIEROGLYPH Z002A -+ /xf0/x93/x8f/xa7 EGYPTIAN HIEROGLYPH Z002B -+ /xf0/x93/x8f/xa8 EGYPTIAN HIEROGLYPH Z002C -+ /xf0/x93/x8f/xa9 EGYPTIAN HIEROGLYPH Z002D -+ /xf0/x93/x8f/xaa EGYPTIAN HIEROGLYPH Z003 -+ /xf0/x93/x8f/xab EGYPTIAN HIEROGLYPH Z003A -+ /xf0/x93/x8f/xac EGYPTIAN HIEROGLYPH Z003B -+ /xf0/x93/x8f/xad EGYPTIAN HIEROGLYPH Z004 -+ /xf0/x93/x8f/xae EGYPTIAN HIEROGLYPH Z004A -+ /xf0/x93/x8f/xaf EGYPTIAN HIEROGLYPH Z005 -+ /xf0/x93/x8f/xb0 EGYPTIAN HIEROGLYPH Z005A -+ /xf0/x93/x8f/xb1 EGYPTIAN HIEROGLYPH Z006 -+ /xf0/x93/x8f/xb2 EGYPTIAN HIEROGLYPH Z007 -+ /xf0/x93/x8f/xb3 EGYPTIAN HIEROGLYPH Z008 -+ /xf0/x93/x8f/xb4 EGYPTIAN HIEROGLYPH Z009 -+ /xf0/x93/x8f/xb5 EGYPTIAN HIEROGLYPH Z010 -+ /xf0/x93/x8f/xb6 EGYPTIAN HIEROGLYPH Z011 -+ /xf0/x93/x8f/xb7 EGYPTIAN HIEROGLYPH Z012 -+ /xf0/x93/x8f/xb8 EGYPTIAN HIEROGLYPH Z013 -+ /xf0/x93/x8f/xb9 EGYPTIAN HIEROGLYPH Z014 -+ /xf0/x93/x8f/xba EGYPTIAN HIEROGLYPH Z015 -+ /xf0/x93/x8f/xbb EGYPTIAN HIEROGLYPH Z015A -+ /xf0/x93/x8f/xbc EGYPTIAN HIEROGLYPH Z015B -+ /xf0/x93/x8f/xbd EGYPTIAN HIEROGLYPH Z015C -+ /xf0/x93/x8f/xbe EGYPTIAN HIEROGLYPH Z015D -+ /xf0/x93/x8f/xbf EGYPTIAN HIEROGLYPH Z015E -+ /xf0/x93/x90/x80 EGYPTIAN HIEROGLYPH Z015F -+ /xf0/x93/x90/x81 EGYPTIAN HIEROGLYPH Z015G -+ /xf0/x93/x90/x82 EGYPTIAN HIEROGLYPH Z015H -+ /xf0/x93/x90/x83 EGYPTIAN HIEROGLYPH Z015I -+ /xf0/x93/x90/x84 EGYPTIAN HIEROGLYPH Z016 -+ /xf0/x93/x90/x85 EGYPTIAN HIEROGLYPH Z016A -+ /xf0/x93/x90/x86 EGYPTIAN HIEROGLYPH Z016B -+ /xf0/x93/x90/x87 EGYPTIAN HIEROGLYPH Z016C -+ /xf0/x93/x90/x88 EGYPTIAN HIEROGLYPH Z016D -+ /xf0/x93/x90/x89 EGYPTIAN HIEROGLYPH Z016E -+ /xf0/x93/x90/x8a EGYPTIAN HIEROGLYPH Z016F -+ /xf0/x93/x90/x8b EGYPTIAN HIEROGLYPH Z016G -+ /xf0/x93/x90/x8c EGYPTIAN HIEROGLYPH Z016H -+ /xf0/x93/x90/x8d EGYPTIAN HIEROGLYPH AA001 -+ /xf0/x93/x90/x8e EGYPTIAN HIEROGLYPH AA002 -+ /xf0/x93/x90/x8f EGYPTIAN HIEROGLYPH AA003 -+ /xf0/x93/x90/x90 EGYPTIAN HIEROGLYPH AA004 -+ /xf0/x93/x90/x91 EGYPTIAN HIEROGLYPH AA005 -+ /xf0/x93/x90/x92 EGYPTIAN HIEROGLYPH AA006 -+ /xf0/x93/x90/x93 EGYPTIAN HIEROGLYPH AA007 -+ /xf0/x93/x90/x94 EGYPTIAN HIEROGLYPH AA007A -+ /xf0/x93/x90/x95 EGYPTIAN HIEROGLYPH AA007B -+ /xf0/x93/x90/x96 EGYPTIAN HIEROGLYPH AA008 -+ /xf0/x93/x90/x97 EGYPTIAN HIEROGLYPH AA009 -+ /xf0/x93/x90/x98 EGYPTIAN HIEROGLYPH AA010 -+ /xf0/x93/x90/x99 EGYPTIAN HIEROGLYPH AA011 -+ /xf0/x93/x90/x9a EGYPTIAN HIEROGLYPH AA012 -+ /xf0/x93/x90/x9b EGYPTIAN HIEROGLYPH AA013 -+ /xf0/x93/x90/x9c EGYPTIAN HIEROGLYPH AA014 -+ /xf0/x93/x90/x9d EGYPTIAN HIEROGLYPH AA015 -+ /xf0/x93/x90/x9e EGYPTIAN HIEROGLYPH AA016 -+ /xf0/x93/x90/x9f EGYPTIAN HIEROGLYPH AA017 -+ /xf0/x93/x90/xa0 EGYPTIAN HIEROGLYPH AA018 -+ /xf0/x93/x90/xa1 EGYPTIAN HIEROGLYPH AA019 -+ /xf0/x93/x90/xa2 EGYPTIAN HIEROGLYPH AA020 -+ /xf0/x93/x90/xa3 EGYPTIAN HIEROGLYPH AA021 -+ /xf0/x93/x90/xa4 EGYPTIAN HIEROGLYPH AA022 -+ /xf0/x93/x90/xa5 EGYPTIAN HIEROGLYPH AA023 -+ /xf0/x93/x90/xa6 EGYPTIAN HIEROGLYPH AA024 -+ /xf0/x93/x90/xa7 EGYPTIAN HIEROGLYPH AA025 -+ /xf0/x93/x90/xa8 EGYPTIAN HIEROGLYPH AA026 -+ /xf0/x93/x90/xa9 EGYPTIAN HIEROGLYPH AA027 -+ /xf0/x93/x90/xaa EGYPTIAN HIEROGLYPH AA028 -+ /xf0/x93/x90/xab EGYPTIAN HIEROGLYPH AA029 -+ /xf0/x93/x90/xac EGYPTIAN HIEROGLYPH AA030 -+ /xf0/x93/x90/xad EGYPTIAN HIEROGLYPH AA031 -+ /xf0/x93/x90/xae EGYPTIAN HIEROGLYPH AA032 -+ /xf0/x96/xa0/x80 BAMUM LETTER PHASE-A NGKUE MFON -+ /xf0/x96/xa0/x81 BAMUM LETTER PHASE-A GBIEE FON -+ /xf0/x96/xa0/x82 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE -+ /xf0/x96/xa0/x83 BAMUM LETTER PHASE-A PON MFON PIPAEMBA -+ /xf0/x96/xa0/x84 BAMUM LETTER PHASE-A NAA MFON -+ /xf0/x96/xa0/x85 BAMUM LETTER PHASE-A SHUENSHUET -+ /xf0/x96/xa0/x86 BAMUM LETTER PHASE-A TITA MFON -+ /xf0/x96/xa0/x87 BAMUM LETTER PHASE-A NZA MFON -+ /xf0/x96/xa0/x88 BAMUM LETTER PHASE-A SHINDA PA NJI -+ /xf0/x96/xa0/x89 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE -+ /xf0/x96/xa0/x8a BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA -+ /xf0/x96/xa0/x8b BAMUM LETTER PHASE-A MAEMBGBIEE -+ /xf0/x96/xa0/x8c BAMUM LETTER PHASE-A TU MAEMBA -+ /xf0/x96/xa0/x8d BAMUM LETTER PHASE-A NGANGU -+ /xf0/x96/xa0/x8e BAMUM LETTER PHASE-A MAEMVEUX -+ /xf0/x96/xa0/x8f BAMUM LETTER PHASE-A MANSUAE -+ /xf0/x96/xa0/x90 BAMUM LETTER PHASE-A MVEUAENGAM -+ /xf0/x96/xa0/x91 BAMUM LETTER PHASE-A SEUNYAM -+ /xf0/x96/xa0/x92 BAMUM LETTER PHASE-A NTOQPEN -+ /xf0/x96/xa0/x93 BAMUM LETTER PHASE-A KEUKEUTNDA -+ /xf0/x96/xa0/x94 BAMUM LETTER PHASE-A NKINDI -+ /xf0/x96/xa0/x95 BAMUM LETTER PHASE-A SUU -+ /xf0/x96/xa0/x96 BAMUM LETTER PHASE-A NGKUENZEUM -+ /xf0/x96/xa0/x97 BAMUM LETTER PHASE-A LAPAQ -+ /xf0/x96/xa0/x98 BAMUM LETTER PHASE-A LET KUT -+ /xf0/x96/xa0/x99 BAMUM LETTER PHASE-A NTAP MFAA -+ /xf0/x96/xa0/x9a BAMUM LETTER PHASE-A MAEKEUP -+ /xf0/x96/xa0/x9b BAMUM LETTER PHASE-A PASHAE -+ /xf0/x96/xa0/x9c BAMUM LETTER PHASE-A GHEUAERAE -+ /xf0/x96/xa0/x9d BAMUM LETTER PHASE-A PAMSHAE -+ /xf0/x96/xa0/x9e BAMUM LETTER PHASE-A MON NGGEUAET -+ /xf0/x96/xa0/x9f BAMUM LETTER PHASE-A NZUN MEUT -+ /xf0/x96/xa0/xa0 BAMUM LETTER PHASE-A U YUQ NAE -+ /xf0/x96/xa0/xa1 BAMUM LETTER PHASE-A GHEUAEGHEUAE -+ /xf0/x96/xa0/xa2 BAMUM LETTER PHASE-A NTAP NTAA -+ /xf0/x96/xa0/xa3 BAMUM LETTER PHASE-A SISA -+ /xf0/x96/xa0/xa4 BAMUM LETTER PHASE-A MGBASA -+ /xf0/x96/xa0/xa5 BAMUM LETTER PHASE-A MEUNJOMNDEUQ -+ /xf0/x96/xa0/xa6 BAMUM LETTER PHASE-A MOOMPUQ -+ /xf0/x96/xa0/xa7 BAMUM LETTER PHASE-A KAFA -+ /xf0/x96/xa0/xa8 BAMUM LETTER PHASE-A PA LEERAEWA -+ /xf0/x96/xa0/xa9 BAMUM LETTER PHASE-A NDA LEERAEWA -+ /xf0/x96/xa0/xaa BAMUM LETTER PHASE-A PET -+ /xf0/x96/xa0/xab BAMUM LETTER PHASE-A MAEMKPEN -+ /xf0/x96/xa0/xac BAMUM LETTER PHASE-A NIKA -+ /xf0/x96/xa0/xad BAMUM LETTER PHASE-A PUP -+ /xf0/x96/xa0/xae BAMUM LETTER PHASE-A TUAEP -+ /xf0/x96/xa0/xaf BAMUM LETTER PHASE-A LUAEP -+ /xf0/x96/xa0/xb0 BAMUM LETTER PHASE-A SONJAM -+ /xf0/x96/xa0/xb1 BAMUM LETTER PHASE-A TEUTEUWEN -+ /xf0/x96/xa0/xb2 BAMUM LETTER PHASE-A MAENYI -+ /xf0/x96/xa0/xb3 BAMUM LETTER PHASE-A KET -+ /xf0/x96/xa0/xb4 BAMUM LETTER PHASE-A NDAANGGEUAET -+ /xf0/x96/xa0/xb5 BAMUM LETTER PHASE-A KUOQ -+ /xf0/x96/xa0/xb6 BAMUM LETTER PHASE-A MOOMEUT -+ /xf0/x96/xa0/xb7 BAMUM LETTER PHASE-A SHUM -+ /xf0/x96/xa0/xb8 BAMUM LETTER PHASE-A LOMMAE -+ /xf0/x96/xa0/xb9 BAMUM LETTER PHASE-A FIRI -+ /xf0/x96/xa0/xba BAMUM LETTER PHASE-A ROM -+ /xf0/x96/xa0/xbb BAMUM LETTER PHASE-A KPOQ -+ /xf0/x96/xa0/xbc BAMUM LETTER PHASE-A SOQ -+ /xf0/x96/xa0/xbd BAMUM LETTER PHASE-A MAP PIEET -+ /xf0/x96/xa0/xbe BAMUM LETTER PHASE-A SHIRAE -+ /xf0/x96/xa0/xbf BAMUM LETTER PHASE-A NTAP -+ /xf0/x96/xa1/x80 BAMUM LETTER PHASE-A SHOQ NSHUT YUM -+ /xf0/x96/xa1/x81 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ -+ /xf0/x96/xa1/x82 BAMUM LETTER PHASE-A PAARAE -+ /xf0/x96/xa1/x83 BAMUM LETTER PHASE-A NKAARAE -+ /xf0/x96/xa1/x84 BAMUM LETTER PHASE-A UNKNOWN -+ /xf0/x96/xa1/x85 BAMUM LETTER PHASE-A NGGEN -+ /xf0/x96/xa1/x86 BAMUM LETTER PHASE-A MAESI -+ /xf0/x96/xa1/x87 BAMUM LETTER PHASE-A NJAM -+ /xf0/x96/xa1/x88 BAMUM LETTER PHASE-A MBANYI -+ /xf0/x96/xa1/x89 BAMUM LETTER PHASE-A NYET -+ /xf0/x96/xa1/x8a BAMUM LETTER PHASE-A TEUAEN -+ /xf0/x96/xa1/x8b BAMUM LETTER PHASE-A SOT -+ /xf0/x96/xa1/x8c BAMUM LETTER PHASE-A PAAM -+ /xf0/x96/xa1/x8d BAMUM LETTER PHASE-A NSHIEE -+ /xf0/x96/xa1/x8e BAMUM LETTER PHASE-A MAEM -+ /xf0/x96/xa1/x8f BAMUM LETTER PHASE-A NYI -+ /xf0/x96/xa1/x90 BAMUM LETTER PHASE-A KAQ -+ /xf0/x96/xa1/x91 BAMUM LETTER PHASE-A NSHA -+ /xf0/x96/xa1/x92 BAMUM LETTER PHASE-A VEE -+ /xf0/x96/xa1/x93 BAMUM LETTER PHASE-A LU -+ /xf0/x96/xa1/x94 BAMUM LETTER PHASE-A NEN -+ /xf0/x96/xa1/x95 BAMUM LETTER PHASE-A NAQ -+ /xf0/x96/xa1/x96 BAMUM LETTER PHASE-A MBAQ -+ /xf0/x96/xa1/x97 BAMUM LETTER PHASE-B NSHUET -+ /xf0/x96/xa1/x98 BAMUM LETTER PHASE-B TU MAEMGBIEE -+ /xf0/x96/xa1/x99 BAMUM LETTER PHASE-B SIEE -+ /xf0/x96/xa1/x9a BAMUM LETTER PHASE-B SET TU -+ /xf0/x96/xa1/x9b BAMUM LETTER PHASE-B LOM NTEUM -+ /xf0/x96/xa1/x9c BAMUM LETTER PHASE-B MBA MAELEE -+ /xf0/x96/xa1/x9d BAMUM LETTER PHASE-B KIEEM -+ /xf0/x96/xa1/x9e BAMUM LETTER PHASE-B YEURAE -+ /xf0/x96/xa1/x9f BAMUM LETTER PHASE-B MBAARAE -+ /xf0/x96/xa1/xa0 BAMUM LETTER PHASE-B KAM -+ /xf0/x96/xa1/xa1 BAMUM LETTER PHASE-B PEESHI -+ /xf0/x96/xa1/xa2 BAMUM LETTER PHASE-B YAFU LEERAEWA -+ /xf0/x96/xa1/xa3 BAMUM LETTER PHASE-B LAM NSHUT NYAM -+ /xf0/x96/xa1/xa4 BAMUM LETTER PHASE-B NTIEE SHEUOQ -+ /xf0/x96/xa1/xa5 BAMUM LETTER PHASE-B NDU NJAA -+ /xf0/x96/xa1/xa6 BAMUM LETTER PHASE-B GHEUGHEUAEM -+ /xf0/x96/xa1/xa7 BAMUM LETTER PHASE-B PIT -+ /xf0/x96/xa1/xa8 BAMUM LETTER PHASE-B TU NSIEE -+ /xf0/x96/xa1/xa9 BAMUM LETTER PHASE-B SHET NJAQ -+ /xf0/x96/xa1/xaa BAMUM LETTER PHASE-B SHEUAEQTU -+ /xf0/x96/xa1/xab BAMUM LETTER PHASE-B MFON TEUAEQ -+ /xf0/x96/xa1/xac BAMUM LETTER PHASE-B MBIT MBAAKET -+ /xf0/x96/xa1/xad BAMUM LETTER PHASE-B NYI NTEUM -+ /xf0/x96/xa1/xae BAMUM LETTER PHASE-B KEUPUQ -+ /xf0/x96/xa1/xaf BAMUM LETTER PHASE-B GHEUGHEN -+ /xf0/x96/xa1/xb0 BAMUM LETTER PHASE-B KEUYEUX -+ /xf0/x96/xa1/xb1 BAMUM LETTER PHASE-B LAANAE -+ /xf0/x96/xa1/xb2 BAMUM LETTER PHASE-B PARUM -+ /xf0/x96/xa1/xb3 BAMUM LETTER PHASE-B VEUM -+ /xf0/x96/xa1/xb4 BAMUM LETTER PHASE-B NGKINDI MVOP -+ /xf0/x96/xa1/xb5 BAMUM LETTER PHASE-B NGGEU MBU -+ /xf0/x96/xa1/xb6 BAMUM LETTER PHASE-B WUAET -+ /xf0/x96/xa1/xb7 BAMUM LETTER PHASE-B SAKEUAE -+ /xf0/x96/xa1/xb8 BAMUM LETTER PHASE-B TAAM -+ /xf0/x96/xa1/xb9 BAMUM LETTER PHASE-B MEUQ -+ /xf0/x96/xa1/xba BAMUM LETTER PHASE-B NGGUOQ -+ /xf0/x96/xa1/xbb BAMUM LETTER PHASE-B NGGUOQ LARGE -+ /xf0/x96/xa1/xbc BAMUM LETTER PHASE-B MFIYAQ -+ /xf0/x96/xa1/xbd BAMUM LETTER PHASE-B SUE -+ /xf0/x96/xa1/xbe BAMUM LETTER PHASE-B MBEURI -+ /xf0/x96/xa1/xbf BAMUM LETTER PHASE-B MONTIEEN -+ /xf0/x96/xa2/x80 BAMUM LETTER PHASE-B NYAEMAE -+ /xf0/x96/xa2/x81 BAMUM LETTER PHASE-B PUNGAAM -+ /xf0/x96/xa2/x82 BAMUM LETTER PHASE-B MEUT NGGEET -+ /xf0/x96/xa2/x83 BAMUM LETTER PHASE-B FEUX -+ /xf0/x96/xa2/x84 BAMUM LETTER PHASE-B MBUOQ -+ /xf0/x96/xa2/x85 BAMUM LETTER PHASE-B FEE -+ /xf0/x96/xa2/x86 BAMUM LETTER PHASE-B KEUAEM -+ /xf0/x96/xa2/x87 BAMUM LETTER PHASE-B MA NJEUAENA -+ /xf0/x96/xa2/x88 BAMUM LETTER PHASE-B MA NJUQA -+ /xf0/x96/xa2/x89 BAMUM LETTER PHASE-B LET -+ /xf0/x96/xa2/x8a BAMUM LETTER PHASE-B NGGAAM -+ /xf0/x96/xa2/x8b BAMUM LETTER PHASE-B NSEN -+ /xf0/x96/xa2/x8c BAMUM LETTER PHASE-B MA -+ /xf0/x96/xa2/x8d BAMUM LETTER PHASE-B KIQ -+ /xf0/x96/xa2/x8e BAMUM LETTER PHASE-B NGOM -+ /xf0/x96/xa2/x8f BAMUM LETTER PHASE-C NGKUE MAEMBA -+ /xf0/x96/xa2/x90 BAMUM LETTER PHASE-C NZA -+ /xf0/x96/xa2/x91 BAMUM LETTER PHASE-C YUM -+ /xf0/x96/xa2/x92 BAMUM LETTER PHASE-C WANGKUOQ -+ /xf0/x96/xa2/x93 BAMUM LETTER PHASE-C NGGEN -+ /xf0/x96/xa2/x94 BAMUM LETTER PHASE-C NDEUAEREE -+ /xf0/x96/xa2/x95 BAMUM LETTER PHASE-C NGKAQ -+ /xf0/x96/xa2/x96 BAMUM LETTER PHASE-C GHARAE -+ /xf0/x96/xa2/x97 BAMUM LETTER PHASE-C MBEEKEET -+ /xf0/x96/xa2/x98 BAMUM LETTER PHASE-C GBAYI -+ /xf0/x96/xa2/x99 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN -+ /xf0/x96/xa2/x9a BAMUM LETTER PHASE-C NTU MBIT -+ /xf0/x96/xa2/x9b BAMUM LETTER PHASE-C MBEUM -+ /xf0/x96/xa2/x9c BAMUM LETTER PHASE-C PIRIEEN -+ /xf0/x96/xa2/x9d BAMUM LETTER PHASE-C NDOMBU -+ /xf0/x96/xa2/x9e BAMUM LETTER PHASE-C MBAA CABBAGE-TREE -+ /xf0/x96/xa2/x9f BAMUM LETTER PHASE-C KEUSHEUAEP -+ /xf0/x96/xa2/xa0 BAMUM LETTER PHASE-C GHAP -+ /xf0/x96/xa2/xa1 BAMUM LETTER PHASE-C KEUKAQ -+ /xf0/x96/xa2/xa2 BAMUM LETTER PHASE-C YU MUOMAE -+ /xf0/x96/xa2/xa3 BAMUM LETTER PHASE-C NZEUM -+ /xf0/x96/xa2/xa4 BAMUM LETTER PHASE-C MBUE -+ /xf0/x96/xa2/xa5 BAMUM LETTER PHASE-C NSEUAEN -+ /xf0/x96/xa2/xa6 BAMUM LETTER PHASE-C MBIT -+ /xf0/x96/xa2/xa7 BAMUM LETTER PHASE-C YEUQ -+ /xf0/x96/xa2/xa8 BAMUM LETTER PHASE-C KPARAQ -+ /xf0/x96/xa2/xa9 BAMUM LETTER PHASE-C KAA -+ /xf0/x96/xa2/xaa BAMUM LETTER PHASE-C SEUX -+ /xf0/x96/xa2/xab BAMUM LETTER PHASE-C NDIDA -+ /xf0/x96/xa2/xac BAMUM LETTER PHASE-C TAASHAE -+ /xf0/x96/xa2/xad BAMUM LETTER PHASE-C NJUEQ -+ /xf0/x96/xa2/xae BAMUM LETTER PHASE-C TITA YUE -+ /xf0/x96/xa2/xaf BAMUM LETTER PHASE-C SUAET -+ /xf0/x96/xa2/xb0 BAMUM LETTER PHASE-C NGGUAEN NYAM -+ /xf0/x96/xa2/xb1 BAMUM LETTER PHASE-C VEUX -+ /xf0/x96/xa2/xb2 BAMUM LETTER PHASE-C NANSANAQ -+ /xf0/x96/xa2/xb3 BAMUM LETTER PHASE-C MA KEUAERI -+ /xf0/x96/xa2/xb4 BAMUM LETTER PHASE-C NTAA -+ /xf0/x96/xa2/xb5 BAMUM LETTER PHASE-C NGGUON -+ /xf0/x96/xa2/xb6 BAMUM LETTER PHASE-C LAP -+ /xf0/x96/xa2/xb7 BAMUM LETTER PHASE-C MBIRIEEN -+ /xf0/x96/xa2/xb8 BAMUM LETTER PHASE-C MGBASAQ -+ /xf0/x96/xa2/xb9 BAMUM LETTER PHASE-C NTEUNGBA -+ /xf0/x96/xa2/xba BAMUM LETTER PHASE-C TEUTEUX -+ /xf0/x96/xa2/xbb BAMUM LETTER PHASE-C NGGUM -+ /xf0/x96/xa2/xbc BAMUM LETTER PHASE-C FUE -+ /xf0/x96/xa2/xbd BAMUM LETTER PHASE-C NDEUT -+ /xf0/x96/xa2/xbe BAMUM LETTER PHASE-C NSA -+ /xf0/x96/xa2/xbf BAMUM LETTER PHASE-C NSHAQ -+ /xf0/x96/xa3/x80 BAMUM LETTER PHASE-C BUNG -+ /xf0/x96/xa3/x81 BAMUM LETTER PHASE-C VEUAEPEN -+ /xf0/x96/xa3/x82 BAMUM LETTER PHASE-C MBERAE -+ /xf0/x96/xa3/x83 BAMUM LETTER PHASE-C RU -+ /xf0/x96/xa3/x84 BAMUM LETTER PHASE-C NJAEM -+ /xf0/x96/xa3/x85 BAMUM LETTER PHASE-C LAM -+ /xf0/x96/xa3/x86 BAMUM LETTER PHASE-C TITUAEP -+ /xf0/x96/xa3/x87 BAMUM LETTER PHASE-C NSUOT NGOM -+ /xf0/x96/xa3/x88 BAMUM LETTER PHASE-C NJEEEE -+ /xf0/x96/xa3/x89 BAMUM LETTER PHASE-C KET -+ /xf0/x96/xa3/x8a BAMUM LETTER PHASE-C NGGU -+ /xf0/x96/xa3/x8b BAMUM LETTER PHASE-C MAESI -+ /xf0/x96/xa3/x8c BAMUM LETTER PHASE-C MBUAEM -+ /xf0/x96/xa3/x8d BAMUM LETTER PHASE-C LU -+ /xf0/x96/xa3/x8e BAMUM LETTER PHASE-C KUT -+ /xf0/x96/xa3/x8f BAMUM LETTER PHASE-C NJAM -+ /xf0/x96/xa3/x90 BAMUM LETTER PHASE-C NGOM -+ /xf0/x96/xa3/x91 BAMUM LETTER PHASE-C WUP -+ /xf0/x96/xa3/x92 BAMUM LETTER PHASE-C NGGUEET -+ /xf0/x96/xa3/x93 BAMUM LETTER PHASE-C NSOM -+ /xf0/x96/xa3/x94 BAMUM LETTER PHASE-C NTEN -+ /xf0/x96/xa3/x95 BAMUM LETTER PHASE-C KUOP NKAARAE -+ /xf0/x96/xa3/x96 BAMUM LETTER PHASE-C NSUN -+ /xf0/x96/xa3/x97 BAMUM LETTER PHASE-C NDAM -+ /xf0/x96/xa3/x98 BAMUM LETTER PHASE-C MA NSIEE -+ /xf0/x96/xa3/x99 BAMUM LETTER PHASE-C YAA -+ /xf0/x96/xa3/x9a BAMUM LETTER PHASE-C NDAP -+ /xf0/x96/xa3/x9b BAMUM LETTER PHASE-C SHUEQ -+ /xf0/x96/xa3/x9c BAMUM LETTER PHASE-C SETFON -+ /xf0/x96/xa3/x9d BAMUM LETTER PHASE-C MBI -+ /xf0/x96/xa3/x9e BAMUM LETTER PHASE-C MAEMBA -+ /xf0/x96/xa3/x9f BAMUM LETTER PHASE-C MBANYI -+ /xf0/x96/xa3/xa0 BAMUM LETTER PHASE-C KEUSEUX -+ /xf0/x96/xa3/xa1 BAMUM LETTER PHASE-C MBEUX -+ /xf0/x96/xa3/xa2 BAMUM LETTER PHASE-C KEUM -+ /xf0/x96/xa3/xa3 BAMUM LETTER PHASE-C MBAA PICKET -+ /xf0/x96/xa3/xa4 BAMUM LETTER PHASE-C YUWOQ -+ /xf0/x96/xa3/xa5 BAMUM LETTER PHASE-C NJEUX -+ /xf0/x96/xa3/xa6 BAMUM LETTER PHASE-C MIEE -+ /xf0/x96/xa3/xa7 BAMUM LETTER PHASE-C MUAE -+ /xf0/x96/xa3/xa8 BAMUM LETTER PHASE-C SHIQ -+ /xf0/x96/xa3/xa9 BAMUM LETTER PHASE-C KEN LAW -+ /xf0/x96/xa3/xaa BAMUM LETTER PHASE-C KEN FATIGUE -+ /xf0/x96/xa3/xab BAMUM LETTER PHASE-C NGAQ -+ /xf0/x96/xa3/xac BAMUM LETTER PHASE-C NAQ -+ /xf0/x96/xa3/xad BAMUM LETTER PHASE-C LIQ -+ /xf0/x96/xa3/xae BAMUM LETTER PHASE-C PIN -+ /xf0/x96/xa3/xaf BAMUM LETTER PHASE-C PEN -+ /xf0/x96/xa3/xb0 BAMUM LETTER PHASE-C TET -+ /xf0/x96/xa3/xb1 BAMUM LETTER PHASE-D MBUO -+ /xf0/x96/xa3/xb2 BAMUM LETTER PHASE-D WAP -+ /xf0/x96/xa3/xb3 BAMUM LETTER PHASE-D NJI -+ /xf0/x96/xa3/xb4 BAMUM LETTER PHASE-D MFON -+ /xf0/x96/xa3/xb5 BAMUM LETTER PHASE-D NJIEE -+ /xf0/x96/xa3/xb6 BAMUM LETTER PHASE-D LIEE -+ /xf0/x96/xa3/xb7 BAMUM LETTER PHASE-D NJEUT -+ /xf0/x96/xa3/xb8 BAMUM LETTER PHASE-D NSHEE -+ /xf0/x96/xa3/xb9 BAMUM LETTER PHASE-D NGGAAMAE -+ /xf0/x96/xa3/xba BAMUM LETTER PHASE-D NYAM -+ /xf0/x96/xa3/xbb BAMUM LETTER PHASE-D WUAEN -+ /xf0/x96/xa3/xbc BAMUM LETTER PHASE-D NGKUN -+ /xf0/x96/xa3/xbd BAMUM LETTER PHASE-D SHEE -+ /xf0/x96/xa3/xbe BAMUM LETTER PHASE-D NGKAP -+ /xf0/x96/xa3/xbf BAMUM LETTER PHASE-D KEUAETMEUN -+ /xf0/x96/xa4/x80 BAMUM LETTER PHASE-D TEUT -+ /xf0/x96/xa4/x81 BAMUM LETTER PHASE-D SHEUAE -+ /xf0/x96/xa4/x82 BAMUM LETTER PHASE-D NJAP -+ /xf0/x96/xa4/x83 BAMUM LETTER PHASE-D SUE -+ /xf0/x96/xa4/x84 BAMUM LETTER PHASE-D KET -+ /xf0/x96/xa4/x85 BAMUM LETTER PHASE-D YAEMMAE -+ /xf0/x96/xa4/x86 BAMUM LETTER PHASE-D KUOM -+ /xf0/x96/xa4/x87 BAMUM LETTER PHASE-D SAP -+ /xf0/x96/xa4/x88 BAMUM LETTER PHASE-D MFEUT -+ /xf0/x96/xa4/x89 BAMUM LETTER PHASE-D NDEUX -+ /xf0/x96/xa4/x8a BAMUM LETTER PHASE-D MALEERI -+ /xf0/x96/xa4/x8b BAMUM LETTER PHASE-D MEUT -+ /xf0/x96/xa4/x8c BAMUM LETTER PHASE-D SEUAEQ -+ /xf0/x96/xa4/x8d BAMUM LETTER PHASE-D YEN -+ /xf0/x96/xa4/x8e BAMUM LETTER PHASE-D NJEUAEM -+ /xf0/x96/xa4/x8f BAMUM LETTER PHASE-D KEUOT MBUAE -+ /xf0/x96/xa4/x90 BAMUM LETTER PHASE-D NGKEURI -+ /xf0/x96/xa4/x91 BAMUM LETTER PHASE-D TU -+ /xf0/x96/xa4/x92 BAMUM LETTER PHASE-D GHAA -+ /xf0/x96/xa4/x93 BAMUM LETTER PHASE-D NGKYEE -+ /xf0/x96/xa4/x94 BAMUM LETTER PHASE-D FEUFEUAET -+ /xf0/x96/xa4/x95 BAMUM LETTER PHASE-D NDEE -+ /xf0/x96/xa4/x96 BAMUM LETTER PHASE-D MGBOFUM -+ /xf0/x96/xa4/x97 BAMUM LETTER PHASE-D LEUAEP -+ /xf0/x96/xa4/x98 BAMUM LETTER PHASE-D NDON -+ /xf0/x96/xa4/x99 BAMUM LETTER PHASE-D MONI -+ /xf0/x96/xa4/x9a BAMUM LETTER PHASE-D MGBEUN -+ /xf0/x96/xa4/x9b BAMUM LETTER PHASE-D PUUT -+ /xf0/x96/xa4/x9c BAMUM LETTER PHASE-D MGBIEE -+ /xf0/x96/xa4/x9d BAMUM LETTER PHASE-D MFO -+ /xf0/x96/xa4/x9e BAMUM LETTER PHASE-D LUM -+ /xf0/x96/xa4/x9f BAMUM LETTER PHASE-D NSIEEP -+ /xf0/x96/xa4/xa0 BAMUM LETTER PHASE-D MBAA -+ /xf0/x96/xa4/xa1 BAMUM LETTER PHASE-D KWAET -+ /xf0/x96/xa4/xa2 BAMUM LETTER PHASE-D NYET -+ /xf0/x96/xa4/xa3 BAMUM LETTER PHASE-D TEUAEN -+ /xf0/x96/xa4/xa4 BAMUM LETTER PHASE-D SOT -+ /xf0/x96/xa4/xa5 BAMUM LETTER PHASE-D YUWOQ -+ /xf0/x96/xa4/xa6 BAMUM LETTER PHASE-D KEUM -+ /xf0/x96/xa4/xa7 BAMUM LETTER PHASE-D RAEM -+ /xf0/x96/xa4/xa8 BAMUM LETTER PHASE-D TEEEE -+ /xf0/x96/xa4/xa9 BAMUM LETTER PHASE-D NGKEUAEQ -+ /xf0/x96/xa4/xaa BAMUM LETTER PHASE-D MFEUAE -+ /xf0/x96/xa4/xab BAMUM LETTER PHASE-D NSIEET -+ /xf0/x96/xa4/xac BAMUM LETTER PHASE-D KEUP -+ /xf0/x96/xa4/xad BAMUM LETTER PHASE-D PIP -+ /xf0/x96/xa4/xae BAMUM LETTER PHASE-D PEUTAE -+ /xf0/x96/xa4/xaf BAMUM LETTER PHASE-D NYUE -+ /xf0/x96/xa4/xb0 BAMUM LETTER PHASE-D LET -+ /xf0/x96/xa4/xb1 BAMUM LETTER PHASE-D NGGAAM -+ /xf0/x96/xa4/xb2 BAMUM LETTER PHASE-D MFIEE -+ /xf0/x96/xa4/xb3 BAMUM LETTER PHASE-D NGGWAEN -+ /xf0/x96/xa4/xb4 BAMUM LETTER PHASE-D YUOM -+ /xf0/x96/xa4/xb5 BAMUM LETTER PHASE-D PAP -+ /xf0/x96/xa4/xb6 BAMUM LETTER PHASE-D YUOP -+ /xf0/x96/xa4/xb7 BAMUM LETTER PHASE-D NDAM -+ /xf0/x96/xa4/xb8 BAMUM LETTER PHASE-D NTEUM -+ /xf0/x96/xa4/xb9 BAMUM LETTER PHASE-D SUAE -+ /xf0/x96/xa4/xba BAMUM LETTER PHASE-D KUN -+ /xf0/x96/xa4/xbb BAMUM LETTER PHASE-D NGGEUX -+ /xf0/x96/xa4/xbc BAMUM LETTER PHASE-D NGKIEE -+ /xf0/x96/xa4/xbd BAMUM LETTER PHASE-D TUOT -+ /xf0/x96/xa4/xbe BAMUM LETTER PHASE-D MEUN -+ /xf0/x96/xa4/xbf BAMUM LETTER PHASE-D KUQ -+ /xf0/x96/xa5/x80 BAMUM LETTER PHASE-D NSUM -+ /xf0/x96/xa5/x81 BAMUM LETTER PHASE-D TEUN -+ /xf0/x96/xa5/x82 BAMUM LETTER PHASE-D MAENJET -+ /xf0/x96/xa5/x83 BAMUM LETTER PHASE-D NGGAP -+ /xf0/x96/xa5/x84 BAMUM LETTER PHASE-D LEUM -+ /xf0/x96/xa5/x85 BAMUM LETTER PHASE-D NGGUOM -+ /xf0/x96/xa5/x86 BAMUM LETTER PHASE-D NSHUT -+ /xf0/x96/xa5/x87 BAMUM LETTER PHASE-D NJUEQ -+ /xf0/x96/xa5/x88 BAMUM LETTER PHASE-D GHEUAE -+ /xf0/x96/xa5/x89 BAMUM LETTER PHASE-D KU -+ /xf0/x96/xa5/x8a BAMUM LETTER PHASE-D REN OLD -+ /xf0/x96/xa5/x8b BAMUM LETTER PHASE-D TAE -+ /xf0/x96/xa5/x8c BAMUM LETTER PHASE-D TOQ -+ /xf0/x96/xa5/x8d BAMUM LETTER PHASE-D NYI -+ /xf0/x96/xa5/x8e BAMUM LETTER PHASE-D RII -+ /xf0/x96/xa5/x8f BAMUM LETTER PHASE-D LEEEE -+ /xf0/x96/xa5/x90 BAMUM LETTER PHASE-D MEEEE -+ /xf0/x96/xa5/x91 BAMUM LETTER PHASE-D M -+ /xf0/x96/xa5/x92 BAMUM LETTER PHASE-D SUU -+ /xf0/x96/xa5/x93 BAMUM LETTER PHASE-D MU -+ /xf0/x96/xa5/x94 BAMUM LETTER PHASE-D SHII -+ /xf0/x96/xa5/x95 BAMUM LETTER PHASE-D SHEUX -+ /xf0/x96/xa5/x96 BAMUM LETTER PHASE-D KYEE -+ /xf0/x96/xa5/x97 BAMUM LETTER PHASE-D NU -+ /xf0/x96/xa5/x98 BAMUM LETTER PHASE-D SHU -+ /xf0/x96/xa5/x99 BAMUM LETTER PHASE-D NTEE -+ /xf0/x96/xa5/x9a BAMUM LETTER PHASE-D PEE -+ /xf0/x96/xa5/x9b BAMUM LETTER PHASE-D NI -+ /xf0/x96/xa5/x9c BAMUM LETTER PHASE-D SHOQ -+ /xf0/x96/xa5/x9d BAMUM LETTER PHASE-D PUQ -+ /xf0/x96/xa5/x9e BAMUM LETTER PHASE-D MVOP -+ /xf0/x96/xa5/x9f BAMUM LETTER PHASE-D LOQ -+ /xf0/x96/xa5/xa0 BAMUM LETTER PHASE-D REN MUCH -+ /xf0/x96/xa5/xa1 BAMUM LETTER PHASE-D TI -+ /xf0/x96/xa5/xa2 BAMUM LETTER PHASE-D NTUU -+ /xf0/x96/xa5/xa3 BAMUM LETTER PHASE-D MBAA SEVEN -+ /xf0/x96/xa5/xa4 BAMUM LETTER PHASE-D SAQ -+ /xf0/x96/xa5/xa5 BAMUM LETTER PHASE-D FAA -+ /xf0/x96/xa5/xa6 BAMUM LETTER PHASE-E NDAP -+ /xf0/x96/xa5/xa7 BAMUM LETTER PHASE-E TOON -+ /xf0/x96/xa5/xa8 BAMUM LETTER PHASE-E MBEUM -+ /xf0/x96/xa5/xa9 BAMUM LETTER PHASE-E LAP -+ /xf0/x96/xa5/xaa BAMUM LETTER PHASE-E VOM -+ /xf0/x96/xa5/xab BAMUM LETTER PHASE-E LOON -+ /xf0/x96/xa5/xac BAMUM LETTER PHASE-E PAA -+ /xf0/x96/xa5/xad BAMUM LETTER PHASE-E SOM -+ /xf0/x96/xa5/xae BAMUM LETTER PHASE-E RAQ -+ /xf0/x96/xa5/xaf BAMUM LETTER PHASE-E NSHUOP -+ /xf0/x96/xa5/xb0 BAMUM LETTER PHASE-E NDUN -+ /xf0/x96/xa5/xb1 BAMUM LETTER PHASE-E PUAE -+ /xf0/x96/xa5/xb2 BAMUM LETTER PHASE-E TAM -+ /xf0/x96/xa5/xb3 BAMUM LETTER PHASE-E NGKA -+ /xf0/x96/xa5/xb4 BAMUM LETTER PHASE-E KPEUX -+ /xf0/x96/xa5/xb5 BAMUM LETTER PHASE-E WUO -+ /xf0/x96/xa5/xb6 BAMUM LETTER PHASE-E SEE -+ /xf0/x96/xa5/xb7 BAMUM LETTER PHASE-E NGGEUAET -+ /xf0/x96/xa5/xb8 BAMUM LETTER PHASE-E PAAM -+ /xf0/x96/xa5/xb9 BAMUM LETTER PHASE-E TOO -+ /xf0/x96/xa5/xba BAMUM LETTER PHASE-E KUOP -+ /xf0/x96/xa5/xbb BAMUM LETTER PHASE-E LOM -+ /xf0/x96/xa5/xbc BAMUM LETTER PHASE-E NSHIEE -+ /xf0/x96/xa5/xbd BAMUM LETTER PHASE-E NGOP -+ /xf0/x96/xa5/xbe BAMUM LETTER PHASE-E MAEM -+ /xf0/x96/xa5/xbf BAMUM LETTER PHASE-E NGKEUX -+ /xf0/x96/xa6/x80 BAMUM LETTER PHASE-E NGOQ -+ /xf0/x96/xa6/x81 BAMUM LETTER PHASE-E NSHUE -+ /xf0/x96/xa6/x82 BAMUM LETTER PHASE-E RIMGBA -+ /xf0/x96/xa6/x83 BAMUM LETTER PHASE-E NJEUX -+ /xf0/x96/xa6/x84 BAMUM LETTER PHASE-E PEEM -+ /xf0/x96/xa6/x85 BAMUM LETTER PHASE-E SAA -+ /xf0/x96/xa6/x86 BAMUM LETTER PHASE-E NGGURAE -+ /xf0/x96/xa6/x87 BAMUM LETTER PHASE-E MGBA -+ /xf0/x96/xa6/x88 BAMUM LETTER PHASE-E GHEUX -+ /xf0/x96/xa6/x89 BAMUM LETTER PHASE-E NGKEUAEM -+ /xf0/x96/xa6/x8a BAMUM LETTER PHASE-E NJAEMLI -+ /xf0/x96/xa6/x8b BAMUM LETTER PHASE-E MAP -+ /xf0/x96/xa6/x8c BAMUM LETTER PHASE-E LOOT -+ /xf0/x96/xa6/x8d BAMUM LETTER PHASE-E NGGEEEE -+ /xf0/x96/xa6/x8e BAMUM LETTER PHASE-E NDIQ -+ /xf0/x96/xa6/x8f BAMUM LETTER PHASE-E TAEN NTEUM -+ /xf0/x96/xa6/x90 BAMUM LETTER PHASE-E SET -+ /xf0/x96/xa6/x91 BAMUM LETTER PHASE-E PUM -+ /xf0/x96/xa6/x92 BAMUM LETTER PHASE-E NDAA SOFTNESS -+ /xf0/x96/xa6/x93 BAMUM LETTER PHASE-E NGGUAESHAE NYAM -+ /xf0/x96/xa6/x94 BAMUM LETTER PHASE-E YIEE -+ /xf0/x96/xa6/x95 BAMUM LETTER PHASE-E GHEUN -+ /xf0/x96/xa6/x96 BAMUM LETTER PHASE-E TUAE -+ /xf0/x96/xa6/x97 BAMUM LETTER PHASE-E YEUAE -+ /xf0/x96/xa6/x98 BAMUM LETTER PHASE-E PO -+ /xf0/x96/xa6/x99 BAMUM LETTER PHASE-E TUMAE -+ /xf0/x96/xa6/x9a BAMUM LETTER PHASE-E KEUAE -+ /xf0/x96/xa6/x9b BAMUM LETTER PHASE-E SUAEN -+ /xf0/x96/xa6/x9c BAMUM LETTER PHASE-E TEUAEQ -+ /xf0/x96/xa6/x9d BAMUM LETTER PHASE-E VEUAE -+ /xf0/x96/xa6/x9e BAMUM LETTER PHASE-E WEUX -+ /xf0/x96/xa6/x9f BAMUM LETTER PHASE-E LAAM -+ /xf0/x96/xa6/xa0 BAMUM LETTER PHASE-E PU -+ /xf0/x96/xa6/xa1 BAMUM LETTER PHASE-E TAAQ -+ /xf0/x96/xa6/xa2 BAMUM LETTER PHASE-E GHAAMAE -+ /xf0/x96/xa6/xa3 BAMUM LETTER PHASE-E NGEUREUT -+ /xf0/x96/xa6/xa4 BAMUM LETTER PHASE-E SHEUAEQ -+ /xf0/x96/xa6/xa5 BAMUM LETTER PHASE-E MGBEN -+ /xf0/x96/xa6/xa6 BAMUM LETTER PHASE-E MBEE -+ /xf0/x96/xa6/xa7 BAMUM LETTER PHASE-E NZAQ -+ /xf0/x96/xa6/xa8 BAMUM LETTER PHASE-E NKOM -+ /xf0/x96/xa6/xa9 BAMUM LETTER PHASE-E GBET -+ /xf0/x96/xa6/xaa BAMUM LETTER PHASE-E TUM -+ /xf0/x96/xa6/xab BAMUM LETTER PHASE-E KUET -+ /xf0/x96/xa6/xac BAMUM LETTER PHASE-E YAP -+ /xf0/x96/xa6/xad BAMUM LETTER PHASE-E NYI CLEAVER -+ /xf0/x96/xa6/xae BAMUM LETTER PHASE-E YIT -+ /xf0/x96/xa6/xaf BAMUM LETTER PHASE-E MFEUQ -+ /xf0/x96/xa6/xb0 BAMUM LETTER PHASE-E NDIAQ -+ /xf0/x96/xa6/xb1 BAMUM LETTER PHASE-E PIEEQ -+ /xf0/x96/xa6/xb2 BAMUM LETTER PHASE-E YUEQ -+ /xf0/x96/xa6/xb3 BAMUM LETTER PHASE-E LEUAEM -+ /xf0/x96/xa6/xb4 BAMUM LETTER PHASE-E FUE -+ /xf0/x96/xa6/xb5 BAMUM LETTER PHASE-E GBEUX -+ /xf0/x96/xa6/xb6 BAMUM LETTER PHASE-E NGKUP -+ /xf0/x96/xa6/xb7 BAMUM LETTER PHASE-E KET -+ /xf0/x96/xa6/xb8 BAMUM LETTER PHASE-E MAE -+ /xf0/x96/xa6/xb9 BAMUM LETTER PHASE-E NGKAAMI -+ /xf0/x96/xa6/xba BAMUM LETTER PHASE-E GHET -+ /xf0/x96/xa6/xbb BAMUM LETTER PHASE-E FA -+ /xf0/x96/xa6/xbc BAMUM LETTER PHASE-E NTUM -+ /xf0/x96/xa6/xbd BAMUM LETTER PHASE-E PEUT -+ /xf0/x96/xa6/xbe BAMUM LETTER PHASE-E YEUM -+ /xf0/x96/xa6/xbf BAMUM LETTER PHASE-E NGGEUAE -+ /xf0/x96/xa7/x80 BAMUM LETTER PHASE-E NYI BETWEEN -+ /xf0/x96/xa7/x81 BAMUM LETTER PHASE-E NZUQ -+ /xf0/x96/xa7/x82 BAMUM LETTER PHASE-E POON -+ /xf0/x96/xa7/x83 BAMUM LETTER PHASE-E MIEE -+ /xf0/x96/xa7/x84 BAMUM LETTER PHASE-E FUET -+ /xf0/x96/xa7/x85 BAMUM LETTER PHASE-E NAE -+ /xf0/x96/xa7/x86 BAMUM LETTER PHASE-E MUAE -+ /xf0/x96/xa7/x87 BAMUM LETTER PHASE-E GHEUAE -+ /xf0/x96/xa7/x88 BAMUM LETTER PHASE-E FU I -+ /xf0/x96/xa7/x89 BAMUM LETTER PHASE-E MVI -+ /xf0/x96/xa7/x8a BAMUM LETTER PHASE-E PUAQ -+ /xf0/x96/xa7/x8b BAMUM LETTER PHASE-E NGKUM -+ /xf0/x96/xa7/x8c BAMUM LETTER PHASE-E KUT -+ /xf0/x96/xa7/x8d BAMUM LETTER PHASE-E PIET -+ /xf0/x96/xa7/x8e BAMUM LETTER PHASE-E NTAP -+ /xf0/x96/xa7/x8f BAMUM LETTER PHASE-E YEUAET -+ /xf0/x96/xa7/x90 BAMUM LETTER PHASE-E NGGUP -+ /xf0/x96/xa7/x91 BAMUM LETTER PHASE-E PA PEOPLE -+ /xf0/x96/xa7/x92 BAMUM LETTER PHASE-E FU CALL -+ /xf0/x96/xa7/x93 BAMUM LETTER PHASE-E FOM -+ /xf0/x96/xa7/x94 BAMUM LETTER PHASE-E NJEE -+ /xf0/x96/xa7/x95 BAMUM LETTER PHASE-E A -+ /xf0/x96/xa7/x96 BAMUM LETTER PHASE-E TOQ -+ /xf0/x96/xa7/x97 BAMUM LETTER PHASE-E O -+ /xf0/x96/xa7/x98 BAMUM LETTER PHASE-E I -+ /xf0/x96/xa7/x99 BAMUM LETTER PHASE-E LAQ -+ /xf0/x96/xa7/x9a BAMUM LETTER PHASE-E PA PLURAL -+ /xf0/x96/xa7/x9b BAMUM LETTER PHASE-E TAA -+ /xf0/x96/xa7/x9c BAMUM LETTER PHASE-E TAQ -+ /xf0/x96/xa7/x9d BAMUM LETTER PHASE-E NDAA MY HOUSE -+ /xf0/x96/xa7/x9e BAMUM LETTER PHASE-E SHIQ -+ /xf0/x96/xa7/x9f BAMUM LETTER PHASE-E YEUX -+ /xf0/x96/xa7/xa0 BAMUM LETTER PHASE-E NGUAE -+ /xf0/x96/xa7/xa1 BAMUM LETTER PHASE-E YUAEN -+ /xf0/x96/xa7/xa2 BAMUM LETTER PHASE-E YOQ SWIMMING -+ /xf0/x96/xa7/xa3 BAMUM LETTER PHASE-E YOQ COVER -+ /xf0/x96/xa7/xa4 BAMUM LETTER PHASE-E YUQ -+ /xf0/x96/xa7/xa5 BAMUM LETTER PHASE-E YUN -+ /xf0/x96/xa7/xa6 BAMUM LETTER PHASE-E KEUX -+ /xf0/x96/xa7/xa7 BAMUM LETTER PHASE-E PEUX -+ /xf0/x96/xa7/xa8 BAMUM LETTER PHASE-E NJEE EPOCH -+ /xf0/x96/xa7/xa9 BAMUM LETTER PHASE-E PUE -+ /xf0/x96/xa7/xaa BAMUM LETTER PHASE-E WUE -+ /xf0/x96/xa7/xab BAMUM LETTER PHASE-E FEE -+ /xf0/x96/xa7/xac BAMUM LETTER PHASE-E VEE -+ /xf0/x96/xa7/xad BAMUM LETTER PHASE-E LU -+ /xf0/x96/xa7/xae BAMUM LETTER PHASE-E MI -+ /xf0/x96/xa7/xaf BAMUM LETTER PHASE-E REUX -+ /xf0/x96/xa7/xb0 BAMUM LETTER PHASE-E RAE -+ /xf0/x96/xa7/xb1 BAMUM LETTER PHASE-E NGUAET -+ /xf0/x96/xa7/xb2 BAMUM LETTER PHASE-E NGA -+ /xf0/x96/xa7/xb3 BAMUM LETTER PHASE-E SHO -+ /xf0/x96/xa7/xb4 BAMUM LETTER PHASE-E SHOQ -+ /xf0/x96/xa7/xb5 BAMUM LETTER PHASE-E FU REMEDY -+ /xf0/x96/xa7/xb6 BAMUM LETTER PHASE-E NA -+ /xf0/x96/xa7/xb7 BAMUM LETTER PHASE-E PI -+ /xf0/x96/xa7/xb8 BAMUM LETTER PHASE-E LOQ -+ /xf0/x96/xa7/xb9 BAMUM LETTER PHASE-E KO -+ /xf0/x96/xa7/xba BAMUM LETTER PHASE-E MEN -+ /xf0/x96/xa7/xbb BAMUM LETTER PHASE-E MA -+ /xf0/x96/xa7/xbc BAMUM LETTER PHASE-E MAQ -+ /xf0/x96/xa7/xbd BAMUM LETTER PHASE-E TEU -+ /xf0/x96/xa7/xbe BAMUM LETTER PHASE-E KI -+ /xf0/x96/xa7/xbf BAMUM LETTER PHASE-E MON -+ /xf0/x96/xa8/x80 BAMUM LETTER PHASE-E TEN -+ /xf0/x96/xa8/x81 BAMUM LETTER PHASE-E FAQ -+ /xf0/x96/xa8/x82 BAMUM LETTER PHASE-E GHOM -+ /xf0/x96/xa8/x83 BAMUM LETTER PHASE-F KA -+ /xf0/x96/xa8/x84 BAMUM LETTER PHASE-F U -+ /xf0/x96/xa8/x85 BAMUM LETTER PHASE-F KU -+ /xf0/x96/xa8/x86 BAMUM LETTER PHASE-F EE -+ /xf0/x96/xa8/x87 BAMUM LETTER PHASE-F REE -+ /xf0/x96/xa8/x88 BAMUM LETTER PHASE-F TAE -+ /xf0/x96/xa8/x89 BAMUM LETTER PHASE-F NYI -+ /xf0/x96/xa8/x8a BAMUM LETTER PHASE-F LA -+ /xf0/x96/xa8/x8b BAMUM LETTER PHASE-F RII -+ /xf0/x96/xa8/x8c BAMUM LETTER PHASE-F RIEE -+ /xf0/x96/xa8/x8d BAMUM LETTER PHASE-F MEEEE -+ /xf0/x96/xa8/x8e BAMUM LETTER PHASE-F TAA -+ /xf0/x96/xa8/x8f BAMUM LETTER PHASE-F NDAA -+ /xf0/x96/xa8/x90 BAMUM LETTER PHASE-F NJAEM -+ /xf0/x96/xa8/x91 BAMUM LETTER PHASE-F M -+ /xf0/x96/xa8/x92 BAMUM LETTER PHASE-F SUU -+ /xf0/x96/xa8/x93 BAMUM LETTER PHASE-F SHII -+ /xf0/x96/xa8/x94 BAMUM LETTER PHASE-F SI -+ /xf0/x96/xa8/x95 BAMUM LETTER PHASE-F SEUX -+ /xf0/x96/xa8/x96 BAMUM LETTER PHASE-F KYEE -+ /xf0/x96/xa8/x97 BAMUM LETTER PHASE-F KET -+ /xf0/x96/xa8/x98 BAMUM LETTER PHASE-F NUAE -+ /xf0/x96/xa8/x99 BAMUM LETTER PHASE-F NU -+ /xf0/x96/xa8/x9a BAMUM LETTER PHASE-F NJUAE -+ /xf0/x96/xa8/x9b BAMUM LETTER PHASE-F YOQ -+ /xf0/x96/xa8/x9c BAMUM LETTER PHASE-F SHU -+ /xf0/x96/xa8/x9d BAMUM LETTER PHASE-F YA -+ /xf0/x96/xa8/x9e BAMUM LETTER PHASE-F NSHA -+ /xf0/x96/xa8/x9f BAMUM LETTER PHASE-F PEUX -+ /xf0/x96/xa8/xa0 BAMUM LETTER PHASE-F NTEE -+ /xf0/x96/xa8/xa1 BAMUM LETTER PHASE-F WUE -+ /xf0/x96/xa8/xa2 BAMUM LETTER PHASE-F PEE -+ /xf0/x96/xa8/xa3 BAMUM LETTER PHASE-F RU -+ /xf0/x96/xa8/xa4 BAMUM LETTER PHASE-F NI -+ /xf0/x96/xa8/xa5 BAMUM LETTER PHASE-F REUX -+ /xf0/x96/xa8/xa6 BAMUM LETTER PHASE-F KEN -+ /xf0/x96/xa8/xa7 BAMUM LETTER PHASE-F NGKWAEN -+ /xf0/x96/xa8/xa8 BAMUM LETTER PHASE-F NGGA -+ /xf0/x96/xa8/xa9 BAMUM LETTER PHASE-F SHO -+ /xf0/x96/xa8/xaa BAMUM LETTER PHASE-F PUAE -+ /xf0/x96/xa8/xab BAMUM LETTER PHASE-F FOM -+ /xf0/x96/xa8/xac BAMUM LETTER PHASE-F WA -+ /xf0/x96/xa8/xad BAMUM LETTER PHASE-F LI -+ /xf0/x96/xa8/xae BAMUM LETTER PHASE-F LOQ -+ /xf0/x96/xa8/xaf BAMUM LETTER PHASE-F KO -+ /xf0/x96/xa8/xb0 BAMUM LETTER PHASE-F MBEN -+ /xf0/x96/xa8/xb1 BAMUM LETTER PHASE-F REN -+ /xf0/x96/xa8/xb2 BAMUM LETTER PHASE-F MA -+ /xf0/x96/xa8/xb3 BAMUM LETTER PHASE-F MO -+ /xf0/x96/xa8/xb4 BAMUM LETTER PHASE-F MBAA -+ /xf0/x96/xa8/xb5 BAMUM LETTER PHASE-F TET -+ /xf0/x96/xa8/xb6 BAMUM LETTER PHASE-F KPA -+ /xf0/x96/xa8/xb7 BAMUM LETTER PHASE-F SAMBA -+ /xf0/x96/xa8/xb8 BAMUM LETTER PHASE-F VUEQ -+ /xf0/x9b/x80/x80 KATAKANA LETTER ARCHAIC E -+ /xf0/x9b/x80/x81 HIRAGANA LETTER ARCHAIC YE - /xf0/x9d/x80/x80 BYZANTINE MUSICAL SYMBOL PSILI - /xf0/x9d/x80/x81 BYZANTINE MUSICAL SYMBOL DASEIA - /xf0/x9d/x80/x82 BYZANTINE MUSICAL SYMBOL PERISPOMENI -@@ -30151,6 +33445,1091 @@ CHARMAP - /xf0/x9f/x82/x91 DOMINO TILE VERTICAL-06-04 - /xf0/x9f/x82/x92 DOMINO TILE VERTICAL-06-05 - /xf0/x9f/x82/x93 DOMINO TILE VERTICAL-06-06 -+ /xf0/x9f/x82/xa0 PLAYING CARD BACK -+ /xf0/x9f/x82/xa1 PLAYING CARD ACE OF SPADES -+ /xf0/x9f/x82/xa2 PLAYING CARD TWO OF SPADES -+ /xf0/x9f/x82/xa3 PLAYING CARD THREE OF SPADES -+ /xf0/x9f/x82/xa4 PLAYING CARD FOUR OF SPADES -+ /xf0/x9f/x82/xa5 PLAYING CARD FIVE OF SPADES -+ /xf0/x9f/x82/xa6 PLAYING CARD SIX OF SPADES -+ /xf0/x9f/x82/xa7 PLAYING CARD SEVEN OF SPADES -+ /xf0/x9f/x82/xa8 PLAYING CARD EIGHT OF SPADES -+ /xf0/x9f/x82/xa9 PLAYING CARD NINE OF SPADES -+ /xf0/x9f/x82/xaa PLAYING CARD TEN OF SPADES -+ /xf0/x9f/x82/xab PLAYING CARD JACK OF SPADES -+ /xf0/x9f/x82/xac PLAYING CARD KNIGHT OF SPADES -+ /xf0/x9f/x82/xad PLAYING CARD QUEEN OF SPADES -+ /xf0/x9f/x82/xae PLAYING CARD KING OF SPADES -+ /xf0/x9f/x82/xb1 PLAYING CARD ACE OF HEARTS -+ /xf0/x9f/x82/xb2 PLAYING CARD TWO OF HEARTS -+ /xf0/x9f/x82/xb3 PLAYING CARD THREE OF HEARTS -+ /xf0/x9f/x82/xb4 PLAYING CARD FOUR OF HEARTS -+ /xf0/x9f/x82/xb5 PLAYING CARD FIVE OF HEARTS -+ /xf0/x9f/x82/xb6 PLAYING CARD SIX OF HEARTS -+ /xf0/x9f/x82/xb7 PLAYING CARD SEVEN OF HEARTS -+ /xf0/x9f/x82/xb8 PLAYING CARD EIGHT OF HEARTS -+ /xf0/x9f/x82/xb9 PLAYING CARD NINE OF HEARTS -+ /xf0/x9f/x82/xba PLAYING CARD TEN OF HEARTS -+ /xf0/x9f/x82/xbb PLAYING CARD JACK OF HEARTS -+ /xf0/x9f/x82/xbc PLAYING CARD KNIGHT OF HEARTS -+ /xf0/x9f/x82/xbd PLAYING CARD QUEEN OF HEARTS -+ /xf0/x9f/x82/xbe PLAYING CARD KING OF HEARTS -+ /xf0/x9f/x83/x81 PLAYING CARD ACE OF DIAMONDS -+ /xf0/x9f/x83/x82 PLAYING CARD TWO OF DIAMONDS -+ /xf0/x9f/x83/x83 PLAYING CARD THREE OF DIAMONDS -+ /xf0/x9f/x83/x84 PLAYING CARD FOUR OF DIAMONDS -+ /xf0/x9f/x83/x85 PLAYING CARD FIVE OF DIAMONDS -+ /xf0/x9f/x83/x86 PLAYING CARD SIX OF DIAMONDS -+ /xf0/x9f/x83/x87 PLAYING CARD SEVEN OF DIAMONDS -+ /xf0/x9f/x83/x88 PLAYING CARD EIGHT OF DIAMONDS -+ /xf0/x9f/x83/x89 PLAYING CARD NINE OF DIAMONDS -+ /xf0/x9f/x83/x8a PLAYING CARD TEN OF DIAMONDS -+ /xf0/x9f/x83/x8b PLAYING CARD JACK OF DIAMONDS -+ /xf0/x9f/x83/x8c PLAYING CARD KNIGHT OF DIAMONDS -+ /xf0/x9f/x83/x8d PLAYING CARD QUEEN OF DIAMONDS -+ /xf0/x9f/x83/x8e PLAYING CARD KING OF DIAMONDS -+ /xf0/x9f/x83/x8f PLAYING CARD BLACK JOKER -+ /xf0/x9f/x83/x91 PLAYING CARD ACE OF CLUBS -+ /xf0/x9f/x83/x92 PLAYING CARD TWO OF CLUBS -+ /xf0/x9f/x83/x93 PLAYING CARD THREE OF CLUBS -+ /xf0/x9f/x83/x94 PLAYING CARD FOUR OF CLUBS -+ /xf0/x9f/x83/x95 PLAYING CARD FIVE OF CLUBS -+ /xf0/x9f/x83/x96 PLAYING CARD SIX OF CLUBS -+ /xf0/x9f/x83/x97 PLAYING CARD SEVEN OF CLUBS -+ /xf0/x9f/x83/x98 PLAYING CARD EIGHT OF CLUBS -+ /xf0/x9f/x83/x99 PLAYING CARD NINE OF CLUBS -+ /xf0/x9f/x83/x9a PLAYING CARD TEN OF CLUBS -+ /xf0/x9f/x83/x9b PLAYING CARD JACK OF CLUBS -+ /xf0/x9f/x83/x9c PLAYING CARD KNIGHT OF CLUBS -+ /xf0/x9f/x83/x9d PLAYING CARD QUEEN OF CLUBS -+ /xf0/x9f/x83/x9e PLAYING CARD KING OF CLUBS -+ /xf0/x9f/x83/x9f PLAYING CARD WHITE JOKER -+ /xf0/x9f/x84/x80 DIGIT ZERO FULL STOP -+ /xf0/x9f/x84/x81 DIGIT ZERO COMMA -+ /xf0/x9f/x84/x82 DIGIT ONE COMMA -+ /xf0/x9f/x84/x83 DIGIT TWO COMMA -+ /xf0/x9f/x84/x84 DIGIT THREE COMMA -+ /xf0/x9f/x84/x85 DIGIT FOUR COMMA -+ /xf0/x9f/x84/x86 DIGIT FIVE COMMA -+ /xf0/x9f/x84/x87 DIGIT SIX COMMA -+ /xf0/x9f/x84/x88 DIGIT SEVEN COMMA -+ /xf0/x9f/x84/x89 DIGIT EIGHT COMMA -+ /xf0/x9f/x84/x8a DIGIT NINE COMMA -+ /xf0/x9f/x84/x90 PARENTHESIZED LATIN CAPITAL LETTER A -+ /xf0/x9f/x84/x91 PARENTHESIZED LATIN CAPITAL LETTER B -+ /xf0/x9f/x84/x92 PARENTHESIZED LATIN CAPITAL LETTER C -+ /xf0/x9f/x84/x93 PARENTHESIZED LATIN CAPITAL LETTER D -+ /xf0/x9f/x84/x94 PARENTHESIZED LATIN CAPITAL LETTER E -+ /xf0/x9f/x84/x95 PARENTHESIZED LATIN CAPITAL LETTER F -+ /xf0/x9f/x84/x96 PARENTHESIZED LATIN CAPITAL LETTER G -+ /xf0/x9f/x84/x97 PARENTHESIZED LATIN CAPITAL LETTER H -+ /xf0/x9f/x84/x98 PARENTHESIZED LATIN CAPITAL LETTER I -+ /xf0/x9f/x84/x99 PARENTHESIZED LATIN CAPITAL LETTER J -+ /xf0/x9f/x84/x9a PARENTHESIZED LATIN CAPITAL LETTER K -+ /xf0/x9f/x84/x9b PARENTHESIZED LATIN CAPITAL LETTER L -+ /xf0/x9f/x84/x9c PARENTHESIZED LATIN CAPITAL LETTER M -+ /xf0/x9f/x84/x9d PARENTHESIZED LATIN CAPITAL LETTER N -+ /xf0/x9f/x84/x9e PARENTHESIZED LATIN CAPITAL LETTER O -+ /xf0/x9f/x84/x9f PARENTHESIZED LATIN CAPITAL LETTER P -+ /xf0/x9f/x84/xa0 PARENTHESIZED LATIN CAPITAL LETTER Q -+ /xf0/x9f/x84/xa1 PARENTHESIZED LATIN CAPITAL LETTER R -+ /xf0/x9f/x84/xa2 PARENTHESIZED LATIN CAPITAL LETTER S -+ /xf0/x9f/x84/xa3 PARENTHESIZED LATIN CAPITAL LETTER T -+ /xf0/x9f/x84/xa4 PARENTHESIZED LATIN CAPITAL LETTER U -+ /xf0/x9f/x84/xa5 PARENTHESIZED LATIN CAPITAL LETTER V -+ /xf0/x9f/x84/xa6 PARENTHESIZED LATIN CAPITAL LETTER W -+ /xf0/x9f/x84/xa7 PARENTHESIZED LATIN CAPITAL LETTER X -+ /xf0/x9f/x84/xa8 PARENTHESIZED LATIN CAPITAL LETTER Y -+ /xf0/x9f/x84/xa9 PARENTHESIZED LATIN CAPITAL LETTER Z -+ /xf0/x9f/x84/xaa TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S -+ /xf0/x9f/x84/xab CIRCLED ITALIC LATIN CAPITAL LETTER C -+ /xf0/x9f/x84/xac CIRCLED ITALIC LATIN CAPITAL LETTER R -+ /xf0/x9f/x84/xad CIRCLED CD -+ /xf0/x9f/x84/xae CIRCLED WZ -+ /xf0/x9f/x84/xb0 SQUARED LATIN CAPITAL LETTER A -+ /xf0/x9f/x84/xb1 SQUARED LATIN CAPITAL LETTER B -+ /xf0/x9f/x84/xb2 SQUARED LATIN CAPITAL LETTER C -+ /xf0/x9f/x84/xb3 SQUARED LATIN CAPITAL LETTER D -+ /xf0/x9f/x84/xb4 SQUARED LATIN CAPITAL LETTER E -+ /xf0/x9f/x84/xb5 SQUARED LATIN CAPITAL LETTER F -+ /xf0/x9f/x84/xb6 SQUARED LATIN CAPITAL LETTER G -+ /xf0/x9f/x84/xb7 SQUARED LATIN CAPITAL LETTER H -+ /xf0/x9f/x84/xb8 SQUARED LATIN CAPITAL LETTER I -+ /xf0/x9f/x84/xb9 SQUARED LATIN CAPITAL LETTER J -+ /xf0/x9f/x84/xba SQUARED LATIN CAPITAL LETTER K -+ /xf0/x9f/x84/xbb SQUARED LATIN CAPITAL LETTER L -+ /xf0/x9f/x84/xbc SQUARED LATIN CAPITAL LETTER M -+ /xf0/x9f/x84/xbd SQUARED LATIN CAPITAL LETTER N -+ /xf0/x9f/x84/xbe SQUARED LATIN CAPITAL LETTER O -+ /xf0/x9f/x84/xbf SQUARED LATIN CAPITAL LETTER P -+ /xf0/x9f/x85/x80 SQUARED LATIN CAPITAL LETTER Q -+ /xf0/x9f/x85/x81 SQUARED LATIN CAPITAL LETTER R -+ /xf0/x9f/x85/x82 SQUARED LATIN CAPITAL LETTER S -+ /xf0/x9f/x85/x83 SQUARED LATIN CAPITAL LETTER T -+ /xf0/x9f/x85/x84 SQUARED LATIN CAPITAL LETTER U -+ /xf0/x9f/x85/x85 SQUARED LATIN CAPITAL LETTER V -+ /xf0/x9f/x85/x86 SQUARED LATIN CAPITAL LETTER W -+ /xf0/x9f/x85/x87 SQUARED LATIN CAPITAL LETTER X -+ /xf0/x9f/x85/x88 SQUARED LATIN CAPITAL LETTER Y -+ /xf0/x9f/x85/x89 SQUARED LATIN CAPITAL LETTER Z -+ /xf0/x9f/x85/x8a SQUARED HV -+ /xf0/x9f/x85/x8b SQUARED MV -+ /xf0/x9f/x85/x8c SQUARED SD -+ /xf0/x9f/x85/x8d SQUARED SS -+ /xf0/x9f/x85/x8e SQUARED PPV -+ /xf0/x9f/x85/x8f SQUARED WC -+ /xf0/x9f/x85/x90 NEGATIVE CIRCLED LATIN CAPITAL LETTER A -+ /xf0/x9f/x85/x91 NEGATIVE CIRCLED LATIN CAPITAL LETTER B -+ /xf0/x9f/x85/x92 NEGATIVE CIRCLED LATIN CAPITAL LETTER C -+ /xf0/x9f/x85/x93 NEGATIVE CIRCLED LATIN CAPITAL LETTER D -+ /xf0/x9f/x85/x94 NEGATIVE CIRCLED LATIN CAPITAL LETTER E -+ /xf0/x9f/x85/x95 NEGATIVE CIRCLED LATIN CAPITAL LETTER F -+ /xf0/x9f/x85/x96 NEGATIVE CIRCLED LATIN CAPITAL LETTER G -+ /xf0/x9f/x85/x97 NEGATIVE CIRCLED LATIN CAPITAL LETTER H -+ /xf0/x9f/x85/x98 NEGATIVE CIRCLED LATIN CAPITAL LETTER I -+ /xf0/x9f/x85/x99 NEGATIVE CIRCLED LATIN CAPITAL LETTER J -+ /xf0/x9f/x85/x9a NEGATIVE CIRCLED LATIN CAPITAL LETTER K -+ /xf0/x9f/x85/x9b NEGATIVE CIRCLED LATIN CAPITAL LETTER L -+ /xf0/x9f/x85/x9c NEGATIVE CIRCLED LATIN CAPITAL LETTER M -+ /xf0/x9f/x85/x9d NEGATIVE CIRCLED LATIN CAPITAL LETTER N -+ /xf0/x9f/x85/x9e NEGATIVE CIRCLED LATIN CAPITAL LETTER O -+ /xf0/x9f/x85/x9f NEGATIVE CIRCLED LATIN CAPITAL LETTER P -+ /xf0/x9f/x85/xa0 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q -+ /xf0/x9f/x85/xa1 NEGATIVE CIRCLED LATIN CAPITAL LETTER R -+ /xf0/x9f/x85/xa2 NEGATIVE CIRCLED LATIN CAPITAL LETTER S -+ /xf0/x9f/x85/xa3 NEGATIVE CIRCLED LATIN CAPITAL LETTER T -+ /xf0/x9f/x85/xa4 NEGATIVE CIRCLED LATIN CAPITAL LETTER U -+ /xf0/x9f/x85/xa5 NEGATIVE CIRCLED LATIN CAPITAL LETTER V -+ /xf0/x9f/x85/xa6 NEGATIVE CIRCLED LATIN CAPITAL LETTER W -+ /xf0/x9f/x85/xa7 NEGATIVE CIRCLED LATIN CAPITAL LETTER X -+ /xf0/x9f/x85/xa8 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y -+ /xf0/x9f/x85/xa9 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z -+ /xf0/x9f/x85/xb0 NEGATIVE SQUARED LATIN CAPITAL LETTER A -+ /xf0/x9f/x85/xb1 NEGATIVE SQUARED LATIN CAPITAL LETTER B -+ /xf0/x9f/x85/xb2 NEGATIVE SQUARED LATIN CAPITAL LETTER C -+ /xf0/x9f/x85/xb3 NEGATIVE SQUARED LATIN CAPITAL LETTER D -+ /xf0/x9f/x85/xb4 NEGATIVE SQUARED LATIN CAPITAL LETTER E -+ /xf0/x9f/x85/xb5 NEGATIVE SQUARED LATIN CAPITAL LETTER F -+ /xf0/x9f/x85/xb6 NEGATIVE SQUARED LATIN CAPITAL LETTER G -+ /xf0/x9f/x85/xb7 NEGATIVE SQUARED LATIN CAPITAL LETTER H -+ /xf0/x9f/x85/xb8 NEGATIVE SQUARED LATIN CAPITAL LETTER I -+ /xf0/x9f/x85/xb9 NEGATIVE SQUARED LATIN CAPITAL LETTER J -+ /xf0/x9f/x85/xba NEGATIVE SQUARED LATIN CAPITAL LETTER K -+ /xf0/x9f/x85/xbb NEGATIVE SQUARED LATIN CAPITAL LETTER L -+ /xf0/x9f/x85/xbc NEGATIVE SQUARED LATIN CAPITAL LETTER M -+ /xf0/x9f/x85/xbd NEGATIVE SQUARED LATIN CAPITAL LETTER N -+ /xf0/x9f/x85/xbe NEGATIVE SQUARED LATIN CAPITAL LETTER O -+ /xf0/x9f/x85/xbf NEGATIVE SQUARED LATIN CAPITAL LETTER P -+ /xf0/x9f/x86/x80 NEGATIVE SQUARED LATIN CAPITAL LETTER Q -+ /xf0/x9f/x86/x81 NEGATIVE SQUARED LATIN CAPITAL LETTER R -+ /xf0/x9f/x86/x82 NEGATIVE SQUARED LATIN CAPITAL LETTER S -+ /xf0/x9f/x86/x83 NEGATIVE SQUARED LATIN CAPITAL LETTER T -+ /xf0/x9f/x86/x84 NEGATIVE SQUARED LATIN CAPITAL LETTER U -+ /xf0/x9f/x86/x85 NEGATIVE SQUARED LATIN CAPITAL LETTER V -+ /xf0/x9f/x86/x86 NEGATIVE SQUARED LATIN CAPITAL LETTER W -+ /xf0/x9f/x86/x87 NEGATIVE SQUARED LATIN CAPITAL LETTER X -+ /xf0/x9f/x86/x88 NEGATIVE SQUARED LATIN CAPITAL LETTER Y -+ /xf0/x9f/x86/x89 NEGATIVE SQUARED LATIN CAPITAL LETTER Z -+ /xf0/x9f/x86/x8a CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P -+ /xf0/x9f/x86/x8b NEGATIVE SQUARED IC -+ /xf0/x9f/x86/x8c NEGATIVE SQUARED PA -+ /xf0/x9f/x86/x8d NEGATIVE SQUARED SA -+ /xf0/x9f/x86/x8e NEGATIVE SQUARED AB -+ /xf0/x9f/x86/x8f NEGATIVE SQUARED WC -+ /xf0/x9f/x86/x90 SQUARE DJ -+ /xf0/x9f/x86/x91 SQUARED CL -+ /xf0/x9f/x86/x92 SQUARED COOL -+ /xf0/x9f/x86/x93 SQUARED FREE -+ /xf0/x9f/x86/x94 SQUARED ID -+ /xf0/x9f/x86/x95 SQUARED NEW -+ /xf0/x9f/x86/x96 SQUARED NG -+ /xf0/x9f/x86/x97 SQUARED OK -+ /xf0/x9f/x86/x98 SQUARED SOS -+ /xf0/x9f/x86/x99 SQUARED UP WITH EXCLAMATION MARK -+ /xf0/x9f/x86/x9a SQUARED VS -+ /xf0/x9f/x87/xa6 REGIONAL INDICATOR SYMBOL LETTER A -+ /xf0/x9f/x87/xa7 REGIONAL INDICATOR SYMBOL LETTER B -+ /xf0/x9f/x87/xa8 REGIONAL INDICATOR SYMBOL LETTER C -+ /xf0/x9f/x87/xa9 REGIONAL INDICATOR SYMBOL LETTER D -+ /xf0/x9f/x87/xaa REGIONAL INDICATOR SYMBOL LETTER E -+ /xf0/x9f/x87/xab REGIONAL INDICATOR SYMBOL LETTER F -+ /xf0/x9f/x87/xac REGIONAL INDICATOR SYMBOL LETTER G -+ /xf0/x9f/x87/xad REGIONAL INDICATOR SYMBOL LETTER H -+ /xf0/x9f/x87/xae REGIONAL INDICATOR SYMBOL LETTER I -+ /xf0/x9f/x87/xaf REGIONAL INDICATOR SYMBOL LETTER J -+ /xf0/x9f/x87/xb0 REGIONAL INDICATOR SYMBOL LETTER K -+ /xf0/x9f/x87/xb1 REGIONAL INDICATOR SYMBOL LETTER L -+ /xf0/x9f/x87/xb2 REGIONAL INDICATOR SYMBOL LETTER M -+ /xf0/x9f/x87/xb3 REGIONAL INDICATOR SYMBOL LETTER N -+ /xf0/x9f/x87/xb4 REGIONAL INDICATOR SYMBOL LETTER O -+ /xf0/x9f/x87/xb5 REGIONAL INDICATOR SYMBOL LETTER P -+ /xf0/x9f/x87/xb6 REGIONAL INDICATOR SYMBOL LETTER Q -+ /xf0/x9f/x87/xb7 REGIONAL INDICATOR SYMBOL LETTER R -+ /xf0/x9f/x87/xb8 REGIONAL INDICATOR SYMBOL LETTER S -+ /xf0/x9f/x87/xb9 REGIONAL INDICATOR SYMBOL LETTER T -+ /xf0/x9f/x87/xba REGIONAL INDICATOR SYMBOL LETTER U -+ /xf0/x9f/x87/xbb REGIONAL INDICATOR SYMBOL LETTER V -+ /xf0/x9f/x87/xbc REGIONAL INDICATOR SYMBOL LETTER W -+ /xf0/x9f/x87/xbd REGIONAL INDICATOR SYMBOL LETTER X -+ /xf0/x9f/x87/xbe REGIONAL INDICATOR SYMBOL LETTER Y -+ /xf0/x9f/x87/xbf REGIONAL INDICATOR SYMBOL LETTER Z -+ /xf0/x9f/x88/x80 SQUARE HIRAGANA HOKA -+ /xf0/x9f/x88/x81 SQUARED KATAKANA KOKO -+ /xf0/x9f/x88/x82 SQUARED KATAKANA SA -+ /xf0/x9f/x88/x90 SQUARED CJK UNIFIED IDEOGRAPH-624B -+ /xf0/x9f/x88/x91 SQUARED CJK UNIFIED IDEOGRAPH-5B57 -+ /xf0/x9f/x88/x92 SQUARED CJK UNIFIED IDEOGRAPH-53CC -+ /xf0/x9f/x88/x93 SQUARED KATAKANA DE -+ /xf0/x9f/x88/x94 SQUARED CJK UNIFIED IDEOGRAPH-4E8C -+ /xf0/x9f/x88/x95 SQUARED CJK UNIFIED IDEOGRAPH-591A -+ /xf0/x9f/x88/x96 SQUARED CJK UNIFIED IDEOGRAPH-89E3 -+ /xf0/x9f/x88/x97 SQUARED CJK UNIFIED IDEOGRAPH-5929 -+ /xf0/x9f/x88/x98 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 -+ /xf0/x9f/x88/x99 SQUARED CJK UNIFIED IDEOGRAPH-6620 -+ /xf0/x9f/x88/x9a SQUARED CJK UNIFIED IDEOGRAPH-7121 -+ /xf0/x9f/x88/x9b SQUARED CJK UNIFIED IDEOGRAPH-6599 -+ /xf0/x9f/x88/x9c SQUARED CJK UNIFIED IDEOGRAPH-524D -+ /xf0/x9f/x88/x9d SQUARED CJK UNIFIED IDEOGRAPH-5F8C -+ /xf0/x9f/x88/x9e SQUARED CJK UNIFIED IDEOGRAPH-518D -+ /xf0/x9f/x88/x9f SQUARED CJK UNIFIED IDEOGRAPH-65B0 -+ /xf0/x9f/x88/xa0 SQUARED CJK UNIFIED IDEOGRAPH-521D -+ /xf0/x9f/x88/xa1 SQUARED CJK UNIFIED IDEOGRAPH-7D42 -+ /xf0/x9f/x88/xa2 SQUARED CJK UNIFIED IDEOGRAPH-751F -+ /xf0/x9f/x88/xa3 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 -+ /xf0/x9f/x88/xa4 SQUARED CJK UNIFIED IDEOGRAPH-58F0 -+ /xf0/x9f/x88/xa5 SQUARED CJK UNIFIED IDEOGRAPH-5439 -+ /xf0/x9f/x88/xa6 SQUARED CJK UNIFIED IDEOGRAPH-6F14 -+ /xf0/x9f/x88/xa7 SQUARED CJK UNIFIED IDEOGRAPH-6295 -+ /xf0/x9f/x88/xa8 SQUARED CJK UNIFIED IDEOGRAPH-6355 -+ /xf0/x9f/x88/xa9 SQUARED CJK UNIFIED IDEOGRAPH-4E00 -+ /xf0/x9f/x88/xaa SQUARED CJK UNIFIED IDEOGRAPH-4E09 -+ /xf0/x9f/x88/xab SQUARED CJK UNIFIED IDEOGRAPH-904A -+ /xf0/x9f/x88/xac SQUARED CJK UNIFIED IDEOGRAPH-5DE6 -+ /xf0/x9f/x88/xad SQUARED CJK UNIFIED IDEOGRAPH-4E2D -+ /xf0/x9f/x88/xae SQUARED CJK UNIFIED IDEOGRAPH-53F3 -+ /xf0/x9f/x88/xaf SQUARED CJK UNIFIED IDEOGRAPH-6307 -+ /xf0/x9f/x88/xb0 SQUARED CJK UNIFIED IDEOGRAPH-8D70 -+ /xf0/x9f/x88/xb1 SQUARED CJK UNIFIED IDEOGRAPH-6253 -+ /xf0/x9f/x88/xb2 SQUARED CJK UNIFIED IDEOGRAPH-7981 -+ /xf0/x9f/x88/xb3 SQUARED CJK UNIFIED IDEOGRAPH-7A7A -+ /xf0/x9f/x88/xb4 SQUARED CJK UNIFIED IDEOGRAPH-5408 -+ /xf0/x9f/x88/xb5 SQUARED CJK UNIFIED IDEOGRAPH-6E80 -+ /xf0/x9f/x88/xb6 SQUARED CJK UNIFIED IDEOGRAPH-6709 -+ /xf0/x9f/x88/xb7 SQUARED CJK UNIFIED IDEOGRAPH-6708 -+ /xf0/x9f/x88/xb8 SQUARED CJK UNIFIED IDEOGRAPH-7533 -+ /xf0/x9f/x88/xb9 SQUARED CJK UNIFIED IDEOGRAPH-5272 -+ /xf0/x9f/x88/xba SQUARED CJK UNIFIED IDEOGRAPH-55B6 -+ /xf0/x9f/x89/x80 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C -+ /xf0/x9f/x89/x81 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 -+ /xf0/x9f/x89/x82 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C -+ /xf0/x9f/x89/x83 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 -+ /xf0/x9f/x89/x84 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 -+ /xf0/x9f/x89/x85 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 -+ /xf0/x9f/x89/x86 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 -+ /xf0/x9f/x89/x87 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD -+ /xf0/x9f/x89/x88 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 -+ /xf0/x9f/x89/x90 CIRCLED IDEOGRAPH ADVANTAGE -+ /xf0/x9f/x89/x91 CIRCLED IDEOGRAPH ACCEPT -+ /xf0/x9f/x8c/x80 CYCLONE -+ /xf0/x9f/x8c/x81 FOGGY -+ /xf0/x9f/x8c/x82 CLOSED UMBRELLA -+ /xf0/x9f/x8c/x83 NIGHT WITH STARS -+ /xf0/x9f/x8c/x84 SUNRISE OVER MOUNTAINS -+ /xf0/x9f/x8c/x85 SUNRISE -+ /xf0/x9f/x8c/x86 CITYSCAPE AT DUSK -+ /xf0/x9f/x8c/x87 SUNSET OVER BUILDINGS -+ /xf0/x9f/x8c/x88 RAINBOW -+ /xf0/x9f/x8c/x89 BRIDGE AT NIGHT -+ /xf0/x9f/x8c/x8a WATER WAVE -+ /xf0/x9f/x8c/x8b VOLCANO -+ /xf0/x9f/x8c/x8c MILKY WAY -+ /xf0/x9f/x8c/x8d EARTH GLOBE EUROPE-AFRICA -+ /xf0/x9f/x8c/x8e EARTH GLOBE AMERICAS -+ /xf0/x9f/x8c/x8f EARTH GLOBE ASIA-AUSTRALIA -+ /xf0/x9f/x8c/x90 GLOBE WITH MERIDIANS -+ /xf0/x9f/x8c/x91 NEW MOON SYMBOL -+ /xf0/x9f/x8c/x92 WAXING CRESCENT MOON SYMBOL -+ /xf0/x9f/x8c/x93 FIRST QUARTER MOON SYMBOL -+ /xf0/x9f/x8c/x94 WAXING GIBBOUS MOON SYMBOL -+ /xf0/x9f/x8c/x95 FULL MOON SYMBOL -+ /xf0/x9f/x8c/x96 WANING GIBBOUS MOON SYMBOL -+ /xf0/x9f/x8c/x97 LAST QUARTER MOON SYMBOL -+ /xf0/x9f/x8c/x98 WANING CRESCENT MOON SYMBOL -+ /xf0/x9f/x8c/x99 CRESCENT MOON -+ /xf0/x9f/x8c/x9a NEW MOON WITH FACE -+ /xf0/x9f/x8c/x9b FIRST QUARTER MOON WITH FACE -+ /xf0/x9f/x8c/x9c LAST QUARTER MOON WITH FACE -+ /xf0/x9f/x8c/x9d FULL MOON WITH FACE -+ /xf0/x9f/x8c/x9e SUN WITH FACE -+ /xf0/x9f/x8c/x9f GLOWING STAR -+ /xf0/x9f/x8c/xa0 SHOOTING STAR -+ /xf0/x9f/x8c/xb0 CHESTNUT -+ /xf0/x9f/x8c/xb1 SEEDLING -+ /xf0/x9f/x8c/xb2 EVERGREEN TREE -+ /xf0/x9f/x8c/xb3 DECIDUOUS TREE -+ /xf0/x9f/x8c/xb4 PALM TREE -+ /xf0/x9f/x8c/xb5 CACTUS -+ /xf0/x9f/x8c/xb7 TULIP -+ /xf0/x9f/x8c/xb8 CHERRY BLOSSOM -+ /xf0/x9f/x8c/xb9 ROSE -+ /xf0/x9f/x8c/xba HIBISCUS -+ /xf0/x9f/x8c/xbb SUNFLOWER -+ /xf0/x9f/x8c/xbc BLOSSOM -+ /xf0/x9f/x8c/xbd EAR OF MAIZE -+ /xf0/x9f/x8c/xbe EAR OF RICE -+ /xf0/x9f/x8c/xbf HERB -+ /xf0/x9f/x8d/x80 FOUR LEAF CLOVER -+ /xf0/x9f/x8d/x81 MAPLE LEAF -+ /xf0/x9f/x8d/x82 FALLEN LEAF -+ /xf0/x9f/x8d/x83 LEAF FLUTTERING IN WIND -+ /xf0/x9f/x8d/x84 MUSHROOM -+ /xf0/x9f/x8d/x85 TOMATO -+ /xf0/x9f/x8d/x86 AUBERGINE -+ /xf0/x9f/x8d/x87 GRAPES -+ /xf0/x9f/x8d/x88 MELON -+ /xf0/x9f/x8d/x89 WATERMELON -+ /xf0/x9f/x8d/x8a TANGERINE -+ /xf0/x9f/x8d/x8b LEMON -+ /xf0/x9f/x8d/x8c BANANA -+ /xf0/x9f/x8d/x8d PINEAPPLE -+ /xf0/x9f/x8d/x8e RED APPLE -+ /xf0/x9f/x8d/x8f GREEN APPLE -+ /xf0/x9f/x8d/x90 PEAR -+ /xf0/x9f/x8d/x91 PEACH -+ /xf0/x9f/x8d/x92 CHERRIES -+ /xf0/x9f/x8d/x93 STRAWBERRY -+ /xf0/x9f/x8d/x94 HAMBURGER -+ /xf0/x9f/x8d/x95 SLICE OF PIZZA -+ /xf0/x9f/x8d/x96 MEAT ON BONE -+ /xf0/x9f/x8d/x97 POULTRY LEG -+ /xf0/x9f/x8d/x98 RICE CRACKER -+ /xf0/x9f/x8d/x99 RICE BALL -+ /xf0/x9f/x8d/x9a COOKED RICE -+ /xf0/x9f/x8d/x9b CURRY AND RICE -+ /xf0/x9f/x8d/x9c STEAMING BOWL -+ /xf0/x9f/x8d/x9d SPAGHETTI -+ /xf0/x9f/x8d/x9e BREAD -+ /xf0/x9f/x8d/x9f FRENCH FRIES -+ /xf0/x9f/x8d/xa0 ROASTED SWEET POTATO -+ /xf0/x9f/x8d/xa1 DANGO -+ /xf0/x9f/x8d/xa2 ODEN -+ /xf0/x9f/x8d/xa3 SUSHI -+ /xf0/x9f/x8d/xa4 FRIED SHRIMP -+ /xf0/x9f/x8d/xa5 FISH CAKE WITH SWIRL DESIGN -+ /xf0/x9f/x8d/xa6 SOFT ICE CREAM -+ /xf0/x9f/x8d/xa7 SHAVED ICE -+ /xf0/x9f/x8d/xa8 ICE CREAM -+ /xf0/x9f/x8d/xa9 DOUGHNUT -+ /xf0/x9f/x8d/xaa COOKIE -+ /xf0/x9f/x8d/xab CHOCOLATE BAR -+ /xf0/x9f/x8d/xac CANDY -+ /xf0/x9f/x8d/xad LOLLIPOP -+ /xf0/x9f/x8d/xae CUSTARD -+ /xf0/x9f/x8d/xaf HONEY POT -+ /xf0/x9f/x8d/xb0 SHORTCAKE -+ /xf0/x9f/x8d/xb1 BENTO BOX -+ /xf0/x9f/x8d/xb2 POT OF FOOD -+ /xf0/x9f/x8d/xb3 COOKING -+ /xf0/x9f/x8d/xb4 FORK AND KNIFE -+ /xf0/x9f/x8d/xb5 TEACUP WITHOUT HANDLE -+ /xf0/x9f/x8d/xb6 SAKE BOTTLE AND CUP -+ /xf0/x9f/x8d/xb7 WINE GLASS -+ /xf0/x9f/x8d/xb8 COCKTAIL GLASS -+ /xf0/x9f/x8d/xb9 TROPICAL DRINK -+ /xf0/x9f/x8d/xba BEER MUG -+ /xf0/x9f/x8d/xbb CLINKING BEER MUGS -+ /xf0/x9f/x8d/xbc BABY BOTTLE -+ /xf0/x9f/x8e/x80 RIBBON -+ /xf0/x9f/x8e/x81 WRAPPED PRESENT -+ /xf0/x9f/x8e/x82 BIRTHDAY CAKE -+ /xf0/x9f/x8e/x83 JACK-O-LANTERN -+ /xf0/x9f/x8e/x84 CHRISTMAS TREE -+ /xf0/x9f/x8e/x85 FATHER CHRISTMAS -+ /xf0/x9f/x8e/x86 FIREWORKS -+ /xf0/x9f/x8e/x87 FIREWORK SPARKLER -+ /xf0/x9f/x8e/x88 BALLOON -+ /xf0/x9f/x8e/x89 PARTY POPPER -+ /xf0/x9f/x8e/x8a CONFETTI BALL -+ /xf0/x9f/x8e/x8b TANABATA TREE -+ /xf0/x9f/x8e/x8c CROSSED FLAGS -+ /xf0/x9f/x8e/x8d PINE DECORATION -+ /xf0/x9f/x8e/x8e JAPANESE DOLLS -+ /xf0/x9f/x8e/x8f CARP STREAMER -+ /xf0/x9f/x8e/x90 WIND CHIME -+ /xf0/x9f/x8e/x91 MOON VIEWING CEREMONY -+ /xf0/x9f/x8e/x92 SCHOOL SATCHEL -+ /xf0/x9f/x8e/x93 GRADUATION CAP -+ /xf0/x9f/x8e/xa0 CAROUSEL HORSE -+ /xf0/x9f/x8e/xa1 FERRIS WHEEL -+ /xf0/x9f/x8e/xa2 ROLLER COASTER -+ /xf0/x9f/x8e/xa3 FISHING POLE AND FISH -+ /xf0/x9f/x8e/xa4 MICROPHONE -+ /xf0/x9f/x8e/xa5 MOVIE CAMERA -+ /xf0/x9f/x8e/xa6 CINEMA -+ /xf0/x9f/x8e/xa7 HEADPHONE -+ /xf0/x9f/x8e/xa8 ARTIST PALETTE -+ /xf0/x9f/x8e/xa9 TOP HAT -+ /xf0/x9f/x8e/xaa CIRCUS TENT -+ /xf0/x9f/x8e/xab TICKET -+ /xf0/x9f/x8e/xac CLAPPER BOARD -+ /xf0/x9f/x8e/xad PERFORMING ARTS -+ /xf0/x9f/x8e/xae VIDEO GAME -+ /xf0/x9f/x8e/xaf DIRECT HIT -+ /xf0/x9f/x8e/xb0 SLOT MACHINE -+ /xf0/x9f/x8e/xb1 BILLIARDS -+ /xf0/x9f/x8e/xb2 GAME DIE -+ /xf0/x9f/x8e/xb3 BOWLING -+ /xf0/x9f/x8e/xb4 FLOWER PLAYING CARDS -+ /xf0/x9f/x8e/xb5 MUSICAL NOTE -+ /xf0/x9f/x8e/xb6 MULTIPLE MUSICAL NOTES -+ /xf0/x9f/x8e/xb7 SAXOPHONE -+ /xf0/x9f/x8e/xb8 GUITAR -+ /xf0/x9f/x8e/xb9 MUSICAL KEYBOARD -+ /xf0/x9f/x8e/xba TRUMPET -+ /xf0/x9f/x8e/xbb VIOLIN -+ /xf0/x9f/x8e/xbc MUSICAL SCORE -+ /xf0/x9f/x8e/xbd RUNNING SHIRT WITH SASH -+ /xf0/x9f/x8e/xbe TENNIS RACQUET AND BALL -+ /xf0/x9f/x8e/xbf SKI AND SKI BOOT -+ /xf0/x9f/x8f/x80 BASKETBALL AND HOOP -+ /xf0/x9f/x8f/x81 CHEQUERED FLAG -+ /xf0/x9f/x8f/x82 SNOWBOARDER -+ /xf0/x9f/x8f/x83 RUNNER -+ /xf0/x9f/x8f/x84 SURFER -+ /xf0/x9f/x8f/x86 TROPHY -+ /xf0/x9f/x8f/x87 HORSE RACING -+ /xf0/x9f/x8f/x88 AMERICAN FOOTBALL -+ /xf0/x9f/x8f/x89 RUGBY FOOTBALL -+ /xf0/x9f/x8f/x8a SWIMMER -+ /xf0/x9f/x8f/xa0 HOUSE BUILDING -+ /xf0/x9f/x8f/xa1 HOUSE WITH GARDEN -+ /xf0/x9f/x8f/xa2 OFFICE BUILDING -+ /xf0/x9f/x8f/xa3 JAPANESE POST OFFICE -+ /xf0/x9f/x8f/xa4 EUROPEAN POST OFFICE -+ /xf0/x9f/x8f/xa5 HOSPITAL -+ /xf0/x9f/x8f/xa6 BANK -+ /xf0/x9f/x8f/xa7 AUTOMATED TELLER MACHINE -+ /xf0/x9f/x8f/xa8 HOTEL -+ /xf0/x9f/x8f/xa9 LOVE HOTEL -+ /xf0/x9f/x8f/xaa CONVENIENCE STORE -+ /xf0/x9f/x8f/xab SCHOOL -+ /xf0/x9f/x8f/xac DEPARTMENT STORE -+ /xf0/x9f/x8f/xad FACTORY -+ /xf0/x9f/x8f/xae IZAKAYA LANTERN -+ /xf0/x9f/x8f/xaf JAPANESE CASTLE -+ /xf0/x9f/x8f/xb0 EUROPEAN CASTLE -+ /xf0/x9f/x90/x80 RAT -+ /xf0/x9f/x90/x81 MOUSE -+ /xf0/x9f/x90/x82 OX -+ /xf0/x9f/x90/x83 WATER BUFFALO -+ /xf0/x9f/x90/x84 COW -+ /xf0/x9f/x90/x85 TIGER -+ /xf0/x9f/x90/x86 LEOPARD -+ /xf0/x9f/x90/x87 RABBIT -+ /xf0/x9f/x90/x88 CAT -+ /xf0/x9f/x90/x89 DRAGON -+ /xf0/x9f/x90/x8a CROCODILE -+ /xf0/x9f/x90/x8b WHALE -+ /xf0/x9f/x90/x8c SNAIL -+ /xf0/x9f/x90/x8d SNAKE -+ /xf0/x9f/x90/x8e HORSE -+ /xf0/x9f/x90/x8f RAM -+ /xf0/x9f/x90/x90 GOAT -+ /xf0/x9f/x90/x91 SHEEP -+ /xf0/x9f/x90/x92 MONKEY -+ /xf0/x9f/x90/x93 ROOSTER -+ /xf0/x9f/x90/x94 CHICKEN -+ /xf0/x9f/x90/x95 DOG -+ /xf0/x9f/x90/x96 PIG -+ /xf0/x9f/x90/x97 BOAR -+ /xf0/x9f/x90/x98 ELEPHANT -+ /xf0/x9f/x90/x99 OCTOPUS -+ /xf0/x9f/x90/x9a SPIRAL SHELL -+ /xf0/x9f/x90/x9b BUG -+ /xf0/x9f/x90/x9c ANT -+ /xf0/x9f/x90/x9d HONEYBEE -+ /xf0/x9f/x90/x9e LADY BEETLE -+ /xf0/x9f/x90/x9f FISH -+ /xf0/x9f/x90/xa0 TROPICAL FISH -+ /xf0/x9f/x90/xa1 BLOWFISH -+ /xf0/x9f/x90/xa2 TURTLE -+ /xf0/x9f/x90/xa3 HATCHING CHICK -+ /xf0/x9f/x90/xa4 BABY CHICK -+ /xf0/x9f/x90/xa5 FRONT-FACING BABY CHICK -+ /xf0/x9f/x90/xa6 BIRD -+ /xf0/x9f/x90/xa7 PENGUIN -+ /xf0/x9f/x90/xa8 KOALA -+ /xf0/x9f/x90/xa9 POODLE -+ /xf0/x9f/x90/xaa DROMEDARY CAMEL -+ /xf0/x9f/x90/xab BACTRIAN CAMEL -+ /xf0/x9f/x90/xac DOLPHIN -+ /xf0/x9f/x90/xad MOUSE FACE -+ /xf0/x9f/x90/xae COW FACE -+ /xf0/x9f/x90/xaf TIGER FACE -+ /xf0/x9f/x90/xb0 RABBIT FACE -+ /xf0/x9f/x90/xb1 CAT FACE -+ /xf0/x9f/x90/xb2 DRAGON FACE -+ /xf0/x9f/x90/xb3 SPOUTING WHALE -+ /xf0/x9f/x90/xb4 HORSE FACE -+ /xf0/x9f/x90/xb5 MONKEY FACE -+ /xf0/x9f/x90/xb6 DOG FACE -+ /xf0/x9f/x90/xb7 PIG FACE -+ /xf0/x9f/x90/xb8 FROG FACE -+ /xf0/x9f/x90/xb9 HAMSTER FACE -+ /xf0/x9f/x90/xba WOLF FACE -+ /xf0/x9f/x90/xbb BEAR FACE -+ /xf0/x9f/x90/xbc PANDA FACE -+ /xf0/x9f/x90/xbd PIG NOSE -+ /xf0/x9f/x90/xbe PAW PRINTS -+ /xf0/x9f/x91/x80 EYES -+ /xf0/x9f/x91/x82 EAR -+ /xf0/x9f/x91/x83 NOSE -+ /xf0/x9f/x91/x84 MOUTH -+ /xf0/x9f/x91/x85 TONGUE -+ /xf0/x9f/x91/x86 WHITE UP POINTING BACKHAND INDEX -+ /xf0/x9f/x91/x87 WHITE DOWN POINTING BACKHAND INDEX -+ /xf0/x9f/x91/x88 WHITE LEFT POINTING BACKHAND INDEX -+ /xf0/x9f/x91/x89 WHITE RIGHT POINTING BACKHAND INDEX -+ /xf0/x9f/x91/x8a FISTED HAND SIGN -+ /xf0/x9f/x91/x8b WAVING HAND SIGN -+ /xf0/x9f/x91/x8c OK HAND SIGN -+ /xf0/x9f/x91/x8d THUMBS UP SIGN -+ /xf0/x9f/x91/x8e THUMBS DOWN SIGN -+ /xf0/x9f/x91/x8f CLAPPING HANDS SIGN -+ /xf0/x9f/x91/x90 OPEN HANDS SIGN -+ /xf0/x9f/x91/x91 CROWN -+ /xf0/x9f/x91/x92 WOMANS HAT -+ /xf0/x9f/x91/x93 EYEGLASSES -+ /xf0/x9f/x91/x94 NECKTIE -+ /xf0/x9f/x91/x95 T-SHIRT -+ /xf0/x9f/x91/x96 JEANS -+ /xf0/x9f/x91/x97 DRESS -+ /xf0/x9f/x91/x98 KIMONO -+ /xf0/x9f/x91/x99 BIKINI -+ /xf0/x9f/x91/x9a WOMANS CLOTHES -+ /xf0/x9f/x91/x9b PURSE -+ /xf0/x9f/x91/x9c HANDBAG -+ /xf0/x9f/x91/x9d POUCH -+ /xf0/x9f/x91/x9e MANS SHOE -+ /xf0/x9f/x91/x9f ATHLETIC SHOE -+ /xf0/x9f/x91/xa0 HIGH-HEELED SHOE -+ /xf0/x9f/x91/xa1 WOMANS SANDAL -+ /xf0/x9f/x91/xa2 WOMANS BOOTS -+ /xf0/x9f/x91/xa3 FOOTPRINTS -+ /xf0/x9f/x91/xa4 BUST IN SILHOUETTE -+ /xf0/x9f/x91/xa5 BUSTS IN SILHOUETTE -+ /xf0/x9f/x91/xa6 BOY -+ /xf0/x9f/x91/xa7 GIRL -+ /xf0/x9f/x91/xa8 MAN -+ /xf0/x9f/x91/xa9 WOMAN -+ /xf0/x9f/x91/xaa FAMILY -+ /xf0/x9f/x91/xab MAN AND WOMAN HOLDING HANDS -+ /xf0/x9f/x91/xac TWO MEN HOLDING HANDS -+ /xf0/x9f/x91/xad TWO WOMEN HOLDING HANDS -+ /xf0/x9f/x91/xae POLICE OFFICER -+ /xf0/x9f/x91/xaf WOMAN WITH BUNNY EARS -+ /xf0/x9f/x91/xb0 BRIDE WITH VEIL -+ /xf0/x9f/x91/xb1 PERSON WITH BLOND HAIR -+ /xf0/x9f/x91/xb2 MAN WITH GUA PI MAO -+ /xf0/x9f/x91/xb3 MAN WITH TURBAN -+ /xf0/x9f/x91/xb4 OLDER MAN -+ /xf0/x9f/x91/xb5 OLDER WOMAN -+ /xf0/x9f/x91/xb6 BABY -+ /xf0/x9f/x91/xb7 CONSTRUCTION WORKER -+ /xf0/x9f/x91/xb8 PRINCESS -+ /xf0/x9f/x91/xb9 JAPANESE OGRE -+ /xf0/x9f/x91/xba JAPANESE GOBLIN -+ /xf0/x9f/x91/xbb GHOST -+ /xf0/x9f/x91/xbc BABY ANGEL -+ /xf0/x9f/x91/xbd EXTRATERRESTRIAL ALIEN -+ /xf0/x9f/x91/xbe ALIEN MONSTER -+ /xf0/x9f/x91/xbf IMP -+ /xf0/x9f/x92/x80 SKULL -+ /xf0/x9f/x92/x81 INFORMATION DESK PERSON -+ /xf0/x9f/x92/x82 GUARDSMAN -+ /xf0/x9f/x92/x83 DANCER -+ /xf0/x9f/x92/x84 LIPSTICK -+ /xf0/x9f/x92/x85 NAIL POLISH -+ /xf0/x9f/x92/x86 FACE MASSAGE -+ /xf0/x9f/x92/x87 HAIRCUT -+ /xf0/x9f/x92/x88 BARBER POLE -+ /xf0/x9f/x92/x89 SYRINGE -+ /xf0/x9f/x92/x8a PILL -+ /xf0/x9f/x92/x8b KISS MARK -+ /xf0/x9f/x92/x8c LOVE LETTER -+ /xf0/x9f/x92/x8d RING -+ /xf0/x9f/x92/x8e GEM STONE -+ /xf0/x9f/x92/x8f KISS -+ /xf0/x9f/x92/x90 BOUQUET -+ /xf0/x9f/x92/x91 COUPLE WITH HEART -+ /xf0/x9f/x92/x92 WEDDING -+ /xf0/x9f/x92/x93 BEATING HEART -+ /xf0/x9f/x92/x94 BROKEN HEART -+ /xf0/x9f/x92/x95 TWO HEARTS -+ /xf0/x9f/x92/x96 SPARKLING HEART -+ /xf0/x9f/x92/x97 GROWING HEART -+ /xf0/x9f/x92/x98 HEART WITH ARROW -+ /xf0/x9f/x92/x99 BLUE HEART -+ /xf0/x9f/x92/x9a GREEN HEART -+ /xf0/x9f/x92/x9b YELLOW HEART -+ /xf0/x9f/x92/x9c PURPLE HEART -+ /xf0/x9f/x92/x9d HEART WITH RIBBON -+ /xf0/x9f/x92/x9e REVOLVING HEARTS -+ /xf0/x9f/x92/x9f HEART DECORATION -+ /xf0/x9f/x92/xa0 DIAMOND SHAPE WITH A DOT INSIDE -+ /xf0/x9f/x92/xa1 ELECTRIC LIGHT BULB -+ /xf0/x9f/x92/xa2 ANGER SYMBOL -+ /xf0/x9f/x92/xa3 BOMB -+ /xf0/x9f/x92/xa4 SLEEPING SYMBOL -+ /xf0/x9f/x92/xa5 COLLISION SYMBOL -+ /xf0/x9f/x92/xa6 SPLASHING SWEAT SYMBOL -+ /xf0/x9f/x92/xa7 DROPLET -+ /xf0/x9f/x92/xa8 DASH SYMBOL -+ /xf0/x9f/x92/xa9 PILE OF POO -+ /xf0/x9f/x92/xaa FLEXED BICEPS -+ /xf0/x9f/x92/xab DIZZY SYMBOL -+ /xf0/x9f/x92/xac SPEECH BALLOON -+ /xf0/x9f/x92/xad THOUGHT BALLOON -+ /xf0/x9f/x92/xae WHITE FLOWER -+ /xf0/x9f/x92/xaf HUNDRED POINTS SYMBOL -+ /xf0/x9f/x92/xb0 MONEY BAG -+ /xf0/x9f/x92/xb1 CURRENCY EXCHANGE -+ /xf0/x9f/x92/xb2 HEAVY DOLLAR SIGN -+ /xf0/x9f/x92/xb3 CREDIT CARD -+ /xf0/x9f/x92/xb4 BANKNOTE WITH YEN SIGN -+ /xf0/x9f/x92/xb5 BANKNOTE WITH DOLLAR SIGN -+ /xf0/x9f/x92/xb6 BANKNOTE WITH EURO SIGN -+ /xf0/x9f/x92/xb7 BANKNOTE WITH POUND SIGN -+ /xf0/x9f/x92/xb8 MONEY WITH WINGS -+ /xf0/x9f/x92/xb9 CHART WITH UPWARDS TREND AND YEN SIGN -+ /xf0/x9f/x92/xba SEAT -+ /xf0/x9f/x92/xbb PERSONAL COMPUTER -+ /xf0/x9f/x92/xbc BRIEFCASE -+ /xf0/x9f/x92/xbd MINIDISC -+ /xf0/x9f/x92/xbe FLOPPY DISK -+ /xf0/x9f/x92/xbf OPTICAL DISC -+ /xf0/x9f/x93/x80 DVD -+ /xf0/x9f/x93/x81 FILE FOLDER -+ /xf0/x9f/x93/x82 OPEN FILE FOLDER -+ /xf0/x9f/x93/x83 PAGE WITH CURL -+ /xf0/x9f/x93/x84 PAGE FACING UP -+ /xf0/x9f/x93/x85 CALENDAR -+ /xf0/x9f/x93/x86 TEAR-OFF CALENDAR -+ /xf0/x9f/x93/x87 CARD INDEX -+ /xf0/x9f/x93/x88 CHART WITH UPWARDS TREND -+ /xf0/x9f/x93/x89 CHART WITH DOWNWARDS TREND -+ /xf0/x9f/x93/x8a BAR CHART -+ /xf0/x9f/x93/x8b CLIPBOARD -+ /xf0/x9f/x93/x8c PUSHPIN -+ /xf0/x9f/x93/x8d ROUND PUSHPIN -+ /xf0/x9f/x93/x8e PAPERCLIP -+ /xf0/x9f/x93/x8f STRAIGHT RULER -+ /xf0/x9f/x93/x90 TRIANGULAR RULER -+ /xf0/x9f/x93/x91 BOOKMARK TABS -+ /xf0/x9f/x93/x92 LEDGER -+ /xf0/x9f/x93/x93 NOTEBOOK -+ /xf0/x9f/x93/x94 NOTEBOOK WITH DECORATIVE COVER -+ /xf0/x9f/x93/x95 CLOSED BOOK -+ /xf0/x9f/x93/x96 OPEN BOOK -+ /xf0/x9f/x93/x97 GREEN BOOK -+ /xf0/x9f/x93/x98 BLUE BOOK -+ /xf0/x9f/x93/x99 ORANGE BOOK -+ /xf0/x9f/x93/x9a BOOKS -+ /xf0/x9f/x93/x9b NAME BADGE -+ /xf0/x9f/x93/x9c SCROLL -+ /xf0/x9f/x93/x9d MEMO -+ /xf0/x9f/x93/x9e TELEPHONE RECEIVER -+ /xf0/x9f/x93/x9f PAGER -+ /xf0/x9f/x93/xa0 FAX MACHINE -+ /xf0/x9f/x93/xa1 SATELLITE ANTENNA -+ /xf0/x9f/x93/xa2 PUBLIC ADDRESS LOUDSPEAKER -+ /xf0/x9f/x93/xa3 CHEERING MEGAPHONE -+ /xf0/x9f/x93/xa4 OUTBOX TRAY -+ /xf0/x9f/x93/xa5 INBOX TRAY -+ /xf0/x9f/x93/xa6 PACKAGE -+ /xf0/x9f/x93/xa7 E-MAIL SYMBOL -+ /xf0/x9f/x93/xa8 INCOMING ENVELOPE -+ /xf0/x9f/x93/xa9 ENVELOPE WITH DOWNWARDS ARROW ABOVE -+ /xf0/x9f/x93/xaa CLOSED MAILBOX WITH LOWERED FLAG -+ /xf0/x9f/x93/xab CLOSED MAILBOX WITH RAISED FLAG -+ /xf0/x9f/x93/xac OPEN MAILBOX WITH RAISED FLAG -+ /xf0/x9f/x93/xad OPEN MAILBOX WITH LOWERED FLAG -+ /xf0/x9f/x93/xae POSTBOX -+ /xf0/x9f/x93/xaf POSTAL HORN -+ /xf0/x9f/x93/xb0 NEWSPAPER -+ /xf0/x9f/x93/xb1 MOBILE PHONE -+ /xf0/x9f/x93/xb2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT -+ /xf0/x9f/x93/xb3 VIBRATION MODE -+ /xf0/x9f/x93/xb4 MOBILE PHONE OFF -+ /xf0/x9f/x93/xb5 NO MOBILE PHONES -+ /xf0/x9f/x93/xb6 ANTENNA WITH BARS -+ /xf0/x9f/x93/xb7 CAMERA -+ /xf0/x9f/x93/xb9 VIDEO CAMERA -+ /xf0/x9f/x93/xba TELEVISION -+ /xf0/x9f/x93/xbb RADIO -+ /xf0/x9f/x93/xbc VIDEOCASSETTE -+ /xf0/x9f/x94/x80 TWISTED RIGHTWARDS ARROWS -+ /xf0/x9f/x94/x81 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS -+ /xf0/x9f/x94/x82 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY -+ /xf0/x9f/x94/x83 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -+ /xf0/x9f/x94/x84 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -+ /xf0/x9f/x94/x85 LOW BRIGHTNESS SYMBOL -+ /xf0/x9f/x94/x86 HIGH BRIGHTNESS SYMBOL -+ /xf0/x9f/x94/x87 SPEAKER WITH CANCELLATION STROKE -+ /xf0/x9f/x94/x88 SPEAKER -+ /xf0/x9f/x94/x89 SPEAKER WITH ONE SOUND WAVE -+ /xf0/x9f/x94/x8a SPEAKER WITH THREE SOUND WAVES -+ /xf0/x9f/x94/x8b BATTERY -+ /xf0/x9f/x94/x8c ELECTRIC PLUG -+ /xf0/x9f/x94/x8d LEFT-POINTING MAGNIFYING GLASS -+ /xf0/x9f/x94/x8e RIGHT-POINTING MAGNIFYING GLASS -+ /xf0/x9f/x94/x8f LOCK WITH INK PEN -+ /xf0/x9f/x94/x90 CLOSED LOCK WITH KEY -+ /xf0/x9f/x94/x91 KEY -+ /xf0/x9f/x94/x92 LOCK -+ /xf0/x9f/x94/x93 OPEN LOCK -+ /xf0/x9f/x94/x94 BELL -+ /xf0/x9f/x94/x95 BELL WITH CANCELLATION STROKE -+ /xf0/x9f/x94/x96 BOOKMARK -+ /xf0/x9f/x94/x97 LINK SYMBOL -+ /xf0/x9f/x94/x98 RADIO BUTTON -+ /xf0/x9f/x94/x99 BACK WITH LEFTWARDS ARROW ABOVE -+ /xf0/x9f/x94/x9a END WITH LEFTWARDS ARROW ABOVE -+ /xf0/x9f/x94/x9b ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE -+ /xf0/x9f/x94/x9c SOON WITH RIGHTWARDS ARROW ABOVE -+ /xf0/x9f/x94/x9d TOP WITH UPWARDS ARROW ABOVE -+ /xf0/x9f/x94/x9e NO ONE UNDER EIGHTEEN SYMBOL -+ /xf0/x9f/x94/x9f KEYCAP TEN -+ /xf0/x9f/x94/xa0 INPUT SYMBOL FOR LATIN CAPITAL LETTERS -+ /xf0/x9f/x94/xa1 INPUT SYMBOL FOR LATIN SMALL LETTERS -+ /xf0/x9f/x94/xa2 INPUT SYMBOL FOR NUMBERS -+ /xf0/x9f/x94/xa3 INPUT SYMBOL FOR SYMBOLS -+ /xf0/x9f/x94/xa4 INPUT SYMBOL FOR LATIN LETTERS -+ /xf0/x9f/x94/xa5 FIRE -+ /xf0/x9f/x94/xa6 ELECTRIC TORCH -+ /xf0/x9f/x94/xa7 WRENCH -+ /xf0/x9f/x94/xa8 HAMMER -+ /xf0/x9f/x94/xa9 NUT AND BOLT -+ /xf0/x9f/x94/xaa HOCHO -+ /xf0/x9f/x94/xab PISTOL -+ /xf0/x9f/x94/xac MICROSCOPE -+ /xf0/x9f/x94/xad TELESCOPE -+ /xf0/x9f/x94/xae CRYSTAL BALL -+ /xf0/x9f/x94/xaf SIX POINTED STAR WITH MIDDLE DOT -+ /xf0/x9f/x94/xb0 JAPANESE SYMBOL FOR BEGINNER -+ /xf0/x9f/x94/xb1 TRIDENT EMBLEM -+ /xf0/x9f/x94/xb2 BLACK SQUARE BUTTON -+ /xf0/x9f/x94/xb3 WHITE SQUARE BUTTON -+ /xf0/x9f/x94/xb4 LARGE RED CIRCLE -+ /xf0/x9f/x94/xb5 LARGE BLUE CIRCLE -+ /xf0/x9f/x94/xb6 LARGE ORANGE DIAMOND -+ /xf0/x9f/x94/xb7 LARGE BLUE DIAMOND -+ /xf0/x9f/x94/xb8 SMALL ORANGE DIAMOND -+ /xf0/x9f/x94/xb9 SMALL BLUE DIAMOND -+ /xf0/x9f/x94/xba UP-POINTING RED TRIANGLE -+ /xf0/x9f/x94/xbb DOWN-POINTING RED TRIANGLE -+ /xf0/x9f/x94/xbc UP-POINTING SMALL RED TRIANGLE -+ /xf0/x9f/x94/xbd DOWN-POINTING SMALL RED TRIANGLE -+ /xf0/x9f/x95/x90 CLOCK FACE ONE OCLOCK -+ /xf0/x9f/x95/x91 CLOCK FACE TWO OCLOCK -+ /xf0/x9f/x95/x92 CLOCK FACE THREE OCLOCK -+ /xf0/x9f/x95/x93 CLOCK FACE FOUR OCLOCK -+ /xf0/x9f/x95/x94 CLOCK FACE FIVE OCLOCK -+ /xf0/x9f/x95/x95 CLOCK FACE SIX OCLOCK -+ /xf0/x9f/x95/x96 CLOCK FACE SEVEN OCLOCK -+ /xf0/x9f/x95/x97 CLOCK FACE EIGHT OCLOCK -+ /xf0/x9f/x95/x98 CLOCK FACE NINE OCLOCK -+ /xf0/x9f/x95/x99 CLOCK FACE TEN OCLOCK -+ /xf0/x9f/x95/x9a CLOCK FACE ELEVEN OCLOCK -+ /xf0/x9f/x95/x9b CLOCK FACE TWELVE OCLOCK -+ /xf0/x9f/x95/x9c CLOCK FACE ONE-THIRTY -+ /xf0/x9f/x95/x9d CLOCK FACE TWO-THIRTY -+ /xf0/x9f/x95/x9e CLOCK FACE THREE-THIRTY -+ /xf0/x9f/x95/x9f CLOCK FACE FOUR-THIRTY -+ /xf0/x9f/x95/xa0 CLOCK FACE FIVE-THIRTY -+ /xf0/x9f/x95/xa1 CLOCK FACE SIX-THIRTY -+ /xf0/x9f/x95/xa2 CLOCK FACE SEVEN-THIRTY -+ /xf0/x9f/x95/xa3 CLOCK FACE EIGHT-THIRTY -+ /xf0/x9f/x95/xa4 CLOCK FACE NINE-THIRTY -+ /xf0/x9f/x95/xa5 CLOCK FACE TEN-THIRTY -+ /xf0/x9f/x95/xa6 CLOCK FACE ELEVEN-THIRTY -+ /xf0/x9f/x95/xa7 CLOCK FACE TWELVE-THIRTY -+ /xf0/x9f/x97/xbb MOUNT FUJI -+ /xf0/x9f/x97/xbc TOKYO TOWER -+ /xf0/x9f/x97/xbd STATUE OF LIBERTY -+ /xf0/x9f/x97/xbe SILHOUETTE OF JAPAN -+ /xf0/x9f/x97/xbf MOYAI -+ /xf0/x9f/x98/x81 GRINNING FACE WITH SMILING EYES -+ /xf0/x9f/x98/x82 FACE WITH TEARS OF JOY -+ /xf0/x9f/x98/x83 SMILING FACE WITH OPEN MOUTH -+ /xf0/x9f/x98/x84 SMILING FACE WITH OPEN MOUTH AND SMILING EYES -+ /xf0/x9f/x98/x85 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT -+ /xf0/x9f/x98/x86 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES -+ /xf0/x9f/x98/x87 SMILING FACE WITH HALO -+ /xf0/x9f/x98/x88 SMILING FACE WITH HORNS -+ /xf0/x9f/x98/x89 WINKING FACE -+ /xf0/x9f/x98/x8a SMILING FACE WITH SMILING EYES -+ /xf0/x9f/x98/x8b FACE SAVOURING DELICIOUS FOOD -+ /xf0/x9f/x98/x8c RELIEVED FACE -+ /xf0/x9f/x98/x8d SMILING FACE WITH HEART-SHAPED EYES -+ /xf0/x9f/x98/x8e SMILING FACE WITH SUNGLASSES -+ /xf0/x9f/x98/x8f SMIRKING FACE -+ /xf0/x9f/x98/x90 NEUTRAL FACE -+ /xf0/x9f/x98/x92 UNAMUSED FACE -+ /xf0/x9f/x98/x93 FACE WITH COLD SWEAT -+ /xf0/x9f/x98/x94 PENSIVE FACE -+ /xf0/x9f/x98/x96 CONFOUNDED FACE -+ /xf0/x9f/x98/x98 FACE THROWING A KISS -+ /xf0/x9f/x98/x9a KISSING FACE WITH CLOSED EYES -+ /xf0/x9f/x98/x9c FACE WITH STUCK-OUT TONGUE AND WINKING EYE -+ /xf0/x9f/x98/x9d FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES -+ /xf0/x9f/x98/x9e DISAPPOINTED FACE -+ /xf0/x9f/x98/xa0 ANGRY FACE -+ /xf0/x9f/x98/xa1 POUTING FACE -+ /xf0/x9f/x98/xa2 CRYING FACE -+ /xf0/x9f/x98/xa3 PERSEVERING FACE -+ /xf0/x9f/x98/xa4 FACE WITH LOOK OF TRIUMPH -+ /xf0/x9f/x98/xa5 DISAPPOINTED BUT RELIEVED FACE -+ /xf0/x9f/x98/xa8 FEARFUL FACE -+ /xf0/x9f/x98/xa9 WEARY FACE -+ /xf0/x9f/x98/xaa SLEEPY FACE -+ /xf0/x9f/x98/xab TIRED FACE -+ /xf0/x9f/x98/xad LOUDLY CRYING FACE -+ /xf0/x9f/x98/xb0 FACE WITH OPEN MOUTH AND COLD SWEAT -+ /xf0/x9f/x98/xb1 FACE SCREAMING IN FEAR -+ /xf0/x9f/x98/xb2 ASTONISHED FACE -+ /xf0/x9f/x98/xb3 FLUSHED FACE -+ /xf0/x9f/x98/xb5 DIZZY FACE -+ /xf0/x9f/x98/xb6 FACE WITHOUT MOUTH -+ /xf0/x9f/x98/xb7 FACE WITH MEDICAL MASK -+ /xf0/x9f/x98/xb8 GRINNING CAT FACE WITH SMILING EYES -+ /xf0/x9f/x98/xb9 CAT FACE WITH TEARS OF JOY -+ /xf0/x9f/x98/xba SMILING CAT FACE WITH OPEN MOUTH -+ /xf0/x9f/x98/xbb SMILING CAT FACE WITH HEART-SHAPED EYES -+ /xf0/x9f/x98/xbc CAT FACE WITH WRY SMILE -+ /xf0/x9f/x98/xbd KISSING CAT FACE WITH CLOSED EYES -+ /xf0/x9f/x98/xbe POUTING CAT FACE -+ /xf0/x9f/x98/xbf CRYING CAT FACE -+ /xf0/x9f/x99/x80 WEARY CAT FACE -+ /xf0/x9f/x99/x85 FACE WITH NO GOOD GESTURE -+ /xf0/x9f/x99/x86 FACE WITH OK GESTURE -+ /xf0/x9f/x99/x87 PERSON BOWING DEEPLY -+ /xf0/x9f/x99/x88 SEE-NO-EVIL MONKEY -+ /xf0/x9f/x99/x89 HEAR-NO-EVIL MONKEY -+ /xf0/x9f/x99/x8a SPEAK-NO-EVIL MONKEY -+ /xf0/x9f/x99/x8b HAPPY PERSON RAISING ONE HAND -+ /xf0/x9f/x99/x8c PERSON RAISING BOTH HANDS IN CELEBRATION -+ /xf0/x9f/x99/x8d PERSON FROWNING -+ /xf0/x9f/x99/x8e PERSON WITH POUTING FACE -+ /xf0/x9f/x99/x8f PERSON WITH FOLDED HANDS -+ /xf0/x9f/x9a/x80 ROCKET -+ /xf0/x9f/x9a/x81 HELICOPTER -+ /xf0/x9f/x9a/x82 STEAM LOCOMOTIVE -+ /xf0/x9f/x9a/x83 RAILWAY CAR -+ /xf0/x9f/x9a/x84 HIGH-SPEED TRAIN -+ /xf0/x9f/x9a/x85 HIGH-SPEED TRAIN WITH BULLET NOSE -+ /xf0/x9f/x9a/x86 TRAIN -+ /xf0/x9f/x9a/x87 METRO -+ /xf0/x9f/x9a/x88 LIGHT RAIL -+ /xf0/x9f/x9a/x89 STATION -+ /xf0/x9f/x9a/x8a TRAM -+ /xf0/x9f/x9a/x8b TRAM CAR -+ /xf0/x9f/x9a/x8c BUS -+ /xf0/x9f/x9a/x8d ONCOMING BUS -+ /xf0/x9f/x9a/x8e TROLLEYBUS -+ /xf0/x9f/x9a/x8f BUS STOP -+ /xf0/x9f/x9a/x90 MINIBUS -+ /xf0/x9f/x9a/x91 AMBULANCE -+ /xf0/x9f/x9a/x92 FIRE ENGINE -+ /xf0/x9f/x9a/x93 POLICE CAR -+ /xf0/x9f/x9a/x94 ONCOMING POLICE CAR -+ /xf0/x9f/x9a/x95 TAXI -+ /xf0/x9f/x9a/x96 ONCOMING TAXI -+ /xf0/x9f/x9a/x97 AUTOMOBILE -+ /xf0/x9f/x9a/x98 ONCOMING AUTOMOBILE -+ /xf0/x9f/x9a/x99 RECREATIONAL VEHICLE -+ /xf0/x9f/x9a/x9a DELIVERY TRUCK -+ /xf0/x9f/x9a/x9b ARTICULATED LORRY -+ /xf0/x9f/x9a/x9c TRACTOR -+ /xf0/x9f/x9a/x9d MONORAIL -+ /xf0/x9f/x9a/x9e MOUNTAIN RAILWAY -+ /xf0/x9f/x9a/x9f SUSPENSION RAILWAY -+ /xf0/x9f/x9a/xa0 MOUNTAIN CABLEWAY -+ /xf0/x9f/x9a/xa1 AERIAL TRAMWAY -+ /xf0/x9f/x9a/xa2 SHIP -+ /xf0/x9f/x9a/xa3 ROWBOAT -+ /xf0/x9f/x9a/xa4 SPEEDBOAT -+ /xf0/x9f/x9a/xa5 HORIZONTAL TRAFFIC LIGHT -+ /xf0/x9f/x9a/xa6 VERTICAL TRAFFIC LIGHT -+ /xf0/x9f/x9a/xa7 CONSTRUCTION SIGN -+ /xf0/x9f/x9a/xa8 POLICE CARS REVOLVING LIGHT -+ /xf0/x9f/x9a/xa9 TRIANGULAR FLAG ON POST -+ /xf0/x9f/x9a/xaa DOOR -+ /xf0/x9f/x9a/xab NO ENTRY SIGN -+ /xf0/x9f/x9a/xac SMOKING SYMBOL -+ /xf0/x9f/x9a/xad NO SMOKING SYMBOL -+ /xf0/x9f/x9a/xae PUT LITTER IN ITS PLACE SYMBOL -+ /xf0/x9f/x9a/xaf DO NOT LITTER SYMBOL -+ /xf0/x9f/x9a/xb0 POTABLE WATER SYMBOL -+ /xf0/x9f/x9a/xb1 NON-POTABLE WATER SYMBOL -+ /xf0/x9f/x9a/xb2 BICYCLE -+ /xf0/x9f/x9a/xb3 NO BICYCLES -+ /xf0/x9f/x9a/xb4 BICYCLIST -+ /xf0/x9f/x9a/xb5 MOUNTAIN BICYCLIST -+ /xf0/x9f/x9a/xb6 PEDESTRIAN -+ /xf0/x9f/x9a/xb7 NO PEDESTRIANS -+ /xf0/x9f/x9a/xb8 CHILDREN CROSSING -+ /xf0/x9f/x9a/xb9 MENS SYMBOL -+ /xf0/x9f/x9a/xba WOMENS SYMBOL -+ /xf0/x9f/x9a/xbb RESTROOM -+ /xf0/x9f/x9a/xbc BABY SYMBOL -+ /xf0/x9f/x9a/xbd TOILET -+ /xf0/x9f/x9a/xbe WATER CLOSET -+ /xf0/x9f/x9a/xbf SHOWER -+ /xf0/x9f/x9b/x80 BATH -+ /xf0/x9f/x9b/x81 BATHTUB -+ /xf0/x9f/x9b/x82 PASSPORT CONTROL -+ /xf0/x9f/x9b/x83 CUSTOMS -+ /xf0/x9f/x9b/x84 BAGGAGE CLAIM -+ /xf0/x9f/x9b/x85 LEFT LUGGAGE -+ /xf0/x9f/x9c/x80 ALCHEMICAL SYMBOL FOR QUINTESSENCE -+ /xf0/x9f/x9c/x81 ALCHEMICAL SYMBOL FOR AIR -+ /xf0/x9f/x9c/x82 ALCHEMICAL SYMBOL FOR FIRE -+ /xf0/x9f/x9c/x83 ALCHEMICAL SYMBOL FOR EARTH -+ /xf0/x9f/x9c/x84 ALCHEMICAL SYMBOL FOR WATER -+ /xf0/x9f/x9c/x85 ALCHEMICAL SYMBOL FOR AQUAFORTIS -+ /xf0/x9f/x9c/x86 ALCHEMICAL SYMBOL FOR AQUA REGIA -+ /xf0/x9f/x9c/x87 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 -+ /xf0/x9f/x9c/x88 ALCHEMICAL SYMBOL FOR AQUA VITAE -+ /xf0/x9f/x9c/x89 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 -+ /xf0/x9f/x9c/x8a ALCHEMICAL SYMBOL FOR VINEGAR -+ /xf0/x9f/x9c/x8b ALCHEMICAL SYMBOL FOR VINEGAR-2 -+ /xf0/x9f/x9c/x8c ALCHEMICAL SYMBOL FOR VINEGAR-3 -+ /xf0/x9f/x9c/x8d ALCHEMICAL SYMBOL FOR SULFUR -+ /xf0/x9f/x9c/x8e ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR -+ /xf0/x9f/x9c/x8f ALCHEMICAL SYMBOL FOR BLACK SULFUR -+ /xf0/x9f/x9c/x90 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE -+ /xf0/x9f/x9c/x91 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 -+ /xf0/x9f/x9c/x92 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 -+ /xf0/x9f/x9c/x93 ALCHEMICAL SYMBOL FOR CINNABAR -+ /xf0/x9f/x9c/x94 ALCHEMICAL SYMBOL FOR SALT -+ /xf0/x9f/x9c/x95 ALCHEMICAL SYMBOL FOR NITRE -+ /xf0/x9f/x9c/x96 ALCHEMICAL SYMBOL FOR VITRIOL -+ /xf0/x9f/x9c/x97 ALCHEMICAL SYMBOL FOR VITRIOL-2 -+ /xf0/x9f/x9c/x98 ALCHEMICAL SYMBOL FOR ROCK SALT -+ /xf0/x9f/x9c/x99 ALCHEMICAL SYMBOL FOR ROCK SALT-2 -+ /xf0/x9f/x9c/x9a ALCHEMICAL SYMBOL FOR GOLD -+ /xf0/x9f/x9c/x9b ALCHEMICAL SYMBOL FOR SILVER -+ /xf0/x9f/x9c/x9c ALCHEMICAL SYMBOL FOR IRON ORE -+ /xf0/x9f/x9c/x9d ALCHEMICAL SYMBOL FOR IRON ORE-2 -+ /xf0/x9f/x9c/x9e ALCHEMICAL SYMBOL FOR CROCUS OF IRON -+ /xf0/x9f/x9c/x9f ALCHEMICAL SYMBOL FOR REGULUS OF IRON -+ /xf0/x9f/x9c/xa0 ALCHEMICAL SYMBOL FOR COPPER ORE -+ /xf0/x9f/x9c/xa1 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE -+ /xf0/x9f/x9c/xa2 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER -+ /xf0/x9f/x9c/xa3 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER -+ /xf0/x9f/x9c/xa4 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 -+ /xf0/x9f/x9c/xa5 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE -+ /xf0/x9f/x9c/xa6 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE -+ /xf0/x9f/x9c/xa7 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER -+ /xf0/x9f/x9c/xa8 ALCHEMICAL SYMBOL FOR VERDIGRIS -+ /xf0/x9f/x9c/xa9 ALCHEMICAL SYMBOL FOR TIN ORE -+ /xf0/x9f/x9c/xaa ALCHEMICAL SYMBOL FOR LEAD ORE -+ /xf0/x9f/x9c/xab ALCHEMICAL SYMBOL FOR ANTIMONY ORE -+ /xf0/x9f/x9c/xac ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY -+ /xf0/x9f/x9c/xad ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY -+ /xf0/x9f/x9c/xae ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY -+ /xf0/x9f/x9c/xaf ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY -+ /xf0/x9f/x9c/xb0 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY -+ /xf0/x9f/x9c/xb1 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 -+ /xf0/x9f/x9c/xb2 ALCHEMICAL SYMBOL FOR REGULUS -+ /xf0/x9f/x9c/xb3 ALCHEMICAL SYMBOL FOR REGULUS-2 -+ /xf0/x9f/x9c/xb4 ALCHEMICAL SYMBOL FOR REGULUS-3 -+ /xf0/x9f/x9c/xb5 ALCHEMICAL SYMBOL FOR REGULUS-4 -+ /xf0/x9f/x9c/xb6 ALCHEMICAL SYMBOL FOR ALKALI -+ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 -+ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE -+ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC -+ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC -+ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR -+ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 -+ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT -+ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE -+ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR -+ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 -+ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME -+ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX -+ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 -+ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 -+ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM -+ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL -+ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT -+ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE -+ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM -+ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX -+ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER -+ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX -+ /xf0/x9f/x9c/xb7 ALCHEMICAL SYMBOL FOR ALKALI-2 -+ /xf0/x9f/x9c/xb8 ALCHEMICAL SYMBOL FOR MARCASITE -+ /xf0/x9f/x9c/xb9 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC -+ /xf0/x9f/x9c/xba ALCHEMICAL SYMBOL FOR ARSENIC -+ /xf0/x9f/x9c/xbb ALCHEMICAL SYMBOL FOR REALGAR -+ /xf0/x9f/x9c/xbc ALCHEMICAL SYMBOL FOR REALGAR-2 -+ /xf0/x9f/x9c/xbd ALCHEMICAL SYMBOL FOR AURIPIGMENT -+ /xf0/x9f/x9c/xbe ALCHEMICAL SYMBOL FOR BISMUTH ORE -+ /xf0/x9f/x9c/xbf ALCHEMICAL SYMBOL FOR TARTAR -+ /xf0/x9f/x9d/x80 ALCHEMICAL SYMBOL FOR TARTAR-2 -+ /xf0/x9f/x9d/x81 ALCHEMICAL SYMBOL FOR QUICK LIME -+ /xf0/x9f/x9d/x82 ALCHEMICAL SYMBOL FOR BORAX -+ /xf0/x9f/x9d/x83 ALCHEMICAL SYMBOL FOR BORAX-2 -+ /xf0/x9f/x9d/x84 ALCHEMICAL SYMBOL FOR BORAX-3 -+ /xf0/x9f/x9d/x85 ALCHEMICAL SYMBOL FOR ALUM -+ /xf0/x9f/x9d/x86 ALCHEMICAL SYMBOL FOR OIL -+ /xf0/x9f/x9d/x87 ALCHEMICAL SYMBOL FOR SPIRIT -+ /xf0/x9f/x9d/x88 ALCHEMICAL SYMBOL FOR TINCTURE -+ /xf0/x9f/x9d/x89 ALCHEMICAL SYMBOL FOR GUM -+ /xf0/x9f/x9d/x8a ALCHEMICAL SYMBOL FOR WAX -+ /xf0/x9f/x9d/x8b ALCHEMICAL SYMBOL FOR POWDER -+ /xf0/x9f/x9d/x8c ALCHEMICAL SYMBOL FOR CALX -+ /xf0/x9f/x9d/x8d ALCHEMICAL SYMBOL FOR TUTTY -+ /xf0/x9f/x9d/x8e ALCHEMICAL SYMBOL FOR CAPUT MORTUUM -+ /xf0/x9f/x9d/x8f ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE -+ /xf0/x9f/x9d/x90 ALCHEMICAL SYMBOL FOR CADUCEUS -+ /xf0/x9f/x9d/x91 ALCHEMICAL SYMBOL FOR TRIDENT -+ /xf0/x9f/x9d/x92 ALCHEMICAL SYMBOL FOR STARRED TRIDENT -+ /xf0/x9f/x9d/x93 ALCHEMICAL SYMBOL FOR LODESTONE -+ /xf0/x9f/x9d/x94 ALCHEMICAL SYMBOL FOR SOAP -+ /xf0/x9f/x9d/x95 ALCHEMICAL SYMBOL FOR URINE -+ /xf0/x9f/x9d/x96 ALCHEMICAL SYMBOL FOR HORSE DUNG -+ /xf0/x9f/x9d/x97 ALCHEMICAL SYMBOL FOR ASHES -+ /xf0/x9f/x9d/x98 ALCHEMICAL SYMBOL FOR POT ASHES -+ /xf0/x9f/x9d/x99 ALCHEMICAL SYMBOL FOR BRICK -+ /xf0/x9f/x9d/x9a ALCHEMICAL SYMBOL FOR POWDERED BRICK -+ /xf0/x9f/x9d/x9b ALCHEMICAL SYMBOL FOR AMALGAM -+ /xf0/x9f/x9d/x9c ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM -+ /xf0/x9f/x9d/x9d ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 -+ /xf0/x9f/x9d/x9e ALCHEMICAL SYMBOL FOR SUBLIMATION -+ /xf0/x9f/x9d/x9f ALCHEMICAL SYMBOL FOR PRECIPITATE -+ /xf0/x9f/x9d/xa0 ALCHEMICAL SYMBOL FOR DISTILL -+ /xf0/x9f/x9d/xa1 ALCHEMICAL SYMBOL FOR DISSOLVE -+ /xf0/x9f/x9d/xa2 ALCHEMICAL SYMBOL FOR DISSOLVE-2 -+ /xf0/x9f/x9d/xa3 ALCHEMICAL SYMBOL FOR PURIFY -+ /xf0/x9f/x9d/xa4 ALCHEMICAL SYMBOL FOR PUTREFACTION -+ /xf0/x9f/x9d/xa5 ALCHEMICAL SYMBOL FOR CRUCIBLE -+ /xf0/x9f/x9d/xa6 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 -+ /xf0/x9f/x9d/xa7 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 -+ /xf0/x9f/x9d/xa8 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 -+ /xf0/x9f/x9d/xa9 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 -+ /xf0/x9f/x9d/xaa ALCHEMICAL SYMBOL FOR ALEMBIC -+ /xf0/x9f/x9d/xab ALCHEMICAL SYMBOL FOR BATH OF MARY -+ /xf0/x9f/x9d/xac ALCHEMICAL SYMBOL FOR BATH OF VAPOURS -+ /xf0/x9f/x9d/xad ALCHEMICAL SYMBOL FOR RETORT -+ /xf0/x9f/x9d/xae ALCHEMICAL SYMBOL FOR HOUR -+ /xf0/x9f/x9d/xaf ALCHEMICAL SYMBOL FOR NIGHT -+ /xf0/x9f/x9d/xb0 ALCHEMICAL SYMBOL FOR DAY-NIGHT -+ /xf0/x9f/x9d/xb1 ALCHEMICAL SYMBOL FOR MONTH -+ /xf0/x9f/x9d/xb2 ALCHEMICAL SYMBOL FOR HALF DRAM -+ /xf0/x9f/x9d/xb3 ALCHEMICAL SYMBOL FOR HALF OUNCE - .. /xf0/xa0/x80/x80 - .. /xf0/xa0/x81/x80 - .. /xf0/xa0/x82/x80 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ar_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ar_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/as_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/as_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/as_IN -@@ -51,7 +51,7 @@ END LC_NUMERIC - %%%%%%%%%%%%% - LC_MONETARY - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/bn_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/bn_IN -@@ -53,7 +53,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 2;3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/en_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/en_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/en_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/gu_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/gu_IN -@@ -71,7 +71,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/hi_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/hi_IN -@@ -69,7 +69,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kn_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/kn_IN -@@ -71,8 +71,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "" --% *** Change this to reflect Kannada , in Dev it is RA with VS U attached --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/kok_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/kok_IN -@@ -49,7 +49,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ks_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ks_IN -@@ -57,7 +57,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ml_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ml_IN -@@ -69,7 +69,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/mr_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/mr_IN -@@ -70,7 +70,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/or_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/or_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/or_IN -@@ -607,7 +607,7 @@ END LC_NUMERIC - %%%%%%%%%%%%% - LC_MONETARY - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/pa_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/pa_IN -@@ -66,7 +66,7 @@ END LC_COLLATE - LC_MONETARY - % This is the POSIX Locale definition the LC_MONETARY category. - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sa_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/sa_IN -@@ -52,7 +52,7 @@ LC_MONETARY - % for IBM Class for Unicode/Java - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/sd_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/sd_IN -@@ -57,7 +57,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/ta_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/ta_IN -@@ -74,7 +74,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 -Index: glibc-2.12-2-gc4ccff1/localedata/locales/te_IN -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/localedata/locales/te_IN -+++ glibc-2.12-2-gc4ccff1/localedata/locales/te_IN -@@ -73,7 +73,7 @@ LC_MONETARY - % for IBM Class for Unicode. - % - int_curr_symbol "" --currency_symbol "" -+currency_symbol "" - mon_decimal_point "" - mon_thousands_sep "" - mon_grouping 3;2 diff --git a/src/patches/glibc/glibc-rh694386.patch b/src/patches/glibc/glibc-rh694386.patch deleted file mode 100644 index 3932eb88e..000000000 --- a/src/patches/glibc/glibc-rh694386.patch +++ /dev/null @@ -1,86 +0,0 @@ -2011-03-28 Andreas Schwab - - * sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't read past - differing bytes. - * sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise. - -diff --git a/sysdeps/powerpc/powerpc32/power4/strncmp.S b/sysdeps/powerpc/powerpc32/power4/strncmp.S -index fc0835e..f5d47af 100644 ---- a/sysdeps/powerpc/powerpc32/power4/strncmp.S -+++ b/sysdeps/powerpc/powerpc32/power4/strncmp.S -@@ -139,30 +139,31 @@ L(u1): - bdz L(u4) - cmpw rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpwi cr1, rWORD3, 0 - bdz L(u3) - cmpw rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- bne- L(u3) - cmpwi cr1, rWORD1, 0 - bdz L(u4) - cmpw rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpwi cr1, rWORD3, 0 - bdz L(u3) - cmpw rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- beq+ L(u1) -+ b L(u1) - - L(u3): sub rRTN, rWORD3, rWORD4 - blr -diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S -index 7a1665d..94ae85b 100644 ---- a/sysdeps/powerpc/powerpc64/power4/strncmp.S -+++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S -@@ -143,30 +143,31 @@ L(u1): - bdz L(u4) - cmpd rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpdi cr1, rWORD3, 0 - bdz L(u3) - cmpd rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- bne- L(u3) - cmpdi cr1, rWORD1, 0 - bdz L(u4) - cmpd rWORD1, rWORD2 - beq- cr1, L(u4) -+ bne- L(u4) - lbzu rWORD3, 1(rSTR1) - lbzu rWORD4, 1(rSTR2) -- bne- L(u4) - cmpdi cr1, rWORD3, 0 - bdz L(u3) - cmpd rWORD3, rWORD4 - beq- cr1, L(u3) -+ bne- L(u3) - lbzu rWORD1, 1(rSTR1) - lbzu rWORD2, 1(rSTR2) -- beq+ L(u1) -+ b L(u1) - - L(u3): sub rRTN, rWORD3, rWORD4 - blr diff --git a/src/patches/glibc/glibc-rh695595.patch b/src/patches/glibc/glibc-rh695595.patch deleted file mode 100644 index 0e6c72b16..000000000 --- a/src/patches/glibc/glibc-rh695595.patch +++ /dev/null @@ -1,17 +0,0 @@ -2010-11-11 H.J. Lu - - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Support Intel processor model 6 and model 0x2c. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -81,6 +81,7 @@ __init_cpu_features (void) - case 0x1e: - case 0x1f: - case 0x25: -+ case 0x2c: - case 0x2e: - case 0x2f: - /* Rep string instructions are fast on Intel Core i3, i5 diff --git a/src/patches/glibc/glibc-rh695963.patch b/src/patches/glibc/glibc-rh695963.patch deleted file mode 100644 index e8053dc3f..000000000 --- a/src/patches/glibc/glibc-rh695963.patch +++ /dev/null @@ -1,1284 +0,0 @@ -2010-08-27 Ulrich Drepper - - * sysdeps/x86_64/multiarch/strlen-no-bsf.S: Move to .text.slow section. - - * sysdeps/x86_64/strlen.S: Minimal code improvement. - -2010-08-26 H.J. Lu - - * sysdeps/x86_64/strlen.S: Unroll the loop. - * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add - strlen-sse2 strlen-sse2-bsf. - * sysdeps/x86_64/multiarch/strlen.S ((strlen): Return - __strlen_no_bsf if bit_Slow_BSF is set. - (__strlen_sse42): Removed. - * sysdeps/x86_64/multiarch/strlen-no-bsf.S: New file. - * sysdeps/x86_64/multiarch/strlen-sse4.S: New file. - -2010-08-25 H.J. Lu - - * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add - strlen-sse2 strlen-sse2-bsf. - * sysdeps/i386/i686/multiarch/strlen.S (strlen): Return - __strlen_sse2_bsf if bit_Slow_BSF is unset. - (__strlen_sse2): Removed. - * sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: New file. - * sysdeps/i386/i686/multiarch/strlen-sse2.S: New file. - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Set - bit_Slow_BSF for Atom. - * sysdeps/x86_64/multiarch/init-arch.h (bit_Slow_BSF): Define. - (index_Slow_BSF): Define. - (HAS_SLOW_BSF): Define. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/Makefile -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/Makefile -@@ -9,7 +9,8 @@ sysdep_routines += bzero-sse2 memset-sse - memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \ - memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \ - strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \ -- memcmp-ssse3 memcmp-sse4 strcasestr-nonascii -+ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii \ -+ strlen-sse2 strlen-sse2-bsf - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c - CFLAGS-strcspn-c.c += -msse4 -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S -@@ -0,0 +1,127 @@ -+/* strlen with SSE2 and BSF -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include -+#include "asm-syntax.h" -+ -+#define CFI_PUSH(REG) \ -+ cfi_adjust_cfa_offset (4); \ -+ cfi_rel_offset (REG, 0) -+ -+#define CFI_POP(REG) \ -+ cfi_adjust_cfa_offset (-4); \ -+ cfi_restore (REG) -+ -+#define PUSH(REG) pushl REG; CFI_PUSH (REG) -+#define POP(REG) popl REG; CFI_POP (REG) -+#define PARMS 4 + 8 /* Preserve ESI and EDI. */ -+#define STR PARMS -+#define ENTRANCE PUSH (%esi); PUSH (%edi); cfi_remember_state -+#define RETURN POP (%edi); POP (%esi); ret; \ -+ cfi_restore_state; cfi_remember_state -+ -+ .text -+ENTRY ( __strlen_sse2_bsf) -+ ENTRANCE -+ mov STR(%esp), %edi -+ xor %eax, %eax -+ mov %edi, %ecx -+ and $0x3f, %ecx -+ pxor %xmm0, %xmm0 -+ cmp $0x30, %ecx -+ ja L(next) -+ movdqu (%edi), %xmm1 -+ pcmpeqb %xmm1, %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit_less16) -+ mov %edi, %eax -+ and $-16, %eax -+ jmp L(align16_start) -+L(next): -+ -+ mov %edi, %eax -+ and $-16, %eax -+ pcmpeqb (%eax), %xmm0 -+ mov $-1, %esi -+ sub %eax, %ecx -+ shl %cl, %esi -+ pmovmskb %xmm0, %edx -+ and %esi, %edx -+ jnz L(exit) -+L(align16_start): -+ pxor %xmm0, %xmm0 -+ pxor %xmm1, %xmm1 -+ pxor %xmm2, %xmm2 -+ pxor %xmm3, %xmm3 -+ .p2align 4 -+L(align16_loop): -+ pcmpeqb 16(%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit16) -+ -+ pcmpeqb 32(%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ jnz L(exit32) -+ -+ pcmpeqb 48(%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ jnz L(exit48) -+ -+ pcmpeqb 64(%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ lea 64(%eax), %eax -+ test %edx, %edx -+ jz L(align16_loop) -+L(exit): -+ sub %edi, %eax -+L(exit_less16): -+ bsf %edx, %edx -+ add %edx, %eax -+ RETURN -+L(exit16): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $16, %eax -+ RETURN -+L(exit32): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $32, %eax -+ RETURN -+L(exit48): -+ sub %edi, %eax -+ bsf %edx, %edx -+ add %edx, %eax -+ add $48, %eax -+ POP (%edi) -+ POP (%esi) -+ ret -+ -+END ( __strlen_sse2_bsf) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen-sse2.S -@@ -0,0 +1,347 @@ -+/* strlen with SSE2 -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include -+#include "asm-syntax.h" -+ -+#define CFI_PUSH(REG) \ -+ cfi_adjust_cfa_offset (4); \ -+ cfi_rel_offset (REG, 0) -+ -+#define CFI_POP(REG) \ -+ cfi_adjust_cfa_offset (-4); \ -+ cfi_restore (REG) -+ -+#define PUSH(REG) pushl REG; CFI_PUSH (REG) -+#define POP(REG) popl REG; CFI_POP (REG) -+#define PARMS 4 -+#define STR PARMS -+#define ENTRANCE -+#define RETURN ret -+ -+ .text -+ENTRY (__strlen_sse2) -+ ENTRANCE -+ mov STR(%esp), %edx -+ xor %eax, %eax -+ cmpb $0, (%edx) -+ jz L(exit_tail0) -+ cmpb $0, 1(%edx) -+ jz L(exit_tail1) -+ cmpb $0, 2(%edx) -+ jz L(exit_tail2) -+ cmpb $0, 3(%edx) -+ jz L(exit_tail3) -+ cmpb $0, 4(%edx) -+ jz L(exit_tail4) -+ cmpb $0, 5(%edx) -+ jz L(exit_tail5) -+ cmpb $0, 6(%edx) -+ jz L(exit_tail6) -+ cmpb $0, 7(%edx) -+ jz L(exit_tail7) -+ cmpb $0, 8(%edx) -+ jz L(exit_tail8) -+ cmpb $0, 9(%edx) -+ jz L(exit_tail9) -+ cmpb $0, 10(%edx) -+ jz L(exit_tail10) -+ cmpb $0, 11(%edx) -+ jz L(exit_tail11) -+ cmpb $0, 12(%edx) -+ jz L(exit_tail12) -+ cmpb $0, 13(%edx) -+ jz L(exit_tail13) -+ cmpb $0, 14(%edx) -+ jz L(exit_tail14) -+ cmpb $0, 15(%edx) -+ jz L(exit_tail15) -+ pxor %xmm0, %xmm0 -+ mov %edx, %eax -+ mov %edx, %ecx -+ and $-16, %eax -+ add $16, %ecx -+ add $16, %eax -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ pxor %xmm1, %xmm1 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ pxor %xmm2, %xmm2 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ pxor %xmm3, %xmm3 -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ pcmpeqb (%eax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%eax), %eax -+ jnz L(exit) -+ -+ and $-0x40, %eax -+ PUSH (%esi) -+ PUSH (%edi) -+ PUSH (%ebx) -+ PUSH (%ebp) -+ xor %ebp, %ebp -+L(aligned_64): -+ pcmpeqb (%eax), %xmm0 -+ pcmpeqb 16(%eax), %xmm1 -+ pcmpeqb 32(%eax), %xmm2 -+ pcmpeqb 48(%eax), %xmm3 -+ pmovmskb %xmm0, %edx -+ pmovmskb %xmm1, %esi -+ pmovmskb %xmm2, %edi -+ pmovmskb %xmm3, %ebx -+ or %edx, %ebp -+ or %esi, %ebp -+ or %edi, %ebp -+ or %ebx, %ebp -+ lea 64(%eax), %eax -+ jz L(aligned_64) -+L(48leave): -+ test %edx, %edx -+ jnz L(aligned_64_exit_16) -+ test %esi, %esi -+ jnz L(aligned_64_exit_32) -+ test %edi, %edi -+ jnz L(aligned_64_exit_48) -+ mov %ebx, %edx -+ lea (%eax), %eax -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_48): -+ lea -16(%eax), %eax -+ mov %edi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_32): -+ lea -32(%eax), %eax -+ mov %esi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_16): -+ lea -48(%eax), %eax -+L(aligned_64_exit): -+ POP (%ebp) -+ POP (%ebx) -+ POP (%edi) -+ POP (%esi) -+L(exit): -+ sub %ecx, %eax -+ test %dl, %dl -+ jz L(exit_high) -+ test $0x01, %dl -+ jnz L(exit_tail0) -+ -+ test $0x02, %dl -+ jnz L(exit_tail1) -+ -+ test $0x04, %dl -+ jnz L(exit_tail2) -+ -+ test $0x08, %dl -+ jnz L(exit_tail3) -+ -+ test $0x10, %dl -+ jnz L(exit_tail4) -+ -+ test $0x20, %dl -+ jnz L(exit_tail5) -+ -+ test $0x40, %dl -+ jnz L(exit_tail6) -+ add $7, %eax -+L(exit_tail0): -+ RETURN -+ -+L(exit_high): -+ add $8, %eax -+ test $0x01, %dh -+ jnz L(exit_tail0) -+ -+ test $0x02, %dh -+ jnz L(exit_tail1) -+ -+ test $0x04, %dh -+ jnz L(exit_tail2) -+ -+ test $0x08, %dh -+ jnz L(exit_tail3) -+ -+ test $0x10, %dh -+ jnz L(exit_tail4) -+ -+ test $0x20, %dh -+ jnz L(exit_tail5) -+ -+ test $0x40, %dh -+ jnz L(exit_tail6) -+ add $7, %eax -+ RETURN -+ -+ .p2align 4 -+L(exit_tail1): -+ add $1, %eax -+ RETURN -+ -+L(exit_tail2): -+ add $2, %eax -+ RETURN -+ -+L(exit_tail3): -+ add $3, %eax -+ RETURN -+ -+L(exit_tail4): -+ add $4, %eax -+ RETURN -+ -+L(exit_tail5): -+ add $5, %eax -+ RETURN -+ -+L(exit_tail6): -+ add $6, %eax -+ RETURN -+ -+L(exit_tail7): -+ add $7, %eax -+ RETURN -+ -+L(exit_tail8): -+ add $8, %eax -+ RETURN -+ -+L(exit_tail9): -+ add $9, %eax -+ RETURN -+ -+L(exit_tail10): -+ add $10, %eax -+ RETURN -+ -+L(exit_tail11): -+ add $11, %eax -+ RETURN -+ -+L(exit_tail12): -+ add $12, %eax -+ RETURN -+ -+L(exit_tail13): -+ add $13, %eax -+ RETURN -+ -+L(exit_tail14): -+ add $14, %eax -+ RETURN -+ -+L(exit_tail15): -+ add $15, %eax -+ ret -+ -+END (__strlen_sse2) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/i386/i686/multiarch/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/i386/i686/multiarch/strlen.S -@@ -48,6 +48,9 @@ ENTRY(strlen) - 1: leal __strlen_ia32@GOTOFF(%ebx), %eax - testl $bit_SSE2, CPUID_OFFSET+index_SSE2+__cpu_features@GOTOFF(%ebx) - jz 2f -+ leal __strlen_sse2_bsf@GOTOFF(%ebx), %eax -+ testl $bit_Slow_BSF, FEATURE_OFFSET+index_Slow_BSF+__cpu_features@GOTOFF(%ebx) -+ jz 2f - leal __strlen_sse2@GOTOFF(%ebx), %eax - 2: popl %ebx - cfi_adjust_cfa_offset (-4); -@@ -55,84 +58,6 @@ ENTRY(strlen) - ret - END(strlen) - --#define CFI_POP(REG) \ -- cfi_adjust_cfa_offset (-4); \ -- cfi_restore (REG) -- --#define RETURN popl %esi; CFI_POP (esi); ret -- -- .text --ENTRY (__strlen_sse2) --/* -- * This implementation uses SSE instructions to compare up to 16 bytes -- * at a time looking for the end of string (null char). -- */ -- pushl %esi -- cfi_adjust_cfa_offset (4) -- cfi_rel_offset (%esi, 0) -- mov 8(%esp), %eax -- mov %eax, %ecx -- pxor %xmm0, %xmm0 /* 16 null chars */ -- mov %eax, %esi -- and $15, %ecx -- jz 1f /* string is 16 byte aligned */ -- -- /* -- * Unaligned case. Round down to 16-byte boundary before comparing -- * 16 bytes for a null char. The code then compensates for any extra chars -- * preceding the start of the string. -- */ -- and $-16, %esi -- -- pcmpeqb (%esi), %xmm0 -- lea 16(%eax), %esi -- pmovmskb %xmm0, %edx -- -- shr %cl, %edx /* Compensate for bytes preceding the string */ -- test %edx, %edx -- jnz 2f -- sub %ecx, %esi /* no null, adjust to next 16-byte boundary */ -- pxor %xmm0, %xmm0 /* clear xmm0, may have been changed... */ -- -- .p2align 4 --1: /* 16 byte aligned */ -- pcmpeqb (%esi), %xmm0 /* look for null bytes */ -- pmovmskb %xmm0, %edx /* move each byte mask of %xmm0 to edx */ -- -- add $16, %esi /* prepare to search next 16 bytes */ -- test %edx, %edx /* if no null byte, %edx must be 0 */ -- jnz 2f /* found a null */ -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jnz 2f -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jnz 2f -- -- pcmpeqb (%esi), %xmm0 -- pmovmskb %xmm0, %edx -- add $16, %esi -- test %edx, %edx -- jz 1b -- --2: -- neg %eax -- lea -16(%eax, %esi), %eax /* calculate exact offset */ -- bsf %edx, %ecx /* Least significant 1 bit is index of null */ -- add %ecx, %eax -- popl %esi -- cfi_adjust_cfa_offset (-4) -- cfi_restore (%esi) -- ret -- --END (__strlen_sse2) -- - # undef ENTRY - # define ENTRY(name) \ - .type __strlen_ia32, @function; \ ---- a/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:43:30.060487726 -0700 -+++ b/sysdeps/x86_64/multiarch/Makefile 2012-03-01 10:45:57.894692115 -0700 -@@ -7,7 +7,7 @@ ifeq ($(subdir),string) - sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \ - strend-sse4 memcmp-sse4 \ - strcasestr-nonascii strcasecmp_l-ssse3 \ -- strncase_l-ssse3 \ -+ strncase_l-ssse3 strlen-sse4 strlen-no-bsf \ - memset-x86-64 - ifeq (yes,$(config-cflags-sse4)) - sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/init-arch.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/init-arch.c -@@ -77,6 +77,12 @@ __init_cpu_features (void) - model += extended_model; - switch (model) - { -+ case 0x1c: -+ case 0x26: -+ /* BSF is slow on Atom. */ -+ __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; -+ break; -+ - case 0x1a: - case 0x1e: - case 0x1f: ---- a/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:43:30.061487720 -0700 -+++ b/sysdeps/x86_64/multiarch/init-arch.h 2012-03-01 10:48:13.371963005 -0700 -@@ -17,6 +17,7 @@ - 02111-1307 USA. */ - - #define bit_Fast_Rep_String (1 << 0) -+#define bit_Slow_BSF (1 << 2) - #define bit_Prefer_SSE_for_memop (1 << 3) - - #ifdef __ASSEMBLER__ -@@ -34,6 +35,7 @@ - # define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET - - #define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE -+# define index_Slow_BSF FEATURE_INDEX_1*FEATURE_SIZE - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE - - #else /* __ASSEMBLER__ */ -@@ -105,11 +107,15 @@ extern const struct cpu_features *__get_ - # define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12) - - # define index_Fast_Rep_String FEATURE_INDEX_1 -+# define index_Slow_BSF FEATURE_INDEX_1 - # define index_Prefer_SSE_for_memop FEATURE_INDEX_1 - - #define HAS_ARCH_FEATURE(idx, bit) \ - ((__get_cpu_features ()->feature[idx] & (bit)) != 0) - -+#define HAS_SLOW_BSF \ -+ HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF) -+ - #define HAS_PREFER_SSE_FOR_MEMOP \ - HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop) - -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-no-bsf.S -@@ -0,0 +1,309 @@ -+/* strlen without BSF -+ Copyright (C) 2010 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include -+ -+ .section .text.slow,"ax",@progbits -+ENTRY (__strlen_no_bsf) -+ xor %eax, %eax -+ cmpb $0, (%rdi) -+ jz L(exit_tail0) -+ cmpb $0, 1(%rdi) -+ jz L(exit_tail1) -+ cmpb $0, 2(%rdi) -+ jz L(exit_tail2) -+ cmpb $0, 3(%rdi) -+ jz L(exit_tail3) -+ cmpb $0, 4(%rdi) -+ jz L(exit_tail4) -+ cmpb $0, 5(%rdi) -+ jz L(exit_tail5) -+ cmpb $0, 6(%rdi) -+ jz L(exit_tail6) -+ cmpb $0, 7(%rdi) -+ jz L(exit_tail7) -+ cmpb $0, 8(%rdi) -+ jz L(exit_tail8) -+ cmpb $0, 9(%rdi) -+ jz L(exit_tail9) -+ cmpb $0, 10(%rdi) -+ jz L(exit_tail10) -+ cmpb $0, 11(%rdi) -+ jz L(exit_tail11) -+ cmpb $0, 12(%rdi) -+ jz L(exit_tail12) -+ cmpb $0, 13(%rdi) -+ jz L(exit_tail13) -+ cmpb $0, 14(%rdi) -+ jz L(exit_tail14) -+ cmpb $0, 15(%rdi) -+ jz L(exit_tail15) -+ pxor %xmm0, %xmm0 -+ mov %rdi, %rcx -+ mov %rdi, %rax -+ and $-16, %rax -+ add $16, %rax -+ add $16, %rcx -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ pxor %xmm1, %xmm1 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ pxor %xmm2, %xmm2 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ pxor %xmm3, %xmm3 -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ pcmpeqb (%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ test %edx, %edx -+ lea 16(%rax), %rax -+ jnz L(exit) -+ -+ and $-0x40, %rax -+ xor %r8d, %r8d -+L(aligned_64): -+ pcmpeqb (%rax), %xmm0 -+ pcmpeqb 16(%rax), %xmm1 -+ pcmpeqb 32(%rax), %xmm2 -+ pcmpeqb 48(%rax), %xmm3 -+ pmovmskb %xmm0, %edx -+ pmovmskb %xmm1, %esi -+ pmovmskb %xmm2, %edi -+ pmovmskb %xmm3, %r9d -+ or %edx, %r8d -+ or %esi, %r8d -+ or %edi, %r8d -+ or %r9d, %r8d -+ lea 64(%rax), %rax -+ jz L(aligned_64) -+ -+ test %edx, %edx -+ jnz L(aligned_64_exit_16) -+ test %esi, %esi -+ jnz L(aligned_64_exit_32) -+ test %edi, %edi -+ jnz L(aligned_64_exit_48) -+L(aligned_64_exit_64): -+ mov %r9d, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_48): -+ lea -16(%rax), %rax -+ mov %edi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_32): -+ lea -32(%rax), %rax -+ mov %esi, %edx -+ jmp L(aligned_64_exit) -+L(aligned_64_exit_16): -+ lea -48(%rax), %rax -+L(aligned_64_exit): -+L(exit): -+ sub %rcx, %rax -+ test %dl, %dl -+ jz L(exit_high) -+ test $0x01, %dl -+ jnz L(exit_tail0) -+ -+ test $0x02, %dl -+ jnz L(exit_tail1) -+ -+ test $0x04, %dl -+ jnz L(exit_tail2) -+ -+ test $0x08, %dl -+ jnz L(exit_tail3) -+ -+ test $0x10, %dl -+ jnz L(exit_tail4) -+ -+ test $0x20, %dl -+ jnz L(exit_tail5) -+ -+ test $0x40, %dl -+ jnz L(exit_tail6) -+ add $7, %eax -+L(exit_tail0): -+ ret -+ -+L(exit_high): -+ add $8, %eax -+ test $0x01, %dh -+ jnz L(exit_tail0) -+ -+ test $0x02, %dh -+ jnz L(exit_tail1) -+ -+ test $0x04, %dh -+ jnz L(exit_tail2) -+ -+ test $0x08, %dh -+ jnz L(exit_tail3) -+ -+ test $0x10, %dh -+ jnz L(exit_tail4) -+ -+ test $0x20, %dh -+ jnz L(exit_tail5) -+ -+ test $0x40, %dh -+ jnz L(exit_tail6) -+ add $7, %eax -+ ret -+ .p2align 4 -+L(exit_tail1): -+ add $1, %eax -+ ret -+ -+L(exit_tail2): -+ add $2, %eax -+ ret -+ -+L(exit_tail3): -+ add $3, %eax -+ ret -+ -+L(exit_tail4): -+ add $4, %eax -+ ret -+ -+L(exit_tail5): -+ add $5, %eax -+ ret -+L(exit_tail6): -+ add $6, %eax -+ ret -+L(exit_tail7): -+ add $7, %eax -+ ret -+L(exit_tail8): -+ add $8, %eax -+ ret -+L(exit_tail9): -+ add $9, %eax -+ ret -+L(exit_tail10): -+ add $10, %eax -+ ret -+L(exit_tail11): -+ add $11, %eax -+ ret -+L(exit_tail12): -+ add $12, %eax -+ ret -+L(exit_tail13): -+ add $13, %eax -+ ret -+L(exit_tail14): -+ add $14, %eax -+ ret -+L(exit_tail15): -+ add $15, %eax -+ ret -+END (__strlen_no_bsf) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen-sse4.S -@@ -0,0 +1,85 @@ -+/* strlen with SSE4 -+ Copyright (C) 2009, 2010 Free Software Foundation, Inc. -+ Contributed by Ulrich Drepper . -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if defined SHARED && !defined NOT_IN_libc -+ -+#include -+ -+ .section .text.sse4.2,"ax",@progbits -+ENTRY (__strlen_sse42) -+ pxor %xmm1, %xmm1 -+ movl %edi, %ecx -+ movq %rdi, %r8 -+ andq $~15, %rdi -+ xor %edi, %ecx -+ pcmpeqb (%rdi), %xmm1 -+ pmovmskb %xmm1, %edx -+ shrl %cl, %edx -+ shll %cl, %edx -+ andl %edx, %edx -+ jnz L(less16bytes) -+ pxor %xmm1, %xmm1 -+ -+ .p2align 4 -+L(more64bytes_loop): -+ pcmpistri $0x08, 16(%rdi), %xmm1 -+ jz L(more32bytes) -+ -+ pcmpistri $0x08, 32(%rdi), %xmm1 -+ jz L(more48bytes) -+ -+ pcmpistri $0x08, 48(%rdi), %xmm1 -+ jz L(more64bytes) -+ -+ add $64, %rdi -+ pcmpistri $0x08, (%rdi), %xmm1 -+ jnz L(more64bytes_loop) -+ leaq (%rdi,%rcx), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more32bytes): -+ leaq 16(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more48bytes): -+ leaq 32(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(more64bytes): -+ leaq 48(%rdi,%rcx, 1), %rax -+ subq %r8, %rax -+ ret -+ -+ .p2align 4 -+L(less16bytes): -+ subq %r8, %rdi -+ bsfl %edx, %eax -+ addq %rdi, %rax -+ ret -+ -+END (__strlen_sse42) -+ -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strlen.S -@@ -36,74 +36,12 @@ ENTRY(strlen) - testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip) - jz 2f - leaq __strlen_sse42(%rip), %rax --2: ret --END(strlen) -- -- -- .section .text.sse4.2,"ax",@progbits -- .align 16 -- .type __strlen_sse42, @function --__strlen_sse42: -- cfi_startproc -- CALL_MCOUNT -- pxor %xmm1, %xmm1 -- movl %edi, %ecx -- movq %rdi, %r8 -- andq $~15, %rdi -- xor %edi, %ecx -- pcmpeqb (%rdi), %xmm1 -- pmovmskb %xmm1, %edx -- shrl %cl, %edx -- shll %cl, %edx -- andl %edx, %edx -- jnz L(less16bytes) -- pxor %xmm1, %xmm1 -- -- .p2align 4 --L(more64bytes_loop): -- pcmpistri $0x08, 16(%rdi), %xmm1 -- jz L(more32bytes) -- -- pcmpistri $0x08, 32(%rdi), %xmm1 -- jz L(more48bytes) -- -- pcmpistri $0x08, 48(%rdi), %xmm1 -- jz L(more64bytes) -- -- add $64, %rdi -- pcmpistri $0x08, (%rdi), %xmm1 -- jnz L(more64bytes_loop) -- leaq (%rdi,%rcx), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more32bytes): -- leaq 16(%rdi,%rcx, 1), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more48bytes): -- leaq 32(%rdi,%rcx, 1), %rax -- subq %r8, %rax -- ret -- -- .p2align 4 --L(more64bytes): -- leaq 48(%rdi,%rcx, 1), %rax -- subq %r8, %rax - ret -- -- .p2align 4 --L(less16bytes): -- subq %r8, %rdi -- bsfl %edx, %eax -- addq %rdi, %rax -- ret -- cfi_endproc -- .size __strlen_sse42, .-__strlen_sse42 -- -+2: testl $bit_Slow_BSF, __cpu_features+FEATURE_OFFSET+index_Slow_BSF(%rip) -+ jz 3f -+ leaq __strlen_no_bsf(%rip), %rax -+3: ret -+END(strlen) - - # undef ENTRY - # define ENTRY(name) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/strlen.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/strlen.S -@@ -23,29 +23,80 @@ - - .text - ENTRY(strlen) -- pxor %xmm2, %xmm2 -- movq %rdi, %rcx -- movq %rdi, %r8 -- andq $~15, %rdi -- movdqa %xmm2, %xmm1 -- pcmpeqb (%rdi), %xmm2 -- orl $0xffffffff, %esi -- subq %rdi, %rcx -- shll %cl, %esi -- pmovmskb %xmm2, %edx -- andl %esi, %edx -- jnz 1f -- --2: movdqa 16(%rdi), %xmm0 -- leaq 16(%rdi), %rdi -+ xor %rax, %rax -+ mov %edi, %ecx -+ and $0x3f, %ecx -+ pxor %xmm0, %xmm0 -+ cmp $0x30, %ecx -+ ja L(next) -+ movdqu (%rdi), %xmm1 - pcmpeqb %xmm1, %xmm0 - pmovmskb %xmm0, %edx -- testl %edx, %edx -- jz 2b -+ test %edx, %edx -+ jnz L(exit_less16) -+ mov %rdi, %rax -+ and $-16, %rax -+ jmp L(align16_start) -+L(next): -+ mov %rdi, %rax -+ and $-16, %rax -+ pcmpeqb (%rax), %xmm0 -+ mov $-1, %esi -+ sub %rax, %rcx -+ shl %cl, %esi -+ pmovmskb %xmm0, %edx -+ and %esi, %edx -+ jnz L(exit) -+L(align16_start): -+ pxor %xmm0, %xmm0 -+ pxor %xmm1, %xmm1 -+ pxor %xmm2, %xmm2 -+ pxor %xmm3, %xmm3 -+ .p2align 4 -+L(align16_loop): -+ pcmpeqb 16(%rax), %xmm0 -+ pmovmskb %xmm0, %edx -+ test %edx, %edx -+ jnz L(exit16) - --1: subq %r8, %rdi -- bsfl %edx, %eax -- addq %rdi, %rax -+ pcmpeqb 32(%rax), %xmm1 -+ pmovmskb %xmm1, %edx -+ test %edx, %edx -+ jnz L(exit32) -+ -+ pcmpeqb 48(%rax), %xmm2 -+ pmovmskb %xmm2, %edx -+ test %edx, %edx -+ jnz L(exit48) -+ -+ pcmpeqb 64(%rax), %xmm3 -+ pmovmskb %xmm3, %edx -+ lea 64(%rax), %rax -+ test %edx, %edx -+ jz L(align16_loop) -+L(exit): -+ sub %rdi, %rax -+L(exit_less16): -+ bsf %rdx, %rdx -+ add %rdx, %rax -+ ret -+ .p2align 4 -+L(exit16): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 16(%rdx,%rax), %rax -+ ret -+ .p2align 4 -+L(exit32): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 32(%rdx,%rax), %rax -+ ret -+ .p2align 4 -+L(exit48): -+ sub %rdi, %rax -+ bsf %rdx, %rdx -+ lea 48(%rdx,%rax), %rax - ret - END(strlen) - libc_hidden_builtin_def (strlen) diff --git a/src/patches/glibc/glibc-rh696472.patch b/src/patches/glibc/glibc-rh696472.patch deleted file mode 100644 index 9d30d38e9..000000000 --- a/src/patches/glibc/glibc-rh696472.patch +++ /dev/null @@ -1,36 +0,0 @@ -commit 3d29045b5e8329d97693eda8d98f1d1e60b99c8f -Author: H.J. Lu -Date: Fri Jun 3 07:01:25 2011 -0400 - - Assume Intel Core i3/i5/i7 processor if AVX is available - -2011-06-02 H.J. Lu - - * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): - Assume Intel Core i3/i5/i7 processor if AVX is available. - -diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c -index 34ec2df..809d105 100644 ---- a/sysdeps/x86_64/multiarch/init-arch.c -+++ b/sysdeps/x86_64/multiarch/init-arch.c -@@ -74,6 +74,7 @@ __init_cpu_features (void) - } - else if (family == 0x06) - { -+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx; - model += extended_model; - switch (model) - { -@@ -83,6 +84,12 @@ __init_cpu_features (void) - __cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF; - break; - -+ default: -+ /* Unknown family 0x06 processors. Assuming this is one -+ of Core i3/i5/i7 processors if AVX is available. */ -+ if ((ecx & bit_AVX) == 0) -+ break; -+ - case 0x1a: - case 0x1e: - case 0x1f: diff --git a/src/patches/glibc/glibc-rh697421.patch b/src/patches/glibc/glibc-rh697421.patch deleted file mode 100644 index 961c8053a..000000000 --- a/src/patches/glibc/glibc-rh697421.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules ---- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 -+++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 -@@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8// - alias OSF10010004// HP-GREEK8// - module HP-GREEK8// INTERNAL HP-GREEK8 1 - module INTERNAL HP-GREEK8// HP-GREEK8 1 -+ -+alias ISO-10646-UCS-2// UNICODE// -+alias ISO-10646-UCS-2// ISO-10646/UTF8/ diff --git a/src/patches/glibc/glibc-rh699724.patch b/src/patches/glibc/glibc-rh699724.patch deleted file mode 100644 index d25ce8423..000000000 --- a/src/patches/glibc/glibc-rh699724.patch +++ /dev/null @@ -1,188 +0,0 @@ -2011-02-23 Andreas Schwab - - [BZ #12509] - * elf/dl-load.c (_dl_map_object_from_fd): Free realname before - returning unsuccessfully. - * elf/Makefile ($(objpfx)noload-mem): New rule. - (noload-ENV): Define. - (tests): Add $(objpfx)noload-mem. - * elf/noload.c: Include . - (main): Call mtrace. Close all opened handles. - -2010-09-27 Andreas Schwab - - * include/link.h (struct link_map): Add l_free_initfini. - * elf/dl-deps.c (_dl_map_object_deps): Set it when assigning - l_initfini. - * elf/rtld.c (dl_main): Clear it on all objects loaded on startup. - * elf/dl-libc.c (free_mem): Free l_initfini if l_free_initfini is - set. - -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -211,7 +211,7 @@ endif - ifeq (yesyes,$(have-fpie)$(build-shared)) - tests: $(objpfx)tst-pie1.out - endif --tests: $(objpfx)tst-leaks1-mem -+tests: $(objpfx)tst-leaks1-mem $(objpfx)noload-mem - tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 - tlsmod18a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 - modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ -@@ -664,6 +664,10 @@ $(objpfx)noload: $(objpfx)testobj1.so $( - LDFLAGS-noload = -rdynamic - $(objpfx)noload.out: $(objpfx)testobj5.so - -+$(objpfx)noload-mem: $(objpfx)noload.out -+ $(common-objpfx)malloc/mtrace $(objpfx)noload.mtrace > $@ -+noload-ENV = MALLOC_TRACE=$(objpfx)noload.mtrace -+ - LDFLAGS-nodelete = -rdynamic - LDFLAGS-nodelmod1.so = -Wl,--enable-new-dtags,-z,nodelete - LDFLAGS-nodelmod4.so = -Wl,--enable-new-dtags,-z,nodelete -Index: glibc-2.12-2-gc4ccff1/elf/dl-deps.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-deps.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-deps.c -@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *ma - nneeded * sizeof needed[0]); - atomic_write_barrier (); - l->l_initfini = l_initfini; -+ l->l_free_initfini = 1; - } - - /* If we have no auxiliary objects just go on to the next map. */ -@@ -662,6 +663,7 @@ Filters not supported with LD_TRACE_PREL - l_initfini[nlist] = NULL; - atomic_write_barrier (); - map->l_initfini = l_initfini; -+ map->l_free_initfini = 1; - if (l_reldeps != NULL) - { - atomic_write_barrier (); -Index: glibc-2.12-2-gc4ccff1/elf/dl-libc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-libc.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-libc.c -@@ -250,5 +250,9 @@ libc_freeres_fn (free_mem) - if (! old->dont_free) - free (old); - } -+ -+ /* Free the initfini dependency list. */ -+ if (l->l_free_initfini) -+ free (l->l_initfini); - } - } -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -907,6 +907,7 @@ _dl_map_object_from_fd (const char *name - { - /* We are not supposed to load the object unless it is already - loaded. So return now. */ -+ free (realname); - __close (fd); - return NULL; - } -@@ -925,6 +926,7 @@ _dl_map_object_from_fd (const char *name - _dl_zerofd = _dl_sysdep_open_zero_fill (); - if (_dl_zerofd == -1) - { -+ free (realname); - __close (fd); - _dl_signal_error (errno, NULL, NULL, - N_("cannot open zero fill device")); -Index: glibc-2.12-2-gc4ccff1/elf/noload.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/noload.c -+++ glibc-2.12-2-gc4ccff1/elf/noload.c -@@ -1,20 +1,28 @@ - #include - #include -+#include - - int - main (void) - { - int result = 0; -+ void *p; -+ -+ mtrace (); - - /* First try to load an object which is a dependency. This should - succeed. */ -- if (dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) -+ p = dlopen ("testobj1.so", RTLD_LAZY | RTLD_NOLOAD); -+ if (p == NULL) - { - printf ("cannot open \"testobj1.so\": %s\n", dlerror ()); - result = 1; - } - else -- puts ("loading \"testobj1.so\" succeeded, OK"); -+ { -+ puts ("loading \"testobj1.so\" succeeded, OK"); -+ dlclose (p); -+ } - - /* Now try loading an object which is not already loaded. */ - if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) != NULL) -@@ -25,8 +33,6 @@ main (void) - else - { - /* Load the object and run the same test again. */ -- void *p; -- - puts ("\"testobj5.so\" wasn't loaded and RTLD_NOLOAD prevented it, OK"); - - p = dlopen ("testobj5.so", RTLD_LAZY); -@@ -41,13 +47,17 @@ main (void) - { - puts ("loading \"testobj5.so\" succeeded, OK"); - -- if (dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD) == NULL) -+ void *q = dlopen ("testobj5.so", RTLD_LAZY | RTLD_NOLOAD); -+ if (q == NULL) - { - printf ("cannot open \"testobj5.so\": %s\n", dlerror ()); - result = 1; - } - else -- puts ("loading \"testobj5.so\" with RTLD_NOLOAD succeeded, OK"); -+ { -+ puts ("loading \"testobj5.so\" with RTLD_NOLOAD succeeded, OK"); -+ dlclose (q); -+ } - - if (dlclose (p) != 0) - { -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -2249,6 +2249,7 @@ ERROR: ld.so: object '%s' cannot be load - lnp->dont_free = 1; - lnp = lnp->next; - } -+ l->l_free_initfini = 0; - - if (l != &GL(dl_rtld_map)) - _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, -Index: glibc-2.12-2-gc4ccff1/include/link.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/link.h -+++ glibc-2.12-2-gc4ccff1/include/link.h -@@ -192,6 +192,9 @@ struct link_map - during LD_TRACE_PRELINKING=1 - contains any DT_SYMBOLIC - libraries. */ -+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be -+ freed, ie. not allocated with -+ the dummy malloc in ld.so. */ - - /* Collected information about own RPATH directories. */ - struct r_search_path_struct l_rpath_dirs; diff --git a/src/patches/glibc/glibc-rh700507.patch b/src/patches/glibc/glibc-rh700507.patch deleted file mode 100644 index 0660431db..000000000 --- a/src/patches/glibc/glibc-rh700507.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nscd/nscd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.c -+++ glibc-2.12-2-gc4ccff1/nscd/nscd.c -@@ -260,10 +260,6 @@ main (int argc, char **argv) - /* In foreground mode we are not paranoid. */ - paranoia = 0; - -- /* Start the SELinux AVC. */ -- if (selinux_enabled) -- nscd_avc_init (); -- - signal (SIGINT, termination_handler); - signal (SIGQUIT, termination_handler); - signal (SIGTERM, termination_handler); -@@ -278,6 +274,10 @@ main (int argc, char **argv) - /* Init databases. */ - nscd_init (); - -+ /* Start the SELinux AVC. */ -+ if (selinux_enabled) -+ nscd_avc_init (); -+ - /* Handle incoming requests */ - start_threads (); - diff --git a/src/patches/glibc/glibc-rh703480.patch b/src/patches/glibc/glibc-rh703480.patch deleted file mode 100644 index 742a79a37..000000000 --- a/src/patches/glibc/glibc-rh703480.patch +++ /dev/null @@ -1,68 +0,0 @@ -2011-01-15 Ulrich Drepper - - [BZ #6812] - * nscd/hstcache.c (tryagain): Define. - (cache_addhst): Return tryagain not notfound for temporary errors. - (addhstbyX): Also set h_errno to TRY_AGAIN when memory allocation - failed. - -Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c -@@ -77,6 +77,20 @@ static const hst_response_header notfoun - }; - - -+/* This is the standard reply in case there are temporary problems. */ -+static const hst_response_header tryagain = -+{ -+ .version = NSCD_VERSION, -+ .found = 0, -+ .h_name_len = 0, -+ .h_aliases_cnt = 0, -+ .h_addrtype = -1, -+ .h_length = -1, -+ .h_addr_list_cnt = 0, -+ .error = TRY_AGAIN -+}; -+ -+ - static void - cache_addhst (struct database_dyn *db, int fd, request_header *req, - const void *key, struct hostent *hst, uid_t owner, -@@ -111,11 +125,15 @@ cache_addhst (struct database_dyn *db, i - else - { - /* We have no data. This means we send the standard reply for this -- case. */ -+ case. Possibly this is only temporary. */ - ssize_t total = sizeof (notfound); -+ assert (sizeof (notfound) == sizeof (tryagain)); -+ -+ const hst_response_header *resp = (errval == EAGAIN -+ ? &tryagain : ¬found); - - if (fd != -1 && -- TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ TEMP_FAILURE_RETRY (send (fd, resp, total, - MSG_NOSIGNAL)) != total) - all_written = false; - -@@ -135,7 +153,7 @@ cache_addhst (struct database_dyn *db, i - ? db->negtimeout : ttl); - - /* This is the reply. */ -- memcpy (&dataset->resp, ¬found, total); -+ memcpy (&dataset->resp, resp, total); - - /* Copy the key data. */ - memcpy (dataset->strdata, key, req->key_len); -@@ -490,6 +508,7 @@ addhstbyX (struct database_dyn *db, int - /* We set the error to indicate this is (possibly) a - temporary error and that it does not mean the entry - is not available at all. */ -+ h_errno = TRY_AGAIN; - errval = EAGAIN; - break; - } diff --git a/src/patches/glibc/glibc-rh703481.patch b/src/patches/glibc/glibc-rh703481.patch deleted file mode 100644 index fdde4b5de..000000000 --- a/src/patches/glibc/glibc-rh703481.patch +++ /dev/null @@ -1,875 +0,0 @@ -2011-02-05 Ulrich Drepper - - * nscd/nscd-client.h: Define MAX_TIMEOUT_VALUE. - (struct datahead): Reuse 32 bits of the alignment for a TTL field. - * nscd/aicache.c (addhstaiX): Return timeout of added value. - (readdhstai): Return value of addhstaiX call. - * nscd/grpcache.c (cache_addgr): Return timeout of added value. - (addgrbyX): Return value returned by cache_addgr. - (readdgrbyname): Return value returned by addgrbyX. - (readdgrbygid): Likewise. - * nscd/pwdcache.c (cache_addpw): Return timeout of added value. - (addpwbyX): Return value returned by cache_addpw. - (readdpwbyname): Return value returned by addhstbyX. - (readdpwbyuid): Likewise. - * nscd/servicescache.c (cache_addserv): Return timeout of added value. - (addservbyX): Return value returned by cache_addserv. - (readdservbyname): Return value returned by addservbyX: - (readdservbyport): Likewise. - * nscd/hstcache.c (cache_addhst): Return timeout of added value. - (addhstbyX): Return value returned by cache_addhst. - (readdhstbyname): Return value returned by addhstbyX. - (readdhstbyaddr): Likewise. - (readdhstbynamev6): Likewise. - (readdhstbyaddrv6): Likewise. - * nscd/initgrcache.c (addinitgroupsX): Return timeout of added value. - (readdinitgroups): Return value returned by addinitgroupsX. - * nscd/cache.c (readdfcts): Change return value of functions to time_t. - (prune_cache): Keep track of timeout value of re-added entries. - * nscd/connections.c (nscd_run_prune): Use MAX_TIMEOUT_VALUE. - * nscd/nscd.h: Adjust prototypes of readd* functions. - -Index: glibc-2.12-2-gc4ccff1/nscd/aicache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/aicache.c -+++ glibc-2.12-2-gc4ccff1/nscd/aicache.c -@@ -58,7 +58,7 @@ static const ai_response_header notfound - }; - - --static void -+static time_t - addhstaiX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *const he, - struct datahead *dh) -@@ -119,6 +119,7 @@ addhstaiX (struct database_dyn *db, int - ssize_t total = 0; - char *key_copy = NULL; - bool alloca_used = false; -+ time_t timeout = MAX_TIMEOUT_VALUE; - - while (!no_more) - { -@@ -388,8 +389,8 @@ addhstaiX (struct database_dyn *db, int - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + (ttl == INT32_MAX -- ? db->postimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -+ timeout = dataset->head.timeout = time (NULL) + dataset->head.ttl; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -421,6 +422,7 @@ addhstaiX (struct database_dyn *db, int - timeout value. Note that the new record has been - allocated on the stack and need not be freed. */ - dh->timeout = dataset->head.timeout; -+ dh->ttl = dataset->head.ttl; - ++dh->nreloads; - } - else -@@ -496,6 +498,9 @@ next_nip: - if (reload_count != UINT_MAX && dh->nreloads == reload_count) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = time (NULL) + dh->ttl; - } - else - { -@@ -517,7 +522,8 @@ next_nip: - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; -+ dataset->head.ttl = db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -551,6 +557,8 @@ next_nip: - if (dh != NULL) - dh->usable = false; - } -+ -+ return timeout; - } - - -@@ -562,7 +570,7 @@ addhstai (struct database_dyn *db, int f - } - - --void -+time_t - readdhstai (struct database_dyn *db, struct hashentry *he, struct datahead *dh) - { - request_header req = -@@ -571,5 +579,5 @@ readdhstai (struct database_dyn *db, str - .key_len = he->len - }; - -- addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstaiX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/cache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c -+++ glibc-2.12-2-gc4ccff1/nscd/cache.c -@@ -45,9 +45,9 @@ extern void *xcalloc (size_t n, size_t s - unsigned int reload_count = DEFAULT_RELOAD_LIMIT; - - --static void (*const readdfcts[LASTREQ]) (struct database_dyn *, -- struct hashentry *, -- struct datahead *) = -+static time_t (*const readdfcts[LASTREQ]) (struct database_dyn *, -+ struct hashentry *, -+ struct datahead *) = - { - [GETPWBYNAME] = readdpwbyname, - [GETPWBYUID] = readdpwbyuid, -@@ -389,7 +389,8 @@ prune_cache (struct database_dyn *table, - assert (runp->type < LASTREQ - && readdfcts[runp->type] != NULL); - -- readdfcts[runp->type] (table, runp, dh); -+ time_t timeout = readdfcts[runp->type] (table, runp, dh); -+ next_timeout = MIN (next_timeout, timeout); - - /* If the entry has been replaced, we might need - cleanup. */ -Index: glibc-2.12-2-gc4ccff1/nscd/connections.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c -+++ glibc-2.12-2-gc4ccff1/nscd/connections.c -@@ -1533,10 +1533,7 @@ nscd_run_prune (void *p) - pruning we want to know about it. Therefore set the - timeout to the maximum. It will be descreased when adding - new entries to the cache, if necessary. */ -- if (sizeof (time_t) == sizeof (long int)) -- dbs[my_number].wakeup_time = LONG_MAX; -- else -- dbs[my_number].wakeup_time = INT_MAX; -+ dbs[my_number].wakeup_time = MAX_TIMEOUT_VALUE; - - /* Unconditionally reset the flag. */ - time_t prune_now = dbs[my_number].clear_cache ? LONG_MAX : now; -Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c -@@ -71,7 +71,7 @@ static const gr_response_header notfound - }; - - --static void -+static time_t - cache_addgr (struct database_dyn *db, int fd, request_header *req, - const void *key, struct group *grp, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -91,6 +91,7 @@ cache_addgr (struct database_dyn *db, in - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (grp == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -102,6 +103,9 @@ cache_addgr (struct database_dyn *db, in - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -125,7 +129,7 @@ cache_addgr (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -217,7 +221,7 @@ cache_addgr (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -379,6 +383,8 @@ cache_addgr (struct database_dyn *db, in - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -400,7 +406,7 @@ lookup (int type, union keytype key, str - } - - --static void -+static time_t - addgrbyX (struct database_dyn *db, int fd, request_header *req, - union keytype key, const char *keystr, uid_t uid, - struct hashentry *he, struct datahead *dh) -@@ -456,10 +462,12 @@ addgrbyX (struct database_dyn *db, int f - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); -+ time_t timeout = cache_addgr (db, fd, req, keystr, grp, uid, he, dh, errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -473,7 +481,7 @@ addgrbyname (struct database_dyn *db, in - } - - --void -+time_t - readdgrbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -484,7 +492,7 @@ readdgrbyname (struct database_dyn *db, - }; - union keytype u = { .v = db->data + he->key }; - -- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } - - -@@ -510,7 +518,7 @@ addgrbygid (struct database_dyn *db, int - } - - --void -+time_t - readdgrbygid (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -527,5 +535,5 @@ readdgrbygid (struct database_dyn *db, s - }; - union keytype u = { .g = gid }; - -- addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addgrbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/hstcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/hstcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/hstcache.c -@@ -91,7 +91,7 @@ static const hst_response_header tryagai - }; - - --static void -+static time_t - cache_addhst (struct database_dyn *db, int fd, request_header *req, - const void *key, struct hostent *hst, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval, -@@ -111,6 +111,7 @@ cache_addhst (struct database_dyn *db, i - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (hst == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -121,6 +122,9 @@ cache_addhst (struct database_dyn *db, i - if (reload_count != UINT_MAX) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + dh->ttl; - } - else - { -@@ -149,8 +153,8 @@ cache_addhst (struct database_dyn *db, i - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + (ttl == INT32_MAX -- ? db->negtimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->negtimeout : ttl; -+ timeout = dataset->head.timeout = t + dataset->head.ttl; - - /* This is the reply. */ - memcpy (&dataset->resp, resp, total); -@@ -214,7 +218,7 @@ cache_addhst (struct database_dyn *db, i - - if (h_addr_list_cnt == 0) - /* Invalid entry. */ -- return; -+ return MAX_TIMEOUT_VALUE; - - total += (sizeof (struct dataset) - + h_name_len -@@ -255,7 +259,8 @@ cache_addhst (struct database_dyn *db, i - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + (ttl == INT32_MAX ? db->postimeout : ttl); -+ dataset->head.ttl = ttl == INT32_MAX ? db->postimeout : ttl; -+ timeout = dataset->head.timeout = t + dataset->head.ttl; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -312,6 +317,7 @@ cache_addhst (struct database_dyn *db, i - timeout value. Note that the new record has been - allocated on the stack and need not be freed. */ - assert (h_addr_list_cnt == 1); -+ dh->ttl = dataset->head.ttl; - dh->timeout = dataset->head.timeout; - ++dh->nreloads; - } -@@ -433,6 +439,8 @@ cache_addhst (struct database_dyn *db, i - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -454,7 +462,7 @@ lookup (int type, void *key, struct host - } - - --static void -+static time_t - addhstbyX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *he, struct datahead *dh) - { -@@ -520,11 +528,13 @@ addhstbyX (struct database_dyn *db, int - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addhst (db, fd, req, key, hst, uid, he, dh, -- h_errno == TRY_AGAIN ? errval : 0, ttl); -+ time_t timeout = cache_addhst (db, fd, req, key, hst, uid, he, dh, -+ h_errno == TRY_AGAIN ? errval : 0, ttl); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -536,7 +546,7 @@ addhstbyname (struct database_dyn *db, i - } - - --void -+time_t - readdhstbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -546,7 +556,7 @@ readdhstbyname (struct database_dyn *db, - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -558,7 +568,7 @@ addhstbyaddr (struct database_dyn *db, i - } - - --void -+time_t - readdhstbyaddr (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -568,7 +578,7 @@ readdhstbyaddr (struct database_dyn *db, - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -580,7 +590,7 @@ addhstbynamev6 (struct database_dyn *db, - } - - --void -+time_t - readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -590,7 +600,7 @@ readdhstbynamev6 (struct database_dyn *d - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -602,7 +612,7 @@ addhstbyaddrv6 (struct database_dyn *db, - } - - --void -+time_t - readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -612,5 +622,5 @@ readdhstbyaddrv6 (struct database_dyn *d - .key_len = he->len - }; - -- addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addhstbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/initgrcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/initgrcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/initgrcache.c -@@ -52,7 +52,7 @@ static const initgr_response_header notf - #include "../grp/compat-initgroups.c" - - --static void -+static time_t - addinitgroupsX (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid, struct hashentry *const he, - struct datahead *dh) -@@ -174,7 +174,9 @@ addinitgroupsX (struct database_dyn *db, - - ssize_t total; - ssize_t written; -+ time_t timeout; - out: -+ timeout = MAX_TIMEOUT_VALUE; - if (!any_success) - { - /* Nothing found. Create a negative result record. */ -@@ -188,6 +190,9 @@ addinitgroupsX (struct database_dyn *db, - if (reload_count != UINT_MAX && dh->nreloads == reload_count) - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; -+ -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = time (NULL) + db->postimeout; - } - else - { -@@ -209,7 +214,7 @@ addinitgroupsX (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->negtimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -273,7 +278,7 @@ addinitgroupsX (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = time (NULL) + db->postimeout; -+ timeout = dataset->head.timeout = time (NULL) + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -401,6 +406,8 @@ addinitgroupsX (struct database_dyn *db, - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -412,7 +419,7 @@ addinitgroups (struct database_dyn *db, - } - - --void -+time_t - readdinitgroups (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -422,5 +429,5 @@ readdinitgroups (struct database_dyn *db - .key_len = he->len - }; - -- addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addinitgroupsX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/nscd-client.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd-client.h -+++ glibc-2.12-2-gc4ccff1/nscd/nscd-client.h -@@ -179,6 +179,10 @@ typedef uint32_t ref_t; - /* Timestamp type. */ - typedef uint64_t nscd_time_t; - -+/* Maximum timestamp. */ -+#define MAX_TIMEOUT_VALUE \ -+ (sizeof (time_t) == sizeof (long int) ? LONG_MAX : INT_MAX) -+ - /* Alignment requirement of the beginning of the data region. */ - #define ALIGN 16 - -@@ -192,7 +196,8 @@ struct datahead - uint8_t notfound; /* Nonzero if data has not been found. */ - uint8_t nreloads; /* Reloads without use. */ - uint8_t usable; /* False if the entry must be ignored. */ -- uint64_t :40; /* Alignment. */ -+ uint8_t unused; /* Unused. */ -+ uint32_t ttl; /* TTL value used. */ - - /* We need to have the following element aligned for the response - header data types and their use in the 'struct dataset' types -Index: glibc-2.12-2-gc4ccff1/nscd/nscd.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h -+++ glibc-2.12-2-gc4ccff1/nscd/nscd.h -@@ -217,20 +217,20 @@ extern void addpwbyname (struct database - void *key, uid_t uid); - extern void addpwbyuid (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdpwbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdpwbyuid (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdpwbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdpwbyuid (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* grpcache.c */ - extern void addgrbyname (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); - extern void addgrbygid (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdgrbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdgrbygid (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdgrbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdgrbygid (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* hstcache.c */ - extern void addhstbyname (struct database_dyn *db, int fd, request_header *req, -@@ -241,37 +241,37 @@ extern void addhstbynamev6 (struct datab - request_header *req, void *key, uid_t uid); - extern void addhstbyaddrv6 (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdhstbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdhstbyaddr (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); --extern void readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, -+extern time_t readdhstbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); --extern void readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, -+extern time_t readdhstbyaddr (struct database_dyn *db, struct hashentry *he, - struct datahead *dh); -+extern time_t readdhstbynamev6 (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); -+extern time_t readdhstbyaddrv6 (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* aicache.c */ - extern void addhstai (struct database_dyn *db, int fd, request_header *req, - void *key, uid_t uid); --extern void readdhstai (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdhstai (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - - /* initgrcache.c */ - extern void addinitgroups (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdinitgroups (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdinitgroups (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* servicecache.c */ - extern void addservbyname (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdservbyname (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdservbyname (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - extern void addservbyport (struct database_dyn *db, int fd, - request_header *req, void *key, uid_t uid); --extern void readdservbyport (struct database_dyn *db, struct hashentry *he, -- struct datahead *dh); -+extern time_t readdservbyport (struct database_dyn *db, struct hashentry *he, -+ struct datahead *dh); - - /* mem.c */ - extern void *mempool_alloc (struct database_dyn *db, size_t len, -Index: glibc-2.12-2-gc4ccff1/nscd/pwdcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/pwdcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/pwdcache.c -@@ -77,7 +77,7 @@ static const pw_response_header notfound - }; - - --static void -+static time_t - cache_addpw (struct database_dyn *db, int fd, request_header *req, - const void *key, struct passwd *pwd, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -97,6 +97,7 @@ cache_addpw (struct database_dyn *db, in - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (pwd == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -108,6 +109,9 @@ cache_addpw (struct database_dyn *db, in - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -132,7 +136,7 @@ cache_addpw (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -212,7 +216,7 @@ cache_addpw (struct database_dyn *db, in - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -293,8 +297,8 @@ cache_addpw (struct database_dyn *db, in - assert ((char *) dataset - (char *) db->head - + total - <= (sizeof (struct database_pers_head) -- + db->head->module * sizeof (ref_t) -- + db->head->data_size)); -+ + db->head->module * sizeof (ref_t) -+ + db->head->data_size)); - written = sendfileall (fd, db->wr_fd, - (char *) &dataset->resp - - (char *) db->head, dataset->head.recsize ); -@@ -374,6 +378,8 @@ cache_addpw (struct database_dyn *db, in - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -395,7 +401,7 @@ lookup (int type, union keytype key, str - } - - --static void -+static time_t - addpwbyX (struct database_dyn *db, int fd, request_header *req, - union keytype key, const char *keystr, uid_t c_uid, - struct hashentry *he, struct datahead *dh) -@@ -452,10 +458,13 @@ addpwbyX (struct database_dyn *db, int f - } - - /* Add the entry to the cache. */ -- cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, errval); -+ time_t timeout = cache_addpw (db, fd, req, keystr, pwd, c_uid, he, dh, -+ errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -469,7 +478,7 @@ addpwbyname (struct database_dyn *db, in - } - - --void -+time_t - readdpwbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -480,7 +489,7 @@ readdpwbyname (struct database_dyn *db, - }; - union keytype u = { .v = db->data + he->key }; - -- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } - - -@@ -506,7 +515,7 @@ addpwbyuid (struct database_dyn *db, int - } - - --void -+time_t - readdpwbyuid (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -523,5 +532,5 @@ readdpwbyuid (struct database_dyn *db, s - }; - union keytype u = { .u = uid }; - -- addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); -+ return addpwbyX (db, -1, &req, u, db->data + he->key, he->owner, he, dh); - } -Index: glibc-2.12-2-gc4ccff1/nscd/servicescache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/servicescache.c -+++ glibc-2.12-2-gc4ccff1/nscd/servicescache.c -@@ -61,7 +61,7 @@ static const serv_response_header notfou - }; - - --static void -+static time_t - cache_addserv (struct database_dyn *db, int fd, request_header *req, - const void *key, struct servent *serv, uid_t owner, - struct hashentry *const he, struct datahead *dh, int errval) -@@ -81,6 +81,7 @@ cache_addserv (struct database_dyn *db, - - assert (offsetof (struct dataset, resp) == offsetof (struct datahead, data)); - -+ time_t timeout = MAX_TIMEOUT_VALUE; - if (serv == NULL) - { - if (he != NULL && errval == EAGAIN) -@@ -92,6 +93,9 @@ cache_addserv (struct database_dyn *db, - /* Do not reset the value if we never not reload the record. */ - dh->nreloads = reload_count - 1; - -+ /* Reload with the same time-to-live value. */ -+ timeout = dh->timeout = t + db->postimeout; -+ - written = total = 0; - } - else -@@ -115,7 +119,7 @@ cache_addserv (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->negtimeout; -+ timeout = dataset->head.timeout = t + db->negtimeout; - - /* This is the reply. */ - memcpy (&dataset->resp, ¬found, total); -@@ -203,7 +207,7 @@ cache_addserv (struct database_dyn *db, - dataset->head.usable = true; - - /* Compute the timeout time. */ -- dataset->head.timeout = t + db->postimeout; -+ timeout = dataset->head.timeout = t + db->postimeout; - - dataset->resp.version = NSCD_VERSION; - dataset->resp.found = 1; -@@ -328,6 +332,8 @@ cache_addserv (struct database_dyn *db, - dbg_log (_("short write in %s: %s"), __FUNCTION__, - strerror_r (errno, buf, sizeof (buf))); - } -+ -+ return timeout; - } - - -@@ -354,7 +360,7 @@ lookup (int type, char *key, struct serv - } - - --static void -+static time_t - addservbyX (struct database_dyn *db, int fd, request_header *req, - char *key, uid_t uid, struct hashentry *he, struct datahead *dh) - { -@@ -409,10 +415,12 @@ addservbyX (struct database_dyn *db, int - buffer = (char *) extend_alloca (buffer, buflen, 2 * buflen); - } - -- cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); -+ time_t timeout = cache_addserv (db, fd, req, key, serv, uid, he, dh, errval); - - if (use_malloc) - free (buffer); -+ -+ return timeout; - } - - -@@ -424,7 +432,7 @@ addservbyname (struct database_dyn *db, - } - - --void -+time_t - readdservbyname (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -434,7 +442,7 @@ readdservbyname (struct database_dyn *db - .key_len = he->len - }; - -- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } - - -@@ -446,7 +454,7 @@ addservbyport (struct database_dyn *db, - } - - --void -+time_t - readdservbyport (struct database_dyn *db, struct hashentry *he, - struct datahead *dh) - { -@@ -456,5 +464,5 @@ readdservbyport (struct database_dyn *db - .key_len = he->len - }; - -- addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); -+ return addservbyX (db, -1, &req, db->data + he->key, he->owner, he, dh); - } diff --git a/src/patches/glibc/glibc-rh705465.patch b/src/patches/glibc/glibc-rh705465.patch deleted file mode 100644 index 63b971e7d..000000000 --- a/src/patches/glibc/glibc-rh705465.patch +++ /dev/null @@ -1,449 +0,0 @@ -2011-11-07 Andreas Schwab - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): - Fix size of allocated buffer. - -2011-05-10 Ulrich Drepper - - [BZ #11257] - * grp/initgroups.c (internal_getgrouplist): When we found the service - list through the initgroups entry in nsswitch.conf do not always - continue on a successful lookup. Don't always use the - __nss_group_data-ase value if it is set. - * nss/nsswitch.conf (initgroups): Change action for successful db - lookup to continue for compatibility. - -2011-05-06 Ulrich Drepper - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Return - NSS_STATUS_NOTFOUND if no record was found. - -2011-04-29 Ulrich Drepper - - * grp/initgroups.c (internal_getgrouplist): Prefer initgroups setting - to groups setting in database lookup. - * nss/nsswitch.conf: Add initgroups entry. - -2011-04-21 Ulrich Drepper - - * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Fix - problem in reallocation in last patch. - -2011-04-19 Ulrich Drepper - - * nss/nss_files/files-initgroups.c: New file. - * nss/Makefile (libnss_files-routines): Add files-initgroups. - * nss/Versions (libnss_files) [GLIBC_PRIVATE]: Export - _nss_files_initgroups_dyn. - -2011-01-13 Ulrich Drepper - - [BZ #10484] - * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Handle overflows of - temporary buffer used to handle multi lookups locally. - * include/alloca.h: Add libc_hidden_proto for __libc_alloca_cutoff. - -2011-01-13 Ulrich Drepper - - [BZ #10484] - * Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff. - * alloca_cutoff.c: Add libc_hidden_def. - -Index: glibc-2.12-2-gc4ccff1/grp/initgroups.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/grp/initgroups.c -+++ glibc-2.12-2-gc4ccff1/grp/initgroups.c -@@ -43,6 +43,8 @@ extern int __nss_group_lookup (service_u - extern void *__nss_lookup_function (service_user *ni, const char *fct_name); - - extern service_user *__nss_group_database attribute_hidden; -+static service_user *initgroups_database; -+static bool use_initgroups_entry; - - - #include "compat-initgroups.c" -@@ -67,32 +69,41 @@ internal_getgrouplist (const char *user, - } - #endif - -- service_user *nip = NULL; -- initgroups_dyn_function fct; - enum nss_status status = NSS_STATUS_UNAVAIL; -- int no_more; -- /* Start is one, because we have the first group as parameter. */ -- long int start = 1; -+ int no_more = 0; - - /* Never store more than the starting *SIZE number of elements. */ - assert (*size > 0); - (*groupsp)[0] = group; -+ /* Start is one, because we have the first group as parameter. */ -+ long int start = 1; - -- if (__nss_group_database != NULL) -+ if (initgroups_database == NULL) - { -- no_more = 0; -- nip = __nss_group_database; -+ no_more = __nss_database_lookup ("initgroups", NULL, "", -+ &initgroups_database); -+ if (no_more == 0 && initgroups_database == NULL) -+ { -+ if (__nss_group_database == NULL) -+ no_more = __nss_database_lookup ("group", NULL, "compat files", -+ &__nss_group_database); -+ -+ initgroups_database = __nss_group_database; -+ } -+ else if (initgroups_database != NULL) -+ { -+ assert (no_more == 0); -+ use_initgroups_entry = true; -+ } - } -- else -- no_more = __nss_database_lookup ("group", NULL, -- "compat [NOTFOUND=return] files", &nip); - -+ service_user *nip = initgroups_database; - while (! no_more) - { - long int prev_start = start; - -- fct = __nss_lookup_function (nip, "initgroups_dyn"); -- -+ initgroups_dyn_function fct = __nss_lookup_function (nip, -+ "initgroups_dyn"); - if (fct == NULL) - status = compat_call (nip, user, group, &start, size, groupsp, - limit, &errno); -@@ -119,7 +130,13 @@ internal_getgrouplist (const char *user, - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) - __libc_fatal ("illegal status in internal_getgrouplist"); - -- if (status != NSS_STATUS_SUCCESS -+ /* For compatibility reason we will continue to look for more -+ entries using the next service even though data has already -+ been found if the nsswitch.conf file contained only a 'groups' -+ line and no 'initgroups' line. If the latter is available -+ we always respect the status. This means that the default -+ for successful lookups is to return. */ -+ if ((use_initgroups_entry || status != NSS_STATUS_SUCCESS) - && nss_next_action (nip, status) == NSS_ACTION_RETURN) - break; - -Index: glibc-2.12-2-gc4ccff1/include/alloca.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/include/alloca.h -+++ glibc-2.12-2-gc4ccff1/include/alloca.h -@@ -14,6 +14,7 @@ extern void *__alloca (size_t __size); - - extern int __libc_use_alloca (size_t size) __attribute__ ((const)); - extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const)); -+libc_hidden_proto (__libc_alloca_cutoff) - - #define __MAX_ALLOCA_CUTOFF 65536 - -Index: glibc-2.12-2-gc4ccff1/nptl/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/Versions -+++ glibc-2.12-2-gc4ccff1/nptl/Versions -@@ -27,6 +27,7 @@ libc { - pthread_cond_broadcast; pthread_cond_timedwait; - } - GLIBC_PRIVATE { -+ __libc_alloca_cutoff; - # Internal libc interface to libpthread - __libc_dl_error_tsd; - } -Index: glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/alloca_cutoff.c -+++ glibc-2.12-2-gc4ccff1/nptl/alloca_cutoff.c -@@ -34,3 +34,4 @@ __libc_alloca_cutoff (size_t size) - assume the maximum available stack space. */ - ?: __MAX_ALLOCA_CUTOFF * 4)); - } -+libc_hidden_def (__libc_alloca_cutoff) -Index: glibc-2.12-2-gc4ccff1/nss/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Makefile -+++ glibc-2.12-2-gc4ccff1/nss/Makefile -@@ -63,7 +63,7 @@ vpath %.c $(subdir-dirs) - - - libnss_files-routines := $(addprefix files-,$(databases)) \ -- files-have_o_cloexec -+ files-initgroups files-have_o_cloexec - distribute += files-XXX.c files-parse.c - - -Index: glibc-2.12-2-gc4ccff1/nss/Versions -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/Versions -+++ glibc-2.12-2-gc4ccff1/nss/Versions -@@ -95,5 +95,7 @@ libnss_files { - _nss_netgroup_parseline; - _nss_files_getpublickey; - _nss_files_getsecretkey; -+ -+ _nss_files_initgroups_dyn; - } - } -Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/nss_files/files-hosts.c -+++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-hosts.c -@@ -129,19 +129,22 @@ _nss_files_get##name##_r (proto, - && _res_hconf.flags & HCONF_FLAG_MULTI) \ - { \ - /* We have to get all host entries from the file. */ \ -- const size_t tmp_buflen = MIN (buflen, 4096); \ -- char tmp_buffer[tmp_buflen] \ -+ size_t tmp_buflen = MIN (buflen, 4096); \ -+ char tmp_buffer_stack[tmp_buflen] \ - __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));\ -+ char *tmp_buffer = tmp_buffer_stack; \ - struct hostent tmp_result_buf; \ - int naddrs = 1; \ - int naliases = 0; \ - char *bufferend; \ -+ bool tmp_buffer_malloced = false; \ - \ - while (result->h_aliases[naliases] != NULL) \ - ++naliases; \ - \ - bufferend = (char *) &result->h_aliases[naliases + 1]; \ - \ -+ again: \ - while ((status = internal_getent (&tmp_result_buf, tmp_buffer, \ - tmp_buflen, errnop H_ERRNO_ARG \ - EXTRA_ARGS_VALUE)) \ -@@ -182,7 +185,7 @@ _nss_files_get##name##_r (proto, - } \ - /* If the real name is different add it also to the \ - aliases. This means that there is a duplication \ -- in the alias list but this is really the users \ -+ in the alias list but this is really the user's \ - problem. */ \ - if (strcmp (old_result->h_name, \ - tmp_result_buf.h_name) != 0) \ -@@ -204,7 +207,7 @@ _nss_files_get##name##_r (proto, - *errnop = ERANGE; \ - *herrnop = NETDB_INTERNAL; \ - status = NSS_STATUS_TRYAGAIN; \ -- break; \ -+ goto out; \ - } \ - \ - new_h_addr_list = \ -@@ -268,8 +271,54 @@ _nss_files_get##name##_r (proto, - } \ - } \ - \ -- if (status != NSS_STATUS_TRYAGAIN) \ -+ if (status == NSS_STATUS_TRYAGAIN) \ -+ { \ -+ size_t newsize = 2 * tmp_buflen; \ -+ if (tmp_buffer_malloced) \ -+ { \ -+ char *newp = realloc (tmp_buffer, newsize); \ -+ if (newp != NULL) \ -+ { \ -+ assert ((((uintptr_t) newp) \ -+ & (__alignof__ (struct hostent_data) - 1)) \ -+ == 0); \ -+ tmp_buffer = newp; \ -+ tmp_buflen = newsize; \ -+ goto again; \ -+ } \ -+ } \ -+ else if (!__libc_use_alloca (buflen + newsize)) \ -+ { \ -+ tmp_buffer = malloc (newsize); \ -+ if (tmp_buffer != NULL) \ -+ { \ -+ assert ((((uintptr_t) tmp_buffer) \ -+ & (__alignof__ (struct hostent_data) - 1)) \ -+ == 0); \ -+ tmp_buffer_malloced = true; \ -+ tmp_buflen = newsize; \ -+ goto again; \ -+ } \ -+ } \ -+ else \ -+ { \ -+ tmp_buffer \ -+ = extend_alloca (tmp_buffer, tmp_buflen, \ -+ newsize \ -+ + __alignof__ (struct hostent_data)); \ -+ tmp_buffer = (char *) (((uintptr_t) tmp_buffer \ -+ + __alignof__ (struct hostent_data) \ -+ - 1) \ -+ & ~(__alignof__ (struct hostent_data)\ -+ - 1)); \ -+ goto again; \ -+ } \ -+ } \ -+ else \ - status = NSS_STATUS_SUCCESS; \ -+ out: \ -+ if (tmp_buffer_malloced) \ -+ free (tmp_buffer); \ - } \ - \ - \ -Index: glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/nss/nss_files/files-initgroups.c -@@ -0,0 +1,137 @@ -+/* Initgroups handling in nss_files module. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+enum nss_status -+_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, -+ long int *size, gid_t **groupsp, long int limit, -+ int *errnop) -+{ -+ FILE *stream = fopen ("/etc/group", "re"); -+ if (stream == NULL) -+ { -+ *errnop = errno; -+ return *errnop == ENOMEM ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; -+ } -+ -+ /* No other thread using this stream. */ -+ __fsetlocking (stream, FSETLOCKING_BYCALLER); -+ -+ char *line = NULL; -+ size_t linelen = 0; -+ enum nss_status status = NSS_STATUS_SUCCESS; -+ bool any = false; -+ -+ size_t buflen = 1024; -+ void *buffer = alloca (buflen); -+ bool buffer_use_malloc = false; -+ -+ gid_t *groups = *groupsp; -+ -+ /* We have to iterate over the entire file. */ -+ while (!feof_unlocked (stream)) -+ { -+ ssize_t n = getline (&line, &linelen, stream); -+ if (n < 0) -+ { -+ if (! feof_unlocked (stream)) -+ status = ((*errnop = errno) == ENOMEM -+ ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL); -+ break; -+ } -+ -+ struct group grp; -+ int res; -+ while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, -+ errnop)) == -1) -+ { -+ size_t newbuflen = 2 * buflen; -+ if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) -+ { -+ void *newbuf = realloc (buffer_use_malloc ? buffer : NULL, -+ newbuflen); -+ if (newbuf == NULL) -+ { -+ *errnop = ENOMEM; -+ status = NSS_STATUS_TRYAGAIN; -+ goto out; -+ } -+ buffer = newbuf; -+ buflen = newbuflen; -+ buffer_use_malloc = true; -+ } -+ else -+ buffer = extend_alloca (buffer, buflen, newbuflen); -+ } -+ -+ if (res > 0 && grp.gr_gid != group) -+ for (char **m = grp.gr_mem; *m != NULL; ++m) -+ if (strcmp (*m, user) == 0) -+ { -+ /* Matches user. Insert this group. */ -+ if (*start == *size) -+ { -+ /* Need a bigger buffer. */ -+ if (limit > 0 && *size == limit) -+ /* We reached the maximum. */ -+ goto out; -+ -+ long int newsize; -+ if (limit <= 0) -+ newsize = 2 * *size; -+ else -+ newsize = MIN (limit, 2 * *size); -+ -+ gid_t *newgroups = realloc (groups, -+ newsize * sizeof (*groups)); -+ if (newgroups == NULL) -+ { -+ *errnop = ENOMEM; -+ status = NSS_STATUS_TRYAGAIN; -+ goto out; -+ } -+ *groupsp = groups = newgroups; -+ *size = newsize; -+ } -+ -+ groups[*start] = grp.gr_gid; -+ *start += 1; -+ any = true; -+ -+ break; -+ } -+ } -+ -+ out: -+ /* Free memory. */ -+ if (buffer_use_malloc) -+ free (buffer); -+ free (line); -+ -+ fclose (stream); -+ -+ return status == NSS_STATUS_SUCCESS && !any ? NSS_STATUS_NOTFOUND : status; -+} -Index: glibc-2.12-2-gc4ccff1/nss/nsswitch.conf -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nss/nsswitch.conf -+++ glibc-2.12-2-gc4ccff1/nss/nsswitch.conf -@@ -5,6 +5,7 @@ - - passwd: db files - group: db files -+initgroups: db [SUCCESS=continue] files - shadow: db files - gshadow: files - diff --git a/src/patches/glibc/glibc-rh711927.patch b/src/patches/glibc/glibc-rh711927.patch deleted file mode 100644 index 26949fe07..000000000 --- a/src/patches/glibc/glibc-rh711927.patch +++ /dev/null @@ -1,503 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/config.h.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/config.h.in -+++ glibc-2.12-2-gc4ccff1/config.h.in -@@ -201,6 +201,9 @@ - /* Define if multi-arch DSOs should be generated. */ - #undef USE_MULTIARCH - -+/* Define if Systemtap probes should be defined. */ -+#undef USE_STAP_PROBE -+ - /* - */ - -Index: glibc-2.12-2-gc4ccff1/configure -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/configure -+++ glibc-2.12-2-gc4ccff1/configure -@@ -830,6 +830,7 @@ enable_all_warnings - enable_multi_arch - enable_experimental_malloc - enable_nss_crypt -+enable_systemtap - with_cpu - ' - ac_precious_vars='build_alias -@@ -1501,6 +1502,7 @@ Optional Features: - --enable-experimental-malloc - enable experimental malloc features - --enable-nss-crypt enable libcrypt to use nss -+ --enable-systemtap enable systemtap static probe points [default=no] - - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -3932,6 +3934,79 @@ else - fi - - -+# Check whether --enable-systemtap was given. -+if test "${enable_systemtap+set}" = set; then -+ enableval=$enable_systemtap; systemtap=$enableval -+else -+ systemtap=no -+fi -+ -+if test x$systemtap != xno; then -+ -+ { $as_echo "$as_me:$LINENO: checking for systemtap static probe support" >&5 -+$as_echo_n "checking for systemtap static probe support... " >&6; } -+if test "${libc_cv_sdt+set}" = set; then -+ $as_echo_n "(cached) " >&6 -+else -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="-std=gnu99 $CFLAGS" -+ cat >conftest.$ac_ext <<_ACEOF -+#include -+void foo (int i, void *p) -+{ -+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" -+ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -+$as_echo "$ac_try_echo") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ libc_cv_sdt=yes -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ libc_cv_sdt=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CFLAGS="$old_CFLAGS" -+fi -+{ $as_echo "$as_me:$LINENO: result: $libc_cv_sdt" >&5 -+$as_echo "$libc_cv_sdt" >&6; } -+ if test $libc_cv_sdt = yes; then -+ cat >>confdefs.h <<\_ACEOF -+#define USE_STAP_PROBE 1 -+_ACEOF -+ -+ else -+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+{ { $as_echo "$as_me:$LINENO: error: systemtap support needs sys/sdt.h with asm support -+See \`config.log' for more details." >&5 -+$as_echo "$as_me: error: systemtap support needs sys/sdt.h with asm support -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; }; } -+ fi -+ -+fi -+ -+ - # The way shlib-versions is used to generate soversions.mk uses a - # fairly simplistic model for name recognition that can't distinguish - # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -Index: glibc-2.12-2-gc4ccff1/configure.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/configure.in -+++ glibc-2.12-2-gc4ccff1/configure.in -@@ -319,6 +319,29 @@ else - fi - AC_SUBST(libc_cv_nss_crypt) - -+AC_ARG_ENABLE([systemtap], -+ [AS_HELP_STRING([--enable-systemtap], -+ [enable systemtap static probe points @<:@default=no@:>@])], -+ [systemtap=$enableval], -+ [systemtap=no]) -+AS_IF([test x$systemtap != xno], [ -+ AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl -+ old_CFLAGS="$CFLAGS" -+ CFLAGS="-std=gnu99 $CFLAGS" -+ AC_COMPILE_IFELSE([#include -+void foo (int i, void *p) -+{ -+ asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" -+ :: STAP_PROBE_ASM_OPERANDS (2, i, p)); -+}], [libc_cv_sdt=yes], [libc_cv_sdt=no]) -+ CFLAGS="$old_CFLAGS"]) -+ if test $libc_cv_sdt = yes; then -+ AC_DEFINE([USE_STAP_PROBE]) -+ else -+ AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support]) -+ fi -+]) -+ - # The way shlib-versions is used to generate soversions.mk uses a - # fairly simplistic model for name recognition that can't distinguish - # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -Index: glibc-2.12-2-gc4ccff1/elf/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile -+++ glibc-2.12-2-gc4ccff1/elf/Makefile -@@ -458,7 +458,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D' - CFLAGS-dl-cache.c = $(SYSCONF-FLAGS) - CFLAGS-cache.c = $(SYSCONF-FLAGS) - --CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1) -+CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ -+ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) - - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) - generated += $(addsuffix .so,$(strip $(modules-names))) -Index: glibc-2.12-2-gc4ccff1/elf/dl-close.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-close.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-close.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - - - /* Type of the constructor functions. */ -@@ -469,6 +470,7 @@ _dl_close_worker (struct link_map *map) - struct r_debug *r = _dl_debug_initialize (0, nsid); - r->r_state = RT_DELETE; - _dl_debug_state (); -+ LIBC_PROBE (rtld_unmap_start, 2, nsid, r); - - if (unload_global) - { -@@ -722,6 +724,7 @@ _dl_close_worker (struct link_map *map) - /* Notify the debugger those objects are finalized and gone. */ - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_unmap_complete, 2, nsid, r); - - /* Recheck if we need to retry, release the lock. */ - out: -Index: glibc-2.12-2-gc4ccff1/elf/dl-load.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-load.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-load.c -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - - #include - -@@ -806,7 +807,7 @@ _dl_init_paths (const char *llp) - static void - __attribute__ ((noreturn, noinline)) - lose (int code, int fd, const char *name, char *realname, struct link_map *l, -- const char *msg, struct r_debug *r) -+ const char *msg, struct r_debug *r, Lmid_t nsid) - { - /* The file might already be closed. */ - if (fd != -1) -@@ -818,6 +819,7 @@ lose (int code, int fd, const char *name - { - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_complete, 2, nsid, r); - } - - _dl_signal_error (code, name, NULL, msg); -@@ -856,7 +858,7 @@ _dl_map_object_from_fd (const char *name - errval = errno; - call_lose: - lose (errval, fd, name, realname, l, errstring, -- make_consistent ? r : NULL); -+ make_consistent ? r : NULL, nsid); - } - - /* Look again to see if the real name matched another already loaded. */ -@@ -963,6 +965,7 @@ _dl_map_object_from_fd (const char *name - linking has not been used before. */ - r->r_state = RT_ADD; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_start, 2, nsid, r); - make_consistent = true; - } - else -@@ -1656,7 +1659,7 @@ open_verify (const char *name, struct fi - name = strdupa (realname); - free (realname); - } -- lose (errval, fd, name, NULL, NULL, errstring, NULL); -+ lose (errval, fd, name, NULL, NULL, errstring, NULL, 0); - } - - /* See whether the ELF header is what we expect. */ -Index: glibc-2.12-2-gc4ccff1/elf/dl-open.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-open.c -+++ glibc-2.12-2-gc4ccff1/elf/dl-open.c -@@ -33,6 +33,7 @@ - #include - #include - #include -+#include - - #include - -@@ -297,6 +298,7 @@ dl_open_worker (void *a) - struct r_debug *r = _dl_debug_initialize (0, args->nsid); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); - - /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ - int reloc_mode = mode & __RTLD_AUDIT; -@@ -309,10 +311,18 @@ dl_open_worker (void *a) - struct link_map *l = new; - while (l->l_next) - l = l->l_next; -+ int relocation_in_progress = 0; - while (1) - { - if (! l->l_real->l_relocated) - { -+ if (! relocation_in_progress) -+ { -+ /* Notify the debugger that relocations are about to happen. */ -+ LIBC_PROBE (rtld_reloc_start, 2, args->nsid, r); -+ relocation_in_progress = 1; -+ } -+ - #ifdef SHARED - if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) - { -@@ -460,6 +470,10 @@ cannot load any more object with static - _dl_fatal_printf (N_("\ - TLS generation counter wrapped! Please report this.")); - -+ /* Notify the debugger all new objects have been relocated. */ -+ if (relocation_in_progress) -+ LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); -+ - /* Run the initializer functions of new objects. */ - _dl_init (new, args->argc, args->argv, args->env); - -Index: glibc-2.12-2-gc4ccff1/elf/rtld-Rules -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld-Rules -+++ glibc-2.12-2-gc4ccff1/elf/rtld-Rules -@@ -122,6 +122,6 @@ ifdef rtld-depfiles - endif - - # This here is the whole point of all the shenanigans. --rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -+rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld - - endif -Index: glibc-2.12-2-gc4ccff1/elf/rtld.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c -@@ -40,6 +40,7 @@ - #include - #include - #include -+#include - - #include - -@@ -1656,6 +1657,7 @@ ERROR: ld.so: object '%s' cannot be load - /* We start adding objects. */ - r->r_state = RT_ADD; - _dl_debug_state (); -+ LIBC_PROBE (rtld_init_start, 2, LM_ID_BASE, r); - - /* Auditing checkpoint: we are ready to signal that the initial map - is being constructed. */ -@@ -2353,6 +2355,7 @@ ERROR: ld.so: object '%s' cannot be load - r = _dl_debug_initialize (0, LM_ID_BASE); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -+ LIBC_PROBE (rtld_init_complete, 2, LM_ID_BASE, r); - - #ifndef MAP_COPY - /* We must munmap() the cache file. */ -Index: glibc-2.12-2-gc4ccff1/extra-lib.mk -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/extra-lib.mk -+++ glibc-2.12-2-gc4ccff1/extra-lib.mk -@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left)) - include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) - endif - --CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -+CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib) -Index: glibc-2.12-2-gc4ccff1/include/stap-probe.h -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/include/stap-probe.h -@@ -0,0 +1,140 @@ -+/* Macros for defining Systemtap static probe points. -+ Copyright (C) 2011 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _STAP_PROBE_H -+#define _STAP_PROBE_H 1 -+ -+#ifdef USE_STAP_PROBE -+ -+# include -+ -+/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn). -+ -+ Without USE_STAP_PROBE, that does nothing but evaluates all -+ its arguments (to prevent bit rot, unlike e.g. assert). -+ -+ Systemtap's header defines the macros STAP_PROBE (provider, name) and -+ STAP_PROBEn (provider, name, arg1, ..., argn). For "provider" we paste -+ in the IN_LIB name (libc, libpthread, etc.) automagically. */ -+ -+# ifndef NOT_IN_libc -+# define IN_LIB libc -+# elif !defined IN_LIB -+/* This is intentionally defined with extra unquoted commas in it so -+ that macro substitution will bomb out when it is used. We don't -+ just use #error here, so that this header can be included by -+ other headers that use LIBC_PROBE inside their own macros. We -+ only want such headers to fail to compile if those macros are -+ actually used in a context where IN_LIB has not been defined. */ -+# define IN_LIB ,,,missing -DIN_LIB=... -- not extra-lib.mk?,,, -+# endif -+ -+# define LIBC_PROBE(name, n, ...) \ -+ LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__) -+ -+# define LIBC_PROBE_1(lib, name, n, ...) \ -+ STAP_PROBE##n (lib, name, ## __VA_ARGS__) -+ -+# define STAP_PROBE0 STAP_PROBE -+ -+# define LIBC_PROBE_ASM(name, template) \ -+ STAP_PROBE_ASM (IN_LIB, name, template) -+ -+# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS -+ -+#else /* Not USE_STAP_PROBE. */ -+ -+# ifndef __ASSEMBLER__ -+# define LIBC_PROBE(name, n, ...) DUMMY_PROBE##n (__VA_ARGS__) -+# else -+# define LIBC_PROBE(name, n, ...) /* Nothing. */ -+# endif -+ -+# define LIBC_PROBE_ASM(name, template) /* Nothing. */ -+# define LIBC_PROBE_ASM_OPERANDS(n, ...) /* Nothing. */ -+ -+/* This silliness lets us evaluate all the arguments for each arity -+ of probe. My kingdom for a real macro system. */ -+ -+# define DUMMY_PROBE0() do {} while (0) -+# define DUMMY_PROBE1(a1) do {} while ((void) (a1), 0) -+# define DUMMY_PROBE2(a1, a2) do {} while ((void) (a1), \ -+ (void) (a2), 0) -+# define DUMMY_PROBE3(a1, a2, a3) do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), 0) -+# define DUMMY_PROBE4(a1, a2, a3, a4) do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), 0) -+# define DUMMY_PROBE5(a1, a2, a3, a4, a5) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), 0) -+# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), 0) -+# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), 0) -+# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), 0) -+# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), \ -+ (void) (a9), 0) -+# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ -+ do {} while ((void) (a1), \ -+ (void) (a2), \ -+ (void) (a3), \ -+ (void) (a4), \ -+ (void) (a5), \ -+ (void) (a6), \ -+ (void) (a7), \ -+ (void) (a8), \ -+ (void) (a9), \ -+ (void) (a10), 0) -+ -+#endif /* USE_STAP_PROBE. */ -+ -+#endif /* stap-probe.h */ -Index: glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/scripts/check-local-headers.sh -+++ glibc-2.12-2-gc4ccff1/scripts/check-local-headers.sh -@@ -31,6 +31,8 @@ fgrep -v "$includedir/asm" | - fgrep -v "$includedir/linux" | - fgrep -v "$includedir/selinux" | - fgrep -v "$includedir/sys/capability.h" | -+fgrep -v "$includedir/sys/sdt.h" | -+fgrep -v "$includedir/sys/sdt-config.h" | - fgrep -v "$includedir/gd" | - fgrep -v "$includedir/nss3"; then - # If we found a match something is wrong. diff --git a/src/patches/glibc/glibc-rh711987.patch b/src/patches/glibc/glibc-rh711987.patch deleted file mode 100644 index bd286e1aa..000000000 --- a/src/patches/glibc/glibc-rh711987.patch +++ /dev/null @@ -1,136 +0,0 @@ -2010-08-11 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_flags - field. - (struct statfs64): Likewise. - (_STATFS_F_FLAGS): Define. - * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise. - * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): - Don't define if __ASSUME_STATFS_F_FLAGS is defined. - (ST_VALID): Define locally. - (INTERNAL_STATVFS): If f_flags has ST_VALID set don't call - __statvfs_getflags, use the provided value. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_STATFS_F_FLAGS. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/statfs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/statfs.h -@@ -42,7 +42,8 @@ struct statfs - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; -- __SWORD_TYPE f_spare[5]; -+ __SWORD_TYPE f_flags; -+ __SWORD_TYPE f_spare[4]; - }; - - #ifdef __USE_LARGEFILE64 -@@ -58,10 +59,12 @@ struct statfs64 - __fsid_t f_fsid; - __SWORD_TYPE f_namelen; - __SWORD_TYPE f_frsize; -- __SWORD_TYPE f_spare[5]; -+ __SWORD_TYPE f_flags; -+ __SWORD_TYPE f_spare[4]; - }; - #endif - - /* Tell code we have these members. */ - #define _STATFS_F_NAMELEN - #define _STATFS_F_FRSIZE -+#define _STATFS_F_FLAGS -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -@@ -29,6 +29,11 @@ - #include - #include - #include "linux_fsinfo.h" -+#include "kernel-features.h" -+ -+ -+/* Special internal-only bit value. */ -+#define ST_VALID 0x0020 - - - #ifndef STATFS -@@ -37,6 +42,7 @@ - # define INTERNAL_STATVFS __internal_statvfs - - -+# ifndef __ASSUME_STATFS_F_FLAGS - int - __statvfs_getflags (const char *name, int fstype, struct stat64 *st) - { -@@ -200,6 +206,7 @@ __statvfs_getflags (const char *name, in - - return result; - } -+# endif - #else - extern int __statvfs_getflags (const char *name, int fstype, - struct stat64 *st); -@@ -240,9 +247,14 @@ INTERNAL_STATVFS (const char *name, stru - /* XXX I have no idea how to compute f_favail. Any idea??? */ - buf->f_favail = buf->f_ffree; - -- /* Determining the flags is tricky. We have to read /proc/mounts or -- the /etc/mtab file and search for the entry which matches the given -- file. The way we can test for matching filesystem is using the -- device number. */ -- buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); -+#ifndef __ASSUME_STATFS_F_FLAGS -+ if ((fsbuf->f_flags & ST_VALID) == 0) -+ /* Determining the flags is tricky. We have to read /proc/mounts or -+ the /etc/mtab file and search for the entry which matches the given -+ file. The way we can test for matching filesystem is using the -+ device number. */ -+ buf->f_flag = __statvfs_getflags (name, fsbuf->f_type, st); -+ else -+#endif -+ buf->f_flag = fsbuf->f_flags ^ ST_VALID; - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/kernel-features.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/kernel-features.h -@@ -552,3 +552,8 @@ - #if __LINUX_KERNEL_VERSION >= 0x020621 - # define __ASSUME_RECVMMSG 1 - #endif -+ -+/* statfs fills in f_flags since 2.6.36. */ -+#if __LINUX_KERNEL_VERSION >= 0x020624 -+# define __ASSUME_STATFS_F_FLAGS 1 -+#endif -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/statfs.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/statfs.h -@@ -42,7 +42,8 @@ struct statfs - __fsid_t f_fsid; - int f_namelen; - int f_frsize; -- int f_spare[5]; -+ int f_flags; -+ int f_spare[4]; - }; - - #ifdef __USE_LARGEFILE64 -@@ -58,10 +59,12 @@ struct statfs64 - __fsid_t f_fsid; - int f_namelen; - int f_frsize; -- int f_spare[5]; -+ int f_flags; -+ int f_spare[4]; - }; - #endif - - /* Tell code we have this member. */ - #define _STATFS_F_NAMELEN - #define _STATFS_F_FRSIZE -+#define _STATFS_F_FLAGS diff --git a/src/patches/glibc/glibc-rh712248.patch b/src/patches/glibc/glibc-rh712248.patch deleted file mode 100644 index afadc6601..000000000 --- a/src/patches/glibc/glibc-rh712248.patch +++ /dev/null @@ -1,69 +0,0 @@ -2011-07-07 Ulrich Drepper - - [BZ #12868] - * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define Lustre constants. - * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): - Handle Lustre. - * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max): Likewise. - (__statfs_filesize_max): Likewise. - Patch mostly by Andreas Dilger . - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/internal_statvfs.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/internal_statvfs.c -@@ -109,6 +109,9 @@ __statvfs_getflags (const char *name, in - case LOGFS_MAGIC_U32: - fsname = "logfs"; - break; -+ case LUSTRE_SUPER_MAGIC: -+ fsname = "lustre"; -+ break; - } - - FILE *mtab = __setmntent ("/proc/mounts", "r"); -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/linux_fsinfo.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/linux_fsinfo.h -@@ -77,6 +77,9 @@ - /* Constant that identifies the `logfs´ filesystem. */ - #define LOGFS_MAGIC_U32 0xc97e8168u - -+/* Constant that identifies the `lustre' filesystem. */ -+#define LUSTRE_SUPER_MAGIC 0x0BD00BD0 -+ - /* Constants that identify the `minix2' filesystem. */ - #define MINIX2_SUPER_MAGIC 0x2468 - #define MINIX2_SUPER_MAGIC2 0x2478 -@@ -144,6 +147,8 @@ - /* Maximum link counts. */ - #define COH_LINK_MAX 10000 - #define EXT2_LINK_MAX 32000 -+#define EXT4_LINK_MAX 65000 -+#define LUSTRE_LINK_MAX EXT4_LINK_MAX - #define MINIX2_LINK_MAX 65530 - #define MINIX_LINK_MAX 250 - #define REISERFS_LINK_MAX 64535 -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/pathconf.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/pathconf.c -@@ -104,6 +104,9 @@ __statfs_link_max (int result, const str - case XFS_SUPER_MAGIC: - return XFS_LINK_MAX; - -+ case LUSTRE_SUPER_MAGIC: -+ return LUSTRE_LINK_MAX; -+ - default: - return LINUX_LINK_MAX; - } -@@ -136,6 +139,7 @@ __statfs_filesize_max (int result, const - case UDF_SUPER_MAGIC: - case JFS_SUPER_MAGIC: - case VXFS_SUPER_MAGIC: -+ case LUSTRE_SUPER_MAGIC: - return 64; - - case MSDOS_SUPER_MAGIC: diff --git a/src/patches/glibc/glibc-rh713134.patch b/src/patches/glibc/glibc-rh713134.patch deleted file mode 100644 index dc979be30..000000000 --- a/src/patches/glibc/glibc-rh713134.patch +++ /dev/null @@ -1,36 +0,0 @@ -2011-03-18 Andreas Schwab - - * elf/ldd.bash.in: Never run file directly. - -Index: glibc-2.12-2-gc4ccff1/elf/ldd.bash.in -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/ldd.bash.in -+++ glibc-2.12-2-gc4ccff1/elf/ldd.bash.in -@@ -167,18 +167,6 @@ warning: you do not have execution permi - fi - done - case $ret in -- 0) -- # If the program exits with exit code 5, it means the process has been -- # invoked with __libc_enable_secure. Fall back to running it through -- # the dynamic linker. -- try_trace "$file" -- rc=$? -- if [ $rc = 5 ]; then -- try_trace "$RTLD" "$file" -- rc=$? -- fi -- [ $rc = 0 ] || result=1 -- ;; - 1) - # This can be a non-ELF binary or no binary at all. - nonelf "$file" || { -@@ -186,7 +174,7 @@ warning: you do not have execution permi - result=1 - } - ;; -- 2) -+ 0|2) - try_trace "$RTLD" "$file" || result=1 - ;; - *) diff --git a/src/patches/glibc/glibc-rh714823.patch b/src/patches/glibc/glibc-rh714823.patch deleted file mode 100644 index 8bd121b99..000000000 --- a/src/patches/glibc/glibc-rh714823.patch +++ /dev/null @@ -1,126 +0,0 @@ -2011-06-28 Andreas Schwab - - * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use gethostbyaddr - to determine canonical name. - -2011-06-22 Andreas Schwab - - * sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change. - -2011-06-21 Ulrich Drepper - - [BZ #12885] - * sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6 - addresses using gethostbyname4_r ignore IPv4 addresses. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c -@@ -512,10 +512,11 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv4 and IPv6 together, use - the simple, old functions. */ -- if (req->ai_family == AF_INET -- || (req->ai_family == AF_INET6 -- && ((req->ai_flags & AI_V4MAPPED) == 0 -- || (req->ai_flags & AI_ALL) == 0))) -+ if ((req->ai_family == AF_INET -+ || (req->ai_family == AF_INET6 -+ && ((req->ai_flags & AI_V4MAPPED) == 0 -+ || (req->ai_flags & AI_ALL) == 0))) -+ && (req->ai_flags & AI_CANONNAME) == 0) - { - int family = req->ai_family; - size_t tmpbuflen = 512; -@@ -731,16 +732,44 @@ gaih_inet (const char *name, const struc - tmpbuflen, 2 * tmpbuflen); - } - -- no_inet6_data = no_data; -- - if (status == NSS_STATUS_SUCCESS) - { -+ assert (!no_data); -+ no_data = 1; -+ - if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL) - canon = (*pat)->name; - - while (*pat != NULL) -- pat = &((*pat)->next); -+ { -+ if ((*pat)->family == AF_INET -+ && req->ai_family == AF_INET6 -+ && (req->ai_flags & AI_V4MAPPED) != 0) -+ { -+ uint32_t *pataddr = (*pat)->addr; -+ (*pat)->family = AF_INET6; -+ pataddr[3] = pataddr[0]; -+ pataddr[2] = htonl (0xffff); -+ pataddr[1] = 0; -+ pataddr[0] = 0; -+ pat = &((*pat)->next); -+ no_data = 0; -+ } -+ else if (req->ai_family == AF_UNSPEC -+ || (*pat)->family == req->ai_family) -+ { -+ pat = &((*pat)->next); -+ -+ no_data = 0; -+ if (req->ai_family == AF_INET6) -+ got_ipv6 = true; -+ } -+ else -+ *pat = ((*pat)->next); -+ } - } -+ -+ no_inet6_data = no_data; - } - else - { -@@ -905,39 +934,9 @@ gaih_inet (const char *name, const struc - { - if (canon == NULL) - { -- struct hostent *h = NULL; -- int herrno; -- struct hostent th; -- size_t tmpbuflen = 512; -- char *tmpbuf = NULL; -- -- do -- { -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2); -- rc = __gethostbyaddr_r (at2->addr, -- ((at2->family == AF_INET6) -- ? sizeof (struct in6_addr) -- : sizeof (struct in_addr)), -- at2->family, &th, tmpbuf, -- tmpbuflen, &h, &herrno); -- } -- while (rc == ERANGE && herrno == NETDB_INTERNAL); -- -- if (rc != 0 && herrno == NETDB_INTERNAL) -- { -- __set_h_errno (herrno); -- return -EAI_SYSTEM; -- } -- -- if (h != NULL) -- canon = h->h_name; -- else -- { -- assert (orig_name != NULL); -- /* If the canonical name cannot be determined, use -- the passed in string. */ -- canon = orig_name; -- } -+ /* If the canonical name cannot be determined, use -+ the passed in string. */ -+ canon = orig_name; - } - - #ifdef HAVE_LIBIDN diff --git a/src/patches/glibc/glibc-rh718057.patch b/src/patches/glibc/glibc-rh718057.patch deleted file mode 100644 index d33199672..000000000 --- a/src/patches/glibc/glibc-rh718057.patch +++ /dev/null @@ -1,109 +0,0 @@ -2011-07-01 Andreas Schwab - - * nis/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Query NIS - domain only when needed. - -Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-pwd.c -+++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-pwd.c -@@ -360,7 +360,7 @@ getpwent_next_nss_netgr (const char *nam - char *group, char *buffer, size_t buflen, - int *errnop) - { -- char *curdomain, *host, *user, *domain, *p2; -+ char *curdomain = NULL, *host, *user, *domain, *p2; - int status; - size_t p2len; - -@@ -369,15 +369,7 @@ getpwent_next_nss_netgr (const char *nam - if (!nss_getpwnam_r) - return NSS_STATUS_UNAVAIL; - -- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -- { -- ent->netgroup = false; -- ent->first = false; -- give_pwd_free (&ent->pwd); -- return NSS_STATUS_UNAVAIL; -- } -- -- if (ent->first == true) -+ if (ent->first) - { - memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); -@@ -403,8 +395,19 @@ getpwent_next_nss_netgr (const char *nam - if (user == NULL || user[0] == '-') - continue; - -- if (domain != NULL && strcmp (curdomain, domain) != 0) -- continue; -+ if (domain != NULL) -+ { -+ if (curdomain == NULL -+ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -+ { -+ __internal_endnetgrent (&ent->netgrdata); -+ ent->netgroup = false; -+ give_pwd_free (&ent->pwd); -+ return NSS_STATUS_UNAVAIL; -+ } -+ if (strcmp (curdomain, domain) != 0) -+ continue; -+ } - - /* If name != NULL, we are called from getpwnam. */ - if (name != NULL) -Index: glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nis/nss_compat/compat-spwd.c -+++ glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-spwd.c -@@ -317,7 +317,7 @@ getspent_next_nss_netgr (const char *nam - char *group, char *buffer, size_t buflen, - int *errnop) - { -- char *curdomain, *host, *user, *domain, *p2; -+ char *curdomain = NULL, *host, *user, *domain, *p2; - size_t p2len; - - if (!nss_getspnam_r) -@@ -327,15 +327,7 @@ getspent_next_nss_netgr (const char *nam - if (ent->setent_status != NSS_STATUS_SUCCESS) - return ent->setent_status; - -- if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -- { -- ent->netgroup = false; -- ent->first = false; -- give_spwd_free (&ent->pwd); -- return NSS_STATUS_UNAVAIL; -- } -- -- if (ent->first == true) -+ if (ent->first) - { - memset (&ent->netgrdata, 0, sizeof (struct __netgrent)); - __internal_setnetgrent (group, &ent->netgrdata); -@@ -362,8 +354,19 @@ getspent_next_nss_netgr (const char *nam - if (user == NULL || user[0] == '-') - continue; - -- if (domain != NULL && strcmp (curdomain, domain) != 0) -- continue; -+ if (domain != NULL) -+ { -+ if (curdomain == NULL -+ && yp_get_default_domain (&curdomain) != YPERR_SUCCESS) -+ { -+ __internal_endnetgrent (&ent->netgrdata); -+ ent->netgroup = false; -+ give_spwd_free (&ent->pwd); -+ return NSS_STATUS_UNAVAIL; -+ } -+ if (strcmp (curdomain, domain) != 0) -+ continue; -+ } - - /* If name != NULL, we are called from getpwnam */ - if (name != NULL) diff --git a/src/patches/glibc/glibc-rh726517.patch b/src/patches/glibc/glibc-rh726517.patch deleted file mode 100644 index 26addbfb7..000000000 --- a/src/patches/glibc/glibc-rh726517.patch +++ /dev/null @@ -1,173 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/malloc/arena.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/arena.c -+++ glibc-2.12-2-gc4ccff1/malloc/arena.c -@@ -870,7 +870,7 @@ heap_trim(heap, pad) heap_info *heap; si - heap = prev_heap; - if(!prev_inuse(p)) { /* consolidate backward */ - p = prev_chunk(p); -- unlink(p, bck, fwd); -+ unlink(ar_ptr, p, bck, fwd); - } - assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); - assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); -Index: glibc-2.12-2-gc4ccff1/malloc/hooks.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/hooks.c -+++ glibc-2.12-2-gc4ccff1/malloc/hooks.c -@@ -219,7 +219,9 @@ top_check() - (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) - return 0; - -+ mutex_unlock(&main_arena); - malloc_printerr (check_action, "malloc: top chunk is corrupt", t); -+ mutex_lock(&main_arena); - - /* Try to set up a new top chunk. */ - brk = MORECORE(0); -Index: glibc-2.12-2-gc4ccff1/malloc/malloc.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/malloc/malloc.c -+++ glibc-2.12-2-gc4ccff1/malloc/malloc.c -@@ -2109,12 +2109,14 @@ typedef struct malloc_chunk* mbinptr; - #define last(b) ((b)->bk) - - /* Take a chunk off a bin list */ --#define unlink(P, BK, FD) { \ -+#define unlink(AV, P, BK, FD) { \ - FD = P->fd; \ - BK = P->bk; \ -- if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \ -+ if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ -+ mutex_unlock(&(AV)->mutex); \ - malloc_printerr (check_action, "corrupted double-linked list", P); \ -- else { \ -+ mutex_lock(&(AV)->mutex); \ -+ } else { \ - FD->bk = BK; \ - BK->fd = FD; \ - if (!in_smallbin_range (P->size) \ -@@ -3257,7 +3259,9 @@ static Void_t* sYSMALLOc(nb, av) INTERNA - - else if (contiguous(av) && old_size && brk < old_end) { - /* Oops! Someone else killed our space.. Can't touch anything. */ -+ mutex_unlock(&av->mutex); - malloc_printerr (3, "break adjusted to free malloc space", brk); -+ mutex_lock(&av->mutex); - } - - /* -@@ -4305,7 +4309,9 @@ _int_malloc(mstate av, size_t bytes) - { - errstr = "malloc(): memory corruption (fast)"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem (victim)); -+ mutex_lock(&av->mutex); - return NULL; - } - #ifndef ATOMIC_FASTBINS -@@ -4393,8 +4399,12 @@ _int_malloc(mstate av, size_t bytes) - bck = victim->bk; - if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) - || __builtin_expect (victim->size > av->system_mem, 0)) -- malloc_printerr (check_action, "malloc(): memory corruption", -- chunk2mem (victim)); -+ { -+ void *p = chunk2mem(victim); -+ mutex_unlock(&av->mutex); -+ malloc_printerr (check_action, "malloc(): memory corruption", p); -+ mutex_lock(&av->mutex); -+ } - size = chunksize(victim); - - /* -@@ -4535,7 +4545,7 @@ _int_malloc(mstate av, size_t bytes) - victim = victim->fd; - - remainder_size = size - nb; -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -4633,7 +4643,7 @@ _int_malloc(mstate av, size_t bytes) - remainder_size = size - nb; - - /* unlink */ -- unlink(victim, bck, fwd); -+ unlink(av, victim, bck, fwd); - - /* Exhaust */ - if (remainder_size < MINSIZE) { -@@ -4789,10 +4799,14 @@ _int_free(mstate av, mchunkptr p) - errstr = "free(): invalid pointer"; - errout: - #ifdef ATOMIC_FASTBINS -- if (! have_lock && locked) -+ if (have_lock || locked) - (void)mutex_unlock(&av->mutex); - #endif - malloc_printerr (check_action, errstr, chunk2mem(p)); -+#ifdef ATOMIC_FASTBINS -+ if (have_lock) -+ mutex_lock(&av->mutex); -+#endif - return; - } - /* We know that each chunk is at least MINSIZE bytes in size. */ -@@ -4961,7 +4975,7 @@ _int_free(mstate av, mchunkptr p) - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -4970,7 +4984,7 @@ _int_free(mstate av, mchunkptr p) - - /* consolidate forward */ - if (!nextinuse) { -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - size += nextsize; - } else - clear_inuse_bit_at_offset(nextchunk, 0); -@@ -5158,7 +5172,7 @@ static void malloc_consolidate(av) mstat - prevsize = p->prev_size; - size += prevsize; - p = chunk_at_offset(p, -((long) prevsize)); -- unlink(p, bck, fwd); -+ unlink(av, p, bck, fwd); - } - - if (nextchunk != av->top) { -@@ -5166,7 +5180,7 @@ static void malloc_consolidate(av) mstat - - if (!nextinuse) { - size += nextsize; -- unlink(nextchunk, bck, fwd); -+ unlink(av, nextchunk, bck, fwd); - } else - clear_inuse_bit_at_offset(nextchunk, 0); - -@@ -5235,7 +5249,9 @@ _int_realloc(mstate av, mchunkptr oldp, - { - errstr = "realloc(): invalid old size"; - errout: -+ mutex_unlock(&av->mutex); - malloc_printerr (check_action, errstr, chunk2mem(oldp)); -+ mutex_lock(&av->mutex); - return NULL; - } - -@@ -5282,7 +5298,7 @@ _int_realloc(mstate av, mchunkptr oldp, - (unsigned long)(newsize = oldsize + nextsize) >= - (unsigned long)(nb)) { - newp = oldp; -- unlink(next, bck, fwd); -+ unlink(av, next, bck, fwd); - } - - /* allocate, copy, free */ diff --git a/src/patches/glibc/glibc-rh730379.patch b/src/patches/glibc/glibc-rh730379.patch deleted file mode 100644 index 45808afed..000000000 --- a/src/patches/glibc/glibc-rh730379.patch +++ /dev/null @@ -1,34 +0,0 @@ -2011-08-17 Ulrich Drepper - - * Makeconfig (override CFLAGS): Add library-specific CFLAGS. - * resolv/Makefile: Define CFLAGS-libresolv. - -Index: glibc-2.12-2-gc4ccff1/Makeconfig -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/Makeconfig -+++ glibc-2.12-2-gc4ccff1/Makeconfig -@@ -700,7 +700,9 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl - override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \ - $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ - $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$( - - * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned - stack. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. - * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S -@@ -71,7 +71,9 @@ ENTRY(__pthread_enable_asynccancel) - - 1: ret - --3: movq $TCB_PTHREAD_CANCELED, %fs:RESULT -+3: subq $8, %rsp -+ cfi_adjust_cfa_offset(8) -+ movq $TCB_PTHREAD_CANCELED, %fs:RESULT - lock - orl $TCB_EXITING_BITMASK, %fs:CANCELHANDLING - movq %fs:CLEANUP_JMP_BUF, %rdi -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S -@@ -63,9 +63,9 @@ __pthread_cond_timedwait: - cfi_adjust_cfa_offset(8) - cfi_rel_offset(%r15, 0) - #ifdef __ASSUME_FUTEX_CLOCK_REALTIME --# define FRAME_SIZE 32 -+# define FRAME_SIZE (32+8) - #else --# define FRAME_SIZE 48 -+# define FRAME_SIZE (48+8) - #endif - subq $FRAME_SIZE, %rsp - cfi_adjust_cfa_offset(FRAME_SIZE) -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S -@@ -45,7 +45,7 @@ __pthread_cond_wait: - cfi_lsda(DW_EH_PE_udata4, .LexceptSTART) - #endif - --#define FRAME_SIZE 32 -+#define FRAME_SIZE (32+8) - leaq -FRAME_SIZE(%rsp), %rsp - cfi_adjust_cfa_offset(FRAME_SIZE) - diff --git a/src/patches/glibc/glibc-rh736346.patch b/src/patches/glibc/glibc-rh736346.patch deleted file mode 100644 index 2dd3f8a8d..000000000 --- a/src/patches/glibc/glibc-rh736346.patch +++ /dev/null @@ -1,116 +0,0 @@ -2011-01-14 Ulrich Drepper - - [BZ #10563] - * sysdeps/unix/sysv/linux/i386/setgroups.c: Use INLINE_SETXID_SYSCALL - to make the syscall. - * sysdeps/unix/sysv/linux/setgroups.c: New file. - -2011-01-14 Ulrich Drepper - - [BZ #10563] - * sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment. - (__SETXID_2): Likewise. - (__SETXID_3): Likewise. - -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/setxid.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/setxid.h -@@ -20,11 +20,11 @@ - #include - - #define __SETXID_1(cmd, arg1) \ -- cmd.id[0] = arg1 -+ cmd.id[0] = (long int) arg1 - #define __SETXID_2(cmd, arg1, arg2) \ -- __SETXID_1 (cmd, arg1); cmd.id[1] = arg2 -+ __SETXID_1 (cmd, arg1); cmd.id[1] = (long int) arg2 - #define __SETXID_3(cmd, arg1, arg2, arg3) \ -- __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = arg3 -+ __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = (long int) arg3 - - #ifdef SINGLE_THREAD - # define INLINE_SETXID_SYSCALL(name, nr, args...) \ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/setgroups.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/setgroups.c -@@ -25,6 +25,7 @@ - #include - #include - -+#include - #include - #include - -@@ -44,7 +45,7 @@ int - setgroups (size_t n, const gid_t *groups) - { - #if __ASSUME_32BITUIDS > 0 -- return INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); -+ return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); - #else - if (n > (size_t) __sysconf (_SC_NGROUPS_MAX)) - { -@@ -62,7 +63,8 @@ setgroups (size_t n, const gid_t *groups - int result; - int saved_errno = errno; - -- result = INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); -+ result = INLINE_SETXID_SYSCALL (setgroups32, 2, n, -+ CHECK_N (groups, n)); - if (result == 0 || errno != ENOSYS) - return result; - -@@ -80,7 +82,8 @@ setgroups (size_t n, const gid_t *groups - } - } - -- return INLINE_SYSCALL (setgroups, 2, n, CHECK_N (kernel_groups, n)); -+ return INLINE_SETXID_SYSCALL (setgroups, 2, n, -+ CHECK_N (kernel_groups, n)); - } - #endif - } -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c -=================================================================== ---- /dev/null -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/setgroups.c -@@ -0,0 +1,37 @@ -+/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011 -+ Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+ -+ -+/* Set the group set for the current user to GROUPS (N of them). For -+ Linux we must convert the array of groups into the format that the -+ kernel expects. */ -+int -+setgroups (size_t n, const gid_t *groups) -+{ -+#ifdef __NR_setgroups32 -+# error "wrong setgroups.c file used" -+#endif -+ return INLINE_SETXID_SYSCALL (setgroups, 2, n, groups); -+} -+libc_hidden_def (setgroups) diff --git a/src/patches/glibc/glibc-rh737778.patch b/src/patches/glibc/glibc-rh737778.patch deleted file mode 100644 index 5d3c131ca..000000000 --- a/src/patches/glibc/glibc-rh737778.patch +++ /dev/null @@ -1,122 +0,0 @@ -2011-08-14 Roland McGrath - - * locale/Makefile (locale-CPPFLAGS): Renamed CPPFLAGS-locale-programs. - (locale-CPPFLAGS): New variable; put LOCALEDIR, LOCALE_ALIAS_PATH and - -Iprograms here. - (cppflags-iterator.mk sequence): Use locale-programs in place of nonlib. - (localedef-modules): Add localedef. - (locale-modules): Add locale. - -2011-08-13 Ulrich Drepper - - * intl/l10nflist.c (_nl_normalize_codeset): Make it compile outside - of libc. Make tolower call locale-independent. Optimize a bit by - using isdigit instead of isalnum. - * locale/Makefile (locale-CPPFLAGS): Add -DNOT_IN_libc. - -2011-08-11 Ulrich Drepper - - * intl/l10nflist.c (_nl_make_l10nflist): Use locale-independent - classification. - -Index: glibc-2.12-2-gc4ccff1/intl/l10nflist.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/intl/l10nflist.c -+++ glibc-2.12-2-gc4ccff1/intl/l10nflist.c -@@ -332,13 +332,18 @@ _nl_normalize_codeset (codeset, name_len - char *retval; - char *wp; - size_t cnt; -+#ifdef NOT_IN_libc -+ locale_t locale = newlocale (0, "C", NULL); -+#else -+# define locale _nl_C_locobj_ptr -+#endif - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalnum ((unsigned char) codeset[cnt])) -+ if (__isalnum_l ((unsigned char) codeset[cnt], locale)) - { - ++len; - -- if (isalpha ((unsigned char) codeset[cnt])) -+ if (! __isdigit_l ((unsigned char) codeset[cnt], locale)) - only_digit = 0; - } - -@@ -346,15 +351,14 @@ _nl_normalize_codeset (codeset, name_len - - if (retval != NULL) - { -+ wp = retval; - if (only_digit) -- wp = stpcpy (retval, "iso"); -- else -- wp = retval; -+ wp = stpcpy (wp, "iso"); - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalpha ((unsigned char) codeset[cnt])) -- *wp++ = tolower ((unsigned char) codeset[cnt]); -- else if (isdigit ((unsigned char) codeset[cnt])) -+ if (__isalpha_l ((unsigned char) codeset[cnt], locale)) -+ *wp++ = __tolower_l ((unsigned char) codeset[cnt], locale); -+ else if (__isdigit_l ((unsigned char) codeset[cnt], locale)) - *wp++ = codeset[cnt]; - - *wp = '\0'; -Index: glibc-2.12-2-gc4ccff1/locale/Makefile -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/locale/Makefile -+++ glibc-2.12-2-gc4ccff1/locale/Makefile -@@ -59,10 +59,11 @@ vpath %.c programs ../crypt - vpath %.h programs - vpath %.gperf programs - --localedef-modules := $(categories:%=ld-%) charmap linereader locfile \ -+localedef-modules := localedef $(categories:%=ld-%) \ -+ charmap linereader locfile \ - repertoire locarchive - localedef-aux := md5 --locale-modules := locale-spec -+locale-modules := locale locale-spec - lib-modules := charmap-dir simple-hash xmalloc xstrdup - - -@@ -90,22 +91,27 @@ endif - - localepath = "$(localedir):$(i18ndir)" - --locale-CPPFLAGS := -DLOCALE_PATH='$(localepath)' \ -- -DLOCALEDIR='"$(localedir)"' \ -- -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ -- -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ -- -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ -- -DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \ -- -Iprograms -+# -Iprograms doesn't really belong here, but this gets it at the head -+# of the list instead of the tail, where CPPFLAGS-$(lib) gets added. -+# We need it before the standard -I's to see programs/config.h first. -+locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \ -+ -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \ -+ -Iprograms -+ -+CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \ -+ -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ -+ -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ -+ -DLOCSRCDIR='"$(i18ndir)/locales"' \ -+ -DHAVE_CONFIG_H -DNOT_IN_libc - - CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-charmap-dir.c = -Wno-write-strings - --# This makes sure -DNOT_IN_libc is passed for all these modules. -+# This makes sure -DNOT_IN_libc et al are passed for all these modules. - cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \ - $(locale-modules) $(lib-modules)) --lib := nonlib -+lib := locale-programs - include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) - - # Depend on libc.so so a DT_NEEDED is generated in the shared objects. diff --git a/src/patches/glibc/glibc-rh738665.patch b/src/patches/glibc/glibc-rh738665.patch deleted file mode 100644 index 1eea554e8..000000000 --- a/src/patches/glibc/glibc-rh738665.patch +++ /dev/null @@ -1,149 +0,0 @@ -2011-09-15 Andreas Schwab - - * sysdeps/pthread/list.h: Define only list_t if __need_list_t is - defined. - (list_add): Add atomic_write_barrier. - * descr.h: Define __need_list_t before including . - * nptl-init.c: Include - * allocatestack.c: Likewise. - -2011-09-15 Andreas Schwab - - * thread_dbP.h: Include - -Index: glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/allocatestack.c -+++ glibc-2.12-2-gc4ccff1/nptl/allocatestack.c -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - #include - #include - -Index: glibc-2.12-2-gc4ccff1/nptl/descr.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/descr.h -+++ glibc-2.12-2-gc4ccff1/nptl/descr.h -@@ -26,6 +26,7 @@ - #include - #include - #include -+#define __need_list_t - #include - #include - #include -Index: glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/nptl-init.c -+++ glibc-2.12-2-gc4ccff1/nptl/nptl-init.c -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - #include - #include - #include -Index: glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl/sysdeps/pthread/list.h -+++ glibc-2.12-2-gc4ccff1/nptl/sysdeps/pthread/list.h -@@ -18,27 +18,39 @@ - 02111-1307 USA. */ - - #ifndef _LIST_H --#define _LIST_H 1 -+ -+#ifndef __need_list_t -+# define _LIST_H 1 -+#endif - - /* The definitions of this file are adopted from those which can be - found in the Linux kernel headers to enable people familiar with - the latter find their way in these sources as well. */ - - -+#if defined __need_list_t || defined _LIST_H -+# ifndef __list_t_defined -+# define __list_t_defined - /* Basic type for the double-link list. */ - typedef struct list_head - { - struct list_head *next; - struct list_head *prev; - } list_t; -+# endif -+# undef __need_list_t -+#endif -+ -+#ifdef _LIST_H - -+# include - - /* Define a variable with the head and tail of the list. */ --#define LIST_HEAD(name) \ -+# define LIST_HEAD(name) \ - list_t name = { &(name), &(name) } - - /* Initialize a new list head. */ --#define INIT_LIST_HEAD(ptr) \ -+# define INIT_LIST_HEAD(ptr) \ - (ptr)->next = (ptr)->prev = (ptr) - - -@@ -49,6 +61,7 @@ list_add (list_t *newp, list_t *head) - newp->next = head->next; - newp->prev = head; - head->next->prev = newp; -+ atomic_write_barrier (); - head->next = newp; - } - -@@ -78,26 +91,28 @@ list_splice (list_t *add, list_t *head) - - - /* Get typed element from list at a given position. */ --#define list_entry(ptr, type, member) \ -+# define list_entry(ptr, type, member) \ - ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) - - - - /* Iterate forward over the elements of the list. */ --#define list_for_each(pos, head) \ -+# define list_for_each(pos, head) \ - for (pos = (head)->next; pos != (head); pos = pos->next) - - - /* Iterate forward over the elements of the list. */ --#define list_for_each_prev(pos, head) \ -+# define list_for_each_prev(pos, head) \ - for (pos = (head)->prev; pos != (head); pos = pos->prev) - - - /* Iterate backwards over the elements list. The list elements can be - removed from the list while doing this. */ --#define list_for_each_prev_safe(pos, p, head) \ -+# define list_for_each_prev_safe(pos, p, head) \ - for (pos = (head)->prev, p = pos->prev; \ - pos != (head); \ - pos = p, p = pos->prev) - -+#endif /* _LIST_H */ -+ - #endif /* list.h */ -Index: glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nptl_db/thread_dbP.h -+++ glibc-2.12-2-gc4ccff1/nptl_db/thread_dbP.h -@@ -29,6 +29,7 @@ - #include "proc_service.h" - #include "thread_db.h" - #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ -+#include - - /* Indeces for the symbol names. */ - enum diff --git a/src/patches/glibc/glibc-rh738763.patch b/src/patches/glibc/glibc-rh738763.patch deleted file mode 100644 index 728464d2a..000000000 --- a/src/patches/glibc/glibc-rh738763.patch +++ /dev/null @@ -1,17 +0,0 @@ -2011-09-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/in.h (IP_MULTICAST_ALL): Define. - Patch mostly by Neil Horman . - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/bits/in.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/bits/in.h -@@ -70,6 +70,7 @@ - #define IP_XFRM_POLICY 17 - #define IP_PASSSEC 18 - #define IP_TRANSPARENT 19 -+#define IP_MULTICAST_ALL 49 /* bool */ - - /* TProxy original addresses */ - #define IP_ORIGDSTADDR 20 diff --git a/src/patches/glibc/glibc-rh739184.patch b/src/patches/glibc/glibc-rh739184.patch deleted file mode 100644 index cf122465a..000000000 --- a/src/patches/glibc/glibc-rh739184.patch +++ /dev/null @@ -1,18 +0,0 @@ -2010-06-10 Andreas Schwab - - * sysdeps/unix/sysv/linux/getpagesize.c: Don't assume AT_PAGESIZE - is always available. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/getpagesize.c -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/getpagesize.c -@@ -28,7 +28,7 @@ - int - __getpagesize () - { --#ifdef __ASSUME_AT_PAGESIZE -+#if 0 && defined __ASSUME_AT_PAGESIZE - assert (GLRO(dl_pagesize) != 0); - return GLRO(dl_pagesize); - #else diff --git a/src/patches/glibc/glibc-rh739971.patch b/src/patches/glibc/glibc-rh739971.patch deleted file mode 100644 index 960c192dc..000000000 --- a/src/patches/glibc/glibc-rh739971.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit 32c76b63be605d12314e0c6ac2bd702c883d1423 -Author: Andreas Schwab -Date: Mon Sep 26 17:49:14 2011 +0200 - - Correctly reparse group line after enlarging the buffer - -diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c -index 113abf2..c343b35 100644 ---- a/nss/nss_files/files-initgroups.c -+++ b/nss/nss_files/files-initgroups.c -@@ -52,8 +52,10 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - gid_t *groups = *groupsp; - - /* We have to iterate over the entire file. */ -- while (!feof_unlocked (stream)) -+ while (1) - { -+ fpos_t pos; -+ fgetpos (stream, &pos); - ssize_t n = getline (&line, &linelen, stream); - if (n < 0) - { -@@ -64,9 +66,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - } - - struct group grp; -- int res; -- while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen, -- errnop)) == -1) -+ int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop); -+ if (res == -1) - { - size_t newbuflen = 2 * buflen; - if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen)) -@@ -85,6 +86,9 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start, - } - else - buffer = extend_alloca (buffer, buflen, newbuflen); -+ /* Reread current line, the parser has clobbered it. */ -+ fsetpos (stream, &pos); -+ continue; - } - - if (res > 0 && grp.gr_gid != group) diff --git a/src/patches/glibc/glibc-rh740506-2.patch b/src/patches/glibc/glibc-rh740506-2.patch deleted file mode 100644 index adefea04b..000000000 --- a/src/patches/glibc/glibc-rh740506-2.patch +++ /dev/null @@ -1,35 +0,0 @@ - * malloc/arena.c (arena_get2): Avoid unnecessarily - retrieving #cpus from /proc. - * malloc/malloc.c (mALLOPt): Clamp arena_test based on - the value of arena_max. - -diff --git a/malloc/arena.c b/malloc/arena.c -index cb8548b..00f1da5 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size) - { - if (mp_.arena_max != 0) - narenas_limit = mp_.arena_max; -- else -+ else if (narenas > mp_.arena_test) - { - int n = __get_nprocs (); - -diff --git a/malloc/malloc.c b/malloc/malloc.c -index 8608083..f8d32da 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c -@@ -6134,6 +6134,12 @@ int mALLOPt(param_number, value) int par - break; - #endif - } -+#ifdef PER_THREAD -+ /* Clamp ARENA_TEST from ARENA_MAX to avoid creating too many -+ arenas. */ -+ if (mp_.arena_max > 0 && mp_.arena_max <= mp_.arena_test) -+ mp_.arena_test = mp_.arena_max - 1; -+#endif - (void)mutex_unlock(&av->mutex); - return res; - } diff --git a/src/patches/glibc/glibc-rh740506.patch b/src/patches/glibc/glibc-rh740506.patch deleted file mode 100644 index 6c74ccf10..000000000 --- a/src/patches/glibc/glibc-rh740506.patch +++ /dev/null @@ -1,132 +0,0 @@ -2011-11-14 Andreas Schwab - - * malloc/arena.c (arena_get2): Don't call reused_arena when - _int_new_arena failed. - -2011-11-10 Andreas Schwab - - * malloc/arena.c (_int_new_arena): Don't increment narenas. - (reused_arena): Don't check arena limit. - (arena_get2): Atomically check arena limit. - -diff --git a/malloc/arena.c b/malloc/arena.c -index 9114fd2..042cac8 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -747,8 +747,6 @@ _int_new_arena(size_t size) - main_arena.next = a; - - #ifdef PER_THREAD -- ++narenas; -- - (void)mutex_unlock(&list_lock); - #endif - -@@ -786,30 +784,6 @@ get_free_list (void) - static mstate - reused_arena (void) - { -- if (narenas <= mp_.arena_test) -- return NULL; -- -- static int narenas_limit; -- if (narenas_limit == 0) -- { -- if (mp_.arena_max != 0) -- narenas_limit = mp_.arena_max; -- else -- { -- int n = __get_nprocs (); -- -- if (n >= 1) -- narenas_limit = NARENAS_FROM_NCORES (n); -- else -- /* We have no information about the system. Assume two -- cores. */ -- narenas_limit = NARENAS_FROM_NCORES (2); -- } -- } -- -- if (narenas < narenas_limit) -- return NULL; -- - mstate result; - static mstate next_to_use; - if (next_to_use == NULL) -@@ -844,10 +818,41 @@ arena_get2(mstate a_tsd, size_t size) - mstate a; - - #ifdef PER_THREAD -- if ((a = get_free_list ()) == NULL -- && (a = reused_arena ()) == NULL) -- /* Nothing immediately available, so generate a new arena. */ -- a = _int_new_arena(size); -+ static size_t narenas_limit; -+ -+ a = get_free_list (); -+ if (a == NULL) -+ { -+ /* Nothing immediately available, so generate a new arena. */ -+ if (narenas_limit == 0) -+ { -+ if (mp_.arena_max != 0) -+ narenas_limit = mp_.arena_max; -+ else -+ { -+ int n = __get_nprocs (); -+ -+ if (n >= 1) -+ narenas_limit = NARENAS_FROM_NCORES (n); -+ else -+ /* We have no information about the system. Assume two -+ cores. */ -+ narenas_limit = NARENAS_FROM_NCORES (2); -+ } -+ } -+ repeat:; -+ size_t n = narenas; -+ if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) -+ { -+ if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) -+ goto repeat; -+ a = _int_new_arena (size); -+ if (__builtin_expect (a != NULL, 1)) -+ return a; -+ catomic_decrement(&narenas); -+ } -+ a = reused_arena (); -+ } - #else - if(!a_tsd) - a = a_tsd = &main_arena; - -commit a5fb313cb7b7e692fd4684916aaa98e03ec7e8b6 -Author: Andreas Schwab -Date: Mon Nov 14 11:41:52 2011 +0100 - - Don't call reused_arena when _int_new_arena failed - -diff --git a/malloc/arena.c b/malloc/arena.c -index 042cac8..cb8548b 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -844,14 +844,14 @@ arena_get2(mstate a_tsd, size_t size) - size_t n = narenas; - if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0)) - { -- if (catomic_compare_and_exchange_bool_acq(&narenas, n + 1, n)) -+ if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n)) - goto repeat; - a = _int_new_arena (size); -- if (__builtin_expect (a != NULL, 1)) -- return a; -- catomic_decrement(&narenas); -+ if (__builtin_expect (a == NULL, 0)) -+ catomic_decrement (&narenas); - } -- a = reused_arena (); -+ else -+ a = reused_arena (); - } - #else - if(!a_tsd) diff --git a/src/patches/glibc/glibc-rh749188.patch b/src/patches/glibc/glibc-rh749188.patch deleted file mode 100644 index 43157cd1a..000000000 --- a/src/patches/glibc/glibc-rh749188.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 0e8131bb32cf026c87baeacb7abf2a9bdbbc4953 -Author: Andreas Schwab -Date: Sun May 8 21:48:03 2011 -0400 - - Remove .UTF-8 suffix from locale names when it is the only supported codeset - -diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED -index d665961..e952c17 100644 ---- a/localedata/SUPPORTED -+++ b/localedata/SUPPORTED -@@ -46,8 +46,8 @@ ar_TN.UTF-8/UTF-8 \ - ar_TN/ISO-8859-6 \ - ar_YE.UTF-8/UTF-8 \ - ar_YE/ISO-8859-6 \ --az_AZ.UTF-8/UTF-8 \ --as_IN.UTF-8/UTF-8 \ -+az_AZ/UTF-8 \ -+as_IN/UTF-8 \ - ast_ES.UTF-8/UTF-8 \ - ast_ES/ISO-8859-15 \ - be_BY.UTF-8/UTF-8 \ -@@ -385,8 +385,8 @@ tr_CY/ISO-8859-9 \ - tr_TR.UTF-8/UTF-8 \ - tr_TR/ISO-8859-9 \ - ts_ZA/UTF-8 \ --tt_RU.UTF-8/UTF-8 \ --tt_RU.UTF-8@iqtelif/UTF-8 \ -+tt_RU/UTF-8 \ -+tt_RU@iqtelif/UTF-8 \ - ug_CN/UTF-8 \ - uk_UA.UTF-8/UTF-8 \ - uk_UA/KOI8-U \ diff --git a/src/patches/glibc/glibc-rh750531.patch b/src/patches/glibc/glibc-rh750531.patch deleted file mode 100644 index a53e770ed..000000000 --- a/src/patches/glibc/glibc-rh750531.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit 69da074d7adfab7b57004a0dea9403a928e310a5 -Author: Ulrich Drepper -Date: Wed Nov 10 02:38:35 2010 -0500 - - Fix warnings in __bswap_16. - -diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h -index 1f3fc5e..c246ae8 100644 ---- a/sysdeps/i386/bits/byteswap.h -+++ b/sysdeps/i386/bits/byteswap.h -@@ -1,5 +1,5 @@ - /* Macros to swap the order of bytes in integer values. -- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008 -+ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -27,26 +27,27 @@ - - /* Swap bytes in 16 bit value. */ - #define __bswap_constant_16(x) \ -- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) -+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) - - #ifdef __GNUC__ - # if __GNUC__ >= 2 - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __v, __x = (x); \ -+ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_16 (__x); \ - else \ - __asm__ ("rorw $8, %w0" \ - : "=r" (__v) \ -- : "0" (__x) \ -- : "cc"); \ -+ : "0" (__x) \ -+ : "cc"); \ - __v; })) - # else - /* This is better than nothing. */ - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) -+ ({ register unsigned short int __x = (unsigned short int) (x); \ -+ __bswap_constant_16 (__x); })) - # endif - #else - static __inline unsigned short int -@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx) - (__extension__ \ - ({ union { __extension__ unsigned long long int __ll; \ - unsigned long int __l[2]; } __w, __r; \ -- if (__builtin_constant_p (x)) \ -+ if (__builtin_constant_p (x)) \ - __r.__ll = __bswap_constant_64 (x); \ - else \ - { \ -diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86_64/bits/byteswap.h -index 08b38e8..e350fb8 100644 ---- a/sysdeps/x86_64/bits/byteswap.h -+++ b/sysdeps/x86_64/bits/byteswap.h -@@ -1,5 +1,5 @@ - /* Macros to swap the order of bytes in integer values. -- Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 -+ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -29,12 +29,12 @@ - - /* Swap bytes in 16 bit value. */ - #define __bswap_constant_16(x) \ -- ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) -+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) - - #if defined __GNUC__ && __GNUC__ >= 2 - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __v, __x = (x); \ -+ ({ register unsigned short int __v, __x = (unsigned short int) (x); \ - if (__builtin_constant_p (__x)) \ - __v = __bswap_constant_16 (__x); \ - else \ -@@ -47,7 +47,8 @@ - /* This is better than nothing. */ - # define __bswap_16(x) \ - (__extension__ \ -- ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) -+ ({ register unsigned short int __x = (unsigned short int) (x); \ -+ __bswap_constant_16 (__x); })) - #endif - - -@@ -120,16 +121,16 @@ - # define __bswap_64(x) \ - (__extension__ \ - ({ union { __extension__ unsigned long long int __ll; \ -- unsigned int __l[2]; } __w, __r; \ -- if (__builtin_constant_p (x)) \ -- __r.__ll = __bswap_constant_64 (x); \ -- else \ -- { \ -- __w.__ll = (x); \ -- __r.__l[0] = __bswap_32 (__w.__l[1]); \ -- __r.__l[1] = __bswap_32 (__w.__l[0]); \ -- } \ -- __r.__ll; })) -+ unsigned int __l[2]; } __w, __r; \ -+ if (__builtin_constant_p (x)) \ -+ __r.__ll = __bswap_constant_64 (x); \ -+ else \ -+ { \ -+ __w.__ll = (x); \ -+ __r.__l[0] = __bswap_32 (__w.__l[1]); \ -+ __r.__l[1] = __bswap_32 (__w.__l[0]); \ -+ } \ -+ __r.__ll; })) - # endif - #endif - diff --git a/src/patches/glibc/glibc-rh751750.patch b/src/patches/glibc/glibc-rh751750.patch deleted file mode 100644 index 6f9dd120d..000000000 --- a/src/patches/glibc/glibc-rh751750.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 7583a88d1c7170caad26966bcea8bfc2c92093ba -Author: Andreas Schwab -Date: Mon Nov 7 15:07:31 2011 +0100 - - Fix locking in _IO_flush_all_lockp - -diff --git a/libio/genops.c b/libio/genops.c -index 5d21c42..bb40c34 100644 ---- a/libio/genops.c -+++ b/libio/genops.c -@@ -826,7 +826,7 @@ _IO_flush_all_lockp (int do_lock) - int last_stamp; - - #ifdef _IO_MTSAFE_IO -- _IO_cleanup_region_start_noarg (flush_cleanup); -+ __libc_cleanup_region_start (do_lock, flush_cleanup, 0); - if (do_lock) - _IO_lock_lock (list_all_lock); - #endif -@@ -866,7 +866,7 @@ _IO_flush_all_lockp (int do_lock) - #ifdef _IO_MTSAFE_IO - if (do_lock) - _IO_lock_unlock (list_all_lock); -- _IO_cleanup_region_end (0); -+ __libc_cleanup_region_end (0); - #endif - - return result; diff --git a/src/patches/glibc/glibc-rh752122.patch b/src/patches/glibc/glibc-rh752122.patch deleted file mode 100644 index 0176dc9a7..000000000 --- a/src/patches/glibc/glibc-rh752122.patch +++ /dev/null @@ -1,260 +0,0 @@ -2011-07-24 H.J. Lu - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Simplify - AVX check. - -2011-08-20 Ulrich Drepper - - * sysdeps/x86_64/dl-trampoline.h: If MORE_CODE is defined, restore - the CFI state in the end. - * sysdeps/x86_64/dl-trampoline.S: Define MORE_CODE before first - inclusion of dl-trampoline.h. - Based on a patch by Jiri Olsa . - -2011-07-23 Ulrich Drepper - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix one more - typo. - (_dl_x86_64_save_sse): Likewise. - -2011-07-22 Ulrich Drepper - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix test for - OSXSAVE. - (_dl_x86_64_save_sse): Likewise. - -2011-07-21 Andreas Schwab - - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Fix last - change. - (_dl_x86_64_save_sse): Use correct AVX check. - -2011-07-20 Ulrich Drepper - - [BZ #13007] - * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): More complete - check for AVX enablement so that we don't crash with old kernels and - new hardware. - * elf/tst-audit4.c: Add same checks here. - * elf/tst-audit6.c: Likewise. - -Index: glibc-2.12-2-gc4ccff1/elf/tst-audit4.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit4.c -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit4.c -@@ -6,16 +6,30 @@ - #include - #include - -+ -+static int -+avx_enabled (void) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 -+ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) -+ return 0; -+ -+ /* Check the OS has AVX and SSE saving enabled. */ -+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); -+ -+ return (eax & 6) == 6; -+} -+ -+ - extern __m256i audit_test (__m256i, __m256i, __m256i, __m256i, - __m256i, __m256i, __m256i, __m256i); - int - main (void) - { -- unsigned int eax, ebx, ecx, edx; -- - /* Run AVX test only if AVX is supported. */ -- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) -- && (ecx & bit_AVX)) -+ if (avx_enabled ()) - { - __m256i ymm = _mm256_setzero_si256 (); - __m256i ret = audit_test (ymm, ymm, ymm, ymm, ymm, ymm, ymm, ymm); -Index: glibc-2.12-2-gc4ccff1/elf/tst-audit6.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit6.c -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit6.c -@@ -8,14 +8,28 @@ - extern __m128i audit_test (__m128i, __m128i, __m128i, __m128i, - __m128i, __m128i, __m128i, __m128i); - --int --main (void) -+ -+static int -+avx_enabled (void) - { - unsigned int eax, ebx, ecx, edx; - -+ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) == 0 -+ || (ecx & (bit_AVX | bit_OSXSAVE)) != (bit_AVX | bit_OSXSAVE)) -+ return 0; -+ -+ /* Check the OS has AVX and SSE saving enabled. */ -+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); -+ -+ return (eax & 6) == 6; -+} -+ -+ -+int -+main (void) -+{ - /* Run AVX test only if AVX is supported. */ -- if (__get_cpuid (1, &eax, &ebx, &ecx, &edx) -- && (ecx & bit_AVX)) -+ if (avx_enabled ()) - { - __m128i xmm = _mm_setzero_si128 (); - __m128i ret = audit_test (xmm, xmm, xmm, xmm, xmm, xmm, xmm, xmm); -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.S -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.S -@@ -139,24 +139,31 @@ L(have_avx): - movl $1, %eax - cpuid - movq %r11,%rbx # Restore rbx -- movl $1, %eax -- testl $(1 << 28), %ecx -+ xorl %eax, %eax -+ // AVX and XSAVE supported? -+ andl $((1 << 28) | (1 << 27)), %ecx -+ cmpl $((1 << 28) | (1 << 27)), %ecx - jne 2f -- negl %eax --2: movl %eax, L(have_avx)(%rip) -+ xorl %ecx, %ecx -+ // Get XFEATURE_ENABLED_MASK -+ xgetbv -+ andl $0x6, %eax -+2: subl $0x5, %eax -+ movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - - 1: js L(no_avx) - - # define RESTORE_AVX -+# define MORE_CODE - # include "dl-trampoline.h" - - .align 16 - L(no_avx): - # endif - --# undef RESTORE_AVX --# include "dl-trampoline.h" -+# undef RESTORE_AVX -+# include "dl-trampoline.h" - - cfi_endproc - .size _dl_runtime_profile, .-_dl_runtime_profile -@@ -176,11 +183,20 @@ _dl_x86_64_save_sse: - movl $1, %eax - cpuid - movq %r11,%rbx # Restore rbx -- movl $1, %eax -- testl $(1 << 28), %ecx -+ xorl %eax, %eax -+ // AVX and XSAVE supported? -+ andl $((1 << 28) | (1 << 27)), %ecx -+ cmpl $((1 << 28) | (1 << 27)), %ecx - jne 2f -- negl %eax --2: movl %eax, L(have_avx)(%rip) -+ xorl %ecx, %ecx -+ // Get XFEATURE_ENABLED_MASK -+ xgetbv -+ andl $0x6, %eax -+ cmpl $0x6, %eax -+ // Nonzero if SSE and AVX state saving is enabled. -+ sete %al -+2: leal -1(%eax,%eax), %eax -+ movl %eax, L(have_avx)(%rip) - cmpl $0, %eax - - 1: js L(no_avx5) -Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/dl-trampoline.h -+++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-trampoline.h -@@ -195,14 +195,14 @@ - _dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now, - so we just need to allocate the sizeof(La_x86_64_retval) space on - the stack, since the alignment has already been taken care of. */ --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* sizeof(La_x86_64_retval). Need extra space for 2 SSE - registers to detect if xmm0/xmm1 registers are changed - by audit module. */ - subq $(LRV_SIZE + XMM_SIZE*2), %rsp --# else -+#else - subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval) --# endif -+#endif - movq %rsp, %rcx # La_x86_64_retval argument to %rcx. - - /* Fill in the La_x86_64_retval structure. */ -@@ -212,7 +212,7 @@ - movaps %xmm0, LRV_XMM0_OFFSET(%rcx) - movaps %xmm1, LRV_XMM1_OFFSET(%rcx) - --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* This is to support AVX audit modules. */ - vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx) - vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx) -@@ -221,14 +221,14 @@ - by audit module. */ - vmovdqa %xmm0, (LRV_SIZE)(%rcx) - vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx) --# endif -+#endif - - fstpt LRV_ST0_OFFSET(%rcx) - fstpt LRV_ST1_OFFSET(%rcx) - - movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx. - movq 40(%rbx), %rsi # Copy args pushed by PLT in register. -- movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index -+ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index - call _dl_call_pltexit - - /* Restore return registers. */ -@@ -238,7 +238,7 @@ - movaps LRV_XMM0_OFFSET(%rsp), %xmm0 - movaps LRV_XMM1_OFFSET(%rsp), %xmm1 - --# ifdef RESTORE_AVX -+#ifdef RESTORE_AVX - /* Check if xmm0/xmm1 registers are changed by audit module. */ - vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2 - vpmovmskb %xmm2, %esi -@@ -253,7 +253,7 @@ - vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1 - - 1: --# endif -+#endif - - fldt LRV_ST1_OFFSET(%rsp) - fldt LRV_ST0_OFFSET(%rsp) -@@ -267,3 +267,10 @@ - # (eats the reloc index and link_map) - cfi_adjust_cfa_offset(-48) - retq -+ -+#ifdef MORE_CODE -+ cfi_adjust_cfa_offset(48) -+ cfi_rel_offset(%rbx, 0) -+ cfi_def_cfa_register(%rbx) -+# undef MORE_CODE -+#endif diff --git a/src/patches/glibc/glibc-rh757888.patch b/src/patches/glibc/glibc-rh757888.patch deleted file mode 100644 index 721d4a481..000000000 --- a/src/patches/glibc/glibc-rh757888.patch +++ /dev/null @@ -1,225 +0,0 @@ -commit f3a6cc0a560a17f32a3e90d2f20501a53cab6058 -Author: Andreas Schwab -Date: Tue Nov 29 10:52:22 2011 +0100 - - Fix access after end of search string in regex matcher - -diff --git a/locale/weight.h b/locale/weight.h -index dc70a00..967e176 100644 ---- a/locale/weight.h -+++ b/locale/weight.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004 Free Software Foundation, Inc. -+/* Copyright (C) 1996,1997,1998,1999,2000,2003,2004,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper, . - -@@ -20,7 +20,7 @@ - /* Find index of weight. */ - auto inline int32_t - __attribute ((always_inline)) --findidx (const unsigned char **cpp) -+findidx (const unsigned char **cpp, size_t len) - { - int_fast32_t i = table[*(*cpp)++]; - const unsigned char *cp; -@@ -34,6 +34,7 @@ findidx (const unsigned char **cpp) - Search for the correct one. */ - cp = &extra[-i]; - usrc = *cpp; -+ --len; - while (1) - { - size_t nhere; -@@ -56,7 +57,7 @@ findidx (const unsigned char **cpp) - already. */ - size_t cnt; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -@@ -79,13 +80,13 @@ findidx (const unsigned char **cpp) - size_t cnt; - size_t offset = 0; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - - if (cnt != nhere) - { -- if (cp[cnt] > usrc[cnt]) -+ if (cnt == len || cp[cnt] > usrc[cnt]) - { - /* Cannot be in this range. */ - cp += 2 * nhere; -diff --git a/locale/weightwc.h b/locale/weightwc.h -index 9ea1126..7862091 100644 ---- a/locale/weightwc.h -+++ b/locale/weightwc.h -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2001,2003,2004,2005,2007 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2001,2003,2004,2005,2007,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper, . - -@@ -20,7 +20,7 @@ - /* Find index of weight. */ - auto inline int32_t - __attribute ((always_inline)) --findidx (const wint_t **cpp) -+findidx (const wint_t **cpp, size_t len) - { - wint_t ch = *(*cpp)++; - int32_t i = __collidx_table_lookup ((const char *) table, ch); -@@ -32,6 +32,7 @@ findidx (const wint_t **cpp) - /* Oh well, more than one sequence starting with this byte. - Search for the correct one. */ - const int32_t *cp = (const int32_t *) &extra[-i]; -+ --len; - while (1) - { - size_t nhere; -@@ -54,7 +55,7 @@ findidx (const wint_t **cpp) - already. */ - size_t cnt; - -- for (cnt = 0; cnt < nhere; ++cnt) -+ for (cnt = 0; cnt < nhere && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -@@ -75,7 +76,7 @@ findidx (const wint_t **cpp) - size_t cnt; - size_t offset; - -- for (cnt = 0; cnt < nhere - 1; ++cnt) -+ for (cnt = 0; cnt < nhere - 1 && cnt < len; ++cnt) - if (cp[cnt] != usrc[cnt]) - break; - -diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c -index 18a6667..72bd3ee 100644 ---- a/posix/fnmatch_loop.c -+++ b/posix/fnmatch_loop.c -@@ -412,7 +412,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); - # endif - -- idx = findidx (&cp); -+ idx = findidx (&cp, 1); - if (idx != 0) - { - /* We found a table entry. Now see whether the -@@ -422,7 +422,7 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) - int32_t idx2; - const UCHAR *np = (const UCHAR *) n; - -- idx2 = findidx (&np); -+ idx2 = findidx (&np, string_end - n); - if (idx2 != 0 - && (idx >> 24) == (idx2 >> 24) - && len == weights[idx2 & 0xffffff]) -diff --git a/posix/regcomp.c b/posix/regcomp.c -index b238c08..34ee845 100644 ---- a/posix/regcomp.c -+++ b/posix/regcomp.c -@@ -1,5 +1,5 @@ - /* Extended regular expression matching and search library. -- Copyright (C) 2002-2007,2009,2010 Free Software Foundation, Inc. -+ Copyright (C) 2002-2007,2009,2010,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Isamu Hasegawa . - -@@ -3409,19 +3409,18 @@ build_equiv_class (bitset_t sbcset, const unsigned char *name) - _NL_COLLATE_EXTRAMB); - indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_INDIRECTMB); -- idx1 = findidx (&cp); -- if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0)) -+ idx1 = findidx (&cp, -1); -+ if (BE (idx1 == 0 || *cp != '\0', 0)) - /* This isn't a valid character. */ - return REG_ECOLLATE; - - /* Build single byte matcing table for this equivalence class. */ -- char_buf[1] = (unsigned char) '\0'; - len = weights[idx1 & 0xffffff]; - for (ch = 0; ch < SBC_MAX; ++ch) - { - char_buf[0] = ch; - cp = char_buf; -- idx2 = findidx (&cp); -+ idx2 = findidx (&cp, 1); - /* - idx2 = table[ch]; - */ - ---- a/posix/regex_internal.h 2011-11-30 12:47:02.706567482 -0700 -+++ a/posix/regex_internal.h 2011-11-30 12:47:32.969558337 -0700 -@@ -756,7 +756,7 @@ - indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE, - _NL_COLLATE_INDIRECTMB); - p = pstr->mbs + idx; -- tmp = findidx (&p); -+ tmp = findidx (&p, pstr->len - idx); - return p - pstr->mbs - idx; - } - else -diff --git a/posix/regexec.c b/posix/regexec.c -index 9e0c565..3ea810b 100644 ---- a/posix/regexec.c -+++ b/posix/regexec.c -@@ -3924,7 +3924,7 @@ check_node_accept_bytes (const re_dfa_t *dfa, int node_idx, - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); - indirect = (const int32_t *) - _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); -- int32_t idx = findidx (&cp); -+ int32_t idx = findidx (&cp, elem_len); - if (idx > 0) - for (i = 0; i < cset->nequiv_classes; ++i) - { -diff --git a/string/strcoll_l.c b/string/strcoll_l.c -index d8d1139..fb77d08 100644 ---- a/string/strcoll_l.c -+++ b/string/strcoll_l.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1995-1997,2002,2004,2007,2010 Free Software Foundation, Inc. -+/* Copyright (C) 1995-1997,2002,2004,2007,2010,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Written by Ulrich Drepper , 1995. - -@@ -205,7 +205,7 @@ STRCOLL (s1, s2, l) - - while (*us1 != L('\0')) - { -- int32_t tmp = findidx (&us1); -+ int32_t tmp = findidx (&us1, -1); - rule1arr[idx1max] = tmp >> 24; - idx1arr[idx1max] = tmp & 0xffffff; - idx1cnt = idx1max++; -@@ -267,7 +267,7 @@ STRCOLL (s1, s2, l) - - while (*us2 != L('\0')) - { -- int32_t tmp = findidx (&us2); -+ int32_t tmp = findidx (&us2, -1); - rule2arr[idx2max] = tmp >> 24; - idx2arr[idx2max] = tmp & 0xffffff; - idx2cnt = idx2max++; -diff --git a/string/strxfrm_l.c b/string/strxfrm_l.c -index 220253c..b06556d 100644 ---- a/string/strxfrm_l.c -+++ b/string/strxfrm_l.c -@@ -176,7 +176,7 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) - idxmax = 0; - do - { -- int32_t tmp = findidx (&usrc); -+ int32_t tmp = findidx (&usrc, -1); - rulearr[idxmax] = tmp >> 24; - idxarr[idxmax] = tmp & 0xffffff; - diff --git a/src/patches/glibc/glibc-rh766513.patch b/src/patches/glibc/glibc-rh766513.patch deleted file mode 100644 index 3f629b4fc..000000000 --- a/src/patches/glibc/glibc-rh766513.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -rup a/po/ja.po b/po/ja.po ---- a/po/ja.po 2010-05-04 05:27:23.000000000 -0600 -+++ b/po/ja.po 2012-02-07 12:21:03.023806370 -0700 -@@ -3549,8 +3549,8 @@ msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n - - #: posix/getopt.c:945 posix/getopt.c:948 - #, c-format --msgid "%s: invalid option -- %c\n" --msgstr "%s: ¥ª¥×¥·¥ç¥ó¤¬°ã¤¤¤Þ¤¹ -- %c\n" -+msgid "%s: invalid option -- '%c'\n" -+msgstr "%s: ¥ª¥×¥·¥ç¥ó¤¬°ã¤¤¤Þ¤¹ -- '%c'\n" - - #: posix/getopt.c:1003 posix/getopt.c:1022 posix/getopt.c:1234 - #: posix/getopt.c:1255 diff --git a/src/patches/glibc/glibc-rh767146.patch b/src/patches/glibc/glibc-rh767146.patch deleted file mode 100644 index 82520620b..000000000 --- a/src/patches/glibc/glibc-rh767146.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -rup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 -+++ b/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 -@@ -1130,6 +1130,16 @@ _dl_map_object_from_fd (const char *name - = N_("ELF load command address/offset not properly aligned"); - goto call_lose; - } -+ if (__builtin_expect ((ph->p_offset + ph->p_filesz > st.st_size), 0)) -+ { -+ /* If the segment requires zeroing of part of its last -+ page, we'll crash when accessing the unmapped page. -+ There's still a possibility of a race, if the shared -+ object is truncated between the fxstat above and the -+ memset below. */ -+ errstring = N_("ELF load command past end of file"); -+ goto call_lose; -+ } - - c = &loadcmds[nloadcmds++]; - c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); -Only in b/elf: dl-load.c.orig diff --git a/src/patches/glibc/glibc-rh767693-2.patch b/src/patches/glibc/glibc-rh767693-2.patch deleted file mode 100644 index 4418ac642..000000000 --- a/src/patches/glibc/glibc-rh767693-2.patch +++ /dev/null @@ -1,79 +0,0 @@ -Index: glibc-2.5-20061008T1257/sunrpc/svc_tcp.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_tcp.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_tcp.c -@@ -50,6 +50,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1. - #include - #include - #include -+#include - - #ifdef USE_IN_LIBIO - # include -@@ -249,6 +250,11 @@ again: - { - if (errno == EINTR) - goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } - return FALSE; - } - /* -Index: glibc-2.5-20061008T1257/sunrpc/svc_udp.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_udp.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_udp.c -@@ -46,6 +46,7 @@ static char sccsid[] = "@(#)svc_udp.c 1. - #include - #include - #include -+#include - - #ifdef IP_PKTINFO - #include -@@ -277,8 +278,16 @@ again: - (int) su->su_iosz, 0, - (struct sockaddr *) &(xprt->xp_raddr), &len); - xprt->xp_addrlen = len; -- if (rlen == -1 && errno == EINTR) -- goto again; -+ if (rlen == -1) -+ { -+ if (errno == EINTR) -+ goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } -+ } - if (rlen < 16) /* < 4 32-bit ints? */ - return FALSE; - xdrs->x_op = XDR_DECODE; -Index: glibc-2.5-20061008T1257/sunrpc/svc_unix.c -=================================================================== ---- glibc-2.5-20061008T1257.orig/sunrpc/svc_unix.c -+++ glibc-2.5-20061008T1257/sunrpc/svc_unix.c -@@ -48,6 +48,7 @@ - #include - #include - #include -+#include - - #ifdef USE_IN_LIBIO - # include -@@ -247,6 +248,11 @@ again: - { - if (errno == EINTR) - goto again; -+ if (errno == EMFILE) -+ { -+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; -+ __nanosleep(&ts , NULL); -+ } - return FALSE; - } - /* diff --git a/src/patches/glibc/glibc-rh767693.patch b/src/patches/glibc/glibc-rh767693.patch deleted file mode 100644 index 8f76beb3d..000000000 --- a/src/patches/glibc/glibc-rh767693.patch +++ /dev/null @@ -1,89 +0,0 @@ -commit 97ac2654b2d831acaa18a2b018b0736245903fd2 -Author: Ulrich Drepper -Date: Sat Dec 17 20:18:42 2011 -0500 - - Check values from TZ file header - - - [BZ #13506] - * time/tzfile.c (__tzfile_read): Check values from file header. - -diff -ru a/time/tzfile.c b/time/tzfile.c ---- a/time/tzfile.c 2010-05-04 11:27:23.000000000 +0000 -+++ b/time/tzfile.c 2011-12-19 06:39:49.875358578 +0000 -@@ -19,6 +19,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -234,23 +235,58 @@ - goto read_again; - } - -+ if (__builtin_expect (num_transitions -+ > ((SIZE_MAX - (__alignof__ (struct ttinfo) - 1)) -+ / (sizeof (time_t) + 1)), 0)) -+ goto lose; - total_size = num_transitions * (sizeof (time_t) + 1); - total_size = ((total_size + __alignof__ (struct ttinfo) - 1) - & ~(__alignof__ (struct ttinfo) - 1)); - types_idx = total_size; -- total_size += num_types * sizeof (struct ttinfo) + chars; -+ if (__builtin_expect (num_types -+ > (SIZE_MAX - total_size) / sizeof (struct ttinfo), 0)) -+ goto lose; -+ total_size += num_types * sizeof (struct ttinfo); -+ if (__builtin_expect (chars > SIZE_MAX - total_size, 0)) -+ goto lose; -+ total_size += chars; -+ if (__builtin_expect (__alignof__ (struct leap) - 1 -+ > SIZE_MAX - total_size, 0)) -+ goto lose; - total_size = ((total_size + __alignof__ (struct leap) - 1) - & ~(__alignof__ (struct leap) - 1)); - leaps_idx = total_size; -+ if (__builtin_expect (num_leaps -+ > (SIZE_MAX - total_size) / sizeof (struct leap), 0)) -+ goto lose; - total_size += num_leaps * sizeof (struct leap); -- tzspec_len = (sizeof (time_t) == 8 && trans_width == 8 -- ? st.st_size - (ftello (f) -- + num_transitions * (8 + 1) -- + num_types * 6 -- + chars -- + num_leaps * 12 -- + num_isstd -- + num_isgmt) - 1 : 0); -+ tzspec_len = 0; -+ if (sizeof (time_t) == 8 && trans_width == 8) -+ { -+ off_t rem = st.st_size - ftello (f); -+ if (__builtin_expect (rem < 0 -+ || (size_t) rem < (num_transitions * (8 + 1) -+ + num_types * 6 -+ + chars), 0)) -+ goto lose; -+ tzspec_len = (size_t) rem - (num_transitions * (8 + 1) -+ + num_types * 6 -+ + chars); -+ if (__builtin_expect (num_leaps > SIZE_MAX / 12 -+ || tzspec_len < num_leaps * 12, 0)) -+ goto lose; -+ tzspec_len -= num_leaps * 12; -+ if (__builtin_expect (tzspec_len < num_isstd, 0)) -+ goto lose; -+ tzspec_len -= num_isstd; -+ if (__builtin_expect (tzspec_len == 0 || tzspec_len - 1 < num_isgmt, 0)) -+ goto lose; -+ tzspec_len -= num_isgmt + 1; -+ if (__builtin_expect (SIZE_MAX - total_size < tzspec_len, 0)) -+ goto lose; -+ } -+ if (__builtin_expect (SIZE_MAX - total_size - tzspec_len < extra, 0)) -+ goto lose; - - /* Allocate enough memory including the extra block requested by the - caller. */ diff --git a/src/patches/glibc/glibc-rh767746.patch b/src/patches/glibc/glibc-rh767746.patch deleted file mode 100644 index 58d96d810..000000000 --- a/src/patches/glibc/glibc-rh767746.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/nptl/pthread_create.c 2011-12-13 11:41:37.000000000 -0700 -+++ b/nptl/pthread_create.c 2011-12-14 10:03:13.000000000 -0700 -@@ -440,8 +440,9 @@ - int err = ALLOCATE_STACK (iattr, &pd); - if (__builtin_expect (err != 0, 0)) - /* Something went wrong. Maybe a parameter of the attributes is -- invalid or we could not allocate memory. */ -- return err; -+ invalid or we could not allocate memory. Note we have to -+ translate error codes. */ -+ return err == ENOMEM ? EAGAIN : err; - - - /* Initialize the TCB. All initializations with zero should be diff --git a/src/patches/glibc/glibc-rh771342.patch b/src/patches/glibc/glibc-rh771342.patch deleted file mode 100644 index 0a49b8c93..000000000 --- a/src/patches/glibc/glibc-rh771342.patch +++ /dev/null @@ -1,155 +0,0 @@ -2011-06-30 Ulrich Drepper - - * nptl-init.c (__nptl_set_robust): New function. - (pthread_functions): Add reference. - * npthreadP.h: Declare __nptl_set_robust. - * sysdeps/pthread/pthread-functions.h (pthread_functions): Add - ptr_set_robust member. - * sysdeps/unix/sysv/linux/fork.c: Call set_robust_list syscall in - child if threads are used. - -diff -Nrup a/nptl/nptl-init.c b/nptl/nptl-init.c ---- a/nptl/nptl-init.c 2011-12-20 00:29:54.645538691 -0700 -+++ b/nptl/nptl-init.c 2012-01-03 10:18:38.977513783 -0700 -@@ -69,6 +69,13 @@ extern void __libc_setup_tls (size_t tcb - #endif - - #ifdef SHARED -+static -+#else -+extern -+#endif -+void __nptl_set_robust (struct pthread *); -+ -+#ifdef SHARED - static void nptl_freeres (void); - - -@@ -131,13 +138,25 @@ static const struct pthread_functions pt - .ptr__nptl_deallocate_tsd = __nptl_deallocate_tsd, - .ptr__nptl_setxid = __nptl_setxid, - /* For now only the stack cache needs to be freed. */ -- .ptr_freeres = nptl_freeres -+ .ptr_freeres = nptl_freeres, -+ .ptr_set_robust = __nptl_set_robust - }; - # define ptr_pthread_functions &pthread_functions - #else - # define ptr_pthread_functions NULL - #endif - -+#ifdef SHARED -+static -+#endif -+void -+__nptl_set_robust (struct pthread *self) -+{ -+ INTERNAL_SYSCALL_DECL (err); -+ INTERNAL_SYSCALL (set_robust_list, err, 2, &self->robust_head, -+ sizeof (struct robust_list_head)); -+} -+ - - #ifdef SHARED - /* This function is called indirectly from the freeres code in libc. */ -diff -Nrup a/nptl/pthreadP.h b/nptl/pthreadP.h ---- a/nptl/pthreadP.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/pthreadP.h 2012-01-03 10:12:35.599269269 -0700 -@@ -555,17 +555,20 @@ extern void __pthread_cleanup_pop_restor - - /* Old cleanup interfaces, still used in libc.so. */ - extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *buffer, -- void (*routine) (void *), void *arg); -+ void (*routine) (void *), void *arg); - extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *buffer, -- int execute); -+ int execute); - extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *buffer, -- void (*routine) (void *), void *arg); -+ void (*routine) (void *), void *arg); - extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer, -- int execute); -+ int execute); - - extern void __nptl_deallocate_tsd (void) attribute_hidden; - - extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; -+#ifndef SHARED -+extern void __nptl_set_robust (struct pthread *self); -+#endif - - extern void __free_stacks (size_t limit) attribute_hidden; - -diff -Nrup a/nptl/sysdeps/pthread/pthread-functions.h b/nptl/sysdeps/pthread/pthread-functions.h ---- a/nptl/sysdeps/pthread/pthread-functions.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/sysdeps/pthread/pthread-functions.h 2012-01-03 10:12:35.639269301 -0700 -@@ -97,6 +97,7 @@ struct pthread_functions - void (*ptr__nptl_deallocate_tsd) (void); - int (*ptr__nptl_setxid) (struct xid_command *); - void (*ptr_freeres) (void); -+ void (*ptr_set_robust) (struct pthread *); - }; - - /* Variable in libc.so. */ -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c ---- a/nptl/sysdeps/unix/sysv/linux/fork.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/fork.c 2012-01-03 10:12:35.649269309 -0700 -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - - - unsigned long int *__fork_generation_pointer; -@@ -86,8 +87,8 @@ __libc_fork (void) - just go away. The unloading code works in the order of the - list. - -- While executing the registered handlers we are building a -- list of all the entries so that we can go backward later on. */ -+ While executing the registered handlers we are building a -+ list of all the entries so that we can go backward later on. */ - while (1) - { - /* Execute the handler if there is one. */ -@@ -154,6 +155,24 @@ __libc_fork (void) - GL(dl_cpuclock_offset) = now; - #endif - -+#ifdef __NR_set_robust_list -+ /* Initialize the robust mutex list which has been reset during -+ the fork. We do not check for errors since if it fails here -+ it failed at process start as well and noone could have used -+ robust mutexes. We also do not have to set -+ self->robust_head.futex_offset since we inherit the correct -+ value from the parent. */ -+# ifdef SHARED -+ if (__libc_pthread_functions.ptr_set_robust != NULL) -+ PTHFCT_CALL (ptr_set_robust, (self)); -+# else -+ extern __typeof (__nptl_set_robust) __nptl_set_robust -+ __attribute__((weak)); -+ if (__builtin_expect (__nptl_set_robust != NULL, 0)) -+ __nptl_set_robust (self); -+# endif -+#endif -+ - /* Reset the file list. These are recursive mutexes. */ - fresetlockfiles (); - -@@ -170,10 +189,10 @@ __libc_fork (void) - allp->handler->child_handler (); - - /* Note that we do not have to wake any possible waiter. -- This is the only thread in the new process. The count -- may have been bumped up by other threads doing a fork. -- We reset it to 1, to avoid waiting for non-existing -- thread(s) to release the count. */ -+ This is the only thread in the new process. The count -+ may have been bumped up by other threads doing a fork. -+ We reset it to 1, to avoid waiting for non-existing -+ thread(s) to release the count. */ - allp->handler->refcntr = 1; - - /* XXX We could at this point look through the object pool diff --git a/src/patches/glibc/glibc-rh782585.patch b/src/patches/glibc/glibc-rh782585.patch deleted file mode 100644 index a554d4bd8..000000000 --- a/src/patches/glibc/glibc-rh782585.patch +++ /dev/null @@ -1,329 +0,0 @@ -diff -rup a/elf/dl-close.c b/elf/dl-close.c ---- a/elf/dl-close.c 2012-01-19 12:59:42.759484350 -0700 -+++ b/elf/dl-close.c 2012-01-19 14:10:20.439263806 -0700 -@@ -223,7 +223,7 @@ _dl_close_worker (struct link_map *map) - } - - /* Sort the entries. */ -- _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid); -+ _dl_sort_fini (maps, nloaded, used, nsid); - - /* Call all termination functions at once. */ - #ifdef SHARED -diff -rup a/elf/dl-deps.c b/elf/dl-deps.c ---- a/elf/dl-deps.c 2012-01-19 12:59:42.716484301 -0700 -+++ b/elf/dl-deps.c 2012-01-19 13:52:35.223720556 -0700 -@@ -614,51 +614,67 @@ Filters not supported with LD_TRACE_PREL - map->l_searchlist.r_list[i]->l_reserved = 0; - } - -- /* Now determine the order in which the initialization has to happen. */ -+ /* Sort the initializer list to take dependencies into account. The binary -+ itself will always be initialize last. */ - memcpy (l_initfini, map->l_searchlist.r_list, - nlist * sizeof (struct link_map *)); -- /* We can skip looking for the binary itself which is at the front -- of the search list. Look through the list backward so that circular -- dependencies are not changing the order. */ -- for (i = 1; i < nlist; ++i) -+ if (__builtin_expect (nlist > 1, 1)) - { -- struct link_map *l = map->l_searchlist.r_list[i]; -- unsigned int j; -- unsigned int k; -- -- /* Find the place in the initfini list where the map is currently -- located. */ -- for (j = 1; l_initfini[j] != l; ++j) -- ; -- -- /* Find all object for which the current one is a dependency and -- move the found object (if necessary) in front. */ -- for (k = j + 1; k < nlist; ++k) -+ /* We can skip looking for the binary itself which is at the front -+ of the search list. */ -+ i = 1; -+ unsigned int seen[nlist]; -+ memset (seen, 0, nlist * sizeof (seen[0])); -+ while (1) - { -- struct link_map **runp; -- -- runp = l_initfini[k]->l_initfini; -- if (runp != NULL) -+ /* Keep track of which object we looked at this round. */ -+ ++seen[i]; -+ struct link_map *thisp = l_initfini[i]; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ unsigned int k = nlist - 1; -+ while (k > i) - { -- while (*runp != NULL) -- if (__builtin_expect (*runp++ == l, 0)) -- { -- struct link_map *here = l_initfini[k]; -- -- /* Move it now. */ -- memmove (&l_initfini[j] + 1, &l_initfini[j], -- (k - j) * sizeof (struct link_map *)); -- l_initfini[j] = here; -- -- /* Don't insert further matches before the last -- entry moved to the front. */ -- ++j; -+ struct link_map **runp = l_initfini[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) -+ { -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&l_initfini[i], &l_initfini[i + 1], -+ (k - i) * sizeof (l_initfini[0])); -+ l_initfini[k] = thisp; -+ -+ if (seen[i + 1] > nlist - i - 2) -+ { -+ ++i; -+ goto next_clear; -+ } -+ -+ unsigned int this_seen = seen[i]; -+ memmove (&seen[i], &seen[i + 1], -+ (k - i) * sizeof (seen[0])); -+ seen[k] = this_seen; -+ -+ goto next; -+ } - -- break; -- } -+ --k; - } -+ -+ if (++i == nlist) -+ break; -+ next_clear: -+ memset (&seen[i], 0, (nlist - i) * sizeof (seen[0])); -+ -+ next:; - } - } -+ - /* Terminate the list of dependencies. */ - l_initfini[nlist] = NULL; - atomic_write_barrier (); -diff -rup a/elf/dl-fini.c b/elf/dl-fini.c ---- a/elf/dl-fini.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/elf/dl-fini.c 2012-01-19 13:56:38.653842046 -0700 -@@ -1,5 +1,6 @@ - /* Call the termination functions of loaded shared objects. -- Copyright (C) 1995,96,1998-2002,2004-2005,2009 Free Software Foundation, Inc. -+ Copyright (C) 1995,96,1998-2002,2004-2005,2009,2011 -+ Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -29,89 +30,100 @@ typedef void (*fini_t) (void); - - void - internal_function --_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps, -- char *used, Lmid_t ns) -+_dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns) - { -- if (ns == LM_ID_BASE) -- /* The main executable always comes first. */ -- l = l->l_next; -- -- for (; l != NULL; l = l->l_next) -- /* Do not handle ld.so in secondary namespaces and object which -- are not removed. */ -- if (l == l->l_real && l->l_idx != -1) -- { -- /* Find the place in the 'maps' array. */ -- unsigned int j; -- for (j = ns == LM_ID_BASE ? 1 : 0; maps[j] != l; ++j) -- assert (j < nmaps); -- -- /* Find all object for which the current one is a dependency -- and move the found object (if necessary) in front. */ -- for (unsigned int k = j + 1; k < nmaps; ++k) -- { -- struct link_map **runp = maps[k]->l_initfini; -- if (runp != NULL) -- { -- while (*runp != NULL) -- if (*runp == l) -- { -- struct link_map *here = maps[k]; -+ /* A list of one element need not be sorted. */ -+ if (nmaps == 1) -+ return; -+ -+ /* We can skip looking for the binary itself which is at the front -+ of the search list for the main namespace. */ -+ unsigned int i = ns == LM_ID_BASE; -+ unsigned int seen[nmaps]; -+ memset (seen, 0, nmaps * sizeof (seen[0])); -+ while (1) -+ { -+ /* Keep track of which object we looked at this round. */ -+ ++seen[i]; -+ struct link_map *thisp = maps[i]; -+ -+ /* Do not handle ld.so in secondary namespaces and object which -+ are not removed. */ -+ if (thisp != thisp->l_real || thisp->l_idx == -1) -+ goto skip; -+ -+ /* Find the last object in the list for which the current one is -+ a dependency and move the current object behind the object -+ with the dependency. */ -+ unsigned int k = nmaps - 1; -+ while (k > i) -+ { -+ struct link_map **runp = maps[k]->l_initfini; -+ if (runp != NULL) -+ /* Look through the dependencies of the object. */ -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == thisp, 0)) -+ { -+ move: -+ /* Move the current object to the back past the last -+ object with it as the dependency. */ -+ memmove (&maps[i], &maps[i + 1], -+ (k - i) * sizeof (maps[0])); -+ maps[k] = thisp; - -- /* Move it now. */ -- memmove (&maps[j] + 1, -- &maps[j], (k - j) * sizeof (struct link_map *)); -- maps[j] = here; -+ if (used != NULL) -+ { -+ char here_used = used[i]; -+ memmove (&used[i], &used[i + 1], -+ (k - i) * sizeof (used[0])); -+ used[k] = here_used; -+ } - -- if (used != NULL) -- { -- char here_used = used[k]; -+ if (seen[i + 1] > nmaps - i - 2) -+ { -+ ++i; -+ goto next_clear; -+ } - -- memmove (&used[j] + 1, -- &used[j], (k - j) * sizeof (char)); -- used[j] = here_used; -- } -+ unsigned int this_seen = seen[i]; -+ memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0])); -+ seen[k] = this_seen; - -- ++j; -+ goto next; -+ } - -- break; -- } -- else -- ++runp; -- } -- -- if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) -- { -- unsigned int m = maps[k]->l_reldeps->act; -- struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; -+ if (__builtin_expect (maps[k]->l_reldeps != NULL, 0)) -+ { -+ unsigned int m = maps[k]->l_reldeps->act; -+ struct link_map **relmaps = &maps[k]->l_reldeps->list[0]; - -- while (m-- > 0) -+ /* Look through the relocation dependencies of the object. */ -+ while (m-- > 0) -+ if (__builtin_expect (relmaps[m] == thisp, 0)) - { -- if (relmaps[m] == l) -- { -- struct link_map *here = maps[k]; -- -- /* Move it now. */ -- memmove (&maps[j] + 1, -- &maps[j], -- (k - j) * sizeof (struct link_map *)); -- maps[j] = here; -- -- if (used != NULL) -- { -- char here_used = used[k]; -- -- memmove (&used[j] + 1, -- &used[j], (k - j) * sizeof (char)); -- used[j] = here_used; -- } -- -- break; -- } -+ /* If a cycle exists with a link time dependency, -+ preserve the latter. */ -+ struct link_map **runp = thisp->l_initfini; -+ if (runp != NULL) -+ while (*runp != NULL) -+ if (__builtin_expect (*runp++ == maps[k], 0)) -+ goto ignore; -+ goto move; - } -- } -- } -- } -+ ignore:; -+ } -+ -+ --k; -+ } -+ -+ skip: -+ if (++i == nmaps) -+ break; -+ next_clear: -+ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); -+ -+ next:; -+ } - } - - -@@ -196,9 +208,8 @@ _dl_fini (void) - assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1); - nmaps = i; - -- if (nmaps != 0) -- /* Now we have to do the sorting. */ -- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns); -+ /* Now we have to do the sorting. */ -+ _dl_sort_fini (maps, nmaps, NULL, ns); - - /* We do not rely on the linked list of loaded object anymore from - this point on. We have our own list here (maps). The various -diff -rup a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h ---- a/sysdeps/generic/ldsodefs.h 2012-01-19 12:59:42.446483997 -0700 -+++ b/sysdeps/generic/ldsodefs.h 2012-01-19 14:16:36.242453532 -0700 -@@ -947,7 +947,7 @@ extern void _dl_init (struct link_map *m - extern void _dl_fini (void) internal_function; - - /* Sort array MAPS according to dependencies of the contained objects. */ --extern void _dl_sort_fini (struct link_map *l, struct link_map **maps, -+extern void _dl_sort_fini (struct link_map **maps, - size_t nmaps, char *used, Lmid_t ns) - internal_function; - diff --git a/src/patches/glibc/glibc-rh784402.patch b/src/patches/glibc/glibc-rh784402.patch deleted file mode 100644 index d75773e52..000000000 --- a/src/patches/glibc/glibc-rh784402.patch +++ /dev/null @@ -1,166 +0,0 @@ -commit 3e1aa84e7f9f38815f5db9cd7654b1a9497cf6e4 -Author: Ulrich Drepper -Date: Fri Jan 20 22:39:54 2012 -0500 - - Do not cache negative results in nscd if these are transient - -diff -rup a/nscd/aicache.c b/nscd/aicache.c ---- a/nscd/aicache.c 2012-01-24 20:32:58.906826425 -0700 -+++ b/nscd/aicache.c 2012-01-24 20:42:17.663968882 -0700 -@@ -511,9 +511,17 @@ next_nip: - if (fd != -1) - TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store the -+ result, so be it. */ -+ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ dataset = NULL; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/grpcache.c b/nscd/grpcache.c ---- a/nscd/grpcache.c 2012-01-24 20:32:58.910826427 -0700 -+++ b/nscd/grpcache.c 2012-01-24 20:42:17.666968883 -0700 -@@ -114,13 +114,21 @@ cache_addgr (struct database_dyn *db, in - case. */ - total = sizeof (notfound); - -- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -- MSG_NOSIGNAL)); -+ if (fd != -1) -+ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ MSG_NOSIGNAL)); -+ else -+ written = total; - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/hstcache.c b/nscd/hstcache.c ---- a/nscd/hstcache.c 2012-01-24 20:32:58.911826427 -0700 -+++ b/nscd/hstcache.c 2012-01-24 20:42:17.668968883 -0700 -@@ -141,10 +141,16 @@ cache_addhst (struct database_dyn *db, i - MSG_NOSIGNAL)) != total) - all_written = false; - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/initgrcache.c b/nscd/initgrcache.c ---- a/nscd/initgrcache.c 2012-01-24 20:32:58.912826427 -0700 -+++ b/nscd/initgrcache.c 2012-01-24 20:42:17.671968883 -0700 -@@ -202,10 +202,16 @@ addinitgroupsX (struct database_dyn *db, - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/pwdcache.c b/nscd/pwdcache.c ---- a/nscd/pwdcache.c 2012-01-24 20:32:58.914826427 -0700 -+++ b/nscd/pwdcache.c 2012-01-24 20:42:17.671968883 -0700 -@@ -124,10 +124,16 @@ cache_addpw (struct database_dyn *db, in - written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, - MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; -diff -rup a/nscd/servicescache.c b/nscd/servicescache.c ---- a/nscd/servicescache.c 2012-01-24 20:32:58.915826427 -0700 -+++ b/nscd/servicescache.c 2012-01-24 20:42:17.672968884 -0700 -@@ -102,15 +102,22 @@ cache_addserv (struct database_dyn *db, - { - /* We have no data. This means we send the standard reply for this - case. */ -- total = sizeof (notfound); -+ written = total = sizeof (notfound); - -- written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -- MSG_NOSIGNAL)); -+ if (fd != -1) -+ written = TEMP_FAILURE_RETRY (send (fd, ¬found, total, -+ MSG_NOSIGNAL)); - -- dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, -- 1); -- /* If we cannot permanently store the result, so be it. */ -- if (dataset != NULL) -+ /* If we have a transient error or cannot permanently store -+ the result, so be it. */ -+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0)) -+ { -+ /* Mark the old entry as obsolete. */ -+ if (dh != NULL) -+ dh->usable = false; -+ } -+ else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) -+ + req->key_len), 1)) != NULL) - { - dataset->head.allocsize = sizeof (struct dataset) + req->key_len; - dataset->head.recsize = total; diff --git a/src/patches/glibc/glibc-rh785984.patch b/src/patches/glibc/glibc-rh785984.patch deleted file mode 100644 index 80ba5e845..000000000 --- a/src/patches/glibc/glibc-rh785984.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -rup a/localedata/locales/zh_CN b/localedata/locales/zh_CN ---- a/localedata/locales/zh_CN 2006-07-30 16:19:43.000000000 -0600 -+++ b/localedata/locales/zh_CN 2012-01-30 21:24:46.905115483 -0700 -@@ -108,11 +108,11 @@ day "";/ - "";/ - "" - --abmon "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -- "";"";/ -+abmon "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ -+ "";"";/ - "";"" - - mon "";"";"";/ diff --git a/src/patches/glibc/glibc-rh788959-2.patch b/src/patches/glibc/glibc-rh788959-2.patch deleted file mode 100644 index 1147af686..000000000 --- a/src/patches/glibc/glibc-rh788959-2.patch +++ /dev/null @@ -1,92 +0,0 @@ -Index: glibc-2.12-2-gc4ccff1/nscd/grpcache.c -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/nscd/grpcache.c -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c -@@ -178,7 +178,8 @@ cache_addgr (struct database_dyn *db, in - char *cp; - const size_t key_len = strlen (key); - const size_t buf_len = 3 * sizeof (grp->gr_gid) + key_len + 1; -- char *buf = alloca (buf_len); -+ size_t alloca_used = 0; -+ char *buf = alloca_account (buf_len, alloca_used); - ssize_t n; - size_t cnt; - -@@ -190,7 +191,8 @@ cache_addgr (struct database_dyn *db, in - /* Determine the length of all members. */ - while (grp->gr_mem[gr_mem_cnt]) - ++gr_mem_cnt; -- gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t)); -+ gr_mem_len = (uint32_t *) alloca_account (gr_mem_cnt * sizeof (uint32_t), -+ alloca_used); - for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt) - { - gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1; -@@ -205,10 +207,10 @@ cache_addgr (struct database_dyn *db, in - change. Allocate memory on the cache since it is likely - discarded anyway. If it turns out to be necessary to have a - new record we can still allocate real memory. */ -- bool alloca_used = false; -+ bool dataset_in_stack_or_freed = false; - dataset = NULL; - -- if (he == NULL) -+ if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) - dataset = (struct dataset *) mempool_alloc (db, total + n, 1); - - if (dataset == NULL) -@@ -216,10 +218,10 @@ cache_addgr (struct database_dyn *db, in - /* We cannot permanently add the result in the moment. But - we can provide the result as is. Store the data in some - temporary memory. */ -- dataset = (struct dataset *) alloca (total + n); -+ dataset = (struct dataset *) alloca_account (total + n, alloca_used); - - /* We cannot add this record to the permanent database. */ -- alloca_used = true; -+ dataset_in_stack_or_freed = true; - } - - dataset->head.allocsize = total + n; -@@ -273,6 +275,14 @@ cache_addgr (struct database_dyn *db, in - allocated on the stack and need not be freed. */ - dh->timeout = dataset->head.timeout; - ++dh->nreloads; -+ -+ /* If the new record was not allocated on the stack, then it must -+ be freed. Note that it can no longer be used. */ -+ if (! dataset_in_stack_or_freed) -+ { -+ free (dataset); -+ dataset_in_stack_or_freed = true; -+ } - } - else - { -@@ -288,7 +298,7 @@ cache_addgr (struct database_dyn *db, in - key_copy = (char *) newp + (key_copy - (char *) dataset); - - dataset = memcpy (newp, dataset, total + n); -- alloca_used = false; -+ dataset_in_stack_or_freed = false; - } - - /* Mark the old record as obsolete. */ -@@ -303,7 +313,7 @@ cache_addgr (struct database_dyn *db, in - assert (fd != -1); - - #ifdef HAVE_SENDFILE -- if (__builtin_expect (db->mmap_used, 1) && !alloca_used) -+ if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) - { - assert (db->wr_fd != -1); - assert ((char *) &dataset->resp > (char *) db->data); -@@ -330,7 +340,7 @@ cache_addgr (struct database_dyn *db, in - - /* Add the record to the database. But only if it has not been - stored on the stack. */ -- if (! alloca_used) -+ if (! dataset_in_stack_or_freed) - { - /* If necessary, we also propagate the data to disk. */ - if (db->persistent) diff --git a/src/patches/glibc/glibc-rh788959.patch b/src/patches/glibc/glibc-rh788959.patch deleted file mode 100644 index adc6c9947..000000000 --- a/src/patches/glibc/glibc-rh788959.patch +++ /dev/null @@ -1,130 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c ---- glibc-2.12-2-gc4ccff1/nis/nss_compat/compat-initgroups.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.patched/nis/nss_compat/compat-initgroups.c 2012-02-21 11:11:19.877008465 +0530 -@@ -297,6 +297,8 @@ getgrent_next_nss (ent_t *ent, char *buf - if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups, - limit, errnop) == NSS_STATUS_SUCCESS) - { -+ status = NSS_STATUS_NOTFOUND; -+ - /* If there is no blacklist we can trust the underlying - initgroups implementation. */ - if (ent->blacklist.current <= 1) -@@ -309,6 +311,7 @@ getgrent_next_nss (ent_t *ent, char *buf - overwrite the pointer with one to a bigger buffer. */ - char *tmpbuf = buffer; - size_t tmplen = buflen; -+ bool use_malloc = false; - - for (int i = 0; i < mystart; i++) - { -@@ -316,21 +319,36 @@ getgrent_next_nss (ent_t *ent, char *buf - tmpbuf, tmplen, errnop)) - == NSS_STATUS_TRYAGAIN - && *errnop == ERANGE) -- if (tmpbuf == buffer) -- { -- tmplen *= 2; -- tmpbuf = __alloca (tmplen); -- } -- else -- tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen); -+ { -+ if (__libc_use_alloca (tmplen * 2)) -+ { -+ if (tmpbuf == buffer) -+ { -+ tmplen *= 2; -+ tmpbuf = __alloca (tmplen); -+ } -+ else -+ tmpbuf = extend_alloca (tmpbuf, tmplen, tmplen * 2); -+ } -+ else -+ { -+ tmplen *= 2; -+ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, tmplen); -+ -+ if (newbuf == NULL) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } -+ use_malloc = true; -+ tmpbuf = newbuf; -+ } -+ } - - if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1)) - { - if (__builtin_expect (status != NSS_STATUS_SUCCESS, 0)) -- { -- free (mygroups); -- return status; -- } -+ goto done; - - if (!in_blacklist (grpbuf.gr_name, - strlen (grpbuf.gr_name), ent) -@@ -348,11 +366,17 @@ getgrent_next_nss (ent_t *ent, char *buf - } - } - } -+ -+ status = NSS_STATUS_NOTFOUND; -+ -+ done: -+ if (use_malloc) -+ free (tmpbuf); - } - - free (mygroups); - -- return NSS_STATUS_NOTFOUND; -+ return status; - } - - free (mygroups); -@@ -506,6 +530,7 @@ _nss_compat_initgroups_dyn (const char * - char *tmpbuf; - enum nss_status status; - ent_t intern = { true, false, false, NULL, {NULL, 0, 0} }; -+ bool use_malloc = false; - - status = internal_setgrent (&intern); - if (status != NSS_STATUS_SUCCESS) -@@ -519,13 +544,32 @@ _nss_compat_initgroups_dyn (const char * - user, group, start, size, - groupsp, limit, errnop)) - == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) -- tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); -+ if (__libc_use_alloca (buflen * 2)) -+ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen); -+ else -+ { -+ buflen *= 2; -+ char *newbuf = realloc (use_malloc ? tmpbuf : NULL, buflen); -+ if (newbuf == NULL) -+ { -+ status = NSS_STATUS_TRYAGAIN; -+ goto done; -+ } -+ use_malloc = true; -+ tmpbuf = newbuf; -+ } - } - while (status == NSS_STATUS_SUCCESS); - -+ status = NSS_STATUS_SUCCESS; -+ -+ done: -+ if (use_malloc) -+ free (tmpbuf); -+ - internal_endgrent (&intern); - -- return NSS_STATUS_SUCCESS; -+ return status; - } - - diff --git a/src/patches/glibc/glibc-rh789189.patch b/src/patches/glibc/glibc-rh789189.patch deleted file mode 100644 index fc0e2e017..000000000 --- a/src/patches/glibc/glibc-rh789189.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/resolv/res_init.c b/resolv/res_init.c ---- a/resolv/res_init.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/resolv/res_init.c 2012-02-10 10:20:24.923578396 -0700 -@@ -325,7 +325,7 @@ __res_vinit(res_state statp, int preinit - struct in6_addr a6; - char *el; - -- if ((el = strchr(cp, '\n')) != NULL) -+ if ((el = strpbrk(cp, " \t\n")) != NULL) - *el = '\0'; - if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL) - *el = '\0'; diff --git a/src/patches/glibc/glibc-rh789209.patch b/src/patches/glibc/glibc-rh789209.patch deleted file mode 100644 index 3aea97ede..000000000 --- a/src/patches/glibc/glibc-rh789209.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/localedata/locales/uk_UA b/localedata/locales/uk_UA ---- a/localedata/locales/uk_UA 2010-05-04 05:27:23.000000000 -0600 -+++ b/localedata/locales/uk_UA 2012-02-10 09:59:16.934189715 -0700 -@@ -700,7 +700,7 @@ LC_MONETARY - % 200 hrv. - 200 hryven (money) - - % the local currency symbol --currency_symbol "" % hr (hryvnya) -+currency_symbol "" % hr (hryvnya) - - % This must be a 4-character string containing the international currency - % symbol as defined by the ISO 4217 standard (three characters) followed diff --git a/src/patches/glibc/glibc-rh789238-2.patch b/src/patches/glibc/glibc-rh789238-2.patch deleted file mode 100644 index 62b5492b1..000000000 --- a/src/patches/glibc/glibc-rh789238-2.patch +++ /dev/null @@ -1,114 +0,0 @@ -diff -rup a/malloc/arena.c b/malloc/arena.c ---- a/malloc/arena.c 2012-03-02 10:22:47.025002715 -0700 -+++ b/malloc/arena.c 2012-03-02 10:27:47.442361529 -0700 -@@ -123,14 +123,14 @@ int __malloc_initialized = -1; - if(ptr) \ - (void)mutex_lock(&ptr->mutex); \ - else \ -- ptr = arena_get2(ptr, (size)); \ -+ ptr = arena_get2(ptr, (size), false); \ - } while(0) - #else - #define arena_lock(ptr, size) do { \ - if(ptr && !mutex_trylock(&ptr->mutex)) { \ - THREAD_STAT(++(ptr->stat_lock_direct)); \ - } else \ -- ptr = arena_get2(ptr, (size)); \ -+ ptr = arena_get2(ptr, (size), false); \ - } while(0) - #endif - -@@ -982,7 +982,7 @@ get_free_list (void) - - - static mstate --reused_arena (void) -+reused_arena (bool retrying) - { - mstate result; - static mstate next_to_use; -@@ -999,6 +999,15 @@ reused_arena (void) - } - while (result != next_to_use); - -+ /* If we are retrying due to a failure to allocate in the main -+ arena, don't wait for the main arena to become available, select -+ another. -+ -+ To really fix this right we would have to try the allocation -+ in every other arena, but that seems like severe overkill. */ -+ if (retrying && result == &main_arena) -+ result = result->next; -+ - /* No arena available. Wait for the next in line. */ - (void)mutex_lock(&result->mutex); - -@@ -1014,9 +1023,9 @@ reused_arena (void) - static mstate - internal_function - #if __STD_C --arena_get2(mstate a_tsd, size_t size) -+arena_get2(mstate a_tsd, size_t size, bool retrying) - #else --arena_get2(a_tsd, size) mstate a_tsd; size_t size; -+arena_get2(a_tsd, size, retrying) mstate a_tsd; size_t size; bool retrying - #endif - { - mstate a; -@@ -1055,7 +1064,7 @@ arena_get2(a_tsd, size) mstate a_tsd; si - catomic_decrement (&narenas); - } - else -- a = reused_arena (); -+ a = reused_arena (retrying); - } - #else - if(!a_tsd) -diff -rup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-03-02 10:22:47.061002519 -0700 -+++ b/malloc/malloc.c 2012-03-02 10:23:53.151643863 -0700 -@@ -3671,7 +3671,7 @@ public_mALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - victim = _int_malloc(ar_ptr, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3892,7 +3892,7 @@ public_mEMALIGn(size_t alignment, size_t - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, alignment, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3943,7 +3943,7 @@ public_vALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes); -+ ar_ptr = arena_get2(prev, bytes, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3992,7 +3992,7 @@ public_pVALLOc(size_t bytes) - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = ar_ptr->next ? ar_ptr : 0; - (void)mutex_unlock(&ar_ptr->mutex); -- ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); -+ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE, true); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -4086,7 +4086,7 @@ public_cALLOc(size_t n, size_t elem_size - /* ... or sbrk() has failed and there is still a chance to mmap() */ - mstate prev = av->next ? av : 0; - (void)mutex_unlock(&av->mutex); -- av = arena_get2(prev, sz); -+ av = arena_get2(prev, sz, true); - if(av) { - mem = _int_malloc(av, sz); - (void)mutex_unlock(&av->mutex); diff --git a/src/patches/glibc/glibc-rh789238.patch b/src/patches/glibc/glibc-rh789238.patch deleted file mode 100644 index f2c90e25a..000000000 --- a/src/patches/glibc/glibc-rh789238.patch +++ /dev/null @@ -1,119 +0,0 @@ -diff -rup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-02-13 21:46:11.678847531 -0700 -+++ b/malloc/malloc.c 2012-02-13 22:43:14.788431976 -0700 -@@ -3669,8 +3669,9 @@ public_mALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); -- (void)mutex_unlock(&main_arena.mutex); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes); - if(ar_ptr) { - victim = _int_malloc(ar_ptr, bytes); - (void)mutex_unlock(&ar_ptr->mutex); -@@ -3929,10 +3930,10 @@ public_vALLOc(size_t bytes) - if(!ar_ptr) - return 0; - p = _int_valloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -+ (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, bytes); -@@ -3940,14 +3941,17 @@ public_vALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, bytes); - (void)mutex_unlock(&ar_ptr->mutex); - } - #endif - } -- } -+ } else -+ (void)mutex_unlock(&ar_ptr->mutex); - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -3975,10 +3979,10 @@ public_pVALLOc(size_t bytes) - - arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); - p = _int_pvalloc(ar_ptr, bytes); -- (void)mutex_unlock(&ar_ptr->mutex); - if(!p) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(ar_ptr != &main_arena) { -+ (void)mutex_unlock(&ar_ptr->mutex); - ar_ptr = &main_arena; - (void)mutex_lock(&ar_ptr->mutex); - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); -@@ -3986,15 +3990,17 @@ public_pVALLOc(size_t bytes) - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, -- bytes + 2*pagesz + MINSIZE); -+ mstate prev = ar_ptr->next ? ar_ptr : 0; -+ (void)mutex_unlock(&ar_ptr->mutex); -+ ar_ptr = arena_get2(prev, bytes + 2*pagesz + MINSIZE); - if(ar_ptr) { - p = _int_memalign(ar_ptr, pagesz, rounded_bytes); - (void)mutex_unlock(&ar_ptr->mutex); - } - #endif - } -- } -+ } else -+ (void)mutex_unlock(&ar_ptr->mutex); - assert(!p || chunk_is_mmapped(mem2chunk(p)) || - ar_ptr == arena_for_chunk(mem2chunk(p))); - -@@ -4064,8 +4070,6 @@ public_cALLOc(size_t n, size_t elem_size - #endif - mem = _int_malloc(av, sz); - -- /* Only clearing follows, so we can unlock early. */ -- (void)mutex_unlock(&av->mutex); - - assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || - av == arena_for_chunk(mem2chunk(mem))); -@@ -4073,15 +4077,16 @@ public_cALLOc(size_t n, size_t elem_size - if (mem == 0) { - /* Maybe the failure is due to running out of mmapped areas. */ - if(av != &main_arena) { -+ (void)mutex_unlock(&av->mutex); - (void)mutex_lock(&main_arena.mutex); - mem = _int_malloc(&main_arena, sz); - (void)mutex_unlock(&main_arena.mutex); - } else { - #if USE_ARENAS - /* ... or sbrk() has failed and there is still a chance to mmap() */ -- (void)mutex_lock(&main_arena.mutex); -- av = arena_get2(av->next ? av : 0, sz); -- (void)mutex_unlock(&main_arena.mutex); -+ mstate prev = av->next ? av : 0; -+ (void)mutex_unlock(&av->mutex); -+ av = arena_get2(prev, sz); - if(av) { - mem = _int_malloc(av, sz); - (void)mutex_unlock(&av->mutex); -@@ -4089,7 +4094,8 @@ public_cALLOc(size_t n, size_t elem_size - #endif - } - if (mem == 0) return 0; -- } -+ } else -+ (void)mutex_unlock(&av->mutex); - p = mem2chunk(mem); - - /* Two optional cases in which clearing not necessary */ diff --git a/src/patches/glibc/glibc-rh794817-2.patch b/src/patches/glibc/glibc-rh794817-2.patch deleted file mode 100644 index 15774b43e..000000000 --- a/src/patches/glibc/glibc-rh794817-2.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff -rup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-03-05 09:43:14.705536167 -0700 -+++ b/stdio-common/vfprintf.c 2012-03-05 09:48:11.602890982 -0700 -@@ -822,7 +822,7 @@ vfprintf (FILE *s, const CHAR_T *format, - \ - if (function_done < 0) \ - { \ -- /* Error in print handler. */ \ -+ /* Error in print handler; up to handler to set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -876,7 +876,7 @@ vfprintf (FILE *s, const CHAR_T *format, - \ - if (function_done < 0) \ - { \ -- /* Error in print handler. */ \ -+ /* Error in print handler; up to handler to set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1117,7 +1117,7 @@ vfprintf (FILE *s, const CHAR_T *format, - &mbstate); \ - if (len == (size_t) -1) \ - { \ -- /* Something went wron gduring the conversion. Bail out. */ \ -+ /* Something went wrong during the conversion. Bail out. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1188,6 +1188,7 @@ vfprintf (FILE *s, const CHAR_T *format, - if (__mbsnrtowcs (ignore, &str2, strend - str2, \ - ignore_size, &ps) == (size_t) -1) \ - { \ -+ /* Conversion function has set errno. */ \ - done = -1; \ - goto all_done; \ - } \ -@@ -1599,6 +1600,7 @@ vfprintf (FILE *s, const CHAR_T *format, - if (spec == L_('\0')) - { - /* The format string ended before the specifier is complete. */ -+ __set_errno (EINVAL); - done = -1; - goto all_done; - } -@@ -1696,17 +1698,20 @@ do_positional: - - /* Determine the number of arguments the format string consumes. */ - nargs = MAX (nargs, max_ref_arg); -+ /* Calculate total size needed to represent a single argument across -+ all three argument-related arrays. */ - bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) - + sizeof (*args_type); - - /* Check for potential integer overflow. */ -- if (nargs > SIZE_MAX / bytes_per_arg) -+ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) - { -+ __set_errno (ERANGE); - done = -1; - goto all_done; - } - -- /* Allocate memory for the argument descriptions. */ -+ /* Allocate memory for all three argument arrays. */ - if (__libc_use_alloca (nargs * bytes_per_arg)) - args_value = alloca (nargs * bytes_per_arg); - else -@@ -1937,6 +1942,7 @@ do_positional: - about # of chars. */ - if (function_done < 0) - { -+ /* Function has set errno. */ - done = -1; - goto all_done; - } -@@ -1971,6 +1977,7 @@ do_positional: - of chars. */ - if (function_done < 0) - { -+ /* Function has set errno. */ - done = -1; - goto all_done; - } diff --git a/src/patches/glibc/glibc-rh794817.patch b/src/patches/glibc/glibc-rh794817.patch deleted file mode 100644 index e21caaa63..000000000 --- a/src/patches/glibc/glibc-rh794817.patch +++ /dev/null @@ -1,239 +0,0 @@ -From libc-alpha-return-25252-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Thu Feb 16 16:21:17 2012 -Return-Path: -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 5187 invoked by alias); 16 Feb 2012 16:21:14 -0000 -Delivered-To: moderator for libc-alpha at sourceware dot org -Received: (qmail 2174 invoked by uid 22791); 16 Feb 2012 16:17:18 -0000 -X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 - tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,TW_TV,TW_VB,TW_VF,T_RP_MATCHES_RCVD -X-Spam-Check-By: sourceware.org -Date: Thu, 16 Feb 2012 08:16:13 -0800 -From: Kees Cook -To: "Ryan S dot Arnold" -Cc: libc-alpha at sourceware dot org, Paul Eggert , - Roland McGrath , - Andreas Schwab -Subject: Re: [PATCH] vfprintf: validate nargs and maybe allocate from heap -Message-ID: <20120216161613.GZ20420@outflux.net> -References: <20120206062537.GM4979@outflux.net> - <20120207000509 dot GP4989 at outflux dot net> - <20120210192457 dot GF20420 at outflux dot net> - - <20120214223048 dot GM20420 at outflux dot net> - - <20120214224543 dot GN20420 at outflux dot net> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -In-Reply-To: <20120214224543 dot GN20420 at outflux dot net> -X-MIMEDefang-Filter: outflux$Revision: 1.316 $ -X-HELO: www.outflux.net -Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Id: -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner at sourceware dot org -Delivered-To: mailing list libc-alpha at sourceware dot org - -The nargs value can overflow when doing allocations, allowing arbitrary -memory writes via format strings, bypassing _FORTIFY_SOURCE: -http://www.phrack.org/issues.html?issue=67&id=9 - -This checks for nargs overflow and possibly allocates from heap instead of -stack, and adds a regression test for the situation. - -I have FSF assignment via Google. (Sent from @outflux since that's how I'm -subscribed here, but CL shows @chromium.org as part of my Google work.) - -This version disables the useless test on non-32-bit platforms. - -2012-02-16 Kees Cook - - [BZ #13656] - * stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and - possibly allocate from heap instead of stack. - * stdio-common/bug-vfprintf-nargs.c: New file. - * stdio-common/Makefile (tests): Add nargs overflow test. - - -diff -rup a/stdio-common/Makefile b/stdio-common/Makefile ---- a/stdio-common/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/Makefile 2012-02-20 21:57:52.983040992 -0700 -@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t - tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ - bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ -- scanf16 scanf17 tst-setvbuf1 -+ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs - - test-srcs = tst-unbputc tst-printf - -diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c -new file mode 100644 -index 0000000..13c66c0 ---- /dev/null -+++ b/stdio-common/bug-vfprintf-nargs.c -@@ -0,0 +1,78 @@ -+/* Test for vfprintf nargs allocation overflow (BZ #13656). -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Kees Cook , 2012. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+format_failed (const char *fmt, const char *expected) -+{ -+ char output[80]; -+ -+ printf ("%s : ", fmt); -+ -+ memset (output, 0, sizeof output); -+ /* Having sprintf itself detect a failure is good. */ -+ if (sprintf (output, fmt, 1, 2, 3, "test") > 0 -+ && strcmp (output, expected) != 0) -+ { -+ printf ("FAIL (output '%s' != expected '%s')\n", output, expected); -+ return 1; -+ } -+ puts ("ok"); -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ int rc = 0; -+ char buf[64]; -+ -+ /* Regular positionals work. */ -+ if (format_failed ("%1$d", "1") != 0) -+ rc = 1; -+ -+ /* Regular width positionals work. */ -+ if (format_failed ("%1$*2$d", " 1") != 0) -+ rc = 1; -+ -+ /* Positional arguments are constructed via read_int, so nargs can only -+ overflow on 32-bit systems. On 64-bit systems, it will attempt to -+ allocate a giant amount of memory and possibly crash, which is the -+ expected situation. Since the 64-bit behavior is arch-specific, only -+ test this on 32-bit systems. */ -+ if (sizeof (long int) == 4) -+ { -+ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int)); -+ if (format_failed (buf, "1 %$d") != 0) -+ rc = 1; -+ } -+ -+ return rc; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c -index 863cd5d..022e72b 100644 ---- a/stdio-common/vfprintf.c -+++ b/stdio-common/vfprintf.c -@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) - 0 if unknown. */ - int readonly_format = 0; - -+ /* For the argument descriptions, which may be allocated on the heap. */ -+ void *args_malloced = NULL; -+ - /* This table maps a character into a number representing a - class. In each step there is a destination label for each - class. */ -@@ -1647,9 +1650,10 @@ do_positional: - determine the size of the array needed to store the argument - attributes. */ - size_t nargs = 0; -- int *args_type; -- union printf_arg *args_value = NULL; -+ size_t bytes_per_arg; -+ union printf_arg *args_value; - int *args_size; -+ int *args_type; - - /* Positional parameters refer to arguments directly. This could - also determine the maximum number of arguments. Track the -@@ -1698,13 +1702,33 @@ do_positional: - - /* Determine the number of arguments the format string consumes. */ - nargs = MAX (nargs, max_ref_arg); -+ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) -+ + sizeof (*args_type); -+ -+ /* Check for potential integer overflow. */ -+ if (nargs > SIZE_MAX / bytes_per_arg) -+ { -+ done = -1; -+ goto all_done; -+ } - - /* Allocate memory for the argument descriptions. */ -- args_type = alloca (nargs * sizeof (int)); -+ if (__libc_use_alloca (nargs * bytes_per_arg)) -+ args_value = alloca (nargs * bytes_per_arg); -+ else -+ { -+ args_value = args_malloced = malloc (nargs * bytes_per_arg); -+ if (args_value == NULL) -+ { -+ done = -1; -+ goto all_done; -+ } -+ } -+ -+ args_size = &args_value[nargs].pa_int; -+ args_type = &args_size[nargs]; - memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', -- nargs * sizeof (int)); -- args_value = alloca (nargs * sizeof (union printf_arg)); -- args_size = alloca (nargs * sizeof (int)); -+ nargs * sizeof (*args_type)); - - /* XXX Could do sanity check here: If any element in ARGS_TYPE is - still zero after this loop, format is invalid. For now we -@@ -1973,8 +1997,8 @@ do_positional: - } - - all_done: -- if (__builtin_expect (workstart != NULL, 0)) -- free (workstart); -+ free (args_malloced); -+ free (workstart); - /* Unlock the stream. */ - _IO_funlockfile (s); - _IO_cleanup_region_end (0); --- -1.7.5.4 - --- -Kees Cook @outflux.net - diff --git a/src/patches/glibc/glibc-rh795498.patch b/src/patches/glibc/glibc-rh795498.patch deleted file mode 100644 index 729c5a4d7..000000000 --- a/src/patches/glibc/glibc-rh795498.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c -index 01369f6..44ad04d 100644 ---- a/resolv/nss_dns/dns-host.c -+++ b/resolv/nss_dns/dns-host.c -@@ -1219,7 +1219,7 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2, - &first); - if ((status == NSS_STATUS_SUCCESS || status == NSS_STATUS_NOTFOUND - || (status == NSS_STATUS_TRYAGAIN -- && (errno != ERANGE || *h_errnop != NO_RECOVERY))) -+ && (*errnop != ERANGE || *h_errnop == NO_RECOVERY))) - && answer2 != NULL && anslen2 > 0) - { - enum nss_status status2 = gaih_getanswer_slice(answer2, anslen2, qname, diff --git a/src/patches/glibc/glibc-rh797094-1.patch b/src/patches/glibc/glibc-rh797094-1.patch deleted file mode 100644 index e98b9c03e..000000000 --- a/src/patches/glibc/glibc-rh797094-1.patch +++ /dev/null @@ -1,657 +0,0 @@ -diff -rup a/include/alloca.h b/include/alloca.h ---- a/include/alloca.h 2012-02-29 13:11:19.439693476 -0700 -+++ b/include/alloca.h 2012-02-29 13:11:49.832530623 -0700 -@@ -49,15 +49,24 @@ libc_hidden_proto (__libc_alloca_cutoff) - - #if defined stackinfo_get_sp && defined stackinfo_sub_sp - # define alloca_account(size, avar) \ -- ({ void *old__ = stackinfo_get_sp (); \ -- void *m__ = __alloca (size); \ -- avar += stackinfo_sub_sp (old__); \ -+ ({ void *old__ = stackinfo_get_sp (); \ -+ void *m__ = __alloca (size); \ -+ avar += stackinfo_sub_sp (old__); \ -+ m__; }) -+# define extend_alloca_account(buf, len, newlen, avar) \ -+ ({ void *old__ = stackinfo_get_sp (); \ -+ void *m__ = extend_alloca (buf, len, newlen); \ -+ avar += stackinfo_sub_sp (old__); \ - m__; }) - #else - # define alloca_account(size, avar) \ -- ({ size_t s__ = (size); \ -- avar += s__; \ -+ ({ size_t s__ = (size); \ -+ avar += s__; \ - __alloca (s__); }) -+# define extend_alloca_account(buf, len, newlen, avar) \ -+ ({ size_t s__ = (newlen); \ -+ avar += s__; \ -+ extend_alloca (buf, len, s__); }) - #endif - - #endif -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-02-29 13:11:19.588692676 -0700 -+++ b/sysdeps/posix/getaddrinfo.c 2012-02-29 13:12:42.972245862 -0700 -@@ -278,6 +278,7 @@ gaih_inet (const char *name, const struc - bool got_ipv6 = false; - const char *canon = NULL; - const char *orig_name = name; -+ size_t alloca_used = 0; - - if (req->ai_protocol || req->ai_socktype) - { -@@ -310,7 +311,7 @@ gaih_inet (const char *name, const struc - if (tp->name[0]) - { - st = (struct gaih_servtuple *) -- __alloca (sizeof (struct gaih_servtuple)); -+ alloca_account (sizeof (struct gaih_servtuple), alloca_used); - - if ((rc = gaih_inet_serv (service->name, tp, req, st))) - return rc; -@@ -334,7 +335,8 @@ gaih_inet (const char *name, const struc - continue; - - newp = (struct gaih_servtuple *) -- __alloca (sizeof (struct gaih_servtuple)); -+ alloca_account (sizeof (struct gaih_servtuple), -+ alloca_used); - - if ((rc = gaih_inet_serv (service->name, tp, req, newp))) - { -@@ -362,7 +364,7 @@ gaih_inet (const char *name, const struc - - if (req->ai_socktype || req->ai_protocol) - { -- st = __alloca (sizeof (struct gaih_servtuple)); -+ st = alloca_account (sizeof (struct gaih_servtuple), alloca_used); - st->next = NULL; - st->socktype = tp->socktype; - st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) -@@ -379,7 +381,8 @@ gaih_inet (const char *name, const struc - { - struct gaih_servtuple *newp; - -- newp = __alloca (sizeof (struct gaih_servtuple)); -+ newp = alloca_account (sizeof (struct gaih_servtuple), -+ alloca_used); - newp->next = NULL; - newp->socktype = tp->socktype; - newp->protocol = tp->protocol; -@@ -391,10 +394,17 @@ gaih_inet (const char *name, const struc - } - } - -+ bool malloc_name = false; -+ bool malloc_addrmem = false; -+ struct gaih_addrtuple *addrmem = NULL; -+ bool malloc_canonbuf = false; -+ char *canonbuf = NULL; -+ bool malloc_tmpbuf = false; -+ char *tmpbuf = NULL; -+ int result = 0; - if (name != NULL) - { -- at = __alloca (sizeof (struct gaih_addrtuple)); -- -+ at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); - at->family = AF_UNSPEC; - at->scopeid = 0; - at->next = NULL; -@@ -412,6 +422,7 @@ gaih_inet (const char *name, const struc - rc = __idna_to_ascii_lz (name, &p, idn_flags); - if (rc != IDNA_SUCCESS) - { -+ /* No need to jump to free_and_return here. */ - if (rc == IDNA_MALLOC_ERROR) - return -EAI_MEMORY; - if (rc == IDNA_DLOPEN_ERROR) -@@ -421,10 +432,7 @@ gaih_inet (const char *name, const struc - /* In case the output string is the same as the input string - no new string has been allocated. */ - if (p != name) -- { -- name = strdupa (p); -- free (p); -- } -+ malloc_name = true; - } - #endif - -@@ -441,23 +449,59 @@ gaih_inet (const char *name, const struc - at->family = AF_INET6; - } - else -- return -EAI_ADDRFAMILY; -+ { -+ result = -EAI_ADDRFAMILY; -+ goto free_and_return; -+ } - - if (req->ai_flags & AI_CANONNAME) - canon = name; - } - else if (at->family == AF_UNSPEC) - { -- char *namebuf = (char *) name; - char *scope_delim = strchr (name, SCOPE_DELIMITER); -+ int e; - -- if (__builtin_expect (scope_delim != NULL, 0)) -- { -- namebuf = alloca (scope_delim - name + 1); -- *((char *) __mempcpy (namebuf, name, scope_delim - name)) = '\0'; -- } -+ { -+ bool malloc_namebuf = false; -+ char *namebuf = (char *) name; -+ -+ if (__builtin_expect (scope_delim != NULL, 0)) -+ { -+ if (malloc_name) -+ *scope_delim = '\0'; -+ else -+ { -+ if (__libc_use_alloca (alloca_used -+ + scope_delim - name + 1)) -+ { -+ namebuf = alloca_account (scope_delim - name + 1, -+ alloca_used); -+ *((char *) __mempcpy (namebuf, name, -+ scope_delim - name)) = '\0'; -+ } -+ else -+ { -+ namebuf = strndup (name, scope_delim - name); -+ if (namebuf == NULL) -+ { -+ assert (!malloc_name); -+ return -EAI_MEMORY; -+ } -+ malloc_namebuf = true; -+ } -+ } -+ } - -- if (inet_pton (AF_INET6, namebuf, at->addr) > 0) -+ e = inet_pton (AF_INET6, namebuf, at->addr); -+ -+ if (malloc_namebuf) -+ free (namebuf); -+ else if (scope_delim != NULL && malloc_name) -+ /* Undo what we did above. */ -+ *scope_delim = SCOPE_DELIMITER; -+ } -+ if (e > 0) - { - if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6) - at->family = AF_INET6; -@@ -468,7 +512,10 @@ gaih_inet (const char *name, const struc - at->family = AF_INET; - } - else -- return -EAI_ADDRFAMILY; -+ { -+ result = -EAI_ADDRFAMILY; -+ goto free_and_return; -+ } - - if (scope_delim != NULL) - { -@@ -490,7 +537,10 @@ gaih_inet (const char *name, const struc - at->scopeid = (uint32_t) strtoul (scope_delim + 1, &end, - 10); - if (*end != '\0') -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - } - } - -@@ -520,59 +570,80 @@ gaih_inet (const char *name, const struc - { - int family = req->ai_family; - size_t tmpbuflen = 512; -- char *tmpbuf = alloca (tmpbuflen); -+ assert (tmpbuf == NULL); -+ tmpbuf = alloca_account (tmpbuflen, alloca_used); - int rc; - struct hostent th; - struct hostent *h; - int herrno; - -- simple_again: - while (1) - { -- rc = __gethostbyname2_r (name, family, &th, tmpbuf, -+ rc = __gethostbyname2_r (name, AF_INET, &th, tmpbuf, - tmpbuflen, &h, &herrno); - if (rc != ERANGE || herrno != NETDB_INTERNAL) - break; -- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); -+ -+ if (!malloc_tmpbuf -+ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, -+ 2 * tmpbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, -+ 2 * tmpbuflen); -+ if (newp == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ tmpbuf = newp; -+ malloc_tmpbuf = true; -+ tmpbuflen = 2 * tmpbuflen; -+ } - } - - if (rc == 0) - { -- if (h == NULL) -+ if (h != NULL) - { -- if (req->ai_family == AF_INET6 -- && (req->ai_flags & AI_V4MAPPED) -- && family == AF_INET6) -+ int i; -+ /* We found data, count the number of addresses. */ -+ for (i = 0; h->h_addr_list[i]; ++i) -+ ; -+ if (i > 0 && *pat != NULL) -+ --i; -+ -+ if (__libc_use_alloca (alloca_used -+ + i * sizeof (struct gaih_addrtuple))) -+ addrmem = alloca_account (i * sizeof (struct gaih_addrtuple), -+ alloca_used); -+ else - { -- /* Try again, this time looking for IPv4 -- addresses. */ -- family = AF_INET; -- goto simple_again; -+ addrmem = malloc (i -+ * sizeof (struct gaih_addrtuple)); -+ if (addrmem == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; - } -+ malloc_addrmem = true; - } -- else -- { -- /* We found data, now convert it into the list. */ -- for (int i = 0; h->h_addr_list[i]; ++i) -+ -+ /* Now convert it into the list. */ -+ struct gaih_addrtuple *addrfree = addrmem; -+ for (i = 0; h->h_addr_list[i]; ++i) - { - if (*pat == NULL) - { -- *pat = __alloca (sizeof (struct gaih_addrtuple)); -+ *pat = addrfree++; - (*pat)->scopeid = 0; - } - (*pat)->next = NULL; -- (*pat)->family = req->ai_family; -- if (family == req->ai_family) -+ (*pat)->family = AF_INET; - memcpy ((*pat)->addr, h->h_addr_list[i], - h->h_length); -- else -- { -- uint32_t *addr = (uint32_t *) (*pat)->addr; -- addr[3] = *(uint32_t *) h->h_addr_list[i]; -- addr[2] = htonl (0xffff); -- addr[1] = 0; -- addr[0] = 0; -- } - pat = &((*pat)->next); - } - } -@@ -582,15 +653,16 @@ gaih_inet (const char *name, const struc - if (herrno == NETDB_INTERNAL) - { - __set_h_errno (herrno); -- return -EAI_SYSTEM; -- } -- if (herrno == TRY_AGAIN) -- { -- return -EAI_AGAIN; -+ result = -EAI_SYSTEM; - } -+ else if (herrno == TRY_AGAIN) -+ result = -EAI_AGAIN; -+ else - /* We made requests but they turned out no data. - The name is known, though. */ -- return GAIH_OKIFUNSPEC | -EAI_NODATA; -+ result = GAIH_OKIFUNSPEC | -EAI_NODATA; -+ -+ goto free_and_return; - } - - goto process_list; -@@ -613,21 +685,56 @@ gaih_inet (const char *name, const struc - bool added_canon = (req->ai_flags & AI_CANONNAME) == 0; - char *addrs = air->addrs; - -+ if (__libc_use_alloca (alloca_used -+ + air->naddrs * sizeof (struct gaih_addrtuple))) -+ addrmem = alloca_account (air->naddrs -+ * sizeof (struct gaih_addrtuple), -+ alloca_used); -+ else -+ { -+ addrmem = malloc (air->naddrs -+ * sizeof (struct gaih_addrtuple)); -+ if (addrmem == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_addrmem = true; -+ } -+ -+ struct gaih_addrtuple *addrfree = addrmem; - for (int i = 0; i < air->naddrs; ++i) - { - socklen_t size = (air->family[i] == AF_INET - ? INADDRSZ : IN6ADDRSZ); - if (*pat == NULL) - { -- *pat = __alloca (sizeof (struct gaih_addrtuple)); -+ *pat = addrfree++; - (*pat)->scopeid = 0; - } - uint32_t *pataddr = (*pat)->addr; - (*pat)->next = NULL; - if (added_canon || air->canon == NULL) - (*pat)->name = NULL; -- else -- canon = (*pat)->name = strdupa (air->canon); -+ else if (canonbuf == NULL) -+ { -+ size_t canonlen = strlen (air->canon) + 1; -+ if ((req->ai_flags & AI_CANONIDN) != 0 -+ && __libc_use_alloca (alloca_used + canonlen)) -+ canonbuf = alloca_account (canonlen, alloca_used); -+ else -+ { -+ canonbuf = malloc (canonlen); -+ if (canonbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_canonbuf = true; -+ } -+ canon = (*pat)->name = memcpy (canonbuf, air->canon, -+ canonlen); -+ } - - if (air->family[i] == AF_INET - && req->ai_family == AF_INET6 -@@ -657,20 +764,26 @@ gaih_inet (const char *name, const struc - free (air); - - if (at->family == AF_UNSPEC) -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - - goto process_list; - } - else if (err == 0) - /* The database contains a negative entry. */ -- return 0; -+ goto free_and_return; - else if (__nss_not_use_nscd_hosts == 0) - { - if (herrno == NETDB_INTERNAL && errno == ENOMEM) -- return -EAI_MEMORY; -- if (herrno == TRY_AGAIN) -- return -EAI_AGAIN; -- return -EAI_SYSTEM; -+ result = -EAI_MEMORY; -+ else if (herrno == TRY_AGAIN) -+ result = -EAI_AGAIN; -+ else -+ result = -EAI_SYSTEM; -+ -+ goto free_and_return; - } - } - #endif -@@ -699,7 +812,19 @@ gaih_inet (const char *name, const struc - _res.options &= ~RES_USE_INET6; - - size_t tmpbuflen = 1024; -- char *tmpbuf = alloca (tmpbuflen); -+ malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); -+ assert (tmpbuf == NULL); -+ if (!malloc_tmpbuf) -+ tmpbuf = alloca_account (tmpbuflen, alloca_used); -+ else -+ { -+ tmpbuf = malloc (tmpbuflen); -+ if (tmpbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ } - - while (!no_more) - { -@@ -728,8 +853,25 @@ gaih_inet (const char *name, const struc - no_data = herrno == NO_DATA; - break; - } -- tmpbuf = extend_alloca (tmpbuf, -- tmpbuflen, 2 * tmpbuflen); -+ -+ if (!malloc_tmpbuf -+ && __libc_use_alloca (alloca_used + 2 * tmpbuflen)) -+ tmpbuf = extend_alloca_account (tmpbuf, tmpbuflen, -+ 2 * tmpbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_tmpbuf ? tmpbuf : NULL, -+ 2 * tmpbuflen); -+ if (newp == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ tmpbuf = newp; -+ malloc_tmpbuf = true; -+ tmpbuflen = 2 * tmpbuflen; -+ } - } - - if (status == NSS_STATUS_SUCCESS) -@@ -832,18 +974,40 @@ gaih_inet (const char *name, const struc - if (cfct != NULL) - { - const size_t max_fqdn_len = 256; -- char *buf = alloca (max_fqdn_len); -+ if ((req->ai_flags & AI_CANONIDN) != 0 -+ && __libc_use_alloca (alloca_used -+ + max_fqdn_len)) -+ canonbuf = alloca_account (max_fqdn_len, -+ alloca_used); -+ else -+ { -+ canonbuf = malloc (max_fqdn_len); -+ if (canonbuf == NULL) -+ { -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ malloc_canonbuf = true; -+ } - char *s; - - if (DL_CALL_FCT (cfct, (at->name ?: name, -- buf, max_fqdn_len, -+ canonbuf, -+ max_fqdn_len, - &s, &rc, &herrno)) - == NSS_STATUS_SUCCESS) - canon = s; - else -- /* Set to name now to avoid using -- gethostbyaddr. */ -- canon = name; -+ { -+ /* Set to name now to avoid using -+ gethostbyaddr. */ -+ if (malloc_canonbuf) -+ { -+ free (canonbuf); -+ malloc_canonbuf = false; -+ } -+ canon = name; -+ } - } - } - status = NSS_STATUS_SUCCESS; -@@ -878,22 +1042,27 @@ gaih_inet (const char *name, const struc - { - /* If both requests timed out report this. */ - if (no_data == EAI_AGAIN && no_inet6_data == EAI_AGAIN) -- return -EAI_AGAIN; -+ result = -EAI_AGAIN; -+ else -+ /* We made requests but they turned out no data. The name -+ is known, though. */ -+ result = GAIH_OKIFUNSPEC | -EAI_NODATA; - -- /* We made requests but they turned out no data. The name -- is known, though. */ -- return GAIH_OKIFUNSPEC | -EAI_NODATA; -+ goto free_and_return; - } - } - - process_list: - if (at->family == AF_UNSPEC) -- return GAIH_OKIFUNSPEC | -EAI_NONAME; -+ { -+ result = GAIH_OKIFUNSPEC | -EAI_NONAME; -+ goto free_and_return; -+ } - } - else - { - struct gaih_addrtuple *atr; -- atr = at = __alloca (sizeof (struct gaih_addrtuple)); -+ atr = at = alloca_account (sizeof (struct gaih_addrtuple), alloca_used); - memset (at, '\0', sizeof (struct gaih_addrtuple)); - - if (req->ai_family == AF_UNSPEC) -@@ -932,6 +1101,9 @@ gaih_inet (const char *name, const struc - /* Only the first entry gets the canonical name. */ - if (at2 == at && (req->ai_flags & AI_CANONNAME) != 0) - { -+ char *tmpbuf2 = NULL; -+ bool malloc_tmpbuf2 = false; -+ - if (canon == NULL) - { - /* If the canonical name cannot be determined, use -@@ -952,11 +1124,16 @@ gaih_inet (const char *name, const struc - int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags); - if (rc != IDNA_SUCCESS) - { -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); -+ - if (rc == IDNA_MALLOC_ERROR) -- return -EAI_MEMORY; -- if (rc == IDNA_DLOPEN_ERROR) -- return -EAI_SYSTEM; -- return -EAI_IDN_ENCODE; -+ result = -EAI_MEMORY; -+ else if (rc == IDNA_DLOPEN_ERROR) -+ result = -EAI_SYSTEM; -+ else -+ result = -EAI_IDN_ENCODE; -+ goto free_and_return; - } - /* In case the output string is the same as the input - string no new string has been allocated and we -@@ -970,10 +1147,25 @@ gaih_inet (const char *name, const struc - #ifdef HAVE_LIBIDN - make_copy: - #endif -- canon = strdup (canon); -- if (canon == NULL) -- return -EAI_MEMORY; -+ if (malloc_canonbuf) -+ /* We already allocated the string using malloc. */ -+ malloc_canonbuf = false; -+ else -+ { -+ canon = strdup (canon); -+ if (canon == NULL) -+ { -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); -+ -+ result = -EAI_MEMORY; -+ goto free_and_return; -+ } -+ } - } -+ -+ if (malloc_tmpbuf2) -+ free (tmpbuf2); - } - - family = at2->family; -@@ -999,7 +1191,8 @@ gaih_inet (const char *name, const struc - if (ai == NULL) - { - free ((char *) canon); -- return -EAI_MEMORY; -+ result = -EAI_MEMORY; -+ goto free_and_return; - } - - ai->ai_flags = req->ai_flags; -@@ -1052,7 +1245,18 @@ gaih_inet (const char *name, const struc - at2 = at2->next; - } - } -- return 0; -+ -+ free_and_return: -+ if (malloc_name) -+ free ((char *) name); -+ if (malloc_addrmem) -+ free (addrmem); -+ if (malloc_canonbuf) -+ free (canonbuf); -+ if (malloc_tmpbuf) -+ free (tmpbuf); -+ -+ return result; - } - - diff --git a/src/patches/glibc/glibc-rh797094-2.patch b/src/patches/glibc/glibc-rh797094-2.patch deleted file mode 100644 index 5aa90840d..000000000 --- a/src/patches/glibc/glibc-rh797094-2.patch +++ /dev/null @@ -1,862 +0,0 @@ -From: Ulrich Drepper -Date: Mon, 23 May 2011 03:04:16 +0000 (-0400) -Subject: Add a few more alloca size checks -X-Git-Tag: glibc-2.14~41 -X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=f2962a71959fd254a7a223437ca4b63b9e81130c - -Add a few more alloca size checks ---- - - 2011-05-22 Ulrich Drepper - - [BZ #12671] - * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Use malloc in - some situations. - * nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise. - * posix/glob.c (glob_in_dir): Take additional parameter alloca_used. - add in in __libc_use_alloca calls. Adjust callers. - (glob): Use malloc in some situations. -diff --git a/nis/nss_nis/nis-alias.c b/nis/nss_nis/nis-alias.c -index 9286e36..cfe4097 100644 ---- a/nis/nss_nis/nis-alias.c -+++ b/nis/nss_nis/nis-alias.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1996. - -@@ -142,10 +142,10 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, - int yperr; - - if (new_start) -- yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, -+ yperr = yp_first (domain, "mail.aliases", &outkey, &keylen, &result, - &len); - else -- yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, -+ yperr = yp_next (domain, "mail.aliases", oldkey, oldkeylen, &outkey, - &keylen, &result, &len); - - if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) -@@ -153,20 +153,20 @@ internal_nis_getaliasent_r (struct aliasent *alias, char *buffer, - enum nss_status retval = yperr2nss (yperr); - - if (retval == NSS_STATUS_TRYAGAIN) -- *errnop = errno; -- return retval; -- } -+ *errnop = errno; -+ return retval; -+ } - - if (__builtin_expect ((size_t) (len + 1) > buflen, 0)) -- { -+ { - free (result); -- *errnop = ERANGE; -- return NSS_STATUS_TRYAGAIN; -- } -+ *errnop = ERANGE; -+ return NSS_STATUS_TRYAGAIN; -+ } - char *p = strncpy (buffer, result, len); - buffer[len] = '\0'; - while (isspace (*p)) -- ++p; -+ ++p; - free (result); - - parse_res = _nss_nis_parse_aliasent (outkey, p, alias, buffer, -@@ -213,13 +213,25 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, - return NSS_STATUS_UNAVAIL; - } - -- size_t namlen = strlen (name); -- char name2[namlen + 1]; -- - char *domain; - if (__builtin_expect (yp_get_default_domain (&domain), 0)) - return NSS_STATUS_UNAVAIL; - -+ size_t namlen = strlen (name); -+ char *name2; -+ int use_alloca = __libc_use_alloca (namlen + 1); -+ if (use_alloca) -+ name2 = __alloca (namlen + 1); -+ else -+ { -+ name2 = malloc (namlen + 1); -+ if (name2 == NULL) -+ { -+ *errnop = ENOMEM; -+ return NSS_STATUS_TRYAGAIN; -+ } -+ } -+ - /* Convert name to lowercase. */ - size_t i; - for (i = 0; i < namlen; ++i) -@@ -230,6 +242,9 @@ _nss_nis_getaliasbyname_r (const char *name, struct aliasent *alias, - int len; - int yperr = yp_match (domain, "mail.aliases", name2, namlen, &result, &len); - -+ if (!use_alloca) -+ free (name2); -+ - if (__builtin_expect (yperr != YPERR_SUCCESS, 0)) - { - enum nss_status retval = yperr2nss (yperr); -diff --git a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c -index dce4165..de96a57 100644 ---- a/nscd/nscd_getserv_r.c -+++ b/nscd/nscd_getserv_r.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 2007, 2009, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2007. - -@@ -17,6 +17,7 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#include - #include - #include - #include -@@ -80,6 +81,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - { - int gc_cycle; - int nretries = 0; -+ size_t alloca_used = 0; - - /* If the mapping is available, try to search there instead of - communicating with the nscd. */ -@@ -88,13 +90,23 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - &gc_cycle); - size_t protolen = proto == NULL ? 0 : strlen (proto); - size_t keylen = critlen + 1 + protolen + 1; -- char *key = alloca (keylen); -+ int alloca_key = __libc_use_alloca (keylen); -+ char *key; -+ if (alloca_key) -+ key = alloca_account (keylen, alloca_used); -+ else -+ { -+ key = malloc (keylen); -+ if (key == NULL) -+ return -1; -+ } - memcpy (__mempcpy (__mempcpy (key, crit, critlen), - "/", 1), proto ?: "", protolen + 1); - - retry:; - const char *s_name = NULL; - const char *s_proto = NULL; -+ int alloca_aliases_len = 0; - const uint32_t *aliases_len = NULL; - const char *aliases_list = NULL; - int retval = -1; -@@ -136,8 +148,22 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - if (((uintptr_t) aliases_len & (__alignof__ (*aliases_len) - 1)) - != 0) - { -- uint32_t *tmp = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ uint32_t *tmp; -+ alloca_aliases_len -+ = __libc_use_alloca (alloca_used -+ + (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t))); -+ if (alloca_aliases_len) -+ tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ else -+ { -+ tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ if (tmp == NULL) -+ { -+ retval = ENOMEM; -+ goto out; -+ } -+ } - aliases_len = memcpy (tmp, aliases_len, - serv_resp.s_aliases_cnt - * sizeof (uint32_t)); -@@ -217,8 +243,24 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - - if (serv_resp.s_aliases_cnt > 0) - { -- aliases_len = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ assert (alloca_aliases_len == 0); -+ alloca_aliases_len -+ = __libc_use_alloca (alloca_used -+ + (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t))); -+ if (alloca_aliases_len) -+ aliases_len = alloca (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t)); -+ else -+ { -+ aliases_len = malloc (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t)); -+ if (aliases_len == NULL) -+ { -+ retval = ENOMEM; -+ goto out_close; -+ } -+ } - vec[n].iov_base = (void *) aliases_len; - vec[n].iov_len = serv_resp.s_aliases_cnt * sizeof (uint32_t); - -@@ -329,5 +371,10 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto, - goto retry; - } - -+ if (!alloca_aliases_len) -+ free ((void *) aliases_len); -+ if (!alloca_key) -+ free (key); -+ - return retval; - } -diff --git a/posix/glob.c b/posix/glob.c -index 6df083a..79b6e50 100644 ---- a/posix/glob.c -+++ b/posix/glob.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 -+/* Copyright (C) 1991-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - -@@ -199,7 +199,7 @@ static const char *next_brace_sub (const char *begin, int flags) __THROW; - - static int glob_in_dir (const char *pattern, const char *directory, - int flags, int (*errfunc) (const char *, int), -- glob_t *pglob); -+ glob_t *pglob, size_t alloca_used); - extern int __glob_pattern_type (const char *pattern, int quote) - attribute_hidden; - -@@ -253,13 +253,18 @@ glob (pattern, flags, errfunc, pglob) - glob_t *pglob; - { - const char *filename; -- const char *dirname; -+ char *dirname = NULL; - size_t dirlen; - int status; - size_t oldcount; - int meta; - int dirname_modified; -+ int malloc_dirname = 0; - glob_t dirs; -+ int retval = 0; -+#ifdef _LIBC -+ size_t alloca_used = 0; -+#endif - - if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) - { -@@ -308,20 +313,26 @@ glob (pattern, flags, errfunc, pglob) - const char *next; - const char *rest; - size_t rest_len; --#ifdef __GNUC__ -- char onealt[strlen (pattern) - 1]; --#else -- char *onealt = (char *) malloc (strlen (pattern) - 1); -- if (onealt == NULL) -+ char *onealt; -+ size_t pattern_len = strlen (pattern) - 1; -+#ifdef _LIBC -+ int alloca_onealt = __libc_use_alloca (alloca_used + pattern_len); -+ if (alloca_onealt) -+ onealt = alloca_account (pattern_len, alloca_used); -+ else -+#endif - { -- if (!(flags & GLOB_APPEND)) -+ onealt = (char *) malloc (pattern_len); -+ if (onealt == NULL) - { -- pglob->gl_pathc = 0; -- pglob->gl_pathv = NULL; -+ if (!(flags & GLOB_APPEND)) -+ { -+ pglob->gl_pathc = 0; -+ pglob->gl_pathv = NULL; -+ } -+ return GLOB_NOSPACE; - } -- return GLOB_NOSPACE; - } --#endif - - /* We know the prefix for all sub-patterns. */ - alt_start = mempcpy (onealt, pattern, begin - pattern); -@@ -332,9 +343,11 @@ glob (pattern, flags, errfunc, pglob) - if (next == NULL) - { - /* It is an illegal expression. */ --#ifndef __GNUC__ -- free (onealt); -+ illegal_brace: -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); - } - -@@ -344,13 +357,8 @@ glob (pattern, flags, errfunc, pglob) - { - rest = next_brace_sub (rest + 1, flags); - if (rest == NULL) -- { -- /* It is an illegal expression. */ --#ifndef __GNUC__ -- free (onealt); --#endif -- return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); -- } -+ /* It is an illegal expression. */ -+ goto illegal_brace; - } - /* Please note that we now can be sure the brace expression - is well-formed. */ -@@ -386,9 +394,10 @@ glob (pattern, flags, errfunc, pglob) - /* If we got an error, return it. */ - if (result && result != GLOB_NOMATCH) - { --#ifndef __GNUC__ -- free (onealt); -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - if (!(flags & GLOB_APPEND)) - { - globfree (pglob); -@@ -406,9 +415,10 @@ glob (pattern, flags, errfunc, pglob) - assert (next != NULL); - } - --#ifndef __GNUC__ -- free (onealt); -+#ifdef _LIBC -+ if (__builtin_expect (!alloca_onealt, 0)) - #endif -+ free (onealt); - - if (pglob->gl_pathc != firstc) - /* We found some entries. */ -@@ -455,7 +465,7 @@ glob (pattern, flags, errfunc, pglob) - case is nothing but a notation for a directory. */ - if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') - { -- dirname = pattern; -+ dirname = (char *) pattern; - dirlen = strlen (pattern); - - /* Set FILENAME to NULL as a special flag. This is ugly but -@@ -473,9 +483,9 @@ glob (pattern, flags, errfunc, pglob) - - filename = pattern; - #ifdef _AMIGA -- dirname = ""; -+ dirname = (char *) ""; - #else -- dirname = "."; -+ dirname = (char *) "."; - #endif - dirlen = 0; - } -@@ -485,7 +495,7 @@ glob (pattern, flags, errfunc, pglob) - && (flags & GLOB_NOESCAPE) == 0)) - { - /* "/pattern" or "\\/pattern". */ -- dirname = "/"; -+ dirname = (char *) "/"; - dirlen = 1; - ++filename; - } -@@ -511,7 +521,17 @@ glob (pattern, flags, errfunc, pglob) - from "d:/", since "d:" and "d:/" are not the same.*/ - } - #endif -- newp = (char *) __alloca (dirlen + 1); -+#ifdef _LIBC -+ if (__libc_use_alloca (alloca_used + dirlen + 1)) -+ newp = alloca_account (dirlen + 1, alloca_used); -+ else -+#endif -+ { -+ newp = malloc (dirlen + 1); -+ if (newp == NULL) -+ return GLOB_NOSPACE; -+ malloc_dirname = 1; -+ } - *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; - dirname = newp; - ++filename; -@@ -551,7 +571,8 @@ glob (pattern, flags, errfunc, pglob) - oldcount = pglob->gl_pathc + pglob->gl_offs; - goto no_matches; - } -- return val; -+ retval = val; -+ goto out; - } - } - -@@ -563,7 +584,8 @@ glob (pattern, flags, errfunc, pglob) - && (dirname[2] == '\0' || dirname[2] == '/'))) - { - /* Look up home directory. */ -- const char *home_dir = getenv ("HOME"); -+ char *home_dir = getenv ("HOME"); -+ int malloc_home_dir = 0; - # ifdef _AMIGA - if (home_dir == NULL || home_dir[0] == '\0') - home_dir = "SYS:"; -@@ -582,7 +604,7 @@ glob (pattern, flags, errfunc, pglob) - /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try - a moderate value. */ - buflen = 20; -- name = (char *) __alloca (buflen); -+ name = alloca_account (buflen, alloca_used); - - success = getlogin_r (name, buflen) == 0; - if (success) -@@ -592,6 +614,7 @@ glob (pattern, flags, errfunc, pglob) - long int pwbuflen = GETPW_R_SIZE_MAX (); - char *pwtmpbuf; - struct passwd pwbuf; -+ int malloc_pwtmpbuf = 0; - int save = errno; - - # ifndef _LIBC -@@ -600,7 +623,18 @@ glob (pattern, flags, errfunc, pglob) - Try a moderate value. */ - pwbuflen = 1024; - # endif -- pwtmpbuf = (char *) __alloca (pwbuflen); -+ if (__libc_use_alloca (alloca_used + pwbuflen)) -+ pwtmpbuf = alloca_account (pwbuflen, alloca_used); -+ else -+ { -+ pwtmpbuf = malloc (pwbuflen); -+ if (pwtmpbuf == NULL) -+ { -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_pwtmpbuf = 1; -+ } - - while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) - != 0) -@@ -610,46 +644,115 @@ glob (pattern, flags, errfunc, pglob) - p = NULL; - break; - } --# ifdef _LIBC -- pwtmpbuf = extend_alloca (pwtmpbuf, pwbuflen, -+ -+ if (!malloc_pwtmpbuf -+ && __libc_use_alloca (alloca_used -+ + 2 * pwbuflen)) -+ pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen, -+ 2 * pwbuflen, -+ alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_pwtmpbuf -+ ? pwtmpbuf : NULL, - 2 * pwbuflen); --# else -- pwbuflen *= 2; -- pwtmpbuf = (char *) __alloca (pwbuflen); --# endif -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ pwtmpbuf = newp; -+ pwbuflen = 2 * pwbuflen; -+ malloc_pwtmpbuf = 1; -+ } - __set_errno (save); - } - # else - p = getpwnam (name); - # endif - if (p != NULL) -- home_dir = p->pw_dir; -+ { -+ if (!malloc_pwtmpbuf) -+ home_dir = p->pw_dir; -+ else -+ { -+ size_t home_dir_len = strlen (p->pw_dir) + 1; -+ if (__libc_use_alloca (alloca_used + home_dir_len)) -+ home_dir = alloca_account (home_dir_len, -+ alloca_used); -+ else -+ { -+ home_dir = malloc (home_dir_len); -+ if (home_dir == NULL) -+ { -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_home_dir = 1; -+ } -+ memcpy (home_dir, p->pw_dir, home_dir_len); -+ -+ free (pwtmpbuf); -+ } -+ } - } - } - if (home_dir == NULL || home_dir[0] == '\0') - { - if (flags & GLOB_TILDE_CHECK) -- return GLOB_NOMATCH; -+ { -+ if (__builtin_expect (malloc_home_dir, 0)) -+ free (home_dir); -+ retval = GLOB_NOMATCH; -+ goto out; -+ } - else -- home_dir = "~"; /* No luck. */ -+ home_dir = (char *) "~"; /* No luck. */ - } - # endif /* WINDOWS32 */ - # endif - /* Now construct the full directory. */ - if (dirname[1] == '\0') - { -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ - dirname = home_dir; - dirlen = strlen (dirname); -+ malloc_dirname = malloc_home_dir; - } - else - { - char *newp; - size_t home_len = strlen (home_dir); -- newp = (char *) __alloca (home_len + dirlen); -+ int use_alloca = __libc_use_alloca (alloca_used -+ + home_len + dirlen); -+ if (use_alloca) -+ newp = alloca_account (home_len + dirlen, alloca_used); -+ else -+ { -+ newp = malloc (home_len + dirlen); -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_home_dir, 0)) -+ free (home_dir); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ } -+ - mempcpy (mempcpy (newp, home_dir, home_len), - &dirname[1], dirlen); -+ -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ - dirname = newp; - dirlen += home_len - 1; -+ malloc_dirname = !use_alloca; - } - dirname_modified = 1; - } -@@ -657,7 +760,8 @@ glob (pattern, flags, errfunc, pglob) - else - { - char *end_name = strchr (dirname, '/'); -- const char *user_name; -+ char *user_name; -+ int malloc_user_name = 0; - const char *home_dir; - char *unescape = NULL; - -@@ -677,7 +781,18 @@ glob (pattern, flags, errfunc, pglob) - else - { - char *newp; -- newp = (char *) __alloca (end_name - dirname); -+ if (__libc_use_alloca (alloca_used + (end_name - dirname))) -+ newp = alloca_account (end_name - dirname, alloca_used); -+ else -+ { -+ newp = malloc (end_name - dirname); -+ if (newp == NULL) -+ { -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_user_name = 1; -+ } - if (unescape != NULL) - { - char *p = mempcpy (newp, dirname + 1, -@@ -714,6 +829,7 @@ glob (pattern, flags, errfunc, pglob) - # if defined HAVE_GETPWNAM_R || defined _LIBC - long int buflen = GETPW_R_SIZE_MAX (); - char *pwtmpbuf; -+ int malloc_pwtmpbuf = 0; - struct passwd pwbuf; - int save = errno; - -@@ -723,7 +839,21 @@ glob (pattern, flags, errfunc, pglob) - moderate value. */ - buflen = 1024; - # endif -- pwtmpbuf = (char *) __alloca (buflen); -+ if (__libc_use_alloca (alloca_used + buflen)) -+ pwtmpbuf = alloca_account (buflen, alloca_used); -+ else -+ { -+ pwtmpbuf = malloc (buflen); -+ if (pwtmpbuf == NULL) -+ { -+ nomem_getpw: -+ if (__builtin_expect (malloc_user_name, 0)) -+ free (user_name); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_pwtmpbuf = 1; -+ } - - while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) - { -@@ -732,40 +862,77 @@ glob (pattern, flags, errfunc, pglob) - p = NULL; - break; - } --# ifdef _LIBC -- pwtmpbuf = extend_alloca (pwtmpbuf, buflen, 2 * buflen); --# else -- buflen *= 2; -- pwtmpbuf = __alloca (buflen); --# endif -+ if (!malloc_pwtmpbuf -+ && __libc_use_alloca (alloca_used + 2 * buflen)) -+ pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen, -+ 2 * buflen, alloca_used); -+ else -+ { -+ char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL, -+ 2 * buflen); -+ if (newp == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ goto nomem_getpw; -+ } -+ pwtmpbuf = newp; -+ malloc_pwtmpbuf = 1; -+ } - __set_errno (save); - } - # else - p = getpwnam (user_name); - # endif -+ -+ if (__builtin_expect (malloc_user_name, 0)) -+ free (user_name); -+ -+ /* If we found a home directory use this. */ - if (p != NULL) -- home_dir = p->pw_dir; -+ { -+ size_t home_len = strlen (p->pw_dir); -+ size_t rest_len = end_name == NULL ? 0 : strlen (end_name); -+ -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ malloc_dirname = 0; -+ -+ if (__libc_use_alloca (alloca_used + home_len + rest_len + 1)) -+ dirname = alloca_account (home_len + rest_len + 1, -+ alloca_used); -+ else -+ { -+ dirname = malloc (home_len + rest_len + 1); -+ if (dirname == NULL) -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ retval = GLOB_NOSPACE; -+ goto out; -+ } -+ malloc_dirname = 1; -+ } -+ *((char *) mempcpy (mempcpy (dirname, p->pw_dir, home_len), -+ end_name, rest_len)) = '\0'; -+ -+ dirlen = home_len + rest_len; -+ dirname_modified = 1; -+ -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ } - else -- home_dir = NULL; -+ { -+ if (__builtin_expect (malloc_pwtmpbuf, 0)) -+ free (pwtmpbuf); -+ -+ if (flags & GLOB_TILDE_CHECK) -+ /* We have to regard it as an error if we cannot find the -+ home directory. */ -+ return GLOB_NOMATCH; -+ } - } -- /* If we found a home directory use this. */ -- if (home_dir != NULL) -- { -- char *newp; -- size_t home_len = strlen (home_dir); -- size_t rest_len = end_name == NULL ? 0 : strlen (end_name); -- newp = (char *) __alloca (home_len + rest_len + 1); -- *((char *) mempcpy (mempcpy (newp, home_dir, home_len), -- end_name, rest_len)) = '\0'; -- dirname = newp; -- dirlen = home_len + rest_len; -- dirname_modified = 1; -- } -- else -- if (flags & GLOB_TILDE_CHECK) -- /* We have to regard it as an error if we cannot find the -- home directory. */ -- return GLOB_NOMATCH; - } - # endif /* Not Amiga && not WINDOWS32. */ - } -@@ -899,7 +1066,7 @@ glob (pattern, flags, errfunc, pglob) - status = glob_in_dir (filename, dirs.gl_pathv[i], - ((flags | GLOB_APPEND) - & ~(GLOB_NOCHECK | GLOB_NOMAGIC)), -- errfunc, pglob); -+ errfunc, pglob, alloca_used); - if (status == GLOB_NOMATCH) - /* No matches in this directory. Try the next. */ - continue; -@@ -1000,7 +1167,8 @@ glob (pattern, flags, errfunc, pglob) - } - if (dirname_modified) - flags &= ~(GLOB_NOCHECK | GLOB_NOMAGIC); -- status = glob_in_dir (filename, dirname, flags, errfunc, pglob); -+ status = glob_in_dir (filename, dirname, flags, errfunc, pglob, -+ alloca_used); - if (status != 0) - { - if (status == GLOB_NOMATCH && flags != orig_flags -@@ -1063,7 +1231,11 @@ glob (pattern, flags, errfunc, pglob) - sizeof (char *), collated_compare); - } - -- return 0; -+ out: -+ if (__builtin_expect (malloc_dirname, 0)) -+ free (dirname); -+ -+ return retval; - } - #if defined _LIBC && !defined glob - libc_hidden_def (glob) -@@ -1273,7 +1445,7 @@ link_exists2_p (const char *dir, size_t dirlen, const char *fname, - static int - glob_in_dir (const char *pattern, const char *directory, int flags, - int (*errfunc) (const char *, int), -- glob_t *pglob) -+ glob_t *pglob, size_t alloca_used) - { - size_t dirlen = strlen (directory); - void *stream = NULL; -@@ -1288,11 +1460,12 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - struct globnames *names = &init_names; - struct globnames *names_alloca = &init_names; - size_t nfound = 0; -- size_t allocasize = sizeof (init_names); - size_t cur = 0; - int meta; - int save; - -+ alloca_used += sizeof (init_names); -+ - init_names.next = NULL; - init_names.count = INITIAL_COUNT; - -@@ -1308,20 +1481,36 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - { - /* Since we use the normal file functions we can also use stat() - to verify the file is there. */ -- struct stat st; -- struct_stat64 st64; -+ union -+ { -+ struct stat st; -+ struct_stat64 st64; -+ } ust; - size_t patlen = strlen (pattern); -- char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); -+ int alloca_fullname = __libc_use_alloca (alloca_used -+ + dirlen + 1 + patlen + 1); -+ char *fullname; -+ if (alloca_fullname) -+ fullname = alloca_account (dirlen + 1 + patlen + 1, alloca_used); -+ else -+ { -+ fullname = malloc (dirlen + 1 + patlen + 1); -+ if (fullname == NULL) -+ return GLOB_NOSPACE; -+ } - - mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), - "/", 1), - pattern, patlen + 1); - if ((__builtin_expect (flags & GLOB_ALTDIRFUNC, 0) -- ? (*pglob->gl_stat) (fullname, &st) -- : __stat64 (fullname, &st64)) == 0) -+ ? (*pglob->gl_stat) (fullname, &ust.st) -+ : __stat64 (fullname, &ust.st64)) == 0) - /* We found this file to be existing. Now tell the rest - of the function to copy this name into the result. */ - flags |= GLOB_NOCHECK; -+ -+ if (__builtin_expect (!alloca_fullname, 0)) -+ free (fullname); - } - else - { -@@ -1409,9 +1598,9 @@ glob_in_dir (const char *pattern, const char *directory, int flags, - size_t size = (sizeof (struct globnames) - + ((count - INITIAL_COUNT) - * sizeof (char *))); -- allocasize += size; -- if (__libc_use_alloca (allocasize)) -- newnames = names_alloca = __alloca (size); -+ if (__libc_use_alloca (alloca_used + size)) -+ newnames = names_alloca -+ = alloca_account (size, alloca_used); - else if ((newnames = malloc (size)) - == NULL) - goto memory_error; diff --git a/src/patches/glibc/glibc-rh804686.patch b/src/patches/glibc/glibc-rh804686.patch deleted file mode 100644 index 292cd8430..000000000 --- a/src/patches/glibc/glibc-rh804686.patch +++ /dev/null @@ -1,87 +0,0 @@ ---- a/resolv/res_query.c 2010-05-04 05:27:23.000000000 -0600 -+++ a/resolv/res_query.c 2012-08-03 13:43:10.761506047 -0600 -@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp, - int *resplen2) - { - HEADER *hp = (HEADER *) answer; -+ HEADER *hp2; - int n, use_malloc = 0; - u_int oflags = statp->_flags; - -@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp, - /* __libc_res_nsend might have reallocated the buffer. */ - hp = (HEADER *) *answerp; - -- /* We simplify the following tests by assigning HP to HP2. It -- is easy to verify that this is the same as ignoring all -- tests of HP2. */ -- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; -- -- if (n < (int) sizeof (HEADER) && answerp2 != NULL -- && *resplen2 > (int) sizeof (HEADER)) -+ /* We simplify the following tests by assigning HP to HP2 or -+ vice versa. It is easy to verify that this is the same as -+ ignoring all tests of HP or HP2. */ -+ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp = hp2; -+ hp2 = hp; - } -- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) -- && n > (int) sizeof (HEADER)) -+ else - { -- /* Special case of partial answer. */ -- assert (hp != hp2); -- hp2 = hp; -+ hp2 = (HEADER *) *answerp2; -+ if (n < (int) sizeof (HEADER)) -+ { -+ hp = hp2; -+ } - } - -+ /* Make sure both hp and hp2 are defined */ -+ assert((hp != NULL) && (hp2 != NULL)); -+ - if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) - && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { - #ifdef DEBUG ---- a/resolv/res_send.c 2012-08-03 13:31:26.622168278 -0600 -+++ a/resolv/res_send.c 2012-08-03 13:43:11.881501862 -0600 -@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const - ns, ansp, ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0) -+ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) - goto next_ns; - } else { - /* Use datagrams. */ -@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const - ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0) -+ if (n == 0 && (buf2 == NULL || *resplen2 == 0)) - goto next_ns; - if (v_circuit) - // XXX Check whether both requests failed or -@@ -1275,10 +1275,14 @@ send_dg(res_state statp, - (*thisresplenp > *thisanssizp) - ? *thisanssizp : *thisresplenp); - -- if (recvresp1 || (buf2 != NULL && recvresp2)) -+ if (recvresp1 || (buf2 != NULL && recvresp2)) { -+ *resplen2 = 0; - return resplen; -+ } - if (buf2 != NULL) - { -+ /* No data from the first reply. */ -+ resplen = 0; - /* We are waiting for a possible second reply. */ - if (hp->id == anhp->id) - recvresp1 = 1; diff --git a/src/patches/glibc/glibc-rh804689.patch b/src/patches/glibc/glibc-rh804689.patch deleted file mode 100644 index a96a33f70..000000000 --- a/src/patches/glibc/glibc-rh804689.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-03-20 21:31:14.177358937 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-03-21 09:13:17.198290683 -0600 -@@ -560,15 +563,11 @@ gaih_inet (const char *name, const struc - int no_more; - int old_res_options; - -- /* If we do not have to look for IPv4 and IPv6 together, use -- the simple, old functions. */ -- if ((req->ai_family == AF_INET -- || (req->ai_family == AF_INET6 -- && ((req->ai_flags & AI_V4MAPPED) == 0 -- || (req->ai_flags & AI_ALL) == 0))) -- && (req->ai_flags & AI_CANONNAME) == 0) -+ /* If we do not have to look for IPv6 addresses, use -+ the simple, old functions, which do not support -+ IPv6 scope ids. */ -+ if (req->ai_family == AF_INET) - { -- int family = req->ai_family; - size_t tmpbuflen = 512; - assert (tmpbuf == NULL); - tmpbuf = alloca_account (tmpbuflen, alloca_used); diff --git a/src/patches/glibc/glibc-rh806404.patch b/src/patches/glibc/glibc-rh806404.patch deleted file mode 100644 index b78b903b7..000000000 --- a/src/patches/glibc/glibc-rh806404.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/nss/getnssent.c b/nss/getnssent.c ---- a/nss/getnssent.c 2004-12-13 14:48:34.000000000 -0700 -+++ b/nss/getnssent.c 2012-03-23 13:46:54.639095121 -0600 -@@ -33,7 +33,7 @@ __nss_getent (getent_r_function func, vo - *buffer = malloc (*buffer_size); - } - -- while (buffer != NULL -+ while (*buffer != NULL - && func (resbuf, *buffer, *buffer_size, &result, h_errnop) == ERANGE - && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL)) - { diff --git a/src/patches/glibc/glibc-rh808337.patch b/src/patches/glibc/glibc-rh808337.patch deleted file mode 100644 index bc20cbc26..000000000 --- a/src/patches/glibc/glibc-rh808337.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit 6a5ee1029b3966c5ae9adaaa881e255b2880f511 -Author: Ulrich Drepper -Date: Sun Mar 6 00:01:50 2011 -0500 - - Fix loading first object along a path when tracing. - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 1ad16a0..f866066 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -2111,7 +2111,9 @@ _dl_map_object (struct link_map *loader, const char *name, - { - #ifdef SHARED - // XXX Correct to unconditionally default to namespace 0? -- l = loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded; -+ l = (loader -+ ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded -+ ?: &GL(dl_rtld_map)); - #else - l = loader; - #endif diff --git a/src/patches/glibc/glibc-rh808545.patch b/src/patches/glibc/glibc-rh808545.patch deleted file mode 100644 index 9a2cae332..000000000 --- a/src/patches/glibc/glibc-rh808545.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c ---- a/resolv/nss_dns/dns-host.c 2012-04-18 11:17:31.527539744 -0600 -+++ b/resolv/nss_dns/dns-host.c 2012-04-18 11:21:45.441394159 -0600 -@@ -745,6 +745,10 @@ getanswer_r (const querybuf *answer, int - - if ((qtype == T_A || qtype == T_AAAA) && type == T_CNAME) - { -+ /* A CNAME could also have a TTL entry. */ -+ if (ttlp != NULL && ttl < *ttlp) -+ *ttlp = ttl; -+ - if (ap >= &host_data->aliases[MAX_NR_ALIASES - 1]) - continue; - n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); -@@ -906,7 +910,7 @@ getanswer_r (const querybuf *answer, int - { - register int nn; - -- if (ttlp != NULL) -+ if (ttlp != NULL && ttl < *ttlp) - *ttlp = ttl; - if (canonp != NULL) - *canonp = bp; -@@ -1082,6 +1086,11 @@ gaih_getanswer_slice (const querybuf *an - if (type == T_CNAME) - { - char tbuf[MAXDNAME]; -+ -+ /* A CNAME could also have a TTL entry. */ -+ if (ttlp != NULL && ttl < *ttlp) -+ *ttlp = ttl; -+ - n = dn_expand (answer->buf, end_of_message, cp, tbuf, sizeof tbuf); - if (__builtin_expect (n < 0 || res_hnok (tbuf) == 0, 0)) - { -@@ -1162,7 +1171,7 @@ gaih_getanswer_slice (const querybuf *an - - if (*firstp) - { -- if (ttlp != NULL) -+ if (ttlp != NULL && ttl < *ttlp) - *ttlp = ttl; - - (*pat)->name = canon ?: h_name; diff --git a/src/patches/glibc/glibc-rh809602.patch b/src/patches/glibc/glibc-rh809602.patch deleted file mode 100644 index 81aa63aba..000000000 --- a/src/patches/glibc/glibc-rh809602.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -rup a/nscd/nscd_getserv_r.c b/nscd/nscd_getserv_r.c ---- a/nscd/nscd_getserv_r.c 2012-04-04 16:37:27.873951850 -0600 -+++ b/nscd/nscd_getserv_r.c 2012-04-04 16:37:49.904837348 -0600 -@@ -124,6 +123,7 @@ nscd_getserv_r (const char *crit, size_t - s_name = (char *) (&found->data[0].servdata + 1); - serv_resp = found->data[0].servdata; - s_proto = s_name + serv_resp.s_name_len; -+ alloca_aliases_len = 1; - aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len); - aliases_list = ((char *) aliases_len - + serv_resp.s_aliases_cnt * sizeof (uint32_t)); -@@ -154,7 +154,9 @@ nscd_getserv_r (const char *crit, size_t - + (serv_resp.s_aliases_cnt - * sizeof (uint32_t))); - if (alloca_aliases_len) -- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -+ tmp = alloca_account (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t), -+ alloca_used); - else - { - tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t)); -@@ -249,8 +251,9 @@ nscd_getserv_r (const char *crit, size_t - + (serv_resp.s_aliases_cnt - * sizeof (uint32_t))); - if (alloca_aliases_len) -- aliases_len = alloca (serv_resp.s_aliases_cnt -- * sizeof (uint32_t)); -+ aliases_len = alloca_account (serv_resp.s_aliases_cnt -+ * sizeof (uint32_t), -+ alloca_used); - else - { - aliases_len = malloc (serv_resp.s_aliases_cnt -@@ -368,7 +371,11 @@ nscd_getserv_r (const char *crit, size_t - } - - if (retval != -1) -- goto retry; -+ { -+ if (!alloca_aliases_len) -+ free ((void *) aliases_len); -+ goto retry; -+ } - } - - if (!alloca_aliases_len) diff --git a/src/patches/glibc/glibc-rh809726.patch b/src/patches/glibc/glibc-rh809726.patch deleted file mode 100644 index 0f264c817..000000000 --- a/src/patches/glibc/glibc-rh809726.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff -rup a/localedata/locales/fi_FI b/localedata/locales/fi_FI ---- a/localedata/locales/fi_FI 2012-07-11 14:48:45.994749607 -0600 -+++ b/localedata/locales/fi_FI 2012-07-11 14:50:20.003277477 -0600 -@@ -63,60 +63,65 @@ reorder-after - - - --reorder-after -+reorder-after - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -+reorder-after -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE -+ ;;;IGNORE - ;;;IGNORE - --reorder-after -+reorder-after - ;;; -- ;;; - ;;; -- ;;; - ;;; -- ;;; - ;;; -- ;;; - ;;; -- ;;; - ;;; -- ;;; - ;;; -- ;;; - ;;; -+reorder-after -+ ;;; -+ ;;; -+ ;;; -+ ;;; -+ ;;; -+ ;;; -+ ;;; - ;;; - - reorder-after - ;;;IGNORE -+reorder-after - ;;;IGNORE - - % Present in iso14651_t1, but these definitions seem to have been - % removed from latest iso14651 tables. --reorder-after -+reorder-after - "";"";"";IGNORE -+reorder-after - "";"";"";IGNORE - - reorder-after - ;;;IGNORE -- ;;;IGNORE - ;;;IGNORE -+reorder-after -+ ;;;IGNORE - ;;;IGNORE - - reorder-end diff --git a/src/patches/glibc/glibc-rh823909.patch b/src/patches/glibc/glibc-rh823909.patch deleted file mode 100644 index ed9c4c91a..000000000 --- a/src/patches/glibc/glibc-rh823909.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/iconvdata/ibm930.c b/iconvdata/ibm930.c -index 25a9be0..6f758eb 100644 ---- a/iconvdata/ibm930.c -+++ b/iconvdata/ibm930.c -@@ -162,7 +162,8 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (res = __ibm930db_to_ucs4[ch + rp2->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ - { \ -@@ -215,7 +216,8 @@ enum - while (ch > rp2->end) \ - ++rp2; \ - \ -- if (__builtin_expect (ch < rp2->start, 0) \ -+ if (__builtin_expect (rp2->start == 0xffff, 0) \ -+ || __builtin_expect (ch < rp2->start, 0) \ - || (cp = __ucs4_to_ibm930db[ch + rp2->idx], \ - __builtin_expect (cp[0], L'\1')== L'\0' && ch != '\0')) \ - { \ - diff --git a/src/patches/glibc/glibc-rh826149.patch b/src/patches/glibc/glibc-rh826149.patch deleted file mode 100644 index 805572bb1..000000000 --- a/src/patches/glibc/glibc-rh826149.patch +++ /dev/null @@ -1,80 +0,0 @@ -diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c ---- a/posix/fnmatch.c 2012-05-25 12:37:26.566678872 -0400 -+++ b/posix/fnmatch.c 2012-05-25 13:08:44.451972286 -0400 -@@ -333,6 +333,7 @@ fnmatch (pattern, string, flags) - # if HANDLE_MULTIBYTE - if (__builtin_expect (MB_CUR_MAX, 1) != 1) - { -+ const char *orig_pattern = pattern; - mbstate_t ps; - size_t n; - const char *p; -@@ -356,10 +357,9 @@ fnmatch (pattern, string, flags) - alloca_used); - n = mbsrtowcs (wpattern, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto try_singlebyte; -+ - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -371,10 +371,8 @@ fnmatch (pattern, string, flags) - prepare_wpattern: - n = mbsrtowcs (NULL, &pattern, 0, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- return -1; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto try_singlebyte; - if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) - { - __set_errno (ENOMEM); -@@ -401,14 +399,8 @@ fnmatch (pattern, string, flags) - alloca_used); - n = mbsrtowcs (wstring, &p, n + 1, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- { -- /* Something wrong. -- XXX Do we have to set `errno' to something which -- mbsrtows hasn't already done? */ -- free_return: -- free (wpattern_malloc); -- return -1; -- } -+ /* Something wrong: Fall back to single byte matching. */ -+ goto free_and_try_singlebyte; - if (p) - { - memset (&ps, '\0', sizeof (ps)); -@@ -420,10 +412,8 @@ fnmatch (pattern, string, flags) - prepare_wstring: - n = mbsrtowcs (NULL, &string, 0, &ps); - if (__builtin_expect (n == (size_t) -1, 0)) -- /* Something wrong. -- XXX Do we have to set `errno' to something which mbsrtows hasn't -- already done? */ -- goto free_return; -+ /* Something wrong: Fall back to single byte matching. */ -+ goto free_and_try_singlebyte; - if (__builtin_expect (n >= (size_t) -1 / sizeof (wchar_t), 0)) - { - free (wpattern_malloc); -@@ -450,6 +440,11 @@ fnmatch (pattern, string, flags) - free (wpattern_malloc); - - return res; -+ -+ free_and_try_singlebyte: -+ free(wpattern_malloc); -+ try_singlebyte: -+ pattern = orig_pattern; - } - # endif /* mbstate_t and mbsrtowcs or _LIBC. */ - diff --git a/src/patches/glibc/glibc-rh827362.patch b/src/patches/glibc/glibc-rh827362.patch deleted file mode 100644 index 7e6d07e6d..000000000 --- a/src/patches/glibc/glibc-rh827362.patch +++ /dev/null @@ -1,250 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/libio/Makefile glibc-2.12-2-gc4ccff1.fseek/libio/Makefile ---- glibc-2.12-2-gc4ccff1/libio/Makefile 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/Makefile 2012-09-05 17:28:08.699360413 +0530 -@@ -58,7 +58,7 @@ tests = tst_swprintf tst_wprintf tst_sws - tst-memstream1 tst-memstream2 \ - tst-wmemstream1 tst-wmemstream2 \ - bug-memstream1 bug-wmemstream1 \ -- tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos -+ tst-setvbuf1 tst-popen1 tst-fgetwc bug-wsetpos tst-fseek - test-srcs = test-freopen - - all: # Make this the default target; it will be defined in Rules. -diff -pruN glibc-2.12-2-gc4ccff1/libio/tst-fseek.c glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c ---- glibc-2.12-2-gc4ccff1/libio/tst-fseek.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/tst-fseek.c 2012-09-05 17:27:33.606359692 +0530 -@@ -0,0 +1,153 @@ -+/* Verify that fseek/ftell combination works for wide chars. -+ -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* Defined in test-skeleton.c. */ -+static int create_temp_file (const char *base, char **filename); -+ -+ -+static int -+do_seek_end (FILE *fp) -+{ -+ long save; -+ -+ if (fp == NULL) -+ { -+ printf ("do_seek_end: fopen: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (fputws (L"abc\n", fp) == -1) -+ { -+ printf ("do_seek_end: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ save = ftell (fp); -+ rewind (fp); -+ -+ if (fseek (fp, 0, SEEK_END) == -1) -+ { -+ printf ("do_seek_end: fseek: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (save != ftell (fp)) -+ { -+ printf ("save = %ld, ftell = %ld\n", save, ftell (fp)); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+int -+do_seek_set (FILE *fp) -+{ -+ long save; -+ -+ if (fputws (L"abc\n", fp) == -1) -+ { -+ printf ("seek_set: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ save = ftell (fp); -+ -+ if (fputws (L"xyz\n", fp) == -1) -+ { -+ printf ("seek_set: fputws: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (fseek (fp, save, SEEK_SET) == -1) -+ { -+ printf ("seek_set: fseek: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (save != ftell (fp)) -+ { -+ printf ("save = %ld, ftell = %ld\n", save, ftell (fp)); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static int -+do_test (void) -+{ -+ if (setlocale (LC_ALL, "en_US.utf8") == NULL) -+ { -+ printf ("Cannot set en_US.utf8 locale.\n"); -+ exit (1); -+ } -+ -+ int ret = 0; -+ char *filename; -+ int fd = create_temp_file ("tst-fseek.out", &filename); -+ -+ if (fd == -1) -+ return 1; -+ -+ FILE *fp = fdopen (fd, "w+"); -+ if (fp == NULL) -+ { -+ printf ("seek_set: fopen: %s\n", strerror (errno)); -+ close (fd); -+ return 1; -+ } -+ -+ if (do_seek_set (fp)) -+ { -+ printf ("SEEK_SET test failed\n"); -+ ret = 1; -+ } -+ -+ /* Reopen the file. */ -+ fclose (fp); -+ fp = fopen (filename, "w+"); -+ if (fp == NULL) -+ { -+ printf ("seek_end: fopen: %s\n", strerror (errno)); -+ return 1; -+ } -+ -+ if (do_seek_end (fp)) -+ { -+ printf ("SEEK_END test failed\n"); -+ ret = 1; -+ } -+ -+ fclose (fp); -+ -+ return ret; -+} -+ -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -pruN glibc-2.12-2-gc4ccff1/libio/wfileops.c glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c ---- glibc-2.12-2-gc4ccff1/libio/wfileops.c 2010-05-04 16:57:23.000000000 +0530 -+++ glibc-2.12-2-gc4ccff1.fseek/libio/wfileops.c 2012-09-05 17:27:33.608359685 +0530 -@@ -547,6 +547,55 @@ _IO_wfile_sync (fp) - } - INTDEF(_IO_wfile_sync) - -+/* Adjust the internal buffer pointers to reflect the state in the external -+ buffer. The content between fp->_IO_read_base and fp->_IO_read_ptr is -+ assumed to be converted and available in the range -+ fp->_wide_data->_IO_read_base and fp->_wide_data->_IO_read_end. */ -+static inline int -+adjust_wide_data (_IO_FILE *fp, bool do_convert) -+{ -+ struct _IO_codecvt *cv = fp->_codecvt; -+ -+ int clen = (*cv->__codecvt_do_encoding) (cv); -+ -+ /* Take the easy way out for constant length encodings if we don't need to -+ convert. */ -+ if (!do_convert && clen > 0) -+ { -+ fp->_wide_data->_IO_read_end += ((fp->_IO_read_ptr - fp->_IO_read_base) -+ / clen); -+ goto done; -+ } -+ -+ enum __codecvt_result status; -+ const char *read_stop = (const char *) fp->_IO_read_base; -+ do -+ { -+ -+ fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state; -+ status = (*cv->__codecvt_do_in) (cv, &fp->_wide_data->_IO_state, -+ fp->_IO_read_base, fp->_IO_read_ptr, -+ &read_stop, -+ fp->_wide_data->_IO_read_base, -+ fp->_wide_data->_IO_buf_end, -+ &fp->_wide_data->_IO_read_end); -+ -+ /* Should we return EILSEQ? */ -+ if (__builtin_expect (status == __codecvt_error, 0)) -+ { -+ fp->_flags |= _IO_ERR_SEEN; -+ return -1; -+ } -+ } -+ while (__builtin_expect (status == __codecvt_partial, 0)); -+ -+done: -+ /* Now seek to the end of the read buffer. */ -+ fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end; -+ -+ return 0; -+} -+ - _IO_off64_t - _IO_wfile_seekoff (fp, offset, dir, mode) - _IO_FILE *fp; -@@ -695,6 +744,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode - fp->_wide_data->_IO_buf_base); - _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base); -+ -+ if (adjust_wide_data (fp, false)) -+ goto dumb; -+ - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - goto resync; - } -@@ -735,6 +788,10 @@ _IO_wfile_seekoff (fp, offset, dir, mode - _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, - fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base); - _IO_wsetp (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base); -+ -+ if (adjust_wide_data (fp, true)) -+ goto dumb; -+ - fp->_offset = result + count; - _IO_mask_flags (fp, 0, _IO_EOF_SEEN); - return offset; diff --git a/src/patches/glibc/glibc-rh830127.patch b/src/patches/glibc/glibc-rh830127.patch deleted file mode 100644 index 06dea73e4..000000000 --- a/src/patches/glibc/glibc-rh830127.patch +++ /dev/null @@ -1,403 +0,0 @@ -diff -Nrup a/stdio-common/bug22.c b/stdio-common/bug22.c ---- a/stdio-common/bug22.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/bug22.c 2012-08-03 13:56:40.887829210 -0600 -@@ -1,12 +1,22 @@ - /* BZ #5424 */ - #include -+#include - -+/* INT_MAX + 1 */ - #define N 2147483648 - -+/* (INT_MAX / 2) + 2 */ -+#define N2 1073741825 -+ -+/* INT_MAX - 3 */ -+#define N3 2147483644 -+ - #define STRINGIFY(S) #S - #define MAKE_STR(S) STRINGIFY(S) - - #define SN MAKE_STR(N) -+#define SN2 MAKE_STR(N2) -+#define SN3 MAKE_STR(N3) - - static int - do_test (void) -@@ -20,13 +30,27 @@ do_test (void) - return 1; - } - -- ret = fprintf (fp, "%" SN "d%" SN "d", 1, 1); -+ ret = fprintf (fp, "%" SN "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; -+ -+ ret = fprintf (fp, "%." SN "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; -+ -+ ret = fprintf (fp, "%." SN3 "d", 1); -+ printf ("ret = %d\n", ret); -+ if (ret != -1 || errno != EOVERFLOW) -+ return 1; - -+ ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1); - printf ("ret = %d\n", ret); - -- return ret != -1; -+ return ret != -1 || errno != EOVERFLOW; - } - --#define TIMEOUT 30 -+#define TIMEOUT 60 - #define TEST_FUNCTION do_test () - #include "../test-skeleton.c" -diff -Nrup a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h ---- a/stdio-common/printf-parse.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/printf-parse.h 2012-08-03 13:57:31.932638761 -0600 -@@ -14,9 +14,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ . */ - - #include - #include -@@ -69,16 +68,27 @@ union printf_arg - #ifndef DONT_NEED_READ_INT - /* Read a simple integer from a string and update the string pointer. - It is assumed that the first character is a digit. */ --static unsigned int -+static int - read_int (const UCHAR_T * *pstr) - { -- unsigned int retval = **pstr - L_('0'); -+ int retval = **pstr - L_('0'); - - while (ISDIGIT (*++(*pstr))) -- { -- retval *= 10; -- retval += **pstr - L_('0'); -- } -+ if (retval >= 0) -+ { -+ if (INT_MAX / 10 < retval) -+ retval = -1; -+ else -+ { -+ int digit = **pstr - L_('0'); -+ -+ retval *= 10; -+ if (INT_MAX - digit < retval) -+ retval = -1; -+ else -+ retval += digit; -+ } -+ } - - return retval; - } -diff -Nrup a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c ---- a/stdio-common/printf-parsemb.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdio-common/printf-parsemb.c 2012-08-03 13:58:44.683366361 -0600 -@@ -13,9 +13,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ . */ - - #include - #include -@@ -88,12 +87,15 @@ __parse_one_specmb (const UCHAR_T *forma - - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - /* Is positional parameter. */ - { - ++format; /* Skip the '$'. */ -- spec->data_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->data_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - } - else - /* Oops; that was actually the width and/or 0 padding flag. -@@ -161,10 +163,13 @@ __parse_one_specmb (const UCHAR_T *forma - /* The width argument might be found in a positional parameter. */ - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - { -- spec->width_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->width_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - ++format; /* Skip '$'. */ - } - } -@@ -178,9 +183,13 @@ __parse_one_specmb (const UCHAR_T *forma - } - } - else if (ISDIGIT (*format)) -- /* Constant width specification. */ -- spec->info.width = read_int (&format); -+ { -+ int n = read_int (&format); - -+ /* Constant width specification. */ -+ if (n != -1) -+ spec->info.width = n; -+ } - /* Get the precision. */ - spec->prec_arg = -1; - /* -1 means none given; 0 means explicit 0. */ -@@ -197,10 +206,13 @@ __parse_one_specmb (const UCHAR_T *forma - { - n = read_int (&format); - -- if (n > 0 && *format == L_('$')) -+ if (n != 0 && *format == L_('$')) - { -- spec->prec_arg = n - 1; -- *max_ref_arg = MAX (*max_ref_arg, n); -+ if (n != -1) -+ { -+ spec->prec_arg = n - 1; -+ *max_ref_arg = MAX (*max_ref_arg, n); -+ } - ++format; - } - } -@@ -214,7 +226,12 @@ __parse_one_specmb (const UCHAR_T *forma - } - } - else if (ISDIGIT (*format)) -- spec->info.prec = read_int (&format); -+ { -+ int n = read_int (&format); -+ -+ if (n != -1) -+ spec->info.prec = n; -+ } - else - /* "%.?" is treated like "%.0?". */ - spec->info.prec = 0; -@@ -295,9 +312,9 @@ __parse_one_specmb (const UCHAR_T *forma - /* We don't try to get the types for all arguments if the format - uses more than one. The normal case is covered though. If - the call returns -1 we continue with the normal specifiers. */ -- || (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec]) -- (&spec->info, 1, &spec->data_arg_type, -- &spec->size)) < 0) -+ || (int) (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec]) -+ (&spec->info, 1, &spec->data_arg_type, -+ &spec->size)) < 0) - { - /* Find the data argument types of a built-in spec. */ - spec->ndata_args = 1; -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-08-03 13:31:26.605168350 -0600 -+++ b/stdio-common/vfprintf.c 2012-08-03 14:09:26.836725512 -0600 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991-2008, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 1991-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -12,9 +12,8 @@ - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -+ License along with the GNU C Library; if not, see -+ . */ - - #include - #include -@@ -67,10 +66,10 @@ - do { \ - unsigned int _val = val; \ - assert ((unsigned int) done < (unsigned int) INT_MAX); \ -- if (__builtin_expect ((unsigned int) INT_MAX - (unsigned int) done \ -- < _val, 0)) \ -+ if (__builtin_expect (INT_MAX - done < _val, 0)) \ - { \ - done = -1; \ -+ __set_errno (EOVERFLOW); \ - goto all_done; \ - } \ - done += _val; \ -@@ -141,12 +140,17 @@ - do \ - { \ - assert ((size_t) done <= (size_t) INT_MAX); \ -- if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len) \ -- || (size_t) INT_MAX - (size_t) done < (size_t) (Len)) \ -+ if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len)) \ - { \ - done = -1; \ - goto all_done; \ - } \ -+ if (__builtin_expect (INT_MAX - done < (Len), 0)) \ -+ { \ -+ done = -1; \ -+ __set_errno (EOVERFLOW); \ -+ goto all_done; \ -+ } \ - done += (Len); \ - } \ - while (0) -@@ -1435,10 +1439,21 @@ vfprintf (FILE *s, const CHAR_T *format, - const UCHAR_T *tmp; /* Temporary value. */ - - tmp = ++f; -- if (ISDIGIT (*tmp) && read_int (&tmp) && *tmp == L_('$')) -- /* The width comes from a positional parameter. */ -- goto do_positional; -+ if (ISDIGIT (*tmp)) -+ { -+ int pos = read_int (&tmp); - -+ if (pos == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } -+ -+ if (pos && *tmp == L_('$')) -+ /* The width comes from a positional parameter. */ -+ goto do_positional; -+ } - width = va_arg (ap, int); - - /* Negative width means left justified. */ -@@ -1449,9 +1464,9 @@ vfprintf (FILE *s, const CHAR_T *format, - left = 1; - } - -- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (width >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1481,9 +1496,10 @@ vfprintf (FILE *s, const CHAR_T *format, - LABEL (width): - width = read_int (&f); - -- if (__builtin_expect (width >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (width == -1 -+ || width >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1518,10 +1534,21 @@ vfprintf (FILE *s, const CHAR_T *format, - const UCHAR_T *tmp; /* Temporary value. */ - - tmp = ++f; -- if (ISDIGIT (*tmp) && read_int (&tmp) > 0 && *tmp == L_('$')) -- /* The precision comes from a positional parameter. */ -- goto do_positional; -+ if (ISDIGIT (*tmp)) -+ { -+ int pos = read_int (&tmp); -+ -+ if (pos == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } - -+ if (pos && *tmp == L_('$')) -+ /* The precision comes from a positional parameter. */ -+ goto do_positional; -+ } - prec = va_arg (ap, int); - - /* If the precision is negative the precision is omitted. */ -@@ -1529,15 +1556,26 @@ vfprintf (FILE *s, const CHAR_T *format, - prec = -1; - } - else if (ISDIGIT (*f)) -- prec = read_int (&f); -+ { -+ prec = read_int (&f); -+ -+ /* The precision was specified in this case as an extremely -+ large positive value. */ -+ if (prec == -1) -+ { -+ __set_errno (EOVERFLOW); -+ done = -1; -+ goto all_done; -+ } -+ } - else - prec = 0; - if (prec > width - && prec > sizeof (work_buffer) / sizeof (work_buffer[0]) - 32) - { -- if (__builtin_expect (prec >= (size_t) -1 / sizeof (CHAR_T) - 32, 0)) -+ if (__builtin_expect (prec >= INT_MAX / sizeof (CHAR_T) - 32, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1722,13 +1760,13 @@ do_positional: - nargs = MAX (nargs, max_ref_arg); - /* Calculate total size needed to represent a single argument across - all three argument-related arrays. */ -- bytes_per_arg = sizeof (*args_value) + sizeof (*args_size) -- + sizeof (*args_type); -+ bytes_per_arg = (sizeof (*args_value) + sizeof (*args_size) -+ + sizeof (*args_type)); - - /* Check for potential integer overflow. */ -- if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0)) -+ if (__builtin_expect (nargs > INT_MAX / bytes_per_arg, 0)) - { -- __set_errno (ERANGE); -+ __set_errno (EOVERFLOW); - done = -1; - goto all_done; - } -@@ -1746,6 +1784,8 @@ do_positional: - } - } - -+ /* Set up the remaining two arrays to each point past the end of the -+ prior array, since space for all three has been allocated now. */ - args_size = &args_value[nargs].pa_int; - args_type = &args_size[nargs]; - memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', diff --git a/src/patches/glibc/glibc-rh832516.patch b/src/patches/glibc/glibc-rh832516.patch deleted file mode 100644 index 476af4b9c..000000000 --- a/src/patches/glibc/glibc-rh832516.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -Nrup a/locale/loadlocale.c b/locale/loadlocale.c ---- a/locale/loadlocale.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/locale/loadlocale.c 2012-08-05 17:19:47.761384155 -0400 -@@ -170,7 +170,6 @@ _nl_load_locale (struct loaded_l10nfile - int save_err; - int alloc = ld_mapped; - -- file->decided = 1; - file->data = NULL; - - fd = open_not_cancel_2 (file->filename, O_RDONLY); -@@ -279,6 +278,7 @@ _nl_load_locale (struct loaded_l10nfile - newdata->alloc = alloc; - - file->data = newdata; -+ file->decided = 1; - } - - void diff --git a/src/patches/glibc/glibc-rh832694.patch b/src/patches/glibc/glibc-rh832694.patch deleted file mode 100644 index 249afb526..000000000 --- a/src/patches/glibc/glibc-rh832694.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c -index e3d2faf..5437ff8 100644 ---- a/sysdeps/gnu/errlist.c -+++ b/sysdeps/gnu/errlist.c -@@ -780,11 +780,12 @@ TRANS The user's disk quota was exceeded. */ - #endif - #ifdef ESTALE - /* --TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --TRANS system which is due to file system rearrangements on the server host. --TRANS Repairing this condition usually requires unmounting and remounting --TRANS the NFS file system on the local host. */ -- [ERR_REMAP (ESTALE)] = N_("Stale NFS file handle"), -+TRANS Stale file handle. This indicates an internal confusion in the -+TRANS file system which is due to file system rearrangements on the server host -+TRANS for NFS filesystems or corruption in other filesystems. -+TRANS Repairing this condition usually requires unmounting, possibly -+TRANS repairing and remounting the file system. */ -+ [ERR_REMAP (ESTALE)] = N_("Stale file handle"), - # if ESTALE > ERR_MAX - # undef ERR_MAX - # define ERR_MAX ESTALE diff --git a/src/patches/glibc/glibc-rh833717.patch b/src/patches/glibc/glibc-rh833717.patch deleted file mode 100644 index e44573cf0..000000000 --- a/src/patches/glibc/glibc-rh833717.patch +++ /dev/null @@ -1,45265 +0,0 @@ -diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile ---- a/stdio-common/Makefile 2012-05-23 14:54:54.670443298 -0600 -+++ b/stdio-common/Makefile 2012-05-22 13:47:51.000000000 -0600 -@@ -60,7 +60,7 @@ tests := tstscanf test_rdwr test-popen t - tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ - bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ -- scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs -+ scanf16 scanf17 tst-setvbuf1 bug-vfprintf-nargs bug23 bug23-2 bug23-3 - - test-srcs = tst-unbputc tst-printf - -diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c ---- a/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-2.c 2012-05-24 07:12:55.331644716 -0600 -@@ -0,0 +1,70 @@ -+#include -+#include -+#include -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+static int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return strcmp (buf, expected) != 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c ---- a/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-3.c 2012-05-24 07:13:26.948480695 -0600 -@@ -0,0 +1,45076 @@ -+#include -+#include -+#include -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+ -+ -+int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return (strcmp (buf, expected) != 0); -+} -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -+ -diff -Nrup a/stdio-common/bug23.c b/stdio-common/bug23.c ---- a/stdio-common/bug23.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23.c 2012-05-24 07:12:27.636788393 -0600 -@@ -0,0 +1,22 @@ -+#include -+#include -+#include -+ -+static const char expected[] = "\ -+\n\ -+a\n\ -+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; -+ -+static int -+do_test (void) -+{ -+ char *buf = malloc (strlen (expected) + 1); -+ snprintf (buf, strlen (expected) + 1, -+ "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" -+ "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", -+ "a", "b", "c", "d", 5); -+ return strcmp (buf, expected) != 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-05-23 14:54:54.689443199 -0600 -+++ b/stdio-common/vfprintf.c 2012-05-23 23:16:55.376155638 -0600 -@@ -238,6 +238,12 @@ vfprintf (FILE *s, const CHAR_T *format, - /* For the argument descriptions, which may be allocated on the heap. */ - void *args_malloced = NULL; - -+ /* For positional argument handling. */ -+ struct printf_spec *specs; -+ -+ /* Track if we malloced the SPECS array and thus must free it. */ -+ bool specs_malloced = false; -+ - /* This table maps a character into a number representing a - class. In each step there is a destination label for each - class. */ -@@ -1638,10 +1644,10 @@ do_positional: - /* Array with information about the needed arguments. This has to - be dynamically extensible. */ - size_t nspecs = 0; -- size_t nspecs_max = 32; /* A more or less arbitrary start value. */ -- struct printf_spec *specs -- = alloca (nspecs_max * sizeof (struct printf_spec)); -+ /* A more or less arbitrary start value. */ -+ size_t nspecs_size = 32 * sizeof (struct printf_spec); - -+ specs = alloca (nspecs_size); - /* The number of arguments the format string requests. This will - determine the size of the array needed to store the argument - attributes. */ -@@ -1678,14 +1684,30 @@ do_positional: - - for (f = lead_str_end; *f != L_('\0'); f = specs[nspecs++].next_fmt) - { -- if (nspecs >= nspecs_max) -+ if (nspecs * sizeof (*specs) >= nspecs_size) - { - /* Extend the array of format specifiers. */ - struct printf_spec *old = specs; -- specs = extend_alloca (specs, nspecs_max, 2 * nspecs_max); -+ if (__libc_use_alloca (2 * nspecs_size)) -+ specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size); -+ else -+ { -+ nspecs_size *= 2; -+ specs = malloc (nspecs_size); -+ } -+ - - /* Copy the old array's elements to the new space. */ -- memmove (specs, old, nspecs * sizeof (struct printf_spec)); -+ memmove (specs, old, nspecs * sizeof (*specs)); -+ -+ /* If we had previously malloc'd space for SPECS, then -+ release it after the copy is complete. */ -+ if (specs_malloced) -+ free (old); -+ -+ /* Now set SPECS_MALLOCED if needed. */ -+ if (!__libc_use_alloca (nspecs_size)) -+ specs_malloced = true; - } - - /* Parse the format specifier. */ -@@ -1998,6 +2020,8 @@ do_positional: - } - - all_done: -+ if (specs_malloced) -+ free (specs); - free (args_malloced); - free (workstart); - /* Unlock the stream. */ diff --git a/src/patches/glibc/glibc-rh834386-2.patch b/src/patches/glibc/glibc-rh834386-2.patch deleted file mode 100644 index ad895c739..000000000 --- a/src/patches/glibc/glibc-rh834386-2.patch +++ /dev/null @@ -1,107 +0,0 @@ -2013-05-03 Carlos O'Donell - - * intl/dcigettext.c (DCIGETTEXT): Skip translating if _nl_find_msg returns -1. - (_nl_find_msg): Return -1 if recursive call returned -1. If newmem is null - return -1. - * intl/loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1 abort - loading the domain. - -diff -Nrup a/intl/dcigettext.c b/intl/dcigettext.c ---- a/intl/dcigettext.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/intl/dcigettext.c 2013-08-01 00:11:54.616363264 -0400 -@@ -640,6 +640,11 @@ DCIGETTEXT (domainname, msgid1, msgid2, - retval = _nl_find_msg (domain->successor[cnt], binding, - msgid1, 1, &retlen); - -+ /* Resource problems are not fatal, instead we return no -+ translation. */ -+ if (__builtin_expect (retval == (char *) -1, 0)) -+ goto no_translation; -+ - if (retval != NULL) - { - domain = domain->successor[cnt]; -@@ -943,6 +948,11 @@ _nl_find_msg (domain_file, domainbinding - nullentry = - _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); - -+ /* Resource problems are fatal. If we continue onwards we will -+ only attempt to calloc a new conv_tab and fail later. */ -+ if (__builtin_expect (nullentry == (char *) -1, 0)) -+ return (char *) -1; -+ - if (nullentry != NULL) - { - const char *charsetstr; -@@ -1156,7 +1166,7 @@ _nl_find_msg (domain_file, domainbinding - freemem_size); - # ifdef _LIBC - if (newmem != NULL) -- transmem_list = transmem_list->next; -+ transmem_list = newmem; - else - { - struct transmem_list *old = transmem_list; -@@ -1171,6 +1181,16 @@ _nl_find_msg (domain_file, domainbinding - malloc_count = 1; - freemem_size = INITIAL_BLOCK_SIZE; - newmem = (transmem_block_t *) malloc (freemem_size); -+# ifdef _LIBC -+ if (newmem != NULL) -+ { -+ /* Add the block to the list of blocks we have to free -+ at some point. */ -+ newmem->next = transmem_list; -+ transmem_list = newmem; -+ } -+ /* Fall through and return -1. */ -+# endif - } - if (__builtin_expect (newmem == NULL, 0)) - { -@@ -1181,11 +1201,6 @@ _nl_find_msg (domain_file, domainbinding - } - - # ifdef _LIBC -- /* Add the block to the list of blocks we have to free -- at some point. */ -- newmem->next = transmem_list; -- transmem_list = newmem; -- - freemem = (unsigned char *) newmem->data; - freemem_size -= offsetof (struct transmem_list, data); - # else -@@ -1402,7 +1417,7 @@ get_output_charset (domainbinding) - return _NL_CURRENT (LC_CTYPE, CODESET); - # else - # if HAVE_ICONV -- extern const char *locale_charset PARAMS ((void); -+ extern const char *locale_charset PARAMS ((void)); - return locale_charset (); - # endif - # endif -diff -Nrup a/intl/loadmsgcat.c b/intl/loadmsgcat.c ---- a/intl/loadmsgcat.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/intl/loadmsgcat.c 2013-08-01 00:12:48.448237849 -0400 -@@ -1235,7 +1235,7 @@ _nl_load_domain (domain_file, domainbind - default: - /* This is an invalid revision. */ - invalid: -- /* This is an invalid .mo file. */ -+ /* This is an invalid .mo file or we ran out of resources. */ - free (domain->malloced); - #ifdef HAVE_MMAP - if (use_mmap) -@@ -1255,6 +1255,12 @@ _nl_load_domain (domain_file, domainbind - - /* Get the header entry and look for a plural specification. */ - nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); -+ if (__builtin_expect (nullentry == (char *) -1, 0)) -+ { -+ __libc_rwlock_fini (domain->conversions_lock); -+ goto invalid; -+ } -+ - EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); - - out: diff --git a/src/patches/glibc/glibc-rh834386.patch b/src/patches/glibc/glibc-rh834386.patch deleted file mode 100644 index 61ddbe83e..000000000 --- a/src/patches/glibc/glibc-rh834386.patch +++ /dev/null @@ -1,181 +0,0 @@ -# -# Red Hat BZ: -# https://bugzilla.redhat.com/show_bug.cgi?id=816647 -# -# ChangeLog -# -#2013-04-30 Patsy Franklin -# -# * iconv/gconv_cache.c (find_module): Demangle init_fct before -# checking for NULL. Mangle __btowc_fct if init_fct is non-NULL. -# * iconv/gconv_db.c (free_derivation): Check that __shlib_handle -# is non-NULL before demangling the end_fct. Check for NULL -# end_fct after demangling. -# (__gconv_release_step): Demangle the end_fct before checking -# it for NULL. Remove assert on __shlibc_handle != NULL. -# (gen_steps): Don't check btowc_fct for NULL before mangling. -# Demangle init_fct before checking for NULL. -# (increment_counter): Likewise -# * gconv_dl.c (__gconv_find_shlib): Don't check init_fct or -# end_fct for NULL before mangling. -# * wcsmbs/btowc.c (__btowc): Demangle btowc_fct before checking -# for NULL. -# -diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c ---- a/iconv/gconv_cache.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_cache.c 2013-04-30 11:34:20.112389987 -0400 -@@ -207,17 +207,16 @@ find_module (const char *directory, cons - result->__data = NULL; - - /* Call the init function. */ -- if (result->__init_fct != NULL) -- { -- __gconv_init_fct init_fct = result->__init_fct; -+ __gconv_init_fct init_fct = result->__init_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (result)); - - #ifdef PTR_MANGLE -- if (result->__btowc_fct != NULL) -- PTR_MANGLE (result->__btowc_fct); -+ PTR_MANGLE (result->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c ---- a/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_db.c 2013-04-30 11:32:42.700592914 -0400 -@@ -179,16 +179,15 @@ free_derivation (void *p) - size_t cnt; - - for (cnt = 0; cnt < deriv->nsteps; ++cnt) -- if (deriv->steps[cnt].__counter > 0 -- && deriv->steps[cnt].__end_fct != NULL) -+ if ((deriv->steps[cnt].__counter > 0) -+ && (deriv->steps[cnt].__shlib_handle != NULL)) - { -- assert (deriv->steps[cnt].__shlib_handle != NULL); -- - __gconv_end_fct end_fct = deriv->steps[cnt].__end_fct; - #ifdef PTR_DEMANGLE - PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (&deriv->steps[cnt])); - } - - /* Free the name strings. */ -@@ -212,16 +211,12 @@ __gconv_release_step (struct __gconv_ste - if (step->__shlib_handle != NULL && --step->__counter == 0) - { - /* Call the destructor. */ -- if (step->__end_fct != NULL) -- { -- assert (step->__shlib_handle != NULL); -- -- __gconv_end_fct end_fct = step->__end_fct; -+ __gconv_end_fct end_fct = step->__end_fct; - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (end_fct); -+ PTR_DEMANGLE (end_fct); - #endif -- DL_CALL_FCT (end_fct, (step)); -- } -+ if (end_fct != NULL) -+ DL_CALL_FCT (end_fct, (step)); - - #ifndef STATIC_GCONV - /* Release the loaded module. */ -@@ -293,13 +288,11 @@ gen_steps (struct derivation_step *best, - - /* Call the init function. */ - __gconv_init_fct init_fct = result[step_cnt].__init_fct; -- if (init_fct != NULL) -- { -- assert (result[step_cnt].__shlib_handle != NULL); -- - # ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - # endif -+ if (init_fct != NULL) -+ { - status = DL_CALL_FCT (init_fct, (&result[step_cnt])); - - if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK) -@@ -312,8 +305,7 @@ gen_steps (struct derivation_step *best, - } - - # ifdef PTR_MANGLE -- if (result[step_cnt].__btowc_fct != NULL) -- PTR_MANGLE (result[step_cnt].__btowc_fct); -+ PTR_MANGLE (result[step_cnt].__btowc_fct); - # endif - } - } -@@ -393,16 +385,15 @@ increment_counter (struct __gconv_step * - - /* Call the init function. */ - __gconv_init_fct init_fct = step->__init_fct; -- if (init_fct != NULL) -- { - #ifdef PTR_DEMANGLE -- PTR_DEMANGLE (init_fct); -+ PTR_DEMANGLE (init_fct); - #endif -+ if (init_fct != NULL) -+ { - DL_CALL_FCT (init_fct, (step)); - - #ifdef PTR_MANGLE -- if (step->__btowc_fct != NULL) -- PTR_MANGLE (step->__btowc_fct); -+ PTR_MANGLE (step->__btowc_fct); - #endif - } - } -diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c ---- a/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_dl.c 2013-04-30 11:32:42.701592922 -0400 -@@ -132,10 +132,8 @@ __gconv_find_shlib (const char *name) - - #ifdef PTR_MANGLE - PTR_MANGLE (found->fct); -- if (found->init_fct != NULL) -- PTR_MANGLE (found->init_fct); -- if (found->end_fct != NULL) -- PTR_MANGLE (found->end_fct); -+ PTR_MANGLE (found->init_fct); -+ PTR_MANGLE (found->end_fct); - #endif - - /* We have succeeded in loading the shared object. */ -diff -Nrup a/wcsmbs/btowc.c b/wcsmbs/btowc.c ---- a/wcsmbs/btowc.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/wcsmbs/btowc.c 2013-04-30 11:32:42.701592922 -0400 -@@ -47,15 +47,15 @@ __btowc (c) - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct; -+#ifdef PTR_DEMANGLE -+ if (fcts->towc->__shlib_handle != NULL) -+ PTR_DEMANGLE (btowc_fct); -+#endif - - if (__builtin_expect (fcts->towc_nsteps == 1, 1) - && __builtin_expect (btowc_fct != NULL, 1)) - { - /* Use the shortcut function. */ --#ifdef PTR_DEMANGLE -- if (fcts->towc->__shlib_handle != NULL) -- PTR_DEMANGLE (btowc_fct); --#endif - return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c)); - } - else diff --git a/src/patches/glibc/glibc-rh837695.patch b/src/patches/glibc/glibc-rh837695.patch deleted file mode 100644 index 03e1e0270..000000000 --- a/src/patches/glibc/glibc-rh837695.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -rup a/nss/nsswitch.h b/nss/nsswitch.h ---- a/nss/nsswitch.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/nss/nsswitch.h 2012-07-05 11:28:15.316585117 -0600 -@@ -182,4 +182,8 @@ extern int __nss_hostname_digits_dots (c - int *h_errnop); - libc_hidden_proto (__nss_hostname_digits_dots) - -+/* Maximum number of aliases we allow. */ -+#define MAX_NR_ALIASES 48 -+#define MAX_NR_ADDRS 48 -+ - #endif /* nsswitch.h */ -Only in b/nss: nsswitch.h.orig -diff -rup a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c ---- a/resolv/nss_dns/dns-host.c 2012-07-05 11:27:39.298760961 -0600 -+++ b/resolv/nss_dns/dns-host.c 2012-07-05 11:28:15.317585112 -0600 -@@ -89,10 +89,6 @@ - - #define RESOLVSORT - --/* Maximum number of aliases we allow. */ --#define MAX_NR_ALIASES 48 --#define MAX_NR_ADDRS 48 -- - #if PACKETSZ > 65536 - # define MAXPACKET PACKETSZ - #else -Only in b/resolv/nss_dns: dns-host.c.orig -diff -rup a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c ---- a/sysdeps/posix/getaddrinfo.c 2012-07-05 11:27:39.284761028 -0600 -+++ b/sysdeps/posix/getaddrinfo.c 2012-07-05 14:15:39.785546125 -0600 -@@ -565,7 +565,10 @@ gaih_inet (const char *name, const struc - IPv6 scope ids. */ - if (req->ai_family == AF_INET) - { -- size_t tmpbuflen = 512; -+ /* Add room for struct host_data in resolv/nss_dns/dns-host.c */ -+ size_t tmpbuflen = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*) -+ + 16 * sizeof(char); -+ - assert (tmpbuf == NULL); - tmpbuf = alloca_account (tmpbuflen, alloca_used); - int rc; -@@ -807,7 +810,7 @@ gaih_inet (const char *name, const struc - old_res_options = _res.options; - _res.options &= ~RES_USE_INET6; - -- size_t tmpbuflen = 1024; -+ size_t tmpbuflen = 1024 + sizeof(struct gaih_addrtuple); - malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); - assert (tmpbuf == NULL); - if (!malloc_tmpbuf) -Only in b/sysdeps/posix: getaddrinfo.c.orig -Only in b/sysdeps/posix: getaddrinfo.c.rej diff --git a/src/patches/glibc/glibc-rh837918.patch b/src/patches/glibc/glibc-rh837918.patch deleted file mode 100644 index 924d83de9..000000000 --- a/src/patches/glibc/glibc-rh837918.patch +++ /dev/null @@ -1,7183 +0,0 @@ -diff -Nrup a/math/libm-test.inc b/math/libm-test.inc ---- a/math/libm-test.inc 2010-05-04 05:27:23.000000000 -0600 -+++ b/math/libm-test.inc 2012-08-06 09:54:00.821929695 -0600 -@@ -2018,6 +2018,142 @@ cos_test (void) - - - static void -+cos_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_tonearest); -+} -+ -+ -+static void -+cos_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_towardzero); -+} -+ -+ -+static void -+cos_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_downward); -+} -+ -+ -+static void -+cos_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cos) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cos_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L); -+ TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L); -+ TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L); -+ TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L); -+ TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L); -+ TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L); -+ TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L); -+ TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L); -+ TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L); -+ TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cos_upward); -+} -+ -+ -+static void - cosh_test (void) - { - errno = 0; -@@ -2043,6 +2179,114 @@ cosh_test (void) - - - static void -+cosh_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_tonearest); -+} -+ -+ -+static void -+cosh_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_towardzero); -+} -+ -+ -+static void -+cosh_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_downward); -+} -+ -+ -+static void -+cosh_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(cosh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (cosh_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L); -+ TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L); -+ TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (cosh_upward); -+} -+ -+ -+static void - cpow_test (void) - { - errno = 0; -@@ -2527,6 +2771,114 @@ exp_test (void) - - - static void -+exp_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_tonearest); -+} -+ -+ -+static void -+exp_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_towardzero); -+} -+ -+ -+static void -+exp_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_downward); -+} -+ -+ -+static void -+exp_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(exp) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (exp_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (exp, 1, M_El); -+ TEST_f_f (exp, 2, M_E2l); -+ TEST_f_f (exp, 3, M_E3l); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (exp_upward); -+} -+ -+ -+static void - exp10_test (void) - { - errno = 0; -@@ -4848,22 +5200,127 @@ pow_test (void) - END (pow); - } - -+ - static void --remainder_test (void) -+pow_test_tonearest (void) - { -+ int save_round_mode; - errno = 0; -- FUNC(remainder) (1.625, 1.0); -+ FUNC(pow) (0, 0); - if (errno == ENOSYS) - /* Function not implemented. */ - return; - -- START (remainder); -+ START (pow_tonearest); - -- TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); -- TEST_ff_f (remainder, nan_value, nan_value, nan_value); -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_tonearest); -+} -+ -+ -+static void -+pow_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_towardzero); -+} -+ -+ -+static void -+pow_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_downward); -+} -+ -+ -+static void -+pow_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(pow) (0, 0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (pow_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L); -+ TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (pow_upward); -+} -+ -+ -+static void -+remainder_test (void) -+{ -+ errno = 0; -+ FUNC(remainder) (1.625, 1.0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (remainder); -+ -+ TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION); -+ TEST_ff_f (remainder, nan_value, nan_value, nan_value); - - TEST_ff_f (remainder, 1.625, 1.0, -0.375); - TEST_ff_f (remainder, -1.625, 1.0, 0.375); -@@ -5545,6 +6002,7 @@ sin_test (void) - - #ifdef TEST_DOUBLE - TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868); -+ TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1); - #endif - - END (sin); -@@ -5553,6 +6011,142 @@ sin_test (void) - - - static void -+sin_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_tonearest); -+} -+ -+ -+static void -+sin_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_towardzero); -+} -+ -+ -+static void -+sin_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_downward); -+} -+ -+ -+static void -+sin_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sin) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sin_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L); -+ TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L); -+ TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L); -+ TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L); -+ TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L); -+ TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L); -+ TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L); -+ TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L); -+ TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L); -+ TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sin_upward); -+} -+ -+ -+static void - sincos_test (void) - { - FLOAT sin_res, cos_res; -@@ -5610,6 +6204,115 @@ sinh_test (void) - END (sinh); - } - -+ -+static void -+sinh_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_tonearest); -+} -+ -+ -+static void -+sinh_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_towardzero); -+} -+ -+ -+static void -+sinh_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_downward); -+} -+ -+ -+static void -+sinh_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(sinh) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (sinh_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L); -+ TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L); -+ TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (sinh_upward); -+} -+ -+ - static void - sqrt_test (void) - { -@@ -5673,6 +6376,143 @@ tan_test (void) - END (tan); - } - -+ -+static void -+tan_test_tonearest (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_tonearest); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TONEAREST)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_tonearest); -+} -+ -+ -+static void -+tan_test_towardzero (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_towardzero); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_TOWARDZERO)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_towardzero); -+} -+ -+ -+static void -+tan_test_downward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_downward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_DOWNWARD)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_downward); -+} -+ -+ -+static void -+tan_test_upward (void) -+{ -+ int save_round_mode; -+ errno = 0; -+ FUNC(tan) (0); -+ if (errno == ENOSYS) -+ /* Function not implemented. */ -+ return; -+ -+ START (tan_upward); -+ -+ save_round_mode = fegetround (); -+ -+ if (!fesetround (FE_UPWARD)) -+ { -+ TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L); -+ TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L); -+ TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L); -+ TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L); -+ TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L); -+ TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L); -+ TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L); -+ TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L); -+ TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L); -+ TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L); -+ } -+ -+ fesetround (save_round_mode); -+ -+ END (tan_upward); -+} -+ -+ - static void - tanh_test (void) - { -@@ -6171,20 +7011,44 @@ main (int argc, char **argv) - atan_test (); - atan2_test (); - cos_test (); -+ cos_test_tonearest (); -+ cos_test_towardzero (); -+ cos_test_downward (); -+ cos_test_upward (); - sin_test (); -+ sin_test_tonearest (); -+ sin_test_towardzero (); -+ sin_test_downward (); -+ sin_test_upward (); - sincos_test (); - tan_test (); -+ tan_test_tonearest (); -+ tan_test_towardzero (); -+ tan_test_downward (); -+ tan_test_upward (); - - /* Hyperbolic functions: */ - acosh_test (); - asinh_test (); - atanh_test (); - cosh_test (); -+ cosh_test_tonearest (); -+ cosh_test_towardzero (); -+ cosh_test_downward (); -+ cosh_test_upward (); - sinh_test (); -+ sinh_test_tonearest (); -+ sinh_test_towardzero (); -+ sinh_test_downward (); -+ sinh_test_upward (); - tanh_test (); - - /* Exponential and logarithmic functions: */ - exp_test (); -+ exp_test_tonearest (); -+ exp_test_towardzero (); -+ exp_test_downward (); -+ exp_test_upward (); - exp10_test (); - exp2_test (); - expm1_test (); -@@ -6207,6 +7071,10 @@ main (int argc, char **argv) - fabs_test (); - hypot_test (); - pow_test (); -+ pow_test_tonearest (); -+ pow_test_towardzero (); -+ pow_test_downward (); -+ pow_test_upward (); - sqrt_test (); - - /* Error and gamma functions: */ -diff -Nrup a/math/math_private.h b/math/math_private.h ---- a/math/math_private.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/math/math_private.h 2012-08-06 09:54:00.821929695 -0600 -@@ -357,4 +357,41 @@ extern void __docos (double __x, double - #define math_force_eval(x) __asm __volatile ("" : : "m" (x)) - #endif - -+ -+/* The standards only specify one variant of the fenv.h interfaces. -+ But at least for some architectures we can be more efficient if we -+ know what operations are going to be performed. Therefore we -+ define additional interfaces. By default they refer to the normal -+ interfaces. */ -+#define libc_fegetround() fegetround () -+#define libc_fegetroundf() fegetround () -+#define libc_fegetroundl() fegetround () -+ -+#define libc_fesetround(r) (void) fesetround (r) -+#define libc_fesetroundf(r) (void) fesetround (r) -+#define libc_fesetroundl(r) (void) fesetround (r) -+ -+#define libc_feholdexcept(e) (void) feholdexcept (e) -+#define libc_feholdexceptf(e) (void) feholdexcept (e) -+#define libc_feholdexceptl(e) (void) feholdexcept (e) -+ -+#define libc_feholdexcept_setround(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+#define libc_feholdexcept_setroundf(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+#define libc_feholdexcept_setroundl(e, r) \ -+ do { feholdexcept (e); fesetround (r); } while (0) -+ -+#define libc_fetestexcept(e) fetestexcept (e) -+#define libc_fetestexceptf(e) fetestexcept (e) -+#define libc_fetestexceptl(e) fetestexcept (e) -+ -+#define libc_fesetenv(e) (void) fesetenv (e) -+#define libc_fesetenvf(e) (void) fesetenv (e) -+#define libc_fesetenvl(e) (void) fesetenv (e) -+ -+#define libc_feupdateenv(e) (void) feupdateenv (e) -+#define libc_feupdateenvf(e) (void) feupdateenv (e) -+#define libc_feupdateenvl(e) (void) feupdateenv (e) -+ - #endif /* _MATH_PRIVATE_H_ */ -diff -Nrup a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps ---- a/sysdeps/i386/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/i386/fpu/libm-test-ulps 2012-08-06 11:29:16.370874961 -0600 -@@ -9,18 +9,12 @@ ldouble: 1 - Test "asin (-0.5) == -pi/6": - ildouble: 1 - ldouble: 1 --Test "asin (-1.0) == -pi/2": --ildouble: 1 --ldouble: 1 - Test "asin (0.5) == pi/6": - ildouble: 1 - ldouble: 1 - Test "asin (0.75) == 0.848062078981481008052944338998418080": - ildouble: 1 - ldouble: 1 --Test "asin (1.0) == pi/2": --ildouble: 1 --ldouble: 1 - - # atanh - Test "atanh (0.75) == 0.972955074527656652552676371721589865": -@@ -35,20 +29,6 @@ ildouble: 2 - ldouble: 2 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 9 --idouble: 1 --ifloat: 9 --ildouble: 6 --ldouble: 6 --Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 4 --idouble: 1 --ifloat: 4 --ildouble: 1 --ldouble: 1 - Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": - ildouble: 1 - ldouble: 1 -@@ -124,8 +104,6 @@ ldouble: 1 - Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": - double: 1 - idouble: 1 -@@ -149,9 +127,7 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - - # cexp -@@ -186,8 +162,6 @@ ifloat: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 - idouble: 1 --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": - double: 1 - float: 1 -@@ -262,27 +236,175 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+double: 1 -+idouble: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+double: 1 -+idouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - --# cosh --Test "cosh (0.75) == 1.29468328467684468784170818539018176": -+# cos_upward -+Test "cos_upward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (2) == -0.4161468365471423869975682295007621897660": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (4) == -0.6536436208636119146391681830977503814241": -+double: 1 -+idouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 -+ldouble: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+double: 1 -+idouble: 1 -+Test "cos_upward (8) == -0.1455000338086135258688413818311946826093": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+double: 1 -+float: 1 -+ldouble: 2 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+double: 1 -+float: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+double: 1 -+float: 1 -+ldouble: 2 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+double: 1 -+float: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ldouble: 1 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+double: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -@@ -353,12 +475,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -370,40 +488,36 @@ ifloat: 1 - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": - double: 1 - idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": - float: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 3 - ldouble: 3 - - # ctanh - Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": - float: 1 - ifloat: 1 --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": - float: 1 - ifloat: 1 - Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": - double: 1 -@@ -419,9 +533,6 @@ double: 1 - idouble: 1 - - # erfc --Test "erfc (0.75) == 0.288844366346484868401062165408589223": --float: 1 --ifloat: 1 - Test "erfc (1.25) == 0.0770998717435417698634765188027188596": - ildouble: 1 - ldouble: 1 -@@ -434,14 +545,6 @@ idouble: 1 - ildouble: 1 - ldouble: 1 - --# exp --Test "exp (0.75) == 2.11700001661267466854536981983709561": --ildouble: 1 --Test "exp (1000.0) == 0.197007111401704699388887935224332313e435": --ildouble: 754 --Test "exp (50.0) == 5184705528587072464087.45332293348538": --ildouble: 16 -- - # exp10 - Test "exp10 (-1) == 0.1": - ildouble: 1 -@@ -453,6 +556,51 @@ Test "exp10 (3) == 1000": - ildouble: 8 - ldouble: 8 - -+# exp_downward -+Test "exp_downward (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (2) == e^2": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_downward (3) == e^3": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (2) == e^2": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_towardzero (3) == e^3": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ - # expm1 - Test "expm1 (1) == M_El - 1.0": - ildouble: 1 -@@ -485,26 +633,24 @@ float: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 1 - float: 1 --idouble: 3 -+idouble: 1 - ifloat: 1 - Test "j0 (2.0) == 0.223890779141235668051827454649948626": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": -@@ -512,13 +658,8 @@ float: 1 - ifloat: 1 - - # j1 --Test "j1 (0.75) == 0.349243602174862192523281016426251335": --double: 1 --idouble: 1 - Test "j1 (10.0) == 0.0434727461688614366697487680258592883": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -526,9 +667,7 @@ Test "j1 (2.0) == 0.57672480775687338720 - double: 1 - idouble: 1 - Test "j1 (8.0) == 0.234636346853914624381276651590454612": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -536,38 +675,31 @@ ldouble: 1 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 1 - float: 1 --idouble: 3 -+idouble: 1 - ifloat: 1 - Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --Test "jn (1, 0.75) == 0.349243602174862192523281016426251335": --double: 1 --idouble: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -575,9 +707,7 @@ Test "jn (1, 2.0) == 0.57672480775687338 - double: 1 - idouble: 1 - Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -589,9 +719,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": - float: 1 -@@ -606,38 +734,32 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --double: 2 --idouble: 2 - ildouble: 1 - ldouble: 1 - Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": - ildouble: 1 - ldouble: 1 - Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": - ildouble: 1 - ldouble: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -648,9 +770,7 @@ idouble: 1 - ildouble: 1 - ldouble: 1 - Test "lgamma (0.7) == 0.260867246531666514385732417016759578": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1": - double: 1 -@@ -660,11 +780,6 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - --# log --Test "log (e) == 1": --float: 1 --ifloat: 1 -- - # log10 - Test "log10 (0.75) == -0.124938736608299953132449886193870744": - ildouble: 1 -@@ -675,20 +790,179 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+double: 1 - idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 - ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -+ildouble: 1 -+ldouble: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": -+double: 1 -+idouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "sin_downward (7) == 0.6569865987187890903969990915936351779369": - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (9) == 0.4121184852417565697562725663524351793439": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_tonearest -+Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": -+double: 1 -+idouble: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_upward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (7) == 0.6569865987187890903969990915936351779369": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sin_upward (8) == 0.9893582466233817778081235982452886721164": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 - float: 1 - idouble: 1 -@@ -698,66 +972,237 @@ ldouble: 1 - - # sinh - Test "sinh (0.75) == 0.822316731935829980703661634446913849": --double: 1 - ildouble: 1 - --# tan --Test "tan (pi/4) == 1": -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": - double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 4 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ldouble: 5 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 2 -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ldouble: 3 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ldouble: 1 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ldouble: 6 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 4 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ldouble: 5 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ldouble: 16 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ldouble: 27 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+double: 1 -+idouble: 1 -+ldouble: 7 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_downward (3) == -0.1425465430742778052956354105339134932261": -+double: 1 -+idouble: 1 -+Test "tan_downward (4) == 1.1578212823495775831373424182673239231198": - float: 1 --idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tgamma (0.5) == sqrt (pi)": -+Test "tan_downward (5) == -3.3805150062465856369827058794473439087096": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+double: 1 - float: 1 -+idouble: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -+Test "tan_downward (7) == 0.8714479827243187364564508896003135663222": -+double: 1 -+idouble: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (1) == 1.5574077246549022305069748074583601730873": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222": -+double: 1 -+idouble: 1 -+Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814": -+double: 1 -+idouble: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+double: 1 -+idouble: 1 - ildouble: 1 - ldouble: 1 - --# y0 --Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": - ildouble: 1 - ldouble: 1 --Test "y0 (0.75) == -0.137172769385772397522814379396581855": -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (4) == 1.1578212823495775831373424182673239231198": -+double: 1 -+idouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (8) == -6.7997114552203786999252627596086333648814": -+double: 1 -+idouble: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "y0 (1.5) == 0.382448923797758843955068554978089862": -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+ -+# y0 -+Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+ildouble: 1 -+ldouble: 1 -+Test "y0 (0.75) == -0.137172769385772397522814379396581855": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+ildouble: 1 -+ldouble: 1 -+Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "y0 (8.0) == 0.223521489387566220527323400498620359": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -766,9 +1211,6 @@ ldouble: 1 - Test "y1 (0.125) == -5.19993611253477499595928744876579921": - ildouble: 1 - ldouble: 1 --Test "y1 (1.0) == -0.781212821300288716547150000047964821": --double: 1 --idouble: 1 - Test "y1 (10.0) == 0.249015424206953883923283474663222803": - double: 2 - float: 2 -@@ -782,9 +1224,7 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "y1 (8.0) == -0.158060461731247494255555266187483550": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 -@@ -799,37 +1239,21 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": --double: 2 --float: 1 --idouble: 2 --ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 - Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": - ildouble: 1 - ldouble: 1 --Test "yn (1, 1.0) == -0.781212821300288716547150000047964821": --double: 1 --idouble: 1 - Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": - double: 2 - float: 2 -@@ -843,17 +1267,13 @@ ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (10, 0.125) == -127057845771019398.252538486899753195": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": -@@ -862,28 +1282,22 @@ ifloat: 1 - ildouble: 4 - ldouble: 4 - Test "yn (10, 1.0) == -121618014.278689189288130426667971145": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 1 --float: 3 -+float: 1 - idouble: 1 --ifloat: 3 -+ifloat: 1 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": --double: 2 - float: 3 --idouble: 2 - ifloat: 3 - Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": - ildouble: 1 - ldouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": -@@ -892,15 +1306,13 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - - # Maximal error of functions: - Function: "acos": --ildouble: 622 --ldouble: 622 -+ildouble: 1 -+ldouble: 1 - - Function: "asin": - ildouble: 1 -@@ -917,18 +1329,6 @@ ildouble: 2 - ldouble: 2 - - Function: Real part of "cacosh": --double: 1 --float: 9 --idouble: 1 --ifloat: 9 --ildouble: 6 --ldouble: 6 -- --Function: Imaginary part of "cacosh": --double: 1 --float: 4 --idouble: 1 --ifloat: 4 - ildouble: 1 - ldouble: 1 - -@@ -1033,8 +1433,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - Function: "cos": - double: 2 -@@ -1044,16 +1442,58 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: "cosh": -+Function: "cos_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_tonearest": - ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+double: 1 -+float: 1 -+ldouble: 2 -+ -+Function: "cosh_tonearest": -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+double: 1 -+float: 1 -+ldouble: 2 -+ -+Function: "cosh_upward": -+double: 1 -+ldouble: 1 - - Function: Real part of "cpow": - double: 1 - float: 4 - idouble: 1 - ifloat: 4 --ildouble: 763 --ldouble: 763 -+ildouble: 6 -+ldouble: 6 - - Function: Imaginary part of "cpow": - double: 2 -@@ -1086,38 +1526,32 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - - Function: Real part of "ctan": - double: 1 - idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - - Function: Imaginary part of "ctan": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 3 - ldouble: 3 - - Function: Real part of "ctanh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - - Function: Imaginary part of "ctanh": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - - Function: "erf": - double: 1 -@@ -1125,19 +1559,36 @@ idouble: 1 - - Function: "erfc": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: "exp": --ildouble: 754 -- - Function: "exp10": - ildouble: 8 - ldouble: 8 - -+Function: "exp_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ - Function: "expm1": - ildouble: 1 - -@@ -1151,10 +1602,10 @@ Function: "hypot": - float: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1167,10 +1618,10 @@ ildouble: 1 - ldouble: 1 - - Function: "jn": --double: 5 --float: 2 --idouble: 5 --ifloat: 2 -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1192,6 +1643,58 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1201,13 +1704,62 @@ ildouble: 1 - ldouble: 1 - - Function: "sinh": --double: 1 - ildouble: 1 - -+Function: "sinh_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 5 -+ -+Function: "sinh_tonearest": -+ldouble: 6 -+ -+Function: "sinh_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ldouble: 5 -+ -+Function: "sinh_upward": -+double: 1 -+idouble: 1 -+ldouble: 27 -+ - Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_upward": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ - Function: "tgamma": - double: 2 - float: 1 -@@ -1217,9 +1769,9 @@ ildouble: 1 - ldouble: 1 - - Function: "y0": --double: 2 -+double: 1 - float: 1 --idouble: 2 -+idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp.c b/sysdeps/ieee754/dbl-64/e_exp.c ---- a/sysdeps/ieee754/dbl-64/e_exp.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_exp.c 2012-08-06 09:54:00.823929687 -0600 -@@ -1,7 +1,7 @@ - /* - * IBM Accurate Mathematical Library - * written by International Business Machines Corp. -- * Copyright (C) 2001 Free Software Foundation -+ * Copyright (C) 2001-2012 Free Software Foundation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by -@@ -39,6 +39,7 @@ - #include "MathLib.h" - #include "uexp.tbl" - #include "math_private.h" -+#include - - double __slowexp(double); - -@@ -53,6 +54,10 @@ double __ieee754_exp(double x) { - int4 k; - #endif - int4 i,j,m,n,ex; -+ fenv_t env; -+ double retval; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); - - junk1.x = x; - m = junk1.i[HIGH_HALF]; -@@ -85,18 +90,19 @@ double __ieee754_exp(double x) { - rem=(bet + bet*eps)+al*eps; - res = al + rem; - cor = (al - res) + rem; -- if (res == (res+cor*err_0)) return res*binexp.x; -- else return __slowexp(x); /*if error is over bound */ -+ if (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } /*if error is over bound */ - } - -- if (n <= smallint) return 1.0; -+ if (n <= smallint) { retval = 1.0; goto ret; } - - if (n >= badint) { -- if (n > infint) return(x+x); /* x is NaN */ -- if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) ); -+ if (n > infint) { retval = x+x; goto ret; } /* x is NaN */ -+ if (n < infint) { retval = (x>0) ? (hhuge*hhuge) : (tiny*tiny); goto ret; } - /* x is finite, cause either overflow or underflow */ -- if (junk1.i[LOW_HALF] != 0) return (x+x); /* x is NaN */ -- return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */ -+ if (junk1.i[LOW_HALF] != 0) { retval = x+x; goto ret; } /* x is NaN */ -+ retval = (x>0)?inf.x:zero; /* |x| = inf; return either inf or 0 */ -+ goto ret; - } - - y = x*log2e.x + three51.x; -@@ -121,8 +127,8 @@ double __ieee754_exp(double x) { - if (res < 1.0) {res+=res; cor+=cor; ex-=1;} - if (ex >=-1022) { - binexp.i[HIGH_HALF] = (1023+ex)<<20; -- if (res == (res+cor*err_0)) return res*binexp.x; -- else return __slowexp(x); /*if error is over bound */ -+ if (res == (res+cor*err_0)) { retval = res*binexp.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } /*if error is over bound */ - } - ex = -(1022+ex); - binexp.i[HIGH_HALF] = (1023-ex)<<20; -@@ -135,15 +141,19 @@ double __ieee754_exp(double x) { - cor = (t-res)+y; - if (res == (res + eps*cor)) - { binexp.i[HIGH_HALF] = 0x00100000; -- return (res-1.0)*binexp.x; -+ retval = (res-1.0)*binexp.x; -+ goto ret; - } -- else return __slowexp(x); /* if error is over bound */ -+ else { retval = __slowexp(x); goto ret; } /* if error is over bound */ - } - else { - binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20; -- if (res == (res+cor*err_0)) return res*binexp.x*t256.x; -- else return __slowexp(x); -+ if (res == (res+cor*err_0)) { retval = res*binexp.x*t256.x; goto ret; } -+ else { retval = __slowexp(x); goto ret; } - } -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - /************************************************************************/ -diff -Nrup a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c ---- a/sysdeps/ieee754/dbl-64/e_exp2.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_exp2.c 2012-08-06 09:54:00.824929683 -0600 -@@ -24,9 +24,6 @@ - 17 (1), March 1991, pp. 26-45. - It has been slightly modified to compute 2^x instead of e^x. - */ --#ifndef _GNU_SOURCE --#define _GNU_SOURCE --#endif - #include - #include - #include -@@ -37,13 +34,8 @@ - - #include "t_exp2.h" - --/* XXX I know the assembler generates a warning about incorrect section -- attributes. But without the attribute here the compiler places the -- constants in the .data section. Ideally the constant is placed in -- .rodata.cst8 so that it can be merged, but gcc sucks, it ICEs when -- we try to force this section on it. --drepper */ --static const volatile double TWO1023 = 8.988465674311579539e+307; --static const volatile double TWOM1000 = 9.3326361850321887899e-302; -+static const double TWO1023 = 8.988465674311579539e+307; -+static const double TWOM1000 = 9.3326361850321887899e-302; - - double - __ieee754_exp2 (double x) -@@ -60,11 +52,7 @@ __ieee754_exp2 (double x) - union ieee754_double ex2_u, scale_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- /* If we don't have this, it's too bad. */ -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setround (&oldenv, FE_TONEAREST); - - /* 1. Argument reduction. - Choose integers ex, -256 <= t < 256, and some real -@@ -108,9 +96,10 @@ __ieee754_exp2 (double x) - * x + .055504110254308625) - * x + .240226506959100583) - * x + .69314718055994495) * ex2_u.d; -+ math_opt_barrier (x22); - - /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */ -- fesetenv (&oldenv); -+ libc_fesetenv (&oldenv); - - result = x22 * x + ex2_u.d; - -diff -Nrup a/sysdeps/ieee754/dbl-64/e_pow.c b/sysdeps/ieee754/dbl-64/e_pow.c ---- a/sysdeps/ieee754/dbl-64/e_pow.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/e_pow.c 2012-08-06 09:54:00.824929683 -0600 -@@ -42,6 +42,7 @@ - #include "MathLib.h" - #include "upow.tbl" - #include "math_private.h" -+#include - - - double __exp1(double x, double xx, double error); -@@ -79,6 +80,11 @@ double __ieee754_pow(double x, double y) - (u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0)) && - /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */ - (v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) { /* if y<-1 or y>1 */ -+ fenv_t env; -+ double retval; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ - t = y*134217729.0; - y1 = t - (t-y); -@@ -92,7 +98,10 @@ double __ieee754_pow(double x, double y) - a2 = (a-a1)+aa; - error = error*ABS(y); - t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ -- return (t>0)?t:power1(x,y); -+ retval = (t>0)?t:power1(x,y); -+ -+ libc_feupdateenv (&env); -+ return retval; - } - - if (x == 0) { -diff -Nrup a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c ---- a/sysdeps/ieee754/dbl-64/s_sin.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/s_sin.c 2012-08-06 09:54:00.827929671 -0600 -@@ -55,6 +55,7 @@ - #include "MathLib.h" - #include "sincos.tbl" - #include "math_private.h" -+#include - - static const double - sn3 = -1.66666666666664880952546298448555E-01, -@@ -97,12 +98,16 @@ double __sin(double x){ - #if 0 - int4 nn; - #endif -+ fenv_t env; -+ double retval = 0; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); - - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; /* no sign */ - if (k < 0x3e500000) /* if x->0 =>sin(x)=x */ -- return x; -+ { retval = x; goto ret; } - /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/ - else if (k < 0x3fd00000){ - xx = x*x; -@@ -110,7 +115,8 @@ double __sin(double x){ - t = ((((s5.x*xx + s4.x)*xx + s3.x)*xx + s2.x)*xx + s1.x)*(xx*x); - res = x+t; - cor = (x-res)+t; -- return (res == res + 1.07*cor)? res : slow(x); -+ retval = (res == res + 1.07*cor)? res : slow(x); -+ goto ret; - } /* else if (k < 0x3fd00000) */ - /*---------------------------- 0.25<|x|< 0.855469---------------------- */ - else if (k < 0x3feb6000) { -@@ -127,7 +133,8 @@ double __sin(double x){ - cor=(ssn+s*ccs-sn*c)+cs*s; - res=sn+cor; - cor=(sn-res)+cor; -- return (res==res+1.025*cor)? res : slow1(x); -+ retval = (res==res+1.096*cor)? res : slow1(x); -+ goto ret; - } /* else if (k < 0x3feb6000) */ - - /*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ -@@ -153,7 +160,8 @@ double __sin(double x){ - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; -- return (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); -+ retval = (res==res+1.020*cor)? ((m>0)?res:-res) : slow2(x); -+ goto ret; - } /* else if (k < 0x400368fd) */ - - /*-------------------------- 2.426265<|x|< 105414350 ----------------------*/ -@@ -179,7 +187,8 @@ double __sin(double x){ - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : sloww(a,da,x); -+ retval = (res == res + cor)? res : sloww(a,da,x); -+ goto ret; - } - else { - if (a>0) -@@ -200,7 +209,8 @@ double __sin(double x){ - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : sloww1(a,da,x); -+ goto ret; - } - break; - -@@ -222,7 +232,8 @@ double __sin(double x){ - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n&2)?-res:res) : sloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -258,7 +269,8 @@ double __sin(double x){ - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : bsloww(a,da,x,n); -+ retval = (res == res + cor)? res : bsloww(a,da,x,n); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -277,7 +289,8 @@ double __sin(double x){ - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ goto ret; - } - break; - -@@ -299,7 +312,8 @@ double __sin(double x){ - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n&2)?-res:res) : bsloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -313,17 +327,20 @@ double __sin(double x){ - n = __branred(x,&a,&da); - switch (n) { - case 0: -- if (a*a < 0.01588) return bsloww(a,da,x,n); -- else return bsloww1(a,da,x,n); -+ if (a*a < 0.01588) retval = bsloww(a,da,x,n); -+ else retval = bsloww1(a,da,x,n); -+ goto ret; - break; - case 2: -- if (a*a < 0.01588) return bsloww(-a,-da,x,n); -- else return bsloww1(-a,-da,x,n); -+ if (a*a < 0.01588) retval = bsloww(-a,-da,x,n); -+ else retval = bsloww1(-a,-da,x,n); -+ goto ret; - break; - - case 1: - case 3: -- return bsloww2(a,da,x,n); -+ retval = bsloww2(a,da,x,n); -+ goto ret; - break; - } - -@@ -333,9 +350,13 @@ double __sin(double x){ - else { - if (k == 0x7ff00000 && u.i[LOW_HALF] == 0) - __set_errno (EDOM); -- return x / x; -+ retval = x / x; -+ goto ret; - } -- return 0; /* unreachable */ -+ -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - -@@ -350,11 +371,16 @@ double __cos(double x) - mynumber u,v; - int4 k,m,n; - -+ fenv_t env; -+ double retval = 0; -+ -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - u.x = x; - m = u.i[HIGH_HALF]; - k = 0x7fffffff&m; - -- if (k < 0x3e400000 ) return 1.0; /* |x|<2^-27 => cos(x)=1 */ -+ if (k < 0x3e400000 ) { retval = 1.0; goto ret; } /* |x|<2^-27 => cos(x)=1 */ - - else if (k < 0x3feb6000 ) {/* 2^-27 < |x| < 0.855469 */ - y=ABS(x); -@@ -371,7 +397,8 @@ double __cos(double x) - cor=(ccs-s*ssn-cs*c)-sn*s; - res=cs+cor; - cor=(cs-res)+cor; -- return (res==res+1.020*cor)? res : cslow2(x); -+ retval = (res==res+1.020*cor)? res : cslow2(x); -+ goto ret; - - } /* else if (k < 0x3feb6000) */ - -@@ -385,7 +412,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+1.0e-31 : 1.02*cor -1.0e-31; -- return (res == res + cor)? res : csloww(a,da,x); -+ retval = (res == res + cor)? res : csloww(a,da,x); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -404,7 +432,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+1.0e-31 : 1.035*cor-1.0e-31; -- return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ goto ret; - } - - } /* else if (k < 0x400368fd) */ -@@ -431,7 +460,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : csloww(a,da,x); -+ retval = (res == res + cor)? res : csloww(a,da,x); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -450,7 +480,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ retval = (res==res+cor)? ((m)?res:-res) : csloww1(a,da,x); -+ goto ret; - } - break; - -@@ -471,7 +502,8 @@ double __cos(double x) - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n)?-res:res) : csloww2(a,da,x,n); -+ goto ret; - - break; - -@@ -506,7 +538,8 @@ double __cos(double x) - res = a+t; - cor = (a-res)+t; - cor = (cor>0)? 1.02*cor+eps : 1.02*cor -eps; -- return (res == res + cor)? res : bsloww(a,da,x,n); -+ retval = (res == res + cor)? res : bsloww(a,da,x,n); -+ goto ret; - } - else { - if (a>0) {m=1;t=a;db=da;} -@@ -525,7 +558,8 @@ double __cos(double x) - res=sn+cor; - cor=(sn-res)+cor; - cor = (cor>0)? 1.035*cor+eps : 1.035*cor-eps; -- return (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ retval = (res==res+cor)? ((m)?res:-res) : bsloww1(a,da,x,n); -+ goto ret; - } - break; - -@@ -546,7 +580,8 @@ double __cos(double x) - res=cs+cor; - cor=(cs-res)+cor; - cor = (cor>0)? 1.025*cor+eps : 1.025*cor-eps; -- return (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); -+ retval = (res==res+cor)? ((n)?-res:res) : bsloww2(a,da,x,n); -+ goto ret; - break; - - } -@@ -558,17 +593,20 @@ double __cos(double x) - n = __branred(x,&a,&da); - switch (n) { - case 1: -- if (a*a < 0.01588) return bsloww(-a,-da,x,n); -- else return bsloww1(-a,-da,x,n); -+ if (a*a < 0.01588) retval = bsloww(-a,-da,x,n); -+ else retval = bsloww1(-a,-da,x,n); -+ goto ret; - break; - case 3: -- if (a*a < 0.01588) return bsloww(a,da,x,n); -- else return bsloww1(a,da,x,n); -+ if (a*a < 0.01588) retval = bsloww(a,da,x,n); -+ else retval = bsloww1(a,da,x,n); -+ goto ret; - break; - - case 0: - case 2: -- return bsloww2(a,da,x,n); -+ retval = bsloww2(a,da,x,n); -+ goto ret; - break; - } - -@@ -580,10 +618,13 @@ double __cos(double x) - else { - if (k == 0x7ff00000 && u.i[LOW_HALF] == 0) - __set_errno (EDOM); -- return x / x; /* |x| > 2^1024 */ -+ retval = x / x; /* |x| > 2^1024 */ -+ goto ret; - } -- return 0; - -+ ret: -+ libc_feupdateenv (&env); -+ return retval; - } - - /************************************************************************/ -diff -Nrup a/sysdeps/ieee754/dbl-64/s_tan.c b/sysdeps/ieee754/dbl-64/s_tan.c ---- a/sysdeps/ieee754/dbl-64/s_tan.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/dbl-64/s_tan.c 2012-08-06 09:54:00.828929666 -0600 -@@ -40,6 +40,8 @@ - #include "mpa.h" - #include "MathLib.h" - #include "math.h" -+#include "math_private.h" -+#include - - static double tanMp(double); - void __mptan(double, mp_no *, int); -@@ -58,21 +60,27 @@ double tan(double x) { - mp_no mpy; - #endif - -+ fenv_t env; -+ double retval; -+ - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); - -+ libc_feholdexcept_setround (&env, FE_TONEAREST); -+ - /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; - if ((ux&0x7ff00000)==0x7ff00000) { - if ((ux&0x7fffffff)==0x7ff00000) - __set_errno (EDOM); -- return x-x; -+ retval = x-x; -+ goto ret; - } - - w=(x>63)&1; - j0 = ((i0>>52)&0x7ff)-0x3ff; -- if(j0<52) { -+ if(__builtin_expect(j0<52, 1)) { - if(j0<0) { - if((i0&UINT64_C(0x7fffffffffffffff))==0) return x; - uint64_t i = i0 & UINT64_C(0xfffffffffffff); - i0 &= UINT64_C(0xfffe000000000000); - i0 |= (((i|-i) >> 12) & UINT64_C(0x8000000000000)); - INSERT_WORDS64(x,i0); -- feholdexcept (&env); -+ libc_feholdexcept (&env); - double w = TWO52[sx]+x; - double t = w-TWO52[sx]; -- fesetenv (&env); -- EXTRACT_WORDS64(i0,t); -- INSERT_WORDS64(t,(i0&UINT64_C(0x7fffffffffffffff))|(sx<<63)); -- return t; -+ math_opt_barrier(t); -+ libc_fesetenv (&env); -+ return copysign(t, x); - } else { - uint64_t i = UINT64_C(0x000fffffffffffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ -@@ -73,10 +64,11 @@ TWO52[2]={ - else return x; /* x is integral */ - } - INSERT_WORDS64(x,i0); -- feholdexcept (&env); -+ libc_feholdexcept (&env); - double w = TWO52[sx]+x; - double t = w-TWO52[sx]; -- fesetenv (&env); -+ math_opt_barrier (t); -+ libc_fesetenv (&env); - return t; - } - weak_alias (__nearbyint, nearbyint) -diff -Nrup a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c ---- a/sysdeps/ieee754/flt-32/e_exp2f.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/e_exp2f.c 2012-08-06 09:54:00.829929661 -0600 -@@ -56,11 +56,7 @@ __ieee754_exp2f (float x) - union ieee754_float ex2_u, scale_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- /* If we don't have this, it's too bad. */ -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST); - - /* 1. Argument reduction. - Choose integers ex, -128 <= t < 128, and some real -@@ -103,7 +99,7 @@ __ieee754_exp2f (float x) - x22 = (.24022656679f * x + .69314736128f) * ex2_u.f; - - /* 5. Return (2^x2-1) * 2^(t/512+e+ex) + 2^(t/512+e+ex). */ -- fesetenv (&oldenv); -+ libc_fesetenv (&oldenv); - - result = x22 * x + ex2_u.f; - -diff -Nrup a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c ---- a/sysdeps/ieee754/flt-32/e_expf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/e_expf.c 2012-08-06 09:54:00.829929661 -0600 -@@ -47,9 +47,6 @@ - to perform an 'accurate table method' expf, because of the range reduction - overhead (compare exp2f). - */ --#ifndef _GNU_SOURCE --#define _GNU_SOURCE --#endif - #include - #include - #include -@@ -60,8 +57,8 @@ - extern const float __exp_deltatable[178]; - extern const double __exp_atable[355] /* __attribute__((mode(DF))) */; - --static const volatile float TWOM100 = 7.88860905e-31; --static const volatile float TWO127 = 1.7014118346e+38; -+static const float TWOM100 = 7.88860905e-31; -+static const float TWO127 = 1.7014118346e+38; - - float - __ieee754_expf (float x) -@@ -86,10 +83,7 @@ __ieee754_expf (float x) - union ieee754_double ex2_u; - fenv_t oldenv; - -- feholdexcept (&oldenv); --#ifdef FE_TONEAREST -- fesetround (FE_TONEAREST); --#endif -+ libc_feholdexcept_setroundf (&oldenv, FE_TONEAREST); - - /* Calculate n. */ - n = x * M_1_LN2 + THREEp22; -@@ -119,7 +113,7 @@ __ieee754_expf (float x) - x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta; - - /* Return result. */ -- fesetenv (&oldenv); -+ libc_fesetenvf (&oldenv); - - result = x22 * ex2_u.d + ex2_u.d; - return (float) result; -diff -Nrup a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c ---- a/sysdeps/ieee754/flt-32/s_nearbyintf.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c 2012-08-06 09:54:00.891929402 -0600 -@@ -19,22 +19,14 @@ - #include "math.h" - #include "math_private.h" - --#ifdef __STDC__ - static const float --#else --static float --#endif - TWO23[2]={ - 8.3886080000e+06, /* 0x4b000000 */ - -8.3886080000e+06, /* 0xcb000000 */ - }; - --#ifdef __STDC__ -- float __nearbyintf(float x) --#else -- float __nearbyintf(x) -- float x; --#endif -+float -+__nearbyintf(float x) - { - fenv_t env; - int32_t i0,j0,sx; -@@ -50,13 +42,13 @@ TWO23[2]={ - i0 &= 0xfff00000; - i0 |= ((i1|-i1)>>9)&0x400000; - SET_FLOAT_WORD(x,i0); -- feholdexcept (&env); -- w = TWO23[sx]+x; -- t = w-TWO23[sx]; -- fesetenv (&env); -+ libc_feholdexceptf (&env); -+ w = TWO23[sx]+x; -+ t = w-TWO23[sx]; -+ libc_fesetenvf (&env); - GET_FLOAT_WORD(i0,t); - SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31)); -- return t; -+ return t; - } else { - i = (0x007fffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ -@@ -64,14 +56,14 @@ TWO23[2]={ - if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0); - } - } else { -- if(j0==0x80) return x+x; /* inf or NaN */ -+ if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } - SET_FLOAT_WORD(x,i0); -- feholdexcept (&env); -+ libc_feholdexceptf (&env); - w = TWO23[sx]+x; - t = w-TWO23[sx]; -- fesetenv (&env); -+ libc_fesetenvf (&env); - return t; - } - weak_alias (__nearbyintf, nearbyintf) -diff -Nrup a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps ---- a/sysdeps/powerpc/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/powerpc/fpu/libm-test-ulps 2012-08-06 10:03:24.424569052 -0600 -@@ -37,16 +37,9 @@ ildouble: 1 - ldouble: 1 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - - # casin - Test "Real part of: casin (-2 - 3 i) == -0.57065278432109940071028387968566963 - 1.9833870299165354323470769028940395 i": -@@ -84,8 +77,6 @@ ifloat: 1 - - # catan - Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": -@@ -93,23 +84,14 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - - # catanh - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": - double: 4 - idouble: 4 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 --Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - - # cbrt - Test "cbrt (-27.0) == -3.0": -@@ -167,8 +149,6 @@ ldouble: 1 - - # clog - Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": -@@ -197,9 +177,7 @@ ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -@@ -298,23 +276,165 @@ ldouble: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 --Test "cos (pi/2) == 0": --double: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 2 -+ldouble: 2 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": - float: 1 --idouble: 1 - ifloat: 1 --Test "cos (16.0) == -0.9576594803233846418996372326511034717803" - ildouble: 2 - ldouble: 2 - -+# cos_upward -+Test "cos_upward (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 2 -+ldouble: 2 -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "cosh_tonearest (23) == 4872401723.124451300068625740569997090344": -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_tonearest (24) == 13244561064.92173614708845674912733665919": -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# cosh_upward -+Test "cosh_upward (22) == 1792456423.065795780980053377632656584997": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+ildouble: 89137844200 -+ldouble: 89137844200 -+ - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 -@@ -386,12 +506,6 @@ float: 1 - ifloat: 1 - - # ctan --Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 --Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - double: 1 - idouble: 1 -@@ -463,6 +577,33 @@ Test "exp2 (10) == 1024": - ildouble: 2 - ldouble: 2 - -+# exp_downward -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": - double: 1 -@@ -505,40 +646,27 @@ ifloat: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "j0 (2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - # j1 - Test "j1 (10.0) == 0.0434727461688614366697487680258592883": - float: 2 - ifloat: 2 --ildouble: 1 --ldouble: 1 - Test "j1 (2.0) == 0.576724807756873387202448242269137087": - double: 1 - idouble: 1 -@@ -551,38 +679,25 @@ ldouble: 1 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": - float: 2 - ifloat: 2 --ildouble: 1 --ldouble: 1 - Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": - double: 1 - idouble: 1 -@@ -615,11 +730,8 @@ ifloat: 1 - ildouble: 4 - ldouble: 4 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --float: 4 --ifloat: 4 --Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083": --ildouble: 1 --ldouble: 1 -+float: 3 -+ifloat: 3 - Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": - double: 1 - float: 1 -@@ -628,21 +740,18 @@ ifloat: 1 - Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": - double: 1 - idouble: 1 --Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083": --ildouble: 1 --ldouble: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": - double: 3 --float: 2 -+float: 1 - idouble: 3 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -675,115 +784,350 @@ Test "log1p (-0.25) == -0.28768207245178 - float: 1 - ifloat: 1 - --# log2 --Test "log2 (e) == M_LOG2El": -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - ildouble: 1 - ldouble: 1 -- --# sin --Test "sin (16.0) == -0.2879033166650652947844562482186175296207" --ildouble: 2 --ldouble: 2 -- --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - float: 1 - ifloat: 1 -- --# sinh --Test "sinh (0.75) == 0.822316731935829980703661634446913849": -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - ildouble: 1 - ldouble: 1 - --# tan --Test "tan (pi/4) == 1": --double: 1 --idouble: 1 -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 4 -+ldouble: 4 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": - ildouble: 1 - ldouble: 1 -- --# tanh --Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": - ildouble: 1 - ldouble: 1 --Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 1 -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": - float: 1 --idouble: 1 - ifloat: 1 --Test "tgamma (0.5) == sqrt (pi)": -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": --double: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 -- --# y0 --Test "y0 (0.125) == -1.38968062514384052915582277745018693": -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": - ildouble: 1 - ldouble: 1 --Test "y0 (0.75) == -0.137172769385772397522814379396581855": -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": - ildouble: 1 - ldouble: 1 --Test "y0 (1.0) == 0.0882569642156769579829267660235151628": --double: 2 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": - float: 1 --idouble: 2 - ifloat: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 --Test "y0 (1.5) == 0.382448923797758843955068554978089862": --double: 2 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": - float: 1 --idouble: 2 - ifloat: 1 --Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh -+Test "sinh (0.75) == 0.822316731935829980703661634446913849": - ildouble: 1 - ldouble: 1 --Test "y0 (2.0) == 0.510375672649745119596606592727157873": -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ildouble: 484603564241 -+ldouble: 484603564241 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 484603564240 -+ldouble: 484603564240 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 89137844201 -+ldouble: 89137844201 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 484603564241 -+ldouble: 484603564241 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 89137844202 -+ldouble: 89137844202 -+ -+# tan -+Test "tan (pi/4) == 1": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (10) == 0.6483608274590866712591249330098086768169": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tanh -+Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": - double: 1 -+float: 1 - idouble: 1 --Test "y0 (8.0) == 0.223521489387566220527323400498620359": -+ifloat: 1 -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 -+ -+# y0 -+Test "y0 (0.125) == -1.38968062514384052915582277745018693": - ildouble: 1 - ldouble: 1 -- --# y1 --Test "y1 (0.125) == -5.19993611253477499595928744876579921": -+Test "y0 (1.0) == 0.0882569642156769579829267660235151628": -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "y0 (1.5) == 0.382448923797758843955068554978089862": -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 -+Test "y0 (10.0) == 0.0556711672835993914244598774101900481": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "y0 (2.0) == 0.510375672649745119596606592727157873": - double: 1 - idouble: 1 --Test "y1 (1.5) == -0.412308626973911295952829820633445323": -+Test "y0 (8.0) == 0.223521489387566220527323400498620359": -+double: 1 - float: 1 -+idouble: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# y1 - Test "y1 (10.0) == 0.249015424206953883923283474663222803": - double: 3 - float: 1 -@@ -794,30 +1138,27 @@ ldouble: 2 - Test "y1 (2.0) == -0.107032431540937546888370772277476637": - double: 1 - float: 1 --idouble: 2 --ifloat: 2 -+idouble: 1 -+ifloat: 1 - Test "y1 (8.0) == -0.158060461731247494255555266187483550": - double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - - # yn - Test "yn (0, 0.125) == -1.38968062514384052915582277745018693": - ildouble: 1 - ldouble: 1 --Test "yn (0, 0.75) == -0.137172769385772397522814379396581855": --ildouble: 1 --ldouble: 1 - Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": - double: 2 - float: 1 -@@ -828,8 +1169,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - Test "yn (0, 2.0) == 0.510375672649745119596606592727157873": - double: 1 - idouble: 1 -@@ -838,14 +1177,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 --Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": --double: 1 --idouble: 1 --Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": --float: 2 --ifloat: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": - double: 3 - float: 1 -@@ -863,14 +1196,8 @@ double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 2 --ldouble: 2 --Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": --double: 1 --idouble: 1 --Test "yn (10, 0.125) == -127057845771019398.252538486899753195": --double: 1 --idouble: 1 -+ildouble: 1 -+ldouble: 1 - Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": - double: 1 - float: 2 -@@ -881,21 +1208,14 @@ float: 2 - ifloat: 2 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 2 --float: 2 - idouble: 2 --ifloat: 2 --ildouble: 2 --ldouble: 2 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": - double: 3 - float: 1 - idouble: 3 - ifloat: 1 --ildouble: 2 --ldouble: 2 --Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": --double: 1 --idouble: 1 -+ildouble: 1 -+ldouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": - float: 1 - ifloat: 1 -@@ -904,8 +1224,8 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": - double: 1 - idouble: 1 -@@ -950,18 +1270,12 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - - Function: Real part of "casin": - double: 1 -@@ -992,8 +1306,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "catan": --float: 4 --ifloat: 4 - ildouble: 1 - ldouble: 1 - -@@ -1009,10 +1321,6 @@ Function: Real part of "catanh": - double: 4 - idouble: 4 - --Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 -- - Function: "cbrt": - double: 1 - idouble: 1 -@@ -1066,8 +1374,6 @@ ildouble: 2 - ldouble: 2 - - Function: Imaginary part of "clog": --float: 3 --ifloat: 3 - ildouble: 1 - ldouble: 1 - -@@ -1079,9 +1385,9 @@ ldouble: 3 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1093,10 +1399,54 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 2 -+ldouble: 2 -+ - Function: "cosh": - ildouble: 1 - ldouble: 1 - -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+ -+Function: "cosh_tonearest": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250720 -+ldouble: 5269156250720 -+ -+Function: "cosh_upward": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ - Function: Real part of "cpow": - double: 2 - float: 5 -@@ -1113,10 +1463,6 @@ ifloat: 2 - ildouble: 2 - ldouble: 2 - --Function: Imaginary part of "cproj": --ildouble: 1 --ldouble: 1 -- - Function: Real part of "csin": - ildouble: 1 - ldouble: 1 -@@ -1146,8 +1492,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -1201,6 +1545,28 @@ Function: "exp2": - ildouble: 2 - ldouble: 2 - -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "expm1": - double: 1 - float: 1 -@@ -1218,10 +1584,10 @@ ildouble: 1 - ldouble: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1235,9 +1601,9 @@ ldouble: 1 - - Function: "jn": - double: 3 --float: 4 -+float: 3 - idouble: 3 --ifloat: 4 -+ifloat: 3 - ildouble: 4 - ldouble: 4 - -@@ -1264,8 +1630,6 @@ ldouble: 1 - Function: "log1p": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - - Function: "log2": - ildouble: 1 -@@ -1275,10 +1639,52 @@ Function: "pow": - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sin": - ildouble: 1 - ldouble: 1 - -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 2 -+ldouble: 2 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1291,12 +1697,54 @@ Function: "sinh": - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+ -+Function: "sinh_tonearest": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5269156250718 -+ldouble: 5269156250718 -+ -+Function: "sinh_upward": -+ildouble: 5269156250719 -+ldouble: 5269156250719 -+ - Function: "tan": - double: 1 - idouble: 1 - ildouble: 1 - ldouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 3 -+ldouble: 3 -+ - Function: "tanh": - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps ---- a/sysdeps/s390/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/s390/fpu/libm-test-ulps 2012-08-06 09:54:38.324772546 -0600 -@@ -31,16 +31,9 @@ ildouble: 1 - ldouble: 1 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -83,17 +76,11 @@ ildouble: 1 - ldouble: 1 - - # catan --Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": - ildouble: 1 - ldouble: 1 -@@ -102,17 +89,12 @@ ldouble: 1 - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": - double: 4 - idouble: 4 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - ildouble: 1 - ldouble: 1 - -@@ -185,9 +167,6 @@ ildouble: 1 - ldouble: 1 - - # clog --Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": - float: 1 - ifloat: 1 -@@ -210,9 +189,7 @@ ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": -@@ -288,9 +265,7 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": -@@ -300,11 +275,159 @@ idouble: 2 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": --double: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (4) == -0.6536436208636119146391681830977503814241": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (6) == 0.9601702866503660205456522979229244054519": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# cos_upward -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": - float: 1 --idouble: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 1 -+ldouble: 1 -+Test "cosh_upward (24) == 13244561064.92173614708845674912733665919": -+ildouble: 1 -+ldouble: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": -@@ -393,8 +516,6 @@ ldouble: 1 - - # ctan - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": -@@ -467,6 +588,37 @@ Test "exp2 (10) == 1024": - ildouble: 2 - ldouble: 2 - -+# exp_downward -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": - double: 1 -@@ -513,29 +665,27 @@ ifloat: 1 - # j0 - Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "j0 (0.75) == 0.864242275166648623555731103820923211": - float: 1 - ifloat: 1 - Test "j0 (10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "j0 (2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 -@@ -569,29 +719,27 @@ ldouble: 4 - # jn - Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "jn (0, 0.75) == 0.864242275166648623555731103820923211": - float: 1 - ifloat: 1 - Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": --double: 3 -+double: 2 - float: 1 --idouble: 3 -+idouble: 2 - ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": --float: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": - float: 1 - ifloat: 1 -@@ -640,15 +788,13 @@ Test "jn (10, 1.0) == 0.2630615123687453 - ildouble: 1 - ldouble: 1 - Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": --double: 4 --float: 3 --idouble: 4 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": --float: 4 --ifloat: 4 -+float: 3 -+ifloat: 3 - Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": - double: 1 - float: 1 -@@ -661,16 +807,16 @@ idouble: 1 - ifloat: 1 - Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": - double: 3 --float: 2 -+float: 1 - idouble: 3 --ifloat: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": - double: 1 --float: 2 -+float: 1 - idouble: 1 --ifloat: 2 -+ifloat: 1 - - # lgamma - Test "lgamma (-0.5) == log(2*sqrt(pi))": -@@ -713,71 +859,315 @@ Test "log2 (0.75) == -.41503749927884381 - ildouble: 1 - ldouble: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 -+# pow_downward -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 -+ -+# pow_towardzero -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 -+ifloat: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+Test "sin_downward (2) == 0.9092974268256816953960198659117448427023": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": - float: 1 - ifloat: 1 -- --# sqrt --Test "sqrt (2) == M_SQRT2l": - ildouble: 1 - ldouble: 1 -- --# tan --Test "tan (pi/4) == 1": --double: 1 --idouble: 1 -- --# tanh --Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": - ildouble: 1 - ldouble: 1 --Test "tanh (-1.0) == -0.7615941559557648881194582826047935904": -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tanh (1.0) == 0.7615941559557648881194582826047935904": -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": - ildouble: 1 - ldouble: 1 - --# tgamma --Test "tgamma (-0.5) == -2 sqrt (pi)": --double: 1 -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "tgamma (0.5) == sqrt (pi)": -+Test "sin_tonearest (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "tgamma (0.7) == 1.29805533264755778568117117915281162": --double: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": - float: 1 --idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": -+Test "sin_towardzero (2) == 0.9092974268256816953960198659117448427023": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+Test "sin_upward (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": -+double: 1 -+idouble: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 1 -+ldouble: 1 -+ -+# sqrt -+Test "sqrt (2) == M_SQRT2l": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tanh -+Test "tanh (-0.75) == -0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (-1.0) == -0.7615941559557648881194582826047935904": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (0.75) == 0.635148952387287319214434357312496495": -+ildouble: 1 -+ldouble: 1 -+Test "tanh (1.0) == 0.7615941559557648881194582826047935904": -+ildouble: 1 -+ldouble: 1 -+ -+# tgamma -+Test "tgamma (-0.5) == -2 sqrt (pi)": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tgamma (0.5) == sqrt (pi)": -+float: 1 -+ifloat: 1 -+Test "tgamma (0.7) == 1.29805533264755778568117117915281162": -+double: 1 -+float: 1 -+idouble: 1 -+ifloat: 1 -+Test "tgamma (4) == 6": - ildouble: 1 - ldouble: 1 - -@@ -917,17 +1307,13 @@ ifloat: 2 - ildouble: 5 - ldouble: 5 - Test "yn (10, 1.0) == -121618014.278689189288130426667971145": --double: 1 - float: 2 --idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 - Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": - double: 2 --float: 2 - idouble: 2 --ifloat: 2 - ildouble: 2 - ldouble: 2 - Test "yn (10, 2.0) == -129184.542208039282635913145923304214": -@@ -941,9 +1327,7 @@ Test "yn (3, 0.125) == -2612.69757350066 - double: 1 - idouble: 1 - Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 2 - ldouble: 2 -@@ -973,17 +1357,9 @@ Function: Imaginary part of "cacos": - ildouble: 1 - ldouble: 1 - --Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 -- - Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1013,10 +1389,6 @@ ifloat: 6 - ildouble: 2 - ldouble: 2 - --Function: Real part of "catan": --float: 4 --ifloat: 4 -- - Function: Imaginary part of "catan": - double: 1 - float: 1 -@@ -1032,8 +1404,6 @@ ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 - ildouble: 1 - ldouble: 1 - -@@ -1089,10 +1459,6 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "clog": --float: 3 --ifloat: 3 -- - Function: Real part of "clog10": - float: 1 - ifloat: 1 -@@ -1101,9 +1467,9 @@ ldouble: 1 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 -+ifloat: 1 - ildouble: 1 - ldouble: 1 - -@@ -1115,6 +1481,48 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: Real part of "cpow": - double: 2 - float: 4 -@@ -1162,8 +1570,6 @@ ildouble: 1 - ldouble: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 - ildouble: 1 - ldouble: 1 - -@@ -1211,6 +1617,24 @@ Function: "exp2": - ildouble: 2 - ldouble: 2 - -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "expm1": - double: 1 - float: 1 -@@ -1228,10 +1652,10 @@ float: 1 - ifloat: 1 - - Function: "j0": --double: 3 --float: 2 --idouble: 3 --ifloat: 2 -+double: 2 -+float: 1 -+idouble: 2 -+ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1244,10 +1668,10 @@ ildouble: 4 - ldouble: 4 - - Function: "jn": --double: 4 --float: 4 --idouble: 4 --ifloat: 4 -+double: 3 -+float: 3 -+idouble: 3 -+ifloat: 3 - ildouble: 4 - ldouble: 4 - -@@ -1277,6 +1701,44 @@ Function: "log2": - ildouble: 1 - ldouble: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1285,6 +1747,22 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "sinh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: "sqrt": - ildouble: 1 - ldouble: 1 -@@ -1293,6 +1771,24 @@ Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ - Function: "tanh": - ildouble: 1 - ldouble: 1 -diff -Nrup a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps ---- a/sysdeps/x86_64/fpu/libm-test-ulps 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/x86_64/fpu/libm-test-ulps 2012-08-06 11:02:14.602759422 -0600 -@@ -42,26 +42,13 @@ ldouble: 1 - - # cacos - Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - - # cacosh --Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 --ildouble: 6 --ldouble: 6 - Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 --ildouble: 1 --ldouble: 1 -+float: 1 -+ifloat: 1 - Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i": - ildouble: 1 - ldouble: 1 -@@ -75,8 +62,6 @@ ifloat: 1 - ildouble: 2 - ldouble: 2 - Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -103,21 +88,15 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ldouble: 1 - ildouble: 1 -+ldouble: 1 - - # catan --Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": --float: 3 --ifloat: 3 - Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i": - double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": --float: 4 --ifloat: 4 - - # catanh - Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": -@@ -125,15 +104,9 @@ double: 4 - idouble: 4 - ildouble: 1 - ldouble: 1 --Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": --float: 4 --ifloat: 4 - Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": - double: 1 - idouble: 1 --Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": --float: 6 --ifloat: 6 - - # cbrt - Test "cbrt (-0.001) == -0.1": -@@ -152,14 +125,9 @@ ildouble: 1 - ldouble: 1 - - # ccos --Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": --double: 1 --idouble: 1 - Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i": - float: 1 - ifloat: 1 --ildouble: 1 --ldouble: 1 - Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": - double: 1 - float: 1 -@@ -168,19 +136,17 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": --ildouble: 1 --ldouble: 1 - float: 1 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 - - # ccosh - Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": - float: 1 - ifloat: 1 - Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -205,9 +171,6 @@ ildouble: 1 - ldouble: 1 - - # clog --Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": --float: 3 --ifloat: 3 - Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": - float: 1 - ifloat: 1 -@@ -227,11 +190,7 @@ idouble: 1 - ifloat: 1 - Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i": - double: 1 --float: 5 - idouble: 1 --ifloat: 5 --ildouble: 1 --ldouble: 1 - Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i": - double: 1 - float: 1 -@@ -276,9 +235,7 @@ float: 1 - idouble: 1 - ifloat: 1 - Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -306,33 +263,164 @@ ifloat: 1 - # cos - Test "cos (M_PI_6l * 2.0) == 0.5": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - Test "cos (M_PI_6l * 4.0) == -0.5": - double: 2 - float: 1 - idouble: 2 - ifloat: 1 -+ -+# cos_downward -+Test "cos_downward (1) == 0.5403023058681397174009366074429766037323": -+float: 1 -+ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (pi/2) == 0": --double: 1 -+Test "cos_downward (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+Test "cos_downward (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+Test "cos_downward (4) == -0.6536436208636119146391681830977503814241": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "cos (0.80190127184058835) == 0.69534156199418473": --double: 1 --idouble: 1 -+Test "cos_downward (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_downward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_downward (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_tonearest -+Test "cos_tonearest (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_tonearest (8) == -0.1455000338086135258688413818311946826093": -+ildouble: 1 -+ldouble: 1 -+Test "cos_tonearest (9) == -0.9111302618846769883682947111811653112463": -+ildouble: 1 -+ldouble: 1 -+ -+# cos_towardzero -+Test "cos_towardzero (1) == 0.5403023058681397174009366074429766037323": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (10) == -0.8390715290764524522588639478240648345199": -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (2) == -0.4161468365471423869975682295007621897660": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (3) == -0.9899924966004454572715727947312613023937": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (5) == 0.2836621854632262644666391715135573083344": -+float: 1 -+ifloat: 1 -+Test "cos_towardzero (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_towardzero (8) == -0.1455000338086135258688413818311946826093": -+float: 1 -+ifloat: 1 -+ -+# cos_upward -+Test "cos_upward (10) == -0.8390715290764524522588639478240648345199": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (2) == -0.4161468365471423869975682295007621897660": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (3) == -0.9899924966004454572715727947312613023937": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (5) == 0.2836621854632262644666391715135573083344": -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (6) == 0.9601702866503660205456522979229244054519": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cos_upward (7) == 0.7539022543433046381411975217191820122183": -+float: 1 -+ifloat: 1 -+Test "cos_upward (9) == -0.9111302618846769883682947111811653112463": -+float: 2 -+ifloat: 2 -+ -+# cosh_downward -+Test "cosh_downward (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cosh_downward (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_downward (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_tonearest -+Test "cosh_tonearest (22) == 1792456423.065795780980053377632656584997": -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_towardzero -+Test "cosh_towardzero (22) == 1792456423.065795780980053377632656584997": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "cosh_towardzero (23) == 4872401723.124451300068625740569997090344": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "cosh_towardzero (24) == 13244561064.92173614708845674912733665919": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# cosh_upward -+Test "cosh_upward (23) == 4872401723.124451300068625740569997090344": -+ildouble: 1 -+ldouble: 1 - - # cpow - Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 - ifloat: 1 --ldouble: 1 - ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": - float: 1 - ifloat: 1 -@@ -363,9 +451,9 @@ ildouble: 1 - ldouble: 1 - Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": - double: 1 --float: 5 -+float: 4 - idouble: 1 --ifloat: 5 -+ifloat: 4 - Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": - float: 2 - ifloat: 2 -@@ -383,22 +471,11 @@ ldouble: 1 - Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": - ildouble: 1 - ldouble: 1 --Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i": --float: 1 --ifloat: 1 --Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i": --double: 1 --idouble: 1 - - # csinh --Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": --double: 1 --idouble: 1 - Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i": - double: 1 - idouble: 1 --ildouble: 2 --ldouble: 2 - Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": - float: 1 - ifloat: 1 -@@ -418,37 +495,31 @@ ifloat: 1 - - # ctan - Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --double: 1 --idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i": --float: 1 --ifloat: 1 --ildouble: 2 --ldouble: 2 -+ildouble: 1 -+ldouble: 1 - Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - ildouble: 1 - ldouble: 1 - Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 3 - ldouble: 3 - - # ctanh - Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --float: 2 --ifloat: 2 --ildouble: 5 --ldouble: 5 - double: 1 -+float: 2 - idouble: 1 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 - Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i": --ildouble: 25 --ldouble: 25 -+ildouble: 1 -+ldouble: 1 - Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": - float: 1 - ifloat: 1 -@@ -456,10 +527,10 @@ Test "Real part of: ctanh (0.75 + 1.25 i - double: 1 - idouble: 1 - Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": --ildouble: 1 --ldouble: 1 - double: 1 - idouble: 1 -+ildouble: 1 -+ldouble: 1 - - # erf - Test "erf (1.25) == 0.922900128256458230136523481197281140": -@@ -481,26 +552,61 @@ ldouble: 1 - - # exp10 - Test "exp10 (-1) == 0.1": --ildouble: 1 --ldouble: 1 --float: 1 --ifloat: 1 - double: 2 --idouble: 2 --Test "exp10 (0.75) == 5.62341325190349080394951039776481231": --ildouble: 2 --ldouble: 2 - float: 1 -+idouble: 2 - ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "exp10 (0.75) == 5.62341325190349080394951039776481231": - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 - Test "exp10 (3) == 1000": --ildouble: 8 --ldouble: 8 --float: 2 --ifloat: 2 - double: 6 -+float: 2 - idouble: 6 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 -+ -+# exp_downward -+Test "exp_downward (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_downward (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_downward (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_towardzero -+Test "exp_towardzero (1) == e": -+ildouble: 1 -+ldouble: 1 -+Test "exp_towardzero (2) == e^2": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+Test "exp_towardzero (3) == e^3": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# exp_upward -+Test "exp_upward (1) == e": -+float: 1 -+ifloat: 1 - - # expm1 - Test "expm1 (0.75) == 1.11700001661267466854536981983709561": -@@ -570,9 +676,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "j0 (8.0) == 0.171650807137553906090869407851972001": --double: 2 - float: 1 --idouble: 2 - ifloat: 1 - - # j1 -@@ -617,9 +721,7 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": --double: 2 - float: 1 --idouble: 2 - ifloat: 1 - Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": - float: 2 -@@ -714,12 +816,12 @@ ldouble: 1 - - # log10 - Test "log10 (0.75) == -0.124938736608299953132449886193870744": --ildouble: 1 --ldouble: 1 --float: 2 --ifloat: 2 - double: 1 -+float: 2 - idouble: 1 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 - Test "log10 (e) == log10(e)": - float: 1 - ifloat: 1 -@@ -731,37 +833,309 @@ Test "log1p (-0.25) == -0.28768207245178 - float: 1 - ifloat: 1 - --# sincos --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 --Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 -+# pow_downward -+Test "pow_downward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": - ildouble: 1 - ldouble: 1 --Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": --double: 1 -+Test "pow_downward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 --Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+ -+# pow_towardzero -+Test "pow_towardzero (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+ildouble: 1 -+ldouble: 1 -+Test "pow_towardzero (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# pow_upward -+Test "pow_upward (1.0625, 1.125) == 1.070582293028761362162622578677070098674": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "pow_upward (1.5, 1.03125) == 1.519127098714743184071644334163037684948": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_downward -+Test "sin_downward (1) == 0.8414709848078965066525023216302989996226": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (3) == 0.1411200080598672221007448028081102798469": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (6) == -0.2794154981989258728115554466118947596280": -+float: 1 -+ifloat: 1 -+Test "sin_downward (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_downward (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_tonearest -+Test "sin_tonearest (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+Test "sin_tonearest (10) == -0.5440211108893698134047476618513772816836": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (4) == -0.7568024953079282513726390945118290941359": -+ildouble: 1 -+ldouble: 1 -+Test "sin_tonearest (9) == 0.4121184852417565697562725663524351793439": -+ildouble: 1 -+ldouble: 1 -+ -+# sin_towardzero -+Test "sin_towardzero (1) == 0.8414709848078965066525023216302989996226": - float: 1 - ifloat: 1 --Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (10) == -0.5440211108893698134047476618513772816836": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (3) == 0.1411200080598672221007448028081102798469": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (5) == -0.9589242746631384688931544061559939733525": -+float: 1 -+ifloat: 1 -+Test "sin_towardzero (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (7) == 0.6569865987187890903969990915936351779369": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (8) == 0.9893582466233817778081235982452886721164": -+ildouble: 1 -+ldouble: 1 -+Test "sin_towardzero (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# sin_upward -+Test "sin_upward (1) == 0.8414709848078965066525023216302989996226": -+float: 1 -+ifloat: 1 -+Test "sin_upward (2) == 0.9092974268256816953960198659117448427023": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (4) == -0.7568024953079282513726390945118290941359": -+float: 1 -+ifloat: 1 -+Test "sin_upward (6) == -0.2794154981989258728115554466118947596280": -+ildouble: 1 -+ldouble: 1 -+Test "sin_upward (9) == 0.4121184852417565697562725663524351793439": -+float: 1 -+ifloat: 1 -+ -+# sincos -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": - double: 1 - idouble: 1 -- --# tan --Test "tan (pi/4) == 1": -+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": -+float: 1 -+ifloat: 1 -+ -+# sinh_downward -+Test "sinh_downward (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "sinh_downward (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+Test "sinh_downward (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+# sinh_tonearest -+Test "sinh_tonearest (22) == 1792456423.065795780701106568345764104225": -+ildouble: 3 -+ldouble: 3 -+Test "sinh_tonearest (23) == 4872401723.124451299966006944252978187305": -+ildouble: 1 -+ldouble: 1 -+Test "sinh_tonearest (24) == 13244561064.92173614705070540368454568168": -+ildouble: 6 -+ldouble: 6 -+ -+# sinh_towardzero -+Test "sinh_towardzero (22) == 1792456423.065795780701106568345764104225": -+float: 1 -+ifloat: 1 -+ildouble: 4 -+ldouble: 4 -+Test "sinh_towardzero (23) == 4872401723.124451299966006944252978187305": -+float: 1 -+ifloat: 1 -+Test "sinh_towardzero (24) == 13244561064.92173614705070540368454568168": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+# sinh_upward -+Test "sinh_upward (22) == 1792456423.065795780701106568345764104225": -+ildouble: 16 -+ldouble: 16 -+Test "sinh_upward (23) == 4872401723.124451299966006944252978187305": -+ildouble: 27 -+ldouble: 27 -+Test "sinh_upward (24) == 13244561064.92173614705070540368454568168": -+ildouble: 7 -+ldouble: 7 -+ -+# tan_downward -+Test "tan_downward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+Test "tan_downward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_downward (2) == -2.1850398632615189916433061023136825434320": -+float: 1 -+ifloat: 1 -+Test "tan_downward (4) == 1.1578212823495775831373424182673239231198": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (5) == -3.3805150062465856369827058794473439087096": -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (6) == -0.2910061913847491570536995888681755428312": -+float: 1 -+ifloat: 1 -+Test "tan_downward (8) == -6.7997114552203786999252627596086333648814": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_downward (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ -+# tan_tonearest -+Test "tan_tonearest (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 1 -+ldouble: 1 -+Test "tan_tonearest (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 -+ -+# tan_towardzero -+Test "tan_towardzero (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (4) == 1.1578212823495775831373424182673239231198": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_towardzero (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_towardzero (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 2 -+ldouble: 2 -+Test "tan_towardzero (9) == -0.4523156594418098405903708757987855343087": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+# tan_upward -+Test "tan_upward (1) == 1.5574077246549022305069748074583601730873": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (10) == 0.6483608274590866712591249330098086768169": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (3) == -0.1425465430742778052956354105339134932261": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (5) == -3.3805150062465856369827058794473439087096": -+float: 1 -+ifloat: 1 -+Test "tan_upward (6) == -0.2910061913847491570536995888681755428312": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (7) == 0.8714479827243187364564508896003135663222": -+ildouble: 1 -+ldouble: 1 -+Test "tan_upward (8) == -6.7997114552203786999252627596086333648814": -+ildouble: 2 -+ldouble: 2 -+Test "tan_upward (9) == -0.4523156594418098405903708757987855343087": -+ildouble: 1 -+ldouble: 1 - - # tgamma - Test "tgamma (-0.5) == -2 sqrt (pi)": -@@ -779,9 +1153,6 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --Test "tgamma (4) == 6": --ildouble: 1 --ldouble: 1 - - # y0 - Test "y0 (0.125) == -1.38968062514384052915582277745018693": -@@ -960,27 +1331,17 @@ ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "cacos": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - - Function: Real part of "cacosh": --double: 1 --float: 7 --idouble: 1 --ifloat: 7 --ildouble: 6 --ldouble: 6 -- --Function: Imaginary part of "cacosh": --double: 1 --float: 3 --idouble: 1 --ifloat: 3 - ildouble: 1 - ldouble: 1 - -+Function: Imaginary part of "cacosh": -+float: 1 -+ifloat: 1 -+ - Function: Real part of "casin": - double: 1 - float: 1 -@@ -990,8 +1351,6 @@ ildouble: 2 - ldouble: 2 - - Function: Imaginary part of "casin": --float: 1 --ifloat: 1 - ildouble: 2 - ldouble: 2 - -@@ -1011,10 +1370,6 @@ ifloat: 6 - ildouble: 5 - ldouble: 5 - --Function: Real part of "catan": --float: 4 --ifloat: 4 -- - Function: Imaginary part of "catan": - double: 1 - float: 1 -@@ -1027,10 +1382,6 @@ idouble: 4 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "catanh": --float: 6 --ifloat: 6 -- - Function: "cbrt": - double: 1 - idouble: 1 -@@ -1058,9 +1409,7 @@ idouble: 1 - ifloat: 1 - - Function: Imaginary part of "ccosh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -1081,25 +1430,17 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "clog": --float: 3 --ifloat: 3 -- - Function: Real part of "clog10": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 - - Function: Imaginary part of "clog10": - double: 1 --float: 5 -+float: 1 - idouble: 1 --ifloat: 5 --ildouble: 1 --ldouble: 1 -+ifloat: 1 - - Function: "cos": - double: 2 -@@ -1109,11 +1450,55 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "cos_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cos_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cosh_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "cosh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "cosh_upward": -+ildouble: 1 -+ldouble: 1 -+ - Function: Real part of "cpow": - double: 2 --float: 5 -+float: 4 - idouble: 2 --ifloat: 5 -+ifloat: 4 - ildouble: 5 - ldouble: 5 - -@@ -1129,16 +1514,8 @@ Function: Real part of "csin": - ildouble: 1 - ldouble: 1 - --Function: Imaginary part of "csin": --double: 1 --float: 1 --idouble: 1 --ifloat: 1 -- - Function: Real part of "csinh": --double: 1 - float: 1 --idouble: 1 - ifloat: 1 - ildouble: 1 - ldouble: 1 -@@ -1148,24 +1525,18 @@ double: 1 - float: 1 - idouble: 1 - ifloat: 1 --ildouble: 2 --ldouble: 2 - - Function: Real part of "csqrt": - float: 1 - ifloat: 1 - - Function: Real part of "ctan": --double: 1 --idouble: 1 --ildouble: 439 --ldouble: 439 -+ildouble: 1 -+ldouble: 1 - - Function: Imaginary part of "ctan": - double: 1 --float: 1 - idouble: 1 --ifloat: 1 - ildouble: 3 - ldouble: 3 - -@@ -1174,16 +1545,16 @@ double: 1 - float: 2 - idouble: 1 - ifloat: 2 --ildouble: 5 --ldouble: 5 -+ildouble: 3 -+ldouble: 3 - - Function: Imaginary part of "ctanh": --float: 1 --ifloat: 1 --ildouble: 25 --ldouble: 25 - double: 1 -+float: 1 - idouble: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 - - Function: "erf": - double: 1 -@@ -1196,12 +1567,28 @@ ildouble: 1 - ldouble: 1 - - Function: "exp10": --ildouble: 8 --ldouble: 8 --float: 2 --ifloat: 2 - double: 6 -+float: 2 - idouble: 6 -+ifloat: 2 -+ildouble: 3 -+ldouble: 3 -+ -+Function: "exp_downward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "exp_upward": -+float: 1 -+ifloat: 1 - - Function: "expm1": - double: 1 -@@ -1250,17 +1637,59 @@ ildouble: 1 - ldouble: 1 - - Function: "log10": -+double: 1 - float: 2 -+idouble: 1 - ifloat: 2 - ildouble: 1 - ldouble: 1 --double: 1 --idouble: 1 - - Function: "log1p": - float: 1 - ifloat: 1 - -+Function: "pow_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "pow_upward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_tonearest": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "sin_upward": -+float: 2 -+ifloat: 2 -+ildouble: 1 -+ldouble: 1 -+ - Function: "sincos": - double: 1 - float: 1 -@@ -1269,10 +1698,52 @@ ifloat: 1 - ildouble: 1 - ldouble: 1 - -+Function: "sinh_downward": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+Function: "sinh_tonearest": -+ildouble: 6 -+ldouble: 6 -+ -+Function: "sinh_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 5 -+ldouble: 5 -+ -+Function: "sinh_upward": -+ildouble: 27 -+ldouble: 27 -+ - Function: "tan": - double: 1 - idouble: 1 - -+Function: "tan_downward": -+float: 1 -+ifloat: 1 -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_tonearest": -+ildouble: 1 -+ldouble: 1 -+ -+Function: "tan_towardzero": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ -+Function: "tan_upward": -+float: 1 -+ifloat: 1 -+ildouble: 2 -+ldouble: 2 -+ - Function: "tgamma": - double: 1 - float: 1 -diff -Nrup a/sysdeps/x86_64/fpu/math_private.h b/sysdeps/x86_64/fpu/math_private.h ---- a/sysdeps/x86_64/fpu/math_private.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/x86_64/fpu/math_private.h 2012-08-06 09:54:00.893929393 -0600 -@@ -56,3 +56,82 @@ do { \ - } while (0) - - #endif -+ -+ -+/* Specialized variants of the interfaces which only handle -+ either the FPU or the SSE unit. */ -+#undef libc_fegetround -+#define libc_fegetround() \ -+ ({ \ -+ unsigned int mxcsr; \ -+ asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (mxcsr & 0x6000) >> 3; \ -+ }) -+#undef libc_fegetroundf -+#define libc_fegetroundf() libc_fegetround () -+// #define libc_fegetroundl() fegetround () -+ -+#undef libc_fesetround -+#define libc_fesetround(r) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr = (mxcsr & ~0x6000) | ((r) << 3); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_fesetroundf -+#define libc_fesetroundf(r) libc_fesetround (r) -+// #define libc_fesetroundl(r) (void) fesetround (r) -+ -+#undef libc_feholdexcept -+#define libc_feholdexcept(e) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (e)->__mxcsr = mxcsr; \ -+ mxcsr = (mxcsr | 0x1f80) & ~0x3f; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_feholdexceptf -+#define libc_feholdexceptf(e) libc_feholdexcept (e) -+// #define libc_feholdexceptl(e) (void) feholdexcept (e) -+ -+#undef libc_feholdexcept_setround -+#define libc_feholdexcept_setround(e, r) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ (e)->__mxcsr = mxcsr; \ -+ mxcsr = ((mxcsr | 0x1f80) & ~0x603f) | ((r) << 3); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } while (0) -+#undef libc_feholdexcept_setroundf -+#define libc_feholdexcept_setroundf(e, r) libc_feholdexcept_setround (e, r) -+// #define libc_feholdexcept_setroundl(e, r) ... -+ -+#undef libc_fetestexcept -+#define libc_fetestexcept(e) \ -+ ({ unsigned int mxcsr; asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr & (e) & FE_ALL_EXCEPT; }) -+#undef libc_fetestexceptf -+#define libc_fetestexceptf(e) libc_fetestexcept (e) -+// #define libc_fetestexceptl(e) fetestexcept (e) -+ -+#undef libc_fesetenv -+#define libc_fesetenv(e) \ -+ asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)) -+#undef libc_fesetenvf -+#define libc_fesetenvf(e) libc_fesetenv (e) -+// #define libc_fesetenvl(e) (void) fesetenv (e) -+ -+#undef libc_feupdateenv -+#define libc_feupdateenv(e) \ -+ do { \ -+ unsigned int mxcsr; \ -+ asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)); \ -+ feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ -+ } while (0) -+#undef libc_feupdateenvf -+#define libc_feupdateenvf(e) libc_feupdateenv (e) -+// #define libc_feupdateenvl(e) (void) feupdateenv (e) diff --git a/src/patches/glibc/glibc-rh841787.patch b/src/patches/glibc/glibc-rh841787.patch deleted file mode 100644 index 3cec78320..000000000 --- a/src/patches/glibc/glibc-rh841787.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff -rup a/resolv/res_init.c b/resolv/res_init.c ---- a/resolv/res_init.c 2012-07-26 15:10:45.655638776 -0600 -+++ b/resolv/res_init.c 2012-07-26 15:11:27.731423002 -0600 -@@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit - cp++; - if ((*cp != '\0') && (*cp != '\n') - && __inet_aton(cp, &a)) { -- statp->nsaddr_list[nservall].sin_addr = a; -- statp->nsaddr_list[nservall].sin_family = AF_INET; -- statp->nsaddr_list[nservall].sin_port = -+ statp->nsaddr_list[nserv].sin_addr = a; -+ statp->nsaddr_list[nserv].sin_family = AF_INET; -+ statp->nsaddr_list[nserv].sin_port = - htons(NAMESERVER_PORT); - nserv++; - #ifdef _LIBC -diff -rup a/resolv/res_send.c b/resolv/res_send.c ---- a/resolv/res_send.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/resolv/res_send.c 2012-07-26 15:34:58.398261659 -0600 -@@ -421,10 +421,10 @@ __libc_res_nsend(res_state statp, const - EXT(statp).nsmap[n] = MAXNS; - } - } -- n = statp->nscount; -- if (statp->nscount > EXT(statp).nscount) -+ n = statp->nscount - EXT(statp).nscount6; -+ if (n > EXT(statp).nscount) - for (n = EXT(statp).nscount, ns = 0; -- n < statp->nscount; n++) { -+ n < statp->nscount - EXT(statp).nscount6; n++) { - while (ns < MAXNS - && EXT(statp).nsmap[ns] != MAXNS) - ns++; -@@ -441,7 +441,7 @@ __libc_res_nsend(res_state statp, const - malloc(sizeof (struct sockaddr_in6)); - if (EXT(statp).nsaddrs[n] != NULL) { - memset (mempcpy(EXT(statp).nsaddrs[n], -- &statp->nsaddr_list[n], -+ &statp->nsaddr_list[ns], - sizeof (struct sockaddr_in)), - '\0', - sizeof (struct sockaddr_in6) diff --git a/src/patches/glibc/glibc-rh843673.patch b/src/patches/glibc/glibc-rh843673.patch deleted file mode 100644 index a2ff2629b..000000000 --- a/src/patches/glibc/glibc-rh843673.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -Brup a/stdlib/msort.c b/stdlib/msort.c ---- a/stdlib/msort.c 2010-05-04 07:27:23.000000000 -0400 -+++ b/stdlib/msort.c 2012-08-07 13:30:14.131765346 -0400 -@@ -25,6 +25,8 @@ - #include - #include - #include -+#include -+ - - struct msort_param - { -@@ -182,7 +184,7 @@ qsort_r (void *b, size_t n, size_t s, __ - static long int phys_pages; - static int pagesize; - -- if (phys_pages == 0) -+ if (pagesize == 0) - { - phys_pages = __sysconf (_SC_PHYS_PAGES); - -@@ -197,6 +199,9 @@ qsort_r (void *b, size_t n, size_t s, __ - a quarter of the physical memory. */ - phys_pages /= 4; - -+ /* Make sure phys_pages is written to memory. */ -+ atomic_write_barrier (); -+ - pagesize = __sysconf (_SC_PAGESIZE); - } - diff --git a/src/patches/glibc/glibc-rh845218.patch b/src/patches/glibc/glibc-rh845218.patch deleted file mode 100644 index 47f909c10..000000000 --- a/src/patches/glibc/glibc-rh845218.patch +++ /dev/null @@ -1,218 +0,0 @@ -commit 16b293a7a6f65d8ff348a603d19e8fd4372fa3a9 -Author: Siddhesh Poyarekar -Date: Wed Apr 30 11:48:43 2014 +0530 - - Do not fail if one of the two responses to AF_UNSPEC fails (BZ #14308) - - [Fixes BZ #14308, #12994, #13651] - - AF_UNSPEC results in sending two queries in parallel, one for the A - record and the other for the AAAA record. If one of these is a - referral, then the query fails, which is wrong. It should return at - least the one successful response. - - The fix has two parts. The first part makes the referral fall back to - the SERVFAIL path, which results in using the successful response. - There is a bug in that path however, due to which the second part is - necessary. The bug here is that if the first response is a failure - and the second succeeds, __libc_res_nsearch does not detect that and - assumes a failure. The case where the first response is a success and - the second fails, works correctly. - - This condition is produced by buggy routers, so here's a crude - interposable library that can simulate such a condition. The library - overrides the recvfrom syscall and modifies the header of the packet - received to reproduce this scenario. It has two key variables: - mod_packet and first_error. - - The mod_packet variable when set to 0, results in odd packets being - modified to be a referral. When set to 1, even packets are modified - to be a referral. - - The first_error causes the first response to be a failure so that a - domain-appended search is performed to test the second part of the - __libc_nsearch fix. - - The driver for this fix is a simple getaddrinfo program that does an - AF_UNSPEC query. I have omitted this since it should be easy to - implement. - - I have tested this on x86_64. - - The interceptor library source: - - /* Override recvfrom and modify the header of the first DNS response to make it - a referral and reproduce bz #845218. We have to resort to this ugly hack - because we cannot make bind return the buggy response of a referral for the - AAAA record and an authoritative response for the A record. */ - #define _GNU_SOURCE - #include - #include - #include - #include - #include - #include - #include - #include - #include - - /* Lifted from resolv/arpa/nameser_compat.h. */ - typedef struct { - unsigned id :16; /*%< query identification number */ - #if BYTE_ORDER == BIG_ENDIAN - /* fields in third byte */ - unsigned qr: 1; /*%< response flag */ - unsigned opcode: 4; /*%< purpose of message */ - unsigned aa: 1; /*%< authoritive answer */ - unsigned tc: 1; /*%< truncated message */ - unsigned rd: 1; /*%< recursion desired */ - /* fields - * in - * fourth - * byte - * */ - unsigned ra: 1; /*%< recursion available */ - unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */ - unsigned ad: 1; /*%< authentic data from named */ - unsigned cd: 1; /*%< checking disabled by resolver */ - unsigned rcode :4; /*%< response code */ - #endif - #if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN - /* fields - * in - * third - * byte - * */ - unsigned rd :1; /*%< recursion desired */ - unsigned tc :1; /*%< truncated message */ - unsigned aa :1; /*%< authoritive answer */ - unsigned opcode :4; /*%< purpose of message */ - unsigned qr :1; /*%< response flag */ - /* fields - * in - * fourth - * byte - * */ - unsigned rcode :4; /*%< response code */ - unsigned cd: 1; /*%< checking disabled by resolver */ - unsigned ad: 1; /*%< authentic data from named */ - unsigned unused :1; /*%< unused bits (MBZ as of 4.9.3a3) */ - unsigned ra :1; /*%< recursion available */ - #endif - /* remaining - * bytes - * */ - unsigned qdcount :16; /*%< number of question entries */ - unsigned ancount :16; /*%< number of answer entries */ - unsigned nscount :16; /*%< number of authority entries */ - unsigned arcount :16; /*%< number of resource entries */ - } HEADER; - - static int done = 0; - - /* Packets to modify. 0 for the odd packets and 1 for even packets. */ - static const int mod_packet = 0; - - /* Set to true if the first request should result in an error, resulting in a - search query. */ - static bool first_error = true; - - static ssize_t (*real_recvfrom) (int sockfd, void *buf, size_t len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen); - - void - __attribute__ ((constructor)) - init (void) - { - real_recvfrom = dlsym (RTLD_NEXT, "recvfrom"); - - if (real_recvfrom == NULL) - { - printf ("Failed to get reference to recvfrom: %s\n", dlerror ()); - printf ("Cannot simulate test\n"); - abort (); - } - } - - /* Modify the second packet that we receive to set the header in a manner as to - reproduce BZ #845218. */ - static void - mod_buf (HEADER *h, int port) - { - if (done % 2 == mod_packet || (first_error && done == 1)) - { - printf ("(Modifying header)"); - - if (first_error && done == 1) - h->rcode = 3; - else - h->rcode = 0; /* NOERROR == 0. */ - h->ancount = 0; - h->aa = 0; - h->ra = 0; - h->arcount = 0; - } - done++; - } - - ssize_t - recvfrom (int sockfd, void *buf, size_t len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen) - { - ssize_t ret = real_recvfrom (sockfd, buf, len, flags, src_addr, addrlen); - int port = htons (((struct sockaddr_in *) src_addr)->sin_port); - struct in_addr addr = ((struct sockaddr_in *) src_addr)->sin_addr; - const char *host = inet_ntoa (addr); - printf ("\n*** From %s:%d: ", host, port); - - mod_buf (buf, port); - - printf ("returned %zd\n", ret); - return ret; - } - -diff --git a/resolv/res_query.c b/resolv/res_query.c -index a9db837..4e6612c 100644 ---- a/resolv/res_query.c -+++ b/resolv/res_query.c -@@ -382,7 +382,9 @@ __libc_res_nsearch(res_state statp, - ret = __libc_res_nquerydomain(statp, name, NULL, class, type, - answer, anslen, answerp, - answerp2, nanswerp2, resplen2); -- if (ret > 0 || trailing_dot) -+ if (ret > 0 || trailing_dot -+ /* If the second response is valid then we use that. */ -+ || (ret == 0 && answerp2 != NULL && resplen2 > 0)) - return (ret); - saved_herrno = h_errno; - tried_as_is++; -@@ -422,7 +424,8 @@ __libc_res_nsearch(res_state statp, - answer, anslen, answerp, - answerp2, nanswerp2, - resplen2); -- if (ret > 0) -+ if (ret > 0 || (ret == 0 && answerp2 != NULL -+ && resplen2 > 0)) - return (ret); - - if (answerp && *answerp != answer) { -diff --git a/resolv/res_send.c b/resolv/res_send.c -index 60743df..3273d55 100644 ---- a/resolv/res_send.c -+++ b/resolv/res_send.c -@@ -1351,6 +1351,7 @@ send_dg(res_state statp, - (*thisresplenp > *thisanssizp) - ? *thisanssizp : *thisresplenp); - -+ next_ns: - if (recvresp1 || (buf2 != NULL && recvresp2)) { - *resplen2 = 0; - return resplen; -@@ -1368,7 +1369,6 @@ send_dg(res_state statp, - goto wait; - } - -- next_ns: - __res_iclose(statp, false); - /* don't retry if called from dig */ - if (!statp->pfcode) diff --git a/src/patches/glibc/glibc-rh846342.patch b/src/patches/glibc/glibc-rh846342.patch deleted file mode 100644 index 8cfca0513..000000000 --- a/src/patches/glibc/glibc-rh846342.patch +++ /dev/null @@ -1,48 +0,0 @@ -This is a workaround for broken code which issues memcpy requests with -overlapping arguments. With this patch installed, if the file -/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove exists then a -32bit memcpy call which normally would be handled by the SSSE3 memcpy -implementation would instead be handled by the 32bit SSSE3 memmove -implementation which is more tolerant of overlaps. - -diff -Nrup a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S ---- a/sysdeps/i386/i686/multiarch/memcpy.S 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/i386/i686/multiarch/memcpy.S 2012-11-20 14:19:52.890780415 -0700 -@@ -21,6 +21,10 @@ - #include - #include - -+ .section .rodata -+L(magicfile): -+ .ascii "/etc/sysconfig/32bit_ssse3_memcpy_via_32bit_ssse3_memmove" -+ - /* Define multiple versions only for the definition in lib and for - DSO. In static binaries we need memcpy before the initialization - happened. */ -@@ -48,6 +52,26 @@ ENTRY(memcpy) - 1: leal __memcpy_ia32@GOTOFF(%ebx), %eax - testl $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx) - jz 2f -+ -+ /* This is an inlined access (magicfile, 0) syscall. -+ -+ Note that it clobbers %ebx, so we have to save/restore -+ it around the syscall. */ -+ mov %ebx, %edx -+ leal L(magicfile)@GOTOFF(%ebx), %ebx -+ xor %ecx, %ecx -+ movl $33, %eax -+ int $0x80 -+ mov %edx, %ebx -+ -+ /* If the file did not exist, then %eax will be -1..-4095 and we -+ do nothing special. */ -+ cmpl $-4095, %eax -+ jae 4f -+ -+ leal __memmove_ssse3@GOTOFF(%ebx), %eax -+ jmp 2f -+4: - leal __memcpy_ssse3@GOTOFF(%ebx), %eax - testl $bit_Fast_Rep_String, FEATURE_OFFSET+index_Fast_Rep_String+__cpu_features@GOTOFF(%ebx) - jz 2f diff --git a/src/patches/glibc/glibc-rh847932.patch b/src/patches/glibc/glibc-rh847932.patch deleted file mode 100644 index 33ea851fa..000000000 --- a/src/patches/glibc/glibc-rh847932.patch +++ /dev/null @@ -1,364 +0,0 @@ -diff -Nrup a/stdlib/Makefile b/stdlib/Makefile ---- a/stdlib/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdlib/Makefile 2012-08-15 09:25:37.812443006 -0600 -@@ -71,7 +71,7 @@ tests := tst-strtol tst-strtod testmb t - tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \ - tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ - tst-makecontext2 tst-strtod6 tst-unsetenv1 \ -- tst-makecontext3 -+ tst-makecontext3 tst-strtod-overflow - - include ../Makeconfig - -diff -Nrup a/stdlib/strtod_l.c b/stdlib/strtod_l.c ---- a/stdlib/strtod_l.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/stdlib/strtod_l.c 2012-08-15 09:34:29.550281346 -0600 -@@ -62,6 +62,7 @@ extern unsigned long long int ____strtou - #include - #include - #include -+#include - - /* The gmp headers need some configuration frobs. */ - #define HAVE_ALLOCA 1 -@@ -176,19 +177,19 @@ extern const mp_limb_t _tens_in_limb[MAX - /* Return a floating point number of the needed type according to the given - multi-precision number after possible rounding. */ - static FLOAT --round_and_return (mp_limb_t *retval, int exponent, int negative, -+round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, - mp_limb_t round_limb, mp_size_t round_bit, int more_bits) - { - if (exponent < MIN_EXP - 1) - { -- mp_size_t shift = MIN_EXP - 1 - exponent; -- -- if (shift > MANT_DIG) -+ if (exponent < MIN_EXP - 1 - MANT_DIG) - { - __set_errno (EDOM); - return 0.0; - } - -+ mp_size_t shift = MIN_EXP - 1 - exponent; -+ - more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; - if (shift == MANT_DIG) - /* This is a special case to handle the very seldom case where -@@ -235,6 +236,9 @@ round_and_return (mp_limb_t *retval, int - __set_errno (ERANGE); - } - -+ if (exponent > MAX_EXP) -+ goto overflow; -+ - if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0 - && (more_bits || (retval[0] & 1) != 0 - || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0)) -@@ -260,6 +264,7 @@ round_and_return (mp_limb_t *retval, int - } - - if (exponent > MAX_EXP) -+ overflow: - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; - - return MPN2FLOAT (retval, exponent, negative); -@@ -273,7 +278,7 @@ round_and_return (mp_limb_t *retval, int - factor for the resulting number (see code) multiply by it. */ - static const STRING_TYPE * - str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, -- int *exponent -+ intmax_t *exponent - #ifndef USE_WIDE_CHAR - , const char *decimal, size_t decimal_len, const char *thousands - #endif -@@ -337,7 +342,7 @@ str_to_mpn (const STRING_TYPE *str, int - } - while (--digcnt > 0); - -- if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB) -+ if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt) - { - low *= _tens_in_limb[*exponent]; - start = _tens_in_limb[cnt + *exponent]; -@@ -415,7 +420,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - { - int negative; /* The sign of the number. */ - MPN_VAR (num); /* MP representation of the number. */ -- int exponent; /* Exponent of the number. */ -+ intmax_t exponent; /* Exponent of the number. */ - - /* Numbers starting `0X' or `0x' have to be processed with base 16. */ - int base = 10; -@@ -437,7 +442,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* Points at the character following the integer and fractional digits. */ - const STRING_TYPE *expp; - /* Total number of digit and number of digits in integer part. */ -- int dig_no, int_no, lead_zero; -+ size_t dig_no, int_no, lead_zero; - /* Contains the last character read. */ - CHAR_TYPE c; - -@@ -769,7 +774,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - are all or any is really a fractional digit will be decided - later. */ - int_no = dig_no; -- lead_zero = int_no == 0 ? -1 : 0; -+ lead_zero = int_no == 0 ? (size_t) -1 : 0; - - /* Read the fractional digits. A special case are the 'american - style' numbers like `16.' i.e. with decimal point but without -@@ -791,12 +796,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group - (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c); - lo >= L_('a') && lo <= L_('f'); }))) - { -- if (c != L_('0') && lead_zero == -1) -+ if (c != L_('0') && lead_zero == (size_t) -1) - lead_zero = dig_no - int_no; - ++dig_no; - c = *++cp; - } - } -+ assert (dig_no <= (uintmax_t) INTMAX_MAX); - - /* Remember start of exponent (if any). */ - expp = cp; -@@ -819,24 +825,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group - - if (c >= L_('0') && c <= L_('9')) - { -- int exp_limit; -+ intmax_t exp_limit; - - /* Get the exponent limit. */ - if (base == 16) -- exp_limit = (exp_negative ? -- -MIN_EXP + MANT_DIG + 4 * int_no : -- MAX_EXP - 4 * int_no + 4 * lead_zero + 3); -+ { -+ if (exp_negative) -+ { -+ assert (int_no <= (uintmax_t) (INTMAX_MAX -+ + MIN_EXP - MANT_DIG) / 4); -+ exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX / 4); -+ exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_EXP + 3; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4); -+ exp_limit = (MAX_EXP -+ + 4 * (intmax_t) lead_zero -+ + 3); -+ } -+ } -+ } - else -- exp_limit = (exp_negative ? -- -MIN_10_EXP + MANT_DIG + int_no : -- MAX_10_EXP - int_no + lead_zero + 1); -+ { -+ if (exp_negative) -+ { -+ assert (int_no -+ <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG)); -+ exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no; -+ } -+ else -+ { -+ if (int_no) -+ { -+ assert (lead_zero == 0 -+ && int_no <= (uintmax_t) INTMAX_MAX); -+ exp_limit = MAX_10_EXP - (intmax_t) int_no + 1; -+ } -+ else if (lead_zero == (size_t) -1) -+ { -+ /* The number is zero and this limit is -+ arbitrary. */ -+ exp_limit = MAX_10_EXP + 1; -+ } -+ else -+ { -+ assert (lead_zero -+ <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1)); -+ exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1; -+ } -+ } -+ } -+ -+ if (exp_limit < 0) -+ exp_limit = 0; - - do - { -- exponent *= 10; -- exponent += c - L_('0'); -- -- if (__builtin_expect (exponent > exp_limit, 0)) -+ if (__builtin_expect ((exponent > exp_limit / 10 -+ || (exponent == exp_limit / 10 -+ && c - L_('0') > exp_limit % 10)), 0)) - /* The exponent is too large/small to represent a valid - number. */ - { -@@ -845,7 +907,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* We have to take care for special situation: a joker - might have written "0.0e100000" which is in fact - zero. */ -- if (lead_zero == -1) -+ if (lead_zero == (size_t) -1) - result = negative ? -0.0 : 0.0; - else - { -@@ -864,6 +926,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group - /* NOTREACHED */ - } - -+ exponent *= 10; -+ exponent += c - L_('0'); -+ - c = *++cp; - } - while (c >= L_('0') && c <= L_('9')); -@@ -932,7 +997,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group - } - #endif - startp += lead_zero + decimal_len; -- exponent -= base == 16 ? 4 * lead_zero : lead_zero; -+ assert (lead_zero <= (base == 16 -+ ? (uintmax_t) INTMAX_MAX / 4 -+ : (uintmax_t) INTMAX_MAX)); -+ assert (lead_zero <= (base == 16 -+ ? ((uintmax_t) exponent -+ - (uintmax_t) INTMAX_MIN) / 4 -+ : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN))); -+ exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero; - dig_no -= lead_zero; - } - -@@ -974,7 +1046,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group - } - - /* Adjust the exponent for the bits we are shifting in. */ -- exponent += bits - 1 + (int_no - 1) * 4; -+ assert (int_no <= (uintmax_t) (exponent < 0 -+ ? (INTMAX_MAX - bits + 1) / 4 -+ : (INTMAX_MAX - exponent - bits + 1) / 4)); -+ exponent += bits - 1 + ((intmax_t) int_no - 1) * 4; - - while (--dig_no > 0 && idx >= 0) - { -@@ -1014,13 +1089,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group - really integer digits or belong to the fractional part; i.e. we normalize - 123e-2 to 1.23. */ - { -- register int incr = (exponent < 0 ? MAX (-int_no, exponent) -- : MIN (dig_no - int_no, exponent)); -+ register intmax_t incr = (exponent < 0 -+ ? MAX (-(intmax_t) int_no, exponent) -+ : MIN ((intmax_t) dig_no - (intmax_t) int_no, -+ exponent)); - int_no += incr; - exponent -= incr; - } - -- if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0)) -+ if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0)) - { - __set_errno (ERANGE); - return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; -@@ -1205,7 +1282,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - digits we should have enough bits for the result. The remaining - decimal digits give us the information that more bits are following. - This can be used while rounding. (Two added as a safety margin.) */ -- if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2) -+ if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2) - { - dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2; - more_bits = 1; -@@ -1213,7 +1290,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group - else - more_bits = 0; - -- neg_exp = dig_no - int_no - exponent; -+ neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent; - - /* Construct the denominator. */ - densize = 0; -@@ -1491,7 +1568,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group - register int i; - (void) __mpn_lshift (&retval[used - / BITS_PER_MP_LIMB], -- retval, RETURN_LIMB_SIZE, -+ retval, -+ (RETURN_LIMB_SIZE -+ - used / BITS_PER_MP_LIMB), - used % BITS_PER_MP_LIMB); - for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i) - retval[i] = 0; -diff -Nrup a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c ---- a/stdlib/tst-strtod-overflow.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdlib/tst-strtod-overflow.c 2012-08-15 09:25:01.098592764 -0600 -@@ -0,0 +1,48 @@ -+/* Test for integer/buffer overflow in strtod. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+ -+#define EXPONENT "e-2147483649" -+#define SIZE 214748364 -+ -+static int -+do_test (void) -+{ -+ char *p = malloc (1 + SIZE + sizeof (EXPONENT)); -+ if (p == NULL) -+ { -+ puts ("malloc failed, cannot test for overflow"); -+ return 0; -+ } -+ p[0] = '1'; -+ memset (p + 1, '0', SIZE); -+ memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT)); -+ double d = strtod (p, NULL); -+ if (d != 0) -+ { -+ printf ("strtod returned wrong value: %a\n", d); -+ return 1; -+ } -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" diff --git a/src/patches/glibc/glibc-rh848082.patch b/src/patches/glibc/glibc-rh848082.patch deleted file mode 100644 index dfb96bfb1..000000000 --- a/src/patches/glibc/glibc-rh848082.patch +++ /dev/null @@ -1,88 +0,0 @@ -commit 4f031072a5055abd83717820b59efdaa463d5853 -Author: Ulrich Drepper -Date: Sat May 28 16:59:30 2011 -0400 - - Handle failure of _nl_explode_name in all cases - - 2011-05-28 Ulrich Drepper - - * locale/findlocale.c (_nl_find_locale): Return right away if - _nl_explode_name failed. - * locale/programs/locarchive.c (add_locale_to_archive): Likewise. - -diff --git a/locale/findlocale.c b/locale/findlocale.c -index 6b88c96..2fec9a7 100644 ---- a/locale/findlocale.c -+++ b/locale/findlocale.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996-2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. -+/* Copyright (C) 1996-2003, 2006, 2010, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - -@@ -140,6 +140,9 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len, - */ - mask = _nl_explode_name (loc_name, &language, &modifier, &territory, - &codeset, &normalized_codeset); -+ if (mask == -1) -+ /* Memory allocate problem. */ -+ return NULL; - - /* If exactly this locale was already asked for we have an entry with - the complete name. */ -diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c -index 85ba77d..e95bcf1 100644 ---- a/locale/programs/locarchive.c -+++ b/locale/programs/locarchive.c -@@ -1,4 +1,4 @@ --/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. -+/* Copyright (C) 2002,2003,2005,2007,2009,2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - -@@ -1079,6 +1079,8 @@ add_locale_to_archive (ah, name, data, replace) - int mask = _nl_explode_name (strdupa (name), - &language, &modifier, &territory, - &codeset, &normalized_codeset); -+ if (mask == -1) -+ return -1; - - if (mask & XPG_NORM_CODESET) - /* This name contains a codeset in unnormalized form. -@@ -1128,6 +1130,7 @@ add_locale_to_archive (ah, name, data, replace) - - /* Now read the locale.alias files looking for lines whose - right hand side matches our name after normalization. */ -+ int result = 0; - if (alias_file != NULL) - { - FILE *fp; -@@ -1207,6 +1210,11 @@ add_locale_to_archive (ah, name, data, replace) - &rhs_territory, - &rhs_codeset, - &rhs_normalized_codeset); -+ if (rhs_mask == 1) -+ { -+ result = -1; -+ goto out; -+ } - if (!strcmp (language, rhs_language) - && ((rhs_mask & XPG_CODESET) - /* He has a codeset, it must match normalized. */ -@@ -1240,6 +1248,7 @@ add_locale_to_archive (ah, name, data, replace) - } - } - -+ out: - fclose (fp); - } - -@@ -1248,7 +1257,7 @@ add_locale_to_archive (ah, name, data, replace) - if (mask & XPG_NORM_CODESET) - free ((char *) normalized_codeset); - -- return 0; -+ return result; - } - - diff --git a/src/patches/glibc/glibc-rh848748.patch b/src/patches/glibc/glibc-rh848748.patch deleted file mode 100644 index b75a36884..000000000 --- a/src/patches/glibc/glibc-rh848748.patch +++ /dev/null @@ -1,70 +0,0 @@ -2013-04-30 Patsy Franklin - - * nis/yp_xdr.c: Defined XDRMAXNAME and XDRMAXRECORD. - (xdr_domainname): Use XDRMAXNAME as maxsize. - (xdr_mapname): Use XDRMAXNAME as maxsize. - (xdr_peername): Use XDRMAXNAME as maxsize. - (xdr_keydat): Use XDRMAXRECORD as maxsize. - (xdr_valdat): Use XDRMAXRECORD as maxsize. - -diff -Nrup a/nis/yp_xdr.c b/nis/yp_xdr.c ---- a/nis/yp_xdr.c 2012-06-30 15:12:34.000000000 -0400 -+++ b/nis/yp_xdr.c 2013-04-30 05:36:02.492835503 -0400 -@@ -32,6 +32,14 @@ - #include - #include - -+/* The specification suggests 1024 as a maximum length of all fields, -+ but current linux systems usually don't use any limits. So, to stay -+ as much compatible as possible with recent linux systems we choose -+ limits large enough to avoid problems. */ -+ -+#define XDRMAXNAME 1024 -+#define XDRMAXRECORD 16 * 1024 * 1024 -+ - bool_t - xdr_ypstat (XDR *xdrs, ypstat *objp) - { -@@ -49,21 +57,21 @@ libnsl_hidden_def (xdr_ypxfrstat) - bool_t - xdr_domainname (XDR *xdrs, domainname *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_domainname) - - bool_t - xdr_mapname (XDR *xdrs, mapname *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_mapname) - - bool_t - xdr_peername (XDR *xdrs, peername *objp) - { -- return xdr_string (xdrs, objp, ~0); -+ return xdr_string (xdrs, objp, XDRMAXNAME); - } - libnsl_hidden_def (xdr_peername) - -@@ -71,7 +79,7 @@ bool_t - xdr_keydat (XDR *xdrs, keydat *objp) - { - return xdr_bytes (xdrs, (char **) &objp->keydat_val, -- (u_int *) &objp->keydat_len, ~0); -+ (u_int *) &objp->keydat_len, XDRMAXRECORD); - } - libnsl_hidden_def (xdr_keydat) - -@@ -79,7 +87,7 @@ bool_t - xdr_valdat (XDR *xdrs, valdat *objp) - { - return xdr_bytes (xdrs, (char **) &objp->valdat_val, -- (u_int *) &objp->valdat_len, ~0); -+ (u_int *) &objp->valdat_len, XDRMAXRECORD); - } - libnsl_hidden_def (xdr_valdat) - diff --git a/src/patches/glibc/glibc-rh849203.patch b/src/patches/glibc/glibc-rh849203.patch deleted file mode 100644 index ea5059333..000000000 --- a/src/patches/glibc/glibc-rh849203.patch +++ /dev/null @@ -1,195 +0,0 @@ -diff -Nrup a/intl/Makefile b/intl/Makefile ---- a/intl/Makefile 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/Makefile 2012-08-17 14:40:00.457226629 -0600 -@@ -74,6 +74,16 @@ ifneq (no,$(PERL)) - tests: $(objpfx)mtrace-tst-gettext - endif - endif -+ -+# Multiple tests use this data. Create it once to avoid racing and -+# spurious test failures. -+codeset_mo = $(objpfx)domaindir/de_DE/LC_MESSAGES/codeset.mo -+ -+$(codeset_mo): -+ $(make-target-directory) -+ msgfmt -o $@T tstcodeset.po -+ mv -f $@T $@ -+ - $(objpfx)mtrace-tst-gettext: $(objpfx)tst-gettext.out - $(common-objpfx)malloc/mtrace $(objpfx)tst-gettext.mtrace > $@ - $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-gettext -@@ -83,16 +93,14 @@ $(objpfx)tst-translit.out: tst-translit. - $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ - $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2 - $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ --$(objpfx)tst-codeset.out: tst-codeset.sh $(objpfx)tst-codeset -- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ --$(objpfx)tst-gettext3.out: tst-gettext3.sh $(objpfx)tst-gettext3 -- $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ - $(objpfx)tst-gettext4.out: tst-gettext4.sh $(objpfx)tst-gettext4 - $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ --$(objpfx)tst-gettext5.out: tst-gettext5.sh $(objpfx)tst-gettext5 -- $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ - $(objpfx)tst-gettext6.out: tst-gettext6.sh $(objpfx)tst-gettext6 - $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)intl/ -+ -+$(objpfx)tst-codeset.out: $(codeset_mo) -+$(objpfx)tst-gettext3.out: $(codeset_mo) -+$(objpfx)tst-gettext5.out: $(codeset_mo) - endif - endif - -@@ -109,6 +117,11 @@ CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(obj - CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\" - CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\" - -+LOCPATH-ENV = LOCPATH=$(common-objpfx)localedata -+tst-codeset-ENV = $(LOCPATH-ENV) -+tst-gettext3-ENV = $(LOCPATH-ENV) -+tst-gettext5-ENV = $(LOCPATH-ENV) -+ - ifeq ($(have-thread-library),yes) - ifeq (yes,$(build-shared)) - $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library) -diff -Nrup a/intl/tst-codeset.sh b/intl/tst-codeset.sh ---- a/intl/tst-codeset.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-codeset.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,43 +0,0 @@ --#! /bin/sh --# Test of bind_textdomain_codeset. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --objpfx=$2 -- --LC_ALL=C --export LC_ALL -- --# Generate the test data. --msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${common_objpfx}elf/ld.so --library-path $common_objpfx \ --${objpfx}tst-codeset > ${objpfx}tst-codeset.out -- --exit $? -diff -Nrup a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh ---- a/intl/tst-gettext3.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-gettext3.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,44 +0,0 @@ --#! /bin/sh --# Test that the gettext() results come out in the correct encoding for --# locales that differ only in their encoding. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --objpfx=$2 -- --LC_ALL=C --export LC_ALL -- --# Generate the test data. --msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${common_objpfx}elf/ld.so --library-path $common_objpfx \ --${objpfx}tst-gettext3 > ${objpfx}tst-gettext3.out -- --exit $? -diff -Nrup a/intl/tst-gettext5.sh b/intl/tst-gettext5.sh ---- a/intl/tst-gettext5.sh 2010-05-04 05:27:23.000000000 -0600 -+++ b/intl/tst-gettext5.sh 1969-12-31 17:00:00.000000000 -0700 -@@ -1,43 +0,0 @@ --#! /bin/sh --# Test that gettext() in multithreaded applications works correctly if --# different threads operate in different locales referring to the same --# catalog file but with different encodings. --# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. --# This file is part of the GNU C Library. --# -- --# The GNU C Library is free software; you can redistribute it and/or --# modify it under the terms of the GNU Lesser General Public --# License as published by the Free Software Foundation; either --# version 2.1 of the License, or (at your option) any later version. -- --# The GNU C Library is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --# Lesser General Public License for more details. -- --# You should have received a copy of the GNU Lesser General Public --# License along with the GNU C Library; if not, write to the Free --# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA --# 02111-1307 USA. -- --common_objpfx=$1 --run_program_prefix=$2 --objpfx=$3 -- --LC_ALL=C --export LC_ALL -- --# Create the domain directories. --mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES --# Populate them. --msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po -- --GCONV_PATH=${common_objpfx}iconvdata --export GCONV_PATH --LOCPATH=${common_objpfx}localedata --export LOCPATH -- --${run_program_prefix} ${objpfx}tst-gettext5 > ${objpfx}tst-gettext5.out -- --exit $? diff --git a/src/patches/glibc/glibc-rh849651.patch b/src/patches/glibc/glibc-rh849651.patch deleted file mode 100644 index 97a5144a9..000000000 --- a/src/patches/glibc/glibc-rh849651.patch +++ /dev/null @@ -1,343 +0,0 @@ -diff -Nrup a/sysdeps/x86_64/fpu/e_expf.S b/sysdeps/x86_64/fpu/e_expf.S ---- a/sysdeps/x86_64/fpu/e_expf.S 1969-12-31 17:00:00.000000000 -0700 -+++ b/sysdeps/x86_64/fpu/e_expf.S 2012-08-20 09:47:15.551971545 -0600 -@@ -0,0 +1,339 @@ -+/* Optimized __ieee754_expf function. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ Contributed by Intel Corporation. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+ -+/* Short algorithm description: -+ * -+ * Let K = 64 (table size). -+ * e^x = 2^(x/log(2)) = 2^n * T[j] * (1 + P(y)) -+ * where -+ * x = m*log(2)/K + y, y in [0.0..log(2)/K] -+ * m = n*K + j, m,n,j - signed integer, j in [0..K-1] -+ * values of 2^(j/K) are tabulated as T[j]. -+ * -+ * P(y) is a minimax polynomial approximation of expf(x)-1 -+ * on small interval [0.0..log(2)/K]. -+ * -+ * P(y) = P3*y*y*y*y + P2*y*y*y + P1*y*y + P0*y, calculated as -+ * z = y*y; P(y) = (P3*z + P1)*z + (P2*z + P0)*y -+ * -+ * Special cases: -+ * expf(NaN) = NaN -+ * expf(+INF) = +INF -+ * expf(-INF) = 0 -+ * expf(x) = 1 for subnormals -+ * for finite argument, only expf(0)=1 is exact -+ * expf(x) overflows if x>88.7228317260742190 -+ * expf(x) underflows if x<-103.972076416015620 -+ */ -+ -+ .text -+ENTRY(__ieee754_expf) -+ /* Input: single precision x in %xmm0 */ -+ cvtss2sd %xmm0, %xmm1 /* Convert x to double precision */ -+ movd %xmm0, %ecx /* Copy x */ -+ movsd L(DP_KLN2)(%rip), %xmm2 /* DP K/log(2) */ -+ movsd L(DP_P2)(%rip), %xmm3 /* DP P2 */ -+ movl %ecx, %eax /* x */ -+ mulsd %xmm1, %xmm2 /* DP x*K/log(2) */ -+ andl $0x7fffffff, %ecx /* |x| */ -+ lea L(DP_T)(%rip), %rsi /* address of table T[j] */ -+ cmpl $0x42ad496b, %ecx /* |x|<125*log(2) ? */ -+ movsd L(DP_P3)(%rip), %xmm4 /* DP P3 */ -+ addsd L(DP_RS)(%rip), %xmm2 /* DP x*K/log(2)+RS */ -+ jae L(special_paths) -+ -+ /* Here if |x|<125*log(2) */ -+ cmpl $0x31800000, %ecx /* |x|<2^(-28) ? */ -+ jb L(small_arg) -+ -+ /* Main path: here if 2^(-28)<=|x|<125*log(2) */ -+ cvtsd2ss %xmm2, %xmm2 /* SP x*K/log(2)+RS */ -+ movd %xmm2, %eax /* bits of n*K+j with trash */ -+ subss L(SP_RS)(%rip), %xmm2 /* SP t=round(x*K/log(2)) */ -+ movl %eax, %edx /* n*K+j with trash */ -+ cvtss2sd %xmm2, %xmm2 /* DP t */ -+ andl $0x3f, %eax /* bits of j */ -+ mulsd L(DP_NLN2K)(%rip), %xmm2/* DP -t*log(2)/K */ -+ andl $0xffffffc0, %edx /* bits of n */ -+#ifdef __AVX__ -+ vaddsd %xmm1, %xmm2, %xmm0 /* DP y=x-t*log(2)/K */ -+ vmulsd %xmm0, %xmm0, %xmm2 /* DP z=y*y */ -+#else -+ addsd %xmm1, %xmm2 /* DP y=x-t*log(2)/K */ -+ movaps %xmm2, %xmm0 /* DP y */ -+ mulsd %xmm2, %xmm2 /* DP z=y*y */ -+#endif -+ mulsd %xmm2, %xmm4 /* DP P3*z */ -+ addl $0x1fc0, %edx /* bits of n + SP exponent bias */ -+ mulsd %xmm2, %xmm3 /* DP P2*z */ -+ shll $17, %edx /* SP 2^n */ -+ addsd L(DP_P1)(%rip), %xmm4 /* DP P3*z+P1 */ -+ addsd L(DP_P0)(%rip), %xmm3 /* DP P2*z+P0 */ -+ movd %edx, %xmm1 /* SP 2^n */ -+ mulsd %xmm2, %xmm4 /* DP (P3*z+P1)*z */ -+ mulsd %xmm3, %xmm0 /* DP (P2*z+P0)*y */ -+ addsd %xmm4, %xmm0 /* DP P(y) */ -+ mulsd (%rsi,%rax,8), %xmm0 /* DP P(y)*T[j] */ -+ addsd (%rsi,%rax,8), %xmm0 /* DP T[j]*(P(y)+1) */ -+ cvtsd2ss %xmm0, %xmm0 /* SP T[j]*(P(y)+1) */ -+ mulss %xmm1, %xmm0 /* SP result=2^n*(T[j]*(P(y)+1)) */ -+ ret -+ -+ .p2align 4 -+L(small_arg): -+ /* Here if 0<=|x|<2^(-28) */ -+ addss L(SP_ONE)(%rip), %xmm0 /* 1.0 + x */ -+ /* Return 1.0 with inexact raised, except for x==0 */ -+ ret -+ -+ .p2align 4 -+L(special_paths): -+ /* Here if 125*log(2)<=|x| */ -+ shrl $31, %eax /* Get sign bit of x, and depending on it: */ -+ lea L(SP_RANGE)(%rip), %rdx /* load over/underflow bound */ -+ cmpl (%rdx,%rax,4), %ecx /* |x|under/overflow bound */ -+ cmpl $0x7f800000, %ecx /* |x| is finite ? */ -+ jae L(arg_inf_or_nan) -+ -+ /* Here if |x|>under/overflow bound, and x is finite */ -+ testq %rax, %rax /* sign of x nonzero ? */ -+ je L(res_overflow) -+ -+ /* Here if -inf0) */ -+ movss L(SP_LARGE)(%rip), %xmm0/* load large value 2^100 */ -+ mulss %xmm0, %xmm0 /* Return overflowed result (Inf or max normal) */ -+ ret -+ -+ .p2align 4 -+L(arg_inf_or_nan): -+ /* Here if |x| is Inf or NAN */ -+ jne L(arg_nan) /* |x| is Inf ? */ -+ -+ /* Here if |x| is Inf */ -+ lea L(SP_INF_0)(%rip), %rdx /* depending on sign of x: */ -+ movss (%rdx,%rax,4), %xmm0 /* return zero or Inf */ -+ ret -+ -+ .p2align 4 -+L(arg_nan): -+ /* Here if |x| is NaN */ -+ addss %xmm0, %xmm0 /* Return x+x (raise invalid) */ -+ ret -+ -+ .p2align 4 -+L(near_under_or_overflow): -+ /* Here if 125*log(2)<=|x|this bound, then result overflows */ -+ .long 0x42cff1b4 /* if x -Date: Wed Aug 29 10:03:39 2012 +0530 - - Don't make ttyname* fail if proc filesystem is not available - - The ttyname and ttyname_r functions on Linux now fall back to - searching for the tty file descriptor in /dev/pts or /dev if /proc is - not available. This allows creation of chroots without the procfs - mounted on /proc. - - Fixes BZ #14516. - - 2012-08-29 Siddhesh Poyarekar - - [BZ #14516] - * sysdeps/unix/sysv/linux/ttyname.c (ttyname): Don't return - failure if reading from procfs failed. - * sysdeps/unix/sysv/linux/ttyname_r.c (ttyname_r): Likewise. - -diff -rup a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c ---- a/sysdeps/unix/sysv/linux/ttyname.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/ttyname.c 2012-08-27 10:53:29.326671475 -0600 -@@ -146,12 +146,6 @@ ttyname (int fd) - } - - ssize_t len = __readlink (procname, ttyname_buf, buflen); -- if (__builtin_expect (len == -1 && errno == ENOENT, 0)) -- { -- __set_errno (EBADF); -- return NULL; -- } -- - if (__builtin_expect (len != -1 - #ifndef __ASSUME_PROC_SELF_FD_SYMLINK - /* This is for Linux 2.0. */ -diff -rup a/sysdeps/unix/sysv/linux/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c ---- a/sysdeps/unix/sysv/linux/ttyname_r.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/ttyname_r.c 2012-08-27 10:54:05.406528501 -0600 -@@ -126,12 +126,6 @@ __ttyname_r (int fd, char *buf, size_t b - *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0'; - - ssize_t ret = __readlink (procname, buf, buflen - 1); -- if (__builtin_expect (ret == -1 && errno == ENOENT, 0)) -- { -- __set_errno (EBADF); -- return EBADF; -- } -- - if (__builtin_expect (ret == -1 && errno == ENAMETOOLONG, 0)) - { - __set_errno (ERANGE); diff --git a/src/patches/glibc/glibc-rh852445.patch b/src/patches/glibc/glibc-rh852445.patch deleted file mode 100644 index 3c4e13f84..000000000 --- a/src/patches/glibc/glibc-rh852445.patch +++ /dev/null @@ -1,105 +0,0 @@ -From libc-alpha-return-31329-listarch-libc-alpha=sources dot redhat dot com at sourceware dot org Wed Jul 11 11:36:39 2012 -Return-Path: -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 15677 invoked by alias); 11 Jul 2012 11:36:39 -0000 -Received: (qmail 15654 invoked by uid 22791); 11 Jul 2012 11:36:37 -0000 -X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 - tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE -X-Spam-Check-By: sourceware.org -Date: Wed, 11 Jul 2012 21:06:06 +0930 -From: Alan Modra -To: libc-alpha at sourceware dot org -Cc: rsa at linux dot vnet dot ibm dot com -Subject: powerpc pthread_once bug fix -Message-ID: <20120711113606.GM3117@bubble.grove.modra.org> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.5.21 (2010-09-15) -Mailing-List: contact libc-alpha-help at sourceware dot org; run by ezmlm -Precedence: bulk -List-Id: -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner at sourceware dot org -Delivered-To: mailing list libc-alpha at sourceware dot org - -This fixes some bugs in the powerpc pthread_once code. Ref -gcc.gnu.org/bugzilla/show_bug.cgi?id=52839#c10 - -Release barriers are needed to ensure any memory written by -init_routine is seen by other threads before *once_control changes. -In the case of clear_once_control we need to flush any partially -written state. - -2012-06-28 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once): - Add release barrier before setting once_control to say - initialisation is done. Add hints on lwarx. Use macro in - place of isync. - (clear_once_control): Add release barrier. - -[ This was slightly edited -- the constraint for operand 0 in the last asm was changed - from "=&r" to "=&b" as using r0 in that context results in a load immediate 1 into - the target rather than incrementing the target. ] - -diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -index 4e3d7bd..bb1ebf2 100644 ---- a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c -@@ -28,6 +28,7 @@ clear_once_control (void *arg) - { - pthread_once_t *once_control = (pthread_once_t *) arg; - -+ __asm __volatile (__lll_rel_instr); - *once_control = 0; - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); - } -@@ -47,15 +48,15 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) - oldval = *once_control; - if ((oldval & 2) == 0) - *once_control = newval; -- Do this atomically. -+ Do this atomically with an acquire barrier. - */ - newval = __fork_generation | 1; -- __asm __volatile ("1: lwarx %0,0,%3\n" -+ __asm __volatile ("1: lwarx %0,0,%3" MUTEX_HINT_ACQ "\n" - " andi. %1,%0,2\n" - " bne 2f\n" - " stwcx. %4,0,%3\n" - " bne 1b\n" -- "2: isync" -+ "2: " __lll_acq_instr - : "=&r" (oldval), "=&r" (tmp), "=m" (*once_control) - : "r" (once_control), "r" (newval), "m" (*once_control) - : "cr0"); -@@ -87,8 +88,18 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) - pthread_cleanup_pop (0); - - -- /* Add one to *once_control to take the bottom 2 bits from 01 to 10. */ -- atomic_increment (once_control); -+ /* Add one to *once_control to take the bottom 2 bits from 01 to 10. -+ A release barrier is needed to ensure memory written by init_routine -+ is seen in other threads before *once_control changes. */ -+ int tmp; -+ __asm __volatile (__lll_rel_instr "\n" -+ "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" -+ " addi %0,%0,1\n" -+ " stwcx. %0,0,%2\n" -+ " bne- 1b" -+ : "=&b" (tmp), "=m" (*once_control) -+ : "r" (once_control), "m" (*once_control) -+ : "cr0"); - - /* Wake up all other threads. */ - lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE); - --- -Alan Modra -Australia Development Lab, IBM - diff --git a/src/patches/glibc/glibc-rh859965.patch b/src/patches/glibc/glibc-rh859965.patch deleted file mode 100644 index 8fcbcd49b..000000000 --- a/src/patches/glibc/glibc-rh859965.patch +++ /dev/null @@ -1,854 +0,0 @@ -# -# Based on the following patch: -# -# Upstream bug: https://sourceware.org/bugzilla/show_bug.cgi?id=14906 -# URL: https://sourceware.org/ml/libc-alpha/2015-02/msg00504.html -# -# 2015-02-17 Carlos O'Donell -# -# [BZ #14906] -# * nscd/cache.c (prune_cache): Use TRACED_FILE. Compare and update -# traced file mtime. Use consistent log message. -# * nscd/connections.c [HAVE_INOTIFY] (install_watches): New function. -# (register_traced_file): Call install_watches. Always set mtime. -# (invalidate_cache): Iterate over all trace files. Call install_watches. -# (inotify_check_files): Don't inline. Handle watching parent -# directories and configuration file movement in and out. -# (handle_inotify_events): New function. -# (main_loop_poll): Call handle_inotify_events. -# (main_loop_epoll): Likewise. -# * nscd/nscd.h: Define TRACED_FILE, TRACED_DIR, and PATH_MAX. -# (struct traced_file): Use array of inotify fds. Add parent directory, -# and basename. -# (struct database_dyn): Remove unused file_mtime. -# (init_traced_file): New inline function. -# (define_traced_file): New macro. -# * nss/nss_db/db-init.c: Use define_traced_file. -# (_nss_db_init): Use init_traced_file. -# * nss/nss_files/files-init.c: Use define_traced_file. -# (_nss_files_init): Use init_traced_file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/misc/sys/cdefs.h glibc-2.12-2-gc4ccff1.mod1/misc/sys/cdefs.h ---- glibc-2.12-2-gc4ccff1.orig/misc/sys/cdefs.h 2015-02-18 04:42:12.115187116 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/misc/sys/cdefs.h 2015-02-18 04:02:03.635159090 -0500 -@@ -362,6 +362,14 @@ - # endif - #endif - -+#if __GNUC__ >= 3 -+# define __glibc_unlikely(cond) __builtin_expect ((cond), 0) -+# define __glibc_likely(cond) __builtin_expect ((cond), 1) -+#else -+# define __glibc_unlikely(cond) (cond) -+# define __glibc_likely(cond) (cond) -+#endif -+ - #include - - #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/cache.c glibc-2.12-2-gc4ccff1.mod1/nscd/cache.c ---- glibc-2.12-2-gc4ccff1.orig/nscd/cache.c 2015-02-18 04:42:12.329180362 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/cache.c 2015-02-18 04:02:03.635159090 -0500 -@@ -266,29 +266,52 @@ - - /* If we check for the modification of the underlying file we invalidate - the entries also in this case. */ -- if (table->inotify_descr < 0 && table->check_file && now != LONG_MAX) -+ if (table->check_file && now != LONG_MAX) - { -- struct stat64 st; -+ struct traced_file *runp = table->traced_files; - -- if (stat64 (table->filename, &st) < 0) -+ while (runp != NULL) - { -- char buf[128]; -- /* We cannot stat() the file, disable file checking if the -- file does not exist. */ -- dbg_log (_("cannot stat() file `%s': %s"), -- table->filename, strerror_r (errno, buf, sizeof (buf))); -- if (errno == ENOENT) -- table->check_file = 0; -- } -- else -- { -- if (st.st_mtime != table->file_mtime) -+#ifdef HAVE_INOTIFY -+ if (runp->inotify_descr[TRACED_FILE] == -1) -+#endif - { -- /* The file changed. Invalidate all entries. */ -- now = LONG_MAX; -- table->file_mtime = st.st_mtime; -+ struct stat64 st; -+ -+ if (stat64 (runp->fname, &st) < 0) -+ { -+ /* Print a diagnostic that the traced file was missing. -+ We must not disable tracing since the file might return -+ shortly and we want to reload it at the next pruning. -+ Disabling tracing here would go against the configuration -+ as specified by the user via check-files. */ -+ char buf[128]; -+ dbg_log (_("checking for monitored file `%s': %s"), -+ runp->fname, strerror_r (errno, buf, sizeof (buf))); -+ } -+ else -+ { -+ /* This must be `!=` to catch cases where users turn the -+ clocks back and we still want to detect any time difference -+ in mtime. */ -+ if (st.st_mtime != runp->mtime) -+ { -+ dbg_log (_("monitored file `%s` changed (mtime)"), -+ runp->fname); -+ /* The file changed. Invalidate all entries. */ -+ now = LONG_MAX; -+ runp->mtime = st.st_mtime; -+#ifdef HAVE_INOTIFY -+ /* Attempt to install a watch on the file. */ -+ install_watches (runp); -+#endif -+ } -+ } - } -+ -+ runp = runp->next; - } -+ - } - - /* We run through the table and find values which are not valid anymore. -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/connections.c glibc-2.12-2-gc4ccff1.mod1/nscd/connections.c ---- glibc-2.12-2-gc4ccff1.orig/nscd/connections.c 2015-02-18 04:42:12.333180236 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/connections.c 2015-02-18 04:40:51.674726008 -0500 -@@ -74,6 +74,25 @@ - static void begin_drop_privileges (void); - static void finish_drop_privileges (void); - -+/* Define the traced files. */ -+#define PWD_FILENAME "/etc/passwd" -+define_traced_file (pwd, PWD_FILENAME); -+ -+#define GRP_FILENAME "/etc/group" -+define_traced_file (grp, GRP_FILENAME); -+ -+#define HST_FILENAME "/etc/hosts" -+define_traced_file (hst, HST_FILENAME); -+ -+#define RESOLV_FILENAME "/etc/resolv.conf" -+define_traced_file (resolv, RESOLV_FILENAME); -+ -+#define SERV_FILENAME "/etc/services" -+define_traced_file (serv, SERV_FILENAME); -+ -+#define NETGR_FILENAME "/etc/netgroup" -+define_traced_file (netgr, NETGR_FILENAME); -+ - /* Map request type to a string. */ - const char *const serv2str[LASTREQ] = - { -@@ -115,8 +134,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/passwd", - .db_filename = _PATH_NSCD_PASSWD_DB, - .disabled_iov = &pwd_iov_disabled, - .postimeout = 3600, -@@ -136,8 +153,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/group", - .db_filename = _PATH_NSCD_GROUP_DB, - .disabled_iov = &grp_iov_disabled, - .postimeout = 3600, -@@ -157,8 +172,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 1, -- .filename = "/etc/hosts", - .db_filename = _PATH_NSCD_HOSTS_DB, - .disabled_iov = &hst_iov_disabled, - .postimeout = 3600, -@@ -178,8 +191,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/services", - .db_filename = _PATH_NSCD_SERVICES_DB, - .disabled_iov = &serv_iov_disabled, - .postimeout = 28800, -@@ -199,8 +210,6 @@ - .shared = 0, - .max_db_size = DEFAULT_MAX_DB_SIZE, - .suggested_module = DEFAULT_SUGGESTED_MODULE, -- .reset_res = 0, -- .filename = "/etc/netgroup", - .db_filename = _PATH_NSCD_NETGROUP_DB, - .disabled_iov = &netgroup_iov_disabled, - .postimeout = 28800, -@@ -863,41 +872,26 @@ - dbs[cnt].shared = 0; - assert (dbs[cnt].ro_fd == -1); - } -+ } - -- dbs[cnt].inotify_descr = -1; -- if (dbs[cnt].check_file) -- { --#ifdef HAVE_INOTIFY -- if (inotify_fd < 0 -- || (dbs[cnt].inotify_descr -- = inotify_add_watch (inotify_fd, dbs[cnt].filename, -- IN_DELETE_SELF | IN_MODIFY)) < 0) -- /* We cannot notice changes in the main thread. */ --#endif -- { -- /* We need the modification date of the file. */ -- struct stat64 st; -+ /* Initialize and register the traced files. */ -+ init_traced_file (&pwd_traced_file.file, PWD_FILENAME, 0); -+ register_traced_file (pwddb, &pwd_traced_file.file); - -- if (stat64 (dbs[cnt].filename, &st) < 0) -- { -- /* We cannot stat() the file, disable file checking. */ -- dbg_log (_("cannot stat() file `%s': %s"), -- dbs[cnt].filename, strerror (errno)); -- dbs[cnt].check_file = 0; -- } -- else -- dbs[cnt].file_mtime = st.st_mtime; -- } -- } -+ init_traced_file (&grp_traced_file.file, GRP_FILENAME, 0); -+ register_traced_file (grpdb, &grp_traced_file.file); - --#ifdef HAVE_INOTIFY -- if (cnt == hstdb && inotify_fd >= -1) -- /* We also monitor the resolver configuration file. */ -- resolv_conf_descr = inotify_add_watch (inotify_fd, -- _PATH_RESCONF, -- IN_DELETE_SELF | IN_MODIFY); --#endif -- } -+ init_traced_file (&hst_traced_file.file, HST_FILENAME, 0); -+ register_traced_file (hstdb, &hst_traced_file.file); -+ -+ init_traced_file (&resolv_traced_file.file, RESOLV_FILENAME, 1); -+ register_traced_file (hstdb, &resolv_traced_file.file); -+ -+ init_traced_file (&serv_traced_file.file, SERV_FILENAME, 0); -+ register_traced_file (servdb, &serv_traced_file.file); -+ -+ init_traced_file (&netgr_traced_file.file, NETGR_FILENAME, 0); -+ register_traced_file (netgrdb, &netgr_traced_file.file); - - /* Create the socket. */ - #ifndef __ASSUME_SOCK_CLOEXEC -@@ -968,6 +962,92 @@ - finish_drop_privileges (); - } - -+#ifdef HAVE_INOTIFY -+#define TRACED_FILE_MASK (IN_DELETE_SELF | IN_CLOSE_WRITE | IN_MOVE_SELF) -+#define TRACED_DIR_MASK (IN_DELETE_SELF | IN_CREATE | IN_MOVED_TO | IN_MOVE_SELF) -+void -+install_watches (struct traced_file *finfo) -+{ -+ /* If we have inotify support use it exclusively with no fallback -+ to stat. This is a design decision to make the implementation -+ sipmler. Either we use fstat for the file name or we use inotify -+ for both the file and parent directory. */ -+ if (finfo->inotify_descr[TRACED_FILE] < 0) -+ finfo->inotify_descr[TRACED_FILE] = inotify_add_watch (inotify_fd, -+ finfo->fname, -+ TRACED_FILE_MASK); -+ if (finfo->inotify_descr[TRACED_FILE] < 0) -+ { -+ dbg_log (_("disabled inotify-based monitoring for file `%s': %s"), -+ finfo->fname, strerror (errno)); -+ return; -+ } -+ dbg_log (_("monitoring file `%s` (%d)"), -+ finfo->fname, finfo->inotify_descr[TRACED_FILE]); -+ /* Additionally listen for IN_CREATE events in the files parent -+ directory. We do this because the file to be watched might be -+ deleted and then added back again. When it is added back again -+ we must re-add the watch. We must also cover IN_MOVED_TO to -+ detect a file being moved into the directory. */ -+ if (finfo->inotify_descr[TRACED_DIR] < 0) -+ finfo->inotify_descr[TRACED_DIR] = inotify_add_watch (inotify_fd, -+ finfo->dname, -+ TRACED_DIR_MASK); -+ if (finfo->inotify_descr[TRACED_DIR] < 0) -+ { -+ dbg_log (_("disabled inotify-based monitoring for directory `%s': %s"), -+ finfo->fname, strerror (errno)); -+ return; -+ } -+ dbg_log (_("monitoring directory `%s` (%d)"), -+ finfo->dname, finfo->inotify_descr[TRACED_DIR]); -+} -+#endif -+ -+/* Register the file in FINFO as a traced file for the database DBS[DBIX]. -+ -+ We support registering multiple files per database. Each call to -+ register_traced_file adds to the list of registered files. -+ -+ When we prune the database, either through timeout or a request to -+ invalidate, we will check to see if any of the registered files has changed. -+ When we accept new connections to handle a cache request we will also -+ check to see if any of the registered files has changed. -+ -+ If we have inotify support then we install an inotify fd to notify us of -+ file deletion or modification, both of which will require we invalidate -+ the cache for the database. Without inotify support we stat the file and -+ store st_mtime to determine if the file has been modified. */ -+void -+register_traced_file (size_t dbidx, struct traced_file *finfo) -+{ -+ /* If the database is disabled or file checking is disabled -+ then ignore the registration. */ -+ if (! dbs[dbidx].enabled || ! dbs[dbidx].check_file) -+ return; -+ -+ if (__glibc_unlikely (debug_level > 0)) -+ dbg_log (_("monitoring file %s for database %s"), -+ finfo->fname, dbnames[dbidx]); -+ -+#ifdef HAVE_INOTIFY -+ install_watches (finfo); -+#endif -+ struct stat64 st; -+ if (stat64 (finfo->fname, &st) < 0) -+ { -+ /* We cannot stat() the file, disable file checking. */ -+ dbg_log (_("disabled monitoring for file `%s': %s"), -+ finfo->fname, strerror (errno)); -+ finfo->mtime = 0; -+ } -+ else -+ finfo->mtime = st.st_mtime; -+ -+ /* Queue up the file name. */ -+ finfo->next = dbs[dbidx].traced_files; -+ dbs[dbidx].traced_files = finfo; -+} - - /* Close the connections. */ - void -@@ -986,9 +1066,25 @@ - for (number = pwddb; number < lastdb; ++number) - if (strcmp (key, dbnames[number]) == 0) - { -- if (dbs[number].reset_res) -- res_init (); -- -+ struct traced_file *runp = dbs[number].traced_files; -+ while (runp != NULL) -+ { -+ /* Make sure we reload from file when checking mtime. */ -+ runp->mtime = 0; -+#ifdef HAVE_INOTIFY -+ /* During an invalidation we try to reload the traced -+ file watches. This allows the user to re-sync if -+ inotify events were lost. Similar to what we do during -+ pruning. */ -+ install_watches (runp); -+#endif -+ if (runp->call_res_init) -+ { -+ res_init (); -+ break; -+ } -+ runp = runp->next; -+ } - break; - } - -@@ -1817,6 +1913,231 @@ - /* Array for times a connection was accepted. */ - static time_t *starttime; - -+#ifdef HAVE_INOTIFY -+/* Inotify event for changed file. */ -+union __inev -+{ -+ struct inotify_event i; -+# ifndef PATH_MAX -+# define PATH_MAX 1024 -+# endif -+ char buf[sizeof (struct inotify_event) + PATH_MAX]; -+}; -+ -+/* Returns 0 if the file is there and matches the last mtime -+ on record, otherwise -1. */ -+int -+check_file (struct traced_file *finfo) -+{ -+ struct stat64 st; -+ if (stat64 (finfo->fname, &st) < 0) -+ return -1; -+ return 0; -+} -+ -+/* Process the inotify event in INEV. If the event matches any of the files -+ registered with a database then mark that database as requiring its cache -+ to be cleared. We indicate the cache needs clearing by setting -+ TO_CLEAR[DBCNT] to true for the matching database. */ -+static void -+inotify_check_files (bool *to_clear, union __inev *inev) -+{ -+ /* Check which of the files changed. */ -+ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -+ { -+ struct traced_file *finfo = dbs[dbcnt].traced_files; -+ -+ while (finfo != NULL) -+ { -+ /* The configuration file was moved or deleted. -+ We stop watching it at that point, and reinitialize. */ -+ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd -+ && ((inev->i.mask & IN_MOVE_SELF) -+ || (inev->i.mask & IN_DELETE_SELF) -+ || (inev->i.mask & IN_IGNORED))) -+ { -+ int ret; -+ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; -+ -+ if (check_file (finfo) == 0) -+ { -+ dbg_log (_("ignored out of order inotify event for `%s`"), -+ finfo->fname); -+ return; -+ } -+ -+ dbg_log (_("monitored file `%s` was %s, removing watch"), -+ finfo->fname, moved ? "moved" : "deleted"); -+ /* File was moved out, remove the watch. Watches are -+ automatically removed when the file is deleted. */ -+ if (moved) -+ { -+ ret = inotify_rm_watch (inotify_fd, inev->i.wd); -+ if (ret < 0) -+ dbg_log (_("failed to remove file watch `%s`: %s"), -+ finfo->fname, strerror (errno)); -+ } -+ finfo->inotify_descr[TRACED_FILE] = -1; -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ return; -+ } -+ /* The configuration file was open for writing and has just closed. -+ We reset the cache and reinitialize. */ -+ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd -+ && inev->i.mask & IN_CLOSE_WRITE) -+ { -+ /* Mark cache as needing to be cleared and reinitialize. */ -+ dbg_log (_("monitored file `%s` was written to"), finfo->fname); -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ return; -+ } -+ /* The parent directory was moved or deleted. There is no coming -+ back from this. We do not track the parent of the parent, and -+ once this happens we trigger one last invalidation. You must -+ restart nscd to track subsequent changes. We track this to -+ do one last robust re-initialization and then we're done. */ -+ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd -+ && ((inev->i.mask & IN_DELETE_SELF) -+ || (inev->i.mask & IN_MOVE_SELF) -+ || (inev->i.mask & IN_IGNORED))) -+ { -+ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; -+ /* The directory watch may have already been removed -+ but we don't know so we just remove it again and -+ ignore the error. Then we remove the file watch. -+ Note: watches are automatically removed for deleted -+ files. */ -+ if (moved) -+ inotify_rm_watch (inotify_fd, inev->i.wd); -+ if (finfo->inotify_descr[TRACED_FILE] != -1) -+ { -+ dbg_log (_("monitored parent directory `%s` was %s, removing watch on `%s`"), -+ finfo->dname, moved ? "moved" : "deleted", finfo->fname); -+ if (inotify_rm_watch (inotify_fd, finfo->inotify_descr[TRACED_FILE]) < 0) -+ dbg_log (_("failed to remove file watch `%s`: %s"), -+ finfo->dname, strerror (errno)); -+ } -+ finfo->inotify_descr[TRACED_FILE] = -1; -+ finfo->inotify_descr[TRACED_DIR] = -1; -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ /* Continue to the next entry since this might be the -+ parent directory for multiple registered files and -+ we want to remove watches for all registered files. */ -+ continue; -+ } -+ /* The parent directory had a create or moved to event. */ -+ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd -+ && ((inev->i.mask & IN_MOVED_TO) -+ || (inev->i.mask & IN_CREATE)) -+ && strcmp (inev->i.name, finfo->sfname) == 0) -+ { -+ /* We detected a directory change. We look for the creation -+ of the file we are tracking or the move of the same file -+ into the directory. */ -+ int ret; -+ dbg_log (_("monitored file `%s` was %s, adding watch"), -+ finfo->fname, -+ inev->i.mask & IN_CREATE ? "created" : "moved into place"); -+ /* File was moved in or created. Regenerate the watch. */ -+ if (finfo->inotify_descr[TRACED_FILE] != -1) -+ inotify_rm_watch (inotify_fd, -+ finfo->inotify_descr[TRACED_FILE]); -+ -+ ret = inotify_add_watch (inotify_fd, -+ finfo->fname, -+ TRACED_FILE_MASK); -+ if (ret < 0) -+ dbg_log (_("failed to add file watch `%s`: %s"), -+ finfo->fname, strerror (errno)); -+ -+ finfo->inotify_descr[TRACED_FILE] = ret; -+ -+ /* The file is new or moved so mark cache as needing to -+ be cleared and reinitialize. */ -+ to_clear[dbcnt] = true; -+ if (finfo->call_res_init) -+ res_init (); -+ -+ /* Done re-adding the watch. Don't return, we may still -+ have other files in this same directory, same watch -+ descriptor, and need to process them. */ -+ } -+ /* Other events are ignored, and we move on to the next file. */ -+ finfo = finfo->next; -+ } -+ } -+} -+ -+/* If an entry in the array of booleans TO_CLEAR is TRUE then clear the cache -+ for the associated database, otherwise do nothing. The TO_CLEAR array must -+ have LASTDB entries. */ -+static inline void -+clear_db_cache (bool *to_clear) -+{ -+ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -+ if (to_clear[dbcnt]) -+ { -+ pthread_mutex_lock (&dbs[dbcnt].prune_lock); -+ dbs[dbcnt].clear_cache = 1; -+ pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -+ pthread_cond_signal (&dbs[dbcnt].prune_cond); -+ } -+} -+ -+int -+handle_inotify_events (void) -+{ -+ bool to_clear[lastdb] = { false, }; -+ union __inev inev; -+ -+ /* Read all inotify events for files registered via -+ register_traced_file(). */ -+ while (1) -+ { -+ /* Potentially read multiple events into buf. */ -+ ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, -+ &inev.buf, -+ sizeof (inev))); -+ if (nb < (ssize_t) sizeof (struct inotify_event)) -+ { -+ /* Not even 1 event. */ -+ if (__glibc_unlikely (nb == -1 && errno != EAGAIN)) -+ return -1; -+ /* Done reading events that are ready. */ -+ break; -+ } -+ /* Process all events. The normal inotify interface delivers -+ complete events on a read and never a partial event. */ -+ char *eptr = &inev.buf[0]; -+ ssize_t count; -+ while (1) -+ { -+ /* Check which of the files changed. */ -+ inotify_check_files (to_clear, &inev); -+ count = sizeof (struct inotify_event) + inev.i.len; -+ eptr += count; -+ nb -= count; -+ if (nb >= (ssize_t) sizeof (struct inotify_event)) -+ memcpy (&inev, eptr, nb); -+ else -+ break; -+ } -+ continue; -+ } -+ /* Actually perform the cache clearing. */ -+ clear_db_cache (to_clear); -+ return 0; -+} -+ -+ -+#endif -+ - - static void - __attribute__ ((__noreturn__)) -@@ -1910,66 +2231,21 @@ - { - if (conns[1].revents != 0) - { -- bool to_clear[lastdb] = { false, }; -- union -- { --# ifndef PATH_MAX --# define PATH_MAX 1024 --# endif -- struct inotify_event i; -- char buf[sizeof (struct inotify_event) + PATH_MAX]; -- } inev; -+ int ret; -+ ret = handle_inotify_events (); - -- while (1) -+ if (ret == -1) - { -- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, -- sizeof (inev))); -- if (nb < (ssize_t) sizeof (struct inotify_event)) -- { -- if (__builtin_expect (nb == -1 && errno != EAGAIN, -- 0)) -- { -- /* Something went wrong when reading the inotify -- data. Better disable inotify. */ -- dbg_log (_("\ --disabled inotify after read error %d"), -- errno); -- conns[1].fd = -1; -- firstfree = 1; -- if (nused == 2) -- nused = 1; -- close (inotify_fd); -- inotify_fd = -1; -- } -- break; -- } -- -- /* Check which of the files changed. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (inev.i.wd == dbs[dbcnt].inotify_descr) -- { -- to_clear[dbcnt] = true; -- goto next; -- } -- -- if (inev.i.wd == resolv_conf_descr) -- { -- res_init (); -- to_clear[hstdb] = true; -- } -- next:; -+ /* Something went wrong when reading the inotify -+ data. Better disable inotify. */ -+ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); -+ conns[1].fd = -1; -+ firstfree = 1; -+ if (nused == 2) -+ nused = 1; -+ close (inotify_fd); -+ inotify_fd = -1; - } -- -- /* Actually perform the cache clearing. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (to_clear[dbcnt]) -- { -- pthread_mutex_lock (&dbs[dbcnt].prune_lock); -- dbs[dbcnt].clear_cache = 1; -- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -- pthread_cond_signal (&dbs[dbcnt].prune_cond); -- } -- - --n; - } - -@@ -2112,58 +2388,18 @@ - # ifdef HAVE_INOTIFY - else if (revs[cnt].data.fd == inotify_fd) - { -- bool to_clear[lastdb] = { false, }; -- union -- { -- struct inotify_event i; -- char buf[sizeof (struct inotify_event) + PATH_MAX]; -- } inev; -- -- while (1) -+ int ret; -+ ret = handle_inotify_events (); -+ if (ret == -1) - { -- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, -- sizeof (inev))); -- if (nb < (ssize_t) sizeof (struct inotify_event)) -- { -- if (__builtin_expect (nb == -1 && errno != EAGAIN, 0)) -- { -- /* Something went wrong when reading the inotify -- data. Better disable inotify. */ -- dbg_log (_("disabled inotify after read error %d"), -- errno); -- (void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd, -- NULL); -- close (inotify_fd); -- inotify_fd = -1; -- } -- break; -- } -- -- /* Check which of the files changed. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (inev.i.wd == dbs[dbcnt].inotify_descr) -- { -- to_clear[dbcnt] = true; -- goto next; -- } -- -- if (inev.i.wd == resolv_conf_descr) -- { -- res_init (); -- to_clear[hstdb] = true; -- } -- next:; -+ /* Something went wrong when reading the inotify -+ data. Better disable inotify. */ -+ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); -+ (void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd, NULL); -+ close (inotify_fd); -+ inotify_fd = -1; -+ break; - } -- -- /* Actually perform the cache clearing. */ -- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) -- if (to_clear[dbcnt]) -- { -- pthread_mutex_lock (&dbs[dbcnt].prune_lock); -- dbs[dbcnt].clear_cache = 1; -- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); -- pthread_cond_signal (&dbs[dbcnt].prune_cond); -- } - } - # endif - else -diff -urN glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h glibc-2.12-2-gc4ccff1.mod1/nscd/nscd.h ---- glibc-2.12-2-gc4ccff1.orig/nscd/nscd.h 2015-02-18 04:42:12.329180362 -0500 -+++ glibc-2.12-2-gc4ccff1.mod1/nscd/nscd.h 2015-02-18 04:02:03.636159059 -0500 -@@ -62,6 +62,67 @@ - 80% of the thread stack size. */ - #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10) - -+/* Records the file registered per database that when changed -+ or modified requires invalidating the database. */ -+struct traced_file -+{ -+ /* Tracks the last modified time of the traced file. */ -+ time_t mtime; -+ /* Support multiple registered files per database. */ -+ struct traced_file *next; -+ int call_res_init; -+ /* Requires Inotify support to do anything useful. */ -+#define TRACED_FILE 0 -+#define TRACED_DIR 1 -+ int inotify_descr[2]; -+# ifndef PATH_MAX -+# define PATH_MAX 1024 -+# endif -+ /* The parent directory is used to scan for creation/deletion. */ -+ char dname[PATH_MAX]; -+ /* Just the name of the file with no directory component. */ -+ char *sfname; -+ /* The full-path name of the registered file. */ -+ char fname[]; -+}; -+ -+/* Initialize a `struct traced_file`. As input we need the name -+ of the file, and if invalidation requires calling res_init. -+ If CRINIT is 1 then res_init will be called after invalidation -+ or if the traced file is changed in any way, otherwise it will -+ not. */ -+static inline void -+init_traced_file(struct traced_file *file, const char *fname, int crinit) -+{ -+ char *dname; -+ file->mtime = 0; -+ file->inotify_descr[TRACED_FILE] = -1; -+ file->inotify_descr[TRACED_DIR] = -1; -+ strcpy (file->fname, fname); -+ /* Compute the parent directory name and store a copy. The copy makes -+ it much faster to add/remove watches while nscd is running instead -+ of computing this over and over again in a temp buffer. */ -+ file->dname[0] = '\0'; -+ dname = strrchr (fname, '/'); -+ if (dname != NULL) -+ { -+ size_t len = (size_t)(dname - fname); -+ if (len > sizeof (file->dname)) -+ abort (); -+ strncpy (file->dname, file->fname, len); -+ file->dname[len] = '\0'; -+ } -+ /* The basename is the name just after the last forward slash. */ -+ file->sfname = &dname[1]; -+ file->call_res_init = crinit; -+} -+ -+#define define_traced_file(id, filename) \ -+static union \ -+{ \ -+ struct traced_file file; \ -+ char buf[sizeof (struct traced_file) + sizeof (filename)]; \ -+} id##_traced_file; - - /* Structure describing dynamic part of one database. */ - struct database_dyn -@@ -74,15 +135,12 @@ - - int enabled; - int check_file; -- int inotify_descr; - int clear_cache; - int persistent; - int shared; - int propagate; -- int reset_res; -- const char filename[16]; -+ struct traced_file *traced_files; - const char *db_filename; -- time_t file_mtime; - size_t suggested_module; - size_t max_db_size; - -@@ -199,6 +257,10 @@ - - /* connections.c */ - extern void nscd_init (void); -+extern void register_traced_file (size_t dbidx, struct traced_file *finfo); -+#ifdef HAVE_INOTIFY -+extern void install_watches (struct traced_file *finfo); -+#endif - extern void close_sockets (void); - extern void start_threads (void) __attribute__ ((__noreturn__)); diff --git a/src/patches/glibc/glibc-rh861167.patch b/src/patches/glibc/glibc-rh861167.patch deleted file mode 100644 index d7e982f75..000000000 --- a/src/patches/glibc/glibc-rh861167.patch +++ /dev/null @@ -1,86 +0,0 @@ -commit be08eda54c7cf833ccfa4b8d1f1b1d668c26af66 -Author: Andreas Jaeger -Date: Wed May 23 09:27:39 2012 +0200 - - Update from Linux 3.4 - -[ Partial, unrelated bits not included. ] - -2012-05-23 Andreas Jaeger - - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): New macros from Linux 3.4. - macro. - * sysdeps/unix/sysv/linux/s390/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - * sysdeps/unix/sysv/linux/i386/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h - (MADV_DONTDUMP,MADV_DODUMP): Likewise. - -diff -Nrup a/sysdeps/unix/sysv/linux/i386/bits/mman.h b/sysdeps/unix/sysv/linux/i386/bits/mman.h ---- a/sysdeps/unix/sysv/linux/i386/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/i386/bits/mman.h 2012-09-27 11:44:26.985150148 -0600 -@@ -1,5 +1,5 @@ - /* Definitions for POSIX memory map interface. Linux/i386 version. -- Copyright (C) 1997,2000,2003,2005,2006,2009 Free Software Foundation, Inc. -+ Copyright (C) 1997-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -94,6 +94,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h ---- a/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2012-09-27 11:43:37.161351259 -0600 -@@ -96,6 +96,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/s390/bits/mman.h b/sysdeps/unix/sysv/linux/s390/bits/mman.h ---- a/sysdeps/unix/sysv/linux/s390/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/s390/bits/mman.h 2012-09-27 11:44:49.745059646 -0600 -@@ -94,6 +94,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - -diff -Nrup a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h ---- a/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2012-09-27 11:42:08.314725733 -0600 -@@ -1,5 +1,5 @@ - /* Definitions for POSIX memory map interface. Linux/x86_64 version. -- Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2001-2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -95,6 +95,9 @@ - # define MADV_DOFORK 11 /* Do inherit across fork. */ - # define MADV_MERGEABLE 12 /* KSM may merge identical pages. */ - # define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages. */ -+# define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, -+ overrides the coredump filter bits. */ -+# define MADV_DODUMP 17 /* Clear the MADV_DONTDUMP flag. */ - # define MADV_HWPOISON 100 /* Poison a page for testing. */ - #endif - diff --git a/src/patches/glibc/glibc-rh862094.patch b/src/patches/glibc/glibc-rh862094.patch deleted file mode 100644 index 6e7fe0af1..000000000 --- a/src/patches/glibc/glibc-rh862094.patch +++ /dev/null @@ -1,68 +0,0 @@ -From bc5fb0374c3ce6eca92f44d13a55b066e707c4a0 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Wed, 15 Sep 2010 07:20:57 -0700 -Subject: [PATCH] Don't try to free rpath strings allocated during startup - ---- - ChangeLog | 10 ++++++++++ - elf/dl-load.c | 3 --- - elf/dl-support.c | 3 +++ - elf/rtld.c | 4 ++++ - 4 files changed, 17 insertions(+), 3 deletions(-) - - 2010-09-13 Andreas Schwab - Ulrich Drepper - - * elf/rtld.c (dl_main): Set GLRO(dl_init_all_dirs) just before - re-relocationg ld.so. - * elf/dl-support.c (_dl_non_dynamic_init): And here after the - _dl_init_paths call. - * elf/dl-load.c (_dl_init_paths). Don't set GLRO(dl_init_all_dirs) - here anymore. - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 0adddf5..a7162eb 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -787,9 +787,6 @@ _dl_init_paths (const char *llp) - } - else - env_path_list.dirs = (void *) -1; -- -- /* Remember the last search directory added at startup. */ -- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); - } - - -diff --git a/elf/dl-support.c b/elf/dl-support.c -index f94d2c4..5897b32 100644 ---- a/elf/dl-support.c -+++ b/elf/dl-support.c -@@ -264,6 +264,9 @@ _dl_non_dynamic_init (void) - objects. */ - _dl_init_paths (getenv ("LD_LIBRARY_PATH")); - -+ /* Remember the last search directory added at startup. */ -+ _dl_init_all_dirs = GL(dl_all_dirs); -+ - _dl_lazy = *(getenv ("LD_BIND_NOW") ?: "") == '\0'; - - _dl_bind_not = *(getenv ("LD_BIND_NOT") ?: "") != '\0'; -diff --git a/elf/rtld.c b/elf/rtld.c -index 90f3ff1..5ecc4fe 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2291,6 +2291,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lossage); - } - -+ /* Remember the last search directory added at startup, now that -+ malloc will no longer be the one from dl-minimal.c. */ -+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ - if (! prelinked && rtld_multiple_ref) - { - /* There was an explicit ref to the dynamic linker as a shared lib. --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh863384.patch b/src/patches/glibc/glibc-rh863384.patch deleted file mode 100644 index 7644a4ed1..000000000 --- a/src/patches/glibc/glibc-rh863384.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c glibc-2.12-2-gc4ccff1.fixed/sysdeps/posix/getaddrinfo.c ---- glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c 2013-07-23 15:23:42.011941780 +0530 -+++ glibc-2.12-2-gc4ccff1.fixed/sysdeps/posix/getaddrinfo.c 2013-07-23 15:24:54.032938976 +0530 -@@ -562,8 +562,8 @@ gaih_inet (const char *name, const struc - - /* If we do not have to look for IPv6 addresses, use - the simple, old functions, which do not support -- IPv6 scope ids. */ -- if (req->ai_family == AF_INET) -+ IPv6 scope ids, nor retrieving the canonical name. */ -+ if (req->ai_family == AF_INET && (req->ai_flags & AI_CANONNAME) == 0) - { - /* Add room for struct host_data in resolv/nss_dns/dns-host.c */ - size_t tmpbuflen = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*) diff --git a/src/patches/glibc/glibc-rh863453.patch b/src/patches/glibc/glibc-rh863453.patch deleted file mode 100644 index 96fb769a8..000000000 --- a/src/patches/glibc/glibc-rh863453.patch +++ /dev/null @@ -1,81 +0,0 @@ ---- glibc-2.12-2-gc4ccff1/nscd/grpcache.c.lrgrpissue 2002-03-19 01:06:04.905969517 +0530 -+++ glibc-2.12-2-gc4ccff1/nscd/grpcache.c 2002-03-19 01:09:46.495970850 +0530 -@@ -207,10 +207,11 @@ cache_addgr (struct database_dyn *db, in - change. Allocate memory on the cache since it is likely - discarded anyway. If it turns out to be necessary to have a - new record we can still allocate real memory. */ -- bool dataset_in_stack_or_freed = false; -+ bool dataset_temporary = false; -+ bool dataset_malloced = false; - dataset = NULL; - -- if (he == NULL || ! __libc_use_alloca (alloca_used + total + n)) -+ if (he == NULL) - dataset = (struct dataset *) mempool_alloc (db, total + n, 1); - - if (dataset == NULL) -@@ -218,10 +219,16 @@ cache_addgr (struct database_dyn *db, in - /* We cannot permanently add the result in the moment. But - we can provide the result as is. Store the data in some - temporary memory. */ -- dataset = (struct dataset *) alloca_account (total + n, alloca_used); -- -+ if (! __libc_use_alloca (alloca_used + total + n)) -+ { -+ /* XXX What to do if malloc fails? */ -+ dataset = (struct dataset *) malloc (total + n); -+ dataset_malloced = true; -+ } -+ else -+ dataset = (struct dataset *) alloca_account (total + n, alloca_used); - /* We cannot add this record to the permanent database. */ -- dataset_in_stack_or_freed = true; -+ dataset_temporary = true; - } - - dataset->head.allocsize = total + n; -@@ -276,13 +283,10 @@ cache_addgr (struct database_dyn *db, in - dh->timeout = dataset->head.timeout; - ++dh->nreloads; - -- /* If the new record was not allocated on the stack, then it must -- be freed. Note that it can no longer be used. */ -- if (! dataset_in_stack_or_freed) -- { -- free (dataset); -- dataset_in_stack_or_freed = true; -- } -+ /* If the new record was allocated via malloc, then we -+ must free it here. */ -+ if (dataset_malloced) -+ free (dataset); - } - else - { -@@ -298,7 +302,7 @@ cache_addgr (struct database_dyn *db, in - key_copy = (char *) newp + (key_copy - (char *) dataset); - - dataset = memcpy (newp, dataset, total + n); -- dataset_in_stack_or_freed = false; -+ dataset_temporary = false; - } - - /* Mark the old record as obsolete. */ -@@ -313,7 +317,7 @@ cache_addgr (struct database_dyn *db, in - assert (fd != -1); - - #ifdef HAVE_SENDFILE -- if (__builtin_expect (db->mmap_used, 1) && !dataset_in_stack_or_freed) -+ if (__builtin_expect (db->mmap_used, 1) && ! dataset_temporary) - { - assert (db->wr_fd != -1); - assert ((char *) &dataset->resp > (char *) db->data); -@@ -340,7 +344,7 @@ cache_addgr (struct database_dyn *db, in - - /* Add the record to the database. But only if it has not been - stored on the stack. */ -- if (! dataset_in_stack_or_freed) -+ if (! dataset_temporary) - { - /* If necessary, we also propagate the data to disk. */ - if (db->persistent) diff --git a/src/patches/glibc/glibc-rh864322.patch b/src/patches/glibc/glibc-rh864322.patch deleted file mode 100644 index 565a14619..000000000 --- a/src/patches/glibc/glibc-rh864322.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h ---- a/sysdeps/generic/netinet/ip.h 2010-05-04 05:27:23.000000000 -0600 -+++ b/sysdeps/generic/netinet/ip.h 2012-10-11 09:22:12.620160387 -0600 -@@ -194,7 +194,7 @@ struct ip_timestamp - */ - - #define IPTOS_CLASS_MASK 0xe0 --#define IPTOS_CLASS(class) ((tos) & IPTOS_CLASS_MASK) -+#define IPTOS_CLASS(class) ((class) & IPTOS_CLASS_MASK) - #define IPTOS_CLASS_CS0 0x00 - #define IPTOS_CLASS_CS1 0x20 - #define IPTOS_CLASS_CS2 0x40 diff --git a/src/patches/glibc/glibc-rh867679.patch b/src/patches/glibc/glibc-rh867679.patch deleted file mode 100644 index 3e823c86e..000000000 --- a/src/patches/glibc/glibc-rh867679.patch +++ /dev/null @@ -1,139 +0,0 @@ -commit 9fab36eb583c0e585e83a01253299afed9ea9a11 -Author: Siddhesh Poyarekar -Date: Tue Sep 25 14:10:29 2012 +0530 - - Shrink heap on linux when overcommit_memory == 2 - - Using madvise with MADV_DONTNEED to release memory back to the kernel - is not sufficient to change the commit charge accounted against the - process on Linux. It is OK however, when overcommit is enabled or is - heuristic. However, when overcommit is restricted to a percentage of - memory setting the contents of /proc/sys/vm/overcommit_memory as 2, it - makes a difference since memory requests will fail. Hence, we do what - we do with secure exec binaries, which is to call mmap on the region - to be dropped with MAP_FIXED. This internally unmaps the pages in - question and reduces the amount of memory accounted against the - process. - -diff --git a/malloc/arena.c b/malloc/arena.c -index f24e76c..b209e3b 100644 ---- a/malloc/arena.c -+++ b/malloc/arena.c -@@ -19,6 +19,9 @@ - - #include - -+/* Get the implementation for check_may_shrink_heap. */ -+#include -+ - /* Compile-time constants. */ - - #define HEAP_MIN_SIZE (32*1024) -@@ -621,10 +624,10 @@ shrink_heap(heap_info *h, long diff) - new_size = (long)h->size - diff; - if(new_size < (long)sizeof(*h)) - return -1; -- /* Try to re-map the extra heap space freshly to save memory, and -- make it inaccessible. */ - #ifdef _LIBC -- if (__builtin_expect (__libc_enable_secure, 0)) -+ /* Try to re-map the extra heap space freshly to save memory, and make it -+ inaccessible. See malloc-sysdep.h to know when this is true. */ -+ if (__builtin_expect (check_may_shrink_heap (), 0)) - #else - if (1) - #endif -diff --git a/sysdeps/generic/malloc-sysdep.h b/sysdeps/generic/malloc-sysdep.h -new file mode 100644 -index 0000000..bbc48c0 ---- /dev/null -+++ b/sysdeps/generic/malloc-sysdep.h -@@ -0,0 +1,25 @@ -+/* System-specific malloc support functions. Generic version. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+/* Force an unmap when the heap shrinks in a secure exec. This ensures that -+ the old data pages immediately cease to be accessible. */ -+static inline bool -+check_may_shrink_heap (void) -+{ -+ return __libc_enable_secure; -+} -diff --git a/sysdeps/unix/sysv/linux/malloc-sysdep.h b/sysdeps/unix/sysv/linux/malloc-sysdep.h -new file mode 100644 -index 0000000..f926aea ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/malloc-sysdep.h -@@ -0,0 +1,57 @@ -+/* System-specific malloc support functions. Linux version. -+ Copyright (C) 2012 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+ -+/* The Linux kernel overcommits address space by default and if there is not -+ enough memory available, it uses various parameters to decide the process to -+ kill. It is however possible to disable or curb this overcommit behavior -+ by setting the proc sysctl vm.overcommit_memory to the value '2' and with -+ that, a process is only allowed to use the maximum of a pre-determined -+ fraction of the total address space. In such a case, we want to make sure -+ that we are judicious with our heap usage as well, and explicitly give away -+ the freed top of the heap to reduce our commit charge. See the proc(5) man -+ page to know more about overcommit behavior. -+ -+ Other than that, we also force an unmap in a secure exec. */ -+static inline bool -+check_may_shrink_heap (void) -+{ -+ static int may_shrink_heap = -1; -+ -+ if (__builtin_expect (may_shrink_heap >= 0, 1)) -+ return may_shrink_heap; -+ -+ may_shrink_heap = __libc_enable_secure; -+ -+ if (__builtin_expect (may_shrink_heap == 0, 1)) -+ { -+ int fd = open_not_cancel_2 ("/proc/sys/vm/overcommit_memory", -+ O_RDONLY | O_CLOEXEC); -+ if (fd >= 0) -+ { -+ char val; -+ ssize_t n = read_not_cancel (fd, &val, 1); -+ may_shrink_heap = n > 0 && val == '2'; -+ close_not_cancel_no_status (fd); -+ } -+ } -+ -+ return may_shrink_heap; -+} diff --git a/src/patches/glibc/glibc-rh868808.patch b/src/patches/glibc/glibc-rh868808.patch deleted file mode 100644 index 27a10b23b..000000000 --- a/src/patches/glibc/glibc-rh868808.patch +++ /dev/null @@ -1,99 +0,0 @@ -From d6f67f7d833b4e2039f832355fb0edd65522c9f4 Mon Sep 17 00:00:00 2001 -From: Ulrich Drepper -Date: Sat, 14 May 2011 10:46:17 -0400 -Subject: [PATCH] Handle recursive calls in backtrace better - ---- - ChangeLog | 7 +++++++ - NEWS | 12 ++++++------ - sysdeps/ia64/backtrace.c | 27 +++++++++++++++++++++++---- - 3 files changed, 36 insertions(+), 10 deletions(-) - - 2011-05-14 Ulrich Drepper - - [BZ #12432] - * sysdeps/ia64/backtrace.c (struct trace_reg): Add cfa element. - (dummy_getcfa): New function. - (init): Get _Unwind_GetCFA address, use dummy if not found. - (backtrace_helper): In recursion check, also check whether CFA changes. - (__backtrace): Completely initialize arg. - -diff --git a/sysdeps/ia64/backtrace.c b/sysdeps/ia64/backtrace.c -index 5cefb86..d4ff291 100644 ---- a/sysdeps/ia64/backtrace.c -+++ b/sysdeps/ia64/backtrace.c -@@ -1,5 +1,5 @@ - /* Return backtrace of current program state. -- Copyright (C) 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -+ Copyright (C) 2003-2005, 2007, 2009, 2011 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - -@@ -27,14 +27,26 @@ - struct trace_arg - { - void **array; -- int cnt, size; -+ _Unwind_Word cfa; -+ int cnt; -+ int size; - }; - - #ifdef SHARED - static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *); - static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *); -+static _Unwind_Word (*unwind_getcfa) (struct _Unwind_Context *); - static void *libgcc_handle; - -+ -+/* Dummy version in case libgcc_s does not contain the real code. */ -+static _Unwind_Word -+dummy_getcfa (struct _Unwind_Context *ctx __attribute__ ((unused))) -+{ -+ return 0; -+} -+ -+ - static void - init (void) - { -@@ -47,10 +59,13 @@ init (void) - unwind_getip = __libc_dlsym (libgcc_handle, "_Unwind_GetIP"); - if (unwind_getip == NULL) - unwind_backtrace = NULL; -+ unwind_getcfa = (__libc_dlsym (libgcc_handle, "_Unwind_GetCFA") -+ ?: dummy_getcfa); - } - #else - # define unwind_backtrace _Unwind_Backtrace - # define unwind_getip _Unwind_GetIP -+# define unwind_getcfa _Unwind_GetCFA - #endif - - static _Unwind_Reason_Code -@@ -65,8 +80,12 @@ backtrace_helper (struct _Unwind_Context *ctx, void *a) - arg->array[arg->cnt] = (void *) unwind_getip (ctx); - - /* Check whether we make any progress. */ -- if (arg->cnt > 0 && arg->array[arg->cnt - 1] == arg->array[arg->cnt]) -+ _Unwind_Word cfa = unwind_getcfa (ctx); -+ -+ if (arg->cnt > 0 && arg->array[arg->cnt - 1] == arg->array[arg->cnt] -+ && cfa == arg->cfa) - return _URC_END_OF_STACK; -+ arg->cfa = cfa; - } - if (++arg->cnt == arg->size) - return _URC_END_OF_STACK; -@@ -78,7 +97,7 @@ __backtrace (array, size) - void **array; - int size; - { -- struct trace_arg arg = { .array = array, .size = size, .cnt = -1 }; -+ struct trace_arg arg = { .array = array, .cfa = 0, .size = size, .cnt = -1 }; - #ifdef SHARED - __libc_once_define (static, once); - --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh886968.patch b/src/patches/glibc/glibc-rh886968.patch deleted file mode 100644 index 4872a91fc..000000000 --- a/src/patches/glibc/glibc-rh886968.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -Nrup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2013-01-10 08:57:20.098898830 -0500 -+++ b/elf/dl-load.c 2013-01-10 12:04:48.155962895 -0500 -@@ -819,7 +819,7 @@ lose (int code, int fd, const char *name - { - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -- LIBC_PROBE (rtld_map_complete, 2, nsid, r); -+ LIBC_PROBE (rtld_map_complete, 3, nsid, r, NULL); - } - - _dl_signal_error (code, name, NULL, msg); -diff -Nrup a/elf/dl-open.c b/elf/dl-open.c ---- a/elf/dl-open.c 2013-01-10 08:57:19.917897417 -0500 -+++ b/elf/dl-open.c 2013-01-10 12:06:04.644775710 -0500 -@@ -298,7 +298,7 @@ dl_open_worker (void *a) - struct r_debug *r = _dl_debug_initialize (0, args->nsid); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); -- LIBC_PROBE (rtld_map_complete, 2, args->nsid, r); -+ LIBC_PROBE (rtld_map_complete, 3, args->nsid, r, new); - - /* Only do lazy relocation if `LD_BIND_NOW' is not set. */ - int reloc_mode = mode & __RTLD_AUDIT; -@@ -472,7 +472,7 @@ TLS generation counter wrapped! Please - - /* Notify the debugger all new objects have been relocated. */ - if (relocation_in_progress) -- LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r); -+ LIBC_PROBE (rtld_reloc_complete, 3, args->nsid, r, new); - - /* Run the initializer functions of new objects. */ - _dl_init (new, args->argc, args->argv, args->env); diff --git a/src/patches/glibc/glibc-rh905575.patch b/src/patches/glibc/glibc-rh905575.patch deleted file mode 100644 index 70baa8931..000000000 --- a/src/patches/glibc/glibc-rh905575.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff -rup a/sysdeps/ieee754/dbl-64/slowexp.c b/sysdeps/ieee754/dbl-64/slowexp.c ---- a/sysdeps/ieee754/dbl-64/slowexp.c 2012-01-01 05:16:32.000000000 -0700 -+++ b/sysdeps/ieee754/dbl-64/slowexp.c 2012-03-13 11:57:51.225330782 -0600 -@@ -31,6 +31,8 @@ - #include "mpa.h" - #include "math_private.h" - -+#include -+ - void __mpexp(mp_no *x, mp_no *y, int p); - - /*Converting from double precision to Multi-precision and calculating e^x */ -@@ -61,12 +63,21 @@ __slowexp(double x) { - __sub(&mpy,&mpcor,&mpz,p); - __mp_dbl(&mpw, &w, p); - __mp_dbl(&mpz, &z, p); -- if (w == z) return w; -+ if (w == z) { -+ /* Track how often we get to the slow exp code plus -+ its input/output values. */ -+ LIBC_PROBE (slowexp_p6, 2, &x, &w); -+ return w; -+ } - else { /* if calculating is not exactly */ - p = 32; - __dbl_mp(x,&mpx,p); - __mpexp(&mpx, &mpy, p); - __mp_dbl(&mpy, &res, p); -+ -+ /* Track how often we get to the uber-slow exp code plus -+ its input/output values. */ -+ LIBC_PROBE (slowexp_p32, 2, &x, &res); - return res; - } - } -diff -rup a/sysdeps/ieee754/dbl-64/slowpow.c b/sysdeps/ieee754/dbl-64/slowpow.c ---- a/sysdeps/ieee754/dbl-64/slowpow.c 2012-01-01 05:16:32.000000000 -0700 -+++ b/sysdeps/ieee754/dbl-64/slowpow.c 2012-03-13 11:57:59.865284437 -0600 -@@ -35,6 +35,8 @@ - #include "mpa.h" - #include "math_private.h" - -+#include -+ - void __mpexp(mp_no *x, mp_no *y, int p); - void __mplog(mp_no *x, mp_no *y, int p); - double ulog(double); -@@ -66,7 +68,12 @@ __slowpow(double x, double y, double z) - __mp_dbl(&mpr, &res, p); - __sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ - __mp_dbl(&mpr1, &res1, p); /* converting into double precision */ -- if (res == res1) return res; -+ if (res == res1) { -+ /* Track how often we get to the slow pow code plus -+ its input/output values. */ -+ LIBC_PROBE (slowpow_p10, 4, &x, &y, &z, &res); -+ return res; -+ } - - p = 32; /* if we get here result wasn't calculated exactly, continue */ - __dbl_mp(x,&mpx,p); /* for more exact calculation */ -@@ -76,5 +83,10 @@ __slowpow(double x, double y, double z) - __mul(&mpy,&mpz,&mpw,p); /* y*z =w */ - __mpexp(&mpw, &mpp, p); /* e^w=pp */ - __mp_dbl(&mpp, &res, p); /* converting into double precision */ -+ -+ /* Track how often we get to the uber-slow pow code plus -+ its input/output values. */ -+ LIBC_PROBE (slowpow_p32, 4, &x, &y, &z, &res); -+ - return res; - } diff --git a/src/patches/glibc/glibc-rh905874.patch b/src/patches/glibc/glibc-rh905874.patch deleted file mode 100644 index 1d9ea109a..000000000 --- a/src/patches/glibc/glibc-rh905874.patch +++ /dev/null @@ -1,174 +0,0 @@ -# -# Backported from upstream. -# -# - Add en_US.UTF-8 as pre-requisite for regression test: -# -# commit 62c4a69dc2aea24776cbf0e951d41709a7408cc6 -# Author: Joseph Myers -# Date: Thu Nov 1 00:22:04 2012 +0000 -# -# Build en_US.UTF-8 locale for testing. -# -# - Fix buffer overrun: -# -# commit a445af0bc722d620afed7683cd320c0e4c7c6059 -# Author: Andreas Schwab -# Date: Tue Jan 29 14:45:15 2013 +0100 -# -# Fix buffer overrun in regexp matcher -# -# ChangeLog/ -# 2013-02-12 Andreas Schwab -# -# [BZ #15078] -# * posix/regexec.c (extend_buffers): Add parameter min_len. -# (check_matching): Pass minimum needed length. -# (clean_state_log_if_needed): Likewise. -# (get_subexp): Likewise. -# * posix/Makefile (tests): Add bug-regex34. -# (bug-regex34-ENV): Define. -# * posix/bug-regex34.c: New file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/localedata/Makefile glibc-2.12-2-gc4ccff1/localedata/Makefile ---- glibc-2.12-2-gc4ccff1.orig/localedata/Makefile 2013-07-24 20:40:37.364888120 -0400 -+++ glibc-2.12-2-gc4ccff1/localedata/Makefile 2013-07-24 20:59:54.713289753 -0400 -@@ -133,7 +133,7 @@ - ifeq (no,$(cross-compiling)) - # We have to generate locales - LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \ -- en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \ -+ en_US.ISO-8859-1 en_US.UTF-8 ja_JP.EUC-JP da_DK.ISO-8859-1 \ - hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \ - vi_VN.TCVN5712-1 nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 \ - tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 \ -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c glibc-2.12-2-gc4ccff1/posix/bug-regex34.c ---- glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/posix/bug-regex34.c 2013-07-24 20:59:54.713289753 -0400 -@@ -0,0 +1,46 @@ -+/* Test re_search with multi-byte characters in UTF-8. -+ Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#define _GNU_SOURCE 1 -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ struct re_pattern_buffer r; -+ /* ကျွန်ုပ်x */ -+ const char *s = "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax"; -+ -+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) -+ { -+ puts ("setlocale failed"); -+ return 1; -+ } -+ memset (&r, 0, sizeof (r)); -+ -+ re_compile_pattern ("[^x]x", 5, &r); -+ /* This was triggering a buffer overflow. */ -+ re_search (&r, s, strlen (s), 0, strlen (s), 0); -+ return 0; -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/Makefile glibc-2.12-2-gc4ccff1/posix/Makefile ---- glibc-2.12-2-gc4ccff1.orig/posix/Makefile 2013-07-24 20:40:37.399888098 -0400 -+++ glibc-2.12-2-gc4ccff1/posix/Makefile 2013-07-24 21:00:43.267265979 -0400 -@@ -94,7 +94,7 @@ - tst-rfc3484-3 \ - tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \ - bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \ -- bug-getopt5 -+ bug-getopt5 bug-regex34 - xtests := bug-ga2 - ifeq (yes,$(build-shared)) - test-srcs := globtest -@@ -199,6 +199,7 @@ - bug-regex25-ENV = LOCPATH=$(common-objpfx)localedata - bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata - bug-regex30-ENV = LOCPATH=$(common-objpfx)localedata -+bug-regex34-ENV = LOCPATH=$(common-objpfx)localedata - tst-rxspencer-ARGS = --utf8 rxspencer/tests - tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata - tst-pcre-ARGS = PCRE.tests -diff -urN glibc-2.12-2-gc4ccff1.orig/posix/regexec.c glibc-2.12-2-gc4ccff1/posix/regexec.c ---- glibc-2.12-2-gc4ccff1.orig/posix/regexec.c 2013-07-24 20:40:37.396888100 -0400 -+++ glibc-2.12-2-gc4ccff1/posix/regexec.c 2013-07-24 21:02:53.005156187 -0400 -@@ -198,7 +198,7 @@ - static int check_node_accept (const re_match_context_t *mctx, - const re_token_t *node, int idx) - internal_function; --static reg_errcode_t extend_buffers (re_match_context_t *mctx) -+static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len) - internal_function; - - /* Entry point for POSIX code. */ -@@ -1160,7 +1160,7 @@ - || (BE (next_char_idx >= mctx->input.valid_len, 0) - && mctx->input.valid_len < mctx->input.len)) - { -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, next_char_idx + 1); - if (BE (err != REG_NOERROR, 0)) - { - assert (err == REG_ESPACE); -@@ -1737,7 +1737,7 @@ - && mctx->input.valid_len < mctx->input.len)) - { - reg_errcode_t err; -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, next_state_log_idx + 1); - if (BE (err != REG_NOERROR, 0)) - return err; - } -@@ -2791,7 +2791,7 @@ - if (bkref_str_off >= mctx->input.len) - break; - -- err = extend_buffers (mctx); -+ err = extend_buffers (mctx, bkref_str_off + 1); - if (BE (err != REG_NOERROR, 0)) - return err; - -@@ -4099,7 +4099,7 @@ - - static reg_errcode_t - internal_function __attribute_warn_unused_result__ --extend_buffers (re_match_context_t *mctx) -+extend_buffers (re_match_context_t *mctx, int min_len) - { - reg_errcode_t ret; - re_string_t *pstr = &mctx->input; -@@ -4108,8 +4108,10 @@ - if (BE (INT_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0)) - return REG_ESPACE; - -- /* Double the lengthes of the buffers. */ -- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2); -+ /* Double the lengthes of the buffers, but allocate at least MIN_LEN. */ -+ ret = re_string_realloc_buffers (pstr, -+ MAX (min_len, -+ MIN (pstr->len, pstr->bufs_len * 2))); - if (BE (ret != REG_NOERROR, 0)) - return ret; - diff --git a/src/patches/glibc/glibc-rh905941.patch b/src/patches/glibc/glibc-rh905941.patch deleted file mode 100644 index d5d50f25b..000000000 --- a/src/patches/glibc/glibc-rh905941.patch +++ /dev/null @@ -1,146 +0,0 @@ -diff -pruN a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c ---- a/nptl/sysdeps/pthread/unwind-forcedunwind.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-06-02 23:00:02.901013275 +0530 -@@ -45,8 +45,10 @@ pthread_cancel_init (void) - - if (__builtin_expect (libgcc_s_handle != NULL, 1)) - { -- /* Force gcc to reload all values. */ -- asm volatile ("" ::: "memory"); -+ /* Order reads so as to prevent speculation of loads -+ of libgcc_s_{resume,personality,forcedunwind,getcfa} -+ to points prior to the write barrier. */ -+ atomic_read_barrier (); - return; - } - -@@ -72,9 +74,14 @@ pthread_cancel_init (void) - libgcc_s_forcedunwind = forcedunwind; - PTR_MANGLE (getcfa); - libgcc_s_getcfa = getcfa; -- /* Make sure libgcc_s_handle is written last. Otherwise, -- pthread_cancel_init might return early even when the pointer the -- caller is interested in is not initialized yet. */ -+ /* At the point at which any thread writes the handle -+ to libgcc_s_handle, the initialization is complete. -+ The writing of libgcc_s_handle is atomic. All other -+ threads reading libgcc_s_handle do so atomically. Any -+ thread that does not execute this function must issue -+ a read barrier to ensure that all of the above has -+ actually completed and that the values of the -+ function pointers are correct. */ - atomic_write_barrier (); - libgcc_s_handle = handle; - } -@@ -91,11 +98,19 @@ __unwind_freeres (void) - } - } - --void --_Unwind_Resume (struct _Unwind_Exception *exc) -+static __always_inline void -+_maybe_pthread_cancel_init (void) - { - if (__builtin_expect (libgcc_s_handle == NULL, 0)) - pthread_cancel_init (); -+ else -+ atomic_read_barrier (); -+} -+ -+void -+_Unwind_Resume (struct _Unwind_Exception *exc) -+{ -+ _maybe_pthread_cancel_init (); - - void (*resume) (struct _Unwind_Exception *exc) = libgcc_s_resume; - PTR_DEMANGLE (resume); -@@ -108,8 +123,7 @@ __gcc_personality_v0 (int version, _Unwi - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Reason_Code (*personality) - (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, -@@ -122,8 +136,7 @@ _Unwind_Reason_Code - _Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop, - void *stop_argument) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Reason_Code (*forcedunwind) - (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *) -@@ -135,8 +148,7 @@ _Unwind_ForcedUnwind (struct _Unwind_Exc - _Unwind_Word - _Unwind_GetCFA (struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_handle == NULL, 0)) -- pthread_cancel_init (); -+ _maybe_pthread_cancel_init (); - - _Unwind_Word (*getcfa) (struct _Unwind_Context *) = libgcc_s_getcfa; - PTR_DEMANGLE (getcfa); -diff -pruN a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c ---- a/sysdeps/gnu/unwind-resume.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/sysdeps/gnu/unwind-resume.c 2014-06-02 23:02:26.812007078 +0530 -@@ -20,8 +20,11 @@ - #include - #include - #include -+#include -+#include - #include - -+static void *libgcc_s_handle; - static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); - static _Unwind_Reason_Code (*libgcc_s_personality) - (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, -@@ -42,13 +45,32 @@ init (void) - - libgcc_s_resume = resume; - libgcc_s_personality = personality; -+ atomic_write_barrier (); -+ /* At the point at which any thread writes the handle -+ to libgcc_s_handle, the initialization is complete. -+ The writing of libgcc_s_handle is atomic. All other -+ threads reading libgcc_s_handle do so atomically. Any -+ thread that does not execute this function must issue -+ a read barrier to ensure that all of the above has -+ actually completed and that the values of the -+ function pointers are correct. */ -+ libgcc_s_handle = handle; - } - -+static __always_inline void -+_maybe_init (void) -+{ -+ if (__builtin_expect (libgcc_s_handle == NULL, 0)) -+ init (); -+ else -+ atomic_read_barrier (); -+} -+ -+ - void - _Unwind_Resume (struct _Unwind_Exception *exc) - { -- if (__builtin_expect (libgcc_s_resume == NULL, 0)) -- init (); -+ _maybe_init (); - libgcc_s_resume (exc); - } - -@@ -58,8 +80,7 @@ __gcc_personality_v0 (int version, _Unwi - struct _Unwind_Exception *ue_header, - struct _Unwind_Context *context) - { -- if (__builtin_expect (libgcc_s_personality == NULL, 0)) -- init (); -+ _maybe_init (); - return libgcc_s_personality (version, actions, exception_class, - ue_header, context); - } diff --git a/src/patches/glibc/glibc-rh916986.patch b/src/patches/glibc/glibc-rh916986.patch deleted file mode 100644 index 9bed61f90..000000000 --- a/src/patches/glibc/glibc-rh916986.patch +++ /dev/null @@ -1,123 +0,0 @@ -commit cf7c9078a5acdbb435498ace92cd81009637a971 -Author: Ulrich Drepper -Date: Fri Nov 19 09:35:39 2010 -0500 - - Define MAP_HUGETLB. - - * sysdeps/unix/sysv/linux/i386/bits/mman.h: Define MAP_HUGETLB. - * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise. - -commit dd62fda6cc83b3afa150a4be7d273ab118bf9825 -Author: Anton Blanchard -Date: Tue Mar 27 18:37:16 2012 -0700 - - Define MAP_STACK and MAP_HUGETLB on powerpc, s390, sh and sparc. - - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Define MAP_STACK and - MAP_HUGETLB. - * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. - -commit 7e4fc5890e07549e5ad98b4244e3e0ed5c709e6a -Author: Mike Frysinger -Date: Mon Apr 16 22:44:23 2012 -0400 - - ia64: add MAP_{STACK,HUGETLB} to bits/mman.h - - Just adding new bit flags that newer kernels define. - - Signed-off-by: Mike Frysinger - - * sysdeps/unix/sysv/linux/ia64/bits/mman.h (MAP_STACK): Define. - (MAP_HUGETLB): Likewise. - -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2013-07-23 04:01:42.440052942 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2013-07-23 22:26:42.317789260 -0300 -@@ -65,6 +65,8 @@ - # define MAP_NORESERVE 0x00040 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/mman.h 2013-07-23 04:01:42.447052393 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h 2013-07-23 22:26:42.335787833 -0300 -@@ -64,6 +64,8 @@ - # define MAP_NORESERVE 0x04000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sh/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h 2013-07-23 22:26:42.336787753 -0300 -@@ -64,6 +64,8 @@ - # define MAP_NORESERVE 0x4000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sparc/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h 2013-07-23 22:26:42.337787674 -0300 -@@ -66,6 +66,8 @@ - # define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */ - # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/bits/mman.h 2013-07-23 04:01:42.406055607 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h 2013-07-23 22:32:37.407630135 -0300 -@@ -64,6 +64,7 @@ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ - # define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2013-07-23 04:01:42.493048788 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2013-07-23 22:32:37.433628073 -0300 -@@ -65,6 +65,7 @@ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ - # define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ -Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2013-07-23 22:37:28.643530951 -0300 -@@ -65,6 +65,8 @@ - # define MAP_NORESERVE 0x04000 /* Don't check for reservations. */ - # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ - # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */ -+# define MAP_STACK 0x20000 /* Allocation is for a stack. */ -+# define MAP_HUGETLB 0x40000 /* Create huge page mapping. */ - #endif - - /* Flags to `msync'. */ diff --git a/src/patches/glibc/glibc-rh919562.patch b/src/patches/glibc/glibc-rh919562.patch deleted file mode 100644 index 42aa819fd..000000000 --- a/src/patches/glibc/glibc-rh919562.patch +++ /dev/null @@ -1,190 +0,0 @@ -# -# Patch provided by Ulrich Drepper in BZ#919562. -# -# Patch has not been sent upstream. -# -# 2013-03-08 Ulrich Drepper -# -# * elf/rtld.c (dl_main): Correctly determine when the application -# required DSOs with TLS and bump the generation counter in that -# case. The current condition does not account for an audit -# module using TLS. -# * elf/dl-tls.c (_dl_count_modids): New function. -# (_dl_allocate_tls_init): Add assertion to check TLS -# generation. -# * sysdeps/generic/ldsodefs.h: Declare _dl_count_modids. -# * elf/Makefile: Add rules to build and run tst-audit9. -# * elf/tst-audit9.c: New file. -# * elf/tst-auditmod9a.c: New file. -# * elf/tst-auditmod9b.c: New file. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c glibc-2.12-2-gc4ccff1/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2013-04-24 16:06:49.092604707 -0400 -@@ -109,6 +109,28 @@ - } - - -+size_t -+internal_function -+_dl_count_modids (void) -+{ -+ if (! __builtin_expect (GL(dl_tls_dtv_gaps), true)) -+ return GL(dl_tls_max_dtv_idx); -+ -+ size_t n = 0; -+ struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list); -+ while (runp != NULL) -+ { -+ for (size_t i = 0; i < runp->len; ++i) -+ if (runp->slotinfo[i].map != NULL) -+ ++n; -+ -+ runp = runp->next; -+ } -+ -+ return n; -+} -+ -+ - #ifdef SHARED - void - internal_function -@@ -411,6 +433,7 @@ - - /* Keep track of the maximum generation number. This might - not be the generation counter. */ -+ assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation)); - maxgen = MAX (maxgen, listp->slotinfo[cnt].gen); - - if (map->l_tls_offset == NO_TLS_OFFSET -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/Makefile glibc-2.12-2-gc4ccff1/elf/Makefile ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile 2013-04-24 16:06:10.408756448 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/Makefile 2013-04-24 16:07:29.475457962 -0400 -@@ -97,6 +97,8 @@ - tst-audit6.c tst-auditmod6a.c tst-auditmod6b.c \ - tst-auditmod6c.c \ - tst-audit7.c tst-auditmod7a.c tst-auditmod7b.c \ -+ tst-audit9.c \ -+ tst-auditmod9a.c tst-auditmod9b.c \ - order2mod1.c order2mod2.c order2mod3.c order2mod4.c \ - tst-stackguard1.c tst-stackguard1-static.c \ - tst-array5.c tst-array5-static.c tst-array5dep.c \ -@@ -198,7 +200,7 @@ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ - unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ -- tst-audit1 tst-audit2 \ -+ tst-audit1 tst-audit2 tst-audit9 \ - tst-stackguard1 tst-addr1 tst-thrlock \ - tst-unique1 tst-unique2 - # reldep9 -@@ -251,7 +253,8 @@ - unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ - order2mod1 order2mod2 order2mod3 order2mod4 \ - tst-unique1mod1 tst-unique1mod2 \ -- tst-unique2mod1 tst-unique2mod2 -+ tst-unique2mod1 tst-unique2mod2 \ -+ tst-auditmod9a tst-auditmod9b - ifeq (yes,$(have-initfini-array)) - modules-names += tst-array2dep tst-array5dep - endif -@@ -574,6 +577,8 @@ - ifuncmod1.so-no-z-defs = yes - ifuncmod5.so-no-z-defs = yes - ifuncmod6.so-no-z-defs = yes -+tst-auditmod9a.so-no-z-defs = yes -+tst-auditmod9b.so-no-z-defs = yes - - ifeq ($(build-shared),yes) - # Build all the modules even when not actually running test programs. -@@ -1015,6 +1020,10 @@ - $(objpfx)tst-audit7.out: $(objpfx)tst-auditmod7b.so - tst-audit7-ENV = LD_AUDIT=$(objpfx)tst-auditmod7b.so - -+$(objpfx)tst-audit9: $(libdl) -+$(objpfx)tst-audit9.out: $(objpfx)tst-auditmod9a.so $(objpfx)tst-auditmod9b.so -+tst-audit9-ENV = LD_AUDIT=$(objpfx)tst-auditmod9a.so -+ - $(objpfx)tst-global1: $(libdl) - $(objpfx)tst-global1.out: $(objpfx)testobj6.so $(objpfx)testobj2.so - -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/rtld.c glibc-2.12-2-gc4ccff1/elf/rtld.c ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c 2013-04-24 16:06:49.096604693 -0400 -@@ -1637,6 +1637,10 @@ - } - } - -+ /* Keep track of the currently loaded modules to count how many -+ non-audit modules which use TLS are loaded. */ -+ size_t count_modids = _dl_count_modids (); -+ - /* Set up debugging before the debugger is notified for the first time. */ - #ifdef ELF_MACHINE_DEBUG_SETUP - /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ -@@ -2281,7 +2285,8 @@ - # define NONTLS_INIT_TP do { } while (0) - #endif - -- if (!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0) -+ if ((!was_tls_init_tp_called && GL(dl_tls_max_dtv_idx) > 0) -+ || count_modids != _dl_count_modids ()) - ++GL(dl_tls_generation); - - /* Now that we have completed relocation, the initializer data -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c glibc-2.12-2-gc4ccff1/elf/tst-audit9.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit9.c 2013-04-24 16:06:49.096604693 -0400 -@@ -0,0 +1,8 @@ -+#include -+ -+int main(void) -+{ -+ void *h = dlopen("$ORIGIN/tst-auditmod9b.so", RTLD_LAZY); -+ int (*fp)(void) = dlsym(h, "f"); -+ return fp() - 1; -+} -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c 2013-04-24 16:06:49.097604689 -0400 -@@ -0,0 +1,16 @@ -+#include -+ -+__thread int var; -+ -+unsigned int -+la_version (unsigned int v) -+{ -+ return v; -+} -+ -+void -+la_activity (uintptr_t *cookie, unsigned int flag) -+{ -+ ++var; -+} -+ -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c 2013-04-24 16:06:49.097604689 -0400 -@@ -0,0 +1,6 @@ -+__thread int a; -+ -+int f(void) -+{ -+ return ++a; -+} -diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:10.545755798 -0400 -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:49.098604686 -0400 -@@ -1031,6 +1031,9 @@ - /* Determine next available module ID. */ - extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden; - -+/* Count the modules with TLS segments. */ -+extern size_t _dl_count_modids (void) internal_function attribute_hidden; -+ - /* Calculate offset of the TLS blocks in the static TLS block. */ - extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden; - diff --git a/src/patches/glibc/glibc-rh928318.patch b/src/patches/glibc/glibc-rh928318.patch deleted file mode 100644 index 36aa19a6d..000000000 --- a/src/patches/glibc/glibc-rh928318.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/resolv/res_init.c b/resolv/res_init.c -index 40dbe7d..202569d 100644 ---- a/resolv/res_init.c -+++ b/resolv/res_init.c -@@ -176,13 +176,6 @@ __res_vinit(res_state statp, int preinit) { - statp->id = res_randomid(); - } - --#ifdef USELOOPBACK -- statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); --#else -- statp->nsaddr.sin_addr.s_addr = INADDR_ANY; --#endif -- statp->nsaddr.sin_family = AF_INET; -- statp->nsaddr.sin_port = htons(NAMESERVER_PORT); - statp->nscount = 0; - statp->ndots = 1; - statp->pfcode = 0; -@@ -433,6 +426,12 @@ __res_vinit(res_state statp, int preinit) { - #endif - (void) fclose(fp); - } -+ if (__builtin_expect(statp->nscount == 0, 0)) { -+ statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); -+ statp->nsaddr.sin_family = AF_INET; -+ statp->nsaddr.sin_port = htons(NAMESERVER_PORT); -+ statp->nscount = 1; -+ } - if (statp->defdname[0] == 0 && - __gethostname(buf, sizeof(statp->defdname) - 1) == 0 && - (cp = strchr(buf, '.')) != NULL) diff --git a/src/patches/glibc/glibc-rh929302.patch b/src/patches/glibc/glibc-rh929302.patch deleted file mode 100644 index 305b339c0..000000000 --- a/src/patches/glibc/glibc-rh929302.patch +++ /dev/null @@ -1,98 +0,0 @@ -From decadad73858bc108828eed5540c7955dc2a977b Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella -Date: Fri, 7 Jun 2013 14:44:58 -0500 -Subject: [PATCH 1/2] PowerPC: Change sched_getcpu to use vDSO getcpu instead of syscall. - -Backport of d5e0b9bd6e296f3ec5263fa296d39f3fed9b8fa2 from master. ---- - sysdeps/unix/sysv/linux/powerpc/Versions | 1 + - sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h | 2 + - sysdeps/unix/sysv/linux/powerpc/init-first.c | 3 ++ - sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c | 30 ++++++++++++++++++++++ - 4 files changed, 36 insertions(+), 0 deletions(-) - create mode 100644 sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c - -diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions -index 1ef53b9..396a423 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/Versions -@@ -3,5 +3,6 @@ libc { - __vdso_get_tbfreq; - __vdso_clock_gettime; - __vdso_clock_getres; -+ __vdso_getcpu; - } - } -diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -index 746d9ce..c3026d5 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -@@ -31,6 +31,8 @@ extern void *__vdso_clock_getres; - - extern void *__vdso_get_tbfreq; - -+extern void *__vdso_getcpu; -+ - #endif - - #endif /* _LIBC_VDSO_H */ -diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c -index 92dacc7..cfed655 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/init-first.c -+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c -@@ -27,6 +27,7 @@ void *__vdso_gettimeofday attribute_hidden; - void *__vdso_clock_gettime; - void *__vdso_clock_getres; - void *__vdso_get_tbfreq; -+void *__vdso_getcpu; - - - static inline void -@@ -41,6 +42,8 @@ _libc_vdso_platform_setup (void) - __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615); - - __vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_vdso_get_tbfreq", &linux2615); -+ -+ __vdso_getcpu = _dl_vdso_vsym ("__kernel_getcpu", &linux2615); - } - - # define VDSO_SETUP _libc_vdso_platform_setup -diff --git a/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c b/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c -new file mode 100644 -index 0000000..617e6f1 ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c -@@ -0,0 +1,30 @@ -+/* Copyright (C) 2013 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+ -+ -+int -+sched_getcpu (void) -+{ -+ unsigned int cpu; -+ int r = INLINE_VSYSCALL (getcpu, 3, &cpu, NULL, NULL); -+ -+ return r == -1 ? r : cpu; -+} --- -1.7.1 - diff --git a/src/patches/glibc/glibc-rh929388.patch b/src/patches/glibc/glibc-rh929388.patch deleted file mode 100644 index 44ddd17f2..000000000 --- a/src/patches/glibc/glibc-rh929388.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -pruN glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h ---- glibc-2.5-20061008T1257/sysdeps/x86_64/fpu/math_private.h 2013-02-12 07:05:08.000000000 -0500 -+++ glibc-2.5-20061008T1257.patched/sysdeps/x86_64/fpu/math_private.h 2013-02-12 06:59:08.000000000 -0500 -@@ -90,10 +90,14 @@ while (0) - #undef libc_feupdateenv - #define libc_feupdateenv(e) \ - do { \ -- unsigned int mxcsr; \ -+ unsigned int mxcsr, new_mxcsr; \ - asm volatile ("stmxcsr %0" : "=m" (*&mxcsr)); \ -- asm volatile ("ldmxcsr %0" : : "m" ((e)->__mxcsr)); \ -- feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ -+ /* Merge in the old exceptions. */ \ -+ new_mxcsr = mxcsr & FE_ALL_EXCEPT | (e)->__mxcsr; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr)); \ -+ /* Only raise exception if there are any that are not masked. */ \ -+ if (~(mxcsr >> 7) & mxcsr & FE_ALL_EXCEPT) \ -+ feraiseexcept (mxcsr & FE_ALL_EXCEPT); \ - } while (0) - #undef libc_feupdateenvf - #define libc_feupdateenvf(e) libc_feupdateenv (e) diff --git a/src/patches/glibc/glibc-rh947882.patch b/src/patches/glibc/glibc-rh947882.patch deleted file mode 100644 index 6d10982a2..000000000 --- a/src/patches/glibc/glibc-rh947882.patch +++ /dev/null @@ -1,63 +0,0 @@ -# -# Backport from upstream: -# -# From 1cef1b19089528db11f221e938f60b9b048945d7 Mon Sep 17 00:00:00 2001 -# From: Andreas Schwab -# Date: Thu, 21 Mar 2013 15:50:27 +0100 -# Subject: [PATCH] Fix stack overflow in getaddrinfo with many results -# -# --- -# ChangeLog | 6 ++++++ -# NEWS | 5 ++++- -# sysdeps/posix/getaddrinfo.c | 23 +++++++++++++++++++++-- -# 3 files changed, 31 insertions(+), 3 deletions(-) -# -# 2013-04-03 Andreas Schwab -# -# [BZ #15330] -# * sysdeps/posix/getaddrinfo.c (getaddrinfo): Allocate results and -# order arrays from heap if bigger than alloca cutoff. -# -diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c 2013-07-24 20:40:37.601887975 -0400 -+++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c 2013-07-24 20:54:32.722447705 -0400 -@@ -2386,11 +2386,27 @@ - __typeof (once) old_once = once; - __libc_once (once, gaiconf_init); - /* Sort results according to RFC 3484. */ -- struct sort_result results[nresults]; -- size_t order[nresults]; -+ struct sort_result *results; -+ size_t *order; - struct addrinfo *q; - struct addrinfo *last = NULL; - char *canonname = NULL; -+ bool malloc_results; -+ -+ malloc_results -+ = !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (*order))); -+ if (malloc_results) -+ { -+ results = malloc (nresults * (sizeof (*results) + sizeof (*order))); -+ if (results == NULL) -+ { -+ free (in6ai); -+ return EAI_MEMORY; -+ } -+ } -+ else -+ results = alloca (nresults * (sizeof (*results) + sizeof (*order))); -+ order = (size_t *) (results + nresults); - - /* If we have information about deprecated and temporary addresses - sort the array now. */ -@@ -2557,6 +2573,9 @@ - - /* Fill in the canonical name into the new first entry. */ - p->ai_canonname = canonname; -+ -+ if (malloc_results) -+ free (results); - } - - free (in6ai); diff --git a/src/patches/glibc/glibc-rh952422.patch b/src/patches/glibc/glibc-rh952422.patch deleted file mode 100644 index c73bf523f..000000000 --- a/src/patches/glibc/glibc-rh952422.patch +++ /dev/null @@ -1,127 +0,0 @@ -diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c -index af454b6..249bd19 100644 ---- a/sysdeps/unix/sysv/linux/getsysstats.c -+++ b/sysdeps/unix/sysv/linux/getsysstats.c -@@ -35,6 +34,7 @@ - - #include - #include -+#include - - - /* How we can determine the number of available processors depends on -@@ -49,8 +49,6 @@ - But not all systems have support for the /proc filesystem. If it - is not available we simply return 1 since there is no way. */ - --#include -- - - /* Other architectures use different formats for /proc/cpuinfo. This - provides a hook for alternative parsers. */ -@@ -128,6 +126,15 @@ next_line (int fd, char *const buffer, char **cp, char **re, - int - __get_nprocs () - { -+ static int cached_result; -+ static time_t timestamp; -+ -+ time_t now = time (NULL); -+ time_t prev = timestamp; -+ atomic_read_barrier (); -+ if (now == prev) -+ return cached_result; -+ - /* XXX Here will come a test for the new system call. */ - - const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512; -@@ -135,20 +142,65 @@ __get_nprocs () - char *buffer_end = buffer + buffer_size; - char *cp = buffer_end; - char *re = buffer_end; -- int result = 1; - - #ifdef O_CLOEXEC - const int flags = O_RDONLY | O_CLOEXEC; - #else - const int flags = O_RDONLY; - #endif -+ int fd = open_not_cancel_2 ("/sys/devices/system/cpu/online", flags); -+ char *l; -+ int result = 0; -+ if (fd != -1) -+ { -+ l = next_line (fd, buffer, &cp, &re, buffer_end); -+ if (l != NULL) -+ do -+ { -+ char *endp; -+ unsigned long int n = strtoul (l, &endp, 10); -+ if (l == endp) -+ { -+ result = 0; -+ break; -+ } -+ -+ unsigned long int m = n; -+ if (*endp == '-') -+ { -+ l = endp + 1; -+ m = strtoul (l, &endp, 10); -+ if (l == endp) -+ { -+ result = 0; -+ break; -+ } -+ } -+ -+ result += m - n + 1; -+ -+ l = endp; -+ while (l < re && isspace (*l)) -+ ++l; -+ } -+ while (l < re); -+ -+ close_not_cancel_no_status (fd); -+ -+ if (result > 0) -+ goto out; -+ } -+ -+ cp = buffer_end; -+ re = buffer_end; -+ result = 1; -+ - /* The /proc/stat format is more uniform, use it by default. */ -- int fd = open_not_cancel_2 ("/proc/stat", flags); -+ fd = open_not_cancel_2 ("/proc/stat", flags); - if (fd != -1) - { - result = 0; - -- char *l; - while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL) - /* The current format of /proc/stat has all the cpu* entries - at the front. We assume here that stays this way. */ -@@ -169,6 +221,11 @@ __get_nprocs () - } - } - -+ out: -+ cached_result = result; -+ atomic_write_barrier (); -+ timestamp = now; -+ - return result; - } - weak_alias (__get_nprocs, get_nprocs) -@@ -236,7 +293,7 @@ phys_pages_info (const char *format) - long int result = -1; - - /* If we haven't found an appropriate entry return 1. */ -- FILE *fp = fopen ("/proc/meminfo", "rc"); -+ FILE *fp = fopen ("/proc/meminfo", "rce"); - if (fp != NULL) - { - /* No threads use this stream. */ diff --git a/src/patches/glibc/glibc-rh966775.patch b/src/patches/glibc/glibc-rh966775.patch deleted file mode 100644 index 32a0f2167..000000000 --- a/src/patches/glibc/glibc-rh966775.patch +++ /dev/null @@ -1,177 +0,0 @@ -diff -pruN glibc-2.12-2-gc4ccff1/math/math_private.h glibc-2.12-2-gc4ccff1.new/math/math_private.h ---- glibc-2.12-2-gc4ccff1/math/math_private.h 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/math/math_private.h 2013-06-07 08:29:35.621042340 -0400 -@@ -394,4 +394,31 @@ extern void __docos (double __x, double - #define libc_feupdateenvf(e) (void) feupdateenv (e) - #define libc_feupdateenvl(e) (void) feupdateenv (e) - -+/* Save and set the rounding mode. The use of fenv_t to store the old mode -+ allows a target-specific version of this function to avoid converting the -+ rounding mode from the fpu format. By default we have no choice but to -+ manipulate the entire env. */ -+ -+#ifndef libc_feholdsetround -+# define libc_feholdsetround(e, r, c) libc_feholdexcept_setround(e, r) -+#endif -+#ifndef libc_feholdsetroundf -+# define libc_feholdsetroundf(e, r, c) libc_feholdexcept_setroundf(e, r) -+#endif -+#ifndef libc_feholdsetroundl -+# define libc_feholdsetroundl(e, r, c) libc_feholdexcept_setroundl(e, r) -+#endif -+ -+/* ... and the reverse. */ -+ -+#ifndef libc_feresetround -+# define libc_feresetround(e, c) libc_feupdateenv(e) -+#endif -+#ifndef libc_feresetroundf -+# define libc_feresetroundf(e, c) libc_feupdateenvf(e) -+#endif -+#ifndef libc_feresetroundl -+# define libc_feresetroundl(e, c) libc_feupdateenvl(e) -+#endif -+ - #endif /* _MATH_PRIVATE_H_ */ -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c 2013-06-07 08:30:21.976222459 -0400 -@@ -57,7 +57,8 @@ double __ieee754_exp(double x) { - fenv_t env; - double retval; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - junk1.x = x; - m = junk1.i[HIGH_HALF]; -@@ -152,7 +153,7 @@ double __ieee754_exp(double x) { - else { retval = __slowexp(x); goto ret; } - } - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c 2013-06-07 08:35:52.785442441 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c 2013-06-07 08:31:00.294939087 -0400 -@@ -83,7 +83,8 @@ double __ieee754_pow(double x, double y) - fenv_t env; - double retval; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ - t = y*134217729.0; -@@ -100,7 +101,7 @@ double __ieee754_pow(double x, double y) - t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */ - retval = (t>0)?t:power1(x,y); - -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c 2013-06-07 08:35:52.786442462 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c 2013-06-07 08:32:08.254822633 -0400 -@@ -101,7 +101,8 @@ double __sin(double x){ - fenv_t env; - double retval = 0; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - u.x = x; - m = u.i[HIGH_HALF]; -@@ -355,7 +356,7 @@ double __sin(double x){ - } - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -@@ -374,7 +375,8 @@ double __cos(double x) - fenv_t env; - double retval = 0; - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - u.x = x; - m = u.i[HIGH_HALF]; -@@ -623,7 +625,7 @@ double __cos(double x) - } - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c ---- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c 2013-06-07 08:35:52.786442462 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c 2013-06-07 08:32:39.736162619 -0400 -@@ -66,7 +66,8 @@ double tan(double x) { - int __branred(double, double *, double *); - int __mpranred(double, mp_no *, int); - -- libc_feholdexcept_setround (&env, FE_TONEAREST); -+ int changed; -+ libc_feholdsetround (&env, FE_TONEAREST, changed); - - /* x=+-INF, x=NaN */ - num.d = x; ux = num.i[HIGH_HALF]; -@@ -495,7 +496,7 @@ double tan(double x) { - goto ret; - - ret: -- libc_feupdateenv (&env); -+ libc_feresetround (&env, changed); - return retval; - } - -diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h 2013-06-07 08:35:52.787442488 -0400 -+++ glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h 2013-06-07 08:34:35.370109759 -0400 -@@ -139,3 +139,31 @@ do { \ - #undef libc_feupdateenvf - #define libc_feupdateenvf(e) libc_feupdateenv (e) - // #define libc_feupdateenvl(e) (void) feupdateenv (e) -+ -+#undef libc_feholdsetround -+#define libc_feholdsetround(e, r, c) \ -+({ \ -+ unsigned int mxcsr, new_mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ new_mxcsr = (mxcsr & ~0x6000) | ((r) << 3); \ -+ if (__builtin_expect (new_mxcsr != mxcsr, 0)) \ -+ { \ -+ (e)->__mxcsr = mxcsr; \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr)); \ -+ c = 1; \ -+ } \ -+ else \ -+ c = 0; \ -+}) -+ -+#undef libc_feresetround -+#define libc_feresetround(e, c) \ -+({ \ -+ if (__builtin_expect (c, 0)) \ -+ { \ -+ unsigned int mxcsr; \ -+ asm ("stmxcsr %0" : "=m" (*&mxcsr)); \ -+ mxcsr = (mxcsr & ~0x6000) | ((e)->__mxcsr & 0x6000); \ -+ asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \ -+ } \ -+}) diff --git a/src/patches/glibc/glibc-rh966778.patch b/src/patches/glibc/glibc-rh966778.patch deleted file mode 100644 index d8fd3fa27..000000000 --- a/src/patches/glibc/glibc-rh966778.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit 3056dcdb783a177158a5617657d1a33f872358d6 -Author: Ulrich Drepper -Date: Mon Nov 22 11:11:24 2010 -0500 - - Fix multiple nss_compat initgroups() bugs - - Compat initgroups() is completely broken; the code will always set - skip_initgroups_dyn to true, so initgroups() will never be actually - called, but due to the nature of the code, setgrent() won't be called - either - thus, subsequent invocations of initgroups() will not return - the NIS group list anymore. - - This is a simple patch that makes sure skip_initgroups_dyn is set only - in case initgroups is not available; it also attempts to handle the - unavailability of other NSS interfaces better. - - Conflicts: - - ChangeLog - -diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c -index 07a3b92..de8d95c 100644 ---- a/nis/nss_compat/compat-initgroups.c -+++ b/nis/nss_compat/compat-initgroups.c -@@ -474,18 +474,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user, - /* If the selected module does not support getgrent_r or - initgroups_dyn, abort. We cannot find the needed group - entries. */ -- if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL) -+ if (nss_initgroups_dyn == NULL || nss_getgrgid_r == NULL) -+ { -+ if (nss_setgrent != NULL) -+ { -+ nss_setgrent (1); -+ ent->need_endgrent = true; -+ } -+ ent->skip_initgroups_dyn = true; -+ } -+ -+ if (ent->skip_initgroups_dyn && nss_getgrent_r == NULL) - return NSS_STATUS_UNAVAIL; - - ent->files = false; - -- if (nss_initgroups_dyn == NULL && nss_setgrent != NULL) -- { -- nss_setgrent (1); -- ent->need_endgrent = true; -- } -- ent->skip_initgroups_dyn = true; -- - return getgrent_next_nss (ent, buffer, buflen, user, group, - start, size, groupsp, limit, errnop); - } diff --git a/src/patches/glibc/glibc-rh970090.patch b/src/patches/glibc/glibc-rh970090.patch deleted file mode 100644 index 601062477..000000000 --- a/src/patches/glibc/glibc-rh970090.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -pruN glibc-2.18/nscd/aicache.c glibc-2.18.new/nscd/aicache.c ---- glibc-2.18/nscd/aicache.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.new/nscd/aicache.c 2013-08-26 11:10:25.843470413 +0530 -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - #include "dbg_log.h" - #include "nscd.h" -@@ -100,8 +101,11 @@ addhstaiX (struct database_dyn *db, int - no_more = __nss_database_lookup ("hosts", NULL, - "dns [!UNAVAIL=return] files", &nip); - -+ /* Initialize configurations. */ -+ if (__builtin_expect (!_res_hconf.initialized, 0)) -+ _res_hconf_init (); - if (__res_maybe_init (&_res, 0) == -1) -- no_more = 1; -+ no_more = 1; - - /* If we are looking for both IPv4 and IPv6 address we don't want - the lookup functions to automatically promote IPv4 addresses to diff --git a/src/patches/glibc/glibc-rh970776.patch b/src/patches/glibc/glibc-rh970776.patch deleted file mode 100644 index ec2f2a6f9..000000000 --- a/src/patches/glibc/glibc-rh970776.patch +++ /dev/null @@ -1,279 +0,0 @@ -Patch attached to bugzilla by Ankit Patel, from Red Hat translation team. - -Index: glibc-2.12-2-gc4ccff1/po/de.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/de.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/de.po 2013-07-23 20:35:03.213177408 -0300 -@@ -2396,14 +2396,14 @@ msgstr "Zu viele Benutzer" - msgid "Disk quota exceeded" - msgstr "Der zugewiesene Plattenplatz (Quota) ist überschritten" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "Veraltete NFS-Dateizugriffsnummer" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Veraltetes Datei-Handle" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/es.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/es.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/es.po 2013-07-23 20:35:03.243175029 -0300 -@@ -2533,14 +2533,14 @@ msgstr "Se ha excedido la cuota de disco - # Muy bien, he buscado "stale" y por lo que parece es algo que "caduca" - # o que "vence", como las letras comerciales. Me he decidido por "en desuso". - # --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "`handle' de fichero NFS en desuso" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Identificador de archivos obsoletos" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/fr.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/fr.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/fr.po 2013-07-23 20:35:03.250174474 -0300 -@@ -5802,13 +5802,14 @@ msgstr "Trop d'usagers" - msgid "Disk quota exceeded" - msgstr "Débordement du quota d'espace disque" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "Panne d'accès au fichier NFS" -+msgid "Stale file handle" -+msgstr "Gestionnaire de fichiers périmés" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/it.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/it.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/it.po 2013-07-23 20:35:03.253174237 -0300 -@@ -1662,6 +1662,15 @@ msgstr "Superata la quota di disco" - msgid "Disk quota exceeded" - msgstr "Superata la quota di disco" - -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Gestione file obsoleti" -+ - #: nscd/nscd.c:86 - msgid "Do not fork and display messages on the current tty" - msgstr "Non fa fork e stampa i messaggi sul tty corrente" -Index: glibc-2.12-2-gc4ccff1/po/ja.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ja.po 2013-07-23 04:01:34.628665260 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ja.po 2013-07-23 20:35:03.304170193 -0300 -@@ -2333,14 +2333,14 @@ msgstr "¥æ¡¼¥¶¤¬Â¿¤¹¤®¤Þ¤¹" - msgid "Disk quota exceeded" - msgstr "¥Ç¥£¥¹¥¯»ÈÍÑÎÌÀ©¸Â¤òĶ²á¤·¤Þ¤·¤¿" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "¼Â¸úÀ­¤Î¤Ê¤¤NFS¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ç¤¹" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "¸Å¤¤¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ç¤¹" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/ko.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ko.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ko.po 2013-07-23 20:35:03.311169638 -0300 -@@ -5803,13 +5803,14 @@ msgstr "사용ìžê°€ 너무 ë§ŽìŒ" - msgid "Disk quota exceeded" - msgstr "ë””ìŠ¤í¬ í• ë‹¹ëŸ‰ì´ ì´ˆê³¼ë¨" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "ëŠì–´ì§„ NFS íŒŒì¼ í•¸ë“¤" -+msgid "Stale file handle" -+msgstr "ì˜¤ëž˜ëœ íŒŒì¼ ì²˜ë¦¬" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/libc.pot -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/libc.pot 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/libc.pot 2013-07-23 20:35:03.326168449 -0300 -@@ -5696,12 +5696,13 @@ msgstr "" - msgid "Disk quota exceeded" - msgstr "" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" -+msgid "Stale file handle" - msgstr "" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that -Index: glibc-2.12-2-gc4ccff1/po/pt_BR.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/pt_BR.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/pt_BR.po 2013-07-23 20:35:03.331168053 -0300 -@@ -2287,13 +2287,14 @@ msgstr "Erro de Srmount" - msgid "Stack fault" - msgstr "Falha de pilha" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:506 --msgid "Stale NFS file handle" --msgstr "Manipulador de arquivo NFS corrompido" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "Manipulador de arquivo obsoleto" - - #: nscd/nscd.c:81 - msgid "Start NUMBER threads" -Index: glibc-2.12-2-gc4ccff1/po/ru.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/ru.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/ru.po 2013-07-23 20:35:03.338167498 -0300 -@@ -5798,13 +5798,14 @@ msgstr "Слишком много пол - msgid "Disk quota exceeded" - msgstr "Превышена диÑÐºÐ¾Ð²Ð°Ñ ÐºÐ²Ð¾Ñ‚Ð°" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "УÑтаревший Ñ…Ñндл файла NFS" -+msgid "Stale file handle" -+msgstr "УÑтаревший деÑкриптор файла" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/zh_CN.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/zh_CN.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/zh_CN.po 2013-07-23 20:35:03.344167022 -0300 -@@ -5519,13 +5519,14 @@ msgstr "用户过多" - msgid "Disk quota exceeded" - msgstr "超出ç£ç›˜é™é¢" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. - #: sysdeps/gnu/errlist.c:787 --msgid "Stale NFS file handle" --msgstr "" -+msgid "Stale file handle" -+msgstr "å¤±æ•ˆæ–‡ä»¶å¥æŸ„" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. -Index: glibc-2.12-2-gc4ccff1/po/zh_TW.po -=================================================================== ---- glibc-2.12-2-gc4ccff1.orig/po/zh_TW.po 2010-05-04 08:27:23.000000000 -0300 -+++ glibc-2.12-2-gc4ccff1/po/zh_TW.po 2013-07-23 20:35:03.349166626 -0300 -@@ -2333,14 +2333,14 @@ msgstr "太多使用者" - msgid "Disk quota exceeded" - msgstr "硬碟 quota 滿了" - --#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS --#. TRANS system which is due to file system rearrangements on the server host. --#. TRANS Repairing this condition usually requires unmounting and remounting --#. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:779 --#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 --msgid "Stale NFS file handle" --msgstr "éŽèˆŠçš„ NFS 檔案控制碼" -+#. TRANS Stale file handle. This indicates an internal confusion in the -+#. TRANS file system which is due to file system rearrangements on the server host -+#. TRANS for NFS filesystems or corruption in other filesystems. -+#. TRANS Repairing this condition usually requires unmounting, possibly -+#. TRANS repairing and remounting the file system. -+#: sysdeps/gnu/errlist.c:787 -+msgid "Stale file handle" -+msgstr "éŽèˆŠçš„æª”案處ç†" - - #. TRANS An attempt was made to NFS-mount a remote file system with a file name that - #. TRANS already specifies an NFS-mounted file. diff --git a/src/patches/glibc/glibc-rh978098.patch b/src/patches/glibc/glibc-rh978098.patch deleted file mode 100644 index 0b53dcc25..000000000 --- a/src/patches/glibc/glibc-rh978098.patch +++ /dev/null @@ -1,124 +0,0 @@ -# -# Based on commit e6c61494125126d2ba77e5d99f83887a2ed49783. -# -# 2011-04-10 Ulrich Drepper -# -# [BZ #12650] -# * sysdeps/i386/dl-tls.h: Define TLS_DTV_UNALLOCATED. -# * sysdeps/ia64/dl-tls.h: Likewise. -# * sysdeps/powerpc/dl-tls.h: Likewise. -# * sysdeps/s390/dl-tls.h: Likewise. -# * sysdeps/sh/dl-tls.h: Likewise. -# * sysdeps/sparc/dl-tls.h: Likewise. -# * sysdeps/x86_64/dl-tls.h: Likewise. -# * elf/dl-tls.c: Don't define TLS_DTV_UNALLOCATED here. -# -diff -urN glibc-2.12-2-gc4ccff1/elf/dl-tls.c glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2015-02-18 05:16:56.087096028 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/elf/dl-tls.c 2015-02-18 05:21:04.018424445 -0500 -@@ -33,9 +33,6 @@ - to allow dynamic loading of modules defining IE-model TLS data. */ - #define TLS_STATIC_SURPLUS 64 + DL_NNS * 100 - --/* Value used for dtv entries for which the allocation is delayed. */ --#define TLS_DTV_UNALLOCATED ((void *) -1l) -- - - /* Out-of-memory handler. */ - #ifdef SHARED -diff -urN glibc-2.12-2-gc4ccff1/nptl/allocatestack.c glibc-2.12-2-gc4ccff1.mod/nptl/allocatestack.c ---- glibc-2.12-2-gc4ccff1/nptl/allocatestack.c 2015-02-18 05:16:56.101095594 -0500 -+++ glibc-2.12-2-gc4ccff1.mod/nptl/allocatestack.c 2015-02-18 05:21:04.019424414 -0500 -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -242,6 +243,10 @@ - - /* Clear the DTV. */ - dtv_t *dtv = GET_DTV (TLS_TPADJ (result)); -+ for (size_t cnt = 0; cnt < dtv[-1].counter; ++cnt) -+ if (! dtv[1 + cnt].pointer.is_static -+ && dtv[1 + cnt].pointer.val != TLS_DTV_UNALLOCATED) -+ free (dtv[1 + cnt].pointer.val); - memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); - - /* Re-initialize the TLS. */ -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/i386/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/i386/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/i386/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/i386/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -58,3 +58,6 @@ - - # endif - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/ia64/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/ia64/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/ia64/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/ia64/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -28,3 +28,6 @@ - #define DONT_USE_TLS_INDEX 1 - - extern void *__tls_get_addr (size_t m, size_t offset); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/powerpc/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/powerpc/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/powerpc/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/powerpc/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -47,3 +47,6 @@ - # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET) - # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET) - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/s390/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/s390/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/s390/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/s390/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -72,6 +72,9 @@ - # define __TLS_GET_ADDR(__ti) \ - ({ extern char _GLOBAL_OFFSET_TABLE_[] attribute_hidden; \ - (void *) __tls_get_offset ((char *) (__ti) - _GLOBAL_OFFSET_TABLE_) \ -- + (unsigned long) __builtin_thread_pointer (); }) -+ + (unsigned long) __builtin_thread_pointer (); }) - - #endif -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/sh/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/sh/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/sh/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/sh/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/sparc/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/sparc/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/sparc/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/sparc/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) -diff -urN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-tls.h glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-tls.h ---- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/dl-tls.h 2010-05-04 07:27:23.000000000 -0400 -+++ glibc-2.12-2-gc4ccff1.mod/sysdeps/x86_64/dl-tls.h 2015-02-18 05:21:04.019424414 -0500 -@@ -27,3 +27,6 @@ - - - extern void *__tls_get_addr (tls_index *ti); -+ -+/* Value used for dtv entries for which the allocation is delayed. */ -+#define TLS_DTV_UNALLOCATED ((void *) -1l) diff --git a/src/patches/glibc/glibc-rh981942.patch b/src/patches/glibc/glibc-rh981942.patch deleted file mode 100644 index cbe1ab8db..000000000 --- a/src/patches/glibc/glibc-rh981942.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit 2e96f1c73b06e81da59ef7fffa426dc201875f31 -Author: Andreas Schwab -Date: Thu Aug 4 15:42:10 2011 -0400 - - Fix encoding name for IDN in getaddrinfo - -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c -index 6d574c5..a5aafe9 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c -@@ -432,7 +432,10 @@ gaih_inet (const char *name, const struct gaih_service *service, - /* In case the output string is the same as the input string - no new string has been allocated. */ - if (p != name) -- malloc_name = true; -+ { -+ name = p; -+ malloc_name = true; -+ } - } - #endif - diff --git a/src/patches/glibc/glibc-rh988931.patch b/src/patches/glibc/glibc-rh988931.patch deleted file mode 100644 index 38594a47b..000000000 --- a/src/patches/glibc/glibc-rh988931.patch +++ /dev/null @@ -1,33 +0,0 @@ -commit e23fe25b33324a9ea992276c1a4f04127bf9ba4b -Author: Andreas Schwab -Date: Sun Feb 20 07:24:56 2011 -0500 - - Move setting variable in relro data earlier in ld.so. - -diff --git a/elf/rtld.c b/elf/rtld.c -index 8510380..174954b 100644 ---- a/elf/rtld.c -+++ b/elf/rtld.c -@@ -2179,6 +2179,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - we need it in the memory handling later. */ - GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; - -+ /* Remember the last search directory added at startup, now that -+ malloc will no longer be the one from dl-minimal.c. */ -+ GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ - if (prelinked) - { - if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) -@@ -2298,9 +2302,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lossage); - } - -- /* Remember the last search directory added at startup, now that -- malloc will no longer be the one from dl-minimal.c. */ -- GLRO(dl_init_all_dirs) = GL(dl_all_dirs); -+ /* Make sure no new search directories have been added. */ -+ assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); - - if (! prelinked && rtld_multiple_ref) - { diff --git a/src/patches/glibc/glibc-rh995972.patch b/src/patches/glibc/glibc-rh995972.patch deleted file mode 100644 index 0178bca76..000000000 --- a/src/patches/glibc/glibc-rh995972.patch +++ /dev/null @@ -1,246 +0,0 @@ -commit d26dfc60edc8c6dd160eefff16a734152a835ca0 -Author: Martin von Gagern -Date: Sat May 14 21:25:43 2011 -0400 - - Fix handling of static TLS in dlopen'ed objects - - When dynamically loading a library along with several dependencies, calls to - _dl_add_to_slotinfo and _dl_update_slotinfo can become intermixed. As a - consequence, _dl_update_slotinfo will update the generation counter of the dtv - although not all of the slots belonging to that generation have been added. - Subsequent calls to _dl_add_to_slotinfo will add more slots to the same - generation, for which no storage will be allocated, as the dtv generation - checks will claim no work is necessary. This will lead to uninitialized dtv - entries and will likely cause a SIGSEGV when thread local variables are - accessed. - -diff --git a/elf/Makefile b/elf/Makefile -index 8d9657d..6efb86c 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -76,6 +76,7 @@ distribute := rtld-Rules \ - tst-tlsmod12.c tst-tls10.h tst-alignmod.c tst-alignmod2.c \ - circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \ - circlemod3.c circlemod3a.c nodlopenmod2.c \ -+ tst-tls19mod1.c tst-tls19mod2.c tst-tls19mod3.c \ - tls-macros.h \ - reldep8mod1.c reldep8mod2.c reldep8mod3.c \ - nodel2mod1.c nodel2mod2.c nodel2mod3.c \ -@@ -194,7 +195,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ - restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ - circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ - tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \ -- tst-tls16 tst-tls17 tst-tls18 tst-tls-dlinfo \ -+ tst-tls16 tst-tls17 tst-tls18 tst-tls19 tst-tls-dlinfo \ - tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ - tst-dlmodcount tst-dlopenrpath tst-deep1 \ - tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ -@@ -240,6 +241,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - $(patsubst %,tst-tlsmod17a%,$(tlsmod17a-suffixes)) \ - tst-tlsmod17b \ - $(patsubst %,tst-tlsmod18a%,$(tlsmod18a-suffixes)) \ -+ tst-tls19mod1 tst-tls19mod2 tst-tls19mod3 \ - circlemod1 circlemod1a circlemod2 circlemod2a \ - circlemod3 circlemod3a \ - reldep8mod1 reldep8mod2 reldep8mod3 \ -@@ -525,6 +527,8 @@ $(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so - # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED - $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so - $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so -+$(objpfx)tst-tls19mod1.so: $(objpfx)tst-tls19mod2.so $(objpfx)tst-tls19mod3.so -+$(objpfx)tst-tls19mod3.so: $(objpfx)ld.so - $(objpfx)reldep8mod3.so: $(objpfx)reldep8mod1.so $(objpfx)reldep8mod2.so - $(objpfx)nodel2mod3.so: $(objpfx)nodel2mod1.so $(objpfx)nodel2mod2.so - $(objpfx)reldep9mod2.so: $(objpfx)reldep9mod1.so -@@ -822,6 +826,9 @@ $(patsubst %,$(objpfx)%.os,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.os : t - $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ -DN=$* -DNOT_IN_libc=1 $< - $(patsubst %,$(objpfx)tst-tlsmod18a%.so,$(tlsmod18a-suffixes)): $(objpfx)tst-tlsmod18a%.so: $(objpfx)ld.so - -+$(objpfx)tst-tls19: $(libdl) -+$(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so -+ - CFLAGS-tst-align.c = $(stack-align-test-flags) - CFLAGS-tst-align2.c = $(stack-align-test-flags) - CFLAGS-tst-alignmod.c = $(stack-align-test-flags) -diff --git a/elf/dl-open.c b/elf/dl-open.c -index cf8e8cc..8d90b56 100644 ---- a/elf/dl-open.c -+++ b/elf/dl-open.c -@@ -347,6 +347,7 @@ dl_open_worker (void *a) - /* If the file is not loaded now as a dependency, add the search - list of the newly loaded object to the scope. */ - bool any_tls = false; -+ unsigned int first_static_tls = new->l_searchlist.r_nlist; - for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) - { - struct link_map *imap = new->l_searchlist.r_list[i]; -@@ -425,30 +426,9 @@ dl_open_worker (void *a) - might have to increase its size. */ - _dl_add_to_slotinfo (imap); - -- if (imap->l_need_tls_init) -- { -- /* For static TLS we have to allocate the memory here -- and now. This includes allocating memory in the DTV. -- But we cannot change any DTV other than our own. So, -- if we cannot guarantee that there is room in the DTV -- we don't even try it and fail the load. -- -- XXX We could track the minimum DTV slots allocated in -- all threads. */ -- if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) -- _dl_signal_error (0, "dlopen", NULL, N_("\ --cannot load any more object with static TLS")); -- -- imap->l_need_tls_init = 0; --#ifdef SHARED -- /* Update the slot information data for at least the -- generation of the DSO we are allocating data for. */ -- _dl_update_slotinfo (imap->l_tls_modid); --#endif -- -- GL(dl_init_static_tls) (imap); -- assert (imap->l_need_tls_init == 0); -- } -+ if (imap->l_need_tls_init -+ && first_static_tls == new->l_searchlist.r_nlist) -+ first_static_tls = i; - - /* We have to bump the generation counter. */ - any_tls = true; -@@ -460,6 +440,40 @@ cannot load any more object with static TLS")); - _dl_fatal_printf (N_("\ - TLS generation counter wrapped! Please report this.")); - -+ /* We need a second pass for static tls data, because _dl_update_slotinfo -+ must not be run while calls to _dl_add_to_slotinfo are still pending. */ -+ for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) -+ { -+ struct link_map *imap = new->l_searchlist.r_list[i]; -+ -+ if (imap->l_need_tls_init -+ && ! imap->l_init_called -+ && imap->l_tls_blocksize > 0) -+ { -+ /* For static TLS we have to allocate the memory here and -+ now. This includes allocating memory in the DTV. But we -+ cannot change any DTV other than our own. So, if we -+ cannot guarantee that there is room in the DTV we don't -+ even try it and fail the load. -+ -+ XXX We could track the minimum DTV slots allocated in -+ all threads. */ -+ if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) -+ _dl_signal_error (0, "dlopen", NULL, N_("\ -+cannot load any more object with static TLS")); -+ -+ imap->l_need_tls_init = 0; -+#ifdef SHARED -+ /* Update the slot information data for at least the -+ generation of the DSO we are allocating data for. */ -+ _dl_update_slotinfo (imap->l_tls_modid); -+#endif -+ -+ GL(dl_init_static_tls) (imap); -+ assert (imap->l_need_tls_init == 0); -+ } -+ } -+ - /* Notify the debugger all new objects have been relocated. */ - if (relocation_in_progress) - LIBC_PROBE (rtld_reloc_complete, 3, args->nsid, r, new); -diff --git a/elf/tst-tls19.c b/elf/tst-tls19.c -new file mode 100644 -index 0000000..acbc1d6 ---- /dev/null -+++ b/elf/tst-tls19.c -@@ -0,0 +1,27 @@ -+// BZ 12453 -+#include -+#include -+ -+ -+static int -+do_test (void) -+{ -+ void* dl = dlopen ("tst-tls19mod1.so", RTLD_LAZY | RTLD_GLOBAL); -+ if (dl == NULL) -+ { -+ printf ("Error loading tst-tls19mod1.so: %s\n", dlerror ()); -+ return 1; -+ } -+ -+ int (*fn) (void) = dlsym (dl, "foo"); -+ if (fn == NULL) -+ { -+ printf("Error obtaining symbol foo\n"); -+ return 1; -+ } -+ -+ return fn (); -+} -+ -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -diff --git a/elf/tst-tls19mod1.c b/elf/tst-tls19mod1.c -new file mode 100644 -index 0000000..2790097 ---- /dev/null -+++ b/elf/tst-tls19mod1.c -@@ -0,0 +1,15 @@ -+#include -+ -+extern int bar (void); -+extern int baz (void); -+ -+int -+foo (void) -+{ -+ int v1 = bar (); -+ int v2 = baz (); -+ -+ printf ("bar=%d, baz=%d\n", v1, v2); -+ -+ return v1 != 666 || v2 != 42; -+} -diff --git a/elf/tst-tls19mod2.c b/elf/tst-tls19mod2.c -new file mode 100644 -index 0000000..cae702f ---- /dev/null -+++ b/elf/tst-tls19mod2.c -@@ -0,0 +1,13 @@ -+static int __thread tbar __attribute__ ((tls_model ("initial-exec"))) = 666; -+ -+void -+setter (int a) -+{ -+ tbar = a; -+} -+ -+int -+bar (void) -+{ -+ return tbar; -+} -diff --git a/elf/tst-tls19mod3.c b/elf/tst-tls19mod3.c -new file mode 100644 -index 0000000..e7b2801 ---- /dev/null -+++ b/elf/tst-tls19mod3.c -@@ -0,0 +1,16 @@ -+#include -+ -+static int __thread tbaz __attribute__ ((tls_model ("local-dynamic"))) = 42; -+ -+void -+setter2 (int a) -+{ -+ tbaz = a; -+} -+ -+int -+baz (void) -+{ -+ printf ("&tbaz=%p\n", &tbaz); -+ return tbaz; -+} From 962ddd8d7368df7a079a3e74b119e009bf2ca5af Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 16:03:17 +0200 Subject: [PATCH 330/464] pkg-config: Remove accidentially commited line Signed-off-by: Michael Tremer --- lfs/pkg-config | 2 -- 1 file changed, 2 deletions(-) diff --git a/lfs/pkg-config b/lfs/pkg-config index d58fbe2ab..8523d8af4 100644 --- a/lfs/pkg-config +++ b/lfs/pkg-config @@ -42,8 +42,6 @@ else PREFIX = /tools endif -CFLAGS += Wno-error=format-nonliteral - ############################################################################### # Top-level Rules ############################################################################### From e259f335ae8ced4253d5c65631afa6a7450fea6a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 16:03:38 +0200 Subject: [PATCH 331/464] toolchain: Build without hardening The toolchain will be built without hardening which makes the entire bootstrapping process way more complicated than necessary and sometimes fail on some host distribution. Signed-off-by: Michael Tremer --- lfs/binutils | 1 - lfs/ccache | 1 - lfs/gcc | 7 ------- tools/make-functions | 21 ++++++++++++++------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lfs/binutils b/lfs/binutils index ff5fc6f85..f168c7c29 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -46,7 +46,6 @@ else ifeq "$(PASS)" "1" CFLAGS := $(patsubst -march=%,,$(CFLAGS)) CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ diff --git a/lfs/ccache b/lfs/ccache index c35c6705d..9fbb72822 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -35,7 +35,6 @@ TARGET = $(DIR_INFO)/$(THISAPP)-pass$(PASS) ifeq "$(PASS)" "1" CFLAGS := $(patsubst -march=%,,$(CFLAGS)) CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) endif # Set max cache size to 5GB diff --git a/lfs/gcc b/lfs/gcc index 927621e85..35d305e2e 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -59,10 +59,6 @@ ifeq "$(ROOT)" "" EXTRA_INSTALL = else ifeq "$(PASS)" "1" - CFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CFLAGS)) - CXXFLAGS := $(patsubst -fstack-protector-strong,-fstack-protector-all,$(CXXFLAGS)) - CXXFLAGS += -std=gnu++98 - TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ @@ -135,9 +131,6 @@ else EXTRA_INSTALL = endif endif - - # Disable stack protection in toolchain. - CFLAGS += -fno-stack-protector endif ifeq "$(MACHINE)" "armv5tel" diff --git a/tools/make-functions b/tools/make-functions index 0180ded17..cb455a94a 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -108,8 +108,10 @@ configure_target() { # Old variable names MACHINE="${TARGET_ARCH}" - CFLAGS="-O2 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC" - CFLAGS="${CFLAGS} -fstack-protector-strong --param=ssp-buffer-size=4 ${CFLAGS_ARCH}" + # Enables hardening + HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4" + + CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC ${CFLAGS_ARCH}" CXXFLAGS="${CFLAGS}" } @@ -478,7 +480,8 @@ entershell() { PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ @@ -604,7 +607,8 @@ lfsmake2() { SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ @@ -646,7 +650,8 @@ ipfiremake() { CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ SYSTEM_RELEASE="$SYSTEM_RELEASE" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ @@ -686,7 +691,8 @@ ipfiredist() { VERSION=$VERSION \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ @@ -727,7 +733,8 @@ installmake() { SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ CONFIG_ROOT=$CONFIG_ROOT \ NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ From bab5ff7c5bd07dea1159c70ac16edbbd0c1586a0 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 12 Mar 2017 17:40:28 +0100 Subject: [PATCH 332/464] Allow building for aarch64 Signed-off-by: Michael Tremer --- tools/make-functions | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/make-functions b/tools/make-functions index cb455a94a..e327ca266 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -80,6 +80,12 @@ configure_target() { CFLAGS_ARCH="-march=i586 -mtune=generic -fomit-frame-pointer" ;; + aarch64) + BUILDTARGET="${target_arch}-unknown-linux-gnu" + CROSSTARGET="${target_arch}-cross-linux-gnu" + CFLAGS_ARCH="" + ;; + armv5tel) BUILDTARGET="${target_arch}-unknown-linux-gnueabi" CROSSTARGET="${target_arch}-cross-linux-gnueabi" From 16449f750488e84862873b80e66c21fbfc9afe09 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 18:55:35 +0200 Subject: [PATCH 333/464] Build for aarch64 by default on aarch64 hosts Signed-off-by: Michael Tremer --- tools/make-functions | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index e327ca266..78edf7d53 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -126,7 +126,12 @@ configure_target_guess() { x86_64|i686|i586) echo "i586" ;; - aarch64|armv7*|armv6*|armv5*) + + aarch64) + echo "aarch64" + ;; + + armv7*|armv6*|armv5*) echo "armv5tel" ;; *) From 6f8f452267d78803c0a6a7ba1ae4079c445f50ba Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 18:56:06 +0200 Subject: [PATCH 334/464] gcc: Remove unnecessary compiler options Signed-off-by: Michael Tremer --- lfs/gcc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/gcc b/lfs/gcc index 35d305e2e..9d836d436 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -91,7 +91,7 @@ else ifeq "$(PASS)" "2" TARGET = $(DIR_INFO)/$(THISAPP)-tools2 EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ CXX="$(CROSSTARGET)-g++" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" @@ -115,7 +115,7 @@ else # PASS=L # libstdc++-v3 TARGET = $(DIR_INFO)/$(THISAPP)-libstdc++ EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ From 66dd71f298366f122b51e510847581c5be0d64ad Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 18:56:16 +0200 Subject: [PATCH 335/464] gcc: Don't bootstrap in second pass GCC does not need to be bootstrapped in the second pass any more since the toolchain is not built hardened Signed-off-by: Michael Tremer --- lfs/gcc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/gcc b/lfs/gcc index 9d836d436..3b0d8d5c3 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -108,7 +108,7 @@ ifeq "$(PASS)" "2" --enable-__cxa_atexit \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ - --enable-bootstrap + --disable-bootstrap EXTRA_MAKE = EXTRA_INSTALL = else From a74272d2bbe57181a4b1650ead570b551095bf40 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 19:05:58 +0200 Subject: [PATCH 336/464] binutils: Remove some unnecessary compiler options Signed-off-by: Michael Tremer --- lfs/binutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/binutils b/lfs/binutils index f168c7c29..24155a1d7 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -59,7 +59,7 @@ ifeq "$(PASS)" "1" else TARGET = $(DIR_INFO)/$(THISAPP)-tools2 EXTRA_ENV = \ - CC="$(CROSSTARGET)-gcc -B/tools/lib/" \ + CC="$(CROSSTARGET)-gcc" \ AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ From 991d11d738222438a21c92a3c37f5429c5ca6489 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 20:27:32 +0200 Subject: [PATCH 337/464] Cleanup makefiles by using the new TOOLCHAIN variable No functional changes Signed-off-by: Michael Tremer --- lfs/gcc | 62 +++++++++++++++++++++++++------------------------------ lfs/linux | 2 +- make.sh | 2 +- 3 files changed, 30 insertions(+), 36 deletions(-) diff --git a/lfs/gcc b/lfs/gcc index 3b0d8d5c3..82a6732b2 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -207,7 +207,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/gcc-build -ifneq "$(ROOT)" "" + cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in + cd $(DIR_APP) && sed -i gcc/Makefile.in \ + -e 's@\./fixinc\.sh@-c true@' \ + -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/' + +ifeq "$(TOOLCHAIN)" "1" # Build gmp and mpfr internally in toolchain. cd $(DIR_APP) && tar xfa $(DIR_DL)/gmp-$(GMP_VER).tar.bz2 cd $(DIR_APP) && mv -v gmp-$(GMP_VER) gmp @@ -216,23 +221,11 @@ ifneq "$(ROOT)" "" cd $(DIR_APP) && tar xfa $(DIR_DL)/mpc-$(MPC_VER).tar.gz cd $(DIR_APP) && mv -v mpc-$(MPC_VER) mpc -ifeq "$(PASS)" "1" - for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ - -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \ - echo "Processing $${file}..."; \ - sed -i $${file} \ - -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ - -e 's@/usr@/tools@g'; \ - echo '#undef STANDARD_STARTFILE_PREFIX_1' >> $${file}; \ - echo '#undef STANDARD_STARTFILE_PREFIX_2' >> $${file}; \ - echo '#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"' >> $${file}; \ - echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ - done -endif - -ifeq "$(PASS)" "2" +ifeq "$(PASS)" "2" cd $(DIR_APP) && cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name)`/include-fixed/limits.h +endif + for file in $$(find $(DIR_APP)/gcc/config -name linux64.h -o -name linux.h \ -o -name sysv4.h -o -name linux-eabi.h -o -name linux-elf.h -o -name aarch64-linux.h); do \ echo "Processing $${file}..."; \ @@ -244,15 +237,9 @@ ifeq "$(PASS)" "2" echo '#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"' >> $${file}; \ echo '#define STANDARD_STARTFILE_PREFIX_2 ""' >> $${file}; \ done -endif endif - cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in - cd $(DIR_APP) && sed -i gcc/Makefile.in \ - -e 's@\./fixinc\.sh@-c true@' \ - -e 's/^T_CFLAGS =$$/& -fomit-frame-pointer/' - -ifeq "$(PASS)" "L" +ifeq "$(PASS)" "L" # libstdc++ pass cd $(DIR_SRC)/gcc-build && \ $(EXTRA_ENV) \ @@ -261,8 +248,6 @@ ifeq "$(PASS)" "L" cd $(DIR_SRC)/gcc-build && make $(EXTRA_MAKE) cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install - # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936 - sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib else # The actual build. cd $(DIR_SRC)/gcc-build && \ @@ -273,19 +258,28 @@ else cd $(DIR_SRC)/gcc-build && make $(EXTRA_INSTALL) install endif -ifeq "$(ROOT)" "" +ifeq "$(TOOLCHAIN)" "1" + ifeq "$(PASS)" "1" + ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') + endif + + ifeq "$(PASS)" "2" + ln -svf gcc /tools/bin/cc + # remove gdb python files from libdir + rm -rf /tools/lib/*-gdb.py + endif + + ifeq "$(PASS)" "L" + # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70936 + sed -e "s/^#include_next/#include/" -i /tools/$(CROSSTARGET)/include/c++/$(VER)/cstdlib + endif + +else # NON-TOOLCHAIN ln -svf ../usr/bin/cpp /lib ln -svf gcc /usr/bin/cc # remove gdb python files from libdir rm -rf /usr/lib/*-gdb.py -else -ifeq "$(PASS)" "1" - ln -svf libgcc.a $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/') -else - ln -svf gcc /tools/bin/cc - # remove gdb python files from libdir - rm -rf /tools/lib/*-gdb.py -endif endif + @rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build @$(POSTBUILD) diff --git a/lfs/linux b/lfs/linux index 3c85a23ba..ec005550f 100644 --- a/lfs/linux +++ b/lfs/linux @@ -48,7 +48,7 @@ endif VERSUFIX=ipfire$(KCFG) -ifeq "$(TOOLS)" "1" +ifeq "$(TOOLCHAIN)" "1" TARGET = $(DIR_INFO)/linux-$(VER)-$(VERSUFIX)-tools HEADERS_PREFIX = /tools else diff --git a/make.sh b/make.sh index e8af68a2c..5c290d54f 100755 --- a/make.sh +++ b/make.sh @@ -282,7 +282,7 @@ buildtoolchain() { lfsmake1 ccache PASS=1 lfsmake1 binutils PASS=1 lfsmake1 gcc PASS=1 - lfsmake1 linux TOOLS=1 KCFG="-headers" + lfsmake1 linux KCFG="-headers" lfsmake1 glibc lfsmake1 cleanup-toolchain PASS=1 lfsmake1 gcc PASS=L From 6ef98fe9bed0c8a9379b105a556f5cc7c855668d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 16 Apr 2017 18:28:08 +0200 Subject: [PATCH 338/464] toolchain: Drop first pass of cleanup-toolchain script This is no longer necessary Signed-off-by: Michael Tremer --- lfs/cleanup-toolchain | 8 +------- make.sh | 5 ++--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index 90369889d..e904bca87 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -52,12 +52,6 @@ md5 : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) ifeq "$(PASS)" "1" - SPECS=$$(dirname $$(/tools/bin/$(CROSSTARGET)-gcc -print-libgcc-file-name))/specs; \ - /tools/bin/$(CROSSTARGET)-gcc -dumpspecs | sed \ - -e "/^\*cpp:$$/{n;s,$$, -isystem /tools/include,}" > $$SPECS -endif - -ifeq "$(PASS)" "2" # Remove the first cross compiler which is not needed anymore. find /tools/ -name "$(CROSSTARGET)*" | xargs rm -rfv @@ -74,7 +68,7 @@ ifeq "$(PASS)" "2" /tools/sbin/ldconfig endif -ifeq "$(PASS)" "3" +ifeq "$(PASS)" "2" mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} diff --git a/make.sh b/make.sh index 5c290d54f..beaee1eeb 100755 --- a/make.sh +++ b/make.sh @@ -284,7 +284,6 @@ buildtoolchain() { lfsmake1 gcc PASS=1 lfsmake1 linux KCFG="-headers" lfsmake1 glibc - lfsmake1 cleanup-toolchain PASS=1 lfsmake1 gcc PASS=L lfsmake1 binutils PASS=2 lfsmake1 gcc PASS=2 @@ -313,7 +312,7 @@ buildtoolchain() { lfsmake1 texinfo lfsmake1 xz lfsmake1 fake-environ - lfsmake1 cleanup-toolchain PASS=2 + lfsmake1 cleanup-toolchain PASS=1 } buildbase() { @@ -324,7 +323,7 @@ buildbase() { lfsmake2 man-pages lfsmake2 glibc lfsmake2 tzdata - lfsmake2 cleanup-toolchain PASS=3 + lfsmake2 cleanup-toolchain PASS=2 lfsmake2 zlib lfsmake2 binutils lfsmake2 gmp From 4162dbaef183234fc0651afb70cf8839dc8fb113 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 12 Apr 2017 11:07:33 +0100 Subject: [PATCH 339/464] Support building for armv7hl Signed-off-by: Michael Tremer --- make.sh | 4 ++++ tools/make-functions | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/make.sh b/make.sh index beaee1eeb..fc1a02b33 100755 --- a/make.sh +++ b/make.sh @@ -260,6 +260,10 @@ buildtoolchain() { ;; # ARM + arvm7hl:armv7hl|armv7hl:armv7l) + # These are working. + ;; + armv5tel:armv5tel|armv5tel:armv5tejl|armv5tel:armv6l|armv5tel:armv7l|armv5tel:aarch64) # These are working. ;; diff --git a/tools/make-functions b/tools/make-functions index 78edf7d53..dc17171c1 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -86,6 +86,12 @@ configure_target() { CFLAGS_ARCH="" ;; + armv7hl) + BUILDTARGET="${target_arch}-unknown-linux-gnueabi" + CROSSTARGET="${target_arch}-cross-linux-gnueabi" + CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -mthumb" + ;; + armv5tel) BUILDTARGET="${target_arch}-unknown-linux-gnueabi" CROSSTARGET="${target_arch}-cross-linux-gnueabi" @@ -131,9 +137,14 @@ configure_target_guess() { echo "aarch64" ;; - armv7*|armv6*|armv5*) + armv7*) + echo "armv7hl" + ;; + + armv6*|armv5*) echo "armv5tel" ;; + *) exiterror "Cannot guess target architecture" ;; From f65d8173429c70c74eeabe1fd317cb911b576586 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 13 Apr 2017 15:12:49 +0100 Subject: [PATCH 340/464] linux: Install ARM headers for armv7hl Signed-off-by: Michael Tremer --- lfs/linux | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lfs/linux b/lfs/linux index ec005550f..8ced5dda1 100644 --- a/lfs/linux +++ b/lfs/linux @@ -56,6 +56,10 @@ else HEADERS_PREFIX = /usr endif +ifeq "$(MACHINE)" "armv7hl" + HEADERS_ARCH=arm +endif + ifeq "$(MACHINE)" "armv5tel" HEADERS_ARCH=arm endif From ff92f1ac389bcfe341d4fd95fa0cea7ce6574419 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 19 Apr 2017 09:15:44 +0100 Subject: [PATCH 341/464] armv7hl: Build without -mthumb Causes some linking problems when bootstrapping the toolchain Signed-off-by: Michael Tremer --- tools/make-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index dc17171c1..8ae50b4f0 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -89,7 +89,7 @@ configure_target() { armv7hl) BUILDTARGET="${target_arch}-unknown-linux-gnueabi" CROSSTARGET="${target_arch}-cross-linux-gnueabi" - CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -mthumb" + CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" ;; armv5tel) From 0c24d56d7c67b6c25250c4d50b83006cdddc9f93 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 19 Apr 2017 09:16:34 +0100 Subject: [PATCH 342/464] gcc: Build with hard floating point support on armv7hl Signed-off-by: Michael Tremer --- lfs/gcc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lfs/gcc b/lfs/gcc index 82a6732b2..3c6cb63cd 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -133,6 +133,11 @@ endif endif endif +ifeq "$(MACHINE)" "armv7hl" + EXTRA_CONFIG += \ + --with-float=hard +endif + ifeq "$(MACHINE)" "armv5tel" EXTRA_CONFIG += \ --with-float=soft \ From de1928cca7aef30c0aadb2cd6fecbb7bd07790f9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 19 Apr 2017 09:17:27 +0100 Subject: [PATCH 343/464] glibc: Enable hard float abi when compiling for armv7hl Signed-off-by: Michael Tremer --- lfs/glibc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lfs/glibc b/lfs/glibc index d850a503c..67f13a3fb 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -53,6 +53,10 @@ endif # Enable some extra optimization for the glibc code CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC +ifeq "$(MACHINE)" "armv7hl" + CFLAGS += -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard +endif + ifeq "$(MACHINE)" "i586" CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs endif From 5d512a1f81cabcdd77a9ff9c057a0172cf113f39 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 19 Apr 2017 09:19:33 +0100 Subject: [PATCH 344/464] binutils: Drop modifying CFLAGS in PASS=1 Signed-off-by: Michael Tremer --- lfs/binutils | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lfs/binutils b/lfs/binutils index 24155a1d7..7f5ef79ec 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -44,8 +44,6 @@ ifeq "$(ROOT)" "" EXTRA_INSTALL = tooldir=/usr else ifeq "$(PASS)" "1" - CFLAGS := $(patsubst -march=%,,$(CFLAGS)) - CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ @@ -127,14 +125,14 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && sed -i 's%\(^MULTIOSDIR = \).*%\1 ../lib%' libiberty/Makefile.in cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include else ifeq "$(PASS)" "2" - cd $(DIR_SRC)/binutils-build && make -C ld clean - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib + cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= + cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin endif endif From 174498ef96404461522ffd4bd6e0422c17fc4e7e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 17 Apr 2017 13:42:46 +0200 Subject: [PATCH 345/464] cleanup-toolchain: Use TOOLCHAIN variable Signed-off-by: Michael Tremer --- lfs/cleanup-toolchain | 8 ++++---- make.sh | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index e904bca87..e4839b951 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -51,7 +51,8 @@ md5 : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) -ifeq "$(PASS)" "1" + +ifeq "$(TOOLCHAIN)" "1" # Remove the first cross compiler which is not needed anymore. find /tools/ -name "$(CROSSTARGET)*" | xargs rm -rfv @@ -66,9 +67,7 @@ ifeq "$(PASS)" "1" # Update/create linker cache. /tools/sbin/ldconfig -endif - -ifeq "$(PASS)" "2" +else mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} @@ -80,4 +79,5 @@ ifeq "$(PASS)" "2" -e '/\*cpp:/{n;s@$$@ -isystem /usr/include@}' > \ $$(dirname $$(gcc -print-libgcc-file-name))/specs endif + @$(POSTBUILD) diff --git a/make.sh b/make.sh index fc1a02b33..3a62c4f77 100755 --- a/make.sh +++ b/make.sh @@ -316,7 +316,7 @@ buildtoolchain() { lfsmake1 texinfo lfsmake1 xz lfsmake1 fake-environ - lfsmake1 cleanup-toolchain PASS=1 + lfsmake1 cleanup-toolchain } buildbase() { @@ -327,7 +327,7 @@ buildbase() { lfsmake2 man-pages lfsmake2 glibc lfsmake2 tzdata - lfsmake2 cleanup-toolchain PASS=2 + lfsmake2 cleanup-toolchain lfsmake2 zlib lfsmake2 binutils lfsmake2 gmp From dc7d6b204d8ef2178a8fd4f0da28ec1ff6967913 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 17:09:42 +0200 Subject: [PATCH 346/464] make.sh: Cleanup of polluted environment The build environment is using a number of variables which occasionally conflicted with some other build systems. This patch cleans that up by renaming some variables and later unexporting them in the lfs files. Signed-off-by: Michael Tremer --- lfs/Config | 11 ++-- lfs/backports | 6 +- lfs/binutils | 12 ++-- lfs/cdrom | 14 ++--- lfs/clamav | 2 +- lfs/core-updates | 2 +- lfs/flash-images | 14 ++--- lfs/gcc | 8 +-- lfs/glibc | 33 +++++----- lfs/gmp | 6 +- lfs/gmp-compat | 2 +- lfs/initscripts | 2 +- lfs/installer | 2 +- lfs/linux | 34 +++------- lfs/memtest | 2 +- lfs/openssl | 8 +-- lfs/pakfire | 4 +- lfs/php | 2 +- lfs/sources-iso | 2 +- lfs/stage2 | 2 +- lfs/strongswan | 2 +- lfs/unzip | 2 +- lfs/vdr_dvbapi | 2 +- lfs/xen-image | 2 +- make.sh | 52 ++++++++-------- src/scripts/archive.files | 4 +- tools/make-functions | 127 +++++++++++++++++++------------------- 27 files changed, 176 insertions(+), 183 deletions(-) diff --git a/lfs/Config b/lfs/Config index 3101d8b5a..c9f6a88dd 100644 --- a/lfs/Config +++ b/lfs/Config @@ -30,6 +30,9 @@ # # ############################################################################### +# Cleanup environment from any variables +unexport BUILD_ARCH BUILD_PLATFORM BUILDTARGET CROSSTARGET TOOLCHAIN + # URLs that are common sources of downloads. If you're having trouble with # a site you should change its URL to that of a suitable mirror site. # @@ -117,13 +120,13 @@ define POSTBUILD if [ -s "$(TARGET)_diff" ]; then \ LFS_SCRIPT=$(firstword $(MAKEFILE_LIST))$(KCFG); \ echo $(LFS_SCRIPT); \ - ROOTFILE=$$(find $(DIR_SRC)/config/rootfiles/{common,packages}/{$(MACHINE),} -maxdepth 1 -type f -name $$LFS_SCRIPT 2>/dev/null | head -1); \ + ROOTFILE=$$(find $(DIR_SRC)/config/rootfiles/{common,packages}/{$(BUILD_ARCH),} -maxdepth 1 -type f -name $$LFS_SCRIPT 2>/dev/null | head -1); \ if [ "$$ROOTFILE" = "" ]; then \ touch $(TARGET)_missing_rootfile; \ ROOTFILE=$(TARGET)_missing_rootfile ; \ echo "error $$LFS_SCRIPT not found in config/rootfiles"; \ fi; \ - sed -e "s/BUILDTARGET/$(BUILDTARGET)/g" -e "s/KVER/$(KVER)/g" -e "s/MACHINE/$(MACHINE)/g" $$ROOTFILE > $(TARGET)_rootfile; \ + sed -e "s/BUILDTARGET/$(BUILDTARGET)/g" -e "s/KVER/$(KVER)/g" -e "s/MACHINE/$(BUILD_ARCH)/g" $$ROOTFILE > $(TARGET)_rootfile; \ for line in `cat $(TARGET)_diff`; do \ if grep -qG "^#$$line$$" $(TARGET)_rootfile; then echo "#$$line" >> $(TARGET); \ elif grep -qG "^$$line$$" $(TARGET)_rootfile ; then echo "$$line" >> $(TARGET); \ @@ -178,13 +181,13 @@ define PAK cp -f /usr/src/src/paks/default/{,un}install.sh /usr/src/src/paks/default/update.sh \ /install/packages/package; \ fi - for i in $(DIR_SRC)/config/rootfiles/packages/{$(MACHINE),}/$(PROG); do \ + for i in $(DIR_SRC)/config/rootfiles/packages/{$(BUILD_ARCH),}/$(PROG); do \ if [ -e "$${i}" ]; then \ cp -v $${i} /install/packages/package/ROOTFILES; \ break; \ fi; \ done - sed -e 's/BUILDTARGET/$(BUILDTARGET)/g' -e 's/KVER/$(KVER)/g' -e 's/MACHINE/$(MACHINE)/g' -i /install/packages/package/ROOTFILES + sed -e 's/BUILDTARGET/$(BUILDTARGET)/g' -e 's/KVER/$(KVER)/g' -e 's/MACHINE/$(BUILD_ARCH)/g' -i /install/packages/package/ROOTFILES sed -e 's/xxxKVERxxx/$(KVER)/g' -i /install/packages/package/install.sh chmod 755 /install/packages/package/{{,un}install,update}.sh cd / && tar cf /install/packages/package/files.tmp --files-from=/install/packages/package/ROOTFILES --exclude='#*' \ diff --git a/lfs/backports b/lfs/backports index 5706b753c..5f43ff4d6 100644 --- a/lfs/backports +++ b/lfs/backports @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX) -#ifeq "$(MACHINE_TYPE)" "arm" +#ifeq "$(BUILD_PLATFORM)" "arm" CFLAGS += -fno-PIC #endif @@ -87,7 +87,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1-ipfire-build.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-grsecurity.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-4.2.6-1-add_usbnet_modules.patch -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports-3.18.1-1_no_dma_sgtable_on_x86_64.patch endif @@ -126,7 +126,7 @@ endif cd $(DIR_APP) && sed -i -e "s/CPTCFG_CFG80211_DEFAULT_PS=y/# CPTCFG_CFG80211_DEFAULT_PS is not set/g" .config cd $(DIR_APP) && sed -i -e "s/CPTCFG_NFC=m/# CPTCFG_NFC is not set/g" .config -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && sed -i -e "s/CPTCFG_LIBERTAS_UAP=m/# CPTCFG_LIBERTAS_UAP is not set/g" .config endif diff --git a/lfs/binutils b/lfs/binutils index 7f5ef79ec..be890a88a 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -72,7 +72,7 @@ else endif endif -ifeq "$(MACHINE)" "armv5tel" +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --with-abi=aapcs-linux \ --with-float=soft @@ -124,15 +124,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Prevent installing libiberty to lib64. cd $(DIR_APP) && sed -i 's%\(^MULTIOSDIR = \).*%\1 ../lib%' libiberty/Makefile.in - cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) MACHINE= $(DIR_APP)/configure $(EXTRA_CONFIG) - cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) MACHINE= - cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install MACHINE= + cd $(DIR_SRC)/binutils-build && $(EXTRA_ENV) $(DIR_APP)/configure $(EXTRA_CONFIG) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_MAKE) $(MAKETUNING) + cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include else ifeq "$(PASS)" "2" - cd $(DIR_SRC)/binutils-build && make -C ld clean MACHINE= - cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib MACHINE= + cd $(DIR_SRC)/binutils-build && make -C ld clean + cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin endif endif diff --git a/lfs/cdrom b/lfs/cdrom index 79920b8dd..58e754f87 100644 --- a/lfs/cdrom +++ b/lfs/cdrom @@ -29,7 +29,7 @@ VER = ipfire THISAPP = cdrom TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" TAR_OPTIONS = else TAR_OPTIONS = --lzma @@ -64,7 +64,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) echo > /etc/mtab # Create filelist for packaging. - BUILDTARGET="$(BUILDTARGET)" MACHINE="$(MACHINE)" KVER="$(KVER)" \ + BUILDTARGET="$(BUILDTARGET)" BUILD_ARCH="$(BUILD_ARCH)" KVER="$(KVER)" \ $(DIR_SRC)/src/scripts/archive.files \ $(DIR_SRC)/config/rootfiles/common \ > /tmp/ROOTFILES @@ -89,7 +89,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Make the ISO mkdir -p /install/cdrom/boot/isolinux dd if=/dev/zero bs=1k count=2 > /install/cdrom/boot/isolinux/boot.catalog -ifneq "$(MACHINE_TYPE)" "arm" +ifneq "$(BUILD_PLATFORM)" "arm" cp /boot/vmlinuz-$(KVER)-ipfire /install/cdrom/boot/isolinux/vmlinuz dracut --force -a "installer" --strip --xz /install/cdrom/boot/isolinux/instroot $(KVER)-ipfire cp $(DIR_SRC)/config/syslinux/boot.png /install/cdrom/boot/isolinux/boot.png @@ -106,12 +106,12 @@ endif xargs md5sum > md5sum.txt mkdir -p /install/images -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ - . > /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso + . > /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso else cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \ - -c boot/isolinux/boot.catalog . > /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso - isohybrid /install/images/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso + -c boot/isolinux/boot.catalog . > /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso + isohybrid /install/images/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso endif diff --git a/lfs/clamav b/lfs/clamav index 650faecbe..7ba8b8342 100644 --- a/lfs/clamav +++ b/lfs/clamav @@ -36,7 +36,7 @@ PAK_VER = 34 DEPS = "" -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" CONFIGURE_FLAGS = --disable-fanotify endif diff --git a/lfs/core-updates b/lfs/core-updates index b40de13e0..75a8415f6 100644 --- a/lfs/core-updates +++ b/lfs/core-updates @@ -59,7 +59,7 @@ core/%: $(DIR_SRC)/src/scripts/archive.files \ $(DIR_SRC)/config/rootfiles/$@/filelists \ $(DIR_SRC)/config/rootfiles/$@/files \ - $(DIR_SRC)/config/rootfiles/$@/files.$(MACHINE) \ + $(DIR_SRC)/config/rootfiles/$@/files.$(BUILD_ARCH) \ > /tmp/ROOTFILES.tmp #remove excluded files from ROOTFILES diff --git a/lfs/flash-images b/lfs/flash-images index 4a1a4d6aa..554c04662 100644 --- a/lfs/flash-images +++ b/lfs/flash-images @@ -34,9 +34,9 @@ PART_BOOT = /dev/mapper/$(patsubst /dev/%,%,$(DEVICE))p1 PART_ROOT = /dev/mapper/$(patsubst /dev/%,%,$(DEVICE))p3 ifeq "$(SCON)" "1" - IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4-scon.$(MACHINE)-full-core$(CORE).img.gz + IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4-scon.$(BUILD_ARCH)-full-core$(CORE).img.gz else - IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4.$(MACHINE)-full-core$(CORE).img.gz + IMAGE_FILE = /install/images/$(SNAME)-$(VERSION).1gb-ext4.$(BUILD_ARCH)-full-core$(CORE).img.gz endif FSTAB_FMT = UUID=%s %-8s %-4s %-10s %d %d\n @@ -60,7 +60,7 @@ MNThdd := /install/harddisk IMG := /install/images/image.img # All sizes in blocks -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" BOOTLOADER = S_OFFSET = 8192 @@ -117,7 +117,7 @@ endif mount $(PART_BOOT) $(MNThdd)/boot # Install Pandaboard MLO and uboot first -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cp -v /boot/MLO $(MNThdd)/boot/ cp -v /boot/u-boot.img $(MNThdd)/boot/ cp -v /boot/zImage-ipfire-multi $(MNThdd)/boot/ @@ -135,7 +135,7 @@ ifeq "$(MACHINE_TYPE)" "arm" endif # Install IPFire -ifneq "$(MACHINE_TYPE)" "arm" +ifneq "$(BUILD_PLATFORM)" "arm" tar -x --lzma -C $(MNThdd)/ -f /install/cdrom/distro.img else tar -x -C $(MNThdd)/ -f /install/cdrom/distro.img @@ -154,7 +154,7 @@ ifeq "$(SCON)" "1" sed -i -e "s|6:2345:respawn:|#6:2345:respawn:|g" $(MNThdd)/etc/inittab sed -i -e "s|#7:2345:respawn:|7:2345:respawn:|g" $(MNThdd)/etc/inittab -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" sed -i -e "s| console=tty1 | console=ttyAMA0,115200n8 |g" $(MNThdd)/boot/cmdline.txt sed -i -e "s| console=tty1 | console=ttyO2,115200n8 |g" $(MNThdd)/boot/uEnv.txt endif @@ -228,7 +228,7 @@ endif # not copied to a block device) dd if=/dev/zero bs=1M count=$(PADDING) >> $(IMG) -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" # Install u-boot for LeMaker Banana Pi into image 8KB dd if=/usr/share/u-boot/banana_pi/u-boot-sunxi-with-spl.bin of=$(IMG) bs=1K seek=8 conv=notrunc endif diff --git a/lfs/gcc b/lfs/gcc index 3c6cb63cd..e898d6a8f 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -133,24 +133,24 @@ endif endif endif -ifeq "$(MACHINE)" "armv7hl" +ifeq "$(BUILD_ARCH)" "armv7hl" EXTRA_CONFIG += \ --with-float=hard endif -ifeq "$(MACHINE)" "armv5tel" +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --with-float=soft \ --disable-sjlj-exceptions endif -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" EXTRA_CONFIG += \ --with-arch=i586 \ --with-tune=generic endif -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" EXTRA_CONFIG += \ --disable-multilib endif diff --git a/lfs/glibc b/lfs/glibc index 67f13a3fb..6cb73119f 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -53,16 +53,16 @@ endif # Enable some extra optimization for the glibc code CFLAGS = -O3 -DNDEBUG -fasynchronous-unwind-tables -fPIC -DPIC -ifeq "$(MACHINE)" "armv7hl" +ifeq "$(BUILD_ARCH)" "armv7hl" CFLAGS += -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard endif -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CFLAGS += -march=i586 -mtune=generic -mno-tls-direct-seg-refs endif # Disable hardware FP for armv5tel -ifeq "$(MACHINE)" "armv5tel" +ifeq "$(BUILD_ARCH)" "armv5tel" EXTRA_CONFIG += \ --without-fp endif @@ -117,19 +117,21 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) @mkdir $(DIR_SRC)/glibc-build -ifeq "$(ROOT)" "" -ifeq "$(MACHINE_TYPE)" "arm" - cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ - scripts/test-installation.pl -else -ifeq "$(MACHINE)" "x86_64" +ifneq "$(TOOLCHAIN)" "1" + ifeq "$(BUILD_ARCH)" "x86_64" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib64 -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 -o|' \ scripts/test-installation.pl -else + endif + + ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \ scripts/test-installation.pl -endif -endif + endif + + ifeq "$(BUILD_ARCH)" "armv5tel" + cd $(DIR_APP) && sed -i 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.3 -o|' \ + scripts/test-installation.pl + endif endif cd $(DIR_SRC)/glibc-build && \ @@ -141,15 +143,16 @@ endif cd $(DIR_SRC)/glibc-build && make install -ifeq "$(ROOT)" "" +ifeq "$(TOOLCHAIN)" "1" + ln -svf lib /tools/lib64 +else # Creating the locales mkdir -p /usr/lib/locale cd $(DIR_SRC)/glibc-build && make localedata/install-locales # Timezone data will be shipped by tzdata. rm -rfv /usr/share/zoneinfo -else - ln -svf lib /tools/lib64 endif + @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build @$(POSTBUILD) diff --git a/lfs/gmp b/lfs/gmp index f8dd6bb19..8dc9b7350 100644 --- a/lfs/gmp +++ b/lfs/gmp @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_ARGS = ABI=32 - BUILDTARGET_PENTIUM4 = $(patsubst $(MACHINE)-%,pentium4-%,$(BUILDTARGET)) + BUILDTARGET_PENTIUM4 = $(patsubst $(BUILD_ARCH)-%,pentium4-%,$(BUILDTARGET)) endif CONFIGURE_OPTIONS = \ @@ -89,7 +89,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" # Build SSE/SSE2 optimised version for x86 cd $(DIR_APP) && make clean cd $(DIR_APP) && \ diff --git a/lfs/gmp-compat b/lfs/gmp-compat index 438e9578d..1e483f6c0 100644 --- a/lfs/gmp-compat +++ b/lfs/gmp-compat @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_ARGS = ABI=32 endif diff --git a/lfs/initscripts b/lfs/initscripts index ef7114c90..7d07b8ab3 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -199,7 +199,7 @@ $(TARGET) : done # ARM does not need acpid, intel no swconfig -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" rm -vf /etc/rc.d/init.d/acpid ln -sf ../init.d/swconfig /etc/rc.d/rcsysinit.d/S73swconfig else diff --git a/lfs/installer b/lfs/installer index 3364a4d7f..347d90e70 100644 --- a/lfs/installer +++ b/lfs/installer @@ -31,7 +31,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SLOGAN = An Open Source Firewall Solution -DOWNLOAD_URL = http://downloads.ipfire.org/releases/ipfire-2.x/$(VERSION)-core$(CORE)/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso +DOWNLOAD_URL = http://downloads.ipfire.org/releases/ipfire-2.x/$(VERSION)-core$(CORE)/$(SNAME)-$(VERSION).$(BUILD_ARCH)-full-core$(CORE).iso ############################################################################### # Top-level Rules diff --git a/lfs/linux b/lfs/linux index 8ced5dda1..5be7ab125 100644 --- a/lfs/linux +++ b/lfs/linux @@ -40,10 +40,16 @@ CXXFLAGS = PAK_VER = 73 DEPS = "" -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" KERNEL_ARCH = i386 else - KERNEL_ARCH = $(MACHINE) + KERNEL_ARCH = $(BUILD_ARCH) +endif + +ifeq "$(BUILD_ARCH)" "aarch64" + HEADERS_ARCH = arm64 +else + HEADERS_ARCH = $(BUILD_PLATFORM) endif VERSUFIX=ipfire$(KCFG) @@ -56,26 +62,6 @@ else HEADERS_PREFIX = /usr endif -ifeq "$(MACHINE)" "armv7hl" - HEADERS_ARCH=arm -endif - -ifeq "$(MACHINE)" "armv5tel" - HEADERS_ARCH=arm -endif - -ifeq "$(MACHINE)" "aarch64" - HEADERS_ARCH=arm64 -endif - -ifeq "$(MACHINE)" "x86_64" - HEADERS_ARCH=x86 -endif - -ifeq "$(MACHINE)" "i586" - HEADERS_ARCH=x86 -endif - ifeq "$(KCFG)" "" LASTKERNEL=1 endif @@ -264,7 +250,7 @@ else drivers/video/logo/logo_linux_clut224.ppm # Cleanup kernel source - cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE)-$(VERSUFIX) $(DIR_APP)/.config + cp $(DIR_SRC)/config/kernel/kernel.config.$(BUILD_ARCH)-$(VERSUFIX) $(DIR_APP)/.config cd $(DIR_APP) && make oldconfig cd $(DIR_APP) && make clean cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =.*/EXTRAVERSION\ =\ -$(VERSUFIX)/' Makefile @@ -295,7 +281,7 @@ endif cd $(DIR_APP) && make $(MAKETUNING) modules_install cd $(DIR_APP) && make $(MAKETUNING) firmware_install -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" cd $(DIR_APP) && make $(MAKETUNING) dtbs cd $(DIR_APP) && for f in $$(find arch/arm/boot/dts/ -name *.dtb); do \ mkdir -p /boot/dtb-$(VER)-$(VERSUFIX) ; \ diff --git a/lfs/memtest b/lfs/memtest index c92fab63b..a1d6e2c5f 100644 --- a/lfs/memtest +++ b/lfs/memtest @@ -76,7 +76,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # gcc-4.9.3 produce a corrupted version of memtest # we use the precomp version at the moment -#ifeq "$(MACHINE)" "i586" +#ifeq "$(BUILD_ARCH)" "i586" # # Enable SMP as default # cd $(DIR_APP) && sed -i -e "s|CONSERVATIVE_SMP 1|CONSERVATIVE_SMP 0|g" config.h # cd $(DIR_APP) && sed -i -e "s|scp |echo |g" Makefile diff --git a/lfs/openssl b/lfs/openssl index cece0074e..2fc710dc2 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -63,11 +63,11 @@ CONFIGURE_OPTIONS = \ no-srp \ -DSSL_FORBID_ENULL -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" CONFIGURE_OPTIONS += linux-x86_64 endif -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_OPTIONS += linux-elf ifneq "$(KCFG)" "-sse2" @@ -75,7 +75,7 @@ ifneq "$(KCFG)" "-sse2" endif endif -ifeq "$(MACHINE)" "armv5tel" +ifeq "$(BUILD_ARCH)" "armv5tel" CONFIGURE_OPTIONS += linux-generic32 endif @@ -123,7 +123,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2g-disable-sslv2v3.patch # i586 specific patches -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2a_auto_enable_padlock.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.2a_disable_ssse3_for_amd.patch endif diff --git a/lfs/pakfire b/lfs/pakfire index 00d1bb1c0..b584cc561 100644 --- a/lfs/pakfire +++ b/lfs/pakfire @@ -30,10 +30,10 @@ THISAPP = pakfire DIR_APP = /opt/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" PAKFIRE_VERSION = $(VERSION) else - PAKFIRE_VERSION = $(VERSION)-$(MACHINE) + PAKFIRE_VERSION = $(VERSION)-$(BUILD_ARCH) endif ############################################################################### diff --git a/lfs/php b/lfs/php index 1f33f0d7e..8717ccac1 100644 --- a/lfs/php +++ b/lfs/php @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE_TYPE)" "arm" +ifeq "$(BUILD_PLATFORM)" "arm" CFLAGS := $(patsubst -march=%,,$(CFLAGS)) endif diff --git a/lfs/sources-iso b/lfs/sources-iso index 9df159e72..4f658cf54 100644 --- a/lfs/sources-iso +++ b/lfs/sources-iso @@ -48,5 +48,5 @@ install : $(DIR_INFO)/_build.othersrc-list.log # make the sources CDROM iso cd /install/cdrom && mkisofs -J -r -V "$(NAME)_$(VERSION)" \ - . > /install/images/$(SNAME)-sources-cd-$(VERSION).$(MACHINE).iso + . > /install/images/$(SNAME)-sources-cd-$(VERSION).$(BUILD_ARCH).iso rm -rf /install/cdrom/* diff --git a/lfs/stage2 b/lfs/stage2 index 1256fd365..b548c0c6c 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -64,7 +64,7 @@ $(TARGET) : # Symlink /var/run -> /run. ln -svf ../run /var/run -ifeq "$(MACHINE)" "x86_64" +ifeq "$(BUILD_ARCH)" "x86_64" ln -svf lib /lib64 ln -svf lib /usr/lib64 endif diff --git a/lfs/strongswan b/lfs/strongswan index 7f6a95b6e..32f549219 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/strongswan-$(VER) TARGET = $(DIR_INFO)/$(THISAPP) -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" CONFIGURE_OPTIONS = \ --enable-padlock else diff --git a/lfs/unzip b/lfs/unzip index 7853dd0b4..793890d28 100644 --- a/lfs/unzip +++ b/lfs/unzip @@ -72,7 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make -f unix/Makefile clean cd $(DIR_APP)/unix && ./configure -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" cd $(DIR_APP) && make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 generic else # ARM/x86_64 cannot use the x86 32 bit assembly code. diff --git a/lfs/vdr_dvbapi b/lfs/vdr_dvbapi index 2cf34e73d..f9339e6b8 100644 --- a/lfs/vdr_dvbapi +++ b/lfs/vdr_dvbapi @@ -102,7 +102,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP)* && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) -ifeq "$(MACHINE)" "i586" +ifeq "$(BUILD_ARCH)" "i586" # Build an SSE enabled version. $(call BUILD,-sse) endif diff --git a/lfs/xen-image b/lfs/xen-image index d5a747bcd..78c242bf8 100644 --- a/lfs/xen-image +++ b/lfs/xen-image @@ -47,7 +47,7 @@ md5 : ############################################################################### # Installation Details ############################################################################### -IMGinst := /install/images/$(SNAME)-$(VERSION).xen.$(MACHINE)-downloader-core$(CORE).tar.bz2 +IMGinst := /install/images/$(SNAME)-$(VERSION).xen.$(BUILD_ARCH)-downloader-core$(CORE).tar.bz2 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) rm -rf /install/images/$(SNAME) $(IMGinst) && mkdir -p /install/images/$(SNAME) diff --git a/make.sh b/make.sh index 3a62c4f77..7b0249928 100755 --- a/make.sh +++ b/make.sh @@ -39,8 +39,7 @@ GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit TOOLCHAINVER=12 # New architecture variables -BUILD_ARCH="$(uname -m)" -BUILDMACHINE="${BUILD_ARCH}" +HOST_ARCH="$(uname -m)" # Debian specific settings if [ ! -e /etc/debian_version ]; then @@ -69,10 +68,13 @@ if [ -f .config ]; then . .config fi -if [ -n "${TARGET_ARCH}" ]; then - configure_target "${TARGET_ARCH}" +if [ -n "${BUILD_ARCH}" ]; then + configure_build "${BUILD_ARCH}" +elif [ -n "${TARGET_ARCH}" ]; then + configure_build "${TARGET_ARCH}" + unset TARGET_ARCH else - configure_target "default" + configure_build "default" fi if [ -z $EDITOR ]; then @@ -221,13 +223,13 @@ prepareenv() { # Run LFS static binary creation scripts one by one export CCACHE_DIR=$BASEDIR/ccache export CCACHE_COMPRESS=1 - export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${TARGET_ARCH}" + export CCACHE_COMPILERCHECK="string:toolchain-${TOOLCHAINVER} ${BUILD_ARCH}" # Remove pre-install list of installed files in case user erase some files before rebuild rm -f $BASEDIR/build/usr/src/lsalr 2>/dev/null # Prepare string for /etc/system-release. - SYSTEM_RELEASE="${NAME} ${VERSION} (${MACHINE})" + SYSTEM_RELEASE="${NAME} ${VERSION} (${BUILD_ARCH})" if [ "$(git status -s | wc -l)" == "0" ]; then GIT_STATUS="" else @@ -245,7 +247,7 @@ prepareenv() { buildtoolchain() { local error=false - case "${TARGET_ARCH}:${BUILD_ARCH}" in + case "${BUILD_ARCH}:${HOST_ARCH}" in # x86_64 x86_64:x86_64) # This is working. @@ -273,7 +275,7 @@ buildtoolchain() { esac ${error} && \ - exiterror "Cannot build ${MACHINE} toolchain on $(uname -m). Please use the download if any." + exiterror "Cannot build ${BUILD_ARCH} toolchain on $(uname -m). Please use the download if any." local gcc=$(type -p gcc) if [ -z "${gcc}" ]; then @@ -426,7 +428,7 @@ buildipfire() { ipfiremake libnetfilter_cttimeout ipfiremake iptables - case "${TARGET_ARCH}" in + case "${BUILD_ARCH}" in x86_64) ipfiremake linux KCFG="" ipfiremake backports KCFG="" @@ -484,7 +486,7 @@ buildipfire() { esac ipfiremake xtables-addons USPACE="1" ipfiremake openssl - [ "${TARGET_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2' + [ "${BUILD_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2' ipfiremake libgpg-error ipfiremake libgcrypt ipfiremake libassuan @@ -947,7 +949,7 @@ buildpackages() { cd $BASEDIR # remove not useable iso on armv5tel (needed to build flash images) - [ "${TARGET_ARCH}" = "armv5tel" ] && rm -rf *.iso + [ "${BUILD_ARCH}" = "armv5tel" ] && rm -rf *.iso for i in `ls *.bz2 *.img.gz *.iso`; do md5sum $i > $i.md5 @@ -978,7 +980,7 @@ ipfirepackages() { ipfiremake core-updates local i - for i in $(find $BASEDIR/config/rootfiles/packages{/${MACHINE},} -maxdepth 1 -type f); do + for i in $(find $BASEDIR/config/rootfiles/packages{/${BUILD_ARCH},} -maxdepth 1 -type f); do i=$(basename ${i}) if [ -e $BASEDIR/lfs/$i ]; then ipfiredist $i @@ -1012,7 +1014,7 @@ done case "$1" in build) clear - PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz 2> /dev/null | head -n 1` + PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz 2> /dev/null | head -n 1` #only restore on a clean disk if [ ! -f log/cleanup-toolchain-2-tools ]; then if [ ! -n "$PACKAGE" ]; then @@ -1106,7 +1108,7 @@ downloadsrc) if [ -f "$i" -a "$i" != "Config" ]; then lfsmakecommoncheck ${i} || continue - make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$i\t ($c/$MAX_RETRIES)" download >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then beautify message FAIL @@ -1124,7 +1126,7 @@ downloadsrc) for i in *; do if [ -f "$i" -a "$i" != "Config" ]; then lfsmakecommoncheck ${i} > /dev/null || continue - make -s -f $i LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ + make -s -f $i LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$i\t " md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then echo -ne "MD5 difference in lfs/$i" @@ -1147,25 +1149,25 @@ toolchain) prepareenv beautify build_stage "Toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" buildtoolchain - echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for $MACHINE" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: Create toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains - cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ + cd $BASEDIR && tar -zc --exclude='log/_build.*.log' -f cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \ build/tools build/bin/sh log >> $LOGFILE - md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.tar.gz \ - > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE.md5 + md5sum cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz \ + > cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.md5 stdumount ;; gettoolchain) # arbitrary name to be updated in case of new toolchain package upload - PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-$MACHINE + PACKAGE=$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH} if [ ! -f $BASEDIR/cache/toolchains/$PACKAGE.tar.gz ]; then URL_TOOLCHAIN=`grep URL_TOOLCHAIN lfs/Config | awk '{ print $3 }'` test -d $BASEDIR/cache/toolchains || mkdir -p $BASEDIR/cache/toolchains - echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for $MACHINE" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: Load toolchain tar.gz for ${BUILD_ARCH}" | tee -a $LOGFILE cd $BASEDIR/cache/toolchains wget -U "IPFireSourceGrabber/2.x" $URL_TOOLCHAIN/$PACKAGE.tar.gz $URL_TOOLCHAIN/$PACKAGE.md5 >& /dev/null if [ $? -ne 0 ]; then - echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for $MACHINE machine" | tee -a $LOGFILE + echo "`date -u '+%b %e %T'`: error downloading $PACKAGE toolchain for ${BUILD_ARCH} machine" | tee -a $LOGFILE else if [ "`md5sum $PACKAGE.tar.gz | awk '{print $1}'`" = "`cat $PACKAGE.md5 | awk '{print $1}'`" ]; then echo "`date -u '+%b %e %T'`: toolchain md5 ok" | tee -a $LOGFILE @@ -1179,11 +1181,11 @@ gettoolchain) ;; othersrc) prepareenv - echo -ne "`date -u '+%b %e %T'`: Build sources iso for $MACHINE" | tee -a $LOGFILE + echo -ne "`date -u '+%b %e %T'`: Build sources iso for ${BUILD_ARCH}" | tee -a $LOGFILE chroot $LFS /tools/bin/env -i HOME=/root \ TERM=$TERM PS1='\u:\w\$ ' \ PATH=/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" MACHINE=$MACHINE \ + VERSION=$VERSION NAME="$NAME" SNAME="$SNAME" BUILD_ARCH="${BUILD_ARCH}" \ /bin/bash -x -c "cd /usr/src/lfs && make -f sources-iso LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 mv $LFS/install/images/ipfire-* $BASEDIR >> $LOGFILE 2>&1 if [ $? -eq "0" ]; then diff --git a/src/scripts/archive.files b/src/scripts/archive.files index ca0ee51b6..0ed237bfc 100755 --- a/src/scripts/archive.files +++ b/src/scripts/archive.files @@ -31,7 +31,7 @@ for dir in $@; do continue fi - for exclude in ${dir}/${MACHINE}/*; do + for exclude in ${dir}/${BUILD_ARCH}/*; do [ -f "${exclude}" ] || continue EXCLUDE="$EXCLUDE $exclude" done @@ -52,4 +52,4 @@ for dir in $@; do done cat ${FILELIST} 2>/dev/null | grep -v ^# | sort | uniq | \ - sed -e "s/KVER/${KVER}/g" -e "s/MACHINE/${MACHINE}/g" -e "s/BUILDTARGET/${BUILDTARGET}/g" + sed -e "s/KVER/${KVER}/g" -e "s/MACHINE/${BUILD_ARCH}/g" -e "s/BUILDTARGET/${BUILDTARGET}/g" diff --git a/tools/make-functions b/tools/make-functions index 8ae50b4f0..7417350a7 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -60,65 +60,66 @@ WARN="\\033[1;35m" FAIL="\\033[1;31m" NORMAL="\\033[0;39m" -configure_target() { - local target_arch="${1}" +configure_build() { + local build_arch="${1}" - if [ "${target_arch}" = "default" ]; then - target_arch="$(configure_target_guess)" + if [ "${build_arch}" = "default" ]; then + build_arch="$(configure_build_guess)" fi - case "${target_arch}" in + case "${build_arch}" in x86_64) - BUILDTARGET="${target_arch}-unknown-linux-gnu" - CROSSTARGET="${target_arch}-cross-linux-gnu" + BUILDTARGET="${build_arch}-unknown-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="x86" CFLAGS_ARCH="-m64 -mtune=generic" ;; i586) - BUILDTARGET="${target_arch}-pc-linux-gnu" - CROSSTARGET="${target_arch}-cross-linux-gnu" + BUILDTARGET="${build_arch}-pc-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="x86" CFLAGS_ARCH="-march=i586 -mtune=generic -fomit-frame-pointer" ;; aarch64) - BUILDTARGET="${target_arch}-unknown-linux-gnu" - CROSSTARGET="${target_arch}-cross-linux-gnu" + BUILDTARGET="${build_arch}-unknown-linux-gnu" + CROSSTARGET="${build_arch}-cross-linux-gnu" + BUILD_PLATFORM="arm" CFLAGS_ARCH="" ;; armv7hl) - BUILDTARGET="${target_arch}-unknown-linux-gnueabi" - CROSSTARGET="${target_arch}-cross-linux-gnueabi" + BUILDTARGET="${build_arch}-unknown-linux-gnueabi" + CROSSTARGET="${build_arch}-cross-linux-gnueabi" + BUILD_PLATFORM="arm" CFLAGS_ARCH="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard" ;; armv5tel) - BUILDTARGET="${target_arch}-unknown-linux-gnueabi" - CROSSTARGET="${target_arch}-cross-linux-gnueabi" + BUILDTARGET="${build_arch}-unknown-linux-gnueabi" + CROSSTARGET="${build_arch}-cross-linux-gnueabi" + BUILD_PLATFORM="arm" CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer" - MACHINE_TYPE="arm" ;; *) - exiterror "Cannot build for architure ${target_arch}" + exiterror "Cannot build for architure ${build_arch}" ;; esac # Check if the QEMU helper is available if needed. - if qemu_is_required "${target_arch}"; then - local qemu_target_helper="$(qemu_find_target_helper_name "${target_arch}")" + if qemu_is_required "${build_arch}"; then + local qemu_build_helper="$(qemu_find_build_helper_name "${build_arch}")" - if [ -n "${qemu_target_helper}" ]; then - QEMU_TARGET_HELPER="${qemu_target_helper}" + if [ -n "${qemu_build_helper}" ]; then + QEMU_TARGET_HELPER="${qemu_build_helper}" else - exiterror "Could not find a binfmt_misc helper entry for ${target_arch}" + exiterror "Could not find a binfmt_misc helper entry for ${build_arch}" fi fi - TARGET_ARCH="${target_arch}" - - # Old variable names - MACHINE="${TARGET_ARCH}" + BUILD_ARCH="${build_arch}" # Enables hardening HARDENING_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4" @@ -127,8 +128,8 @@ configure_target() { CXXFLAGS="${CFLAGS}" } -configure_target_guess() { - case "${BUILD_ARCH}" in +configure_build_guess() { + case "${HOST_ARCH}" in x86_64|i686|i586) echo "i586" ;; @@ -146,7 +147,7 @@ configure_target_guess() { ;; *) - exiterror "Cannot guess target architecture" + exiterror "Cannot guess build architecture" ;; esac } @@ -359,7 +360,7 @@ fake_environ() { env="${env} UTS_RELEASE=${KVER}" # Fake machine version. - env="${env} UTS_MACHINE=${TARGET_ARCH}" + env="${env} UTS_MACHINE=${BUILD_ARCH}" echo "${env}" } @@ -373,7 +374,7 @@ qemu_environ() { fi # Set default qemu options - case "${TARGET_ARCH}" in + case "${BUILD_ARCH}" in arm*) QEMU_CPU="${QEMU_CPU:-cortex-a9}" @@ -388,13 +389,13 @@ qemu_environ() { } qemu_is_required() { - local target_arch="${1}" + local build_arch="${1}" - if [ -z "${target_arch}" ]; then - target_arch="${TARGET_ARCH}" + if [ -z "${build_arch}" ]; then + build_arch="${BUILD_ARCH}" fi - case "${BUILD_ARCH},${target_arch}" in + case "${HOST_ARCH},${build_arch}" in x86_64,arm*|i?86,arm*|i?86,x86_64) return 0 ;; @@ -448,11 +449,11 @@ qemu_install_helper() { exiterror "Could not find a statically-linked QEMU emulator: ${QEMU_TARGET_HELPER}" } -qemu_find_target_helper_name() { - local target_arch="${1}" +qemu_find_build_helper_name() { + local build_arch="${1}" local magic - case "${target_arch}" in + case "${build_arch}" in arm*) magic="7f454c4601010100000000000000000002002800" ;; @@ -510,8 +511,7 @@ entershell() { KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + BUILD_ARCH="${BUILD_ARCH}" \ $(fake_environ) \ $(qemu_environ) \ /tools/bin/bash -i @@ -548,8 +548,8 @@ lfsmakecommoncheck() # Check if this package is supported by our architecture. # If no SUP_ARCH is found, we assume the package can be built for all. if grep "^SUP_ARCH" ${BASEDIR}/lfs/${1} >/dev/null; then - # Check if package supports ${MACHINE} or all architectures. - if ! grep -E "^SUP_ARCH.*${MACHINE}|^SUP_ARCH.*all" ${BASEDIR}/lfs/${1} >/dev/null; then + # Check if package supports ${BUILD_ARCH} or all architectures. + if ! grep -E "^SUP_ARCH.*${BUILD_ARCH}|^SUP_ARCH.*all" ${BASEDIR}/lfs/${1} >/dev/null; then beautify result SKIP return 1 fi @@ -567,15 +567,13 @@ lfsmakecommoncheck() echo -ne "`date -u '+%b %e %T'`: Building $* " >> $LOGFILE - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ - MACHINE_TYPE="$MACHINE_TYPE" \ + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$1\t " download >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then exiterror "Download error in $1" fi - cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR MACHINE=$MACHINE \ - MACHINE_TYPE="$MACHINE_TYPE" \ + cd $BASEDIR/lfs && make -s -f $* LFS_BASEDIR=$BASEDIR BUILD_ARCH="${BUILD_ARCH}" \ MESSAGE="$1\t md5sum" md5 >> $LOGFILE 2>&1 if [ $? -ne 0 ]; then exiterror "md5sum error in $1, check file in cache or signature" @@ -590,17 +588,22 @@ lfsmake1() { local PKG_TIME_START=`date +%s` - cd $BASEDIR/lfs && \ + cd $BASEDIR/lfs && env -i \ PATH="/tools/ccache/bin:/tools/bin:$PATH" \ - make -f $* TOOLCHAIN=1 BUILDTARGET=$BUILDTARGET \ - CROSSTARGET="${CROSSTARGET}" \ - MACHINE=$MACHINE \ - MACHINE_TYPE=$MACHINE_TYPE \ - LFS_BASEDIR=$BASEDIR \ - ROOT=$LFS \ - KVER=$KVER \ - MAKETUNING=$MAKETUNING \ - install >> $LOGFILE 2>&1 + make -f $* \ + TOOLCHAIN=1 \ + CROSSTARGET="${CROSSTARGET}" \ + BUILDTARGET="${BUILDTARGET}" \ + BUILD_ARCH="${BUILD_ARCH}" \ + BUILD_PLATFORM="${BUILD_PLATFORM}" \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ + LFS_BASEDIR="${BASEDIR}" \ + ROOT="${LFS}" \ + KVER="${KVER}" \ + MAKETUNING="${MAKETUNING}" \ + install >> $LOGFILE 2>&1 + local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` @@ -637,8 +640,7 @@ lfsmake2() { KVER=$KVER MAKETUNING=$MAKETUNING \ BUILDTARGET="$BUILDTARGET" \ CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + BUILD_ARCH="${BUILD_ARCH}" \ $(qemu_environ) \ $(fake_environ) \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ @@ -680,8 +682,7 @@ ipfiremake() { KVER=$KVER MAKETUNING=$MAKETUNING \ BUILDTARGET="$BUILDTARGET" \ CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + BUILD_ARCH="${BUILD_ARCH}" \ $(qemu_environ) \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -721,8 +722,7 @@ ipfiredist() { KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + BUILD_ARCH="${BUILD_ARCH}" \ $(qemu_environ) \ $(fake_environ) \ /bin/bash -x -c "cd /usr/src/lfs && \ @@ -761,8 +761,7 @@ installmake() { KVER=$KVER \ BUILDTARGET="$BUILDTARGET" \ CROSSTARGET="${CROSSTARGET}" \ - MACHINE="$MACHINE" \ - MACHINE_TYPE="$MACHINE_TYPE" \ + BUILD_ARCH="${BUILD_ARCH}" \ LD_LIBRARY_PATH=/tools/lib \ /tools/bin/bash -x -c "cd /usr/src/lfs && \ /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 From 58256cf1521fb87cc6beb4e1aee9ead90f37a49f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 17:45:49 +0200 Subject: [PATCH 347/464] make.sh: Correctly configure ccache in toolchain stage Signed-off-by: Michael Tremer --- tools/make-functions | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/make-functions b/tools/make-functions index 7417350a7..01222569f 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -602,6 +602,9 @@ lfsmake1() { ROOT="${LFS}" \ KVER="${KVER}" \ MAKETUNING="${MAKETUNING}" \ + CCACHE_DIR="${CCACHE_DIR}" \ + CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ + CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ install >> $LOGFILE 2>&1 local COMPILE_SUCCESS=$? From 9d928e829cfe6eaa748dc58873ac22eb29a66ff6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 18:02:15 +0200 Subject: [PATCH 348/464] make.sh: Create a function to execute a command in chroot Signed-off-by: Michael Tremer --- tools/make-functions | 59 +++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/tools/make-functions b/tools/make-functions index 01222569f..08ac7a1a6 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -490,36 +490,49 @@ file_is_static() { file ${file} 2>/dev/null | grep -q "statically linked" } +enterchroot() { + # Install QEMU helper, if needed + qemu_install_helper + + local PATH="/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin" + + PATH="${PATH}" chroot ${LFS} env -i \ + HOME="/root" \ + TERM="${TERM}" \ + PS1="${PS1}" \ + PATH="${PATH}" \ + NAME="${NAME}" \ + SNAME="${SNAME}" \ + VERSION="${VERSION}" \ + SLOGAN="${SLOGAN}" \ + CONFIG_ROOT="${CONFIG_ROOT}" \ + CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ + CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ + BUILDTARGET="${BUILDTARGET}" \ + CROSSTARGET="${CROSSTARGET}" \ + BUILD_ARCH="${BUILD_ARCH}" \ + CCACHE_DIR=/usr/src/ccache \ + CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ + CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ + KVER="${KVER}" \ + $(fake_environ) \ + $(qemu_environ) \ + $@ +} + entershell() { if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/" fi - # Install QEMU helper, if needed - qemu_install_helper - echo "Entering to a shell inside LFS chroot, go out with exit" - chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='ipfire build chroot ($(uname -m)) \u:\w\$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - $(fake_environ) \ - $(qemu_environ) \ - /tools/bin/bash -i - if [ $? -ne 0 ]; then - beautify message FAIL - exiterror "chroot error" - else + local PS1="ipfire build chroot ($(uname -m)) \u:\w\$ " + + if enterchroot bash -i; then stdumount + else + beautify message FAIL + exiterror "chroot error" fi } From 1977473d4ac08e9374fc35961d31bf7894d0a703 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 20 Apr 2017 18:43:38 +0200 Subject: [PATCH 349/464] make.sh: Let lfsmake2 use the new enterchroot function Signed-off-by: Michael Tremer --- tools/make-functions | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/tools/make-functions b/tools/make-functions index 08ac7a1a6..8854ddf81 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -501,9 +501,12 @@ enterchroot() { TERM="${TERM}" \ PS1="${PS1}" \ PATH="${PATH}" \ + SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ + PAKFIRE_CORE="${PAKFIRE_CORE}" \ NAME="${NAME}" \ SNAME="${SNAME}" \ VERSION="${VERSION}" \ + CORE="${CORE}" \ SLOGAN="${SLOGAN}" \ CONFIG_ROOT="${CONFIG_ROOT}" \ CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ @@ -517,7 +520,7 @@ enterchroot() { KVER="${KVER}" \ $(fake_environ) \ $(qemu_environ) \ - $@ + "$@" } entershell() { @@ -637,30 +640,13 @@ lfsmake2() { lfsmakecommoncheck $* [ $? == 1 ] && return 0 - # Install QEMU helper, if needed - qemu_install_helper - local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ - VERSION=$VERSION PAKFIRE_CORE="${PAKFIRE_CORE}" \ - SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - $(qemu_environ) \ - $(fake_environ) \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 + local PS1='\u:\w$ ' + + enterchroot \ + bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src install" \ + >> ${LOGFILE} 2>&1 + local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` From e5ecbf7d6bf00b0087fc95dcf439dc3de95ae0c5 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 21 Apr 2017 12:04:42 +0200 Subject: [PATCH 350/464] make.sh: Use enterchroot function in ipfiredist Signed-off-by: Michael Tremer --- tools/make-functions | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/tools/make-functions b/tools/make-functions index 8854ddf81..e581ceffb 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -705,30 +705,13 @@ ipfiremake() { ipfiredist() { lfsmakecommoncheck $* [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - $(qemu_environ) \ - $(fake_environ) \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1 + local PS1='\u:\w$ ' + + enterchroot \ + bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src dist" \ + >> ${LOGFILE} 2>&1 local COMPILE_SUCCESS=$? local PKG_TIME_END=`date +%s` From 51777e5d7ce7555f6e908a215b245a10fcf2c6fa Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 21 Apr 2017 17:08:45 +0200 Subject: [PATCH 351/464] gcc: Always pass --disable-multilib Signed-off-by: Michael Tremer --- lfs/gcc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lfs/gcc b/lfs/gcc index e898d6a8f..531470863 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -150,12 +150,8 @@ ifeq "$(BUILD_ARCH)" "i586" --with-tune=generic endif -ifeq "$(BUILD_ARCH)" "x86_64" - EXTRA_CONFIG += \ - --disable-multilib -endif - EXTRA_CONFIG += \ + --disable-multilib \ --with-bugurl=http://bugtracker.ipfire.org \ --disable-libunwind-exceptions \ --enable-gnu-unique-object From b7093f17d5eeafbe270c4999046fa90216d14a44 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 21 Apr 2017 17:09:17 +0200 Subject: [PATCH 352/464] stage1: New build script Creates some basic directories and symlinks in toolchain stage Signed-off-by: Michael Tremer --- lfs/Config | 8 ++++++++ lfs/glibc | 4 +--- lfs/stage1 | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ make.sh | 1 + 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 lfs/stage1 diff --git a/lfs/Config b/lfs/Config index c9f6a88dd..d7d2a24a1 100644 --- a/lfs/Config +++ b/lfs/Config @@ -33,6 +33,14 @@ # Cleanup environment from any variables unexport BUILD_ARCH BUILD_PLATFORM BUILDTARGET CROSSTARGET TOOLCHAIN +ifeq "$(BUILD_ARCH)" "aarch64" + IS_64BIT = 1 +endif + +ifeq "$(BUILD_ARCH)" "x86_64" + IS_64BIT = 1 +endif + # URLs that are common sources of downloads. If you're having trouble with # a site you should change its URL to that of a suitable mirror site. # diff --git a/lfs/glibc b/lfs/glibc index 6cb73119f..4b69f18d4 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -143,9 +143,7 @@ endif cd $(DIR_SRC)/glibc-build && make install -ifeq "$(TOOLCHAIN)" "1" - ln -svf lib /tools/lib64 -else +ifneq "$(TOOLCHAIN)" "1" # Creating the locales mkdir -p /usr/lib/locale cd $(DIR_SRC)/glibc-build && make localedata/install-locales diff --git a/lfs/stage1 b/lfs/stage1 new file mode 100644 index 000000000..c4c578411 --- /dev/null +++ b/lfs/stage1 @@ -0,0 +1,57 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = ipfire + +THISAPP = stage1 +TARGET = $(DIR_INFO)/$(THISAPP) + +############################################################################### +# Top-level Rules +############################################################################### + +install : $(TARGET) + +check : + +download : + +md5 : + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : + @$(PREBUILD) + + mkdir -pv /tools/lib + +ifeq "$(IS_64BIT)" "1" + ln -svf lib /tools/lib64 +endif + + @$(POSTBUILD) diff --git a/make.sh b/make.sh index 7b0249928..4b1cea4a2 100755 --- a/make.sh +++ b/make.sh @@ -285,6 +285,7 @@ buildtoolchain() { LOGFILE="$BASEDIR/log/_build.toolchain.log" export LOGFILE + lfsmake1 stage1 lfsmake1 ccache PASS=1 lfsmake1 binutils PASS=1 lfsmake1 gcc PASS=1 From bdc6837d866004ec11b293a315eb26d153f3fbb1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Apr 2017 13:11:54 +0200 Subject: [PATCH 353/464] make.sh: Use a better marker to determine if toolchain is present Signed-off-by: Michael Tremer --- lfs/cleanup-toolchain | 3 +++ make.sh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index e4839b951..2fc460ee4 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -67,6 +67,9 @@ ifeq "$(TOOLCHAIN)" "1" # Update/create linker cache. /tools/sbin/ldconfig + + # Set a marker when the toolchain was successfully built + touch /tools/.toolchain-successful else mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(BUILDTARGET)/bin/{ld,ld-old} diff --git a/make.sh b/make.sh index 4b1cea4a2..a5ebe0dd9 100755 --- a/make.sh +++ b/make.sh @@ -1017,7 +1017,7 @@ build) clear PACKAGE=`ls -v -r $BASEDIR/cache/toolchains/$SNAME-$VERSION-toolchain-$TOOLCHAINVER-${BUILD_ARCH}.tar.gz 2> /dev/null | head -n 1` #only restore on a clean disk - if [ ! -f log/cleanup-toolchain-2-tools ]; then + if [ ! -e "${BASEDIR}/build/tools/.toolchain-successful" ]; then if [ ! -n "$PACKAGE" ]; then beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" prepareenv From d0bba4d26e378218b9311dcf934106bdfe8b7b07 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Apr 2017 13:12:37 +0200 Subject: [PATCH 354/464] cleanup-toolchain: Fix TARGET for toolchain and non-toolchain pass Signed-off-by: Michael Tremer --- lfs/cleanup-toolchain | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lfs/cleanup-toolchain b/lfs/cleanup-toolchain index 2fc460ee4..91e056ed8 100644 --- a/lfs/cleanup-toolchain +++ b/lfs/cleanup-toolchain @@ -27,7 +27,12 @@ include Config VER = ipfire THISAPP = cleanup-toolchain -TARGET = $(DIR_INFO)/$(THISAPP)-$(PASS)-tools + +ifeq "$(TOOLCHAIN)" "1" + TARGET = $(DIR_INFO)/$(THISAPP)-tools +else + TARGET = $(DIR_INFO)/$(THISAPP) +endif GCC_VER = 4.1.2 From 8bc5ded22e29e1ab89aa2015ae9095dae8bf76e4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Apr 2017 10:17:43 +0100 Subject: [PATCH 355/464] gcc: Do not build libmpx on x86 in first pass in toolchain Signed-off-by: Michael Tremer --- lfs/gcc | 1 + 1 file changed, 1 insertion(+) diff --git a/lfs/gcc b/lfs/gcc index 531470863..6638ba07e 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -73,6 +73,7 @@ ifeq "$(PASS)" "1" --disable-libatomic \ --disable-libmudflap \ --disable-libssp \ + --disable-libmpx \ --disable-libgomp \ --disable-libquadmath \ --disable-libstdc++-v3 \ From b45e371ff71e6a321849ede22bcd606d2b42cebd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Apr 2017 19:31:37 +0100 Subject: [PATCH 356/464] gcc: Perform full bootstrap on ARM32 The build fails with various reasons and a full bootstrap always succeeds. This takes a very long time so we try to avoid it where ever possible. Signed-off-by: Michael Tremer --- lfs/gcc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lfs/gcc b/lfs/gcc index 6638ba07e..fc9517640 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -41,6 +41,14 @@ CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) CFLAGS := $(filter-out -fexceptions,$(CFLAGS)) CXXFLAGS := $(CFLAGS) +ifeq "$(BUILD_ARCH)" "armv7hl" + FULL_BOOTSTRAP = 1 +endif + +ifeq "$(BUILD_ARCH)" "armv5tel" + FULL_BOOTSTRAP = 1 +endif + # Normal build or /tools build. # ifeq "$(ROOT)" "" @@ -109,9 +117,15 @@ ifeq "$(PASS)" "2" --enable-__cxa_atexit \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ - --disable-bootstrap + --disable-libgomp EXTRA_MAKE = EXTRA_INSTALL = + + ifeq "$(FULL_BOOTSTRAP)" "1" + EXTRA_CONFIG += --enable-bootstrap + else + EXTRA_CONFIG += --disable-bootstrap + endif else # PASS=L # libstdc++-v3 TARGET = $(DIR_INFO)/$(THISAPP)-libstdc++ From fe2adb0cdf030b3a94369c8268e09e0900782883 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:26:50 +0100 Subject: [PATCH 357/464] glibc: Test toolchain after build Signed-off-by: Michael Tremer --- lfs/glibc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lfs/glibc b/lfs/glibc index 4b69f18d4..5cdb27b98 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -152,5 +152,15 @@ ifneq "$(TOOLCHAIN)" "1" rm -rfv /usr/share/zoneinfo endif +ifeq "$(TOOLCHAIN)" "1" + # Test the linker in toolchain + cd $(DIR_APP) && echo "int main() { return 0; }" > dummy.c + cd $(DIR_APP) && $(CROSSTARGET)-gcc dummy.c -o dummy + + # Must be using a runtime linker from /tools + cd $(DIR_APP) && readelf -l dummy | grep "Requesting program interpreter: /tools" + cd $(DIR_APP) && rm -vf dummy dummy.c +endif + @rm -rf $(DIR_APP) $(DIR_SRC)/glibc-build @$(POSTBUILD) From 8d29c3bf1087f30d0dfd921fd3fa42afe0aaa543 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:27:00 +0100 Subject: [PATCH 358/464] gcc: Remove some deprecated configure options in 2nd toolchain pass Signed-off-by: Michael Tremer --- lfs/gcc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lfs/gcc b/lfs/gcc index fc9517640..f04e2df8c 100644 --- a/lfs/gcc +++ b/lfs/gcc @@ -105,16 +105,10 @@ ifeq "$(PASS)" "2" AR="$(CROSSTARGET)-ar" \ RANLIB="$(CROSSTARGET)-ranlib" EXTRA_CONFIG = \ - --host=$(BUILDTARGET) \ --build=$(BUILDTARGET) \ - --target=$(BUILDTARGET) \ --prefix=/tools \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ - --enable-clocale=gnu \ - --enable-shared \ - --enable-threads=posix \ - --enable-__cxa_atexit \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --disable-libgomp From ec51f20d52e3da3657452aa7ddebed81941de6db Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:07:30 +0200 Subject: [PATCH 359/464] stage2: Make sure to install lib64 symlinks on all 64 bit architectures Signed-off-by: Michael Tremer --- lfs/stage2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/stage2 b/lfs/stage2 index b548c0c6c..b70bde78a 100644 --- a/lfs/stage2 +++ b/lfs/stage2 @@ -64,7 +64,7 @@ $(TARGET) : # Symlink /var/run -> /run. ln -svf ../run /var/run -ifeq "$(BUILD_ARCH)" "x86_64" +ifeq "$(IS_64BIT)" "1" ln -svf lib /lib64 ln -svf lib /usr/lib64 endif From d9030efeb741d31bf3a161061dfd3307640b9852 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:07:55 +0200 Subject: [PATCH 360/464] sysklogd: Fix build with GCC 6 Signed-off-by: Michael Tremer --- lfs/sysklogd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lfs/sysklogd b/lfs/sysklogd index 75bde5fee..58d107357 100644 --- a/lfs/sysklogd +++ b/lfs/sysklogd @@ -70,6 +70,10 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + + # Compile fix + cd $(DIR_APP) && sed -i "s/union wait/int/" syslogd.c + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install touch /var/log/{dhcpcd.log,messages} From 3e477b7d733820131cc03d30fcaa0bc12568a8a8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:08:35 +0200 Subject: [PATCH 361/464] glibc: Install obsolete RPC headers Some programs still use these and therefore we need to install them here. Signed-off-by: Michael Tremer --- lfs/glibc | 1 + 1 file changed, 1 insertion(+) diff --git a/lfs/glibc b/lfs/glibc index 5cdb27b98..b1b482a34 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -69,6 +69,7 @@ endif # Add some general configuration flags EXTRA_CONFIG += \ + --enable-obsolete-rpc \ --disable-profile \ --enable-kernel=3.2 \ --enable-add-ons \ From 18f4933922d80f4fdb96f37af94170771a55f774 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:56:02 +0200 Subject: [PATCH 362/464] binutils: Cleanup makefile Signed-off-by: Michael Tremer --- lfs/binutils | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lfs/binutils b/lfs/binutils index be890a88a..db59d97b4 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -38,8 +38,10 @@ ifeq "$(ROOT)" "" EXTRA_CONFIG = \ --prefix=/usr \ --enable-shared \ - --disable-nls \ - --disable-werror + --with-system-zlib \ + --enable-plugins \ + --enable-ld=default \ + --disable-gold EXTRA_MAKE = tooldir=/usr EXTRA_INSTALL = tooldir=/usr else @@ -49,9 +51,7 @@ ifeq "$(PASS)" "1" --target=$(CROSSTARGET) \ --prefix=/tools \ --with-sysroot=$(ROOT) \ - --with-lib-path=/tools/lib \ - --disable-nls \ - --disable-werror + --with-lib-path=/tools/lib EXTRA_MAKE = EXTRA_INSTALL = else @@ -64,9 +64,7 @@ else --host=$(BUILDTARGET) \ --build=$(BUILDTARGET) \ --prefix=/tools \ - --with-lib-path=/tools/lib \ - --disable-nls \ - --disable-werror + --with-lib-path=/tools/lib EXTRA_MAKE = EXTRA_INSTALL = endif @@ -79,6 +77,7 @@ ifeq "$(BUILD_ARCH)" "armv5tel" endif EXTRA_CONFIG += \ + --disable-werror \ --enable-64-bit-bfd ############################################################################### @@ -129,12 +128,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_SRC)/binutils-build && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" cp -v $(DIR_APP)/include/libiberty.h /usr/include -else -ifeq "$(PASS)" "2" +endif + +ifeq "$(TOOLCHAIN)" "1" + ifeq "$(PASS)" "2" cd $(DIR_SRC)/binutils-build && make -C ld clean cd $(DIR_SRC)/binutils-build && make -C ld LIB_PATH=/usr/lib:/lib cd $(DIR_SRC)/binutils-build && cp -v ld/ld-new /tools/bin + endif endif -endif + @rm -rf $(DIR_APP) $(DIR_SRC)/binutils-build @$(POSTBUILD) From dc8abdfe1c1fbea80eee2d57521ab6cd700e9c7d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:56:17 +0200 Subject: [PATCH 363/464] udev: Remove old compile fix for older versions of glibc Signed-off-by: Michael Tremer --- lfs/udev | 2 -- 1 file changed, 2 deletions(-) diff --git a/lfs/udev b/lfs/udev index 320f27237..2d5c56078 100644 --- a/lfs/udev +++ b/lfs/udev @@ -77,8 +77,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208_remove_systemd_log.patch - cd $(DIR_APP)/udev-lfs-$(VER)-1 && sed -i "s/HANDLE_AT 1/HANDLE_AT 0/g" cfg.h - rm -rf /lib/udev/devices install -dv /lib/firmware From bff88a482c2ace10e0ca51f5bc83e56feeacca61 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:56:40 +0200 Subject: [PATCH 364/464] openssl: Make package compile on all arches Signed-off-by: Michael Tremer --- lfs/openssl | 27 ++++--- src/patches/openssl-1.0.2a-rpmbuild.patch | 88 +++++++++++++++++------ 2 files changed, 83 insertions(+), 32 deletions(-) diff --git a/lfs/openssl b/lfs/openssl index 2fc710dc2..d6be5a9d9 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -61,22 +61,29 @@ CONFIGURE_OPTIONS = \ no-mdc2 \ no-rc5 \ no-srp \ - -DSSL_FORBID_ENULL + -DSSL_FORBID_ENULL \ + $(OPENSSL_ARCH) + +ifeq "$(IS_64BIT)" "1" + OPENSSL_ARCH = linux-generic64 +else + OPENSSL_ARCH = linux-generic32 +endif + +ifeq "$(BUILD_ARCH)" "aarch64" + OPENSSL_ARCH = linux-aarch64 +endif ifeq "$(BUILD_ARCH)" "x86_64" - CONFIGURE_OPTIONS += linux-x86_64 + OPENSSL_ARCH = linux-x86_64 endif ifeq "$(BUILD_ARCH)" "i586" - CONFIGURE_OPTIONS += linux-elf + OPENSSL_ARCH = linux-elf -ifneq "$(KCFG)" "-sse2" - CONFIGURE_OPTIONS += no-sse2 -endif -endif - -ifeq "$(BUILD_ARCH)" "armv5tel" - CONFIGURE_OPTIONS += linux-generic32 + ifneq "$(KCFG)" "-sse2" + OPENSSL_ARCH += no-sse2 + endif endif ############################################################################### diff --git a/src/patches/openssl-1.0.2a-rpmbuild.patch b/src/patches/openssl-1.0.2a-rpmbuild.patch index 2f71f1d48..db1460cb7 100644 --- a/src/patches/openssl-1.0.2a-rpmbuild.patch +++ b/src/patches/openssl-1.0.2a-rpmbuild.patch @@ -1,34 +1,78 @@ -diff -Nur openssl-1.0.2d/Configure openssl-1.0.2d.patched/Configure ---- openssl-1.0.2d/Configure 2015-07-09 11:57:15.000000000 +0000 -+++ openssl-1.0.2d.patched/Configure 2015-08-22 20:44:19.487000000 +0000 -@@ -365,7 +365,7 @@ +diff -up openssl-1.0.2e/Configure.rpmbuild openssl-1.0.2e/Configure +--- openssl-1.0.2e/Configure.rpmbuild 2015-12-03 15:04:23.000000000 +0100 ++++ openssl-1.0.2e/Configure 2015-12-04 13:20:22.996835604 +0100 +@@ -365,8 +365,8 @@ my %table=( #### # *-generic* is endian-neutral target, but ./config is free to # throw in -D[BL]_ENDIAN, whichever appropriate... -"linux-generic32","gcc:-O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+"linux-generic32","gcc:\$(CFLAGS) -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(CFLAGS):.so.\$(SHLIB_SONAMEVER)", - "linux-ppc", "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +-"linux-ppc", "gcc:-DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-generic32","gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", ++"linux-ppc", "gcc:-DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", ####################################################################### -@@ -406,7 +406,7 @@ - "linux64-mips64", "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", + # Note that -march is not among compiler options in below linux-armv4 +@@ -395,31 +395,31 @@ my %table=( + # + # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8 + # +-"linux-armv4", "gcc: -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +-"linux-aarch64","gcc: -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-armv4", "gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", ++"linux-aarch64","gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", + # Configure script adds minimally required -march for assembly support, + # if no -march was specified at command line. mips32 and mips64 below + # refer to contemporary MIPS Architecture specifications, MIPS32 and + # MIPS64, rather than to kernel bitness. +-"linux-mips32", "gcc:-mabi=32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +-"linux-mips64", "gcc:-mabi=n32 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32", +-"linux64-mips64", "gcc:-mabi=64 -O3 -Wall -DBN_DIV3W::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++"linux-mips32", "gcc:-mabi=32 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", ++"linux-mips64", "gcc:-mabi=n32 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:n32:dlfcn:linux-shared:-fPIC:-mabi=n32 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::32", ++"linux64-mips64", "gcc:-mabi=64 -Wall \$(RPM_OPT_FLAGS) -DBN_DIV3W::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips64_asm}:64:dlfcn:linux-shared:-fPIC:-mabi=64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", #### IA-32 targets... "linux-ia32-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -"linux-elf", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+"linux-elf", "gcc:-DL_ENDIAN \$(CFLAGS) -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_SONAMEVER)", ++"linux-elf", "gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", "linux-aout", "gcc:-DL_ENDIAN -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out", #### - "linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -@@ -414,7 +414,7 @@ - "linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::", - "linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +-"linux-generic64","gcc:-O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +-"linux-ppc64", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", +-"linux-ppc64le","gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::", +-"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-generic64","gcc:-Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", ++"linux-ppc64", "gcc:-m64 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", ++"linux-ppc64le","gcc:-m64 -DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:$ppc64_asm:linux64le:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", ++"linux-ia64", "gcc:-DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", "linux-ia64-icc","icc:-DL_ENDIAN -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -"linux-x86_64", "gcc:-m64 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", -+"linux-x86_64", "gcc:-m64 -DL_ENDIAN \$(CFLAGS) -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_SONAMEVER):::64", ++"linux-x86_64", "gcc:-m64 -DL_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", "linux-x86_64-clang", "clang: -m64 -DL_ENDIAN -O3 -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", + "debug-linux-x86_64-clang", "clang: -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -g -Wall -Wextra $clang_disabled_warnings -Qunused-arguments::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", "linux-x86_64-icc", "icc:-DL_ENDIAN -O2::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", "linux-x32", "gcc:-mx32 -DL_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-mx32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::x32", -@@ -1764,7 +1764,7 @@ +-"linux64-s390x", "gcc:-m64 -DB_ENDIAN -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++"linux64-s390x", "gcc:-m64 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-Wl,-z,relro -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", + #### So called "highgprs" target for z/Architecture CPUs + # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see + # /proc/cpuinfo. The idea is to preserve most significant bits of +@@ -437,12 +437,12 @@ my %table=( + #### SPARC Linux setups + # Ray Miller has patiently + # assisted with debugging of following two configs. +-"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-sparcv8","gcc:-mcpu=v8 -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS) -DBN_DIV2W::-D_REENTRANT::-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", + # it's a real mess with -mcpu=ultrasparc option under Linux, but + # -Wa,-Av8plus should do the trick no matter what. +-"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS) -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)", + # GCC 3.1 is a requirement +-"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT:ULTRASPARC:-Wl,-z,relro -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64", + #### Alpha Linux with GNU C and Compaq C setups + # Special notes: + # - linux-alpha+bwx-gcc is ment to be used from ./config only. If you +@@ -1767,7 +1767,7 @@ while () elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/) { my $sotmp = $1; @@ -37,11 +81,10 @@ diff -Nur openssl-1.0.2d/Configure openssl-1.0.2d.patched/Configure } elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/) { - -diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org ---- openssl-1.0.2d/Makefile.org 2015-07-09 11:57:15.000000000 +0000 -+++ openssl-1.0.2d.patched/Makefile.org 2015-08-22 20:41:49.921000000 +0000 -@@ -10,6 +10,7 @@ +diff -up openssl-1.0.2e/Makefile.org.rpmbuild openssl-1.0.2e/Makefile.org +--- openssl-1.0.2e/Makefile.org.rpmbuild 2015-12-03 15:04:23.000000000 +0100 ++++ openssl-1.0.2e/Makefile.org 2015-12-04 13:18:44.913538616 +0100 +@@ -10,6 +10,7 @@ SHLIB_VERSION_HISTORY= SHLIB_MAJOR= SHLIB_MINOR= SHLIB_EXT= @@ -49,7 +92,7 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org PLATFORM=dist OPTIONS= CONFIGURE_ARGS= -@@ -339,10 +340,9 @@ +@@ -341,10 +342,9 @@ clean-shared: link-shared: @ set -e; for i in $(SHLIBDIRS); do \ $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \ @@ -61,7 +104,7 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org done build-shared: do_$(SHLIB_TARGET) link-shared -@@ -353,7 +353,7 @@ +@@ -355,7 +355,7 @@ do_$(SHLIB_TARGET): libs="$(LIBKRB5) $$libs"; \ fi; \ $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \ @@ -69,3 +112,4 @@ diff -Nur openssl-1.0.2d/Makefile.org openssl-1.0.2d.patched/Makefile.org + LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \ LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \ LIBDEPS="$$libs $(EX_LIBS)" \ + link_a.$(SHLIB_TARGET); \ From 990eb18bd995ec8069638d5a6e36c36479602424 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 26 Apr 2017 12:45:27 +0200 Subject: [PATCH 365/464] pam: Compile fix for newer glibcs Signed-off-by: Michael Tremer --- lfs/pam | 2 ++ .../pam-0.99.10.0-rlimit-build-fix.patch | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/patches/pam-0.99.10.0-rlimit-build-fix.patch diff --git a/lfs/pam b/lfs/pam index 75557a499..96e8956f9 100644 --- a/lfs/pam +++ b/lfs/pam @@ -70,6 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/pam-0.99.10.0-rlimit-build-fix.patch cd $(DIR_APP) && ./configure --libdir=/usr/lib \ --sbindir=/lib/security \ --enable-securedir=/lib/security \ diff --git a/src/patches/pam-0.99.10.0-rlimit-build-fix.patch b/src/patches/pam-0.99.10.0-rlimit-build-fix.patch new file mode 100644 index 000000000..5fdee07fe --- /dev/null +++ b/src/patches/pam-0.99.10.0-rlimit-build-fix.patch @@ -0,0 +1,28 @@ +From 8e508f23bf5ed727649c99bbd540f7b1c2c2bd35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stevan=20Baji=C4=87?= +Date: Mon, 9 Jul 2012 09:43:11 +0200 +Subject: [PATCH] RLIMIT_* variables are no longer defined unless you + explicitly include sys/resource.h. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Diego Elio Pettenò + +modules/pam_unix/pam_unix_acct.c: Include sys/resource.h. +--- + modules/pam_unix/pam_unix_acct.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c +index 8e90cc9..4a362f8 100644 +--- a/modules/pam_unix/pam_unix_acct.c ++++ b/modules/pam_unix/pam_unix_acct.c +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include + #include + #include From 9c82fea2c7189fd074398fa8992b347d7c3db887 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 26 Apr 2017 11:28:58 +0100 Subject: [PATCH 366/464] make.sh: Pass BUILD_PLATFORM variable to build environment Signed-off-by: Michael Tremer --- tools/make-functions | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/make-functions b/tools/make-functions index e581ceffb..39d941169 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -514,6 +514,7 @@ enterchroot() { BUILDTARGET="${BUILDTARGET}" \ CROSSTARGET="${CROSSTARGET}" \ BUILD_ARCH="${BUILD_ARCH}" \ + BUILD_PLATFORM="${BUILD_PLATFORM}" \ CCACHE_DIR=/usr/src/ccache \ CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ From 2bc88212b05054345a39c3ca2ad0b3e33e1f94fd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 26 Apr 2017 11:48:31 +0100 Subject: [PATCH 367/464] ncurses-compat: Fix build with GCC 6 Signed-off-by: Michael Tremer --- lfs/ncurses-compat | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lfs/ncurses-compat b/lfs/ncurses-compat index 1c0fb0427..09ec43485 100644 --- a/lfs/ncurses-compat +++ b/lfs/ncurses-compat @@ -55,6 +55,8 @@ EXTRA_CONFIG += \ --with-termlib=tinfo \ --disable-nls +export CPPFLAGS = -P + ############################################################################### # Top-level Rules ############################################################################### From dfa795eb1a052ac58f7f3d9ebf1676f0a2c3c534 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 26 Apr 2017 11:48:48 +0100 Subject: [PATCH 368/464] glibc: Do not enable stack-smashing protector in toolchain stage This is causing build errors on some systems where the host system does or does not use SSP. Signed-off-by: Michael Tremer --- lfs/glibc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/glibc b/lfs/glibc index b1b482a34..5f15ecf8c 100644 --- a/lfs/glibc +++ b/lfs/glibc @@ -38,7 +38,8 @@ ifeq "$(ROOT)" "" EXTRA_CONFIG = \ --build=$(BUILDTARGET) \ --prefix=/usr \ - --libexecdir=/usr/lib/glibc + --libexecdir=/usr/lib/glibc \ + --enable-stack-protector=strong else TARGET = $(DIR_INFO)/$(THISAPP)-tools EXTRA_CONFIG = \ @@ -75,8 +76,7 @@ EXTRA_CONFIG += \ --enable-add-ons \ --without-selinux \ --enable-experimental-malloc \ - --enable-bind-now \ - --enable-stack-protector=strong + --enable-bind-now ############################################################################### # Top-level Rules From a3366d419fee79d2c195fc72423c32bf221bfcdb Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 27 Apr 2017 12:04:05 +0200 Subject: [PATCH 369/464] mysql: Fix build with newer GCC Signed-off-by: Michael Tremer --- lfs/mysql | 6 +++--- src/paks/mysql/install.sh | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lfs/mysql b/lfs/mysql index 089516efa..8c739c26a 100644 --- a/lfs/mysql +++ b/lfs/mysql @@ -34,7 +34,8 @@ TARGET = $(DIR_INFO)/$(THISAPP) PROG = mysql PAK_VER = 3 -CFLAGS += -fno-strict-aliasing +CFLAGS += -fno-strict-aliasing +CXXFLAGS += -std=gnu++98 ############################################################################### # Top-level Rules @@ -77,6 +78,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + $(UPDATE_AUTOMAKE) cd $(DIR_APP) && ./configure --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/sbin \ @@ -96,8 +98,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd /usr/lib && ln -v -sf mysql/libmysqlclient{,_r}.so* . install -v -m644 $(DIR_SRC)/config/mysql/my.cnf /etc/my.cnf mkdir -p /srv/mysql - mysql_install_db --user=mysql --force - chgrp -v mysql /srv/mysql{,/test,/mysql} chown mysql.mysql /srv/mysql/ install -v -m755 -o mysql -g mysql -d /var/run/mysql install -v -m 644 $(DIR_SRC)/config/backup/includes/mysql \ diff --git a/src/paks/mysql/install.sh b/src/paks/mysql/install.sh index a27d09ed6..1653c9abf 100644 --- a/src/paks/mysql/install.sh +++ b/src/paks/mysql/install.sh @@ -29,6 +29,9 @@ ln -svf ../init.d/mysql /etc/rc.d/rc0.d/K26mysql ln -svf ../init.d/mysql /etc/rc.d/rc3.d/S34mysql ln -svf ../init.d/mysql /etc/rc.d/rc6.d/K26mysql +# Initialise database +mysql_install_db --user=mysql + restore_backup "${NAME}" start_service "${NAME}" From 66f3b51d6d98dde3614c68a23ee23662e932a1f9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 28 Apr 2017 13:10:41 +0200 Subject: [PATCH 370/464] python: Update to 2.7.13 Signed-off-by: Michael Tremer --- lfs/python | 5 +++-- src/patches/python-2.7.13-getentropy.patch | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/patches/python-2.7.13-getentropy.patch diff --git a/lfs/python b/lfs/python index 013f9c1a8..14ccb690c 100644 --- a/lfs/python +++ b/lfs/python @@ -24,7 +24,7 @@ include Config -VER = 2.7.10 +VER = 2.7.13 THISAPP = Python-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c685ef0b8e9f27b5e3db5db12b268ac6 +$(DL_FILE)_MD5 = 53b43534153bb2a0363f08bae8b9d990 install : $(TARGET) @@ -71,6 +71,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) rm -rf $(DIR_APP)/Modules/_ctypes/{darwin,libffi,libffi_arm_wince,libffi_msvc,libffi_osx} + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/python-2.7.13-getentropy.patch cd $(DIR_APP) && OPT="$(CFLAGS)" ./configure \ --prefix=/usr --enable-shared --with-system-ffi cd $(DIR_APP) && make $(MAKETUNING) diff --git a/src/patches/python-2.7.13-getentropy.patch b/src/patches/python-2.7.13-getentropy.patch new file mode 100644 index 000000000..7e00061c1 --- /dev/null +++ b/src/patches/python-2.7.13-getentropy.patch @@ -0,0 +1,22 @@ +diff --git a/Python/random.c b/Python/random.c +index 2f83b5d..4cae217 100644 +--- a/Python/random.c ++++ b/Python/random.c +@@ -97,8 +97,15 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) + } + + /* Issue #25003: Don't use getentropy() on Solaris (available since +- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ +-#elif defined(HAVE_GETENTROPY) && !defined(sun) ++ Solaris 11.3), it is blocking whereas os.urandom() should not block. ++ ++ Issue #29188: Don't use getentropy() on Linux since the glibc 2.24 ++ implements it with the getrandom() syscall which can fail with ENOSYS, ++ and this error is not supported in py_getentropy() and getrandom() is called ++ with flags=0 which blocks until system urandom is initialized, which is not ++ the desired behaviour to seed the Python hash secret nor for os.urandom(): ++ see the PEP 524 which was only implemented in Python 3.6. */ ++#elif defined(HAVE_GETENTROPY) && !defined(sun) && !defined(linux) + #define PY_GETENTROPY 1 + + /* Fill buffer with size pseudo-random bytes generated by getentropy(). From a18c2318d8a4fd525a0a3230d7e169465a93931a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 27 Apr 2017 10:58:35 +0100 Subject: [PATCH 371/464] grub: Fix compile error in gnulib with newer GCCs Signed-off-by: Michael Tremer --- lfs/grub | 1 + src/patches/grub2-remove-gets.patch | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/patches/grub2-remove-gets.patch diff --git a/lfs/grub b/lfs/grub index ba744087c..5e2238eb7 100644 --- a/lfs/grub +++ b/lfs/grub @@ -79,6 +79,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub-2.00_disable_vga_fallback.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/grub2-remove-gets.patch cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ diff --git a/src/patches/grub2-remove-gets.patch b/src/patches/grub2-remove-gets.patch new file mode 100644 index 000000000..0da71b329 --- /dev/null +++ b/src/patches/grub2-remove-gets.patch @@ -0,0 +1,21 @@ +ISO C11 removes the specification of gets() from the C language, eglibc 2.16+ removed it + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni + +Upstream-Status: Pending +Index: grub-1.99/grub-core/gnulib/stdio.in.h +=================================================================== +--- grub-1.99.orig/grub-core/gnulib/stdio.in.h 2010-12-01 06:45:43.000000000 -0800 ++++ grub-1.99/grub-core/gnulib/stdio.in.h 2012-07-04 12:25:02.057099107 -0700 +@@ -140,8 +140,10 @@ + /* It is very rare that the developer ever has full control of stdin, + so any use of gets warrants an unconditional warning. Assume it is + always declared, since it is required by C89. */ ++#if defined gets + #undef gets + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++#endif + + #if @GNULIB_FOPEN@ + # if @REPLACE_FOPEN@ From ae666b0c234f9204b864292e044a0c8d182e58d2 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 27 Apr 2017 11:10:03 +0100 Subject: [PATCH 372/464] Drop paxctl Since the new toolchain the flags are not compiled into the binaries any more which causes paxctl to fail. On top of that, PaX and grsecurity won't be available freely any more which requires us to remove it from the distribution. Signed-off-by: Michael Tremer --- config/rootfiles/common/paxctl | 2 - lfs/clamav | 4 -- lfs/grub | 4 -- lfs/paxctl | 79 ---------------------------------- lfs/qemu | 7 --- make.sh | 1 - 6 files changed, 97 deletions(-) delete mode 100644 config/rootfiles/common/paxctl delete mode 100644 lfs/paxctl diff --git a/config/rootfiles/common/paxctl b/config/rootfiles/common/paxctl deleted file mode 100644 index c9135a865..000000000 --- a/config/rootfiles/common/paxctl +++ /dev/null @@ -1,2 +0,0 @@ -sbin/paxctl -#usr/share/man/man1/paxctl.1 diff --git a/lfs/clamav b/lfs/clamav index 7ba8b8342..a20922e9d 100644 --- a/lfs/clamav +++ b/lfs/clamav @@ -97,10 +97,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown clamav:clamav /var/run/clamav #install initscripts $(call INSTALL_INITSCRIPT,clamav) - # Disable PaX mprotect for clamd, clamscan and freshclam - paxctl -cm /usr/sbin/clamd - paxctl -cm /usr/bin/clamscan - paxctl -cm /usr/bin/freshclam @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/grub b/lfs/grub index 5e2238eb7..a054b8e50 100644 --- a/lfs/grub +++ b/lfs/grub @@ -100,10 +100,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) -mkdir -pv /etc/default install -m 644 $(DIR_SRC)/config/grub2/default /etc/default/grub - # Disable hardening. - paxctl -mpes /usr/sbin/grub-bios-setup /usr/sbin/grub-probe - paxctl -mpexs /usr/bin/grub-script-check - # We don't need to install unifont just to generate a grub2 compatible # font archive for the graphical boot menu. The following command only # converts Latin-1, Latin Extended A+B, Arrows, Box and Block characters. diff --git a/lfs/paxctl b/lfs/paxctl deleted file mode 100644 index 387f3842e..000000000 --- a/lfs/paxctl +++ /dev/null @@ -1,79 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2016 IPFire Team # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.9 - -THISAPP = paxctl-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 9bea59b1987dc4e16c2d22d745374e64 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/lfs/qemu b/lfs/qemu index 57d79a356..4f827e837 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -88,13 +88,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # install wrapper for old kvm parameter handling install -m 755 $(DIR_SRC)/config/qemu/qemu /usr/bin/qemu - # disable PaX MPROTECT and RANDMMAP - paxctl -m -r /usr/bin/qemu-system-arm - paxctl -m -r /usr/bin/qemu-system-i386 - paxctl -m -r /usr/bin/qemu-system-x86_64 - paxctl -m -r /usr/bin/qemu-arm - paxctl -m -r /usr/bin/qemu-i386 - paxctl -m -r /usr/bin/qemu-x86_64 # install an udev script to set the permissions of /dev/kvm cp -avf $(DIR_SRC)/config/qemu/65-kvm.rules /lib/udev/rules.d/65-kvm.rules diff --git a/make.sh b/make.sh index a5ebe0dd9..5ed4faa53 100755 --- a/make.sh +++ b/make.sh @@ -389,7 +389,6 @@ buildbase() { lfsmake2 udev lfsmake2 vim lfsmake2 xz - lfsmake2 paxctl } buildipfire() { From 8480dabca386d8cfc5c46fa6d2e51b0ce61b3628 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 28 Apr 2017 13:30:04 +0200 Subject: [PATCH 373/464] fontconfig: Fix build with glibc >= 2.25 Signed-off-by: Michael Tremer --- lfs/fontconfig | 1 + ...ts-with-integer-width-macros-from-TS.patch | 72 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch diff --git a/lfs/fontconfig b/lfs/fontconfig index 786702248..fbf7b44f6 100644 --- a/lfs/fontconfig +++ b/lfs/fontconfig @@ -70,6 +70,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var cd $(DIR_APP) && make $(MAKETUNING) diff --git a/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch b/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch new file mode 100644 index 000000000..cad71707a --- /dev/null +++ b/src/patches/fontconfig-avoid-conflicts-with-integer-width-macros-from-TS.patch @@ -0,0 +1,72 @@ +From 20cddc824c6501c2082cac41b162c34cd5fcc530 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 11 Dec 2016 14:32:00 -0800 +Subject: [PATCH] Avoid conflicts with integer width macros from TS + 18661-1:2014 + +glibc 2.25+ has now defined these macros in +https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a + +Signed-off-by: Khem Raj +--- +Upstream-Status: Submitted + + fontconfig/fontconfig.h | 2 +- + src/fcobjs.h | 2 +- + src/fcobjshash.gperf | 2 +- + src/fcobjshash.h | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +Index: fontconfig-2.12.1/fontconfig/fontconfig.h +=================================================================== +--- fontconfig-2.12.1.orig/fontconfig/fontconfig.h ++++ fontconfig-2.12.1/fontconfig/fontconfig.h +@@ -128,7 +128,8 @@ typedef int FcBool; + #define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION + + /* Adjust outline rasterizer */ +-#define FC_CHAR_WIDTH "charwidth" /* Int */ ++#define FC_CHARWIDTH "charwidth" /* Int */ ++#define FC_CHAR_WIDTH FC_CHARWIDTH + #define FC_CHAR_HEIGHT "charheight"/* Int */ + #define FC_MATRIX "matrix" /* FcMatrix */ + +Index: fontconfig-2.12.1/src/fcobjs.h +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjs.h ++++ fontconfig-2.12.1/src/fcobjs.h +@@ -51,7 +51,7 @@ FC_OBJECT (DPI, FcTypeDouble, NULL) + FC_OBJECT (RGBA, FcTypeInteger, NULL) + FC_OBJECT (SCALE, FcTypeDouble, NULL) + FC_OBJECT (MINSPACE, FcTypeBool, NULL) +-FC_OBJECT (CHAR_WIDTH, FcTypeInteger, NULL) ++FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL) + FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL) + FC_OBJECT (MATRIX, FcTypeMatrix, NULL) + FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet) +Index: fontconfig-2.12.1/src/fcobjshash.gperf +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjshash.gperf ++++ fontconfig-2.12.1/src/fcobjshash.gperf +@@ -44,7 +44,7 @@ int id; + "rgba",FC_RGBA_OBJECT + "scale",FC_SCALE_OBJECT + "minspace",FC_MINSPACE_OBJECT +-"charwidth",FC_CHAR_WIDTH_OBJECT ++"charwidth",FC_CHARWIDTH_OBJECT + "charheight",FC_CHAR_HEIGHT_OBJECT + "matrix",FC_MATRIX_OBJECT + "charset",FC_CHARSET_OBJECT +Index: fontconfig-2.12.1/src/fcobjshash.h +=================================================================== +--- fontconfig-2.12.1.orig/src/fcobjshash.h ++++ fontconfig-2.12.1/src/fcobjshash.h +@@ -284,7 +284,7 @@ FcObjectTypeLookup (register const char + {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str43,FC_CHARSET_OBJECT}, + {-1}, + #line 47 "fcobjshash.gperf" +- {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHAR_WIDTH_OBJECT}, ++ {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str45,FC_CHARWIDTH_OBJECT}, + #line 48 "fcobjshash.gperf" + {(int)(long)&((struct FcObjectTypeNamePool_t *)0)->FcObjectTypeNamePool_str46,FC_CHAR_HEIGHT_OBJECT}, + #line 55 "fcobjshash.gperf" From 516911e6b54c8073bd644b49d1f447097031e28f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 1 May 2017 16:46:00 +0200 Subject: [PATCH 374/464] libdvbpsi: Fails to build with newer GCC Signed-off-by: Michael Tremer --- lfs/libdvbpsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lfs/libdvbpsi b/lfs/libdvbpsi index 68c7deb39..01abb4358 100644 --- a/lfs/libdvbpsi +++ b/lfs/libdvbpsi @@ -77,7 +77,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && sed -e "s/-Werror//g" -i configure + cd $(DIR_APP) && ./configure --prefix=/usr --enable-release cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From 26d7f93ed9aa4b60a203b8db79b337a680ea09e9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 1 May 2017 17:04:37 +0200 Subject: [PATCH 375/464] perl: Fix Errno.pm generation for GCC >= 5 Signed-off-by: Michael Tremer --- lfs/perl | 1 + ...-Fix-Errno.pm-generation-for-gcc-5.0.patch | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch diff --git a/lfs/perl b/lfs/perl index c4ddc8e76..9ab8efae4 100644 --- a/lfs/perl +++ b/lfs/perl @@ -77,6 +77,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch ifneq "$(ROOT)" "" cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-libc-2.patch endif diff --git a/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch b/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch new file mode 100644 index 000000000..1f6e80a07 --- /dev/null +++ b/src/patches/perl-Fix-Errno.pm-generation-for-gcc-5.0.patch @@ -0,0 +1,66 @@ +From 96bcd6ed97ff05f5b421005f23973279dbfcafbf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 11 Feb 2015 15:46:37 +0100 +Subject: [PATCH 1/2] Fix Errno.pm generation for gcc-5.0 + +gcc-5.0 -E interleaves now line numbers with expended macros, so that +the generated errno.c will be preprocessed to + +EBFONT => [[ + 59 + ]] + +which is hard to parse in in line-based reader. + +So use -P option with gcc >= 5.0. Global -P usage would break makedepend, +global -ftrack-macro-expansion=0 would break lib/h2ph.t. + +RT#123784 +--- + ext/Errno/Errno_pm.PL | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL +index 3dadfce..c6bfa06 100644 +--- a/ext/Errno/Errno_pm.PL ++++ b/ext/Errno/Errno_pm.PL +@@ -215,20 +215,31 @@ sub write_errno_pm { + { # BeOS (support now removed) did not enter this block + # invoke CPP and read the output + ++ my $inhibit_linemarkers = ''; ++ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) { ++ # GCC 5.0 interleaves expanded macros with line numbers breaking ++ # each line into multiple lines. RT#123784 ++ $inhibit_linemarkers = ' -P'; ++ } ++ + if ($^O eq 'VMS') { +- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}"; ++ my $cpp = "$Config{cppstdin} $Config{cppflags}" . ++ $inhibit_linemarkers . " $Config{cppminus}"; + $cpp =~ s/sys\$input//i; + open(CPPO,"$cpp errno.c |") or + die "Cannot exec $Config{cppstdin}"; + } elsif ($IsMSWin32 || $^O eq 'NetWare') { +- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or +- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'"; ++ my $cpp = "$Config{cpprun} $Config{cppflags}" . ++ $inhibit_linemarkers; ++ open(CPPO,"$cpp errno.c |") or ++ die "Cannot run '$cpp errno.c'"; + } elsif ($IsSymbian) { +- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -"; ++ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" . ++ $inhibit_linemarkers ." -"; + open(CPPO,"$cpp < errno.c |") + or die "Cannot exec $cpp"; + } else { +- my $cpp = default_cpp(); ++ my $cpp = default_cpp() . $inhibit_linemarkers; + open(CPPO,"$cpp < errno.c |") + or die "Cannot exec $cpp"; + } +-- +2.3.0 + From 520666772b562dadd715c95a915186d742043677 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 28 Apr 2017 12:56:58 +0100 Subject: [PATCH 376/464] linux: Do not build GCC plugins Our version of GCC has plugins enabled and built but for some reason they are not properly detected. Hence they are disabled for now. Signed-off-by: Michael Tremer --- lfs/linux | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lfs/linux b/lfs/linux index 5be7ab125..270166c8b 100644 --- a/lfs/linux +++ b/lfs/linux @@ -69,6 +69,9 @@ ifeq "$(KCFG)" "-kirkwood" LASTKERNEL=1 endif +# The buildsystem does not correctly detect if our compiler supports plugins +export DISABLE_PAX_PLUGINS=y + ############################################################################### # Top-level Rules ############################################################################### From bb948e3e3bead460b69e20161cdd6d7591d4995b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 30 Apr 2017 12:59:55 +0200 Subject: [PATCH 377/464] ghostscript: Delete all bundled libraries ghostscript ships a number of bundled libraries that is needs to be build and at runtime. This patch removes them all which causes ghostcript to automatically fall back to the libraries installed in the system. Signed-off-by: Michael Tremer --- lfs/ghostscript | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lfs/ghostscript b/lfs/ghostscript index 4d82eb750..7ee1ce4e4 100644 --- a/lfs/ghostscript +++ b/lfs/ghostscript @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = ghostscript -PAK_VER = 2 +PAK_VER = 3 -DEPS = "dbus libtiff" +DEPS = "cups dbus libtiff" ############################################################################### # Top-level Rules @@ -83,6 +83,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && rm -rf expat freetype icclib jasper jpeg jpegxr \ + lcms lcms2 libpng openjpeg zlib cups/libs cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ From 38da37b89a0be73a20ea8592636176cc94451141 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 14:14:25 +0200 Subject: [PATCH 378/464] lcr: Fix compilation with GCC 6 Signed-off-by: Michael Tremer --- lfs/lcr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lfs/lcr b/lfs/lcr index 7ada81ddb..9f5ab8c6d 100644 --- a/lfs/lcr +++ b/lfs/lcr @@ -36,6 +36,8 @@ PAK_VER = 6 DEPS = "" +CXXFLAGS += -std=gnu++98 + ############################################################################### # Top-level Rules ############################################################################### From b271259b7ef4e8f8e4469ad129a895c8ec1928ba Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 19:03:47 +0200 Subject: [PATCH 379/464] crda: Compile fix for newer GCC Signed-off-by: Michael Tremer --- lfs/crda | 1 + 1 file changed, 1 insertion(+) diff --git a/lfs/crda b/lfs/crda index 8bee2584b..621a6b549 100644 --- a/lfs/crda +++ b/lfs/crda @@ -71,6 +71,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && sed -e "s/-Werror//g" -i Makefile cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From fd2e94fe11869d82aa1419a7de577594506e058d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 6 May 2017 10:09:34 +0200 Subject: [PATCH 380/464] iperf: Update to 2.0.9 Signed-off-by: Michael Tremer --- lfs/iperf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/iperf b/lfs/iperf index 38de994c6..07e437d3e 100644 --- a/lfs/iperf +++ b/lfs/iperf @@ -24,7 +24,7 @@ include Config -VER = 2.0.5 +VER = 2.0.9 THISAPP = iperf-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = iperf -PAK_VER = 2 +PAK_VER = 3 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 44b5536b67719f4250faed632a3cd016 +$(DL_FILE)_MD5 = 351b018b71176b8cb25f20eef6a9e37c install : $(TARGET) From 7502d6f898912bdfcbd5e6c685b50124cfa79163 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 17 May 2017 22:58:03 +0200 Subject: [PATCH 381/464] fuse: Update to 2.9.7 Signed-off-by: Michael Tremer --- lfs/fuse | 5 +++-- .../fuse-2.9.2-namespace-conflict-fix.patch | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/patches/fuse-2.9.2-namespace-conflict-fix.patch diff --git a/lfs/fuse b/lfs/fuse index a875fb3cd..2639156b2 100644 --- a/lfs/fuse +++ b/lfs/fuse @@ -24,7 +24,7 @@ include Config -VER = 2.9.3 +VER = 2.9.7 THISAPP = fuse-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 33cae22ca50311446400daf8a6255c6a +$(DL_FILE)_MD5 = 9bd4ce8184745fd3d000ca2692adacdb install : $(TARGET) @@ -73,6 +73,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fuse-2.9.2-namespace-conflict-fix.patch cd $(DIR_APP) && ./configure --prefix=/usr --disable-kernel-module cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/src/patches/fuse-2.9.2-namespace-conflict-fix.patch b/src/patches/fuse-2.9.2-namespace-conflict-fix.patch new file mode 100644 index 000000000..ae67e7d45 --- /dev/null +++ b/src/patches/fuse-2.9.2-namespace-conflict-fix.patch @@ -0,0 +1,21 @@ +diff -up fuse-2.9.2/include/fuse_kernel.h.conflictfix fuse-2.9.2/include/fuse_kernel.h +--- fuse-2.9.2/include/fuse_kernel.h.conflictfix 2013-06-26 09:31:57.862198038 -0400 ++++ fuse-2.9.2/include/fuse_kernel.h 2013-06-26 09:32:19.679198365 -0400 +@@ -88,12 +88,16 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include ++#ifdef __linux__ ++#include ++#else ++#include + #define __u64 uint64_t + #define __s64 int64_t + #define __u32 uint32_t + #define __s32 int32_t + #define __u16 uint16_t ++#endif + + /* + * Version negotiation: From 489145db2d396e72d6d63b800244791a2f21c74c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 21 Apr 2017 12:00:14 +0200 Subject: [PATCH 382/464] make.sh: Drop ipfiremake() which is identical to lfsmake2 Signed-off-by: Michael Tremer --- make.sh | 970 +++++++++++++++++++++---------------------- tools/make-functions | 42 -- 2 files changed, 484 insertions(+), 528 deletions(-) diff --git a/make.sh b/make.sh index 5ed4faa53..e803ce3c0 100755 --- a/make.sh +++ b/make.sh @@ -394,511 +394,509 @@ buildbase() { buildipfire() { LOGFILE="$BASEDIR/log/_build.ipfire.log" export LOGFILE - ipfiremake configroot - ipfiremake initscripts - ipfiremake backup - ipfiremake pkg-config - ipfiremake libusb - ipfiremake libusb-compat - ipfiremake libpcap - ipfiremake ppp - ipfiremake pptp - ipfiremake unzip - ipfiremake which - ipfiremake linux-firmware - ipfiremake ath10k-firmware - ipfiremake dvb-firmwares - ipfiremake mt7601u-firmware - ipfiremake zd1211-firmware - ipfiremake rpi-firmware - ipfiremake bc - ipfiremake u-boot - ipfiremake cpio - ipfiremake mdadm - ipfiremake dracut - ipfiremake lvm2 - ipfiremake multipath-tools - ipfiremake freetype - ipfiremake grub - ipfiremake libmnl - ipfiremake libnfnetlink - ipfiremake libnetfilter_queue - ipfiremake libnetfilter_conntrack - ipfiremake libnetfilter_cthelper - ipfiremake libnetfilter_cttimeout - ipfiremake iptables + lfsmake2 configroot + lfsmake2 initscripts + lfsmake2 backup + lfsmake2 pkg-config + lfsmake2 libusb + lfsmake2 libusb-compat + lfsmake2 libpcap + lfsmake2 ppp + lfsmake2 pptp + lfsmake2 unzip + lfsmake2 which + lfsmake2 linux-firmware + lfsmake2 ath10k-firmware + lfsmake2 dvb-firmwares + lfsmake2 mt7601u-firmware + lfsmake2 zd1211-firmware + lfsmake2 rpi-firmware + lfsmake2 bc + lfsmake2 u-boot + lfsmake2 cpio + lfsmake2 mdadm + lfsmake2 dracut + lfsmake2 lvm2 + lfsmake2 multipath-tools + lfsmake2 freetype + lfsmake2 grub + lfsmake2 libmnl + lfsmake2 libnfnetlink + lfsmake2 libnetfilter_queue + lfsmake2 libnetfilter_conntrack + lfsmake2 libnetfilter_cthelper + lfsmake2 libnetfilter_cttimeout + lfsmake2 iptables case "${BUILD_ARCH}" in x86_64) - ipfiremake linux KCFG="" - ipfiremake backports KCFG="" - ipfiremake e1000e KCFG="" - ipfiremake igb KCFG="" - ipfiremake ixgbe KCFG="" - ipfiremake xtables-addons KCFG="" - ipfiremake linux-initrd KCFG="" + lfsmake2 linux KCFG="" + lfsmake2 backports KCFG="" + lfsmake2 e1000e KCFG="" + lfsmake2 igb KCFG="" + lfsmake2 ixgbe KCFG="" + lfsmake2 xtables-addons KCFG="" + lfsmake2 linux-initrd KCFG="" ;; i586) # x86-pae (Native and new XEN) kernel build - ipfiremake linux KCFG="-pae" - ipfiremake backports KCFG="-pae" - ipfiremake e1000e KCFG="-pae" - ipfiremake igb KCFG="-pae" - ipfiremake ixgbe KCFG="-pae" - ipfiremake xtables-addons KCFG="-pae" - ipfiremake linux-initrd KCFG="-pae" + lfsmake2 linux KCFG="-pae" + lfsmake2 backports KCFG="-pae" + lfsmake2 e1000e KCFG="-pae" + lfsmake2 igb KCFG="-pae" + lfsmake2 ixgbe KCFG="-pae" + lfsmake2 xtables-addons KCFG="-pae" + lfsmake2 linux-initrd KCFG="-pae" # x86 kernel build - ipfiremake linux KCFG="" - ipfiremake backports KCFG="" - ipfiremake e1000e KCFG="" - ipfiremake igb KCFG="" - ipfiremake ixgbe KCFG="" - ipfiremake xtables-addons KCFG="" - ipfiremake linux-initrd KCFG="" + lfsmake2 linux KCFG="" + lfsmake2 backports KCFG="" + lfsmake2 e1000e KCFG="" + lfsmake2 igb KCFG="" + lfsmake2 ixgbe KCFG="" + lfsmake2 xtables-addons KCFG="" + lfsmake2 linux-initrd KCFG="" ;; armv5tel) # arm-rpi (Raspberry Pi) kernel build - ipfiremake linux KCFG="-rpi" - ipfiremake backports KCFG="-rpi" - ipfiremake xtables-addons KCFG="-rpi" - ipfiremake linux-initrd KCFG="-rpi" + lfsmake2 linux KCFG="-rpi" + lfsmake2 backports KCFG="-rpi" + lfsmake2 xtables-addons KCFG="-rpi" + lfsmake2 linux-initrd KCFG="-rpi" # arm multi platform (Panda, Wandboard ...) kernel build - ipfiremake linux KCFG="-multi" - ipfiremake backports KCFG="-multi" - ipfiremake e1000e KCFG="-multi" - ipfiremake igb KCFG="-multi" - ipfiremake ixgbe KCFG="-multi" - ipfiremake xtables-addons KCFG="-multi" - ipfiremake linux-initrd KCFG="-multi" + lfsmake2 linux KCFG="-multi" + lfsmake2 backports KCFG="-multi" + lfsmake2 e1000e KCFG="-multi" + lfsmake2 igb KCFG="-multi" + lfsmake2 ixgbe KCFG="-multi" + lfsmake2 xtables-addons KCFG="-multi" + lfsmake2 linux-initrd KCFG="-multi" # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build - ipfiremake linux KCFG="-kirkwood" - ipfiremake backports KCFG="-kirkwood" - ipfiremake e1000e KCFG="-kirkwood" - ipfiremake igb KCFG="-kirkwood" - ipfiremake ixgbe KCFG="-kirkwood" - ipfiremake xtables-addons KCFG="-kirkwood" - ipfiremake linux-initrd KCFG="-kirkwood" + lfsmake2 linux KCFG="-kirkwood" + lfsmake2 backports KCFG="-kirkwood" + lfsmake2 e1000e KCFG="-kirkwood" + lfsmake2 igb KCFG="-kirkwood" + lfsmake2 ixgbe KCFG="-kirkwood" + lfsmake2 xtables-addons KCFG="-kirkwood" + lfsmake2 linux-initrd KCFG="-kirkwood" ;; esac - ipfiremake xtables-addons USPACE="1" - ipfiremake openssl - [ "${BUILD_ARCH}" = "i586" ] && ipfiremake openssl KCFG='-sse2' - ipfiremake libgpg-error - ipfiremake libgcrypt - ipfiremake libassuan - ipfiremake nettle - ipfiremake libevent - ipfiremake libevent2 - ipfiremake libevent2-compat - ipfiremake expat - ipfiremake unbound - ipfiremake gnutls - ipfiremake bind - ipfiremake dhcp - ipfiremake dhcpcd - ipfiremake boost - ipfiremake linux-atm - ipfiremake gdbm - ipfiremake pam - ipfiremake curl - ipfiremake tcl - ipfiremake sqlite - ipfiremake libffi - ipfiremake python - ipfiremake python3 - ipfiremake ca-certificates - ipfiremake fireinfo - ipfiremake libnet - ipfiremake libnl - ipfiremake libnl-3 - ipfiremake libidn - ipfiremake nasm - ipfiremake libjpeg - ipfiremake libjpeg-compat - ipfiremake libexif - ipfiremake libpng - ipfiremake libtiff - ipfiremake libart - ipfiremake gd - ipfiremake popt - ipfiremake pcre - ipfiremake slang - ipfiremake newt - ipfiremake libsmooth - ipfiremake attr - ipfiremake acl - ipfiremake libcap - ipfiremake pciutils - ipfiremake usbutils - ipfiremake libxml2 - ipfiremake libxslt - ipfiremake BerkeleyDB - ipfiremake mysql - ipfiremake cyrus-sasl - ipfiremake openldap - ipfiremake apache2 - ipfiremake php - ipfiremake web-user-interface - ipfiremake flag-icons - ipfiremake jquery - ipfiremake arping - ipfiremake beep - ipfiremake dvdrtools - ipfiremake dosfstools - ipfiremake reiserfsprogs - ipfiremake xfsprogs - ipfiremake sysfsutils - ipfiremake fuse - ipfiremake ntfs-3g - ipfiremake ethtool - ipfiremake ez-ipupdate - ipfiremake fcron - ipfiremake perl-GD - ipfiremake GD-Graph - ipfiremake GD-TextUtil - ipfiremake perl-Device-SerialPort - ipfiremake perl-Device-Modem - ipfiremake perl-Apache-Htpasswd - ipfiremake gnupg - ipfiremake hdparm - ipfiremake sdparm - ipfiremake mtools - ipfiremake whatmask - ipfiremake conntrack-tools - ipfiremake libupnp - ipfiremake ipaddr - ipfiremake iputils - ipfiremake l7-protocols - ipfiremake mISDNuser - ipfiremake capi4k-utils - ipfiremake hwdata - ipfiremake logrotate - ipfiremake logwatch - ipfiremake misc-progs - ipfiremake nano - ipfiremake URI - ipfiremake HTML-Tagset - ipfiremake HTML-Parser - ipfiremake HTML-Template - ipfiremake Compress-Zlib - ipfiremake Digest - ipfiremake Digest-SHA1 - ipfiremake Digest-HMAC - ipfiremake libwww-perl - ipfiremake Net-DNS - ipfiremake Net-IPv4Addr - ipfiremake Net_SSLeay - ipfiremake IO-Stringy - ipfiremake IO-Socket-SSL - ipfiremake Unix-Syslog - ipfiremake Mail-Tools - ipfiremake MIME-Tools - ipfiremake Net-Server - ipfiremake Convert-TNEF - ipfiremake Convert-UUlib - ipfiremake Archive-Tar - ipfiremake Archive-Zip - ipfiremake Text-Tabs+Wrap - ipfiremake Locale-Country - ipfiremake XML-Parser - ipfiremake Crypt-PasswdMD5 - ipfiremake Net-Telnet - ipfiremake python-setuptools - ipfiremake python-clientform - ipfiremake python-mechanize - ipfiremake python-feedparser - ipfiremake python-rssdler - ipfiremake python-inotify - ipfiremake python-docutils - ipfiremake python-daemon - ipfiremake python-ipaddress - ipfiremake glib - ipfiremake GeoIP - ipfiremake fwhits - ipfiremake noip_updater - ipfiremake ntp - ipfiremake openssh - ipfiremake fontconfig - ipfiremake dejavu-fonts-ttf - ipfiremake freefont - ipfiremake pixman - ipfiremake cairo - ipfiremake pango - ipfiremake rrdtool - ipfiremake setserial - ipfiremake setup - ipfiremake libdnet - ipfiremake daq - ipfiremake snort - ipfiremake oinkmaster - ipfiremake squid - ipfiremake squidguard - ipfiremake calamaris - ipfiremake tcpdump - ipfiremake traceroute - ipfiremake vlan - ipfiremake wireless - ipfiremake pakfire - ipfiremake spandsp - ipfiremake lzo - ipfiremake openvpn - ipfiremake pammysql - ipfiremake mpage - ipfiremake dbus - ipfiremake intltool - ipfiremake libdaemon - ipfiremake cups - ipfiremake ghostscript - ipfiremake lcms2 - ipfiremake qpdf - ipfiremake poppler - ipfiremake cups-filters - ipfiremake epson-inkjet-printer-escpr - ipfiremake foomatic - ipfiremake hplip - ipfiremake cifs-utils - ipfiremake krb5 - ipfiremake samba - ipfiremake sudo - ipfiremake mc - ipfiremake wget - ipfiremake bridge-utils - ipfiremake screen - ipfiremake smartmontools - ipfiremake htop - ipfiremake chkconfig - ipfiremake postfix - ipfiremake fetchmail - ipfiremake cyrus-imapd - ipfiremake openmailadmin - ipfiremake clamav - ipfiremake spamassassin - ipfiremake amavisd - ipfiremake dma - ipfiremake alsa - ipfiremake mpfire - ipfiremake guardian - ipfiremake libid3tag - ipfiremake libmad - ipfiremake libogg - ipfiremake libvorbis - ipfiremake libdvbpsi - ipfiremake flac - ipfiremake lame - ipfiremake sox - ipfiremake libshout - ipfiremake xvid - ipfiremake libmpeg2 - ipfiremake libarchive - ipfiremake cmake - ipfiremake gnump3d - ipfiremake rsync - ipfiremake tcpwrapper - ipfiremake libtirpc - ipfiremake rpcbind - ipfiremake nfs - ipfiremake gnu-netcat - ipfiremake ncat - ipfiremake nmap - ipfiremake ncftp - ipfiremake etherwake - ipfiremake bwm-ng - ipfiremake sysstat - ipfiremake vsftpd - ipfiremake strongswan - ipfiremake rng-tools - ipfiremake lsof - ipfiremake br2684ctl - ipfiremake pcmciautils - ipfiremake lm_sensors - ipfiremake liboping - ipfiremake collectd - ipfiremake elinks - ipfiremake igmpproxy - ipfiremake fbset - ipfiremake opus - ipfiremake python-six - ipfiremake python-pyparsing - ipfiremake spice-protocol - ipfiremake spice - ipfiremake sdl - ipfiremake libusbredir - ipfiremake qemu - ipfiremake sane - ipfiremake netpbm - ipfiremake phpSANE - ipfiremake tunctl - ipfiremake netsnmpd - ipfiremake nagios - ipfiremake nagios_nrpe - ipfiremake icinga - ipfiremake ebtables - ipfiremake directfb - ipfiremake dfb++ - ipfiremake faad2 - ipfiremake ffmpeg - ipfiremake vdr - ipfiremake vdr_streamdev - ipfiremake vdr_vnsiserver5 - ipfiremake vdr_epgsearch - ipfiremake vdr_dvbapi - ipfiremake vdr_eepg - ipfiremake w_scan - ipfiremake icecast - ipfiremake icegenerator - ipfiremake mpd - ipfiremake libmpdclient - ipfiremake mpc - ipfiremake perl-Net-SMTP-SSL - ipfiremake perl-MIME-Base64 - ipfiremake perl-Authen-SASL - ipfiremake perl-MIME-Lite - ipfiremake perl-Email-Date-Format - ipfiremake git - ipfiremake squidclamav - ipfiremake vnstat - ipfiremake iw - ipfiremake wpa_supplicant - ipfiremake hostapd - ipfiremake pycurl - ipfiremake urlgrabber - ipfiremake syslinux - ipfiremake tftpd - ipfiremake cpufrequtils - ipfiremake bluetooth - ipfiremake gutenprint - ipfiremake apcupsd - ipfiremake iperf - ipfiremake iperf3 - ipfiremake 7zip - ipfiremake lynis - ipfiremake streamripper - ipfiremake sshfs - ipfiremake taglib - #ipfiremake mediatomb - ipfiremake sslh - ipfiremake perl-gettext - ipfiremake perl-Sort-Naturally - ipfiremake vdradmin - ipfiremake miau - ipfiremake perl-DBI - ipfiremake perl-DBD-mysql - ipfiremake perl-DBD-SQLite - ipfiremake perl-File-ReadBackwards - ipfiremake cacti - ipfiremake openvmtools - ipfiremake nagiosql - ipfiremake iftop - ipfiremake motion - ipfiremake joe - ipfiremake monit - ipfiremake nut - ipfiremake watchdog - ipfiremake libpri - ipfiremake libsrtp - ipfiremake asterisk - ipfiremake lcr - ipfiremake usb_modeswitch - ipfiremake usb_modeswitch_data - ipfiremake zerofree - ipfiremake pound - ipfiremake minicom - ipfiremake ddrescue - ipfiremake imspector - ipfiremake miniupnpd - ipfiremake client175 - ipfiremake powertop - ipfiremake parted - ipfiremake swig - ipfiremake python-m2crypto - ipfiremake wireless-regdb - ipfiremake crda - ipfiremake libsolv - ipfiremake python-distutils-extra - ipfiremake python-lzma - ipfiremake python-progressbar - ipfiremake python-xattr - ipfiremake ddns - ipfiremake transmission - ipfiremake dpfhack - ipfiremake lcd4linux - ipfiremake mtr - ipfiremake tcpick - ipfiremake minidlna - ipfiremake acpid - ipfiremake fping - ipfiremake telnet - ipfiremake xinetd - ipfiremake gpgme - ipfiremake pygpgme - ipfiremake pakfire3 - ipfiremake stress - ipfiremake libstatgrab - ipfiremake sarg - ipfiremake check_mk_agent - ipfiremake nginx - ipfiremake sendEmail - ipfiremake sysbench - ipfiremake strace - ipfiremake elfutils - ipfiremake ltrace - ipfiremake ipfire-netboot - ipfiremake lcdproc - ipfiremake bitstream - ipfiremake multicat - ipfiremake keepalived - ipfiremake ipvsadm - ipfiremake perl-Carp-Clan - ipfiremake perl-Date-Calc - ipfiremake perl-Date-Manip - ipfiremake perl-File-Tail - ipfiremake perl-TimeDate - ipfiremake swatch - ipfiremake tor - ipfiremake arm - ipfiremake wavemon - ipfiremake iptraf-ng - ipfiremake iotop - ipfiremake stunnel - ipfiremake sslscan - ipfiremake owncloud - ipfiremake bacula - ipfiremake batctl - ipfiremake perl-PDF-API2 - ipfiremake squid-accounting - ipfiremake pigz - ipfiremake tmux - ipfiremake perl-Text-CSV_XS - ipfiremake swconfig - ipfiremake haproxy - ipfiremake ipset - ipfiremake lua - ipfiremake dnsdist - ipfiremake bird - ipfiremake dmidecode - ipfiremake mcelog - ipfiremake rtpproxy - ipfiremake util-macros - ipfiremake libpciaccess - ipfiremake libyajl - ipfiremake libvirt - ipfiremake python3-libvirt - ipfiremake freeradius - ipfiremake perl-common-sense - ipfiremake perl-inotify2 - ipfiremake perl-Net-IP + lfsmake2 xtables-addons USPACE="1" + lfsmake2 openssl + [ "${BUILD_ARCH}" = "i586" ] && lfsmake2 openssl KCFG='-sse2' + lfsmake2 libgpg-error + lfsmake2 libgcrypt + lfsmake2 libassuan + lfsmake2 nettle + lfsmake2 libevent + lfsmake2 libevent2 + lfsmake2 expat + lfsmake2 unbound + lfsmake2 gnutls + lfsmake2 bind + lfsmake2 dhcp + lfsmake2 dhcpcd + lfsmake2 boost + lfsmake2 linux-atm + lfsmake2 gdbm + lfsmake2 pam + lfsmake2 curl + lfsmake2 tcl + lfsmake2 sqlite + lfsmake2 libffi + lfsmake2 python + lfsmake2 python3 + lfsmake2 ca-certificates + lfsmake2 fireinfo + lfsmake2 libnet + lfsmake2 libnl + lfsmake2 libnl-3 + lfsmake2 libidn + lfsmake2 nasm + lfsmake2 libjpeg + lfsmake2 libjpeg-compat + lfsmake2 libexif + lfsmake2 libpng + lfsmake2 libtiff + lfsmake2 libart + lfsmake2 gd + lfsmake2 popt + lfsmake2 pcre + lfsmake2 slang + lfsmake2 newt + lfsmake2 libsmooth + lfsmake2 attr + lfsmake2 acl + lfsmake2 libcap + lfsmake2 pciutils + lfsmake2 usbutils + lfsmake2 libxml2 + lfsmake2 libxslt + lfsmake2 BerkeleyDB + lfsmake2 mysql + lfsmake2 cyrus-sasl + lfsmake2 openldap + lfsmake2 apache2 + lfsmake2 php + lfsmake2 web-user-interface + lfsmake2 flag-icons + lfsmake2 jquery + lfsmake2 arping + lfsmake2 beep + lfsmake2 dvdrtools + lfsmake2 dosfstools + lfsmake2 reiserfsprogs + lfsmake2 xfsprogs + lfsmake2 sysfsutils + lfsmake2 fuse + lfsmake2 ntfs-3g + lfsmake2 ethtool + lfsmake2 ez-ipupdate + lfsmake2 fcron + lfsmake2 perl-GD + lfsmake2 GD-Graph + lfsmake2 GD-TextUtil + lfsmake2 perl-Device-SerialPort + lfsmake2 perl-Device-Modem + lfsmake2 perl-Apache-Htpasswd + lfsmake2 gnupg + lfsmake2 hdparm + lfsmake2 sdparm + lfsmake2 mtools + lfsmake2 whatmask + lfsmake2 conntrack-tools + lfsmake2 libupnp + lfsmake2 ipaddr + lfsmake2 iputils + lfsmake2 l7-protocols + lfsmake2 mISDNuser + lfsmake2 capi4k-utils + lfsmake2 hwdata + lfsmake2 logrotate + lfsmake2 logwatch + lfsmake2 misc-progs + lfsmake2 nano + lfsmake2 URI + lfsmake2 HTML-Tagset + lfsmake2 HTML-Parser + lfsmake2 HTML-Template + lfsmake2 Compress-Zlib + lfsmake2 Digest + lfsmake2 Digest-SHA1 + lfsmake2 Digest-HMAC + lfsmake2 libwww-perl + lfsmake2 Net-DNS + lfsmake2 Net-IPv4Addr + lfsmake2 Net_SSLeay + lfsmake2 IO-Stringy + lfsmake2 IO-Socket-SSL + lfsmake2 Unix-Syslog + lfsmake2 Mail-Tools + lfsmake2 MIME-Tools + lfsmake2 Net-Server + lfsmake2 Convert-TNEF + lfsmake2 Convert-UUlib + lfsmake2 Archive-Tar + lfsmake2 Archive-Zip + lfsmake2 Text-Tabs+Wrap + lfsmake2 Locale-Country + lfsmake2 XML-Parser + lfsmake2 Crypt-PasswdMD5 + lfsmake2 Net-Telnet + lfsmake2 python-setuptools + lfsmake2 python-clientform + lfsmake2 python-mechanize + lfsmake2 python-feedparser + lfsmake2 python-rssdler + lfsmake2 python-inotify + lfsmake2 python-docutils + lfsmake2 python-daemon + lfsmake2 python-ipaddress + lfsmake2 glib + lfsmake2 GeoIP + lfsmake2 fwhits + lfsmake2 noip_updater + lfsmake2 ntp + lfsmake2 openssh + lfsmake2 fontconfig + lfsmake2 dejavu-fonts-ttf + lfsmake2 freefont + lfsmake2 pixman + lfsmake2 cairo + lfsmake2 pango + lfsmake2 rrdtool + lfsmake2 setserial + lfsmake2 setup + lfsmake2 libdnet + lfsmake2 daq + lfsmake2 snort + lfsmake2 oinkmaster + lfsmake2 squid + lfsmake2 squidguard + lfsmake2 calamaris + lfsmake2 tcpdump + lfsmake2 traceroute + lfsmake2 vlan + lfsmake2 wireless + lfsmake2 pakfire + lfsmake2 spandsp + lfsmake2 lzo + lfsmake2 openvpn + lfsmake2 pammysql + lfsmake2 mpage + lfsmake2 dbus + lfsmake2 intltool + lfsmake2 libdaemon + lfsmake2 cups + lfsmake2 ghostscript + lfsmake2 lcms2 + lfsmake2 qpdf + lfsmake2 poppler + lfsmake2 cups-filters + lfsmake2 epson-inkjet-printer-escpr + lfsmake2 foomatic + lfsmake2 hplip + lfsmake2 cifs-utils + lfsmake2 krb5 + lfsmake2 samba + lfsmake2 sudo + lfsmake2 mc + lfsmake2 wget + lfsmake2 bridge-utils + lfsmake2 screen + lfsmake2 smartmontools + lfsmake2 htop + lfsmake2 chkconfig + lfsmake2 postfix + lfsmake2 fetchmail + lfsmake2 cyrus-imapd + lfsmake2 openmailadmin + lfsmake2 clamav + lfsmake2 spamassassin + lfsmake2 amavisd + lfsmake2 dma + lfsmake2 alsa + lfsmake2 mpfire + lfsmake2 guardian + lfsmake2 libid3tag + lfsmake2 libmad + lfsmake2 libogg + lfsmake2 libvorbis + lfsmake2 libdvbpsi + lfsmake2 flac + lfsmake2 lame + lfsmake2 sox + lfsmake2 libshout + lfsmake2 xvid + lfsmake2 libmpeg2 + lfsmake2 libarchive + lfsmake2 cmake + lfsmake2 gnump3d + lfsmake2 rsync + lfsmake2 tcpwrapper + lfsmake2 libtirpc + lfsmake2 rpcbind + lfsmake2 nfs + lfsmake2 gnu-netcat + lfsmake2 ncat + lfsmake2 nmap + lfsmake2 ncftp + lfsmake2 etherwake + lfsmake2 bwm-ng + lfsmake2 sysstat + lfsmake2 vsftpd + lfsmake2 strongswan + lfsmake2 rng-tools + lfsmake2 lsof + lfsmake2 br2684ctl + lfsmake2 pcmciautils + lfsmake2 lm_sensors + lfsmake2 liboping + lfsmake2 collectd + lfsmake2 elinks + lfsmake2 igmpproxy + lfsmake2 fbset + lfsmake2 opus + lfsmake2 python-six + lfsmake2 python-pyparsing + lfsmake2 spice-protocol + lfsmake2 spice + lfsmake2 sdl + lfsmake2 libusbredir + lfsmake2 qemu + lfsmake2 sane + lfsmake2 netpbm + lfsmake2 phpSANE + lfsmake2 tunctl + lfsmake2 netsnmpd + lfsmake2 nagios + lfsmake2 nagios_nrpe + lfsmake2 icinga + lfsmake2 ebtables + lfsmake2 directfb + lfsmake2 dfb++ + lfsmake2 faad2 + lfsmake2 ffmpeg + lfsmake2 vdr + lfsmake2 vdr_streamdev + lfsmake2 vdr_vnsiserver5 + lfsmake2 vdr_epgsearch + lfsmake2 vdr_dvbapi + lfsmake2 vdr_eepg + lfsmake2 w_scan + lfsmake2 icecast + lfsmake2 icegenerator + lfsmake2 mpd + lfsmake2 libmpdclient + lfsmake2 mpc + lfsmake2 perl-Net-SMTP-SSL + lfsmake2 perl-MIME-Base64 + lfsmake2 perl-Authen-SASL + lfsmake2 perl-MIME-Lite + lfsmake2 perl-Email-Date-Format + lfsmake2 git + lfsmake2 squidclamav + lfsmake2 vnstat + lfsmake2 iw + lfsmake2 wpa_supplicant + lfsmake2 hostapd + lfsmake2 pycurl + lfsmake2 urlgrabber + lfsmake2 syslinux + lfsmake2 tftpd + lfsmake2 cpufrequtils + lfsmake2 bluetooth + lfsmake2 gutenprint + lfsmake2 apcupsd + lfsmake2 iperf + lfsmake2 iperf3 + lfsmake2 7zip + lfsmake2 lynis + lfsmake2 streamripper + lfsmake2 sshfs + lfsmake2 taglib + #lfsmake2 mediatomb + lfsmake2 sslh + lfsmake2 perl-gettext + lfsmake2 perl-Sort-Naturally + lfsmake2 vdradmin + lfsmake2 miau + lfsmake2 perl-DBI + lfsmake2 perl-DBD-mysql + lfsmake2 perl-DBD-SQLite + lfsmake2 perl-File-ReadBackwards + lfsmake2 cacti + lfsmake2 openvmtools + lfsmake2 nagiosql + lfsmake2 iftop + lfsmake2 motion + lfsmake2 joe + lfsmake2 monit + lfsmake2 nut + lfsmake2 watchdog + lfsmake2 libpri + lfsmake2 libsrtp + lfsmake2 asterisk + lfsmake2 lcr + lfsmake2 usb_modeswitch + lfsmake2 usb_modeswitch_data + lfsmake2 zerofree + lfsmake2 pound + lfsmake2 minicom + lfsmake2 ddrescue + lfsmake2 imspector + lfsmake2 miniupnpd + lfsmake2 client175 + lfsmake2 powertop + lfsmake2 parted + lfsmake2 swig + lfsmake2 python-m2crypto + lfsmake2 wireless-regdb + lfsmake2 crda + lfsmake2 libsolv + lfsmake2 python-distutils-extra + lfsmake2 python-lzma + lfsmake2 python-progressbar + lfsmake2 python-xattr + lfsmake2 ddns + lfsmake2 transmission + lfsmake2 dpfhack + lfsmake2 lcd4linux + lfsmake2 mtr + lfsmake2 tcpick + lfsmake2 minidlna + lfsmake2 acpid + lfsmake2 fping + lfsmake2 telnet + lfsmake2 xinetd + lfsmake2 gpgme + lfsmake2 pygpgme + lfsmake2 pakfire3 + lfsmake2 stress + lfsmake2 libstatgrab + lfsmake2 sarg + lfsmake2 check_mk_agent + lfsmake2 nginx + lfsmake2 sendEmail + lfsmake2 sysbench + lfsmake2 strace + lfsmake2 elfutils + lfsmake2 ltrace + lfsmake2 ipfire-netboot + lfsmake2 lcdproc + lfsmake2 bitstream + lfsmake2 multicat + lfsmake2 keepalived + lfsmake2 ipvsadm + lfsmake2 perl-Carp-Clan + lfsmake2 perl-Date-Calc + lfsmake2 perl-Date-Manip + lfsmake2 perl-File-Tail + lfsmake2 perl-TimeDate + lfsmake2 swatch + lfsmake2 tor + lfsmake2 arm + lfsmake2 wavemon + lfsmake2 iptraf-ng + lfsmake2 iotop + lfsmake2 stunnel + lfsmake2 sslscan + lfsmake2 owncloud + lfsmake2 bacula + lfsmake2 batctl + lfsmake2 perl-PDF-API2 + lfsmake2 squid-accounting + lfsmake2 pigz + lfsmake2 tmux + lfsmake2 perl-Text-CSV_XS + lfsmake2 swconfig + lfsmake2 haproxy + lfsmake2 ipset + lfsmake2 lua + lfsmake2 dnsdist + lfsmake2 bird + lfsmake2 dmidecode + lfsmake2 mcelog + lfsmake2 rtpproxy + lfsmake2 util-macros + lfsmake2 libpciaccess + lfsmake2 libyajl + lfsmake2 libvirt + lfsmake2 freeradius + lfsmake2 perl-common-sense + lfsmake2 perl-inotify2 + lfsmake2 perl-Net-IP } buildinstaller() { # Run installer scripts one by one LOGFILE="$BASEDIR/log/_build.installer.log" export LOGFILE - ipfiremake memtest - ipfiremake installer + lfsmake2 memtest + lfsmake2 installer installmake strip } @@ -930,20 +928,20 @@ buildpackages() { git log -n 500 --no-merges --pretty=medium --shortstat $EXT > $BASEDIR/doc/ChangeLog # Create images for install - ipfiremake cdrom + lfsmake2 cdrom # Check if there is a loop device for building in virtual environments modprobe loop 2>/dev/null if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then - ipfiremake flash-images - ipfiremake flash-images SCON=1 + lfsmake2 flash-images + lfsmake2 flash-images SCON=1 fi mv $LFS/install/images/{*.iso,*.tgz,*.img.gz,*.bz2} $BASEDIR >> $LOGFILE 2>&1 ipfirepackages - ipfiremake xen-image + lfsmake2 xen-image mv $LFS/install/images/*.bz2 $BASEDIR >> $LOGFILE 2>&1 cd $BASEDIR @@ -977,7 +975,7 @@ buildpackages() { } ipfirepackages() { - ipfiremake core-updates + lfsmake2 core-updates local i for i in $(find $BASEDIR/config/rootfiles/packages{/${BUILD_ARCH},} -maxdepth 1 -type f); do diff --git a/tools/make-functions b/tools/make-functions index 39d941169..45b5cd350 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -661,48 +661,6 @@ lfsmake2() { return 0 } -ipfiremake() { - lfsmakecommoncheck $* - [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper - - local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - CORE=$CORE \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - SYSTEM_RELEASE="$SYSTEM_RELEASE" \ - CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ - KVER=$KVER MAKETUNING=$MAKETUNING \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - $(qemu_environ) \ - $(fake_environ) \ - /bin/bash -x -c "cd /usr/src/lfs && \ - make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - - local COMPILE_SUCCESS=$? - local PKG_TIME_END=`date +%s` - - if [ $COMPILE_SUCCESS -ne 0 ]; then - beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] - exiterror "Building $*"; - else - beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] - fi - return 0 -} - ipfiredist() { lfsmakecommoncheck $* [ $? == 1 ] && return 0 From 2b4156d2e4e84536105a9a4166a52c2c895f92f7 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 21 Apr 2017 12:06:08 +0200 Subject: [PATCH 383/464] make.sh: Drop installmake() Signed-off-by: Michael Tremer --- make.sh | 2 +- tools/make-functions | 38 -------------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/make.sh b/make.sh index e803ce3c0..b54359f5a 100755 --- a/make.sh +++ b/make.sh @@ -897,7 +897,7 @@ buildinstaller() { export LOGFILE lfsmake2 memtest lfsmake2 installer - installmake strip + lfsmake2 strip } buildpackages() { diff --git a/tools/make-functions b/tools/make-functions index 45b5cd350..ebe157a47 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -684,44 +684,6 @@ ipfiredist() { return 0 } -installmake() { - lfsmakecommoncheck $* - [ $? == 1 ] && return 0 - - # Install QEMU helper, if needed - qemu_install_helper - - local PKG_TIME_START=`date +%s` - chroot $LFS /tools/bin/env -i HOME=/root \ - TERM=$TERM PS1='\u:\w\$ ' \ - PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin \ - VERSION=$VERSION \ - SYSTEM_RELEASE="${SYSTEM_RELEASE}" \ - CONFIG_ROOT=$CONFIG_ROOT \ - NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \ - CFLAGS="${CFLAGS} ${HARDENING_CFLAGS}" \ - CXXFLAGS="${CXXFLAGS} ${HARDENING_CFLAGS}" \ - CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \ - KVER=$KVER \ - BUILDTARGET="$BUILDTARGET" \ - CROSSTARGET="${CROSSTARGET}" \ - BUILD_ARCH="${BUILD_ARCH}" \ - LD_LIBRARY_PATH=/tools/lib \ - /tools/bin/bash -x -c "cd /usr/src/lfs && \ - /tools/bin/make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1 - - local COMPILE_SUCCESS=$? - local PKG_TIME_END=`date +%s` - - if [ $COMPILE_SUCCESS -ne 0 ]; then - beautify result FAIL $[ $PKG_TIME_END - $PKG_TIME_START ] - exiterror "Building $*"; - else - beautify result DONE $[ $PKG_TIME_END - $PKG_TIME_START ] - fi - return 0 -} - update_langs() { echo -ne "Checking the translations for missing or obsolete strings..." chmod 755 $BASEDIR/tools/{check_strings.pl,sort_strings.pl,check_langs.sh} From 1e9c3fb2741c4d93650229befc5dea19139ff5da Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 24 Apr 2017 15:55:49 +0200 Subject: [PATCH 384/464] make.sh: Build autoconf and automake before berkeley Signed-off-by: Michael Tremer --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index b54359f5a..d080c059d 100755 --- a/make.sh +++ b/make.sh @@ -340,9 +340,9 @@ buildbase() { lfsmake2 file lfsmake2 gcc lfsmake2 sed - lfsmake2 berkeley lfsmake2 autoconf lfsmake2 automake + lfsmake2 berkeley lfsmake2 coreutils lfsmake2 iana-etc lfsmake2 m4 From 3e9cfac8ba5d761806189fd12caa679525bbc385 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 17 May 2017 23:08:30 +0200 Subject: [PATCH 385/464] tcpick: Drop package This FTBFS and is not maintained upstream any more. Signed-off-by: Michael Tremer --- config/rootfiles/packages/tcpick | 3 -- lfs/tcpick | 84 -------------------------------- make.sh | 1 - 3 files changed, 88 deletions(-) delete mode 100644 config/rootfiles/packages/tcpick delete mode 100644 lfs/tcpick diff --git a/config/rootfiles/packages/tcpick b/config/rootfiles/packages/tcpick deleted file mode 100644 index f447d2159..000000000 --- a/config/rootfiles/packages/tcpick +++ /dev/null @@ -1,3 +0,0 @@ -usr/bin/tcpick -#usr/man/man8/tcpick.8 -#usr/man/man8/tcpick_italian.8 diff --git a/lfs/tcpick b/lfs/tcpick deleted file mode 100644 index 52ba75b68..000000000 --- a/lfs/tcpick +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.2.1 - -THISAPP = tcpick-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = tcpick -PAK_VER = 1 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = bb94f2f9ea81aeb645619fbe9b3b9a29 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index d080c059d..4a4491eda 100755 --- a/make.sh +++ b/make.sh @@ -826,7 +826,6 @@ buildipfire() { lfsmake2 dpfhack lfsmake2 lcd4linux lfsmake2 mtr - lfsmake2 tcpick lfsmake2 minidlna lfsmake2 acpid lfsmake2 fping From 3c2f8544d458cd94f6ad77b5756b44b57bd76fcd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 17 May 2017 23:26:27 +0200 Subject: [PATCH 386/464] iftop: Drop package This is not maintained upstream any more and I cannot get this to build. Signed-off-by: Michael Tremer --- config/rootfiles/packages/iftop | 2 - lfs/iftop | 84 --------------------------------- make.sh | 1 - 3 files changed, 87 deletions(-) delete mode 100644 config/rootfiles/packages/iftop delete mode 100644 lfs/iftop diff --git a/config/rootfiles/packages/iftop b/config/rootfiles/packages/iftop deleted file mode 100644 index 03b111844..000000000 --- a/config/rootfiles/packages/iftop +++ /dev/null @@ -1,2 +0,0 @@ -#usr/man/man8/iftop.8 -usr/sbin/iftop diff --git a/lfs/iftop b/lfs/iftop deleted file mode 100644 index 68a0055ef..000000000 --- a/lfs/iftop +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.17 - -THISAPP = iftop-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = iftop -PAK_VER = 1 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 062bc8fb3856580319857326e0b8752d - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 4a4491eda..fcf2a562f 100755 --- a/make.sh +++ b/make.sh @@ -791,7 +791,6 @@ buildipfire() { lfsmake2 cacti lfsmake2 openvmtools lfsmake2 nagiosql - lfsmake2 iftop lfsmake2 motion lfsmake2 joe lfsmake2 monit From 9ac834f026e9b45d7bd492316a0c98738646e9fe Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 7 May 2017 13:42:30 +0200 Subject: [PATCH 387/464] boost: Update to 1.64.0 Signed-off-by: Michael Tremer --- config/rootfiles/common/boost | 4159 +++++++++++++++++++++++++++------ lfs/boost | 4 +- 2 files changed, 3462 insertions(+), 701 deletions(-) diff --git a/config/rootfiles/common/boost b/config/rootfiles/common/boost index 57cb128b1..39a9c0576 100644 --- a/config/rootfiles/common/boost +++ b/config/rootfiles/common/boost @@ -59,7 +59,9 @@ #usr/include/boost/accumulators/statistics/pot_tail_mean.hpp #usr/include/boost/accumulators/statistics/rolling_count.hpp #usr/include/boost/accumulators/statistics/rolling_mean.hpp +#usr/include/boost/accumulators/statistics/rolling_moment.hpp #usr/include/boost/accumulators/statistics/rolling_sum.hpp +#usr/include/boost/accumulators/statistics/rolling_variance.hpp #usr/include/boost/accumulators/statistics/rolling_window.hpp #usr/include/boost/accumulators/statistics/skewness.hpp #usr/include/boost/accumulators/statistics/stats.hpp @@ -95,6 +97,7 @@ #usr/include/boost/accumulators/statistics/with_error.hpp #usr/include/boost/accumulators/statistics_fwd.hpp #usr/include/boost/algorithm +#usr/include/boost/algorithm/algorithm.hpp #usr/include/boost/algorithm/clamp.hpp #usr/include/boost/algorithm/cxx11 #usr/include/boost/algorithm/cxx11/all_of.hpp @@ -116,6 +119,7 @@ #usr/include/boost/algorithm/cxx14/mismatch.hpp #usr/include/boost/algorithm/gather.hpp #usr/include/boost/algorithm/hex.hpp +#usr/include/boost/algorithm/is_palindrome.hpp #usr/include/boost/algorithm/minmax.hpp #usr/include/boost/algorithm/minmax_element.hpp #usr/include/boost/algorithm/searching @@ -125,6 +129,7 @@ #usr/include/boost/algorithm/searching/detail/bm_traits.hpp #usr/include/boost/algorithm/searching/detail/debugging.hpp #usr/include/boost/algorithm/searching/knuth_morris_pratt.hpp +#usr/include/boost/algorithm/sort_subrange.hpp #usr/include/boost/algorithm/string #usr/include/boost/algorithm/string.hpp #usr/include/boost/algorithm/string/case_conv.hpp @@ -174,10 +179,57 @@ #usr/include/boost/algorithm/string/trim_all.hpp #usr/include/boost/algorithm/string/yes_no_type.hpp #usr/include/boost/algorithm/string_regex.hpp +#usr/include/boost/align +#usr/include/boost/align.hpp +#usr/include/boost/align/align.hpp +#usr/include/boost/align/align_down.hpp +#usr/include/boost/align/align_up.hpp +#usr/include/boost/align/aligned_alloc.hpp +#usr/include/boost/align/aligned_allocator.hpp +#usr/include/boost/align/aligned_allocator_adaptor.hpp +#usr/include/boost/align/aligned_allocator_adaptor_forward.hpp +#usr/include/boost/align/aligned_allocator_forward.hpp +#usr/include/boost/align/aligned_delete.hpp +#usr/include/boost/align/aligned_delete_forward.hpp +#usr/include/boost/align/alignment_of.hpp +#usr/include/boost/align/alignment_of_forward.hpp +#usr/include/boost/align/assume_aligned.hpp +#usr/include/boost/align/detail +#usr/include/boost/align/detail/addressof.hpp +#usr/include/boost/align/detail/align.hpp +#usr/include/boost/align/detail/align_cxx11.hpp +#usr/include/boost/align/detail/align_down.hpp +#usr/include/boost/align/detail/align_up.hpp +#usr/include/boost/align/detail/aligned_alloc.hpp +#usr/include/boost/align/detail/aligned_alloc_android.hpp +#usr/include/boost/align/detail/aligned_alloc_macos.hpp +#usr/include/boost/align/detail/aligned_alloc_msvc.hpp +#usr/include/boost/align/detail/aligned_alloc_posix.hpp +#usr/include/boost/align/detail/aligned_alloc_sunos.hpp +#usr/include/boost/align/detail/alignment_of.hpp +#usr/include/boost/align/detail/alignment_of_clang.hpp +#usr/include/boost/align/detail/alignment_of_codegear.hpp +#usr/include/boost/align/detail/alignment_of_cxx11.hpp +#usr/include/boost/align/detail/alignment_of_gcc.hpp +#usr/include/boost/align/detail/alignment_of_msvc.hpp +#usr/include/boost/align/detail/assume_aligned.hpp +#usr/include/boost/align/detail/assume_aligned_clang.hpp +#usr/include/boost/align/detail/assume_aligned_gcc.hpp +#usr/include/boost/align/detail/assume_aligned_intel.hpp +#usr/include/boost/align/detail/assume_aligned_msvc.hpp +#usr/include/boost/align/detail/element_type.hpp +#usr/include/boost/align/detail/integral_constant.hpp +#usr/include/boost/align/detail/is_aligned.hpp +#usr/include/boost/align/detail/is_alignment.hpp +#usr/include/boost/align/detail/is_alignment_constant.hpp +#usr/include/boost/align/detail/max_align.hpp +#usr/include/boost/align/detail/max_objects.hpp +#usr/include/boost/align/detail/max_size.hpp +#usr/include/boost/align/detail/min_size.hpp +#usr/include/boost/align/is_aligned.hpp #usr/include/boost/aligned_storage.hpp #usr/include/boost/any.hpp #usr/include/boost/archive -#usr/include/boost/archive/add_facet.hpp #usr/include/boost/archive/archive_exception.hpp #usr/include/boost/archive/basic_archive.hpp #usr/include/boost/archive/basic_binary_iarchive.hpp @@ -205,8 +257,6 @@ #usr/include/boost/archive/detail/archive_serializer_map.hpp #usr/include/boost/archive/detail/auto_link_archive.hpp #usr/include/boost/archive/detail/auto_link_warchive.hpp -#usr/include/boost/archive/detail/basic_archive_impl.hpp -#usr/include/boost/archive/detail/basic_config.hpp #usr/include/boost/archive/detail/basic_iarchive.hpp #usr/include/boost/archive/detail/basic_iserializer.hpp #usr/include/boost/archive/detail/basic_oarchive.hpp @@ -219,6 +269,7 @@ #usr/include/boost/archive/detail/common_iarchive.hpp #usr/include/boost/archive/detail/common_oarchive.hpp #usr/include/boost/archive/detail/decl.hpp +#usr/include/boost/archive/detail/helper_collection.hpp #usr/include/boost/archive/detail/interface_iarchive.hpp #usr/include/boost/archive/detail/interface_oarchive.hpp #usr/include/boost/archive/detail/iserializer.hpp @@ -256,7 +307,6 @@ #usr/include/boost/archive/iterators/dataflow.hpp #usr/include/boost/archive/iterators/dataflow_exception.hpp #usr/include/boost/archive/iterators/escape.hpp -#usr/include/boost/archive/iterators/head_iterator.hpp #usr/include/boost/archive/iterators/insert_linebreaks.hpp #usr/include/boost/archive/iterators/istream_iterator.hpp #usr/include/boost/archive/iterators/mb_from_wchar.hpp @@ -280,7 +330,6 @@ #usr/include/boost/archive/polymorphic_xml_oarchive.hpp #usr/include/boost/archive/polymorphic_xml_wiarchive.hpp #usr/include/boost/archive/polymorphic_xml_woarchive.hpp -#usr/include/boost/archive/shared_ptr_helper.hpp #usr/include/boost/archive/text_iarchive.hpp #usr/include/boost/archive/text_oarchive.hpp #usr/include/boost/archive/text_wiarchive.hpp @@ -420,6 +469,7 @@ #usr/include/boost/asio/detail/limits.hpp #usr/include/boost/asio/detail/local_free_on_block_exit.hpp #usr/include/boost/asio/detail/macos_fenced_block.hpp +#usr/include/boost/asio/detail/memory.hpp #usr/include/boost/asio/detail/mutex.hpp #usr/include/boost/asio/detail/noncopyable.hpp #usr/include/boost/asio/detail/null_event.hpp @@ -485,6 +535,7 @@ #usr/include/boost/asio/detail/solaris_fenced_block.hpp #usr/include/boost/asio/detail/static_mutex.hpp #usr/include/boost/asio/detail/std_event.hpp +#usr/include/boost/asio/detail/std_fenced_block.hpp #usr/include/boost/asio/detail/std_mutex.hpp #usr/include/boost/asio/detail/std_static_mutex.hpp #usr/include/boost/asio/detail/std_thread.hpp @@ -521,6 +572,7 @@ #usr/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp #usr/include/boost/asio/detail/win_iocp_serial_port_service.hpp #usr/include/boost/asio/detail/win_iocp_socket_accept_op.hpp +#usr/include/boost/asio/detail/win_iocp_socket_connect_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recv_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp #usr/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp @@ -533,7 +585,7 @@ #usr/include/boost/asio/detail/win_static_mutex.hpp #usr/include/boost/asio/detail/win_thread.hpp #usr/include/boost/asio/detail/win_tss_ptr.hpp -#usr/include/boost/asio/detail/wince_thread.hpp +#usr/include/boost/asio/detail/winapi_thread.hpp #usr/include/boost/asio/detail/winrt_async_manager.hpp #usr/include/boost/asio/detail/winrt_async_op.hpp #usr/include/boost/asio/detail/winrt_resolve_op.hpp @@ -737,29 +789,51 @@ #usr/include/boost/atomic #usr/include/boost/atomic.hpp #usr/include/boost/atomic/atomic.hpp +#usr/include/boost/atomic/atomic_flag.hpp +#usr/include/boost/atomic/capabilities.hpp #usr/include/boost/atomic/detail -#usr/include/boost/atomic/detail/base.hpp -#usr/include/boost/atomic/detail/cas128strong.hpp -#usr/include/boost/atomic/detail/cas32strong.hpp -#usr/include/boost/atomic/detail/cas32weak.hpp -#usr/include/boost/atomic/detail/cas64strong-ptr.hpp -#usr/include/boost/atomic/detail/cas64strong.hpp +#usr/include/boost/atomic/detail/atomic_flag.hpp +#usr/include/boost/atomic/detail/atomic_template.hpp +#usr/include/boost/atomic/detail/bitwise_cast.hpp +#usr/include/boost/atomic/detail/caps_gcc_alpha.hpp +#usr/include/boost/atomic/detail/caps_gcc_arm.hpp +#usr/include/boost/atomic/detail/caps_gcc_atomic.hpp +#usr/include/boost/atomic/detail/caps_gcc_ppc.hpp +#usr/include/boost/atomic/detail/caps_gcc_sparc.hpp +#usr/include/boost/atomic/detail/caps_gcc_sync.hpp +#usr/include/boost/atomic/detail/caps_gcc_x86.hpp +#usr/include/boost/atomic/detail/caps_linux_arm.hpp +#usr/include/boost/atomic/detail/caps_msvc_arm.hpp +#usr/include/boost/atomic/detail/caps_msvc_x86.hpp +#usr/include/boost/atomic/detail/caps_windows.hpp #usr/include/boost/atomic/detail/config.hpp -#usr/include/boost/atomic/detail/gcc-alpha.hpp -#usr/include/boost/atomic/detail/gcc-armv6plus.hpp -#usr/include/boost/atomic/detail/gcc-atomic.hpp -#usr/include/boost/atomic/detail/gcc-cas.hpp -#usr/include/boost/atomic/detail/gcc-ppc.hpp -#usr/include/boost/atomic/detail/gcc-sparcv9.hpp -#usr/include/boost/atomic/detail/gcc-x86.hpp -#usr/include/boost/atomic/detail/generic-cas.hpp +#usr/include/boost/atomic/detail/int_sizes.hpp #usr/include/boost/atomic/detail/interlocked.hpp #usr/include/boost/atomic/detail/link.hpp -#usr/include/boost/atomic/detail/linux-arm.hpp #usr/include/boost/atomic/detail/lockpool.hpp +#usr/include/boost/atomic/detail/operations.hpp +#usr/include/boost/atomic/detail/operations_fwd.hpp +#usr/include/boost/atomic/detail/operations_lockfree.hpp +#usr/include/boost/atomic/detail/ops_cas_based.hpp +#usr/include/boost/atomic/detail/ops_emulated.hpp +#usr/include/boost/atomic/detail/ops_extending_cas_based.hpp +#usr/include/boost/atomic/detail/ops_gcc_alpha.hpp +#usr/include/boost/atomic/detail/ops_gcc_arm.hpp +#usr/include/boost/atomic/detail/ops_gcc_atomic.hpp +#usr/include/boost/atomic/detail/ops_gcc_ppc.hpp +#usr/include/boost/atomic/detail/ops_gcc_sparc.hpp +#usr/include/boost/atomic/detail/ops_gcc_sync.hpp +#usr/include/boost/atomic/detail/ops_gcc_x86.hpp +#usr/include/boost/atomic/detail/ops_gcc_x86_dcas.hpp +#usr/include/boost/atomic/detail/ops_linux_arm.hpp +#usr/include/boost/atomic/detail/ops_msvc_arm.hpp +#usr/include/boost/atomic/detail/ops_msvc_common.hpp +#usr/include/boost/atomic/detail/ops_msvc_x86.hpp +#usr/include/boost/atomic/detail/ops_windows.hpp +#usr/include/boost/atomic/detail/pause.hpp #usr/include/boost/atomic/detail/platform.hpp -#usr/include/boost/atomic/detail/type-classification.hpp -#usr/include/boost/atomic/detail/windows.hpp +#usr/include/boost/atomic/detail/storage_type.hpp +#usr/include/boost/atomic/fences.hpp #usr/include/boost/bimap #usr/include/boost/bimap.hpp #usr/include/boost/bimap/bimap.hpp @@ -984,6 +1058,348 @@ #usr/include/boost/compatibility/cpp_c_headers/cwchar #usr/include/boost/compatibility/cpp_c_headers/cwctype #usr/include/boost/compressed_pair.hpp +#usr/include/boost/compute +#usr/include/boost/compute.hpp +#usr/include/boost/compute/algorithm +#usr/include/boost/compute/algorithm.hpp +#usr/include/boost/compute/algorithm/accumulate.hpp +#usr/include/boost/compute/algorithm/adjacent_difference.hpp +#usr/include/boost/compute/algorithm/adjacent_find.hpp +#usr/include/boost/compute/algorithm/all_of.hpp +#usr/include/boost/compute/algorithm/any_of.hpp +#usr/include/boost/compute/algorithm/binary_search.hpp +#usr/include/boost/compute/algorithm/copy.hpp +#usr/include/boost/compute/algorithm/copy_if.hpp +#usr/include/boost/compute/algorithm/copy_n.hpp +#usr/include/boost/compute/algorithm/count.hpp +#usr/include/boost/compute/algorithm/count_if.hpp +#usr/include/boost/compute/algorithm/detail +#usr/include/boost/compute/algorithm/detail/balanced_path.hpp +#usr/include/boost/compute/algorithm/detail/binary_find.hpp +#usr/include/boost/compute/algorithm/detail/compact.hpp +#usr/include/boost/compute/algorithm/detail/copy_on_device.hpp +#usr/include/boost/compute/algorithm/detail/copy_to_device.hpp +#usr/include/boost/compute/algorithm/detail/copy_to_host.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp +#usr/include/boost/compute/algorithm/detail/count_if_with_threads.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp +#usr/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp +#usr/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp +#usr/include/boost/compute/algorithm/detail/inplace_reduce.hpp +#usr/include/boost/compute/algorithm/detail/insertion_sort.hpp +#usr/include/boost/compute/algorithm/detail/merge_path.hpp +#usr/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp +#usr/include/boost/compute/algorithm/detail/radix_sort.hpp +#usr/include/boost/compute/algorithm/detail/random_fill.hpp +#usr/include/boost/compute/algorithm/detail/reduce_by_key.hpp +#usr/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp +#usr/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/scan.hpp +#usr/include/boost/compute/algorithm/detail/scan_on_cpu.hpp +#usr/include/boost/compute/algorithm/detail/scan_on_gpu.hpp +#usr/include/boost/compute/algorithm/detail/search_all.hpp +#usr/include/boost/compute/algorithm/detail/serial_accumulate.hpp +#usr/include/boost/compute/algorithm/detail/serial_count_if.hpp +#usr/include/boost/compute/algorithm/detail/serial_find_extrema.hpp +#usr/include/boost/compute/algorithm/detail/serial_merge.hpp +#usr/include/boost/compute/algorithm/detail/serial_reduce.hpp +#usr/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp +#usr/include/boost/compute/algorithm/detail/serial_scan.hpp +#usr/include/boost/compute/algorithm/equal.hpp +#usr/include/boost/compute/algorithm/equal_range.hpp +#usr/include/boost/compute/algorithm/exclusive_scan.hpp +#usr/include/boost/compute/algorithm/fill.hpp +#usr/include/boost/compute/algorithm/fill_n.hpp +#usr/include/boost/compute/algorithm/find.hpp +#usr/include/boost/compute/algorithm/find_end.hpp +#usr/include/boost/compute/algorithm/find_if.hpp +#usr/include/boost/compute/algorithm/find_if_not.hpp +#usr/include/boost/compute/algorithm/for_each.hpp +#usr/include/boost/compute/algorithm/for_each_n.hpp +#usr/include/boost/compute/algorithm/gather.hpp +#usr/include/boost/compute/algorithm/generate.hpp +#usr/include/boost/compute/algorithm/generate_n.hpp +#usr/include/boost/compute/algorithm/includes.hpp +#usr/include/boost/compute/algorithm/inclusive_scan.hpp +#usr/include/boost/compute/algorithm/inner_product.hpp +#usr/include/boost/compute/algorithm/inplace_merge.hpp +#usr/include/boost/compute/algorithm/iota.hpp +#usr/include/boost/compute/algorithm/is_partitioned.hpp +#usr/include/boost/compute/algorithm/is_permutation.hpp +#usr/include/boost/compute/algorithm/is_sorted.hpp +#usr/include/boost/compute/algorithm/lexicographical_compare.hpp +#usr/include/boost/compute/algorithm/lower_bound.hpp +#usr/include/boost/compute/algorithm/max_element.hpp +#usr/include/boost/compute/algorithm/merge.hpp +#usr/include/boost/compute/algorithm/min_element.hpp +#usr/include/boost/compute/algorithm/minmax_element.hpp +#usr/include/boost/compute/algorithm/mismatch.hpp +#usr/include/boost/compute/algorithm/next_permutation.hpp +#usr/include/boost/compute/algorithm/none_of.hpp +#usr/include/boost/compute/algorithm/nth_element.hpp +#usr/include/boost/compute/algorithm/partial_sum.hpp +#usr/include/boost/compute/algorithm/partition.hpp +#usr/include/boost/compute/algorithm/partition_copy.hpp +#usr/include/boost/compute/algorithm/partition_point.hpp +#usr/include/boost/compute/algorithm/prev_permutation.hpp +#usr/include/boost/compute/algorithm/random_shuffle.hpp +#usr/include/boost/compute/algorithm/reduce.hpp +#usr/include/boost/compute/algorithm/reduce_by_key.hpp +#usr/include/boost/compute/algorithm/remove.hpp +#usr/include/boost/compute/algorithm/remove_if.hpp +#usr/include/boost/compute/algorithm/replace.hpp +#usr/include/boost/compute/algorithm/replace_copy.hpp +#usr/include/boost/compute/algorithm/reverse.hpp +#usr/include/boost/compute/algorithm/reverse_copy.hpp +#usr/include/boost/compute/algorithm/rotate.hpp +#usr/include/boost/compute/algorithm/rotate_copy.hpp +#usr/include/boost/compute/algorithm/scatter.hpp +#usr/include/boost/compute/algorithm/scatter_if.hpp +#usr/include/boost/compute/algorithm/search.hpp +#usr/include/boost/compute/algorithm/search_n.hpp +#usr/include/boost/compute/algorithm/set_difference.hpp +#usr/include/boost/compute/algorithm/set_intersection.hpp +#usr/include/boost/compute/algorithm/set_symmetric_difference.hpp +#usr/include/boost/compute/algorithm/set_union.hpp +#usr/include/boost/compute/algorithm/sort.hpp +#usr/include/boost/compute/algorithm/sort_by_key.hpp +#usr/include/boost/compute/algorithm/stable_partition.hpp +#usr/include/boost/compute/algorithm/stable_sort.hpp +#usr/include/boost/compute/algorithm/stable_sort_by_key.hpp +#usr/include/boost/compute/algorithm/swap_ranges.hpp +#usr/include/boost/compute/algorithm/transform.hpp +#usr/include/boost/compute/algorithm/transform_if.hpp +#usr/include/boost/compute/algorithm/transform_reduce.hpp +#usr/include/boost/compute/algorithm/unique.hpp +#usr/include/boost/compute/algorithm/unique_copy.hpp +#usr/include/boost/compute/algorithm/upper_bound.hpp +#usr/include/boost/compute/allocator +#usr/include/boost/compute/allocator.hpp +#usr/include/boost/compute/allocator/buffer_allocator.hpp +#usr/include/boost/compute/allocator/pinned_allocator.hpp +#usr/include/boost/compute/async +#usr/include/boost/compute/async.hpp +#usr/include/boost/compute/async/future.hpp +#usr/include/boost/compute/async/wait.hpp +#usr/include/boost/compute/async/wait_guard.hpp +#usr/include/boost/compute/buffer.hpp +#usr/include/boost/compute/cl.hpp +#usr/include/boost/compute/cl_ext.hpp +#usr/include/boost/compute/closure.hpp +#usr/include/boost/compute/command_queue.hpp +#usr/include/boost/compute/config.hpp +#usr/include/boost/compute/container +#usr/include/boost/compute/container.hpp +#usr/include/boost/compute/container/array.hpp +#usr/include/boost/compute/container/basic_string.hpp +#usr/include/boost/compute/container/detail +#usr/include/boost/compute/container/detail/scalar.hpp +#usr/include/boost/compute/container/dynamic_bitset.hpp +#usr/include/boost/compute/container/flat_map.hpp +#usr/include/boost/compute/container/flat_set.hpp +#usr/include/boost/compute/container/mapped_view.hpp +#usr/include/boost/compute/container/stack.hpp +#usr/include/boost/compute/container/string.hpp +#usr/include/boost/compute/container/valarray.hpp +#usr/include/boost/compute/container/vector.hpp +#usr/include/boost/compute/context.hpp +#usr/include/boost/compute/core.hpp +#usr/include/boost/compute/detail +#usr/include/boost/compute/detail/assert_cl_success.hpp +#usr/include/boost/compute/detail/buffer_value.hpp +#usr/include/boost/compute/detail/device_ptr.hpp +#usr/include/boost/compute/detail/diagnostic.hpp +#usr/include/boost/compute/detail/duration.hpp +#usr/include/boost/compute/detail/get_object_info.hpp +#usr/include/boost/compute/detail/getenv.hpp +#usr/include/boost/compute/detail/global_static.hpp +#usr/include/boost/compute/detail/is_buffer_iterator.hpp +#usr/include/boost/compute/detail/is_contiguous_iterator.hpp +#usr/include/boost/compute/detail/iterator_plus_distance.hpp +#usr/include/boost/compute/detail/iterator_range_size.hpp +#usr/include/boost/compute/detail/iterator_traits.hpp +#usr/include/boost/compute/detail/literal.hpp +#usr/include/boost/compute/detail/lru_cache.hpp +#usr/include/boost/compute/detail/meta_kernel.hpp +#usr/include/boost/compute/detail/mpl_vector_to_tuple.hpp +#usr/include/boost/compute/detail/nvidia_compute_capability.hpp +#usr/include/boost/compute/detail/parameter_cache.hpp +#usr/include/boost/compute/detail/path.hpp +#usr/include/boost/compute/detail/print_range.hpp +#usr/include/boost/compute/detail/read_write_single_value.hpp +#usr/include/boost/compute/detail/sha1.hpp +#usr/include/boost/compute/detail/variadic_macros.hpp +#usr/include/boost/compute/detail/vendor.hpp +#usr/include/boost/compute/detail/work_size.hpp +#usr/include/boost/compute/device.hpp +#usr/include/boost/compute/event.hpp +#usr/include/boost/compute/exception +#usr/include/boost/compute/exception.hpp +#usr/include/boost/compute/exception/context_error.hpp +#usr/include/boost/compute/exception/no_device_found.hpp +#usr/include/boost/compute/exception/opencl_error.hpp +#usr/include/boost/compute/exception/unsupported_extension_error.hpp +#usr/include/boost/compute/experimental +#usr/include/boost/compute/experimental/clamp_range.hpp +#usr/include/boost/compute/experimental/malloc.hpp +#usr/include/boost/compute/experimental/sort_by_transform.hpp +#usr/include/boost/compute/experimental/tabulate.hpp +#usr/include/boost/compute/function.hpp +#usr/include/boost/compute/functional +#usr/include/boost/compute/functional.hpp +#usr/include/boost/compute/functional/as.hpp +#usr/include/boost/compute/functional/atomic.hpp +#usr/include/boost/compute/functional/bind.hpp +#usr/include/boost/compute/functional/common.hpp +#usr/include/boost/compute/functional/convert.hpp +#usr/include/boost/compute/functional/detail +#usr/include/boost/compute/functional/detail/macros.hpp +#usr/include/boost/compute/functional/detail/nvidia_ballot.hpp +#usr/include/boost/compute/functional/detail/nvidia_popcount.hpp +#usr/include/boost/compute/functional/detail/unpack.hpp +#usr/include/boost/compute/functional/field.hpp +#usr/include/boost/compute/functional/geometry.hpp +#usr/include/boost/compute/functional/get.hpp +#usr/include/boost/compute/functional/hash.hpp +#usr/include/boost/compute/functional/identity.hpp +#usr/include/boost/compute/functional/integer.hpp +#usr/include/boost/compute/functional/logical.hpp +#usr/include/boost/compute/functional/math.hpp +#usr/include/boost/compute/functional/operator.hpp +#usr/include/boost/compute/functional/popcount.hpp +#usr/include/boost/compute/functional/relational.hpp +#usr/include/boost/compute/image +#usr/include/boost/compute/image.hpp +#usr/include/boost/compute/image/image1d.hpp +#usr/include/boost/compute/image/image2d.hpp +#usr/include/boost/compute/image/image3d.hpp +#usr/include/boost/compute/image/image_format.hpp +#usr/include/boost/compute/image/image_object.hpp +#usr/include/boost/compute/image/image_sampler.hpp +#usr/include/boost/compute/image2d.hpp +#usr/include/boost/compute/image3d.hpp +#usr/include/boost/compute/image_format.hpp +#usr/include/boost/compute/image_sampler.hpp +#usr/include/boost/compute/interop +#usr/include/boost/compute/interop/eigen +#usr/include/boost/compute/interop/eigen.hpp +#usr/include/boost/compute/interop/eigen/core.hpp +#usr/include/boost/compute/interop/opencv +#usr/include/boost/compute/interop/opencv.hpp +#usr/include/boost/compute/interop/opencv/core.hpp +#usr/include/boost/compute/interop/opencv/highgui.hpp +#usr/include/boost/compute/interop/opencv/ocl.hpp +#usr/include/boost/compute/interop/opengl +#usr/include/boost/compute/interop/opengl.hpp +#usr/include/boost/compute/interop/opengl/acquire.hpp +#usr/include/boost/compute/interop/opengl/cl_gl.hpp +#usr/include/boost/compute/interop/opengl/cl_gl_ext.hpp +#usr/include/boost/compute/interop/opengl/context.hpp +#usr/include/boost/compute/interop/opengl/gl.hpp +#usr/include/boost/compute/interop/opengl/opengl_buffer.hpp +#usr/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp +#usr/include/boost/compute/interop/opengl/opengl_texture.hpp +#usr/include/boost/compute/interop/qt +#usr/include/boost/compute/interop/qt.hpp +#usr/include/boost/compute/interop/qt/qimage.hpp +#usr/include/boost/compute/interop/qt/qpoint.hpp +#usr/include/boost/compute/interop/qt/qpointf.hpp +#usr/include/boost/compute/interop/qt/qtcore.hpp +#usr/include/boost/compute/interop/qt/qtgui.hpp +#usr/include/boost/compute/interop/qt/qvector.hpp +#usr/include/boost/compute/interop/vtk +#usr/include/boost/compute/interop/vtk.hpp +#usr/include/boost/compute/interop/vtk/bounds.hpp +#usr/include/boost/compute/interop/vtk/data_array.hpp +#usr/include/boost/compute/interop/vtk/matrix4x4.hpp +#usr/include/boost/compute/interop/vtk/points.hpp +#usr/include/boost/compute/iterator +#usr/include/boost/compute/iterator.hpp +#usr/include/boost/compute/iterator/buffer_iterator.hpp +#usr/include/boost/compute/iterator/constant_buffer_iterator.hpp +#usr/include/boost/compute/iterator/constant_iterator.hpp +#usr/include/boost/compute/iterator/counting_iterator.hpp +#usr/include/boost/compute/iterator/detail +#usr/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp +#usr/include/boost/compute/iterator/detail/swizzle_iterator.hpp +#usr/include/boost/compute/iterator/discard_iterator.hpp +#usr/include/boost/compute/iterator/function_input_iterator.hpp +#usr/include/boost/compute/iterator/permutation_iterator.hpp +#usr/include/boost/compute/iterator/strided_iterator.hpp +#usr/include/boost/compute/iterator/transform_iterator.hpp +#usr/include/boost/compute/iterator/zip_iterator.hpp +#usr/include/boost/compute/kernel.hpp +#usr/include/boost/compute/lambda +#usr/include/boost/compute/lambda.hpp +#usr/include/boost/compute/lambda/context.hpp +#usr/include/boost/compute/lambda/functional.hpp +#usr/include/boost/compute/lambda/get.hpp +#usr/include/boost/compute/lambda/make_pair.hpp +#usr/include/boost/compute/lambda/make_tuple.hpp +#usr/include/boost/compute/lambda/placeholder.hpp +#usr/include/boost/compute/lambda/placeholders.hpp +#usr/include/boost/compute/lambda/result_of.hpp +#usr/include/boost/compute/memory +#usr/include/boost/compute/memory.hpp +#usr/include/boost/compute/memory/local_buffer.hpp +#usr/include/boost/compute/memory/svm_ptr.hpp +#usr/include/boost/compute/memory_object.hpp +#usr/include/boost/compute/pipe.hpp +#usr/include/boost/compute/platform.hpp +#usr/include/boost/compute/program.hpp +#usr/include/boost/compute/random +#usr/include/boost/compute/random.hpp +#usr/include/boost/compute/random/bernoulli_distribution.hpp +#usr/include/boost/compute/random/default_random_engine.hpp +#usr/include/boost/compute/random/discrete_distribution.hpp +#usr/include/boost/compute/random/linear_congruential_engine.hpp +#usr/include/boost/compute/random/mersenne_twister_engine.hpp +#usr/include/boost/compute/random/normal_distribution.hpp +#usr/include/boost/compute/random/threefry_engine.hpp +#usr/include/boost/compute/random/uniform_int_distribution.hpp +#usr/include/boost/compute/random/uniform_real_distribution.hpp +#usr/include/boost/compute/source.hpp +#usr/include/boost/compute/svm.hpp +#usr/include/boost/compute/system.hpp +#usr/include/boost/compute/type_traits +#usr/include/boost/compute/type_traits.hpp +#usr/include/boost/compute/type_traits/common_type.hpp +#usr/include/boost/compute/type_traits/detail +#usr/include/boost/compute/type_traits/detail/capture_traits.hpp +#usr/include/boost/compute/type_traits/is_device_iterator.hpp +#usr/include/boost/compute/type_traits/is_fundamental.hpp +#usr/include/boost/compute/type_traits/is_vector_type.hpp +#usr/include/boost/compute/type_traits/make_vector_type.hpp +#usr/include/boost/compute/type_traits/result_of.hpp +#usr/include/boost/compute/type_traits/scalar_type.hpp +#usr/include/boost/compute/type_traits/type_definition.hpp +#usr/include/boost/compute/type_traits/type_name.hpp +#usr/include/boost/compute/type_traits/vector_size.hpp +#usr/include/boost/compute/types +#usr/include/boost/compute/types.hpp +#usr/include/boost/compute/types/builtin.hpp +#usr/include/boost/compute/types/complex.hpp +#usr/include/boost/compute/types/fundamental.hpp +#usr/include/boost/compute/types/pair.hpp +#usr/include/boost/compute/types/struct.hpp +#usr/include/boost/compute/types/tuple.hpp +#usr/include/boost/compute/user_event.hpp +#usr/include/boost/compute/utility +#usr/include/boost/compute/utility.hpp +#usr/include/boost/compute/utility/dim.hpp +#usr/include/boost/compute/utility/extents.hpp +#usr/include/boost/compute/utility/invoke.hpp +#usr/include/boost/compute/utility/program_cache.hpp +#usr/include/boost/compute/utility/source.hpp +#usr/include/boost/compute/utility/wait_list.hpp +#usr/include/boost/compute/version.hpp +#usr/include/boost/compute/wait_list.hpp #usr/include/boost/concept #usr/include/boost/concept/assert.hpp #usr/include/boost/concept/detail @@ -1037,6 +1453,7 @@ #usr/include/boost/config/compiler/sunpro_cc.hpp #usr/include/boost/config/compiler/vacpp.hpp #usr/include/boost/config/compiler/visualc.hpp +#usr/include/boost/config/compiler/xlcpp.hpp #usr/include/boost/config/no_tr1 #usr/include/boost/config/no_tr1/cmath.hpp #usr/include/boost/config/no_tr1/complex.hpp @@ -1048,8 +1465,10 @@ #usr/include/boost/config/platform/amigaos.hpp #usr/include/boost/config/platform/beos.hpp #usr/include/boost/config/platform/bsd.hpp +#usr/include/boost/config/platform/cloudabi.hpp #usr/include/boost/config/platform/cray.hpp #usr/include/boost/config/platform/cygwin.hpp +#usr/include/boost/config/platform/haiku.hpp #usr/include/boost/config/platform/hpux.hpp #usr/include/boost/config/platform/irix.hpp #usr/include/boost/config/platform/linux.hpp @@ -1080,34 +1499,59 @@ #usr/include/boost/config/user.hpp #usr/include/boost/config/warning_disable.hpp #usr/include/boost/container +#usr/include/boost/container/adaptive_pool.hpp +#usr/include/boost/container/allocator.hpp #usr/include/boost/container/allocator_traits.hpp #usr/include/boost/container/container_fwd.hpp #usr/include/boost/container/deque.hpp #usr/include/boost/container/detail +#usr/include/boost/container/detail/adaptive_node_pool.hpp #usr/include/boost/container/detail/adaptive_node_pool_impl.hpp +#usr/include/boost/container/detail/addressof.hpp #usr/include/boost/container/detail/advanced_insert_int.hpp -#usr/include/boost/container/detail/algorithms.hpp +#usr/include/boost/container/detail/algorithm.hpp +#usr/include/boost/container/detail/alloc_helpers.hpp +#usr/include/boost/container/detail/alloc_lib.h #usr/include/boost/container/detail/allocation_type.hpp #usr/include/boost/container/detail/allocator_version_traits.hpp +#usr/include/boost/container/detail/auto_link.hpp +#usr/include/boost/container/detail/block_list.hpp +#usr/include/boost/container/detail/block_slist.hpp +#usr/include/boost/container/detail/compare_functors.hpp #usr/include/boost/container/detail/config_begin.hpp #usr/include/boost/container/detail/config_end.hpp +#usr/include/boost/container/detail/construct_in_place.hpp +#usr/include/boost/container/detail/copy_move_algo.hpp #usr/include/boost/container/detail/destroyers.hpp +#usr/include/boost/container/detail/dispatch_uses_allocator.hpp +#usr/include/boost/container/detail/dlmalloc.hpp #usr/include/boost/container/detail/flat_tree.hpp #usr/include/boost/container/detail/function_detector.hpp +#usr/include/boost/container/detail/is_sorted.hpp +#usr/include/boost/container/detail/iterator.hpp +#usr/include/boost/container/detail/iterator_to_raw_pointer.hpp #usr/include/boost/container/detail/iterators.hpp #usr/include/boost/container/detail/math_functions.hpp -#usr/include/boost/container/detail/memory_util.hpp +#usr/include/boost/container/detail/min_max.hpp +#usr/include/boost/container/detail/minimal_char_traits_header.hpp #usr/include/boost/container/detail/mpl.hpp #usr/include/boost/container/detail/multiallocation_chain.hpp +#usr/include/boost/container/detail/mutex.hpp +#usr/include/boost/container/detail/next_capacity.hpp #usr/include/boost/container/detail/node_alloc_holder.hpp +#usr/include/boost/container/detail/node_pool.hpp #usr/include/boost/container/detail/node_pool_impl.hpp #usr/include/boost/container/detail/pair.hpp +#usr/include/boost/container/detail/placement_new.hpp #usr/include/boost/container/detail/pool_common.hpp -#usr/include/boost/container/detail/preprocessor.hpp +#usr/include/boost/container/detail/pool_common_alloc.hpp +#usr/include/boost/container/detail/pool_resource.hpp +#usr/include/boost/container/detail/singleton.hpp +#usr/include/boost/container/detail/std_fwd.hpp +#usr/include/boost/container/detail/to_raw_pointer.hpp #usr/include/boost/container/detail/transform_iterator.hpp #usr/include/boost/container/detail/tree.hpp #usr/include/boost/container/detail/type_traits.hpp -#usr/include/boost/container/detail/utilities.hpp #usr/include/boost/container/detail/value_init.hpp #usr/include/boost/container/detail/variadic_templates_tools.hpp #usr/include/boost/container/detail/version_type.hpp @@ -1116,20 +1560,55 @@ #usr/include/boost/container/flat_set.hpp #usr/include/boost/container/list.hpp #usr/include/boost/container/map.hpp +#usr/include/boost/container/new_allocator.hpp +#usr/include/boost/container/node_allocator.hpp +#usr/include/boost/container/node_handle.hpp +#usr/include/boost/container/options.hpp +#usr/include/boost/container/pmr +#usr/include/boost/container/pmr/deque.hpp +#usr/include/boost/container/pmr/flat_map.hpp +#usr/include/boost/container/pmr/flat_set.hpp +#usr/include/boost/container/pmr/global_resource.hpp +#usr/include/boost/container/pmr/list.hpp +#usr/include/boost/container/pmr/map.hpp +#usr/include/boost/container/pmr/memory_resource.hpp +#usr/include/boost/container/pmr/monotonic_buffer_resource.hpp +#usr/include/boost/container/pmr/polymorphic_allocator.hpp +#usr/include/boost/container/pmr/pool_options.hpp +#usr/include/boost/container/pmr/resource_adaptor.hpp +#usr/include/boost/container/pmr/set.hpp +#usr/include/boost/container/pmr/slist.hpp +#usr/include/boost/container/pmr/small_vector.hpp +#usr/include/boost/container/pmr/stable_vector.hpp +#usr/include/boost/container/pmr/string.hpp +#usr/include/boost/container/pmr/synchronized_pool_resource.hpp +#usr/include/boost/container/pmr/unsynchronized_pool_resource.hpp +#usr/include/boost/container/pmr/vector.hpp #usr/include/boost/container/scoped_allocator.hpp #usr/include/boost/container/scoped_allocator_fwd.hpp #usr/include/boost/container/set.hpp #usr/include/boost/container/slist.hpp +#usr/include/boost/container/small_vector.hpp #usr/include/boost/container/stable_vector.hpp #usr/include/boost/container/static_vector.hpp #usr/include/boost/container/string.hpp #usr/include/boost/container/throw_exception.hpp +#usr/include/boost/container/uses_allocator.hpp +#usr/include/boost/container/uses_allocator_fwd.hpp #usr/include/boost/container/vector.hpp #usr/include/boost/context #usr/include/boost/context/all.hpp +#usr/include/boost/context/continuation.hpp #usr/include/boost/context/detail +#usr/include/boost/context/detail/apply.hpp #usr/include/boost/context/detail/config.hpp +#usr/include/boost/context/detail/disable_overload.hpp +#usr/include/boost/context/detail/exception.hpp +#usr/include/boost/context/detail/exchange.hpp +#usr/include/boost/context/detail/fcontext.hpp #usr/include/boost/context/detail/fcontext_arm.hpp +#usr/include/boost/context/detail/fcontext_arm_mac.hpp +#usr/include/boost/context/detail/fcontext_arm_win.hpp #usr/include/boost/context/detail/fcontext_i386.hpp #usr/include/boost/context/detail/fcontext_i386_win.hpp #usr/include/boost/context/detail/fcontext_mips.hpp @@ -1137,57 +1616,140 @@ #usr/include/boost/context/detail/fcontext_sparc.hpp #usr/include/boost/context/detail/fcontext_x86_64.hpp #usr/include/boost/context/detail/fcontext_x86_64_win.hpp -#usr/include/boost/context/fcontext.hpp +#usr/include/boost/context/detail/index_sequence.hpp +#usr/include/boost/context/detail/invoke.hpp +#usr/include/boost/context/detail/tuple.hpp +#usr/include/boost/context/execution_context.hpp +#usr/include/boost/context/execution_context_v1.hpp +#usr/include/boost/context/execution_context_v2.hpp +#usr/include/boost/context/execution_context_v2_void.ipp +#usr/include/boost/context/fixedsize_stack.hpp +#usr/include/boost/context/flags.hpp +#usr/include/boost/context/pooled_fixedsize_stack.hpp +#usr/include/boost/context/posix +#usr/include/boost/context/posix/fixedsize_stack.hpp +#usr/include/boost/context/posix/protected_fixedsize_stack.hpp +#usr/include/boost/context/posix/segmented_stack.hpp +#usr/include/boost/context/preallocated.hpp +#usr/include/boost/context/protected_fixedsize_stack.hpp +#usr/include/boost/context/segmented_stack.hpp +#usr/include/boost/context/stack_context.hpp +#usr/include/boost/context/stack_traits.hpp +#usr/include/boost/context/windows +#usr/include/boost/context/windows/fixedsize_stack.hpp +#usr/include/boost/context/windows/protected_fixedsize_stack.hpp +#usr/include/boost/convert +#usr/include/boost/convert.hpp +#usr/include/boost/convert/base.hpp +#usr/include/boost/convert/detail +#usr/include/boost/convert/detail/boost_parameter_ext.hpp +#usr/include/boost/convert/detail/char.hpp +#usr/include/boost/convert/detail/forward.hpp +#usr/include/boost/convert/detail/has_member.hpp +#usr/include/boost/convert/detail/is_callable.hpp +#usr/include/boost/convert/detail/is_converter.hpp +#usr/include/boost/convert/detail/is_fun.hpp +#usr/include/boost/convert/detail/is_string.hpp +#usr/include/boost/convert/detail/range.hpp +#usr/include/boost/convert/lexical_cast.hpp +#usr/include/boost/convert/parameters.hpp +#usr/include/boost/convert/printf.hpp +#usr/include/boost/convert/spirit.hpp +#usr/include/boost/convert/stream.hpp +#usr/include/boost/convert/strtol.hpp +#usr/include/boost/core +#usr/include/boost/core/addressof.hpp +#usr/include/boost/core/checked_delete.hpp +#usr/include/boost/core/demangle.hpp +#usr/include/boost/core/enable_if.hpp +#usr/include/boost/core/explicit_operator_bool.hpp +#usr/include/boost/core/ignore_unused.hpp +#usr/include/boost/core/is_same.hpp +#usr/include/boost/core/lightweight_test.hpp +#usr/include/boost/core/lightweight_test_trait.hpp +#usr/include/boost/core/no_exceptions_support.hpp +#usr/include/boost/core/noncopyable.hpp +#usr/include/boost/core/null_deleter.hpp +#usr/include/boost/core/ref.hpp +#usr/include/boost/core/scoped_enum.hpp +#usr/include/boost/core/swap.hpp +#usr/include/boost/core/typeinfo.hpp +#usr/include/boost/core/underlying_type.hpp #usr/include/boost/coroutine #usr/include/boost/coroutine/all.hpp +#usr/include/boost/coroutine/asymmetric_coroutine.hpp #usr/include/boost/coroutine/attributes.hpp -#usr/include/boost/coroutine/checkpoint.hpp #usr/include/boost/coroutine/coroutine.hpp #usr/include/boost/coroutine/detail #usr/include/boost/coroutine/detail/config.hpp #usr/include/boost/coroutine/detail/coroutine_context.hpp -#usr/include/boost/coroutine/detail/exceptions.hpp +#usr/include/boost/coroutine/detail/data.hpp #usr/include/boost/coroutine/detail/flags.hpp -#usr/include/boost/coroutine/detail/holder.hpp -#usr/include/boost/coroutine/detail/param.hpp -#usr/include/boost/coroutine/detail/segmented_stack_allocator.hpp -#usr/include/boost/coroutine/detail/stack_tuple.hpp -#usr/include/boost/coroutine/detail/standard_stack_allocator.hpp +#usr/include/boost/coroutine/detail/parameters.hpp +#usr/include/boost/coroutine/detail/preallocated.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_object.hpp +#usr/include/boost/coroutine/detail/pull_coroutine_synthesized.hpp +#usr/include/boost/coroutine/detail/push_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/push_coroutine_object.hpp +#usr/include/boost/coroutine/detail/push_coroutine_synthesized.hpp +#usr/include/boost/coroutine/detail/setup.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_call.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_impl.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_object.hpp +#usr/include/boost/coroutine/detail/symmetric_coroutine_yield.hpp #usr/include/boost/coroutine/detail/trampoline.hpp +#usr/include/boost/coroutine/detail/trampoline_pull.hpp +#usr/include/boost/coroutine/detail/trampoline_push.hpp #usr/include/boost/coroutine/exceptions.hpp #usr/include/boost/coroutine/flags.hpp +#usr/include/boost/coroutine/posix +#usr/include/boost/coroutine/posix/protected_stack_allocator.hpp +#usr/include/boost/coroutine/posix/segmented_stack_allocator.hpp +#usr/include/boost/coroutine/protected_stack_allocator.hpp +#usr/include/boost/coroutine/segmented_stack_allocator.hpp #usr/include/boost/coroutine/stack_allocator.hpp #usr/include/boost/coroutine/stack_context.hpp -#usr/include/boost/coroutine/v1 -#usr/include/boost/coroutine/v1/coroutine.hpp -#usr/include/boost/coroutine/v1/detail -#usr/include/boost/coroutine/v1/detail/arg.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_base.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_base_resume.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_caller.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_get.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_object.hpp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_0.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_1.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_result_arity.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_0.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_1.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_object_void_arity.ipp -#usr/include/boost/coroutine/v1/detail/coroutine_op.hpp -#usr/include/boost/coroutine/v2 -#usr/include/boost/coroutine/v2/coroutine.hpp -#usr/include/boost/coroutine/v2/detail -#usr/include/boost/coroutine/v2/detail/pull_coroutine_base.hpp -#usr/include/boost/coroutine/v2/detail/pull_coroutine_caller.hpp -#usr/include/boost/coroutine/v2/detail/pull_coroutine_object.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_base.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_caller.hpp -#usr/include/boost/coroutine/v2/detail/push_coroutine_object.hpp +#usr/include/boost/coroutine/stack_traits.hpp +#usr/include/boost/coroutine/standard_stack_allocator.hpp +#usr/include/boost/coroutine/symmetric_coroutine.hpp +#usr/include/boost/coroutine/windows +#usr/include/boost/coroutine/windows/protected_stack_allocator.hpp +#usr/include/boost/coroutine2 +#usr/include/boost/coroutine2/all.hpp +#usr/include/boost/coroutine2/coroutine.hpp +#usr/include/boost/coroutine2/detail +#usr/include/boost/coroutine2/detail/config.hpp +#usr/include/boost/coroutine2/detail/coroutine.hpp +#usr/include/boost/coroutine2/detail/create_control_block.ipp +#usr/include/boost/coroutine2/detail/decay_copy.hpp +#usr/include/boost/coroutine2/detail/disable_overload.hpp +#usr/include/boost/coroutine2/detail/forced_unwind.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_cc.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_cc.ipp +#usr/include/boost/coroutine2/detail/pull_control_block_ecv1.hpp +#usr/include/boost/coroutine2/detail/pull_control_block_ecv1.ipp +#usr/include/boost/coroutine2/detail/pull_coroutine.hpp +#usr/include/boost/coroutine2/detail/pull_coroutine.ipp +#usr/include/boost/coroutine2/detail/push_control_block_cc.hpp +#usr/include/boost/coroutine2/detail/push_control_block_cc.ipp +#usr/include/boost/coroutine2/detail/push_control_block_ecv1.hpp +#usr/include/boost/coroutine2/detail/push_control_block_ecv1.ipp +#usr/include/boost/coroutine2/detail/push_coroutine.hpp +#usr/include/boost/coroutine2/detail/push_coroutine.ipp +#usr/include/boost/coroutine2/detail/state.hpp +#usr/include/boost/coroutine2/detail/wrap.hpp +#usr/include/boost/coroutine2/fixedsize_stack.hpp +#usr/include/boost/coroutine2/pooled_fixedsize_stack.hpp +#usr/include/boost/coroutine2/protected_fixedsize_stack.hpp +#usr/include/boost/coroutine2/segmented_stack.hpp #usr/include/boost/crc.hpp #usr/include/boost/cregex.hpp +#usr/include/boost/cstdfloat.hpp #usr/include/boost/cstdint.hpp #usr/include/boost/cstdlib.hpp #usr/include/boost/current_function.hpp +#usr/include/boost/cxx11_char_types.hpp #usr/include/boost/date_time #usr/include/boost/date_time.hpp #usr/include/boost/date_time/adjust_functors.hpp @@ -1302,6 +1864,7 @@ #usr/include/boost/detail/atomic_count.hpp #usr/include/boost/detail/atomic_redef_macros.hpp #usr/include/boost/detail/atomic_undef_macros.hpp +#usr/include/boost/detail/basic_pointerbuf.hpp #usr/include/boost/detail/binary_search.hpp #usr/include/boost/detail/bitmask.hpp #usr/include/boost/detail/call_traits.hpp @@ -1315,7 +1878,6 @@ #usr/include/boost/detail/identifier.hpp #usr/include/boost/detail/indirect_traits.hpp #usr/include/boost/detail/interlocked.hpp -#usr/include/boost/detail/is_function_ref_tester.hpp #usr/include/boost/detail/is_incrementable.hpp #usr/include/boost/detail/is_sorted.hpp #usr/include/boost/detail/is_xxx.hpp @@ -1324,13 +1886,11 @@ #usr/include/boost/detail/lightweight_main.hpp #usr/include/boost/detail/lightweight_mutex.hpp #usr/include/boost/detail/lightweight_test.hpp +#usr/include/boost/detail/lightweight_test_report.hpp #usr/include/boost/detail/lightweight_thread.hpp -#usr/include/boost/detail/limits.hpp #usr/include/boost/detail/named_template_params.hpp #usr/include/boost/detail/no_exceptions_support.hpp -#usr/include/boost/detail/none_t.hpp #usr/include/boost/detail/numeric_traits.hpp -#usr/include/boost/detail/ob_call_traits.hpp #usr/include/boost/detail/ob_compressed_pair.hpp #usr/include/boost/detail/quick_allocator.hpp #usr/include/boost/detail/reference_content.hpp @@ -1346,39 +1906,127 @@ #usr/include/boost/detail/winapi/GetLastError.hpp #usr/include/boost/detail/winapi/GetProcessTimes.hpp #usr/include/boost/detail/winapi/GetThreadTimes.hpp -#usr/include/boost/detail/winapi/LocalFree.hpp +#usr/include/boost/detail/winapi/access_rights.hpp +#usr/include/boost/detail/winapi/apc.hpp #usr/include/boost/detail/winapi/basic_types.hpp +#usr/include/boost/detail/winapi/character_code_conversion.hpp +#usr/include/boost/detail/winapi/condition_variable.hpp +#usr/include/boost/detail/winapi/config.hpp +#usr/include/boost/detail/winapi/critical_section.hpp +#usr/include/boost/detail/winapi/crypt.hpp +#usr/include/boost/detail/winapi/dbghelp.hpp +#usr/include/boost/detail/winapi/detail +#usr/include/boost/detail/winapi/detail/cast_ptr.hpp #usr/include/boost/detail/winapi/directory_management.hpp #usr/include/boost/detail/winapi/dll.hpp +#usr/include/boost/detail/winapi/environment.hpp +#usr/include/boost/detail/winapi/error_codes.hpp #usr/include/boost/detail/winapi/error_handling.hpp +#usr/include/boost/detail/winapi/event.hpp #usr/include/boost/detail/winapi/file_management.hpp +#usr/include/boost/detail/winapi/file_mapping.hpp +#usr/include/boost/detail/winapi/get_current_process.hpp +#usr/include/boost/detail/winapi/get_current_process_id.hpp +#usr/include/boost/detail/winapi/get_current_thread.hpp +#usr/include/boost/detail/winapi/get_current_thread_id.hpp +#usr/include/boost/detail/winapi/get_last_error.hpp +#usr/include/boost/detail/winapi/get_process_times.hpp +#usr/include/boost/detail/winapi/get_system_directory.hpp +#usr/include/boost/detail/winapi/get_thread_times.hpp +#usr/include/boost/detail/winapi/handle_info.hpp #usr/include/boost/detail/winapi/handles.hpp +#usr/include/boost/detail/winapi/heap_memory.hpp +#usr/include/boost/detail/winapi/init_once.hpp +#usr/include/boost/detail/winapi/jobs.hpp +#usr/include/boost/detail/winapi/limits.hpp +#usr/include/boost/detail/winapi/local_memory.hpp #usr/include/boost/detail/winapi/memory.hpp +#usr/include/boost/detail/winapi/mutex.hpp +#usr/include/boost/detail/winapi/overlapped.hpp +#usr/include/boost/detail/winapi/page_protection_flags.hpp +#usr/include/boost/detail/winapi/pipes.hpp +#usr/include/boost/detail/winapi/priority_class.hpp #usr/include/boost/detail/winapi/process.hpp #usr/include/boost/detail/winapi/security.hpp +#usr/include/boost/detail/winapi/semaphore.hpp +#usr/include/boost/detail/winapi/shell.hpp +#usr/include/boost/detail/winapi/show_window.hpp +#usr/include/boost/detail/winapi/srw_lock.hpp #usr/include/boost/detail/winapi/synchronization.hpp #usr/include/boost/detail/winapi/system.hpp #usr/include/boost/detail/winapi/thread.hpp +#usr/include/boost/detail/winapi/thread_pool.hpp #usr/include/boost/detail/winapi/time.hpp #usr/include/boost/detail/winapi/timers.hpp +#usr/include/boost/detail/winapi/tls.hpp +#usr/include/boost/detail/winapi/wait.hpp +#usr/include/boost/detail/winapi/waitable_timer.hpp #usr/include/boost/detail/workaround.hpp +#usr/include/boost/dll +#usr/include/boost/dll.hpp +#usr/include/boost/dll/alias.hpp +#usr/include/boost/dll/detail +#usr/include/boost/dll/detail/aggressive_ptr_cast.hpp +#usr/include/boost/dll/detail/ctor_dtor.hpp +#usr/include/boost/dll/detail/demangling +#usr/include/boost/dll/detail/demangling/demangle_symbol.hpp +#usr/include/boost/dll/detail/demangling/itanium.hpp +#usr/include/boost/dll/detail/demangling/mangled_storage_base.hpp +#usr/include/boost/dll/detail/demangling/msvc.hpp +#usr/include/boost/dll/detail/elf_info.hpp +#usr/include/boost/dll/detail/get_mem_fn_type.hpp +#usr/include/boost/dll/detail/import_mangled_helpers.hpp +#usr/include/boost/dll/detail/macho_info.hpp +#usr/include/boost/dll/detail/pe_info.hpp +#usr/include/boost/dll/detail/posix +#usr/include/boost/dll/detail/posix/path_from_handle.hpp +#usr/include/boost/dll/detail/posix/program_location_impl.hpp +#usr/include/boost/dll/detail/posix/shared_library_impl.hpp +#usr/include/boost/dll/detail/system_error.hpp +#usr/include/boost/dll/detail/type_info.hpp +#usr/include/boost/dll/detail/windows +#usr/include/boost/dll/detail/windows/path_from_handle.hpp +#usr/include/boost/dll/detail/windows/shared_library_impl.hpp +#usr/include/boost/dll/detail/x_info_interface.hpp +#usr/include/boost/dll/import.hpp +#usr/include/boost/dll/import_class.hpp +#usr/include/boost/dll/import_mangled.hpp +#usr/include/boost/dll/library_info.hpp +#usr/include/boost/dll/runtime_symbol_info.hpp +#usr/include/boost/dll/shared_library.hpp +#usr/include/boost/dll/shared_library_load_mode.hpp +#usr/include/boost/dll/smart_library.hpp #usr/include/boost/dynamic_bitset #usr/include/boost/dynamic_bitset.hpp #usr/include/boost/dynamic_bitset/config.hpp #usr/include/boost/dynamic_bitset/dynamic_bitset.hpp +#usr/include/boost/dynamic_bitset/serialization.hpp #usr/include/boost/dynamic_bitset_fwd.hpp #usr/include/boost/enable_shared_from_this.hpp +#usr/include/boost/endian +#usr/include/boost/endian/arithmetic.hpp +#usr/include/boost/endian/buffers.hpp +#usr/include/boost/endian/conversion.hpp +#usr/include/boost/endian/detail +#usr/include/boost/endian/detail/config.hpp +#usr/include/boost/endian/detail/cover_operators.hpp +#usr/include/boost/endian/detail/disable_warnings.hpp +#usr/include/boost/endian/detail/disable_warnings_pop.hpp +#usr/include/boost/endian/detail/intrinsic.hpp +#usr/include/boost/endian/detail/lightweight_test.hpp +#usr/include/boost/endian/endian.hpp +#usr/include/boost/endian/std_pair.hpp #usr/include/boost/exception -#usr/include/boost/exception.hpp +#usr/include/boost/exception/N3757.hpp #usr/include/boost/exception/all.hpp #usr/include/boost/exception/current_exception_cast.hpp #usr/include/boost/exception/detail -#usr/include/boost/exception/detail/attribute_noreturn.hpp #usr/include/boost/exception/detail/clone_current_exception.hpp #usr/include/boost/exception/detail/error_info_impl.hpp #usr/include/boost/exception/detail/exception_ptr.hpp #usr/include/boost/exception/detail/is_output_streamable.hpp #usr/include/boost/exception/detail/object_hex_dump.hpp +#usr/include/boost/exception/detail/shared_ptr.hpp #usr/include/boost/exception/detail/type_info.hpp #usr/include/boost/exception/diagnostic_information.hpp #usr/include/boost/exception/enable_current_exception.hpp @@ -1399,22 +2047,83 @@ #usr/include/boost/exception/to_string.hpp #usr/include/boost/exception/to_string_stub.hpp #usr/include/boost/exception_ptr.hpp +#usr/include/boost/fiber +#usr/include/boost/fiber/algo +#usr/include/boost/fiber/algo/algorithm.hpp +#usr/include/boost/fiber/algo/round_robin.hpp +#usr/include/boost/fiber/algo/shared_work.hpp +#usr/include/boost/fiber/algo/work_stealing.hpp +#usr/include/boost/fiber/all.hpp +#usr/include/boost/fiber/barrier.hpp +#usr/include/boost/fiber/buffered_channel.hpp +#usr/include/boost/fiber/channel_op_status.hpp +#usr/include/boost/fiber/condition_variable.hpp +#usr/include/boost/fiber/context.hpp +#usr/include/boost/fiber/detail +#usr/include/boost/fiber/detail/config.hpp +#usr/include/boost/fiber/detail/context_spinlock_queue.hpp +#usr/include/boost/fiber/detail/context_spmc_queue.hpp +#usr/include/boost/fiber/detail/convert.hpp +#usr/include/boost/fiber/detail/cpu_relax.hpp +#usr/include/boost/fiber/detail/data.hpp +#usr/include/boost/fiber/detail/decay_copy.hpp +#usr/include/boost/fiber/detail/disable_overload.hpp +#usr/include/boost/fiber/detail/fss.hpp +#usr/include/boost/fiber/detail/futex.hpp +#usr/include/boost/fiber/detail/spinlock.hpp +#usr/include/boost/fiber/detail/spinlock_ttas.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_adaptive.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp +#usr/include/boost/fiber/detail/spinlock_ttas_futex.hpp +#usr/include/boost/fiber/detail/wrap.hpp +#usr/include/boost/fiber/exceptions.hpp +#usr/include/boost/fiber/fiber.hpp +#usr/include/boost/fiber/fixedsize_stack.hpp +#usr/include/boost/fiber/fss.hpp +#usr/include/boost/fiber/future +#usr/include/boost/fiber/future.hpp +#usr/include/boost/fiber/future/async.hpp +#usr/include/boost/fiber/future/detail +#usr/include/boost/fiber/future/detail/shared_state.hpp +#usr/include/boost/fiber/future/detail/shared_state_object.hpp +#usr/include/boost/fiber/future/detail/task_base.hpp +#usr/include/boost/fiber/future/detail/task_object.hpp +#usr/include/boost/fiber/future/future.hpp +#usr/include/boost/fiber/future/future_status.hpp +#usr/include/boost/fiber/future/packaged_task.hpp +#usr/include/boost/fiber/future/promise.hpp +#usr/include/boost/fiber/mutex.hpp +#usr/include/boost/fiber/operations.hpp +#usr/include/boost/fiber/policy.hpp +#usr/include/boost/fiber/pooled_fixedsize_stack.hpp +#usr/include/boost/fiber/properties.hpp +#usr/include/boost/fiber/protected_fixedsize_stack.hpp +#usr/include/boost/fiber/recursive_mutex.hpp +#usr/include/boost/fiber/recursive_timed_mutex.hpp +#usr/include/boost/fiber/scheduler.hpp +#usr/include/boost/fiber/segmented_stack.hpp +#usr/include/boost/fiber/timed_mutex.hpp +#usr/include/boost/fiber/type.hpp +#usr/include/boost/fiber/unbuffered_channel.hpp #usr/include/boost/filesystem #usr/include/boost/filesystem.hpp #usr/include/boost/filesystem/config.hpp #usr/include/boost/filesystem/convenience.hpp #usr/include/boost/filesystem/detail +#usr/include/boost/filesystem/detail/macro_value.hpp #usr/include/boost/filesystem/detail/utf8_codecvt_facet.hpp #usr/include/boost/filesystem/exception.hpp #usr/include/boost/filesystem/fstream.hpp #usr/include/boost/filesystem/operations.hpp #usr/include/boost/filesystem/path.hpp #usr/include/boost/filesystem/path_traits.hpp +#usr/include/boost/filesystem/string_file.hpp #usr/include/boost/flyweight #usr/include/boost/flyweight.hpp #usr/include/boost/flyweight/assoc_container_factory.hpp #usr/include/boost/flyweight/assoc_container_factory_fwd.hpp #usr/include/boost/flyweight/detail +#usr/include/boost/flyweight/detail/archive_constructed.hpp #usr/include/boost/flyweight/detail/default_value_policy.hpp #usr/include/boost/flyweight/detail/dyn_perfect_fwd.hpp #usr/include/boost/flyweight/detail/flyweight_core.hpp @@ -1424,6 +2133,7 @@ #usr/include/boost/flyweight/detail/perfect_fwd.hpp #usr/include/boost/flyweight/detail/pp_perfect_fwd.hpp #usr/include/boost/flyweight/detail/recursive_lw_mutex.hpp +#usr/include/boost/flyweight/detail/serialization_helper.hpp #usr/include/boost/flyweight/detail/value_tag.hpp #usr/include/boost/flyweight/factory_tag.hpp #usr/include/boost/flyweight/flyweight.hpp @@ -1442,6 +2152,7 @@ #usr/include/boost/flyweight/no_tracking_fwd.hpp #usr/include/boost/flyweight/refcounted.hpp #usr/include/boost/flyweight/refcounted_fwd.hpp +#usr/include/boost/flyweight/serialize.hpp #usr/include/boost/flyweight/set_factory.hpp #usr/include/boost/flyweight/set_factory_fwd.hpp #usr/include/boost/flyweight/simple_locking.hpp @@ -1616,6 +2327,8 @@ #usr/include/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp #usr/include/boost/fusion/adapted/adt/detail #usr/include/boost/fusion/adapted/adt/detail/adapt_base.hpp +#usr/include/boost/fusion/adapted/adt/detail/adapt_base_assoc_attr_filler.hpp +#usr/include/boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp #usr/include/boost/fusion/adapted/adt/detail/extension.hpp #usr/include/boost/fusion/adapted/array #usr/include/boost/fusion/adapted/array.hpp @@ -1649,12 +2362,16 @@ #usr/include/boost/fusion/adapted/boost_tuple/detail #usr/include/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/detail/build_cons.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/detail/convert_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp #usr/include/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/boost_tuple/mpl +#usr/include/boost/fusion/adapted/boost_tuple/mpl/clear.hpp #usr/include/boost/fusion/adapted/boost_tuple/tag_of.hpp #usr/include/boost/fusion/adapted/mpl #usr/include/boost/fusion/adapted/mpl.hpp @@ -1670,18 +2387,36 @@ #usr/include/boost/fusion/adapted/mpl/detail/size_impl.hpp #usr/include/boost/fusion/adapted/mpl/detail/value_at_impl.hpp #usr/include/boost/fusion/adapted/mpl/mpl_iterator.hpp +#usr/include/boost/fusion/adapted/std_array +#usr/include/boost/fusion/adapted/std_array.hpp +#usr/include/boost/fusion/adapted/std_array/detail +#usr/include/boost/fusion/adapted/std_array/detail/array_size.hpp +#usr/include/boost/fusion/adapted/std_array/detail/at_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/end_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/is_view_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/size_impl.hpp +#usr/include/boost/fusion/adapted/std_array/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/std_array/std_array_iterator.hpp +#usr/include/boost/fusion/adapted/std_array/tag_of.hpp #usr/include/boost/fusion/adapted/std_pair.hpp #usr/include/boost/fusion/adapted/std_tuple #usr/include/boost/fusion/adapted/std_tuple.hpp #usr/include/boost/fusion/adapted/std_tuple/detail #usr/include/boost/fusion/adapted/std_tuple/detail/at_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/detail/convert_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/end_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/size_impl.hpp #usr/include/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp +#usr/include/boost/fusion/adapted/std_tuple/mpl +#usr/include/boost/fusion/adapted/std_tuple/mpl/clear.hpp #usr/include/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp #usr/include/boost/fusion/adapted/std_tuple/tag_of.hpp #usr/include/boost/fusion/adapted/struct @@ -1694,7 +2429,11 @@ #usr/include/boost/fusion/adapted/struct/define_struct.hpp #usr/include/boost/fusion/adapted/struct/define_struct_inline.hpp #usr/include/boost/fusion/adapted/struct/detail +#usr/include/boost/fusion/adapted/struct/detail/adapt_auto.hpp #usr/include/boost/fusion/adapted/struct/detail/adapt_base.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_base_assoc_attr_filler.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp +#usr/include/boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp #usr/include/boost/fusion/adapted/struct/detail/at_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/begin_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp @@ -1708,6 +2447,8 @@ #usr/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/key_of_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/namespace.hpp +#usr/include/boost/fusion/adapted/struct/detail/preprocessor +#usr/include/boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp #usr/include/boost/fusion/adapted/struct/detail/proxy_type.hpp #usr/include/boost/fusion/adapted/struct/detail/size_impl.hpp #usr/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp @@ -1779,6 +2520,7 @@ #usr/include/boost/fusion/algorithm/transformation/erase_key.hpp #usr/include/boost/fusion/algorithm/transformation/filter.hpp #usr/include/boost/fusion/algorithm/transformation/filter_if.hpp +#usr/include/boost/fusion/algorithm/transformation/flatten.hpp #usr/include/boost/fusion/algorithm/transformation/insert.hpp #usr/include/boost/fusion/algorithm/transformation/insert_range.hpp #usr/include/boost/fusion/algorithm/transformation/join.hpp @@ -1860,9 +2602,14 @@ #usr/include/boost/fusion/container/generation/deque_tie.hpp #usr/include/boost/fusion/container/generation/detail #usr/include/boost/fusion/container/generation/detail/pp_deque_tie.hpp +#usr/include/boost/fusion/container/generation/detail/pp_list_tie.hpp #usr/include/boost/fusion/container/generation/detail/pp_make_deque.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_list.hpp #usr/include/boost/fusion/container/generation/detail/pp_make_map.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_set.hpp +#usr/include/boost/fusion/container/generation/detail/pp_make_vector.hpp #usr/include/boost/fusion/container/generation/detail/pp_map_tie.hpp +#usr/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp #usr/include/boost/fusion/container/generation/detail/preprocessed #usr/include/boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp #usr/include/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp @@ -1940,39 +2687,44 @@ #usr/include/boost/fusion/container/list/detail/begin_impl.hpp #usr/include/boost/fusion/container/list/detail/build_cons.hpp #usr/include/boost/fusion/container/list/detail/convert_impl.hpp +#usr/include/boost/fusion/container/list/detail/cpp03 +#usr/include/boost/fusion/container/list/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp +#usr/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp #usr/include/boost/fusion/container/list/detail/deref_impl.hpp #usr/include/boost/fusion/container/list/detail/empty_impl.hpp #usr/include/boost/fusion/container/list/detail/end_impl.hpp #usr/include/boost/fusion/container/list/detail/equal_to_impl.hpp -#usr/include/boost/fusion/container/list/detail/list_forward_ctor.hpp #usr/include/boost/fusion/container/list/detail/list_to_cons.hpp -#usr/include/boost/fusion/container/list/detail/list_to_cons_call.hpp #usr/include/boost/fusion/container/list/detail/next_impl.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed -#usr/include/boost/fusion/container/list/detail/preprocessed/list.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list10.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list20.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list30.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list40.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list50.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp -#usr/include/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp #usr/include/boost/fusion/container/list/detail/reverse_cons.hpp #usr/include/boost/fusion/container/list/detail/value_at_impl.hpp #usr/include/boost/fusion/container/list/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/list/limits.hpp #usr/include/boost/fusion/container/list/list.hpp #usr/include/boost/fusion/container/list/list_fwd.hpp +#usr/include/boost/fusion/container/list/nil.hpp #usr/include/boost/fusion/container/map #usr/include/boost/fusion/container/map.hpp #usr/include/boost/fusion/container/map/convert.hpp @@ -2032,33 +2784,37 @@ #usr/include/boost/fusion/container/set/detail/as_set.hpp #usr/include/boost/fusion/container/set/detail/begin_impl.hpp #usr/include/boost/fusion/container/set/detail/convert_impl.hpp +#usr/include/boost/fusion/container/set/detail/cpp03 +#usr/include/boost/fusion/container/set/detail/cpp03/as_set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp +#usr/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp #usr/include/boost/fusion/container/set/detail/deref_data_impl.hpp #usr/include/boost/fusion/container/set/detail/deref_impl.hpp #usr/include/boost/fusion/container/set/detail/end_impl.hpp #usr/include/boost/fusion/container/set/detail/key_of_impl.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set10.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set20.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set30.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set40.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set50.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp -#usr/include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp -#usr/include/boost/fusion/container/set/detail/set_forward_ctor.hpp #usr/include/boost/fusion/container/set/detail/value_of_data_impl.hpp #usr/include/boost/fusion/container/set/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/set/limits.hpp #usr/include/boost/fusion/container/set/set.hpp #usr/include/boost/fusion/container/set/set_fwd.hpp #usr/include/boost/fusion/container/vector @@ -2069,65 +2825,76 @@ #usr/include/boost/fusion/container/vector/detail/as_vector.hpp #usr/include/boost/fusion/container/vector/detail/at_impl.hpp #usr/include/boost/fusion/container/vector/detail/begin_impl.hpp +#usr/include/boost/fusion/container/vector/detail/config.hpp #usr/include/boost/fusion/container/vector/detail/convert_impl.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03 +#usr/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/limits.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp +#usr/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp #usr/include/boost/fusion/container/vector/detail/deref_impl.hpp #usr/include/boost/fusion/container/vector/detail/distance_impl.hpp #usr/include/boost/fusion/container/vector/detail/end_impl.hpp #usr/include/boost/fusion/container/vector/detail/equal_to_impl.hpp #usr/include/boost/fusion/container/vector/detail/next_impl.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp -#usr/include/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp #usr/include/boost/fusion/container/vector/detail/prior_impl.hpp #usr/include/boost/fusion/container/vector/detail/value_at_impl.hpp #usr/include/boost/fusion/container/vector/detail/value_of_impl.hpp -#usr/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp -#usr/include/boost/fusion/container/vector/detail/vector_n.hpp -#usr/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp -#usr/include/boost/fusion/container/vector/limits.hpp #usr/include/boost/fusion/container/vector/vector.hpp #usr/include/boost/fusion/container/vector/vector10.hpp -#usr/include/boost/fusion/container/vector/vector10_fwd.hpp #usr/include/boost/fusion/container/vector/vector20.hpp -#usr/include/boost/fusion/container/vector/vector20_fwd.hpp #usr/include/boost/fusion/container/vector/vector30.hpp -#usr/include/boost/fusion/container/vector/vector30_fwd.hpp #usr/include/boost/fusion/container/vector/vector40.hpp -#usr/include/boost/fusion/container/vector/vector40_fwd.hpp #usr/include/boost/fusion/container/vector/vector50.hpp -#usr/include/boost/fusion/container/vector/vector50_fwd.hpp #usr/include/boost/fusion/container/vector/vector_fwd.hpp #usr/include/boost/fusion/container/vector/vector_iterator.hpp #usr/include/boost/fusion/functional @@ -2164,8 +2931,6 @@ #usr/include/boost/fusion/include/adapt_adt_named.hpp #usr/include/boost/fusion/include/adapt_assoc_adt.hpp #usr/include/boost/fusion/include/adapt_assoc_adt_named.hpp -#usr/include/boost/fusion/include/adapt_assoc_class.hpp -#usr/include/boost/fusion/include/adapt_assoc_class_named.hpp #usr/include/boost/fusion/include/adapt_assoc_struct.hpp #usr/include/boost/fusion/include/adapt_assoc_struct_named.hpp #usr/include/boost/fusion/include/adapt_struct.hpp @@ -2221,6 +2986,8 @@ #usr/include/boost/fusion/include/filter_view.hpp #usr/include/boost/fusion/include/find.hpp #usr/include/boost/fusion/include/find_if.hpp +#usr/include/boost/fusion/include/flatten.hpp +#usr/include/boost/fusion/include/flatten_view.hpp #usr/include/boost/fusion/include/fold.hpp #usr/include/boost/fusion/include/for_each.hpp #usr/include/boost/fusion/include/front.hpp @@ -2232,6 +2999,7 @@ #usr/include/boost/fusion/include/greater.hpp #usr/include/boost/fusion/include/greater_equal.hpp #usr/include/boost/fusion/include/has_key.hpp +#usr/include/boost/fusion/include/hash.hpp #usr/include/boost/fusion/include/ignore.hpp #usr/include/boost/fusion/include/in.hpp #usr/include/boost/fusion/include/insert.hpp @@ -2278,6 +3046,7 @@ #usr/include/boost/fusion/include/move.hpp #usr/include/boost/fusion/include/mpl.hpp #usr/include/boost/fusion/include/next.hpp +#usr/include/boost/fusion/include/nil.hpp #usr/include/boost/fusion/include/none.hpp #usr/include/boost/fusion/include/not_equal_to.hpp #usr/include/boost/fusion/include/nview.hpp @@ -2311,6 +3080,7 @@ #usr/include/boost/fusion/include/single_view.hpp #usr/include/boost/fusion/include/size.hpp #usr/include/boost/fusion/include/std_pair.hpp +#usr/include/boost/fusion/include/std_tuple.hpp #usr/include/boost/fusion/include/struct.hpp #usr/include/boost/fusion/include/support.hpp #usr/include/boost/fusion/include/swap.hpp @@ -2410,6 +3180,7 @@ #usr/include/boost/fusion/sequence/comparison/less_equal.hpp #usr/include/boost/fusion/sequence/comparison/not_equal_to.hpp #usr/include/boost/fusion/sequence/convert.hpp +#usr/include/boost/fusion/sequence/hash.hpp #usr/include/boost/fusion/sequence/intrinsic #usr/include/boost/fusion/sequence/intrinsic.hpp #usr/include/boost/fusion/sequence/intrinsic/at.hpp @@ -2446,13 +3217,18 @@ #usr/include/boost/fusion/support.hpp #usr/include/boost/fusion/support/as_const.hpp #usr/include/boost/fusion/support/category_of.hpp +#usr/include/boost/fusion/support/config.hpp #usr/include/boost/fusion/support/deduce.hpp #usr/include/boost/fusion/support/deduce_sequence.hpp #usr/include/boost/fusion/support/detail #usr/include/boost/fusion/support/detail/access.hpp +#usr/include/boost/fusion/support/detail/and.hpp #usr/include/boost/fusion/support/detail/as_fusion_element.hpp #usr/include/boost/fusion/support/detail/category_of.hpp +#usr/include/boost/fusion/support/detail/enabler.hpp +#usr/include/boost/fusion/support/detail/index_sequence.hpp #usr/include/boost/fusion/support/detail/is_mpl_sequence.hpp +#usr/include/boost/fusion/support/detail/is_same_size.hpp #usr/include/boost/fusion/support/detail/is_view.hpp #usr/include/boost/fusion/support/detail/mpl_iterator_category.hpp #usr/include/boost/fusion/support/detail/pp_round.hpp @@ -2473,6 +3249,7 @@ #usr/include/boost/fusion/tuple #usr/include/boost/fusion/tuple.hpp #usr/include/boost/fusion/tuple/detail +#usr/include/boost/fusion/tuple/detail/make_tuple.hpp #usr/include/boost/fusion/tuple/detail/preprocessed #usr/include/boost/fusion/tuple/detail/preprocessed/make_tuple.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp @@ -2498,7 +3275,10 @@ #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp #usr/include/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp +#usr/include/boost/fusion/tuple/detail/tuple.hpp #usr/include/boost/fusion/tuple/detail/tuple_expand.hpp +#usr/include/boost/fusion/tuple/detail/tuple_fwd.hpp +#usr/include/boost/fusion/tuple/detail/tuple_tie.hpp #usr/include/boost/fusion/tuple/make_tuple.hpp #usr/include/boost/fusion/tuple/tuple.hpp #usr/include/boost/fusion/tuple/tuple_fwd.hpp @@ -2522,6 +3302,10 @@ #usr/include/boost/fusion/view/filter_view/detail/value_of_impl.hpp #usr/include/boost/fusion/view/filter_view/filter_view.hpp #usr/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +#usr/include/boost/fusion/view/flatten_view +#usr/include/boost/fusion/view/flatten_view.hpp +#usr/include/boost/fusion/view/flatten_view/flatten_view.hpp +#usr/include/boost/fusion/view/flatten_view/flatten_view_iterator.hpp #usr/include/boost/fusion/view/iterator_range #usr/include/boost/fusion/view/iterator_range.hpp #usr/include/boost/fusion/view/iterator_range/detail @@ -2554,6 +3338,8 @@ #usr/include/boost/fusion/view/nview/detail/advance_impl.hpp #usr/include/boost/fusion/view/nview/detail/at_impl.hpp #usr/include/boost/fusion/view/nview/detail/begin_impl.hpp +#usr/include/boost/fusion/view/nview/detail/cpp03 +#usr/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp #usr/include/boost/fusion/view/nview/detail/deref_impl.hpp #usr/include/boost/fusion/view/nview/detail/distance_impl.hpp #usr/include/boost/fusion/view/nview/detail/end_impl.hpp @@ -2663,67 +3449,244 @@ #usr/include/boost/geometry/algorithms/convex_hull.hpp #usr/include/boost/geometry/algorithms/correct.hpp #usr/include/boost/geometry/algorithms/covered_by.hpp +#usr/include/boost/geometry/algorithms/crosses.hpp #usr/include/boost/geometry/algorithms/detail #usr/include/boost/geometry/algorithms/detail/as_range.hpp #usr/include/boost/geometry/algorithms/detail/assign_box_corners.hpp #usr/include/boost/geometry/algorithms/detail/assign_indexed_point.hpp #usr/include/boost/geometry/algorithms/detail/assign_values.hpp +#usr/include/boost/geometry/algorithms/detail/azimuth.hpp +#usr/include/boost/geometry/algorithms/detail/buffer +#usr/include/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/buffered_ring.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/parallel_continue.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/turn_in_original_visitor.hpp +#usr/include/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp #usr/include/boost/geometry/algorithms/detail/calculate_null.hpp #usr/include/boost/geometry/algorithms/detail/calculate_sum.hpp +#usr/include/boost/geometry/algorithms/detail/centroid +#usr/include/boost/geometry/algorithms/detail/centroid/translating_transformer.hpp +#usr/include/boost/geometry/algorithms/detail/check_iterator_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature +#usr/include/boost/geometry/algorithms/detail/closest_feature/geometry_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature/point_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/closest_feature/range_to_range.hpp +#usr/include/boost/geometry/algorithms/detail/comparable_distance +#usr/include/boost/geometry/algorithms/detail/comparable_distance/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/comparable_distance/interface.hpp #usr/include/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp #usr/include/boost/geometry/algorithms/detail/convert_point_to_point.hpp -#usr/include/boost/geometry/algorithms/detail/disjoint.hpp +#usr/include/boost/geometry/algorithms/detail/counting.hpp +#usr/include/boost/geometry/algorithms/detail/course.hpp +#usr/include/boost/geometry/algorithms/detail/direction_code.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint +#usr/include/boost/geometry/algorithms/detail/disjoint/areal_areal.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/box_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/interface.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_areal.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_linear.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/multipoint_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/multirange_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_box.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/disjoint/segment_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance +#usr/include/boost/geometry/algorithms/detail/distance/backward_compatibility.hpp +#usr/include/boost/geometry/algorithms/detail/distance/box_to_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/default_strategies.hpp +#usr/include/boost/geometry/algorithms/detail/distance/geometry_to_segment_or_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/distance/interface.hpp +#usr/include/boost/geometry/algorithms/detail/distance/is_comparable.hpp +#usr/include/boost/geometry/algorithms/detail/distance/iterator_selector.hpp +#usr/include/boost/geometry/algorithms/detail/distance/linear_or_areal_to_areal.hpp +#usr/include/boost/geometry/algorithms/detail/distance/linear_to_linear.hpp +#usr/include/boost/geometry/algorithms/detail/distance/multipoint_to_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/distance/point_to_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/distance/range_to_geometry_rtree.hpp +#usr/include/boost/geometry/algorithms/detail/distance/segment_to_box.hpp +#usr/include/boost/geometry/algorithms/detail/distance/segment_to_segment.hpp +#usr/include/boost/geometry/algorithms/detail/envelope +#usr/include/boost/geometry/algorithms/detail/envelope/box.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/initialize.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/interface.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/intersects_antimeridian.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/linear.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/multipoint.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/point.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/range.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/segment.hpp +#usr/include/boost/geometry/algorithms/detail/envelope/transform_units.hpp #usr/include/boost/geometry/algorithms/detail/equals #usr/include/boost/geometry/algorithms/detail/equals/collect_vectors.hpp +#usr/include/boost/geometry/algorithms/detail/equals/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/expand +#usr/include/boost/geometry/algorithms/detail/expand/box.hpp +#usr/include/boost/geometry/algorithms/detail/expand/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/expand/indexed.hpp +#usr/include/boost/geometry/algorithms/detail/expand/interface.hpp +#usr/include/boost/geometry/algorithms/detail/expand/point.hpp +#usr/include/boost/geometry/algorithms/detail/expand/segment.hpp +#usr/include/boost/geometry/algorithms/detail/expand_by_epsilon.hpp +#usr/include/boost/geometry/algorithms/detail/extreme_points.hpp #usr/include/boost/geometry/algorithms/detail/for_each_range.hpp #usr/include/boost/geometry/algorithms/detail/get_left_turns.hpp +#usr/include/boost/geometry/algorithms/detail/get_max_size.hpp #usr/include/boost/geometry/algorithms/detail/has_self_intersections.hpp +#usr/include/boost/geometry/algorithms/detail/interior_iterator.hpp +#usr/include/boost/geometry/algorithms/detail/intersection +#usr/include/boost/geometry/algorithms/detail/intersection/box_box.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/interface.hpp +#usr/include/boost/geometry/algorithms/detail/intersection/multi.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple +#usr/include/boost/geometry/algorithms/detail/is_simple/always_simple.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/areal.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/failure_policy.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/interface.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/linear.hpp +#usr/include/boost/geometry/algorithms/detail/is_simple/multipoint.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid +#usr/include/boost/geometry/algorithms/detail/is_valid/box.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/complement_graph.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_invalid_coordinate.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_spikes.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/interface.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/linear.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/multipolygon.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/pointlike.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/polygon.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/ring.hpp +#usr/include/boost/geometry/algorithms/detail/is_valid/segment.hpp +#usr/include/boost/geometry/algorithms/detail/max_interval_gap.hpp +#usr/include/boost/geometry/algorithms/detail/multi_modify.hpp +#usr/include/boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp +#usr/include/boost/geometry/algorithms/detail/multi_sum.hpp +#usr/include/boost/geometry/algorithms/detail/normalize.hpp #usr/include/boost/geometry/algorithms/detail/not.hpp +#usr/include/boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp #usr/include/boost/geometry/algorithms/detail/occupation_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay #usr/include/boost/geometry/algorithms/detail/overlay/add_rings.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/aggregate_operations.hpp #usr/include/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp #usr/include/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp #usr/include/boost/geometry/algorithms/detail/overlay/assign_parents.hpp #usr/include/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp -#usr/include/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp #usr/include/boost/geometry/algorithms/detail/overlay/check_enrich.hpp #usr/include/boost/geometry/algorithms/detail/overlay/clip_linestring.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/cluster_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/convert_ring.hpp #usr/include/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp #usr/include/boost/geometry/algorithms/detail/overlay/copy_segments.hpp #usr/include/boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/do_reverse.hpp #usr/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp #usr/include/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/follow.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_ring.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp #usr/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp -#usr/include/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/handle_colocations.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/inconsistent_turns_exception.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp #usr/include/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/less_by_segment_ratio.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/linear_linear.hpp #usr/include/boost/geometry/algorithms/detail/overlay/overlay.hpp #usr/include/boost/geometry/algorithms/detail/overlay/overlay_type.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/pointlike_linear.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp #usr/include/boost/geometry/algorithms/detail/overlay/ring_properties.hpp #usr/include/boost/geometry/algorithms/detail/overlay/segment_identifier.hpp #usr/include/boost/geometry/algorithms/detail/overlay/select_rings.hpp #usr/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/sort_by_side.hpp #usr/include/boost/geometry/algorithms/detail/overlay/stream_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal.hpp #usr/include/boost/geometry/algorithms/detail/overlay/traversal_info.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal_ring_creator.hpp +#usr/include/boost/geometry/algorithms/detail/overlay/traversal_switch_detector.hpp #usr/include/boost/geometry/algorithms/detail/overlay/traverse.hpp #usr/include/boost/geometry/algorithms/detail/overlay/turn_info.hpp #usr/include/boost/geometry/algorithms/detail/overlay/visit_info.hpp #usr/include/boost/geometry/algorithms/detail/partition.hpp #usr/include/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp #usr/include/boost/geometry/algorithms/detail/point_on_border.hpp +#usr/include/boost/geometry/algorithms/detail/recalculate.hpp +#usr/include/boost/geometry/algorithms/detail/relate +#usr/include/boost/geometry/algorithms/detail/relate/areal_areal.hpp +#usr/include/boost/geometry/algorithms/detail/relate/boundary_checker.hpp +#usr/include/boost/geometry/algorithms/detail/relate/de9im.hpp +#usr/include/boost/geometry/algorithms/detail/relate/follow_helpers.hpp +#usr/include/boost/geometry/algorithms/detail/relate/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/relate/interface.hpp +#usr/include/boost/geometry/algorithms/detail/relate/less.hpp +#usr/include/boost/geometry/algorithms/detail/relate/linear_areal.hpp +#usr/include/boost/geometry/algorithms/detail/relate/linear_linear.hpp +#usr/include/boost/geometry/algorithms/detail/relate/point_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/relate/point_point.hpp +#usr/include/boost/geometry/algorithms/detail/relate/relate_impl.hpp +#usr/include/boost/geometry/algorithms/detail/relate/result.hpp +#usr/include/boost/geometry/algorithms/detail/relate/topology_check.hpp +#usr/include/boost/geometry/algorithms/detail/relate/turns.hpp +#usr/include/boost/geometry/algorithms/detail/relation +#usr/include/boost/geometry/algorithms/detail/relation/implementation.hpp +#usr/include/boost/geometry/algorithms/detail/relation/interface.hpp #usr/include/boost/geometry/algorithms/detail/ring_identifier.hpp #usr/include/boost/geometry/algorithms/detail/sections #usr/include/boost/geometry/algorithms/detail/sections/range_by_section.hpp +#usr/include/boost/geometry/algorithms/detail/sections/section_box_policies.hpp +#usr/include/boost/geometry/algorithms/detail/sections/section_functions.hpp #usr/include/boost/geometry/algorithms/detail/sections/sectionalize.hpp +#usr/include/boost/geometry/algorithms/detail/signed_size_type.hpp +#usr/include/boost/geometry/algorithms/detail/single_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/sub_range.hpp +#usr/include/boost/geometry/algorithms/detail/sweep.hpp #usr/include/boost/geometry/algorithms/detail/throw_on_empty_input.hpp +#usr/include/boost/geometry/algorithms/detail/turns +#usr/include/boost/geometry/algorithms/detail/turns/compare_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/debug_turn.hpp +#usr/include/boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/print_turns.hpp +#usr/include/boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp +#usr/include/boost/geometry/algorithms/detail/within +#usr/include/boost/geometry/algorithms/detail/within/point_in_geometry.hpp +#usr/include/boost/geometry/algorithms/detail/within/within_no_turns.hpp #usr/include/boost/geometry/algorithms/difference.hpp #usr/include/boost/geometry/algorithms/disjoint.hpp +#usr/include/boost/geometry/algorithms/dispatch +#usr/include/boost/geometry/algorithms/dispatch/disjoint.hpp +#usr/include/boost/geometry/algorithms/dispatch/distance.hpp +#usr/include/boost/geometry/algorithms/dispatch/envelope.hpp +#usr/include/boost/geometry/algorithms/dispatch/expand.hpp +#usr/include/boost/geometry/algorithms/dispatch/is_simple.hpp +#usr/include/boost/geometry/algorithms/dispatch/is_valid.hpp #usr/include/boost/geometry/algorithms/distance.hpp #usr/include/boost/geometry/algorithms/envelope.hpp #usr/include/boost/geometry/algorithms/equals.hpp @@ -2731,14 +3694,23 @@ #usr/include/boost/geometry/algorithms/for_each.hpp #usr/include/boost/geometry/algorithms/intersection.hpp #usr/include/boost/geometry/algorithms/intersects.hpp +#usr/include/boost/geometry/algorithms/is_convex.hpp +#usr/include/boost/geometry/algorithms/is_empty.hpp +#usr/include/boost/geometry/algorithms/is_simple.hpp +#usr/include/boost/geometry/algorithms/is_valid.hpp #usr/include/boost/geometry/algorithms/length.hpp #usr/include/boost/geometry/algorithms/make.hpp #usr/include/boost/geometry/algorithms/not_implemented.hpp #usr/include/boost/geometry/algorithms/num_geometries.hpp #usr/include/boost/geometry/algorithms/num_interior_rings.hpp #usr/include/boost/geometry/algorithms/num_points.hpp +#usr/include/boost/geometry/algorithms/num_segments.hpp #usr/include/boost/geometry/algorithms/overlaps.hpp #usr/include/boost/geometry/algorithms/perimeter.hpp +#usr/include/boost/geometry/algorithms/point_on_surface.hpp +#usr/include/boost/geometry/algorithms/relate.hpp +#usr/include/boost/geometry/algorithms/relation.hpp +#usr/include/boost/geometry/algorithms/remove_spikes.hpp #usr/include/boost/geometry/algorithms/reverse.hpp #usr/include/boost/geometry/algorithms/simplify.hpp #usr/include/boost/geometry/algorithms/sym_difference.hpp @@ -2746,13 +3718,17 @@ #usr/include/boost/geometry/algorithms/transform.hpp #usr/include/boost/geometry/algorithms/union.hpp #usr/include/boost/geometry/algorithms/unique.hpp +#usr/include/boost/geometry/algorithms/validity_failure_type.hpp #usr/include/boost/geometry/algorithms/within.hpp #usr/include/boost/geometry/arithmetic #usr/include/boost/geometry/arithmetic/arithmetic.hpp +#usr/include/boost/geometry/arithmetic/cross_product.hpp #usr/include/boost/geometry/arithmetic/determinant.hpp #usr/include/boost/geometry/arithmetic/dot_product.hpp +#usr/include/boost/geometry/arithmetic/normalize.hpp #usr/include/boost/geometry/core #usr/include/boost/geometry/core/access.hpp +#usr/include/boost/geometry/core/assert.hpp #usr/include/boost/geometry/core/closure.hpp #usr/include/boost/geometry/core/coordinate_dimension.hpp #usr/include/boost/geometry/core/coordinate_system.hpp @@ -2768,12 +3744,32 @@ #usr/include/boost/geometry/core/point_order.hpp #usr/include/boost/geometry/core/point_type.hpp #usr/include/boost/geometry/core/radian_access.hpp +#usr/include/boost/geometry/core/radius.hpp #usr/include/boost/geometry/core/reverse_dispatch.hpp #usr/include/boost/geometry/core/ring_type.hpp +#usr/include/boost/geometry/core/srs.hpp #usr/include/boost/geometry/core/tag.hpp #usr/include/boost/geometry/core/tag_cast.hpp #usr/include/boost/geometry/core/tags.hpp #usr/include/boost/geometry/core/topological_dimension.hpp +#usr/include/boost/geometry/formulas +#usr/include/boost/geometry/formulas/andoyer_inverse.hpp +#usr/include/boost/geometry/formulas/area_formulas.hpp +#usr/include/boost/geometry/formulas/differential_quantities.hpp +#usr/include/boost/geometry/formulas/eccentricity_sqr.hpp +#usr/include/boost/geometry/formulas/flattening.hpp +#usr/include/boost/geometry/formulas/geographic.hpp +#usr/include/boost/geometry/formulas/gnomonic_intersection.hpp +#usr/include/boost/geometry/formulas/gnomonic_spheroid.hpp +#usr/include/boost/geometry/formulas/result_direct.hpp +#usr/include/boost/geometry/formulas/result_inverse.hpp +#usr/include/boost/geometry/formulas/sjoberg_intersection.hpp +#usr/include/boost/geometry/formulas/spherical.hpp +#usr/include/boost/geometry/formulas/thomas_direct.hpp +#usr/include/boost/geometry/formulas/thomas_inverse.hpp +#usr/include/boost/geometry/formulas/vertex_latitude.hpp +#usr/include/boost/geometry/formulas/vincenty_direct.hpp +#usr/include/boost/geometry/formulas/vincenty_inverse.hpp #usr/include/boost/geometry/geometries #usr/include/boost/geometry/geometries/adapted #usr/include/boost/geometry/geometries/adapted/boost_array.hpp @@ -2796,24 +3792,36 @@ #usr/include/boost/geometry/geometries/adapted/boost_range/uniqued.hpp #usr/include/boost/geometry/geometries/adapted/boost_tuple.hpp #usr/include/boost/geometry/geometries/adapted/c_array.hpp +#usr/include/boost/geometry/geometries/adapted/std_array.hpp #usr/include/boost/geometry/geometries/adapted/std_pair_as_segment.hpp #usr/include/boost/geometry/geometries/box.hpp #usr/include/boost/geometry/geometries/concepts #usr/include/boost/geometry/geometries/concepts/box_concept.hpp #usr/include/boost/geometry/geometries/concepts/check.hpp #usr/include/boost/geometry/geometries/concepts/linestring_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_linestring_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_point_concept.hpp +#usr/include/boost/geometry/geometries/concepts/multi_polygon_concept.hpp #usr/include/boost/geometry/geometries/concepts/point_concept.hpp #usr/include/boost/geometry/geometries/concepts/polygon_concept.hpp #usr/include/boost/geometry/geometries/concepts/ring_concept.hpp #usr/include/boost/geometry/geometries/concepts/segment_concept.hpp #usr/include/boost/geometry/geometries/geometries.hpp +#usr/include/boost/geometry/geometries/helper_geometry.hpp #usr/include/boost/geometry/geometries/linestring.hpp +#usr/include/boost/geometry/geometries/multi_linestring.hpp +#usr/include/boost/geometry/geometries/multi_point.hpp +#usr/include/boost/geometry/geometries/multi_polygon.hpp #usr/include/boost/geometry/geometries/point.hpp #usr/include/boost/geometry/geometries/point_xy.hpp +#usr/include/boost/geometry/geometries/pointing_segment.hpp #usr/include/boost/geometry/geometries/polygon.hpp #usr/include/boost/geometry/geometries/register #usr/include/boost/geometry/geometries/register/box.hpp #usr/include/boost/geometry/geometries/register/linestring.hpp +#usr/include/boost/geometry/geometries/register/multi_linestring.hpp +#usr/include/boost/geometry/geometries/register/multi_point.hpp +#usr/include/boost/geometry/geometries/register/multi_polygon.hpp #usr/include/boost/geometry/geometries/register/point.hpp #usr/include/boost/geometry/geometries/register/ring.hpp #usr/include/boost/geometry/geometries/register/segment.hpp @@ -2836,21 +3844,25 @@ #usr/include/boost/geometry/index/detail/algorithms/is_valid.hpp #usr/include/boost/geometry/index/detail/algorithms/margin.hpp #usr/include/boost/geometry/index/detail/algorithms/minmaxdist.hpp +#usr/include/boost/geometry/index/detail/algorithms/nth_element.hpp #usr/include/boost/geometry/index/detail/algorithms/path_intersection.hpp #usr/include/boost/geometry/index/detail/algorithms/segment_intersection.hpp #usr/include/boost/geometry/index/detail/algorithms/smallest_for_indexable.hpp #usr/include/boost/geometry/index/detail/algorithms/sum_for_indexable.hpp #usr/include/boost/geometry/index/detail/algorithms/union_content.hpp #usr/include/boost/geometry/index/detail/assert.hpp +#usr/include/boost/geometry/index/detail/bounded_view.hpp #usr/include/boost/geometry/index/detail/config_begin.hpp #usr/include/boost/geometry/index/detail/config_end.hpp #usr/include/boost/geometry/index/detail/distance_predicates.hpp #usr/include/boost/geometry/index/detail/exception.hpp +#usr/include/boost/geometry/index/detail/is_bounding_geometry.hpp +#usr/include/boost/geometry/index/detail/is_indexable.hpp #usr/include/boost/geometry/index/detail/meta.hpp #usr/include/boost/geometry/index/detail/predicates.hpp -#usr/include/boost/geometry/index/detail/pushable_array.hpp #usr/include/boost/geometry/index/detail/rtree #usr/include/boost/geometry/index/detail/rtree/adaptors.hpp +#usr/include/boost/geometry/index/detail/rtree/iterators.hpp #usr/include/boost/geometry/index/detail/rtree/kmeans #usr/include/boost/geometry/index/detail/rtree/kmeans/kmeans.hpp #usr/include/boost/geometry/index/detail/rtree/kmeans/split.hpp @@ -2858,17 +3870,18 @@ #usr/include/boost/geometry/index/detail/rtree/linear/linear.hpp #usr/include/boost/geometry/index/detail/rtree/linear/redistribute_elements.hpp #usr/include/boost/geometry/index/detail/rtree/node -#usr/include/boost/geometry/index/detail/rtree/node/auto_deallocator.hpp #usr/include/boost/geometry/index/detail/rtree/node/concept.hpp -#usr/include/boost/geometry/index/detail/rtree/node/dynamic_visitor.hpp #usr/include/boost/geometry/index/detail/rtree/node/node.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_auto_ptr.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_d_mem_dynamic.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_d_mem_static.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_s_mem_dynamic.hpp -#usr/include/boost/geometry/index/detail/rtree/node/node_s_mem_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/node_elements.hpp #usr/include/boost/geometry/index/detail/rtree/node/pairs.hpp -#usr/include/boost/geometry/index/detail/rtree/node/static_visitor.hpp +#usr/include/boost/geometry/index/detail/rtree/node/scoped_deallocator.hpp +#usr/include/boost/geometry/index/detail/rtree/node/subtree_destroyer.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_dynamic.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/variant_visitor.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_dynamic.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_static.hpp +#usr/include/boost/geometry/index/detail/rtree/node/weak_visitor.hpp #usr/include/boost/geometry/index/detail/rtree/options.hpp #usr/include/boost/geometry/index/detail/rtree/pack_create.hpp #usr/include/boost/geometry/index/detail/rtree/quadratic @@ -2882,6 +3895,7 @@ #usr/include/boost/geometry/index/detail/rtree/rstar/rstar.hpp #usr/include/boost/geometry/index/detail/rtree/utilities #usr/include/boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp +#usr/include/boost/geometry/index/detail/rtree/utilities/are_counts_ok.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/gl_draw.hpp #usr/include/boost/geometry/index/detail/rtree/utilities/print.hpp @@ -2895,6 +3909,7 @@ #usr/include/boost/geometry/index/detail/rtree/visitors/distance_query.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/insert.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/is_leaf.hpp +#usr/include/boost/geometry/index/detail/rtree/visitors/iterator.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/remove.hpp #usr/include/boost/geometry/index/detail/rtree/visitors/spatial_query.hpp #usr/include/boost/geometry/index/detail/serialization.hpp @@ -2917,6 +3932,7 @@ #usr/include/boost/geometry/io/io.hpp #usr/include/boost/geometry/io/svg #usr/include/boost/geometry/io/svg/svg_mapper.hpp +#usr/include/boost/geometry/io/svg/write.hpp #usr/include/boost/geometry/io/svg/write_svg.hpp #usr/include/boost/geometry/io/svg/write_svg_multi.hpp #usr/include/boost/geometry/io/wkt @@ -2930,7 +3946,25 @@ #usr/include/boost/geometry/iterators #usr/include/boost/geometry/iterators/base.hpp #usr/include/boost/geometry/iterators/closing_iterator.hpp +#usr/include/boost/geometry/iterators/concatenate_iterator.hpp +#usr/include/boost/geometry/iterators/detail +#usr/include/boost/geometry/iterators/detail/point_iterator +#usr/include/boost/geometry/iterators/detail/point_iterator/inner_range_type.hpp +#usr/include/boost/geometry/iterators/detail/point_iterator/iterator_type.hpp +#usr/include/boost/geometry/iterators/detail/point_iterator/value_type.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator +#usr/include/boost/geometry/iterators/detail/segment_iterator/iterator_type.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator/range_segment_iterator.hpp +#usr/include/boost/geometry/iterators/detail/segment_iterator/value_type.hpp +#usr/include/boost/geometry/iterators/dispatch +#usr/include/boost/geometry/iterators/dispatch/point_iterator.hpp +#usr/include/boost/geometry/iterators/dispatch/segment_iterator.hpp #usr/include/boost/geometry/iterators/ever_circling_iterator.hpp +#usr/include/boost/geometry/iterators/flatten_iterator.hpp +#usr/include/boost/geometry/iterators/has_one_element.hpp +#usr/include/boost/geometry/iterators/point_iterator.hpp +#usr/include/boost/geometry/iterators/point_reverse_iterator.hpp +#usr/include/boost/geometry/iterators/segment_iterator.hpp #usr/include/boost/geometry/multi #usr/include/boost/geometry/multi/algorithms #usr/include/boost/geometry/multi/algorithms/append.hpp @@ -2941,6 +3975,7 @@ #usr/include/boost/geometry/multi/algorithms/correct.hpp #usr/include/boost/geometry/multi/algorithms/covered_by.hpp #usr/include/boost/geometry/multi/algorithms/detail +#usr/include/boost/geometry/multi/algorithms/detail/extreme_points.hpp #usr/include/boost/geometry/multi/algorithms/detail/for_each_range.hpp #usr/include/boost/geometry/multi/algorithms/detail/modify.hpp #usr/include/boost/geometry/multi/algorithms/detail/modify_with_predicate.hpp @@ -2950,7 +3985,6 @@ #usr/include/boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/get_ring.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp -#usr/include/boost/geometry/multi/algorithms/detail/overlay/select_rings.hpp #usr/include/boost/geometry/multi/algorithms/detail/overlay/self_turn_points.hpp #usr/include/boost/geometry/multi/algorithms/detail/point_on_border.hpp #usr/include/boost/geometry/multi/algorithms/detail/sections @@ -2967,6 +4001,7 @@ #usr/include/boost/geometry/multi/algorithms/num_interior_rings.hpp #usr/include/boost/geometry/multi/algorithms/num_points.hpp #usr/include/boost/geometry/multi/algorithms/perimeter.hpp +#usr/include/boost/geometry/multi/algorithms/remove_spikes.hpp #usr/include/boost/geometry/multi/algorithms/reverse.hpp #usr/include/boost/geometry/multi/algorithms/simplify.hpp #usr/include/boost/geometry/multi/algorithms/transform.hpp @@ -3014,32 +4049,68 @@ #usr/include/boost/geometry/multi/views/detail/range_type.hpp #usr/include/boost/geometry/policies #usr/include/boost/geometry/policies/compare.hpp +#usr/include/boost/geometry/policies/disjoint_interrupt_policy.hpp +#usr/include/boost/geometry/policies/is_valid +#usr/include/boost/geometry/policies/is_valid/default_policy.hpp +#usr/include/boost/geometry/policies/is_valid/failing_reason_policy.hpp +#usr/include/boost/geometry/policies/is_valid/failure_type_policy.hpp +#usr/include/boost/geometry/policies/predicate_based_interrupt_policy.hpp #usr/include/boost/geometry/policies/relate -#usr/include/boost/geometry/policies/relate/de9im.hpp #usr/include/boost/geometry/policies/relate/direction.hpp #usr/include/boost/geometry/policies/relate/intersection_points.hpp +#usr/include/boost/geometry/policies/relate/intersection_ratios.hpp #usr/include/boost/geometry/policies/relate/tupled.hpp +#usr/include/boost/geometry/policies/robustness +#usr/include/boost/geometry/policies/robustness/get_rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/no_rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/rescale_policy.hpp +#usr/include/boost/geometry/policies/robustness/robust_point_type.hpp +#usr/include/boost/geometry/policies/robustness/robust_type.hpp +#usr/include/boost/geometry/policies/robustness/segment_ratio.hpp +#usr/include/boost/geometry/policies/robustness/segment_ratio_type.hpp #usr/include/boost/geometry/strategies #usr/include/boost/geometry/strategies/agnostic +#usr/include/boost/geometry/strategies/agnostic/buffer_distance_asymmetric.hpp +#usr/include/boost/geometry/strategies/agnostic/buffer_distance_symmetric.hpp #usr/include/boost/geometry/strategies/agnostic/hull_graham_andrew.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_box_by_side.hpp +#usr/include/boost/geometry/strategies/agnostic/point_in_point.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_poly_oriented_winding.hpp #usr/include/boost/geometry/strategies/agnostic/point_in_poly_winding.hpp #usr/include/boost/geometry/strategies/agnostic/simplify_douglas_peucker.hpp #usr/include/boost/geometry/strategies/area.hpp +#usr/include/boost/geometry/strategies/azimuth.hpp +#usr/include/boost/geometry/strategies/buffer.hpp #usr/include/boost/geometry/strategies/cartesian #usr/include/boost/geometry/strategies/cartesian/area_surveyor.hpp +#usr/include/boost/geometry/strategies/cartesian/azimuth.hpp #usr/include/boost/geometry/strategies/cartesian/box_in_box.hpp -#usr/include/boost/geometry/strategies/cartesian/cart_intersect.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_end_flat.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_end_round.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_miter.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_round.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_join_round_by_divide.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_point_circle.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_point_square.hpp +#usr/include/boost/geometry/strategies/cartesian/buffer_side_straight.hpp +#usr/include/boost/geometry/strategies/cartesian/centroid_average.hpp #usr/include/boost/geometry/strategies/cartesian/centroid_bashein_detmer.hpp #usr/include/boost/geometry/strategies/cartesian/centroid_weighted_length.hpp +#usr/include/boost/geometry/strategies/cartesian/disjoint_segment_box.hpp #usr/include/boost/geometry/strategies/cartesian/distance_projected_point.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp #usr/include/boost/geometry/strategies/cartesian/distance_pythagoras.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_pythagoras_box_box.hpp +#usr/include/boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp +#usr/include/boost/geometry/strategies/cartesian/envelope_segment.hpp +#usr/include/boost/geometry/strategies/cartesian/intersection.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_box.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp #usr/include/boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp #usr/include/boost/geometry/strategies/cartesian/side_by_triangle.hpp +#usr/include/boost/geometry/strategies/cartesian/side_of_intersection.hpp #usr/include/boost/geometry/strategies/centroid.hpp +#usr/include/boost/geometry/strategies/comparable_distance_result.hpp #usr/include/boost/geometry/strategies/compare.hpp #usr/include/boost/geometry/strategies/concepts #usr/include/boost/geometry/strategies/concepts/area_concept.hpp @@ -3052,18 +4123,45 @@ #usr/include/boost/geometry/strategies/convex_hull.hpp #usr/include/boost/geometry/strategies/covered_by.hpp #usr/include/boost/geometry/strategies/default_area_result.hpp +#usr/include/boost/geometry/strategies/default_comparable_distance_result.hpp #usr/include/boost/geometry/strategies/default_distance_result.hpp #usr/include/boost/geometry/strategies/default_length_result.hpp +#usr/include/boost/geometry/strategies/default_strategy.hpp +#usr/include/boost/geometry/strategies/disjoint.hpp #usr/include/boost/geometry/strategies/distance.hpp +#usr/include/boost/geometry/strategies/distance_result.hpp +#usr/include/boost/geometry/strategies/envelope.hpp +#usr/include/boost/geometry/strategies/geographic +#usr/include/boost/geometry/strategies/geographic/area.hpp +#usr/include/boost/geometry/strategies/geographic/azimuth.hpp +#usr/include/boost/geometry/strategies/geographic/distance.hpp +#usr/include/boost/geometry/strategies/geographic/distance_andoyer.hpp +#usr/include/boost/geometry/strategies/geographic/distance_thomas.hpp +#usr/include/boost/geometry/strategies/geographic/distance_vincenty.hpp +#usr/include/boost/geometry/strategies/geographic/envelope_segment.hpp +#usr/include/boost/geometry/strategies/geographic/intersection.hpp +#usr/include/boost/geometry/strategies/geographic/intersection_elliptic.hpp +#usr/include/boost/geometry/strategies/geographic/mapping_ssf.hpp +#usr/include/boost/geometry/strategies/geographic/parameters.hpp +#usr/include/boost/geometry/strategies/geographic/side.hpp +#usr/include/boost/geometry/strategies/geographic/side_andoyer.hpp +#usr/include/boost/geometry/strategies/geographic/side_thomas.hpp +#usr/include/boost/geometry/strategies/geographic/side_vincenty.hpp #usr/include/boost/geometry/strategies/intersection.hpp #usr/include/boost/geometry/strategies/intersection_result.hpp +#usr/include/boost/geometry/strategies/intersection_strategies.hpp +#usr/include/boost/geometry/strategies/relate.hpp #usr/include/boost/geometry/strategies/side.hpp #usr/include/boost/geometry/strategies/side_info.hpp #usr/include/boost/geometry/strategies/spherical -#usr/include/boost/geometry/strategies/spherical/area_huiller.hpp +#usr/include/boost/geometry/strategies/spherical/area.hpp +#usr/include/boost/geometry/strategies/spherical/azimuth.hpp #usr/include/boost/geometry/strategies/spherical/compare_circular.hpp #usr/include/boost/geometry/strategies/spherical/distance_cross_track.hpp +#usr/include/boost/geometry/strategies/spherical/distance_cross_track_point_box.hpp #usr/include/boost/geometry/strategies/spherical/distance_haversine.hpp +#usr/include/boost/geometry/strategies/spherical/envelope_segment.hpp +#usr/include/boost/geometry/strategies/spherical/intersection.hpp #usr/include/boost/geometry/strategies/spherical/side_by_cross_track.hpp #usr/include/boost/geometry/strategies/spherical/ssf.hpp #usr/include/boost/geometry/strategies/strategies.hpp @@ -3080,22 +4178,40 @@ #usr/include/boost/geometry/util/bare_type.hpp #usr/include/boost/geometry/util/calculation_type.hpp #usr/include/boost/geometry/util/closure_as_bool.hpp +#usr/include/boost/geometry/util/combine_if.hpp +#usr/include/boost/geometry/util/compress_variant.hpp +#usr/include/boost/geometry/util/condition.hpp #usr/include/boost/geometry/util/coordinate_cast.hpp #usr/include/boost/geometry/util/for_each_coordinate.hpp +#usr/include/boost/geometry/util/has_infinite_coordinate.hpp +#usr/include/boost/geometry/util/has_nan_coordinate.hpp +#usr/include/boost/geometry/util/has_non_finite_coordinate.hpp #usr/include/boost/geometry/util/math.hpp +#usr/include/boost/geometry/util/normalize_spheroidal_box_coordinates.hpp +#usr/include/boost/geometry/util/normalize_spheroidal_coordinates.hpp #usr/include/boost/geometry/util/order_as_direction.hpp #usr/include/boost/geometry/util/parameter_type_of.hpp #usr/include/boost/geometry/util/promote_floating_point.hpp +#usr/include/boost/geometry/util/promote_integral.hpp +#usr/include/boost/geometry/util/range.hpp #usr/include/boost/geometry/util/rational.hpp #usr/include/boost/geometry/util/select_calculation_type.hpp #usr/include/boost/geometry/util/select_coordinate_type.hpp #usr/include/boost/geometry/util/select_most_precise.hpp +#usr/include/boost/geometry/util/transform_variant.hpp #usr/include/boost/geometry/views #usr/include/boost/geometry/views/box_view.hpp #usr/include/boost/geometry/views/closeable_view.hpp #usr/include/boost/geometry/views/detail +#usr/include/boost/geometry/views/detail/boundary_view +#usr/include/boost/geometry/views/detail/boundary_view.hpp +#usr/include/boost/geometry/views/detail/boundary_view/implementation.hpp +#usr/include/boost/geometry/views/detail/boundary_view/interface.hpp +#usr/include/boost/geometry/views/detail/indexed_point_view.hpp +#usr/include/boost/geometry/views/detail/normalized_view.hpp #usr/include/boost/geometry/views/detail/points_view.hpp #usr/include/boost/geometry/views/detail/range_type.hpp +#usr/include/boost/geometry/views/detail/two_dimensional_view.hpp #usr/include/boost/geometry/views/identity_view.hpp #usr/include/boost/geometry/views/reversible_view.hpp #usr/include/boost/geometry/views/segment_view.hpp @@ -3400,6 +4516,473 @@ #usr/include/boost/graph/visitors.hpp #usr/include/boost/graph/wavefront.hpp #usr/include/boost/graph/write_dimacs.hpp +#usr/include/boost/hana +#usr/include/boost/hana.hpp +#usr/include/boost/hana/accessors.hpp +#usr/include/boost/hana/adapt_adt.hpp +#usr/include/boost/hana/adapt_struct.hpp +#usr/include/boost/hana/adjust.hpp +#usr/include/boost/hana/adjust_if.hpp +#usr/include/boost/hana/all.hpp +#usr/include/boost/hana/all_of.hpp +#usr/include/boost/hana/and.hpp +#usr/include/boost/hana/any.hpp +#usr/include/boost/hana/any_of.hpp +#usr/include/boost/hana/ap.hpp +#usr/include/boost/hana/append.hpp +#usr/include/boost/hana/assert.hpp +#usr/include/boost/hana/at.hpp +#usr/include/boost/hana/at_key.hpp +#usr/include/boost/hana/back.hpp +#usr/include/boost/hana/basic_tuple.hpp +#usr/include/boost/hana/bool.hpp +#usr/include/boost/hana/cartesian_product.hpp +#usr/include/boost/hana/chain.hpp +#usr/include/boost/hana/comparing.hpp +#usr/include/boost/hana/concat.hpp +#usr/include/boost/hana/concept +#usr/include/boost/hana/concept.hpp +#usr/include/boost/hana/concept/applicative.hpp +#usr/include/boost/hana/concept/comonad.hpp +#usr/include/boost/hana/concept/comparable.hpp +#usr/include/boost/hana/concept/constant.hpp +#usr/include/boost/hana/concept/euclidean_ring.hpp +#usr/include/boost/hana/concept/foldable.hpp +#usr/include/boost/hana/concept/functor.hpp +#usr/include/boost/hana/concept/group.hpp +#usr/include/boost/hana/concept/hashable.hpp +#usr/include/boost/hana/concept/integral_constant.hpp +#usr/include/boost/hana/concept/iterable.hpp +#usr/include/boost/hana/concept/logical.hpp +#usr/include/boost/hana/concept/metafunction.hpp +#usr/include/boost/hana/concept/monad.hpp +#usr/include/boost/hana/concept/monad_plus.hpp +#usr/include/boost/hana/concept/monoid.hpp +#usr/include/boost/hana/concept/orderable.hpp +#usr/include/boost/hana/concept/product.hpp +#usr/include/boost/hana/concept/ring.hpp +#usr/include/boost/hana/concept/searchable.hpp +#usr/include/boost/hana/concept/sequence.hpp +#usr/include/boost/hana/concept/struct.hpp +#usr/include/boost/hana/config.hpp +#usr/include/boost/hana/contains.hpp +#usr/include/boost/hana/core +#usr/include/boost/hana/core.hpp +#usr/include/boost/hana/core/common.hpp +#usr/include/boost/hana/core/default.hpp +#usr/include/boost/hana/core/dispatch.hpp +#usr/include/boost/hana/core/is_a.hpp +#usr/include/boost/hana/core/make.hpp +#usr/include/boost/hana/core/tag_of.hpp +#usr/include/boost/hana/core/to.hpp +#usr/include/boost/hana/core/when.hpp +#usr/include/boost/hana/count.hpp +#usr/include/boost/hana/count_if.hpp +#usr/include/boost/hana/cycle.hpp +#usr/include/boost/hana/define_struct.hpp +#usr/include/boost/hana/detail +#usr/include/boost/hana/detail/algorithm.hpp +#usr/include/boost/hana/detail/any_of.hpp +#usr/include/boost/hana/detail/array.hpp +#usr/include/boost/hana/detail/canonical_constant.hpp +#usr/include/boost/hana/detail/concepts.hpp +#usr/include/boost/hana/detail/create.hpp +#usr/include/boost/hana/detail/decay.hpp +#usr/include/boost/hana/detail/dispatch_if.hpp +#usr/include/boost/hana/detail/ebo.hpp +#usr/include/boost/hana/detail/fast_and.hpp +#usr/include/boost/hana/detail/first_unsatisfied_index.hpp +#usr/include/boost/hana/detail/has_common_embedding.hpp +#usr/include/boost/hana/detail/has_duplicates.hpp +#usr/include/boost/hana/detail/hash_table.hpp +#usr/include/boost/hana/detail/index_if.hpp +#usr/include/boost/hana/detail/integral_constant.hpp +#usr/include/boost/hana/detail/intrinsics.hpp +#usr/include/boost/hana/detail/nested_by.hpp +#usr/include/boost/hana/detail/nested_by_fwd.hpp +#usr/include/boost/hana/detail/nested_than.hpp +#usr/include/boost/hana/detail/nested_than_fwd.hpp +#usr/include/boost/hana/detail/nested_to.hpp +#usr/include/boost/hana/detail/nested_to_fwd.hpp +#usr/include/boost/hana/detail/operators +#usr/include/boost/hana/detail/operators/adl.hpp +#usr/include/boost/hana/detail/operators/arithmetic.hpp +#usr/include/boost/hana/detail/operators/comparable.hpp +#usr/include/boost/hana/detail/operators/iterable.hpp +#usr/include/boost/hana/detail/operators/logical.hpp +#usr/include/boost/hana/detail/operators/monad.hpp +#usr/include/boost/hana/detail/operators/orderable.hpp +#usr/include/boost/hana/detail/operators/searchable.hpp +#usr/include/boost/hana/detail/preprocessor.hpp +#usr/include/boost/hana/detail/std_common_type.hpp +#usr/include/boost/hana/detail/struct_macros.erb.hpp +#usr/include/boost/hana/detail/struct_macros.hpp +#usr/include/boost/hana/detail/type_at.hpp +#usr/include/boost/hana/detail/type_foldl1.hpp +#usr/include/boost/hana/detail/type_foldr1.hpp +#usr/include/boost/hana/detail/unpack_flatten.hpp +#usr/include/boost/hana/detail/variadic +#usr/include/boost/hana/detail/variadic/at.hpp +#usr/include/boost/hana/detail/variadic/drop_into.hpp +#usr/include/boost/hana/detail/variadic/foldl1.hpp +#usr/include/boost/hana/detail/variadic/foldr1.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply +#usr/include/boost/hana/detail/variadic/reverse_apply.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply/flat.hpp +#usr/include/boost/hana/detail/variadic/reverse_apply/unrolled.hpp +#usr/include/boost/hana/detail/variadic/split_at.hpp +#usr/include/boost/hana/detail/variadic/take.hpp +#usr/include/boost/hana/detail/void_t.hpp +#usr/include/boost/hana/detail/wrong.hpp +#usr/include/boost/hana/difference.hpp +#usr/include/boost/hana/div.hpp +#usr/include/boost/hana/drop_back.hpp +#usr/include/boost/hana/drop_front.hpp +#usr/include/boost/hana/drop_front_exactly.hpp +#usr/include/boost/hana/drop_while.hpp +#usr/include/boost/hana/duplicate.hpp +#usr/include/boost/hana/empty.hpp +#usr/include/boost/hana/equal.hpp +#usr/include/boost/hana/erase_key.hpp +#usr/include/boost/hana/eval.hpp +#usr/include/boost/hana/eval_if.hpp +#usr/include/boost/hana/experimental +#usr/include/boost/hana/experimental/printable.hpp +#usr/include/boost/hana/experimental/type_name.hpp +#usr/include/boost/hana/experimental/types.hpp +#usr/include/boost/hana/experimental/view.hpp +#usr/include/boost/hana/ext +#usr/include/boost/hana/ext/boost +#usr/include/boost/hana/ext/boost.hpp +#usr/include/boost/hana/ext/boost/fusion +#usr/include/boost/hana/ext/boost/fusion.hpp +#usr/include/boost/hana/ext/boost/fusion/deque.hpp +#usr/include/boost/hana/ext/boost/fusion/detail +#usr/include/boost/hana/ext/boost/fusion/detail/common.hpp +#usr/include/boost/hana/ext/boost/fusion/list.hpp +#usr/include/boost/hana/ext/boost/fusion/tuple.hpp +#usr/include/boost/hana/ext/boost/fusion/vector.hpp +#usr/include/boost/hana/ext/boost/mpl +#usr/include/boost/hana/ext/boost/mpl.hpp +#usr/include/boost/hana/ext/boost/mpl/integral_c.hpp +#usr/include/boost/hana/ext/boost/mpl/list.hpp +#usr/include/boost/hana/ext/boost/mpl/vector.hpp +#usr/include/boost/hana/ext/boost/tuple.hpp +#usr/include/boost/hana/ext/std +#usr/include/boost/hana/ext/std.hpp +#usr/include/boost/hana/ext/std/array.hpp +#usr/include/boost/hana/ext/std/integer_sequence.hpp +#usr/include/boost/hana/ext/std/integral_constant.hpp +#usr/include/boost/hana/ext/std/pair.hpp +#usr/include/boost/hana/ext/std/ratio.hpp +#usr/include/boost/hana/ext/std/tuple.hpp +#usr/include/boost/hana/ext/std/vector.hpp +#usr/include/boost/hana/extend.hpp +#usr/include/boost/hana/extract.hpp +#usr/include/boost/hana/fill.hpp +#usr/include/boost/hana/filter.hpp +#usr/include/boost/hana/find.hpp +#usr/include/boost/hana/find_if.hpp +#usr/include/boost/hana/first.hpp +#usr/include/boost/hana/flatten.hpp +#usr/include/boost/hana/fold.hpp +#usr/include/boost/hana/fold_left.hpp +#usr/include/boost/hana/fold_right.hpp +#usr/include/boost/hana/for_each.hpp +#usr/include/boost/hana/front.hpp +#usr/include/boost/hana/functional +#usr/include/boost/hana/functional.hpp +#usr/include/boost/hana/functional/always.hpp +#usr/include/boost/hana/functional/apply.hpp +#usr/include/boost/hana/functional/arg.hpp +#usr/include/boost/hana/functional/capture.hpp +#usr/include/boost/hana/functional/compose.hpp +#usr/include/boost/hana/functional/curry.hpp +#usr/include/boost/hana/functional/demux.hpp +#usr/include/boost/hana/functional/fix.hpp +#usr/include/boost/hana/functional/flip.hpp +#usr/include/boost/hana/functional/id.hpp +#usr/include/boost/hana/functional/infix.hpp +#usr/include/boost/hana/functional/iterate.hpp +#usr/include/boost/hana/functional/lockstep.hpp +#usr/include/boost/hana/functional/on.hpp +#usr/include/boost/hana/functional/overload.hpp +#usr/include/boost/hana/functional/overload_linearly.hpp +#usr/include/boost/hana/functional/partial.hpp +#usr/include/boost/hana/functional/placeholder.hpp +#usr/include/boost/hana/functional/reverse_partial.hpp +#usr/include/boost/hana/fuse.hpp +#usr/include/boost/hana/fwd +#usr/include/boost/hana/fwd/accessors.hpp +#usr/include/boost/hana/fwd/adapt_adt.hpp +#usr/include/boost/hana/fwd/adapt_struct.hpp +#usr/include/boost/hana/fwd/adjust.hpp +#usr/include/boost/hana/fwd/adjust_if.hpp +#usr/include/boost/hana/fwd/all.hpp +#usr/include/boost/hana/fwd/all_of.hpp +#usr/include/boost/hana/fwd/and.hpp +#usr/include/boost/hana/fwd/any.hpp +#usr/include/boost/hana/fwd/any_of.hpp +#usr/include/boost/hana/fwd/ap.hpp +#usr/include/boost/hana/fwd/append.hpp +#usr/include/boost/hana/fwd/at.hpp +#usr/include/boost/hana/fwd/at_key.hpp +#usr/include/boost/hana/fwd/back.hpp +#usr/include/boost/hana/fwd/basic_tuple.hpp +#usr/include/boost/hana/fwd/bool.hpp +#usr/include/boost/hana/fwd/cartesian_product.hpp +#usr/include/boost/hana/fwd/chain.hpp +#usr/include/boost/hana/fwd/comparing.hpp +#usr/include/boost/hana/fwd/concat.hpp +#usr/include/boost/hana/fwd/concept +#usr/include/boost/hana/fwd/concept/applicative.hpp +#usr/include/boost/hana/fwd/concept/comonad.hpp +#usr/include/boost/hana/fwd/concept/comparable.hpp +#usr/include/boost/hana/fwd/concept/constant.hpp +#usr/include/boost/hana/fwd/concept/euclidean_ring.hpp +#usr/include/boost/hana/fwd/concept/foldable.hpp +#usr/include/boost/hana/fwd/concept/functor.hpp +#usr/include/boost/hana/fwd/concept/group.hpp +#usr/include/boost/hana/fwd/concept/hashable.hpp +#usr/include/boost/hana/fwd/concept/integral_constant.hpp +#usr/include/boost/hana/fwd/concept/iterable.hpp +#usr/include/boost/hana/fwd/concept/logical.hpp +#usr/include/boost/hana/fwd/concept/metafunction.hpp +#usr/include/boost/hana/fwd/concept/monad.hpp +#usr/include/boost/hana/fwd/concept/monad_plus.hpp +#usr/include/boost/hana/fwd/concept/monoid.hpp +#usr/include/boost/hana/fwd/concept/orderable.hpp +#usr/include/boost/hana/fwd/concept/product.hpp +#usr/include/boost/hana/fwd/concept/ring.hpp +#usr/include/boost/hana/fwd/concept/searchable.hpp +#usr/include/boost/hana/fwd/concept/sequence.hpp +#usr/include/boost/hana/fwd/concept/struct.hpp +#usr/include/boost/hana/fwd/contains.hpp +#usr/include/boost/hana/fwd/core +#usr/include/boost/hana/fwd/core.hpp +#usr/include/boost/hana/fwd/core/common.hpp +#usr/include/boost/hana/fwd/core/default.hpp +#usr/include/boost/hana/fwd/core/is_a.hpp +#usr/include/boost/hana/fwd/core/make.hpp +#usr/include/boost/hana/fwd/core/tag_of.hpp +#usr/include/boost/hana/fwd/core/to.hpp +#usr/include/boost/hana/fwd/core/when.hpp +#usr/include/boost/hana/fwd/count.hpp +#usr/include/boost/hana/fwd/count_if.hpp +#usr/include/boost/hana/fwd/cycle.hpp +#usr/include/boost/hana/fwd/define_struct.hpp +#usr/include/boost/hana/fwd/difference.hpp +#usr/include/boost/hana/fwd/div.hpp +#usr/include/boost/hana/fwd/drop_back.hpp +#usr/include/boost/hana/fwd/drop_front.hpp +#usr/include/boost/hana/fwd/drop_front_exactly.hpp +#usr/include/boost/hana/fwd/drop_while.hpp +#usr/include/boost/hana/fwd/duplicate.hpp +#usr/include/boost/hana/fwd/empty.hpp +#usr/include/boost/hana/fwd/equal.hpp +#usr/include/boost/hana/fwd/erase_key.hpp +#usr/include/boost/hana/fwd/eval.hpp +#usr/include/boost/hana/fwd/eval_if.hpp +#usr/include/boost/hana/fwd/extend.hpp +#usr/include/boost/hana/fwd/extract.hpp +#usr/include/boost/hana/fwd/fill.hpp +#usr/include/boost/hana/fwd/filter.hpp +#usr/include/boost/hana/fwd/find.hpp +#usr/include/boost/hana/fwd/find_if.hpp +#usr/include/boost/hana/fwd/first.hpp +#usr/include/boost/hana/fwd/flatten.hpp +#usr/include/boost/hana/fwd/fold.hpp +#usr/include/boost/hana/fwd/fold_left.hpp +#usr/include/boost/hana/fwd/fold_right.hpp +#usr/include/boost/hana/fwd/for_each.hpp +#usr/include/boost/hana/fwd/front.hpp +#usr/include/boost/hana/fwd/fuse.hpp +#usr/include/boost/hana/fwd/greater.hpp +#usr/include/boost/hana/fwd/greater_equal.hpp +#usr/include/boost/hana/fwd/group.hpp +#usr/include/boost/hana/fwd/hash.hpp +#usr/include/boost/hana/fwd/if.hpp +#usr/include/boost/hana/fwd/insert.hpp +#usr/include/boost/hana/fwd/insert_range.hpp +#usr/include/boost/hana/fwd/integral_constant.hpp +#usr/include/boost/hana/fwd/intersection.hpp +#usr/include/boost/hana/fwd/intersperse.hpp +#usr/include/boost/hana/fwd/is_disjoint.hpp +#usr/include/boost/hana/fwd/is_empty.hpp +#usr/include/boost/hana/fwd/is_subset.hpp +#usr/include/boost/hana/fwd/keys.hpp +#usr/include/boost/hana/fwd/lazy.hpp +#usr/include/boost/hana/fwd/length.hpp +#usr/include/boost/hana/fwd/less.hpp +#usr/include/boost/hana/fwd/less_equal.hpp +#usr/include/boost/hana/fwd/lexicographical_compare.hpp +#usr/include/boost/hana/fwd/lift.hpp +#usr/include/boost/hana/fwd/map.hpp +#usr/include/boost/hana/fwd/max.hpp +#usr/include/boost/hana/fwd/maximum.hpp +#usr/include/boost/hana/fwd/members.hpp +#usr/include/boost/hana/fwd/min.hpp +#usr/include/boost/hana/fwd/minimum.hpp +#usr/include/boost/hana/fwd/minus.hpp +#usr/include/boost/hana/fwd/mod.hpp +#usr/include/boost/hana/fwd/monadic_compose.hpp +#usr/include/boost/hana/fwd/monadic_fold_left.hpp +#usr/include/boost/hana/fwd/monadic_fold_right.hpp +#usr/include/boost/hana/fwd/mult.hpp +#usr/include/boost/hana/fwd/negate.hpp +#usr/include/boost/hana/fwd/none.hpp +#usr/include/boost/hana/fwd/none_of.hpp +#usr/include/boost/hana/fwd/not.hpp +#usr/include/boost/hana/fwd/not_equal.hpp +#usr/include/boost/hana/fwd/one.hpp +#usr/include/boost/hana/fwd/optional.hpp +#usr/include/boost/hana/fwd/or.hpp +#usr/include/boost/hana/fwd/ordering.hpp +#usr/include/boost/hana/fwd/pair.hpp +#usr/include/boost/hana/fwd/partition.hpp +#usr/include/boost/hana/fwd/permutations.hpp +#usr/include/boost/hana/fwd/plus.hpp +#usr/include/boost/hana/fwd/power.hpp +#usr/include/boost/hana/fwd/prefix.hpp +#usr/include/boost/hana/fwd/prepend.hpp +#usr/include/boost/hana/fwd/product.hpp +#usr/include/boost/hana/fwd/range.hpp +#usr/include/boost/hana/fwd/remove.hpp +#usr/include/boost/hana/fwd/remove_at.hpp +#usr/include/boost/hana/fwd/remove_if.hpp +#usr/include/boost/hana/fwd/remove_range.hpp +#usr/include/boost/hana/fwd/repeat.hpp +#usr/include/boost/hana/fwd/replace.hpp +#usr/include/boost/hana/fwd/replace_if.hpp +#usr/include/boost/hana/fwd/replicate.hpp +#usr/include/boost/hana/fwd/reverse.hpp +#usr/include/boost/hana/fwd/reverse_fold.hpp +#usr/include/boost/hana/fwd/scan_left.hpp +#usr/include/boost/hana/fwd/scan_right.hpp +#usr/include/boost/hana/fwd/second.hpp +#usr/include/boost/hana/fwd/set.hpp +#usr/include/boost/hana/fwd/size.hpp +#usr/include/boost/hana/fwd/slice.hpp +#usr/include/boost/hana/fwd/sort.hpp +#usr/include/boost/hana/fwd/span.hpp +#usr/include/boost/hana/fwd/string.hpp +#usr/include/boost/hana/fwd/suffix.hpp +#usr/include/boost/hana/fwd/sum.hpp +#usr/include/boost/hana/fwd/symmetric_difference.hpp +#usr/include/boost/hana/fwd/take_back.hpp +#usr/include/boost/hana/fwd/take_front.hpp +#usr/include/boost/hana/fwd/take_while.hpp +#usr/include/boost/hana/fwd/tap.hpp +#usr/include/boost/hana/fwd/then.hpp +#usr/include/boost/hana/fwd/transform.hpp +#usr/include/boost/hana/fwd/tuple.hpp +#usr/include/boost/hana/fwd/type.hpp +#usr/include/boost/hana/fwd/unfold_left.hpp +#usr/include/boost/hana/fwd/unfold_right.hpp +#usr/include/boost/hana/fwd/union.hpp +#usr/include/boost/hana/fwd/unique.hpp +#usr/include/boost/hana/fwd/unpack.hpp +#usr/include/boost/hana/fwd/value.hpp +#usr/include/boost/hana/fwd/while.hpp +#usr/include/boost/hana/fwd/zero.hpp +#usr/include/boost/hana/fwd/zip.hpp +#usr/include/boost/hana/fwd/zip_shortest.hpp +#usr/include/boost/hana/fwd/zip_shortest_with.hpp +#usr/include/boost/hana/fwd/zip_with.hpp +#usr/include/boost/hana/greater.hpp +#usr/include/boost/hana/greater_equal.hpp +#usr/include/boost/hana/group.hpp +#usr/include/boost/hana/hash.hpp +#usr/include/boost/hana/if.hpp +#usr/include/boost/hana/insert.hpp +#usr/include/boost/hana/insert_range.hpp +#usr/include/boost/hana/integral_constant.hpp +#usr/include/boost/hana/intersection.hpp +#usr/include/boost/hana/intersperse.hpp +#usr/include/boost/hana/is_disjoint.hpp +#usr/include/boost/hana/is_empty.hpp +#usr/include/boost/hana/is_subset.hpp +#usr/include/boost/hana/keys.hpp +#usr/include/boost/hana/lazy.hpp +#usr/include/boost/hana/length.hpp +#usr/include/boost/hana/less.hpp +#usr/include/boost/hana/less_equal.hpp +#usr/include/boost/hana/lexicographical_compare.hpp +#usr/include/boost/hana/lift.hpp +#usr/include/boost/hana/map.hpp +#usr/include/boost/hana/max.hpp +#usr/include/boost/hana/maximum.hpp +#usr/include/boost/hana/members.hpp +#usr/include/boost/hana/min.hpp +#usr/include/boost/hana/minimum.hpp +#usr/include/boost/hana/minus.hpp +#usr/include/boost/hana/mod.hpp +#usr/include/boost/hana/monadic_compose.hpp +#usr/include/boost/hana/monadic_fold_left.hpp +#usr/include/boost/hana/monadic_fold_right.hpp +#usr/include/boost/hana/mult.hpp +#usr/include/boost/hana/negate.hpp +#usr/include/boost/hana/none.hpp +#usr/include/boost/hana/none_of.hpp +#usr/include/boost/hana/not.hpp +#usr/include/boost/hana/not_equal.hpp +#usr/include/boost/hana/one.hpp +#usr/include/boost/hana/optional.hpp +#usr/include/boost/hana/or.hpp +#usr/include/boost/hana/ordering.hpp +#usr/include/boost/hana/pair.hpp +#usr/include/boost/hana/partition.hpp +#usr/include/boost/hana/permutations.hpp +#usr/include/boost/hana/plus.hpp +#usr/include/boost/hana/power.hpp +#usr/include/boost/hana/prefix.hpp +#usr/include/boost/hana/prepend.hpp +#usr/include/boost/hana/product.hpp +#usr/include/boost/hana/range.hpp +#usr/include/boost/hana/remove.hpp +#usr/include/boost/hana/remove_at.hpp +#usr/include/boost/hana/remove_if.hpp +#usr/include/boost/hana/remove_range.hpp +#usr/include/boost/hana/repeat.hpp +#usr/include/boost/hana/replace.hpp +#usr/include/boost/hana/replace_if.hpp +#usr/include/boost/hana/replicate.hpp +#usr/include/boost/hana/reverse.hpp +#usr/include/boost/hana/reverse_fold.hpp +#usr/include/boost/hana/scan_left.hpp +#usr/include/boost/hana/scan_right.hpp +#usr/include/boost/hana/second.hpp +#usr/include/boost/hana/set.hpp +#usr/include/boost/hana/size.hpp +#usr/include/boost/hana/slice.hpp +#usr/include/boost/hana/sort.hpp +#usr/include/boost/hana/span.hpp +#usr/include/boost/hana/string.hpp +#usr/include/boost/hana/suffix.hpp +#usr/include/boost/hana/sum.hpp +#usr/include/boost/hana/symmetric_difference.hpp +#usr/include/boost/hana/take_back.hpp +#usr/include/boost/hana/take_front.hpp +#usr/include/boost/hana/take_while.hpp +#usr/include/boost/hana/tap.hpp +#usr/include/boost/hana/then.hpp +#usr/include/boost/hana/traits.hpp +#usr/include/boost/hana/transform.hpp +#usr/include/boost/hana/tuple.hpp +#usr/include/boost/hana/type.hpp +#usr/include/boost/hana/unfold_left.hpp +#usr/include/boost/hana/unfold_right.hpp +#usr/include/boost/hana/union.hpp +#usr/include/boost/hana/unique.hpp +#usr/include/boost/hana/unpack.hpp +#usr/include/boost/hana/value.hpp +#usr/include/boost/hana/version.hpp +#usr/include/boost/hana/while.hpp +#usr/include/boost/hana/zero.hpp +#usr/include/boost/hana/zip.hpp +#usr/include/boost/hana/zip_shortest.hpp +#usr/include/boost/hana/zip_shortest_with.hpp +#usr/include/boost/hana/zip_with.hpp #usr/include/boost/heap #usr/include/boost/heap/binomial_heap.hpp #usr/include/boost/heap/d_ary_heap.hpp @@ -3540,6 +5123,10 @@ #usr/include/boost/indirect_reference.hpp #usr/include/boost/integer #usr/include/boost/integer.hpp +#usr/include/boost/integer/common_factor.hpp +#usr/include/boost/integer/common_factor_ct.hpp +#usr/include/boost/integer/common_factor_rt.hpp +#usr/include/boost/integer/integer_log2.hpp #usr/include/boost/integer/integer_mask.hpp #usr/include/boost/integer/static_log2.hpp #usr/include/boost/integer/static_min_max.hpp @@ -3598,18 +5185,19 @@ #usr/include/boost/interprocess/detail/min_max.hpp #usr/include/boost/interprocess/detail/move.hpp #usr/include/boost/interprocess/detail/mpl.hpp -#usr/include/boost/interprocess/detail/multi_segment_services.hpp #usr/include/boost/interprocess/detail/named_proxy.hpp +#usr/include/boost/interprocess/detail/nothrow.hpp #usr/include/boost/interprocess/detail/os_file_functions.hpp #usr/include/boost/interprocess/detail/os_thread_functions.hpp #usr/include/boost/interprocess/detail/pointer_type.hpp #usr/include/boost/interprocess/detail/portable_intermodule_singleton.hpp #usr/include/boost/interprocess/detail/posix_time_types_wrk.hpp -#usr/include/boost/interprocess/detail/preprocessor.hpp #usr/include/boost/interprocess/detail/ptime_wrk.hpp #usr/include/boost/interprocess/detail/robust_emulation.hpp #usr/include/boost/interprocess/detail/segment_manager_helper.hpp -#usr/include/boost/interprocess/detail/tmp_dir_helpers.hpp +#usr/include/boost/interprocess/detail/shared_dir_helpers.hpp +#usr/include/boost/interprocess/detail/simple_swap.hpp +#usr/include/boost/interprocess/detail/std_fwd.hpp #usr/include/boost/interprocess/detail/transform_iterator.hpp #usr/include/boost/interprocess/detail/type_traits.hpp #usr/include/boost/interprocess/detail/utilities.hpp @@ -3617,7 +5205,6 @@ #usr/include/boost/interprocess/detail/win32_api.hpp #usr/include/boost/interprocess/detail/windows_intermodule_singleton.hpp #usr/include/boost/interprocess/detail/workaround.hpp -#usr/include/boost/interprocess/detail/xsi_shared_memory_device.hpp #usr/include/boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp #usr/include/boost/interprocess/errors.hpp #usr/include/boost/interprocess/exceptions.hpp @@ -3642,8 +5229,6 @@ #usr/include/boost/interprocess/mem_algo #usr/include/boost/interprocess/mem_algo/detail #usr/include/boost/interprocess/mem_algo/detail/mem_algo_common.hpp -#usr/include/boost/interprocess/mem_algo/detail/multi_simple_seq_fit.hpp -#usr/include/boost/interprocess/mem_algo/detail/multi_simple_seq_fit_impl.hpp #usr/include/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp #usr/include/boost/interprocess/mem_algo/rbtree_best_fit.hpp #usr/include/boost/interprocess/mem_algo/simple_seq_fit.hpp @@ -3670,6 +5255,7 @@ #usr/include/boost/interprocess/streams/vectorstream.hpp #usr/include/boost/interprocess/sync #usr/include/boost/interprocess/sync/detail +#usr/include/boost/interprocess/sync/detail/common_algorithms.hpp #usr/include/boost/interprocess/sync/detail/condition_algorithm_8a.hpp #usr/include/boost/interprocess/sync/detail/condition_any_algorithm.hpp #usr/include/boost/interprocess/sync/detail/locks.hpp @@ -3733,10 +5319,7 @@ #usr/include/boost/interprocess/sync/windows/sync_utils.hpp #usr/include/boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp #usr/include/boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp -#usr/include/boost/interprocess/sync/xsi -#usr/include/boost/interprocess/sync/xsi/advanced_xsi_semaphore.hpp -#usr/include/boost/interprocess/sync/xsi/simple_xsi_semaphore.hpp -#usr/include/boost/interprocess/sync/xsi/xsi_named_mutex.hpp +#usr/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp #usr/include/boost/interprocess/windows_shared_memory.hpp #usr/include/boost/interprocess/xsi_key.hpp #usr/include/boost/interprocess/xsi_shared_memory.hpp @@ -3754,29 +5337,55 @@ #usr/include/boost/intrusive/circular_slist_algorithms.hpp #usr/include/boost/intrusive/derivation_value_traits.hpp #usr/include/boost/intrusive/detail +#usr/include/boost/intrusive/detail/algo_type.hpp +#usr/include/boost/intrusive/detail/algorithm.hpp #usr/include/boost/intrusive/detail/any_node_and_algorithms.hpp +#usr/include/boost/intrusive/detail/array_initializer.hpp #usr/include/boost/intrusive/detail/assert.hpp #usr/include/boost/intrusive/detail/avltree_node.hpp -#usr/include/boost/intrusive/detail/clear_on_destructor_base.hpp +#usr/include/boost/intrusive/detail/bstree_algorithms_base.hpp #usr/include/boost/intrusive/detail/common_slist_algorithms.hpp #usr/include/boost/intrusive/detail/config_begin.hpp #usr/include/boost/intrusive/detail/config_end.hpp +#usr/include/boost/intrusive/detail/default_header_holder.hpp #usr/include/boost/intrusive/detail/ebo_functor_holder.hpp +#usr/include/boost/intrusive/detail/empty_node_checker.hpp +#usr/include/boost/intrusive/detail/equal_to_value.hpp +#usr/include/boost/intrusive/detail/exception_disposer.hpp #usr/include/boost/intrusive/detail/function_detector.hpp #usr/include/boost/intrusive/detail/generic_hook.hpp +#usr/include/boost/intrusive/detail/get_value_traits.hpp #usr/include/boost/intrusive/detail/has_member_function_callable_with.hpp #usr/include/boost/intrusive/detail/hashtable_node.hpp +#usr/include/boost/intrusive/detail/hook_traits.hpp +#usr/include/boost/intrusive/detail/iiterator.hpp #usr/include/boost/intrusive/detail/is_stateful_value_traits.hpp +#usr/include/boost/intrusive/detail/iterator.hpp +#usr/include/boost/intrusive/detail/key_nodeptr_comp.hpp +#usr/include/boost/intrusive/detail/list_iterator.hpp #usr/include/boost/intrusive/detail/list_node.hpp -#usr/include/boost/intrusive/detail/memory_util.hpp +#usr/include/boost/intrusive/detail/math.hpp +#usr/include/boost/intrusive/detail/minimal_less_equal_header.hpp +#usr/include/boost/intrusive/detail/minimal_pair_header.hpp #usr/include/boost/intrusive/detail/mpl.hpp +#usr/include/boost/intrusive/detail/node_cloner_disposer.hpp +#usr/include/boost/intrusive/detail/node_holder.hpp +#usr/include/boost/intrusive/detail/node_to_value.hpp #usr/include/boost/intrusive/detail/parent_from_member.hpp -#usr/include/boost/intrusive/detail/preprocessor.hpp +#usr/include/boost/intrusive/detail/pointer_element.hpp #usr/include/boost/intrusive/detail/rbtree_node.hpp +#usr/include/boost/intrusive/detail/reverse_iterator.hpp +#usr/include/boost/intrusive/detail/simple_disposers.hpp +#usr/include/boost/intrusive/detail/size_holder.hpp +#usr/include/boost/intrusive/detail/slist_iterator.hpp #usr/include/boost/intrusive/detail/slist_node.hpp +#usr/include/boost/intrusive/detail/std_fwd.hpp +#usr/include/boost/intrusive/detail/to_raw_pointer.hpp #usr/include/boost/intrusive/detail/transform_iterator.hpp +#usr/include/boost/intrusive/detail/tree_iterator.hpp #usr/include/boost/intrusive/detail/tree_node.hpp -#usr/include/boost/intrusive/detail/utilities.hpp +#usr/include/boost/intrusive/detail/tree_value_compare.hpp +#usr/include/boost/intrusive/detail/uncast.hpp #usr/include/boost/intrusive/detail/workaround.hpp #usr/include/boost/intrusive/hashtable.hpp #usr/include/boost/intrusive/intrusive_fwd.hpp @@ -3786,8 +5395,10 @@ #usr/include/boost/intrusive/list_hook.hpp #usr/include/boost/intrusive/member_value_traits.hpp #usr/include/boost/intrusive/options.hpp +#usr/include/boost/intrusive/pack_options.hpp #usr/include/boost/intrusive/parent_from_member.hpp #usr/include/boost/intrusive/pointer_plus_bits.hpp +#usr/include/boost/intrusive/pointer_rebind.hpp #usr/include/boost/intrusive/pointer_traits.hpp #usr/include/boost/intrusive/priority_compare.hpp #usr/include/boost/intrusive/rbtree.hpp @@ -3800,7 +5411,6 @@ #usr/include/boost/intrusive/slist.hpp #usr/include/boost/intrusive/slist_hook.hpp #usr/include/boost/intrusive/splay_set.hpp -#usr/include/boost/intrusive/splay_set_hook.hpp #usr/include/boost/intrusive/splaytree.hpp #usr/include/boost/intrusive/splaytree_algorithms.hpp #usr/include/boost/intrusive/treap.hpp @@ -3901,10 +5511,6 @@ #usr/include/boost/iostreams/detail/system_failure.hpp #usr/include/boost/iostreams/detail/template_params.hpp #usr/include/boost/iostreams/detail/translate_int_type.hpp -#usr/include/boost/iostreams/detail/vc6 -#usr/include/boost/iostreams/detail/vc6/close.hpp -#usr/include/boost/iostreams/detail/vc6/read.hpp -#usr/include/boost/iostreams/detail/vc6/write.hpp #usr/include/boost/iostreams/detail/wrap_unwrap.hpp #usr/include/boost/iostreams/device #usr/include/boost/iostreams/device/array.hpp @@ -3975,6 +5581,7 @@ #usr/include/boost/iterator/iterator_concepts.hpp #usr/include/boost/iterator/iterator_facade.hpp #usr/include/boost/iterator/iterator_traits.hpp +#usr/include/boost/iterator/minimum_category.hpp #usr/include/boost/iterator/new_iterator_tests.hpp #usr/include/boost/iterator/permutation_iterator.hpp #usr/include/boost/iterator/reverse_iterator.hpp @@ -4017,7 +5624,20 @@ #usr/include/boost/lambda/numeric.hpp #usr/include/boost/lambda/switch.hpp #usr/include/boost/last_value.hpp +#usr/include/boost/lexical_cast #usr/include/boost/lexical_cast.hpp +#usr/include/boost/lexical_cast/bad_lexical_cast.hpp +#usr/include/boost/lexical_cast/detail +#usr/include/boost/lexical_cast/detail/converter_lexical.hpp +#usr/include/boost/lexical_cast/detail/converter_lexical_streams.hpp +#usr/include/boost/lexical_cast/detail/converter_numeric.hpp +#usr/include/boost/lexical_cast/detail/inf_nan.hpp +#usr/include/boost/lexical_cast/detail/is_character.hpp +#usr/include/boost/lexical_cast/detail/lcast_char_constants.hpp +#usr/include/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +#usr/include/boost/lexical_cast/detail/widest_char.hpp +#usr/include/boost/lexical_cast/lexical_cast_old.hpp +#usr/include/boost/lexical_cast/try_lexical_convert.hpp #usr/include/boost/limits.hpp #usr/include/boost/local_function #usr/include/boost/local_function.hpp @@ -4104,6 +5724,7 @@ #usr/include/boost/locale/format.hpp #usr/include/boost/locale/formatting.hpp #usr/include/boost/locale/generator.hpp +#usr/include/boost/locale/generic_codecvt.hpp #usr/include/boost/locale/gnu_gettext.hpp #usr/include/boost/locale/hold_ptr.hpp #usr/include/boost/locale/info.hpp @@ -4111,11 +5732,11 @@ #usr/include/boost/locale/message.hpp #usr/include/boost/locale/time_zone.hpp #usr/include/boost/locale/utf.hpp +#usr/include/boost/locale/utf8_codecvt.hpp #usr/include/boost/locale/util.hpp #usr/include/boost/lockfree #usr/include/boost/lockfree/detail #usr/include/boost/lockfree/detail/atomic.hpp -#usr/include/boost/lockfree/detail/branch_hints.hpp #usr/include/boost/lockfree/detail/copy_payload.hpp #usr/include/boost/lockfree/detail/freelist.hpp #usr/include/boost/lockfree/detail/parameter.hpp @@ -4123,6 +5744,7 @@ #usr/include/boost/lockfree/detail/tagged_ptr.hpp #usr/include/boost/lockfree/detail/tagged_ptr_dcas.hpp #usr/include/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp +#usr/include/boost/lockfree/lockfree_forward.hpp #usr/include/boost/lockfree/policies.hpp #usr/include/boost/lockfree/queue.hpp #usr/include/boost/lockfree/spsc_queue.hpp @@ -4162,15 +5784,18 @@ #usr/include/boost/log/core/record.hpp #usr/include/boost/log/core/record_view.hpp #usr/include/boost/log/detail +#usr/include/boost/log/detail/adaptive_mutex.hpp #usr/include/boost/log/detail/asio_fwd.hpp #usr/include/boost/log/detail/attachable_sstream_buf.hpp #usr/include/boost/log/detail/attr_output_impl.hpp #usr/include/boost/log/detail/attr_output_terminal.hpp #usr/include/boost/log/detail/attribute_get_value_impl.hpp #usr/include/boost/log/detail/attribute_predicate.hpp +#usr/include/boost/log/detail/c_str.hpp #usr/include/boost/log/detail/cleanup_scope_guard.hpp #usr/include/boost/log/detail/code_conversion.hpp #usr/include/boost/log/detail/config.hpp +#usr/include/boost/log/detail/copy_cv.hpp #usr/include/boost/log/detail/custom_terminal_spec.hpp #usr/include/boost/log/detail/date_time_fmt_gen_traits_fwd.hpp #usr/include/boost/log/detail/date_time_format_parser.hpp @@ -4178,6 +5803,7 @@ #usr/include/boost/log/detail/deduce_char_type.hpp #usr/include/boost/log/detail/default_attribute_names.hpp #usr/include/boost/log/detail/embedded_string_type.hpp +#usr/include/boost/log/detail/enqueued_record.hpp #usr/include/boost/log/detail/event.hpp #usr/include/boost/log/detail/fake_mutex.hpp #usr/include/boost/log/detail/footer.hpp @@ -4186,22 +5812,24 @@ #usr/include/boost/log/detail/generate_overloads.hpp #usr/include/boost/log/detail/header.hpp #usr/include/boost/log/detail/id.hpp +#usr/include/boost/log/detail/is_character_type.hpp +#usr/include/boost/log/detail/is_ostream.hpp #usr/include/boost/log/detail/light_function.hpp #usr/include/boost/log/detail/light_function_pp.hpp #usr/include/boost/log/detail/light_rw_mutex.hpp #usr/include/boost/log/detail/locking_ptr.hpp #usr/include/boost/log/detail/locks.hpp -#usr/include/boost/log/detail/malloc_aligned.hpp #usr/include/boost/log/detail/named_scope_fmt_pp.hpp #usr/include/boost/log/detail/native_typeof.hpp #usr/include/boost/log/detail/parameter_tools.hpp +#usr/include/boost/log/detail/pause.hpp #usr/include/boost/log/detail/pp_identity.hpp #usr/include/boost/log/detail/process_id.hpp #usr/include/boost/log/detail/setup_config.hpp +#usr/include/boost/log/detail/sfinae_tools.hpp #usr/include/boost/log/detail/singleton.hpp #usr/include/boost/log/detail/sink_init_helpers.hpp #usr/include/boost/log/detail/snprintf.hpp -#usr/include/boost/log/detail/spin_mutex.hpp #usr/include/boost/log/detail/tagged_integer.hpp #usr/include/boost/log/detail/thread_id.hpp #usr/include/boost/log/detail/thread_specific.hpp @@ -4211,7 +5839,6 @@ #usr/include/boost/log/detail/unary_function_terminal.hpp #usr/include/boost/log/detail/unhandled_exception_count.hpp #usr/include/boost/log/detail/value_ref_visitation.hpp -#usr/include/boost/log/detail/visible_type.hpp #usr/include/boost/log/exceptions.hpp #usr/include/boost/log/expressions #usr/include/boost/log/expressions.hpp @@ -4227,6 +5854,7 @@ #usr/include/boost/log/expressions/formatters/date_time.hpp #usr/include/boost/log/expressions/formatters/format.hpp #usr/include/boost/log/expressions/formatters/if.hpp +#usr/include/boost/log/expressions/formatters/max_size_decorator.hpp #usr/include/boost/log/expressions/formatters/named_scope.hpp #usr/include/boost/log/expressions/formatters/stream.hpp #usr/include/boost/log/expressions/formatters/wrap_formatter.hpp @@ -4248,24 +5876,33 @@ #usr/include/boost/log/expressions/record.hpp #usr/include/boost/log/keywords #usr/include/boost/log/keywords/auto_flush.hpp +#usr/include/boost/log/keywords/block_size.hpp +#usr/include/boost/log/keywords/capacity.hpp #usr/include/boost/log/keywords/channel.hpp #usr/include/boost/log/keywords/delimiter.hpp #usr/include/boost/log/keywords/depth.hpp +#usr/include/boost/log/keywords/empty_marker.hpp +#usr/include/boost/log/keywords/enable_final_rotation.hpp #usr/include/boost/log/keywords/facility.hpp #usr/include/boost/log/keywords/file_name.hpp #usr/include/boost/log/keywords/filter.hpp #usr/include/boost/log/keywords/format.hpp #usr/include/boost/log/keywords/ident.hpp +#usr/include/boost/log/keywords/incomplete_marker.hpp #usr/include/boost/log/keywords/ip_version.hpp #usr/include/boost/log/keywords/iteration.hpp #usr/include/boost/log/keywords/log_name.hpp #usr/include/boost/log/keywords/log_source.hpp +#usr/include/boost/log/keywords/max_files.hpp #usr/include/boost/log/keywords/max_size.hpp #usr/include/boost/log/keywords/message_file.hpp #usr/include/boost/log/keywords/min_free_space.hpp +#usr/include/boost/log/keywords/name.hpp #usr/include/boost/log/keywords/open_mode.hpp #usr/include/boost/log/keywords/order.hpp #usr/include/boost/log/keywords/ordering_window.hpp +#usr/include/boost/log/keywords/overflow_policy.hpp +#usr/include/boost/log/keywords/permissions.hpp #usr/include/boost/log/keywords/registration.hpp #usr/include/boost/log/keywords/rotation_size.hpp #usr/include/boost/log/keywords/scan_method.hpp @@ -4293,6 +5930,7 @@ #usr/include/boost/log/sinks/syslog_backend.hpp #usr/include/boost/log/sinks/syslog_constants.hpp #usr/include/boost/log/sinks/text_file_backend.hpp +#usr/include/boost/log/sinks/text_ipc_message_queue_backend.hpp #usr/include/boost/log/sinks/text_multifile_backend.hpp #usr/include/boost/log/sinks/text_ostream_backend.hpp #usr/include/boost/log/sinks/unbounded_fifo_queue.hpp @@ -4317,12 +5955,11 @@ #usr/include/boost/log/support/regex.hpp #usr/include/boost/log/support/spirit_classic.hpp #usr/include/boost/log/support/spirit_qi.hpp +#usr/include/boost/log/support/std_regex.hpp #usr/include/boost/log/support/xpressive.hpp #usr/include/boost/log/trivial.hpp #usr/include/boost/log/utility -#usr/include/boost/log/utility/empty_deleter.hpp #usr/include/boost/log/utility/exception_handler.hpp -#usr/include/boost/log/utility/explicit_operator_bool.hpp #usr/include/boost/log/utility/formatting_ostream.hpp #usr/include/boost/log/utility/formatting_ostream_fwd.hpp #usr/include/boost/log/utility/functional @@ -4341,13 +5978,17 @@ #usr/include/boost/log/utility/functional/matches.hpp #usr/include/boost/log/utility/functional/nop.hpp #usr/include/boost/log/utility/functional/save_result.hpp -#usr/include/boost/log/utility/intrusive_ref_counter.hpp +#usr/include/boost/log/utility/ipc +#usr/include/boost/log/utility/ipc/object_name.hpp +#usr/include/boost/log/utility/ipc/reliable_message_queue.hpp #usr/include/boost/log/utility/manipulators #usr/include/boost/log/utility/manipulators.hpp #usr/include/boost/log/utility/manipulators/add_value.hpp #usr/include/boost/log/utility/manipulators/dump.hpp #usr/include/boost/log/utility/manipulators/to_log.hpp #usr/include/boost/log/utility/once_block.hpp +#usr/include/boost/log/utility/open_mode.hpp +#usr/include/boost/log/utility/permissions.hpp #usr/include/boost/log/utility/record_ordering.hpp #usr/include/boost/log/utility/setup #usr/include/boost/log/utility/setup.hpp @@ -4369,7 +6010,6 @@ #usr/include/boost/log/utility/type_dispatch/standard_types.hpp #usr/include/boost/log/utility/type_dispatch/static_type_dispatcher.hpp #usr/include/boost/log/utility/type_dispatch/type_dispatcher.hpp -#usr/include/boost/log/utility/type_info_wrapper.hpp #usr/include/boost/log/utility/unique_identifier_name.hpp #usr/include/boost/log/utility/unused_variable.hpp #usr/include/boost/log/utility/value_ref.hpp @@ -4378,7 +6018,9 @@ #usr/include/boost/logic/tribool.hpp #usr/include/boost/logic/tribool_fwd.hpp #usr/include/boost/logic/tribool_io.hpp +#usr/include/boost/make_default.hpp #usr/include/boost/make_shared.hpp +#usr/include/boost/make_unique.hpp #usr/include/boost/math #usr/include/boost/math/bindings #usr/include/boost/math/bindings/detail @@ -4409,10 +6051,17 @@ #usr/include/boost/math/constants #usr/include/boost/math/constants/calculate_constants.hpp #usr/include/boost/math/constants/constants.hpp -#usr/include/boost/math/constants/generate.hpp #usr/include/boost/math/constants/info.hpp +#usr/include/boost/math/cstdfloat +#usr/include/boost/math/cstdfloat/cstdfloat_cmath.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_complex.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_complex_std.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_iostream.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_limits.hpp +#usr/include/boost/math/cstdfloat/cstdfloat_types.hpp #usr/include/boost/math/distributions #usr/include/boost/math/distributions.hpp +#usr/include/boost/math/distributions/arcsine.hpp #usr/include/boost/math/distributions/bernoulli.hpp #usr/include/boost/math/distributions/beta.hpp #usr/include/boost/math/distributions/binomial.hpp @@ -4436,6 +6085,7 @@ #usr/include/boost/math/distributions/fwd.hpp #usr/include/boost/math/distributions/gamma.hpp #usr/include/boost/math/distributions/geometric.hpp +#usr/include/boost/math/distributions/hyperexponential.hpp #usr/include/boost/math/distributions/hypergeometric.hpp #usr/include/boost/math/distributions/inverse_chi_squared.hpp #usr/include/boost/math/distributions/inverse_gamma.hpp @@ -4468,13 +6118,17 @@ #usr/include/boost/math/special_functions/airy.hpp #usr/include/boost/math/special_functions/asinh.hpp #usr/include/boost/math/special_functions/atanh.hpp +#usr/include/boost/math/special_functions/bernoulli.hpp #usr/include/boost/math/special_functions/bessel.hpp +#usr/include/boost/math/special_functions/bessel_prime.hpp #usr/include/boost/math/special_functions/beta.hpp #usr/include/boost/math/special_functions/binomial.hpp #usr/include/boost/math/special_functions/cbrt.hpp #usr/include/boost/math/special_functions/cos_pi.hpp #usr/include/boost/math/special_functions/detail #usr/include/boost/math/special_functions/detail/airy_ai_bi_zero.hpp +#usr/include/boost/math/special_functions/detail/bernoulli_details.hpp +#usr/include/boost/math/special_functions/detail/bessel_derivatives_linear.hpp #usr/include/boost/math/special_functions/detail/bessel_i0.hpp #usr/include/boost/math/special_functions/detail/bessel_i1.hpp #usr/include/boost/math/special_functions/detail/bessel_ik.hpp @@ -4483,6 +6137,8 @@ #usr/include/boost/math/special_functions/detail/bessel_jn.hpp #usr/include/boost/math/special_functions/detail/bessel_jy.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_asym.hpp +#usr/include/boost/math/special_functions/detail/bessel_jy_derivatives_asym.hpp +#usr/include/boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_series.hpp #usr/include/boost/math/special_functions/detail/bessel_jy_zero.hpp #usr/include/boost/math/special_functions/detail/bessel_k0.hpp @@ -4501,16 +6157,20 @@ #usr/include/boost/math/special_functions/detail/igamma_large.hpp #usr/include/boost/math/special_functions/detail/lanczos_sse2.hpp #usr/include/boost/math/special_functions/detail/lgamma_small.hpp +#usr/include/boost/math/special_functions/detail/polygamma.hpp #usr/include/boost/math/special_functions/detail/round_fwd.hpp #usr/include/boost/math/special_functions/detail/t_distribution_inv.hpp +#usr/include/boost/math/special_functions/detail/unchecked_bernoulli.hpp #usr/include/boost/math/special_functions/detail/unchecked_factorial.hpp #usr/include/boost/math/special_functions/digamma.hpp #usr/include/boost/math/special_functions/ellint_1.hpp #usr/include/boost/math/special_functions/ellint_2.hpp #usr/include/boost/math/special_functions/ellint_3.hpp +#usr/include/boost/math/special_functions/ellint_d.hpp #usr/include/boost/math/special_functions/ellint_rc.hpp #usr/include/boost/math/special_functions/ellint_rd.hpp #usr/include/boost/math/special_functions/ellint_rf.hpp +#usr/include/boost/math/special_functions/ellint_rg.hpp #usr/include/boost/math/special_functions/ellint_rj.hpp #usr/include/boost/math/special_functions/erf.hpp #usr/include/boost/math/special_functions/expint.hpp @@ -4520,8 +6180,10 @@ #usr/include/boost/math/special_functions/gamma.hpp #usr/include/boost/math/special_functions/hankel.hpp #usr/include/boost/math/special_functions/hermite.hpp +#usr/include/boost/math/special_functions/heuman_lambda.hpp #usr/include/boost/math/special_functions/hypot.hpp #usr/include/boost/math/special_functions/jacobi_elliptic.hpp +#usr/include/boost/math/special_functions/jacobi_zeta.hpp #usr/include/boost/math/special_functions/laguerre.hpp #usr/include/boost/math/special_functions/lanczos.hpp #usr/include/boost/math/special_functions/legendre.hpp @@ -4531,9 +6193,11 @@ #usr/include/boost/math/special_functions/next.hpp #usr/include/boost/math/special_functions/nonfinite_num_facets.hpp #usr/include/boost/math/special_functions/owens_t.hpp +#usr/include/boost/math/special_functions/polygamma.hpp #usr/include/boost/math/special_functions/pow.hpp #usr/include/boost/math/special_functions/powm1.hpp #usr/include/boost/math/special_functions/prime.hpp +#usr/include/boost/math/special_functions/relative_difference.hpp #usr/include/boost/math/special_functions/round.hpp #usr/include/boost/math/special_functions/sign.hpp #usr/include/boost/math/special_functions/sin_pi.hpp @@ -4541,11 +6205,14 @@ #usr/include/boost/math/special_functions/sinhc.hpp #usr/include/boost/math/special_functions/spherical_harmonic.hpp #usr/include/boost/math/special_functions/sqrt1pm1.hpp +#usr/include/boost/math/special_functions/trigamma.hpp #usr/include/boost/math/special_functions/trunc.hpp +#usr/include/boost/math/special_functions/ulp.hpp #usr/include/boost/math/special_functions/zeta.hpp #usr/include/boost/math/tools #usr/include/boost/math/tools/big_constant.hpp #usr/include/boost/math/tools/config.hpp +#usr/include/boost/math/tools/convert_from_string.hpp #usr/include/boost/math/tools/detail #usr/include/boost/math/tools/detail/polynomial_horner1_10.hpp #usr/include/boost/math/tools/detail/polynomial_horner1_11.hpp @@ -4668,13 +6335,9 @@ #usr/include/boost/math/tools/promotion.hpp #usr/include/boost/math/tools/rational.hpp #usr/include/boost/math/tools/real_cast.hpp -#usr/include/boost/math/tools/remez.hpp #usr/include/boost/math/tools/roots.hpp #usr/include/boost/math/tools/series.hpp -#usr/include/boost/math/tools/solve.hpp #usr/include/boost/math/tools/stats.hpp -#usr/include/boost/math/tools/test.hpp -#usr/include/boost/math/tools/test_data.hpp #usr/include/boost/math/tools/toms748_solve.hpp #usr/include/boost/math/tools/traits.hpp #usr/include/boost/math/tools/tuple.hpp @@ -4685,18 +6348,326 @@ #usr/include/boost/math_fwd.hpp #usr/include/boost/mem_fn.hpp #usr/include/boost/memory_order.hpp +#usr/include/boost/metaparse +#usr/include/boost/metaparse.hpp +#usr/include/boost/metaparse/accept.hpp +#usr/include/boost/metaparse/accept_tag.hpp +#usr/include/boost/metaparse/accept_when.hpp +#usr/include/boost/metaparse/alphanum.hpp +#usr/include/boost/metaparse/always.hpp +#usr/include/boost/metaparse/always_c.hpp +#usr/include/boost/metaparse/build_parser.hpp +#usr/include/boost/metaparse/change_error_message.hpp +#usr/include/boost/metaparse/config.hpp +#usr/include/boost/metaparse/debug_parsing_error.hpp +#usr/include/boost/metaparse/define_error.hpp +#usr/include/boost/metaparse/digit.hpp +#usr/include/boost/metaparse/digit_val.hpp +#usr/include/boost/metaparse/empty.hpp +#usr/include/boost/metaparse/entire_input.hpp +#usr/include/boost/metaparse/error +#usr/include/boost/metaparse/error/digit_expected.hpp +#usr/include/boost/metaparse/error/end_of_input_expected.hpp +#usr/include/boost/metaparse/error/index_out_of_range.hpp +#usr/include/boost/metaparse/error/letter_expected.hpp +#usr/include/boost/metaparse/error/literal_expected.hpp +#usr/include/boost/metaparse/error/none_of_the_expected_cases_found.hpp +#usr/include/boost/metaparse/error/unexpected_character.hpp +#usr/include/boost/metaparse/error/unexpected_end_of_input.hpp +#usr/include/boost/metaparse/error/unpaired.hpp +#usr/include/boost/metaparse/error/whitespace_expected.hpp +#usr/include/boost/metaparse/except.hpp +#usr/include/boost/metaparse/fail.hpp +#usr/include/boost/metaparse/fail_at_first_char_expected.hpp +#usr/include/boost/metaparse/fail_tag.hpp +#usr/include/boost/metaparse/first_of.hpp +#usr/include/boost/metaparse/foldl.hpp +#usr/include/boost/metaparse/foldl1.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete1.hpp +#usr/include/boost/metaparse/foldl_reject_incomplete_start_with_parser.hpp +#usr/include/boost/metaparse/foldl_start_with_parser.hpp +#usr/include/boost/metaparse/foldr.hpp +#usr/include/boost/metaparse/foldr1.hpp +#usr/include/boost/metaparse/foldr_reject_incomplete.hpp +#usr/include/boost/metaparse/foldr_reject_incomplete1.hpp +#usr/include/boost/metaparse/foldr_start_with_parser.hpp +#usr/include/boost/metaparse/get_col.hpp +#usr/include/boost/metaparse/get_line.hpp +#usr/include/boost/metaparse/get_message.hpp +#usr/include/boost/metaparse/get_position.hpp +#usr/include/boost/metaparse/get_prev_char.hpp +#usr/include/boost/metaparse/get_remaining.hpp +#usr/include/boost/metaparse/get_result.hpp +#usr/include/boost/metaparse/grammar.hpp +#usr/include/boost/metaparse/if_.hpp +#usr/include/boost/metaparse/int_.hpp +#usr/include/boost/metaparse/is_error.hpp +#usr/include/boost/metaparse/iterate.hpp +#usr/include/boost/metaparse/iterate_c.hpp +#usr/include/boost/metaparse/keyword.hpp +#usr/include/boost/metaparse/last_of.hpp +#usr/include/boost/metaparse/letter.hpp +#usr/include/boost/metaparse/limit_one_char_except_size.hpp +#usr/include/boost/metaparse/limit_one_of_size.hpp +#usr/include/boost/metaparse/limit_sequence_size.hpp +#usr/include/boost/metaparse/limit_string_size.hpp +#usr/include/boost/metaparse/lit.hpp +#usr/include/boost/metaparse/lit_c.hpp +#usr/include/boost/metaparse/look_ahead.hpp +#usr/include/boost/metaparse/middle_of.hpp +#usr/include/boost/metaparse/next_char.hpp +#usr/include/boost/metaparse/next_line.hpp +#usr/include/boost/metaparse/nth_of.hpp +#usr/include/boost/metaparse/nth_of_c.hpp +#usr/include/boost/metaparse/one_char.hpp +#usr/include/boost/metaparse/one_char_except.hpp +#usr/include/boost/metaparse/one_char_except_c.hpp +#usr/include/boost/metaparse/one_of.hpp +#usr/include/boost/metaparse/one_of_c.hpp +#usr/include/boost/metaparse/optional.hpp +#usr/include/boost/metaparse/range.hpp +#usr/include/boost/metaparse/range_c.hpp +#usr/include/boost/metaparse/reject.hpp +#usr/include/boost/metaparse/repeated.hpp +#usr/include/boost/metaparse/repeated1.hpp +#usr/include/boost/metaparse/repeated_one_of.hpp +#usr/include/boost/metaparse/repeated_one_of1.hpp +#usr/include/boost/metaparse/repeated_reject_incomplete.hpp +#usr/include/boost/metaparse/repeated_reject_incomplete1.hpp +#usr/include/boost/metaparse/return_.hpp +#usr/include/boost/metaparse/sequence.hpp +#usr/include/boost/metaparse/sequence_apply.hpp +#usr/include/boost/metaparse/source_position.hpp +#usr/include/boost/metaparse/source_position_tag.hpp +#usr/include/boost/metaparse/space.hpp +#usr/include/boost/metaparse/spaces.hpp +#usr/include/boost/metaparse/start.hpp +#usr/include/boost/metaparse/string.hpp +#usr/include/boost/metaparse/string_tag.hpp +#usr/include/boost/metaparse/token.hpp +#usr/include/boost/metaparse/transform.hpp +#usr/include/boost/metaparse/transform_error.hpp +#usr/include/boost/metaparse/transform_error_message.hpp +#usr/include/boost/metaparse/unless_error.hpp +#usr/include/boost/metaparse/util +#usr/include/boost/metaparse/util/digit_to_int.hpp +#usr/include/boost/metaparse/util/digit_to_int_c.hpp +#usr/include/boost/metaparse/util/in_range.hpp +#usr/include/boost/metaparse/util/in_range_c.hpp +#usr/include/boost/metaparse/util/int_to_digit.hpp +#usr/include/boost/metaparse/util/int_to_digit_c.hpp +#usr/include/boost/metaparse/util/is_digit.hpp +#usr/include/boost/metaparse/util/is_lcase_letter.hpp +#usr/include/boost/metaparse/util/is_letter.hpp +#usr/include/boost/metaparse/util/is_ucase_letter.hpp +#usr/include/boost/metaparse/util/is_whitespace.hpp +#usr/include/boost/metaparse/util/is_whitespace_c.hpp +#usr/include/boost/metaparse/v1 +#usr/include/boost/metaparse/v1/accept.hpp +#usr/include/boost/metaparse/v1/accept_tag.hpp +#usr/include/boost/metaparse/v1/accept_when.hpp +#usr/include/boost/metaparse/v1/alphanum.hpp +#usr/include/boost/metaparse/v1/always.hpp +#usr/include/boost/metaparse/v1/always_c.hpp +#usr/include/boost/metaparse/v1/build_parser.hpp +#usr/include/boost/metaparse/v1/change_error_message.hpp +#usr/include/boost/metaparse/v1/debug_parsing_error.hpp +#usr/include/boost/metaparse/v1/define_error.hpp +#usr/include/boost/metaparse/v1/digit.hpp +#usr/include/boost/metaparse/v1/digit_val.hpp +#usr/include/boost/metaparse/v1/empty.hpp +#usr/include/boost/metaparse/v1/entire_input.hpp +#usr/include/boost/metaparse/v1/error +#usr/include/boost/metaparse/v1/error/digit_expected.hpp +#usr/include/boost/metaparse/v1/error/end_of_input_expected.hpp +#usr/include/boost/metaparse/v1/error/expected_to_fail.hpp +#usr/include/boost/metaparse/v1/error/index_out_of_range.hpp +#usr/include/boost/metaparse/v1/error/letter_expected.hpp +#usr/include/boost/metaparse/v1/error/literal_expected.hpp +#usr/include/boost/metaparse/v1/error/none_of_the_expected_cases_found.hpp +#usr/include/boost/metaparse/v1/error/unexpected_character.hpp +#usr/include/boost/metaparse/v1/error/unexpected_end_of_input.hpp +#usr/include/boost/metaparse/v1/error/unpaired.hpp +#usr/include/boost/metaparse/v1/error/whitespace_expected.hpp +#usr/include/boost/metaparse/v1/except.hpp +#usr/include/boost/metaparse/v1/fail.hpp +#usr/include/boost/metaparse/v1/fail_at_first_char_expected.hpp +#usr/include/boost/metaparse/v1/fail_tag.hpp +#usr/include/boost/metaparse/v1/first_of.hpp +#usr/include/boost/metaparse/v1/foldl.hpp +#usr/include/boost/metaparse/v1/foldl1.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/foldl_reject_incomplete_start_with_parser.hpp +#usr/include/boost/metaparse/v1/foldl_start_with_parser.hpp +#usr/include/boost/metaparse/v1/foldr.hpp +#usr/include/boost/metaparse/v1/foldr1.hpp +#usr/include/boost/metaparse/v1/foldr_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/foldr_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/foldr_start_with_parser.hpp +#usr/include/boost/metaparse/v1/fwd +#usr/include/boost/metaparse/v1/fwd/accept.hpp +#usr/include/boost/metaparse/v1/fwd/build_parser.hpp +#usr/include/boost/metaparse/v1/fwd/get_col.hpp +#usr/include/boost/metaparse/v1/fwd/get_line.hpp +#usr/include/boost/metaparse/v1/fwd/get_message.hpp +#usr/include/boost/metaparse/v1/fwd/get_position.hpp +#usr/include/boost/metaparse/v1/fwd/get_prev_char.hpp +#usr/include/boost/metaparse/v1/fwd/get_remaining.hpp +#usr/include/boost/metaparse/v1/fwd/get_result.hpp +#usr/include/boost/metaparse/v1/fwd/next_char.hpp +#usr/include/boost/metaparse/v1/fwd/next_line.hpp +#usr/include/boost/metaparse/v1/fwd/reject.hpp +#usr/include/boost/metaparse/v1/fwd/source_position.hpp +#usr/include/boost/metaparse/v1/fwd/string.hpp +#usr/include/boost/metaparse/v1/get_col.hpp +#usr/include/boost/metaparse/v1/get_line.hpp +#usr/include/boost/metaparse/v1/get_message.hpp +#usr/include/boost/metaparse/v1/get_position.hpp +#usr/include/boost/metaparse/v1/get_prev_char.hpp +#usr/include/boost/metaparse/v1/get_remaining.hpp +#usr/include/boost/metaparse/v1/get_result.hpp +#usr/include/boost/metaparse/v1/grammar.hpp +#usr/include/boost/metaparse/v1/if_.hpp +#usr/include/boost/metaparse/v1/impl +#usr/include/boost/metaparse/v1/impl/apply_parser.hpp +#usr/include/boost/metaparse/v1/impl/assert_string_length.hpp +#usr/include/boost/metaparse/v1/impl/at_c.hpp +#usr/include/boost/metaparse/v1/impl/back_inserter.hpp +#usr/include/boost/metaparse/v1/impl/concat.hpp +#usr/include/boost/metaparse/v1/impl/empty_string.hpp +#usr/include/boost/metaparse/v1/impl/front_inserter.hpp +#usr/include/boost/metaparse/v1/impl/fwd +#usr/include/boost/metaparse/v1/impl/fwd/iterate_impl.hpp +#usr/include/boost/metaparse/v1/impl/has_type.hpp +#usr/include/boost/metaparse/v1/impl/is_any.hpp +#usr/include/boost/metaparse/v1/impl/is_char_c.hpp +#usr/include/boost/metaparse/v1/impl/iterate_impl.hpp +#usr/include/boost/metaparse/v1/impl/iterate_impl_unchecked.hpp +#usr/include/boost/metaparse/v1/impl/later_result.hpp +#usr/include/boost/metaparse/v1/impl/next_digit.hpp +#usr/include/boost/metaparse/v1/impl/no_char.hpp +#usr/include/boost/metaparse/v1/impl/nth_of_c.hpp +#usr/include/boost/metaparse/v1/impl/nth_of_c_impl.hpp +#usr/include/boost/metaparse/v1/impl/one_char_except_not_used.hpp +#usr/include/boost/metaparse/v1/impl/one_of.hpp +#usr/include/boost/metaparse/v1/impl/one_of_fwd_op.hpp +#usr/include/boost/metaparse/v1/impl/pop_back.hpp +#usr/include/boost/metaparse/v1/impl/pop_front.hpp +#usr/include/boost/metaparse/v1/impl/push_back_c.hpp +#usr/include/boost/metaparse/v1/impl/push_front_c.hpp +#usr/include/boost/metaparse/v1/impl/remove_trailing_no_chars.hpp +#usr/include/boost/metaparse/v1/impl/returns.hpp +#usr/include/boost/metaparse/v1/impl/sequence.hpp +#usr/include/boost/metaparse/v1/impl/sequence_impl.hpp +#usr/include/boost/metaparse/v1/impl/size.hpp +#usr/include/boost/metaparse/v1/impl/skip_seq.hpp +#usr/include/boost/metaparse/v1/impl/split_at_c.hpp +#usr/include/boost/metaparse/v1/impl/string.hpp +#usr/include/boost/metaparse/v1/impl/string_at.hpp +#usr/include/boost/metaparse/v1/impl/string_iterator.hpp +#usr/include/boost/metaparse/v1/impl/string_iterator_tag.hpp +#usr/include/boost/metaparse/v1/impl/update_c.hpp +#usr/include/boost/metaparse/v1/impl/void_.hpp +#usr/include/boost/metaparse/v1/int_.hpp +#usr/include/boost/metaparse/v1/is_error.hpp +#usr/include/boost/metaparse/v1/iterate.hpp +#usr/include/boost/metaparse/v1/iterate_c.hpp +#usr/include/boost/metaparse/v1/keyword.hpp +#usr/include/boost/metaparse/v1/last_of.hpp +#usr/include/boost/metaparse/v1/letter.hpp +#usr/include/boost/metaparse/v1/lit.hpp +#usr/include/boost/metaparse/v1/lit_c.hpp +#usr/include/boost/metaparse/v1/look_ahead.hpp +#usr/include/boost/metaparse/v1/middle_of.hpp +#usr/include/boost/metaparse/v1/next_char.hpp +#usr/include/boost/metaparse/v1/next_line.hpp +#usr/include/boost/metaparse/v1/nth_of.hpp +#usr/include/boost/metaparse/v1/nth_of_c.hpp +#usr/include/boost/metaparse/v1/one_char.hpp +#usr/include/boost/metaparse/v1/one_char_except.hpp +#usr/include/boost/metaparse/v1/one_char_except_c.hpp +#usr/include/boost/metaparse/v1/one_of.hpp +#usr/include/boost/metaparse/v1/one_of_c.hpp +#usr/include/boost/metaparse/v1/optional.hpp +#usr/include/boost/metaparse/v1/range.hpp +#usr/include/boost/metaparse/v1/range_c.hpp +#usr/include/boost/metaparse/v1/reject.hpp +#usr/include/boost/metaparse/v1/repeated.hpp +#usr/include/boost/metaparse/v1/repeated1.hpp +#usr/include/boost/metaparse/v1/repeated_one_of.hpp +#usr/include/boost/metaparse/v1/repeated_one_of1.hpp +#usr/include/boost/metaparse/v1/repeated_reject_incomplete.hpp +#usr/include/boost/metaparse/v1/repeated_reject_incomplete1.hpp +#usr/include/boost/metaparse/v1/return_.hpp +#usr/include/boost/metaparse/v1/sequence.hpp +#usr/include/boost/metaparse/v1/sequence_apply.hpp +#usr/include/boost/metaparse/v1/source_position.hpp +#usr/include/boost/metaparse/v1/source_position_tag.hpp +#usr/include/boost/metaparse/v1/space.hpp +#usr/include/boost/metaparse/v1/spaces.hpp +#usr/include/boost/metaparse/v1/start.hpp +#usr/include/boost/metaparse/v1/string.hpp +#usr/include/boost/metaparse/v1/string_tag.hpp +#usr/include/boost/metaparse/v1/swap.hpp +#usr/include/boost/metaparse/v1/token.hpp +#usr/include/boost/metaparse/v1/transform.hpp +#usr/include/boost/metaparse/v1/transform_error.hpp +#usr/include/boost/metaparse/v1/transform_error_message.hpp +#usr/include/boost/metaparse/v1/unless_error.hpp +#usr/include/boost/metaparse/v1/util +#usr/include/boost/metaparse/v1/util/digit_to_int.hpp +#usr/include/boost/metaparse/v1/util/digit_to_int_c.hpp +#usr/include/boost/metaparse/v1/util/in_range.hpp +#usr/include/boost/metaparse/v1/util/in_range_c.hpp +#usr/include/boost/metaparse/v1/util/int_to_digit.hpp +#usr/include/boost/metaparse/v1/util/int_to_digit_c.hpp +#usr/include/boost/metaparse/v1/util/is_digit.hpp +#usr/include/boost/metaparse/v1/util/is_lcase_letter.hpp +#usr/include/boost/metaparse/v1/util/is_letter.hpp +#usr/include/boost/metaparse/v1/util/is_ucase_letter.hpp +#usr/include/boost/metaparse/v1/util/is_whitespace.hpp +#usr/include/boost/metaparse/v1/util/is_whitespace_c.hpp +#usr/include/boost/metaparse/version.hpp #usr/include/boost/move +#usr/include/boost/move/adl_move_swap.hpp +#usr/include/boost/move/algo +#usr/include/boost/move/algo/adaptive_merge.hpp +#usr/include/boost/move/algo/adaptive_sort.hpp +#usr/include/boost/move/algo/detail +#usr/include/boost/move/algo/detail/adaptive_sort_merge.hpp +#usr/include/boost/move/algo/detail/basic_op.hpp +#usr/include/boost/move/algo/detail/insertion_sort.hpp +#usr/include/boost/move/algo/detail/merge.hpp +#usr/include/boost/move/algo/detail/merge_sort.hpp +#usr/include/boost/move/algo/move.hpp #usr/include/boost/move/algorithm.hpp #usr/include/boost/move/core.hpp +#usr/include/boost/move/default_delete.hpp #usr/include/boost/move/detail #usr/include/boost/move/detail/config_begin.hpp #usr/include/boost/move/detail/config_end.hpp +#usr/include/boost/move/detail/destruct_n.hpp +#usr/include/boost/move/detail/fwd_macros.hpp +#usr/include/boost/move/detail/iterator_traits.hpp #usr/include/boost/move/detail/meta_utils.hpp +#usr/include/boost/move/detail/meta_utils_core.hpp #usr/include/boost/move/detail/move_helpers.hpp +#usr/include/boost/move/detail/placement_new.hpp +#usr/include/boost/move/detail/reverse_iterator.hpp +#usr/include/boost/move/detail/std_ns_begin.hpp +#usr/include/boost/move/detail/std_ns_end.hpp +#usr/include/boost/move/detail/type_traits.hpp +#usr/include/boost/move/detail/unique_ptr_meta_utils.hpp +#usr/include/boost/move/detail/workaround.hpp #usr/include/boost/move/iterator.hpp +#usr/include/boost/move/make_unique.hpp #usr/include/boost/move/move.hpp #usr/include/boost/move/traits.hpp +#usr/include/boost/move/unique_ptr.hpp #usr/include/boost/move/utility.hpp +#usr/include/boost/move/utility_core.hpp #usr/include/boost/mpi #usr/include/boost/mpi.hpp #usr/include/boost/mpi/allocator.hpp @@ -4707,9 +6678,11 @@ #usr/include/boost/mpi/collectives/all_to_all.hpp #usr/include/boost/mpi/collectives/broadcast.hpp #usr/include/boost/mpi/collectives/gather.hpp +#usr/include/boost/mpi/collectives/gatherv.hpp #usr/include/boost/mpi/collectives/reduce.hpp #usr/include/boost/mpi/collectives/scan.hpp #usr/include/boost/mpi/collectives/scatter.hpp +#usr/include/boost/mpi/collectives/scatterv.hpp #usr/include/boost/mpi/collectives_fwd.hpp #usr/include/boost/mpi/communicator.hpp #usr/include/boost/mpi/config.hpp @@ -4805,6 +6778,7 @@ #usr/include/boost/mpl/aux_/config/eti.hpp #usr/include/boost/mpl/aux_/config/forwarding.hpp #usr/include/boost/mpl/aux_/config/gcc.hpp +#usr/include/boost/mpl/aux_/config/gpu.hpp #usr/include/boost/mpl/aux_/config/has_apply.hpp #usr/include/boost/mpl/aux_/config/has_xxx.hpp #usr/include/boost/mpl/aux_/config/integral.hpp @@ -5610,6 +7584,7 @@ #usr/include/boost/mpl/map/aux_/has_key_impl.hpp #usr/include/boost/mpl/map/aux_/include_preprocessed.hpp #usr/include/boost/mpl/map/aux_/insert_impl.hpp +#usr/include/boost/mpl/map/aux_/insert_range_impl.hpp #usr/include/boost/mpl/map/aux_/item.hpp #usr/include/boost/mpl/map/aux_/iterator.hpp #usr/include/boost/mpl/map/aux_/key_type_impl.hpp @@ -5712,6 +7687,7 @@ #usr/include/boost/mpl/set/aux_/has_key_impl.hpp #usr/include/boost/mpl/set/aux_/include_preprocessed.hpp #usr/include/boost/mpl/set/aux_/insert_impl.hpp +#usr/include/boost/mpl/set/aux_/insert_range_impl.hpp #usr/include/boost/mpl/set/aux_/item.hpp #usr/include/boost/mpl/set/aux_/iterator.hpp #usr/include/boost/mpl/set/aux_/key_type_impl.hpp @@ -5929,6 +7905,7 @@ #usr/include/boost/multi_index/detail/base_type.hpp #usr/include/boost/multi_index/detail/bidir_node_iterator.hpp #usr/include/boost/multi_index/detail/bucket_array.hpp +#usr/include/boost/multi_index/detail/cons_stdtuple.hpp #usr/include/boost/multi_index/detail/converter.hpp #usr/include/boost/multi_index/detail/copy_map.hpp #usr/include/boost/multi_index/detail/do_not_copy_elements_tag.hpp @@ -5938,6 +7915,7 @@ #usr/include/boost/multi_index/detail/hash_index_iterator.hpp #usr/include/boost/multi_index/detail/hash_index_node.hpp #usr/include/boost/multi_index/detail/header_holder.hpp +#usr/include/boost/multi_index/detail/ignore_wstrict_aliasing.hpp #usr/include/boost/multi_index/detail/index_base.hpp #usr/include/boost/multi_index/detail/index_loader.hpp #usr/include/boost/multi_index/detail/index_matcher.hpp @@ -5945,21 +7923,25 @@ #usr/include/boost/multi_index/detail/index_saver.hpp #usr/include/boost/multi_index/detail/invariant_assert.hpp #usr/include/boost/multi_index/detail/is_index_list.hpp +#usr/include/boost/multi_index/detail/is_transparent.hpp #usr/include/boost/multi_index/detail/iter_adaptor.hpp #usr/include/boost/multi_index/detail/modify_key_adaptor.hpp -#usr/include/boost/multi_index/detail/msvc_index_specifier.hpp #usr/include/boost/multi_index/detail/no_duplicate_tags.hpp #usr/include/boost/multi_index/detail/node_type.hpp #usr/include/boost/multi_index/detail/ord_index_args.hpp +#usr/include/boost/multi_index/detail/ord_index_impl.hpp +#usr/include/boost/multi_index/detail/ord_index_impl_fwd.hpp #usr/include/boost/multi_index/detail/ord_index_node.hpp #usr/include/boost/multi_index/detail/ord_index_ops.hpp -#usr/include/boost/multi_index/detail/prevent_eti.hpp +#usr/include/boost/multi_index/detail/promotes_arg.hpp +#usr/include/boost/multi_index/detail/raw_ptr.hpp +#usr/include/boost/multi_index/detail/restore_wstrict_aliasing.hpp #usr/include/boost/multi_index/detail/rnd_index_loader.hpp #usr/include/boost/multi_index/detail/rnd_index_node.hpp #usr/include/boost/multi_index/detail/rnd_index_ops.hpp #usr/include/boost/multi_index/detail/rnd_index_ptr_array.hpp #usr/include/boost/multi_index/detail/rnd_node_iterator.hpp -#usr/include/boost/multi_index/detail/safe_ctr_proxy.hpp +#usr/include/boost/multi_index/detail/rnk_index_ops.hpp #usr/include/boost/multi_index/detail/safe_mode.hpp #usr/include/boost/multi_index/detail/scope_guard.hpp #usr/include/boost/multi_index/detail/seq_index_node.hpp @@ -5982,6 +7964,8 @@ #usr/include/boost/multi_index/ordered_index_fwd.hpp #usr/include/boost/multi_index/random_access_index.hpp #usr/include/boost/multi_index/random_access_index_fwd.hpp +#usr/include/boost/multi_index/ranked_index.hpp +#usr/include/boost/multi_index/ranked_index_fwd.hpp #usr/include/boost/multi_index/safe_mode_errors.hpp #usr/include/boost/multi_index/sequenced_index.hpp #usr/include/boost/multi_index/sequenced_index_fwd.hpp @@ -5991,6 +7975,10 @@ #usr/include/boost/multiprecision #usr/include/boost/multiprecision/concepts #usr/include/boost/multiprecision/concepts/mp_number_archetypes.hpp +#usr/include/boost/multiprecision/cpp_bin_float +#usr/include/boost/multiprecision/cpp_bin_float.hpp +#usr/include/boost/multiprecision/cpp_bin_float/io.hpp +#usr/include/boost/multiprecision/cpp_bin_float/transcendental.hpp #usr/include/boost/multiprecision/cpp_dec_float.hpp #usr/include/boost/multiprecision/cpp_int #usr/include/boost/multiprecision/cpp_int.hpp @@ -6000,6 +7988,7 @@ #usr/include/boost/multiprecision/cpp_int/comparison.hpp #usr/include/boost/multiprecision/cpp_int/cpp_int_config.hpp #usr/include/boost/multiprecision/cpp_int/divide.hpp +#usr/include/boost/multiprecision/cpp_int/import_export.hpp #usr/include/boost/multiprecision/cpp_int/limits.hpp #usr/include/boost/multiprecision/cpp_int/literals.hpp #usr/include/boost/multiprecision/cpp_int/misc.hpp @@ -6021,6 +8010,7 @@ #usr/include/boost/multiprecision/detail/functions/trig.hpp #usr/include/boost/multiprecision/detail/generic_interconvert.hpp #usr/include/boost/multiprecision/detail/integer_ops.hpp +#usr/include/boost/multiprecision/detail/min_max.hpp #usr/include/boost/multiprecision/detail/no_et_ops.hpp #usr/include/boost/multiprecision/detail/number_base.hpp #usr/include/boost/multiprecision/detail/number_compare.hpp @@ -6041,6 +8031,8 @@ #usr/include/boost/multiprecision/traits #usr/include/boost/multiprecision/traits/explicit_conversion.hpp #usr/include/boost/multiprecision/traits/extract_exponent_type.hpp +#usr/include/boost/multiprecision/traits/is_backend.hpp +#usr/include/boost/multiprecision/traits/is_byte_container.hpp #usr/include/boost/multiprecision/traits/is_restricted_conversion.hpp #usr/include/boost/next_prior.hpp #usr/include/boost/non_type.hpp @@ -6123,35 +8115,84 @@ #usr/include/boost/numeric/odeint #usr/include/boost/numeric/odeint.hpp #usr/include/boost/numeric/odeint/algebra +#usr/include/boost/numeric/odeint/algebra/algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/algebra/array_algebra.hpp #usr/include/boost/numeric/odeint/algebra/default_operations.hpp #usr/include/boost/numeric/odeint/algebra/detail +#usr/include/boost/numeric/odeint/algebra/detail/extract_value_type.hpp #usr/include/boost/numeric/odeint/algebra/detail/for_each.hpp #usr/include/boost/numeric/odeint/algebra/detail/macros.hpp -#usr/include/boost/numeric/odeint/algebra/detail/reduce.hpp +#usr/include/boost/numeric/odeint/algebra/detail/norm_inf.hpp #usr/include/boost/numeric/odeint/algebra/fusion_algebra.hpp +#usr/include/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp +#usr/include/boost/numeric/odeint/algebra/norm_result_type.hpp +#usr/include/boost/numeric/odeint/algebra/operations_dispatcher.hpp #usr/include/boost/numeric/odeint/algebra/range_algebra.hpp #usr/include/boost/numeric/odeint/algebra/vector_space_algebra.hpp #usr/include/boost/numeric/odeint/config.hpp #usr/include/boost/numeric/odeint/external +#usr/include/boost/numeric/odeint/external/blaze +#usr/include/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/blaze/blaze_resize.hpp +#usr/include/boost/numeric/odeint/external/compute +#usr/include/boost/numeric/odeint/external/compute/compute.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_algebra.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_operations.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/compute/compute_resize.hpp +#usr/include/boost/numeric/odeint/external/eigen +#usr/include/boost/numeric/odeint/external/eigen/eigen.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/eigen/eigen_resize.hpp #usr/include/boost/numeric/odeint/external/gsl #usr/include/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp #usr/include/boost/numeric/odeint/external/mkl #usr/include/boost/numeric/odeint/external/mkl/mkl_operations.hpp +#usr/include/boost/numeric/odeint/external/mpi +#usr/include/boost/numeric/odeint/external/mpi/mpi.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_state.hpp +#usr/include/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp #usr/include/boost/numeric/odeint/external/mtl4 #usr/include/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +#usr/include/boost/numeric/odeint/external/mtl4/mtl4.hpp +#usr/include/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +#usr/include/boost/numeric/odeint/external/nt2 +#usr/include/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_copy.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +#usr/include/boost/numeric/odeint/external/nt2/nt2_resize.hpp +#usr/include/boost/numeric/odeint/external/openmp +#usr/include/boost/numeric/odeint/external/openmp/openmp.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +#usr/include/boost/numeric/odeint/external/openmp/openmp_state.hpp #usr/include/boost/numeric/odeint/external/thrust +#usr/include/boost/numeric/odeint/external/thrust/thrust.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +#usr/include/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_operations.hpp +#usr/include/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp #usr/include/boost/numeric/odeint/external/thrust/thrust_resize.hpp #usr/include/boost/numeric/odeint/external/vexcl +#usr/include/boost/numeric/odeint/external/vexcl/vexcl.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp #usr/include/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +#usr/include/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp #usr/include/boost/numeric/odeint/external/viennacl #usr/include/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp #usr/include/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp #usr/include/boost/numeric/odeint/integrate +#usr/include/boost/numeric/odeint/integrate/check_adapter.hpp #usr/include/boost/numeric/odeint/integrate/detail +#usr/include/boost/numeric/odeint/integrate/detail/functors.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp #usr/include/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp @@ -6161,8 +8202,39 @@ #usr/include/boost/numeric/odeint/integrate/integrate_const.hpp #usr/include/boost/numeric/odeint/integrate/integrate_n_steps.hpp #usr/include/boost/numeric/odeint/integrate/integrate_times.hpp +#usr/include/boost/numeric/odeint/integrate/max_step_checker.hpp #usr/include/boost/numeric/odeint/integrate/null_observer.hpp #usr/include/boost/numeric/odeint/integrate/observer_collection.hpp +#usr/include/boost/numeric/odeint/iterator +#usr/include/boost/numeric/odeint/iterator/adaptive_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/const_step_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/detail +#usr/include/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +#usr/include/boost/numeric/odeint/iterator/impl +#usr/include/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +#usr/include/boost/numeric/odeint/iterator/integrate +#usr/include/boost/numeric/odeint/iterator/integrate/detail +#usr/include/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/null_observer.hpp +#usr/include/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +#usr/include/boost/numeric/odeint/iterator/n_step_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/times_iterator.hpp +#usr/include/boost/numeric/odeint/iterator/times_time_iterator.hpp #usr/include/boost/numeric/odeint/stepper #usr/include/boost/numeric/odeint/stepper/adams_bashforth.hpp #usr/include/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp @@ -6190,6 +8262,7 @@ #usr/include/boost/numeric/odeint/stepper/euler.hpp #usr/include/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp #usr/include/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +#usr/include/boost/numeric/odeint/stepper/extrapolation_stepper.hpp #usr/include/boost/numeric/odeint/stepper/generation #usr/include/boost/numeric/odeint/stepper/generation.hpp #usr/include/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp @@ -6216,6 +8289,7 @@ #usr/include/boost/numeric/odeint/stepper/symplectic_euler.hpp #usr/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp #usr/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +#usr/include/boost/numeric/odeint/stepper/velocity_verlet.hpp #usr/include/boost/numeric/odeint/util #usr/include/boost/numeric/odeint/util/bind.hpp #usr/include/boost/numeric/odeint/util/copy.hpp @@ -6224,11 +8298,17 @@ #usr/include/boost/numeric/odeint/util/detail/less_with_sign.hpp #usr/include/boost/numeric/odeint/util/is_pair.hpp #usr/include/boost/numeric/odeint/util/is_resizeable.hpp +#usr/include/boost/numeric/odeint/util/multi_array_adaption.hpp +#usr/include/boost/numeric/odeint/util/n_ary_helper.hpp +#usr/include/boost/numeric/odeint/util/odeint_error.hpp #usr/include/boost/numeric/odeint/util/resize.hpp #usr/include/boost/numeric/odeint/util/resizer.hpp #usr/include/boost/numeric/odeint/util/same_instance.hpp #usr/include/boost/numeric/odeint/util/same_size.hpp +#usr/include/boost/numeric/odeint/util/split.hpp +#usr/include/boost/numeric/odeint/util/split_adaptor.hpp #usr/include/boost/numeric/odeint/util/state_wrapper.hpp +#usr/include/boost/numeric/odeint/util/stepper_traits.hpp #usr/include/boost/numeric/odeint/util/ublas_wrapper.hpp #usr/include/boost/numeric/odeint/util/unit_helper.hpp #usr/include/boost/numeric/odeint/util/unwrap_reference.hpp @@ -6263,6 +8343,7 @@ #usr/include/boost/numeric/ublas/matrix_expression.hpp #usr/include/boost/numeric/ublas/matrix_proxy.hpp #usr/include/boost/numeric/ublas/matrix_sparse.hpp +#usr/include/boost/numeric/ublas/matrix_vector.hpp #usr/include/boost/numeric/ublas/operation #usr/include/boost/numeric/ublas/operation.hpp #usr/include/boost/numeric/ublas/operation/begin.hpp @@ -6290,8 +8371,18 @@ #usr/include/boost/numeric/ublas/vector_proxy.hpp #usr/include/boost/numeric/ublas/vector_sparse.hpp #usr/include/boost/operators.hpp +#usr/include/boost/operators_v1.hpp #usr/include/boost/optional #usr/include/boost/optional.hpp +#usr/include/boost/optional/bad_optional_access.hpp +#usr/include/boost/optional/detail +#usr/include/boost/optional/detail/old_optional_implementation.hpp +#usr/include/boost/optional/detail/optional_aligned_storage.hpp +#usr/include/boost/optional/detail/optional_config.hpp +#usr/include/boost/optional/detail/optional_factory_support.hpp +#usr/include/boost/optional/detail/optional_reference_spec.hpp +#usr/include/boost/optional/detail/optional_relops.hpp +#usr/include/boost/optional/detail/optional_swap.hpp #usr/include/boost/optional/optional.hpp #usr/include/boost/optional/optional_fwd.hpp #usr/include/boost/optional/optional_io.hpp @@ -6333,7 +8424,6 @@ #usr/include/boost/pending #usr/include/boost/pending/bucket_sorter.hpp #usr/include/boost/pending/container_traits.hpp -#usr/include/boost/pending/cstddef.hpp #usr/include/boost/pending/detail #usr/include/boost/pending/detail/disjoint_sets.hpp #usr/include/boost/pending/detail/int_iterator.hpp @@ -6363,41 +8453,45 @@ #usr/include/boost/phoenix/bind/bind_member_function.hpp #usr/include/boost/phoenix/bind/bind_member_variable.hpp #usr/include/boost/phoenix/bind/detail -#usr/include/boost/phoenix/bind/detail/function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03 +#usr/include/boost/phoenix/bind/detail/cpp03/bind_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/bind_function_object.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/bind_member_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp +#usr/include/boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp #usr/include/boost/phoenix/bind/detail/member_variable.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_10.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_20.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_30.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_40.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/function_ptr_50.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_10.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_20.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_30.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_40.hpp -#usr/include/boost/phoenix/bind/detail/preprocessed/member_function_ptr_50.hpp -#usr/include/boost/phoenix/bind/preprocessed -#usr/include/boost/phoenix/bind/preprocessed/bind_function.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_50.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_function_object_50.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_10.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_20.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_30.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_40.hpp -#usr/include/boost/phoenix/bind/preprocessed/bind_member_function_50.hpp +#usr/include/boost/phoenix/config.hpp #usr/include/boost/phoenix/core #usr/include/boost/phoenix/core.hpp #usr/include/boost/phoenix/core/actor.hpp @@ -6405,85 +8499,99 @@ #usr/include/boost/phoenix/core/arity.hpp #usr/include/boost/phoenix/core/as_actor.hpp #usr/include/boost/phoenix/core/call.hpp +#usr/include/boost/phoenix/core/debug.hpp #usr/include/boost/phoenix/core/detail -#usr/include/boost/phoenix/core/detail/actor_operator.hpp -#usr/include/boost/phoenix/core/detail/actor_result_of.hpp #usr/include/boost/phoenix/core/detail/argument.hpp -#usr/include/boost/phoenix/core/detail/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03 +#usr/include/boost/phoenix/core/detail/cpp03/actor_operator.hpp +#usr/include/boost/phoenix/core/detail/cpp03/actor_result_of.hpp +#usr/include/boost/phoenix/core/detail/cpp03/assign.hpp +#usr/include/boost/phoenix/core/detail/cpp03/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03/expression.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_equal.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_eval.hpp +#usr/include/boost/phoenix/core/detail/cpp03/function_eval_expr.hpp +#usr/include/boost/phoenix/core/detail/cpp03/phx2_result.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_operator_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_no_predefined_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/argument_predefined_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/assign_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/call_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/expression_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_equal_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/function_eval_expr_50.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_10.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_20.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_30.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_40.hpp +#usr/include/boost/phoenix/core/detail/cpp03/preprocessed/phx2_result_50.hpp #usr/include/boost/phoenix/core/detail/expression.hpp #usr/include/boost/phoenix/core/detail/function_eval.hpp +#usr/include/boost/phoenix/core/detail/index_sequence.hpp #usr/include/boost/phoenix/core/detail/phx2_result.hpp -#usr/include/boost/phoenix/core/detail/preprocessed -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/call_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/function_eval_50.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_10.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_20.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_30.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_40.hpp -#usr/include/boost/phoenix/core/detail/preprocessed/phx2_result_50.hpp #usr/include/boost/phoenix/core/domain.hpp #usr/include/boost/phoenix/core/environment.hpp #usr/include/boost/phoenix/core/expression.hpp #usr/include/boost/phoenix/core/function_equal.hpp #usr/include/boost/phoenix/core/is_actor.hpp #usr/include/boost/phoenix/core/is_nullary.hpp +#usr/include/boost/phoenix/core/is_value.hpp #usr/include/boost/phoenix/core/limits.hpp #usr/include/boost/phoenix/core/meta_grammar.hpp #usr/include/boost/phoenix/core/nothing.hpp -#usr/include/boost/phoenix/core/preprocessed -#usr/include/boost/phoenix/core/preprocessed/actor.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_10.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_20.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_30.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_40.hpp -#usr/include/boost/phoenix/core/preprocessed/actor_50.hpp -#usr/include/boost/phoenix/core/preprocessed/argument.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_20.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_30.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_40.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_no_predefined_50.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_10.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_20.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_30.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_40.hpp -#usr/include/boost/phoenix/core/preprocessed/argument_predefined_50.hpp -#usr/include/boost/phoenix/core/preprocessed/expression.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_10.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_20.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_30.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_40.hpp -#usr/include/boost/phoenix/core/preprocessed/expression_50.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_10.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_20.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_30.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_40.hpp -#usr/include/boost/phoenix/core/preprocessed/function_equal_50.hpp #usr/include/boost/phoenix/core/reference.hpp #usr/include/boost/phoenix/core/terminal.hpp #usr/include/boost/phoenix/core/terminal_fwd.hpp @@ -6495,22 +8603,22 @@ #usr/include/boost/phoenix/function/adapt_callable.hpp #usr/include/boost/phoenix/function/adapt_function.hpp #usr/include/boost/phoenix/function/detail -#usr/include/boost/phoenix/function/detail/function_operator.hpp -#usr/include/boost/phoenix/function/detail/function_result_of.hpp -#usr/include/boost/phoenix/function/detail/preprocessed -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_10.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_20.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_30.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_40.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_operator_50.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_10.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_20.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_30.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_40.hpp -#usr/include/boost/phoenix/function/detail/preprocessed/function_result_of_50.hpp +#usr/include/boost/phoenix/function/detail/cpp03 +#usr/include/boost/phoenix/function/detail/cpp03/function_operator.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp +#usr/include/boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp #usr/include/boost/phoenix/function/function.hpp +#usr/include/boost/phoenix/function/lazy_list.hpp +#usr/include/boost/phoenix/function/lazy_operator.hpp +#usr/include/boost/phoenix/function/lazy_prelude.hpp +#usr/include/boost/phoenix/function/lazy_reuse.hpp +#usr/include/boost/phoenix/function/lazy_signature.hpp +#usr/include/boost/phoenix/function/lazy_smart.hpp #usr/include/boost/phoenix/fusion #usr/include/boost/phoenix/fusion.hpp #usr/include/boost/phoenix/fusion/at.hpp @@ -6520,35 +8628,50 @@ #usr/include/boost/phoenix/object/construct.hpp #usr/include/boost/phoenix/object/delete.hpp #usr/include/boost/phoenix/object/detail -#usr/include/boost/phoenix/object/detail/construct.hpp -#usr/include/boost/phoenix/object/detail/construct_eval.hpp -#usr/include/boost/phoenix/object/detail/new.hpp -#usr/include/boost/phoenix/object/detail/new_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed -#usr/include/boost/phoenix/object/detail/preprocessed/construct.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_50.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp -#usr/include/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03 +#usr/include/boost/phoenix/object/detail/cpp03/construct.hpp +#usr/include/boost/phoenix/object/detail/cpp03/construct_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/construct_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/new_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/construct_expr_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_10.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_20.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_30.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_40.hpp +#usr/include/boost/phoenix/object/detail/cpp03/preprocessed/new_expr_50.hpp #usr/include/boost/phoenix/object/detail/target.hpp #usr/include/boost/phoenix/object/dynamic_cast.hpp #usr/include/boost/phoenix/object/new.hpp @@ -6560,61 +8683,65 @@ #usr/include/boost/phoenix/operator/bitwise.hpp #usr/include/boost/phoenix/operator/comparison.hpp #usr/include/boost/phoenix/operator/detail +#usr/include/boost/phoenix/operator/detail/cpp03 +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_expr.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_expr_50.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp +#usr/include/boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp #usr/include/boost/phoenix/operator/detail/define_operator.hpp -#usr/include/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp -#usr/include/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_10.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_20.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_30.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_40.hpp -#usr/include/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_50.hpp #usr/include/boost/phoenix/operator/detail/undef_operator.hpp #usr/include/boost/phoenix/operator/if_else.hpp #usr/include/boost/phoenix/operator/io.hpp #usr/include/boost/phoenix/operator/logical.hpp #usr/include/boost/phoenix/operator/member.hpp -#usr/include/boost/phoenix/operator/preprocessed -#usr/include/boost/phoenix/operator/preprocessed/member.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_10.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_20.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_30.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_40.hpp -#usr/include/boost/phoenix/operator/preprocessed/member_50.hpp #usr/include/boost/phoenix/operator/self.hpp #usr/include/boost/phoenix/phoenix.hpp #usr/include/boost/phoenix/scope #usr/include/boost/phoenix/scope.hpp #usr/include/boost/phoenix/scope/detail -#usr/include/boost/phoenix/scope/detail/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03 +#usr/include/boost/phoenix/scope/detail/cpp03/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/lambda.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/local_gen.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_10.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_20.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_30.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_40.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/dynamic_50.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_10.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_20.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_30.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_40.hpp +#usr/include/boost/phoenix/scope/detail/cpp03/preprocessed/lambda_50.hpp #usr/include/boost/phoenix/scope/detail/local_gen.hpp #usr/include/boost/phoenix/scope/detail/local_variable.hpp -#usr/include/boost/phoenix/scope/detail/make_locals.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp -#usr/include/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp #usr/include/boost/phoenix/scope/dynamic.hpp #usr/include/boost/phoenix/scope/lambda.hpp #usr/include/boost/phoenix/scope/let.hpp #usr/include/boost/phoenix/scope/local_variable.hpp -#usr/include/boost/phoenix/scope/preprocessed -#usr/include/boost/phoenix/scope/preprocessed/lambda.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_10.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_20.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_30.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_40.hpp -#usr/include/boost/phoenix/scope/preprocessed/lambda_50.hpp #usr/include/boost/phoenix/scope/scoped_environment.hpp #usr/include/boost/phoenix/scope/this.hpp #usr/include/boost/phoenix/statement @@ -6679,8 +8806,10 @@ #usr/include/boost/phoenix/stl/algorithm/detail/is_std_list.hpp #usr/include/boost/phoenix/stl/algorithm/detail/is_std_map.hpp #usr/include/boost/phoenix/stl/algorithm/detail/is_std_set.hpp +#usr/include/boost/phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp #usr/include/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp #usr/include/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp +#usr/include/boost/phoenix/stl/algorithm/detail/std_unordered_set_or_map_fwd.hpp #usr/include/boost/phoenix/stl/algorithm/iteration.hpp #usr/include/boost/phoenix/stl/algorithm/querying.hpp #usr/include/boost/phoenix/stl/algorithm/transformation.hpp @@ -6775,6 +8904,8 @@ #usr/include/boost/polygon/voronoi_builder.hpp #usr/include/boost/polygon/voronoi_diagram.hpp #usr/include/boost/polygon/voronoi_geometry_type.hpp +#usr/include/boost/polymorphic_cast.hpp +#usr/include/boost/polymorphic_pointer_cast.hpp #usr/include/boost/pool #usr/include/boost/pool/detail #usr/include/boost/pool/detail/guard.hpp @@ -6845,9 +8976,28 @@ #usr/include/boost/predef/detail #usr/include/boost/predef/detail/_cassert.h #usr/include/boost/predef/detail/_exception.h +#usr/include/boost/predef/detail/comp_detected.h #usr/include/boost/predef/detail/endian_compat.h #usr/include/boost/predef/detail/os_detected.h +#usr/include/boost/predef/detail/platform_detected.h #usr/include/boost/predef/detail/test.h +#usr/include/boost/predef/detail/test_def.h +#usr/include/boost/predef/hardware +#usr/include/boost/predef/hardware.h +#usr/include/boost/predef/hardware/simd +#usr/include/boost/predef/hardware/simd.h +#usr/include/boost/predef/hardware/simd/arm +#usr/include/boost/predef/hardware/simd/arm.h +#usr/include/boost/predef/hardware/simd/arm/versions.h +#usr/include/boost/predef/hardware/simd/ppc +#usr/include/boost/predef/hardware/simd/ppc.h +#usr/include/boost/predef/hardware/simd/ppc/versions.h +#usr/include/boost/predef/hardware/simd/x86 +#usr/include/boost/predef/hardware/simd/x86.h +#usr/include/boost/predef/hardware/simd/x86/versions.h +#usr/include/boost/predef/hardware/simd/x86_amd +#usr/include/boost/predef/hardware/simd/x86_amd.h +#usr/include/boost/predef/hardware/simd/x86_amd/versions.h #usr/include/boost/predef/language #usr/include/boost/predef/language.h #usr/include/boost/predef/language/objc.h @@ -6890,7 +9040,9 @@ #usr/include/boost/predef/os/bsd/net.h #usr/include/boost/predef/os/bsd/open.h #usr/include/boost/predef/os/cygwin.h +#usr/include/boost/predef/os/haiku.h #usr/include/boost/predef/os/hpux.h +#usr/include/boost/predef/os/ios.h #usr/include/boost/predef/os/irix.h #usr/include/boost/predef/os/linux.h #usr/include/boost/predef/os/macos.h @@ -6906,6 +9058,11 @@ #usr/include/boost/predef/platform #usr/include/boost/predef/platform.h #usr/include/boost/predef/platform/mingw.h +#usr/include/boost/predef/platform/windows_desktop.h +#usr/include/boost/predef/platform/windows_phone.h +#usr/include/boost/predef/platform/windows_runtime.h +#usr/include/boost/predef/platform/windows_store.h +#usr/include/boost/predef/version.h #usr/include/boost/predef/version_number.h #usr/include/boost/preprocessor #usr/include/boost/preprocessor.hpp @@ -6923,6 +9080,8 @@ #usr/include/boost/preprocessor/array #usr/include/boost/preprocessor/array.hpp #usr/include/boost/preprocessor/array/data.hpp +#usr/include/boost/preprocessor/array/detail +#usr/include/boost/preprocessor/array/detail/get_data.hpp #usr/include/boost/preprocessor/array/elem.hpp #usr/include/boost/preprocessor/array/enum.hpp #usr/include/boost/preprocessor/array/insert.hpp @@ -6996,6 +9155,8 @@ #usr/include/boost/preprocessor/facilities #usr/include/boost/preprocessor/facilities.hpp #usr/include/boost/preprocessor/facilities/apply.hpp +#usr/include/boost/preprocessor/facilities/detail +#usr/include/boost/preprocessor/facilities/detail/is_empty.hpp #usr/include/boost/preprocessor/facilities/empty.hpp #usr/include/boost/preprocessor/facilities/expand.hpp #usr/include/boost/preprocessor/facilities/identity.hpp @@ -7003,6 +9164,7 @@ #usr/include/boost/preprocessor/facilities/is_1.hpp #usr/include/boost/preprocessor/facilities/is_empty.hpp #usr/include/boost/preprocessor/facilities/is_empty_or_1.hpp +#usr/include/boost/preprocessor/facilities/is_empty_variadic.hpp #usr/include/boost/preprocessor/facilities/overload.hpp #usr/include/boost/preprocessor/for.hpp #usr/include/boost/preprocessor/identity.hpp @@ -7092,8 +9254,12 @@ #usr/include/boost/preprocessor/punctuation.hpp #usr/include/boost/preprocessor/punctuation/comma.hpp #usr/include/boost/preprocessor/punctuation/comma_if.hpp +#usr/include/boost/preprocessor/punctuation/detail +#usr/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +#usr/include/boost/preprocessor/punctuation/is_begin_parens.hpp #usr/include/boost/preprocessor/punctuation/paren.hpp #usr/include/boost/preprocessor/punctuation/paren_if.hpp +#usr/include/boost/preprocessor/punctuation/remove_parens.hpp #usr/include/boost/preprocessor/repeat.hpp #usr/include/boost/preprocessor/repeat_2nd.hpp #usr/include/boost/preprocessor/repeat_3rd.hpp @@ -7135,7 +9301,9 @@ #usr/include/boost/preprocessor/seq/cat.hpp #usr/include/boost/preprocessor/seq/detail #usr/include/boost/preprocessor/seq/detail/binary_transform.hpp +#usr/include/boost/preprocessor/seq/detail/is_empty.hpp #usr/include/boost/preprocessor/seq/detail/split.hpp +#usr/include/boost/preprocessor/seq/detail/to_list_msvc.hpp #usr/include/boost/preprocessor/seq/elem.hpp #usr/include/boost/preprocessor/seq/enum.hpp #usr/include/boost/preprocessor/seq/filter.hpp @@ -7161,6 +9329,7 @@ #usr/include/boost/preprocessor/seq/to_list.hpp #usr/include/boost/preprocessor/seq/to_tuple.hpp #usr/include/boost/preprocessor/seq/transform.hpp +#usr/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp #usr/include/boost/preprocessor/slot #usr/include/boost/preprocessor/slot.hpp #usr/include/boost/preprocessor/slot/counter.hpp @@ -7177,10 +9346,19 @@ #usr/include/boost/preprocessor/stringize.hpp #usr/include/boost/preprocessor/tuple #usr/include/boost/preprocessor/tuple.hpp +#usr/include/boost/preprocessor/tuple/detail +#usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp #usr/include/boost/preprocessor/tuple/eat.hpp #usr/include/boost/preprocessor/tuple/elem.hpp #usr/include/boost/preprocessor/tuple/enum.hpp +#usr/include/boost/preprocessor/tuple/insert.hpp +#usr/include/boost/preprocessor/tuple/pop_back.hpp +#usr/include/boost/preprocessor/tuple/pop_front.hpp +#usr/include/boost/preprocessor/tuple/push_back.hpp +#usr/include/boost/preprocessor/tuple/push_front.hpp #usr/include/boost/preprocessor/tuple/rem.hpp +#usr/include/boost/preprocessor/tuple/remove.hpp +#usr/include/boost/preprocessor/tuple/replace.hpp #usr/include/boost/preprocessor/tuple/reverse.hpp #usr/include/boost/preprocessor/tuple/size.hpp #usr/include/boost/preprocessor/tuple/to_array.hpp @@ -7188,6 +9366,8 @@ #usr/include/boost/preprocessor/tuple/to_seq.hpp #usr/include/boost/preprocessor/variadic #usr/include/boost/preprocessor/variadic.hpp +#usr/include/boost/preprocessor/variadic/detail +#usr/include/boost/preprocessor/variadic/detail/is_single_return.hpp #usr/include/boost/preprocessor/variadic/elem.hpp #usr/include/boost/preprocessor/variadic/size.hpp #usr/include/boost/preprocessor/variadic/to_array.hpp @@ -7196,6 +9376,127 @@ #usr/include/boost/preprocessor/variadic/to_tuple.hpp #usr/include/boost/preprocessor/while.hpp #usr/include/boost/preprocessor/wstringize.hpp +#usr/include/boost/process +#usr/include/boost/process.hpp +#usr/include/boost/process/args.hpp +#usr/include/boost/process/async.hpp +#usr/include/boost/process/async_pipe.hpp +#usr/include/boost/process/async_system.hpp +#usr/include/boost/process/child.hpp +#usr/include/boost/process/cmd.hpp +#usr/include/boost/process/detail +#usr/include/boost/process/detail/async_handler.hpp +#usr/include/boost/process/detail/basic_cmd.hpp +#usr/include/boost/process/detail/child_decl.hpp +#usr/include/boost/process/detail/config.hpp +#usr/include/boost/process/detail/execute_impl.hpp +#usr/include/boost/process/detail/handler.hpp +#usr/include/boost/process/detail/handler_base.hpp +#usr/include/boost/process/detail/on_exit.hpp +#usr/include/boost/process/detail/posix +#usr/include/boost/process/detail/posix/asio_fwd.hpp +#usr/include/boost/process/detail/posix/async_handler.hpp +#usr/include/boost/process/detail/posix/async_in.hpp +#usr/include/boost/process/detail/posix/async_out.hpp +#usr/include/boost/process/detail/posix/async_pipe.hpp +#usr/include/boost/process/detail/posix/basic_cmd.hpp +#usr/include/boost/process/detail/posix/basic_pipe.hpp +#usr/include/boost/process/detail/posix/child_handle.hpp +#usr/include/boost/process/detail/posix/close_in.hpp +#usr/include/boost/process/detail/posix/close_out.hpp +#usr/include/boost/process/detail/posix/cmd.hpp +#usr/include/boost/process/detail/posix/compare_handles.hpp +#usr/include/boost/process/detail/posix/env_init.hpp +#usr/include/boost/process/detail/posix/environment.hpp +#usr/include/boost/process/detail/posix/exe.hpp +#usr/include/boost/process/detail/posix/executor.hpp +#usr/include/boost/process/detail/posix/fd.hpp +#usr/include/boost/process/detail/posix/file_descriptor.hpp +#usr/include/boost/process/detail/posix/file_in.hpp +#usr/include/boost/process/detail/posix/file_out.hpp +#usr/include/boost/process/detail/posix/group_handle.hpp +#usr/include/boost/process/detail/posix/group_ref.hpp +#usr/include/boost/process/detail/posix/handler.hpp +#usr/include/boost/process/detail/posix/io_service_ref.hpp +#usr/include/boost/process/detail/posix/is_running.hpp +#usr/include/boost/process/detail/posix/null_in.hpp +#usr/include/boost/process/detail/posix/null_out.hpp +#usr/include/boost/process/detail/posix/on_exit.hpp +#usr/include/boost/process/detail/posix/pipe_in.hpp +#usr/include/boost/process/detail/posix/pipe_out.hpp +#usr/include/boost/process/detail/posix/search_path.hpp +#usr/include/boost/process/detail/posix/shell_path.hpp +#usr/include/boost/process/detail/posix/signal.hpp +#usr/include/boost/process/detail/posix/start_dir.hpp +#usr/include/boost/process/detail/posix/terminate.hpp +#usr/include/boost/process/detail/posix/use_vfork.hpp +#usr/include/boost/process/detail/posix/wait_for_exit.hpp +#usr/include/boost/process/detail/posix/wait_group.hpp +#usr/include/boost/process/detail/throw_on_error.hpp +#usr/include/boost/process/detail/traits +#usr/include/boost/process/detail/traits.hpp +#usr/include/boost/process/detail/traits/async.hpp +#usr/include/boost/process/detail/traits/cmd_or_exe.hpp +#usr/include/boost/process/detail/traits/decl.hpp +#usr/include/boost/process/detail/traits/env.hpp +#usr/include/boost/process/detail/traits/error.hpp +#usr/include/boost/process/detail/traits/group.hpp +#usr/include/boost/process/detail/traits/wchar_t.hpp +#usr/include/boost/process/detail/windows +#usr/include/boost/process/detail/windows/asio_fwd.hpp +#usr/include/boost/process/detail/windows/async_handler.hpp +#usr/include/boost/process/detail/windows/async_in.hpp +#usr/include/boost/process/detail/windows/async_out.hpp +#usr/include/boost/process/detail/windows/async_pipe.hpp +#usr/include/boost/process/detail/windows/basic_cmd.hpp +#usr/include/boost/process/detail/windows/basic_pipe.hpp +#usr/include/boost/process/detail/windows/child_handle.hpp +#usr/include/boost/process/detail/windows/close_in.hpp +#usr/include/boost/process/detail/windows/close_out.hpp +#usr/include/boost/process/detail/windows/cmd.hpp +#usr/include/boost/process/detail/windows/compare_handles.hpp +#usr/include/boost/process/detail/windows/env_init.hpp +#usr/include/boost/process/detail/windows/environment.hpp +#usr/include/boost/process/detail/windows/executor.hpp +#usr/include/boost/process/detail/windows/file_descriptor.hpp +#usr/include/boost/process/detail/windows/file_in.hpp +#usr/include/boost/process/detail/windows/file_out.hpp +#usr/include/boost/process/detail/windows/group_handle.hpp +#usr/include/boost/process/detail/windows/group_ref.hpp +#usr/include/boost/process/detail/windows/handler.hpp +#usr/include/boost/process/detail/windows/io_service_ref.hpp +#usr/include/boost/process/detail/windows/is_running.hpp +#usr/include/boost/process/detail/windows/job_workaround.hpp +#usr/include/boost/process/detail/windows/locale.hpp +#usr/include/boost/process/detail/windows/null_in.hpp +#usr/include/boost/process/detail/windows/null_out.hpp +#usr/include/boost/process/detail/windows/on_exit.hpp +#usr/include/boost/process/detail/windows/pipe_in.hpp +#usr/include/boost/process/detail/windows/pipe_out.hpp +#usr/include/boost/process/detail/windows/search_path.hpp +#usr/include/boost/process/detail/windows/shell_path.hpp +#usr/include/boost/process/detail/windows/show_window.hpp +#usr/include/boost/process/detail/windows/start_dir.hpp +#usr/include/boost/process/detail/windows/terminate.hpp +#usr/include/boost/process/detail/windows/wait_for_exit.hpp +#usr/include/boost/process/detail/windows/wait_group.hpp +#usr/include/boost/process/env.hpp +#usr/include/boost/process/environment.hpp +#usr/include/boost/process/error.hpp +#usr/include/boost/process/exception.hpp +#usr/include/boost/process/exe.hpp +#usr/include/boost/process/extend.hpp +#usr/include/boost/process/group.hpp +#usr/include/boost/process/io.hpp +#usr/include/boost/process/locale.hpp +#usr/include/boost/process/pipe.hpp +#usr/include/boost/process/posix.hpp +#usr/include/boost/process/search_path.hpp +#usr/include/boost/process/shell.hpp +#usr/include/boost/process/spawn.hpp +#usr/include/boost/process/start_dir.hpp +#usr/include/boost/process/system.hpp +#usr/include/boost/process/windows.hpp #usr/include/boost/program_options #usr/include/boost/program_options.hpp #usr/include/boost/program_options/cmdline.hpp @@ -7223,12 +9524,20 @@ #usr/include/boost/property_map/dynamic_property_map.hpp #usr/include/boost/property_map/function_property_map.hpp #usr/include/boost/property_map/parallel +#usr/include/boost/property_map/parallel/basic_reduce.hpp #usr/include/boost/property_map/parallel/caching_property_map.hpp +#usr/include/boost/property_map/parallel/detail +#usr/include/boost/property_map/parallel/detail/untracked_pair.hpp #usr/include/boost/property_map/parallel/distributed_property_map.hpp #usr/include/boost/property_map/parallel/global_index_map.hpp #usr/include/boost/property_map/parallel/impl #usr/include/boost/property_map/parallel/impl/distributed_property_map.ipp #usr/include/boost/property_map/parallel/local_property_map.hpp +#usr/include/boost/property_map/parallel/parallel_property_maps.hpp +#usr/include/boost/property_map/parallel/process_group.hpp +#usr/include/boost/property_map/parallel/simple_trigger.hpp +#usr/include/boost/property_map/parallel/unsafe_serialize.hpp +#usr/include/boost/property_map/parallel/vector_property_map.hpp #usr/include/boost/property_map/property_map.hpp #usr/include/boost/property_map/property_map_iterator.hpp #usr/include/boost/property_map/shared_array_property_map.hpp @@ -7243,9 +9552,6 @@ #usr/include/boost/property_tree/detail/info_parser_utils.hpp #usr/include/boost/property_tree/detail/info_parser_write.hpp #usr/include/boost/property_tree/detail/info_parser_writer_settings.hpp -#usr/include/boost/property_tree/detail/json_parser_error.hpp -#usr/include/boost/property_tree/detail/json_parser_read.hpp -#usr/include/boost/property_tree/detail/json_parser_write.hpp #usr/include/boost/property_tree/detail/ptree_implementation.hpp #usr/include/boost/property_tree/detail/ptree_utils.hpp #usr/include/boost/property_tree/detail/rapidxml.hpp @@ -7259,7 +9565,16 @@ #usr/include/boost/property_tree/id_translator.hpp #usr/include/boost/property_tree/info_parser.hpp #usr/include/boost/property_tree/ini_parser.hpp +#usr/include/boost/property_tree/json_parser #usr/include/boost/property_tree/json_parser.hpp +#usr/include/boost/property_tree/json_parser/detail +#usr/include/boost/property_tree/json_parser/detail/narrow_encoding.hpp +#usr/include/boost/property_tree/json_parser/detail/parser.hpp +#usr/include/boost/property_tree/json_parser/detail/read.hpp +#usr/include/boost/property_tree/json_parser/detail/standard_callbacks.hpp +#usr/include/boost/property_tree/json_parser/detail/wide_encoding.hpp +#usr/include/boost/property_tree/json_parser/detail/write.hpp +#usr/include/boost/property_tree/json_parser/error.hpp #usr/include/boost/property_tree/ptree.hpp #usr/include/boost/property_tree/ptree_fwd.hpp #usr/include/boost/property_tree/ptree_serialization.hpp @@ -7576,7 +9891,6 @@ #usr/include/boost/python/detail/translate_exception.hpp #usr/include/boost/python/detail/type_list.hpp #usr/include/boost/python/detail/type_list_impl.hpp -#usr/include/boost/python/detail/type_list_impl_no_pts.hpp #usr/include/boost/python/detail/unwind_type.hpp #usr/include/boost/python/detail/unwrap_type_id.hpp #usr/include/boost/python/detail/unwrap_wrapper.hpp @@ -7611,6 +9925,17 @@ #usr/include/boost/python/module.hpp #usr/include/boost/python/module_init.hpp #usr/include/boost/python/numeric.hpp +#usr/include/boost/python/numpy +#usr/include/boost/python/numpy.hpp +#usr/include/boost/python/numpy/config.hpp +#usr/include/boost/python/numpy/dtype.hpp +#usr/include/boost/python/numpy/internal.hpp +#usr/include/boost/python/numpy/invoke_matching.hpp +#usr/include/boost/python/numpy/matrix.hpp +#usr/include/boost/python/numpy/ndarray.hpp +#usr/include/boost/python/numpy/numpy_object_mgr_traits.hpp +#usr/include/boost/python/numpy/scalars.hpp +#usr/include/boost/python/numpy/ufunc.hpp #usr/include/boost/python/object #usr/include/boost/python/object.hpp #usr/include/boost/python/object/add_to_namespace.hpp @@ -7691,10 +10016,83 @@ #usr/include/boost/python/type_id.hpp #usr/include/boost/python/with_custodian_and_ward.hpp #usr/include/boost/python/wrapper.hpp +#usr/include/boost/qvm +#usr/include/boost/qvm/all.hpp +#usr/include/boost/qvm/assert.hpp +#usr/include/boost/qvm/deduce_mat.hpp +#usr/include/boost/qvm/deduce_quat.hpp +#usr/include/boost/qvm/deduce_scalar.hpp +#usr/include/boost/qvm/deduce_vec.hpp +#usr/include/boost/qvm/detail +#usr/include/boost/qvm/detail/cofactor_impl.hpp +#usr/include/boost/qvm/detail/determinant_impl.hpp +#usr/include/boost/qvm/detail/remove_const.hpp +#usr/include/boost/qvm/detail/swizzle_traits.hpp +#usr/include/boost/qvm/detail/transp_impl.hpp +#usr/include/boost/qvm/enable_if.hpp +#usr/include/boost/qvm/error.hpp +#usr/include/boost/qvm/gen +#usr/include/boost/qvm/gen/mat_operations2.hpp +#usr/include/boost/qvm/gen/mat_operations3.hpp +#usr/include/boost/qvm/gen/mat_operations4.hpp +#usr/include/boost/qvm/gen/swizzle2.hpp +#usr/include/boost/qvm/gen/swizzle3.hpp +#usr/include/boost/qvm/gen/swizzle4.hpp +#usr/include/boost/qvm/gen/vec_mat_operations2.hpp +#usr/include/boost/qvm/gen/vec_mat_operations3.hpp +#usr/include/boost/qvm/gen/vec_mat_operations4.hpp +#usr/include/boost/qvm/gen/vec_operations2.hpp +#usr/include/boost/qvm/gen/vec_operations3.hpp +#usr/include/boost/qvm/gen/vec_operations4.hpp +#usr/include/boost/qvm/inline.hpp +#usr/include/boost/qvm/map.hpp +#usr/include/boost/qvm/map_mat_mat.hpp +#usr/include/boost/qvm/map_mat_vec.hpp +#usr/include/boost/qvm/map_vec_mat.hpp +#usr/include/boost/qvm/mat.hpp +#usr/include/boost/qvm/mat_access.hpp +#usr/include/boost/qvm/mat_operations.hpp +#usr/include/boost/qvm/mat_operations2.hpp +#usr/include/boost/qvm/mat_operations3.hpp +#usr/include/boost/qvm/mat_operations4.hpp +#usr/include/boost/qvm/mat_traits.hpp +#usr/include/boost/qvm/mat_traits_array.hpp +#usr/include/boost/qvm/mat_traits_defaults.hpp +#usr/include/boost/qvm/math.hpp +#usr/include/boost/qvm/operations.hpp +#usr/include/boost/qvm/quat.hpp +#usr/include/boost/qvm/quat_access.hpp +#usr/include/boost/qvm/quat_operations.hpp +#usr/include/boost/qvm/quat_traits.hpp +#usr/include/boost/qvm/quat_traits_array.hpp +#usr/include/boost/qvm/quat_traits_defaults.hpp +#usr/include/boost/qvm/quat_vec_operations.hpp +#usr/include/boost/qvm/scalar_traits.hpp +#usr/include/boost/qvm/static_assert.hpp +#usr/include/boost/qvm/swizzle.hpp +#usr/include/boost/qvm/swizzle2.hpp +#usr/include/boost/qvm/swizzle3.hpp +#usr/include/boost/qvm/swizzle4.hpp +#usr/include/boost/qvm/throw_exception.hpp +#usr/include/boost/qvm/to_string.hpp +#usr/include/boost/qvm/vec.hpp +#usr/include/boost/qvm/vec_access.hpp +#usr/include/boost/qvm/vec_mat_operations.hpp +#usr/include/boost/qvm/vec_mat_operations2.hpp +#usr/include/boost/qvm/vec_mat_operations3.hpp +#usr/include/boost/qvm/vec_mat_operations4.hpp +#usr/include/boost/qvm/vec_operations.hpp +#usr/include/boost/qvm/vec_operations2.hpp +#usr/include/boost/qvm/vec_operations3.hpp +#usr/include/boost/qvm/vec_operations4.hpp +#usr/include/boost/qvm/vec_traits.hpp +#usr/include/boost/qvm/vec_traits_array.hpp +#usr/include/boost/qvm/vec_traits_defaults.hpp #usr/include/boost/random #usr/include/boost/random.hpp #usr/include/boost/random/additive_combine.hpp #usr/include/boost/random/bernoulli_distribution.hpp +#usr/include/boost/random/beta_distribution.hpp #usr/include/boost/random/binomial_distribution.hpp #usr/include/boost/random/cauchy_distribution.hpp #usr/include/boost/random/chi_squared_distribution.hpp @@ -7706,10 +10104,12 @@ #usr/include/boost/random/detail/enable_warnings.hpp #usr/include/boost/random/detail/generator_bits.hpp #usr/include/boost/random/detail/generator_seed_seq.hpp +#usr/include/boost/random/detail/int_float_pair.hpp #usr/include/boost/random/detail/integer_log2.hpp #usr/include/boost/random/detail/iterator_mixin.hpp #usr/include/boost/random/detail/large_arithmetic.hpp #usr/include/boost/random/detail/operators.hpp +#usr/include/boost/random/detail/polynomial.hpp #usr/include/boost/random/detail/ptr_helper.hpp #usr/include/boost/random/detail/seed.hpp #usr/include/boost/random/detail/seed_impl.hpp @@ -7724,14 +10124,17 @@ #usr/include/boost/random/gamma_distribution.hpp #usr/include/boost/random/generate_canonical.hpp #usr/include/boost/random/geometric_distribution.hpp +#usr/include/boost/random/hyperexponential_distribution.hpp #usr/include/boost/random/independent_bits.hpp #usr/include/boost/random/inversive_congruential.hpp #usr/include/boost/random/lagged_fibonacci.hpp +#usr/include/boost/random/laplace_distribution.hpp #usr/include/boost/random/linear_congruential.hpp #usr/include/boost/random/linear_feedback_shift.hpp #usr/include/boost/random/lognormal_distribution.hpp #usr/include/boost/random/mersenne_twister.hpp #usr/include/boost/random/negative_binomial_distribution.hpp +#usr/include/boost/random/non_central_chi_squared_distribution.hpp #usr/include/boost/random/normal_distribution.hpp #usr/include/boost/random/piecewise_constant_distribution.hpp #usr/include/boost/random/piecewise_linear_distribution.hpp @@ -7745,6 +10148,7 @@ #usr/include/boost/random/student_t_distribution.hpp #usr/include/boost/random/subtract_with_carry.hpp #usr/include/boost/random/taus88.hpp +#usr/include/boost/random/traits.hpp #usr/include/boost/random/triangle_distribution.hpp #usr/include/boost/random/uniform_01.hpp #usr/include/boost/random/uniform_int.hpp @@ -7764,6 +10168,7 @@ #usr/include/boost/range/adaptor/copied.hpp #usr/include/boost/range/adaptor/define_adaptor.hpp #usr/include/boost/range/adaptor/filtered.hpp +#usr/include/boost/range/adaptor/formatted.hpp #usr/include/boost/range/adaptor/indexed.hpp #usr/include/boost/range/adaptor/indirected.hpp #usr/include/boost/range/adaptor/map.hpp @@ -7864,31 +10269,32 @@ #usr/include/boost/range/detail/begin.hpp #usr/include/boost/range/detail/collection_traits.hpp #usr/include/boost/range/detail/collection_traits_detail.hpp +#usr/include/boost/range/detail/combine_cxx03.hpp +#usr/include/boost/range/detail/combine_cxx11.hpp +#usr/include/boost/range/detail/combine_no_rvalue.hpp +#usr/include/boost/range/detail/combine_rvalue.hpp #usr/include/boost/range/detail/common.hpp -#usr/include/boost/range/detail/const_iterator.hpp +#usr/include/boost/range/detail/default_constructible_unary_fn.hpp #usr/include/boost/range/detail/demote_iterator_traversal_tag.hpp #usr/include/boost/range/detail/detail_str.hpp #usr/include/boost/range/detail/difference_type.hpp #usr/include/boost/range/detail/empty.hpp #usr/include/boost/range/detail/end.hpp #usr/include/boost/range/detail/extract_optional_type.hpp +#usr/include/boost/range/detail/has_member_size.hpp #usr/include/boost/range/detail/implementation_help.hpp -#usr/include/boost/range/detail/iterator.hpp #usr/include/boost/range/detail/join_iterator.hpp #usr/include/boost/range/detail/microsoft.hpp #usr/include/boost/range/detail/misc_concept.hpp +#usr/include/boost/range/detail/msvc_has_iterator_workaround.hpp #usr/include/boost/range/detail/range_return.hpp #usr/include/boost/range/detail/remove_extent.hpp #usr/include/boost/range/detail/safe_bool.hpp #usr/include/boost/range/detail/sfinae.hpp -#usr/include/boost/range/detail/size.hpp #usr/include/boost/range/detail/size_type.hpp #usr/include/boost/range/detail/sizer.hpp #usr/include/boost/range/detail/str_types.hpp #usr/include/boost/range/detail/value_type.hpp -#usr/include/boost/range/detail/vc6 -#usr/include/boost/range/detail/vc6/end.hpp -#usr/include/boost/range/detail/vc6/size.hpp #usr/include/boost/range/difference_type.hpp #usr/include/boost/range/distance.hpp #usr/include/boost/range/empty.hpp @@ -7900,13 +10306,16 @@ #usr/include/boost/range/iterator.hpp #usr/include/boost/range/iterator_range.hpp #usr/include/boost/range/iterator_range_core.hpp +#usr/include/boost/range/iterator_range_hash.hpp #usr/include/boost/range/iterator_range_io.hpp #usr/include/boost/range/join.hpp #usr/include/boost/range/metafunctions.hpp #usr/include/boost/range/mfc.hpp +#usr/include/boost/range/mfc_map.hpp #usr/include/boost/range/mutable_iterator.hpp #usr/include/boost/range/numeric.hpp #usr/include/boost/range/pointer.hpp +#usr/include/boost/range/range_fwd.hpp #usr/include/boost/range/rbegin.hpp #usr/include/boost/range/reference.hpp #usr/include/boost/range/rend.hpp @@ -7916,6 +10325,7 @@ #usr/include/boost/range/size.hpp #usr/include/boost/range/size_type.hpp #usr/include/boost/range/sub_range.hpp +#usr/include/boost/range/traversal.hpp #usr/include/boost/range/value_type.hpp #usr/include/boost/ratio #usr/include/boost/ratio.hpp @@ -7953,7 +10363,6 @@ #usr/include/boost/ratio/ratio.hpp #usr/include/boost/ratio/ratio_fwd.hpp #usr/include/boost/ratio/ratio_io.hpp -#usr/include/boost/ratio/ratio_static_string.hpp #usr/include/boost/rational.hpp #usr/include/boost/ref.hpp #usr/include/boost/regex @@ -8023,11 +10432,18 @@ #usr/include/boost/scoped_ptr.hpp #usr/include/boost/serialization #usr/include/boost/serialization/access.hpp +#usr/include/boost/serialization/archive_input_unordered_map.hpp +#usr/include/boost/serialization/archive_input_unordered_set.hpp #usr/include/boost/serialization/array.hpp +#usr/include/boost/serialization/array_optimization.hpp +#usr/include/boost/serialization/array_wrapper.hpp #usr/include/boost/serialization/assume_abstract.hpp #usr/include/boost/serialization/base_object.hpp #usr/include/boost/serialization/binary_object.hpp #usr/include/boost/serialization/bitset.hpp +#usr/include/boost/serialization/boost_array.hpp +#usr/include/boost/serialization/boost_unordered_map.hpp +#usr/include/boost/serialization/boost_unordered_set.hpp #usr/include/boost/serialization/collection_size_type.hpp #usr/include/boost/serialization/collection_traits.hpp #usr/include/boost/serialization/collections_load_imp.hpp @@ -8036,7 +10452,7 @@ #usr/include/boost/serialization/config.hpp #usr/include/boost/serialization/deque.hpp #usr/include/boost/serialization/detail -#usr/include/boost/serialization/detail/get_data.hpp +#usr/include/boost/serialization/detail/is_default_constructible.hpp #usr/include/boost/serialization/detail/shared_count_132.hpp #usr/include/boost/serialization/detail/shared_ptr_132.hpp #usr/include/boost/serialization/detail/shared_ptr_nmt_132.hpp @@ -8048,6 +10464,7 @@ #usr/include/boost/serialization/extended_type_info_typeid.hpp #usr/include/boost/serialization/factory.hpp #usr/include/boost/serialization/force_include.hpp +#usr/include/boost/serialization/forward_list.hpp #usr/include/boost/serialization/hash_collections_load_imp.hpp #usr/include/boost/serialization/hash_collections_save_imp.hpp #usr/include/boost/serialization/hash_map.hpp @@ -8060,17 +10477,20 @@ #usr/include/boost/serialization/map.hpp #usr/include/boost/serialization/nvp.hpp #usr/include/boost/serialization/optional.hpp -#usr/include/boost/serialization/pfto.hpp +#usr/include/boost/serialization/priority_queue.hpp +#usr/include/boost/serialization/queue.hpp #usr/include/boost/serialization/scoped_ptr.hpp #usr/include/boost/serialization/serialization.hpp #usr/include/boost/serialization/set.hpp #usr/include/boost/serialization/shared_ptr.hpp #usr/include/boost/serialization/shared_ptr_132.hpp +#usr/include/boost/serialization/shared_ptr_helper.hpp #usr/include/boost/serialization/singleton.hpp #usr/include/boost/serialization/slist.hpp #usr/include/boost/serialization/smart_cast.hpp #usr/include/boost/serialization/split_free.hpp #usr/include/boost/serialization/split_member.hpp +#usr/include/boost/serialization/stack.hpp #usr/include/boost/serialization/state_saver.hpp #usr/include/boost/serialization/static_warning.hpp #usr/include/boost/serialization/string.hpp @@ -8080,6 +10500,11 @@ #usr/include/boost/serialization/tracking_enum.hpp #usr/include/boost/serialization/traits.hpp #usr/include/boost/serialization/type_info_implementation.hpp +#usr/include/boost/serialization/unique_ptr.hpp +#usr/include/boost/serialization/unordered_collections_load_imp.hpp +#usr/include/boost/serialization/unordered_collections_save_imp.hpp +#usr/include/boost/serialization/unordered_map.hpp +#usr/include/boost/serialization/unordered_set.hpp #usr/include/boost/serialization/utility.hpp #usr/include/boost/serialization/valarray.hpp #usr/include/boost/serialization/variant.hpp @@ -8166,31 +10591,28 @@ #usr/include/boost/smart_ptr/allocate_shared_array.hpp #usr/include/boost/smart_ptr/bad_weak_ptr.hpp #usr/include/boost/smart_ptr/detail -#usr/include/boost/smart_ptr/detail/allocate_array_helper.hpp -#usr/include/boost/smart_ptr/detail/array_deleter.hpp -#usr/include/boost/smart_ptr/detail/array_traits.hpp -#usr/include/boost/smart_ptr/detail/array_utility.hpp #usr/include/boost/smart_ptr/detail/atomic_count.hpp #usr/include/boost/smart_ptr/detail/atomic_count_gcc.hpp #usr/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp -#usr/include/boost/smart_ptr/detail/atomic_count_pthreads.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_nt.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_pt.hpp #usr/include/boost/smart_ptr/detail/atomic_count_solaris.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_spin.hpp +#usr/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp #usr/include/boost/smart_ptr/detail/atomic_count_sync.hpp #usr/include/boost/smart_ptr/detail/atomic_count_win32.hpp #usr/include/boost/smart_ptr/detail/lightweight_mutex.hpp #usr/include/boost/smart_ptr/detail/lwm_nop.hpp #usr/include/boost/smart_ptr/detail/lwm_pthreads.hpp #usr/include/boost/smart_ptr/detail/lwm_win32_cs.hpp -#usr/include/boost/smart_ptr/detail/make_array_helper.hpp #usr/include/boost/smart_ptr/detail/operator_bool.hpp #usr/include/boost/smart_ptr/detail/quick_allocator.hpp -#usr/include/boost/smart_ptr/detail/shared_array_nmt.hpp #usr/include/boost/smart_ptr/detail/shared_count.hpp -#usr/include/boost/smart_ptr/detail/shared_ptr_nmt.hpp #usr/include/boost/smart_ptr/detail/sp_convertible.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_aix.hpp +#usr/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp @@ -8203,19 +10625,23 @@ #usr/include/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_solaris.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp +#usr/include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp #usr/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp #usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp +#usr/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp #usr/include/boost/smart_ptr/detail/sp_forward.hpp #usr/include/boost/smart_ptr/detail/sp_has_sync.hpp -#usr/include/boost/smart_ptr/detail/sp_if_array.hpp +#usr/include/boost/smart_ptr/detail/sp_interlocked.hpp +#usr/include/boost/smart_ptr/detail/sp_noexcept.hpp #usr/include/boost/smart_ptr/detail/sp_nullptr_t.hpp #usr/include/boost/smart_ptr/detail/spinlock.hpp #usr/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp #usr/include/boost/smart_ptr/detail/spinlock_nt.hpp #usr/include/boost/smart_ptr/detail/spinlock_pool.hpp #usr/include/boost/smart_ptr/detail/spinlock_pt.hpp +#usr/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp #usr/include/boost/smart_ptr/detail/spinlock_sync.hpp #usr/include/boost/smart_ptr/detail/spinlock_w32.hpp #usr/include/boost/smart_ptr/detail/yield_k.hpp @@ -8226,12 +10652,26 @@ #usr/include/boost/smart_ptr/make_shared.hpp #usr/include/boost/smart_ptr/make_shared_array.hpp #usr/include/boost/smart_ptr/make_shared_object.hpp +#usr/include/boost/smart_ptr/make_unique.hpp #usr/include/boost/smart_ptr/owner_less.hpp #usr/include/boost/smart_ptr/scoped_array.hpp #usr/include/boost/smart_ptr/scoped_ptr.hpp #usr/include/boost/smart_ptr/shared_array.hpp #usr/include/boost/smart_ptr/shared_ptr.hpp #usr/include/boost/smart_ptr/weak_ptr.hpp +#usr/include/boost/sort +#usr/include/boost/sort/sort.hpp +#usr/include/boost/sort/spreadsort +#usr/include/boost/sort/spreadsort/detail +#usr/include/boost/sort/spreadsort/detail/constants.hpp +#usr/include/boost/sort/spreadsort/detail/float_sort.hpp +#usr/include/boost/sort/spreadsort/detail/integer_sort.hpp +#usr/include/boost/sort/spreadsort/detail/spreadsort_common.hpp +#usr/include/boost/sort/spreadsort/detail/string_sort.hpp +#usr/include/boost/sort/spreadsort/float_sort.hpp +#usr/include/boost/sort/spreadsort/integer_sort.hpp +#usr/include/boost/sort/spreadsort/spreadsort.hpp +#usr/include/boost/sort/spreadsort/string_sort.hpp #usr/include/boost/spirit #usr/include/boost/spirit.hpp #usr/include/boost/spirit/home @@ -8632,147 +11072,6 @@ #usr/include/boost/spirit/home/lex/reference.hpp #usr/include/boost/spirit/home/lex/tokenize_and_parse.hpp #usr/include/boost/spirit/home/lex/tokenize_and_parse_attr.hpp -#usr/include/boost/spirit/home/phoenix -#usr/include/boost/spirit/home/phoenix.hpp -#usr/include/boost/spirit/home/phoenix/algorithm.hpp -#usr/include/boost/spirit/home/phoenix/bind -#usr/include/boost/spirit/home/phoenix/bind.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_function_object.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_member_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/bind_member_variable.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_function_object.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/bind_member_function.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/function_ptr.hpp -#usr/include/boost/spirit/home/phoenix/bind/detail/member_function_ptr.hpp -#usr/include/boost/spirit/home/phoenix/container.hpp -#usr/include/boost/spirit/home/phoenix/core -#usr/include/boost/spirit/home/phoenix/core.hpp -#usr/include/boost/spirit/home/phoenix/core/actor.hpp -#usr/include/boost/spirit/home/phoenix/core/argument.hpp -#usr/include/boost/spirit/home/phoenix/core/as_actor.hpp -#usr/include/boost/spirit/home/phoenix/core/basic_environment.hpp -#usr/include/boost/spirit/home/phoenix/core/compose.hpp -#usr/include/boost/spirit/home/phoenix/core/composite.hpp -#usr/include/boost/spirit/home/phoenix/core/detail -#usr/include/boost/spirit/home/phoenix/core/detail/actor.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/basic_environment.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/compose.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite_eval.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/composite_info.hpp -#usr/include/boost/spirit/home/phoenix/core/detail/function_eval.hpp -#usr/include/boost/spirit/home/phoenix/core/is_actor.hpp -#usr/include/boost/spirit/home/phoenix/core/limits.hpp -#usr/include/boost/spirit/home/phoenix/core/nothing.hpp -#usr/include/boost/spirit/home/phoenix/core/reference.hpp -#usr/include/boost/spirit/home/phoenix/core/value.hpp -#usr/include/boost/spirit/home/phoenix/detail -#usr/include/boost/spirit/home/phoenix/detail/local_reference.hpp -#usr/include/boost/spirit/home/phoenix/detail/type_deduction.hpp -#usr/include/boost/spirit/home/phoenix/function -#usr/include/boost/spirit/home/phoenix/function.hpp -#usr/include/boost/spirit/home/phoenix/function/detail -#usr/include/boost/spirit/home/phoenix/function/detail/function_call.hpp -#usr/include/boost/spirit/home/phoenix/function/function.hpp -#usr/include/boost/spirit/home/phoenix/fusion -#usr/include/boost/spirit/home/phoenix/fusion.hpp -#usr/include/boost/spirit/home/phoenix/fusion/at.hpp -#usr/include/boost/spirit/home/phoenix/object -#usr/include/boost/spirit/home/phoenix/object.hpp -#usr/include/boost/spirit/home/phoenix/object/const_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/construct.hpp -#usr/include/boost/spirit/home/phoenix/object/delete.hpp -#usr/include/boost/spirit/home/phoenix/object/detail -#usr/include/boost/spirit/home/phoenix/object/detail/construct.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/construct_eval.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/new.hpp -#usr/include/boost/spirit/home/phoenix/object/detail/new_eval.hpp -#usr/include/boost/spirit/home/phoenix/object/dynamic_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/new.hpp -#usr/include/boost/spirit/home/phoenix/object/reinterpret_cast.hpp -#usr/include/boost/spirit/home/phoenix/object/static_cast.hpp -#usr/include/boost/spirit/home/phoenix/operator -#usr/include/boost/spirit/home/phoenix/operator.hpp -#usr/include/boost/spirit/home/phoenix/operator/arithmetic.hpp -#usr/include/boost/spirit/home/phoenix/operator/bitwise.hpp -#usr/include/boost/spirit/home/phoenix/operator/comparison.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail -#usr/include/boost/spirit/home/phoenix/operator/detail/binary_compose.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/binary_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/io.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_gen.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/mem_fun_ptr_return.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/unary_compose.hpp -#usr/include/boost/spirit/home/phoenix/operator/detail/unary_eval.hpp -#usr/include/boost/spirit/home/phoenix/operator/if_else.hpp -#usr/include/boost/spirit/home/phoenix/operator/io.hpp -#usr/include/boost/spirit/home/phoenix/operator/logical.hpp -#usr/include/boost/spirit/home/phoenix/operator/member.hpp -#usr/include/boost/spirit/home/phoenix/operator/self.hpp -#usr/include/boost/spirit/home/phoenix/scope -#usr/include/boost/spirit/home/phoenix/scope.hpp -#usr/include/boost/spirit/home/phoenix/scope/detail -#usr/include/boost/spirit/home/phoenix/scope/detail/local_gen.hpp -#usr/include/boost/spirit/home/phoenix/scope/detail/local_variable.hpp -#usr/include/boost/spirit/home/phoenix/scope/dynamic.hpp -#usr/include/boost/spirit/home/phoenix/scope/lambda.hpp -#usr/include/boost/spirit/home/phoenix/scope/let.hpp -#usr/include/boost/spirit/home/phoenix/scope/local_variable.hpp -#usr/include/boost/spirit/home/phoenix/scope/scoped_environment.hpp -#usr/include/boost/spirit/home/phoenix/statement -#usr/include/boost/spirit/home/phoenix/statement.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_all_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_composite.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/catch_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch_eval.hpp -#usr/include/boost/spirit/home/phoenix/statement/detail/switch_eval.ipp -#usr/include/boost/spirit/home/phoenix/statement/do_while.hpp -#usr/include/boost/spirit/home/phoenix/statement/for.hpp -#usr/include/boost/spirit/home/phoenix/statement/if.hpp -#usr/include/boost/spirit/home/phoenix/statement/sequence.hpp -#usr/include/boost/spirit/home/phoenix/statement/switch.hpp -#usr/include/boost/spirit/home/phoenix/statement/throw.hpp -#usr/include/boost/spirit/home/phoenix/statement/try_catch.hpp -#usr/include/boost/spirit/home/phoenix/statement/while.hpp -#usr/include/boost/spirit/home/phoenix/stl -#usr/include/boost/spirit/home/phoenix/stl.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm -#usr/include/boost/spirit/home/phoenix/stl/algorithm.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/begin.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/decay_array.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/end.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/iteration.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/querying.hpp -#usr/include/boost/spirit/home/phoenix/stl/algorithm/transformation.hpp -#usr/include/boost/spirit/home/phoenix/stl/container -#usr/include/boost/spirit/home/phoenix/stl/container.hpp -#usr/include/boost/spirit/home/phoenix/stl/container/container.hpp -#usr/include/boost/spirit/home/phoenix/stl/container/detail -#usr/include/boost/spirit/home/phoenix/stl/container/detail/container.hpp -#usr/include/boost/spirit/home/phoenix/version.hpp #usr/include/boost/spirit/home/qi #usr/include/boost/spirit/home/qi.hpp #usr/include/boost/spirit/home/qi/action @@ -8799,6 +11098,7 @@ #usr/include/boost/spirit/home/qi/char/char.hpp #usr/include/boost/spirit/home/qi/char/char_class.hpp #usr/include/boost/spirit/home/qi/char/char_parser.hpp +#usr/include/boost/spirit/home/qi/copy.hpp #usr/include/boost/spirit/home/qi/detail #usr/include/boost/spirit/home/qi/detail/alternative_function.hpp #usr/include/boost/spirit/home/qi/detail/assign_to.hpp @@ -8911,6 +11211,7 @@ #usr/include/boost/spirit/home/support/attributes.hpp #usr/include/boost/spirit/home/support/attributes_fwd.hpp #usr/include/boost/spirit/home/support/auto +#usr/include/boost/spirit/home/support/auto.hpp #usr/include/boost/spirit/home/support/auto/meta_create.hpp #usr/include/boost/spirit/home/support/auxiliary #usr/include/boost/spirit/home/support/auxiliary/attr_cast.hpp @@ -9048,6 +11349,143 @@ #usr/include/boost/spirit/home/support/utree/utree.hpp #usr/include/boost/spirit/home/support/utree/utree_traits.hpp #usr/include/boost/spirit/home/support/utree/utree_traits_fwd.hpp +#usr/include/boost/spirit/home/x3 +#usr/include/boost/spirit/home/x3.hpp +#usr/include/boost/spirit/home/x3/auxiliary +#usr/include/boost/spirit/home/x3/auxiliary.hpp +#usr/include/boost/spirit/home/x3/auxiliary/any_parser.hpp +#usr/include/boost/spirit/home/x3/auxiliary/attr.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eoi.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eol.hpp +#usr/include/boost/spirit/home/x3/auxiliary/eps.hpp +#usr/include/boost/spirit/home/x3/auxiliary/guard.hpp +#usr/include/boost/spirit/home/x3/binary +#usr/include/boost/spirit/home/x3/binary.hpp +#usr/include/boost/spirit/home/x3/binary/binary.hpp +#usr/include/boost/spirit/home/x3/char +#usr/include/boost/spirit/home/x3/char.hpp +#usr/include/boost/spirit/home/x3/char/any_char.hpp +#usr/include/boost/spirit/home/x3/char/char.hpp +#usr/include/boost/spirit/home/x3/char/char_class.hpp +#usr/include/boost/spirit/home/x3/char/char_class_tags.hpp +#usr/include/boost/spirit/home/x3/char/char_parser.hpp +#usr/include/boost/spirit/home/x3/char/char_set.hpp +#usr/include/boost/spirit/home/x3/char/detail +#usr/include/boost/spirit/home/x3/char/detail/cast_char.hpp +#usr/include/boost/spirit/home/x3/char/literal_char.hpp +#usr/include/boost/spirit/home/x3/char/negated_char_parser.hpp +#usr/include/boost/spirit/home/x3/char/unicode.hpp +#usr/include/boost/spirit/home/x3/core +#usr/include/boost/spirit/home/x3/core.hpp +#usr/include/boost/spirit/home/x3/core/action.hpp +#usr/include/boost/spirit/home/x3/core/call.hpp +#usr/include/boost/spirit/home/x3/core/detail +#usr/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp +#usr/include/boost/spirit/home/x3/core/parse.hpp +#usr/include/boost/spirit/home/x3/core/parser.hpp +#usr/include/boost/spirit/home/x3/core/proxy.hpp +#usr/include/boost/spirit/home/x3/core/skip_over.hpp +#usr/include/boost/spirit/home/x3/directive +#usr/include/boost/spirit/home/x3/directive.hpp +#usr/include/boost/spirit/home/x3/directive/confix.hpp +#usr/include/boost/spirit/home/x3/directive/expect.hpp +#usr/include/boost/spirit/home/x3/directive/lexeme.hpp +#usr/include/boost/spirit/home/x3/directive/matches.hpp +#usr/include/boost/spirit/home/x3/directive/no_case.hpp +#usr/include/boost/spirit/home/x3/directive/no_skip.hpp +#usr/include/boost/spirit/home/x3/directive/omit.hpp +#usr/include/boost/spirit/home/x3/directive/raw.hpp +#usr/include/boost/spirit/home/x3/directive/repeat.hpp +#usr/include/boost/spirit/home/x3/directive/seek.hpp +#usr/include/boost/spirit/home/x3/directive/skip.hpp +#usr/include/boost/spirit/home/x3/directive/with.hpp +#usr/include/boost/spirit/home/x3/nonterminal +#usr/include/boost/spirit/home/x3/nonterminal.hpp +#usr/include/boost/spirit/home/x3/nonterminal/debug_handler_state.hpp +#usr/include/boost/spirit/home/x3/nonterminal/detail +#usr/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp +#usr/include/boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp +#usr/include/boost/spirit/home/x3/nonterminal/rule.hpp +#usr/include/boost/spirit/home/x3/nonterminal/simple_trace.hpp +#usr/include/boost/spirit/home/x3/numeric +#usr/include/boost/spirit/home/x3/numeric.hpp +#usr/include/boost/spirit/home/x3/numeric/bool.hpp +#usr/include/boost/spirit/home/x3/numeric/bool_policies.hpp +#usr/include/boost/spirit/home/x3/numeric/int.hpp +#usr/include/boost/spirit/home/x3/numeric/real.hpp +#usr/include/boost/spirit/home/x3/numeric/real_policies.hpp +#usr/include/boost/spirit/home/x3/numeric/uint.hpp +#usr/include/boost/spirit/home/x3/operator +#usr/include/boost/spirit/home/x3/operator.hpp +#usr/include/boost/spirit/home/x3/operator/alternative.hpp +#usr/include/boost/spirit/home/x3/operator/and_predicate.hpp +#usr/include/boost/spirit/home/x3/operator/detail +#usr/include/boost/spirit/home/x3/operator/detail/alternative.hpp +#usr/include/boost/spirit/home/x3/operator/detail/sequence.hpp +#usr/include/boost/spirit/home/x3/operator/difference.hpp +#usr/include/boost/spirit/home/x3/operator/kleene.hpp +#usr/include/boost/spirit/home/x3/operator/list.hpp +#usr/include/boost/spirit/home/x3/operator/not_predicate.hpp +#usr/include/boost/spirit/home/x3/operator/optional.hpp +#usr/include/boost/spirit/home/x3/operator/plus.hpp +#usr/include/boost/spirit/home/x3/operator/sequence.hpp +#usr/include/boost/spirit/home/x3/string +#usr/include/boost/spirit/home/x3/string.hpp +#usr/include/boost/spirit/home/x3/string/detail +#usr/include/boost/spirit/home/x3/string/detail/no_case_string_parse.hpp +#usr/include/boost/spirit/home/x3/string/detail/string_parse.hpp +#usr/include/boost/spirit/home/x3/string/detail/tst.hpp +#usr/include/boost/spirit/home/x3/string/literal_string.hpp +#usr/include/boost/spirit/home/x3/string/symbols.hpp +#usr/include/boost/spirit/home/x3/string/tst.hpp +#usr/include/boost/spirit/home/x3/string/tst_map.hpp +#usr/include/boost/spirit/home/x3/support +#usr/include/boost/spirit/home/x3/support/ast +#usr/include/boost/spirit/home/x3/support/ast/position_tagged.hpp +#usr/include/boost/spirit/home/x3/support/ast/variant.hpp +#usr/include/boost/spirit/home/x3/support/context.hpp +#usr/include/boost/spirit/home/x3/support/no_case.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils +#usr/include/boost/spirit/home/x3/support/numeric_utils/detail +#usr/include/boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/extract_real.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/pow10.hpp +#usr/include/boost/spirit/home/x3/support/numeric_utils/sign.hpp +#usr/include/boost/spirit/home/x3/support/subcontext.hpp +#usr/include/boost/spirit/home/x3/support/traits +#usr/include/boost/spirit/home/x3/support/traits/attribute_category.hpp +#usr/include/boost/spirit/home/x3/support/traits/attribute_of.hpp +#usr/include/boost/spirit/home/x3/support/traits/attribute_type.hpp +#usr/include/boost/spirit/home/x3/support/traits/container_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/handles_container.hpp +#usr/include/boost/spirit/home/x3/support/traits/has_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_parser.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_substitute.hpp +#usr/include/boost/spirit/home/x3/support/traits/is_variant.hpp +#usr/include/boost/spirit/home/x3/support/traits/make_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/move_to.hpp +#usr/include/boost/spirit/home/x3/support/traits/numeric_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/optional_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/print_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/print_token.hpp +#usr/include/boost/spirit/home/x3/support/traits/string_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/transform_attribute.hpp +#usr/include/boost/spirit/home/x3/support/traits/tuple_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/value_traits.hpp +#usr/include/boost/spirit/home/x3/support/traits/variant_find_substitute.hpp +#usr/include/boost/spirit/home/x3/support/traits/variant_has_substitute.hpp +#usr/include/boost/spirit/home/x3/support/unused.hpp +#usr/include/boost/spirit/home/x3/support/utility +#usr/include/boost/spirit/home/x3/support/utility/annotate_on_success.hpp +#usr/include/boost/spirit/home/x3/support/utility/error_reporting.hpp +#usr/include/boost/spirit/home/x3/support/utility/is_callable.hpp +#usr/include/boost/spirit/home/x3/support/utility/lambda_visitor.hpp +#usr/include/boost/spirit/home/x3/support/utility/sfinae.hpp +#usr/include/boost/spirit/home/x3/support/utility/testing.hpp +#usr/include/boost/spirit/home/x3/support/utility/unrefcv.hpp +#usr/include/boost/spirit/home/x3/support/utility/utf8.hpp +#usr/include/boost/spirit/home/x3/version.hpp #usr/include/boost/spirit/include #usr/include/boost/spirit/include/classic.hpp #usr/include/boost/spirit/include/classic_actions.hpp @@ -9288,6 +11726,7 @@ #usr/include/boost/spirit/include/qi_char.hpp #usr/include/boost/spirit/include/qi_char_.hpp #usr/include/boost/spirit/include/qi_char_class.hpp +#usr/include/boost/spirit/include/qi_copy.hpp #usr/include/boost/spirit/include/qi_core.hpp #usr/include/boost/spirit/include/qi_difference.hpp #usr/include/boost/spirit/include/qi_directive.hpp @@ -9343,6 +11782,7 @@ #usr/include/boost/spirit/include/support_ascii.hpp #usr/include/boost/spirit/include/support_attributes.hpp #usr/include/boost/spirit/include/support_attributes_fwd.hpp +#usr/include/boost/spirit/include/support_auto.hpp #usr/include/boost/spirit/include/support_char_class.hpp #usr/include/boost/spirit/include/support_container.hpp #usr/include/boost/spirit/include/support_extended_variant.hpp @@ -9453,18 +11893,45 @@ #usr/include/boost/statechart/termination.hpp #usr/include/boost/statechart/transition.hpp #usr/include/boost/static_assert.hpp -#usr/include/boost/strong_typedef.hpp #usr/include/boost/swap.hpp #usr/include/boost/system #usr/include/boost/system/api_config.hpp #usr/include/boost/system/config.hpp #usr/include/boost/system/cygwin_error.hpp +#usr/include/boost/system/detail +#usr/include/boost/system/detail/error_code.ipp +#usr/include/boost/system/detail/local_free_on_destruction.hpp #usr/include/boost/system/error_code.hpp #usr/include/boost/system/linux_error.hpp #usr/include/boost/system/system_error.hpp #usr/include/boost/system/windows_error.hpp #usr/include/boost/test #usr/include/boost/test/auto_unit_test.hpp +#usr/include/boost/test/data +#usr/include/boost/test/data/config.hpp +#usr/include/boost/test/data/dataset.hpp +#usr/include/boost/test/data/for_each_sample.hpp +#usr/include/boost/test/data/generators.hpp +#usr/include/boost/test/data/index_sequence.hpp +#usr/include/boost/test/data/monomorphic +#usr/include/boost/test/data/monomorphic.hpp +#usr/include/boost/test/data/monomorphic/array.hpp +#usr/include/boost/test/data/monomorphic/collection.hpp +#usr/include/boost/test/data/monomorphic/fwd.hpp +#usr/include/boost/test/data/monomorphic/generate.hpp +#usr/include/boost/test/data/monomorphic/generators +#usr/include/boost/test/data/monomorphic/generators.hpp +#usr/include/boost/test/data/monomorphic/generators/keywords.hpp +#usr/include/boost/test/data/monomorphic/generators/random.hpp +#usr/include/boost/test/data/monomorphic/generators/xrange.hpp +#usr/include/boost/test/data/monomorphic/grid.hpp +#usr/include/boost/test/data/monomorphic/initializer_list.hpp +#usr/include/boost/test/data/monomorphic/join.hpp +#usr/include/boost/test/data/monomorphic/sample_merge.hpp +#usr/include/boost/test/data/monomorphic/singleton.hpp +#usr/include/boost/test/data/monomorphic/zip.hpp +#usr/include/boost/test/data/size.hpp +#usr/include/boost/test/data/test_case.hpp #usr/include/boost/test/debug.hpp #usr/include/boost/test/debug_config.hpp #usr/include/boost/test/detail @@ -9473,10 +11940,10 @@ #usr/include/boost/test/detail/fwd_decl.hpp #usr/include/boost/test/detail/global_typedef.hpp #usr/include/boost/test/detail/log_level.hpp +#usr/include/boost/test/detail/pp_variadic.hpp #usr/include/boost/test/detail/suppress_warnings.hpp -#usr/include/boost/test/detail/unit_test_parameters.hpp +#usr/include/boost/test/detail/throw_exception.hpp #usr/include/boost/test/detail/workaround.hpp -#usr/include/boost/test/exception_safety.hpp #usr/include/boost/test/execution_monitor.hpp #usr/include/boost/test/floating_point_comparison.hpp #usr/include/boost/test/framework.hpp @@ -9484,35 +11951,33 @@ #usr/include/boost/test/impl/compiler_log_formatter.ipp #usr/include/boost/test/impl/cpp_main.ipp #usr/include/boost/test/impl/debug.ipp -#usr/include/boost/test/impl/exception_safety.ipp +#usr/include/boost/test/impl/decorator.ipp #usr/include/boost/test/impl/execution_monitor.ipp #usr/include/boost/test/impl/framework.ipp -#usr/include/boost/test/impl/interaction_based.ipp -#usr/include/boost/test/impl/logged_expectations.ipp +#usr/include/boost/test/impl/junit_log_formatter.ipp #usr/include/boost/test/impl/plain_report_formatter.ipp #usr/include/boost/test/impl/progress_monitor.ipp #usr/include/boost/test/impl/results_collector.ipp #usr/include/boost/test/impl/results_reporter.ipp #usr/include/boost/test/impl/test_main.ipp #usr/include/boost/test/impl/test_tools.ipp +#usr/include/boost/test/impl/test_tree.ipp #usr/include/boost/test/impl/unit_test_log.ipp #usr/include/boost/test/impl/unit_test_main.ipp #usr/include/boost/test/impl/unit_test_monitor.ipp #usr/include/boost/test/impl/unit_test_parameters.ipp -#usr/include/boost/test/impl/unit_test_suite.ipp #usr/include/boost/test/impl/xml_log_formatter.ipp #usr/include/boost/test/impl/xml_report_formatter.ipp #usr/include/boost/test/included +#usr/include/boost/test/included/execution_monitor.hpp #usr/include/boost/test/included/prg_exec_monitor.hpp #usr/include/boost/test/included/test_exec_monitor.hpp #usr/include/boost/test/included/unit_test.hpp #usr/include/boost/test/included/unit_test_framework.hpp -#usr/include/boost/test/interaction_based.hpp -#usr/include/boost/test/logged_expectations.hpp #usr/include/boost/test/minimal.hpp -#usr/include/boost/test/mock_object.hpp #usr/include/boost/test/output #usr/include/boost/test/output/compiler_log_formatter.hpp +#usr/include/boost/test/output/junit_log_formatter.hpp #usr/include/boost/test/output/plain_report_formatter.hpp #usr/include/boost/test/output/xml_log_formatter.hpp #usr/include/boost/test/output/xml_report_formatter.hpp @@ -9525,14 +11990,48 @@ #usr/include/boost/test/results_reporter.hpp #usr/include/boost/test/test_case_template.hpp #usr/include/boost/test/test_exec_monitor.hpp -#usr/include/boost/test/test_observer.hpp #usr/include/boost/test/test_tools.hpp +#usr/include/boost/test/tools +#usr/include/boost/test/tools/assertion.hpp +#usr/include/boost/test/tools/assertion_result.hpp +#usr/include/boost/test/tools/collection_comparison_op.hpp +#usr/include/boost/test/tools/context.hpp +#usr/include/boost/test/tools/cstring_comparison_op.hpp +#usr/include/boost/test/tools/detail +#usr/include/boost/test/tools/detail/bitwise_manip.hpp +#usr/include/boost/test/tools/detail/expression_holder.hpp +#usr/include/boost/test/tools/detail/fwd.hpp +#usr/include/boost/test/tools/detail/indirections.hpp +#usr/include/boost/test/tools/detail/it_pair.hpp +#usr/include/boost/test/tools/detail/lexicographic_manip.hpp +#usr/include/boost/test/tools/detail/per_element_manip.hpp +#usr/include/boost/test/tools/detail/print_helper.hpp +#usr/include/boost/test/tools/detail/tolerance_manip.hpp +#usr/include/boost/test/tools/floating_point_comparison.hpp +#usr/include/boost/test/tools/fpc_op.hpp +#usr/include/boost/test/tools/fpc_tolerance.hpp +#usr/include/boost/test/tools/interface.hpp +#usr/include/boost/test/tools/old +#usr/include/boost/test/tools/old/impl.hpp +#usr/include/boost/test/tools/old/interface.hpp +#usr/include/boost/test/tools/output_test_stream.hpp +#usr/include/boost/test/tree +#usr/include/boost/test/tree/auto_registration.hpp +#usr/include/boost/test/tree/decorator.hpp +#usr/include/boost/test/tree/fixture.hpp +#usr/include/boost/test/tree/global_fixture.hpp +#usr/include/boost/test/tree/observer.hpp +#usr/include/boost/test/tree/test_case_counter.hpp +#usr/include/boost/test/tree/test_case_template.hpp +#usr/include/boost/test/tree/test_unit.hpp +#usr/include/boost/test/tree/traverse.hpp +#usr/include/boost/test/tree/visitor.hpp #usr/include/boost/test/unit_test.hpp #usr/include/boost/test/unit_test_log.hpp #usr/include/boost/test/unit_test_log_formatter.hpp #usr/include/boost/test/unit_test_monitor.hpp +#usr/include/boost/test/unit_test_parameters.hpp #usr/include/boost/test/unit_test_suite.hpp -#usr/include/boost/test/unit_test_suite_impl.hpp #usr/include/boost/test/utils #usr/include/boost/test/utils/algorithm.hpp #usr/include/boost/test/utils/assign_op.hpp @@ -9542,15 +12041,13 @@ #usr/include/boost/test/utils/basic_cstring/bcs_char_traits.hpp #usr/include/boost/test/utils/basic_cstring/compare.hpp #usr/include/boost/test/utils/basic_cstring/io.hpp -#usr/include/boost/test/utils/callback.hpp #usr/include/boost/test/utils/class_properties.hpp #usr/include/boost/test/utils/custom_manip.hpp -#usr/include/boost/test/utils/fixed_mapping.hpp #usr/include/boost/test/utils/foreach.hpp +#usr/include/boost/test/utils/is_cstring.hpp +#usr/include/boost/test/utils/is_forward_iterable.hpp #usr/include/boost/test/utils/iterator -#usr/include/boost/test/utils/iterator/ifstream_line_iterator.hpp #usr/include/boost/test/utils/iterator/input_iterator_facade.hpp -#usr/include/boost/test/utils/iterator/istream_line_iterator.hpp #usr/include/boost/test/utils/iterator/token_iterator.hpp #usr/include/boost/test/utils/lazy_ostream.hpp #usr/include/boost/test/utils/named_params.hpp @@ -9558,74 +12055,79 @@ #usr/include/boost/test/utils/rtti.hpp #usr/include/boost/test/utils/runtime #usr/include/boost/test/utils/runtime/argument.hpp +#usr/include/boost/test/utils/runtime/argument_factory.hpp #usr/include/boost/test/utils/runtime/cla -#usr/include/boost/test/utils/runtime/cla/argument_factory.hpp #usr/include/boost/test/utils/runtime/cla/argv_traverser.hpp -#usr/include/boost/test/utils/runtime/cla/argv_traverser.ipp -#usr/include/boost/test/utils/runtime/cla/basic_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/char_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/char_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/detail -#usr/include/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp -#usr/include/boost/test/utils/runtime/cla/dual_name_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/dual_name_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/fwd.hpp -#usr/include/boost/test/utils/runtime/cla/id_policy.hpp -#usr/include/boost/test/utils/runtime/cla/id_policy.ipp -#usr/include/boost/test/utils/runtime/cla/iface -#usr/include/boost/test/utils/runtime/cla/iface/argument_factory.hpp -#usr/include/boost/test/utils/runtime/cla/iface/id_policy.hpp -#usr/include/boost/test/utils/runtime/cla/modifier.hpp -#usr/include/boost/test/utils/runtime/cla/named_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/named_parameter.ipp -#usr/include/boost/test/utils/runtime/cla/parameter.hpp #usr/include/boost/test/utils/runtime/cla/parser.hpp -#usr/include/boost/test/utils/runtime/cla/parser.ipp -#usr/include/boost/test/utils/runtime/cla/positional_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/typed_parameter.hpp -#usr/include/boost/test/utils/runtime/cla/validation.hpp -#usr/include/boost/test/utils/runtime/cla/validation.ipp -#usr/include/boost/test/utils/runtime/cla/value_generator.hpp -#usr/include/boost/test/utils/runtime/cla/value_handler.hpp -#usr/include/boost/test/utils/runtime/config.hpp -#usr/include/boost/test/utils/runtime/configuration.hpp #usr/include/boost/test/utils/runtime/env -#usr/include/boost/test/utils/runtime/env/environment.hpp -#usr/include/boost/test/utils/runtime/env/environment.ipp -#usr/include/boost/test/utils/runtime/env/fwd.hpp -#usr/include/boost/test/utils/runtime/env/modifier.hpp -#usr/include/boost/test/utils/runtime/env/variable.hpp -#usr/include/boost/test/utils/runtime/file -#usr/include/boost/test/utils/runtime/file/config_file.hpp -#usr/include/boost/test/utils/runtime/file/config_file_iterator.hpp +#usr/include/boost/test/utils/runtime/env/fetch.hpp +#usr/include/boost/test/utils/runtime/errors.hpp +#usr/include/boost/test/utils/runtime/finalize.hpp #usr/include/boost/test/utils/runtime/fwd.hpp -#usr/include/boost/test/utils/runtime/interpret_argument_value.hpp +#usr/include/boost/test/utils/runtime/modifier.hpp #usr/include/boost/test/utils/runtime/parameter.hpp -#usr/include/boost/test/utils/runtime/trace.hpp -#usr/include/boost/test/utils/runtime/validation.hpp +#usr/include/boost/test/utils/setcolor.hpp +#usr/include/boost/test/utils/string_cast.hpp #usr/include/boost/test/utils/trivial_singleton.hpp #usr/include/boost/test/utils/wrap_stringstream.hpp #usr/include/boost/test/utils/xml_printer.hpp #usr/include/boost/thread #usr/include/boost/thread.hpp #usr/include/boost/thread/barrier.hpp +#usr/include/boost/thread/caller_context.hpp #usr/include/boost/thread/completion_latch.hpp +#usr/include/boost/thread/concurrent_queues +#usr/include/boost/thread/concurrent_queues/deque_adaptor.hpp +#usr/include/boost/thread/concurrent_queues/deque_base.hpp +#usr/include/boost/thread/concurrent_queues/deque_views.hpp +#usr/include/boost/thread/concurrent_queues/detail +#usr/include/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +#usr/include/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +#usr/include/boost/thread/concurrent_queues/queue_adaptor.hpp +#usr/include/boost/thread/concurrent_queues/queue_base.hpp +#usr/include/boost/thread/concurrent_queues/queue_op_status.hpp +#usr/include/boost/thread/concurrent_queues/queue_views.hpp +#usr/include/boost/thread/concurrent_queues/sync_bounded_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_deque.hpp +#usr/include/boost/thread/concurrent_queues/sync_priority_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_queue.hpp +#usr/include/boost/thread/concurrent_queues/sync_timed_queue.hpp #usr/include/boost/thread/condition.hpp #usr/include/boost/thread/condition_variable.hpp +#usr/include/boost/thread/csbl +#usr/include/boost/thread/csbl/deque.hpp +#usr/include/boost/thread/csbl/devector.hpp +#usr/include/boost/thread/csbl/functional.hpp +#usr/include/boost/thread/csbl/list.hpp +#usr/include/boost/thread/csbl/memory +#usr/include/boost/thread/csbl/memory.hpp +#usr/include/boost/thread/csbl/memory/allocator_arg.hpp +#usr/include/boost/thread/csbl/memory/allocator_traits.hpp +#usr/include/boost/thread/csbl/memory/config.hpp +#usr/include/boost/thread/csbl/memory/default_delete.hpp +#usr/include/boost/thread/csbl/memory/pointer_traits.hpp +#usr/include/boost/thread/csbl/memory/scoped_allocator.hpp +#usr/include/boost/thread/csbl/memory/shared_ptr.hpp +#usr/include/boost/thread/csbl/memory/unique_ptr.hpp +#usr/include/boost/thread/csbl/queue.hpp +#usr/include/boost/thread/csbl/tuple.hpp +#usr/include/boost/thread/csbl/vector.hpp #usr/include/boost/thread/cv_status.hpp #usr/include/boost/thread/detail -#usr/include/boost/thread/detail/async_func.hpp #usr/include/boost/thread/detail/config.hpp #usr/include/boost/thread/detail/counter.hpp #usr/include/boost/thread/detail/delete.hpp #usr/include/boost/thread/detail/force_cast.hpp +#usr/include/boost/thread/detail/function_wrapper.hpp #usr/include/boost/thread/detail/invoke.hpp +#usr/include/boost/thread/detail/invoker.hpp #usr/include/boost/thread/detail/is_convertible.hpp #usr/include/boost/thread/detail/lockable_wrapper.hpp #usr/include/boost/thread/detail/log.hpp #usr/include/boost/thread/detail/make_tuple_indices.hpp #usr/include/boost/thread/detail/memory.hpp #usr/include/boost/thread/detail/move.hpp +#usr/include/boost/thread/detail/nullary_function.hpp #usr/include/boost/thread/detail/platform.hpp #usr/include/boost/thread/detail/singleton.hpp #usr/include/boost/thread/detail/thread.hpp @@ -9633,11 +12135,51 @@ #usr/include/boost/thread/detail/thread_heap_alloc.hpp #usr/include/boost/thread/detail/thread_interruption.hpp #usr/include/boost/thread/detail/tss_hooks.hpp +#usr/include/boost/thread/detail/variadic_footer.hpp +#usr/include/boost/thread/detail/variadic_header.hpp +#usr/include/boost/thread/exceptional_ptr.hpp #usr/include/boost/thread/exceptions.hpp +#usr/include/boost/thread/executor.hpp +#usr/include/boost/thread/executors +#usr/include/boost/thread/executors/basic_thread_pool.hpp +#usr/include/boost/thread/executors/detail +#usr/include/boost/thread/executors/detail/priority_executor_base.hpp +#usr/include/boost/thread/executors/detail/scheduled_executor_base.hpp +#usr/include/boost/thread/executors/executor.hpp +#usr/include/boost/thread/executors/executor_adaptor.hpp +#usr/include/boost/thread/executors/generic_executor_ref.hpp +#usr/include/boost/thread/executors/inline_executor.hpp +#usr/include/boost/thread/executors/loop_executor.hpp +#usr/include/boost/thread/executors/scheduled_thread_pool.hpp +#usr/include/boost/thread/executors/scheduler.hpp +#usr/include/boost/thread/executors/scheduling_adaptor.hpp +#usr/include/boost/thread/executors/serial_executor.hpp +#usr/include/boost/thread/executors/serial_executor_cont.hpp +#usr/include/boost/thread/executors/thread_executor.hpp +#usr/include/boost/thread/executors/work.hpp +#usr/include/boost/thread/experimental +#usr/include/boost/thread/experimental/config +#usr/include/boost/thread/experimental/config/inline_namespace.hpp +#usr/include/boost/thread/experimental/exception_list.hpp +#usr/include/boost/thread/experimental/parallel +#usr/include/boost/thread/experimental/parallel/v1 +#usr/include/boost/thread/experimental/parallel/v1/exception_list.hpp +#usr/include/boost/thread/experimental/parallel/v1/inline_namespace.hpp +#usr/include/boost/thread/experimental/parallel/v2 +#usr/include/boost/thread/experimental/parallel/v2/inline_namespace.hpp +#usr/include/boost/thread/experimental/parallel/v2/task_region.hpp +#usr/include/boost/thread/experimental/task_region.hpp #usr/include/boost/thread/externally_locked.hpp #usr/include/boost/thread/externally_locked_stream.hpp #usr/include/boost/thread/future.hpp -#usr/include/boost/thread/future_error_code.hpp +#usr/include/boost/thread/futures +#usr/include/boost/thread/futures/future_error.hpp +#usr/include/boost/thread/futures/future_error_code.hpp +#usr/include/boost/thread/futures/future_status.hpp +#usr/include/boost/thread/futures/is_future_type.hpp +#usr/include/boost/thread/futures/launch.hpp +#usr/include/boost/thread/futures/wait_for_all.hpp +#usr/include/boost/thread/futures/wait_for_any.hpp #usr/include/boost/thread/is_locked_by_this_thread.hpp #usr/include/boost/thread/latch.hpp #usr/include/boost/thread/lock_algorithms.hpp @@ -9654,6 +12196,7 @@ #usr/include/boost/thread/mutex.hpp #usr/include/boost/thread/null_mutex.hpp #usr/include/boost/thread/once.hpp +#usr/include/boost/thread/ostream_buffer.hpp #usr/include/boost/thread/poly_lockable.hpp #usr/include/boost/thread/poly_lockable_adapter.hpp #usr/include/boost/thread/poly_shared_lockable.hpp @@ -9685,8 +12228,10 @@ #usr/include/boost/thread/thread_functors.hpp #usr/include/boost/thread/thread_guard.hpp #usr/include/boost/thread/thread_only.hpp +#usr/include/boost/thread/thread_pool.hpp #usr/include/boost/thread/thread_time.hpp #usr/include/boost/thread/tss.hpp +#usr/include/boost/thread/user_scheduler.hpp #usr/include/boost/thread/v2 #usr/include/boost/thread/v2/shared_mutex.hpp #usr/include/boost/thread/v2/thread.hpp @@ -9703,6 +12248,7 @@ #usr/include/boost/thread/win32/thread_data.hpp #usr/include/boost/thread/win32/thread_heap_alloc.hpp #usr/include/boost/thread/win32/thread_primitives.hpp +#usr/include/boost/thread/with_lock_guard.hpp #usr/include/boost/thread/xtime.hpp #usr/include/boost/throw_exception.hpp #usr/include/boost/timer @@ -9824,7 +12370,6 @@ #usr/include/boost/tti #usr/include/boost/tti/detail #usr/include/boost/tti/detail/dcomp_mem_fun.hpp -#usr/include/boost/tti/detail/dcomp_static_mem_fun.hpp #usr/include/boost/tti/detail/ddata.hpp #usr/include/boost/tti/detail/ddeftype.hpp #usr/include/boost/tti/detail/dftclass.hpp @@ -9870,7 +12415,6 @@ #usr/include/boost/tuple #usr/include/boost/tuple/detail #usr/include/boost/tuple/detail/tuple_basic.hpp -#usr/include/boost/tuple/detail/tuple_basic_no_partial_spec.hpp #usr/include/boost/tuple/tuple.hpp #usr/include/boost/tuple/tuple_comparison.hpp #usr/include/boost/tuple/tuple_io.hpp @@ -9894,10 +12438,12 @@ #usr/include/boost/type_erasure/detail/access.hpp #usr/include/boost/type_erasure/detail/adapt_to_vtable.hpp #usr/include/boost/type_erasure/detail/any_base.hpp +#usr/include/boost/type_erasure/detail/auto_link.hpp #usr/include/boost/type_erasure/detail/check_call.hpp #usr/include/boost/type_erasure/detail/check_map.hpp #usr/include/boost/type_erasure/detail/const.hpp #usr/include/boost/type_erasure/detail/construct.hpp +#usr/include/boost/type_erasure/detail/dynamic_vtable.hpp #usr/include/boost/type_erasure/detail/extract_concept.hpp #usr/include/boost/type_erasure/detail/get_placeholders.hpp #usr/include/boost/type_erasure/detail/get_signature.hpp @@ -9909,6 +12455,8 @@ #usr/include/boost/type_erasure/detail/rebind_placeholders.hpp #usr/include/boost/type_erasure/detail/storage.hpp #usr/include/boost/type_erasure/detail/vtable.hpp +#usr/include/boost/type_erasure/dynamic_any_cast.hpp +#usr/include/boost/type_erasure/dynamic_binding.hpp #usr/include/boost/type_erasure/exception.hpp #usr/include/boost/type_erasure/free.hpp #usr/include/boost/type_erasure/is_empty.hpp @@ -9921,12 +12469,31 @@ #usr/include/boost/type_erasure/placeholder.hpp #usr/include/boost/type_erasure/placeholder_of.hpp #usr/include/boost/type_erasure/rebind_any.hpp +#usr/include/boost/type_erasure/register_binding.hpp #usr/include/boost/type_erasure/relaxed.hpp #usr/include/boost/type_erasure/require_match.hpp #usr/include/boost/type_erasure/same_type.hpp #usr/include/boost/type_erasure/static_binding.hpp #usr/include/boost/type_erasure/tuple.hpp #usr/include/boost/type_erasure/typeid_of.hpp +#usr/include/boost/type_index +#usr/include/boost/type_index.hpp +#usr/include/boost/type_index/ctti_type_index.hpp +#usr/include/boost/type_index/detail +#usr/include/boost/type_index/detail/compile_time_type_info.hpp +#usr/include/boost/type_index/detail/ctti_register_class.hpp +#usr/include/boost/type_index/detail/stl_register_class.hpp +#usr/include/boost/type_index/runtime_cast +#usr/include/boost/type_index/runtime_cast.hpp +#usr/include/boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp +#usr/include/boost/type_index/runtime_cast/detail +#usr/include/boost/type_index/runtime_cast/detail/runtime_cast_impl.hpp +#usr/include/boost/type_index/runtime_cast/pointer_cast.hpp +#usr/include/boost/type_index/runtime_cast/reference_cast.hpp +#usr/include/boost/type_index/runtime_cast/register_runtime_class.hpp +#usr/include/boost/type_index/runtime_cast/std_shared_ptr_cast.hpp +#usr/include/boost/type_index/stl_type_index.hpp +#usr/include/boost/type_index/type_index_facade.hpp #usr/include/boost/type_traits #usr/include/boost/type_traits.hpp #usr/include/boost/type_traits/add_const.hpp @@ -9947,14 +12514,18 @@ #usr/include/boost/type_traits/conditional.hpp #usr/include/boost/type_traits/config.hpp #usr/include/boost/type_traits/conversion_traits.hpp +#usr/include/boost/type_traits/copy_cv.hpp #usr/include/boost/type_traits/cv_traits.hpp #usr/include/boost/type_traits/decay.hpp +#usr/include/boost/type_traits/declval.hpp #usr/include/boost/type_traits/detail #usr/include/boost/type_traits/detail/bool_trait_def.hpp #usr/include/boost/type_traits/detail/bool_trait_undef.hpp -#usr/include/boost/type_traits/detail/common_type_imp.hpp -#usr/include/boost/type_traits/detail/cv_traits_impl.hpp -#usr/include/boost/type_traits/detail/false_result.hpp +#usr/include/boost/type_traits/detail/common_arithmetic_type.hpp +#usr/include/boost/type_traits/detail/common_type_impl.hpp +#usr/include/boost/type_traits/detail/composite_member_pointer_type.hpp +#usr/include/boost/type_traits/detail/composite_pointer_type.hpp +#usr/include/boost/type_traits/detail/config.hpp #usr/include/boost/type_traits/detail/has_binary_operator.hpp #usr/include/boost/type_traits/detail/has_postfix_operator.hpp #usr/include/boost/type_traits/detail/has_prefix_operator.hpp @@ -9966,12 +12537,8 @@ #usr/include/boost/type_traits/detail/is_function_ptr_tester.hpp #usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp #usr/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp -#usr/include/boost/type_traits/detail/size_t_trait_def.hpp -#usr/include/boost/type_traits/detail/size_t_trait_undef.hpp +#usr/include/boost/type_traits/detail/mp_defer.hpp #usr/include/boost/type_traits/detail/template_arity_spec.hpp -#usr/include/boost/type_traits/detail/type_trait_def.hpp -#usr/include/boost/type_traits/detail/type_trait_undef.hpp -#usr/include/boost/type_traits/detail/wrap.hpp #usr/include/boost/type_traits/detail/yes_no_type.hpp #usr/include/boost/type_traits/extent.hpp #usr/include/boost/type_traits/floating_point_promotion.hpp @@ -10034,6 +12601,7 @@ #usr/include/boost/type_traits/is_abstract.hpp #usr/include/boost/type_traits/is_arithmetic.hpp #usr/include/boost/type_traits/is_array.hpp +#usr/include/boost/type_traits/is_assignable.hpp #usr/include/boost/type_traits/is_base_and_derived.hpp #usr/include/boost/type_traits/is_base_of.hpp #usr/include/boost/type_traits/is_base_of_tr1.hpp @@ -10041,10 +12609,15 @@ #usr/include/boost/type_traits/is_complex.hpp #usr/include/boost/type_traits/is_compound.hpp #usr/include/boost/type_traits/is_const.hpp +#usr/include/boost/type_traits/is_constructible.hpp #usr/include/boost/type_traits/is_convertible.hpp +#usr/include/boost/type_traits/is_copy_assignable.hpp #usr/include/boost/type_traits/is_copy_constructible.hpp +#usr/include/boost/type_traits/is_default_constructible.hpp +#usr/include/boost/type_traits/is_destructible.hpp #usr/include/boost/type_traits/is_empty.hpp #usr/include/boost/type_traits/is_enum.hpp +#usr/include/boost/type_traits/is_final.hpp #usr/include/boost/type_traits/is_float.hpp #usr/include/boost/type_traits/is_floating_point.hpp #usr/include/boost/type_traits/is_function.hpp @@ -10073,16 +12646,7 @@ #usr/include/boost/type_traits/is_volatile.hpp #usr/include/boost/type_traits/make_signed.hpp #usr/include/boost/type_traits/make_unsigned.hpp -#usr/include/boost/type_traits/msvc -#usr/include/boost/type_traits/msvc/remove_all_extents.hpp -#usr/include/boost/type_traits/msvc/remove_bounds.hpp -#usr/include/boost/type_traits/msvc/remove_const.hpp -#usr/include/boost/type_traits/msvc/remove_cv.hpp -#usr/include/boost/type_traits/msvc/remove_extent.hpp -#usr/include/boost/type_traits/msvc/remove_pointer.hpp -#usr/include/boost/type_traits/msvc/remove_reference.hpp -#usr/include/boost/type_traits/msvc/remove_volatile.hpp -#usr/include/boost/type_traits/msvc/typeof.hpp +#usr/include/boost/type_traits/make_void.hpp #usr/include/boost/type_traits/object_traits.hpp #usr/include/boost/type_traits/promote.hpp #usr/include/boost/type_traits/rank.hpp @@ -10097,7 +12661,7 @@ #usr/include/boost/type_traits/remove_volatile.hpp #usr/include/boost/type_traits/same_traits.hpp #usr/include/boost/type_traits/transform_traits.hpp -#usr/include/boost/type_traits/transform_traits_spec.hpp +#usr/include/boost/type_traits/type_identity.hpp #usr/include/boost/type_traits/type_with_alignment.hpp #usr/include/boost/typeof #usr/include/boost/typeof/dmc @@ -10199,6 +12763,12 @@ #usr/include/boost/units/base_units/imperial/thou.hpp #usr/include/boost/units/base_units/imperial/ton.hpp #usr/include/boost/units/base_units/imperial/yard.hpp +#usr/include/boost/units/base_units/information +#usr/include/boost/units/base_units/information/bit.hpp +#usr/include/boost/units/base_units/information/byte.hpp +#usr/include/boost/units/base_units/information/hartley.hpp +#usr/include/boost/units/base_units/information/nat.hpp +#usr/include/boost/units/base_units/information/shannon.hpp #usr/include/boost/units/base_units/metric #usr/include/boost/units/base_units/metric/angstrom.hpp #usr/include/boost/units/base_units/metric/are.hpp @@ -10329,6 +12899,7 @@ #usr/include/boost/units/physical_dimensions/illuminance.hpp #usr/include/boost/units/physical_dimensions/impedance.hpp #usr/include/boost/units/physical_dimensions/inductance.hpp +#usr/include/boost/units/physical_dimensions/information.hpp #usr/include/boost/units/physical_dimensions/kinematic_viscosity.hpp #usr/include/boost/units/physical_dimensions/length.hpp #usr/include/boost/units/physical_dimensions/luminance.hpp @@ -10403,6 +12974,14 @@ #usr/include/boost/units/systems/cgs/wavenumber.hpp #usr/include/boost/units/systems/detail #usr/include/boost/units/systems/detail/constants.hpp +#usr/include/boost/units/systems/information +#usr/include/boost/units/systems/information.hpp +#usr/include/boost/units/systems/information/bit.hpp +#usr/include/boost/units/systems/information/byte.hpp +#usr/include/boost/units/systems/information/hartley.hpp +#usr/include/boost/units/systems/information/nat.hpp +#usr/include/boost/units/systems/information/prefixes.hpp +#usr/include/boost/units/systems/information/shannon.hpp #usr/include/boost/units/systems/si #usr/include/boost/units/systems/si.hpp #usr/include/boost/units/systems/si/absorbed_dose.hpp @@ -10484,14 +13063,10 @@ #usr/include/boost/units/units_fwd.hpp #usr/include/boost/unordered #usr/include/boost/unordered/detail -#usr/include/boost/unordered/detail/allocate.hpp -#usr/include/boost/unordered/detail/buckets.hpp -#usr/include/boost/unordered/detail/equivalent.hpp -#usr/include/boost/unordered/detail/extract_key.hpp #usr/include/boost/unordered/detail/fwd.hpp -#usr/include/boost/unordered/detail/table.hpp -#usr/include/boost/unordered/detail/unique.hpp -#usr/include/boost/unordered/detail/util.hpp +#usr/include/boost/unordered/detail/implementation.hpp +#usr/include/boost/unordered/detail/map.hpp +#usr/include/boost/unordered/detail/set.hpp #usr/include/boost/unordered/unordered_map.hpp #usr/include/boost/unordered/unordered_map_fwd.hpp #usr/include/boost/unordered/unordered_set.hpp @@ -10517,10 +13092,16 @@ #usr/include/boost/utility/result_of.hpp #usr/include/boost/utility/string_ref.hpp #usr/include/boost/utility/string_ref_fwd.hpp +#usr/include/boost/utility/string_view.hpp +#usr/include/boost/utility/string_view_fwd.hpp #usr/include/boost/utility/swap.hpp #usr/include/boost/utility/typed_in_place_factory.hpp #usr/include/boost/utility/value_init.hpp #usr/include/boost/uuid +#usr/include/boost/uuid/detail +#usr/include/boost/uuid/detail/config.hpp +#usr/include/boost/uuid/detail/uuid_generic.hpp +#usr/include/boost/uuid/detail/uuid_x86.hpp #usr/include/boost/uuid/name_generator.hpp #usr/include/boost/uuid/nil_generator.hpp #usr/include/boost/uuid/random_generator.hpp @@ -10540,18 +13121,21 @@ #usr/include/boost/variant/detail/apply_visitor_delayed.hpp #usr/include/boost/variant/detail/apply_visitor_unary.hpp #usr/include/boost/variant/detail/backup_holder.hpp -#usr/include/boost/variant/detail/bool_trait_def.hpp -#usr/include/boost/variant/detail/bool_trait_undef.hpp #usr/include/boost/variant/detail/cast_storage.hpp #usr/include/boost/variant/detail/config.hpp +#usr/include/boost/variant/detail/element_index.hpp #usr/include/boost/variant/detail/enable_recursive.hpp #usr/include/boost/variant/detail/enable_recursive_fwd.hpp #usr/include/boost/variant/detail/forced_return.hpp #usr/include/boost/variant/detail/generic_result_type.hpp +#usr/include/boost/variant/detail/has_result_type.hpp #usr/include/boost/variant/detail/hash_variant.hpp #usr/include/boost/variant/detail/initializer.hpp #usr/include/boost/variant/detail/make_variant_list.hpp #usr/include/boost/variant/detail/move.hpp +#usr/include/boost/variant/detail/multivisitors_cpp11_based.hpp +#usr/include/boost/variant/detail/multivisitors_cpp14_based.hpp +#usr/include/boost/variant/detail/multivisitors_preprocessor_based.hpp #usr/include/boost/variant/detail/over_sequence.hpp #usr/include/boost/variant/detail/substitute.hpp #usr/include/boost/variant/detail/substitute_fwd.hpp @@ -10559,6 +13143,7 @@ #usr/include/boost/variant/detail/visitation_impl.hpp #usr/include/boost/variant/get.hpp #usr/include/boost/variant/multivisitors.hpp +#usr/include/boost/variant/polymorphic_get.hpp #usr/include/boost/variant/recursive_variant.hpp #usr/include/boost/variant/recursive_wrapper.hpp #usr/include/boost/variant/recursive_wrapper_fwd.hpp @@ -10568,6 +13153,167 @@ #usr/include/boost/variant/visitor_ptr.hpp #usr/include/boost/version.hpp #usr/include/boost/visit_each.hpp +#usr/include/boost/vmd +#usr/include/boost/vmd/array +#usr/include/boost/vmd/array.hpp +#usr/include/boost/vmd/array/to_seq.hpp +#usr/include/boost/vmd/array/to_tuple.hpp +#usr/include/boost/vmd/assert.hpp +#usr/include/boost/vmd/assert_is_array.hpp +#usr/include/boost/vmd/assert_is_empty.hpp +#usr/include/boost/vmd/assert_is_identifier.hpp +#usr/include/boost/vmd/assert_is_list.hpp +#usr/include/boost/vmd/assert_is_number.hpp +#usr/include/boost/vmd/assert_is_seq.hpp +#usr/include/boost/vmd/assert_is_tuple.hpp +#usr/include/boost/vmd/assert_is_type.hpp +#usr/include/boost/vmd/detail +#usr/include/boost/vmd/detail/adjust_tuple_type.hpp +#usr/include/boost/vmd/detail/array.hpp +#usr/include/boost/vmd/detail/assert.hpp +#usr/include/boost/vmd/detail/data_equal.hpp +#usr/include/boost/vmd/detail/data_equal_common.hpp +#usr/include/boost/vmd/detail/empty_result.hpp +#usr/include/boost/vmd/detail/equal.hpp +#usr/include/boost/vmd/detail/equal_common.hpp +#usr/include/boost/vmd/detail/equal_type.hpp +#usr/include/boost/vmd/detail/identifier.hpp +#usr/include/boost/vmd/detail/identifier_concat.hpp +#usr/include/boost/vmd/detail/identifier_type.hpp +#usr/include/boost/vmd/detail/idprefix.hpp +#usr/include/boost/vmd/detail/is_array.hpp +#usr/include/boost/vmd/detail/is_array_common.hpp +#usr/include/boost/vmd/detail/is_empty.hpp +#usr/include/boost/vmd/detail/is_empty_array.hpp +#usr/include/boost/vmd/detail/is_empty_tuple.hpp +#usr/include/boost/vmd/detail/is_entire.hpp +#usr/include/boost/vmd/detail/is_identifier.hpp +#usr/include/boost/vmd/detail/is_list.hpp +#usr/include/boost/vmd/detail/is_number.hpp +#usr/include/boost/vmd/detail/is_seq.hpp +#usr/include/boost/vmd/detail/is_tuple.hpp +#usr/include/boost/vmd/detail/is_type.hpp +#usr/include/boost/vmd/detail/is_type_type.hpp +#usr/include/boost/vmd/detail/list.hpp +#usr/include/boost/vmd/detail/match_identifier.hpp +#usr/include/boost/vmd/detail/match_identifier_common.hpp +#usr/include/boost/vmd/detail/match_single_identifier.hpp +#usr/include/boost/vmd/detail/modifiers.hpp +#usr/include/boost/vmd/detail/mods.hpp +#usr/include/boost/vmd/detail/nil_registration.hpp +#usr/include/boost/vmd/detail/not_empty.hpp +#usr/include/boost/vmd/detail/number_registration.hpp +#usr/include/boost/vmd/detail/only_after.hpp +#usr/include/boost/vmd/detail/parens.hpp +#usr/include/boost/vmd/detail/parens_common.hpp +#usr/include/boost/vmd/detail/parens_split.hpp +#usr/include/boost/vmd/detail/recurse +#usr/include/boost/vmd/detail/recurse/data_equal +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_1.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_10.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_11.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_12.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_13.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_14.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_15.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_16.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_2.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_3.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_4.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_5.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_6.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_7.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_8.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_9.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_headers.hpp +#usr/include/boost/vmd/detail/recurse/data_equal/data_equal_specific.hpp +#usr/include/boost/vmd/detail/recurse/equal +#usr/include/boost/vmd/detail/recurse/equal/equal_1.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_10.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_11.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_12.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_13.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_14.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_15.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_16.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_2.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_3.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_4.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_5.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_6.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_7.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_8.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_9.hpp +#usr/include/boost/vmd/detail/recurse/equal/equal_headers.hpp +#usr/include/boost/vmd/detail/seq.hpp +#usr/include/boost/vmd/detail/sequence_arity.hpp +#usr/include/boost/vmd/detail/sequence_common.hpp +#usr/include/boost/vmd/detail/sequence_elem.hpp +#usr/include/boost/vmd/detail/sequence_enum.hpp +#usr/include/boost/vmd/detail/sequence_size.hpp +#usr/include/boost/vmd/detail/sequence_to_array.hpp +#usr/include/boost/vmd/detail/sequence_to_list.hpp +#usr/include/boost/vmd/detail/sequence_to_seq.hpp +#usr/include/boost/vmd/detail/sequence_to_tuple.hpp +#usr/include/boost/vmd/detail/sequence_type.hpp +#usr/include/boost/vmd/detail/setup.hpp +#usr/include/boost/vmd/detail/tuple.hpp +#usr/include/boost/vmd/detail/type_registration.hpp +#usr/include/boost/vmd/detail/variadic_pop_front.hpp +#usr/include/boost/vmd/elem.hpp +#usr/include/boost/vmd/empty.hpp +#usr/include/boost/vmd/enum.hpp +#usr/include/boost/vmd/equal.hpp +#usr/include/boost/vmd/get_type.hpp +#usr/include/boost/vmd/identity.hpp +#usr/include/boost/vmd/is_array.hpp +#usr/include/boost/vmd/is_empty.hpp +#usr/include/boost/vmd/is_empty_array.hpp +#usr/include/boost/vmd/is_empty_list.hpp +#usr/include/boost/vmd/is_identifier.hpp +#usr/include/boost/vmd/is_list.hpp +#usr/include/boost/vmd/is_multi.hpp +#usr/include/boost/vmd/is_number.hpp +#usr/include/boost/vmd/is_parens_empty.hpp +#usr/include/boost/vmd/is_seq.hpp +#usr/include/boost/vmd/is_tuple.hpp +#usr/include/boost/vmd/is_type.hpp +#usr/include/boost/vmd/is_unary.hpp +#usr/include/boost/vmd/list +#usr/include/boost/vmd/list.hpp +#usr/include/boost/vmd/list/to_seq.hpp +#usr/include/boost/vmd/list/to_tuple.hpp +#usr/include/boost/vmd/not_equal.hpp +#usr/include/boost/vmd/seq +#usr/include/boost/vmd/seq.hpp +#usr/include/boost/vmd/seq/is_vmd_seq.hpp +#usr/include/boost/vmd/seq/pop_back.hpp +#usr/include/boost/vmd/seq/pop_front.hpp +#usr/include/boost/vmd/seq/push_back.hpp +#usr/include/boost/vmd/seq/push_front.hpp +#usr/include/boost/vmd/seq/remove.hpp +#usr/include/boost/vmd/seq/size.hpp +#usr/include/boost/vmd/seq/to_array.hpp +#usr/include/boost/vmd/seq/to_list.hpp +#usr/include/boost/vmd/seq/to_tuple.hpp +#usr/include/boost/vmd/size.hpp +#usr/include/boost/vmd/to_array.hpp +#usr/include/boost/vmd/to_list.hpp +#usr/include/boost/vmd/to_seq.hpp +#usr/include/boost/vmd/to_tuple.hpp +#usr/include/boost/vmd/tuple +#usr/include/boost/vmd/tuple.hpp +#usr/include/boost/vmd/tuple/is_vmd_tuple.hpp +#usr/include/boost/vmd/tuple/pop_back.hpp +#usr/include/boost/vmd/tuple/pop_front.hpp +#usr/include/boost/vmd/tuple/push_back.hpp +#usr/include/boost/vmd/tuple/push_front.hpp +#usr/include/boost/vmd/tuple/remove.hpp +#usr/include/boost/vmd/tuple/size.hpp +#usr/include/boost/vmd/tuple/to_array.hpp +#usr/include/boost/vmd/tuple/to_list.hpp +#usr/include/boost/vmd/tuple/to_seq.hpp +#usr/include/boost/vmd/vmd.hpp #usr/include/boost/wave #usr/include/boost/wave.hpp #usr/include/boost/wave/cpp_context.hpp @@ -10769,170 +13515,185 @@ #usr/include/boost/xpressive/xpressive_typeof.hpp #usr/lib/libboost_atomic-mt.a #usr/lib/libboost_atomic-mt.so -usr/lib/libboost_atomic-mt.so.1.55.0 +usr/lib/libboost_atomic-mt.so.1.64.0 #usr/lib/libboost_chrono-mt.a #usr/lib/libboost_chrono-mt.so -usr/lib/libboost_chrono-mt.so.1.55.0 +usr/lib/libboost_chrono-mt.so.1.64.0 #usr/lib/libboost_chrono.a #usr/lib/libboost_chrono.so -usr/lib/libboost_chrono.so.1.55.0 +usr/lib/libboost_chrono.so.1.64.0 +#usr/lib/libboost_container-mt.a +#usr/lib/libboost_container-mt.so +usr/lib/libboost_container-mt.so.1.64.0 +#usr/lib/libboost_container.a +#usr/lib/libboost_container.so +usr/lib/libboost_container.so.1.64.0 #usr/lib/libboost_context-mt.a #usr/lib/libboost_context-mt.so -usr/lib/libboost_context-mt.so.1.55.0 -#usr/lib/libboost_context.a -#usr/lib/libboost_context.so -usr/lib/libboost_context.so.1.55.0 +usr/lib/libboost_context-mt.so.1.64.0 #usr/lib/libboost_coroutine-mt.a #usr/lib/libboost_coroutine-mt.so -usr/lib/libboost_coroutine-mt.so.1.55.0 +usr/lib/libboost_coroutine-mt.so.1.64.0 #usr/lib/libboost_coroutine.a #usr/lib/libboost_coroutine.so -usr/lib/libboost_coroutine.so.1.55.0 +usr/lib/libboost_coroutine.so.1.64.0 #usr/lib/libboost_date_time-mt.a #usr/lib/libboost_date_time-mt.so -usr/lib/libboost_date_time-mt.so.1.55.0 +usr/lib/libboost_date_time-mt.so.1.64.0 #usr/lib/libboost_date_time.a #usr/lib/libboost_date_time.so -usr/lib/libboost_date_time.so.1.55.0 +usr/lib/libboost_date_time.so.1.64.0 #usr/lib/libboost_exception-mt.a #usr/lib/libboost_exception.a +#usr/lib/libboost_fiber-mt.a +#usr/lib/libboost_fiber-mt.so +usr/lib/libboost_fiber-mt.so.1.64.0 #usr/lib/libboost_filesystem-mt.a #usr/lib/libboost_filesystem-mt.so -usr/lib/libboost_filesystem-mt.so.1.55.0 +usr/lib/libboost_filesystem-mt.so.1.64.0 #usr/lib/libboost_filesystem.a #usr/lib/libboost_filesystem.so -usr/lib/libboost_filesystem.so.1.55.0 +usr/lib/libboost_filesystem.so.1.64.0 #usr/lib/libboost_graph-mt.a #usr/lib/libboost_graph-mt.so -usr/lib/libboost_graph-mt.so.1.55.0 +usr/lib/libboost_graph-mt.so.1.64.0 #usr/lib/libboost_graph.a #usr/lib/libboost_graph.so -usr/lib/libboost_graph.so.1.55.0 +usr/lib/libboost_graph.so.1.64.0 #usr/lib/libboost_iostreams-mt.a #usr/lib/libboost_iostreams-mt.so -usr/lib/libboost_iostreams-mt.so.1.55.0 +usr/lib/libboost_iostreams-mt.so.1.64.0 #usr/lib/libboost_iostreams.a #usr/lib/libboost_iostreams.so -usr/lib/libboost_iostreams.so.1.55.0 +usr/lib/libboost_iostreams.so.1.64.0 #usr/lib/libboost_locale-mt.a #usr/lib/libboost_locale-mt.so -usr/lib/libboost_locale-mt.so.1.55.0 +usr/lib/libboost_locale-mt.so.1.64.0 #usr/lib/libboost_log-mt.a #usr/lib/libboost_log-mt.so -usr/lib/libboost_log-mt.so.1.55.0 +usr/lib/libboost_log-mt.so.1.64.0 #usr/lib/libboost_log.a #usr/lib/libboost_log.so -usr/lib/libboost_log.so.1.55.0 +usr/lib/libboost_log.so.1.64.0 #usr/lib/libboost_log_setup-mt.a #usr/lib/libboost_log_setup-mt.so -usr/lib/libboost_log_setup-mt.so.1.55.0 +usr/lib/libboost_log_setup-mt.so.1.64.0 #usr/lib/libboost_log_setup.a #usr/lib/libboost_log_setup.so -usr/lib/libboost_log_setup.so.1.55.0 +usr/lib/libboost_log_setup.so.1.64.0 #usr/lib/libboost_math_c99-mt.a #usr/lib/libboost_math_c99-mt.so -usr/lib/libboost_math_c99-mt.so.1.55.0 +usr/lib/libboost_math_c99-mt.so.1.64.0 #usr/lib/libboost_math_c99.a #usr/lib/libboost_math_c99.so -usr/lib/libboost_math_c99.so.1.55.0 +usr/lib/libboost_math_c99.so.1.64.0 #usr/lib/libboost_math_c99f-mt.a #usr/lib/libboost_math_c99f-mt.so -usr/lib/libboost_math_c99f-mt.so.1.55.0 +usr/lib/libboost_math_c99f-mt.so.1.64.0 #usr/lib/libboost_math_c99f.a #usr/lib/libboost_math_c99f.so -usr/lib/libboost_math_c99f.so.1.55.0 +usr/lib/libboost_math_c99f.so.1.64.0 #usr/lib/libboost_math_c99l-mt.a #usr/lib/libboost_math_c99l-mt.so -usr/lib/libboost_math_c99l-mt.so.1.55.0 +usr/lib/libboost_math_c99l-mt.so.1.64.0 #usr/lib/libboost_math_c99l.a #usr/lib/libboost_math_c99l.so -#usr/lib/libboost_math_c99l.so.1.55.0 +usr/lib/libboost_math_c99l.so.1.64.0 #usr/lib/libboost_math_tr1-mt.a #usr/lib/libboost_math_tr1-mt.so -usr/lib/libboost_math_tr1-mt.so.1.55.0 +usr/lib/libboost_math_tr1-mt.so.1.64.0 #usr/lib/libboost_math_tr1.a #usr/lib/libboost_math_tr1.so -usr/lib/libboost_math_tr1.so.1.55.0 +usr/lib/libboost_math_tr1.so.1.64.0 #usr/lib/libboost_math_tr1f-mt.a #usr/lib/libboost_math_tr1f-mt.so -usr/lib/libboost_math_tr1f-mt.so.1.55.0 +usr/lib/libboost_math_tr1f-mt.so.1.64.0 #usr/lib/libboost_math_tr1f.a #usr/lib/libboost_math_tr1f.so -usr/lib/libboost_math_tr1f.so.1.55.0 +usr/lib/libboost_math_tr1f.so.1.64.0 #usr/lib/libboost_math_tr1l-mt.a #usr/lib/libboost_math_tr1l-mt.so -usr/lib/libboost_math_tr1l-mt.so.1.55.0 +usr/lib/libboost_math_tr1l-mt.so.1.64.0 #usr/lib/libboost_math_tr1l.a #usr/lib/libboost_math_tr1l.so -usr/lib/libboost_math_tr1l.so.1.55.0 +usr/lib/libboost_math_tr1l.so.1.64.0 #usr/lib/libboost_prg_exec_monitor-mt.a #usr/lib/libboost_prg_exec_monitor-mt.so -usr/lib/libboost_prg_exec_monitor-mt.so.1.55.0 +usr/lib/libboost_prg_exec_monitor-mt.so.1.64.0 #usr/lib/libboost_prg_exec_monitor.a #usr/lib/libboost_prg_exec_monitor.so -usr/lib/libboost_prg_exec_monitor.so.1.55.0 +usr/lib/libboost_prg_exec_monitor.so.1.64.0 #usr/lib/libboost_program_options-mt.a #usr/lib/libboost_program_options-mt.so -usr/lib/libboost_program_options-mt.so.1.55.0 +usr/lib/libboost_program_options-mt.so.1.64.0 #usr/lib/libboost_program_options.a #usr/lib/libboost_program_options.so -usr/lib/libboost_program_options.so.1.55.0 +usr/lib/libboost_program_options.so.1.64.0 +#usr/lib/libboost_python-mt.a +#usr/lib/libboost_python-mt.so +usr/lib/libboost_python-mt.so.1.64.0 +#usr/lib/libboost_python.a +#usr/lib/libboost_python.so +usr/lib/libboost_python.so.1.64.0 #usr/lib/libboost_random-mt.a #usr/lib/libboost_random-mt.so -usr/lib/libboost_random-mt.so.1.55.0 +usr/lib/libboost_random-mt.so.1.64.0 #usr/lib/libboost_random.a #usr/lib/libboost_random.so -usr/lib/libboost_random.so.1.55.0 +usr/lib/libboost_random.so.1.64.0 #usr/lib/libboost_regex-mt.a #usr/lib/libboost_regex-mt.so -usr/lib/libboost_regex-mt.so.1.55.0 +usr/lib/libboost_regex-mt.so.1.64.0 #usr/lib/libboost_regex.a #usr/lib/libboost_regex.so -usr/lib/libboost_regex.so.1.55.0 +usr/lib/libboost_regex.so.1.64.0 #usr/lib/libboost_serialization-mt.a #usr/lib/libboost_serialization-mt.so -usr/lib/libboost_serialization-mt.so.1.55.0 +usr/lib/libboost_serialization-mt.so.1.64.0 #usr/lib/libboost_serialization.a #usr/lib/libboost_serialization.so -usr/lib/libboost_serialization.so.1.55.0 +usr/lib/libboost_serialization.so.1.64.0 #usr/lib/libboost_signals-mt.a #usr/lib/libboost_signals-mt.so -usr/lib/libboost_signals-mt.so.1.55.0 +usr/lib/libboost_signals-mt.so.1.64.0 #usr/lib/libboost_signals.a #usr/lib/libboost_signals.so -usr/lib/libboost_signals.so.1.55.0 +usr/lib/libboost_signals.so.1.64.0 #usr/lib/libboost_system-mt.a #usr/lib/libboost_system-mt.so -usr/lib/libboost_system-mt.so.1.55.0 +usr/lib/libboost_system-mt.so.1.64.0 #usr/lib/libboost_system.a #usr/lib/libboost_system.so -usr/lib/libboost_system.so.1.55.0 +usr/lib/libboost_system.so.1.64.0 #usr/lib/libboost_test_exec_monitor-mt.a #usr/lib/libboost_test_exec_monitor.a #usr/lib/libboost_thread-mt.a #usr/lib/libboost_thread-mt.so -usr/lib/libboost_thread-mt.so.1.55.0 +usr/lib/libboost_thread-mt.so.1.64.0 #usr/lib/libboost_timer-mt.a #usr/lib/libboost_timer-mt.so -usr/lib/libboost_timer-mt.so.1.55.0 +usr/lib/libboost_timer-mt.so.1.64.0 #usr/lib/libboost_timer.a #usr/lib/libboost_timer.so -usr/lib/libboost_timer.so.1.55.0 +usr/lib/libboost_timer.so.1.64.0 +#usr/lib/libboost_type_erasure-mt.a +#usr/lib/libboost_type_erasure-mt.so +usr/lib/libboost_type_erasure-mt.so.1.64.0 +#usr/lib/libboost_type_erasure.a +#usr/lib/libboost_type_erasure.so +usr/lib/libboost_type_erasure.so.1.64.0 #usr/lib/libboost_unit_test_framework-mt.a #usr/lib/libboost_unit_test_framework-mt.so -usr/lib/libboost_unit_test_framework-mt.so.1.55.0 +usr/lib/libboost_unit_test_framework-mt.so.1.64.0 #usr/lib/libboost_unit_test_framework.a #usr/lib/libboost_unit_test_framework.so -usr/lib/libboost_unit_test_framework.so.1.55.0 +usr/lib/libboost_unit_test_framework.so.1.64.0 #usr/lib/libboost_wave-mt.a #usr/lib/libboost_wave-mt.so -usr/lib/libboost_wave-mt.so.1.55.0 -#usr/lib/libboost_wave.a -#usr/lib/libboost_wave.so -usr/lib/libboost_wave.so.1.55.0 +usr/lib/libboost_wave-mt.so.1.64.0 #usr/lib/libboost_wserialization-mt.a #usr/lib/libboost_wserialization-mt.so -usr/lib/libboost_wserialization-mt.so.1.55.0 +usr/lib/libboost_wserialization-mt.so.1.64.0 #usr/lib/libboost_wserialization.a #usr/lib/libboost_wserialization.so -usr/lib/libboost_wserialization.so.1.55.0 +usr/lib/libboost_wserialization.so.1.64.0 diff --git a/lfs/boost b/lfs/boost index 12c0a5bf3..6c47f582b 100644 --- a/lfs/boost +++ b/lfs/boost @@ -24,7 +24,7 @@ include Config -VER = 1_55_0 +VER = 1_64_0 THISAPP = boost_$(VER) DL_FILE = $(THISAPP).tar.gz @@ -58,7 +58,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 93780777cfbf999a600f62883bd54b17 +$(DL_FILE)_MD5 = 319c6ffbbeccc366f14bb68767a6db79 install : $(TARGET) From 28948acec79cf0bf4893de029d8cb9ad6031da76 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 6 May 2017 14:04:12 +0200 Subject: [PATCH 388/464] dfb++: Drop package This does not seem to be needed by anything Signed-off-by: Michael Tremer --- config/rootfiles/packages/dfb++ | 22 --------- lfs/dfb++ | 86 --------------------------------- make.sh | 1 - 3 files changed, 109 deletions(-) delete mode 100644 config/rootfiles/packages/dfb++ delete mode 100644 lfs/dfb++ diff --git a/config/rootfiles/packages/dfb++ b/config/rootfiles/packages/dfb++ deleted file mode 100644 index 04a323d0b..000000000 --- a/config/rootfiles/packages/dfb++ +++ /dev/null @@ -1,22 +0,0 @@ -usr/bin/dfb++-config -usr/bin/dfbshow -usr/bin/dfbswitch -#usr/include/dfb++ -#usr/include/dfb++/dfb++.h -#usr/include/dfb++/idirectfb.h -#usr/include/dfb++/idirectfbdatabuffer.h -#usr/include/dfb++/idirectfbdisplaylayer.h -#usr/include/dfb++/idirectfbeventbuffer.h -#usr/include/dfb++/idirectfbfont.h -#usr/include/dfb++/idirectfbimageprovider.h -#usr/include/dfb++/idirectfbinputdevice.h -#usr/include/dfb++/idirectfbpalette.h -#usr/include/dfb++/idirectfbscreen.h -#usr/include/dfb++/idirectfbsurface.h -#usr/include/dfb++/idirectfbvideoprovider.h -#usr/include/dfb++/idirectfbwindow.h -usr/lib/libdfb++-1.0.so.0 -usr/lib/libdfb++-1.0.so.0.0.0 -#usr/lib/libdfb++.la -usr/lib/libdfb++.so -#usr/lib/pkgconfig/dfb++.pc diff --git a/lfs/dfb++ b/lfs/dfb++ deleted file mode 100644 index 56c01d140..000000000 --- a/lfs/dfb++ +++ /dev/null @@ -1,86 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.0 - -THISAPP = DFB++-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = dfb++ -PAK_VER = 1 - -DEPS = "directfb" - - - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = c7d0b98bcc648a25ff11bfc74635f4ca - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr - cd $(DIR_APP) && make $(MAKETUNING) - cd $(DIR_APP) && make install - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index fcf2a562f..90338bc25 100755 --- a/make.sh +++ b/make.sh @@ -737,7 +737,6 @@ buildipfire() { lfsmake2 icinga lfsmake2 ebtables lfsmake2 directfb - lfsmake2 dfb++ lfsmake2 faad2 lfsmake2 ffmpeg lfsmake2 vdr From 7ba9c8cd7a3ae9cb832261378322672c84b5cf4f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 6 May 2017 10:28:45 +0200 Subject: [PATCH 389/464] ipset: Don't (re-)build kernel module here The reason why this comes up is that we currently don't build a kernel for aarch64 and therefore building ipset fails. Signed-off-by: Michael Tremer --- lfs/ipset | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lfs/ipset b/lfs/ipset index e92d43fcb..7c43b308c 100644 --- a/lfs/ipset +++ b/lfs/ipset @@ -71,8 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./autogen.sh - cd $(DIR_APP) && KSOURCEDIR=/usr/src/linux KBUILDDIR=/usr/src/linux ./configure \ + cd $(DIR_APP) && ./configure \ --prefix=/usr \ + --with-kmod=no \ --disable-static # Add configuration directory From ae294f15e9e63b823d479981d5958620b28cecf8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 5 May 2017 13:30:20 +0200 Subject: [PATCH 390/464] directfb: Update to 1.7.7 Signed-off-by: Michael Tremer --- lfs/directfb | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lfs/directfb b/lfs/directfb index 1b5d3a925..436fd92c6 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -24,7 +24,7 @@ include Config -VER = 1.1.1 +VER = 1.7.7 THISAPP = DirectFB-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = directfb -PAK_VER = 2 +PAK_VER = 3 DEPS = "" @@ -46,7 +46,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c75255049ca8d5c69afe4db58f603028 +$(DL_FILE)_MD5 = 152cf1863b1a3a28aa1370e9053440bf install : $(TARGET) @@ -79,14 +79,12 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/directfb-1.1.1-fix-mknod.patch - cd $(DIR_APP) && sed -i "s/checkfor_matrox=yes/checkfor_matrox=no/g" configure - cd $(DIR_APP) && sed -i "s/checkfor_cle266=no/checkfor_cle266=yes/g" configure - cd $(DIR_APP) && sed -i "s/checkfor_omap=.*/checkfor_omap=no/g" configure - cd $(DIR_APP) && ./configure --prefix=/usr --disable-x11 --enable-sdl \ - --enable-video4linux2 + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --disable-x11 \ + --enable-sdl \ + --enable-video4linux2 cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - ln -s $(THISAPP) /usr/src/directfb @rm -rf $(DIR_APP) @$(POSTBUILD) From fc07307f9a964f6b6d33c356727ac76f07e5bd59 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 3 May 2017 19:12:31 +0200 Subject: [PATCH 391/464] Drop vdr_vnsiserver5 Signed-off-by: Michael Tremer --- config/rootfiles/packages/vdr_vnsiserver5 | 4 - config/vdr/plugins.d/vnsiserver3.conf | 5 -- config/vdr/plugins.d/vnsiserver5.conf | 5 -- lfs/vdr_vnsiserver5 | 99 ----------------------- make.sh | 1 - src/paks/vdr_vnsiserver5/install.sh | 27 ------- src/paks/vdr_vnsiserver5/uninstall.sh | 27 ------- src/paks/vdr_vnsiserver5/update.sh | 26 ------ 8 files changed, 194 deletions(-) delete mode 100644 config/rootfiles/packages/vdr_vnsiserver5 delete mode 100644 config/vdr/plugins.d/vnsiserver3.conf delete mode 100644 config/vdr/plugins.d/vnsiserver5.conf delete mode 100644 lfs/vdr_vnsiserver5 delete mode 100644 src/paks/vdr_vnsiserver5/install.sh delete mode 100644 src/paks/vdr_vnsiserver5/uninstall.sh delete mode 100644 src/paks/vdr_vnsiserver5/update.sh diff --git a/config/rootfiles/packages/vdr_vnsiserver5 b/config/rootfiles/packages/vdr_vnsiserver5 deleted file mode 100644 index 9b27e975f..000000000 --- a/config/rootfiles/packages/vdr_vnsiserver5 +++ /dev/null @@ -1,4 +0,0 @@ -etc/sysconfig/vdr-plugins.d/vnsiserver5.conf -etc/vdr/plugins/vnsiserver5 -etc/vdr/plugins/vnsiserver5/allowed_hosts.conf -usr/lib/vdr/libvdr-vnsiserver5.so.2.0.0 diff --git a/config/vdr/plugins.d/vnsiserver3.conf b/config/vdr/plugins.d/vnsiserver3.conf deleted file mode 100644 index 7c9706d1c..000000000 --- a/config/vdr/plugins.d/vnsiserver3.conf +++ /dev/null @@ -1,5 +0,0 @@ -# Configuration snippet for vdr-vnsiserver3 -*- sh -*- -# -# Add command line options to pass to the vnsiserver3 plugin to PLUGIN_OPTIONS. - -PLUGIN_OPTIONS="" diff --git a/config/vdr/plugins.d/vnsiserver5.conf b/config/vdr/plugins.d/vnsiserver5.conf deleted file mode 100644 index 561552db5..000000000 --- a/config/vdr/plugins.d/vnsiserver5.conf +++ /dev/null @@ -1,5 +0,0 @@ -# Configuration snippet for vdr-vnsiserver5 -*- sh -*- -# -# Add command line options to pass to the vnsiserver5 plugin to PLUGIN_OPTIONS. - -PLUGIN_OPTIONS="" diff --git a/lfs/vdr_vnsiserver5 b/lfs/vdr_vnsiserver5 deleted file mode 100644 index 041641617..000000000 --- a/lfs/vdr_vnsiserver5 +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.0 -THISAPP = vdr-vnsiserver5-$(VER) -DL_FILE = $(THISAPP).tar.gz - -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = vdr_vnsiserver5 -PAK_VER = 1 - -DEPS = "vdr" - -VDRPLUGVER = 2.0.0 - -EXTRA_FLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -CFLAGS += $(EXTRA_FLAGS) -CXXFLAGS += $(EXTRA_FLAGS) - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 3d1a0b21d11187e43a56f9e4cf7cb1c9 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download : $(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && make $(MAKE_TUNING) LIBDIR=. VDRDIR=/usr/lib/vdr \ - CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \ - LOCALEDIR=$$(pwd)/locale all - - -mkdir -pv /etc/vdr/plugins/vnsiserver5 - cd $(DIR_APP) && install -m 755 libvdr-vnsiserver5.so \ - /usr/lib/vdr/libvdr-vnsiserver5.so.$(VDRPLUGVER) - ln -svf ../../svdrphosts.conf /etc/vdr/plugins/vnsiserver5/allowed_hosts.conf - install -m 644 $(DIR_SRC)/config/vdr/plugins.d/vnsiserver5.conf \ - /etc/sysconfig/vdr-plugins.d - - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 90338bc25..f7ca674b1 100755 --- a/make.sh +++ b/make.sh @@ -741,7 +741,6 @@ buildipfire() { lfsmake2 ffmpeg lfsmake2 vdr lfsmake2 vdr_streamdev - lfsmake2 vdr_vnsiserver5 lfsmake2 vdr_epgsearch lfsmake2 vdr_dvbapi lfsmake2 vdr_eepg diff --git a/src/paks/vdr_vnsiserver5/install.sh b/src/paks/vdr_vnsiserver5/install.sh deleted file mode 100644 index 3bb613eab..000000000 --- a/src/paks/vdr_vnsiserver5/install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service vdr -extract_files -start_service --background vdr diff --git a/src/paks/vdr_vnsiserver5/uninstall.sh b/src/paks/vdr_vnsiserver5/uninstall.sh deleted file mode 100644 index cb554466c..000000000 --- a/src/paks/vdr_vnsiserver5/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service vdr -remove_files -start_service vdr --background diff --git a/src/paks/vdr_vnsiserver5/update.sh b/src/paks/vdr_vnsiserver5/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/vdr_vnsiserver5/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh From 628e8c3a0005d9f710fd39b4d8bd4581b83cd08f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 12:24:49 +0100 Subject: [PATCH 392/464] Bump toolchain version Signed-off-by: Michael Tremer --- make.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/make.sh b/make.sh index f7ca674b1..9314ae942 100755 --- a/make.sh +++ b/make.sh @@ -36,7 +36,8 @@ BUILD_IMAGES=1 # Flash and Xen Downloader KVER=`grep --max-count=1 VER lfs/linux | awk '{ print $3 }'` GIT_TAG=$(git tag | tail -1) # Git Tag GIT_LASTCOMMIT=$(git log | head -n1 | cut -d" " -f2 |head -c8) # Last commit -TOOLCHAINVER=12 + +TOOLCHAINVER=20170518 # New architecture variables HOST_ARCH="$(uname -m)" From bbfeb48f9fb8ad5923d753e002ebf1011b3bd971 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 16:40:54 +0100 Subject: [PATCH 393/464] Rootfile update Signed-off-by: Michael Tremer --- config/rootfiles/common/cpio | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/config/rootfiles/common/cpio b/config/rootfiles/common/cpio index 53bb1e0aa..26ca6f376 100644 --- a/config/rootfiles/common/cpio +++ b/config/rootfiles/common/cpio @@ -1,32 +1,28 @@ bin/cpio -bin/mt #usr/share/info/cpio.info #usr/share/locale/da/LC_MESSAGES/cpio.mo #usr/share/locale/de/LC_MESSAGES/cpio.mo #usr/share/locale/es/LC_MESSAGES/cpio.mo #usr/share/locale/fi/LC_MESSAGES/cpio.mo #usr/share/locale/fr/LC_MESSAGES/cpio.mo -#usr/share/locale/ga -#usr/share/locale/ga/LC_MESSAGES #usr/share/locale/ga/LC_MESSAGES/cpio.mo #usr/share/locale/gl/LC_MESSAGES/cpio.mo +#usr/share/locale/hr/LC_MESSAGES/cpio.mo #usr/share/locale/hu/LC_MESSAGES/cpio.mo -#usr/share/locale/id -#usr/share/locale/id/LC_MESSAGES #usr/share/locale/id/LC_MESSAGES/cpio.mo +#usr/share/locale/it/LC_MESSAGES/cpio.mo +#usr/share/locale/ja/LC_MESSAGES/cpio.mo #usr/share/locale/ko/LC_MESSAGES/cpio.mo #usr/share/locale/nl/LC_MESSAGES/cpio.mo #usr/share/locale/pl/LC_MESSAGES/cpio.mo #usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo #usr/share/locale/ro/LC_MESSAGES/cpio.mo #usr/share/locale/ru/LC_MESSAGES/cpio.mo +#usr/share/locale/sr/LC_MESSAGES/cpio.mo #usr/share/locale/sv/LC_MESSAGES/cpio.mo #usr/share/locale/tr/LC_MESSAGES/cpio.mo #usr/share/locale/uk/LC_MESSAGES/cpio.mo -#usr/share/locale/vi -#usr/share/locale/vi/LC_MESSAGES #usr/share/locale/vi/LC_MESSAGES/cpio.mo #usr/share/locale/zh_CN/LC_MESSAGES/cpio.mo #usr/share/locale/zh_TW/LC_MESSAGES/cpio.mo #usr/share/man/man1/cpio.1 -#usr/share/man/man1/mt.1 From c2e810dea82b8fff6b9cd3d92c2b9f81687aec02 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 19 May 2017 09:58:42 +0100 Subject: [PATCH 394/464] make.sh: Fix wrong function call to setup build environment Signed-off-by: Michael Tremer --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 9314ae942..34fd15f9a 100755 --- a/make.sh +++ b/make.sh @@ -992,7 +992,7 @@ ipfirepackages() { while [ $# -gt 0 ]; do case "${1}" in --target=*) - configure_target "${1#--target=}" + configure_build "${1#--target=}" ;; -*) exiterror "Unknown configuration option: ${1}" From ca3c9e426fb3328d273cede3b84972c5b9449c2b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 25 Apr 2017 11:26:43 +0200 Subject: [PATCH 395/464] mdadm: Update to version 4.0 Signed-off-by: Michael Tremer --- lfs/mdadm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/mdadm b/lfs/mdadm index de9703406..881a4c582 100644 --- a/lfs/mdadm +++ b/lfs/mdadm @@ -24,7 +24,7 @@ include Config -VER = 3.3.4 +VER = 4.0 THISAPP = mdadm-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 7ca8b114710f98f53f20c5787b674a09 +$(DL_FILE)_MD5 = 2cb4feffea9167ba71b5f346a0c0a40d install : $(TARGET) From 12999d325b9590de8ba485fab25975923dc6099d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 19 May 2017 17:44:13 +0100 Subject: [PATCH 396/464] reiserfsprogs: Update to 3.6.25 Signed-off-by: Michael Tremer --- config/rootfiles/common/reiserfsprogs | 19 +++++++++++++++++++ lfs/reiserfsprogs | 8 ++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/common/reiserfsprogs b/config/rootfiles/common/reiserfsprogs index f5cfca2fe..ac375e941 100644 --- a/config/rootfiles/common/reiserfsprogs +++ b/config/rootfiles/common/reiserfsprogs @@ -1,3 +1,4 @@ +#sbin/debugfs.reiserfs #sbin/debugreiserfs sbin/fsck.reiserfs sbin/mkfs.reiserfs @@ -5,8 +6,26 @@ sbin/mkreiserfs sbin/reiserfsck sbin/reiserfstune sbin/resize_reiserfs +sbin/tunefs.reiserfs +#usr/include/reiserfs +#usr/include/reiserfs/io.h +#usr/include/reiserfs/misc.h +#usr/include/reiserfs/reiserfs_err.h +#usr/include/reiserfs/reiserfs_fs.h +#usr/include/reiserfs/reiserfs_lib.h +#usr/include/reiserfs/swab.h +#usr/lib/libreiserfscore.a +#usr/lib/libreiserfscore.la +#usr/lib/libreiserfscore.so +usr/lib/libreiserfscore.so.0 +usr/lib/libreiserfscore.so.0.0.0 +#usr/lib/pkgconfig/reiserfscore.pc +#usr/share/man/man8/debugfs.reiserfs.8 #usr/share/man/man8/debugreiserfs.8 +#usr/share/man/man8/fsck.reiserfs.8 +#usr/share/man/man8/mkfs.reiserfs.8 #usr/share/man/man8/mkreiserfs.8 #usr/share/man/man8/reiserfsck.8 #usr/share/man/man8/reiserfstune.8 #usr/share/man/man8/resize_reiserfs.8 +#usr/share/man/man8/tunefs.reiserfs.8 diff --git a/lfs/reiserfsprogs b/lfs/reiserfsprogs index 402753ee0..3018aa169 100644 --- a/lfs/reiserfsprogs +++ b/lfs/reiserfsprogs @@ -24,10 +24,10 @@ include Config -VER = 3.6.21 +VER = 3.6.25 THISAPP = reiserfsprogs-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 0639cefac8f8150536cfa7531c2aa2d2 +$(DL_FILE)_MD5 = 027a598b055dccb8da3aea1378a19f3c install : $(TARGET) @@ -69,7 +69,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr --sbindir=/sbin cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install From 56170c2ac313954020856526a64f9746b2dcad80 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 30 Apr 2017 12:59:09 +0200 Subject: [PATCH 397/464] make.sh: Build lcms2 before ghostscript Ghostscript depends on it Signed-off-by: Michael Tremer --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 34fd15f9a..3ebf0b8d0 100755 --- a/make.sh +++ b/make.sh @@ -652,8 +652,8 @@ buildipfire() { lfsmake2 intltool lfsmake2 libdaemon lfsmake2 cups - lfsmake2 ghostscript lfsmake2 lcms2 + lfsmake2 ghostscript lfsmake2 qpdf lfsmake2 poppler lfsmake2 cups-filters From 63c94c5185e52dddb756cf7b0d46abd3ee72e012 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 19 May 2017 20:25:30 +0100 Subject: [PATCH 398/464] clamav: Import patch to fix build issues with GCC 6 Signed-off-by: Michael Tremer --- lfs/clamav | 1 + src/patches/clamav-0.99.2-gcc-6.patch | 84 +++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/patches/clamav-0.99.2-gcc-6.patch diff --git a/lfs/clamav b/lfs/clamav index a20922e9d..06ba0fcc4 100644 --- a/lfs/clamav +++ b/lfs/clamav @@ -82,6 +82,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/clamav/llvm-glibc.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/clamav-0.99.2-gcc-6.patch cd $(DIR_APP) && ./configure \ --prefix=/usr \ --disable-zlib-vcheck \ diff --git a/src/patches/clamav-0.99.2-gcc-6.patch b/src/patches/clamav-0.99.2-gcc-6.patch new file mode 100644 index 000000000..2031edbd3 --- /dev/null +++ b/src/patches/clamav-0.99.2-gcc-6.patch @@ -0,0 +1,84 @@ +diff --git a/libclamav/c++/llvm/include/llvm/ADT/StringMap.h b/libclamav/c++/llvm/include/llvm/ADT/StringMap.h +index 59ff6aa..1325394 100644 +--- a/libclamav/c++/llvm/include/llvm/ADT/StringMap.h ++++ b/libclamav/c++/llvm/include/llvm/ADT/StringMap.h +@@ -169,3 +169,3 @@ public: + KeyLength+1; +- unsigned Alignment = alignof(); ++ unsigned Alignment = alignOf(); + +diff --git a/libclamav/c++/llvm/include/llvm/CodeGen/SlotIndexes.h b/libclamav/c++/llvm/include/llvm/CodeGen/SlotIndexes.h +index 88044c7..86b0f40 100644 +--- a/libclamav/c++/llvm/include/llvm/CodeGen/SlotIndexes.h ++++ b/libclamav/c++/llvm/include/llvm/CodeGen/SlotIndexes.h +@@ -417,3 +417,3 @@ namespace llvm { + ileAllocator.Allocate(sizeof(IndexListEntry), +- alignof())); ++ alignOf())); + +diff --git a/libclamav/c++/llvm/include/llvm/Support/AlignOf.h b/libclamav/c++/llvm/include/llvm/Support/AlignOf.h +index 6a7a1a6..979e597 100644 +--- a/libclamav/c++/llvm/include/llvm/Support/AlignOf.h ++++ b/libclamav/c++/llvm/include/llvm/Support/AlignOf.h +@@ -51,8 +51,8 @@ struct AlignOf { + +-/// alignof - A templated function that returns the mininum alignment of ++/// alignOf - A templated function that returns the mininum alignment of + /// of a type. This provides no extra functionality beyond the AlignOf + /// class besides some cosmetic cleanliness. Example usage: +-/// alignof() returns the alignment of an int. ++/// alignOf() returns the alignment of an int. + template +-static inline unsigned alignof() { return AlignOf::Alignment; } ++static inline unsigned alignOf() { return AlignOf::Alignment; } + +diff --git a/libclamav/c++/llvm/include/llvm/Support/Allocator.h b/libclamav/c++/llvm/include/llvm/Support/Allocator.h +index 4a7251f..17caf5e 100644 +--- a/libclamav/c++/llvm/include/llvm/Support/Allocator.h ++++ b/libclamav/c++/llvm/include/llvm/Support/Allocator.h +@@ -203,3 +203,3 @@ public: + for (char *Ptr = (char*)(Slab+1); Ptr < End; Ptr += sizeof(T)) { +- Ptr = Allocator.AlignPtr(Ptr, alignof()); ++ Ptr = Allocator.AlignPtr(Ptr, alignOf()); + if (Ptr + sizeof(T) <= End) +diff --git a/libclamav/c++/llvm/lib/Analysis/ScalarEvolution.cpp b/libclamav/c++/llvm/lib/Analysis/ScalarEvolution.cpp +index b892d85..dc72346 100644 +--- a/libclamav/c++/llvm/lib/Analysis/ScalarEvolution.cpp ++++ b/libclamav/c++/llvm/lib/Analysis/ScalarEvolution.cpp +@@ -495,3 +495,3 @@ void SCEVUnknown::print(raw_ostream &OS) const { + if (isAlignOf(AllocTy)) { +- OS << "alignof(" << *AllocTy << ")"; ++ OS << "alignOf(" << *AllocTy << ")"; + return; +diff --git a/libclamav/c++/llvm/lib/Target/X86/X86CodeEmitter.cpp b/libclamav/c++/llvm/lib/Target/X86/X86CodeEmitter.cpp +index 824021c..757ca50 100644 +--- a/libclamav/c++/llvm/lib/Target/X86/X86CodeEmitter.cpp ++++ b/libclamav/c++/llvm/lib/Target/X86/X86CodeEmitter.cpp +@@ -569,3 +569,3 @@ void Emitter::emitMemModRMByte(const MachineInstr &MI, + // Calculate what the SS field value should be... +- static const unsigned SSTable[] = { ~0, 0, 1, ~0, 2, ~0, ~0, ~0, 3 }; ++ static const unsigned SSTable[] = { ~0u, 0u, 1u, ~0u, 2u, ~0u, ~0u, ~0u, 3u }; + unsigned SS = SSTable[Scale.getImm()]; +diff --git a/libclamav/c++/llvm/lib/Target/X86/X86MCCodeEmitter.cpp b/libclamav/c++/llvm/lib/Target/X86/X86MCCodeEmitter.cpp +index 9564fe0..b2b7986 100644 +--- a/libclamav/c++/llvm/lib/Target/X86/X86MCCodeEmitter.cpp ++++ b/libclamav/c++/llvm/lib/Target/X86/X86MCCodeEmitter.cpp +@@ -332,3 +332,3 @@ void X86MCCodeEmitter::EmitMemModRMByte(const MCInst &MI, unsigned Op, + // Calculate what the SS field value should be... +- static const unsigned SSTable[] = { ~0, 0, 1, ~0, 2, ~0, ~0, ~0, 3 }; ++ static const unsigned SSTable[] = { ~0u, 0u, 1u, ~0u, 2u, ~0u, ~0u, ~0u, 3u }; + unsigned SS = SSTable[Scale.getImm()]; +diff --git a/libclamav/mpool.c b/libclamav/mpool.c +index cd38e15..b5e537d 100644 +--- a/libclamav/mpool.c ++++ b/libclamav/mpool.c +@@ -417,3 +417,3 @@ static size_t from_bits(unsigned int bits) { + +-static inline unsigned int alignof(size_t size) ++static inline unsigned int alignOf(size_t size) + { +@@ -609,3 +609,3 @@ static void* allocate_aligned(struct MPMAP *mpm, size_t size, unsigned align, co + void *mpool_malloc(struct MP *mp, size_t size) { +- size_t align = alignof(size); ++ size_t align = alignOf(size); + size_t i, needed = align_increase(size+FRAG_OVERHEAD, align); From 9f172a3db01b779c55c0b2daec5585052a58b071 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 20 May 2017 09:32:36 +0100 Subject: [PATCH 399/464] make.sh: Correctly set environment variables in toolchain pass Signed-off-by: Michael Tremer --- tools/make-functions | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/make-functions b/tools/make-functions index ebe157a47..356162fab 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -607,21 +607,21 @@ lfsmake1() { cd $BASEDIR/lfs && env -i \ PATH="/tools/ccache/bin:/tools/bin:$PATH" \ + CCACHE_DIR="${CCACHE_DIR}" \ + CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ + CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ + CFLAGS="${CFLAGS}" \ + CXXFLAGS="${CXXFLAGS}" \ make -f $* \ TOOLCHAIN=1 \ CROSSTARGET="${CROSSTARGET}" \ BUILDTARGET="${BUILDTARGET}" \ BUILD_ARCH="${BUILD_ARCH}" \ BUILD_PLATFORM="${BUILD_PLATFORM}" \ - CFLAGS="${CFLAGS}" \ - CXXFLAGS="${CXXFLAGS}" \ LFS_BASEDIR="${BASEDIR}" \ ROOT="${LFS}" \ KVER="${KVER}" \ MAKETUNING="${MAKETUNING}" \ - CCACHE_DIR="${CCACHE_DIR}" \ - CCACHE_COMPRESS="${CCACHE_COMPRESS}" \ - CCACHE_COMPILERCHECK="${CCACHE_COMPILERCHECK}" \ install >> $LOGFILE 2>&1 local COMPILE_SUCCESS=$? From 8e01581f67579888651ab39f8602ea89062d1c72 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 20 May 2017 09:32:51 +0100 Subject: [PATCH 400/464] binutils: Remove any host optimisations in toolchain's first pass Signed-off-by: Michael Tremer --- lfs/binutils | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lfs/binutils b/lfs/binutils index db59d97b4..8bf6decd9 100644 --- a/lfs/binutils +++ b/lfs/binutils @@ -46,6 +46,9 @@ ifeq "$(ROOT)" "" EXTRA_INSTALL = tooldir=/usr else ifeq "$(PASS)" "1" + CFLAGS := $(patsubst -march=%,,$(CFLAGS)) + CFLAGS := $(patsubst -mfloat-abi=%,,$(CFLAGS)) + TARGET = $(DIR_INFO)/$(THISAPP)-tools1 EXTRA_CONFIG = \ --target=$(CROSSTARGET) \ From fd5ba3419a62de4e0280a428ce21808435c07822 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 1 May 2017 23:51:40 +0200 Subject: [PATCH 401/464] collectd: FTBFS on aarch64 Needed automake update Signed-off-by: Michael Tremer --- lfs/collectd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lfs/collectd b/lfs/collectd index 1573e3874..2ef712ce3 100644 --- a/lfs/collectd +++ b/lfs/collectd @@ -79,6 +79,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + $(UPDATE_AUTOMAKE) + cd $(DIR_APP) && find . -name "Makefile.*" | xargs sed -e "s/-Werror//g" -i cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0001-src-utils_mount.h-Add-stdio.h.patch cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0002-Don-t-notify-continuously-when-MySQL-slave-SQL-threa.patch cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0003-curl_xml.c-avoid-using-uninitalized-variable-in-erro.patch From 0ff77cf478fcbd098eba4df40eacf09711415f8c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 20 May 2017 09:52:08 +0100 Subject: [PATCH 402/464] SDL: Update to 1.2.15 Signed-off-by: Michael Tremer --- config/rootfiles/packages/sdl | 359 ++++++++++++------------ lfs/sdl | 8 +- src/patches/SDL-1.2.11-asm-page.h.patch | 59 ---- 3 files changed, 179 insertions(+), 247 deletions(-) delete mode 100644 src/patches/SDL-1.2.11-asm-page.h.patch diff --git a/config/rootfiles/packages/sdl b/config/rootfiles/packages/sdl index fdf4cafd9..5aefece3d 100644 --- a/config/rootfiles/packages/sdl +++ b/config/rootfiles/packages/sdl @@ -6,14 +6,6 @@ #usr/include/SDL/SDL_byteorder.h #usr/include/SDL/SDL_cdrom.h #usr/include/SDL/SDL_config.h -#usr/include/SDL/SDL_config_amiga.h -#usr/include/SDL/SDL_config_dreamcast.h -#usr/include/SDL/SDL_config_macos.h -#usr/include/SDL/SDL_config_macosx.h -#usr/include/SDL/SDL_config_minimal.h -#usr/include/SDL/SDL_config_os2.h -#usr/include/SDL/SDL_config_win32.h -#usr/include/SDL/SDL_copying.h #usr/include/SDL/SDL_cpuinfo.h #usr/include/SDL/SDL_endian.h #usr/include/SDL/SDL_error.h @@ -41,184 +33,185 @@ #usr/include/SDL/begin_code.h #usr/include/SDL/close_code.h usr/lib/libSDL-1.2.so.0 -usr/lib/libSDL-1.2.so.0.11.0 +usr/lib/libSDL-1.2.so.0.11.4 #usr/lib/libSDL.a #usr/lib/libSDL.la usr/lib/libSDL.so #usr/lib/libSDLmain.a +#usr/lib/libSDLmain.la #usr/lib/pkgconfig/sdl.pc -#usr/man/man3/SDLKey.3 -#usr/man/man3/SDL_ActiveEvent.3 -#usr/man/man3/SDL_AddTimer.3 -#usr/man/man3/SDL_AudioCVT.3 -#usr/man/man3/SDL_AudioSpec.3 -#usr/man/man3/SDL_BlitSurface.3 -#usr/man/man3/SDL_BuildAudioCVT.3 -#usr/man/man3/SDL_CD.3 -#usr/man/man3/SDL_CDClose.3 -#usr/man/man3/SDL_CDEject.3 -#usr/man/man3/SDL_CDName.3 -#usr/man/man3/SDL_CDNumDrives.3 -#usr/man/man3/SDL_CDOpen.3 -#usr/man/man3/SDL_CDPause.3 -#usr/man/man3/SDL_CDPlay.3 -#usr/man/man3/SDL_CDPlayTracks.3 -#usr/man/man3/SDL_CDResume.3 -#usr/man/man3/SDL_CDStatus.3 -#usr/man/man3/SDL_CDStop.3 -#usr/man/man3/SDL_CDtrack.3 -#usr/man/man3/SDL_CloseAudio.3 -#usr/man/man3/SDL_Color.3 -#usr/man/man3/SDL_CondBroadcast.3 -#usr/man/man3/SDL_CondSignal.3 -#usr/man/man3/SDL_CondWait.3 -#usr/man/man3/SDL_CondWaitTimeout.3 -#usr/man/man3/SDL_ConvertAudio.3 -#usr/man/man3/SDL_ConvertSurface.3 -#usr/man/man3/SDL_CreateCond.3 -#usr/man/man3/SDL_CreateCursor.3 -#usr/man/man3/SDL_CreateMutex.3 -#usr/man/man3/SDL_CreateRGBSurface.3 -#usr/man/man3/SDL_CreateRGBSurfaceFrom.3 -#usr/man/man3/SDL_CreateSemaphore.3 -#usr/man/man3/SDL_CreateThread.3 -#usr/man/man3/SDL_CreateYUVOverlay.3 -#usr/man/man3/SDL_Delay.3 -#usr/man/man3/SDL_DestroyCond.3 -#usr/man/man3/SDL_DestroyMutex.3 -#usr/man/man3/SDL_DestroySemaphore.3 -#usr/man/man3/SDL_DisplayFormat.3 -#usr/man/man3/SDL_DisplayFormatAlpha.3 -#usr/man/man3/SDL_DisplayYUVOverlay.3 -#usr/man/man3/SDL_EnableKeyRepeat.3 -#usr/man/man3/SDL_EnableUNICODE.3 -#usr/man/man3/SDL_Event.3 -#usr/man/man3/SDL_EventState.3 -#usr/man/man3/SDL_ExposeEvent.3 -#usr/man/man3/SDL_FillRect.3 -#usr/man/man3/SDL_Flip.3 -#usr/man/man3/SDL_FreeCursor.3 -#usr/man/man3/SDL_FreeSurface.3 -#usr/man/man3/SDL_FreeWAV.3 -#usr/man/man3/SDL_FreeYUVOverlay.3 -#usr/man/man3/SDL_GL_GetAttribute.3 -#usr/man/man3/SDL_GL_GetProcAddress.3 -#usr/man/man3/SDL_GL_LoadLibrary.3 -#usr/man/man3/SDL_GL_SetAttribute.3 -#usr/man/man3/SDL_GL_SwapBuffers.3 -#usr/man/man3/SDL_GLattr.3 -#usr/man/man3/SDL_GetAppState.3 -#usr/man/man3/SDL_GetAudioStatus.3 -#usr/man/man3/SDL_GetClipRect.3 -#usr/man/man3/SDL_GetCursor.3 -#usr/man/man3/SDL_GetError.3 -#usr/man/man3/SDL_GetEventFilter.3 -#usr/man/man3/SDL_GetGamma.3 -#usr/man/man3/SDL_GetGammaRamp.3 -#usr/man/man3/SDL_GetKeyName.3 -#usr/man/man3/SDL_GetKeyState.3 -#usr/man/man3/SDL_GetModState.3 -#usr/man/man3/SDL_GetMouseState.3 -#usr/man/man3/SDL_GetRGB.3 -#usr/man/man3/SDL_GetRGBA.3 -#usr/man/man3/SDL_GetRelativeMouseState.3 -#usr/man/man3/SDL_GetThreadID.3 -#usr/man/man3/SDL_GetTicks.3 -#usr/man/man3/SDL_GetVideoInfo.3 -#usr/man/man3/SDL_GetVideoSurface.3 -#usr/man/man3/SDL_Init.3 -#usr/man/man3/SDL_InitSubSystem.3 -#usr/man/man3/SDL_JoyAxisEvent.3 -#usr/man/man3/SDL_JoyBallEvent.3 -#usr/man/man3/SDL_JoyButtonEvent.3 -#usr/man/man3/SDL_JoyHatEvent.3 -#usr/man/man3/SDL_JoystickClose.3 -#usr/man/man3/SDL_JoystickEventState.3 -#usr/man/man3/SDL_JoystickGetAxis.3 -#usr/man/man3/SDL_JoystickGetBall.3 -#usr/man/man3/SDL_JoystickGetButton.3 -#usr/man/man3/SDL_JoystickGetHat.3 -#usr/man/man3/SDL_JoystickIndex.3 -#usr/man/man3/SDL_JoystickName.3 -#usr/man/man3/SDL_JoystickNumAxes.3 -#usr/man/man3/SDL_JoystickNumBalls.3 -#usr/man/man3/SDL_JoystickNumButtons.3 -#usr/man/man3/SDL_JoystickNumHats.3 -#usr/man/man3/SDL_JoystickOpen.3 -#usr/man/man3/SDL_JoystickOpened.3 -#usr/man/man3/SDL_JoystickUpdate.3 -#usr/man/man3/SDL_KeyboardEvent.3 -#usr/man/man3/SDL_KillThread.3 -#usr/man/man3/SDL_ListModes.3 -#usr/man/man3/SDL_LoadBMP.3 -#usr/man/man3/SDL_LoadWAV.3 -#usr/man/man3/SDL_LockAudio.3 -#usr/man/man3/SDL_LockSurface.3 -#usr/man/man3/SDL_LockYUVOverlay.3 -#usr/man/man3/SDL_MapRGB.3 -#usr/man/man3/SDL_MapRGBA.3 -#usr/man/man3/SDL_MixAudio.3 -#usr/man/man3/SDL_MouseButtonEvent.3 -#usr/man/man3/SDL_MouseMotionEvent.3 -#usr/man/man3/SDL_NumJoysticks.3 -#usr/man/man3/SDL_OpenAudio.3 -#usr/man/man3/SDL_Overlay.3 -#usr/man/man3/SDL_Palette.3 -#usr/man/man3/SDL_PauseAudio.3 -#usr/man/man3/SDL_PeepEvents.3 -#usr/man/man3/SDL_PixelFormat.3 -#usr/man/man3/SDL_PollEvent.3 -#usr/man/man3/SDL_PumpEvents.3 -#usr/man/man3/SDL_PushEvent.3 -#usr/man/man3/SDL_Quit.3 -#usr/man/man3/SDL_QuitEvent.3 -#usr/man/man3/SDL_QuitSubSystem.3 -#usr/man/man3/SDL_RWFromFile.3 -#usr/man/man3/SDL_Rect.3 -#usr/man/man3/SDL_RemoveTimer.3 -#usr/man/man3/SDL_ResizeEvent.3 -#usr/man/man3/SDL_SaveBMP.3 -#usr/man/man3/SDL_SemPost.3 -#usr/man/man3/SDL_SemTryWait.3 -#usr/man/man3/SDL_SemValue.3 -#usr/man/man3/SDL_SemWait.3 -#usr/man/man3/SDL_SemWaitTimeout.3 -#usr/man/man3/SDL_SetAlpha.3 -#usr/man/man3/SDL_SetClipRect.3 -#usr/man/man3/SDL_SetColorKey.3 -#usr/man/man3/SDL_SetColors.3 -#usr/man/man3/SDL_SetCursor.3 -#usr/man/man3/SDL_SetEventFilter.3 -#usr/man/man3/SDL_SetGamma.3 -#usr/man/man3/SDL_SetGammaRamp.3 -#usr/man/man3/SDL_SetModState.3 -#usr/man/man3/SDL_SetPalette.3 -#usr/man/man3/SDL_SetTimer.3 -#usr/man/man3/SDL_SetVideoMode.3 -#usr/man/man3/SDL_ShowCursor.3 -#usr/man/man3/SDL_Surface.3 -#usr/man/man3/SDL_SysWMEvent.3 -#usr/man/man3/SDL_ThreadID.3 -#usr/man/man3/SDL_UnlockAudio.3 -#usr/man/man3/SDL_UnlockSurface.3 -#usr/man/man3/SDL_UnlockYUVOverlay.3 -#usr/man/man3/SDL_UpdateRect.3 -#usr/man/man3/SDL_UpdateRects.3 -#usr/man/man3/SDL_UserEvent.3 -#usr/man/man3/SDL_VideoDriverName.3 -#usr/man/man3/SDL_VideoInfo.3 -#usr/man/man3/SDL_VideoModeOK.3 -#usr/man/man3/SDL_WM_GetCaption.3 -#usr/man/man3/SDL_WM_GrabInput.3 -#usr/man/man3/SDL_WM_IconifyWindow.3 -#usr/man/man3/SDL_WM_SetCaption.3 -#usr/man/man3/SDL_WM_SetIcon.3 -#usr/man/man3/SDL_WM_ToggleFullScreen.3 -#usr/man/man3/SDL_WaitEvent.3 -#usr/man/man3/SDL_WaitThread.3 -#usr/man/man3/SDL_WarpMouse.3 -#usr/man/man3/SDL_WasInit.3 -#usr/man/man3/SDL_keysym.3 -#usr/man/man3/SDL_mutexP.3 -#usr/man/man3/SDL_mutexV.3 #usr/share/aclocal/sdl.m4 +#usr/share/man/man3/SDLKey.3 +#usr/share/man/man3/SDL_ActiveEvent.3 +#usr/share/man/man3/SDL_AddTimer.3 +#usr/share/man/man3/SDL_AudioCVT.3 +#usr/share/man/man3/SDL_AudioSpec.3 +#usr/share/man/man3/SDL_BlitSurface.3 +#usr/share/man/man3/SDL_BuildAudioCVT.3 +#usr/share/man/man3/SDL_CD.3 +#usr/share/man/man3/SDL_CDClose.3 +#usr/share/man/man3/SDL_CDEject.3 +#usr/share/man/man3/SDL_CDName.3 +#usr/share/man/man3/SDL_CDNumDrives.3 +#usr/share/man/man3/SDL_CDOpen.3 +#usr/share/man/man3/SDL_CDPause.3 +#usr/share/man/man3/SDL_CDPlay.3 +#usr/share/man/man3/SDL_CDPlayTracks.3 +#usr/share/man/man3/SDL_CDResume.3 +#usr/share/man/man3/SDL_CDStatus.3 +#usr/share/man/man3/SDL_CDStop.3 +#usr/share/man/man3/SDL_CDtrack.3 +#usr/share/man/man3/SDL_CloseAudio.3 +#usr/share/man/man3/SDL_Color.3 +#usr/share/man/man3/SDL_CondBroadcast.3 +#usr/share/man/man3/SDL_CondSignal.3 +#usr/share/man/man3/SDL_CondWait.3 +#usr/share/man/man3/SDL_CondWaitTimeout.3 +#usr/share/man/man3/SDL_ConvertAudio.3 +#usr/share/man/man3/SDL_ConvertSurface.3 +#usr/share/man/man3/SDL_CreateCond.3 +#usr/share/man/man3/SDL_CreateCursor.3 +#usr/share/man/man3/SDL_CreateMutex.3 +#usr/share/man/man3/SDL_CreateRGBSurface.3 +#usr/share/man/man3/SDL_CreateRGBSurfaceFrom.3 +#usr/share/man/man3/SDL_CreateSemaphore.3 +#usr/share/man/man3/SDL_CreateThread.3 +#usr/share/man/man3/SDL_CreateYUVOverlay.3 +#usr/share/man/man3/SDL_Delay.3 +#usr/share/man/man3/SDL_DestroyCond.3 +#usr/share/man/man3/SDL_DestroyMutex.3 +#usr/share/man/man3/SDL_DestroySemaphore.3 +#usr/share/man/man3/SDL_DisplayFormat.3 +#usr/share/man/man3/SDL_DisplayFormatAlpha.3 +#usr/share/man/man3/SDL_DisplayYUVOverlay.3 +#usr/share/man/man3/SDL_EnableKeyRepeat.3 +#usr/share/man/man3/SDL_EnableUNICODE.3 +#usr/share/man/man3/SDL_Event.3 +#usr/share/man/man3/SDL_EventState.3 +#usr/share/man/man3/SDL_ExposeEvent.3 +#usr/share/man/man3/SDL_FillRect.3 +#usr/share/man/man3/SDL_Flip.3 +#usr/share/man/man3/SDL_FreeCursor.3 +#usr/share/man/man3/SDL_FreeSurface.3 +#usr/share/man/man3/SDL_FreeWAV.3 +#usr/share/man/man3/SDL_FreeYUVOverlay.3 +#usr/share/man/man3/SDL_GL_GetAttribute.3 +#usr/share/man/man3/SDL_GL_GetProcAddress.3 +#usr/share/man/man3/SDL_GL_LoadLibrary.3 +#usr/share/man/man3/SDL_GL_SetAttribute.3 +#usr/share/man/man3/SDL_GL_SwapBuffers.3 +#usr/share/man/man3/SDL_GLattr.3 +#usr/share/man/man3/SDL_GetAppState.3 +#usr/share/man/man3/SDL_GetAudioStatus.3 +#usr/share/man/man3/SDL_GetClipRect.3 +#usr/share/man/man3/SDL_GetCursor.3 +#usr/share/man/man3/SDL_GetError.3 +#usr/share/man/man3/SDL_GetEventFilter.3 +#usr/share/man/man3/SDL_GetGamma.3 +#usr/share/man/man3/SDL_GetGammaRamp.3 +#usr/share/man/man3/SDL_GetKeyName.3 +#usr/share/man/man3/SDL_GetKeyState.3 +#usr/share/man/man3/SDL_GetModState.3 +#usr/share/man/man3/SDL_GetMouseState.3 +#usr/share/man/man3/SDL_GetRGB.3 +#usr/share/man/man3/SDL_GetRGBA.3 +#usr/share/man/man3/SDL_GetRelativeMouseState.3 +#usr/share/man/man3/SDL_GetThreadID.3 +#usr/share/man/man3/SDL_GetTicks.3 +#usr/share/man/man3/SDL_GetVideoInfo.3 +#usr/share/man/man3/SDL_GetVideoSurface.3 +#usr/share/man/man3/SDL_Init.3 +#usr/share/man/man3/SDL_InitSubSystem.3 +#usr/share/man/man3/SDL_JoyAxisEvent.3 +#usr/share/man/man3/SDL_JoyBallEvent.3 +#usr/share/man/man3/SDL_JoyButtonEvent.3 +#usr/share/man/man3/SDL_JoyHatEvent.3 +#usr/share/man/man3/SDL_JoystickClose.3 +#usr/share/man/man3/SDL_JoystickEventState.3 +#usr/share/man/man3/SDL_JoystickGetAxis.3 +#usr/share/man/man3/SDL_JoystickGetBall.3 +#usr/share/man/man3/SDL_JoystickGetButton.3 +#usr/share/man/man3/SDL_JoystickGetHat.3 +#usr/share/man/man3/SDL_JoystickIndex.3 +#usr/share/man/man3/SDL_JoystickName.3 +#usr/share/man/man3/SDL_JoystickNumAxes.3 +#usr/share/man/man3/SDL_JoystickNumBalls.3 +#usr/share/man/man3/SDL_JoystickNumButtons.3 +#usr/share/man/man3/SDL_JoystickNumHats.3 +#usr/share/man/man3/SDL_JoystickOpen.3 +#usr/share/man/man3/SDL_JoystickOpened.3 +#usr/share/man/man3/SDL_JoystickUpdate.3 +#usr/share/man/man3/SDL_KeyboardEvent.3 +#usr/share/man/man3/SDL_KillThread.3 +#usr/share/man/man3/SDL_ListModes.3 +#usr/share/man/man3/SDL_LoadBMP.3 +#usr/share/man/man3/SDL_LoadWAV.3 +#usr/share/man/man3/SDL_LockAudio.3 +#usr/share/man/man3/SDL_LockSurface.3 +#usr/share/man/man3/SDL_LockYUVOverlay.3 +#usr/share/man/man3/SDL_MapRGB.3 +#usr/share/man/man3/SDL_MapRGBA.3 +#usr/share/man/man3/SDL_MixAudio.3 +#usr/share/man/man3/SDL_MouseButtonEvent.3 +#usr/share/man/man3/SDL_MouseMotionEvent.3 +#usr/share/man/man3/SDL_NumJoysticks.3 +#usr/share/man/man3/SDL_OpenAudio.3 +#usr/share/man/man3/SDL_Overlay.3 +#usr/share/man/man3/SDL_Palette.3 +#usr/share/man/man3/SDL_PauseAudio.3 +#usr/share/man/man3/SDL_PeepEvents.3 +#usr/share/man/man3/SDL_PixelFormat.3 +#usr/share/man/man3/SDL_PollEvent.3 +#usr/share/man/man3/SDL_PumpEvents.3 +#usr/share/man/man3/SDL_PushEvent.3 +#usr/share/man/man3/SDL_Quit.3 +#usr/share/man/man3/SDL_QuitEvent.3 +#usr/share/man/man3/SDL_QuitSubSystem.3 +#usr/share/man/man3/SDL_RWFromFile.3 +#usr/share/man/man3/SDL_Rect.3 +#usr/share/man/man3/SDL_RemoveTimer.3 +#usr/share/man/man3/SDL_ResizeEvent.3 +#usr/share/man/man3/SDL_SaveBMP.3 +#usr/share/man/man3/SDL_SemPost.3 +#usr/share/man/man3/SDL_SemTryWait.3 +#usr/share/man/man3/SDL_SemValue.3 +#usr/share/man/man3/SDL_SemWait.3 +#usr/share/man/man3/SDL_SemWaitTimeout.3 +#usr/share/man/man3/SDL_SetAlpha.3 +#usr/share/man/man3/SDL_SetClipRect.3 +#usr/share/man/man3/SDL_SetColorKey.3 +#usr/share/man/man3/SDL_SetColors.3 +#usr/share/man/man3/SDL_SetCursor.3 +#usr/share/man/man3/SDL_SetEventFilter.3 +#usr/share/man/man3/SDL_SetGamma.3 +#usr/share/man/man3/SDL_SetGammaRamp.3 +#usr/share/man/man3/SDL_SetModState.3 +#usr/share/man/man3/SDL_SetPalette.3 +#usr/share/man/man3/SDL_SetTimer.3 +#usr/share/man/man3/SDL_SetVideoMode.3 +#usr/share/man/man3/SDL_ShowCursor.3 +#usr/share/man/man3/SDL_Surface.3 +#usr/share/man/man3/SDL_SysWMEvent.3 +#usr/share/man/man3/SDL_ThreadID.3 +#usr/share/man/man3/SDL_UnlockAudio.3 +#usr/share/man/man3/SDL_UnlockSurface.3 +#usr/share/man/man3/SDL_UnlockYUVOverlay.3 +#usr/share/man/man3/SDL_UpdateRect.3 +#usr/share/man/man3/SDL_UpdateRects.3 +#usr/share/man/man3/SDL_UserEvent.3 +#usr/share/man/man3/SDL_VideoDriverName.3 +#usr/share/man/man3/SDL_VideoInfo.3 +#usr/share/man/man3/SDL_VideoModeOK.3 +#usr/share/man/man3/SDL_WM_GetCaption.3 +#usr/share/man/man3/SDL_WM_GrabInput.3 +#usr/share/man/man3/SDL_WM_IconifyWindow.3 +#usr/share/man/man3/SDL_WM_SetCaption.3 +#usr/share/man/man3/SDL_WM_SetIcon.3 +#usr/share/man/man3/SDL_WM_ToggleFullScreen.3 +#usr/share/man/man3/SDL_WaitEvent.3 +#usr/share/man/man3/SDL_WaitThread.3 +#usr/share/man/man3/SDL_WarpMouse.3 +#usr/share/man/man3/SDL_WasInit.3 +#usr/share/man/man3/SDL_keysym.3 +#usr/share/man/man3/SDL_mutexP.3 +#usr/share/man/man3/SDL_mutexV.3 diff --git a/lfs/sdl b/lfs/sdl index 5f5ecdcef..84c395a3a 100644 --- a/lfs/sdl +++ b/lfs/sdl @@ -24,7 +24,7 @@ include Config -VER = 1.2.11 +VER = 1.2.15 THISAPP = SDL-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = sdl -PAK_VER = 2 +PAK_VER = 3 DEPS = "alsa" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 418b42956b7cd103bfab1b9077ccc149 +$(DL_FILE)_MD5 = 9d96df8417572a2afb781a7c4c811a85 install : $(TARGET) @@ -77,8 +77,6 @@ dist: $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/SDL-1.2.11-asm-page.h.patch - cd $(DIR_APP) && sed "/asm\/page.h/d" -i src/video/fbcon/SDL_fbvideo.c cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/src/patches/SDL-1.2.11-asm-page.h.patch b/src/patches/SDL-1.2.11-asm-page.h.patch deleted file mode 100644 index ece702d8d..000000000 --- a/src/patches/SDL-1.2.11-asm-page.h.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff -urN SDL-1.2.11.orig/src/video/fbcon/SDL_fbvideo.c SDL-1.2.11/src/video/fbcon/SDL_fbvideo.c ---- SDL-1.2.11.orig/src/video/fbcon/SDL_fbvideo.c 2006-05-17 06:16:06.000000000 +0300 -+++ SDL-1.2.11/src/video/fbcon/SDL_fbvideo.c 2007-06-24 22:19:41.000000000 +0300 -@@ -29,9 +29,17 @@ - #include - #include - #include --#include /* For definition of PAGE_SIZE */ - #include - -+#if defined(linux) -+#define HAS_MMAP_ANON -+#include -+#include -+#include /* PAGE_SIZE */ -+#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ -+#define HAS_GETPAGESIZE -+#endif /* linux */ -+ - #include "SDL_video.h" - #include "SDL_mouse.h" - #include "../SDL_sysvideo.h" -@@ -474,6 +482,7 @@ - unsigned int current_h; - const char *SDL_fbdev; - FILE *modesdb; -+ int pagesize = -1; - - /* Initialize the library */ - SDL_fbdev = SDL_getenv("SDL_FBDEV"); -@@ -545,9 +554,27 @@ - } - } - -+#if defined(_SC_PAGESIZE) && defined(HAS_SC_PAGESIZE) -+ pagesize = sysconf(_SC_PAGESIZE); -+#endif -+#ifdef _SC_PAGE_SIZE -+ if (pagesize == -1) -+ pagesize = sysconf(_SC_PAGE_SIZE); -+#endif -+#ifdef HAS_GETPAGESIZE -+ if (pagesize == -1) -+ pagesize = getpagesize(); -+#endif -+#ifdef PAGE_SIZE -+ if (pagesize == -1) -+ pagesize = PAGE_SIZE; -+#endif -+ if (pagesize == -1) -+ pagesize = 4096; -+ - /* Memory map the device, compensating for buggy PPC mmap() */ - mapped_offset = (((long)finfo.smem_start) - -- (((long)finfo.smem_start)&~(PAGE_SIZE-1))); -+ (((long)finfo.smem_start)&~(pagesize-1))); - mapped_memlen = finfo.smem_len+mapped_offset; - mapped_mem = do_mmap(NULL, mapped_memlen, - PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0); From deb99a74d30d4bcb69abf02265ce2dd4db65bf14 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 30 Apr 2017 12:12:41 +0100 Subject: [PATCH 403/464] make.sh: Show architecture we are building for Signed-off-by: Michael Tremer --- tools/make-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index 356162fab..62f16642f 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -223,7 +223,7 @@ beautify() LAST_STAGE_TIME=$[ `date +%s` - $STAGE_TIME_START ] fi STAGE_TIME_START=`date +%s` - echo -ne "${BOLD}*** ${MESSAGE}${NORMAL}" + echo -ne "${BOLD}*** (${BUILD_ARCH}) ${MESSAGE}${NORMAL}" if [ "$LAST_STAGE_TIME" ]; then echo -ne "${DONE} (Last stage took $LAST_STAGE_TIME secs)${NORMAL}" fi From 94100409a2867824d7aac8115bbafa2d9ef9f3ae Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 18:40:30 +0100 Subject: [PATCH 404/464] openvpn: Update to 2.3.16 Fixes CVE-2017-7479 and CVE-2017-7478 Signed-off-by: Michael Tremer --- lfs/openvpn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openvpn b/lfs/openvpn index 96e37f7d4..b916b8c70 100644 --- a/lfs/openvpn +++ b/lfs/openvpn @@ -24,7 +24,7 @@ include Config -VER = 2.3.7 +VER = 2.3.16 THISAPP = openvpn-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5b819f7cd0b875f55f20a947224967aa +$(DL_FILE)_MD5 = 69f5b0bf048a6e723a29745d158707be install : $(TARGET) From 7da2b89f5d21691804bcff091e4744cef6b37292 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 18:42:36 +0100 Subject: [PATCH 405/464] core111: Ship updated OpenVPN Signed-off-by: Michael Tremer --- config/rootfiles/core/111/filelists/openvpn | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/111/filelists/openvpn diff --git a/config/rootfiles/core/111/filelists/openvpn b/config/rootfiles/core/111/filelists/openvpn new file mode 120000 index 000000000..493f3f7a4 --- /dev/null +++ b/config/rootfiles/core/111/filelists/openvpn @@ -0,0 +1 @@ +../../../common/openvpn \ No newline at end of file From 6e903b7f08114dbde1e11c0f2ee714fe25323435 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 18:36:29 +0100 Subject: [PATCH 406/464] Disable VDR plugins from being built These seem to be incompatible with GCC 6 and I do not have time to sort them out right now. Signed-off-by: Michael Tremer --- lfs/vdr_dvbapi | 2 ++ lfs/vdr_eepg | 2 ++ lfs/vdr_epgsearch | 2 ++ lfs/vdr_streamdev | 2 ++ 4 files changed, 8 insertions(+) diff --git a/lfs/vdr_dvbapi b/lfs/vdr_dvbapi index f9339e6b8..781f00d26 100644 --- a/lfs/vdr_dvbapi +++ b/lfs/vdr_dvbapi @@ -25,6 +25,8 @@ include Config VER = 1.0.6 +SUP_ARCHES = + THISAPP = vdr-plugin-dvbapi-$(VER) DL_FILE = $(THISAPP).tar.gz diff --git a/lfs/vdr_eepg b/lfs/vdr_eepg index 3a91256f1..c8dd7f6fd 100644 --- a/lfs/vdr_eepg +++ b/lfs/vdr_eepg @@ -26,6 +26,8 @@ include Config GIT_VER = 69b47ba4bf0195fd6820beb2cf4f7c7ea31f4011 VER = master +SUP_ARCHES = + THISAPP = vdr-plugin-eepg-$(VER) DL_FILE = vdr-plugin-eepg-$(GIT_VER).tar.bz2 diff --git a/lfs/vdr_epgsearch b/lfs/vdr_epgsearch index e62167049..e0065accb 100644 --- a/lfs/vdr_epgsearch +++ b/lfs/vdr_epgsearch @@ -25,6 +25,8 @@ include Config VER = 1.0.1.beta5 +SUP_ARCHES = + THISAPP = vdr-epgsearch-$(VER) DL_FILE = $(THISAPP).tgz diff --git a/lfs/vdr_streamdev b/lfs/vdr_streamdev index c230a69af..b67843e6e 100644 --- a/lfs/vdr_streamdev +++ b/lfs/vdr_streamdev @@ -26,6 +26,8 @@ include Config VER = 0.6.1 GIT_VER = 10db11ac +SUP_ARCHES = + THISAPP = vdr-streamdev-$(GIT_VER) DL_FILE = $(THISAPP).tar.xz From fb94ef22b0bba05a5d8eda37c866ea1c4239865b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 18:40:30 +0100 Subject: [PATCH 407/464] openvpn: Update to 2.3.16 Fixes CVE-2017-7479 and CVE-2017-7478 Signed-off-by: Michael Tremer --- lfs/openvpn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openvpn b/lfs/openvpn index 96e37f7d4..b916b8c70 100644 --- a/lfs/openvpn +++ b/lfs/openvpn @@ -24,7 +24,7 @@ include Config -VER = 2.3.7 +VER = 2.3.16 THISAPP = openvpn-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5b819f7cd0b875f55f20a947224967aa +$(DL_FILE)_MD5 = 69f5b0bf048a6e723a29745d158707be install : $(TARGET) From e65d5a0061601b850546d43390748b54e1e304aa Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 19:10:01 +0100 Subject: [PATCH 408/464] imspector: Drop package Signed-off-by: Michael Tremer --- config/backup/includes/imspector | 3 - config/imspector/imspector.conf | 24 - config/menu/EX-imspector.menu | 5 - config/rootfiles/common/configroot | 1 - config/rootfiles/common/web-user-interface | 1 - config/rootfiles/packages/imspector | 28 - html/cgi-bin/imspector.cgi | 607 --------------------- lfs/imspector | 98 ---- make.sh | 1 - src/initscripts/packages/imspector | 54 -- src/patches/imspector-20101008-ssl.patch | 11 - 11 files changed, 833 deletions(-) delete mode 100644 config/backup/includes/imspector delete mode 100644 config/imspector/imspector.conf delete mode 100644 config/menu/EX-imspector.menu delete mode 100644 config/rootfiles/packages/imspector delete mode 100644 html/cgi-bin/imspector.cgi delete mode 100644 lfs/imspector delete mode 100644 src/initscripts/packages/imspector delete mode 100644 src/patches/imspector-20101008-ssl.patch diff --git a/config/backup/includes/imspector b/config/backup/includes/imspector deleted file mode 100644 index cc7ef16bf..000000000 --- a/config/backup/includes/imspector +++ /dev/null @@ -1,3 +0,0 @@ -/etc/imspector/acl.txt -/etc/imspector/badwords.txt -/etc/imspector/imspector.conf \ No newline at end of file diff --git a/config/imspector/imspector.conf b/config/imspector/imspector.conf deleted file mode 100644 index a37241df6..000000000 --- a/config/imspector/imspector.conf +++ /dev/null @@ -1,24 +0,0 @@ -# The listening port for redirected connections -port=16667 - -# For dropping privs - you probably want to do this. -user=nobody -group=nobody - -# Prefix and postfix to all responses using all responder plugins -response_prefix=Message from IMSpector: -= -response_postfix==- - -# Will load enabled plugins in plugin_dir -icq_protocol=on -irc_protocol=on -msn_protocol=on -yahoo_protocol=on -gg_protocol=on -jabber_protocol=on - -# Location where the file logging plugin will start from. -file_logging_dir=/var/log/imspector/ -log_typing_events=on - -plugin_dir=/usr/lib/imspector diff --git a/config/menu/EX-imspector.menu b/config/menu/EX-imspector.menu deleted file mode 100644 index c88866f5f..000000000 --- a/config/menu/EX-imspector.menu +++ /dev/null @@ -1,5 +0,0 @@ - $subipfire->{'30.imspector'} = {'caption' => 'Imspector', - 'uri' => '/cgi-bin/imspector.cgi', - 'title' => 'Imspector', - 'enabled' => 1, - }; diff --git a/config/rootfiles/common/configroot b/config/rootfiles/common/configroot index 8b5d9f43d..911a780ec 100644 --- a/config/rootfiles/common/configroot +++ b/config/rootfiles/common/configroot @@ -111,7 +111,6 @@ var/ipfire/menu.d/70-log.menu #var/ipfire/menu.d/EX-asterisk.menu #var/ipfire/menu.d/EX-bluetooth.menu #var/ipfire/menu.d/EX-guardian.menu -#var/ipfire/menu.d/EX-imspector.menu #var/ipfire/menu.d/EX-mpfire.menu #var/ipfire/menu.d/EX-samba.menu #var/ipfire/menu.d/EX-tor.menu diff --git a/config/rootfiles/common/web-user-interface b/config/rootfiles/common/web-user-interface index 1330ed7a8..f204f1657 100644 --- a/config/rootfiles/common/web-user-interface +++ b/config/rootfiles/common/web-user-interface @@ -29,7 +29,6 @@ srv/web/ipfire/cgi-bin/gui.cgi srv/web/ipfire/cgi-bin/hardwaregraphs.cgi srv/web/ipfire/cgi-bin/hosts.cgi srv/web/ipfire/cgi-bin/ids.cgi -#srv/web/ipfire/cgi-bin/imspector.cgi srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/ipinfo.cgi srv/web/ipfire/cgi-bin/iptables.cgi diff --git a/config/rootfiles/packages/imspector b/config/rootfiles/packages/imspector deleted file mode 100644 index 945c3774d..000000000 --- a/config/rootfiles/packages/imspector +++ /dev/null @@ -1,28 +0,0 @@ -etc/imspector -etc/imspector.conf -#etc/imspector/acl.txt -#etc/imspector/badwords.txt -#etc/imspector/imspector.conf -usr/lib/imspector -usr/lib/imspector/aclfilterplugin.so -usr/lib/imspector/badwordsfilterplugin.so -usr/lib/imspector/catsloggingplugin.so -usr/lib/imspector/censordfilterplugin.so -usr/lib/imspector/debugloggingplugin.so -usr/lib/imspector/fileloggingplugin.so -usr/lib/imspector/ggprotocolplugin.so -usr/lib/imspector/httpsprotocolplugin.so -usr/lib/imspector/icqprotocolplugin.so -usr/lib/imspector/ircprotocolplugin.so -usr/lib/imspector/jabberprotocolplugin.so -usr/lib/imspector/miscfilterplugin.so -usr/lib/imspector/msnprotocolplugin.so -usr/lib/imspector/yahooprotocolplugin.so -usr/lib/libimspector.so -usr/sbin/imspector -var/ipfire/backup/addons/includes/imspector -var/lib/imspector -var/log/imspector -etc/rc.d/init.d/imspector -srv/web/ipfire/cgi-bin/imspector.cgi -var/ipfire/menu.d/EX-imspector.menu diff --git a/html/cgi-bin/imspector.cgi b/html/cgi-bin/imspector.cgi deleted file mode 100644 index fff4329d7..000000000 --- a/html/cgi-bin/imspector.cgi +++ /dev/null @@ -1,607 +0,0 @@ -#!/usr/bin/perl -# -# IMSpector real-time log viewer -# (c) SmoothWall Ltd 2008 -# -# Released under the GPL v2. - -use POSIX qw(strftime); - -# Common configuration parameters. - -my $logbase = "/var/log/imspector/"; -my $oururl = '/cgi-bin/imspector.cgi'; - -# Colours - -my $protocol_colour = '#06264d'; -my $local_colour = '#1d398b'; -my $remote_colour = '#2149c1'; -my $conversation_colour = '#335ebe'; - -my $local_user_colour = 'blue'; -my $remote_user_colour = 'green'; - -# No need to change anything from this point - -# Page declaration, The following code should parse the CGI headers, and render the page -# accordingly... How you do this depends what environment you're in. - -my %cgiparams; - -print "Content-type: text/html\n"; -print "\n"; - -if ($ENV{'QUERY_STRING'}) -{ - my @vars = split('\&', $ENV{'QUERY_STRING'}); - foreach $_ (@vars) - { - my ($var, $val) = split(/\=/); - $cgiparams{$var} = $val; - } -} - -# Act in Tail mode (as in just generate the raw logs and pass back to the other CGI - -if ( defined $cgiparams{'mode'} and $cgiparams{'mode'} eq "render" ){ - &parser( $cgiparams{'section'}, $cgiparams{'offset'}, $cgiparams{'conversation'}, $cgiparams{'skimhtml'} ); - exit; -} - -# Start rendering the Page using Express' rendering functions - -my $script = &scriptheader(); - -# Print Some header information - -print qq| - - - - IMSpector real-time log viewer - $script - - -|; - -print &pagebody(); - -# and now finish off the HTML page. - -print qq| - - -|; - -exit; - -# ----------------------------------------------------------------------------- -# ---------------------- IMSPector Log Viewer Code ---------------------------- -# ----------------------------------------------------------------------------- -# ^"^ ^"^ - -# Scriptheader -# ------------ -# Return the bulk of the page, which should reside in the pages field - -sub scriptheader -{ - my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday ) = localtime( time() ); - $year += 1900; $mon++; - my $conversation = sprintf( "%.4d-%.2d-%.2d", $year, $mon, $mday ); - - my $script = qq { - - }; - - return $script; -} - -# pagebody function -# ----------------- -# Return the HTML fragment which includes the page body. - -sub pagebody -{ - my $body = qq { -

     
    - - - - - - -
    -
    -
    -
    -
    - For conversations on:  - -
    -
    - [HTML] - [SCROLL LOCK] -
    -
    -
    - - }; - return $body; -} - -# Parser function ... -# --------------- -# Retrieves the IMspector logs from their nestling place and displays them accordingly. - -sub parser -{ - my ( $section, $offset, $conversationdate, $skimhtml ) = @_; - # render the user list ... - - chomp $offset; - - unless ( $offset =~ /^([\d]*)$/ ){ - print STDERR "Illegal offset ($offset $1) resetting...\n"; - $offset = 0; - } - - # browse for the available protocols - unless ( opendir DIR, $logbase ){ - exit; - } - - my %conversationaldates; - my @protocols = grep {!/^\./} readdir(DIR); - - foreach my $protocol ( @protocols ){ - unless ( opendir LUSER, "$logbase$protocol" ){ - next; - } - - my @localusers = grep {!/^\./} readdir(LUSER); - foreach my $localuser ( @localusers ){ - unless ( opendir RUSER, "$logbase$protocol/$localuser/" ){ - next; - } - my @remoteusers = grep {!/^\./} readdir( RUSER ); - foreach my $remoteuser ( @remoteusers ){ - unless ( opendir CONVERSATIONS, "$logbase$protocol/$localuser/$remoteuser/" ){ - next; - } - my @conversations = grep {!/^\./} readdir( CONVERSATIONS ); - foreach my $conversation ( @conversations ){ - $conversationaldates{ $conversation } = $localuser; - } - - closedir CONVERSATIONS; - - my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday ) = localtime( time() ); - $year += 1900; $mon++; - my $conversation = sprintf( "%.4d-%.2d-%.2d", $year, $mon, $mday ); - - $conversation = $conversationdate if ( defined $conversationdate and $conversationdate ne "" ); - - if ( -e "$logbase$protocol/$localuser/$remoteuser/$conversation" ){ - my $modi = -M "$logbase$protocol/$localuser/$remoteuser/$conversation"; - print "|$protocol|$localuser|$remoteuser|$conversation|$modi\n"; - } - } - closedir RUSER; - } - closedir LUSER; - } - closedir DIR; - - print "--END--\n"; - - # display a list of conversational dates .. i.e. the dates which we have conversations on. - foreach my $key ( sort keys %conversationaldates ){ - print "$key\n"; - } - - print "--END--\n"; - - - # now check the log file ... - - if ( $section ne "none" ){ - my ( $protocol, $localuser, $remoteuser, $conversation ) = split /\|/, $section; - - print "$protocol, $localuser, $remoteuser, $conversation\n"; - print "--END--\n"; - - my $filename = "$logbase$protocol/$localuser/$remoteuser/$conversation"; - - unless ( open(FD, "$filename" ) ){ - exit; - }; - - # perform some *reasonably* complicated file hopping and stuff of that ilk. - # it's not beyond reason that logs *could* be extremely large, so what we - # should do to speed up their processing is to jump to the end of the file, - # then backtrack a little (say a meg, which is a reasonably amount of logs) - # and parse from that point onwards. This, *post* filtering might of course - # not leave us with the desired resolution for the tail. If this is the case, - # we keep that array and jump back another meg and have another go, concatinating - # the logs as we go.... - - my $jumpback = 100000; # not quite a meg, but hey ho - my $goneback = 0; - my $gonebacklimit = 1000000000; # don't go back more than 100MB - - # firstly jump to the end of the file. - seek( FD, 0, 2 ); - - my $log_position = tell( FD ); - my $end = $log_position; - my $end_position = $log_position; - - my $lines; - my @content; - - my $TAILSIZE = 100; - - do { - $end_position = $log_position; - - if ( $offset != 0 ){ - # we were given a hint as to where we should have been anyhow .. - # so we might as well use that to go back to. - $log_position = $offset; - $goneback = $end_position - $log_position; - } else { - $log_position -= $jumpback; - $goneback += $jumpback; - } - - last if ( $goneback > $gonebacklimit ); - - if ( $log_position > 0 ){ - seek( FD, $log_position, 0 ); - } else { - seek( FD, 0, 0 ); - } - - my @newcontent; - - while ( my $line = and ( tell( FD ) <= $end_position ) ){ - chomp $line; - push @content, $line; - } - shift @content if $#content >= $TAILSIZE; - } while ( $#content < $TAILSIZE and $log_position > 0 and $offset == 0 ); - - # trim the content down as we may have more entries than we should. - - while ( $#content > $TAILSIZE ){ shift @content; }; - close FD; - - print "$end_position\n--END--\n"; - - foreach my $line ( @content ){ - my ( $address, $timestamp, $direction, $type, $filtered, $cat, $data ); - - ( $address, $timestamp, $direction, $type, $filtered, $cat, $data ) = ( $line =~ /([^,]*),(\d+),(\d+),(\d+),(\d+),([^,]*),(.*)/ ); - - # are we using the oldstyle or new style logs ? - if ( not defined $address and not defined $timestamp ){ - ( $address, $timestamp, $type, $data ) = ( $line =~ /([^,]*),([^,]*),([^,]*),(.*)/ ); - if ( $type eq "1" ){ - $direction = 0; - $type = 1; - } elsif ( $type eq "2" ){ - $direction = 1; - $type = 1; - } elsif ( $type eq "3" ){ - $direction = 0; - $type = 2; - } elsif ( $type eq "4" ){ - $direction = 1; - $type = 4; - } - } - - my ( $severity, $classification ) = '0', 'None'; - if ($cat) { - ( $severity, $classification) = split(/ /, $cat, 2); } - else { - $cat = 'N/A'; } - - my $red = 255; - my $green = 255; - my $blue = 255; - - if ($severity < 0 && $severity >= -5) { - $red = 0; $green = abs($severity) * (255 / 5); $blue = 0; } - elsif ($severity > 0 && $severity <= 5) { - $red = $severity * (255 / 5); $green = 0; $blue = 0; } - else { - $red = 0; $green = 0; $blue = 0; } - - my $severitycolour = ''; - if ($cat ne 'N/A') { - $severitycolour = sprintf("background-color: #%02x%02x%02x;", $red, $green, $blue); } - - # some protocols (ICQ, I'm looking in your direction) have a habit of starting - # and ending each sentence with HTML (evil program) - - if ( defined $skimhtml and $skimhtml eq "1" ){ - $data =~ s/^]*>]*>//ig; - $data =~ s/<\/FONT><\/BODY><\/HTML>//ig; - } - - $data = &htmlescape($data); - $data =~ s/\r\\n/
    \n/g; - my $user = ""; - - my $bstyle = ""; - $bstyle = "style='background-color: #FFE4E1;'" if ( $filtered eq "1" ); - - if ( $type eq "1" ){ - # a message message (from remote user) - if ( $direction eq "0" ){ - # incoming - my $u = $remoteuser; - $u =~ s/\@.*//g; - $user = "<$u>"; - } else { - # outgoing message - my $u = $localuser; - $u =~ s/\@.*//g; - $user = "<$u>"; - } - } elsif ($type eq "2") { - if ( $direction eq "0" ){ - # incoming file - my $u = $remoteuser; - $u =~ s/\@.*//g; - $user = "<$u>"; - } else { - # outgoing file - my $u = $localuser; - $u =~ s/\@.*//g; - $user = "<$u>"; - } - } - - my $t = strftime "%H:%M:%S", localtime($timestamp); - if ($type eq "3" or $type eq "4") { - $data = "$data"; - } - print "[$t]$user$data"; - } - } - return; -} - -sub htmlescape -{ - my ($value) = @_; - $value =~ s/&/\&/g; - $value =~ s//\>/g; - $value =~ s/"/\"/g; - $value =~ s/'/\'/g; - return $value; -} diff --git a/lfs/imspector b/lfs/imspector deleted file mode 100644 index d4aa9b1e0..000000000 --- a/lfs/imspector +++ /dev/null @@ -1,98 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2010 Michael Tremer & Christian Schmidt # -# # -# This program is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation, either version 3 of the License, or # -# (at your option) any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program. If not, see . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 20101008 - -THISAPP = imspector-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/imspector -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = imspector -PAK_VER = 3 - -DEPS = "" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 032407bb13ccddb77328f83eded102ee - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/imspector-20101008-ssl.patch - cd $(DIR_SRC)/imspector && sed -e "s/^SSL_LIBS.*/& -lcrypto/" -i Makefile - cd $(DIR_SRC)/imspector && make install - - -mv /usr/etc/imspector /etc/imspector - -mv /etc/imspector/imspector /etc/imspector - - install -v -m 755 $(DIR_CONF)/imspector/imspector.conf /etc/imspector.conf - install -v -m 644 $(DIR_SRC)/config/backup/includes/imspector /var/ipfire/backup/addons/includes/imspector - - chmod 755 /srv/web/ipfire/cgi-bin/imspector.cgi - chown nobody:nobody -R /var/log/imspector - - #install initscripts - $(call INSTALL_INITSCRIPT,imspector) - - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 3ebf0b8d0..4f53e4654 100755 --- a/make.sh +++ b/make.sh @@ -805,7 +805,6 @@ buildipfire() { lfsmake2 pound lfsmake2 minicom lfsmake2 ddrescue - lfsmake2 imspector lfsmake2 miniupnpd lfsmake2 client175 lfsmake2 powertop diff --git a/src/initscripts/packages/imspector b/src/initscripts/packages/imspector deleted file mode 100644 index 7a5a98653..000000000 --- a/src/initscripts/packages/imspector +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# Begin $rc_base/init.d/imspector - -. /etc/sysconfig/rc -. $rc_functions - -case "$1" in - start) - boot_mesg "Inserting imspector redirects..." - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 5222 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 5223 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 5050 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 6667 -j REDIRECT --to-ports 16667 - iptables -t nat -A CUSTOMPREROUTING -p tcp --destination-port 8074 -j REDIRECT --to-ports 16667 - - boot_mesg "Starting imspector Deamon..." - loadproc imspector -c /etc/imspector/imspector.conf - evaluate_retval - ;; - - stop) - boot_mesg "Stopping imspector Deamon..." - killproc /usr/sbin/imspector - evaluate_retval - - boot_mesg "Remove imspector redirects..." - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 5222 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 5223 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 5050 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 6667 -j REDIRECT --to-ports 16667 - iptables -t nat -D CUSTOMPREROUTING -p tcp --destination-port 8074 -j REDIRECT --to-ports 16667 - ;; - - restart) - $0 stop - sleep 1 - $0 start - ;; - - status) - statusproc /usr/sbin/imspector - ;; - - *) - echo "Usage: $0 {start|stop|restart|status}" - exit 1 - ;; -esac - -# End $rc_base/init.d/imspector diff --git a/src/patches/imspector-20101008-ssl.patch b/src/patches/imspector-20101008-ssl.patch deleted file mode 100644 index 32ac76629..000000000 --- a/src/patches/imspector-20101008-ssl.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- imspector/sslstate.h 2010-02-23 18:21:56.000000000 +0100 -+++ imspector/sslstate.h 2013-12-14 15:40:04.796370688 +0100 -@@ -52,7 +52,7 @@ - int sslverify; //!< Our VERIFY_ choice. - - bool localdebugmode; //!< Saves us from passing this around. -- SSL_METHOD *method; //!< openssl method handle. -+ const SSL_METHOD *method; //!< openssl method handle. - SSL_CTX *connectctx; //!< Our IM server-sde CTX. - SSL_CTX *ctx; //!< Our IM client-side CTX. - From 3f5ece7ca2be9059719bb5cd78c3411b1f68401d Mon Sep 17 00:00:00 2001 From: Daniel Aleksandersen Date: Mon, 22 May 2017 04:00:58 +0200 Subject: [PATCH 409/464] miniupnpd should listen on green0 in default configuration Resolves issue with message log flodded by denied local clients. "HTTP peer : is not from a LAN, closing the connection" "SSDP packet sender : not from a LAN, ignoring" Signed-off-by: Michael Tremer --- config/miniupnpd/miniupnpd.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/miniupnpd/miniupnpd.conf b/config/miniupnpd/miniupnpd.conf index 4a9cbc086..582758192 100644 --- a/config/miniupnpd/miniupnpd.conf +++ b/config/miniupnpd/miniupnpd.conf @@ -2,6 +2,9 @@ # LAN network interfaces IPs / networks # there can be multiple listening ips for SSDP traffic. # should be under the form nnn.nnn.nnn.nnn/nn +listening_ip=green0 +#listening_ip=green1 + # HTTP is available on all interfaces # port for HTTP (descriptions and SOAP) traffic. set 0 for autoselect. port=0 From 70cbff51804d92197381efe1c5a8962569b4d2ec Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 19:56:07 +0100 Subject: [PATCH 410/464] Rootfile update for glibc (x86_64) Signed-off-by: Michael Tremer --- config/rootfiles/common/x86_64/glibc | 6129 +------------------------- 1 file changed, 163 insertions(+), 5966 deletions(-) diff --git a/config/rootfiles/common/x86_64/glibc b/config/rootfiles/common/x86_64/glibc index 98845c6f2..73783cd6d 100644 --- a/config/rootfiles/common/x86_64/glibc +++ b/config/rootfiles/common/x86_64/glibc @@ -1,48 +1,51 @@ #etc/ld.so.cache -etc/localtime etc/rpc -lib/ld-2.12.so +lib/ld-2.25.so lib/ld-linux-x86-64.so.2 -lib/libBrokenLocale-2.12.so +lib/libBrokenLocale-2.25.so lib/libBrokenLocale.so.1 #lib/libSegFault.so -lib/libanl-2.12.so +lib/libanl-2.25.so lib/libanl.so.1 -lib/libc-2.12.so +lib/libc-2.25.so lib/libc.so.6 -lib/libcidn-2.12.so +lib/libcidn-2.25.so lib/libcidn.so.1 -lib/libcrypt-2.12.so +lib/libcrypt-2.25.so lib/libcrypt.so.1 -lib/libdl-2.12.so +lib/libdl-2.25.so lib/libdl.so.2 -lib/libm-2.12.so +lib/libm-2.25.so lib/libm.so.6 #lib/libmemusage.so -lib/libnsl-2.12.so +lib/libmvec-2.25.so +lib/libmvec.so.1 +lib/libnsl-2.25.so lib/libnsl.so.1 -lib/libnss_compat-2.12.so +lib/libnss_compat-2.25.so lib/libnss_compat.so.2 -lib/libnss_dns-2.12.so +lib/libnss_db-2.25.so +lib/libnss_db.so.2 +lib/libnss_dns-2.25.so lib/libnss_dns.so.2 -lib/libnss_files-2.12.so +lib/libnss_files-2.25.so lib/libnss_files.so.2 -lib/libnss_hesiod-2.12.so +lib/libnss_hesiod-2.25.so lib/libnss_hesiod.so.2 -lib/libnss_nis-2.12.so +lib/libnss_nis-2.25.so lib/libnss_nis.so.2 -lib/libnss_nisplus-2.12.so +lib/libnss_nisplus-2.25.so lib/libnss_nisplus.so.2 #lib/libpcprofile.so -lib/libpthread-2.12.so +lib/libpthread-2.25.so lib/libpthread.so.0 -lib/libresolv-2.12.so +lib/libresolv-2.25.so lib/libresolv.so.2 -lib/librt-2.12.so +lib/librt-2.25.so lib/librt.so.1 lib/libthread_db-1.0.so lib/libthread_db.so.1 -lib/libutil-2.12.so +lib/libutil-2.25.so lib/libutil.so.1 sbin/ldconfig #sbin/sln @@ -54,9 +57,12 @@ usr/bin/getent usr/bin/ldd usr/bin/locale #usr/bin/localedef +#usr/bin/makedb #usr/bin/mtrace #usr/bin/pcprofiledump +#usr/bin/pldd #usr/bin/rpcgen +#usr/bin/sotruss #usr/bin/sprof #usr/bin/tzselect #usr/bin/xtrace @@ -78,6 +84,7 @@ usr/bin/locale #usr/include/assert.h #usr/include/bits #usr/include/bits/a.out.h +#usr/include/bits/byteswap-16.h #usr/include/bits/byteswap.h #usr/include/bits/cmathcalls.h #usr/include/bits/confname.h @@ -86,30 +93,44 @@ usr/bin/locale #usr/include/bits/elfclass.h #usr/include/bits/endian.h #usr/include/bits/environments.h +#usr/include/bits/epoll.h #usr/include/bits/errno.h #usr/include/bits/error.h +#usr/include/bits/eventfd.h +#usr/include/bits/fcntl-linux.h #usr/include/bits/fcntl.h #usr/include/bits/fcntl2.h #usr/include/bits/fenv.h #usr/include/bits/fenvinline.h +#usr/include/bits/flt-eval-method.h +#usr/include/bits/fp-fast.h +#usr/include/bits/fp-logb.h #usr/include/bits/huge_val.h #usr/include/bits/huge_valf.h #usr/include/bits/huge_vall.h +#usr/include/bits/hwcap.h #usr/include/bits/in.h #usr/include/bits/inf.h #usr/include/bits/initspin.h +#usr/include/bits/inotify.h #usr/include/bits/ioctl-types.h #usr/include/bits/ioctls.h #usr/include/bits/ipc.h #usr/include/bits/ipctypes.h -#usr/include/bits/libc-lock.h +#usr/include/bits/iscanonical.h +#usr/include/bits/libc-header-start.h #usr/include/bits/libio-ldbl.h +#usr/include/bits/libm-simd-decl-stubs.h #usr/include/bits/link.h #usr/include/bits/local_lim.h #usr/include/bits/locale.h +#usr/include/bits/long-double.h +#usr/include/bits/math-finite.h +#usr/include/bits/math-vector.h #usr/include/bits/mathcalls.h #usr/include/bits/mathdef.h #usr/include/bits/mathinline.h +#usr/include/bits/mman-linux.h #usr/include/bits/mman.h #usr/include/bits/monetary-ldbl.h #usr/include/bits/mqueue.h @@ -117,7 +138,9 @@ usr/bin/locale #usr/include/bits/msq.h #usr/include/bits/nan.h #usr/include/bits/netdb.h +#usr/include/bits/param.h #usr/include/bits/poll.h +#usr/include/bits/poll2.h #usr/include/bits/posix1_lim.h #usr/include/bits/posix2_lim.h #usr/include/bits/posix_opt.h @@ -126,6 +149,7 @@ usr/bin/locale #usr/include/bits/resource.h #usr/include/bits/sched.h #usr/include/bits/select.h +#usr/include/bits/select2.h #usr/include/bits/sem.h #usr/include/bits/semaphore.h #usr/include/bits/setjmp.h @@ -134,6 +158,7 @@ usr/bin/locale #usr/include/bits/sigaction.h #usr/include/bits/sigcontext.h #usr/include/bits/siginfo.h +#usr/include/bits/signalfd.h #usr/include/bits/signum.h #usr/include/bits/sigset.h #usr/include/bits/sigstack.h @@ -141,29 +166,48 @@ usr/bin/locale #usr/include/bits/sockaddr.h #usr/include/bits/socket.h #usr/include/bits/socket2.h +#usr/include/bits/socket_type.h #usr/include/bits/stab.def #usr/include/bits/stat.h #usr/include/bits/statfs.h #usr/include/bits/statvfs.h #usr/include/bits/stdio-ldbl.h -#usr/include/bits/stdio-lock.h #usr/include/bits/stdio.h #usr/include/bits/stdio2.h #usr/include/bits/stdio_lim.h +#usr/include/bits/stdlib-bsearch.h +#usr/include/bits/stdlib-float.h #usr/include/bits/stdlib-ldbl.h #usr/include/bits/stdlib.h #usr/include/bits/string.h #usr/include/bits/string2.h #usr/include/bits/string3.h +#usr/include/bits/strings_fortified.h +#usr/include/bits/stropts.h #usr/include/bits/sys_errlist.h #usr/include/bits/syscall.h +#usr/include/bits/sysctl.h #usr/include/bits/syslog-ldbl.h #usr/include/bits/syslog-path.h #usr/include/bits/syslog.h +#usr/include/bits/sysmacros.h #usr/include/bits/termios.h #usr/include/bits/time.h +#usr/include/bits/timerfd.h +#usr/include/bits/timex.h +#usr/include/bits/types #usr/include/bits/types.h +#usr/include/bits/types/clock_t.h +#usr/include/bits/types/clockid_t.h +#usr/include/bits/types/struct_itimerspec.h +#usr/include/bits/types/struct_osockaddr.h +#usr/include/bits/types/struct_timespec.h +#usr/include/bits/types/struct_timeval.h +#usr/include/bits/types/struct_tm.h +#usr/include/bits/types/time_t.h +#usr/include/bits/types/timer_t.h #usr/include/bits/typesizes.h +#usr/include/bits/uintn-identity.h #usr/include/bits/uio.h #usr/include/bits/unistd.h #usr/include/bits/ustat.h @@ -177,6 +221,7 @@ usr/bin/locale #usr/include/bits/wchar2.h #usr/include/bits/wordsize.h #usr/include/bits/xopen_lim.h +#usr/include/bits/xtitypes.h #usr/include/byteswap.h #usr/include/complex.h #usr/include/cpio.h @@ -205,6 +250,7 @@ usr/bin/locale #usr/include/glob.h #usr/include/gnu #usr/include/gnu-versions.h +#usr/include/gnu/lib-names-64.h #usr/include/gnu/lib-names.h #usr/include/gnu/libc-version.h #usr/include/gnu/stubs-64.h @@ -282,6 +328,7 @@ usr/bin/locale #usr/include/paths.h #usr/include/poll.h #usr/include/printf.h +#usr/include/proc_service.h #usr/include/protocols #usr/include/protocols/routed.h #usr/include/protocols/rwhod.h @@ -364,21 +411,26 @@ usr/bin/locale #usr/include/signal.h #usr/include/spawn.h #usr/include/stab.h +#usr/include/stdc-predef.h #usr/include/stdint.h #usr/include/stdio.h #usr/include/stdio_ext.h #usr/include/stdlib.h #usr/include/string.h #usr/include/strings.h +#usr/include/stropts.h #usr/include/sys #usr/include/sys/acct.h +#usr/include/sys/auxv.h #usr/include/sys/bitypes.h #usr/include/sys/cdefs.h #usr/include/sys/debugreg.h #usr/include/sys/dir.h +#usr/include/sys/elf.h #usr/include/sys/epoll.h #usr/include/sys/errno.h #usr/include/sys/eventfd.h +#usr/include/sys/fanotify.h #usr/include/sys/fcntl.h #usr/include/sys/file.h #usr/include/sys/fsuid.h @@ -389,7 +441,6 @@ usr/bin/locale #usr/include/sys/ioctl.h #usr/include/sys/ipc.h #usr/include/sys/kd.h -#usr/include/sys/kdaemon.h #usr/include/sys/klog.h #usr/include/sys/mman.h #usr/include/sys/mount.h @@ -406,6 +457,7 @@ usr/bin/locale #usr/include/sys/ptrace.h #usr/include/sys/queue.h #usr/include/sys/quota.h +#usr/include/sys/random.h #usr/include/sys/raw.h #usr/include/sys/reboot.h #usr/include/sys/reg.h @@ -422,6 +474,7 @@ usr/bin/locale #usr/include/sys/stat.h #usr/include/sys/statfs.h #usr/include/sys/statvfs.h +#usr/include/sys/stropts.h #usr/include/sys/swap.h #usr/include/sys/syscall.h #usr/include/sys/sysctl.h @@ -447,6 +500,7 @@ usr/bin/locale #usr/include/sys/utsname.h #usr/include/sys/vfs.h #usr/include/sys/vlimit.h +#usr/include/sys/vm86.h #usr/include/sys/vt.h #usr/include/sys/vtimes.h #usr/include/sys/wait.h @@ -461,6 +515,7 @@ usr/bin/locale #usr/include/thread_db.h #usr/include/time.h #usr/include/ttyent.h +#usr/include/uchar.h #usr/include/ucontext.h #usr/include/ulimit.h #usr/include/unistd.h @@ -476,6 +531,8 @@ usr/bin/locale #usr/include/xlocale.h #usr/lib/Mcrt1.o #usr/lib/Scrt1.o +#usr/lib/audit +#usr/lib/audit/sotruss-lib.so #usr/lib/crt1.o #usr/lib/crti.o #usr/lib/crtn.o @@ -498,6 +555,11 @@ usr/lib/gconv #usr/lib/gconv/CP1257.so #usr/lib/gconv/CP1258.so #usr/lib/gconv/CP737.so +#usr/lib/gconv/CP770.so +#usr/lib/gconv/CP771.so +#usr/lib/gconv/CP772.so +#usr/lib/gconv/CP773.so +#usr/lib/gconv/CP774.so #usr/lib/gconv/CP775.so #usr/lib/gconv/CP932.so #usr/lib/gconv/CSN_369103.so @@ -733,12 +795,11 @@ usr/lib/gconv #usr/lib/glibc/getconf #usr/lib/glibc/getconf/POSIX_V6_LP64_OFF64 #usr/lib/glibc/getconf/POSIX_V7_LP64_OFF64 -#usr/lib/glibc/pt_chown +#usr/lib/glibc/getconf/XBS5_LP64_OFF64 #usr/lib/libBrokenLocale.a #usr/lib/libBrokenLocale.so #usr/lib/libanl.a #usr/lib/libanl.so -#usr/lib/libbsd-compat.a #usr/lib/libc.a #usr/lib/libc.so #usr/lib/libc_nonshared.a @@ -749,12 +810,17 @@ usr/lib/gconv #usr/lib/libdl.so #usr/lib/libg.a #usr/lib/libieee.a +#usr/lib/libm-2.25.a #usr/lib/libm.a #usr/lib/libm.so #usr/lib/libmcheck.a +#usr/lib/libmvec.a +#usr/lib/libmvec.so +#usr/lib/libmvec_nonshared.a #usr/lib/libnsl.a #usr/lib/libnsl.so #usr/lib/libnss_compat.so +#usr/lib/libnss_db.so #usr/lib/libnss_dns.so #usr/lib/libnss_files.so #usr/lib/libnss_hesiod.so @@ -772,5945 +838,9 @@ usr/lib/gconv #usr/lib/libutil.a #usr/lib/libutil.so usr/lib/locale -#usr/lib/locale/aa_DJ -#usr/lib/locale/aa_DJ.utf8 -#usr/lib/locale/aa_DJ.utf8/LC_ADDRESS -#usr/lib/locale/aa_DJ.utf8/LC_COLLATE -#usr/lib/locale/aa_DJ.utf8/LC_CTYPE -#usr/lib/locale/aa_DJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/aa_DJ.utf8/LC_MEASUREMENT -#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES -#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_DJ.utf8/LC_MONETARY -#usr/lib/locale/aa_DJ.utf8/LC_NAME -#usr/lib/locale/aa_DJ.utf8/LC_NUMERIC -#usr/lib/locale/aa_DJ.utf8/LC_PAPER -#usr/lib/locale/aa_DJ.utf8/LC_TELEPHONE -#usr/lib/locale/aa_DJ.utf8/LC_TIME -#usr/lib/locale/aa_DJ/LC_ADDRESS -#usr/lib/locale/aa_DJ/LC_COLLATE -#usr/lib/locale/aa_DJ/LC_CTYPE -#usr/lib/locale/aa_DJ/LC_IDENTIFICATION -#usr/lib/locale/aa_DJ/LC_MEASUREMENT -#usr/lib/locale/aa_DJ/LC_MESSAGES -#usr/lib/locale/aa_DJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_DJ/LC_MONETARY -#usr/lib/locale/aa_DJ/LC_NAME -#usr/lib/locale/aa_DJ/LC_NUMERIC -#usr/lib/locale/aa_DJ/LC_PAPER -#usr/lib/locale/aa_DJ/LC_TELEPHONE -#usr/lib/locale/aa_DJ/LC_TIME -#usr/lib/locale/aa_ER -#usr/lib/locale/aa_ER/LC_ADDRESS -#usr/lib/locale/aa_ER/LC_COLLATE -#usr/lib/locale/aa_ER/LC_CTYPE -#usr/lib/locale/aa_ER/LC_IDENTIFICATION -#usr/lib/locale/aa_ER/LC_MEASUREMENT -#usr/lib/locale/aa_ER/LC_MESSAGES -#usr/lib/locale/aa_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ER/LC_MONETARY -#usr/lib/locale/aa_ER/LC_NAME -#usr/lib/locale/aa_ER/LC_NUMERIC -#usr/lib/locale/aa_ER/LC_PAPER -#usr/lib/locale/aa_ER/LC_TELEPHONE -#usr/lib/locale/aa_ER/LC_TIME -#usr/lib/locale/aa_ER@saaho -#usr/lib/locale/aa_ER@saaho/LC_ADDRESS -#usr/lib/locale/aa_ER@saaho/LC_COLLATE -#usr/lib/locale/aa_ER@saaho/LC_CTYPE -#usr/lib/locale/aa_ER@saaho/LC_IDENTIFICATION -#usr/lib/locale/aa_ER@saaho/LC_MEASUREMENT -#usr/lib/locale/aa_ER@saaho/LC_MESSAGES -#usr/lib/locale/aa_ER@saaho/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ER@saaho/LC_MONETARY -#usr/lib/locale/aa_ER@saaho/LC_NAME -#usr/lib/locale/aa_ER@saaho/LC_NUMERIC -#usr/lib/locale/aa_ER@saaho/LC_PAPER -#usr/lib/locale/aa_ER@saaho/LC_TELEPHONE -#usr/lib/locale/aa_ER@saaho/LC_TIME -#usr/lib/locale/aa_ET -#usr/lib/locale/aa_ET/LC_ADDRESS -#usr/lib/locale/aa_ET/LC_COLLATE -#usr/lib/locale/aa_ET/LC_CTYPE -#usr/lib/locale/aa_ET/LC_IDENTIFICATION -#usr/lib/locale/aa_ET/LC_MEASUREMENT -#usr/lib/locale/aa_ET/LC_MESSAGES -#usr/lib/locale/aa_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ET/LC_MONETARY -#usr/lib/locale/aa_ET/LC_NAME -#usr/lib/locale/aa_ET/LC_NUMERIC -#usr/lib/locale/aa_ET/LC_PAPER -#usr/lib/locale/aa_ET/LC_TELEPHONE -#usr/lib/locale/aa_ET/LC_TIME -#usr/lib/locale/af_ZA -#usr/lib/locale/af_ZA.utf8 -#usr/lib/locale/af_ZA.utf8/LC_ADDRESS -#usr/lib/locale/af_ZA.utf8/LC_COLLATE -#usr/lib/locale/af_ZA.utf8/LC_CTYPE -#usr/lib/locale/af_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/af_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/af_ZA.utf8/LC_MESSAGES -#usr/lib/locale/af_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/af_ZA.utf8/LC_MONETARY -#usr/lib/locale/af_ZA.utf8/LC_NAME -#usr/lib/locale/af_ZA.utf8/LC_NUMERIC -#usr/lib/locale/af_ZA.utf8/LC_PAPER -#usr/lib/locale/af_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/af_ZA.utf8/LC_TIME -#usr/lib/locale/af_ZA/LC_ADDRESS -#usr/lib/locale/af_ZA/LC_COLLATE -#usr/lib/locale/af_ZA/LC_CTYPE -#usr/lib/locale/af_ZA/LC_IDENTIFICATION -#usr/lib/locale/af_ZA/LC_MEASUREMENT -#usr/lib/locale/af_ZA/LC_MESSAGES -#usr/lib/locale/af_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/af_ZA/LC_MONETARY -#usr/lib/locale/af_ZA/LC_NAME -#usr/lib/locale/af_ZA/LC_NUMERIC -#usr/lib/locale/af_ZA/LC_PAPER -#usr/lib/locale/af_ZA/LC_TELEPHONE -#usr/lib/locale/af_ZA/LC_TIME -#usr/lib/locale/am_ET -#usr/lib/locale/am_ET/LC_ADDRESS -#usr/lib/locale/am_ET/LC_COLLATE -#usr/lib/locale/am_ET/LC_CTYPE -#usr/lib/locale/am_ET/LC_IDENTIFICATION -#usr/lib/locale/am_ET/LC_MEASUREMENT -#usr/lib/locale/am_ET/LC_MESSAGES -#usr/lib/locale/am_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/am_ET/LC_MONETARY -#usr/lib/locale/am_ET/LC_NAME -#usr/lib/locale/am_ET/LC_NUMERIC -#usr/lib/locale/am_ET/LC_PAPER -#usr/lib/locale/am_ET/LC_TELEPHONE -#usr/lib/locale/am_ET/LC_TIME -#usr/lib/locale/an_ES -#usr/lib/locale/an_ES.utf8 -#usr/lib/locale/an_ES.utf8/LC_ADDRESS -#usr/lib/locale/an_ES.utf8/LC_COLLATE -#usr/lib/locale/an_ES.utf8/LC_CTYPE -#usr/lib/locale/an_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/an_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/an_ES.utf8/LC_MESSAGES -#usr/lib/locale/an_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/an_ES.utf8/LC_MONETARY -#usr/lib/locale/an_ES.utf8/LC_NAME -#usr/lib/locale/an_ES.utf8/LC_NUMERIC -#usr/lib/locale/an_ES.utf8/LC_PAPER -#usr/lib/locale/an_ES.utf8/LC_TELEPHONE -#usr/lib/locale/an_ES.utf8/LC_TIME -#usr/lib/locale/an_ES/LC_ADDRESS -#usr/lib/locale/an_ES/LC_COLLATE -#usr/lib/locale/an_ES/LC_CTYPE -#usr/lib/locale/an_ES/LC_IDENTIFICATION -#usr/lib/locale/an_ES/LC_MEASUREMENT -#usr/lib/locale/an_ES/LC_MESSAGES -#usr/lib/locale/an_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/an_ES/LC_MONETARY -#usr/lib/locale/an_ES/LC_NAME -#usr/lib/locale/an_ES/LC_NUMERIC -#usr/lib/locale/an_ES/LC_PAPER -#usr/lib/locale/an_ES/LC_TELEPHONE -#usr/lib/locale/an_ES/LC_TIME -#usr/lib/locale/ar_AE -#usr/lib/locale/ar_AE.utf8 -#usr/lib/locale/ar_AE.utf8/LC_ADDRESS -#usr/lib/locale/ar_AE.utf8/LC_COLLATE -#usr/lib/locale/ar_AE.utf8/LC_CTYPE -#usr/lib/locale/ar_AE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_AE.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_AE.utf8/LC_MESSAGES -#usr/lib/locale/ar_AE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_AE.utf8/LC_MONETARY -#usr/lib/locale/ar_AE.utf8/LC_NAME -#usr/lib/locale/ar_AE.utf8/LC_NUMERIC -#usr/lib/locale/ar_AE.utf8/LC_PAPER -#usr/lib/locale/ar_AE.utf8/LC_TELEPHONE -#usr/lib/locale/ar_AE.utf8/LC_TIME -#usr/lib/locale/ar_AE/LC_ADDRESS -#usr/lib/locale/ar_AE/LC_COLLATE -#usr/lib/locale/ar_AE/LC_CTYPE -#usr/lib/locale/ar_AE/LC_IDENTIFICATION -#usr/lib/locale/ar_AE/LC_MEASUREMENT -#usr/lib/locale/ar_AE/LC_MESSAGES -#usr/lib/locale/ar_AE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_AE/LC_MONETARY -#usr/lib/locale/ar_AE/LC_NAME -#usr/lib/locale/ar_AE/LC_NUMERIC -#usr/lib/locale/ar_AE/LC_PAPER -#usr/lib/locale/ar_AE/LC_TELEPHONE -#usr/lib/locale/ar_AE/LC_TIME -#usr/lib/locale/ar_BH -#usr/lib/locale/ar_BH.utf8 -#usr/lib/locale/ar_BH.utf8/LC_ADDRESS -#usr/lib/locale/ar_BH.utf8/LC_COLLATE -#usr/lib/locale/ar_BH.utf8/LC_CTYPE -#usr/lib/locale/ar_BH.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_BH.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_BH.utf8/LC_MESSAGES -#usr/lib/locale/ar_BH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_BH.utf8/LC_MONETARY -#usr/lib/locale/ar_BH.utf8/LC_NAME -#usr/lib/locale/ar_BH.utf8/LC_NUMERIC -#usr/lib/locale/ar_BH.utf8/LC_PAPER -#usr/lib/locale/ar_BH.utf8/LC_TELEPHONE -#usr/lib/locale/ar_BH.utf8/LC_TIME -#usr/lib/locale/ar_BH/LC_ADDRESS -#usr/lib/locale/ar_BH/LC_COLLATE -#usr/lib/locale/ar_BH/LC_CTYPE -#usr/lib/locale/ar_BH/LC_IDENTIFICATION -#usr/lib/locale/ar_BH/LC_MEASUREMENT -#usr/lib/locale/ar_BH/LC_MESSAGES -#usr/lib/locale/ar_BH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_BH/LC_MONETARY -#usr/lib/locale/ar_BH/LC_NAME -#usr/lib/locale/ar_BH/LC_NUMERIC -#usr/lib/locale/ar_BH/LC_PAPER -#usr/lib/locale/ar_BH/LC_TELEPHONE -#usr/lib/locale/ar_BH/LC_TIME -#usr/lib/locale/ar_DZ -#usr/lib/locale/ar_DZ.utf8 -#usr/lib/locale/ar_DZ.utf8/LC_ADDRESS -#usr/lib/locale/ar_DZ.utf8/LC_COLLATE -#usr/lib/locale/ar_DZ.utf8/LC_CTYPE -#usr/lib/locale/ar_DZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_DZ.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES -#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_DZ.utf8/LC_MONETARY -#usr/lib/locale/ar_DZ.utf8/LC_NAME -#usr/lib/locale/ar_DZ.utf8/LC_NUMERIC -#usr/lib/locale/ar_DZ.utf8/LC_PAPER -#usr/lib/locale/ar_DZ.utf8/LC_TELEPHONE -#usr/lib/locale/ar_DZ.utf8/LC_TIME -#usr/lib/locale/ar_DZ/LC_ADDRESS -#usr/lib/locale/ar_DZ/LC_COLLATE -#usr/lib/locale/ar_DZ/LC_CTYPE -#usr/lib/locale/ar_DZ/LC_IDENTIFICATION -#usr/lib/locale/ar_DZ/LC_MEASUREMENT -#usr/lib/locale/ar_DZ/LC_MESSAGES -#usr/lib/locale/ar_DZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_DZ/LC_MONETARY -#usr/lib/locale/ar_DZ/LC_NAME -#usr/lib/locale/ar_DZ/LC_NUMERIC -#usr/lib/locale/ar_DZ/LC_PAPER -#usr/lib/locale/ar_DZ/LC_TELEPHONE -#usr/lib/locale/ar_DZ/LC_TIME -#usr/lib/locale/ar_EG -#usr/lib/locale/ar_EG.utf8 -#usr/lib/locale/ar_EG.utf8/LC_ADDRESS -#usr/lib/locale/ar_EG.utf8/LC_COLLATE -#usr/lib/locale/ar_EG.utf8/LC_CTYPE -#usr/lib/locale/ar_EG.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_EG.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_EG.utf8/LC_MESSAGES -#usr/lib/locale/ar_EG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_EG.utf8/LC_MONETARY -#usr/lib/locale/ar_EG.utf8/LC_NAME -#usr/lib/locale/ar_EG.utf8/LC_NUMERIC -#usr/lib/locale/ar_EG.utf8/LC_PAPER -#usr/lib/locale/ar_EG.utf8/LC_TELEPHONE -#usr/lib/locale/ar_EG.utf8/LC_TIME -#usr/lib/locale/ar_EG/LC_ADDRESS -#usr/lib/locale/ar_EG/LC_COLLATE -#usr/lib/locale/ar_EG/LC_CTYPE -#usr/lib/locale/ar_EG/LC_IDENTIFICATION -#usr/lib/locale/ar_EG/LC_MEASUREMENT -#usr/lib/locale/ar_EG/LC_MESSAGES -#usr/lib/locale/ar_EG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_EG/LC_MONETARY -#usr/lib/locale/ar_EG/LC_NAME -#usr/lib/locale/ar_EG/LC_NUMERIC -#usr/lib/locale/ar_EG/LC_PAPER -#usr/lib/locale/ar_EG/LC_TELEPHONE -#usr/lib/locale/ar_EG/LC_TIME -#usr/lib/locale/ar_IN -#usr/lib/locale/ar_IN/LC_ADDRESS -#usr/lib/locale/ar_IN/LC_COLLATE -#usr/lib/locale/ar_IN/LC_CTYPE -#usr/lib/locale/ar_IN/LC_IDENTIFICATION -#usr/lib/locale/ar_IN/LC_MEASUREMENT -#usr/lib/locale/ar_IN/LC_MESSAGES -#usr/lib/locale/ar_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IN/LC_MONETARY -#usr/lib/locale/ar_IN/LC_NAME -#usr/lib/locale/ar_IN/LC_NUMERIC -#usr/lib/locale/ar_IN/LC_PAPER -#usr/lib/locale/ar_IN/LC_TELEPHONE -#usr/lib/locale/ar_IN/LC_TIME -#usr/lib/locale/ar_IQ -#usr/lib/locale/ar_IQ.utf8 -#usr/lib/locale/ar_IQ.utf8/LC_ADDRESS -#usr/lib/locale/ar_IQ.utf8/LC_COLLATE -#usr/lib/locale/ar_IQ.utf8/LC_CTYPE -#usr/lib/locale/ar_IQ.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_IQ.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES -#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IQ.utf8/LC_MONETARY -#usr/lib/locale/ar_IQ.utf8/LC_NAME -#usr/lib/locale/ar_IQ.utf8/LC_NUMERIC -#usr/lib/locale/ar_IQ.utf8/LC_PAPER -#usr/lib/locale/ar_IQ.utf8/LC_TELEPHONE -#usr/lib/locale/ar_IQ.utf8/LC_TIME -#usr/lib/locale/ar_IQ/LC_ADDRESS -#usr/lib/locale/ar_IQ/LC_COLLATE -#usr/lib/locale/ar_IQ/LC_CTYPE -#usr/lib/locale/ar_IQ/LC_IDENTIFICATION -#usr/lib/locale/ar_IQ/LC_MEASUREMENT -#usr/lib/locale/ar_IQ/LC_MESSAGES -#usr/lib/locale/ar_IQ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IQ/LC_MONETARY -#usr/lib/locale/ar_IQ/LC_NAME -#usr/lib/locale/ar_IQ/LC_NUMERIC -#usr/lib/locale/ar_IQ/LC_PAPER -#usr/lib/locale/ar_IQ/LC_TELEPHONE -#usr/lib/locale/ar_IQ/LC_TIME -#usr/lib/locale/ar_JO -#usr/lib/locale/ar_JO.utf8 -#usr/lib/locale/ar_JO.utf8/LC_ADDRESS -#usr/lib/locale/ar_JO.utf8/LC_COLLATE -#usr/lib/locale/ar_JO.utf8/LC_CTYPE -#usr/lib/locale/ar_JO.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_JO.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_JO.utf8/LC_MESSAGES -#usr/lib/locale/ar_JO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_JO.utf8/LC_MONETARY -#usr/lib/locale/ar_JO.utf8/LC_NAME -#usr/lib/locale/ar_JO.utf8/LC_NUMERIC -#usr/lib/locale/ar_JO.utf8/LC_PAPER -#usr/lib/locale/ar_JO.utf8/LC_TELEPHONE -#usr/lib/locale/ar_JO.utf8/LC_TIME -#usr/lib/locale/ar_JO/LC_ADDRESS -#usr/lib/locale/ar_JO/LC_COLLATE -#usr/lib/locale/ar_JO/LC_CTYPE -#usr/lib/locale/ar_JO/LC_IDENTIFICATION -#usr/lib/locale/ar_JO/LC_MEASUREMENT -#usr/lib/locale/ar_JO/LC_MESSAGES -#usr/lib/locale/ar_JO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_JO/LC_MONETARY -#usr/lib/locale/ar_JO/LC_NAME -#usr/lib/locale/ar_JO/LC_NUMERIC -#usr/lib/locale/ar_JO/LC_PAPER -#usr/lib/locale/ar_JO/LC_TELEPHONE -#usr/lib/locale/ar_JO/LC_TIME -#usr/lib/locale/ar_KW -#usr/lib/locale/ar_KW.utf8 -#usr/lib/locale/ar_KW.utf8/LC_ADDRESS -#usr/lib/locale/ar_KW.utf8/LC_COLLATE -#usr/lib/locale/ar_KW.utf8/LC_CTYPE -#usr/lib/locale/ar_KW.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_KW.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_KW.utf8/LC_MESSAGES -#usr/lib/locale/ar_KW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_KW.utf8/LC_MONETARY -#usr/lib/locale/ar_KW.utf8/LC_NAME -#usr/lib/locale/ar_KW.utf8/LC_NUMERIC -#usr/lib/locale/ar_KW.utf8/LC_PAPER -#usr/lib/locale/ar_KW.utf8/LC_TELEPHONE -#usr/lib/locale/ar_KW.utf8/LC_TIME -#usr/lib/locale/ar_KW/LC_ADDRESS -#usr/lib/locale/ar_KW/LC_COLLATE -#usr/lib/locale/ar_KW/LC_CTYPE -#usr/lib/locale/ar_KW/LC_IDENTIFICATION -#usr/lib/locale/ar_KW/LC_MEASUREMENT -#usr/lib/locale/ar_KW/LC_MESSAGES -#usr/lib/locale/ar_KW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_KW/LC_MONETARY -#usr/lib/locale/ar_KW/LC_NAME -#usr/lib/locale/ar_KW/LC_NUMERIC -#usr/lib/locale/ar_KW/LC_PAPER -#usr/lib/locale/ar_KW/LC_TELEPHONE -#usr/lib/locale/ar_KW/LC_TIME -#usr/lib/locale/ar_LB -#usr/lib/locale/ar_LB.utf8 -#usr/lib/locale/ar_LB.utf8/LC_ADDRESS -#usr/lib/locale/ar_LB.utf8/LC_COLLATE -#usr/lib/locale/ar_LB.utf8/LC_CTYPE -#usr/lib/locale/ar_LB.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_LB.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_LB.utf8/LC_MESSAGES -#usr/lib/locale/ar_LB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LB.utf8/LC_MONETARY -#usr/lib/locale/ar_LB.utf8/LC_NAME -#usr/lib/locale/ar_LB.utf8/LC_NUMERIC -#usr/lib/locale/ar_LB.utf8/LC_PAPER -#usr/lib/locale/ar_LB.utf8/LC_TELEPHONE -#usr/lib/locale/ar_LB.utf8/LC_TIME -#usr/lib/locale/ar_LB/LC_ADDRESS -#usr/lib/locale/ar_LB/LC_COLLATE -#usr/lib/locale/ar_LB/LC_CTYPE -#usr/lib/locale/ar_LB/LC_IDENTIFICATION -#usr/lib/locale/ar_LB/LC_MEASUREMENT -#usr/lib/locale/ar_LB/LC_MESSAGES -#usr/lib/locale/ar_LB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LB/LC_MONETARY -#usr/lib/locale/ar_LB/LC_NAME -#usr/lib/locale/ar_LB/LC_NUMERIC -#usr/lib/locale/ar_LB/LC_PAPER -#usr/lib/locale/ar_LB/LC_TELEPHONE -#usr/lib/locale/ar_LB/LC_TIME -#usr/lib/locale/ar_LY -#usr/lib/locale/ar_LY.utf8 -#usr/lib/locale/ar_LY.utf8/LC_ADDRESS -#usr/lib/locale/ar_LY.utf8/LC_COLLATE -#usr/lib/locale/ar_LY.utf8/LC_CTYPE -#usr/lib/locale/ar_LY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_LY.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_LY.utf8/LC_MESSAGES -#usr/lib/locale/ar_LY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LY.utf8/LC_MONETARY -#usr/lib/locale/ar_LY.utf8/LC_NAME -#usr/lib/locale/ar_LY.utf8/LC_NUMERIC -#usr/lib/locale/ar_LY.utf8/LC_PAPER -#usr/lib/locale/ar_LY.utf8/LC_TELEPHONE -#usr/lib/locale/ar_LY.utf8/LC_TIME -#usr/lib/locale/ar_LY/LC_ADDRESS -#usr/lib/locale/ar_LY/LC_COLLATE -#usr/lib/locale/ar_LY/LC_CTYPE -#usr/lib/locale/ar_LY/LC_IDENTIFICATION -#usr/lib/locale/ar_LY/LC_MEASUREMENT -#usr/lib/locale/ar_LY/LC_MESSAGES -#usr/lib/locale/ar_LY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LY/LC_MONETARY -#usr/lib/locale/ar_LY/LC_NAME -#usr/lib/locale/ar_LY/LC_NUMERIC -#usr/lib/locale/ar_LY/LC_PAPER -#usr/lib/locale/ar_LY/LC_TELEPHONE -#usr/lib/locale/ar_LY/LC_TIME -#usr/lib/locale/ar_MA -#usr/lib/locale/ar_MA.utf8 -#usr/lib/locale/ar_MA.utf8/LC_ADDRESS -#usr/lib/locale/ar_MA.utf8/LC_COLLATE -#usr/lib/locale/ar_MA.utf8/LC_CTYPE -#usr/lib/locale/ar_MA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_MA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_MA.utf8/LC_MESSAGES -#usr/lib/locale/ar_MA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_MA.utf8/LC_MONETARY -#usr/lib/locale/ar_MA.utf8/LC_NAME -#usr/lib/locale/ar_MA.utf8/LC_NUMERIC -#usr/lib/locale/ar_MA.utf8/LC_PAPER -#usr/lib/locale/ar_MA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_MA.utf8/LC_TIME -#usr/lib/locale/ar_MA/LC_ADDRESS -#usr/lib/locale/ar_MA/LC_COLLATE -#usr/lib/locale/ar_MA/LC_CTYPE -#usr/lib/locale/ar_MA/LC_IDENTIFICATION -#usr/lib/locale/ar_MA/LC_MEASUREMENT -#usr/lib/locale/ar_MA/LC_MESSAGES -#usr/lib/locale/ar_MA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_MA/LC_MONETARY -#usr/lib/locale/ar_MA/LC_NAME -#usr/lib/locale/ar_MA/LC_NUMERIC -#usr/lib/locale/ar_MA/LC_PAPER -#usr/lib/locale/ar_MA/LC_TELEPHONE -#usr/lib/locale/ar_MA/LC_TIME -#usr/lib/locale/ar_OM -#usr/lib/locale/ar_OM.utf8 -#usr/lib/locale/ar_OM.utf8/LC_ADDRESS -#usr/lib/locale/ar_OM.utf8/LC_COLLATE -#usr/lib/locale/ar_OM.utf8/LC_CTYPE -#usr/lib/locale/ar_OM.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_OM.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_OM.utf8/LC_MESSAGES -#usr/lib/locale/ar_OM.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_OM.utf8/LC_MONETARY -#usr/lib/locale/ar_OM.utf8/LC_NAME -#usr/lib/locale/ar_OM.utf8/LC_NUMERIC -#usr/lib/locale/ar_OM.utf8/LC_PAPER -#usr/lib/locale/ar_OM.utf8/LC_TELEPHONE -#usr/lib/locale/ar_OM.utf8/LC_TIME -#usr/lib/locale/ar_OM/LC_ADDRESS -#usr/lib/locale/ar_OM/LC_COLLATE -#usr/lib/locale/ar_OM/LC_CTYPE -#usr/lib/locale/ar_OM/LC_IDENTIFICATION -#usr/lib/locale/ar_OM/LC_MEASUREMENT -#usr/lib/locale/ar_OM/LC_MESSAGES -#usr/lib/locale/ar_OM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_OM/LC_MONETARY -#usr/lib/locale/ar_OM/LC_NAME -#usr/lib/locale/ar_OM/LC_NUMERIC -#usr/lib/locale/ar_OM/LC_PAPER -#usr/lib/locale/ar_OM/LC_TELEPHONE -#usr/lib/locale/ar_OM/LC_TIME -#usr/lib/locale/ar_QA -#usr/lib/locale/ar_QA.utf8 -#usr/lib/locale/ar_QA.utf8/LC_ADDRESS -#usr/lib/locale/ar_QA.utf8/LC_COLLATE -#usr/lib/locale/ar_QA.utf8/LC_CTYPE -#usr/lib/locale/ar_QA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_QA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_QA.utf8/LC_MESSAGES -#usr/lib/locale/ar_QA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_QA.utf8/LC_MONETARY -#usr/lib/locale/ar_QA.utf8/LC_NAME -#usr/lib/locale/ar_QA.utf8/LC_NUMERIC -#usr/lib/locale/ar_QA.utf8/LC_PAPER -#usr/lib/locale/ar_QA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_QA.utf8/LC_TIME -#usr/lib/locale/ar_QA/LC_ADDRESS -#usr/lib/locale/ar_QA/LC_COLLATE -#usr/lib/locale/ar_QA/LC_CTYPE -#usr/lib/locale/ar_QA/LC_IDENTIFICATION -#usr/lib/locale/ar_QA/LC_MEASUREMENT -#usr/lib/locale/ar_QA/LC_MESSAGES -#usr/lib/locale/ar_QA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_QA/LC_MONETARY -#usr/lib/locale/ar_QA/LC_NAME -#usr/lib/locale/ar_QA/LC_NUMERIC -#usr/lib/locale/ar_QA/LC_PAPER -#usr/lib/locale/ar_QA/LC_TELEPHONE -#usr/lib/locale/ar_QA/LC_TIME -#usr/lib/locale/ar_SA -#usr/lib/locale/ar_SA.utf8 -#usr/lib/locale/ar_SA.utf8/LC_ADDRESS -#usr/lib/locale/ar_SA.utf8/LC_COLLATE -#usr/lib/locale/ar_SA.utf8/LC_CTYPE -#usr/lib/locale/ar_SA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SA.utf8/LC_MESSAGES -#usr/lib/locale/ar_SA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SA.utf8/LC_MONETARY -#usr/lib/locale/ar_SA.utf8/LC_NAME -#usr/lib/locale/ar_SA.utf8/LC_NUMERIC -#usr/lib/locale/ar_SA.utf8/LC_PAPER -#usr/lib/locale/ar_SA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SA.utf8/LC_TIME -#usr/lib/locale/ar_SA/LC_ADDRESS -#usr/lib/locale/ar_SA/LC_COLLATE -#usr/lib/locale/ar_SA/LC_CTYPE -#usr/lib/locale/ar_SA/LC_IDENTIFICATION -#usr/lib/locale/ar_SA/LC_MEASUREMENT -#usr/lib/locale/ar_SA/LC_MESSAGES -#usr/lib/locale/ar_SA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SA/LC_MONETARY -#usr/lib/locale/ar_SA/LC_NAME -#usr/lib/locale/ar_SA/LC_NUMERIC -#usr/lib/locale/ar_SA/LC_PAPER -#usr/lib/locale/ar_SA/LC_TELEPHONE -#usr/lib/locale/ar_SA/LC_TIME -#usr/lib/locale/ar_SD -#usr/lib/locale/ar_SD.utf8 -#usr/lib/locale/ar_SD.utf8/LC_ADDRESS -#usr/lib/locale/ar_SD.utf8/LC_COLLATE -#usr/lib/locale/ar_SD.utf8/LC_CTYPE -#usr/lib/locale/ar_SD.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SD.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SD.utf8/LC_MESSAGES -#usr/lib/locale/ar_SD.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SD.utf8/LC_MONETARY -#usr/lib/locale/ar_SD.utf8/LC_NAME -#usr/lib/locale/ar_SD.utf8/LC_NUMERIC -#usr/lib/locale/ar_SD.utf8/LC_PAPER -#usr/lib/locale/ar_SD.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SD.utf8/LC_TIME -#usr/lib/locale/ar_SD/LC_ADDRESS -#usr/lib/locale/ar_SD/LC_COLLATE -#usr/lib/locale/ar_SD/LC_CTYPE -#usr/lib/locale/ar_SD/LC_IDENTIFICATION -#usr/lib/locale/ar_SD/LC_MEASUREMENT -#usr/lib/locale/ar_SD/LC_MESSAGES -#usr/lib/locale/ar_SD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SD/LC_MONETARY -#usr/lib/locale/ar_SD/LC_NAME -#usr/lib/locale/ar_SD/LC_NUMERIC -#usr/lib/locale/ar_SD/LC_PAPER -#usr/lib/locale/ar_SD/LC_TELEPHONE -#usr/lib/locale/ar_SD/LC_TIME -#usr/lib/locale/ar_SY -#usr/lib/locale/ar_SY.utf8 -#usr/lib/locale/ar_SY.utf8/LC_ADDRESS -#usr/lib/locale/ar_SY.utf8/LC_COLLATE -#usr/lib/locale/ar_SY.utf8/LC_CTYPE -#usr/lib/locale/ar_SY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SY.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SY.utf8/LC_MESSAGES -#usr/lib/locale/ar_SY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SY.utf8/LC_MONETARY -#usr/lib/locale/ar_SY.utf8/LC_NAME -#usr/lib/locale/ar_SY.utf8/LC_NUMERIC -#usr/lib/locale/ar_SY.utf8/LC_PAPER -#usr/lib/locale/ar_SY.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SY.utf8/LC_TIME -#usr/lib/locale/ar_SY/LC_ADDRESS -#usr/lib/locale/ar_SY/LC_COLLATE -#usr/lib/locale/ar_SY/LC_CTYPE -#usr/lib/locale/ar_SY/LC_IDENTIFICATION -#usr/lib/locale/ar_SY/LC_MEASUREMENT -#usr/lib/locale/ar_SY/LC_MESSAGES -#usr/lib/locale/ar_SY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SY/LC_MONETARY -#usr/lib/locale/ar_SY/LC_NAME -#usr/lib/locale/ar_SY/LC_NUMERIC -#usr/lib/locale/ar_SY/LC_PAPER -#usr/lib/locale/ar_SY/LC_TELEPHONE -#usr/lib/locale/ar_SY/LC_TIME -#usr/lib/locale/ar_TN -#usr/lib/locale/ar_TN.utf8 -#usr/lib/locale/ar_TN.utf8/LC_ADDRESS -#usr/lib/locale/ar_TN.utf8/LC_COLLATE -#usr/lib/locale/ar_TN.utf8/LC_CTYPE -#usr/lib/locale/ar_TN.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_TN.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_TN.utf8/LC_MESSAGES -#usr/lib/locale/ar_TN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_TN.utf8/LC_MONETARY -#usr/lib/locale/ar_TN.utf8/LC_NAME -#usr/lib/locale/ar_TN.utf8/LC_NUMERIC -#usr/lib/locale/ar_TN.utf8/LC_PAPER -#usr/lib/locale/ar_TN.utf8/LC_TELEPHONE -#usr/lib/locale/ar_TN.utf8/LC_TIME -#usr/lib/locale/ar_TN/LC_ADDRESS -#usr/lib/locale/ar_TN/LC_COLLATE -#usr/lib/locale/ar_TN/LC_CTYPE -#usr/lib/locale/ar_TN/LC_IDENTIFICATION -#usr/lib/locale/ar_TN/LC_MEASUREMENT -#usr/lib/locale/ar_TN/LC_MESSAGES -#usr/lib/locale/ar_TN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_TN/LC_MONETARY -#usr/lib/locale/ar_TN/LC_NAME -#usr/lib/locale/ar_TN/LC_NUMERIC -#usr/lib/locale/ar_TN/LC_PAPER -#usr/lib/locale/ar_TN/LC_TELEPHONE -#usr/lib/locale/ar_TN/LC_TIME -#usr/lib/locale/ar_YE -#usr/lib/locale/ar_YE.utf8 -#usr/lib/locale/ar_YE.utf8/LC_ADDRESS -#usr/lib/locale/ar_YE.utf8/LC_COLLATE -#usr/lib/locale/ar_YE.utf8/LC_CTYPE -#usr/lib/locale/ar_YE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_YE.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_YE.utf8/LC_MESSAGES -#usr/lib/locale/ar_YE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_YE.utf8/LC_MONETARY -#usr/lib/locale/ar_YE.utf8/LC_NAME -#usr/lib/locale/ar_YE.utf8/LC_NUMERIC -#usr/lib/locale/ar_YE.utf8/LC_PAPER -#usr/lib/locale/ar_YE.utf8/LC_TELEPHONE -#usr/lib/locale/ar_YE.utf8/LC_TIME -#usr/lib/locale/ar_YE/LC_ADDRESS -#usr/lib/locale/ar_YE/LC_COLLATE -#usr/lib/locale/ar_YE/LC_CTYPE -#usr/lib/locale/ar_YE/LC_IDENTIFICATION -#usr/lib/locale/ar_YE/LC_MEASUREMENT -#usr/lib/locale/ar_YE/LC_MESSAGES -#usr/lib/locale/ar_YE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_YE/LC_MONETARY -#usr/lib/locale/ar_YE/LC_NAME -#usr/lib/locale/ar_YE/LC_NUMERIC -#usr/lib/locale/ar_YE/LC_PAPER -#usr/lib/locale/ar_YE/LC_TELEPHONE -#usr/lib/locale/ar_YE/LC_TIME -#usr/lib/locale/as_IN -#usr/lib/locale/as_IN/LC_ADDRESS -#usr/lib/locale/as_IN/LC_COLLATE -#usr/lib/locale/as_IN/LC_CTYPE -#usr/lib/locale/as_IN/LC_IDENTIFICATION -#usr/lib/locale/as_IN/LC_MEASUREMENT -#usr/lib/locale/as_IN/LC_MESSAGES -#usr/lib/locale/as_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/as_IN/LC_MONETARY -#usr/lib/locale/as_IN/LC_NAME -#usr/lib/locale/as_IN/LC_NUMERIC -#usr/lib/locale/as_IN/LC_PAPER -#usr/lib/locale/as_IN/LC_TELEPHONE -#usr/lib/locale/as_IN/LC_TIME -#usr/lib/locale/ast_ES -#usr/lib/locale/ast_ES.utf8 -#usr/lib/locale/ast_ES.utf8/LC_ADDRESS -#usr/lib/locale/ast_ES.utf8/LC_COLLATE -#usr/lib/locale/ast_ES.utf8/LC_CTYPE -#usr/lib/locale/ast_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/ast_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/ast_ES.utf8/LC_MESSAGES -#usr/lib/locale/ast_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ast_ES.utf8/LC_MONETARY -#usr/lib/locale/ast_ES.utf8/LC_NAME -#usr/lib/locale/ast_ES.utf8/LC_NUMERIC -#usr/lib/locale/ast_ES.utf8/LC_PAPER -#usr/lib/locale/ast_ES.utf8/LC_TELEPHONE -#usr/lib/locale/ast_ES.utf8/LC_TIME -#usr/lib/locale/ast_ES/LC_ADDRESS -#usr/lib/locale/ast_ES/LC_COLLATE -#usr/lib/locale/ast_ES/LC_CTYPE -#usr/lib/locale/ast_ES/LC_IDENTIFICATION -#usr/lib/locale/ast_ES/LC_MEASUREMENT -#usr/lib/locale/ast_ES/LC_MESSAGES -#usr/lib/locale/ast_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ast_ES/LC_MONETARY -#usr/lib/locale/ast_ES/LC_NAME -#usr/lib/locale/ast_ES/LC_NUMERIC -#usr/lib/locale/ast_ES/LC_PAPER -#usr/lib/locale/ast_ES/LC_TELEPHONE -#usr/lib/locale/ast_ES/LC_TIME -#usr/lib/locale/az_AZ -#usr/lib/locale/az_AZ/LC_ADDRESS -#usr/lib/locale/az_AZ/LC_COLLATE -#usr/lib/locale/az_AZ/LC_CTYPE -#usr/lib/locale/az_AZ/LC_IDENTIFICATION -#usr/lib/locale/az_AZ/LC_MEASUREMENT -#usr/lib/locale/az_AZ/LC_MESSAGES -#usr/lib/locale/az_AZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/az_AZ/LC_MONETARY -#usr/lib/locale/az_AZ/LC_NAME -#usr/lib/locale/az_AZ/LC_NUMERIC -#usr/lib/locale/az_AZ/LC_PAPER -#usr/lib/locale/az_AZ/LC_TELEPHONE -#usr/lib/locale/az_AZ/LC_TIME -#usr/lib/locale/be_BY -#usr/lib/locale/be_BY.utf8 -#usr/lib/locale/be_BY.utf8/LC_ADDRESS -#usr/lib/locale/be_BY.utf8/LC_COLLATE -#usr/lib/locale/be_BY.utf8/LC_CTYPE -#usr/lib/locale/be_BY.utf8/LC_IDENTIFICATION -#usr/lib/locale/be_BY.utf8/LC_MEASUREMENT -#usr/lib/locale/be_BY.utf8/LC_MESSAGES -#usr/lib/locale/be_BY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY.utf8/LC_MONETARY -#usr/lib/locale/be_BY.utf8/LC_NAME -#usr/lib/locale/be_BY.utf8/LC_NUMERIC -#usr/lib/locale/be_BY.utf8/LC_PAPER -#usr/lib/locale/be_BY.utf8/LC_TELEPHONE -#usr/lib/locale/be_BY.utf8/LC_TIME -#usr/lib/locale/be_BY/LC_ADDRESS -#usr/lib/locale/be_BY/LC_COLLATE -#usr/lib/locale/be_BY/LC_CTYPE -#usr/lib/locale/be_BY/LC_IDENTIFICATION -#usr/lib/locale/be_BY/LC_MEASUREMENT -#usr/lib/locale/be_BY/LC_MESSAGES -#usr/lib/locale/be_BY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY/LC_MONETARY -#usr/lib/locale/be_BY/LC_NAME -#usr/lib/locale/be_BY/LC_NUMERIC -#usr/lib/locale/be_BY/LC_PAPER -#usr/lib/locale/be_BY/LC_TELEPHONE -#usr/lib/locale/be_BY/LC_TIME -#usr/lib/locale/be_BY@latin -#usr/lib/locale/be_BY@latin/LC_ADDRESS -#usr/lib/locale/be_BY@latin/LC_COLLATE -#usr/lib/locale/be_BY@latin/LC_CTYPE -#usr/lib/locale/be_BY@latin/LC_IDENTIFICATION -#usr/lib/locale/be_BY@latin/LC_MEASUREMENT -#usr/lib/locale/be_BY@latin/LC_MESSAGES -#usr/lib/locale/be_BY@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY@latin/LC_MONETARY -#usr/lib/locale/be_BY@latin/LC_NAME -#usr/lib/locale/be_BY@latin/LC_NUMERIC -#usr/lib/locale/be_BY@latin/LC_PAPER -#usr/lib/locale/be_BY@latin/LC_TELEPHONE -#usr/lib/locale/be_BY@latin/LC_TIME -#usr/lib/locale/ber_DZ -#usr/lib/locale/ber_DZ/LC_ADDRESS -#usr/lib/locale/ber_DZ/LC_COLLATE -#usr/lib/locale/ber_DZ/LC_CTYPE -#usr/lib/locale/ber_DZ/LC_IDENTIFICATION -#usr/lib/locale/ber_DZ/LC_MEASUREMENT -#usr/lib/locale/ber_DZ/LC_MESSAGES -#usr/lib/locale/ber_DZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ber_DZ/LC_MONETARY -#usr/lib/locale/ber_DZ/LC_NAME -#usr/lib/locale/ber_DZ/LC_NUMERIC -#usr/lib/locale/ber_DZ/LC_PAPER -#usr/lib/locale/ber_DZ/LC_TELEPHONE -#usr/lib/locale/ber_DZ/LC_TIME -#usr/lib/locale/ber_MA -#usr/lib/locale/ber_MA/LC_ADDRESS -#usr/lib/locale/ber_MA/LC_COLLATE -#usr/lib/locale/ber_MA/LC_CTYPE -#usr/lib/locale/ber_MA/LC_IDENTIFICATION -#usr/lib/locale/ber_MA/LC_MEASUREMENT -#usr/lib/locale/ber_MA/LC_MESSAGES -#usr/lib/locale/ber_MA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ber_MA/LC_MONETARY -#usr/lib/locale/ber_MA/LC_NAME -#usr/lib/locale/ber_MA/LC_NUMERIC -#usr/lib/locale/ber_MA/LC_PAPER -#usr/lib/locale/ber_MA/LC_TELEPHONE -#usr/lib/locale/ber_MA/LC_TIME -#usr/lib/locale/bg_BG -#usr/lib/locale/bg_BG.utf8 -#usr/lib/locale/bg_BG.utf8/LC_ADDRESS -#usr/lib/locale/bg_BG.utf8/LC_COLLATE -#usr/lib/locale/bg_BG.utf8/LC_CTYPE -#usr/lib/locale/bg_BG.utf8/LC_IDENTIFICATION -#usr/lib/locale/bg_BG.utf8/LC_MEASUREMENT -#usr/lib/locale/bg_BG.utf8/LC_MESSAGES -#usr/lib/locale/bg_BG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bg_BG.utf8/LC_MONETARY -#usr/lib/locale/bg_BG.utf8/LC_NAME -#usr/lib/locale/bg_BG.utf8/LC_NUMERIC -#usr/lib/locale/bg_BG.utf8/LC_PAPER -#usr/lib/locale/bg_BG.utf8/LC_TELEPHONE -#usr/lib/locale/bg_BG.utf8/LC_TIME -#usr/lib/locale/bg_BG/LC_ADDRESS -#usr/lib/locale/bg_BG/LC_COLLATE -#usr/lib/locale/bg_BG/LC_CTYPE -#usr/lib/locale/bg_BG/LC_IDENTIFICATION -#usr/lib/locale/bg_BG/LC_MEASUREMENT -#usr/lib/locale/bg_BG/LC_MESSAGES -#usr/lib/locale/bg_BG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bg_BG/LC_MONETARY -#usr/lib/locale/bg_BG/LC_NAME -#usr/lib/locale/bg_BG/LC_NUMERIC -#usr/lib/locale/bg_BG/LC_PAPER -#usr/lib/locale/bg_BG/LC_TELEPHONE -#usr/lib/locale/bg_BG/LC_TIME -#usr/lib/locale/bn_BD -#usr/lib/locale/bn_BD/LC_ADDRESS -#usr/lib/locale/bn_BD/LC_COLLATE -#usr/lib/locale/bn_BD/LC_CTYPE -#usr/lib/locale/bn_BD/LC_IDENTIFICATION -#usr/lib/locale/bn_BD/LC_MEASUREMENT -#usr/lib/locale/bn_BD/LC_MESSAGES -#usr/lib/locale/bn_BD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bn_BD/LC_MONETARY -#usr/lib/locale/bn_BD/LC_NAME -#usr/lib/locale/bn_BD/LC_NUMERIC -#usr/lib/locale/bn_BD/LC_PAPER -#usr/lib/locale/bn_BD/LC_TELEPHONE -#usr/lib/locale/bn_BD/LC_TIME -#usr/lib/locale/bn_IN -#usr/lib/locale/bn_IN/LC_ADDRESS -#usr/lib/locale/bn_IN/LC_COLLATE -#usr/lib/locale/bn_IN/LC_CTYPE -#usr/lib/locale/bn_IN/LC_IDENTIFICATION -#usr/lib/locale/bn_IN/LC_MEASUREMENT -#usr/lib/locale/bn_IN/LC_MESSAGES -#usr/lib/locale/bn_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bn_IN/LC_MONETARY -#usr/lib/locale/bn_IN/LC_NAME -#usr/lib/locale/bn_IN/LC_NUMERIC -#usr/lib/locale/bn_IN/LC_PAPER -#usr/lib/locale/bn_IN/LC_TELEPHONE -#usr/lib/locale/bn_IN/LC_TIME -#usr/lib/locale/bo_CN -#usr/lib/locale/bo_CN/LC_ADDRESS -#usr/lib/locale/bo_CN/LC_COLLATE -#usr/lib/locale/bo_CN/LC_CTYPE -#usr/lib/locale/bo_CN/LC_IDENTIFICATION -#usr/lib/locale/bo_CN/LC_MEASUREMENT -#usr/lib/locale/bo_CN/LC_MESSAGES -#usr/lib/locale/bo_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bo_CN/LC_MONETARY -#usr/lib/locale/bo_CN/LC_NAME -#usr/lib/locale/bo_CN/LC_NUMERIC -#usr/lib/locale/bo_CN/LC_PAPER -#usr/lib/locale/bo_CN/LC_TELEPHONE -#usr/lib/locale/bo_CN/LC_TIME -#usr/lib/locale/bo_IN -#usr/lib/locale/bo_IN/LC_ADDRESS -#usr/lib/locale/bo_IN/LC_COLLATE -#usr/lib/locale/bo_IN/LC_CTYPE -#usr/lib/locale/bo_IN/LC_IDENTIFICATION -#usr/lib/locale/bo_IN/LC_MEASUREMENT -#usr/lib/locale/bo_IN/LC_MESSAGES -#usr/lib/locale/bo_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bo_IN/LC_MONETARY -#usr/lib/locale/bo_IN/LC_NAME -#usr/lib/locale/bo_IN/LC_NUMERIC -#usr/lib/locale/bo_IN/LC_PAPER -#usr/lib/locale/bo_IN/LC_TELEPHONE -#usr/lib/locale/bo_IN/LC_TIME -#usr/lib/locale/br_FR -#usr/lib/locale/br_FR.utf8 -#usr/lib/locale/br_FR.utf8/LC_ADDRESS -#usr/lib/locale/br_FR.utf8/LC_COLLATE -#usr/lib/locale/br_FR.utf8/LC_CTYPE -#usr/lib/locale/br_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/br_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/br_FR.utf8/LC_MESSAGES -#usr/lib/locale/br_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR.utf8/LC_MONETARY -#usr/lib/locale/br_FR.utf8/LC_NAME -#usr/lib/locale/br_FR.utf8/LC_NUMERIC -#usr/lib/locale/br_FR.utf8/LC_PAPER -#usr/lib/locale/br_FR.utf8/LC_TELEPHONE -#usr/lib/locale/br_FR.utf8/LC_TIME -#usr/lib/locale/br_FR/LC_ADDRESS -#usr/lib/locale/br_FR/LC_COLLATE -#usr/lib/locale/br_FR/LC_CTYPE -#usr/lib/locale/br_FR/LC_IDENTIFICATION -#usr/lib/locale/br_FR/LC_MEASUREMENT -#usr/lib/locale/br_FR/LC_MESSAGES -#usr/lib/locale/br_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR/LC_MONETARY -#usr/lib/locale/br_FR/LC_NAME -#usr/lib/locale/br_FR/LC_NUMERIC -#usr/lib/locale/br_FR/LC_PAPER -#usr/lib/locale/br_FR/LC_TELEPHONE -#usr/lib/locale/br_FR/LC_TIME -#usr/lib/locale/br_FR@euro -#usr/lib/locale/br_FR@euro/LC_ADDRESS -#usr/lib/locale/br_FR@euro/LC_COLLATE -#usr/lib/locale/br_FR@euro/LC_CTYPE -#usr/lib/locale/br_FR@euro/LC_IDENTIFICATION -#usr/lib/locale/br_FR@euro/LC_MEASUREMENT -#usr/lib/locale/br_FR@euro/LC_MESSAGES -#usr/lib/locale/br_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR@euro/LC_MONETARY -#usr/lib/locale/br_FR@euro/LC_NAME -#usr/lib/locale/br_FR@euro/LC_NUMERIC -#usr/lib/locale/br_FR@euro/LC_PAPER -#usr/lib/locale/br_FR@euro/LC_TELEPHONE -#usr/lib/locale/br_FR@euro/LC_TIME -#usr/lib/locale/bs_BA -#usr/lib/locale/bs_BA.utf8 -#usr/lib/locale/bs_BA.utf8/LC_ADDRESS -#usr/lib/locale/bs_BA.utf8/LC_COLLATE -#usr/lib/locale/bs_BA.utf8/LC_CTYPE -#usr/lib/locale/bs_BA.utf8/LC_IDENTIFICATION -#usr/lib/locale/bs_BA.utf8/LC_MEASUREMENT -#usr/lib/locale/bs_BA.utf8/LC_MESSAGES -#usr/lib/locale/bs_BA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bs_BA.utf8/LC_MONETARY -#usr/lib/locale/bs_BA.utf8/LC_NAME -#usr/lib/locale/bs_BA.utf8/LC_NUMERIC -#usr/lib/locale/bs_BA.utf8/LC_PAPER -#usr/lib/locale/bs_BA.utf8/LC_TELEPHONE -#usr/lib/locale/bs_BA.utf8/LC_TIME -#usr/lib/locale/bs_BA/LC_ADDRESS -#usr/lib/locale/bs_BA/LC_COLLATE -#usr/lib/locale/bs_BA/LC_CTYPE -#usr/lib/locale/bs_BA/LC_IDENTIFICATION -#usr/lib/locale/bs_BA/LC_MEASUREMENT -#usr/lib/locale/bs_BA/LC_MESSAGES -#usr/lib/locale/bs_BA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bs_BA/LC_MONETARY -#usr/lib/locale/bs_BA/LC_NAME -#usr/lib/locale/bs_BA/LC_NUMERIC -#usr/lib/locale/bs_BA/LC_PAPER -#usr/lib/locale/bs_BA/LC_TELEPHONE -#usr/lib/locale/bs_BA/LC_TIME -#usr/lib/locale/byn_ER -#usr/lib/locale/byn_ER/LC_ADDRESS -#usr/lib/locale/byn_ER/LC_COLLATE -#usr/lib/locale/byn_ER/LC_CTYPE -#usr/lib/locale/byn_ER/LC_IDENTIFICATION -#usr/lib/locale/byn_ER/LC_MEASUREMENT -#usr/lib/locale/byn_ER/LC_MESSAGES -#usr/lib/locale/byn_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/byn_ER/LC_MONETARY -#usr/lib/locale/byn_ER/LC_NAME -#usr/lib/locale/byn_ER/LC_NUMERIC -#usr/lib/locale/byn_ER/LC_PAPER -#usr/lib/locale/byn_ER/LC_TELEPHONE -#usr/lib/locale/byn_ER/LC_TIME -#usr/lib/locale/ca_AD -#usr/lib/locale/ca_AD.utf8 -#usr/lib/locale/ca_AD.utf8/LC_ADDRESS -#usr/lib/locale/ca_AD.utf8/LC_COLLATE -#usr/lib/locale/ca_AD.utf8/LC_CTYPE -#usr/lib/locale/ca_AD.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_AD.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_AD.utf8/LC_MESSAGES -#usr/lib/locale/ca_AD.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_AD.utf8/LC_MONETARY -#usr/lib/locale/ca_AD.utf8/LC_NAME -#usr/lib/locale/ca_AD.utf8/LC_NUMERIC -#usr/lib/locale/ca_AD.utf8/LC_PAPER -#usr/lib/locale/ca_AD.utf8/LC_TELEPHONE -#usr/lib/locale/ca_AD.utf8/LC_TIME -#usr/lib/locale/ca_AD/LC_ADDRESS -#usr/lib/locale/ca_AD/LC_COLLATE -#usr/lib/locale/ca_AD/LC_CTYPE -#usr/lib/locale/ca_AD/LC_IDENTIFICATION -#usr/lib/locale/ca_AD/LC_MEASUREMENT -#usr/lib/locale/ca_AD/LC_MESSAGES -#usr/lib/locale/ca_AD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_AD/LC_MONETARY -#usr/lib/locale/ca_AD/LC_NAME -#usr/lib/locale/ca_AD/LC_NUMERIC -#usr/lib/locale/ca_AD/LC_PAPER -#usr/lib/locale/ca_AD/LC_TELEPHONE -#usr/lib/locale/ca_AD/LC_TIME -#usr/lib/locale/ca_ES -#usr/lib/locale/ca_ES.utf8 -#usr/lib/locale/ca_ES.utf8/LC_ADDRESS -#usr/lib/locale/ca_ES.utf8/LC_COLLATE -#usr/lib/locale/ca_ES.utf8/LC_CTYPE -#usr/lib/locale/ca_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_ES.utf8/LC_MESSAGES -#usr/lib/locale/ca_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES.utf8/LC_MONETARY -#usr/lib/locale/ca_ES.utf8/LC_NAME -#usr/lib/locale/ca_ES.utf8/LC_NUMERIC -#usr/lib/locale/ca_ES.utf8/LC_PAPER -#usr/lib/locale/ca_ES.utf8/LC_TELEPHONE -#usr/lib/locale/ca_ES.utf8/LC_TIME -#usr/lib/locale/ca_ES/LC_ADDRESS -#usr/lib/locale/ca_ES/LC_COLLATE -#usr/lib/locale/ca_ES/LC_CTYPE -#usr/lib/locale/ca_ES/LC_IDENTIFICATION -#usr/lib/locale/ca_ES/LC_MEASUREMENT -#usr/lib/locale/ca_ES/LC_MESSAGES -#usr/lib/locale/ca_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES/LC_MONETARY -#usr/lib/locale/ca_ES/LC_NAME -#usr/lib/locale/ca_ES/LC_NUMERIC -#usr/lib/locale/ca_ES/LC_PAPER -#usr/lib/locale/ca_ES/LC_TELEPHONE -#usr/lib/locale/ca_ES/LC_TIME -#usr/lib/locale/ca_ES@euro -#usr/lib/locale/ca_ES@euro/LC_ADDRESS -#usr/lib/locale/ca_ES@euro/LC_COLLATE -#usr/lib/locale/ca_ES@euro/LC_CTYPE -#usr/lib/locale/ca_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/ca_ES@euro/LC_MEASUREMENT -#usr/lib/locale/ca_ES@euro/LC_MESSAGES -#usr/lib/locale/ca_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES@euro/LC_MONETARY -#usr/lib/locale/ca_ES@euro/LC_NAME -#usr/lib/locale/ca_ES@euro/LC_NUMERIC -#usr/lib/locale/ca_ES@euro/LC_PAPER -#usr/lib/locale/ca_ES@euro/LC_TELEPHONE -#usr/lib/locale/ca_ES@euro/LC_TIME -#usr/lib/locale/ca_FR -#usr/lib/locale/ca_FR.utf8 -#usr/lib/locale/ca_FR.utf8/LC_ADDRESS -#usr/lib/locale/ca_FR.utf8/LC_COLLATE -#usr/lib/locale/ca_FR.utf8/LC_CTYPE -#usr/lib/locale/ca_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_FR.utf8/LC_MESSAGES -#usr/lib/locale/ca_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_FR.utf8/LC_MONETARY -#usr/lib/locale/ca_FR.utf8/LC_NAME -#usr/lib/locale/ca_FR.utf8/LC_NUMERIC -#usr/lib/locale/ca_FR.utf8/LC_PAPER -#usr/lib/locale/ca_FR.utf8/LC_TELEPHONE -#usr/lib/locale/ca_FR.utf8/LC_TIME -#usr/lib/locale/ca_FR/LC_ADDRESS -#usr/lib/locale/ca_FR/LC_COLLATE -#usr/lib/locale/ca_FR/LC_CTYPE -#usr/lib/locale/ca_FR/LC_IDENTIFICATION -#usr/lib/locale/ca_FR/LC_MEASUREMENT -#usr/lib/locale/ca_FR/LC_MESSAGES -#usr/lib/locale/ca_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_FR/LC_MONETARY -#usr/lib/locale/ca_FR/LC_NAME -#usr/lib/locale/ca_FR/LC_NUMERIC -#usr/lib/locale/ca_FR/LC_PAPER -#usr/lib/locale/ca_FR/LC_TELEPHONE -#usr/lib/locale/ca_FR/LC_TIME -#usr/lib/locale/ca_IT -#usr/lib/locale/ca_IT.utf8 -#usr/lib/locale/ca_IT.utf8/LC_ADDRESS -#usr/lib/locale/ca_IT.utf8/LC_COLLATE -#usr/lib/locale/ca_IT.utf8/LC_CTYPE -#usr/lib/locale/ca_IT.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_IT.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_IT.utf8/LC_MESSAGES -#usr/lib/locale/ca_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_IT.utf8/LC_MONETARY -#usr/lib/locale/ca_IT.utf8/LC_NAME -#usr/lib/locale/ca_IT.utf8/LC_NUMERIC -#usr/lib/locale/ca_IT.utf8/LC_PAPER -#usr/lib/locale/ca_IT.utf8/LC_TELEPHONE -#usr/lib/locale/ca_IT.utf8/LC_TIME -#usr/lib/locale/ca_IT/LC_ADDRESS -#usr/lib/locale/ca_IT/LC_COLLATE -#usr/lib/locale/ca_IT/LC_CTYPE -#usr/lib/locale/ca_IT/LC_IDENTIFICATION -#usr/lib/locale/ca_IT/LC_MEASUREMENT -#usr/lib/locale/ca_IT/LC_MESSAGES -#usr/lib/locale/ca_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_IT/LC_MONETARY -#usr/lib/locale/ca_IT/LC_NAME -#usr/lib/locale/ca_IT/LC_NUMERIC -#usr/lib/locale/ca_IT/LC_PAPER -#usr/lib/locale/ca_IT/LC_TELEPHONE -#usr/lib/locale/ca_IT/LC_TIME -#usr/lib/locale/crh_UA -#usr/lib/locale/crh_UA/LC_ADDRESS -#usr/lib/locale/crh_UA/LC_COLLATE -#usr/lib/locale/crh_UA/LC_CTYPE -#usr/lib/locale/crh_UA/LC_IDENTIFICATION -#usr/lib/locale/crh_UA/LC_MEASUREMENT -#usr/lib/locale/crh_UA/LC_MESSAGES -#usr/lib/locale/crh_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/crh_UA/LC_MONETARY -#usr/lib/locale/crh_UA/LC_NAME -#usr/lib/locale/crh_UA/LC_NUMERIC -#usr/lib/locale/crh_UA/LC_PAPER -#usr/lib/locale/crh_UA/LC_TELEPHONE -#usr/lib/locale/crh_UA/LC_TIME -#usr/lib/locale/cs_CZ -#usr/lib/locale/cs_CZ.utf8 -#usr/lib/locale/cs_CZ.utf8/LC_ADDRESS -#usr/lib/locale/cs_CZ.utf8/LC_COLLATE -#usr/lib/locale/cs_CZ.utf8/LC_CTYPE -#usr/lib/locale/cs_CZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/cs_CZ.utf8/LC_MEASUREMENT -#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES -#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cs_CZ.utf8/LC_MONETARY -#usr/lib/locale/cs_CZ.utf8/LC_NAME -#usr/lib/locale/cs_CZ.utf8/LC_NUMERIC -#usr/lib/locale/cs_CZ.utf8/LC_PAPER -#usr/lib/locale/cs_CZ.utf8/LC_TELEPHONE -#usr/lib/locale/cs_CZ.utf8/LC_TIME -#usr/lib/locale/cs_CZ/LC_ADDRESS -#usr/lib/locale/cs_CZ/LC_COLLATE -#usr/lib/locale/cs_CZ/LC_CTYPE -#usr/lib/locale/cs_CZ/LC_IDENTIFICATION -#usr/lib/locale/cs_CZ/LC_MEASUREMENT -#usr/lib/locale/cs_CZ/LC_MESSAGES -#usr/lib/locale/cs_CZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cs_CZ/LC_MONETARY -#usr/lib/locale/cs_CZ/LC_NAME -#usr/lib/locale/cs_CZ/LC_NUMERIC -#usr/lib/locale/cs_CZ/LC_PAPER -#usr/lib/locale/cs_CZ/LC_TELEPHONE -#usr/lib/locale/cs_CZ/LC_TIME -#usr/lib/locale/csb_PL -#usr/lib/locale/csb_PL/LC_ADDRESS -#usr/lib/locale/csb_PL/LC_COLLATE -#usr/lib/locale/csb_PL/LC_CTYPE -#usr/lib/locale/csb_PL/LC_IDENTIFICATION -#usr/lib/locale/csb_PL/LC_MEASUREMENT -#usr/lib/locale/csb_PL/LC_MESSAGES -#usr/lib/locale/csb_PL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/csb_PL/LC_MONETARY -#usr/lib/locale/csb_PL/LC_NAME -#usr/lib/locale/csb_PL/LC_NUMERIC -#usr/lib/locale/csb_PL/LC_PAPER -#usr/lib/locale/csb_PL/LC_TELEPHONE -#usr/lib/locale/csb_PL/LC_TIME -#usr/lib/locale/cv_RU -#usr/lib/locale/cv_RU/LC_ADDRESS -#usr/lib/locale/cv_RU/LC_COLLATE -#usr/lib/locale/cv_RU/LC_CTYPE -#usr/lib/locale/cv_RU/LC_IDENTIFICATION -#usr/lib/locale/cv_RU/LC_MEASUREMENT -#usr/lib/locale/cv_RU/LC_MESSAGES -#usr/lib/locale/cv_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cv_RU/LC_MONETARY -#usr/lib/locale/cv_RU/LC_NAME -#usr/lib/locale/cv_RU/LC_NUMERIC -#usr/lib/locale/cv_RU/LC_PAPER -#usr/lib/locale/cv_RU/LC_TELEPHONE -#usr/lib/locale/cv_RU/LC_TIME -#usr/lib/locale/cy_GB -#usr/lib/locale/cy_GB.utf8 -#usr/lib/locale/cy_GB.utf8/LC_ADDRESS -#usr/lib/locale/cy_GB.utf8/LC_COLLATE -#usr/lib/locale/cy_GB.utf8/LC_CTYPE -#usr/lib/locale/cy_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/cy_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/cy_GB.utf8/LC_MESSAGES -#usr/lib/locale/cy_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cy_GB.utf8/LC_MONETARY -#usr/lib/locale/cy_GB.utf8/LC_NAME -#usr/lib/locale/cy_GB.utf8/LC_NUMERIC -#usr/lib/locale/cy_GB.utf8/LC_PAPER -#usr/lib/locale/cy_GB.utf8/LC_TELEPHONE -#usr/lib/locale/cy_GB.utf8/LC_TIME -#usr/lib/locale/cy_GB/LC_ADDRESS -#usr/lib/locale/cy_GB/LC_COLLATE -#usr/lib/locale/cy_GB/LC_CTYPE -#usr/lib/locale/cy_GB/LC_IDENTIFICATION -#usr/lib/locale/cy_GB/LC_MEASUREMENT -#usr/lib/locale/cy_GB/LC_MESSAGES -#usr/lib/locale/cy_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cy_GB/LC_MONETARY -#usr/lib/locale/cy_GB/LC_NAME -#usr/lib/locale/cy_GB/LC_NUMERIC -#usr/lib/locale/cy_GB/LC_PAPER -#usr/lib/locale/cy_GB/LC_TELEPHONE -#usr/lib/locale/cy_GB/LC_TIME -#usr/lib/locale/da_DK -#usr/lib/locale/da_DK.iso885915 -#usr/lib/locale/da_DK.iso885915/LC_ADDRESS -#usr/lib/locale/da_DK.iso885915/LC_COLLATE -#usr/lib/locale/da_DK.iso885915/LC_CTYPE -#usr/lib/locale/da_DK.iso885915/LC_IDENTIFICATION -#usr/lib/locale/da_DK.iso885915/LC_MEASUREMENT -#usr/lib/locale/da_DK.iso885915/LC_MESSAGES -#usr/lib/locale/da_DK.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK.iso885915/LC_MONETARY -#usr/lib/locale/da_DK.iso885915/LC_NAME -#usr/lib/locale/da_DK.iso885915/LC_NUMERIC -#usr/lib/locale/da_DK.iso885915/LC_PAPER -#usr/lib/locale/da_DK.iso885915/LC_TELEPHONE -#usr/lib/locale/da_DK.iso885915/LC_TIME -#usr/lib/locale/da_DK.utf8 -#usr/lib/locale/da_DK.utf8/LC_ADDRESS -#usr/lib/locale/da_DK.utf8/LC_COLLATE -#usr/lib/locale/da_DK.utf8/LC_CTYPE -#usr/lib/locale/da_DK.utf8/LC_IDENTIFICATION -#usr/lib/locale/da_DK.utf8/LC_MEASUREMENT -#usr/lib/locale/da_DK.utf8/LC_MESSAGES -#usr/lib/locale/da_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK.utf8/LC_MONETARY -#usr/lib/locale/da_DK.utf8/LC_NAME -#usr/lib/locale/da_DK.utf8/LC_NUMERIC -#usr/lib/locale/da_DK.utf8/LC_PAPER -#usr/lib/locale/da_DK.utf8/LC_TELEPHONE -#usr/lib/locale/da_DK.utf8/LC_TIME -#usr/lib/locale/da_DK/LC_ADDRESS -#usr/lib/locale/da_DK/LC_COLLATE -#usr/lib/locale/da_DK/LC_CTYPE -#usr/lib/locale/da_DK/LC_IDENTIFICATION -#usr/lib/locale/da_DK/LC_MEASUREMENT -#usr/lib/locale/da_DK/LC_MESSAGES -#usr/lib/locale/da_DK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK/LC_MONETARY -#usr/lib/locale/da_DK/LC_NAME -#usr/lib/locale/da_DK/LC_NUMERIC -#usr/lib/locale/da_DK/LC_PAPER -#usr/lib/locale/da_DK/LC_TELEPHONE -#usr/lib/locale/da_DK/LC_TIME -#usr/lib/locale/de_AT -#usr/lib/locale/de_AT.utf8 -#usr/lib/locale/de_AT.utf8/LC_ADDRESS -#usr/lib/locale/de_AT.utf8/LC_COLLATE -#usr/lib/locale/de_AT.utf8/LC_CTYPE -#usr/lib/locale/de_AT.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_AT.utf8/LC_MEASUREMENT -#usr/lib/locale/de_AT.utf8/LC_MESSAGES -#usr/lib/locale/de_AT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT.utf8/LC_MONETARY -#usr/lib/locale/de_AT.utf8/LC_NAME -#usr/lib/locale/de_AT.utf8/LC_NUMERIC -#usr/lib/locale/de_AT.utf8/LC_PAPER -#usr/lib/locale/de_AT.utf8/LC_TELEPHONE -#usr/lib/locale/de_AT.utf8/LC_TIME -#usr/lib/locale/de_AT/LC_ADDRESS -#usr/lib/locale/de_AT/LC_COLLATE -#usr/lib/locale/de_AT/LC_CTYPE -#usr/lib/locale/de_AT/LC_IDENTIFICATION -#usr/lib/locale/de_AT/LC_MEASUREMENT -#usr/lib/locale/de_AT/LC_MESSAGES -#usr/lib/locale/de_AT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT/LC_MONETARY -#usr/lib/locale/de_AT/LC_NAME -#usr/lib/locale/de_AT/LC_NUMERIC -#usr/lib/locale/de_AT/LC_PAPER -#usr/lib/locale/de_AT/LC_TELEPHONE -#usr/lib/locale/de_AT/LC_TIME -#usr/lib/locale/de_AT@euro -#usr/lib/locale/de_AT@euro/LC_ADDRESS -#usr/lib/locale/de_AT@euro/LC_COLLATE -#usr/lib/locale/de_AT@euro/LC_CTYPE -#usr/lib/locale/de_AT@euro/LC_IDENTIFICATION -#usr/lib/locale/de_AT@euro/LC_MEASUREMENT -#usr/lib/locale/de_AT@euro/LC_MESSAGES -#usr/lib/locale/de_AT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT@euro/LC_MONETARY -#usr/lib/locale/de_AT@euro/LC_NAME -#usr/lib/locale/de_AT@euro/LC_NUMERIC -#usr/lib/locale/de_AT@euro/LC_PAPER -#usr/lib/locale/de_AT@euro/LC_TELEPHONE -#usr/lib/locale/de_AT@euro/LC_TIME -#usr/lib/locale/de_BE -#usr/lib/locale/de_BE.utf8 -#usr/lib/locale/de_BE.utf8/LC_ADDRESS -#usr/lib/locale/de_BE.utf8/LC_COLLATE -#usr/lib/locale/de_BE.utf8/LC_CTYPE -#usr/lib/locale/de_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/de_BE.utf8/LC_MESSAGES -#usr/lib/locale/de_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE.utf8/LC_MONETARY -#usr/lib/locale/de_BE.utf8/LC_NAME -#usr/lib/locale/de_BE.utf8/LC_NUMERIC -#usr/lib/locale/de_BE.utf8/LC_PAPER -#usr/lib/locale/de_BE.utf8/LC_TELEPHONE -#usr/lib/locale/de_BE.utf8/LC_TIME -#usr/lib/locale/de_BE/LC_ADDRESS -#usr/lib/locale/de_BE/LC_COLLATE -#usr/lib/locale/de_BE/LC_CTYPE -#usr/lib/locale/de_BE/LC_IDENTIFICATION -#usr/lib/locale/de_BE/LC_MEASUREMENT -#usr/lib/locale/de_BE/LC_MESSAGES -#usr/lib/locale/de_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE/LC_MONETARY -#usr/lib/locale/de_BE/LC_NAME -#usr/lib/locale/de_BE/LC_NUMERIC -#usr/lib/locale/de_BE/LC_PAPER -#usr/lib/locale/de_BE/LC_TELEPHONE -#usr/lib/locale/de_BE/LC_TIME -#usr/lib/locale/de_BE@euro -#usr/lib/locale/de_BE@euro/LC_ADDRESS -#usr/lib/locale/de_BE@euro/LC_COLLATE -#usr/lib/locale/de_BE@euro/LC_CTYPE -#usr/lib/locale/de_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/de_BE@euro/LC_MEASUREMENT -#usr/lib/locale/de_BE@euro/LC_MESSAGES -#usr/lib/locale/de_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE@euro/LC_MONETARY -#usr/lib/locale/de_BE@euro/LC_NAME -#usr/lib/locale/de_BE@euro/LC_NUMERIC -#usr/lib/locale/de_BE@euro/LC_PAPER -#usr/lib/locale/de_BE@euro/LC_TELEPHONE -#usr/lib/locale/de_BE@euro/LC_TIME -#usr/lib/locale/de_CH -#usr/lib/locale/de_CH.utf8 -#usr/lib/locale/de_CH.utf8/LC_ADDRESS -#usr/lib/locale/de_CH.utf8/LC_COLLATE -#usr/lib/locale/de_CH.utf8/LC_CTYPE -#usr/lib/locale/de_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/de_CH.utf8/LC_MESSAGES -#usr/lib/locale/de_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_CH.utf8/LC_MONETARY -#usr/lib/locale/de_CH.utf8/LC_NAME -#usr/lib/locale/de_CH.utf8/LC_NUMERIC -#usr/lib/locale/de_CH.utf8/LC_PAPER -#usr/lib/locale/de_CH.utf8/LC_TELEPHONE -#usr/lib/locale/de_CH.utf8/LC_TIME -#usr/lib/locale/de_CH/LC_ADDRESS -#usr/lib/locale/de_CH/LC_COLLATE -#usr/lib/locale/de_CH/LC_CTYPE -#usr/lib/locale/de_CH/LC_IDENTIFICATION -#usr/lib/locale/de_CH/LC_MEASUREMENT -#usr/lib/locale/de_CH/LC_MESSAGES -#usr/lib/locale/de_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_CH/LC_MONETARY -#usr/lib/locale/de_CH/LC_NAME -#usr/lib/locale/de_CH/LC_NUMERIC -#usr/lib/locale/de_CH/LC_PAPER -#usr/lib/locale/de_CH/LC_TELEPHONE -#usr/lib/locale/de_CH/LC_TIME -#usr/lib/locale/de_DE -#usr/lib/locale/de_DE.utf8 -#usr/lib/locale/de_DE.utf8/LC_ADDRESS -#usr/lib/locale/de_DE.utf8/LC_COLLATE -#usr/lib/locale/de_DE.utf8/LC_CTYPE -#usr/lib/locale/de_DE.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_DE.utf8/LC_MEASUREMENT -#usr/lib/locale/de_DE.utf8/LC_MESSAGES -#usr/lib/locale/de_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE.utf8/LC_MONETARY -#usr/lib/locale/de_DE.utf8/LC_NAME -#usr/lib/locale/de_DE.utf8/LC_NUMERIC -#usr/lib/locale/de_DE.utf8/LC_PAPER -#usr/lib/locale/de_DE.utf8/LC_TELEPHONE -#usr/lib/locale/de_DE.utf8/LC_TIME -#usr/lib/locale/de_DE/LC_ADDRESS -#usr/lib/locale/de_DE/LC_COLLATE -#usr/lib/locale/de_DE/LC_CTYPE -#usr/lib/locale/de_DE/LC_IDENTIFICATION -#usr/lib/locale/de_DE/LC_MEASUREMENT -#usr/lib/locale/de_DE/LC_MESSAGES -#usr/lib/locale/de_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE/LC_MONETARY -#usr/lib/locale/de_DE/LC_NAME -#usr/lib/locale/de_DE/LC_NUMERIC -#usr/lib/locale/de_DE/LC_PAPER -#usr/lib/locale/de_DE/LC_TELEPHONE -#usr/lib/locale/de_DE/LC_TIME -#usr/lib/locale/de_DE@euro -#usr/lib/locale/de_DE@euro/LC_ADDRESS -#usr/lib/locale/de_DE@euro/LC_COLLATE -#usr/lib/locale/de_DE@euro/LC_CTYPE -#usr/lib/locale/de_DE@euro/LC_IDENTIFICATION -#usr/lib/locale/de_DE@euro/LC_MEASUREMENT -#usr/lib/locale/de_DE@euro/LC_MESSAGES -#usr/lib/locale/de_DE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE@euro/LC_MONETARY -#usr/lib/locale/de_DE@euro/LC_NAME -#usr/lib/locale/de_DE@euro/LC_NUMERIC -#usr/lib/locale/de_DE@euro/LC_PAPER -#usr/lib/locale/de_DE@euro/LC_TELEPHONE -#usr/lib/locale/de_DE@euro/LC_TIME -#usr/lib/locale/de_LU -#usr/lib/locale/de_LU.utf8 -#usr/lib/locale/de_LU.utf8/LC_ADDRESS -#usr/lib/locale/de_LU.utf8/LC_COLLATE -#usr/lib/locale/de_LU.utf8/LC_CTYPE -#usr/lib/locale/de_LU.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_LU.utf8/LC_MEASUREMENT -#usr/lib/locale/de_LU.utf8/LC_MESSAGES -#usr/lib/locale/de_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU.utf8/LC_MONETARY -#usr/lib/locale/de_LU.utf8/LC_NAME -#usr/lib/locale/de_LU.utf8/LC_NUMERIC -#usr/lib/locale/de_LU.utf8/LC_PAPER -#usr/lib/locale/de_LU.utf8/LC_TELEPHONE -#usr/lib/locale/de_LU.utf8/LC_TIME -#usr/lib/locale/de_LU/LC_ADDRESS -#usr/lib/locale/de_LU/LC_COLLATE -#usr/lib/locale/de_LU/LC_CTYPE -#usr/lib/locale/de_LU/LC_IDENTIFICATION -#usr/lib/locale/de_LU/LC_MEASUREMENT -#usr/lib/locale/de_LU/LC_MESSAGES -#usr/lib/locale/de_LU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU/LC_MONETARY -#usr/lib/locale/de_LU/LC_NAME -#usr/lib/locale/de_LU/LC_NUMERIC -#usr/lib/locale/de_LU/LC_PAPER -#usr/lib/locale/de_LU/LC_TELEPHONE -#usr/lib/locale/de_LU/LC_TIME -#usr/lib/locale/de_LU@euro -#usr/lib/locale/de_LU@euro/LC_ADDRESS -#usr/lib/locale/de_LU@euro/LC_COLLATE -#usr/lib/locale/de_LU@euro/LC_CTYPE -#usr/lib/locale/de_LU@euro/LC_IDENTIFICATION -#usr/lib/locale/de_LU@euro/LC_MEASUREMENT -#usr/lib/locale/de_LU@euro/LC_MESSAGES -#usr/lib/locale/de_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU@euro/LC_MONETARY -#usr/lib/locale/de_LU@euro/LC_NAME -#usr/lib/locale/de_LU@euro/LC_NUMERIC -#usr/lib/locale/de_LU@euro/LC_PAPER -#usr/lib/locale/de_LU@euro/LC_TELEPHONE -#usr/lib/locale/de_LU@euro/LC_TIME -#usr/lib/locale/dv_MV -#usr/lib/locale/dv_MV/LC_ADDRESS -#usr/lib/locale/dv_MV/LC_COLLATE -#usr/lib/locale/dv_MV/LC_CTYPE -#usr/lib/locale/dv_MV/LC_IDENTIFICATION -#usr/lib/locale/dv_MV/LC_MEASUREMENT -#usr/lib/locale/dv_MV/LC_MESSAGES -#usr/lib/locale/dv_MV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/dv_MV/LC_MONETARY -#usr/lib/locale/dv_MV/LC_NAME -#usr/lib/locale/dv_MV/LC_NUMERIC -#usr/lib/locale/dv_MV/LC_PAPER -#usr/lib/locale/dv_MV/LC_TELEPHONE -#usr/lib/locale/dv_MV/LC_TIME -#usr/lib/locale/dz_BT -#usr/lib/locale/dz_BT/LC_ADDRESS -#usr/lib/locale/dz_BT/LC_COLLATE -#usr/lib/locale/dz_BT/LC_CTYPE -#usr/lib/locale/dz_BT/LC_IDENTIFICATION -#usr/lib/locale/dz_BT/LC_MEASUREMENT -#usr/lib/locale/dz_BT/LC_MESSAGES -#usr/lib/locale/dz_BT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/dz_BT/LC_MONETARY -#usr/lib/locale/dz_BT/LC_NAME -#usr/lib/locale/dz_BT/LC_NUMERIC -#usr/lib/locale/dz_BT/LC_PAPER -#usr/lib/locale/dz_BT/LC_TELEPHONE -#usr/lib/locale/dz_BT/LC_TIME -#usr/lib/locale/el_CY -#usr/lib/locale/el_CY.utf8 -#usr/lib/locale/el_CY.utf8/LC_ADDRESS -#usr/lib/locale/el_CY.utf8/LC_COLLATE -#usr/lib/locale/el_CY.utf8/LC_CTYPE -#usr/lib/locale/el_CY.utf8/LC_IDENTIFICATION -#usr/lib/locale/el_CY.utf8/LC_MEASUREMENT -#usr/lib/locale/el_CY.utf8/LC_MESSAGES -#usr/lib/locale/el_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_CY.utf8/LC_MONETARY -#usr/lib/locale/el_CY.utf8/LC_NAME -#usr/lib/locale/el_CY.utf8/LC_NUMERIC -#usr/lib/locale/el_CY.utf8/LC_PAPER -#usr/lib/locale/el_CY.utf8/LC_TELEPHONE -#usr/lib/locale/el_CY.utf8/LC_TIME -#usr/lib/locale/el_CY/LC_ADDRESS -#usr/lib/locale/el_CY/LC_COLLATE -#usr/lib/locale/el_CY/LC_CTYPE -#usr/lib/locale/el_CY/LC_IDENTIFICATION -#usr/lib/locale/el_CY/LC_MEASUREMENT -#usr/lib/locale/el_CY/LC_MESSAGES -#usr/lib/locale/el_CY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_CY/LC_MONETARY -#usr/lib/locale/el_CY/LC_NAME -#usr/lib/locale/el_CY/LC_NUMERIC -#usr/lib/locale/el_CY/LC_PAPER -#usr/lib/locale/el_CY/LC_TELEPHONE -#usr/lib/locale/el_CY/LC_TIME -#usr/lib/locale/el_GR -#usr/lib/locale/el_GR.utf8 -#usr/lib/locale/el_GR.utf8/LC_ADDRESS -#usr/lib/locale/el_GR.utf8/LC_COLLATE -#usr/lib/locale/el_GR.utf8/LC_CTYPE -#usr/lib/locale/el_GR.utf8/LC_IDENTIFICATION -#usr/lib/locale/el_GR.utf8/LC_MEASUREMENT -#usr/lib/locale/el_GR.utf8/LC_MESSAGES -#usr/lib/locale/el_GR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_GR.utf8/LC_MONETARY -#usr/lib/locale/el_GR.utf8/LC_NAME -#usr/lib/locale/el_GR.utf8/LC_NUMERIC -#usr/lib/locale/el_GR.utf8/LC_PAPER -#usr/lib/locale/el_GR.utf8/LC_TELEPHONE -#usr/lib/locale/el_GR.utf8/LC_TIME -#usr/lib/locale/el_GR/LC_ADDRESS -#usr/lib/locale/el_GR/LC_COLLATE -#usr/lib/locale/el_GR/LC_CTYPE -#usr/lib/locale/el_GR/LC_IDENTIFICATION -#usr/lib/locale/el_GR/LC_MEASUREMENT -#usr/lib/locale/el_GR/LC_MESSAGES -#usr/lib/locale/el_GR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_GR/LC_MONETARY -#usr/lib/locale/el_GR/LC_NAME -#usr/lib/locale/el_GR/LC_NUMERIC -#usr/lib/locale/el_GR/LC_PAPER -#usr/lib/locale/el_GR/LC_TELEPHONE -#usr/lib/locale/el_GR/LC_TIME -#usr/lib/locale/en_AG -#usr/lib/locale/en_AG/LC_ADDRESS -#usr/lib/locale/en_AG/LC_COLLATE -#usr/lib/locale/en_AG/LC_CTYPE -#usr/lib/locale/en_AG/LC_IDENTIFICATION -#usr/lib/locale/en_AG/LC_MEASUREMENT -#usr/lib/locale/en_AG/LC_MESSAGES -#usr/lib/locale/en_AG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AG/LC_MONETARY -#usr/lib/locale/en_AG/LC_NAME -#usr/lib/locale/en_AG/LC_NUMERIC -#usr/lib/locale/en_AG/LC_PAPER -#usr/lib/locale/en_AG/LC_TELEPHONE -#usr/lib/locale/en_AG/LC_TIME -#usr/lib/locale/en_AU -#usr/lib/locale/en_AU.utf8 -#usr/lib/locale/en_AU.utf8/LC_ADDRESS -#usr/lib/locale/en_AU.utf8/LC_COLLATE -#usr/lib/locale/en_AU.utf8/LC_CTYPE -#usr/lib/locale/en_AU.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_AU.utf8/LC_MEASUREMENT -#usr/lib/locale/en_AU.utf8/LC_MESSAGES -#usr/lib/locale/en_AU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AU.utf8/LC_MONETARY -#usr/lib/locale/en_AU.utf8/LC_NAME -#usr/lib/locale/en_AU.utf8/LC_NUMERIC -#usr/lib/locale/en_AU.utf8/LC_PAPER -#usr/lib/locale/en_AU.utf8/LC_TELEPHONE -#usr/lib/locale/en_AU.utf8/LC_TIME -#usr/lib/locale/en_AU/LC_ADDRESS -#usr/lib/locale/en_AU/LC_COLLATE -#usr/lib/locale/en_AU/LC_CTYPE -#usr/lib/locale/en_AU/LC_IDENTIFICATION -#usr/lib/locale/en_AU/LC_MEASUREMENT -#usr/lib/locale/en_AU/LC_MESSAGES -#usr/lib/locale/en_AU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AU/LC_MONETARY -#usr/lib/locale/en_AU/LC_NAME -#usr/lib/locale/en_AU/LC_NUMERIC -#usr/lib/locale/en_AU/LC_PAPER -#usr/lib/locale/en_AU/LC_TELEPHONE -#usr/lib/locale/en_AU/LC_TIME -#usr/lib/locale/en_BW -#usr/lib/locale/en_BW.utf8 -#usr/lib/locale/en_BW.utf8/LC_ADDRESS -#usr/lib/locale/en_BW.utf8/LC_COLLATE -#usr/lib/locale/en_BW.utf8/LC_CTYPE -#usr/lib/locale/en_BW.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_BW.utf8/LC_MEASUREMENT -#usr/lib/locale/en_BW.utf8/LC_MESSAGES -#usr/lib/locale/en_BW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_BW.utf8/LC_MONETARY -#usr/lib/locale/en_BW.utf8/LC_NAME -#usr/lib/locale/en_BW.utf8/LC_NUMERIC -#usr/lib/locale/en_BW.utf8/LC_PAPER -#usr/lib/locale/en_BW.utf8/LC_TELEPHONE -#usr/lib/locale/en_BW.utf8/LC_TIME -#usr/lib/locale/en_BW/LC_ADDRESS -#usr/lib/locale/en_BW/LC_COLLATE -#usr/lib/locale/en_BW/LC_CTYPE -#usr/lib/locale/en_BW/LC_IDENTIFICATION -#usr/lib/locale/en_BW/LC_MEASUREMENT -#usr/lib/locale/en_BW/LC_MESSAGES -#usr/lib/locale/en_BW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_BW/LC_MONETARY -#usr/lib/locale/en_BW/LC_NAME -#usr/lib/locale/en_BW/LC_NUMERIC -#usr/lib/locale/en_BW/LC_PAPER -#usr/lib/locale/en_BW/LC_TELEPHONE -#usr/lib/locale/en_BW/LC_TIME -#usr/lib/locale/en_CA -#usr/lib/locale/en_CA.utf8 -#usr/lib/locale/en_CA.utf8/LC_ADDRESS -#usr/lib/locale/en_CA.utf8/LC_COLLATE -#usr/lib/locale/en_CA.utf8/LC_CTYPE -#usr/lib/locale/en_CA.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_CA.utf8/LC_MEASUREMENT -#usr/lib/locale/en_CA.utf8/LC_MESSAGES -#usr/lib/locale/en_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_CA.utf8/LC_MONETARY -#usr/lib/locale/en_CA.utf8/LC_NAME -#usr/lib/locale/en_CA.utf8/LC_NUMERIC -#usr/lib/locale/en_CA.utf8/LC_PAPER -#usr/lib/locale/en_CA.utf8/LC_TELEPHONE -#usr/lib/locale/en_CA.utf8/LC_TIME -#usr/lib/locale/en_CA/LC_ADDRESS -#usr/lib/locale/en_CA/LC_COLLATE -#usr/lib/locale/en_CA/LC_CTYPE -#usr/lib/locale/en_CA/LC_IDENTIFICATION -#usr/lib/locale/en_CA/LC_MEASUREMENT -#usr/lib/locale/en_CA/LC_MESSAGES -#usr/lib/locale/en_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_CA/LC_MONETARY -#usr/lib/locale/en_CA/LC_NAME -#usr/lib/locale/en_CA/LC_NUMERIC -#usr/lib/locale/en_CA/LC_PAPER -#usr/lib/locale/en_CA/LC_TELEPHONE -#usr/lib/locale/en_CA/LC_TIME -#usr/lib/locale/en_DK -#usr/lib/locale/en_DK.utf8 -#usr/lib/locale/en_DK.utf8/LC_ADDRESS -#usr/lib/locale/en_DK.utf8/LC_COLLATE -#usr/lib/locale/en_DK.utf8/LC_CTYPE -#usr/lib/locale/en_DK.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_DK.utf8/LC_MEASUREMENT -#usr/lib/locale/en_DK.utf8/LC_MESSAGES -#usr/lib/locale/en_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_DK.utf8/LC_MONETARY -#usr/lib/locale/en_DK.utf8/LC_NAME -#usr/lib/locale/en_DK.utf8/LC_NUMERIC -#usr/lib/locale/en_DK.utf8/LC_PAPER -#usr/lib/locale/en_DK.utf8/LC_TELEPHONE -#usr/lib/locale/en_DK.utf8/LC_TIME -#usr/lib/locale/en_DK/LC_ADDRESS -#usr/lib/locale/en_DK/LC_COLLATE -#usr/lib/locale/en_DK/LC_CTYPE -#usr/lib/locale/en_DK/LC_IDENTIFICATION -#usr/lib/locale/en_DK/LC_MEASUREMENT -#usr/lib/locale/en_DK/LC_MESSAGES -#usr/lib/locale/en_DK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_DK/LC_MONETARY -#usr/lib/locale/en_DK/LC_NAME -#usr/lib/locale/en_DK/LC_NUMERIC -#usr/lib/locale/en_DK/LC_PAPER -#usr/lib/locale/en_DK/LC_TELEPHONE -#usr/lib/locale/en_DK/LC_TIME -#usr/lib/locale/en_GB -#usr/lib/locale/en_GB.iso885915 -#usr/lib/locale/en_GB.iso885915/LC_ADDRESS -#usr/lib/locale/en_GB.iso885915/LC_COLLATE -#usr/lib/locale/en_GB.iso885915/LC_CTYPE -#usr/lib/locale/en_GB.iso885915/LC_IDENTIFICATION -#usr/lib/locale/en_GB.iso885915/LC_MEASUREMENT -#usr/lib/locale/en_GB.iso885915/LC_MESSAGES -#usr/lib/locale/en_GB.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB.iso885915/LC_MONETARY -#usr/lib/locale/en_GB.iso885915/LC_NAME -#usr/lib/locale/en_GB.iso885915/LC_NUMERIC -#usr/lib/locale/en_GB.iso885915/LC_PAPER -#usr/lib/locale/en_GB.iso885915/LC_TELEPHONE -#usr/lib/locale/en_GB.iso885915/LC_TIME -#usr/lib/locale/en_GB.utf8 -#usr/lib/locale/en_GB.utf8/LC_ADDRESS -#usr/lib/locale/en_GB.utf8/LC_COLLATE -#usr/lib/locale/en_GB.utf8/LC_CTYPE -#usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/en_GB.utf8/LC_MESSAGES -#usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB.utf8/LC_MONETARY -#usr/lib/locale/en_GB.utf8/LC_NAME -#usr/lib/locale/en_GB.utf8/LC_NUMERIC -#usr/lib/locale/en_GB.utf8/LC_PAPER -#usr/lib/locale/en_GB.utf8/LC_TELEPHONE -#usr/lib/locale/en_GB.utf8/LC_TIME -#usr/lib/locale/en_GB/LC_ADDRESS -#usr/lib/locale/en_GB/LC_COLLATE -#usr/lib/locale/en_GB/LC_CTYPE -#usr/lib/locale/en_GB/LC_IDENTIFICATION -#usr/lib/locale/en_GB/LC_MEASUREMENT -#usr/lib/locale/en_GB/LC_MESSAGES -#usr/lib/locale/en_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB/LC_MONETARY -#usr/lib/locale/en_GB/LC_NAME -#usr/lib/locale/en_GB/LC_NUMERIC -#usr/lib/locale/en_GB/LC_PAPER -#usr/lib/locale/en_GB/LC_TELEPHONE -#usr/lib/locale/en_GB/LC_TIME -#usr/lib/locale/en_HK -#usr/lib/locale/en_HK.utf8 -#usr/lib/locale/en_HK.utf8/LC_ADDRESS -#usr/lib/locale/en_HK.utf8/LC_COLLATE -#usr/lib/locale/en_HK.utf8/LC_CTYPE -#usr/lib/locale/en_HK.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_HK.utf8/LC_MEASUREMENT -#usr/lib/locale/en_HK.utf8/LC_MESSAGES -#usr/lib/locale/en_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_HK.utf8/LC_MONETARY -#usr/lib/locale/en_HK.utf8/LC_NAME -#usr/lib/locale/en_HK.utf8/LC_NUMERIC -#usr/lib/locale/en_HK.utf8/LC_PAPER -#usr/lib/locale/en_HK.utf8/LC_TELEPHONE -#usr/lib/locale/en_HK.utf8/LC_TIME -#usr/lib/locale/en_HK/LC_ADDRESS -#usr/lib/locale/en_HK/LC_COLLATE -#usr/lib/locale/en_HK/LC_CTYPE -#usr/lib/locale/en_HK/LC_IDENTIFICATION -#usr/lib/locale/en_HK/LC_MEASUREMENT -#usr/lib/locale/en_HK/LC_MESSAGES -#usr/lib/locale/en_HK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_HK/LC_MONETARY -#usr/lib/locale/en_HK/LC_NAME -#usr/lib/locale/en_HK/LC_NUMERIC -#usr/lib/locale/en_HK/LC_PAPER -#usr/lib/locale/en_HK/LC_TELEPHONE -#usr/lib/locale/en_HK/LC_TIME -#usr/lib/locale/en_IE -#usr/lib/locale/en_IE.utf8 -#usr/lib/locale/en_IE.utf8/LC_ADDRESS -#usr/lib/locale/en_IE.utf8/LC_COLLATE -#usr/lib/locale/en_IE.utf8/LC_CTYPE -#usr/lib/locale/en_IE.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_IE.utf8/LC_MEASUREMENT -#usr/lib/locale/en_IE.utf8/LC_MESSAGES -#usr/lib/locale/en_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE.utf8/LC_MONETARY -#usr/lib/locale/en_IE.utf8/LC_NAME -#usr/lib/locale/en_IE.utf8/LC_NUMERIC -#usr/lib/locale/en_IE.utf8/LC_PAPER -#usr/lib/locale/en_IE.utf8/LC_TELEPHONE -#usr/lib/locale/en_IE.utf8/LC_TIME -#usr/lib/locale/en_IE/LC_ADDRESS -#usr/lib/locale/en_IE/LC_COLLATE -#usr/lib/locale/en_IE/LC_CTYPE -#usr/lib/locale/en_IE/LC_IDENTIFICATION -#usr/lib/locale/en_IE/LC_MEASUREMENT -#usr/lib/locale/en_IE/LC_MESSAGES -#usr/lib/locale/en_IE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE/LC_MONETARY -#usr/lib/locale/en_IE/LC_NAME -#usr/lib/locale/en_IE/LC_NUMERIC -#usr/lib/locale/en_IE/LC_PAPER -#usr/lib/locale/en_IE/LC_TELEPHONE -#usr/lib/locale/en_IE/LC_TIME -#usr/lib/locale/en_IE@euro -#usr/lib/locale/en_IE@euro/LC_ADDRESS -#usr/lib/locale/en_IE@euro/LC_COLLATE -#usr/lib/locale/en_IE@euro/LC_CTYPE -#usr/lib/locale/en_IE@euro/LC_IDENTIFICATION -#usr/lib/locale/en_IE@euro/LC_MEASUREMENT -#usr/lib/locale/en_IE@euro/LC_MESSAGES -#usr/lib/locale/en_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE@euro/LC_MONETARY -#usr/lib/locale/en_IE@euro/LC_NAME -#usr/lib/locale/en_IE@euro/LC_NUMERIC -#usr/lib/locale/en_IE@euro/LC_PAPER -#usr/lib/locale/en_IE@euro/LC_TELEPHONE -#usr/lib/locale/en_IE@euro/LC_TIME -#usr/lib/locale/en_IN -#usr/lib/locale/en_IN/LC_ADDRESS -#usr/lib/locale/en_IN/LC_COLLATE -#usr/lib/locale/en_IN/LC_CTYPE -#usr/lib/locale/en_IN/LC_IDENTIFICATION -#usr/lib/locale/en_IN/LC_MEASUREMENT -#usr/lib/locale/en_IN/LC_MESSAGES -#usr/lib/locale/en_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IN/LC_MONETARY -#usr/lib/locale/en_IN/LC_NAME -#usr/lib/locale/en_IN/LC_NUMERIC -#usr/lib/locale/en_IN/LC_PAPER -#usr/lib/locale/en_IN/LC_TELEPHONE -#usr/lib/locale/en_IN/LC_TIME -#usr/lib/locale/en_NG -#usr/lib/locale/en_NG/LC_ADDRESS -#usr/lib/locale/en_NG/LC_COLLATE -#usr/lib/locale/en_NG/LC_CTYPE -#usr/lib/locale/en_NG/LC_IDENTIFICATION -#usr/lib/locale/en_NG/LC_MEASUREMENT -#usr/lib/locale/en_NG/LC_MESSAGES -#usr/lib/locale/en_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NG/LC_MONETARY -#usr/lib/locale/en_NG/LC_NAME -#usr/lib/locale/en_NG/LC_NUMERIC -#usr/lib/locale/en_NG/LC_PAPER -#usr/lib/locale/en_NG/LC_TELEPHONE -#usr/lib/locale/en_NG/LC_TIME -#usr/lib/locale/en_NZ -#usr/lib/locale/en_NZ.utf8 -#usr/lib/locale/en_NZ.utf8/LC_ADDRESS -#usr/lib/locale/en_NZ.utf8/LC_COLLATE -#usr/lib/locale/en_NZ.utf8/LC_CTYPE -#usr/lib/locale/en_NZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_NZ.utf8/LC_MEASUREMENT -#usr/lib/locale/en_NZ.utf8/LC_MESSAGES -#usr/lib/locale/en_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NZ.utf8/LC_MONETARY -#usr/lib/locale/en_NZ.utf8/LC_NAME -#usr/lib/locale/en_NZ.utf8/LC_NUMERIC -#usr/lib/locale/en_NZ.utf8/LC_PAPER -#usr/lib/locale/en_NZ.utf8/LC_TELEPHONE -#usr/lib/locale/en_NZ.utf8/LC_TIME -#usr/lib/locale/en_NZ/LC_ADDRESS -#usr/lib/locale/en_NZ/LC_COLLATE -#usr/lib/locale/en_NZ/LC_CTYPE -#usr/lib/locale/en_NZ/LC_IDENTIFICATION -#usr/lib/locale/en_NZ/LC_MEASUREMENT -#usr/lib/locale/en_NZ/LC_MESSAGES -#usr/lib/locale/en_NZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NZ/LC_MONETARY -#usr/lib/locale/en_NZ/LC_NAME -#usr/lib/locale/en_NZ/LC_NUMERIC -#usr/lib/locale/en_NZ/LC_PAPER -#usr/lib/locale/en_NZ/LC_TELEPHONE -#usr/lib/locale/en_NZ/LC_TIME -#usr/lib/locale/en_PH -#usr/lib/locale/en_PH.utf8 -#usr/lib/locale/en_PH.utf8/LC_ADDRESS -#usr/lib/locale/en_PH.utf8/LC_COLLATE -#usr/lib/locale/en_PH.utf8/LC_CTYPE -#usr/lib/locale/en_PH.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_PH.utf8/LC_MEASUREMENT -#usr/lib/locale/en_PH.utf8/LC_MESSAGES -#usr/lib/locale/en_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_PH.utf8/LC_MONETARY -#usr/lib/locale/en_PH.utf8/LC_NAME -#usr/lib/locale/en_PH.utf8/LC_NUMERIC -#usr/lib/locale/en_PH.utf8/LC_PAPER -#usr/lib/locale/en_PH.utf8/LC_TELEPHONE -#usr/lib/locale/en_PH.utf8/LC_TIME -#usr/lib/locale/en_PH/LC_ADDRESS -#usr/lib/locale/en_PH/LC_COLLATE -#usr/lib/locale/en_PH/LC_CTYPE -#usr/lib/locale/en_PH/LC_IDENTIFICATION -#usr/lib/locale/en_PH/LC_MEASUREMENT -#usr/lib/locale/en_PH/LC_MESSAGES -#usr/lib/locale/en_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_PH/LC_MONETARY -#usr/lib/locale/en_PH/LC_NAME -#usr/lib/locale/en_PH/LC_NUMERIC -#usr/lib/locale/en_PH/LC_PAPER -#usr/lib/locale/en_PH/LC_TELEPHONE -#usr/lib/locale/en_PH/LC_TIME -#usr/lib/locale/en_SG -#usr/lib/locale/en_SG.utf8 -#usr/lib/locale/en_SG.utf8/LC_ADDRESS -#usr/lib/locale/en_SG.utf8/LC_COLLATE -#usr/lib/locale/en_SG.utf8/LC_CTYPE -#usr/lib/locale/en_SG.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_SG.utf8/LC_MEASUREMENT -#usr/lib/locale/en_SG.utf8/LC_MESSAGES -#usr/lib/locale/en_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_SG.utf8/LC_MONETARY -#usr/lib/locale/en_SG.utf8/LC_NAME -#usr/lib/locale/en_SG.utf8/LC_NUMERIC -#usr/lib/locale/en_SG.utf8/LC_PAPER -#usr/lib/locale/en_SG.utf8/LC_TELEPHONE -#usr/lib/locale/en_SG.utf8/LC_TIME -#usr/lib/locale/en_SG/LC_ADDRESS -#usr/lib/locale/en_SG/LC_COLLATE -#usr/lib/locale/en_SG/LC_CTYPE -#usr/lib/locale/en_SG/LC_IDENTIFICATION -#usr/lib/locale/en_SG/LC_MEASUREMENT -#usr/lib/locale/en_SG/LC_MESSAGES -#usr/lib/locale/en_SG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_SG/LC_MONETARY -#usr/lib/locale/en_SG/LC_NAME -#usr/lib/locale/en_SG/LC_NUMERIC -#usr/lib/locale/en_SG/LC_PAPER -#usr/lib/locale/en_SG/LC_TELEPHONE -#usr/lib/locale/en_SG/LC_TIME -#usr/lib/locale/en_US -#usr/lib/locale/en_US.iso885915 -#usr/lib/locale/en_US.iso885915/LC_ADDRESS -#usr/lib/locale/en_US.iso885915/LC_COLLATE -#usr/lib/locale/en_US.iso885915/LC_CTYPE -#usr/lib/locale/en_US.iso885915/LC_IDENTIFICATION -#usr/lib/locale/en_US.iso885915/LC_MEASUREMENT -#usr/lib/locale/en_US.iso885915/LC_MESSAGES -#usr/lib/locale/en_US.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US.iso885915/LC_MONETARY -#usr/lib/locale/en_US.iso885915/LC_NAME -#usr/lib/locale/en_US.iso885915/LC_NUMERIC -#usr/lib/locale/en_US.iso885915/LC_PAPER -#usr/lib/locale/en_US.iso885915/LC_TELEPHONE -#usr/lib/locale/en_US.iso885915/LC_TIME -#usr/lib/locale/en_US.utf8 -#usr/lib/locale/en_US.utf8/LC_ADDRESS -#usr/lib/locale/en_US.utf8/LC_COLLATE -#usr/lib/locale/en_US.utf8/LC_CTYPE -#usr/lib/locale/en_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_US.utf8/LC_MEASUREMENT -#usr/lib/locale/en_US.utf8/LC_MESSAGES -#usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US.utf8/LC_MONETARY -#usr/lib/locale/en_US.utf8/LC_NAME -#usr/lib/locale/en_US.utf8/LC_NUMERIC -#usr/lib/locale/en_US.utf8/LC_PAPER -#usr/lib/locale/en_US.utf8/LC_TELEPHONE -#usr/lib/locale/en_US.utf8/LC_TIME -#usr/lib/locale/en_US/LC_ADDRESS -#usr/lib/locale/en_US/LC_COLLATE -#usr/lib/locale/en_US/LC_CTYPE -#usr/lib/locale/en_US/LC_IDENTIFICATION -#usr/lib/locale/en_US/LC_MEASUREMENT -#usr/lib/locale/en_US/LC_MESSAGES -#usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US/LC_MONETARY -#usr/lib/locale/en_US/LC_NAME -#usr/lib/locale/en_US/LC_NUMERIC -#usr/lib/locale/en_US/LC_PAPER -#usr/lib/locale/en_US/LC_TELEPHONE -#usr/lib/locale/en_US/LC_TIME -#usr/lib/locale/en_ZA -#usr/lib/locale/en_ZA.utf8 -#usr/lib/locale/en_ZA.utf8/LC_ADDRESS -#usr/lib/locale/en_ZA.utf8/LC_COLLATE -#usr/lib/locale/en_ZA.utf8/LC_CTYPE -#usr/lib/locale/en_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/en_ZA.utf8/LC_MESSAGES -#usr/lib/locale/en_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZA.utf8/LC_MONETARY -#usr/lib/locale/en_ZA.utf8/LC_NAME -#usr/lib/locale/en_ZA.utf8/LC_NUMERIC -#usr/lib/locale/en_ZA.utf8/LC_PAPER -#usr/lib/locale/en_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/en_ZA.utf8/LC_TIME -#usr/lib/locale/en_ZA/LC_ADDRESS -#usr/lib/locale/en_ZA/LC_COLLATE -#usr/lib/locale/en_ZA/LC_CTYPE -#usr/lib/locale/en_ZA/LC_IDENTIFICATION -#usr/lib/locale/en_ZA/LC_MEASUREMENT -#usr/lib/locale/en_ZA/LC_MESSAGES -#usr/lib/locale/en_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZA/LC_MONETARY -#usr/lib/locale/en_ZA/LC_NAME -#usr/lib/locale/en_ZA/LC_NUMERIC -#usr/lib/locale/en_ZA/LC_PAPER -#usr/lib/locale/en_ZA/LC_TELEPHONE -#usr/lib/locale/en_ZA/LC_TIME -#usr/lib/locale/en_ZW -#usr/lib/locale/en_ZW.utf8 -#usr/lib/locale/en_ZW.utf8/LC_ADDRESS -#usr/lib/locale/en_ZW.utf8/LC_COLLATE -#usr/lib/locale/en_ZW.utf8/LC_CTYPE -#usr/lib/locale/en_ZW.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_ZW.utf8/LC_MEASUREMENT -#usr/lib/locale/en_ZW.utf8/LC_MESSAGES -#usr/lib/locale/en_ZW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZW.utf8/LC_MONETARY -#usr/lib/locale/en_ZW.utf8/LC_NAME -#usr/lib/locale/en_ZW.utf8/LC_NUMERIC -#usr/lib/locale/en_ZW.utf8/LC_PAPER -#usr/lib/locale/en_ZW.utf8/LC_TELEPHONE -#usr/lib/locale/en_ZW.utf8/LC_TIME -#usr/lib/locale/en_ZW/LC_ADDRESS -#usr/lib/locale/en_ZW/LC_COLLATE -#usr/lib/locale/en_ZW/LC_CTYPE -#usr/lib/locale/en_ZW/LC_IDENTIFICATION -#usr/lib/locale/en_ZW/LC_MEASUREMENT -#usr/lib/locale/en_ZW/LC_MESSAGES -#usr/lib/locale/en_ZW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZW/LC_MONETARY -#usr/lib/locale/en_ZW/LC_NAME -#usr/lib/locale/en_ZW/LC_NUMERIC -#usr/lib/locale/en_ZW/LC_PAPER -#usr/lib/locale/en_ZW/LC_TELEPHONE -#usr/lib/locale/en_ZW/LC_TIME -#usr/lib/locale/es_AR -#usr/lib/locale/es_AR.utf8 -#usr/lib/locale/es_AR.utf8/LC_ADDRESS -#usr/lib/locale/es_AR.utf8/LC_COLLATE -#usr/lib/locale/es_AR.utf8/LC_CTYPE -#usr/lib/locale/es_AR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_AR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_AR.utf8/LC_MESSAGES -#usr/lib/locale/es_AR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_AR.utf8/LC_MONETARY -#usr/lib/locale/es_AR.utf8/LC_NAME -#usr/lib/locale/es_AR.utf8/LC_NUMERIC -#usr/lib/locale/es_AR.utf8/LC_PAPER -#usr/lib/locale/es_AR.utf8/LC_TELEPHONE -#usr/lib/locale/es_AR.utf8/LC_TIME -#usr/lib/locale/es_AR/LC_ADDRESS -#usr/lib/locale/es_AR/LC_COLLATE -#usr/lib/locale/es_AR/LC_CTYPE -#usr/lib/locale/es_AR/LC_IDENTIFICATION -#usr/lib/locale/es_AR/LC_MEASUREMENT -#usr/lib/locale/es_AR/LC_MESSAGES -#usr/lib/locale/es_AR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_AR/LC_MONETARY -#usr/lib/locale/es_AR/LC_NAME -#usr/lib/locale/es_AR/LC_NUMERIC -#usr/lib/locale/es_AR/LC_PAPER -#usr/lib/locale/es_AR/LC_TELEPHONE -#usr/lib/locale/es_AR/LC_TIME -#usr/lib/locale/es_BO -#usr/lib/locale/es_BO.utf8 -#usr/lib/locale/es_BO.utf8/LC_ADDRESS -#usr/lib/locale/es_BO.utf8/LC_COLLATE -#usr/lib/locale/es_BO.utf8/LC_CTYPE -#usr/lib/locale/es_BO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_BO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_BO.utf8/LC_MESSAGES -#usr/lib/locale/es_BO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_BO.utf8/LC_MONETARY -#usr/lib/locale/es_BO.utf8/LC_NAME -#usr/lib/locale/es_BO.utf8/LC_NUMERIC -#usr/lib/locale/es_BO.utf8/LC_PAPER -#usr/lib/locale/es_BO.utf8/LC_TELEPHONE -#usr/lib/locale/es_BO.utf8/LC_TIME -#usr/lib/locale/es_BO/LC_ADDRESS -#usr/lib/locale/es_BO/LC_COLLATE -#usr/lib/locale/es_BO/LC_CTYPE -#usr/lib/locale/es_BO/LC_IDENTIFICATION -#usr/lib/locale/es_BO/LC_MEASUREMENT -#usr/lib/locale/es_BO/LC_MESSAGES -#usr/lib/locale/es_BO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_BO/LC_MONETARY -#usr/lib/locale/es_BO/LC_NAME -#usr/lib/locale/es_BO/LC_NUMERIC -#usr/lib/locale/es_BO/LC_PAPER -#usr/lib/locale/es_BO/LC_TELEPHONE -#usr/lib/locale/es_BO/LC_TIME -#usr/lib/locale/es_CL -#usr/lib/locale/es_CL.utf8 -#usr/lib/locale/es_CL.utf8/LC_ADDRESS -#usr/lib/locale/es_CL.utf8/LC_COLLATE -#usr/lib/locale/es_CL.utf8/LC_CTYPE -#usr/lib/locale/es_CL.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CL.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CL.utf8/LC_MESSAGES -#usr/lib/locale/es_CL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CL.utf8/LC_MONETARY -#usr/lib/locale/es_CL.utf8/LC_NAME -#usr/lib/locale/es_CL.utf8/LC_NUMERIC -#usr/lib/locale/es_CL.utf8/LC_PAPER -#usr/lib/locale/es_CL.utf8/LC_TELEPHONE -#usr/lib/locale/es_CL.utf8/LC_TIME -#usr/lib/locale/es_CL/LC_ADDRESS -#usr/lib/locale/es_CL/LC_COLLATE -#usr/lib/locale/es_CL/LC_CTYPE -#usr/lib/locale/es_CL/LC_IDENTIFICATION -#usr/lib/locale/es_CL/LC_MEASUREMENT -#usr/lib/locale/es_CL/LC_MESSAGES -#usr/lib/locale/es_CL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CL/LC_MONETARY -#usr/lib/locale/es_CL/LC_NAME -#usr/lib/locale/es_CL/LC_NUMERIC -#usr/lib/locale/es_CL/LC_PAPER -#usr/lib/locale/es_CL/LC_TELEPHONE -#usr/lib/locale/es_CL/LC_TIME -#usr/lib/locale/es_CO -#usr/lib/locale/es_CO.utf8 -#usr/lib/locale/es_CO.utf8/LC_ADDRESS -#usr/lib/locale/es_CO.utf8/LC_COLLATE -#usr/lib/locale/es_CO.utf8/LC_CTYPE -#usr/lib/locale/es_CO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CO.utf8/LC_MESSAGES -#usr/lib/locale/es_CO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CO.utf8/LC_MONETARY -#usr/lib/locale/es_CO.utf8/LC_NAME -#usr/lib/locale/es_CO.utf8/LC_NUMERIC -#usr/lib/locale/es_CO.utf8/LC_PAPER -#usr/lib/locale/es_CO.utf8/LC_TELEPHONE -#usr/lib/locale/es_CO.utf8/LC_TIME -#usr/lib/locale/es_CO/LC_ADDRESS -#usr/lib/locale/es_CO/LC_COLLATE -#usr/lib/locale/es_CO/LC_CTYPE -#usr/lib/locale/es_CO/LC_IDENTIFICATION -#usr/lib/locale/es_CO/LC_MEASUREMENT -#usr/lib/locale/es_CO/LC_MESSAGES -#usr/lib/locale/es_CO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CO/LC_MONETARY -#usr/lib/locale/es_CO/LC_NAME -#usr/lib/locale/es_CO/LC_NUMERIC -#usr/lib/locale/es_CO/LC_PAPER -#usr/lib/locale/es_CO/LC_TELEPHONE -#usr/lib/locale/es_CO/LC_TIME -#usr/lib/locale/es_CR -#usr/lib/locale/es_CR.utf8 -#usr/lib/locale/es_CR.utf8/LC_ADDRESS -#usr/lib/locale/es_CR.utf8/LC_COLLATE -#usr/lib/locale/es_CR.utf8/LC_CTYPE -#usr/lib/locale/es_CR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CR.utf8/LC_MESSAGES -#usr/lib/locale/es_CR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CR.utf8/LC_MONETARY -#usr/lib/locale/es_CR.utf8/LC_NAME -#usr/lib/locale/es_CR.utf8/LC_NUMERIC -#usr/lib/locale/es_CR.utf8/LC_PAPER -#usr/lib/locale/es_CR.utf8/LC_TELEPHONE -#usr/lib/locale/es_CR.utf8/LC_TIME -#usr/lib/locale/es_CR/LC_ADDRESS -#usr/lib/locale/es_CR/LC_COLLATE -#usr/lib/locale/es_CR/LC_CTYPE -#usr/lib/locale/es_CR/LC_IDENTIFICATION -#usr/lib/locale/es_CR/LC_MEASUREMENT -#usr/lib/locale/es_CR/LC_MESSAGES -#usr/lib/locale/es_CR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CR/LC_MONETARY -#usr/lib/locale/es_CR/LC_NAME -#usr/lib/locale/es_CR/LC_NUMERIC -#usr/lib/locale/es_CR/LC_PAPER -#usr/lib/locale/es_CR/LC_TELEPHONE -#usr/lib/locale/es_CR/LC_TIME -#usr/lib/locale/es_DO -#usr/lib/locale/es_DO.utf8 -#usr/lib/locale/es_DO.utf8/LC_ADDRESS -#usr/lib/locale/es_DO.utf8/LC_COLLATE -#usr/lib/locale/es_DO.utf8/LC_CTYPE -#usr/lib/locale/es_DO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_DO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_DO.utf8/LC_MESSAGES -#usr/lib/locale/es_DO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_DO.utf8/LC_MONETARY -#usr/lib/locale/es_DO.utf8/LC_NAME -#usr/lib/locale/es_DO.utf8/LC_NUMERIC -#usr/lib/locale/es_DO.utf8/LC_PAPER -#usr/lib/locale/es_DO.utf8/LC_TELEPHONE -#usr/lib/locale/es_DO.utf8/LC_TIME -#usr/lib/locale/es_DO/LC_ADDRESS -#usr/lib/locale/es_DO/LC_COLLATE -#usr/lib/locale/es_DO/LC_CTYPE -#usr/lib/locale/es_DO/LC_IDENTIFICATION -#usr/lib/locale/es_DO/LC_MEASUREMENT -#usr/lib/locale/es_DO/LC_MESSAGES -#usr/lib/locale/es_DO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_DO/LC_MONETARY -#usr/lib/locale/es_DO/LC_NAME -#usr/lib/locale/es_DO/LC_NUMERIC -#usr/lib/locale/es_DO/LC_PAPER -#usr/lib/locale/es_DO/LC_TELEPHONE -#usr/lib/locale/es_DO/LC_TIME -#usr/lib/locale/es_EC -#usr/lib/locale/es_EC.utf8 -#usr/lib/locale/es_EC.utf8/LC_ADDRESS -#usr/lib/locale/es_EC.utf8/LC_COLLATE -#usr/lib/locale/es_EC.utf8/LC_CTYPE -#usr/lib/locale/es_EC.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_EC.utf8/LC_MEASUREMENT -#usr/lib/locale/es_EC.utf8/LC_MESSAGES -#usr/lib/locale/es_EC.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_EC.utf8/LC_MONETARY -#usr/lib/locale/es_EC.utf8/LC_NAME -#usr/lib/locale/es_EC.utf8/LC_NUMERIC -#usr/lib/locale/es_EC.utf8/LC_PAPER -#usr/lib/locale/es_EC.utf8/LC_TELEPHONE -#usr/lib/locale/es_EC.utf8/LC_TIME -#usr/lib/locale/es_EC/LC_ADDRESS -#usr/lib/locale/es_EC/LC_COLLATE -#usr/lib/locale/es_EC/LC_CTYPE -#usr/lib/locale/es_EC/LC_IDENTIFICATION -#usr/lib/locale/es_EC/LC_MEASUREMENT -#usr/lib/locale/es_EC/LC_MESSAGES -#usr/lib/locale/es_EC/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_EC/LC_MONETARY -#usr/lib/locale/es_EC/LC_NAME -#usr/lib/locale/es_EC/LC_NUMERIC -#usr/lib/locale/es_EC/LC_PAPER -#usr/lib/locale/es_EC/LC_TELEPHONE -#usr/lib/locale/es_EC/LC_TIME -#usr/lib/locale/es_ES -#usr/lib/locale/es_ES.utf8 -#usr/lib/locale/es_ES.utf8/LC_ADDRESS -#usr/lib/locale/es_ES.utf8/LC_COLLATE -#usr/lib/locale/es_ES.utf8/LC_CTYPE -#usr/lib/locale/es_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/es_ES.utf8/LC_MESSAGES -#usr/lib/locale/es_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES.utf8/LC_MONETARY -#usr/lib/locale/es_ES.utf8/LC_NAME -#usr/lib/locale/es_ES.utf8/LC_NUMERIC -#usr/lib/locale/es_ES.utf8/LC_PAPER -#usr/lib/locale/es_ES.utf8/LC_TELEPHONE -#usr/lib/locale/es_ES.utf8/LC_TIME -#usr/lib/locale/es_ES/LC_ADDRESS -#usr/lib/locale/es_ES/LC_COLLATE -#usr/lib/locale/es_ES/LC_CTYPE -#usr/lib/locale/es_ES/LC_IDENTIFICATION -#usr/lib/locale/es_ES/LC_MEASUREMENT -#usr/lib/locale/es_ES/LC_MESSAGES -#usr/lib/locale/es_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES/LC_MONETARY -#usr/lib/locale/es_ES/LC_NAME -#usr/lib/locale/es_ES/LC_NUMERIC -#usr/lib/locale/es_ES/LC_PAPER -#usr/lib/locale/es_ES/LC_TELEPHONE -#usr/lib/locale/es_ES/LC_TIME -#usr/lib/locale/es_ES@euro -#usr/lib/locale/es_ES@euro/LC_ADDRESS -#usr/lib/locale/es_ES@euro/LC_COLLATE -#usr/lib/locale/es_ES@euro/LC_CTYPE -#usr/lib/locale/es_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/es_ES@euro/LC_MEASUREMENT -#usr/lib/locale/es_ES@euro/LC_MESSAGES -#usr/lib/locale/es_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES@euro/LC_MONETARY -#usr/lib/locale/es_ES@euro/LC_NAME -#usr/lib/locale/es_ES@euro/LC_NUMERIC -#usr/lib/locale/es_ES@euro/LC_PAPER -#usr/lib/locale/es_ES@euro/LC_TELEPHONE -#usr/lib/locale/es_ES@euro/LC_TIME -#usr/lib/locale/es_GT -#usr/lib/locale/es_GT.utf8 -#usr/lib/locale/es_GT.utf8/LC_ADDRESS -#usr/lib/locale/es_GT.utf8/LC_COLLATE -#usr/lib/locale/es_GT.utf8/LC_CTYPE -#usr/lib/locale/es_GT.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_GT.utf8/LC_MEASUREMENT -#usr/lib/locale/es_GT.utf8/LC_MESSAGES -#usr/lib/locale/es_GT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_GT.utf8/LC_MONETARY -#usr/lib/locale/es_GT.utf8/LC_NAME -#usr/lib/locale/es_GT.utf8/LC_NUMERIC -#usr/lib/locale/es_GT.utf8/LC_PAPER -#usr/lib/locale/es_GT.utf8/LC_TELEPHONE -#usr/lib/locale/es_GT.utf8/LC_TIME -#usr/lib/locale/es_GT/LC_ADDRESS -#usr/lib/locale/es_GT/LC_COLLATE -#usr/lib/locale/es_GT/LC_CTYPE -#usr/lib/locale/es_GT/LC_IDENTIFICATION -#usr/lib/locale/es_GT/LC_MEASUREMENT -#usr/lib/locale/es_GT/LC_MESSAGES -#usr/lib/locale/es_GT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_GT/LC_MONETARY -#usr/lib/locale/es_GT/LC_NAME -#usr/lib/locale/es_GT/LC_NUMERIC -#usr/lib/locale/es_GT/LC_PAPER -#usr/lib/locale/es_GT/LC_TELEPHONE -#usr/lib/locale/es_GT/LC_TIME -#usr/lib/locale/es_HN -#usr/lib/locale/es_HN.utf8 -#usr/lib/locale/es_HN.utf8/LC_ADDRESS -#usr/lib/locale/es_HN.utf8/LC_COLLATE -#usr/lib/locale/es_HN.utf8/LC_CTYPE -#usr/lib/locale/es_HN.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_HN.utf8/LC_MEASUREMENT -#usr/lib/locale/es_HN.utf8/LC_MESSAGES -#usr/lib/locale/es_HN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_HN.utf8/LC_MONETARY -#usr/lib/locale/es_HN.utf8/LC_NAME -#usr/lib/locale/es_HN.utf8/LC_NUMERIC -#usr/lib/locale/es_HN.utf8/LC_PAPER -#usr/lib/locale/es_HN.utf8/LC_TELEPHONE -#usr/lib/locale/es_HN.utf8/LC_TIME -#usr/lib/locale/es_HN/LC_ADDRESS -#usr/lib/locale/es_HN/LC_COLLATE -#usr/lib/locale/es_HN/LC_CTYPE -#usr/lib/locale/es_HN/LC_IDENTIFICATION -#usr/lib/locale/es_HN/LC_MEASUREMENT -#usr/lib/locale/es_HN/LC_MESSAGES -#usr/lib/locale/es_HN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_HN/LC_MONETARY -#usr/lib/locale/es_HN/LC_NAME -#usr/lib/locale/es_HN/LC_NUMERIC -#usr/lib/locale/es_HN/LC_PAPER -#usr/lib/locale/es_HN/LC_TELEPHONE -#usr/lib/locale/es_HN/LC_TIME -#usr/lib/locale/es_MX -#usr/lib/locale/es_MX.utf8 -#usr/lib/locale/es_MX.utf8/LC_ADDRESS -#usr/lib/locale/es_MX.utf8/LC_COLLATE -#usr/lib/locale/es_MX.utf8/LC_CTYPE -#usr/lib/locale/es_MX.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_MX.utf8/LC_MEASUREMENT -#usr/lib/locale/es_MX.utf8/LC_MESSAGES -#usr/lib/locale/es_MX.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_MX.utf8/LC_MONETARY -#usr/lib/locale/es_MX.utf8/LC_NAME -#usr/lib/locale/es_MX.utf8/LC_NUMERIC -#usr/lib/locale/es_MX.utf8/LC_PAPER -#usr/lib/locale/es_MX.utf8/LC_TELEPHONE -#usr/lib/locale/es_MX.utf8/LC_TIME -#usr/lib/locale/es_MX/LC_ADDRESS -#usr/lib/locale/es_MX/LC_COLLATE -#usr/lib/locale/es_MX/LC_CTYPE -#usr/lib/locale/es_MX/LC_IDENTIFICATION -#usr/lib/locale/es_MX/LC_MEASUREMENT -#usr/lib/locale/es_MX/LC_MESSAGES -#usr/lib/locale/es_MX/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_MX/LC_MONETARY -#usr/lib/locale/es_MX/LC_NAME -#usr/lib/locale/es_MX/LC_NUMERIC -#usr/lib/locale/es_MX/LC_PAPER -#usr/lib/locale/es_MX/LC_TELEPHONE -#usr/lib/locale/es_MX/LC_TIME -#usr/lib/locale/es_NI -#usr/lib/locale/es_NI.utf8 -#usr/lib/locale/es_NI.utf8/LC_ADDRESS -#usr/lib/locale/es_NI.utf8/LC_COLLATE -#usr/lib/locale/es_NI.utf8/LC_CTYPE -#usr/lib/locale/es_NI.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_NI.utf8/LC_MEASUREMENT -#usr/lib/locale/es_NI.utf8/LC_MESSAGES -#usr/lib/locale/es_NI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_NI.utf8/LC_MONETARY -#usr/lib/locale/es_NI.utf8/LC_NAME -#usr/lib/locale/es_NI.utf8/LC_NUMERIC -#usr/lib/locale/es_NI.utf8/LC_PAPER -#usr/lib/locale/es_NI.utf8/LC_TELEPHONE -#usr/lib/locale/es_NI.utf8/LC_TIME -#usr/lib/locale/es_NI/LC_ADDRESS -#usr/lib/locale/es_NI/LC_COLLATE -#usr/lib/locale/es_NI/LC_CTYPE -#usr/lib/locale/es_NI/LC_IDENTIFICATION -#usr/lib/locale/es_NI/LC_MEASUREMENT -#usr/lib/locale/es_NI/LC_MESSAGES -#usr/lib/locale/es_NI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_NI/LC_MONETARY -#usr/lib/locale/es_NI/LC_NAME -#usr/lib/locale/es_NI/LC_NUMERIC -#usr/lib/locale/es_NI/LC_PAPER -#usr/lib/locale/es_NI/LC_TELEPHONE -#usr/lib/locale/es_NI/LC_TIME -#usr/lib/locale/es_PA -#usr/lib/locale/es_PA.utf8 -#usr/lib/locale/es_PA.utf8/LC_ADDRESS -#usr/lib/locale/es_PA.utf8/LC_COLLATE -#usr/lib/locale/es_PA.utf8/LC_CTYPE -#usr/lib/locale/es_PA.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PA.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PA.utf8/LC_MESSAGES -#usr/lib/locale/es_PA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PA.utf8/LC_MONETARY -#usr/lib/locale/es_PA.utf8/LC_NAME -#usr/lib/locale/es_PA.utf8/LC_NUMERIC -#usr/lib/locale/es_PA.utf8/LC_PAPER -#usr/lib/locale/es_PA.utf8/LC_TELEPHONE -#usr/lib/locale/es_PA.utf8/LC_TIME -#usr/lib/locale/es_PA/LC_ADDRESS -#usr/lib/locale/es_PA/LC_COLLATE -#usr/lib/locale/es_PA/LC_CTYPE -#usr/lib/locale/es_PA/LC_IDENTIFICATION -#usr/lib/locale/es_PA/LC_MEASUREMENT -#usr/lib/locale/es_PA/LC_MESSAGES -#usr/lib/locale/es_PA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PA/LC_MONETARY -#usr/lib/locale/es_PA/LC_NAME -#usr/lib/locale/es_PA/LC_NUMERIC -#usr/lib/locale/es_PA/LC_PAPER -#usr/lib/locale/es_PA/LC_TELEPHONE -#usr/lib/locale/es_PA/LC_TIME -#usr/lib/locale/es_PE -#usr/lib/locale/es_PE.utf8 -#usr/lib/locale/es_PE.utf8/LC_ADDRESS -#usr/lib/locale/es_PE.utf8/LC_COLLATE -#usr/lib/locale/es_PE.utf8/LC_CTYPE -#usr/lib/locale/es_PE.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PE.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PE.utf8/LC_MESSAGES -#usr/lib/locale/es_PE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PE.utf8/LC_MONETARY -#usr/lib/locale/es_PE.utf8/LC_NAME -#usr/lib/locale/es_PE.utf8/LC_NUMERIC -#usr/lib/locale/es_PE.utf8/LC_PAPER -#usr/lib/locale/es_PE.utf8/LC_TELEPHONE -#usr/lib/locale/es_PE.utf8/LC_TIME -#usr/lib/locale/es_PE/LC_ADDRESS -#usr/lib/locale/es_PE/LC_COLLATE -#usr/lib/locale/es_PE/LC_CTYPE -#usr/lib/locale/es_PE/LC_IDENTIFICATION -#usr/lib/locale/es_PE/LC_MEASUREMENT -#usr/lib/locale/es_PE/LC_MESSAGES -#usr/lib/locale/es_PE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PE/LC_MONETARY -#usr/lib/locale/es_PE/LC_NAME -#usr/lib/locale/es_PE/LC_NUMERIC -#usr/lib/locale/es_PE/LC_PAPER -#usr/lib/locale/es_PE/LC_TELEPHONE -#usr/lib/locale/es_PE/LC_TIME -#usr/lib/locale/es_PR -#usr/lib/locale/es_PR.utf8 -#usr/lib/locale/es_PR.utf8/LC_ADDRESS -#usr/lib/locale/es_PR.utf8/LC_COLLATE -#usr/lib/locale/es_PR.utf8/LC_CTYPE -#usr/lib/locale/es_PR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PR.utf8/LC_MESSAGES -#usr/lib/locale/es_PR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PR.utf8/LC_MONETARY -#usr/lib/locale/es_PR.utf8/LC_NAME -#usr/lib/locale/es_PR.utf8/LC_NUMERIC -#usr/lib/locale/es_PR.utf8/LC_PAPER -#usr/lib/locale/es_PR.utf8/LC_TELEPHONE -#usr/lib/locale/es_PR.utf8/LC_TIME -#usr/lib/locale/es_PR/LC_ADDRESS -#usr/lib/locale/es_PR/LC_COLLATE -#usr/lib/locale/es_PR/LC_CTYPE -#usr/lib/locale/es_PR/LC_IDENTIFICATION -#usr/lib/locale/es_PR/LC_MEASUREMENT -#usr/lib/locale/es_PR/LC_MESSAGES -#usr/lib/locale/es_PR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PR/LC_MONETARY -#usr/lib/locale/es_PR/LC_NAME -#usr/lib/locale/es_PR/LC_NUMERIC -#usr/lib/locale/es_PR/LC_PAPER -#usr/lib/locale/es_PR/LC_TELEPHONE -#usr/lib/locale/es_PR/LC_TIME -#usr/lib/locale/es_PY -#usr/lib/locale/es_PY.utf8 -#usr/lib/locale/es_PY.utf8/LC_ADDRESS -#usr/lib/locale/es_PY.utf8/LC_COLLATE -#usr/lib/locale/es_PY.utf8/LC_CTYPE -#usr/lib/locale/es_PY.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PY.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PY.utf8/LC_MESSAGES -#usr/lib/locale/es_PY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PY.utf8/LC_MONETARY -#usr/lib/locale/es_PY.utf8/LC_NAME -#usr/lib/locale/es_PY.utf8/LC_NUMERIC -#usr/lib/locale/es_PY.utf8/LC_PAPER -#usr/lib/locale/es_PY.utf8/LC_TELEPHONE -#usr/lib/locale/es_PY.utf8/LC_TIME -#usr/lib/locale/es_PY/LC_ADDRESS -#usr/lib/locale/es_PY/LC_COLLATE -#usr/lib/locale/es_PY/LC_CTYPE -#usr/lib/locale/es_PY/LC_IDENTIFICATION -#usr/lib/locale/es_PY/LC_MEASUREMENT -#usr/lib/locale/es_PY/LC_MESSAGES -#usr/lib/locale/es_PY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PY/LC_MONETARY -#usr/lib/locale/es_PY/LC_NAME -#usr/lib/locale/es_PY/LC_NUMERIC -#usr/lib/locale/es_PY/LC_PAPER -#usr/lib/locale/es_PY/LC_TELEPHONE -#usr/lib/locale/es_PY/LC_TIME -#usr/lib/locale/es_SV -#usr/lib/locale/es_SV.utf8 -#usr/lib/locale/es_SV.utf8/LC_ADDRESS -#usr/lib/locale/es_SV.utf8/LC_COLLATE -#usr/lib/locale/es_SV.utf8/LC_CTYPE -#usr/lib/locale/es_SV.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_SV.utf8/LC_MEASUREMENT -#usr/lib/locale/es_SV.utf8/LC_MESSAGES -#usr/lib/locale/es_SV.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_SV.utf8/LC_MONETARY -#usr/lib/locale/es_SV.utf8/LC_NAME -#usr/lib/locale/es_SV.utf8/LC_NUMERIC -#usr/lib/locale/es_SV.utf8/LC_PAPER -#usr/lib/locale/es_SV.utf8/LC_TELEPHONE -#usr/lib/locale/es_SV.utf8/LC_TIME -#usr/lib/locale/es_SV/LC_ADDRESS -#usr/lib/locale/es_SV/LC_COLLATE -#usr/lib/locale/es_SV/LC_CTYPE -#usr/lib/locale/es_SV/LC_IDENTIFICATION -#usr/lib/locale/es_SV/LC_MEASUREMENT -#usr/lib/locale/es_SV/LC_MESSAGES -#usr/lib/locale/es_SV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_SV/LC_MONETARY -#usr/lib/locale/es_SV/LC_NAME -#usr/lib/locale/es_SV/LC_NUMERIC -#usr/lib/locale/es_SV/LC_PAPER -#usr/lib/locale/es_SV/LC_TELEPHONE -#usr/lib/locale/es_SV/LC_TIME -#usr/lib/locale/es_US -#usr/lib/locale/es_US.utf8 -#usr/lib/locale/es_US.utf8/LC_ADDRESS -#usr/lib/locale/es_US.utf8/LC_COLLATE -#usr/lib/locale/es_US.utf8/LC_CTYPE -#usr/lib/locale/es_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_US.utf8/LC_MEASUREMENT -#usr/lib/locale/es_US.utf8/LC_MESSAGES -#usr/lib/locale/es_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_US.utf8/LC_MONETARY -#usr/lib/locale/es_US.utf8/LC_NAME -#usr/lib/locale/es_US.utf8/LC_NUMERIC -#usr/lib/locale/es_US.utf8/LC_PAPER -#usr/lib/locale/es_US.utf8/LC_TELEPHONE -#usr/lib/locale/es_US.utf8/LC_TIME -#usr/lib/locale/es_US/LC_ADDRESS -#usr/lib/locale/es_US/LC_COLLATE -#usr/lib/locale/es_US/LC_CTYPE -#usr/lib/locale/es_US/LC_IDENTIFICATION -#usr/lib/locale/es_US/LC_MEASUREMENT -#usr/lib/locale/es_US/LC_MESSAGES -#usr/lib/locale/es_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_US/LC_MONETARY -#usr/lib/locale/es_US/LC_NAME -#usr/lib/locale/es_US/LC_NUMERIC -#usr/lib/locale/es_US/LC_PAPER -#usr/lib/locale/es_US/LC_TELEPHONE -#usr/lib/locale/es_US/LC_TIME -#usr/lib/locale/es_UY -#usr/lib/locale/es_UY.utf8 -#usr/lib/locale/es_UY.utf8/LC_ADDRESS -#usr/lib/locale/es_UY.utf8/LC_COLLATE -#usr/lib/locale/es_UY.utf8/LC_CTYPE -#usr/lib/locale/es_UY.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_UY.utf8/LC_MEASUREMENT -#usr/lib/locale/es_UY.utf8/LC_MESSAGES -#usr/lib/locale/es_UY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_UY.utf8/LC_MONETARY -#usr/lib/locale/es_UY.utf8/LC_NAME -#usr/lib/locale/es_UY.utf8/LC_NUMERIC -#usr/lib/locale/es_UY.utf8/LC_PAPER -#usr/lib/locale/es_UY.utf8/LC_TELEPHONE -#usr/lib/locale/es_UY.utf8/LC_TIME -#usr/lib/locale/es_UY/LC_ADDRESS -#usr/lib/locale/es_UY/LC_COLLATE -#usr/lib/locale/es_UY/LC_CTYPE -#usr/lib/locale/es_UY/LC_IDENTIFICATION -#usr/lib/locale/es_UY/LC_MEASUREMENT -#usr/lib/locale/es_UY/LC_MESSAGES -#usr/lib/locale/es_UY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_UY/LC_MONETARY -#usr/lib/locale/es_UY/LC_NAME -#usr/lib/locale/es_UY/LC_NUMERIC -#usr/lib/locale/es_UY/LC_PAPER -#usr/lib/locale/es_UY/LC_TELEPHONE -#usr/lib/locale/es_UY/LC_TIME -#usr/lib/locale/es_VE -#usr/lib/locale/es_VE.utf8 -#usr/lib/locale/es_VE.utf8/LC_ADDRESS -#usr/lib/locale/es_VE.utf8/LC_COLLATE -#usr/lib/locale/es_VE.utf8/LC_CTYPE -#usr/lib/locale/es_VE.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_VE.utf8/LC_MEASUREMENT -#usr/lib/locale/es_VE.utf8/LC_MESSAGES -#usr/lib/locale/es_VE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_VE.utf8/LC_MONETARY -#usr/lib/locale/es_VE.utf8/LC_NAME -#usr/lib/locale/es_VE.utf8/LC_NUMERIC -#usr/lib/locale/es_VE.utf8/LC_PAPER -#usr/lib/locale/es_VE.utf8/LC_TELEPHONE -#usr/lib/locale/es_VE.utf8/LC_TIME -#usr/lib/locale/es_VE/LC_ADDRESS -#usr/lib/locale/es_VE/LC_COLLATE -#usr/lib/locale/es_VE/LC_CTYPE -#usr/lib/locale/es_VE/LC_IDENTIFICATION -#usr/lib/locale/es_VE/LC_MEASUREMENT -#usr/lib/locale/es_VE/LC_MESSAGES -#usr/lib/locale/es_VE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_VE/LC_MONETARY -#usr/lib/locale/es_VE/LC_NAME -#usr/lib/locale/es_VE/LC_NUMERIC -#usr/lib/locale/es_VE/LC_PAPER -#usr/lib/locale/es_VE/LC_TELEPHONE -#usr/lib/locale/es_VE/LC_TIME -#usr/lib/locale/et_EE -#usr/lib/locale/et_EE.iso885915 -#usr/lib/locale/et_EE.iso885915/LC_ADDRESS -#usr/lib/locale/et_EE.iso885915/LC_COLLATE -#usr/lib/locale/et_EE.iso885915/LC_CTYPE -#usr/lib/locale/et_EE.iso885915/LC_IDENTIFICATION -#usr/lib/locale/et_EE.iso885915/LC_MEASUREMENT -#usr/lib/locale/et_EE.iso885915/LC_MESSAGES -#usr/lib/locale/et_EE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE.iso885915/LC_MONETARY -#usr/lib/locale/et_EE.iso885915/LC_NAME -#usr/lib/locale/et_EE.iso885915/LC_NUMERIC -#usr/lib/locale/et_EE.iso885915/LC_PAPER -#usr/lib/locale/et_EE.iso885915/LC_TELEPHONE -#usr/lib/locale/et_EE.iso885915/LC_TIME -#usr/lib/locale/et_EE.utf8 -#usr/lib/locale/et_EE.utf8/LC_ADDRESS -#usr/lib/locale/et_EE.utf8/LC_COLLATE -#usr/lib/locale/et_EE.utf8/LC_CTYPE -#usr/lib/locale/et_EE.utf8/LC_IDENTIFICATION -#usr/lib/locale/et_EE.utf8/LC_MEASUREMENT -#usr/lib/locale/et_EE.utf8/LC_MESSAGES -#usr/lib/locale/et_EE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE.utf8/LC_MONETARY -#usr/lib/locale/et_EE.utf8/LC_NAME -#usr/lib/locale/et_EE.utf8/LC_NUMERIC -#usr/lib/locale/et_EE.utf8/LC_PAPER -#usr/lib/locale/et_EE.utf8/LC_TELEPHONE -#usr/lib/locale/et_EE.utf8/LC_TIME -#usr/lib/locale/et_EE/LC_ADDRESS -#usr/lib/locale/et_EE/LC_COLLATE -#usr/lib/locale/et_EE/LC_CTYPE -#usr/lib/locale/et_EE/LC_IDENTIFICATION -#usr/lib/locale/et_EE/LC_MEASUREMENT -#usr/lib/locale/et_EE/LC_MESSAGES -#usr/lib/locale/et_EE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE/LC_MONETARY -#usr/lib/locale/et_EE/LC_NAME -#usr/lib/locale/et_EE/LC_NUMERIC -#usr/lib/locale/et_EE/LC_PAPER -#usr/lib/locale/et_EE/LC_TELEPHONE -#usr/lib/locale/et_EE/LC_TIME -#usr/lib/locale/eu_ES -#usr/lib/locale/eu_ES.utf8 -#usr/lib/locale/eu_ES.utf8/LC_ADDRESS -#usr/lib/locale/eu_ES.utf8/LC_COLLATE -#usr/lib/locale/eu_ES.utf8/LC_CTYPE -#usr/lib/locale/eu_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/eu_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/eu_ES.utf8/LC_MESSAGES -#usr/lib/locale/eu_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES.utf8/LC_MONETARY -#usr/lib/locale/eu_ES.utf8/LC_NAME -#usr/lib/locale/eu_ES.utf8/LC_NUMERIC -#usr/lib/locale/eu_ES.utf8/LC_PAPER -#usr/lib/locale/eu_ES.utf8/LC_TELEPHONE -#usr/lib/locale/eu_ES.utf8/LC_TIME -#usr/lib/locale/eu_ES/LC_ADDRESS -#usr/lib/locale/eu_ES/LC_COLLATE -#usr/lib/locale/eu_ES/LC_CTYPE -#usr/lib/locale/eu_ES/LC_IDENTIFICATION -#usr/lib/locale/eu_ES/LC_MEASUREMENT -#usr/lib/locale/eu_ES/LC_MESSAGES -#usr/lib/locale/eu_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES/LC_MONETARY -#usr/lib/locale/eu_ES/LC_NAME -#usr/lib/locale/eu_ES/LC_NUMERIC -#usr/lib/locale/eu_ES/LC_PAPER -#usr/lib/locale/eu_ES/LC_TELEPHONE -#usr/lib/locale/eu_ES/LC_TIME -#usr/lib/locale/eu_ES@euro -#usr/lib/locale/eu_ES@euro/LC_ADDRESS -#usr/lib/locale/eu_ES@euro/LC_COLLATE -#usr/lib/locale/eu_ES@euro/LC_CTYPE -#usr/lib/locale/eu_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/eu_ES@euro/LC_MEASUREMENT -#usr/lib/locale/eu_ES@euro/LC_MESSAGES -#usr/lib/locale/eu_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES@euro/LC_MONETARY -#usr/lib/locale/eu_ES@euro/LC_NAME -#usr/lib/locale/eu_ES@euro/LC_NUMERIC -#usr/lib/locale/eu_ES@euro/LC_PAPER -#usr/lib/locale/eu_ES@euro/LC_TELEPHONE -#usr/lib/locale/eu_ES@euro/LC_TIME -#usr/lib/locale/fa_IR -#usr/lib/locale/fa_IR/LC_ADDRESS -#usr/lib/locale/fa_IR/LC_COLLATE -#usr/lib/locale/fa_IR/LC_CTYPE -#usr/lib/locale/fa_IR/LC_IDENTIFICATION -#usr/lib/locale/fa_IR/LC_MEASUREMENT -#usr/lib/locale/fa_IR/LC_MESSAGES -#usr/lib/locale/fa_IR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fa_IR/LC_MONETARY -#usr/lib/locale/fa_IR/LC_NAME -#usr/lib/locale/fa_IR/LC_NUMERIC -#usr/lib/locale/fa_IR/LC_PAPER -#usr/lib/locale/fa_IR/LC_TELEPHONE -#usr/lib/locale/fa_IR/LC_TIME -#usr/lib/locale/fi_FI -#usr/lib/locale/fi_FI.utf8 -#usr/lib/locale/fi_FI.utf8/LC_ADDRESS -#usr/lib/locale/fi_FI.utf8/LC_COLLATE -#usr/lib/locale/fi_FI.utf8/LC_CTYPE -#usr/lib/locale/fi_FI.utf8/LC_IDENTIFICATION -#usr/lib/locale/fi_FI.utf8/LC_MEASUREMENT -#usr/lib/locale/fi_FI.utf8/LC_MESSAGES -#usr/lib/locale/fi_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI.utf8/LC_MONETARY -#usr/lib/locale/fi_FI.utf8/LC_NAME -#usr/lib/locale/fi_FI.utf8/LC_NUMERIC -#usr/lib/locale/fi_FI.utf8/LC_PAPER -#usr/lib/locale/fi_FI.utf8/LC_TELEPHONE -#usr/lib/locale/fi_FI.utf8/LC_TIME -#usr/lib/locale/fi_FI/LC_ADDRESS -#usr/lib/locale/fi_FI/LC_COLLATE -#usr/lib/locale/fi_FI/LC_CTYPE -#usr/lib/locale/fi_FI/LC_IDENTIFICATION -#usr/lib/locale/fi_FI/LC_MEASUREMENT -#usr/lib/locale/fi_FI/LC_MESSAGES -#usr/lib/locale/fi_FI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI/LC_MONETARY -#usr/lib/locale/fi_FI/LC_NAME -#usr/lib/locale/fi_FI/LC_NUMERIC -#usr/lib/locale/fi_FI/LC_PAPER -#usr/lib/locale/fi_FI/LC_TELEPHONE -#usr/lib/locale/fi_FI/LC_TIME -#usr/lib/locale/fi_FI@euro -#usr/lib/locale/fi_FI@euro/LC_ADDRESS -#usr/lib/locale/fi_FI@euro/LC_COLLATE -#usr/lib/locale/fi_FI@euro/LC_CTYPE -#usr/lib/locale/fi_FI@euro/LC_IDENTIFICATION -#usr/lib/locale/fi_FI@euro/LC_MEASUREMENT -#usr/lib/locale/fi_FI@euro/LC_MESSAGES -#usr/lib/locale/fi_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI@euro/LC_MONETARY -#usr/lib/locale/fi_FI@euro/LC_NAME -#usr/lib/locale/fi_FI@euro/LC_NUMERIC -#usr/lib/locale/fi_FI@euro/LC_PAPER -#usr/lib/locale/fi_FI@euro/LC_TELEPHONE -#usr/lib/locale/fi_FI@euro/LC_TIME -#usr/lib/locale/fil_PH -#usr/lib/locale/fil_PH/LC_ADDRESS -#usr/lib/locale/fil_PH/LC_COLLATE -#usr/lib/locale/fil_PH/LC_CTYPE -#usr/lib/locale/fil_PH/LC_IDENTIFICATION -#usr/lib/locale/fil_PH/LC_MEASUREMENT -#usr/lib/locale/fil_PH/LC_MESSAGES -#usr/lib/locale/fil_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fil_PH/LC_MONETARY -#usr/lib/locale/fil_PH/LC_NAME -#usr/lib/locale/fil_PH/LC_NUMERIC -#usr/lib/locale/fil_PH/LC_PAPER -#usr/lib/locale/fil_PH/LC_TELEPHONE -#usr/lib/locale/fil_PH/LC_TIME -#usr/lib/locale/fo_FO -#usr/lib/locale/fo_FO.utf8 -#usr/lib/locale/fo_FO.utf8/LC_ADDRESS -#usr/lib/locale/fo_FO.utf8/LC_COLLATE -#usr/lib/locale/fo_FO.utf8/LC_CTYPE -#usr/lib/locale/fo_FO.utf8/LC_IDENTIFICATION -#usr/lib/locale/fo_FO.utf8/LC_MEASUREMENT -#usr/lib/locale/fo_FO.utf8/LC_MESSAGES -#usr/lib/locale/fo_FO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fo_FO.utf8/LC_MONETARY -#usr/lib/locale/fo_FO.utf8/LC_NAME -#usr/lib/locale/fo_FO.utf8/LC_NUMERIC -#usr/lib/locale/fo_FO.utf8/LC_PAPER -#usr/lib/locale/fo_FO.utf8/LC_TELEPHONE -#usr/lib/locale/fo_FO.utf8/LC_TIME -#usr/lib/locale/fo_FO/LC_ADDRESS -#usr/lib/locale/fo_FO/LC_COLLATE -#usr/lib/locale/fo_FO/LC_CTYPE -#usr/lib/locale/fo_FO/LC_IDENTIFICATION -#usr/lib/locale/fo_FO/LC_MEASUREMENT -#usr/lib/locale/fo_FO/LC_MESSAGES -#usr/lib/locale/fo_FO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fo_FO/LC_MONETARY -#usr/lib/locale/fo_FO/LC_NAME -#usr/lib/locale/fo_FO/LC_NUMERIC -#usr/lib/locale/fo_FO/LC_PAPER -#usr/lib/locale/fo_FO/LC_TELEPHONE -#usr/lib/locale/fo_FO/LC_TIME -#usr/lib/locale/fr_BE -#usr/lib/locale/fr_BE.utf8 -#usr/lib/locale/fr_BE.utf8/LC_ADDRESS -#usr/lib/locale/fr_BE.utf8/LC_COLLATE -#usr/lib/locale/fr_BE.utf8/LC_CTYPE -#usr/lib/locale/fr_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_BE.utf8/LC_MESSAGES -#usr/lib/locale/fr_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE.utf8/LC_MONETARY -#usr/lib/locale/fr_BE.utf8/LC_NAME -#usr/lib/locale/fr_BE.utf8/LC_NUMERIC -#usr/lib/locale/fr_BE.utf8/LC_PAPER -#usr/lib/locale/fr_BE.utf8/LC_TELEPHONE -#usr/lib/locale/fr_BE.utf8/LC_TIME -#usr/lib/locale/fr_BE/LC_ADDRESS -#usr/lib/locale/fr_BE/LC_COLLATE -#usr/lib/locale/fr_BE/LC_CTYPE -#usr/lib/locale/fr_BE/LC_IDENTIFICATION -#usr/lib/locale/fr_BE/LC_MEASUREMENT -#usr/lib/locale/fr_BE/LC_MESSAGES -#usr/lib/locale/fr_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE/LC_MONETARY -#usr/lib/locale/fr_BE/LC_NAME -#usr/lib/locale/fr_BE/LC_NUMERIC -#usr/lib/locale/fr_BE/LC_PAPER -#usr/lib/locale/fr_BE/LC_TELEPHONE -#usr/lib/locale/fr_BE/LC_TIME -#usr/lib/locale/fr_BE@euro -#usr/lib/locale/fr_BE@euro/LC_ADDRESS -#usr/lib/locale/fr_BE@euro/LC_COLLATE -#usr/lib/locale/fr_BE@euro/LC_CTYPE -#usr/lib/locale/fr_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_BE@euro/LC_MEASUREMENT -#usr/lib/locale/fr_BE@euro/LC_MESSAGES -#usr/lib/locale/fr_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE@euro/LC_MONETARY -#usr/lib/locale/fr_BE@euro/LC_NAME -#usr/lib/locale/fr_BE@euro/LC_NUMERIC -#usr/lib/locale/fr_BE@euro/LC_PAPER -#usr/lib/locale/fr_BE@euro/LC_TELEPHONE -#usr/lib/locale/fr_BE@euro/LC_TIME -#usr/lib/locale/fr_CA -#usr/lib/locale/fr_CA.utf8 -#usr/lib/locale/fr_CA.utf8/LC_ADDRESS -#usr/lib/locale/fr_CA.utf8/LC_COLLATE -#usr/lib/locale/fr_CA.utf8/LC_CTYPE -#usr/lib/locale/fr_CA.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_CA.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_CA.utf8/LC_MESSAGES -#usr/lib/locale/fr_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CA.utf8/LC_MONETARY -#usr/lib/locale/fr_CA.utf8/LC_NAME -#usr/lib/locale/fr_CA.utf8/LC_NUMERIC -#usr/lib/locale/fr_CA.utf8/LC_PAPER -#usr/lib/locale/fr_CA.utf8/LC_TELEPHONE -#usr/lib/locale/fr_CA.utf8/LC_TIME -#usr/lib/locale/fr_CA/LC_ADDRESS -#usr/lib/locale/fr_CA/LC_COLLATE -#usr/lib/locale/fr_CA/LC_CTYPE -#usr/lib/locale/fr_CA/LC_IDENTIFICATION -#usr/lib/locale/fr_CA/LC_MEASUREMENT -#usr/lib/locale/fr_CA/LC_MESSAGES -#usr/lib/locale/fr_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CA/LC_MONETARY -#usr/lib/locale/fr_CA/LC_NAME -#usr/lib/locale/fr_CA/LC_NUMERIC -#usr/lib/locale/fr_CA/LC_PAPER -#usr/lib/locale/fr_CA/LC_TELEPHONE -#usr/lib/locale/fr_CA/LC_TIME -#usr/lib/locale/fr_CH -#usr/lib/locale/fr_CH.utf8 -#usr/lib/locale/fr_CH.utf8/LC_ADDRESS -#usr/lib/locale/fr_CH.utf8/LC_COLLATE -#usr/lib/locale/fr_CH.utf8/LC_CTYPE -#usr/lib/locale/fr_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_CH.utf8/LC_MESSAGES -#usr/lib/locale/fr_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CH.utf8/LC_MONETARY -#usr/lib/locale/fr_CH.utf8/LC_NAME -#usr/lib/locale/fr_CH.utf8/LC_NUMERIC -#usr/lib/locale/fr_CH.utf8/LC_PAPER -#usr/lib/locale/fr_CH.utf8/LC_TELEPHONE -#usr/lib/locale/fr_CH.utf8/LC_TIME -#usr/lib/locale/fr_CH/LC_ADDRESS -#usr/lib/locale/fr_CH/LC_COLLATE -#usr/lib/locale/fr_CH/LC_CTYPE -#usr/lib/locale/fr_CH/LC_IDENTIFICATION -#usr/lib/locale/fr_CH/LC_MEASUREMENT -#usr/lib/locale/fr_CH/LC_MESSAGES -#usr/lib/locale/fr_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CH/LC_MONETARY -#usr/lib/locale/fr_CH/LC_NAME -#usr/lib/locale/fr_CH/LC_NUMERIC -#usr/lib/locale/fr_CH/LC_PAPER -#usr/lib/locale/fr_CH/LC_TELEPHONE -#usr/lib/locale/fr_CH/LC_TIME -#usr/lib/locale/fr_FR -#usr/lib/locale/fr_FR.utf8 -#usr/lib/locale/fr_FR.utf8/LC_ADDRESS -#usr/lib/locale/fr_FR.utf8/LC_COLLATE -#usr/lib/locale/fr_FR.utf8/LC_CTYPE -#usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_FR.utf8/LC_MESSAGES -#usr/lib/locale/fr_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR.utf8/LC_MONETARY -#usr/lib/locale/fr_FR.utf8/LC_NAME -#usr/lib/locale/fr_FR.utf8/LC_NUMERIC -#usr/lib/locale/fr_FR.utf8/LC_PAPER -#usr/lib/locale/fr_FR.utf8/LC_TELEPHONE -#usr/lib/locale/fr_FR.utf8/LC_TIME -#usr/lib/locale/fr_FR/LC_ADDRESS -#usr/lib/locale/fr_FR/LC_COLLATE -#usr/lib/locale/fr_FR/LC_CTYPE -#usr/lib/locale/fr_FR/LC_IDENTIFICATION -#usr/lib/locale/fr_FR/LC_MEASUREMENT -#usr/lib/locale/fr_FR/LC_MESSAGES -#usr/lib/locale/fr_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR/LC_MONETARY -#usr/lib/locale/fr_FR/LC_NAME -#usr/lib/locale/fr_FR/LC_NUMERIC -#usr/lib/locale/fr_FR/LC_PAPER -#usr/lib/locale/fr_FR/LC_TELEPHONE -#usr/lib/locale/fr_FR/LC_TIME -#usr/lib/locale/fr_FR@euro -#usr/lib/locale/fr_FR@euro/LC_ADDRESS -#usr/lib/locale/fr_FR@euro/LC_COLLATE -#usr/lib/locale/fr_FR@euro/LC_CTYPE -#usr/lib/locale/fr_FR@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_FR@euro/LC_MEASUREMENT -#usr/lib/locale/fr_FR@euro/LC_MESSAGES -#usr/lib/locale/fr_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR@euro/LC_MONETARY -#usr/lib/locale/fr_FR@euro/LC_NAME -#usr/lib/locale/fr_FR@euro/LC_NUMERIC -#usr/lib/locale/fr_FR@euro/LC_PAPER -#usr/lib/locale/fr_FR@euro/LC_TELEPHONE -#usr/lib/locale/fr_FR@euro/LC_TIME -#usr/lib/locale/fr_LU -#usr/lib/locale/fr_LU.utf8 -#usr/lib/locale/fr_LU.utf8/LC_ADDRESS -#usr/lib/locale/fr_LU.utf8/LC_COLLATE -#usr/lib/locale/fr_LU.utf8/LC_CTYPE -#usr/lib/locale/fr_LU.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_LU.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_LU.utf8/LC_MESSAGES -#usr/lib/locale/fr_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU.utf8/LC_MONETARY -#usr/lib/locale/fr_LU.utf8/LC_NAME -#usr/lib/locale/fr_LU.utf8/LC_NUMERIC -#usr/lib/locale/fr_LU.utf8/LC_PAPER -#usr/lib/locale/fr_LU.utf8/LC_TELEPHONE -#usr/lib/locale/fr_LU.utf8/LC_TIME -#usr/lib/locale/fr_LU/LC_ADDRESS -#usr/lib/locale/fr_LU/LC_COLLATE -#usr/lib/locale/fr_LU/LC_CTYPE -#usr/lib/locale/fr_LU/LC_IDENTIFICATION -#usr/lib/locale/fr_LU/LC_MEASUREMENT -#usr/lib/locale/fr_LU/LC_MESSAGES -#usr/lib/locale/fr_LU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU/LC_MONETARY -#usr/lib/locale/fr_LU/LC_NAME -#usr/lib/locale/fr_LU/LC_NUMERIC -#usr/lib/locale/fr_LU/LC_PAPER -#usr/lib/locale/fr_LU/LC_TELEPHONE -#usr/lib/locale/fr_LU/LC_TIME -#usr/lib/locale/fr_LU@euro -#usr/lib/locale/fr_LU@euro/LC_ADDRESS -#usr/lib/locale/fr_LU@euro/LC_COLLATE -#usr/lib/locale/fr_LU@euro/LC_CTYPE -#usr/lib/locale/fr_LU@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_LU@euro/LC_MEASUREMENT -#usr/lib/locale/fr_LU@euro/LC_MESSAGES -#usr/lib/locale/fr_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU@euro/LC_MONETARY -#usr/lib/locale/fr_LU@euro/LC_NAME -#usr/lib/locale/fr_LU@euro/LC_NUMERIC -#usr/lib/locale/fr_LU@euro/LC_PAPER -#usr/lib/locale/fr_LU@euro/LC_TELEPHONE -#usr/lib/locale/fr_LU@euro/LC_TIME -#usr/lib/locale/fur_IT -#usr/lib/locale/fur_IT/LC_ADDRESS -#usr/lib/locale/fur_IT/LC_COLLATE -#usr/lib/locale/fur_IT/LC_CTYPE -#usr/lib/locale/fur_IT/LC_IDENTIFICATION -#usr/lib/locale/fur_IT/LC_MEASUREMENT -#usr/lib/locale/fur_IT/LC_MESSAGES -#usr/lib/locale/fur_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fur_IT/LC_MONETARY -#usr/lib/locale/fur_IT/LC_NAME -#usr/lib/locale/fur_IT/LC_NUMERIC -#usr/lib/locale/fur_IT/LC_PAPER -#usr/lib/locale/fur_IT/LC_TELEPHONE -#usr/lib/locale/fur_IT/LC_TIME -#usr/lib/locale/fy_DE -#usr/lib/locale/fy_DE/LC_ADDRESS -#usr/lib/locale/fy_DE/LC_COLLATE -#usr/lib/locale/fy_DE/LC_CTYPE -#usr/lib/locale/fy_DE/LC_IDENTIFICATION -#usr/lib/locale/fy_DE/LC_MEASUREMENT -#usr/lib/locale/fy_DE/LC_MESSAGES -#usr/lib/locale/fy_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fy_DE/LC_MONETARY -#usr/lib/locale/fy_DE/LC_NAME -#usr/lib/locale/fy_DE/LC_NUMERIC -#usr/lib/locale/fy_DE/LC_PAPER -#usr/lib/locale/fy_DE/LC_TELEPHONE -#usr/lib/locale/fy_DE/LC_TIME -#usr/lib/locale/fy_NL -#usr/lib/locale/fy_NL/LC_ADDRESS -#usr/lib/locale/fy_NL/LC_COLLATE -#usr/lib/locale/fy_NL/LC_CTYPE -#usr/lib/locale/fy_NL/LC_IDENTIFICATION -#usr/lib/locale/fy_NL/LC_MEASUREMENT -#usr/lib/locale/fy_NL/LC_MESSAGES -#usr/lib/locale/fy_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fy_NL/LC_MONETARY -#usr/lib/locale/fy_NL/LC_NAME -#usr/lib/locale/fy_NL/LC_NUMERIC -#usr/lib/locale/fy_NL/LC_PAPER -#usr/lib/locale/fy_NL/LC_TELEPHONE -#usr/lib/locale/fy_NL/LC_TIME -#usr/lib/locale/ga_IE -#usr/lib/locale/ga_IE.utf8 -#usr/lib/locale/ga_IE.utf8/LC_ADDRESS -#usr/lib/locale/ga_IE.utf8/LC_COLLATE -#usr/lib/locale/ga_IE.utf8/LC_CTYPE -#usr/lib/locale/ga_IE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ga_IE.utf8/LC_MEASUREMENT -#usr/lib/locale/ga_IE.utf8/LC_MESSAGES -#usr/lib/locale/ga_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE.utf8/LC_MONETARY -#usr/lib/locale/ga_IE.utf8/LC_NAME -#usr/lib/locale/ga_IE.utf8/LC_NUMERIC -#usr/lib/locale/ga_IE.utf8/LC_PAPER -#usr/lib/locale/ga_IE.utf8/LC_TELEPHONE -#usr/lib/locale/ga_IE.utf8/LC_TIME -#usr/lib/locale/ga_IE/LC_ADDRESS -#usr/lib/locale/ga_IE/LC_COLLATE -#usr/lib/locale/ga_IE/LC_CTYPE -#usr/lib/locale/ga_IE/LC_IDENTIFICATION -#usr/lib/locale/ga_IE/LC_MEASUREMENT -#usr/lib/locale/ga_IE/LC_MESSAGES -#usr/lib/locale/ga_IE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE/LC_MONETARY -#usr/lib/locale/ga_IE/LC_NAME -#usr/lib/locale/ga_IE/LC_NUMERIC -#usr/lib/locale/ga_IE/LC_PAPER -#usr/lib/locale/ga_IE/LC_TELEPHONE -#usr/lib/locale/ga_IE/LC_TIME -#usr/lib/locale/ga_IE@euro -#usr/lib/locale/ga_IE@euro/LC_ADDRESS -#usr/lib/locale/ga_IE@euro/LC_COLLATE -#usr/lib/locale/ga_IE@euro/LC_CTYPE -#usr/lib/locale/ga_IE@euro/LC_IDENTIFICATION -#usr/lib/locale/ga_IE@euro/LC_MEASUREMENT -#usr/lib/locale/ga_IE@euro/LC_MESSAGES -#usr/lib/locale/ga_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE@euro/LC_MONETARY -#usr/lib/locale/ga_IE@euro/LC_NAME -#usr/lib/locale/ga_IE@euro/LC_NUMERIC -#usr/lib/locale/ga_IE@euro/LC_PAPER -#usr/lib/locale/ga_IE@euro/LC_TELEPHONE -#usr/lib/locale/ga_IE@euro/LC_TIME -#usr/lib/locale/gd_GB -#usr/lib/locale/gd_GB.utf8 -#usr/lib/locale/gd_GB.utf8/LC_ADDRESS -#usr/lib/locale/gd_GB.utf8/LC_COLLATE -#usr/lib/locale/gd_GB.utf8/LC_CTYPE -#usr/lib/locale/gd_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/gd_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/gd_GB.utf8/LC_MESSAGES -#usr/lib/locale/gd_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gd_GB.utf8/LC_MONETARY -#usr/lib/locale/gd_GB.utf8/LC_NAME -#usr/lib/locale/gd_GB.utf8/LC_NUMERIC -#usr/lib/locale/gd_GB.utf8/LC_PAPER -#usr/lib/locale/gd_GB.utf8/LC_TELEPHONE -#usr/lib/locale/gd_GB.utf8/LC_TIME -#usr/lib/locale/gd_GB/LC_ADDRESS -#usr/lib/locale/gd_GB/LC_COLLATE -#usr/lib/locale/gd_GB/LC_CTYPE -#usr/lib/locale/gd_GB/LC_IDENTIFICATION -#usr/lib/locale/gd_GB/LC_MEASUREMENT -#usr/lib/locale/gd_GB/LC_MESSAGES -#usr/lib/locale/gd_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gd_GB/LC_MONETARY -#usr/lib/locale/gd_GB/LC_NAME -#usr/lib/locale/gd_GB/LC_NUMERIC -#usr/lib/locale/gd_GB/LC_PAPER -#usr/lib/locale/gd_GB/LC_TELEPHONE -#usr/lib/locale/gd_GB/LC_TIME -#usr/lib/locale/gez_ER -#usr/lib/locale/gez_ER/LC_ADDRESS -#usr/lib/locale/gez_ER/LC_COLLATE -#usr/lib/locale/gez_ER/LC_CTYPE -#usr/lib/locale/gez_ER/LC_IDENTIFICATION -#usr/lib/locale/gez_ER/LC_MEASUREMENT -#usr/lib/locale/gez_ER/LC_MESSAGES -#usr/lib/locale/gez_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ER/LC_MONETARY -#usr/lib/locale/gez_ER/LC_NAME -#usr/lib/locale/gez_ER/LC_NUMERIC -#usr/lib/locale/gez_ER/LC_PAPER -#usr/lib/locale/gez_ER/LC_TELEPHONE -#usr/lib/locale/gez_ER/LC_TIME -#usr/lib/locale/gez_ER@abegede -#usr/lib/locale/gez_ER@abegede/LC_ADDRESS -#usr/lib/locale/gez_ER@abegede/LC_COLLATE -#usr/lib/locale/gez_ER@abegede/LC_CTYPE -#usr/lib/locale/gez_ER@abegede/LC_IDENTIFICATION -#usr/lib/locale/gez_ER@abegede/LC_MEASUREMENT -#usr/lib/locale/gez_ER@abegede/LC_MESSAGES -#usr/lib/locale/gez_ER@abegede/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ER@abegede/LC_MONETARY -#usr/lib/locale/gez_ER@abegede/LC_NAME -#usr/lib/locale/gez_ER@abegede/LC_NUMERIC -#usr/lib/locale/gez_ER@abegede/LC_PAPER -#usr/lib/locale/gez_ER@abegede/LC_TELEPHONE -#usr/lib/locale/gez_ER@abegede/LC_TIME -#usr/lib/locale/gez_ET -#usr/lib/locale/gez_ET/LC_ADDRESS -#usr/lib/locale/gez_ET/LC_COLLATE -#usr/lib/locale/gez_ET/LC_CTYPE -#usr/lib/locale/gez_ET/LC_IDENTIFICATION -#usr/lib/locale/gez_ET/LC_MEASUREMENT -#usr/lib/locale/gez_ET/LC_MESSAGES -#usr/lib/locale/gez_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ET/LC_MONETARY -#usr/lib/locale/gez_ET/LC_NAME -#usr/lib/locale/gez_ET/LC_NUMERIC -#usr/lib/locale/gez_ET/LC_PAPER -#usr/lib/locale/gez_ET/LC_TELEPHONE -#usr/lib/locale/gez_ET/LC_TIME -#usr/lib/locale/gez_ET@abegede -#usr/lib/locale/gez_ET@abegede/LC_ADDRESS -#usr/lib/locale/gez_ET@abegede/LC_COLLATE -#usr/lib/locale/gez_ET@abegede/LC_CTYPE -#usr/lib/locale/gez_ET@abegede/LC_IDENTIFICATION -#usr/lib/locale/gez_ET@abegede/LC_MEASUREMENT -#usr/lib/locale/gez_ET@abegede/LC_MESSAGES -#usr/lib/locale/gez_ET@abegede/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ET@abegede/LC_MONETARY -#usr/lib/locale/gez_ET@abegede/LC_NAME -#usr/lib/locale/gez_ET@abegede/LC_NUMERIC -#usr/lib/locale/gez_ET@abegede/LC_PAPER -#usr/lib/locale/gez_ET@abegede/LC_TELEPHONE -#usr/lib/locale/gez_ET@abegede/LC_TIME -#usr/lib/locale/gl_ES -#usr/lib/locale/gl_ES.utf8 -#usr/lib/locale/gl_ES.utf8/LC_ADDRESS -#usr/lib/locale/gl_ES.utf8/LC_COLLATE -#usr/lib/locale/gl_ES.utf8/LC_CTYPE -#usr/lib/locale/gl_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/gl_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/gl_ES.utf8/LC_MESSAGES -#usr/lib/locale/gl_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES.utf8/LC_MONETARY -#usr/lib/locale/gl_ES.utf8/LC_NAME -#usr/lib/locale/gl_ES.utf8/LC_NUMERIC -#usr/lib/locale/gl_ES.utf8/LC_PAPER -#usr/lib/locale/gl_ES.utf8/LC_TELEPHONE -#usr/lib/locale/gl_ES.utf8/LC_TIME -#usr/lib/locale/gl_ES/LC_ADDRESS -#usr/lib/locale/gl_ES/LC_COLLATE -#usr/lib/locale/gl_ES/LC_CTYPE -#usr/lib/locale/gl_ES/LC_IDENTIFICATION -#usr/lib/locale/gl_ES/LC_MEASUREMENT -#usr/lib/locale/gl_ES/LC_MESSAGES -#usr/lib/locale/gl_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES/LC_MONETARY -#usr/lib/locale/gl_ES/LC_NAME -#usr/lib/locale/gl_ES/LC_NUMERIC -#usr/lib/locale/gl_ES/LC_PAPER -#usr/lib/locale/gl_ES/LC_TELEPHONE -#usr/lib/locale/gl_ES/LC_TIME -#usr/lib/locale/gl_ES@euro -#usr/lib/locale/gl_ES@euro/LC_ADDRESS -#usr/lib/locale/gl_ES@euro/LC_COLLATE -#usr/lib/locale/gl_ES@euro/LC_CTYPE -#usr/lib/locale/gl_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/gl_ES@euro/LC_MEASUREMENT -#usr/lib/locale/gl_ES@euro/LC_MESSAGES -#usr/lib/locale/gl_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES@euro/LC_MONETARY -#usr/lib/locale/gl_ES@euro/LC_NAME -#usr/lib/locale/gl_ES@euro/LC_NUMERIC -#usr/lib/locale/gl_ES@euro/LC_PAPER -#usr/lib/locale/gl_ES@euro/LC_TELEPHONE -#usr/lib/locale/gl_ES@euro/LC_TIME -#usr/lib/locale/gu_IN -#usr/lib/locale/gu_IN/LC_ADDRESS -#usr/lib/locale/gu_IN/LC_COLLATE -#usr/lib/locale/gu_IN/LC_CTYPE -#usr/lib/locale/gu_IN/LC_IDENTIFICATION -#usr/lib/locale/gu_IN/LC_MEASUREMENT -#usr/lib/locale/gu_IN/LC_MESSAGES -#usr/lib/locale/gu_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gu_IN/LC_MONETARY -#usr/lib/locale/gu_IN/LC_NAME -#usr/lib/locale/gu_IN/LC_NUMERIC -#usr/lib/locale/gu_IN/LC_PAPER -#usr/lib/locale/gu_IN/LC_TELEPHONE -#usr/lib/locale/gu_IN/LC_TIME -#usr/lib/locale/gv_GB -#usr/lib/locale/gv_GB.utf8 -#usr/lib/locale/gv_GB.utf8/LC_ADDRESS -#usr/lib/locale/gv_GB.utf8/LC_COLLATE -#usr/lib/locale/gv_GB.utf8/LC_CTYPE -#usr/lib/locale/gv_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/gv_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/gv_GB.utf8/LC_MESSAGES -#usr/lib/locale/gv_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gv_GB.utf8/LC_MONETARY -#usr/lib/locale/gv_GB.utf8/LC_NAME -#usr/lib/locale/gv_GB.utf8/LC_NUMERIC -#usr/lib/locale/gv_GB.utf8/LC_PAPER -#usr/lib/locale/gv_GB.utf8/LC_TELEPHONE -#usr/lib/locale/gv_GB.utf8/LC_TIME -#usr/lib/locale/gv_GB/LC_ADDRESS -#usr/lib/locale/gv_GB/LC_COLLATE -#usr/lib/locale/gv_GB/LC_CTYPE -#usr/lib/locale/gv_GB/LC_IDENTIFICATION -#usr/lib/locale/gv_GB/LC_MEASUREMENT -#usr/lib/locale/gv_GB/LC_MESSAGES -#usr/lib/locale/gv_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gv_GB/LC_MONETARY -#usr/lib/locale/gv_GB/LC_NAME -#usr/lib/locale/gv_GB/LC_NUMERIC -#usr/lib/locale/gv_GB/LC_PAPER -#usr/lib/locale/gv_GB/LC_TELEPHONE -#usr/lib/locale/gv_GB/LC_TIME -#usr/lib/locale/ha_NG -#usr/lib/locale/ha_NG/LC_ADDRESS -#usr/lib/locale/ha_NG/LC_COLLATE -#usr/lib/locale/ha_NG/LC_CTYPE -#usr/lib/locale/ha_NG/LC_IDENTIFICATION -#usr/lib/locale/ha_NG/LC_MEASUREMENT -#usr/lib/locale/ha_NG/LC_MESSAGES -#usr/lib/locale/ha_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ha_NG/LC_MONETARY -#usr/lib/locale/ha_NG/LC_NAME -#usr/lib/locale/ha_NG/LC_NUMERIC -#usr/lib/locale/ha_NG/LC_PAPER -#usr/lib/locale/ha_NG/LC_TELEPHONE -#usr/lib/locale/ha_NG/LC_TIME -#usr/lib/locale/he_IL -#usr/lib/locale/he_IL.utf8 -#usr/lib/locale/he_IL.utf8/LC_ADDRESS -#usr/lib/locale/he_IL.utf8/LC_COLLATE -#usr/lib/locale/he_IL.utf8/LC_CTYPE -#usr/lib/locale/he_IL.utf8/LC_IDENTIFICATION -#usr/lib/locale/he_IL.utf8/LC_MEASUREMENT -#usr/lib/locale/he_IL.utf8/LC_MESSAGES -#usr/lib/locale/he_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/he_IL.utf8/LC_MONETARY -#usr/lib/locale/he_IL.utf8/LC_NAME -#usr/lib/locale/he_IL.utf8/LC_NUMERIC -#usr/lib/locale/he_IL.utf8/LC_PAPER -#usr/lib/locale/he_IL.utf8/LC_TELEPHONE -#usr/lib/locale/he_IL.utf8/LC_TIME -#usr/lib/locale/he_IL/LC_ADDRESS -#usr/lib/locale/he_IL/LC_COLLATE -#usr/lib/locale/he_IL/LC_CTYPE -#usr/lib/locale/he_IL/LC_IDENTIFICATION -#usr/lib/locale/he_IL/LC_MEASUREMENT -#usr/lib/locale/he_IL/LC_MESSAGES -#usr/lib/locale/he_IL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/he_IL/LC_MONETARY -#usr/lib/locale/he_IL/LC_NAME -#usr/lib/locale/he_IL/LC_NUMERIC -#usr/lib/locale/he_IL/LC_PAPER -#usr/lib/locale/he_IL/LC_TELEPHONE -#usr/lib/locale/he_IL/LC_TIME -#usr/lib/locale/hi_IN -#usr/lib/locale/hi_IN/LC_ADDRESS -#usr/lib/locale/hi_IN/LC_COLLATE -#usr/lib/locale/hi_IN/LC_CTYPE -#usr/lib/locale/hi_IN/LC_IDENTIFICATION -#usr/lib/locale/hi_IN/LC_MEASUREMENT -#usr/lib/locale/hi_IN/LC_MESSAGES -#usr/lib/locale/hi_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hi_IN/LC_MONETARY -#usr/lib/locale/hi_IN/LC_NAME -#usr/lib/locale/hi_IN/LC_NUMERIC -#usr/lib/locale/hi_IN/LC_PAPER -#usr/lib/locale/hi_IN/LC_TELEPHONE -#usr/lib/locale/hi_IN/LC_TIME -#usr/lib/locale/hne_IN -#usr/lib/locale/hne_IN/LC_ADDRESS -#usr/lib/locale/hne_IN/LC_COLLATE -#usr/lib/locale/hne_IN/LC_CTYPE -#usr/lib/locale/hne_IN/LC_IDENTIFICATION -#usr/lib/locale/hne_IN/LC_MEASUREMENT -#usr/lib/locale/hne_IN/LC_MESSAGES -#usr/lib/locale/hne_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hne_IN/LC_MONETARY -#usr/lib/locale/hne_IN/LC_NAME -#usr/lib/locale/hne_IN/LC_NUMERIC -#usr/lib/locale/hne_IN/LC_PAPER -#usr/lib/locale/hne_IN/LC_TELEPHONE -#usr/lib/locale/hne_IN/LC_TIME -#usr/lib/locale/hr_HR -#usr/lib/locale/hr_HR.utf8 -#usr/lib/locale/hr_HR.utf8/LC_ADDRESS -#usr/lib/locale/hr_HR.utf8/LC_COLLATE -#usr/lib/locale/hr_HR.utf8/LC_CTYPE -#usr/lib/locale/hr_HR.utf8/LC_IDENTIFICATION -#usr/lib/locale/hr_HR.utf8/LC_MEASUREMENT -#usr/lib/locale/hr_HR.utf8/LC_MESSAGES -#usr/lib/locale/hr_HR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hr_HR.utf8/LC_MONETARY -#usr/lib/locale/hr_HR.utf8/LC_NAME -#usr/lib/locale/hr_HR.utf8/LC_NUMERIC -#usr/lib/locale/hr_HR.utf8/LC_PAPER -#usr/lib/locale/hr_HR.utf8/LC_TELEPHONE -#usr/lib/locale/hr_HR.utf8/LC_TIME -#usr/lib/locale/hr_HR/LC_ADDRESS -#usr/lib/locale/hr_HR/LC_COLLATE -#usr/lib/locale/hr_HR/LC_CTYPE -#usr/lib/locale/hr_HR/LC_IDENTIFICATION -#usr/lib/locale/hr_HR/LC_MEASUREMENT -#usr/lib/locale/hr_HR/LC_MESSAGES -#usr/lib/locale/hr_HR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hr_HR/LC_MONETARY -#usr/lib/locale/hr_HR/LC_NAME -#usr/lib/locale/hr_HR/LC_NUMERIC -#usr/lib/locale/hr_HR/LC_PAPER -#usr/lib/locale/hr_HR/LC_TELEPHONE -#usr/lib/locale/hr_HR/LC_TIME -#usr/lib/locale/hsb_DE -#usr/lib/locale/hsb_DE.utf8 -#usr/lib/locale/hsb_DE.utf8/LC_ADDRESS -#usr/lib/locale/hsb_DE.utf8/LC_COLLATE -#usr/lib/locale/hsb_DE.utf8/LC_CTYPE -#usr/lib/locale/hsb_DE.utf8/LC_IDENTIFICATION -#usr/lib/locale/hsb_DE.utf8/LC_MEASUREMENT -#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES -#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hsb_DE.utf8/LC_MONETARY -#usr/lib/locale/hsb_DE.utf8/LC_NAME -#usr/lib/locale/hsb_DE.utf8/LC_NUMERIC -#usr/lib/locale/hsb_DE.utf8/LC_PAPER -#usr/lib/locale/hsb_DE.utf8/LC_TELEPHONE -#usr/lib/locale/hsb_DE.utf8/LC_TIME -#usr/lib/locale/hsb_DE/LC_ADDRESS -#usr/lib/locale/hsb_DE/LC_COLLATE -#usr/lib/locale/hsb_DE/LC_CTYPE -#usr/lib/locale/hsb_DE/LC_IDENTIFICATION -#usr/lib/locale/hsb_DE/LC_MEASUREMENT -#usr/lib/locale/hsb_DE/LC_MESSAGES -#usr/lib/locale/hsb_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hsb_DE/LC_MONETARY -#usr/lib/locale/hsb_DE/LC_NAME -#usr/lib/locale/hsb_DE/LC_NUMERIC -#usr/lib/locale/hsb_DE/LC_PAPER -#usr/lib/locale/hsb_DE/LC_TELEPHONE -#usr/lib/locale/hsb_DE/LC_TIME -#usr/lib/locale/ht_HT -#usr/lib/locale/ht_HT/LC_ADDRESS -#usr/lib/locale/ht_HT/LC_COLLATE -#usr/lib/locale/ht_HT/LC_CTYPE -#usr/lib/locale/ht_HT/LC_IDENTIFICATION -#usr/lib/locale/ht_HT/LC_MEASUREMENT -#usr/lib/locale/ht_HT/LC_MESSAGES -#usr/lib/locale/ht_HT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ht_HT/LC_MONETARY -#usr/lib/locale/ht_HT/LC_NAME -#usr/lib/locale/ht_HT/LC_NUMERIC -#usr/lib/locale/ht_HT/LC_PAPER -#usr/lib/locale/ht_HT/LC_TELEPHONE -#usr/lib/locale/ht_HT/LC_TIME -#usr/lib/locale/hu_HU -#usr/lib/locale/hu_HU.utf8 -#usr/lib/locale/hu_HU.utf8/LC_ADDRESS -#usr/lib/locale/hu_HU.utf8/LC_COLLATE -#usr/lib/locale/hu_HU.utf8/LC_CTYPE -#usr/lib/locale/hu_HU.utf8/LC_IDENTIFICATION -#usr/lib/locale/hu_HU.utf8/LC_MEASUREMENT -#usr/lib/locale/hu_HU.utf8/LC_MESSAGES -#usr/lib/locale/hu_HU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hu_HU.utf8/LC_MONETARY -#usr/lib/locale/hu_HU.utf8/LC_NAME -#usr/lib/locale/hu_HU.utf8/LC_NUMERIC -#usr/lib/locale/hu_HU.utf8/LC_PAPER -#usr/lib/locale/hu_HU.utf8/LC_TELEPHONE -#usr/lib/locale/hu_HU.utf8/LC_TIME -#usr/lib/locale/hu_HU/LC_ADDRESS -#usr/lib/locale/hu_HU/LC_COLLATE -#usr/lib/locale/hu_HU/LC_CTYPE -#usr/lib/locale/hu_HU/LC_IDENTIFICATION -#usr/lib/locale/hu_HU/LC_MEASUREMENT -#usr/lib/locale/hu_HU/LC_MESSAGES -#usr/lib/locale/hu_HU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hu_HU/LC_MONETARY -#usr/lib/locale/hu_HU/LC_NAME -#usr/lib/locale/hu_HU/LC_NUMERIC -#usr/lib/locale/hu_HU/LC_PAPER -#usr/lib/locale/hu_HU/LC_TELEPHONE -#usr/lib/locale/hu_HU/LC_TIME -#usr/lib/locale/hy_AM -#usr/lib/locale/hy_AM.armscii8 -#usr/lib/locale/hy_AM.armscii8/LC_ADDRESS -#usr/lib/locale/hy_AM.armscii8/LC_COLLATE -#usr/lib/locale/hy_AM.armscii8/LC_CTYPE -#usr/lib/locale/hy_AM.armscii8/LC_IDENTIFICATION -#usr/lib/locale/hy_AM.armscii8/LC_MEASUREMENT -#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES -#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hy_AM.armscii8/LC_MONETARY -#usr/lib/locale/hy_AM.armscii8/LC_NAME -#usr/lib/locale/hy_AM.armscii8/LC_NUMERIC -#usr/lib/locale/hy_AM.armscii8/LC_PAPER -#usr/lib/locale/hy_AM.armscii8/LC_TELEPHONE -#usr/lib/locale/hy_AM.armscii8/LC_TIME -#usr/lib/locale/hy_AM/LC_ADDRESS -#usr/lib/locale/hy_AM/LC_COLLATE -#usr/lib/locale/hy_AM/LC_CTYPE -#usr/lib/locale/hy_AM/LC_IDENTIFICATION -#usr/lib/locale/hy_AM/LC_MEASUREMENT -#usr/lib/locale/hy_AM/LC_MESSAGES -#usr/lib/locale/hy_AM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hy_AM/LC_MONETARY -#usr/lib/locale/hy_AM/LC_NAME -#usr/lib/locale/hy_AM/LC_NUMERIC -#usr/lib/locale/hy_AM/LC_PAPER -#usr/lib/locale/hy_AM/LC_TELEPHONE -#usr/lib/locale/hy_AM/LC_TIME -#usr/lib/locale/id_ID -#usr/lib/locale/id_ID.utf8 -#usr/lib/locale/id_ID.utf8/LC_ADDRESS -#usr/lib/locale/id_ID.utf8/LC_COLLATE -#usr/lib/locale/id_ID.utf8/LC_CTYPE -#usr/lib/locale/id_ID.utf8/LC_IDENTIFICATION -#usr/lib/locale/id_ID.utf8/LC_MEASUREMENT -#usr/lib/locale/id_ID.utf8/LC_MESSAGES -#usr/lib/locale/id_ID.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/id_ID.utf8/LC_MONETARY -#usr/lib/locale/id_ID.utf8/LC_NAME -#usr/lib/locale/id_ID.utf8/LC_NUMERIC -#usr/lib/locale/id_ID.utf8/LC_PAPER -#usr/lib/locale/id_ID.utf8/LC_TELEPHONE -#usr/lib/locale/id_ID.utf8/LC_TIME -#usr/lib/locale/id_ID/LC_ADDRESS -#usr/lib/locale/id_ID/LC_COLLATE -#usr/lib/locale/id_ID/LC_CTYPE -#usr/lib/locale/id_ID/LC_IDENTIFICATION -#usr/lib/locale/id_ID/LC_MEASUREMENT -#usr/lib/locale/id_ID/LC_MESSAGES -#usr/lib/locale/id_ID/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/id_ID/LC_MONETARY -#usr/lib/locale/id_ID/LC_NAME -#usr/lib/locale/id_ID/LC_NUMERIC -#usr/lib/locale/id_ID/LC_PAPER -#usr/lib/locale/id_ID/LC_TELEPHONE -#usr/lib/locale/id_ID/LC_TIME -#usr/lib/locale/ig_NG -#usr/lib/locale/ig_NG/LC_ADDRESS -#usr/lib/locale/ig_NG/LC_COLLATE -#usr/lib/locale/ig_NG/LC_CTYPE -#usr/lib/locale/ig_NG/LC_IDENTIFICATION -#usr/lib/locale/ig_NG/LC_MEASUREMENT -#usr/lib/locale/ig_NG/LC_MESSAGES -#usr/lib/locale/ig_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ig_NG/LC_MONETARY -#usr/lib/locale/ig_NG/LC_NAME -#usr/lib/locale/ig_NG/LC_NUMERIC -#usr/lib/locale/ig_NG/LC_PAPER -#usr/lib/locale/ig_NG/LC_TELEPHONE -#usr/lib/locale/ig_NG/LC_TIME -#usr/lib/locale/ik_CA -#usr/lib/locale/ik_CA/LC_ADDRESS -#usr/lib/locale/ik_CA/LC_COLLATE -#usr/lib/locale/ik_CA/LC_CTYPE -#usr/lib/locale/ik_CA/LC_IDENTIFICATION -#usr/lib/locale/ik_CA/LC_MEASUREMENT -#usr/lib/locale/ik_CA/LC_MESSAGES -#usr/lib/locale/ik_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ik_CA/LC_MONETARY -#usr/lib/locale/ik_CA/LC_NAME -#usr/lib/locale/ik_CA/LC_NUMERIC -#usr/lib/locale/ik_CA/LC_PAPER -#usr/lib/locale/ik_CA/LC_TELEPHONE -#usr/lib/locale/ik_CA/LC_TIME -#usr/lib/locale/is_IS -#usr/lib/locale/is_IS.utf8 -#usr/lib/locale/is_IS.utf8/LC_ADDRESS -#usr/lib/locale/is_IS.utf8/LC_COLLATE -#usr/lib/locale/is_IS.utf8/LC_CTYPE -#usr/lib/locale/is_IS.utf8/LC_IDENTIFICATION -#usr/lib/locale/is_IS.utf8/LC_MEASUREMENT -#usr/lib/locale/is_IS.utf8/LC_MESSAGES -#usr/lib/locale/is_IS.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/is_IS.utf8/LC_MONETARY -#usr/lib/locale/is_IS.utf8/LC_NAME -#usr/lib/locale/is_IS.utf8/LC_NUMERIC -#usr/lib/locale/is_IS.utf8/LC_PAPER -#usr/lib/locale/is_IS.utf8/LC_TELEPHONE -#usr/lib/locale/is_IS.utf8/LC_TIME -#usr/lib/locale/is_IS/LC_ADDRESS -#usr/lib/locale/is_IS/LC_COLLATE -#usr/lib/locale/is_IS/LC_CTYPE -#usr/lib/locale/is_IS/LC_IDENTIFICATION -#usr/lib/locale/is_IS/LC_MEASUREMENT -#usr/lib/locale/is_IS/LC_MESSAGES -#usr/lib/locale/is_IS/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/is_IS/LC_MONETARY -#usr/lib/locale/is_IS/LC_NAME -#usr/lib/locale/is_IS/LC_NUMERIC -#usr/lib/locale/is_IS/LC_PAPER -#usr/lib/locale/is_IS/LC_TELEPHONE -#usr/lib/locale/is_IS/LC_TIME -#usr/lib/locale/it_CH -#usr/lib/locale/it_CH.utf8 -#usr/lib/locale/it_CH.utf8/LC_ADDRESS -#usr/lib/locale/it_CH.utf8/LC_COLLATE -#usr/lib/locale/it_CH.utf8/LC_CTYPE -#usr/lib/locale/it_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/it_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/it_CH.utf8/LC_MESSAGES -#usr/lib/locale/it_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_CH.utf8/LC_MONETARY -#usr/lib/locale/it_CH.utf8/LC_NAME -#usr/lib/locale/it_CH.utf8/LC_NUMERIC -#usr/lib/locale/it_CH.utf8/LC_PAPER -#usr/lib/locale/it_CH.utf8/LC_TELEPHONE -#usr/lib/locale/it_CH.utf8/LC_TIME -#usr/lib/locale/it_CH/LC_ADDRESS -#usr/lib/locale/it_CH/LC_COLLATE -#usr/lib/locale/it_CH/LC_CTYPE -#usr/lib/locale/it_CH/LC_IDENTIFICATION -#usr/lib/locale/it_CH/LC_MEASUREMENT -#usr/lib/locale/it_CH/LC_MESSAGES -#usr/lib/locale/it_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_CH/LC_MONETARY -#usr/lib/locale/it_CH/LC_NAME -#usr/lib/locale/it_CH/LC_NUMERIC -#usr/lib/locale/it_CH/LC_PAPER -#usr/lib/locale/it_CH/LC_TELEPHONE -#usr/lib/locale/it_CH/LC_TIME -#usr/lib/locale/it_IT -#usr/lib/locale/it_IT.utf8 -#usr/lib/locale/it_IT.utf8/LC_ADDRESS -#usr/lib/locale/it_IT.utf8/LC_COLLATE -#usr/lib/locale/it_IT.utf8/LC_CTYPE -#usr/lib/locale/it_IT.utf8/LC_IDENTIFICATION -#usr/lib/locale/it_IT.utf8/LC_MEASUREMENT -#usr/lib/locale/it_IT.utf8/LC_MESSAGES -#usr/lib/locale/it_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT.utf8/LC_MONETARY -#usr/lib/locale/it_IT.utf8/LC_NAME -#usr/lib/locale/it_IT.utf8/LC_NUMERIC -#usr/lib/locale/it_IT.utf8/LC_PAPER -#usr/lib/locale/it_IT.utf8/LC_TELEPHONE -#usr/lib/locale/it_IT.utf8/LC_TIME -#usr/lib/locale/it_IT/LC_ADDRESS -#usr/lib/locale/it_IT/LC_COLLATE -#usr/lib/locale/it_IT/LC_CTYPE -#usr/lib/locale/it_IT/LC_IDENTIFICATION -#usr/lib/locale/it_IT/LC_MEASUREMENT -#usr/lib/locale/it_IT/LC_MESSAGES -#usr/lib/locale/it_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT/LC_MONETARY -#usr/lib/locale/it_IT/LC_NAME -#usr/lib/locale/it_IT/LC_NUMERIC -#usr/lib/locale/it_IT/LC_PAPER -#usr/lib/locale/it_IT/LC_TELEPHONE -#usr/lib/locale/it_IT/LC_TIME -#usr/lib/locale/it_IT@euro -#usr/lib/locale/it_IT@euro/LC_ADDRESS -#usr/lib/locale/it_IT@euro/LC_COLLATE -#usr/lib/locale/it_IT@euro/LC_CTYPE -#usr/lib/locale/it_IT@euro/LC_IDENTIFICATION -#usr/lib/locale/it_IT@euro/LC_MEASUREMENT -#usr/lib/locale/it_IT@euro/LC_MESSAGES -#usr/lib/locale/it_IT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT@euro/LC_MONETARY -#usr/lib/locale/it_IT@euro/LC_NAME -#usr/lib/locale/it_IT@euro/LC_NUMERIC -#usr/lib/locale/it_IT@euro/LC_PAPER -#usr/lib/locale/it_IT@euro/LC_TELEPHONE -#usr/lib/locale/it_IT@euro/LC_TIME -#usr/lib/locale/iu_CA -#usr/lib/locale/iu_CA/LC_ADDRESS -#usr/lib/locale/iu_CA/LC_COLLATE -#usr/lib/locale/iu_CA/LC_CTYPE -#usr/lib/locale/iu_CA/LC_IDENTIFICATION -#usr/lib/locale/iu_CA/LC_MEASUREMENT -#usr/lib/locale/iu_CA/LC_MESSAGES -#usr/lib/locale/iu_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iu_CA/LC_MONETARY -#usr/lib/locale/iu_CA/LC_NAME -#usr/lib/locale/iu_CA/LC_NUMERIC -#usr/lib/locale/iu_CA/LC_PAPER -#usr/lib/locale/iu_CA/LC_TELEPHONE -#usr/lib/locale/iu_CA/LC_TIME -#usr/lib/locale/iw_IL -#usr/lib/locale/iw_IL.utf8 -#usr/lib/locale/iw_IL.utf8/LC_ADDRESS -#usr/lib/locale/iw_IL.utf8/LC_COLLATE -#usr/lib/locale/iw_IL.utf8/LC_CTYPE -#usr/lib/locale/iw_IL.utf8/LC_IDENTIFICATION -#usr/lib/locale/iw_IL.utf8/LC_MEASUREMENT -#usr/lib/locale/iw_IL.utf8/LC_MESSAGES -#usr/lib/locale/iw_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iw_IL.utf8/LC_MONETARY -#usr/lib/locale/iw_IL.utf8/LC_NAME -#usr/lib/locale/iw_IL.utf8/LC_NUMERIC -#usr/lib/locale/iw_IL.utf8/LC_PAPER -#usr/lib/locale/iw_IL.utf8/LC_TELEPHONE -#usr/lib/locale/iw_IL.utf8/LC_TIME -#usr/lib/locale/iw_IL/LC_ADDRESS -#usr/lib/locale/iw_IL/LC_COLLATE -#usr/lib/locale/iw_IL/LC_CTYPE -#usr/lib/locale/iw_IL/LC_IDENTIFICATION -#usr/lib/locale/iw_IL/LC_MEASUREMENT -#usr/lib/locale/iw_IL/LC_MESSAGES -#usr/lib/locale/iw_IL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iw_IL/LC_MONETARY -#usr/lib/locale/iw_IL/LC_NAME -#usr/lib/locale/iw_IL/LC_NUMERIC -#usr/lib/locale/iw_IL/LC_PAPER -#usr/lib/locale/iw_IL/LC_TELEPHONE -#usr/lib/locale/iw_IL/LC_TIME -#usr/lib/locale/ja_JP.eucjp -#usr/lib/locale/ja_JP.eucjp/LC_ADDRESS -#usr/lib/locale/ja_JP.eucjp/LC_COLLATE -#usr/lib/locale/ja_JP.eucjp/LC_CTYPE -#usr/lib/locale/ja_JP.eucjp/LC_IDENTIFICATION -#usr/lib/locale/ja_JP.eucjp/LC_MEASUREMENT -#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES -#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ja_JP.eucjp/LC_MONETARY -#usr/lib/locale/ja_JP.eucjp/LC_NAME -#usr/lib/locale/ja_JP.eucjp/LC_NUMERIC -#usr/lib/locale/ja_JP.eucjp/LC_PAPER -#usr/lib/locale/ja_JP.eucjp/LC_TELEPHONE -#usr/lib/locale/ja_JP.eucjp/LC_TIME -#usr/lib/locale/ja_JP.utf8 -#usr/lib/locale/ja_JP.utf8/LC_ADDRESS -#usr/lib/locale/ja_JP.utf8/LC_COLLATE -#usr/lib/locale/ja_JP.utf8/LC_CTYPE -#usr/lib/locale/ja_JP.utf8/LC_IDENTIFICATION -#usr/lib/locale/ja_JP.utf8/LC_MEASUREMENT -#usr/lib/locale/ja_JP.utf8/LC_MESSAGES -#usr/lib/locale/ja_JP.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ja_JP.utf8/LC_MONETARY -#usr/lib/locale/ja_JP.utf8/LC_NAME -#usr/lib/locale/ja_JP.utf8/LC_NUMERIC -#usr/lib/locale/ja_JP.utf8/LC_PAPER -#usr/lib/locale/ja_JP.utf8/LC_TELEPHONE -#usr/lib/locale/ja_JP.utf8/LC_TIME -#usr/lib/locale/ka_GE -#usr/lib/locale/ka_GE.utf8 -#usr/lib/locale/ka_GE.utf8/LC_ADDRESS -#usr/lib/locale/ka_GE.utf8/LC_COLLATE -#usr/lib/locale/ka_GE.utf8/LC_CTYPE -#usr/lib/locale/ka_GE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ka_GE.utf8/LC_MEASUREMENT -#usr/lib/locale/ka_GE.utf8/LC_MESSAGES -#usr/lib/locale/ka_GE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ka_GE.utf8/LC_MONETARY -#usr/lib/locale/ka_GE.utf8/LC_NAME -#usr/lib/locale/ka_GE.utf8/LC_NUMERIC -#usr/lib/locale/ka_GE.utf8/LC_PAPER -#usr/lib/locale/ka_GE.utf8/LC_TELEPHONE -#usr/lib/locale/ka_GE.utf8/LC_TIME -#usr/lib/locale/ka_GE/LC_ADDRESS -#usr/lib/locale/ka_GE/LC_COLLATE -#usr/lib/locale/ka_GE/LC_CTYPE -#usr/lib/locale/ka_GE/LC_IDENTIFICATION -#usr/lib/locale/ka_GE/LC_MEASUREMENT -#usr/lib/locale/ka_GE/LC_MESSAGES -#usr/lib/locale/ka_GE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ka_GE/LC_MONETARY -#usr/lib/locale/ka_GE/LC_NAME -#usr/lib/locale/ka_GE/LC_NUMERIC -#usr/lib/locale/ka_GE/LC_PAPER -#usr/lib/locale/ka_GE/LC_TELEPHONE -#usr/lib/locale/ka_GE/LC_TIME -#usr/lib/locale/kk_KZ -#usr/lib/locale/kk_KZ.utf8 -#usr/lib/locale/kk_KZ.utf8/LC_ADDRESS -#usr/lib/locale/kk_KZ.utf8/LC_COLLATE -#usr/lib/locale/kk_KZ.utf8/LC_CTYPE -#usr/lib/locale/kk_KZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/kk_KZ.utf8/LC_MEASUREMENT -#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES -#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kk_KZ.utf8/LC_MONETARY -#usr/lib/locale/kk_KZ.utf8/LC_NAME -#usr/lib/locale/kk_KZ.utf8/LC_NUMERIC -#usr/lib/locale/kk_KZ.utf8/LC_PAPER -#usr/lib/locale/kk_KZ.utf8/LC_TELEPHONE -#usr/lib/locale/kk_KZ.utf8/LC_TIME -#usr/lib/locale/kk_KZ/LC_ADDRESS -#usr/lib/locale/kk_KZ/LC_COLLATE -#usr/lib/locale/kk_KZ/LC_CTYPE -#usr/lib/locale/kk_KZ/LC_IDENTIFICATION -#usr/lib/locale/kk_KZ/LC_MEASUREMENT -#usr/lib/locale/kk_KZ/LC_MESSAGES -#usr/lib/locale/kk_KZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kk_KZ/LC_MONETARY -#usr/lib/locale/kk_KZ/LC_NAME -#usr/lib/locale/kk_KZ/LC_NUMERIC -#usr/lib/locale/kk_KZ/LC_PAPER -#usr/lib/locale/kk_KZ/LC_TELEPHONE -#usr/lib/locale/kk_KZ/LC_TIME -#usr/lib/locale/kl_GL -#usr/lib/locale/kl_GL.utf8 -#usr/lib/locale/kl_GL.utf8/LC_ADDRESS -#usr/lib/locale/kl_GL.utf8/LC_COLLATE -#usr/lib/locale/kl_GL.utf8/LC_CTYPE -#usr/lib/locale/kl_GL.utf8/LC_IDENTIFICATION -#usr/lib/locale/kl_GL.utf8/LC_MEASUREMENT -#usr/lib/locale/kl_GL.utf8/LC_MESSAGES -#usr/lib/locale/kl_GL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kl_GL.utf8/LC_MONETARY -#usr/lib/locale/kl_GL.utf8/LC_NAME -#usr/lib/locale/kl_GL.utf8/LC_NUMERIC -#usr/lib/locale/kl_GL.utf8/LC_PAPER -#usr/lib/locale/kl_GL.utf8/LC_TELEPHONE -#usr/lib/locale/kl_GL.utf8/LC_TIME -#usr/lib/locale/kl_GL/LC_ADDRESS -#usr/lib/locale/kl_GL/LC_COLLATE -#usr/lib/locale/kl_GL/LC_CTYPE -#usr/lib/locale/kl_GL/LC_IDENTIFICATION -#usr/lib/locale/kl_GL/LC_MEASUREMENT -#usr/lib/locale/kl_GL/LC_MESSAGES -#usr/lib/locale/kl_GL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kl_GL/LC_MONETARY -#usr/lib/locale/kl_GL/LC_NAME -#usr/lib/locale/kl_GL/LC_NUMERIC -#usr/lib/locale/kl_GL/LC_PAPER -#usr/lib/locale/kl_GL/LC_TELEPHONE -#usr/lib/locale/kl_GL/LC_TIME -#usr/lib/locale/km_KH -#usr/lib/locale/km_KH/LC_ADDRESS -#usr/lib/locale/km_KH/LC_COLLATE -#usr/lib/locale/km_KH/LC_CTYPE -#usr/lib/locale/km_KH/LC_IDENTIFICATION -#usr/lib/locale/km_KH/LC_MEASUREMENT -#usr/lib/locale/km_KH/LC_MESSAGES -#usr/lib/locale/km_KH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/km_KH/LC_MONETARY -#usr/lib/locale/km_KH/LC_NAME -#usr/lib/locale/km_KH/LC_NUMERIC -#usr/lib/locale/km_KH/LC_PAPER -#usr/lib/locale/km_KH/LC_TELEPHONE -#usr/lib/locale/km_KH/LC_TIME -#usr/lib/locale/kn_IN -#usr/lib/locale/kn_IN/LC_ADDRESS -#usr/lib/locale/kn_IN/LC_COLLATE -#usr/lib/locale/kn_IN/LC_CTYPE -#usr/lib/locale/kn_IN/LC_IDENTIFICATION -#usr/lib/locale/kn_IN/LC_MEASUREMENT -#usr/lib/locale/kn_IN/LC_MESSAGES -#usr/lib/locale/kn_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kn_IN/LC_MONETARY -#usr/lib/locale/kn_IN/LC_NAME -#usr/lib/locale/kn_IN/LC_NUMERIC -#usr/lib/locale/kn_IN/LC_PAPER -#usr/lib/locale/kn_IN/LC_TELEPHONE -#usr/lib/locale/kn_IN/LC_TIME -#usr/lib/locale/ko_KR.euckr -#usr/lib/locale/ko_KR.euckr/LC_ADDRESS -#usr/lib/locale/ko_KR.euckr/LC_COLLATE -#usr/lib/locale/ko_KR.euckr/LC_CTYPE -#usr/lib/locale/ko_KR.euckr/LC_IDENTIFICATION -#usr/lib/locale/ko_KR.euckr/LC_MEASUREMENT -#usr/lib/locale/ko_KR.euckr/LC_MESSAGES -#usr/lib/locale/ko_KR.euckr/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ko_KR.euckr/LC_MONETARY -#usr/lib/locale/ko_KR.euckr/LC_NAME -#usr/lib/locale/ko_KR.euckr/LC_NUMERIC -#usr/lib/locale/ko_KR.euckr/LC_PAPER -#usr/lib/locale/ko_KR.euckr/LC_TELEPHONE -#usr/lib/locale/ko_KR.euckr/LC_TIME -#usr/lib/locale/ko_KR.utf8 -#usr/lib/locale/ko_KR.utf8/LC_ADDRESS -#usr/lib/locale/ko_KR.utf8/LC_COLLATE -#usr/lib/locale/ko_KR.utf8/LC_CTYPE -#usr/lib/locale/ko_KR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ko_KR.utf8/LC_MEASUREMENT -#usr/lib/locale/ko_KR.utf8/LC_MESSAGES -#usr/lib/locale/ko_KR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ko_KR.utf8/LC_MONETARY -#usr/lib/locale/ko_KR.utf8/LC_NAME -#usr/lib/locale/ko_KR.utf8/LC_NUMERIC -#usr/lib/locale/ko_KR.utf8/LC_PAPER -#usr/lib/locale/ko_KR.utf8/LC_TELEPHONE -#usr/lib/locale/ko_KR.utf8/LC_TIME -#usr/lib/locale/kok_IN -#usr/lib/locale/kok_IN/LC_ADDRESS -#usr/lib/locale/kok_IN/LC_COLLATE -#usr/lib/locale/kok_IN/LC_CTYPE -#usr/lib/locale/kok_IN/LC_IDENTIFICATION -#usr/lib/locale/kok_IN/LC_MEASUREMENT -#usr/lib/locale/kok_IN/LC_MESSAGES -#usr/lib/locale/kok_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kok_IN/LC_MONETARY -#usr/lib/locale/kok_IN/LC_NAME -#usr/lib/locale/kok_IN/LC_NUMERIC -#usr/lib/locale/kok_IN/LC_PAPER -#usr/lib/locale/kok_IN/LC_TELEPHONE -#usr/lib/locale/kok_IN/LC_TIME -#usr/lib/locale/ks_IN -#usr/lib/locale/ks_IN/LC_ADDRESS -#usr/lib/locale/ks_IN/LC_COLLATE -#usr/lib/locale/ks_IN/LC_CTYPE -#usr/lib/locale/ks_IN/LC_IDENTIFICATION -#usr/lib/locale/ks_IN/LC_MEASUREMENT -#usr/lib/locale/ks_IN/LC_MESSAGES -#usr/lib/locale/ks_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ks_IN/LC_MONETARY -#usr/lib/locale/ks_IN/LC_NAME -#usr/lib/locale/ks_IN/LC_NUMERIC -#usr/lib/locale/ks_IN/LC_PAPER -#usr/lib/locale/ks_IN/LC_TELEPHONE -#usr/lib/locale/ks_IN/LC_TIME -#usr/lib/locale/ks_IN@devanagari -#usr/lib/locale/ks_IN@devanagari/LC_ADDRESS -#usr/lib/locale/ks_IN@devanagari/LC_COLLATE -#usr/lib/locale/ks_IN@devanagari/LC_CTYPE -#usr/lib/locale/ks_IN@devanagari/LC_IDENTIFICATION -#usr/lib/locale/ks_IN@devanagari/LC_MEASUREMENT -#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES -#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ks_IN@devanagari/LC_MONETARY -#usr/lib/locale/ks_IN@devanagari/LC_NAME -#usr/lib/locale/ks_IN@devanagari/LC_NUMERIC -#usr/lib/locale/ks_IN@devanagari/LC_PAPER -#usr/lib/locale/ks_IN@devanagari/LC_TELEPHONE -#usr/lib/locale/ks_IN@devanagari/LC_TIME -#usr/lib/locale/ku_TR -#usr/lib/locale/ku_TR.utf8 -#usr/lib/locale/ku_TR.utf8/LC_ADDRESS -#usr/lib/locale/ku_TR.utf8/LC_COLLATE -#usr/lib/locale/ku_TR.utf8/LC_CTYPE -#usr/lib/locale/ku_TR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ku_TR.utf8/LC_MEASUREMENT -#usr/lib/locale/ku_TR.utf8/LC_MESSAGES -#usr/lib/locale/ku_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ku_TR.utf8/LC_MONETARY -#usr/lib/locale/ku_TR.utf8/LC_NAME -#usr/lib/locale/ku_TR.utf8/LC_NUMERIC -#usr/lib/locale/ku_TR.utf8/LC_PAPER -#usr/lib/locale/ku_TR.utf8/LC_TELEPHONE -#usr/lib/locale/ku_TR.utf8/LC_TIME -#usr/lib/locale/ku_TR/LC_ADDRESS -#usr/lib/locale/ku_TR/LC_COLLATE -#usr/lib/locale/ku_TR/LC_CTYPE -#usr/lib/locale/ku_TR/LC_IDENTIFICATION -#usr/lib/locale/ku_TR/LC_MEASUREMENT -#usr/lib/locale/ku_TR/LC_MESSAGES -#usr/lib/locale/ku_TR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ku_TR/LC_MONETARY -#usr/lib/locale/ku_TR/LC_NAME -#usr/lib/locale/ku_TR/LC_NUMERIC -#usr/lib/locale/ku_TR/LC_PAPER -#usr/lib/locale/ku_TR/LC_TELEPHONE -#usr/lib/locale/ku_TR/LC_TIME -#usr/lib/locale/kw_GB -#usr/lib/locale/kw_GB.utf8 -#usr/lib/locale/kw_GB.utf8/LC_ADDRESS -#usr/lib/locale/kw_GB.utf8/LC_COLLATE -#usr/lib/locale/kw_GB.utf8/LC_CTYPE -#usr/lib/locale/kw_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/kw_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/kw_GB.utf8/LC_MESSAGES -#usr/lib/locale/kw_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kw_GB.utf8/LC_MONETARY -#usr/lib/locale/kw_GB.utf8/LC_NAME -#usr/lib/locale/kw_GB.utf8/LC_NUMERIC -#usr/lib/locale/kw_GB.utf8/LC_PAPER -#usr/lib/locale/kw_GB.utf8/LC_TELEPHONE -#usr/lib/locale/kw_GB.utf8/LC_TIME -#usr/lib/locale/kw_GB/LC_ADDRESS -#usr/lib/locale/kw_GB/LC_COLLATE -#usr/lib/locale/kw_GB/LC_CTYPE -#usr/lib/locale/kw_GB/LC_IDENTIFICATION -#usr/lib/locale/kw_GB/LC_MEASUREMENT -#usr/lib/locale/kw_GB/LC_MESSAGES -#usr/lib/locale/kw_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kw_GB/LC_MONETARY -#usr/lib/locale/kw_GB/LC_NAME -#usr/lib/locale/kw_GB/LC_NUMERIC -#usr/lib/locale/kw_GB/LC_PAPER -#usr/lib/locale/kw_GB/LC_TELEPHONE -#usr/lib/locale/kw_GB/LC_TIME -#usr/lib/locale/ky_KG -#usr/lib/locale/ky_KG/LC_ADDRESS -#usr/lib/locale/ky_KG/LC_COLLATE -#usr/lib/locale/ky_KG/LC_CTYPE -#usr/lib/locale/ky_KG/LC_IDENTIFICATION -#usr/lib/locale/ky_KG/LC_MEASUREMENT -#usr/lib/locale/ky_KG/LC_MESSAGES -#usr/lib/locale/ky_KG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ky_KG/LC_MONETARY -#usr/lib/locale/ky_KG/LC_NAME -#usr/lib/locale/ky_KG/LC_NUMERIC -#usr/lib/locale/ky_KG/LC_PAPER -#usr/lib/locale/ky_KG/LC_TELEPHONE -#usr/lib/locale/ky_KG/LC_TIME -#usr/lib/locale/lg_UG -#usr/lib/locale/lg_UG.utf8 -#usr/lib/locale/lg_UG.utf8/LC_ADDRESS -#usr/lib/locale/lg_UG.utf8/LC_COLLATE -#usr/lib/locale/lg_UG.utf8/LC_CTYPE -#usr/lib/locale/lg_UG.utf8/LC_IDENTIFICATION -#usr/lib/locale/lg_UG.utf8/LC_MEASUREMENT -#usr/lib/locale/lg_UG.utf8/LC_MESSAGES -#usr/lib/locale/lg_UG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lg_UG.utf8/LC_MONETARY -#usr/lib/locale/lg_UG.utf8/LC_NAME -#usr/lib/locale/lg_UG.utf8/LC_NUMERIC -#usr/lib/locale/lg_UG.utf8/LC_PAPER -#usr/lib/locale/lg_UG.utf8/LC_TELEPHONE -#usr/lib/locale/lg_UG.utf8/LC_TIME -#usr/lib/locale/lg_UG/LC_ADDRESS -#usr/lib/locale/lg_UG/LC_COLLATE -#usr/lib/locale/lg_UG/LC_CTYPE -#usr/lib/locale/lg_UG/LC_IDENTIFICATION -#usr/lib/locale/lg_UG/LC_MEASUREMENT -#usr/lib/locale/lg_UG/LC_MESSAGES -#usr/lib/locale/lg_UG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lg_UG/LC_MONETARY -#usr/lib/locale/lg_UG/LC_NAME -#usr/lib/locale/lg_UG/LC_NUMERIC -#usr/lib/locale/lg_UG/LC_PAPER -#usr/lib/locale/lg_UG/LC_TELEPHONE -#usr/lib/locale/lg_UG/LC_TIME -#usr/lib/locale/li_BE -#usr/lib/locale/li_BE/LC_ADDRESS -#usr/lib/locale/li_BE/LC_COLLATE -#usr/lib/locale/li_BE/LC_CTYPE -#usr/lib/locale/li_BE/LC_IDENTIFICATION -#usr/lib/locale/li_BE/LC_MEASUREMENT -#usr/lib/locale/li_BE/LC_MESSAGES -#usr/lib/locale/li_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/li_BE/LC_MONETARY -#usr/lib/locale/li_BE/LC_NAME -#usr/lib/locale/li_BE/LC_NUMERIC -#usr/lib/locale/li_BE/LC_PAPER -#usr/lib/locale/li_BE/LC_TELEPHONE -#usr/lib/locale/li_BE/LC_TIME -#usr/lib/locale/li_NL -#usr/lib/locale/li_NL/LC_ADDRESS -#usr/lib/locale/li_NL/LC_COLLATE -#usr/lib/locale/li_NL/LC_CTYPE -#usr/lib/locale/li_NL/LC_IDENTIFICATION -#usr/lib/locale/li_NL/LC_MEASUREMENT -#usr/lib/locale/li_NL/LC_MESSAGES -#usr/lib/locale/li_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/li_NL/LC_MONETARY -#usr/lib/locale/li_NL/LC_NAME -#usr/lib/locale/li_NL/LC_NUMERIC -#usr/lib/locale/li_NL/LC_PAPER -#usr/lib/locale/li_NL/LC_TELEPHONE -#usr/lib/locale/li_NL/LC_TIME -#usr/lib/locale/lo_LA -#usr/lib/locale/lo_LA/LC_ADDRESS -#usr/lib/locale/lo_LA/LC_COLLATE -#usr/lib/locale/lo_LA/LC_CTYPE -#usr/lib/locale/lo_LA/LC_IDENTIFICATION -#usr/lib/locale/lo_LA/LC_MEASUREMENT -#usr/lib/locale/lo_LA/LC_MESSAGES -#usr/lib/locale/lo_LA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lo_LA/LC_MONETARY -#usr/lib/locale/lo_LA/LC_NAME -#usr/lib/locale/lo_LA/LC_NUMERIC -#usr/lib/locale/lo_LA/LC_PAPER -#usr/lib/locale/lo_LA/LC_TELEPHONE -#usr/lib/locale/lo_LA/LC_TIME -#usr/lib/locale/lt_LT -#usr/lib/locale/lt_LT.utf8 -#usr/lib/locale/lt_LT.utf8/LC_ADDRESS -#usr/lib/locale/lt_LT.utf8/LC_COLLATE -#usr/lib/locale/lt_LT.utf8/LC_CTYPE -#usr/lib/locale/lt_LT.utf8/LC_IDENTIFICATION -#usr/lib/locale/lt_LT.utf8/LC_MEASUREMENT -#usr/lib/locale/lt_LT.utf8/LC_MESSAGES -#usr/lib/locale/lt_LT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lt_LT.utf8/LC_MONETARY -#usr/lib/locale/lt_LT.utf8/LC_NAME -#usr/lib/locale/lt_LT.utf8/LC_NUMERIC -#usr/lib/locale/lt_LT.utf8/LC_PAPER -#usr/lib/locale/lt_LT.utf8/LC_TELEPHONE -#usr/lib/locale/lt_LT.utf8/LC_TIME -#usr/lib/locale/lt_LT/LC_ADDRESS -#usr/lib/locale/lt_LT/LC_COLLATE -#usr/lib/locale/lt_LT/LC_CTYPE -#usr/lib/locale/lt_LT/LC_IDENTIFICATION -#usr/lib/locale/lt_LT/LC_MEASUREMENT -#usr/lib/locale/lt_LT/LC_MESSAGES -#usr/lib/locale/lt_LT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lt_LT/LC_MONETARY -#usr/lib/locale/lt_LT/LC_NAME -#usr/lib/locale/lt_LT/LC_NUMERIC -#usr/lib/locale/lt_LT/LC_PAPER -#usr/lib/locale/lt_LT/LC_TELEPHONE -#usr/lib/locale/lt_LT/LC_TIME -#usr/lib/locale/lv_LV -#usr/lib/locale/lv_LV.utf8 -#usr/lib/locale/lv_LV.utf8/LC_ADDRESS -#usr/lib/locale/lv_LV.utf8/LC_COLLATE -#usr/lib/locale/lv_LV.utf8/LC_CTYPE -#usr/lib/locale/lv_LV.utf8/LC_IDENTIFICATION -#usr/lib/locale/lv_LV.utf8/LC_MEASUREMENT -#usr/lib/locale/lv_LV.utf8/LC_MESSAGES -#usr/lib/locale/lv_LV.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lv_LV.utf8/LC_MONETARY -#usr/lib/locale/lv_LV.utf8/LC_NAME -#usr/lib/locale/lv_LV.utf8/LC_NUMERIC -#usr/lib/locale/lv_LV.utf8/LC_PAPER -#usr/lib/locale/lv_LV.utf8/LC_TELEPHONE -#usr/lib/locale/lv_LV.utf8/LC_TIME -#usr/lib/locale/lv_LV/LC_ADDRESS -#usr/lib/locale/lv_LV/LC_COLLATE -#usr/lib/locale/lv_LV/LC_CTYPE -#usr/lib/locale/lv_LV/LC_IDENTIFICATION -#usr/lib/locale/lv_LV/LC_MEASUREMENT -#usr/lib/locale/lv_LV/LC_MESSAGES -#usr/lib/locale/lv_LV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lv_LV/LC_MONETARY -#usr/lib/locale/lv_LV/LC_NAME -#usr/lib/locale/lv_LV/LC_NUMERIC -#usr/lib/locale/lv_LV/LC_PAPER -#usr/lib/locale/lv_LV/LC_TELEPHONE -#usr/lib/locale/lv_LV/LC_TIME -#usr/lib/locale/mai_IN -#usr/lib/locale/mai_IN/LC_ADDRESS -#usr/lib/locale/mai_IN/LC_COLLATE -#usr/lib/locale/mai_IN/LC_CTYPE -#usr/lib/locale/mai_IN/LC_IDENTIFICATION -#usr/lib/locale/mai_IN/LC_MEASUREMENT -#usr/lib/locale/mai_IN/LC_MESSAGES -#usr/lib/locale/mai_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mai_IN/LC_MONETARY -#usr/lib/locale/mai_IN/LC_NAME -#usr/lib/locale/mai_IN/LC_NUMERIC -#usr/lib/locale/mai_IN/LC_PAPER -#usr/lib/locale/mai_IN/LC_TELEPHONE -#usr/lib/locale/mai_IN/LC_TIME -#usr/lib/locale/mg_MG -#usr/lib/locale/mg_MG.utf8 -#usr/lib/locale/mg_MG.utf8/LC_ADDRESS -#usr/lib/locale/mg_MG.utf8/LC_COLLATE -#usr/lib/locale/mg_MG.utf8/LC_CTYPE -#usr/lib/locale/mg_MG.utf8/LC_IDENTIFICATION -#usr/lib/locale/mg_MG.utf8/LC_MEASUREMENT -#usr/lib/locale/mg_MG.utf8/LC_MESSAGES -#usr/lib/locale/mg_MG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mg_MG.utf8/LC_MONETARY -#usr/lib/locale/mg_MG.utf8/LC_NAME -#usr/lib/locale/mg_MG.utf8/LC_NUMERIC -#usr/lib/locale/mg_MG.utf8/LC_PAPER -#usr/lib/locale/mg_MG.utf8/LC_TELEPHONE -#usr/lib/locale/mg_MG.utf8/LC_TIME -#usr/lib/locale/mg_MG/LC_ADDRESS -#usr/lib/locale/mg_MG/LC_COLLATE -#usr/lib/locale/mg_MG/LC_CTYPE -#usr/lib/locale/mg_MG/LC_IDENTIFICATION -#usr/lib/locale/mg_MG/LC_MEASUREMENT -#usr/lib/locale/mg_MG/LC_MESSAGES -#usr/lib/locale/mg_MG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mg_MG/LC_MONETARY -#usr/lib/locale/mg_MG/LC_NAME -#usr/lib/locale/mg_MG/LC_NUMERIC -#usr/lib/locale/mg_MG/LC_PAPER -#usr/lib/locale/mg_MG/LC_TELEPHONE -#usr/lib/locale/mg_MG/LC_TIME -#usr/lib/locale/mi_NZ -#usr/lib/locale/mi_NZ.utf8 -#usr/lib/locale/mi_NZ.utf8/LC_ADDRESS -#usr/lib/locale/mi_NZ.utf8/LC_COLLATE -#usr/lib/locale/mi_NZ.utf8/LC_CTYPE -#usr/lib/locale/mi_NZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/mi_NZ.utf8/LC_MEASUREMENT -#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES -#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mi_NZ.utf8/LC_MONETARY -#usr/lib/locale/mi_NZ.utf8/LC_NAME -#usr/lib/locale/mi_NZ.utf8/LC_NUMERIC -#usr/lib/locale/mi_NZ.utf8/LC_PAPER -#usr/lib/locale/mi_NZ.utf8/LC_TELEPHONE -#usr/lib/locale/mi_NZ.utf8/LC_TIME -#usr/lib/locale/mi_NZ/LC_ADDRESS -#usr/lib/locale/mi_NZ/LC_COLLATE -#usr/lib/locale/mi_NZ/LC_CTYPE -#usr/lib/locale/mi_NZ/LC_IDENTIFICATION -#usr/lib/locale/mi_NZ/LC_MEASUREMENT -#usr/lib/locale/mi_NZ/LC_MESSAGES -#usr/lib/locale/mi_NZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mi_NZ/LC_MONETARY -#usr/lib/locale/mi_NZ/LC_NAME -#usr/lib/locale/mi_NZ/LC_NUMERIC -#usr/lib/locale/mi_NZ/LC_PAPER -#usr/lib/locale/mi_NZ/LC_TELEPHONE -#usr/lib/locale/mi_NZ/LC_TIME -#usr/lib/locale/mk_MK -#usr/lib/locale/mk_MK.utf8 -#usr/lib/locale/mk_MK.utf8/LC_ADDRESS -#usr/lib/locale/mk_MK.utf8/LC_COLLATE -#usr/lib/locale/mk_MK.utf8/LC_CTYPE -#usr/lib/locale/mk_MK.utf8/LC_IDENTIFICATION -#usr/lib/locale/mk_MK.utf8/LC_MEASUREMENT -#usr/lib/locale/mk_MK.utf8/LC_MESSAGES -#usr/lib/locale/mk_MK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mk_MK.utf8/LC_MONETARY -#usr/lib/locale/mk_MK.utf8/LC_NAME -#usr/lib/locale/mk_MK.utf8/LC_NUMERIC -#usr/lib/locale/mk_MK.utf8/LC_PAPER -#usr/lib/locale/mk_MK.utf8/LC_TELEPHONE -#usr/lib/locale/mk_MK.utf8/LC_TIME -#usr/lib/locale/mk_MK/LC_ADDRESS -#usr/lib/locale/mk_MK/LC_COLLATE -#usr/lib/locale/mk_MK/LC_CTYPE -#usr/lib/locale/mk_MK/LC_IDENTIFICATION -#usr/lib/locale/mk_MK/LC_MEASUREMENT -#usr/lib/locale/mk_MK/LC_MESSAGES -#usr/lib/locale/mk_MK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mk_MK/LC_MONETARY -#usr/lib/locale/mk_MK/LC_NAME -#usr/lib/locale/mk_MK/LC_NUMERIC -#usr/lib/locale/mk_MK/LC_PAPER -#usr/lib/locale/mk_MK/LC_TELEPHONE -#usr/lib/locale/mk_MK/LC_TIME -#usr/lib/locale/ml_IN -#usr/lib/locale/ml_IN/LC_ADDRESS -#usr/lib/locale/ml_IN/LC_COLLATE -#usr/lib/locale/ml_IN/LC_CTYPE -#usr/lib/locale/ml_IN/LC_IDENTIFICATION -#usr/lib/locale/ml_IN/LC_MEASUREMENT -#usr/lib/locale/ml_IN/LC_MESSAGES -#usr/lib/locale/ml_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ml_IN/LC_MONETARY -#usr/lib/locale/ml_IN/LC_NAME -#usr/lib/locale/ml_IN/LC_NUMERIC -#usr/lib/locale/ml_IN/LC_PAPER -#usr/lib/locale/ml_IN/LC_TELEPHONE -#usr/lib/locale/ml_IN/LC_TIME -#usr/lib/locale/mn_MN -#usr/lib/locale/mn_MN/LC_ADDRESS -#usr/lib/locale/mn_MN/LC_COLLATE -#usr/lib/locale/mn_MN/LC_CTYPE -#usr/lib/locale/mn_MN/LC_IDENTIFICATION -#usr/lib/locale/mn_MN/LC_MEASUREMENT -#usr/lib/locale/mn_MN/LC_MESSAGES -#usr/lib/locale/mn_MN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mn_MN/LC_MONETARY -#usr/lib/locale/mn_MN/LC_NAME -#usr/lib/locale/mn_MN/LC_NUMERIC -#usr/lib/locale/mn_MN/LC_PAPER -#usr/lib/locale/mn_MN/LC_TELEPHONE -#usr/lib/locale/mn_MN/LC_TIME -#usr/lib/locale/mr_IN -#usr/lib/locale/mr_IN/LC_ADDRESS -#usr/lib/locale/mr_IN/LC_COLLATE -#usr/lib/locale/mr_IN/LC_CTYPE -#usr/lib/locale/mr_IN/LC_IDENTIFICATION -#usr/lib/locale/mr_IN/LC_MEASUREMENT -#usr/lib/locale/mr_IN/LC_MESSAGES -#usr/lib/locale/mr_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mr_IN/LC_MONETARY -#usr/lib/locale/mr_IN/LC_NAME -#usr/lib/locale/mr_IN/LC_NUMERIC -#usr/lib/locale/mr_IN/LC_PAPER -#usr/lib/locale/mr_IN/LC_TELEPHONE -#usr/lib/locale/mr_IN/LC_TIME -#usr/lib/locale/ms_MY -#usr/lib/locale/ms_MY.utf8 -#usr/lib/locale/ms_MY.utf8/LC_ADDRESS -#usr/lib/locale/ms_MY.utf8/LC_COLLATE -#usr/lib/locale/ms_MY.utf8/LC_CTYPE -#usr/lib/locale/ms_MY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ms_MY.utf8/LC_MEASUREMENT -#usr/lib/locale/ms_MY.utf8/LC_MESSAGES -#usr/lib/locale/ms_MY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ms_MY.utf8/LC_MONETARY -#usr/lib/locale/ms_MY.utf8/LC_NAME -#usr/lib/locale/ms_MY.utf8/LC_NUMERIC -#usr/lib/locale/ms_MY.utf8/LC_PAPER -#usr/lib/locale/ms_MY.utf8/LC_TELEPHONE -#usr/lib/locale/ms_MY.utf8/LC_TIME -#usr/lib/locale/ms_MY/LC_ADDRESS -#usr/lib/locale/ms_MY/LC_COLLATE -#usr/lib/locale/ms_MY/LC_CTYPE -#usr/lib/locale/ms_MY/LC_IDENTIFICATION -#usr/lib/locale/ms_MY/LC_MEASUREMENT -#usr/lib/locale/ms_MY/LC_MESSAGES -#usr/lib/locale/ms_MY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ms_MY/LC_MONETARY -#usr/lib/locale/ms_MY/LC_NAME -#usr/lib/locale/ms_MY/LC_NUMERIC -#usr/lib/locale/ms_MY/LC_PAPER -#usr/lib/locale/ms_MY/LC_TELEPHONE -#usr/lib/locale/ms_MY/LC_TIME -#usr/lib/locale/mt_MT -#usr/lib/locale/mt_MT.utf8 -#usr/lib/locale/mt_MT.utf8/LC_ADDRESS -#usr/lib/locale/mt_MT.utf8/LC_COLLATE -#usr/lib/locale/mt_MT.utf8/LC_CTYPE -#usr/lib/locale/mt_MT.utf8/LC_IDENTIFICATION -#usr/lib/locale/mt_MT.utf8/LC_MEASUREMENT -#usr/lib/locale/mt_MT.utf8/LC_MESSAGES -#usr/lib/locale/mt_MT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mt_MT.utf8/LC_MONETARY -#usr/lib/locale/mt_MT.utf8/LC_NAME -#usr/lib/locale/mt_MT.utf8/LC_NUMERIC -#usr/lib/locale/mt_MT.utf8/LC_PAPER -#usr/lib/locale/mt_MT.utf8/LC_TELEPHONE -#usr/lib/locale/mt_MT.utf8/LC_TIME -#usr/lib/locale/mt_MT/LC_ADDRESS -#usr/lib/locale/mt_MT/LC_COLLATE -#usr/lib/locale/mt_MT/LC_CTYPE -#usr/lib/locale/mt_MT/LC_IDENTIFICATION -#usr/lib/locale/mt_MT/LC_MEASUREMENT -#usr/lib/locale/mt_MT/LC_MESSAGES -#usr/lib/locale/mt_MT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mt_MT/LC_MONETARY -#usr/lib/locale/mt_MT/LC_NAME -#usr/lib/locale/mt_MT/LC_NUMERIC -#usr/lib/locale/mt_MT/LC_PAPER -#usr/lib/locale/mt_MT/LC_TELEPHONE -#usr/lib/locale/mt_MT/LC_TIME -#usr/lib/locale/my_MM -#usr/lib/locale/my_MM/LC_ADDRESS -#usr/lib/locale/my_MM/LC_COLLATE -#usr/lib/locale/my_MM/LC_CTYPE -#usr/lib/locale/my_MM/LC_IDENTIFICATION -#usr/lib/locale/my_MM/LC_MEASUREMENT -#usr/lib/locale/my_MM/LC_MESSAGES -#usr/lib/locale/my_MM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/my_MM/LC_MONETARY -#usr/lib/locale/my_MM/LC_NAME -#usr/lib/locale/my_MM/LC_NUMERIC -#usr/lib/locale/my_MM/LC_PAPER -#usr/lib/locale/my_MM/LC_TELEPHONE -#usr/lib/locale/my_MM/LC_TIME -#usr/lib/locale/nan_TW@latin -#usr/lib/locale/nan_TW@latin/LC_ADDRESS -#usr/lib/locale/nan_TW@latin/LC_COLLATE -#usr/lib/locale/nan_TW@latin/LC_CTYPE -#usr/lib/locale/nan_TW@latin/LC_IDENTIFICATION -#usr/lib/locale/nan_TW@latin/LC_MEASUREMENT -#usr/lib/locale/nan_TW@latin/LC_MESSAGES -#usr/lib/locale/nan_TW@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nan_TW@latin/LC_MONETARY -#usr/lib/locale/nan_TW@latin/LC_NAME -#usr/lib/locale/nan_TW@latin/LC_NUMERIC -#usr/lib/locale/nan_TW@latin/LC_PAPER -#usr/lib/locale/nan_TW@latin/LC_TELEPHONE -#usr/lib/locale/nan_TW@latin/LC_TIME -#usr/lib/locale/nb_NO -#usr/lib/locale/nb_NO.utf8 -#usr/lib/locale/nb_NO.utf8/LC_ADDRESS -#usr/lib/locale/nb_NO.utf8/LC_COLLATE -#usr/lib/locale/nb_NO.utf8/LC_CTYPE -#usr/lib/locale/nb_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/nb_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/nb_NO.utf8/LC_MESSAGES -#usr/lib/locale/nb_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nb_NO.utf8/LC_MONETARY -#usr/lib/locale/nb_NO.utf8/LC_NAME -#usr/lib/locale/nb_NO.utf8/LC_NUMERIC -#usr/lib/locale/nb_NO.utf8/LC_PAPER -#usr/lib/locale/nb_NO.utf8/LC_TELEPHONE -#usr/lib/locale/nb_NO.utf8/LC_TIME -#usr/lib/locale/nb_NO/LC_ADDRESS -#usr/lib/locale/nb_NO/LC_COLLATE -#usr/lib/locale/nb_NO/LC_CTYPE -#usr/lib/locale/nb_NO/LC_IDENTIFICATION -#usr/lib/locale/nb_NO/LC_MEASUREMENT -#usr/lib/locale/nb_NO/LC_MESSAGES -#usr/lib/locale/nb_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nb_NO/LC_MONETARY -#usr/lib/locale/nb_NO/LC_NAME -#usr/lib/locale/nb_NO/LC_NUMERIC -#usr/lib/locale/nb_NO/LC_PAPER -#usr/lib/locale/nb_NO/LC_TELEPHONE -#usr/lib/locale/nb_NO/LC_TIME -#usr/lib/locale/nds_DE -#usr/lib/locale/nds_DE/LC_ADDRESS -#usr/lib/locale/nds_DE/LC_COLLATE -#usr/lib/locale/nds_DE/LC_CTYPE -#usr/lib/locale/nds_DE/LC_IDENTIFICATION -#usr/lib/locale/nds_DE/LC_MEASUREMENT -#usr/lib/locale/nds_DE/LC_MESSAGES -#usr/lib/locale/nds_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nds_DE/LC_MONETARY -#usr/lib/locale/nds_DE/LC_NAME -#usr/lib/locale/nds_DE/LC_NUMERIC -#usr/lib/locale/nds_DE/LC_PAPER -#usr/lib/locale/nds_DE/LC_TELEPHONE -#usr/lib/locale/nds_DE/LC_TIME -#usr/lib/locale/nds_NL -#usr/lib/locale/nds_NL/LC_ADDRESS -#usr/lib/locale/nds_NL/LC_COLLATE -#usr/lib/locale/nds_NL/LC_CTYPE -#usr/lib/locale/nds_NL/LC_IDENTIFICATION -#usr/lib/locale/nds_NL/LC_MEASUREMENT -#usr/lib/locale/nds_NL/LC_MESSAGES -#usr/lib/locale/nds_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nds_NL/LC_MONETARY -#usr/lib/locale/nds_NL/LC_NAME -#usr/lib/locale/nds_NL/LC_NUMERIC -#usr/lib/locale/nds_NL/LC_PAPER -#usr/lib/locale/nds_NL/LC_TELEPHONE -#usr/lib/locale/nds_NL/LC_TIME -#usr/lib/locale/ne_NP -#usr/lib/locale/ne_NP/LC_ADDRESS -#usr/lib/locale/ne_NP/LC_COLLATE -#usr/lib/locale/ne_NP/LC_CTYPE -#usr/lib/locale/ne_NP/LC_IDENTIFICATION -#usr/lib/locale/ne_NP/LC_MEASUREMENT -#usr/lib/locale/ne_NP/LC_MESSAGES -#usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ne_NP/LC_MONETARY -#usr/lib/locale/ne_NP/LC_NAME -#usr/lib/locale/ne_NP/LC_NUMERIC -#usr/lib/locale/ne_NP/LC_PAPER -#usr/lib/locale/ne_NP/LC_TELEPHONE -#usr/lib/locale/ne_NP/LC_TIME -#usr/lib/locale/nl_AW -#usr/lib/locale/nl_AW/LC_ADDRESS -#usr/lib/locale/nl_AW/LC_COLLATE -#usr/lib/locale/nl_AW/LC_CTYPE -#usr/lib/locale/nl_AW/LC_IDENTIFICATION -#usr/lib/locale/nl_AW/LC_MEASUREMENT -#usr/lib/locale/nl_AW/LC_MESSAGES -#usr/lib/locale/nl_AW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_AW/LC_MONETARY -#usr/lib/locale/nl_AW/LC_NAME -#usr/lib/locale/nl_AW/LC_NUMERIC -#usr/lib/locale/nl_AW/LC_PAPER -#usr/lib/locale/nl_AW/LC_TELEPHONE -#usr/lib/locale/nl_AW/LC_TIME -#usr/lib/locale/nl_BE -#usr/lib/locale/nl_BE.utf8 -#usr/lib/locale/nl_BE.utf8/LC_ADDRESS -#usr/lib/locale/nl_BE.utf8/LC_COLLATE -#usr/lib/locale/nl_BE.utf8/LC_CTYPE -#usr/lib/locale/nl_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/nl_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/nl_BE.utf8/LC_MESSAGES -#usr/lib/locale/nl_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE.utf8/LC_MONETARY -#usr/lib/locale/nl_BE.utf8/LC_NAME -#usr/lib/locale/nl_BE.utf8/LC_NUMERIC -#usr/lib/locale/nl_BE.utf8/LC_PAPER -#usr/lib/locale/nl_BE.utf8/LC_TELEPHONE -#usr/lib/locale/nl_BE.utf8/LC_TIME -#usr/lib/locale/nl_BE/LC_ADDRESS -#usr/lib/locale/nl_BE/LC_COLLATE -#usr/lib/locale/nl_BE/LC_CTYPE -#usr/lib/locale/nl_BE/LC_IDENTIFICATION -#usr/lib/locale/nl_BE/LC_MEASUREMENT -#usr/lib/locale/nl_BE/LC_MESSAGES -#usr/lib/locale/nl_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE/LC_MONETARY -#usr/lib/locale/nl_BE/LC_NAME -#usr/lib/locale/nl_BE/LC_NUMERIC -#usr/lib/locale/nl_BE/LC_PAPER -#usr/lib/locale/nl_BE/LC_TELEPHONE -#usr/lib/locale/nl_BE/LC_TIME -#usr/lib/locale/nl_BE@euro -#usr/lib/locale/nl_BE@euro/LC_ADDRESS -#usr/lib/locale/nl_BE@euro/LC_COLLATE -#usr/lib/locale/nl_BE@euro/LC_CTYPE -#usr/lib/locale/nl_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/nl_BE@euro/LC_MEASUREMENT -#usr/lib/locale/nl_BE@euro/LC_MESSAGES -#usr/lib/locale/nl_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE@euro/LC_MONETARY -#usr/lib/locale/nl_BE@euro/LC_NAME -#usr/lib/locale/nl_BE@euro/LC_NUMERIC -#usr/lib/locale/nl_BE@euro/LC_PAPER -#usr/lib/locale/nl_BE@euro/LC_TELEPHONE -#usr/lib/locale/nl_BE@euro/LC_TIME -#usr/lib/locale/nl_NL -#usr/lib/locale/nl_NL.utf8 -#usr/lib/locale/nl_NL.utf8/LC_ADDRESS -#usr/lib/locale/nl_NL.utf8/LC_COLLATE -#usr/lib/locale/nl_NL.utf8/LC_CTYPE -#usr/lib/locale/nl_NL.utf8/LC_IDENTIFICATION -#usr/lib/locale/nl_NL.utf8/LC_MEASUREMENT -#usr/lib/locale/nl_NL.utf8/LC_MESSAGES -#usr/lib/locale/nl_NL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL.utf8/LC_MONETARY -#usr/lib/locale/nl_NL.utf8/LC_NAME -#usr/lib/locale/nl_NL.utf8/LC_NUMERIC -#usr/lib/locale/nl_NL.utf8/LC_PAPER -#usr/lib/locale/nl_NL.utf8/LC_TELEPHONE -#usr/lib/locale/nl_NL.utf8/LC_TIME -#usr/lib/locale/nl_NL/LC_ADDRESS -#usr/lib/locale/nl_NL/LC_COLLATE -#usr/lib/locale/nl_NL/LC_CTYPE -#usr/lib/locale/nl_NL/LC_IDENTIFICATION -#usr/lib/locale/nl_NL/LC_MEASUREMENT -#usr/lib/locale/nl_NL/LC_MESSAGES -#usr/lib/locale/nl_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL/LC_MONETARY -#usr/lib/locale/nl_NL/LC_NAME -#usr/lib/locale/nl_NL/LC_NUMERIC -#usr/lib/locale/nl_NL/LC_PAPER -#usr/lib/locale/nl_NL/LC_TELEPHONE -#usr/lib/locale/nl_NL/LC_TIME -#usr/lib/locale/nl_NL@euro -#usr/lib/locale/nl_NL@euro/LC_ADDRESS -#usr/lib/locale/nl_NL@euro/LC_COLLATE -#usr/lib/locale/nl_NL@euro/LC_CTYPE -#usr/lib/locale/nl_NL@euro/LC_IDENTIFICATION -#usr/lib/locale/nl_NL@euro/LC_MEASUREMENT -#usr/lib/locale/nl_NL@euro/LC_MESSAGES -#usr/lib/locale/nl_NL@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL@euro/LC_MONETARY -#usr/lib/locale/nl_NL@euro/LC_NAME -#usr/lib/locale/nl_NL@euro/LC_NUMERIC -#usr/lib/locale/nl_NL@euro/LC_PAPER -#usr/lib/locale/nl_NL@euro/LC_TELEPHONE -#usr/lib/locale/nl_NL@euro/LC_TIME -#usr/lib/locale/nn_NO -#usr/lib/locale/nn_NO.utf8 -#usr/lib/locale/nn_NO.utf8/LC_ADDRESS -#usr/lib/locale/nn_NO.utf8/LC_COLLATE -#usr/lib/locale/nn_NO.utf8/LC_CTYPE -#usr/lib/locale/nn_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/nn_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/nn_NO.utf8/LC_MESSAGES -#usr/lib/locale/nn_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nn_NO.utf8/LC_MONETARY -#usr/lib/locale/nn_NO.utf8/LC_NAME -#usr/lib/locale/nn_NO.utf8/LC_NUMERIC -#usr/lib/locale/nn_NO.utf8/LC_PAPER -#usr/lib/locale/nn_NO.utf8/LC_TELEPHONE -#usr/lib/locale/nn_NO.utf8/LC_TIME -#usr/lib/locale/nn_NO/LC_ADDRESS -#usr/lib/locale/nn_NO/LC_COLLATE -#usr/lib/locale/nn_NO/LC_CTYPE -#usr/lib/locale/nn_NO/LC_IDENTIFICATION -#usr/lib/locale/nn_NO/LC_MEASUREMENT -#usr/lib/locale/nn_NO/LC_MESSAGES -#usr/lib/locale/nn_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nn_NO/LC_MONETARY -#usr/lib/locale/nn_NO/LC_NAME -#usr/lib/locale/nn_NO/LC_NUMERIC -#usr/lib/locale/nn_NO/LC_PAPER -#usr/lib/locale/nn_NO/LC_TELEPHONE -#usr/lib/locale/nn_NO/LC_TIME -#usr/lib/locale/no_NO -#usr/lib/locale/no_NO.utf8 -#usr/lib/locale/no_NO.utf8/LC_ADDRESS -#usr/lib/locale/no_NO.utf8/LC_COLLATE -#usr/lib/locale/no_NO.utf8/LC_CTYPE -#usr/lib/locale/no_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/no_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/no_NO.utf8/LC_MESSAGES -#usr/lib/locale/no_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/no_NO.utf8/LC_MONETARY -#usr/lib/locale/no_NO.utf8/LC_NAME -#usr/lib/locale/no_NO.utf8/LC_NUMERIC -#usr/lib/locale/no_NO.utf8/LC_PAPER -#usr/lib/locale/no_NO.utf8/LC_TELEPHONE -#usr/lib/locale/no_NO.utf8/LC_TIME -#usr/lib/locale/no_NO/LC_ADDRESS -#usr/lib/locale/no_NO/LC_COLLATE -#usr/lib/locale/no_NO/LC_CTYPE -#usr/lib/locale/no_NO/LC_IDENTIFICATION -#usr/lib/locale/no_NO/LC_MEASUREMENT -#usr/lib/locale/no_NO/LC_MESSAGES -#usr/lib/locale/no_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/no_NO/LC_MONETARY -#usr/lib/locale/no_NO/LC_NAME -#usr/lib/locale/no_NO/LC_NUMERIC -#usr/lib/locale/no_NO/LC_PAPER -#usr/lib/locale/no_NO/LC_TELEPHONE -#usr/lib/locale/no_NO/LC_TIME -#usr/lib/locale/nr_ZA -#usr/lib/locale/nr_ZA/LC_ADDRESS -#usr/lib/locale/nr_ZA/LC_COLLATE -#usr/lib/locale/nr_ZA/LC_CTYPE -#usr/lib/locale/nr_ZA/LC_IDENTIFICATION -#usr/lib/locale/nr_ZA/LC_MEASUREMENT -#usr/lib/locale/nr_ZA/LC_MESSAGES -#usr/lib/locale/nr_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nr_ZA/LC_MONETARY -#usr/lib/locale/nr_ZA/LC_NAME -#usr/lib/locale/nr_ZA/LC_NUMERIC -#usr/lib/locale/nr_ZA/LC_PAPER -#usr/lib/locale/nr_ZA/LC_TELEPHONE -#usr/lib/locale/nr_ZA/LC_TIME -#usr/lib/locale/nso_ZA -#usr/lib/locale/nso_ZA/LC_ADDRESS -#usr/lib/locale/nso_ZA/LC_COLLATE -#usr/lib/locale/nso_ZA/LC_CTYPE -#usr/lib/locale/nso_ZA/LC_IDENTIFICATION -#usr/lib/locale/nso_ZA/LC_MEASUREMENT -#usr/lib/locale/nso_ZA/LC_MESSAGES -#usr/lib/locale/nso_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nso_ZA/LC_MONETARY -#usr/lib/locale/nso_ZA/LC_NAME -#usr/lib/locale/nso_ZA/LC_NUMERIC -#usr/lib/locale/nso_ZA/LC_PAPER -#usr/lib/locale/nso_ZA/LC_TELEPHONE -#usr/lib/locale/nso_ZA/LC_TIME -#usr/lib/locale/oc_FR -#usr/lib/locale/oc_FR.utf8 -#usr/lib/locale/oc_FR.utf8/LC_ADDRESS -#usr/lib/locale/oc_FR.utf8/LC_COLLATE -#usr/lib/locale/oc_FR.utf8/LC_CTYPE -#usr/lib/locale/oc_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/oc_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/oc_FR.utf8/LC_MESSAGES -#usr/lib/locale/oc_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/oc_FR.utf8/LC_MONETARY -#usr/lib/locale/oc_FR.utf8/LC_NAME -#usr/lib/locale/oc_FR.utf8/LC_NUMERIC -#usr/lib/locale/oc_FR.utf8/LC_PAPER -#usr/lib/locale/oc_FR.utf8/LC_TELEPHONE -#usr/lib/locale/oc_FR.utf8/LC_TIME -#usr/lib/locale/oc_FR/LC_ADDRESS -#usr/lib/locale/oc_FR/LC_COLLATE -#usr/lib/locale/oc_FR/LC_CTYPE -#usr/lib/locale/oc_FR/LC_IDENTIFICATION -#usr/lib/locale/oc_FR/LC_MEASUREMENT -#usr/lib/locale/oc_FR/LC_MESSAGES -#usr/lib/locale/oc_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/oc_FR/LC_MONETARY -#usr/lib/locale/oc_FR/LC_NAME -#usr/lib/locale/oc_FR/LC_NUMERIC -#usr/lib/locale/oc_FR/LC_PAPER -#usr/lib/locale/oc_FR/LC_TELEPHONE -#usr/lib/locale/oc_FR/LC_TIME -#usr/lib/locale/om_ET -#usr/lib/locale/om_ET/LC_ADDRESS -#usr/lib/locale/om_ET/LC_COLLATE -#usr/lib/locale/om_ET/LC_CTYPE -#usr/lib/locale/om_ET/LC_IDENTIFICATION -#usr/lib/locale/om_ET/LC_MEASUREMENT -#usr/lib/locale/om_ET/LC_MESSAGES -#usr/lib/locale/om_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_ET/LC_MONETARY -#usr/lib/locale/om_ET/LC_NAME -#usr/lib/locale/om_ET/LC_NUMERIC -#usr/lib/locale/om_ET/LC_PAPER -#usr/lib/locale/om_ET/LC_TELEPHONE -#usr/lib/locale/om_ET/LC_TIME -#usr/lib/locale/om_KE -#usr/lib/locale/om_KE.utf8 -#usr/lib/locale/om_KE.utf8/LC_ADDRESS -#usr/lib/locale/om_KE.utf8/LC_COLLATE -#usr/lib/locale/om_KE.utf8/LC_CTYPE -#usr/lib/locale/om_KE.utf8/LC_IDENTIFICATION -#usr/lib/locale/om_KE.utf8/LC_MEASUREMENT -#usr/lib/locale/om_KE.utf8/LC_MESSAGES -#usr/lib/locale/om_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_KE.utf8/LC_MONETARY -#usr/lib/locale/om_KE.utf8/LC_NAME -#usr/lib/locale/om_KE.utf8/LC_NUMERIC -#usr/lib/locale/om_KE.utf8/LC_PAPER -#usr/lib/locale/om_KE.utf8/LC_TELEPHONE -#usr/lib/locale/om_KE.utf8/LC_TIME -#usr/lib/locale/om_KE/LC_ADDRESS -#usr/lib/locale/om_KE/LC_COLLATE -#usr/lib/locale/om_KE/LC_CTYPE -#usr/lib/locale/om_KE/LC_IDENTIFICATION -#usr/lib/locale/om_KE/LC_MEASUREMENT -#usr/lib/locale/om_KE/LC_MESSAGES -#usr/lib/locale/om_KE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_KE/LC_MONETARY -#usr/lib/locale/om_KE/LC_NAME -#usr/lib/locale/om_KE/LC_NUMERIC -#usr/lib/locale/om_KE/LC_PAPER -#usr/lib/locale/om_KE/LC_TELEPHONE -#usr/lib/locale/om_KE/LC_TIME -#usr/lib/locale/or_IN -#usr/lib/locale/or_IN/LC_ADDRESS -#usr/lib/locale/or_IN/LC_COLLATE -#usr/lib/locale/or_IN/LC_CTYPE -#usr/lib/locale/or_IN/LC_IDENTIFICATION -#usr/lib/locale/or_IN/LC_MEASUREMENT -#usr/lib/locale/or_IN/LC_MESSAGES -#usr/lib/locale/or_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/or_IN/LC_MONETARY -#usr/lib/locale/or_IN/LC_NAME -#usr/lib/locale/or_IN/LC_NUMERIC -#usr/lib/locale/or_IN/LC_PAPER -#usr/lib/locale/or_IN/LC_TELEPHONE -#usr/lib/locale/or_IN/LC_TIME -#usr/lib/locale/pa_IN -#usr/lib/locale/pa_IN/LC_ADDRESS -#usr/lib/locale/pa_IN/LC_COLLATE -#usr/lib/locale/pa_IN/LC_CTYPE -#usr/lib/locale/pa_IN/LC_IDENTIFICATION -#usr/lib/locale/pa_IN/LC_MEASUREMENT -#usr/lib/locale/pa_IN/LC_MESSAGES -#usr/lib/locale/pa_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pa_IN/LC_MONETARY -#usr/lib/locale/pa_IN/LC_NAME -#usr/lib/locale/pa_IN/LC_NUMERIC -#usr/lib/locale/pa_IN/LC_PAPER -#usr/lib/locale/pa_IN/LC_TELEPHONE -#usr/lib/locale/pa_IN/LC_TIME -#usr/lib/locale/pa_PK -#usr/lib/locale/pa_PK/LC_ADDRESS -#usr/lib/locale/pa_PK/LC_COLLATE -#usr/lib/locale/pa_PK/LC_CTYPE -#usr/lib/locale/pa_PK/LC_IDENTIFICATION -#usr/lib/locale/pa_PK/LC_MEASUREMENT -#usr/lib/locale/pa_PK/LC_MESSAGES -#usr/lib/locale/pa_PK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pa_PK/LC_MONETARY -#usr/lib/locale/pa_PK/LC_NAME -#usr/lib/locale/pa_PK/LC_NUMERIC -#usr/lib/locale/pa_PK/LC_PAPER -#usr/lib/locale/pa_PK/LC_TELEPHONE -#usr/lib/locale/pa_PK/LC_TIME -#usr/lib/locale/pap_AN -#usr/lib/locale/pap_AN/LC_ADDRESS -#usr/lib/locale/pap_AN/LC_COLLATE -#usr/lib/locale/pap_AN/LC_CTYPE -#usr/lib/locale/pap_AN/LC_IDENTIFICATION -#usr/lib/locale/pap_AN/LC_MEASUREMENT -#usr/lib/locale/pap_AN/LC_MESSAGES -#usr/lib/locale/pap_AN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pap_AN/LC_MONETARY -#usr/lib/locale/pap_AN/LC_NAME -#usr/lib/locale/pap_AN/LC_NUMERIC -#usr/lib/locale/pap_AN/LC_PAPER -#usr/lib/locale/pap_AN/LC_TELEPHONE -#usr/lib/locale/pap_AN/LC_TIME -#usr/lib/locale/pl_PL -#usr/lib/locale/pl_PL.utf8 -#usr/lib/locale/pl_PL.utf8/LC_ADDRESS -#usr/lib/locale/pl_PL.utf8/LC_COLLATE -#usr/lib/locale/pl_PL.utf8/LC_CTYPE -#usr/lib/locale/pl_PL.utf8/LC_IDENTIFICATION -#usr/lib/locale/pl_PL.utf8/LC_MEASUREMENT -#usr/lib/locale/pl_PL.utf8/LC_MESSAGES -#usr/lib/locale/pl_PL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pl_PL.utf8/LC_MONETARY -#usr/lib/locale/pl_PL.utf8/LC_NAME -#usr/lib/locale/pl_PL.utf8/LC_NUMERIC -#usr/lib/locale/pl_PL.utf8/LC_PAPER -#usr/lib/locale/pl_PL.utf8/LC_TELEPHONE -#usr/lib/locale/pl_PL.utf8/LC_TIME -#usr/lib/locale/pl_PL/LC_ADDRESS -#usr/lib/locale/pl_PL/LC_COLLATE -#usr/lib/locale/pl_PL/LC_CTYPE -#usr/lib/locale/pl_PL/LC_IDENTIFICATION -#usr/lib/locale/pl_PL/LC_MEASUREMENT -#usr/lib/locale/pl_PL/LC_MESSAGES -#usr/lib/locale/pl_PL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pl_PL/LC_MONETARY -#usr/lib/locale/pl_PL/LC_NAME -#usr/lib/locale/pl_PL/LC_NUMERIC -#usr/lib/locale/pl_PL/LC_PAPER -#usr/lib/locale/pl_PL/LC_TELEPHONE -#usr/lib/locale/pl_PL/LC_TIME -#usr/lib/locale/ps_AF -#usr/lib/locale/ps_AF/LC_ADDRESS -#usr/lib/locale/ps_AF/LC_COLLATE -#usr/lib/locale/ps_AF/LC_CTYPE -#usr/lib/locale/ps_AF/LC_IDENTIFICATION -#usr/lib/locale/ps_AF/LC_MEASUREMENT -#usr/lib/locale/ps_AF/LC_MESSAGES -#usr/lib/locale/ps_AF/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ps_AF/LC_MONETARY -#usr/lib/locale/ps_AF/LC_NAME -#usr/lib/locale/ps_AF/LC_NUMERIC -#usr/lib/locale/ps_AF/LC_PAPER -#usr/lib/locale/ps_AF/LC_TELEPHONE -#usr/lib/locale/ps_AF/LC_TIME -#usr/lib/locale/pt_BR -#usr/lib/locale/pt_BR.utf8 -#usr/lib/locale/pt_BR.utf8/LC_ADDRESS -#usr/lib/locale/pt_BR.utf8/LC_COLLATE -#usr/lib/locale/pt_BR.utf8/LC_CTYPE -#usr/lib/locale/pt_BR.utf8/LC_IDENTIFICATION -#usr/lib/locale/pt_BR.utf8/LC_MEASUREMENT -#usr/lib/locale/pt_BR.utf8/LC_MESSAGES -#usr/lib/locale/pt_BR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_BR.utf8/LC_MONETARY -#usr/lib/locale/pt_BR.utf8/LC_NAME -#usr/lib/locale/pt_BR.utf8/LC_NUMERIC -#usr/lib/locale/pt_BR.utf8/LC_PAPER -#usr/lib/locale/pt_BR.utf8/LC_TELEPHONE -#usr/lib/locale/pt_BR.utf8/LC_TIME -#usr/lib/locale/pt_BR/LC_ADDRESS -#usr/lib/locale/pt_BR/LC_COLLATE -#usr/lib/locale/pt_BR/LC_CTYPE -#usr/lib/locale/pt_BR/LC_IDENTIFICATION -#usr/lib/locale/pt_BR/LC_MEASUREMENT -#usr/lib/locale/pt_BR/LC_MESSAGES -#usr/lib/locale/pt_BR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_BR/LC_MONETARY -#usr/lib/locale/pt_BR/LC_NAME -#usr/lib/locale/pt_BR/LC_NUMERIC -#usr/lib/locale/pt_BR/LC_PAPER -#usr/lib/locale/pt_BR/LC_TELEPHONE -#usr/lib/locale/pt_BR/LC_TIME -#usr/lib/locale/pt_PT -#usr/lib/locale/pt_PT.utf8 -#usr/lib/locale/pt_PT.utf8/LC_ADDRESS -#usr/lib/locale/pt_PT.utf8/LC_COLLATE -#usr/lib/locale/pt_PT.utf8/LC_CTYPE -#usr/lib/locale/pt_PT.utf8/LC_IDENTIFICATION -#usr/lib/locale/pt_PT.utf8/LC_MEASUREMENT -#usr/lib/locale/pt_PT.utf8/LC_MESSAGES -#usr/lib/locale/pt_PT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT.utf8/LC_MONETARY -#usr/lib/locale/pt_PT.utf8/LC_NAME -#usr/lib/locale/pt_PT.utf8/LC_NUMERIC -#usr/lib/locale/pt_PT.utf8/LC_PAPER -#usr/lib/locale/pt_PT.utf8/LC_TELEPHONE -#usr/lib/locale/pt_PT.utf8/LC_TIME -#usr/lib/locale/pt_PT/LC_ADDRESS -#usr/lib/locale/pt_PT/LC_COLLATE -#usr/lib/locale/pt_PT/LC_CTYPE -#usr/lib/locale/pt_PT/LC_IDENTIFICATION -#usr/lib/locale/pt_PT/LC_MEASUREMENT -#usr/lib/locale/pt_PT/LC_MESSAGES -#usr/lib/locale/pt_PT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT/LC_MONETARY -#usr/lib/locale/pt_PT/LC_NAME -#usr/lib/locale/pt_PT/LC_NUMERIC -#usr/lib/locale/pt_PT/LC_PAPER -#usr/lib/locale/pt_PT/LC_TELEPHONE -#usr/lib/locale/pt_PT/LC_TIME -#usr/lib/locale/pt_PT@euro -#usr/lib/locale/pt_PT@euro/LC_ADDRESS -#usr/lib/locale/pt_PT@euro/LC_COLLATE -#usr/lib/locale/pt_PT@euro/LC_CTYPE -#usr/lib/locale/pt_PT@euro/LC_IDENTIFICATION -#usr/lib/locale/pt_PT@euro/LC_MEASUREMENT -#usr/lib/locale/pt_PT@euro/LC_MESSAGES -#usr/lib/locale/pt_PT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT@euro/LC_MONETARY -#usr/lib/locale/pt_PT@euro/LC_NAME -#usr/lib/locale/pt_PT@euro/LC_NUMERIC -#usr/lib/locale/pt_PT@euro/LC_PAPER -#usr/lib/locale/pt_PT@euro/LC_TELEPHONE -#usr/lib/locale/pt_PT@euro/LC_TIME -#usr/lib/locale/ro_RO -#usr/lib/locale/ro_RO.utf8 -#usr/lib/locale/ro_RO.utf8/LC_ADDRESS -#usr/lib/locale/ro_RO.utf8/LC_COLLATE -#usr/lib/locale/ro_RO.utf8/LC_CTYPE -#usr/lib/locale/ro_RO.utf8/LC_IDENTIFICATION -#usr/lib/locale/ro_RO.utf8/LC_MEASUREMENT -#usr/lib/locale/ro_RO.utf8/LC_MESSAGES -#usr/lib/locale/ro_RO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ro_RO.utf8/LC_MONETARY -#usr/lib/locale/ro_RO.utf8/LC_NAME -#usr/lib/locale/ro_RO.utf8/LC_NUMERIC -#usr/lib/locale/ro_RO.utf8/LC_PAPER -#usr/lib/locale/ro_RO.utf8/LC_TELEPHONE -#usr/lib/locale/ro_RO.utf8/LC_TIME -#usr/lib/locale/ro_RO/LC_ADDRESS -#usr/lib/locale/ro_RO/LC_COLLATE -#usr/lib/locale/ro_RO/LC_CTYPE -#usr/lib/locale/ro_RO/LC_IDENTIFICATION -#usr/lib/locale/ro_RO/LC_MEASUREMENT -#usr/lib/locale/ro_RO/LC_MESSAGES -#usr/lib/locale/ro_RO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ro_RO/LC_MONETARY -#usr/lib/locale/ro_RO/LC_NAME -#usr/lib/locale/ro_RO/LC_NUMERIC -#usr/lib/locale/ro_RO/LC_PAPER -#usr/lib/locale/ro_RO/LC_TELEPHONE -#usr/lib/locale/ro_RO/LC_TIME -#usr/lib/locale/ru_RU -#usr/lib/locale/ru_RU.koi8r -#usr/lib/locale/ru_RU.koi8r/LC_ADDRESS -#usr/lib/locale/ru_RU.koi8r/LC_COLLATE -#usr/lib/locale/ru_RU.koi8r/LC_CTYPE -#usr/lib/locale/ru_RU.koi8r/LC_IDENTIFICATION -#usr/lib/locale/ru_RU.koi8r/LC_MEASUREMENT -#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES -#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU.koi8r/LC_MONETARY -#usr/lib/locale/ru_RU.koi8r/LC_NAME -#usr/lib/locale/ru_RU.koi8r/LC_NUMERIC -#usr/lib/locale/ru_RU.koi8r/LC_PAPER -#usr/lib/locale/ru_RU.koi8r/LC_TELEPHONE -#usr/lib/locale/ru_RU.koi8r/LC_TIME -#usr/lib/locale/ru_RU.utf8 -#usr/lib/locale/ru_RU.utf8/LC_ADDRESS -#usr/lib/locale/ru_RU.utf8/LC_COLLATE -#usr/lib/locale/ru_RU.utf8/LC_CTYPE -#usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION -#usr/lib/locale/ru_RU.utf8/LC_MEASUREMENT -#usr/lib/locale/ru_RU.utf8/LC_MESSAGES -#usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU.utf8/LC_MONETARY -#usr/lib/locale/ru_RU.utf8/LC_NAME -#usr/lib/locale/ru_RU.utf8/LC_NUMERIC -#usr/lib/locale/ru_RU.utf8/LC_PAPER -#usr/lib/locale/ru_RU.utf8/LC_TELEPHONE -#usr/lib/locale/ru_RU.utf8/LC_TIME -#usr/lib/locale/ru_RU/LC_ADDRESS -#usr/lib/locale/ru_RU/LC_COLLATE -#usr/lib/locale/ru_RU/LC_CTYPE -#usr/lib/locale/ru_RU/LC_IDENTIFICATION -#usr/lib/locale/ru_RU/LC_MEASUREMENT -#usr/lib/locale/ru_RU/LC_MESSAGES -#usr/lib/locale/ru_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU/LC_MONETARY -#usr/lib/locale/ru_RU/LC_NAME -#usr/lib/locale/ru_RU/LC_NUMERIC -#usr/lib/locale/ru_RU/LC_PAPER -#usr/lib/locale/ru_RU/LC_TELEPHONE -#usr/lib/locale/ru_RU/LC_TIME -#usr/lib/locale/ru_UA -#usr/lib/locale/ru_UA.utf8 -#usr/lib/locale/ru_UA.utf8/LC_ADDRESS -#usr/lib/locale/ru_UA.utf8/LC_COLLATE -#usr/lib/locale/ru_UA.utf8/LC_CTYPE -#usr/lib/locale/ru_UA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ru_UA.utf8/LC_MEASUREMENT -#usr/lib/locale/ru_UA.utf8/LC_MESSAGES -#usr/lib/locale/ru_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_UA.utf8/LC_MONETARY -#usr/lib/locale/ru_UA.utf8/LC_NAME -#usr/lib/locale/ru_UA.utf8/LC_NUMERIC -#usr/lib/locale/ru_UA.utf8/LC_PAPER -#usr/lib/locale/ru_UA.utf8/LC_TELEPHONE -#usr/lib/locale/ru_UA.utf8/LC_TIME -#usr/lib/locale/ru_UA/LC_ADDRESS -#usr/lib/locale/ru_UA/LC_COLLATE -#usr/lib/locale/ru_UA/LC_CTYPE -#usr/lib/locale/ru_UA/LC_IDENTIFICATION -#usr/lib/locale/ru_UA/LC_MEASUREMENT -#usr/lib/locale/ru_UA/LC_MESSAGES -#usr/lib/locale/ru_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_UA/LC_MONETARY -#usr/lib/locale/ru_UA/LC_NAME -#usr/lib/locale/ru_UA/LC_NUMERIC -#usr/lib/locale/ru_UA/LC_PAPER -#usr/lib/locale/ru_UA/LC_TELEPHONE -#usr/lib/locale/ru_UA/LC_TIME -#usr/lib/locale/rw_RW -#usr/lib/locale/rw_RW/LC_ADDRESS -#usr/lib/locale/rw_RW/LC_COLLATE -#usr/lib/locale/rw_RW/LC_CTYPE -#usr/lib/locale/rw_RW/LC_IDENTIFICATION -#usr/lib/locale/rw_RW/LC_MEASUREMENT -#usr/lib/locale/rw_RW/LC_MESSAGES -#usr/lib/locale/rw_RW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/rw_RW/LC_MONETARY -#usr/lib/locale/rw_RW/LC_NAME -#usr/lib/locale/rw_RW/LC_NUMERIC -#usr/lib/locale/rw_RW/LC_PAPER -#usr/lib/locale/rw_RW/LC_TELEPHONE -#usr/lib/locale/rw_RW/LC_TIME -#usr/lib/locale/sa_IN -#usr/lib/locale/sa_IN/LC_ADDRESS -#usr/lib/locale/sa_IN/LC_COLLATE -#usr/lib/locale/sa_IN/LC_CTYPE -#usr/lib/locale/sa_IN/LC_IDENTIFICATION -#usr/lib/locale/sa_IN/LC_MEASUREMENT -#usr/lib/locale/sa_IN/LC_MESSAGES -#usr/lib/locale/sa_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sa_IN/LC_MONETARY -#usr/lib/locale/sa_IN/LC_NAME -#usr/lib/locale/sa_IN/LC_NUMERIC -#usr/lib/locale/sa_IN/LC_PAPER -#usr/lib/locale/sa_IN/LC_TELEPHONE -#usr/lib/locale/sa_IN/LC_TIME -#usr/lib/locale/sc_IT -#usr/lib/locale/sc_IT/LC_ADDRESS -#usr/lib/locale/sc_IT/LC_COLLATE -#usr/lib/locale/sc_IT/LC_CTYPE -#usr/lib/locale/sc_IT/LC_IDENTIFICATION -#usr/lib/locale/sc_IT/LC_MEASUREMENT -#usr/lib/locale/sc_IT/LC_MESSAGES -#usr/lib/locale/sc_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sc_IT/LC_MONETARY -#usr/lib/locale/sc_IT/LC_NAME -#usr/lib/locale/sc_IT/LC_NUMERIC -#usr/lib/locale/sc_IT/LC_PAPER -#usr/lib/locale/sc_IT/LC_TELEPHONE -#usr/lib/locale/sc_IT/LC_TIME -#usr/lib/locale/sd_IN -#usr/lib/locale/sd_IN/LC_ADDRESS -#usr/lib/locale/sd_IN/LC_COLLATE -#usr/lib/locale/sd_IN/LC_CTYPE -#usr/lib/locale/sd_IN/LC_IDENTIFICATION -#usr/lib/locale/sd_IN/LC_MEASUREMENT -#usr/lib/locale/sd_IN/LC_MESSAGES -#usr/lib/locale/sd_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sd_IN/LC_MONETARY -#usr/lib/locale/sd_IN/LC_NAME -#usr/lib/locale/sd_IN/LC_NUMERIC -#usr/lib/locale/sd_IN/LC_PAPER -#usr/lib/locale/sd_IN/LC_TELEPHONE -#usr/lib/locale/sd_IN/LC_TIME -#usr/lib/locale/sd_IN@devanagari -#usr/lib/locale/sd_IN@devanagari/LC_ADDRESS -#usr/lib/locale/sd_IN@devanagari/LC_COLLATE -#usr/lib/locale/sd_IN@devanagari/LC_CTYPE -#usr/lib/locale/sd_IN@devanagari/LC_IDENTIFICATION -#usr/lib/locale/sd_IN@devanagari/LC_MEASUREMENT -#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES -#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sd_IN@devanagari/LC_MONETARY -#usr/lib/locale/sd_IN@devanagari/LC_NAME -#usr/lib/locale/sd_IN@devanagari/LC_NUMERIC -#usr/lib/locale/sd_IN@devanagari/LC_PAPER -#usr/lib/locale/sd_IN@devanagari/LC_TELEPHONE -#usr/lib/locale/sd_IN@devanagari/LC_TIME -#usr/lib/locale/se_NO -#usr/lib/locale/se_NO/LC_ADDRESS -#usr/lib/locale/se_NO/LC_COLLATE -#usr/lib/locale/se_NO/LC_CTYPE -#usr/lib/locale/se_NO/LC_IDENTIFICATION -#usr/lib/locale/se_NO/LC_MEASUREMENT -#usr/lib/locale/se_NO/LC_MESSAGES -#usr/lib/locale/se_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/se_NO/LC_MONETARY -#usr/lib/locale/se_NO/LC_NAME -#usr/lib/locale/se_NO/LC_NUMERIC -#usr/lib/locale/se_NO/LC_PAPER -#usr/lib/locale/se_NO/LC_TELEPHONE -#usr/lib/locale/se_NO/LC_TIME -#usr/lib/locale/shs_CA -#usr/lib/locale/shs_CA/LC_ADDRESS -#usr/lib/locale/shs_CA/LC_COLLATE -#usr/lib/locale/shs_CA/LC_CTYPE -#usr/lib/locale/shs_CA/LC_IDENTIFICATION -#usr/lib/locale/shs_CA/LC_MEASUREMENT -#usr/lib/locale/shs_CA/LC_MESSAGES -#usr/lib/locale/shs_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/shs_CA/LC_MONETARY -#usr/lib/locale/shs_CA/LC_NAME -#usr/lib/locale/shs_CA/LC_NUMERIC -#usr/lib/locale/shs_CA/LC_PAPER -#usr/lib/locale/shs_CA/LC_TELEPHONE -#usr/lib/locale/shs_CA/LC_TIME -#usr/lib/locale/si_LK -#usr/lib/locale/si_LK/LC_ADDRESS -#usr/lib/locale/si_LK/LC_COLLATE -#usr/lib/locale/si_LK/LC_CTYPE -#usr/lib/locale/si_LK/LC_IDENTIFICATION -#usr/lib/locale/si_LK/LC_MEASUREMENT -#usr/lib/locale/si_LK/LC_MESSAGES -#usr/lib/locale/si_LK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/si_LK/LC_MONETARY -#usr/lib/locale/si_LK/LC_NAME -#usr/lib/locale/si_LK/LC_NUMERIC -#usr/lib/locale/si_LK/LC_PAPER -#usr/lib/locale/si_LK/LC_TELEPHONE -#usr/lib/locale/si_LK/LC_TIME -#usr/lib/locale/sid_ET -#usr/lib/locale/sid_ET/LC_ADDRESS -#usr/lib/locale/sid_ET/LC_COLLATE -#usr/lib/locale/sid_ET/LC_CTYPE -#usr/lib/locale/sid_ET/LC_IDENTIFICATION -#usr/lib/locale/sid_ET/LC_MEASUREMENT -#usr/lib/locale/sid_ET/LC_MESSAGES -#usr/lib/locale/sid_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sid_ET/LC_MONETARY -#usr/lib/locale/sid_ET/LC_NAME -#usr/lib/locale/sid_ET/LC_NUMERIC -#usr/lib/locale/sid_ET/LC_PAPER -#usr/lib/locale/sid_ET/LC_TELEPHONE -#usr/lib/locale/sid_ET/LC_TIME -#usr/lib/locale/sk_SK -#usr/lib/locale/sk_SK.utf8 -#usr/lib/locale/sk_SK.utf8/LC_ADDRESS -#usr/lib/locale/sk_SK.utf8/LC_COLLATE -#usr/lib/locale/sk_SK.utf8/LC_CTYPE -#usr/lib/locale/sk_SK.utf8/LC_IDENTIFICATION -#usr/lib/locale/sk_SK.utf8/LC_MEASUREMENT -#usr/lib/locale/sk_SK.utf8/LC_MESSAGES -#usr/lib/locale/sk_SK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sk_SK.utf8/LC_MONETARY -#usr/lib/locale/sk_SK.utf8/LC_NAME -#usr/lib/locale/sk_SK.utf8/LC_NUMERIC -#usr/lib/locale/sk_SK.utf8/LC_PAPER -#usr/lib/locale/sk_SK.utf8/LC_TELEPHONE -#usr/lib/locale/sk_SK.utf8/LC_TIME -#usr/lib/locale/sk_SK/LC_ADDRESS -#usr/lib/locale/sk_SK/LC_COLLATE -#usr/lib/locale/sk_SK/LC_CTYPE -#usr/lib/locale/sk_SK/LC_IDENTIFICATION -#usr/lib/locale/sk_SK/LC_MEASUREMENT -#usr/lib/locale/sk_SK/LC_MESSAGES -#usr/lib/locale/sk_SK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sk_SK/LC_MONETARY -#usr/lib/locale/sk_SK/LC_NAME -#usr/lib/locale/sk_SK/LC_NUMERIC -#usr/lib/locale/sk_SK/LC_PAPER -#usr/lib/locale/sk_SK/LC_TELEPHONE -#usr/lib/locale/sk_SK/LC_TIME -#usr/lib/locale/sl_SI -#usr/lib/locale/sl_SI.utf8 -#usr/lib/locale/sl_SI.utf8/LC_ADDRESS -#usr/lib/locale/sl_SI.utf8/LC_COLLATE -#usr/lib/locale/sl_SI.utf8/LC_CTYPE -#usr/lib/locale/sl_SI.utf8/LC_IDENTIFICATION -#usr/lib/locale/sl_SI.utf8/LC_MEASUREMENT -#usr/lib/locale/sl_SI.utf8/LC_MESSAGES -#usr/lib/locale/sl_SI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sl_SI.utf8/LC_MONETARY -#usr/lib/locale/sl_SI.utf8/LC_NAME -#usr/lib/locale/sl_SI.utf8/LC_NUMERIC -#usr/lib/locale/sl_SI.utf8/LC_PAPER -#usr/lib/locale/sl_SI.utf8/LC_TELEPHONE -#usr/lib/locale/sl_SI.utf8/LC_TIME -#usr/lib/locale/sl_SI/LC_ADDRESS -#usr/lib/locale/sl_SI/LC_COLLATE -#usr/lib/locale/sl_SI/LC_CTYPE -#usr/lib/locale/sl_SI/LC_IDENTIFICATION -#usr/lib/locale/sl_SI/LC_MEASUREMENT -#usr/lib/locale/sl_SI/LC_MESSAGES -#usr/lib/locale/sl_SI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sl_SI/LC_MONETARY -#usr/lib/locale/sl_SI/LC_NAME -#usr/lib/locale/sl_SI/LC_NUMERIC -#usr/lib/locale/sl_SI/LC_PAPER -#usr/lib/locale/sl_SI/LC_TELEPHONE -#usr/lib/locale/sl_SI/LC_TIME -#usr/lib/locale/so_DJ -#usr/lib/locale/so_DJ.utf8 -#usr/lib/locale/so_DJ.utf8/LC_ADDRESS -#usr/lib/locale/so_DJ.utf8/LC_COLLATE -#usr/lib/locale/so_DJ.utf8/LC_CTYPE -#usr/lib/locale/so_DJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_DJ.utf8/LC_MEASUREMENT -#usr/lib/locale/so_DJ.utf8/LC_MESSAGES -#usr/lib/locale/so_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_DJ.utf8/LC_MONETARY -#usr/lib/locale/so_DJ.utf8/LC_NAME -#usr/lib/locale/so_DJ.utf8/LC_NUMERIC -#usr/lib/locale/so_DJ.utf8/LC_PAPER -#usr/lib/locale/so_DJ.utf8/LC_TELEPHONE -#usr/lib/locale/so_DJ.utf8/LC_TIME -#usr/lib/locale/so_DJ/LC_ADDRESS -#usr/lib/locale/so_DJ/LC_COLLATE -#usr/lib/locale/so_DJ/LC_CTYPE -#usr/lib/locale/so_DJ/LC_IDENTIFICATION -#usr/lib/locale/so_DJ/LC_MEASUREMENT -#usr/lib/locale/so_DJ/LC_MESSAGES -#usr/lib/locale/so_DJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_DJ/LC_MONETARY -#usr/lib/locale/so_DJ/LC_NAME -#usr/lib/locale/so_DJ/LC_NUMERIC -#usr/lib/locale/so_DJ/LC_PAPER -#usr/lib/locale/so_DJ/LC_TELEPHONE -#usr/lib/locale/so_DJ/LC_TIME -#usr/lib/locale/so_ET -#usr/lib/locale/so_ET/LC_ADDRESS -#usr/lib/locale/so_ET/LC_COLLATE -#usr/lib/locale/so_ET/LC_CTYPE -#usr/lib/locale/so_ET/LC_IDENTIFICATION -#usr/lib/locale/so_ET/LC_MEASUREMENT -#usr/lib/locale/so_ET/LC_MESSAGES -#usr/lib/locale/so_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_ET/LC_MONETARY -#usr/lib/locale/so_ET/LC_NAME -#usr/lib/locale/so_ET/LC_NUMERIC -#usr/lib/locale/so_ET/LC_PAPER -#usr/lib/locale/so_ET/LC_TELEPHONE -#usr/lib/locale/so_ET/LC_TIME -#usr/lib/locale/so_KE -#usr/lib/locale/so_KE.utf8 -#usr/lib/locale/so_KE.utf8/LC_ADDRESS -#usr/lib/locale/so_KE.utf8/LC_COLLATE -#usr/lib/locale/so_KE.utf8/LC_CTYPE -#usr/lib/locale/so_KE.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_KE.utf8/LC_MEASUREMENT -#usr/lib/locale/so_KE.utf8/LC_MESSAGES -#usr/lib/locale/so_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_KE.utf8/LC_MONETARY -#usr/lib/locale/so_KE.utf8/LC_NAME -#usr/lib/locale/so_KE.utf8/LC_NUMERIC -#usr/lib/locale/so_KE.utf8/LC_PAPER -#usr/lib/locale/so_KE.utf8/LC_TELEPHONE -#usr/lib/locale/so_KE.utf8/LC_TIME -#usr/lib/locale/so_KE/LC_ADDRESS -#usr/lib/locale/so_KE/LC_COLLATE -#usr/lib/locale/so_KE/LC_CTYPE -#usr/lib/locale/so_KE/LC_IDENTIFICATION -#usr/lib/locale/so_KE/LC_MEASUREMENT -#usr/lib/locale/so_KE/LC_MESSAGES -#usr/lib/locale/so_KE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_KE/LC_MONETARY -#usr/lib/locale/so_KE/LC_NAME -#usr/lib/locale/so_KE/LC_NUMERIC -#usr/lib/locale/so_KE/LC_PAPER -#usr/lib/locale/so_KE/LC_TELEPHONE -#usr/lib/locale/so_KE/LC_TIME -#usr/lib/locale/so_SO -#usr/lib/locale/so_SO.utf8 -#usr/lib/locale/so_SO.utf8/LC_ADDRESS -#usr/lib/locale/so_SO.utf8/LC_COLLATE -#usr/lib/locale/so_SO.utf8/LC_CTYPE -#usr/lib/locale/so_SO.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_SO.utf8/LC_MEASUREMENT -#usr/lib/locale/so_SO.utf8/LC_MESSAGES -#usr/lib/locale/so_SO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_SO.utf8/LC_MONETARY -#usr/lib/locale/so_SO.utf8/LC_NAME -#usr/lib/locale/so_SO.utf8/LC_NUMERIC -#usr/lib/locale/so_SO.utf8/LC_PAPER -#usr/lib/locale/so_SO.utf8/LC_TELEPHONE -#usr/lib/locale/so_SO.utf8/LC_TIME -#usr/lib/locale/so_SO/LC_ADDRESS -#usr/lib/locale/so_SO/LC_COLLATE -#usr/lib/locale/so_SO/LC_CTYPE -#usr/lib/locale/so_SO/LC_IDENTIFICATION -#usr/lib/locale/so_SO/LC_MEASUREMENT -#usr/lib/locale/so_SO/LC_MESSAGES -#usr/lib/locale/so_SO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_SO/LC_MONETARY -#usr/lib/locale/so_SO/LC_NAME -#usr/lib/locale/so_SO/LC_NUMERIC -#usr/lib/locale/so_SO/LC_PAPER -#usr/lib/locale/so_SO/LC_TELEPHONE -#usr/lib/locale/so_SO/LC_TIME -#usr/lib/locale/sq_AL -#usr/lib/locale/sq_AL.utf8 -#usr/lib/locale/sq_AL.utf8/LC_ADDRESS -#usr/lib/locale/sq_AL.utf8/LC_COLLATE -#usr/lib/locale/sq_AL.utf8/LC_CTYPE -#usr/lib/locale/sq_AL.utf8/LC_IDENTIFICATION -#usr/lib/locale/sq_AL.utf8/LC_MEASUREMENT -#usr/lib/locale/sq_AL.utf8/LC_MESSAGES -#usr/lib/locale/sq_AL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_AL.utf8/LC_MONETARY -#usr/lib/locale/sq_AL.utf8/LC_NAME -#usr/lib/locale/sq_AL.utf8/LC_NUMERIC -#usr/lib/locale/sq_AL.utf8/LC_PAPER -#usr/lib/locale/sq_AL.utf8/LC_TELEPHONE -#usr/lib/locale/sq_AL.utf8/LC_TIME -#usr/lib/locale/sq_AL/LC_ADDRESS -#usr/lib/locale/sq_AL/LC_COLLATE -#usr/lib/locale/sq_AL/LC_CTYPE -#usr/lib/locale/sq_AL/LC_IDENTIFICATION -#usr/lib/locale/sq_AL/LC_MEASUREMENT -#usr/lib/locale/sq_AL/LC_MESSAGES -#usr/lib/locale/sq_AL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_AL/LC_MONETARY -#usr/lib/locale/sq_AL/LC_NAME -#usr/lib/locale/sq_AL/LC_NUMERIC -#usr/lib/locale/sq_AL/LC_PAPER -#usr/lib/locale/sq_AL/LC_TELEPHONE -#usr/lib/locale/sq_AL/LC_TIME -#usr/lib/locale/sq_MK -#usr/lib/locale/sq_MK/LC_ADDRESS -#usr/lib/locale/sq_MK/LC_COLLATE -#usr/lib/locale/sq_MK/LC_CTYPE -#usr/lib/locale/sq_MK/LC_IDENTIFICATION -#usr/lib/locale/sq_MK/LC_MEASUREMENT -#usr/lib/locale/sq_MK/LC_MESSAGES -#usr/lib/locale/sq_MK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_MK/LC_MONETARY -#usr/lib/locale/sq_MK/LC_NAME -#usr/lib/locale/sq_MK/LC_NUMERIC -#usr/lib/locale/sq_MK/LC_PAPER -#usr/lib/locale/sq_MK/LC_TELEPHONE -#usr/lib/locale/sq_MK/LC_TIME -#usr/lib/locale/sr_ME -#usr/lib/locale/sr_ME/LC_ADDRESS -#usr/lib/locale/sr_ME/LC_COLLATE -#usr/lib/locale/sr_ME/LC_CTYPE -#usr/lib/locale/sr_ME/LC_IDENTIFICATION -#usr/lib/locale/sr_ME/LC_MEASUREMENT -#usr/lib/locale/sr_ME/LC_MESSAGES -#usr/lib/locale/sr_ME/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_ME/LC_MONETARY -#usr/lib/locale/sr_ME/LC_NAME -#usr/lib/locale/sr_ME/LC_NUMERIC -#usr/lib/locale/sr_ME/LC_PAPER -#usr/lib/locale/sr_ME/LC_TELEPHONE -#usr/lib/locale/sr_ME/LC_TIME -#usr/lib/locale/sr_RS -#usr/lib/locale/sr_RS/LC_ADDRESS -#usr/lib/locale/sr_RS/LC_COLLATE -#usr/lib/locale/sr_RS/LC_CTYPE -#usr/lib/locale/sr_RS/LC_IDENTIFICATION -#usr/lib/locale/sr_RS/LC_MEASUREMENT -#usr/lib/locale/sr_RS/LC_MESSAGES -#usr/lib/locale/sr_RS/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_RS/LC_MONETARY -#usr/lib/locale/sr_RS/LC_NAME -#usr/lib/locale/sr_RS/LC_NUMERIC -#usr/lib/locale/sr_RS/LC_PAPER -#usr/lib/locale/sr_RS/LC_TELEPHONE -#usr/lib/locale/sr_RS/LC_TIME -#usr/lib/locale/sr_RS@latin -#usr/lib/locale/sr_RS@latin/LC_ADDRESS -#usr/lib/locale/sr_RS@latin/LC_COLLATE -#usr/lib/locale/sr_RS@latin/LC_CTYPE -#usr/lib/locale/sr_RS@latin/LC_IDENTIFICATION -#usr/lib/locale/sr_RS@latin/LC_MEASUREMENT -#usr/lib/locale/sr_RS@latin/LC_MESSAGES -#usr/lib/locale/sr_RS@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_RS@latin/LC_MONETARY -#usr/lib/locale/sr_RS@latin/LC_NAME -#usr/lib/locale/sr_RS@latin/LC_NUMERIC -#usr/lib/locale/sr_RS@latin/LC_PAPER -#usr/lib/locale/sr_RS@latin/LC_TELEPHONE -#usr/lib/locale/sr_RS@latin/LC_TIME -#usr/lib/locale/ss_ZA -#usr/lib/locale/ss_ZA/LC_ADDRESS -#usr/lib/locale/ss_ZA/LC_COLLATE -#usr/lib/locale/ss_ZA/LC_CTYPE -#usr/lib/locale/ss_ZA/LC_IDENTIFICATION -#usr/lib/locale/ss_ZA/LC_MEASUREMENT -#usr/lib/locale/ss_ZA/LC_MESSAGES -#usr/lib/locale/ss_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ss_ZA/LC_MONETARY -#usr/lib/locale/ss_ZA/LC_NAME -#usr/lib/locale/ss_ZA/LC_NUMERIC -#usr/lib/locale/ss_ZA/LC_PAPER -#usr/lib/locale/ss_ZA/LC_TELEPHONE -#usr/lib/locale/ss_ZA/LC_TIME -#usr/lib/locale/st_ZA -#usr/lib/locale/st_ZA.utf8 -#usr/lib/locale/st_ZA.utf8/LC_ADDRESS -#usr/lib/locale/st_ZA.utf8/LC_COLLATE -#usr/lib/locale/st_ZA.utf8/LC_CTYPE -#usr/lib/locale/st_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/st_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/st_ZA.utf8/LC_MESSAGES -#usr/lib/locale/st_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/st_ZA.utf8/LC_MONETARY -#usr/lib/locale/st_ZA.utf8/LC_NAME -#usr/lib/locale/st_ZA.utf8/LC_NUMERIC -#usr/lib/locale/st_ZA.utf8/LC_PAPER -#usr/lib/locale/st_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/st_ZA.utf8/LC_TIME -#usr/lib/locale/st_ZA/LC_ADDRESS -#usr/lib/locale/st_ZA/LC_COLLATE -#usr/lib/locale/st_ZA/LC_CTYPE -#usr/lib/locale/st_ZA/LC_IDENTIFICATION -#usr/lib/locale/st_ZA/LC_MEASUREMENT -#usr/lib/locale/st_ZA/LC_MESSAGES -#usr/lib/locale/st_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/st_ZA/LC_MONETARY -#usr/lib/locale/st_ZA/LC_NAME -#usr/lib/locale/st_ZA/LC_NUMERIC -#usr/lib/locale/st_ZA/LC_PAPER -#usr/lib/locale/st_ZA/LC_TELEPHONE -#usr/lib/locale/st_ZA/LC_TIME -#usr/lib/locale/sv_FI -#usr/lib/locale/sv_FI.utf8 -#usr/lib/locale/sv_FI.utf8/LC_ADDRESS -#usr/lib/locale/sv_FI.utf8/LC_COLLATE -#usr/lib/locale/sv_FI.utf8/LC_CTYPE -#usr/lib/locale/sv_FI.utf8/LC_IDENTIFICATION -#usr/lib/locale/sv_FI.utf8/LC_MEASUREMENT -#usr/lib/locale/sv_FI.utf8/LC_MESSAGES -#usr/lib/locale/sv_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI.utf8/LC_MONETARY -#usr/lib/locale/sv_FI.utf8/LC_NAME -#usr/lib/locale/sv_FI.utf8/LC_NUMERIC -#usr/lib/locale/sv_FI.utf8/LC_PAPER -#usr/lib/locale/sv_FI.utf8/LC_TELEPHONE -#usr/lib/locale/sv_FI.utf8/LC_TIME -#usr/lib/locale/sv_FI/LC_ADDRESS -#usr/lib/locale/sv_FI/LC_COLLATE -#usr/lib/locale/sv_FI/LC_CTYPE -#usr/lib/locale/sv_FI/LC_IDENTIFICATION -#usr/lib/locale/sv_FI/LC_MEASUREMENT -#usr/lib/locale/sv_FI/LC_MESSAGES -#usr/lib/locale/sv_FI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI/LC_MONETARY -#usr/lib/locale/sv_FI/LC_NAME -#usr/lib/locale/sv_FI/LC_NUMERIC -#usr/lib/locale/sv_FI/LC_PAPER -#usr/lib/locale/sv_FI/LC_TELEPHONE -#usr/lib/locale/sv_FI/LC_TIME -#usr/lib/locale/sv_FI@euro -#usr/lib/locale/sv_FI@euro/LC_ADDRESS -#usr/lib/locale/sv_FI@euro/LC_COLLATE -#usr/lib/locale/sv_FI@euro/LC_CTYPE -#usr/lib/locale/sv_FI@euro/LC_IDENTIFICATION -#usr/lib/locale/sv_FI@euro/LC_MEASUREMENT -#usr/lib/locale/sv_FI@euro/LC_MESSAGES -#usr/lib/locale/sv_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI@euro/LC_MONETARY -#usr/lib/locale/sv_FI@euro/LC_NAME -#usr/lib/locale/sv_FI@euro/LC_NUMERIC -#usr/lib/locale/sv_FI@euro/LC_PAPER -#usr/lib/locale/sv_FI@euro/LC_TELEPHONE -#usr/lib/locale/sv_FI@euro/LC_TIME -#usr/lib/locale/sv_SE -#usr/lib/locale/sv_SE.iso885915 -#usr/lib/locale/sv_SE.iso885915/LC_ADDRESS -#usr/lib/locale/sv_SE.iso885915/LC_COLLATE -#usr/lib/locale/sv_SE.iso885915/LC_CTYPE -#usr/lib/locale/sv_SE.iso885915/LC_IDENTIFICATION -#usr/lib/locale/sv_SE.iso885915/LC_MEASUREMENT -#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES -#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE.iso885915/LC_MONETARY -#usr/lib/locale/sv_SE.iso885915/LC_NAME -#usr/lib/locale/sv_SE.iso885915/LC_NUMERIC -#usr/lib/locale/sv_SE.iso885915/LC_PAPER -#usr/lib/locale/sv_SE.iso885915/LC_TELEPHONE -#usr/lib/locale/sv_SE.iso885915/LC_TIME -#usr/lib/locale/sv_SE.utf8 -#usr/lib/locale/sv_SE.utf8/LC_ADDRESS -#usr/lib/locale/sv_SE.utf8/LC_COLLATE -#usr/lib/locale/sv_SE.utf8/LC_CTYPE -#usr/lib/locale/sv_SE.utf8/LC_IDENTIFICATION -#usr/lib/locale/sv_SE.utf8/LC_MEASUREMENT -#usr/lib/locale/sv_SE.utf8/LC_MESSAGES -#usr/lib/locale/sv_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE.utf8/LC_MONETARY -#usr/lib/locale/sv_SE.utf8/LC_NAME -#usr/lib/locale/sv_SE.utf8/LC_NUMERIC -#usr/lib/locale/sv_SE.utf8/LC_PAPER -#usr/lib/locale/sv_SE.utf8/LC_TELEPHONE -#usr/lib/locale/sv_SE.utf8/LC_TIME -#usr/lib/locale/sv_SE/LC_ADDRESS -#usr/lib/locale/sv_SE/LC_COLLATE -#usr/lib/locale/sv_SE/LC_CTYPE -#usr/lib/locale/sv_SE/LC_IDENTIFICATION -#usr/lib/locale/sv_SE/LC_MEASUREMENT -#usr/lib/locale/sv_SE/LC_MESSAGES -#usr/lib/locale/sv_SE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE/LC_MONETARY -#usr/lib/locale/sv_SE/LC_NAME -#usr/lib/locale/sv_SE/LC_NUMERIC -#usr/lib/locale/sv_SE/LC_PAPER -#usr/lib/locale/sv_SE/LC_TELEPHONE -#usr/lib/locale/sv_SE/LC_TIME -#usr/lib/locale/ta_IN -#usr/lib/locale/ta_IN/LC_ADDRESS -#usr/lib/locale/ta_IN/LC_COLLATE -#usr/lib/locale/ta_IN/LC_CTYPE -#usr/lib/locale/ta_IN/LC_IDENTIFICATION -#usr/lib/locale/ta_IN/LC_MEASUREMENT -#usr/lib/locale/ta_IN/LC_MESSAGES -#usr/lib/locale/ta_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ta_IN/LC_MONETARY -#usr/lib/locale/ta_IN/LC_NAME -#usr/lib/locale/ta_IN/LC_NUMERIC -#usr/lib/locale/ta_IN/LC_PAPER -#usr/lib/locale/ta_IN/LC_TELEPHONE -#usr/lib/locale/ta_IN/LC_TIME -#usr/lib/locale/te_IN -#usr/lib/locale/te_IN/LC_ADDRESS -#usr/lib/locale/te_IN/LC_COLLATE -#usr/lib/locale/te_IN/LC_CTYPE -#usr/lib/locale/te_IN/LC_IDENTIFICATION -#usr/lib/locale/te_IN/LC_MEASUREMENT -#usr/lib/locale/te_IN/LC_MESSAGES -#usr/lib/locale/te_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/te_IN/LC_MONETARY -#usr/lib/locale/te_IN/LC_NAME -#usr/lib/locale/te_IN/LC_NUMERIC -#usr/lib/locale/te_IN/LC_PAPER -#usr/lib/locale/te_IN/LC_TELEPHONE -#usr/lib/locale/te_IN/LC_TIME -#usr/lib/locale/tg_TJ -#usr/lib/locale/tg_TJ.utf8 -#usr/lib/locale/tg_TJ.utf8/LC_ADDRESS -#usr/lib/locale/tg_TJ.utf8/LC_COLLATE -#usr/lib/locale/tg_TJ.utf8/LC_CTYPE -#usr/lib/locale/tg_TJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/tg_TJ.utf8/LC_MEASUREMENT -#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES -#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tg_TJ.utf8/LC_MONETARY -#usr/lib/locale/tg_TJ.utf8/LC_NAME -#usr/lib/locale/tg_TJ.utf8/LC_NUMERIC -#usr/lib/locale/tg_TJ.utf8/LC_PAPER -#usr/lib/locale/tg_TJ.utf8/LC_TELEPHONE -#usr/lib/locale/tg_TJ.utf8/LC_TIME -#usr/lib/locale/tg_TJ/LC_ADDRESS -#usr/lib/locale/tg_TJ/LC_COLLATE -#usr/lib/locale/tg_TJ/LC_CTYPE -#usr/lib/locale/tg_TJ/LC_IDENTIFICATION -#usr/lib/locale/tg_TJ/LC_MEASUREMENT -#usr/lib/locale/tg_TJ/LC_MESSAGES -#usr/lib/locale/tg_TJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tg_TJ/LC_MONETARY -#usr/lib/locale/tg_TJ/LC_NAME -#usr/lib/locale/tg_TJ/LC_NUMERIC -#usr/lib/locale/tg_TJ/LC_PAPER -#usr/lib/locale/tg_TJ/LC_TELEPHONE -#usr/lib/locale/tg_TJ/LC_TIME -#usr/lib/locale/th_TH -#usr/lib/locale/th_TH.utf8 -#usr/lib/locale/th_TH.utf8/LC_ADDRESS -#usr/lib/locale/th_TH.utf8/LC_COLLATE -#usr/lib/locale/th_TH.utf8/LC_CTYPE -#usr/lib/locale/th_TH.utf8/LC_IDENTIFICATION -#usr/lib/locale/th_TH.utf8/LC_MEASUREMENT -#usr/lib/locale/th_TH.utf8/LC_MESSAGES -#usr/lib/locale/th_TH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/th_TH.utf8/LC_MONETARY -#usr/lib/locale/th_TH.utf8/LC_NAME -#usr/lib/locale/th_TH.utf8/LC_NUMERIC -#usr/lib/locale/th_TH.utf8/LC_PAPER -#usr/lib/locale/th_TH.utf8/LC_TELEPHONE -#usr/lib/locale/th_TH.utf8/LC_TIME -#usr/lib/locale/th_TH/LC_ADDRESS -#usr/lib/locale/th_TH/LC_COLLATE -#usr/lib/locale/th_TH/LC_CTYPE -#usr/lib/locale/th_TH/LC_IDENTIFICATION -#usr/lib/locale/th_TH/LC_MEASUREMENT -#usr/lib/locale/th_TH/LC_MESSAGES -#usr/lib/locale/th_TH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/th_TH/LC_MONETARY -#usr/lib/locale/th_TH/LC_NAME -#usr/lib/locale/th_TH/LC_NUMERIC -#usr/lib/locale/th_TH/LC_PAPER -#usr/lib/locale/th_TH/LC_TELEPHONE -#usr/lib/locale/th_TH/LC_TIME -#usr/lib/locale/ti_ER -#usr/lib/locale/ti_ER/LC_ADDRESS -#usr/lib/locale/ti_ER/LC_COLLATE -#usr/lib/locale/ti_ER/LC_CTYPE -#usr/lib/locale/ti_ER/LC_IDENTIFICATION -#usr/lib/locale/ti_ER/LC_MEASUREMENT -#usr/lib/locale/ti_ER/LC_MESSAGES -#usr/lib/locale/ti_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ti_ER/LC_MONETARY -#usr/lib/locale/ti_ER/LC_NAME -#usr/lib/locale/ti_ER/LC_NUMERIC -#usr/lib/locale/ti_ER/LC_PAPER -#usr/lib/locale/ti_ER/LC_TELEPHONE -#usr/lib/locale/ti_ER/LC_TIME -#usr/lib/locale/ti_ET -#usr/lib/locale/ti_ET/LC_ADDRESS -#usr/lib/locale/ti_ET/LC_COLLATE -#usr/lib/locale/ti_ET/LC_CTYPE -#usr/lib/locale/ti_ET/LC_IDENTIFICATION -#usr/lib/locale/ti_ET/LC_MEASUREMENT -#usr/lib/locale/ti_ET/LC_MESSAGES -#usr/lib/locale/ti_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ti_ET/LC_MONETARY -#usr/lib/locale/ti_ET/LC_NAME -#usr/lib/locale/ti_ET/LC_NUMERIC -#usr/lib/locale/ti_ET/LC_PAPER -#usr/lib/locale/ti_ET/LC_TELEPHONE -#usr/lib/locale/ti_ET/LC_TIME -#usr/lib/locale/tig_ER -#usr/lib/locale/tig_ER/LC_ADDRESS -#usr/lib/locale/tig_ER/LC_COLLATE -#usr/lib/locale/tig_ER/LC_CTYPE -#usr/lib/locale/tig_ER/LC_IDENTIFICATION -#usr/lib/locale/tig_ER/LC_MEASUREMENT -#usr/lib/locale/tig_ER/LC_MESSAGES -#usr/lib/locale/tig_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tig_ER/LC_MONETARY -#usr/lib/locale/tig_ER/LC_NAME -#usr/lib/locale/tig_ER/LC_NUMERIC -#usr/lib/locale/tig_ER/LC_PAPER -#usr/lib/locale/tig_ER/LC_TELEPHONE -#usr/lib/locale/tig_ER/LC_TIME -#usr/lib/locale/tk_TM -#usr/lib/locale/tk_TM/LC_ADDRESS -#usr/lib/locale/tk_TM/LC_COLLATE -#usr/lib/locale/tk_TM/LC_CTYPE -#usr/lib/locale/tk_TM/LC_IDENTIFICATION -#usr/lib/locale/tk_TM/LC_MEASUREMENT -#usr/lib/locale/tk_TM/LC_MESSAGES -#usr/lib/locale/tk_TM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tk_TM/LC_MONETARY -#usr/lib/locale/tk_TM/LC_NAME -#usr/lib/locale/tk_TM/LC_NUMERIC -#usr/lib/locale/tk_TM/LC_PAPER -#usr/lib/locale/tk_TM/LC_TELEPHONE -#usr/lib/locale/tk_TM/LC_TIME -#usr/lib/locale/tl_PH -#usr/lib/locale/tl_PH.utf8 -#usr/lib/locale/tl_PH.utf8/LC_ADDRESS -#usr/lib/locale/tl_PH.utf8/LC_COLLATE -#usr/lib/locale/tl_PH.utf8/LC_CTYPE -#usr/lib/locale/tl_PH.utf8/LC_IDENTIFICATION -#usr/lib/locale/tl_PH.utf8/LC_MEASUREMENT -#usr/lib/locale/tl_PH.utf8/LC_MESSAGES -#usr/lib/locale/tl_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tl_PH.utf8/LC_MONETARY -#usr/lib/locale/tl_PH.utf8/LC_NAME -#usr/lib/locale/tl_PH.utf8/LC_NUMERIC -#usr/lib/locale/tl_PH.utf8/LC_PAPER -#usr/lib/locale/tl_PH.utf8/LC_TELEPHONE -#usr/lib/locale/tl_PH.utf8/LC_TIME -#usr/lib/locale/tl_PH/LC_ADDRESS -#usr/lib/locale/tl_PH/LC_COLLATE -#usr/lib/locale/tl_PH/LC_CTYPE -#usr/lib/locale/tl_PH/LC_IDENTIFICATION -#usr/lib/locale/tl_PH/LC_MEASUREMENT -#usr/lib/locale/tl_PH/LC_MESSAGES -#usr/lib/locale/tl_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tl_PH/LC_MONETARY -#usr/lib/locale/tl_PH/LC_NAME -#usr/lib/locale/tl_PH/LC_NUMERIC -#usr/lib/locale/tl_PH/LC_PAPER -#usr/lib/locale/tl_PH/LC_TELEPHONE -#usr/lib/locale/tl_PH/LC_TIME -#usr/lib/locale/tn_ZA -#usr/lib/locale/tn_ZA/LC_ADDRESS -#usr/lib/locale/tn_ZA/LC_COLLATE -#usr/lib/locale/tn_ZA/LC_CTYPE -#usr/lib/locale/tn_ZA/LC_IDENTIFICATION -#usr/lib/locale/tn_ZA/LC_MEASUREMENT -#usr/lib/locale/tn_ZA/LC_MESSAGES -#usr/lib/locale/tn_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tn_ZA/LC_MONETARY -#usr/lib/locale/tn_ZA/LC_NAME -#usr/lib/locale/tn_ZA/LC_NUMERIC -#usr/lib/locale/tn_ZA/LC_PAPER -#usr/lib/locale/tn_ZA/LC_TELEPHONE -#usr/lib/locale/tn_ZA/LC_TIME -#usr/lib/locale/tr_CY -#usr/lib/locale/tr_CY.utf8 -#usr/lib/locale/tr_CY.utf8/LC_ADDRESS -#usr/lib/locale/tr_CY.utf8/LC_COLLATE -#usr/lib/locale/tr_CY.utf8/LC_CTYPE -#usr/lib/locale/tr_CY.utf8/LC_IDENTIFICATION -#usr/lib/locale/tr_CY.utf8/LC_MEASUREMENT -#usr/lib/locale/tr_CY.utf8/LC_MESSAGES -#usr/lib/locale/tr_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_CY.utf8/LC_MONETARY -#usr/lib/locale/tr_CY.utf8/LC_NAME -#usr/lib/locale/tr_CY.utf8/LC_NUMERIC -#usr/lib/locale/tr_CY.utf8/LC_PAPER -#usr/lib/locale/tr_CY.utf8/LC_TELEPHONE -#usr/lib/locale/tr_CY.utf8/LC_TIME -#usr/lib/locale/tr_CY/LC_ADDRESS -#usr/lib/locale/tr_CY/LC_COLLATE -#usr/lib/locale/tr_CY/LC_CTYPE -#usr/lib/locale/tr_CY/LC_IDENTIFICATION -#usr/lib/locale/tr_CY/LC_MEASUREMENT -#usr/lib/locale/tr_CY/LC_MESSAGES -#usr/lib/locale/tr_CY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_CY/LC_MONETARY -#usr/lib/locale/tr_CY/LC_NAME -#usr/lib/locale/tr_CY/LC_NUMERIC -#usr/lib/locale/tr_CY/LC_PAPER -#usr/lib/locale/tr_CY/LC_TELEPHONE -#usr/lib/locale/tr_CY/LC_TIME -#usr/lib/locale/tr_TR -#usr/lib/locale/tr_TR.utf8 -#usr/lib/locale/tr_TR.utf8/LC_ADDRESS -#usr/lib/locale/tr_TR.utf8/LC_COLLATE -#usr/lib/locale/tr_TR.utf8/LC_CTYPE -#usr/lib/locale/tr_TR.utf8/LC_IDENTIFICATION -#usr/lib/locale/tr_TR.utf8/LC_MEASUREMENT -#usr/lib/locale/tr_TR.utf8/LC_MESSAGES -#usr/lib/locale/tr_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_TR.utf8/LC_MONETARY -#usr/lib/locale/tr_TR.utf8/LC_NAME -#usr/lib/locale/tr_TR.utf8/LC_NUMERIC -#usr/lib/locale/tr_TR.utf8/LC_PAPER -#usr/lib/locale/tr_TR.utf8/LC_TELEPHONE -#usr/lib/locale/tr_TR.utf8/LC_TIME -#usr/lib/locale/tr_TR/LC_ADDRESS -#usr/lib/locale/tr_TR/LC_COLLATE -#usr/lib/locale/tr_TR/LC_CTYPE -#usr/lib/locale/tr_TR/LC_IDENTIFICATION -#usr/lib/locale/tr_TR/LC_MEASUREMENT -#usr/lib/locale/tr_TR/LC_MESSAGES -#usr/lib/locale/tr_TR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_TR/LC_MONETARY -#usr/lib/locale/tr_TR/LC_NAME -#usr/lib/locale/tr_TR/LC_NUMERIC -#usr/lib/locale/tr_TR/LC_PAPER -#usr/lib/locale/tr_TR/LC_TELEPHONE -#usr/lib/locale/tr_TR/LC_TIME -#usr/lib/locale/ts_ZA -#usr/lib/locale/ts_ZA/LC_ADDRESS -#usr/lib/locale/ts_ZA/LC_COLLATE -#usr/lib/locale/ts_ZA/LC_CTYPE -#usr/lib/locale/ts_ZA/LC_IDENTIFICATION -#usr/lib/locale/ts_ZA/LC_MEASUREMENT -#usr/lib/locale/ts_ZA/LC_MESSAGES -#usr/lib/locale/ts_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ts_ZA/LC_MONETARY -#usr/lib/locale/ts_ZA/LC_NAME -#usr/lib/locale/ts_ZA/LC_NUMERIC -#usr/lib/locale/ts_ZA/LC_PAPER -#usr/lib/locale/ts_ZA/LC_TELEPHONE -#usr/lib/locale/ts_ZA/LC_TIME -#usr/lib/locale/tt_RU -#usr/lib/locale/tt_RU/LC_ADDRESS -#usr/lib/locale/tt_RU/LC_COLLATE -#usr/lib/locale/tt_RU/LC_CTYPE -#usr/lib/locale/tt_RU/LC_IDENTIFICATION -#usr/lib/locale/tt_RU/LC_MEASUREMENT -#usr/lib/locale/tt_RU/LC_MESSAGES -#usr/lib/locale/tt_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tt_RU/LC_MONETARY -#usr/lib/locale/tt_RU/LC_NAME -#usr/lib/locale/tt_RU/LC_NUMERIC -#usr/lib/locale/tt_RU/LC_PAPER -#usr/lib/locale/tt_RU/LC_TELEPHONE -#usr/lib/locale/tt_RU/LC_TIME -#usr/lib/locale/tt_RU@iqtelif -#usr/lib/locale/tt_RU@iqtelif/LC_ADDRESS -#usr/lib/locale/tt_RU@iqtelif/LC_COLLATE -#usr/lib/locale/tt_RU@iqtelif/LC_CTYPE -#usr/lib/locale/tt_RU@iqtelif/LC_IDENTIFICATION -#usr/lib/locale/tt_RU@iqtelif/LC_MEASUREMENT -#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES -#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tt_RU@iqtelif/LC_MONETARY -#usr/lib/locale/tt_RU@iqtelif/LC_NAME -#usr/lib/locale/tt_RU@iqtelif/LC_NUMERIC -#usr/lib/locale/tt_RU@iqtelif/LC_PAPER -#usr/lib/locale/tt_RU@iqtelif/LC_TELEPHONE -#usr/lib/locale/tt_RU@iqtelif/LC_TIME -#usr/lib/locale/ug_CN -#usr/lib/locale/ug_CN/LC_ADDRESS -#usr/lib/locale/ug_CN/LC_COLLATE -#usr/lib/locale/ug_CN/LC_CTYPE -#usr/lib/locale/ug_CN/LC_IDENTIFICATION -#usr/lib/locale/ug_CN/LC_MEASUREMENT -#usr/lib/locale/ug_CN/LC_MESSAGES -#usr/lib/locale/ug_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ug_CN/LC_MONETARY -#usr/lib/locale/ug_CN/LC_NAME -#usr/lib/locale/ug_CN/LC_NUMERIC -#usr/lib/locale/ug_CN/LC_PAPER -#usr/lib/locale/ug_CN/LC_TELEPHONE -#usr/lib/locale/ug_CN/LC_TIME -#usr/lib/locale/uk_UA -#usr/lib/locale/uk_UA.utf8 -#usr/lib/locale/uk_UA.utf8/LC_ADDRESS -#usr/lib/locale/uk_UA.utf8/LC_COLLATE -#usr/lib/locale/uk_UA.utf8/LC_CTYPE -#usr/lib/locale/uk_UA.utf8/LC_IDENTIFICATION -#usr/lib/locale/uk_UA.utf8/LC_MEASUREMENT -#usr/lib/locale/uk_UA.utf8/LC_MESSAGES -#usr/lib/locale/uk_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uk_UA.utf8/LC_MONETARY -#usr/lib/locale/uk_UA.utf8/LC_NAME -#usr/lib/locale/uk_UA.utf8/LC_NUMERIC -#usr/lib/locale/uk_UA.utf8/LC_PAPER -#usr/lib/locale/uk_UA.utf8/LC_TELEPHONE -#usr/lib/locale/uk_UA.utf8/LC_TIME -#usr/lib/locale/uk_UA/LC_ADDRESS -#usr/lib/locale/uk_UA/LC_COLLATE -#usr/lib/locale/uk_UA/LC_CTYPE -#usr/lib/locale/uk_UA/LC_IDENTIFICATION -#usr/lib/locale/uk_UA/LC_MEASUREMENT -#usr/lib/locale/uk_UA/LC_MESSAGES -#usr/lib/locale/uk_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uk_UA/LC_MONETARY -#usr/lib/locale/uk_UA/LC_NAME -#usr/lib/locale/uk_UA/LC_NUMERIC -#usr/lib/locale/uk_UA/LC_PAPER -#usr/lib/locale/uk_UA/LC_TELEPHONE -#usr/lib/locale/uk_UA/LC_TIME -#usr/lib/locale/ur_PK -#usr/lib/locale/ur_PK/LC_ADDRESS -#usr/lib/locale/ur_PK/LC_COLLATE -#usr/lib/locale/ur_PK/LC_CTYPE -#usr/lib/locale/ur_PK/LC_IDENTIFICATION -#usr/lib/locale/ur_PK/LC_MEASUREMENT -#usr/lib/locale/ur_PK/LC_MESSAGES -#usr/lib/locale/ur_PK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ur_PK/LC_MONETARY -#usr/lib/locale/ur_PK/LC_NAME -#usr/lib/locale/ur_PK/LC_NUMERIC -#usr/lib/locale/ur_PK/LC_PAPER -#usr/lib/locale/ur_PK/LC_TELEPHONE -#usr/lib/locale/ur_PK/LC_TIME -#usr/lib/locale/uz_UZ -#usr/lib/locale/uz_UZ/LC_ADDRESS -#usr/lib/locale/uz_UZ/LC_COLLATE -#usr/lib/locale/uz_UZ/LC_CTYPE -#usr/lib/locale/uz_UZ/LC_IDENTIFICATION -#usr/lib/locale/uz_UZ/LC_MEASUREMENT -#usr/lib/locale/uz_UZ/LC_MESSAGES -#usr/lib/locale/uz_UZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uz_UZ/LC_MONETARY -#usr/lib/locale/uz_UZ/LC_NAME -#usr/lib/locale/uz_UZ/LC_NUMERIC -#usr/lib/locale/uz_UZ/LC_PAPER -#usr/lib/locale/uz_UZ/LC_TELEPHONE -#usr/lib/locale/uz_UZ/LC_TIME -#usr/lib/locale/uz_UZ@cyrillic -#usr/lib/locale/uz_UZ@cyrillic/LC_ADDRESS -#usr/lib/locale/uz_UZ@cyrillic/LC_COLLATE -#usr/lib/locale/uz_UZ@cyrillic/LC_CTYPE -#usr/lib/locale/uz_UZ@cyrillic/LC_IDENTIFICATION -#usr/lib/locale/uz_UZ@cyrillic/LC_MEASUREMENT -#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES -#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uz_UZ@cyrillic/LC_MONETARY -#usr/lib/locale/uz_UZ@cyrillic/LC_NAME -#usr/lib/locale/uz_UZ@cyrillic/LC_NUMERIC -#usr/lib/locale/uz_UZ@cyrillic/LC_PAPER -#usr/lib/locale/uz_UZ@cyrillic/LC_TELEPHONE -#usr/lib/locale/uz_UZ@cyrillic/LC_TIME -#usr/lib/locale/ve_ZA -#usr/lib/locale/ve_ZA/LC_ADDRESS -#usr/lib/locale/ve_ZA/LC_COLLATE -#usr/lib/locale/ve_ZA/LC_CTYPE -#usr/lib/locale/ve_ZA/LC_IDENTIFICATION -#usr/lib/locale/ve_ZA/LC_MEASUREMENT -#usr/lib/locale/ve_ZA/LC_MESSAGES -#usr/lib/locale/ve_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ve_ZA/LC_MONETARY -#usr/lib/locale/ve_ZA/LC_NAME -#usr/lib/locale/ve_ZA/LC_NUMERIC -#usr/lib/locale/ve_ZA/LC_PAPER -#usr/lib/locale/ve_ZA/LC_TELEPHONE -#usr/lib/locale/ve_ZA/LC_TIME -#usr/lib/locale/vi_VN -#usr/lib/locale/vi_VN.tcvn -#usr/lib/locale/vi_VN.tcvn/LC_ADDRESS -#usr/lib/locale/vi_VN.tcvn/LC_COLLATE -#usr/lib/locale/vi_VN.tcvn/LC_CTYPE -#usr/lib/locale/vi_VN.tcvn/LC_IDENTIFICATION -#usr/lib/locale/vi_VN.tcvn/LC_MEASUREMENT -#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES -#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/vi_VN.tcvn/LC_MONETARY -#usr/lib/locale/vi_VN.tcvn/LC_NAME -#usr/lib/locale/vi_VN.tcvn/LC_NUMERIC -#usr/lib/locale/vi_VN.tcvn/LC_PAPER -#usr/lib/locale/vi_VN.tcvn/LC_TELEPHONE -#usr/lib/locale/vi_VN.tcvn/LC_TIME -#usr/lib/locale/vi_VN/LC_ADDRESS -#usr/lib/locale/vi_VN/LC_COLLATE -#usr/lib/locale/vi_VN/LC_CTYPE -#usr/lib/locale/vi_VN/LC_IDENTIFICATION -#usr/lib/locale/vi_VN/LC_MEASUREMENT -#usr/lib/locale/vi_VN/LC_MESSAGES -#usr/lib/locale/vi_VN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/vi_VN/LC_MONETARY -#usr/lib/locale/vi_VN/LC_NAME -#usr/lib/locale/vi_VN/LC_NUMERIC -#usr/lib/locale/vi_VN/LC_PAPER -#usr/lib/locale/vi_VN/LC_TELEPHONE -#usr/lib/locale/vi_VN/LC_TIME -#usr/lib/locale/wa_BE -#usr/lib/locale/wa_BE.utf8 -#usr/lib/locale/wa_BE.utf8/LC_ADDRESS -#usr/lib/locale/wa_BE.utf8/LC_COLLATE -#usr/lib/locale/wa_BE.utf8/LC_CTYPE -#usr/lib/locale/wa_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/wa_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/wa_BE.utf8/LC_MESSAGES -#usr/lib/locale/wa_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE.utf8/LC_MONETARY -#usr/lib/locale/wa_BE.utf8/LC_NAME -#usr/lib/locale/wa_BE.utf8/LC_NUMERIC -#usr/lib/locale/wa_BE.utf8/LC_PAPER -#usr/lib/locale/wa_BE.utf8/LC_TELEPHONE -#usr/lib/locale/wa_BE.utf8/LC_TIME -#usr/lib/locale/wa_BE/LC_ADDRESS -#usr/lib/locale/wa_BE/LC_COLLATE -#usr/lib/locale/wa_BE/LC_CTYPE -#usr/lib/locale/wa_BE/LC_IDENTIFICATION -#usr/lib/locale/wa_BE/LC_MEASUREMENT -#usr/lib/locale/wa_BE/LC_MESSAGES -#usr/lib/locale/wa_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE/LC_MONETARY -#usr/lib/locale/wa_BE/LC_NAME -#usr/lib/locale/wa_BE/LC_NUMERIC -#usr/lib/locale/wa_BE/LC_PAPER -#usr/lib/locale/wa_BE/LC_TELEPHONE -#usr/lib/locale/wa_BE/LC_TIME -#usr/lib/locale/wa_BE@euro -#usr/lib/locale/wa_BE@euro/LC_ADDRESS -#usr/lib/locale/wa_BE@euro/LC_COLLATE -#usr/lib/locale/wa_BE@euro/LC_CTYPE -#usr/lib/locale/wa_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/wa_BE@euro/LC_MEASUREMENT -#usr/lib/locale/wa_BE@euro/LC_MESSAGES -#usr/lib/locale/wa_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE@euro/LC_MONETARY -#usr/lib/locale/wa_BE@euro/LC_NAME -#usr/lib/locale/wa_BE@euro/LC_NUMERIC -#usr/lib/locale/wa_BE@euro/LC_PAPER -#usr/lib/locale/wa_BE@euro/LC_TELEPHONE -#usr/lib/locale/wa_BE@euro/LC_TIME -#usr/lib/locale/wo_SN -#usr/lib/locale/wo_SN/LC_ADDRESS -#usr/lib/locale/wo_SN/LC_COLLATE -#usr/lib/locale/wo_SN/LC_CTYPE -#usr/lib/locale/wo_SN/LC_IDENTIFICATION -#usr/lib/locale/wo_SN/LC_MEASUREMENT -#usr/lib/locale/wo_SN/LC_MESSAGES -#usr/lib/locale/wo_SN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wo_SN/LC_MONETARY -#usr/lib/locale/wo_SN/LC_NAME -#usr/lib/locale/wo_SN/LC_NUMERIC -#usr/lib/locale/wo_SN/LC_PAPER -#usr/lib/locale/wo_SN/LC_TELEPHONE -#usr/lib/locale/wo_SN/LC_TIME -#usr/lib/locale/xh_ZA -#usr/lib/locale/xh_ZA.utf8 -#usr/lib/locale/xh_ZA.utf8/LC_ADDRESS -#usr/lib/locale/xh_ZA.utf8/LC_COLLATE -#usr/lib/locale/xh_ZA.utf8/LC_CTYPE -#usr/lib/locale/xh_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/xh_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES -#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/xh_ZA.utf8/LC_MONETARY -#usr/lib/locale/xh_ZA.utf8/LC_NAME -#usr/lib/locale/xh_ZA.utf8/LC_NUMERIC -#usr/lib/locale/xh_ZA.utf8/LC_PAPER -#usr/lib/locale/xh_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/xh_ZA.utf8/LC_TIME -#usr/lib/locale/xh_ZA/LC_ADDRESS -#usr/lib/locale/xh_ZA/LC_COLLATE -#usr/lib/locale/xh_ZA/LC_CTYPE -#usr/lib/locale/xh_ZA/LC_IDENTIFICATION -#usr/lib/locale/xh_ZA/LC_MEASUREMENT -#usr/lib/locale/xh_ZA/LC_MESSAGES -#usr/lib/locale/xh_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/xh_ZA/LC_MONETARY -#usr/lib/locale/xh_ZA/LC_NAME -#usr/lib/locale/xh_ZA/LC_NUMERIC -#usr/lib/locale/xh_ZA/LC_PAPER -#usr/lib/locale/xh_ZA/LC_TELEPHONE -#usr/lib/locale/xh_ZA/LC_TIME -#usr/lib/locale/yi_US -#usr/lib/locale/yi_US.utf8 -#usr/lib/locale/yi_US.utf8/LC_ADDRESS -#usr/lib/locale/yi_US.utf8/LC_COLLATE -#usr/lib/locale/yi_US.utf8/LC_CTYPE -#usr/lib/locale/yi_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/yi_US.utf8/LC_MEASUREMENT -#usr/lib/locale/yi_US.utf8/LC_MESSAGES -#usr/lib/locale/yi_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yi_US.utf8/LC_MONETARY -#usr/lib/locale/yi_US.utf8/LC_NAME -#usr/lib/locale/yi_US.utf8/LC_NUMERIC -#usr/lib/locale/yi_US.utf8/LC_PAPER -#usr/lib/locale/yi_US.utf8/LC_TELEPHONE -#usr/lib/locale/yi_US.utf8/LC_TIME -#usr/lib/locale/yi_US/LC_ADDRESS -#usr/lib/locale/yi_US/LC_COLLATE -#usr/lib/locale/yi_US/LC_CTYPE -#usr/lib/locale/yi_US/LC_IDENTIFICATION -#usr/lib/locale/yi_US/LC_MEASUREMENT -#usr/lib/locale/yi_US/LC_MESSAGES -#usr/lib/locale/yi_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yi_US/LC_MONETARY -#usr/lib/locale/yi_US/LC_NAME -#usr/lib/locale/yi_US/LC_NUMERIC -#usr/lib/locale/yi_US/LC_PAPER -#usr/lib/locale/yi_US/LC_TELEPHONE -#usr/lib/locale/yi_US/LC_TIME -#usr/lib/locale/yo_NG -#usr/lib/locale/yo_NG/LC_ADDRESS -#usr/lib/locale/yo_NG/LC_COLLATE -#usr/lib/locale/yo_NG/LC_CTYPE -#usr/lib/locale/yo_NG/LC_IDENTIFICATION -#usr/lib/locale/yo_NG/LC_MEASUREMENT -#usr/lib/locale/yo_NG/LC_MESSAGES -#usr/lib/locale/yo_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yo_NG/LC_MONETARY -#usr/lib/locale/yo_NG/LC_NAME -#usr/lib/locale/yo_NG/LC_NUMERIC -#usr/lib/locale/yo_NG/LC_PAPER -#usr/lib/locale/yo_NG/LC_TELEPHONE -#usr/lib/locale/yo_NG/LC_TIME -#usr/lib/locale/zh_CN -#usr/lib/locale/zh_CN.gb18030 -#usr/lib/locale/zh_CN.gb18030/LC_ADDRESS -#usr/lib/locale/zh_CN.gb18030/LC_COLLATE -#usr/lib/locale/zh_CN.gb18030/LC_CTYPE -#usr/lib/locale/zh_CN.gb18030/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.gb18030/LC_MEASUREMENT -#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES -#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.gb18030/LC_MONETARY -#usr/lib/locale/zh_CN.gb18030/LC_NAME -#usr/lib/locale/zh_CN.gb18030/LC_NUMERIC -#usr/lib/locale/zh_CN.gb18030/LC_PAPER -#usr/lib/locale/zh_CN.gb18030/LC_TELEPHONE -#usr/lib/locale/zh_CN.gb18030/LC_TIME -#usr/lib/locale/zh_CN.gbk -#usr/lib/locale/zh_CN.gbk/LC_ADDRESS -#usr/lib/locale/zh_CN.gbk/LC_COLLATE -#usr/lib/locale/zh_CN.gbk/LC_CTYPE -#usr/lib/locale/zh_CN.gbk/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.gbk/LC_MEASUREMENT -#usr/lib/locale/zh_CN.gbk/LC_MESSAGES -#usr/lib/locale/zh_CN.gbk/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.gbk/LC_MONETARY -#usr/lib/locale/zh_CN.gbk/LC_NAME -#usr/lib/locale/zh_CN.gbk/LC_NUMERIC -#usr/lib/locale/zh_CN.gbk/LC_PAPER -#usr/lib/locale/zh_CN.gbk/LC_TELEPHONE -#usr/lib/locale/zh_CN.gbk/LC_TIME -#usr/lib/locale/zh_CN.utf8 -#usr/lib/locale/zh_CN.utf8/LC_ADDRESS -#usr/lib/locale/zh_CN.utf8/LC_COLLATE -#usr/lib/locale/zh_CN.utf8/LC_CTYPE -#usr/lib/locale/zh_CN.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_CN.utf8/LC_MESSAGES -#usr/lib/locale/zh_CN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.utf8/LC_MONETARY -#usr/lib/locale/zh_CN.utf8/LC_NAME -#usr/lib/locale/zh_CN.utf8/LC_NUMERIC -#usr/lib/locale/zh_CN.utf8/LC_PAPER -#usr/lib/locale/zh_CN.utf8/LC_TELEPHONE -#usr/lib/locale/zh_CN.utf8/LC_TIME -#usr/lib/locale/zh_CN/LC_ADDRESS -#usr/lib/locale/zh_CN/LC_COLLATE -#usr/lib/locale/zh_CN/LC_CTYPE -#usr/lib/locale/zh_CN/LC_IDENTIFICATION -#usr/lib/locale/zh_CN/LC_MEASUREMENT -#usr/lib/locale/zh_CN/LC_MESSAGES -#usr/lib/locale/zh_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN/LC_MONETARY -#usr/lib/locale/zh_CN/LC_NAME -#usr/lib/locale/zh_CN/LC_NUMERIC -#usr/lib/locale/zh_CN/LC_PAPER -#usr/lib/locale/zh_CN/LC_TELEPHONE -#usr/lib/locale/zh_CN/LC_TIME -#usr/lib/locale/zh_HK -#usr/lib/locale/zh_HK.utf8 -#usr/lib/locale/zh_HK.utf8/LC_ADDRESS -#usr/lib/locale/zh_HK.utf8/LC_COLLATE -#usr/lib/locale/zh_HK.utf8/LC_CTYPE -#usr/lib/locale/zh_HK.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_HK.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_HK.utf8/LC_MESSAGES -#usr/lib/locale/zh_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_HK.utf8/LC_MONETARY -#usr/lib/locale/zh_HK.utf8/LC_NAME -#usr/lib/locale/zh_HK.utf8/LC_NUMERIC -#usr/lib/locale/zh_HK.utf8/LC_PAPER -#usr/lib/locale/zh_HK.utf8/LC_TELEPHONE -#usr/lib/locale/zh_HK.utf8/LC_TIME -#usr/lib/locale/zh_HK/LC_ADDRESS -#usr/lib/locale/zh_HK/LC_COLLATE -#usr/lib/locale/zh_HK/LC_CTYPE -#usr/lib/locale/zh_HK/LC_IDENTIFICATION -#usr/lib/locale/zh_HK/LC_MEASUREMENT -#usr/lib/locale/zh_HK/LC_MESSAGES -#usr/lib/locale/zh_HK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_HK/LC_MONETARY -#usr/lib/locale/zh_HK/LC_NAME -#usr/lib/locale/zh_HK/LC_NUMERIC -#usr/lib/locale/zh_HK/LC_PAPER -#usr/lib/locale/zh_HK/LC_TELEPHONE -#usr/lib/locale/zh_HK/LC_TIME -#usr/lib/locale/zh_SG -#usr/lib/locale/zh_SG.gbk -#usr/lib/locale/zh_SG.gbk/LC_ADDRESS -#usr/lib/locale/zh_SG.gbk/LC_COLLATE -#usr/lib/locale/zh_SG.gbk/LC_CTYPE -#usr/lib/locale/zh_SG.gbk/LC_IDENTIFICATION -#usr/lib/locale/zh_SG.gbk/LC_MEASUREMENT -#usr/lib/locale/zh_SG.gbk/LC_MESSAGES -#usr/lib/locale/zh_SG.gbk/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG.gbk/LC_MONETARY -#usr/lib/locale/zh_SG.gbk/LC_NAME -#usr/lib/locale/zh_SG.gbk/LC_NUMERIC -#usr/lib/locale/zh_SG.gbk/LC_PAPER -#usr/lib/locale/zh_SG.gbk/LC_TELEPHONE -#usr/lib/locale/zh_SG.gbk/LC_TIME -#usr/lib/locale/zh_SG.utf8 -#usr/lib/locale/zh_SG.utf8/LC_ADDRESS -#usr/lib/locale/zh_SG.utf8/LC_COLLATE -#usr/lib/locale/zh_SG.utf8/LC_CTYPE -#usr/lib/locale/zh_SG.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_SG.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_SG.utf8/LC_MESSAGES -#usr/lib/locale/zh_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG.utf8/LC_MONETARY -#usr/lib/locale/zh_SG.utf8/LC_NAME -#usr/lib/locale/zh_SG.utf8/LC_NUMERIC -#usr/lib/locale/zh_SG.utf8/LC_PAPER -#usr/lib/locale/zh_SG.utf8/LC_TELEPHONE -#usr/lib/locale/zh_SG.utf8/LC_TIME -#usr/lib/locale/zh_SG/LC_ADDRESS -#usr/lib/locale/zh_SG/LC_COLLATE -#usr/lib/locale/zh_SG/LC_CTYPE -#usr/lib/locale/zh_SG/LC_IDENTIFICATION -#usr/lib/locale/zh_SG/LC_MEASUREMENT -#usr/lib/locale/zh_SG/LC_MESSAGES -#usr/lib/locale/zh_SG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG/LC_MONETARY -#usr/lib/locale/zh_SG/LC_NAME -#usr/lib/locale/zh_SG/LC_NUMERIC -#usr/lib/locale/zh_SG/LC_PAPER -#usr/lib/locale/zh_SG/LC_TELEPHONE -#usr/lib/locale/zh_SG/LC_TIME -#usr/lib/locale/zh_TW -#usr/lib/locale/zh_TW.euctw -#usr/lib/locale/zh_TW.euctw/LC_ADDRESS -#usr/lib/locale/zh_TW.euctw/LC_COLLATE -#usr/lib/locale/zh_TW.euctw/LC_CTYPE -#usr/lib/locale/zh_TW.euctw/LC_IDENTIFICATION -#usr/lib/locale/zh_TW.euctw/LC_MEASUREMENT -#usr/lib/locale/zh_TW.euctw/LC_MESSAGES -#usr/lib/locale/zh_TW.euctw/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW.euctw/LC_MONETARY -#usr/lib/locale/zh_TW.euctw/LC_NAME -#usr/lib/locale/zh_TW.euctw/LC_NUMERIC -#usr/lib/locale/zh_TW.euctw/LC_PAPER -#usr/lib/locale/zh_TW.euctw/LC_TELEPHONE -#usr/lib/locale/zh_TW.euctw/LC_TIME -#usr/lib/locale/zh_TW.utf8 -#usr/lib/locale/zh_TW.utf8/LC_ADDRESS -#usr/lib/locale/zh_TW.utf8/LC_COLLATE -#usr/lib/locale/zh_TW.utf8/LC_CTYPE -#usr/lib/locale/zh_TW.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_TW.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_TW.utf8/LC_MESSAGES -#usr/lib/locale/zh_TW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW.utf8/LC_MONETARY -#usr/lib/locale/zh_TW.utf8/LC_NAME -#usr/lib/locale/zh_TW.utf8/LC_NUMERIC -#usr/lib/locale/zh_TW.utf8/LC_PAPER -#usr/lib/locale/zh_TW.utf8/LC_TELEPHONE -#usr/lib/locale/zh_TW.utf8/LC_TIME -#usr/lib/locale/zh_TW/LC_ADDRESS -#usr/lib/locale/zh_TW/LC_COLLATE -#usr/lib/locale/zh_TW/LC_CTYPE -#usr/lib/locale/zh_TW/LC_IDENTIFICATION -#usr/lib/locale/zh_TW/LC_MEASUREMENT -#usr/lib/locale/zh_TW/LC_MESSAGES -#usr/lib/locale/zh_TW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW/LC_MONETARY -#usr/lib/locale/zh_TW/LC_NAME -#usr/lib/locale/zh_TW/LC_NUMERIC -#usr/lib/locale/zh_TW/LC_PAPER -#usr/lib/locale/zh_TW/LC_TELEPHONE -#usr/lib/locale/zh_TW/LC_TIME -#usr/lib/locale/zu_ZA -#usr/lib/locale/zu_ZA.utf8 -#usr/lib/locale/zu_ZA.utf8/LC_ADDRESS -#usr/lib/locale/zu_ZA.utf8/LC_COLLATE -#usr/lib/locale/zu_ZA.utf8/LC_CTYPE -#usr/lib/locale/zu_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/zu_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES -#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zu_ZA.utf8/LC_MONETARY -#usr/lib/locale/zu_ZA.utf8/LC_NAME -#usr/lib/locale/zu_ZA.utf8/LC_NUMERIC -#usr/lib/locale/zu_ZA.utf8/LC_PAPER -#usr/lib/locale/zu_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/zu_ZA.utf8/LC_TIME -#usr/lib/locale/zu_ZA/LC_ADDRESS -#usr/lib/locale/zu_ZA/LC_COLLATE -#usr/lib/locale/zu_ZA/LC_CTYPE -#usr/lib/locale/zu_ZA/LC_IDENTIFICATION -#usr/lib/locale/zu_ZA/LC_MEASUREMENT -#usr/lib/locale/zu_ZA/LC_MESSAGES -#usr/lib/locale/zu_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zu_ZA/LC_MONETARY -#usr/lib/locale/zu_ZA/LC_NAME -#usr/lib/locale/zu_ZA/LC_NUMERIC -#usr/lib/locale/zu_ZA/LC_PAPER -#usr/lib/locale/zu_ZA/LC_TELEPHONE -#usr/lib/locale/zu_ZA/LC_TIME +usr/lib/locale/locale-archive #usr/sbin/iconvconfig #usr/sbin/nscd -#usr/sbin/rpcinfo #usr/sbin/zdump #usr/sbin/zic #usr/share/i18n @@ -6736,6 +866,11 @@ usr/lib/locale #usr/share/i18n/charmaps/CP1257.gz #usr/share/i18n/charmaps/CP1258.gz #usr/share/i18n/charmaps/CP737.gz +#usr/share/i18n/charmaps/CP770.gz +#usr/share/i18n/charmaps/CP771.gz +#usr/share/i18n/charmaps/CP772.gz +#usr/share/i18n/charmaps/CP773.gz +#usr/share/i18n/charmaps/CP774.gz #usr/share/i18n/charmaps/CP775.gz #usr/share/i18n/charmaps/CP949.gz #usr/share/i18n/charmaps/CSA_Z243.4-1985-1.gz @@ -6949,8 +1084,10 @@ usr/lib/locale #usr/share/i18n/locales/aa_ER@saaho #usr/share/i18n/locales/aa_ET #usr/share/i18n/locales/af_ZA +#usr/share/i18n/locales/ak_GH #usr/share/i18n/locales/am_ET #usr/share/i18n/locales/an_ES +#usr/share/i18n/locales/anp_IN #usr/share/i18n/locales/ar_AE #usr/share/i18n/locales/ar_BH #usr/share/i18n/locales/ar_DZ @@ -6966,23 +1103,29 @@ usr/lib/locale #usr/share/i18n/locales/ar_QA #usr/share/i18n/locales/ar_SA #usr/share/i18n/locales/ar_SD +#usr/share/i18n/locales/ar_SS #usr/share/i18n/locales/ar_SY #usr/share/i18n/locales/ar_TN #usr/share/i18n/locales/ar_YE #usr/share/i18n/locales/as_IN #usr/share/i18n/locales/ast_ES +#usr/share/i18n/locales/ayc_PE #usr/share/i18n/locales/az_AZ #usr/share/i18n/locales/be_BY #usr/share/i18n/locales/be_BY@latin +#usr/share/i18n/locales/bem_ZM #usr/share/i18n/locales/ber_DZ #usr/share/i18n/locales/ber_MA #usr/share/i18n/locales/bg_BG +#usr/share/i18n/locales/bhb_IN +#usr/share/i18n/locales/bho_IN #usr/share/i18n/locales/bn_BD #usr/share/i18n/locales/bn_IN #usr/share/i18n/locales/bo_CN #usr/share/i18n/locales/bo_IN #usr/share/i18n/locales/br_FR #usr/share/i18n/locales/br_FR@euro +#usr/share/i18n/locales/brx_IN #usr/share/i18n/locales/bs_BA #usr/share/i18n/locales/byn_ER #usr/share/i18n/locales/ca_AD @@ -6990,6 +1133,9 @@ usr/lib/locale #usr/share/i18n/locales/ca_ES@euro #usr/share/i18n/locales/ca_FR #usr/share/i18n/locales/ca_IT +#usr/share/i18n/locales/ce_RU +#usr/share/i18n/locales/chr_US +#usr/share/i18n/locales/cmn_TW #usr/share/i18n/locales/crh_UA #usr/share/i18n/locales/cs_CZ #usr/share/i18n/locales/csb_PL @@ -7003,8 +1149,11 @@ usr/lib/locale #usr/share/i18n/locales/de_CH #usr/share/i18n/locales/de_DE #usr/share/i18n/locales/de_DE@euro +#usr/share/i18n/locales/de_IT +#usr/share/i18n/locales/de_LI #usr/share/i18n/locales/de_LU #usr/share/i18n/locales/de_LU@euro +#usr/share/i18n/locales/doi_IN #usr/share/i18n/locales/dv_MV #usr/share/i18n/locales/dz_BT #usr/share/i18n/locales/el_CY @@ -7019,6 +1168,7 @@ usr/lib/locale #usr/share/i18n/locales/en_HK #usr/share/i18n/locales/en_IE #usr/share/i18n/locales/en_IE@euro +#usr/share/i18n/locales/en_IL #usr/share/i18n/locales/en_IN #usr/share/i18n/locales/en_NG #usr/share/i18n/locales/en_NZ @@ -7026,12 +1176,15 @@ usr/lib/locale #usr/share/i18n/locales/en_SG #usr/share/i18n/locales/en_US #usr/share/i18n/locales/en_ZA +#usr/share/i18n/locales/en_ZM #usr/share/i18n/locales/en_ZW +#usr/share/i18n/locales/eo #usr/share/i18n/locales/es_AR #usr/share/i18n/locales/es_BO #usr/share/i18n/locales/es_CL #usr/share/i18n/locales/es_CO #usr/share/i18n/locales/es_CR +#usr/share/i18n/locales/es_CU #usr/share/i18n/locales/es_DO #usr/share/i18n/locales/es_EC #usr/share/i18n/locales/es_ES @@ -7052,8 +1205,8 @@ usr/lib/locale #usr/share/i18n/locales/eu_ES #usr/share/i18n/locales/eu_ES@euro #usr/share/i18n/locales/fa_IR +#usr/share/i18n/locales/ff_SN #usr/share/i18n/locales/fi_FI -#usr/share/i18n/locales/fi_FI.orig #usr/share/i18n/locales/fi_FI@euro #usr/share/i18n/locales/fil_PH #usr/share/i18n/locales/fo_FO @@ -7080,6 +1233,7 @@ usr/lib/locale #usr/share/i18n/locales/gu_IN #usr/share/i18n/locales/gv_GB #usr/share/i18n/locales/ha_NG +#usr/share/i18n/locales/hak_TW #usr/share/i18n/locales/he_IL #usr/share/i18n/locales/hi_IN #usr/share/i18n/locales/hne_IN @@ -7089,6 +1243,7 @@ usr/lib/locale #usr/share/i18n/locales/hu_HU #usr/share/i18n/locales/hy_AM #usr/share/i18n/locales/i18n +#usr/share/i18n/locales/ia_FR #usr/share/i18n/locales/id_ID #usr/share/i18n/locales/ig_NG #usr/share/i18n/locales/ik_CA @@ -7100,7 +1255,6 @@ usr/lib/locale #usr/share/i18n/locales/it_IT #usr/share/i18n/locales/it_IT@euro #usr/share/i18n/locales/iu_CA -#usr/share/i18n/locales/iw_IL #usr/share/i18n/locales/ja_JP #usr/share/i18n/locales/ka_GE #usr/share/i18n/locales/kk_KZ @@ -7114,57 +1268,73 @@ usr/lib/locale #usr/share/i18n/locales/ku_TR #usr/share/i18n/locales/kw_GB #usr/share/i18n/locales/ky_KG +#usr/share/i18n/locales/lb_LU #usr/share/i18n/locales/lg_UG #usr/share/i18n/locales/li_BE #usr/share/i18n/locales/li_NL +#usr/share/i18n/locales/lij_IT +#usr/share/i18n/locales/ln_CD #usr/share/i18n/locales/lo_LA #usr/share/i18n/locales/lt_LT #usr/share/i18n/locales/lv_LV +#usr/share/i18n/locales/lzh_TW +#usr/share/i18n/locales/mag_IN #usr/share/i18n/locales/mai_IN #usr/share/i18n/locales/mg_MG +#usr/share/i18n/locales/mhr_RU #usr/share/i18n/locales/mi_NZ #usr/share/i18n/locales/mk_MK #usr/share/i18n/locales/ml_IN #usr/share/i18n/locales/mn_MN +#usr/share/i18n/locales/mni_IN #usr/share/i18n/locales/mr_IN #usr/share/i18n/locales/ms_MY #usr/share/i18n/locales/mt_MT #usr/share/i18n/locales/my_MM +#usr/share/i18n/locales/nan_TW #usr/share/i18n/locales/nan_TW@latin #usr/share/i18n/locales/nb_NO #usr/share/i18n/locales/nds_DE #usr/share/i18n/locales/nds_NL #usr/share/i18n/locales/ne_NP +#usr/share/i18n/locales/nhn_MX +#usr/share/i18n/locales/niu_NU +#usr/share/i18n/locales/niu_NZ #usr/share/i18n/locales/nl_AW #usr/share/i18n/locales/nl_BE #usr/share/i18n/locales/nl_BE@euro #usr/share/i18n/locales/nl_NL #usr/share/i18n/locales/nl_NL@euro #usr/share/i18n/locales/nn_NO -#usr/share/i18n/locales/no_NO #usr/share/i18n/locales/nr_ZA #usr/share/i18n/locales/nso_ZA #usr/share/i18n/locales/oc_FR #usr/share/i18n/locales/om_ET #usr/share/i18n/locales/om_KE #usr/share/i18n/locales/or_IN +#usr/share/i18n/locales/os_RU #usr/share/i18n/locales/pa_IN #usr/share/i18n/locales/pa_PK -#usr/share/i18n/locales/pap_AN +#usr/share/i18n/locales/pap_AW +#usr/share/i18n/locales/pap_CW #usr/share/i18n/locales/pl_PL #usr/share/i18n/locales/ps_AF #usr/share/i18n/locales/pt_BR #usr/share/i18n/locales/pt_PT #usr/share/i18n/locales/pt_PT@euro +#usr/share/i18n/locales/quz_PE +#usr/share/i18n/locales/raj_IN #usr/share/i18n/locales/ro_RO #usr/share/i18n/locales/ru_RU #usr/share/i18n/locales/ru_UA #usr/share/i18n/locales/rw_RW #usr/share/i18n/locales/sa_IN +#usr/share/i18n/locales/sat_IN #usr/share/i18n/locales/sc_IT #usr/share/i18n/locales/sd_IN #usr/share/i18n/locales/sd_IN@devanagari #usr/share/i18n/locales/se_NO +#usr/share/i18n/locales/sgs_LT #usr/share/i18n/locales/shs_CA #usr/share/i18n/locales/si_LK #usr/share/i18n/locales/sid_ET @@ -7184,10 +1354,16 @@ usr/lib/locale #usr/share/i18n/locales/sv_FI #usr/share/i18n/locales/sv_FI@euro #usr/share/i18n/locales/sv_SE +#usr/share/i18n/locales/sw_KE +#usr/share/i18n/locales/sw_TZ +#usr/share/i18n/locales/szl_PL #usr/share/i18n/locales/ta_IN +#usr/share/i18n/locales/ta_LK +#usr/share/i18n/locales/tcy_IN #usr/share/i18n/locales/te_IN #usr/share/i18n/locales/tg_TJ #usr/share/i18n/locales/th_TH +#usr/share/i18n/locales/the_NP #usr/share/i18n/locales/ti_ER #usr/share/i18n/locales/ti_ET #usr/share/i18n/locales/tig_ER @@ -7213,6 +1389,7 @@ usr/lib/locale #usr/share/i18n/locales/tt_RU@iqtelif #usr/share/i18n/locales/ug_CN #usr/share/i18n/locales/uk_UA +#usr/share/i18n/locales/unm_US #usr/share/i18n/locales/ur_IN #usr/share/i18n/locales/ur_PK #usr/share/i18n/locales/uz_UZ @@ -7221,11 +1398,13 @@ usr/lib/locale #usr/share/i18n/locales/vi_VN #usr/share/i18n/locales/wa_BE #usr/share/i18n/locales/wa_BE@euro +#usr/share/i18n/locales/wae_CH #usr/share/i18n/locales/wal_ET #usr/share/i18n/locales/wo_SN #usr/share/i18n/locales/xh_ZA #usr/share/i18n/locales/yi_US #usr/share/i18n/locales/yo_NG +#usr/share/i18n/locales/yue_HK #usr/share/i18n/locales/zh_CN #usr/share/i18n/locales/zh_HK #usr/share/i18n/locales/zh_SG @@ -7236,6 +1415,10 @@ usr/lib/locale #usr/share/info/libc.info-1 #usr/share/info/libc.info-10 #usr/share/info/libc.info-11 +#usr/share/info/libc.info-12 +#usr/share/info/libc.info-13 +#usr/share/info/libc.info-14 +#usr/share/info/libc.info-15 #usr/share/info/libc.info-2 #usr/share/info/libc.info-3 #usr/share/info/libc.info-4 @@ -7268,6 +1451,9 @@ usr/lib/locale #usr/share/locale/en_GB #usr/share/locale/en_GB/LC_MESSAGES #usr/share/locale/en_GB/LC_MESSAGES/libc.mo +#usr/share/locale/eo +#usr/share/locale/eo/LC_MESSAGES +#usr/share/locale/eo/LC_MESSAGES/libc.mo #usr/share/locale/es #usr/share/locale/es/LC_MESSAGES #usr/share/locale/es/LC_MESSAGES/libc.mo @@ -7286,6 +1472,9 @@ usr/lib/locale #usr/share/locale/hu #usr/share/locale/hu/LC_MESSAGES #usr/share/locale/hu/LC_MESSAGES/libc.mo +#usr/share/locale/ia +#usr/share/locale/ia/LC_MESSAGES +#usr/share/locale/ia/LC_MESSAGES/libc.mo #usr/share/locale/id #usr/share/locale/id/LC_MESSAGES #usr/share/locale/id/LC_MESSAGES/libc.mo @@ -7323,12 +1512,18 @@ usr/lib/locale #usr/share/locale/sk #usr/share/locale/sk/LC_MESSAGES #usr/share/locale/sk/LC_MESSAGES/libc.mo +#usr/share/locale/sl +#usr/share/locale/sl/LC_MESSAGES +#usr/share/locale/sl/LC_MESSAGES/libc.mo #usr/share/locale/sv #usr/share/locale/sv/LC_MESSAGES #usr/share/locale/sv/LC_MESSAGES/libc.mo #usr/share/locale/tr #usr/share/locale/tr/LC_MESSAGES #usr/share/locale/tr/LC_MESSAGES/libc.mo +#usr/share/locale/uk +#usr/share/locale/uk/LC_MESSAGES +#usr/share/locale/uk/LC_MESSAGES/libc.mo #usr/share/locale/vi #usr/share/locale/vi/LC_MESSAGES #usr/share/locale/vi/LC_MESSAGES/libc.mo @@ -7340,3 +1535,5 @@ usr/lib/locale #usr/share/locale/zh_TW/LC_MESSAGES/libc.mo #var/cache/ldconfig #var/cache/ldconfig/aux-cache +#var/db +#var/db/Makefile From d95066194d9621c2a4cabc2ec7f0eef64f7cf58e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 20:47:57 +0200 Subject: [PATCH 411/464] Rootfile update for boost Signed-off-by: Michael Tremer --- config/rootfiles/common/boost | 6 ------ 1 file changed, 6 deletions(-) diff --git a/config/rootfiles/common/boost b/config/rootfiles/common/boost index 39a9c0576..3ce23a71c 100644 --- a/config/rootfiles/common/boost +++ b/config/rootfiles/common/boost @@ -13629,12 +13629,6 @@ usr/lib/libboost_program_options-mt.so.1.64.0 #usr/lib/libboost_program_options.a #usr/lib/libboost_program_options.so usr/lib/libboost_program_options.so.1.64.0 -#usr/lib/libboost_python-mt.a -#usr/lib/libboost_python-mt.so -usr/lib/libboost_python-mt.so.1.64.0 -#usr/lib/libboost_python.a -#usr/lib/libboost_python.so -usr/lib/libboost_python.so.1.64.0 #usr/lib/libboost_random-mt.a #usr/lib/libboost_random-mt.so usr/lib/libboost_random-mt.so.1.64.0 From b62dc5130b66f8a2ef37a98fe1902fd1a5411622 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 19 May 2017 18:45:09 +0200 Subject: [PATCH 412/464] ncurses: Rootfile update Signed-off-by: Michael Tremer --- config/rootfiles/common/ncurses | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config/rootfiles/common/ncurses b/config/rootfiles/common/ncurses index 4f34e39dd..0b7cff8b1 100644 --- a/config/rootfiles/common/ncurses +++ b/config/rootfiles/common/ncurses @@ -49,14 +49,9 @@ usr/lib/libncursesw.so.6.0 usr/lib/libpanelw.so.6 usr/lib/libpanelw.so.6.0 #usr/lib/pkgconfig/form.pc -#usr/lib/pkgconfig/formw.pc #usr/lib/pkgconfig/menu.pc -#usr/lib/pkgconfig/menuw.pc -#usr/lib/pkgconfig/ncurses++w.pc #usr/lib/pkgconfig/ncurses.pc -#usr/lib/pkgconfig/ncursesw.pc #usr/lib/pkgconfig/panel.pc -#usr/lib/pkgconfig/panelw.pc #usr/lib/terminfo #usr/share/man/man1/captoinfo.1m #usr/share/man/man1/clear.1 From 278ecf46cac682bb1c327272a98806d8e90f3a7d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 22 May 2017 19:59:23 +0100 Subject: [PATCH 413/464] Rootfile update for gcc (x86_64) Signed-off-by: Michael Tremer --- config/rootfiles/common/x86_64/gcc | 2458 +++++++++++++++------------- 1 file changed, 1356 insertions(+), 1102 deletions(-) diff --git a/config/rootfiles/common/x86_64/gcc b/config/rootfiles/common/x86_64/gcc index ccd3a75d6..d30ead1cf 100644 --- a/config/rootfiles/common/x86_64/gcc +++ b/config/rootfiles/common/x86_64/gcc @@ -8,1104 +8,1350 @@ #usr/bin/gcc-nm #usr/bin/gcc-ranlib #usr/bin/gcov -#usr/bin/x86_64-unknown-linux-gnu-c++ -#usr/bin/x86_64-unknown-linux-gnu-g++ -#usr/bin/x86_64-unknown-linux-gnu-gcc -#usr/bin/x86_64-unknown-linux-gnu-gcc-4.9.4 -#usr/bin/x86_64-unknown-linux-gnu-gcc-ar -#usr/bin/x86_64-unknown-linux-gnu-gcc-nm -#usr/bin/x86_64-unknown-linux-gnu-gcc-ranlib +#usr/bin/gcov-tool +#usr/bin/x86_64-pc-linux-gnu-c++ +#usr/bin/x86_64-pc-linux-gnu-g++ +#usr/bin/x86_64-pc-linux-gnu-gcc +#usr/bin/x86_64-pc-linux-gnu-gcc-6.3.0 +#usr/bin/x86_64-pc-linux-gnu-gcc-ar +#usr/bin/x86_64-pc-linux-gnu-gcc-nm +#usr/bin/x86_64-pc-linux-gnu-gcc-ranlib #usr/include/c++ -#usr/include/c++/4.9.4 -#usr/include/c++/4.9.4/algorithm -#usr/include/c++/4.9.4/array -#usr/include/c++/4.9.4/atomic -#usr/include/c++/4.9.4/backward -#usr/include/c++/4.9.4/backward/auto_ptr.h -#usr/include/c++/4.9.4/backward/backward_warning.h -#usr/include/c++/4.9.4/backward/binders.h -#usr/include/c++/4.9.4/backward/hash_fun.h -#usr/include/c++/4.9.4/backward/hash_map -#usr/include/c++/4.9.4/backward/hash_set -#usr/include/c++/4.9.4/backward/hashtable.h -#usr/include/c++/4.9.4/backward/strstream -#usr/include/c++/4.9.4/bits -#usr/include/c++/4.9.4/bits/algorithmfwd.h -#usr/include/c++/4.9.4/bits/alloc_traits.h -#usr/include/c++/4.9.4/bits/allocator.h -#usr/include/c++/4.9.4/bits/atomic_base.h -#usr/include/c++/4.9.4/bits/atomic_lockfree_defines.h -#usr/include/c++/4.9.4/bits/basic_ios.h -#usr/include/c++/4.9.4/bits/basic_ios.tcc -#usr/include/c++/4.9.4/bits/basic_string.h -#usr/include/c++/4.9.4/bits/basic_string.tcc -#usr/include/c++/4.9.4/bits/boost_concept_check.h -#usr/include/c++/4.9.4/bits/c++0x_warning.h -#usr/include/c++/4.9.4/bits/c++14_warning.h -#usr/include/c++/4.9.4/bits/char_traits.h -#usr/include/c++/4.9.4/bits/codecvt.h -#usr/include/c++/4.9.4/bits/concept_check.h -#usr/include/c++/4.9.4/bits/cpp_type_traits.h -#usr/include/c++/4.9.4/bits/cxxabi_forced.h -#usr/include/c++/4.9.4/bits/deque.tcc -#usr/include/c++/4.9.4/bits/enable_special_members.h -#usr/include/c++/4.9.4/bits/exception_defines.h -#usr/include/c++/4.9.4/bits/exception_ptr.h -#usr/include/c++/4.9.4/bits/forward_list.h -#usr/include/c++/4.9.4/bits/forward_list.tcc -#usr/include/c++/4.9.4/bits/fstream.tcc -#usr/include/c++/4.9.4/bits/functexcept.h -#usr/include/c++/4.9.4/bits/functional_hash.h -#usr/include/c++/4.9.4/bits/gslice.h -#usr/include/c++/4.9.4/bits/gslice_array.h -#usr/include/c++/4.9.4/bits/hash_bytes.h -#usr/include/c++/4.9.4/bits/hashtable.h -#usr/include/c++/4.9.4/bits/hashtable_policy.h -#usr/include/c++/4.9.4/bits/indirect_array.h -#usr/include/c++/4.9.4/bits/ios_base.h -#usr/include/c++/4.9.4/bits/istream.tcc -#usr/include/c++/4.9.4/bits/list.tcc -#usr/include/c++/4.9.4/bits/locale_classes.h -#usr/include/c++/4.9.4/bits/locale_classes.tcc -#usr/include/c++/4.9.4/bits/locale_facets.h -#usr/include/c++/4.9.4/bits/locale_facets.tcc -#usr/include/c++/4.9.4/bits/locale_facets_nonio.h -#usr/include/c++/4.9.4/bits/locale_facets_nonio.tcc -#usr/include/c++/4.9.4/bits/localefwd.h -#usr/include/c++/4.9.4/bits/mask_array.h -#usr/include/c++/4.9.4/bits/memoryfwd.h -#usr/include/c++/4.9.4/bits/move.h -#usr/include/c++/4.9.4/bits/nested_exception.h -#usr/include/c++/4.9.4/bits/ostream.tcc -#usr/include/c++/4.9.4/bits/ostream_insert.h -#usr/include/c++/4.9.4/bits/parse_numbers.h -#usr/include/c++/4.9.4/bits/postypes.h -#usr/include/c++/4.9.4/bits/predefined_ops.h -#usr/include/c++/4.9.4/bits/ptr_traits.h -#usr/include/c++/4.9.4/bits/random.h -#usr/include/c++/4.9.4/bits/random.tcc -#usr/include/c++/4.9.4/bits/range_access.h -#usr/include/c++/4.9.4/bits/regex.h -#usr/include/c++/4.9.4/bits/regex.tcc -#usr/include/c++/4.9.4/bits/regex_automaton.h -#usr/include/c++/4.9.4/bits/regex_automaton.tcc -#usr/include/c++/4.9.4/bits/regex_compiler.h -#usr/include/c++/4.9.4/bits/regex_compiler.tcc -#usr/include/c++/4.9.4/bits/regex_constants.h -#usr/include/c++/4.9.4/bits/regex_error.h -#usr/include/c++/4.9.4/bits/regex_executor.h -#usr/include/c++/4.9.4/bits/regex_executor.tcc -#usr/include/c++/4.9.4/bits/regex_scanner.h -#usr/include/c++/4.9.4/bits/regex_scanner.tcc -#usr/include/c++/4.9.4/bits/shared_ptr.h -#usr/include/c++/4.9.4/bits/shared_ptr_base.h -#usr/include/c++/4.9.4/bits/slice_array.h -#usr/include/c++/4.9.4/bits/sstream.tcc -#usr/include/c++/4.9.4/bits/stl_algo.h -#usr/include/c++/4.9.4/bits/stl_algobase.h -#usr/include/c++/4.9.4/bits/stl_bvector.h -#usr/include/c++/4.9.4/bits/stl_construct.h -#usr/include/c++/4.9.4/bits/stl_deque.h -#usr/include/c++/4.9.4/bits/stl_function.h -#usr/include/c++/4.9.4/bits/stl_heap.h -#usr/include/c++/4.9.4/bits/stl_iterator.h -#usr/include/c++/4.9.4/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.9.4/bits/stl_iterator_base_types.h -#usr/include/c++/4.9.4/bits/stl_list.h -#usr/include/c++/4.9.4/bits/stl_map.h -#usr/include/c++/4.9.4/bits/stl_multimap.h -#usr/include/c++/4.9.4/bits/stl_multiset.h -#usr/include/c++/4.9.4/bits/stl_numeric.h -#usr/include/c++/4.9.4/bits/stl_pair.h -#usr/include/c++/4.9.4/bits/stl_queue.h -#usr/include/c++/4.9.4/bits/stl_raw_storage_iter.h -#usr/include/c++/4.9.4/bits/stl_relops.h -#usr/include/c++/4.9.4/bits/stl_set.h -#usr/include/c++/4.9.4/bits/stl_stack.h -#usr/include/c++/4.9.4/bits/stl_tempbuf.h -#usr/include/c++/4.9.4/bits/stl_tree.h -#usr/include/c++/4.9.4/bits/stl_uninitialized.h -#usr/include/c++/4.9.4/bits/stl_vector.h -#usr/include/c++/4.9.4/bits/stream_iterator.h -#usr/include/c++/4.9.4/bits/streambuf.tcc -#usr/include/c++/4.9.4/bits/streambuf_iterator.h -#usr/include/c++/4.9.4/bits/stringfwd.h -#usr/include/c++/4.9.4/bits/unique_ptr.h -#usr/include/c++/4.9.4/bits/unordered_map.h -#usr/include/c++/4.9.4/bits/unordered_set.h -#usr/include/c++/4.9.4/bits/uses_allocator.h -#usr/include/c++/4.9.4/bits/valarray_after.h -#usr/include/c++/4.9.4/bits/valarray_array.h -#usr/include/c++/4.9.4/bits/valarray_array.tcc -#usr/include/c++/4.9.4/bits/valarray_before.h -#usr/include/c++/4.9.4/bits/vector.tcc -#usr/include/c++/4.9.4/bitset -#usr/include/c++/4.9.4/cassert -#usr/include/c++/4.9.4/ccomplex -#usr/include/c++/4.9.4/cctype -#usr/include/c++/4.9.4/cerrno -#usr/include/c++/4.9.4/cfenv -#usr/include/c++/4.9.4/cfloat -#usr/include/c++/4.9.4/chrono -#usr/include/c++/4.9.4/cinttypes -#usr/include/c++/4.9.4/ciso646 -#usr/include/c++/4.9.4/climits -#usr/include/c++/4.9.4/clocale -#usr/include/c++/4.9.4/cmath -#usr/include/c++/4.9.4/complex -#usr/include/c++/4.9.4/complex.h -#usr/include/c++/4.9.4/condition_variable -#usr/include/c++/4.9.4/csetjmp -#usr/include/c++/4.9.4/csignal -#usr/include/c++/4.9.4/cstdalign -#usr/include/c++/4.9.4/cstdarg -#usr/include/c++/4.9.4/cstdbool -#usr/include/c++/4.9.4/cstddef -#usr/include/c++/4.9.4/cstdint -#usr/include/c++/4.9.4/cstdio -#usr/include/c++/4.9.4/cstdlib -#usr/include/c++/4.9.4/cstring -#usr/include/c++/4.9.4/ctgmath -#usr/include/c++/4.9.4/ctime -#usr/include/c++/4.9.4/cwchar -#usr/include/c++/4.9.4/cwctype -#usr/include/c++/4.9.4/cxxabi.h -#usr/include/c++/4.9.4/debug -#usr/include/c++/4.9.4/debug/array -#usr/include/c++/4.9.4/debug/bitset -#usr/include/c++/4.9.4/debug/debug.h -#usr/include/c++/4.9.4/debug/deque -#usr/include/c++/4.9.4/debug/formatter.h -#usr/include/c++/4.9.4/debug/forward_list -#usr/include/c++/4.9.4/debug/functions.h -#usr/include/c++/4.9.4/debug/list -#usr/include/c++/4.9.4/debug/macros.h -#usr/include/c++/4.9.4/debug/map -#usr/include/c++/4.9.4/debug/map.h -#usr/include/c++/4.9.4/debug/multimap.h -#usr/include/c++/4.9.4/debug/multiset.h -#usr/include/c++/4.9.4/debug/safe_base.h -#usr/include/c++/4.9.4/debug/safe_iterator.h -#usr/include/c++/4.9.4/debug/safe_iterator.tcc -#usr/include/c++/4.9.4/debug/safe_local_iterator.h -#usr/include/c++/4.9.4/debug/safe_local_iterator.tcc -#usr/include/c++/4.9.4/debug/safe_sequence.h -#usr/include/c++/4.9.4/debug/safe_sequence.tcc -#usr/include/c++/4.9.4/debug/safe_unordered_base.h -#usr/include/c++/4.9.4/debug/safe_unordered_container.h -#usr/include/c++/4.9.4/debug/safe_unordered_container.tcc -#usr/include/c++/4.9.4/debug/set -#usr/include/c++/4.9.4/debug/set.h -#usr/include/c++/4.9.4/debug/string -#usr/include/c++/4.9.4/debug/unordered_map -#usr/include/c++/4.9.4/debug/unordered_set -#usr/include/c++/4.9.4/debug/vector -#usr/include/c++/4.9.4/decimal -#usr/include/c++/4.9.4/decimal/decimal -#usr/include/c++/4.9.4/decimal/decimal.h -#usr/include/c++/4.9.4/deque -#usr/include/c++/4.9.4/exception -#usr/include/c++/4.9.4/experimental -#usr/include/c++/4.9.4/experimental/optional -#usr/include/c++/4.9.4/experimental/string_view -#usr/include/c++/4.9.4/experimental/string_view.tcc -#usr/include/c++/4.9.4/ext -#usr/include/c++/4.9.4/ext/algorithm -#usr/include/c++/4.9.4/ext/aligned_buffer.h -#usr/include/c++/4.9.4/ext/alloc_traits.h -#usr/include/c++/4.9.4/ext/array_allocator.h -#usr/include/c++/4.9.4/ext/atomicity.h -#usr/include/c++/4.9.4/ext/bitmap_allocator.h -#usr/include/c++/4.9.4/ext/cast.h -#usr/include/c++/4.9.4/ext/cmath -#usr/include/c++/4.9.4/ext/codecvt_specializations.h -#usr/include/c++/4.9.4/ext/concurrence.h -#usr/include/c++/4.9.4/ext/debug_allocator.h -#usr/include/c++/4.9.4/ext/enc_filebuf.h -#usr/include/c++/4.9.4/ext/extptr_allocator.h -#usr/include/c++/4.9.4/ext/functional -#usr/include/c++/4.9.4/ext/hash_map -#usr/include/c++/4.9.4/ext/hash_set -#usr/include/c++/4.9.4/ext/iterator -#usr/include/c++/4.9.4/ext/malloc_allocator.h -#usr/include/c++/4.9.4/ext/memory -#usr/include/c++/4.9.4/ext/mt_allocator.h -#usr/include/c++/4.9.4/ext/new_allocator.h -#usr/include/c++/4.9.4/ext/numeric -#usr/include/c++/4.9.4/ext/numeric_traits.h -#usr/include/c++/4.9.4/ext/pb_ds -#usr/include/c++/4.9.4/ext/pb_ds/assoc_container.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_pred.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/resize_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/branch_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cond_dealtor.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/container_base_dispatch.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/debug_map_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/lu_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/priority_queue_base_dispatch.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/standard_policies.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_trace_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/type_utils.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/types_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/exception.hpp -#usr/include/c++/4.9.4/ext/pb_ds/hash_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/list_update_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/priority_queue.hpp -#usr/include/c++/4.9.4/ext/pb_ds/tag_and_trait.hpp -#usr/include/c++/4.9.4/ext/pb_ds/tree_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/trie_policy.hpp -#usr/include/c++/4.9.4/ext/pod_char_traits.h -#usr/include/c++/4.9.4/ext/pointer.h -#usr/include/c++/4.9.4/ext/pool_allocator.h -#usr/include/c++/4.9.4/ext/random -#usr/include/c++/4.9.4/ext/random.tcc -#usr/include/c++/4.9.4/ext/rb_tree -#usr/include/c++/4.9.4/ext/rc_string_base.h -#usr/include/c++/4.9.4/ext/rope -#usr/include/c++/4.9.4/ext/ropeimpl.h -#usr/include/c++/4.9.4/ext/slist -#usr/include/c++/4.9.4/ext/sso_string_base.h -#usr/include/c++/4.9.4/ext/stdio_filebuf.h -#usr/include/c++/4.9.4/ext/stdio_sync_filebuf.h -#usr/include/c++/4.9.4/ext/string_conversions.h -#usr/include/c++/4.9.4/ext/throw_allocator.h -#usr/include/c++/4.9.4/ext/type_traits.h -#usr/include/c++/4.9.4/ext/typelist.h -#usr/include/c++/4.9.4/ext/vstring.h -#usr/include/c++/4.9.4/ext/vstring.tcc -#usr/include/c++/4.9.4/ext/vstring_fwd.h -#usr/include/c++/4.9.4/ext/vstring_util.h -#usr/include/c++/4.9.4/fenv.h -#usr/include/c++/4.9.4/forward_list -#usr/include/c++/4.9.4/fstream -#usr/include/c++/4.9.4/functional -#usr/include/c++/4.9.4/future -#usr/include/c++/4.9.4/initializer_list -#usr/include/c++/4.9.4/iomanip -#usr/include/c++/4.9.4/ios -#usr/include/c++/4.9.4/iosfwd -#usr/include/c++/4.9.4/iostream -#usr/include/c++/4.9.4/istream -#usr/include/c++/4.9.4/iterator -#usr/include/c++/4.9.4/limits -#usr/include/c++/4.9.4/list -#usr/include/c++/4.9.4/locale -#usr/include/c++/4.9.4/map -#usr/include/c++/4.9.4/memory -#usr/include/c++/4.9.4/mutex -#usr/include/c++/4.9.4/new -#usr/include/c++/4.9.4/numeric -#usr/include/c++/4.9.4/ostream -#usr/include/c++/4.9.4/parallel -#usr/include/c++/4.9.4/parallel/algo.h -#usr/include/c++/4.9.4/parallel/algobase.h -#usr/include/c++/4.9.4/parallel/algorithm -#usr/include/c++/4.9.4/parallel/algorithmfwd.h -#usr/include/c++/4.9.4/parallel/balanced_quicksort.h -#usr/include/c++/4.9.4/parallel/base.h -#usr/include/c++/4.9.4/parallel/basic_iterator.h -#usr/include/c++/4.9.4/parallel/checkers.h -#usr/include/c++/4.9.4/parallel/compatibility.h -#usr/include/c++/4.9.4/parallel/compiletime_settings.h -#usr/include/c++/4.9.4/parallel/equally_split.h -#usr/include/c++/4.9.4/parallel/features.h -#usr/include/c++/4.9.4/parallel/find.h -#usr/include/c++/4.9.4/parallel/find_selectors.h -#usr/include/c++/4.9.4/parallel/for_each.h -#usr/include/c++/4.9.4/parallel/for_each_selectors.h -#usr/include/c++/4.9.4/parallel/iterator.h -#usr/include/c++/4.9.4/parallel/list_partition.h -#usr/include/c++/4.9.4/parallel/losertree.h -#usr/include/c++/4.9.4/parallel/merge.h -#usr/include/c++/4.9.4/parallel/multiseq_selection.h -#usr/include/c++/4.9.4/parallel/multiway_merge.h -#usr/include/c++/4.9.4/parallel/multiway_mergesort.h -#usr/include/c++/4.9.4/parallel/numeric -#usr/include/c++/4.9.4/parallel/numericfwd.h -#usr/include/c++/4.9.4/parallel/omp_loop.h -#usr/include/c++/4.9.4/parallel/omp_loop_static.h -#usr/include/c++/4.9.4/parallel/par_loop.h -#usr/include/c++/4.9.4/parallel/parallel.h -#usr/include/c++/4.9.4/parallel/partial_sum.h -#usr/include/c++/4.9.4/parallel/partition.h -#usr/include/c++/4.9.4/parallel/queue.h -#usr/include/c++/4.9.4/parallel/quicksort.h -#usr/include/c++/4.9.4/parallel/random_number.h -#usr/include/c++/4.9.4/parallel/random_shuffle.h -#usr/include/c++/4.9.4/parallel/search.h -#usr/include/c++/4.9.4/parallel/set_operations.h -#usr/include/c++/4.9.4/parallel/settings.h -#usr/include/c++/4.9.4/parallel/sort.h -#usr/include/c++/4.9.4/parallel/tags.h -#usr/include/c++/4.9.4/parallel/types.h -#usr/include/c++/4.9.4/parallel/unique_copy.h -#usr/include/c++/4.9.4/parallel/workstealing.h -#usr/include/c++/4.9.4/profile -#usr/include/c++/4.9.4/profile/array -#usr/include/c++/4.9.4/profile/base.h -#usr/include/c++/4.9.4/profile/bitset -#usr/include/c++/4.9.4/profile/deque -#usr/include/c++/4.9.4/profile/forward_list -#usr/include/c++/4.9.4/profile/impl -#usr/include/c++/4.9.4/profile/impl/profiler.h -#usr/include/c++/4.9.4/profile/impl/profiler_algos.h -#usr/include/c++/4.9.4/profile/impl/profiler_container_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_hash_func.h -#usr/include/c++/4.9.4/profile/impl/profiler_hashtable_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_list_to_slist.h -#usr/include/c++/4.9.4/profile/impl/profiler_list_to_vector.h -#usr/include/c++/4.9.4/profile/impl/profiler_map_to_unordered_map.h -#usr/include/c++/4.9.4/profile/impl/profiler_node.h -#usr/include/c++/4.9.4/profile/impl/profiler_state.h -#usr/include/c++/4.9.4/profile/impl/profiler_trace.h -#usr/include/c++/4.9.4/profile/impl/profiler_vector_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_vector_to_list.h -#usr/include/c++/4.9.4/profile/iterator_tracker.h -#usr/include/c++/4.9.4/profile/list -#usr/include/c++/4.9.4/profile/map -#usr/include/c++/4.9.4/profile/map.h -#usr/include/c++/4.9.4/profile/multimap.h -#usr/include/c++/4.9.4/profile/multiset.h -#usr/include/c++/4.9.4/profile/set -#usr/include/c++/4.9.4/profile/set.h -#usr/include/c++/4.9.4/profile/unordered_base.h -#usr/include/c++/4.9.4/profile/unordered_map -#usr/include/c++/4.9.4/profile/unordered_set -#usr/include/c++/4.9.4/profile/vector -#usr/include/c++/4.9.4/queue -#usr/include/c++/4.9.4/random -#usr/include/c++/4.9.4/ratio -#usr/include/c++/4.9.4/regex -#usr/include/c++/4.9.4/scoped_allocator -#usr/include/c++/4.9.4/set -#usr/include/c++/4.9.4/shared_mutex -#usr/include/c++/4.9.4/sstream -#usr/include/c++/4.9.4/stack -#usr/include/c++/4.9.4/stdexcept -#usr/include/c++/4.9.4/streambuf -#usr/include/c++/4.9.4/string -#usr/include/c++/4.9.4/system_error -#usr/include/c++/4.9.4/tgmath.h -#usr/include/c++/4.9.4/thread -#usr/include/c++/4.9.4/tr1 -#usr/include/c++/4.9.4/tr1/array -#usr/include/c++/4.9.4/tr1/bessel_function.tcc -#usr/include/c++/4.9.4/tr1/beta_function.tcc -#usr/include/c++/4.9.4/tr1/ccomplex -#usr/include/c++/4.9.4/tr1/cctype -#usr/include/c++/4.9.4/tr1/cfenv -#usr/include/c++/4.9.4/tr1/cfloat -#usr/include/c++/4.9.4/tr1/cinttypes -#usr/include/c++/4.9.4/tr1/climits -#usr/include/c++/4.9.4/tr1/cmath -#usr/include/c++/4.9.4/tr1/complex -#usr/include/c++/4.9.4/tr1/complex.h -#usr/include/c++/4.9.4/tr1/cstdarg -#usr/include/c++/4.9.4/tr1/cstdbool -#usr/include/c++/4.9.4/tr1/cstdint -#usr/include/c++/4.9.4/tr1/cstdio -#usr/include/c++/4.9.4/tr1/cstdlib -#usr/include/c++/4.9.4/tr1/ctgmath -#usr/include/c++/4.9.4/tr1/ctime -#usr/include/c++/4.9.4/tr1/ctype.h -#usr/include/c++/4.9.4/tr1/cwchar -#usr/include/c++/4.9.4/tr1/cwctype -#usr/include/c++/4.9.4/tr1/ell_integral.tcc -#usr/include/c++/4.9.4/tr1/exp_integral.tcc -#usr/include/c++/4.9.4/tr1/fenv.h -#usr/include/c++/4.9.4/tr1/float.h -#usr/include/c++/4.9.4/tr1/functional -#usr/include/c++/4.9.4/tr1/functional_hash.h -#usr/include/c++/4.9.4/tr1/gamma.tcc -#usr/include/c++/4.9.4/tr1/hashtable.h -#usr/include/c++/4.9.4/tr1/hashtable_policy.h -#usr/include/c++/4.9.4/tr1/hypergeometric.tcc -#usr/include/c++/4.9.4/tr1/inttypes.h -#usr/include/c++/4.9.4/tr1/legendre_function.tcc -#usr/include/c++/4.9.4/tr1/limits.h -#usr/include/c++/4.9.4/tr1/math.h -#usr/include/c++/4.9.4/tr1/memory -#usr/include/c++/4.9.4/tr1/modified_bessel_func.tcc -#usr/include/c++/4.9.4/tr1/poly_hermite.tcc -#usr/include/c++/4.9.4/tr1/poly_laguerre.tcc -#usr/include/c++/4.9.4/tr1/random -#usr/include/c++/4.9.4/tr1/random.h -#usr/include/c++/4.9.4/tr1/random.tcc -#usr/include/c++/4.9.4/tr1/regex -#usr/include/c++/4.9.4/tr1/riemann_zeta.tcc -#usr/include/c++/4.9.4/tr1/shared_ptr.h -#usr/include/c++/4.9.4/tr1/special_function_util.h -#usr/include/c++/4.9.4/tr1/stdarg.h -#usr/include/c++/4.9.4/tr1/stdbool.h -#usr/include/c++/4.9.4/tr1/stdint.h -#usr/include/c++/4.9.4/tr1/stdio.h -#usr/include/c++/4.9.4/tr1/stdlib.h -#usr/include/c++/4.9.4/tr1/tgmath.h -#usr/include/c++/4.9.4/tr1/tuple -#usr/include/c++/4.9.4/tr1/type_traits -#usr/include/c++/4.9.4/tr1/unordered_map -#usr/include/c++/4.9.4/tr1/unordered_map.h -#usr/include/c++/4.9.4/tr1/unordered_set -#usr/include/c++/4.9.4/tr1/unordered_set.h -#usr/include/c++/4.9.4/tr1/utility -#usr/include/c++/4.9.4/tr1/wchar.h -#usr/include/c++/4.9.4/tr1/wctype.h -#usr/include/c++/4.9.4/tr2 -#usr/include/c++/4.9.4/tr2/bool_set -#usr/include/c++/4.9.4/tr2/bool_set.tcc -#usr/include/c++/4.9.4/tr2/dynamic_bitset -#usr/include/c++/4.9.4/tr2/dynamic_bitset.tcc -#usr/include/c++/4.9.4/tr2/ratio -#usr/include/c++/4.9.4/tr2/type_traits -#usr/include/c++/4.9.4/tuple -#usr/include/c++/4.9.4/type_traits -#usr/include/c++/4.9.4/typeindex -#usr/include/c++/4.9.4/typeinfo -#usr/include/c++/4.9.4/unordered_map -#usr/include/c++/4.9.4/unordered_set -#usr/include/c++/4.9.4/utility -#usr/include/c++/4.9.4/valarray -#usr/include/c++/4.9.4/vector -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/atomic_word.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/basic_file.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++allocator.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++config.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++io.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/c++locale.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/cpu_defines.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/ctype_base.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/ctype_inline.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/cxxabi_tweaks.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/error_constants.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/extc++.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-default.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-posix.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr-single.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/gthr.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/messages_members.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/opt_random.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/os_defines.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/stdc++.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/stdtr1c++.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/bits/time_members.h -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/ext -#usr/include/c++/4.9.4/x86_64-unknown-linux-gnu/ext/opt_random.h +#usr/include/c++/6.3.0 +#usr/include/c++/6.3.0/algorithm +#usr/include/c++/6.3.0/array +#usr/include/c++/6.3.0/atomic +#usr/include/c++/6.3.0/backward +#usr/include/c++/6.3.0/backward/auto_ptr.h +#usr/include/c++/6.3.0/backward/backward_warning.h +#usr/include/c++/6.3.0/backward/binders.h +#usr/include/c++/6.3.0/backward/hash_fun.h +#usr/include/c++/6.3.0/backward/hash_map +#usr/include/c++/6.3.0/backward/hash_set +#usr/include/c++/6.3.0/backward/hashtable.h +#usr/include/c++/6.3.0/backward/strstream +#usr/include/c++/6.3.0/bits +#usr/include/c++/6.3.0/bits/algorithmfwd.h +#usr/include/c++/6.3.0/bits/alloc_traits.h +#usr/include/c++/6.3.0/bits/allocated_ptr.h +#usr/include/c++/6.3.0/bits/allocator.h +#usr/include/c++/6.3.0/bits/atomic_base.h +#usr/include/c++/6.3.0/bits/atomic_futex.h +#usr/include/c++/6.3.0/bits/atomic_lockfree_defines.h +#usr/include/c++/6.3.0/bits/basic_ios.h +#usr/include/c++/6.3.0/bits/basic_ios.tcc +#usr/include/c++/6.3.0/bits/basic_string.h +#usr/include/c++/6.3.0/bits/basic_string.tcc +#usr/include/c++/6.3.0/bits/boost_concept_check.h +#usr/include/c++/6.3.0/bits/c++0x_warning.h +#usr/include/c++/6.3.0/bits/c++14_warning.h +#usr/include/c++/6.3.0/bits/char_traits.h +#usr/include/c++/6.3.0/bits/codecvt.h +#usr/include/c++/6.3.0/bits/concept_check.h +#usr/include/c++/6.3.0/bits/cpp_type_traits.h +#usr/include/c++/6.3.0/bits/cxxabi_forced.h +#usr/include/c++/6.3.0/bits/deque.tcc +#usr/include/c++/6.3.0/bits/enable_special_members.h +#usr/include/c++/6.3.0/bits/exception_defines.h +#usr/include/c++/6.3.0/bits/exception_ptr.h +#usr/include/c++/6.3.0/bits/forward_list.h +#usr/include/c++/6.3.0/bits/forward_list.tcc +#usr/include/c++/6.3.0/bits/fstream.tcc +#usr/include/c++/6.3.0/bits/functexcept.h +#usr/include/c++/6.3.0/bits/functional_hash.h +#usr/include/c++/6.3.0/bits/gslice.h +#usr/include/c++/6.3.0/bits/gslice_array.h +#usr/include/c++/6.3.0/bits/hash_bytes.h +#usr/include/c++/6.3.0/bits/hashtable.h +#usr/include/c++/6.3.0/bits/hashtable_policy.h +#usr/include/c++/6.3.0/bits/indirect_array.h +#usr/include/c++/6.3.0/bits/ios_base.h +#usr/include/c++/6.3.0/bits/istream.tcc +#usr/include/c++/6.3.0/bits/list.tcc +#usr/include/c++/6.3.0/bits/locale_classes.h +#usr/include/c++/6.3.0/bits/locale_classes.tcc +#usr/include/c++/6.3.0/bits/locale_conv.h +#usr/include/c++/6.3.0/bits/locale_facets.h +#usr/include/c++/6.3.0/bits/locale_facets.tcc +#usr/include/c++/6.3.0/bits/locale_facets_nonio.h +#usr/include/c++/6.3.0/bits/locale_facets_nonio.tcc +#usr/include/c++/6.3.0/bits/localefwd.h +#usr/include/c++/6.3.0/bits/mask_array.h +#usr/include/c++/6.3.0/bits/memoryfwd.h +#usr/include/c++/6.3.0/bits/move.h +#usr/include/c++/6.3.0/bits/nested_exception.h +#usr/include/c++/6.3.0/bits/ostream.tcc +#usr/include/c++/6.3.0/bits/ostream_insert.h +#usr/include/c++/6.3.0/bits/parse_numbers.h +#usr/include/c++/6.3.0/bits/postypes.h +#usr/include/c++/6.3.0/bits/predefined_ops.h +#usr/include/c++/6.3.0/bits/ptr_traits.h +#usr/include/c++/6.3.0/bits/quoted_string.h +#usr/include/c++/6.3.0/bits/random.h +#usr/include/c++/6.3.0/bits/random.tcc +#usr/include/c++/6.3.0/bits/range_access.h +#usr/include/c++/6.3.0/bits/regex.h +#usr/include/c++/6.3.0/bits/regex.tcc +#usr/include/c++/6.3.0/bits/regex_automaton.h +#usr/include/c++/6.3.0/bits/regex_automaton.tcc +#usr/include/c++/6.3.0/bits/regex_compiler.h +#usr/include/c++/6.3.0/bits/regex_compiler.tcc +#usr/include/c++/6.3.0/bits/regex_constants.h +#usr/include/c++/6.3.0/bits/regex_error.h +#usr/include/c++/6.3.0/bits/regex_executor.h +#usr/include/c++/6.3.0/bits/regex_executor.tcc +#usr/include/c++/6.3.0/bits/regex_scanner.h +#usr/include/c++/6.3.0/bits/regex_scanner.tcc +#usr/include/c++/6.3.0/bits/shared_ptr.h +#usr/include/c++/6.3.0/bits/shared_ptr_atomic.h +#usr/include/c++/6.3.0/bits/shared_ptr_base.h +#usr/include/c++/6.3.0/bits/slice_array.h +#usr/include/c++/6.3.0/bits/specfun.h +#usr/include/c++/6.3.0/bits/sstream.tcc +#usr/include/c++/6.3.0/bits/std_mutex.h +#usr/include/c++/6.3.0/bits/stl_algo.h +#usr/include/c++/6.3.0/bits/stl_algobase.h +#usr/include/c++/6.3.0/bits/stl_bvector.h +#usr/include/c++/6.3.0/bits/stl_construct.h +#usr/include/c++/6.3.0/bits/stl_deque.h +#usr/include/c++/6.3.0/bits/stl_function.h +#usr/include/c++/6.3.0/bits/stl_heap.h +#usr/include/c++/6.3.0/bits/stl_iterator.h +#usr/include/c++/6.3.0/bits/stl_iterator_base_funcs.h +#usr/include/c++/6.3.0/bits/stl_iterator_base_types.h +#usr/include/c++/6.3.0/bits/stl_list.h +#usr/include/c++/6.3.0/bits/stl_map.h +#usr/include/c++/6.3.0/bits/stl_multimap.h +#usr/include/c++/6.3.0/bits/stl_multiset.h +#usr/include/c++/6.3.0/bits/stl_numeric.h +#usr/include/c++/6.3.0/bits/stl_pair.h +#usr/include/c++/6.3.0/bits/stl_queue.h +#usr/include/c++/6.3.0/bits/stl_raw_storage_iter.h +#usr/include/c++/6.3.0/bits/stl_relops.h +#usr/include/c++/6.3.0/bits/stl_set.h +#usr/include/c++/6.3.0/bits/stl_stack.h +#usr/include/c++/6.3.0/bits/stl_tempbuf.h +#usr/include/c++/6.3.0/bits/stl_tree.h +#usr/include/c++/6.3.0/bits/stl_uninitialized.h +#usr/include/c++/6.3.0/bits/stl_vector.h +#usr/include/c++/6.3.0/bits/stream_iterator.h +#usr/include/c++/6.3.0/bits/streambuf.tcc +#usr/include/c++/6.3.0/bits/streambuf_iterator.h +#usr/include/c++/6.3.0/bits/stringfwd.h +#usr/include/c++/6.3.0/bits/uniform_int_dist.h +#usr/include/c++/6.3.0/bits/unique_ptr.h +#usr/include/c++/6.3.0/bits/unordered_map.h +#usr/include/c++/6.3.0/bits/unordered_set.h +#usr/include/c++/6.3.0/bits/uses_allocator.h +#usr/include/c++/6.3.0/bits/valarray_after.h +#usr/include/c++/6.3.0/bits/valarray_array.h +#usr/include/c++/6.3.0/bits/valarray_array.tcc +#usr/include/c++/6.3.0/bits/valarray_before.h +#usr/include/c++/6.3.0/bits/vector.tcc +#usr/include/c++/6.3.0/bitset +#usr/include/c++/6.3.0/cassert +#usr/include/c++/6.3.0/ccomplex +#usr/include/c++/6.3.0/cctype +#usr/include/c++/6.3.0/cerrno +#usr/include/c++/6.3.0/cfenv +#usr/include/c++/6.3.0/cfloat +#usr/include/c++/6.3.0/chrono +#usr/include/c++/6.3.0/cinttypes +#usr/include/c++/6.3.0/ciso646 +#usr/include/c++/6.3.0/climits +#usr/include/c++/6.3.0/clocale +#usr/include/c++/6.3.0/cmath +#usr/include/c++/6.3.0/codecvt +#usr/include/c++/6.3.0/complex +#usr/include/c++/6.3.0/complex.h +#usr/include/c++/6.3.0/condition_variable +#usr/include/c++/6.3.0/csetjmp +#usr/include/c++/6.3.0/csignal +#usr/include/c++/6.3.0/cstdalign +#usr/include/c++/6.3.0/cstdarg +#usr/include/c++/6.3.0/cstdbool +#usr/include/c++/6.3.0/cstddef +#usr/include/c++/6.3.0/cstdint +#usr/include/c++/6.3.0/cstdio +#usr/include/c++/6.3.0/cstdlib +#usr/include/c++/6.3.0/cstring +#usr/include/c++/6.3.0/ctgmath +#usr/include/c++/6.3.0/ctime +#usr/include/c++/6.3.0/cuchar +#usr/include/c++/6.3.0/cwchar +#usr/include/c++/6.3.0/cwctype +#usr/include/c++/6.3.0/cxxabi.h +#usr/include/c++/6.3.0/debug +#usr/include/c++/6.3.0/debug/array +#usr/include/c++/6.3.0/debug/assertions.h +#usr/include/c++/6.3.0/debug/bitset +#usr/include/c++/6.3.0/debug/debug.h +#usr/include/c++/6.3.0/debug/deque +#usr/include/c++/6.3.0/debug/formatter.h +#usr/include/c++/6.3.0/debug/forward_list +#usr/include/c++/6.3.0/debug/functions.h +#usr/include/c++/6.3.0/debug/helper_functions.h +#usr/include/c++/6.3.0/debug/list +#usr/include/c++/6.3.0/debug/macros.h +#usr/include/c++/6.3.0/debug/map +#usr/include/c++/6.3.0/debug/map.h +#usr/include/c++/6.3.0/debug/multimap.h +#usr/include/c++/6.3.0/debug/multiset.h +#usr/include/c++/6.3.0/debug/safe_base.h +#usr/include/c++/6.3.0/debug/safe_container.h +#usr/include/c++/6.3.0/debug/safe_iterator.h +#usr/include/c++/6.3.0/debug/safe_iterator.tcc +#usr/include/c++/6.3.0/debug/safe_local_iterator.h +#usr/include/c++/6.3.0/debug/safe_local_iterator.tcc +#usr/include/c++/6.3.0/debug/safe_sequence.h +#usr/include/c++/6.3.0/debug/safe_sequence.tcc +#usr/include/c++/6.3.0/debug/safe_unordered_base.h +#usr/include/c++/6.3.0/debug/safe_unordered_container.h +#usr/include/c++/6.3.0/debug/safe_unordered_container.tcc +#usr/include/c++/6.3.0/debug/set +#usr/include/c++/6.3.0/debug/set.h +#usr/include/c++/6.3.0/debug/stl_iterator.h +#usr/include/c++/6.3.0/debug/string +#usr/include/c++/6.3.0/debug/unordered_map +#usr/include/c++/6.3.0/debug/unordered_set +#usr/include/c++/6.3.0/debug/vector +#usr/include/c++/6.3.0/decimal +#usr/include/c++/6.3.0/decimal/decimal +#usr/include/c++/6.3.0/decimal/decimal.h +#usr/include/c++/6.3.0/deque +#usr/include/c++/6.3.0/exception +#usr/include/c++/6.3.0/experimental +#usr/include/c++/6.3.0/experimental/algorithm +#usr/include/c++/6.3.0/experimental/any +#usr/include/c++/6.3.0/experimental/array +#usr/include/c++/6.3.0/experimental/bits +#usr/include/c++/6.3.0/experimental/bits/erase_if.h +#usr/include/c++/6.3.0/experimental/bits/fs_dir.h +#usr/include/c++/6.3.0/experimental/bits/fs_fwd.h +#usr/include/c++/6.3.0/experimental/bits/fs_ops.h +#usr/include/c++/6.3.0/experimental/bits/fs_path.h +#usr/include/c++/6.3.0/experimental/bits/lfts_config.h +#usr/include/c++/6.3.0/experimental/bits/shared_ptr.h +#usr/include/c++/6.3.0/experimental/bits/string_view.tcc +#usr/include/c++/6.3.0/experimental/chrono +#usr/include/c++/6.3.0/experimental/deque +#usr/include/c++/6.3.0/experimental/filesystem +#usr/include/c++/6.3.0/experimental/forward_list +#usr/include/c++/6.3.0/experimental/functional +#usr/include/c++/6.3.0/experimental/iterator +#usr/include/c++/6.3.0/experimental/list +#usr/include/c++/6.3.0/experimental/map +#usr/include/c++/6.3.0/experimental/memory +#usr/include/c++/6.3.0/experimental/memory_resource +#usr/include/c++/6.3.0/experimental/numeric +#usr/include/c++/6.3.0/experimental/optional +#usr/include/c++/6.3.0/experimental/propagate_const +#usr/include/c++/6.3.0/experimental/random +#usr/include/c++/6.3.0/experimental/ratio +#usr/include/c++/6.3.0/experimental/regex +#usr/include/c++/6.3.0/experimental/set +#usr/include/c++/6.3.0/experimental/string +#usr/include/c++/6.3.0/experimental/string_view +#usr/include/c++/6.3.0/experimental/system_error +#usr/include/c++/6.3.0/experimental/tuple +#usr/include/c++/6.3.0/experimental/type_traits +#usr/include/c++/6.3.0/experimental/unordered_map +#usr/include/c++/6.3.0/experimental/unordered_set +#usr/include/c++/6.3.0/experimental/utility +#usr/include/c++/6.3.0/experimental/vector +#usr/include/c++/6.3.0/ext +#usr/include/c++/6.3.0/ext/algorithm +#usr/include/c++/6.3.0/ext/aligned_buffer.h +#usr/include/c++/6.3.0/ext/alloc_traits.h +#usr/include/c++/6.3.0/ext/array_allocator.h +#usr/include/c++/6.3.0/ext/atomicity.h +#usr/include/c++/6.3.0/ext/bitmap_allocator.h +#usr/include/c++/6.3.0/ext/cast.h +#usr/include/c++/6.3.0/ext/cmath +#usr/include/c++/6.3.0/ext/codecvt_specializations.h +#usr/include/c++/6.3.0/ext/concurrence.h +#usr/include/c++/6.3.0/ext/debug_allocator.h +#usr/include/c++/6.3.0/ext/enc_filebuf.h +#usr/include/c++/6.3.0/ext/extptr_allocator.h +#usr/include/c++/6.3.0/ext/functional +#usr/include/c++/6.3.0/ext/hash_map +#usr/include/c++/6.3.0/ext/hash_set +#usr/include/c++/6.3.0/ext/iterator +#usr/include/c++/6.3.0/ext/malloc_allocator.h +#usr/include/c++/6.3.0/ext/memory +#usr/include/c++/6.3.0/ext/mt_allocator.h +#usr/include/c++/6.3.0/ext/new_allocator.h +#usr/include/c++/6.3.0/ext/numeric +#usr/include/c++/6.3.0/ext/numeric_traits.h +#usr/include/c++/6.3.0/ext/pb_ds +#usr/include/c++/6.3.0/ext/pb_ds/assoc_container.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/exception.hpp +#usr/include/c++/6.3.0/ext/pb_ds/hash_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/priority_queue.hpp +#usr/include/c++/6.3.0/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/6.3.0/ext/pb_ds/tree_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/trie_policy.hpp +#usr/include/c++/6.3.0/ext/pod_char_traits.h +#usr/include/c++/6.3.0/ext/pointer.h +#usr/include/c++/6.3.0/ext/pool_allocator.h +#usr/include/c++/6.3.0/ext/random +#usr/include/c++/6.3.0/ext/random.tcc +#usr/include/c++/6.3.0/ext/rb_tree +#usr/include/c++/6.3.0/ext/rc_string_base.h +#usr/include/c++/6.3.0/ext/rope +#usr/include/c++/6.3.0/ext/ropeimpl.h +#usr/include/c++/6.3.0/ext/slist +#usr/include/c++/6.3.0/ext/sso_string_base.h +#usr/include/c++/6.3.0/ext/stdio_filebuf.h +#usr/include/c++/6.3.0/ext/stdio_sync_filebuf.h +#usr/include/c++/6.3.0/ext/string_conversions.h +#usr/include/c++/6.3.0/ext/throw_allocator.h +#usr/include/c++/6.3.0/ext/type_traits.h +#usr/include/c++/6.3.0/ext/typelist.h +#usr/include/c++/6.3.0/ext/vstring.h +#usr/include/c++/6.3.0/ext/vstring.tcc +#usr/include/c++/6.3.0/ext/vstring_fwd.h +#usr/include/c++/6.3.0/ext/vstring_util.h +#usr/include/c++/6.3.0/fenv.h +#usr/include/c++/6.3.0/forward_list +#usr/include/c++/6.3.0/fstream +#usr/include/c++/6.3.0/functional +#usr/include/c++/6.3.0/future +#usr/include/c++/6.3.0/initializer_list +#usr/include/c++/6.3.0/iomanip +#usr/include/c++/6.3.0/ios +#usr/include/c++/6.3.0/iosfwd +#usr/include/c++/6.3.0/iostream +#usr/include/c++/6.3.0/istream +#usr/include/c++/6.3.0/iterator +#usr/include/c++/6.3.0/limits +#usr/include/c++/6.3.0/list +#usr/include/c++/6.3.0/locale +#usr/include/c++/6.3.0/map +#usr/include/c++/6.3.0/math.h +#usr/include/c++/6.3.0/memory +#usr/include/c++/6.3.0/mutex +#usr/include/c++/6.3.0/new +#usr/include/c++/6.3.0/numeric +#usr/include/c++/6.3.0/ostream +#usr/include/c++/6.3.0/parallel +#usr/include/c++/6.3.0/parallel/algo.h +#usr/include/c++/6.3.0/parallel/algobase.h +#usr/include/c++/6.3.0/parallel/algorithm +#usr/include/c++/6.3.0/parallel/algorithmfwd.h +#usr/include/c++/6.3.0/parallel/balanced_quicksort.h +#usr/include/c++/6.3.0/parallel/base.h +#usr/include/c++/6.3.0/parallel/basic_iterator.h +#usr/include/c++/6.3.0/parallel/checkers.h +#usr/include/c++/6.3.0/parallel/compatibility.h +#usr/include/c++/6.3.0/parallel/compiletime_settings.h +#usr/include/c++/6.3.0/parallel/equally_split.h +#usr/include/c++/6.3.0/parallel/features.h +#usr/include/c++/6.3.0/parallel/find.h +#usr/include/c++/6.3.0/parallel/find_selectors.h +#usr/include/c++/6.3.0/parallel/for_each.h +#usr/include/c++/6.3.0/parallel/for_each_selectors.h +#usr/include/c++/6.3.0/parallel/iterator.h +#usr/include/c++/6.3.0/parallel/list_partition.h +#usr/include/c++/6.3.0/parallel/losertree.h +#usr/include/c++/6.3.0/parallel/merge.h +#usr/include/c++/6.3.0/parallel/multiseq_selection.h +#usr/include/c++/6.3.0/parallel/multiway_merge.h +#usr/include/c++/6.3.0/parallel/multiway_mergesort.h +#usr/include/c++/6.3.0/parallel/numeric +#usr/include/c++/6.3.0/parallel/numericfwd.h +#usr/include/c++/6.3.0/parallel/omp_loop.h +#usr/include/c++/6.3.0/parallel/omp_loop_static.h +#usr/include/c++/6.3.0/parallel/par_loop.h +#usr/include/c++/6.3.0/parallel/parallel.h +#usr/include/c++/6.3.0/parallel/partial_sum.h +#usr/include/c++/6.3.0/parallel/partition.h +#usr/include/c++/6.3.0/parallel/queue.h +#usr/include/c++/6.3.0/parallel/quicksort.h +#usr/include/c++/6.3.0/parallel/random_number.h +#usr/include/c++/6.3.0/parallel/random_shuffle.h +#usr/include/c++/6.3.0/parallel/search.h +#usr/include/c++/6.3.0/parallel/set_operations.h +#usr/include/c++/6.3.0/parallel/settings.h +#usr/include/c++/6.3.0/parallel/sort.h +#usr/include/c++/6.3.0/parallel/tags.h +#usr/include/c++/6.3.0/parallel/types.h +#usr/include/c++/6.3.0/parallel/unique_copy.h +#usr/include/c++/6.3.0/parallel/workstealing.h +#usr/include/c++/6.3.0/profile +#usr/include/c++/6.3.0/profile/array +#usr/include/c++/6.3.0/profile/base.h +#usr/include/c++/6.3.0/profile/bitset +#usr/include/c++/6.3.0/profile/deque +#usr/include/c++/6.3.0/profile/forward_list +#usr/include/c++/6.3.0/profile/impl +#usr/include/c++/6.3.0/profile/impl/profiler.h +#usr/include/c++/6.3.0/profile/impl/profiler_algos.h +#usr/include/c++/6.3.0/profile/impl/profiler_container_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_hash_func.h +#usr/include/c++/6.3.0/profile/impl/profiler_hashtable_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_list_to_slist.h +#usr/include/c++/6.3.0/profile/impl/profiler_list_to_vector.h +#usr/include/c++/6.3.0/profile/impl/profiler_map_to_unordered_map.h +#usr/include/c++/6.3.0/profile/impl/profiler_node.h +#usr/include/c++/6.3.0/profile/impl/profiler_state.h +#usr/include/c++/6.3.0/profile/impl/profiler_trace.h +#usr/include/c++/6.3.0/profile/impl/profiler_vector_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_vector_to_list.h +#usr/include/c++/6.3.0/profile/iterator_tracker.h +#usr/include/c++/6.3.0/profile/list +#usr/include/c++/6.3.0/profile/map +#usr/include/c++/6.3.0/profile/map.h +#usr/include/c++/6.3.0/profile/multimap.h +#usr/include/c++/6.3.0/profile/multiset.h +#usr/include/c++/6.3.0/profile/ordered_base.h +#usr/include/c++/6.3.0/profile/set +#usr/include/c++/6.3.0/profile/set.h +#usr/include/c++/6.3.0/profile/unordered_base.h +#usr/include/c++/6.3.0/profile/unordered_map +#usr/include/c++/6.3.0/profile/unordered_set +#usr/include/c++/6.3.0/profile/vector +#usr/include/c++/6.3.0/queue +#usr/include/c++/6.3.0/random +#usr/include/c++/6.3.0/ratio +#usr/include/c++/6.3.0/regex +#usr/include/c++/6.3.0/scoped_allocator +#usr/include/c++/6.3.0/set +#usr/include/c++/6.3.0/shared_mutex +#usr/include/c++/6.3.0/sstream +#usr/include/c++/6.3.0/stack +#usr/include/c++/6.3.0/stdexcept +#usr/include/c++/6.3.0/stdlib.h +#usr/include/c++/6.3.0/streambuf +#usr/include/c++/6.3.0/string +#usr/include/c++/6.3.0/system_error +#usr/include/c++/6.3.0/tgmath.h +#usr/include/c++/6.3.0/thread +#usr/include/c++/6.3.0/tr1 +#usr/include/c++/6.3.0/tr1/array +#usr/include/c++/6.3.0/tr1/bessel_function.tcc +#usr/include/c++/6.3.0/tr1/beta_function.tcc +#usr/include/c++/6.3.0/tr1/ccomplex +#usr/include/c++/6.3.0/tr1/cctype +#usr/include/c++/6.3.0/tr1/cfenv +#usr/include/c++/6.3.0/tr1/cfloat +#usr/include/c++/6.3.0/tr1/cinttypes +#usr/include/c++/6.3.0/tr1/climits +#usr/include/c++/6.3.0/tr1/cmath +#usr/include/c++/6.3.0/tr1/complex +#usr/include/c++/6.3.0/tr1/complex.h +#usr/include/c++/6.3.0/tr1/cstdarg +#usr/include/c++/6.3.0/tr1/cstdbool +#usr/include/c++/6.3.0/tr1/cstdint +#usr/include/c++/6.3.0/tr1/cstdio +#usr/include/c++/6.3.0/tr1/cstdlib +#usr/include/c++/6.3.0/tr1/ctgmath +#usr/include/c++/6.3.0/tr1/ctime +#usr/include/c++/6.3.0/tr1/ctype.h +#usr/include/c++/6.3.0/tr1/cwchar +#usr/include/c++/6.3.0/tr1/cwctype +#usr/include/c++/6.3.0/tr1/ell_integral.tcc +#usr/include/c++/6.3.0/tr1/exp_integral.tcc +#usr/include/c++/6.3.0/tr1/fenv.h +#usr/include/c++/6.3.0/tr1/float.h +#usr/include/c++/6.3.0/tr1/functional +#usr/include/c++/6.3.0/tr1/functional_hash.h +#usr/include/c++/6.3.0/tr1/gamma.tcc +#usr/include/c++/6.3.0/tr1/hashtable.h +#usr/include/c++/6.3.0/tr1/hashtable_policy.h +#usr/include/c++/6.3.0/tr1/hypergeometric.tcc +#usr/include/c++/6.3.0/tr1/inttypes.h +#usr/include/c++/6.3.0/tr1/legendre_function.tcc +#usr/include/c++/6.3.0/tr1/limits.h +#usr/include/c++/6.3.0/tr1/math.h +#usr/include/c++/6.3.0/tr1/memory +#usr/include/c++/6.3.0/tr1/modified_bessel_func.tcc +#usr/include/c++/6.3.0/tr1/poly_hermite.tcc +#usr/include/c++/6.3.0/tr1/poly_laguerre.tcc +#usr/include/c++/6.3.0/tr1/random +#usr/include/c++/6.3.0/tr1/random.h +#usr/include/c++/6.3.0/tr1/random.tcc +#usr/include/c++/6.3.0/tr1/regex +#usr/include/c++/6.3.0/tr1/riemann_zeta.tcc +#usr/include/c++/6.3.0/tr1/shared_ptr.h +#usr/include/c++/6.3.0/tr1/special_function_util.h +#usr/include/c++/6.3.0/tr1/stdarg.h +#usr/include/c++/6.3.0/tr1/stdbool.h +#usr/include/c++/6.3.0/tr1/stdint.h +#usr/include/c++/6.3.0/tr1/stdio.h +#usr/include/c++/6.3.0/tr1/stdlib.h +#usr/include/c++/6.3.0/tr1/tgmath.h +#usr/include/c++/6.3.0/tr1/tuple +#usr/include/c++/6.3.0/tr1/type_traits +#usr/include/c++/6.3.0/tr1/unordered_map +#usr/include/c++/6.3.0/tr1/unordered_map.h +#usr/include/c++/6.3.0/tr1/unordered_set +#usr/include/c++/6.3.0/tr1/unordered_set.h +#usr/include/c++/6.3.0/tr1/utility +#usr/include/c++/6.3.0/tr1/wchar.h +#usr/include/c++/6.3.0/tr1/wctype.h +#usr/include/c++/6.3.0/tr2 +#usr/include/c++/6.3.0/tr2/bool_set +#usr/include/c++/6.3.0/tr2/bool_set.tcc +#usr/include/c++/6.3.0/tr2/dynamic_bitset +#usr/include/c++/6.3.0/tr2/dynamic_bitset.tcc +#usr/include/c++/6.3.0/tr2/ratio +#usr/include/c++/6.3.0/tr2/type_traits +#usr/include/c++/6.3.0/tuple +#usr/include/c++/6.3.0/type_traits +#usr/include/c++/6.3.0/typeindex +#usr/include/c++/6.3.0/typeinfo +#usr/include/c++/6.3.0/unordered_map +#usr/include/c++/6.3.0/unordered_set +#usr/include/c++/6.3.0/utility +#usr/include/c++/6.3.0/valarray +#usr/include/c++/6.3.0/vector +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/atomic_word.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/basic_file.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/c++allocator.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/c++config.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/c++io.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/c++locale.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/cpu_defines.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/ctype_base.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/ctype_inline.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/error_constants.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/extc++.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/gthr-default.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/gthr-posix.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/gthr-single.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/gthr.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/messages_members.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/opt_random.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/os_defines.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/stdc++.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/stdtr1c++.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/bits/time_members.h +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/ext +#usr/include/c++/6.3.0/x86_64-pc-linux-gnu/ext/opt_random.h #usr/lib/gcc -#usr/lib/gcc/x86_64-unknown-linux-gnu -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/cc1 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/cc1plus -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/collect2 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbegin.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbeginS.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtbeginT.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtend.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtendS.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtfastmath.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec32.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec64.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/crtprec80.o -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/finclude -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/README -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/limits.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include-fixed/syslimits.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/adxintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ammintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx2intrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512cdintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512erintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512fintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avx512pfintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/avxintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmi2intrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmiintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/bmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_api.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_api_linux.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_stub.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/cilk_undocumented.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/common.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/holder.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/hyperobject_base.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/metaprogramming.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_file.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_list.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_max.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_min.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_min_max.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opadd.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opand.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opmul.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opor.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_opxor.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_ostream.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cilk/reducer_string.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cpuid.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/cross-stdarg.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/emmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/f16cintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/float.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fma4intrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fmaintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/fxsrintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ia32intrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/immintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/iso646.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/lwpintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/lzcntintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mm3dnow.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mm_malloc.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/mmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/nmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/omp.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/pmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/popcntintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/prfchwintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/quadmath.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/quadmath_weak.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/rdseedintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/rtmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/asan_interface.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/common_interface_defs.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/sanitizer/lsan_interface.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/shaintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/smmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/ssp.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/stdio.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/string.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/ssp/unistd.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdalign.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdarg.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdatomic.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdbool.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stddef.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdfix.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdint-gcc.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdint.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/stdnoreturn.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/tbmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/tmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/unwind.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/varargs.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/wmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/x86intrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xmmintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xopintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xsaveintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xsaveoptintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/include/xtestintrin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixinc.sh -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixinc_list -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/fixincl -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/gsyslimits.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include/README -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/include/limits.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/macro_list -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkheaders -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkheaders.conf -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/install-tools/mkinstalldirs -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcc.a -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcc_eh.a -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/libgcov.a -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.la -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so.0 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/liblto_plugin.so.0.0.0 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/lto1 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/gengtype -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/gtype.state -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada/gcc-interface -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ada/gcc-interface/ada-tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/alias.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/all-tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/alloc-pool.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ansidecl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/attribs.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/auto-host.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/b-header-vars -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/basic-block.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/bitmap.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/builtins.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/bversion.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-common.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-common.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-objc.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-pragma.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-family/c-pretty-print.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/c-tree.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/calls.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfg-flags.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfgexpand.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfghooks.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cfgloop.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cgraph.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cif-code.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cilk-builtins.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cilkplus.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/dbxelf.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/elfos.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/glibc-stdint.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/gnu-user.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386 -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/att.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/biarch64.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user-common.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user64.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386-opts.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386-protos.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/i386.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/linux-common.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/linux64.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/stringop.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/unix.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/x86-64.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/i386/x86-tune.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/initfini-array.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux-android.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux-protos.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/linux.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/config/vxworks-dummy.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/configargs.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/context.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/coretypes.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cp-tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cp-tree.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/cxx-pretty-print.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/name-lookup.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cp/type-utils.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cppdefault.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/cpplib.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/debug.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/defaults.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/df.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic-color.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic-core.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/diagnostic.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/double-int.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/dumpfile.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/emit-rtl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/except.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/filenames.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/fixed-value.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/flag-types.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/flags.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/fold-const.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/function.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gcc-plugin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gcc-symtab.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/genrtl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ggc.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-builder.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-expr.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-fold.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-iterator.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-low.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-pretty-print.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-ssa.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple-walk.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimple.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimplify-me.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gimplify.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gsstruct.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gtm-builtins.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/gtype-desc.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hard-reg-set.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hash-table.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hashtab.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/highlev-plugin-common.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/hwint.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/incpath.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/input.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-codes.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-constants.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-flags.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-modes.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/insn-notes.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/internal-fn.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/internal-fn.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/intl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-prop.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-ref-inline.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-ref.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-reference.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ipa-utils.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/is-a.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/java -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/java/java-tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/langhooks.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/libiberty.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/line-map.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/machmode.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/md5.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/mode-classes.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/objc -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/objc/objc-tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/obstack.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/omp-builtins.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/options.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/opts.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/output.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/params.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/params.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pass-instances.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pass_manager.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin-api.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin-version.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/plugin.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pointer-set.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/predict.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/predict.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/prefix.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/pretty-print.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/print-rtl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/print-tree.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/real.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/realmpfr.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/reg-notes.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/regset.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/resource.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/rtl.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/rtl.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/safe-ctype.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sanitizer.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sbitmap.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/splay-tree.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/ssa-iterators.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/statistics.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stmt.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stor-layout.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/stringpool.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/symtab.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/sync-builtins.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/system.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target-hooks-macros.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/target.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/timevar.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/timevar.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm-preds.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tm_p.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/toplev.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-cfg.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-cfgcleanup.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-check.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-core.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-dfa.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-dump.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-eh.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-hasher.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-inline.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-into-ssa.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-iterator.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-nested.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-object-size.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-outof-ssa.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-parloops.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-pass.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-phinodes.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-pretty-print.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-address.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-alias.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-coalesce.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-dom.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-ivopts.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-manip.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-niter.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-loop.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-operands.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-sccvn.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-ter.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-threadedge.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa-threadupdate.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssa.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree-ssanames.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/tree.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/treestruct.def -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/varasm.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/vec.h -#usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.4/plugin/include/version.h +#usr/lib/gcc/x86_64-pc-linux-gnu +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/cc1 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/cc1plus +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/collect2 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtbegin.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtbeginS.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtbeginT.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtend.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtendS.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtfastmath.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtprec32.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtprec64.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtprec80.o +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed/README +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed/limits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed/syslimits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/adxintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ammintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx2intrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512bwintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512cdintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512dqintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512erintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512fintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512ifmaintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512ifmavlintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512pfintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512vbmiintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512vbmivlintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512vlbwintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512vldqintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avx512vlintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/avxintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/bmi2intrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/bmiintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/bmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/cilk.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/cilk_api.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/cilk_api_linux.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/cilk_stub.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/cilk_undocumented.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/holder.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/hyperobject_base.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/metaprogramming.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_file.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_list.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_max.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_min.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_min_max.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_opadd.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_opand.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_opmul.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_opor.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_opxor.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_ostream.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cilk/reducer_string.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/clflushoptintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/clwbintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/clzerointrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cpuid.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/cross-stdarg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/emmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/f16cintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/float.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/fma4intrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/fmaintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/fxsrintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ia32intrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/immintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/iso646.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/lwpintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/lzcntintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/mm3dnow.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/mm_malloc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/mmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/mwaitxintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/nmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/omp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/openacc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/pkuintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/pmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/popcntintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/prfchwintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/quadmath.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/quadmath_weak.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/rdseedintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/rtmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/sanitizer +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/sanitizer/asan_interface.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/sanitizer/common_interface_defs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/sanitizer/lsan_interface.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/shaintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/smmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ssp +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ssp/ssp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ssp/stdio.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ssp/string.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/ssp/unistd.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdalign.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdarg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdatomic.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdbool.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stddef.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdfix.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdint-gcc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdint.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/stdnoreturn.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/tbmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/tmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/unwind.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/varargs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/wmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/x86intrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xmmintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xopintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xsavecintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xsaveintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xsaveoptintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xsavesintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/xtestintrin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/fixinc.sh +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/fixinc_list +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/fixincl +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/gsyslimits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/include +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/include/README +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/include/limits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/macro_list +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/mkheaders +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/mkheaders.conf +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/install-tools/mkinstalldirs +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libgcc.a +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libgcc_eh.a +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libgcov.a +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.la +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so.0 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so.0.0.0 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/lto-wrapper +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/lto1 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/gengtype +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/gtype.state +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ada +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ada/gcc-interface +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ada/gcc-interface/ada-tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/addresses.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/alias.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/all-tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/alloc-pool.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ansidecl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/asan.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/attribs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/auto-host.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/auto-profile.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/b-header-vars +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/backend.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/basic-block.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/bb-reorder.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/bitmap.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/builtin-attrs.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/builtin-types.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/builtins.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/bversion.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family/c-common.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family/c-common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family/c-objc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family/c-pragma.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-family/c-pretty-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/c-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/calls.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ccmp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfg-flags.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfganal.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgbuild.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgcleanup.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgexpand.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfghooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgloop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgloopmanip.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cfgrtl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cgraph.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/chkp-builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cif-code.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cilk-builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cilk.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cilkplus.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/collect-utils.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/collect2-aix.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/collect2.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/conditions.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/dbxelf.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/elfos.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/glibc-stdint.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/gnu-user.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/att.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/biarch64.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/gnu-user-common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/gnu-user64.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386-opts.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386-protos.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/linux-common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/linux64.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/stringop.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/unix.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/x86-64.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/i386/x86-tune.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/initfini-array.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/linux-android.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/linux-protos.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/linux.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/config/vxworks-dummy.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/configargs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/context.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/convert.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/coretypes.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/coverage.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp/cp-tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp/cp-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp/cxx-pretty-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp/name-lookup.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cp/type-utils.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cppbuiltin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cppdefault.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cpplib.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/cselib.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/data-streamer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dbgcnt.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dbgcnt.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dbxout.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dce.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ddg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/debug.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/defaults.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/df.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dfp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/diagnostic-color.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/diagnostic-core.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/diagnostic.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/diagnostic.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dojump.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dominance.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/domwalk.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/double-int.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dumpfile.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dwarf2asm.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/dwarf2out.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/emit-rtl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/errors.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/et-forest.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/except.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/explow.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/expmed.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/expr.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/fibonacci_heap.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/file-find.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/filenames.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/fixed-value.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/flag-types.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/flags.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/fold-const-call.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/fold-const.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/function.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcc-plugin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcc-rich-location.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcc-symtab.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcov-counter.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcov-io.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcse-common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gcse.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/generic-match.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gengtype.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/genrtl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gensupport.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ggc-internal.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ggc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-builder.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-expr.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-fold.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-iterator.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-low.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-match.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-predict.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-pretty-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-ssa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-streamer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple-walk.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimple.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimplify-me.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gimplify.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/glimits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/graph.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/graphds.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/graphite.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gsstruct.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gstab.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gsyms.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gsyslimits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gtm-builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/gtype-desc.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hard-reg-set.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hash-map-traits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hash-map.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hash-set.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hash-table.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hash-traits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hashtab.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/highlev-plugin-common.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hosthooks-def.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hosthooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hsa-brig-format.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hsa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hw-doloop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/hwint.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ifcvt.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/inchash.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/incpath.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/input.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-addr.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-codes.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-constants.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-flags.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-modes.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/insn-notes.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/internal-fn.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/internal-fn.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/intl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-chkp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-icf-gimple.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-icf.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-inline.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-prop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-ref.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-reference.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ipa-utils.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ira-int.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ira.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/is-a.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/java +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/java/java-tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/langhooks-def.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/langhooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lcm.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/libfuncs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/libiberty.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/limitx.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/limity.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/line-map.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/loop-unroll.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lower-subreg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lra-int.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lra.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lto-compress.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lto-section-names.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/lto-streamer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/machmode.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/machmode.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/md5.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/mem-stats-traits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/mem-stats.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/memory-block.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/mode-classes.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/objc +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/objc/objc-tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/obstack.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/omp-builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/omp-low.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/optabs-libfuncs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/optabs-query.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/optabs-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/optabs.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/optabs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/options.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/opts-diagnostic.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/opts.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/output.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/params-enum.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/params-list.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/params.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/params.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/params.list +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/pass-instances.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/pass_manager.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/passes.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/plugin-api.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/plugin-version.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/plugin.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/plugin.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/predict.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/predict.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/prefix.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/pretty-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/print-rtl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/print-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/profile.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/read-md.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/real.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/realmpfr.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/recog.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/reg-notes.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/regcprop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/regrename.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/regs.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/regset.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/reload.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/resource.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtl-chkp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtl-error.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtl-iter.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtl.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtl.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtlhash.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/rtlhooks-def.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/safe-ctype.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sanitizer.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sbitmap.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sched-int.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sdbout.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sel-sched-dump.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sel-sched-ir.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sel-sched.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sese.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/shrink-wrap.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/signop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sparseset.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/spellcheck.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/splay-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sreal.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ssa-iterators.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ssa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/stab.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/statistics.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/stmt.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/stor-layout.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/streamer-hooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/stringpool.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/symbol-summary.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/symtab.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/sync-builtins.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/system.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target-def.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target-globals.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target-hooks-macros.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target-insns.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/target.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/targhooks.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/timevar.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/timevar.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tm-preds.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tm.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tm_p.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/toplev.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tracer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/trans-mem.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-affine.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-cfg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-cfgcleanup.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-check.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-chkp.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-chrec.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-core.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-data-ref.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-dfa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-diagnostic.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-dump.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-eh.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-hash-traits.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-hasher.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-inline.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-into-ssa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-iterator.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-nested.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-object-size.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-outof-ssa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-parloops.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-pass.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-phinodes.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-pretty-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-scalar-evolution.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-address.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-alias.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-coalesce.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-dom.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-live.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-ivopts.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-manip.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-niter.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-operands.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-propagate.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-sccvn.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-scopedtables.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-ter.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadbackward.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadedge.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadupdate.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssa.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-ssanames.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-stdarg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-streamer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree-vectorizer.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/treestruct.def +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tsan.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/tsystem.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/typeclass.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/typed-splay-tree.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/ubsan.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/valtrack.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/value-prof.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/varasm.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/vec.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/version.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/vmsdbg.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/vtable-verify.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/wide-int-print.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/wide-int.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/xcoff.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/include/xcoffout.h +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/libcc1plugin.la +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so.0 +#usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so.0.0.0 #usr/lib/libasan.a #usr/lib/libasan.la #usr/lib/libasan.so -usr/lib/libasan.so.1 -usr/lib/libasan.so.1.0.0 +usr/lib/libasan.so.3 +usr/lib/libasan.so.3.0.0 #usr/lib/libasan_preinit.o #usr/lib/libatomic.a #usr/lib/libatomic.la #usr/lib/libatomic.so usr/lib/libatomic.so.1 -usr/lib/libatomic.so.1.1.0 +usr/lib/libatomic.so.1.2.0 +#usr/lib/libcc1.la +#usr/lib/libcc1.so +usr/lib/libcc1.so.0 +usr/lib/libcc1.so.0.0.0 #usr/lib/libcilkrts.a #usr/lib/libcilkrts.la #usr/lib/libcilkrts.so @@ -1129,6 +1375,17 @@ usr/lib/libitm.so.1.0.0 #usr/lib/liblsan.so usr/lib/liblsan.so.0 usr/lib/liblsan.so.0.0.0 +#usr/lib/libmpx.a +#usr/lib/libmpx.la +#usr/lib/libmpx.so +usr/lib/libmpx.so.2 +usr/lib/libmpx.so.2.0.0 +#usr/lib/libmpx.spec +#usr/lib/libmpxwrappers.a +#usr/lib/libmpxwrappers.la +#usr/lib/libmpxwrappers.so +usr/lib/libmpxwrappers.so.2 +usr/lib/libmpxwrappers.so.2.0.0 #usr/lib/libquadmath.a #usr/lib/libquadmath.la #usr/lib/libquadmath.so @@ -1143,8 +1400,9 @@ usr/lib/libquadmath.so.0.0.0 #usr/lib/libssp_nonshared.a #usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -usr/lib/libstdc++.so.6.0.20 -#usr/lib/libstdc++.so.6.0.20-gdb.py +usr/lib/libstdc++.so.6.0.22 +#usr/lib/libstdc++fs.a +#usr/lib/libstdc++fs.la #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/lib/libtsan.a @@ -1157,18 +1415,14 @@ usr/lib/libtsan.so.0.0.0 #usr/lib/libubsan.so usr/lib/libubsan.so.0 usr/lib/libubsan.so.0.0.0 -#usr/lib/libvtv.a -#usr/lib/libvtv.la -#usr/lib/libvtv.so -usr/lib/libvtv.so.0 -usr/lib/libvtv.so.0.0.0 -#usr/share/gcc-4.9.4 -#usr/share/gcc-4.9.4/python -#usr/share/gcc-4.9.4/python/libstdcxx -#usr/share/gcc-4.9.4/python/libstdcxx/__init__.py -#usr/share/gcc-4.9.4/python/libstdcxx/v6 -#usr/share/gcc-4.9.4/python/libstdcxx/v6/__init__.py -#usr/share/gcc-4.9.4/python/libstdcxx/v6/printers.py +#usr/share/gcc-6.3.0 +#usr/share/gcc-6.3.0/python +#usr/share/gcc-6.3.0/python/libstdcxx +#usr/share/gcc-6.3.0/python/libstdcxx/__init__.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6 +#usr/share/gcc-6.3.0/python/libstdcxx/v6/__init__.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6/printers.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6/xmethods.py #usr/share/info/cpp.info #usr/share/info/cppinternals.info #usr/share/info/gcc.info From 7e69203f5dc8c8d79e39858400af73471f6323e6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 20:24:16 +0200 Subject: [PATCH 414/464] Rootfile update for fuse Signed-off-by: Michael Tremer --- config/rootfiles/common/fuse | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/rootfiles/common/fuse b/config/rootfiles/common/fuse index 1ab1d4810..2cd91cb0c 100644 --- a/config/rootfiles/common/fuse +++ b/config/rootfiles/common/fuse @@ -1,5 +1,3 @@ -#etc/init.d -#etc/init.d/fuse #etc/rc.d/init.d/fuse etc/udev/rules.d/99-fuse.rules sbin/mount.fuse @@ -20,7 +18,7 @@ usr/bin/ulockmgr_server #usr/lib/libfuse.la usr/lib/libfuse.so usr/lib/libfuse.so.2 -usr/lib/libfuse.so.2.9.3 +usr/lib/libfuse.so.2.9.7 #usr/lib/libulockmgr.a #usr/lib/libulockmgr.la usr/lib/libulockmgr.so From fb26aed3c2865550a9e0b1941a2168ffbc6d5e32 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 20:35:40 +0200 Subject: [PATCH 415/464] Rootfile update for sudo Signed-off-by: Michael Tremer --- config/rootfiles/common/sudo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rootfiles/common/sudo b/config/rootfiles/common/sudo index c904fc337..d6ac72d4f 100644 --- a/config/rootfiles/common/sudo +++ b/config/rootfiles/common/sudo @@ -74,4 +74,4 @@ usr/sbin/visudo #usr/share/man/man8/sudoedit.8 #usr/share/man/man8/sudoreplay.8 #usr/share/man/man8/visudo.8 -var/lib/sudo +var/db/sudo From e5c370d0ba7f9d9722905ce9c05033f88c86879c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 18 May 2017 20:33:44 +0200 Subject: [PATCH 416/464] Rootfile update for gdbm Signed-off-by: Michael Tremer --- config/rootfiles/common/gdbm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/config/rootfiles/common/gdbm b/config/rootfiles/common/gdbm index 90bc8e88e..00d375804 100644 --- a/config/rootfiles/common/gdbm +++ b/config/rootfiles/common/gdbm @@ -1,15 +1,19 @@ +#usr/bin/gdbm_dump +#usr/bin/gdbm_load +#usr/bin/gdbmtool #usr/include/dbm.h #usr/include/gdbm.h #usr/include/ndbm.h -#usr/info/gdbm.info -#usr/lib/libgdbm.a #usr/lib/libgdbm.la -usr/lib/libgdbm.so -usr/lib/libgdbm.so.3 -usr/lib/libgdbm.so.3.0.0 -#usr/lib/libgdbm_compat.a +#usr/lib/libgdbm.so +usr/lib/libgdbm.so.4 +usr/lib/libgdbm.so.4.0.0 #usr/lib/libgdbm_compat.la -usr/lib/libgdbm_compat.so -usr/lib/libgdbm_compat.so.3 -usr/lib/libgdbm_compat.so.3.0.0 -#usr/man/man3/gdbm.3 +#usr/lib/libgdbm_compat.so +usr/lib/libgdbm_compat.so.4 +usr/lib/libgdbm_compat.so.4.0.0 +#usr/share/info/gdbm.info +#usr/share/man/man1/gdbm_dump.1 +#usr/share/man/man1/gdbm_load.1 +#usr/share/man/man1/gdbmtool.1 +#usr/share/man/man3/gdbm.3 From 908a786a087e89dc3799187482de612e19af8e33 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 May 2017 11:14:38 +0100 Subject: [PATCH 417/464] make.sh: Bump core update release number Signed-off-by: Michael Tremer --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index e8af68a2c..7e25ce996 100755 --- a/make.sh +++ b/make.sh @@ -25,7 +25,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number -CORE="110" # Core Level (Filename) +CORE="111" # Core Level (Filename) PAKFIRE_CORE="110" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan From c7f3f65b9ed2b71c6749ab13c92ac3f30e1badad Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 May 2017 12:09:54 +0100 Subject: [PATCH 418/464] Revert "Rootfile update for gdbm" This reverts commit e5c370d0ba7f9d9722905ce9c05033f88c86879c. Signed-off-by: Michael Tremer --- config/rootfiles/common/gdbm | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/config/rootfiles/common/gdbm b/config/rootfiles/common/gdbm index 00d375804..90bc8e88e 100644 --- a/config/rootfiles/common/gdbm +++ b/config/rootfiles/common/gdbm @@ -1,19 +1,15 @@ -#usr/bin/gdbm_dump -#usr/bin/gdbm_load -#usr/bin/gdbmtool #usr/include/dbm.h #usr/include/gdbm.h #usr/include/ndbm.h +#usr/info/gdbm.info +#usr/lib/libgdbm.a #usr/lib/libgdbm.la -#usr/lib/libgdbm.so -usr/lib/libgdbm.so.4 -usr/lib/libgdbm.so.4.0.0 +usr/lib/libgdbm.so +usr/lib/libgdbm.so.3 +usr/lib/libgdbm.so.3.0.0 +#usr/lib/libgdbm_compat.a #usr/lib/libgdbm_compat.la -#usr/lib/libgdbm_compat.so -usr/lib/libgdbm_compat.so.4 -usr/lib/libgdbm_compat.so.4.0.0 -#usr/share/info/gdbm.info -#usr/share/man/man1/gdbm_dump.1 -#usr/share/man/man1/gdbm_load.1 -#usr/share/man/man1/gdbmtool.1 -#usr/share/man/man3/gdbm.3 +usr/lib/libgdbm_compat.so +usr/lib/libgdbm_compat.so.3 +usr/lib/libgdbm_compat.so.3.0.0 +#usr/man/man3/gdbm.3 From 89ad036a38e7b1239867922262d7ad49d838397e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 May 2017 12:15:01 +0100 Subject: [PATCH 419/464] make.sh: Build libevent2-compat again I don't know how this disappeared but the package was not built any more. Signed-off-by: Michael Tremer --- make.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/make.sh b/make.sh index 4f53e4654..19e19a9f1 100755 --- a/make.sh +++ b/make.sh @@ -494,6 +494,7 @@ buildipfire() { lfsmake2 nettle lfsmake2 libevent lfsmake2 libevent2 + lfsmake2 libevent2-compat lfsmake2 expat lfsmake2 unbound lfsmake2 gnutls From 6c86682e64e10cbb229e3af34f792f43c0cb974b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 May 2017 13:16:44 +0200 Subject: [PATCH 420/464] Rootfile update for mysql Signed-off-by: Michael Tremer --- config/rootfiles/packages/mysql | 1 - 1 file changed, 1 deletion(-) diff --git a/config/rootfiles/packages/mysql b/config/rootfiles/packages/mysql index 8f1414ae1..292324662 100644 --- a/config/rootfiles/packages/mysql +++ b/config/rootfiles/packages/mysql @@ -53,7 +53,6 @@ srv/mysql #srv/mysql/mysql/user.MYD #srv/mysql/mysql/user.MYI #srv/mysql/mysql/user.frm -srv/mysql/test usr/bin/comp_err usr/bin/innochecksum usr/bin/msql2mysql From 3ddd5b66a9f436c0f2f5f7a8d3b549c4f11a5e84 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 May 2017 13:17:30 +0200 Subject: [PATCH 421/464] Fix environment variables when building file list for core updates Signed-off-by: Michael Tremer --- lfs/core-updates | 3 ++- src/scripts/archive.files | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lfs/core-updates b/lfs/core-updates index 75a8415f6..3c847daf2 100644 --- a/lfs/core-updates +++ b/lfs/core-updates @@ -56,7 +56,8 @@ core/%: eval $$(cat /usr/src/config/rootfiles/$@/meta) #Generate ROOTFILES from filelists - $(DIR_SRC)/src/scripts/archive.files \ + BUILD_ARCH=$(BUILD_ARCH) BUILDTARGET=$(BUILDTARGET) KVER=$(KVER) \ + $(DIR_SRC)/src/scripts/archive.files \ $(DIR_SRC)/config/rootfiles/$@/filelists \ $(DIR_SRC)/config/rootfiles/$@/files \ $(DIR_SRC)/config/rootfiles/$@/files.$(BUILD_ARCH) \ diff --git a/src/scripts/archive.files b/src/scripts/archive.files index 0ed237bfc..45de8c78d 100755 --- a/src/scripts/archive.files +++ b/src/scripts/archive.files @@ -19,6 +19,13 @@ # # ############################################################################### +for i in BUILD_ARCH BUILDTARGET KVER; do + if [ -z "${!i}" ]; then + echo "${i} not set" >&2 + exit 1 + fi +done + FILELIST= for dir in $@; do From d5f3cc7ff29d9ebf871612db622dac22cea12d05 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 20:16:13 +0100 Subject: [PATCH 422/464] flash-image: Increase size of root partition This should still be small enough to barely fit on a disk that can hold 1GB of data. The actual one. Not the one that some vendors put on it. Signed-off-by: Michael Tremer --- lfs/flash-images | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/flash-images b/lfs/flash-images index 554c04662..3d586c0ea 100644 --- a/lfs/flash-images +++ b/lfs/flash-images @@ -75,9 +75,9 @@ else endif # /boot: 64MB - OFFSET -# / : 750MB +# / : 850MB S_BOOT := $(shell echo $$(( 131072 - $(S_OFFSET) ))) -S_ROOT := 1536000 +S_ROOT := 1740800 PADDING = 100 # MB From d1e67bcaff7a0a280420f88ac2c34f31afc441ff Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 20:17:02 +0100 Subject: [PATCH 423/464] Rootfile update for directfb (x86_64) Signed-off-by: Michael Tremer --- config/rootfiles/packages/x86_64/directfb | 342 ++++++++++++++++------ 1 file changed, 245 insertions(+), 97 deletions(-) diff --git a/config/rootfiles/packages/x86_64/directfb b/config/rootfiles/packages/x86_64/directfb index 1f48350df..dc291bf12 100644 --- a/config/rootfiles/packages/x86_64/directfb +++ b/config/rootfiles/packages/x86_64/directfb @@ -1,30 +1,96 @@ usr/bin/dfbdump +usr/bin/dfbdumpinput usr/bin/dfbfx usr/bin/dfbg usr/bin/dfbinfo usr/bin/dfbinput +usr/bin/dfbinspector usr/bin/dfblayer +usr/bin/dfbmaster usr/bin/dfbpenmount +usr/bin/dfbplay usr/bin/dfbscreen +usr/bin/dfbshow +usr/bin/dfbswitch usr/bin/directfb-config usr/bin/directfb-csource usr/bin/mkdfiff usr/bin/mkdgiff +usr/bin/mkdgifft +usr/bin/pxa3xx_dump +#usr/include/++dfb +#usr/include/++dfb/++dfb.h +#usr/include/++dfb/++dfb_mangle.h +#usr/include/++dfb/++dfb_unmangle.h +#usr/include/++dfb/idirectfb.h +#usr/include/++dfb/idirectfbdatabuffer.h +#usr/include/++dfb/idirectfbdisplaylayer.h +#usr/include/++dfb/idirectfbeventbuffer.h +#usr/include/++dfb/idirectfbfont.h +#usr/include/++dfb/idirectfbimageprovider.h +#usr/include/++dfb/idirectfbinputdevice.h +#usr/include/++dfb/idirectfbpalette.h +#usr/include/++dfb/idirectfbscreen.h +#usr/include/++dfb/idirectfbsurface.h +#usr/include/++dfb/idirectfbvideoprovider.h +#usr/include/++dfb/idirectfbwindow.h #usr/include/directfb #usr/include/directfb-internal #usr/include/directfb-internal/core +#usr/include/directfb-internal/core/CoreDFB.h +#usr/include/directfb-internal/core/CoreDFB_CallMode.h +#usr/include/directfb-internal/core/CoreDFB_includes.h +#usr/include/directfb-internal/core/CoreGraphicsState.h +#usr/include/directfb-internal/core/CoreGraphicsStateClient.h +#usr/include/directfb-internal/core/CoreGraphicsState_includes.h +#usr/include/directfb-internal/core/CoreInputDevice.h +#usr/include/directfb-internal/core/CoreInputDevice_includes.h +#usr/include/directfb-internal/core/CoreLayer.h +#usr/include/directfb-internal/core/CoreLayerContext.h +#usr/include/directfb-internal/core/CoreLayerContext_includes.h +#usr/include/directfb-internal/core/CoreLayerRegion.h +#usr/include/directfb-internal/core/CoreLayerRegion_includes.h +#usr/include/directfb-internal/core/CoreLayer_includes.h +#usr/include/directfb-internal/core/CorePalette.h +#usr/include/directfb-internal/core/CorePalette_includes.h +#usr/include/directfb-internal/core/CoreScreen.h +#usr/include/directfb-internal/core/CoreScreen_includes.h +#usr/include/directfb-internal/core/CoreSlave.h +#usr/include/directfb-internal/core/CoreSlave_includes.h +#usr/include/directfb-internal/core/CoreSurface.h +#usr/include/directfb-internal/core/CoreSurfaceClient.h +#usr/include/directfb-internal/core/CoreSurfaceClient_includes.h +#usr/include/directfb-internal/core/CoreSurface_includes.h +#usr/include/directfb-internal/core/CoreWindow.h +#usr/include/directfb-internal/core/CoreWindowStack.h +#usr/include/directfb-internal/core/CoreWindowStack_includes.h +#usr/include/directfb-internal/core/CoreWindow_includes.h +#usr/include/directfb-internal/core/Debug.h +#usr/include/directfb-internal/core/DisplayTask.h +#usr/include/directfb-internal/core/Fifo.h +#usr/include/directfb-internal/core/Interface.h +#usr/include/directfb-internal/core/PacketBuffer.h +#usr/include/directfb-internal/core/Renderer.h +#usr/include/directfb-internal/core/SurfaceTask.h +#usr/include/directfb-internal/core/Task.h +#usr/include/directfb-internal/core/TaskManager.h +#usr/include/directfb-internal/core/TaskThreadsQ.h +#usr/include/directfb-internal/core/Util.h #usr/include/directfb-internal/core/clipboard.h #usr/include/directfb-internal/core/colorhash.h #usr/include/directfb-internal/core/core.h #usr/include/directfb-internal/core/core_parts.h +#usr/include/directfb-internal/core/core_strings.h #usr/include/directfb-internal/core/core_system.h #usr/include/directfb-internal/core/coredefs.h #usr/include/directfb-internal/core/coretypes.h #usr/include/directfb-internal/core/fonts.h #usr/include/directfb-internal/core/gfxcard.h #usr/include/directfb-internal/core/graphics_driver.h +#usr/include/directfb-internal/core/graphics_state.h #usr/include/directfb-internal/core/input.h #usr/include/directfb-internal/core/input_driver.h +#usr/include/directfb-internal/core/input_hub.h #usr/include/directfb-internal/core/layer_context.h #usr/include/directfb-internal/core/layer_control.h #usr/include/directfb-internal/core/layer_region.h @@ -36,8 +102,12 @@ usr/bin/mkdgiff #usr/include/directfb-internal/core/screens_internal.h #usr/include/directfb-internal/core/state.h #usr/include/directfb-internal/core/surface.h +#usr/include/directfb-internal/core/surface_allocation.h #usr/include/directfb-internal/core/surface_buffer.h +#usr/include/directfb-internal/core/surface_client.h +#usr/include/directfb-internal/core/surface_core.h #usr/include/directfb-internal/core/surface_pool.h +#usr/include/directfb-internal/core/surface_pool_bridge.h #usr/include/directfb-internal/core/system.h #usr/include/directfb-internal/core/windows.h #usr/include/directfb-internal/core/windows_internal.h @@ -54,6 +124,8 @@ usr/bin/mkdgiff #usr/include/directfb-internal/display/idirectfbsurface.h #usr/include/directfb-internal/display/idirectfbsurface_layer.h #usr/include/directfb-internal/display/idirectfbsurface_window.h +#usr/include/directfb-internal/dummy +#usr/include/directfb-internal/dummy/dummy.h #usr/include/directfb-internal/fbdev #usr/include/directfb-internal/fbdev/agp.h #usr/include/directfb-internal/fbdev/fb.h @@ -67,13 +139,16 @@ usr/bin/mkdgiff #usr/include/directfb-internal/gfx/generic/generic.h #usr/include/directfb-internal/gfx/util.h #usr/include/directfb-internal/idirectfb.h +#usr/include/directfb-internal/init.h #usr/include/directfb-internal/input #usr/include/directfb-internal/input/idirectfbinputbuffer.h #usr/include/directfb-internal/input/idirectfbinputdevice.h #usr/include/directfb-internal/media #usr/include/directfb-internal/media/idirectfbdatabuffer.h +#usr/include/directfb-internal/media/idirectfbdatabuffer_client.h #usr/include/directfb-internal/media/idirectfbfont.h #usr/include/directfb-internal/media/idirectfbimageprovider.h +#usr/include/directfb-internal/media/idirectfbimageprovider_client.h #usr/include/directfb-internal/media/idirectfbvideoprovider.h #usr/include/directfb-internal/misc #usr/include/directfb-internal/misc/conf.h @@ -85,20 +160,60 @@ usr/bin/mkdgiff #usr/include/directfb/dfiff.h #usr/include/directfb/dgiff.h #usr/include/directfb/direct +#usr/include/directfb/direct/Lists.h +#usr/include/directfb/direct/LockWQ.h +#usr/include/directfb/direct/Magic.h +#usr/include/directfb/direct/Mutex.h +#usr/include/directfb/direct/Performer.h +#usr/include/directfb/direct/String.h +#usr/include/directfb/direct/TLSObject.h +#usr/include/directfb/direct/ToString.h +#usr/include/directfb/direct/Types++.h +#usr/include/directfb/direct/atomic.h #usr/include/directfb/direct/build.h #usr/include/directfb/direct/clock.h +#usr/include/directfb/direct/compiler.h #usr/include/directfb/direct/conf.h #usr/include/directfb/direct/debug.h #usr/include/directfb/direct/direct.h +#usr/include/directfb/direct/fastlz.h +#usr/include/directfb/direct/fifo.h +#usr/include/directfb/direct/filesystem.h +#usr/include/directfb/direct/flz.h #usr/include/directfb/direct/hash.h +#usr/include/directfb/direct/init.h #usr/include/directfb/direct/interface.h #usr/include/directfb/direct/interface_implementation.h #usr/include/directfb/direct/list.h #usr/include/directfb/direct/log.h +#usr/include/directfb/direct/log_domain.h +#usr/include/directfb/direct/map.h #usr/include/directfb/direct/mem.h #usr/include/directfb/direct/memcpy.h #usr/include/directfb/direct/messages.h #usr/include/directfb/direct/modules.h +#usr/include/directfb/direct/os +#usr/include/directfb/direct/os/clock.h +#usr/include/directfb/direct/os/filesystem.h +#usr/include/directfb/direct/os/linux +#usr/include/directfb/direct/os/linux/glibc +#usr/include/directfb/direct/os/linux/glibc/filesystem.h +#usr/include/directfb/direct/os/linux/glibc/mutex.h +#usr/include/directfb/direct/os/linux/glibc/thread.h +#usr/include/directfb/direct/os/linux/glibc/types.h +#usr/include/directfb/direct/os/linux/glibc/waitqueue.h +#usr/include/directfb/direct/os/log.h +#usr/include/directfb/direct/os/mem.h +#usr/include/directfb/direct/os/mutex.h +#usr/include/directfb/direct/os/signals.h +#usr/include/directfb/direct/os/system.h +#usr/include/directfb/direct/os/thread.h +#usr/include/directfb/direct/os/types.h +#usr/include/directfb/direct/os/waitqueue.h +#usr/include/directfb/direct/perf.h +#usr/include/directfb/direct/print.h +#usr/include/directfb/direct/processor.h +#usr/include/directfb/direct/result.h #usr/include/directfb/direct/serial.h #usr/include/directfb/direct/signals.h #usr/include/directfb/direct/stream.h @@ -109,14 +224,23 @@ usr/bin/mkdgiff #usr/include/directfb/direct/types.h #usr/include/directfb/direct/utf8.h #usr/include/directfb/direct/util.h +#usr/include/directfb/direct/uuid.h +#usr/include/directfb/directfb++.h #usr/include/directfb/directfb.h +#usr/include/directfb/directfb_build.h +#usr/include/directfb/directfb_graphics.h #usr/include/directfb/directfb_keyboard.h #usr/include/directfb/directfb_keynames.h #usr/include/directfb/directfb_strings.h #usr/include/directfb/directfb_util.h #usr/include/directfb/directfb_version.h +#usr/include/directfb/directfb_water.h +#usr/include/directfb/directfb_water_strings.h +#usr/include/directfb/directfb_windows.h #usr/include/directfb/directfbgl.h +#usr/include/directfb/directfbgl2.h #usr/include/directfb/fusion +#usr/include/directfb/fusion/Debug.h #usr/include/directfb/fusion/arena.h #usr/include/directfb/fusion/build.h #usr/include/directfb/fusion/call.h @@ -124,6 +248,7 @@ usr/bin/mkdgiff #usr/include/directfb/fusion/fusion.h #usr/include/directfb/fusion/fusion_internal.h #usr/include/directfb/fusion/hash.h +#usr/include/directfb/fusion/init.h #usr/include/directfb/fusion/lock.h #usr/include/directfb/fusion/object.h #usr/include/directfb/fusion/property.h @@ -137,113 +262,136 @@ usr/bin/mkdgiff #usr/include/directfb/fusion/shmalloc.h #usr/include/directfb/fusion/types.h #usr/include/directfb/fusion/vector.h -#usr/lib/directfb-1.1-0 -#usr/lib/directfb-1.1-0/gfxdrivers -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_ati128.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_ati128.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cle266.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cle266.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cyber5k.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cyber5k.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i810.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i810.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i830.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i830.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_mach64.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_mach64.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_neomagic.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_neomagic.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nsc.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nsc.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nvidia.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nvidia.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_radeon.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_radeon.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_savage.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_savage.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sdlgraphics.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sdlgraphics.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sh7722.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sh7722.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sis315.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sis315.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_tdfx.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_tdfx.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_unichrome.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_unichrome.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_vmware.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_vmware.so -#usr/lib/directfb-1.1-0/inputdrivers -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_joystick.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_joystick.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_keyboard.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_keyboard.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_linux_input.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_linux_input.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_lirc.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_lirc.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_mutouch.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_mutouch.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_penmount.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_penmount.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_ps2mouse.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_ps2mouse.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sdlinput.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sdlinput.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_serialmouse.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_serialmouse.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sonypi.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sonypi.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_wm97xx_ts.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_wm97xx_ts.so -#usr/lib/directfb-1.1-0/interfaces -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_default.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_default.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_ft2.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_ft2.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider -#usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so -#usr/lib/directfb-1.1-0/systems -#usr/lib/directfb-1.1-0/systems/libdirectfb_devmem.la -usr/lib/directfb-1.1-0/systems/libdirectfb_devmem.so -#usr/lib/directfb-1.1-0/systems/libdirectfb_fbdev.la -usr/lib/directfb-1.1-0/systems/libdirectfb_fbdev.so -#usr/lib/directfb-1.1-0/systems/libdirectfb_sdl.la -usr/lib/directfb-1.1-0/systems/libdirectfb_sdl.so -#usr/lib/directfb-1.1-0/wm -#usr/lib/directfb-1.1-0/wm/libdirectfbwm_default.la -usr/lib/directfb-1.1-0/wm/libdirectfbwm_default.so -usr/lib/libdirect-1.1.so.0 -usr/lib/libdirect-1.1.so.0.1.0 +#usr/lib/directfb-1.7-7 +#usr/lib/directfb-1.7-7/gfxdrivers +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i810.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i810.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i830.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i830.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_neomagic.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_neomagic.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.so +#usr/lib/directfb-1.7-7/inputdrivers +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.so +#usr/lib/directfb-1.7-7/interfaces +#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager +#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.la +usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows +#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.so +#usr/lib/directfb-1.7-7/interfaces/IWater +#usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.la +usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.so +#usr/lib/directfb-1.7-7/systems +#usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.la +usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.la +usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.la +usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.la +usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.so +#usr/lib/directfb-1.7-7/wm +#usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.la +usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.so +usr/lib/lib++dfb-1.7.so.7 +usr/lib/lib++dfb-1.7.so.7.0.0 +#usr/lib/lib++dfb.la +#usr/lib/lib++dfb.so +usr/lib/libdirect-1.7.so.7 +usr/lib/libdirect-1.7.so.7.0.0 #usr/lib/libdirect.la usr/lib/libdirect.so -usr/lib/libdirectfb-1.1.so.0 -usr/lib/libdirectfb-1.1.so.0.1.0 +usr/lib/libdirectfb-1.7.so.7 +usr/lib/libdirectfb-1.7.so.7.0.0 #usr/lib/libdirectfb.la usr/lib/libdirectfb.so -usr/lib/libfusion-1.1.so.0 -usr/lib/libfusion-1.1.so.0.1.0 +usr/lib/libfusion-1.7.so.7 +usr/lib/libfusion-1.7.so.7.0.0 #usr/lib/libfusion.la usr/lib/libfusion.so +#usr/lib/pkgconfig/++dfb.pc #usr/lib/pkgconfig/direct.pc #usr/lib/pkgconfig/directfb-internal.pc #usr/lib/pkgconfig/directfb.pc #usr/lib/pkgconfig/fusion.pc -#usr/share/directfb-1.1.1 -usr/share/directfb-1.1.1/cursor.dat +#usr/share/directfb-1.7.7 +#usr/share/directfb-1.7.7/cursor.dat +#usr/share/directfb-1.7.7/cursor.png +#usr/share/directfb-1.7.7/decker.dgiff +#usr/share/directfb-1.7.7/decker.ttf #usr/share/man/man1/dfbg.1 #usr/share/man/man1/directfb-csource.1 #usr/share/man/man5/directfbrc.5 From 22870c037560a37577fabfde824862981c792b0c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 20:58:54 +0100 Subject: [PATCH 424/464] openssl: Update to 1.0.2l This release only contains bug fixes but no security-related fixes Signed-off-by: Michael Tremer --- lfs/openssl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openssl b/lfs/openssl index d6be5a9d9..b613ed76e 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -24,7 +24,7 @@ include Config -VER = 1.0.2k +VER = 1.0.2l THISAPP = openssl-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -94,7 +94,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f965fc0bf01bf882b31314b61391ae65 +$(DL_FILE)_MD5 = f85123cd390e864dfbe517e7616e6566 install : $(TARGET) From 00147edd8851805d4bb5ebc60d51bfd879ea8738 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 20:58:54 +0100 Subject: [PATCH 425/464] openssl: Update to 1.0.2l This release only contains bug fixes but no security-related fixes Signed-off-by: Michael Tremer --- lfs/openssl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openssl b/lfs/openssl index cece0074e..01b4e758b 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -24,7 +24,7 @@ include Config -VER = 1.0.2k +VER = 1.0.2l THISAPP = openssl-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -87,7 +87,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f965fc0bf01bf882b31314b61391ae65 +$(DL_FILE)_MD5 = f85123cd390e864dfbe517e7616e6566 install : $(TARGET) From 206113d39804f4bbdcf7b7983fc7b5fb9f89afc8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 21:03:59 +0100 Subject: [PATCH 426/464] core111: Ship updated openssl Signed-off-by: Michael Tremer --- config/rootfiles/core/111/filelists/i586/openssl-sse2 | 1 + config/rootfiles/core/111/filelists/openssl | 1 + 2 files changed, 2 insertions(+) create mode 120000 config/rootfiles/core/111/filelists/i586/openssl-sse2 create mode 120000 config/rootfiles/core/111/filelists/openssl diff --git a/config/rootfiles/core/111/filelists/i586/openssl-sse2 b/config/rootfiles/core/111/filelists/i586/openssl-sse2 new file mode 120000 index 000000000..f424713d6 --- /dev/null +++ b/config/rootfiles/core/111/filelists/i586/openssl-sse2 @@ -0,0 +1 @@ +../../../../common/i586/openssl-sse2 \ No newline at end of file diff --git a/config/rootfiles/core/111/filelists/openssl b/config/rootfiles/core/111/filelists/openssl new file mode 120000 index 000000000..e011a9266 --- /dev/null +++ b/config/rootfiles/core/111/filelists/openssl @@ -0,0 +1 @@ +../../../common/openssl \ No newline at end of file From ebf64a93ee01f18226a8ed465a188f976097ee34 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 27 May 2017 11:23:58 +0100 Subject: [PATCH 427/464] Fix shutting down unbound when red is STATIC Unbound was trying to check availability of the upstream name servers when /var/ipfire/red/active is present. This patch removes it first and then brings down the red device. Signed-off-by: Michael Tremer --- config/rootfiles/core/111/filelists/files | 2 ++ src/initscripts/networking/dhcpcd.exe | 1 - src/initscripts/networking/red | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/core/111/filelists/files b/config/rootfiles/core/111/filelists/files index dbe65e2f0..f1e9746ad 100644 --- a/config/rootfiles/core/111/filelists/files +++ b/config/rootfiles/core/111/filelists/files @@ -1,5 +1,7 @@ etc/system-release etc/issue +etc/rc.d/init.d/networking/dhcpcd.exe +etc/rc.d/init.d/networking/red etc/rc.d/init.d/wlanclient srv/web/ipfire/cgi-bin/index.cgi srv/web/ipfire/cgi-bin/ipinfo.cgi diff --git a/src/initscripts/networking/dhcpcd.exe b/src/initscripts/networking/dhcpcd.exe index a2cdc66d2..6c1391d71 100644 --- a/src/initscripts/networking/dhcpcd.exe +++ b/src/initscripts/networking/dhcpcd.exe @@ -79,7 +79,6 @@ dhcpcd_down() # Only if RED_TYPE=DHCP update /var/ipfire/red if [ "$RED_TYPE" == "DHCP" ]; then logger -p local0.info -t dhcpcd.exe[$$] "${interface} has been brought down" - rm -f /var/ipfire/red/active run_subdir ${rc_base}/init.d/networking/red.down/ fi } diff --git a/src/initscripts/networking/red b/src/initscripts/networking/red index 00e739cab..20567ce51 100644 --- a/src/initscripts/networking/red +++ b/src/initscripts/networking/red @@ -457,6 +457,8 @@ case "${1}" in ;; stop) + rm -f /var/ipfire/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf} + if [ "$TYPE" == "STATIC" ]; then boot_mesg "Stopping default gateway ${GATEWAY}..." ip route del default via ${GATEWAY} >/dev/null 2>&1 @@ -521,7 +523,6 @@ case "${1}" in ## Disable vnstat collection /usr/bin/vnstat -u -i ${DEVICE} -r --disable > /dev/null 2>&1 - rm -f /var/ipfire/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf} exit 0; ;; esac From fc8806bca7693ef418cf8a047cbfe82f76e38d98 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 27 May 2017 12:29:54 +0100 Subject: [PATCH 428/464] bash: Correctly create link to /bin/sh Signed-off-by: Michael Tremer --- lfs/bash | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lfs/bash b/lfs/bash index c215b5a32..6e09c5b1b 100644 --- a/lfs/bash +++ b/lfs/bash @@ -99,13 +99,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - ln -sf bash /bin/sh - -ifneq "$(ROOT)" "" - -mkdir -p $(ROOT)/bin - -mkdir -p $(ROOT)/usr/bin - ln -sf bash /tools/bin/sh - -ln -sf /tools/bin/bash $(ROOT)/bin/sh +ifeq "$(TOOLCHAIN)" "1" + ln -svf bash /tools/bin/sh +else + ln -svf bash /bin/sh endif @rm -rf $(DIR_APP) From 1d13e6373a1a900f42fd55a1ad3b0a1c7cb341da Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Sun, 28 May 2017 10:40:09 +0200 Subject: [PATCH 429/464] samba: add current RHEL6 patches Signed-off-by: Arne Fitzenreiter --- lfs/samba | 72 +- .../samba/CVE-2015-5252-v3-6-bso11395.patch | 44 + .../samba/CVE-2015-5296-v3-6-bso11536.patch | 113 + .../samba/CVE-2015-5299-v3-6-bso11529.patch | 98 + .../samba/CVE-2015-5330-v3-6-bso11599.patch | 214 ++ src/patches/samba/CVE-2016-2125-v3.6.patch | 46 + src/patches/samba/CVE-2016-2126-v3.6.patch | 80 + src/patches/samba/CVE-2017-7494-v3-6.patch | 32 + src/patches/samba/doc-update.patch | 2538 +++++++++++++++++ .../samba/samba-3.2.0pre1-grouppwd.patch | 13 + .../samba/samba-3.2.0pre1-pipedir.patch | 13 + src/patches/samba/samba-3.2.5-inotify.patch | 49 + src/patches/samba/samba-3.5.11-docs.patch | 70 + .../samba/samba-3.5.11-idmapdebug.patch | 26 + .../samba/samba-3.5.11-nss_info_doc.patch | 75 + .../samba/samba-3.5.11-wbinfo_manpage.patch | 65 + src/patches/samba/samba-3.5.12-dns.patch | 27 + .../samba/samba-3.5.12-pam_radio_type.patch | 31 + ...mba-3.6.18-fix_net_ads_join_segfault.patch | 40 + .../samba/samba-3.6.19-valid_users_doc.patch | 53 + .../samba-3.6.23-fix_libads_krb5_ipv6.patch | 788 +++++ src/patches/samba/samba-3.6.23-gecos.patch | 42 + .../samba/samba-3.6.23-glusterfs.patch | 2318 +++++++++++++++ .../samba/samba-3.6.23-libsmbclient.patch | 36 + .../samba-3.6.26-smb2_case_sensitive.patch | 118 + ....6.99-2110-ntlmssp-session-setup-nas.patch | 39 + .../samba-3.6.99-add_spoolss_os_version.patch | 53 + ...6.99-add_timeout_option_to_smbclient.patch | 147 + ....6.99-asserted_identity_sid-S-1-18-1.patch | 223 ++ .../samba/samba-3.6.99-bug-1117059.patch | 86 + .../samba/samba-3.6.99-bug-1192211.patch | 42 + ...3.6.99-doc_netbios_name_length_limit.patch | 257 ++ .../samba-3.6.99-fix_dirsort_ea-support.patch | 314 ++ .../samba-3.6.99-fix_dropbox_share.patch | 271 ++ .../samba/samba-3.6.99-fix_force_group.patch | 68 + ...ix_force_user_winbind_default_domain.patch | 58 + ....99-fix_force_user_with_security_ads.patch | 1292 +++++++++ .../samba-3.6.99-fix_gecos_interactive.patch | 922 ++++++ ...-fix_group_expansion_in_service_path.patch | 46 + ...x_group_expansion_with_nss_templates.patch | 376 +++ ...a-3.6.99-fix_keytab_null_termination.patch | 37 + ...6.99-fix_lookups_with_one_way_trusts.patch | 37 + ...ba-3.6.99-fix_mangling_hash_segfault.patch | 38 + ...amba-3.6.99-fix_map_to_guest_bad_uid.patch | 76 + ...fix_member_auth_after_changed_secret.patch | 89 + ...a-3.6.99-fix_memleak_in_printer_list.patch | 34 + ....99-fix_memleak_winbind_cached_creds.patch | 46 + ...9-fix_nbt_query_with_many_components.patch | 35 + ....99-fix_pam_winbind_parsing_segfault.patch | 112 + ...-3.6.99-fix_printcap_cpu_utilization.patch | 958 +++++++ ...samba-3.6.99-fix_rpc_query_user_list.patch | 37 + ...3.6.99-fix_rpcclient_timeout_command.patch | 73 + ....99-fix_security_server_share_access.patch | 70 + ...-3.6.99-fix_setup_domain_child_logic.patch | 186 ++ .../samba/samba-3.6.99-fix_smb_conf_doc.patch | 51 + ...mba-3.6.99-fix_smbclient_ntlmv2_auth.patch | 116 + ...-fix_stale_printer_entries_on_rename.patch | 55 + ...amba-3.6.99-fix_symlink_verification.patch | 111 + ...ba-3.6.99-fix_usergroup_cache_lookup.patch | 397 +++ ...3.6.99-fix_winbind_cache_memory_leak.patch | 29 + .../samba/samba-3.6.99-idmap_ad_memleak.patch | 28 + ...ba-3.6.99-libsmb_fix_dfs_connections.patch | 47 + ...a-3.6.99-net_ads_join_no_dns_updates.patch | 101 + ...samba-3.6.99-nt_printer_publish_guid.patch | 620 ++++ ...amba-3.6.99-nt_printer_unpublish_fix.patch | 75 + .../samba-3.6.x-winbind_tevent_poll.patch | 308 ++ 66 files changed, 14959 insertions(+), 2 deletions(-) create mode 100644 src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch create mode 100644 src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch create mode 100644 src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch create mode 100644 src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch create mode 100644 src/patches/samba/CVE-2016-2125-v3.6.patch create mode 100644 src/patches/samba/CVE-2016-2126-v3.6.patch create mode 100644 src/patches/samba/CVE-2017-7494-v3-6.patch create mode 100644 src/patches/samba/doc-update.patch create mode 100644 src/patches/samba/samba-3.2.0pre1-grouppwd.patch create mode 100644 src/patches/samba/samba-3.2.0pre1-pipedir.patch create mode 100644 src/patches/samba/samba-3.2.5-inotify.patch create mode 100644 src/patches/samba/samba-3.5.11-docs.patch create mode 100644 src/patches/samba/samba-3.5.11-idmapdebug.patch create mode 100644 src/patches/samba/samba-3.5.11-nss_info_doc.patch create mode 100644 src/patches/samba/samba-3.5.11-wbinfo_manpage.patch create mode 100644 src/patches/samba/samba-3.5.12-dns.patch create mode 100644 src/patches/samba/samba-3.5.12-pam_radio_type.patch create mode 100644 src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch create mode 100644 src/patches/samba/samba-3.6.19-valid_users_doc.patch create mode 100644 src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch create mode 100644 src/patches/samba/samba-3.6.23-gecos.patch create mode 100644 src/patches/samba/samba-3.6.23-glusterfs.patch create mode 100644 src/patches/samba/samba-3.6.23-libsmbclient.patch create mode 100644 src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch create mode 100644 src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch create mode 100644 src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch create mode 100644 src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch create mode 100644 src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch create mode 100644 src/patches/samba/samba-3.6.99-bug-1117059.patch create mode 100644 src/patches/samba/samba-3.6.99-bug-1192211.patch create mode 100644 src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_dropbox_share.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_force_group.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_symlink_verification.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch create mode 100644 src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch create mode 100644 src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch create mode 100644 src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch create mode 100644 src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch create mode 100644 src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch create mode 100644 src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch create mode 100644 src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch diff --git a/lfs/samba b/lfs/samba index 076152f48..8f0b946ec 100644 --- a/lfs/samba +++ b/lfs/samba @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = samba -PAK_VER = 64 +PAK_VER = 65 DEPS = "cups krb5" @@ -78,8 +78,61 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - # Apply Redhat CVE patches + # Apply patches from RHEL6 + # Upstream patches + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch + # Additional Red Hat patches + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.0pre1-pipedir.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.0pre1-grouppwd.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.2.5-inotify.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-idmapdebug.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-docs.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-nss_info_doc.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.12-dns.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.5.12-pam_radio_type.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.19-valid_users_doc.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-gecos.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-glusterfs.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-libsmbclient.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-bug-1117059.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-bug-1192211.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_force_group.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-7560-v3-6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-preparation-v3-6.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2110-v3-6.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2111-v3-6.patch @@ -87,6 +140,21 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2115-v3-6.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2118-v3-6.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2015-5370-v3-6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2126-v3.6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2016-2125-v3.6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/CVE-2017-7494-v3-6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/doc-update.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch + cd $(DIR_APP)/source3 && ./autogen.sh cd $(DIR_APP)/source3 && ./configure \ diff --git a/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch b/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch new file mode 100644 index 000000000..b7580fba3 --- /dev/null +++ b/src/patches/samba/CVE-2015-5252-v3-6-bso11395.patch @@ -0,0 +1,44 @@ +From 2e94b6ec10f1d15e24867bab3063bb85f173406a Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Thu, 9 Jul 2015 10:58:11 -0700 +Subject: [PATCH] CVE-2015-5252: s3: smbd: Fix symlink verification (file + access outside the share). + +Ensure matching component ends in '/' or '\0'. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11395 + +Signed-off-by: Jeremy Allison +Reviewed-by: Volker Lendecke +--- + source3/smbd/vfs.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c +index 6c56964..bd93b7f 100644 +--- a/source3/smbd/vfs.c ++++ b/source3/smbd/vfs.c +@@ -982,6 +982,7 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname) + if (!allow_widelinks || !allow_symlinks) { + const char *conn_rootdir; + size_t rootdir_len; ++ bool matched; + + conn_rootdir = SMB_VFS_CONNECTPATH(conn, fname); + if (conn_rootdir == NULL) { +@@ -992,8 +993,10 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname) + } + + rootdir_len = strlen(conn_rootdir); +- if (strncmp(conn_rootdir, resolved_name, +- rootdir_len) != 0) { ++ matched = (strncmp(conn_rootdir, resolved_name, ++ rootdir_len) == 0); ++ if (!matched || (resolved_name[rootdir_len] != '/' && ++ resolved_name[rootdir_len] != '\0')) { + DEBUG(2, ("check_reduced_name: Bad access " + "attempt: %s is a symlink outside the " + "share path\n", fname)); +-- +2.5.0 + diff --git a/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch b/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch new file mode 100644 index 000000000..4b722a56a --- /dev/null +++ b/src/patches/samba/CVE-2015-5296-v3-6-bso11536.patch @@ -0,0 +1,113 @@ +From 25139116756cc285a3a5534834cc276ef1b7baaa Mon Sep 17 00:00:00 2001 +From: Stefan Metzmacher +Date: Wed, 30 Sep 2015 21:17:02 +0200 +Subject: [PATCH 1/2] CVE-2015-5296: s3:libsmb: force signing when requiring + encryption in do_connect() + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11536 + +Signed-off-by: Stefan Metzmacher +Reviewed-by: Jeremy Allison +--- + source3/libsmb/clidfs.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c +index 23e1471..f153b6b 100644 +--- a/source3/libsmb/clidfs.c ++++ b/source3/libsmb/clidfs.c +@@ -98,6 +98,11 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx, + const char *username; + const char *password; + NTSTATUS status; ++ int signing_state = get_cmdline_auth_info_signing_state(auth_info); ++ ++ if (force_encrypt) { ++ signing_state = Required; ++ } + + /* make a copy so we don't modify the global string 'service' */ + servicename = talloc_strdup(ctx,share); +@@ -132,7 +137,7 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx, + zero_sockaddr(&ss); + + /* have to open a new connection */ +- c = cli_initialise_ex(get_cmdline_auth_info_signing_state(auth_info)); ++ c = cli_initialise_ex(signing_state); + if (c == NULL) { + d_printf("Connection to %s failed\n", server_n); + return NULL; +-- +2.5.0 + + +From 060adb0abdeda51b8b622c6020b5dea0c8dde1cf Mon Sep 17 00:00:00 2001 +From: Stefan Metzmacher +Date: Wed, 30 Sep 2015 21:17:02 +0200 +Subject: [PATCH 2/2] CVE-2015-5296: s3:libsmb: force signing when requiring + encryption in SMBC_server_internal() + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11536 + +Signed-off-by: Stefan Metzmacher +Reviewed-by: Jeremy Allison +--- + source3/libsmb/libsmb_server.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c +index 45be660..167f2c9 100644 +--- a/source3/libsmb/libsmb_server.c ++++ b/source3/libsmb/libsmb_server.c +@@ -258,6 +258,7 @@ SMBC_server_internal(TALLOC_CTX *ctx, + const char *username_used; + NTSTATUS status; + char *newserver, *newshare; ++ int signing_state = Undefined; + + zero_sockaddr(&ss); + ZERO_STRUCT(c); +@@ -404,8 +405,12 @@ again: + + zero_sockaddr(&ss); + ++ if (context->internal->smb_encryption_level != SMBC_ENCRYPTLEVEL_NONE) { ++ signing_state = Required; ++ } ++ + /* have to open a new connection */ +- if ((c = cli_initialise()) == NULL) { ++ if ((c = cli_initialise_ex(signing_state)) == NULL) { + errno = ENOMEM; + return NULL; + } +@@ -750,6 +755,7 @@ SMBC_attr_server(TALLOC_CTX *ctx, + ipc_srv = SMBC_find_server(ctx, context, server, "*IPC$", + pp_workgroup, pp_username, pp_password); + if (!ipc_srv) { ++ int signing_state = Undefined; + + /* We didn't find a cached connection. Get the password */ + if (!*pp_password || (*pp_password)[0] == '\0') { +@@ -771,6 +777,9 @@ SMBC_attr_server(TALLOC_CTX *ctx, + if (smbc_getOptionUseCCache(context)) { + flags |= CLI_FULL_CONNECTION_USE_CCACHE; + } ++ if (context->internal->smb_encryption_level != SMBC_ENCRYPTLEVEL_NONE) { ++ signing_state = Required; ++ } + + zero_sockaddr(&ss); + nt_status = cli_full_connection(&ipc_cli, +@@ -780,7 +789,7 @@ SMBC_attr_server(TALLOC_CTX *ctx, + *pp_workgroup, + *pp_password, + flags, +- Undefined); ++ signing_state); + if (! NT_STATUS_IS_OK(nt_status)) { + DEBUG(1,("cli_full_connection failed! (%s)\n", + nt_errstr(nt_status))); +-- +2.5.0 + diff --git a/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch b/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch new file mode 100644 index 000000000..38936bb91 --- /dev/null +++ b/src/patches/samba/CVE-2015-5299-v3-6-bso11529.patch @@ -0,0 +1,98 @@ +From 8e49de7754f7171a58a1f94dee0f1138dbee3c60 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Fri, 23 Oct 2015 14:54:31 -0700 +Subject: [PATCH] CVE-2015-5299: s3-shadow-copy2: fix missing access check on + snapdir + +Fix originally from + +https://bugzilla.samba.org/show_bug.cgi?id=11529 + +Signed-off-by: Jeremy Allison +Reviewed-by: David Disseldorp +--- + source3/modules/vfs_shadow_copy2.c | 47 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c +index fedfb53..16c1ed7 100644 +--- a/source3/modules/vfs_shadow_copy2.c ++++ b/source3/modules/vfs_shadow_copy2.c +@@ -21,6 +21,8 @@ + + #include "includes.h" + #include "smbd/smbd.h" ++#include "smbd/globals.h" ++#include "../libcli/security/security.h" + #include "system/filesys.h" + #include "ntioctl.h" + +@@ -764,6 +766,43 @@ static int shadow_copy2_mkdir(vfs_handle_struct *handle, const char *fname, mod + SHADOW2_NEXT(MKDIR, (handle, name, mode), int, -1); + } + ++static bool check_access_snapdir(struct vfs_handle_struct *handle, ++ const char *path) ++{ ++ struct smb_filename smb_fname; ++ int ret; ++ NTSTATUS status; ++ uint32_t access_granted = 0; ++ ++ ZERO_STRUCT(smb_fname); ++ smb_fname.base_name = talloc_asprintf(talloc_tos(), ++ "%s", ++ path); ++ if (smb_fname.base_name == NULL) { ++ return false; ++ } ++ ++ ret = SMB_VFS_NEXT_STAT(handle, &smb_fname); ++ if (ret != 0 || !S_ISDIR(smb_fname.st.st_ex_mode)) { ++ TALLOC_FREE(smb_fname.base_name); ++ return false; ++ } ++ ++ status = smbd_check_open_rights(handle->conn, ++ &smb_fname, ++ SEC_DIR_LIST, ++ &access_granted); ++ if (!NT_STATUS_IS_OK(status)) { ++ DEBUG(0,("user does not have list permission " ++ "on snapdir %s\n", ++ smb_fname.base_name)); ++ TALLOC_FREE(smb_fname.base_name); ++ return false; ++ } ++ TALLOC_FREE(smb_fname.base_name); ++ return true; ++} ++ + static int shadow_copy2_rmdir(vfs_handle_struct *handle, const char *fname) + { + SHADOW2_NEXT(RMDIR, (handle, name), int, -1); +@@ -877,6 +916,7 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle, + SMB_STRUCT_DIRENT *d; + TALLOC_CTX *tmp_ctx = talloc_new(handle->data); + char *snapshot; ++ bool ret; + + snapdir = shadow_copy2_find_snapdir(tmp_ctx, handle); + if (snapdir == NULL) { +@@ -886,6 +926,13 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle, + talloc_free(tmp_ctx); + return -1; + } ++ ret = check_access_snapdir(handle, snapdir); ++ if (!ret) { ++ DEBUG(0,("access denied on listing snapdir %s\n", snapdir)); ++ errno = EACCES; ++ talloc_free(tmp_ctx); ++ return -1; ++ } + + p = SMB_VFS_NEXT_OPENDIR(handle, snapdir, NULL, 0); + +-- +2.5.0 + diff --git a/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch b/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch new file mode 100644 index 000000000..4ae1473bc --- /dev/null +++ b/src/patches/samba/CVE-2015-5330-v3-6-bso11599.patch @@ -0,0 +1,214 @@ +From a96c0528c68093d155b674269a9c8bf48315fc01 Mon Sep 17 00:00:00 2001 +From: Douglas Bagnall +Date: Tue, 24 Nov 2015 13:47:16 +1300 +Subject: [PATCH 1/3] CVE-2015-5330: Fix handling of unicode near string + endings + +Until now next_codepoint_ext() and next_codepoint_handle_ext() were +using strnlen(str, 5) to determine how much string they should try to +decode. This ended up looking past the end of the string when it was not +null terminated and the final character looked like a multi-byte encoding. +The fix is to let the caller say how long the string can be. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599 + +Signed-off-by: Douglas Bagnall +Pair-programmed-with: Andrew Bartlett +Reviewed-by: Ralph Boehme +--- + lib/util/charset/charset.h | 9 +++++---- + lib/util/charset/codepoints.c | 19 +++++++++++++------ + lib/util/charset/util_unistr.c | 5 ++++- + source3/lib/util_str.c | 2 +- + 4 files changed, 23 insertions(+), 12 deletions(-) + +diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h +index 474d77e..b70aa61 100644 +--- a/lib/util/charset/charset.h ++++ b/lib/util/charset/charset.h +@@ -175,15 +175,16 @@ smb_iconv_t get_conv_handle(struct smb_iconv_convenience *ic, + charset_t from, charset_t to); + const char *charset_name(struct smb_iconv_convenience *ic, charset_t ch); + +-codepoint_t next_codepoint_ext(const char *str, charset_t src_charset, +- size_t *size); ++codepoint_t next_codepoint_ext(const char *str, size_t len, ++ charset_t src_charset, size_t *size); + codepoint_t next_codepoint(const char *str, size_t *size); + ssize_t push_codepoint(char *str, codepoint_t c); + + /* codepoints */ + codepoint_t next_codepoint_convenience_ext(struct smb_iconv_convenience *ic, +- const char *str, charset_t src_charset, +- size_t *size); ++ const char *str, size_t len, ++ charset_t src_charset, ++ size_t *size); + codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic, + const char *str, size_t *size); + ssize_t push_codepoint_convenience(struct smb_iconv_convenience *ic, +diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c +index 5ee95a8..8dd647e 100644 +--- a/lib/util/charset/codepoints.c ++++ b/lib/util/charset/codepoints.c +@@ -346,7 +346,8 @@ smb_iconv_t get_conv_handle(struct smb_iconv_convenience *ic, + */ + _PUBLIC_ codepoint_t next_codepoint_convenience_ext( + struct smb_iconv_convenience *ic, +- const char *str, charset_t src_charset, ++ const char *str, size_t len, ++ charset_t src_charset, + size_t *bytes_consumed) + { + /* it cannot occupy more than 4 bytes in UTF16 format */ +@@ -366,7 +367,7 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext( + * we assume that no multi-byte character can take more than 5 bytes. + * This is OK as we only support codepoints up to 1M (U+100000) + */ +- ilen_orig = strnlen(str, 5); ++ ilen_orig = MIN(len, 5); + ilen = ilen_orig; + + descriptor = get_conv_handle(ic, src_charset, CH_UTF16); +@@ -424,7 +425,13 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext( + _PUBLIC_ codepoint_t next_codepoint_convenience(struct smb_iconv_convenience *ic, + const char *str, size_t *size) + { +- return next_codepoint_convenience_ext(ic, str, CH_UNIX, size); ++ /* ++ * We assume that no multi-byte character can take more than 5 bytes ++ * thus avoiding walking all the way down a long string. This is OK as ++ * Unicode codepoints only go up to (U+10ffff), which can always be ++ * encoded in 4 bytes or less. ++ */ ++ return next_codepoint_convenience_ext(ic, str, strnlen(str, 5), CH_UNIX, size); + } + + /* +@@ -486,10 +493,10 @@ _PUBLIC_ ssize_t push_codepoint_convenience(struct smb_iconv_convenience *ic, + return 5 - olen; + } + +-_PUBLIC_ codepoint_t next_codepoint_ext(const char *str, charset_t src_charset, +- size_t *size) ++_PUBLIC_ codepoint_t next_codepoint_ext(const char *str, size_t len, ++ charset_t src_charset, size_t *size) + { +- return next_codepoint_convenience_ext(get_iconv_convenience(), str, ++ return next_codepoint_convenience_ext(get_iconv_convenience(), str, len, + src_charset, size); + } + +diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c +index 760be77..d9e9b34 100644 +--- a/lib/util/charset/util_unistr.c ++++ b/lib/util/charset/util_unistr.c +@@ -485,7 +485,10 @@ _PUBLIC_ char *strupper_talloc_n(TALLOC_CTX *ctx, const char *src, size_t n) + + while (n-- && *src) { + size_t c_size; +- codepoint_t c = next_codepoint_convenience(iconv_convenience, src, &c_size); ++ codepoint_t c = next_codepoint_convenience_ext(iconv_convenience, ++ src, ++ n, ++ &c_size); + src += c_size; + + c = toupper_m(c); +diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c +index 4701528..f8a5160 100644 +--- a/source3/lib/util_str.c ++++ b/source3/lib/util_str.c +@@ -1486,7 +1486,7 @@ size_t strlen_m_ext(const char *s, const charset_t src_charset, + + while (*s) { + size_t c_size; +- codepoint_t c = next_codepoint_ext(s, src_charset, &c_size); ++ codepoint_t c = next_codepoint_ext(s, strnlen(s, 5), src_charset, &c_size); + s += c_size; + + switch (dst_charset) { +-- +2.5.0 + + +From 8298252a1ba9c014f7ceb76736abb38132181f79 Mon Sep 17 00:00:00 2001 +From: Douglas Bagnall +Date: Tue, 24 Nov 2015 13:54:09 +1300 +Subject: [PATCH 2/3] CVE-2015-5330: next_codepoint_handle_ext: don't + short-circuit UTF16 low bytes + +UTF16 contains zero bytes when it is encoding ASCII (for example), so we +can't assume the absense of the 0x80 bit means a one byte encoding. No +current callers use UTF16. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599 + +Signed-off-by: Douglas Bagnall +Pair-programmed-with: Andrew Bartlett +Reviewed-by: Ralph Boehme +--- + lib/util/charset/codepoints.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c +index 8dd647e..cf5f3e6 100644 +--- a/lib/util/charset/codepoints.c ++++ b/lib/util/charset/codepoints.c +@@ -358,7 +358,10 @@ _PUBLIC_ codepoint_t next_codepoint_convenience_ext( + size_t olen; + char *outbuf; + +- if ((str[0] & 0x80) == 0) { ++ ++ if (((str[0] & 0x80) == 0) && (src_charset == CH_DOS || ++ src_charset == CH_UNIX || ++ src_charset == CH_UTF8)) { + *bytes_consumed = 1; + return (codepoint_t)str[0]; + } +-- +2.5.0 + + +From 0988b7cb606a7e4cd73fd8db02806abbc9d8f2e0 Mon Sep 17 00:00:00 2001 +From: Douglas Bagnall +Date: Tue, 24 Nov 2015 13:49:09 +1300 +Subject: [PATCH 3/3] CVE-2015-5330: strupper_talloc_n_handle(): properly count + characters + +When a codepoint eats more than one byte we really want to know, +especially if the string is not NUL terminated. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11599 + +Signed-off-by: Douglas Bagnall +Pair-programmed-with: Andrew Bartlett +Reviewed-by: Ralph Boehme +--- + lib/util/charset/util_unistr.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c +index d9e9b34..6dad43f 100644 +--- a/lib/util/charset/util_unistr.c ++++ b/lib/util/charset/util_unistr.c +@@ -483,13 +483,14 @@ _PUBLIC_ char *strupper_talloc_n(TALLOC_CTX *ctx, const char *src, size_t n) + return NULL; + } + +- while (n-- && *src) { ++ while (n && *src) { + size_t c_size; + codepoint_t c = next_codepoint_convenience_ext(iconv_convenience, + src, + n, + &c_size); + src += c_size; ++ n -= c_size; + + c = toupper_m(c); + +-- +2.5.0 + diff --git a/src/patches/samba/CVE-2016-2125-v3.6.patch b/src/patches/samba/CVE-2016-2125-v3.6.patch new file mode 100644 index 000000000..f67b5d08f --- /dev/null +++ b/src/patches/samba/CVE-2016-2125-v3.6.patch @@ -0,0 +1,46 @@ +From 7cc3b25f4bf9e89e326d04b83bc7365f3cc29265 Mon Sep 17 00:00:00 2001 +From: Stefan Metzmacher +Date: Wed, 7 Dec 2016 10:58:35 +0100 +Subject: [PATCH] CVE-2016-2125: s3:gse: avoid using GSS_C_DELEG_FLAG + +We should only use GSS_C_DELEG_POLICY_FLAG in order to let +the KDC decide if we should send delegated credentials to +a remote server. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=12445 + +Signed-off-by: Stefan Metzmacher +Backported-by: Andreas Schneider +--- + source3/librpc/crypto/gse.c | 1 - + source3/libsmb/clifsinfo.c | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/source3/librpc/crypto/gse.c b/source3/librpc/crypto/gse.c +index 02fb0f6141d..211ca7774be 100644 +--- a/source3/librpc/crypto/gse.c ++++ b/source3/librpc/crypto/gse.c +@@ -162,7 +162,6 @@ static NTSTATUS gse_context_init(TALLOC_CTX *mem_ctx, + memcpy(&gse_ctx->gss_mech, gss_mech_krb5, sizeof(gss_OID_desc)); + + gse_ctx->gss_c_flags = GSS_C_MUTUAL_FLAG | +- GSS_C_DELEG_FLAG | + GSS_C_DELEG_POLICY_FLAG | + GSS_C_REPLAY_FLAG | + GSS_C_SEQUENCE_FLAG; +diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c +index 1d66eb4c6b8..34ebc208db0 100644 +--- a/source3/libsmb/clifsinfo.c ++++ b/source3/libsmb/clifsinfo.c +@@ -726,7 +726,7 @@ static NTSTATUS make_cli_gss_blob(TALLOC_CTX *ctx, + &es->s.gss_state->gss_ctx, + srv_name, + GSS_C_NO_OID, /* default OID. */ +- GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG | GSS_C_DELEG_FLAG, ++ GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG | GSS_C_DELEG_POLICY_FLAG, + GSS_C_INDEFINITE, /* requested ticket lifetime. */ + NULL, /* no channel bindings */ + p_tok_in, +-- +2.11.0 + diff --git a/src/patches/samba/CVE-2016-2126-v3.6.patch b/src/patches/samba/CVE-2016-2126-v3.6.patch new file mode 100644 index 000000000..8de651e8c --- /dev/null +++ b/src/patches/samba/CVE-2016-2126-v3.6.patch @@ -0,0 +1,80 @@ +From 4e47b5d703c54215804d595980be028f47a87cbf Mon Sep 17 00:00:00 2001 +From: Stefan Metzmacher +Date: Wed, 7 Dec 2016 11:18:59 +0100 +Subject: [PATCH] CVE-2016-2126: auth/kerberos: only allow known checksum types + in check_pac_checksum() + +AES based checksums can only be checked with the corresponding AES based +keytype. + +Otherwise we may trigger an undefined code path deep in the kerberos +libraries, which can leed to segmentation faults. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=12446 + +Signed-off-by: Stefan Metzmacher +Backported-by: Andreas Schneider +--- + source3/include/smb_krb5.h | 12 ++++++++++++ + source3/libads/authdata.c | 22 ++++++++++++++++++++++ + 2 files changed, 34 insertions(+) + +diff --git a/source3/include/smb_krb5.h b/source3/include/smb_krb5.h +index 5a55d3040d5..2780622f512 100644 +--- a/source3/include/smb_krb5.h ++++ b/source3/include/smb_krb5.h +@@ -61,6 +61,18 @@ + #define ENCTYPE_ARCFOUR_HMAC ENCTYPE_ARCFOUR_HMAC_MD5 + #endif + ++#if !defined(CKSUMTYPE_HMAC_MD5_ARCFOUR) && defined(CKSUMTYPE_HMAC_MD5) ++#define CKSUMTYPE_HMAC_MD5_ARCFOUR CKSUMTYPE_HMAC_MD5 ++#endif ++ ++#if !defined(CKSUMTYPE_HMAC_SHA1_96_AES256) && defined(CKSUMTYPE_HMAC_SHA1_96_AES_256) ++#define CKSUMTYPE_HMAC_SHA1_96_AES256 CKSUMTYPE_HMAC_SHA1_96_AES_256 ++#endif ++ ++#if !defined(CKSUMTYPE_HMAC_SHA1_96_AES128) && defined(CKSUMTYPE_HMAC_SHA1_96_AES_128) ++#define CKSUMTYPE_HMAC_SHA1_96_AES128 CKSUMTYPE_HMAC_SHA1_96_AES_128 ++#endif ++ + /* The older versions of heimdal that don't have this + define don't seem to use it anyway. I'm told they + always use a subkey */ +diff --git a/source3/libads/authdata.c b/source3/libads/authdata.c +index 0d877ddef89..30622843f1d 100644 +--- a/source3/libads/authdata.c ++++ b/source3/libads/authdata.c +@@ -42,6 +42,28 @@ static krb5_error_code check_pac_checksum(TALLOC_CTX *mem_ctx, + krb5_checksum cksum; + krb5_keyusage usage = 0; + ++ switch (sig->type) { ++ case CKSUMTYPE_HMAC_MD5_ARCFOUR: ++ /* ignores the key type */ ++ break; ++ case CKSUMTYPE_HMAC_SHA1_96_AES256: ++ if (KRB5_KEY_TYPE(keyblock) != ENCTYPE_AES256_CTS_HMAC_SHA1_96) { ++ return EINVAL; ++ } ++ /* ok */ ++ break; ++ case CKSUMTYPE_HMAC_SHA1_96_AES128: ++ if (KRB5_KEY_TYPE(keyblock) != ENCTYPE_AES128_CTS_HMAC_SHA1_96) { ++ return EINVAL; ++ } ++ /* ok */ ++ break; ++ default: ++ DEBUG(2,("check_pac_checksum: Checksum Type %d is not supported\n", ++ (int)sig->type)); ++ return EINVAL; ++ } ++ + smb_krb5_checksum_from_pac_sig(&cksum, sig); + + #ifdef HAVE_KRB5_KU_OTHER_CKSUM /* Heimdal */ +-- +2.11.0 + diff --git a/src/patches/samba/CVE-2017-7494-v3-6.patch b/src/patches/samba/CVE-2017-7494-v3-6.patch new file mode 100644 index 000000000..3b0d94cbd --- /dev/null +++ b/src/patches/samba/CVE-2017-7494-v3-6.patch @@ -0,0 +1,32 @@ +From b719a4d53fc6d590f4fac340d956344a5246de4e Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Mon, 8 May 2017 21:40:40 +0200 +Subject: [PATCH] CVE-2017-7494: Refuse to open pipe names with / inside + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=12780 + +Signed-off-by: Volker Lendecke +Reviewed-by: Andreas Schneider +--- + source3/rpc_server/srv_pipe.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c +index ec24fe7..b80e3f5 100644 +--- a/source3/rpc_server/srv_pipe.c ++++ b/source3/rpc_server/srv_pipe.c +@@ -473,6 +473,11 @@ bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax) + pipename += 1; + } + ++ if (strchr(pipename, '/')) { ++ DEBUG(1,("Refusing open on pipe %s\n", pipename)); ++ return false; ++ } ++ + if (lp_disable_spoolss() && strequal(pipename, "spoolss")) { + DEBUG(10, ("refusing spoolss access\n")); + return false; +-- +2.9.4 + diff --git a/src/patches/samba/doc-update.patch b/src/patches/samba/doc-update.patch new file mode 100644 index 000000000..a0323b991 --- /dev/null +++ b/src/patches/samba/doc-update.patch @@ -0,0 +1,2538 @@ +Index: samba-3.6.23/docs/manpages/dbwrap_tool.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/dbwrap_tool.1 ++++ samba-3.6.23/docs/manpages/dbwrap_tool.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: dbwrap_tool + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "DBWRAP_TOOL" "1" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "DBWRAP_TOOL" "1" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/eventlogadm.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/eventlogadm.8 ++++ samba-3.6.23/docs/manpages/eventlogadm.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: eventlogadm + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "EVENTLOGADM" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "EVENTLOGADM" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -105,7 +105,6 @@ The event log record field are: + .sp -1 + .IP \(bu 2.3 + .\} +- + LEN + \- This field should be 0, since + eventlogadm +@@ -120,7 +119,6 @@ will calculate this value\&. + .sp -1 + .IP \(bu 2.3 + .\} +- + RS1 + \- This must be the value 1699505740\&. + .RE +@@ -133,7 +131,6 @@ RS1 + .sp -1 + .IP \(bu 2.3 + .\} +- + RCN + \- This field should be 0\&. + .RE +@@ -146,7 +143,6 @@ RCN + .sp -1 + .IP \(bu 2.3 + .\} +- + TMG + \- The time the eventlog record was generated; format is the number of seconds since 00:00:00 January 1, 1970, UTC\&. + .RE +@@ -159,7 +155,6 @@ TMG + .sp -1 + .IP \(bu 2.3 + .\} +- + TMW + \- The time the eventlog record was written; format is the number of seconds since 00:00:00 January 1, 1970, UTC\&. + .RE +@@ -172,7 +167,6 @@ TMW + .sp -1 + .IP \(bu 2.3 + .\} +- + EID + \- The eventlog ID\&. + .RE +@@ -185,7 +179,6 @@ EID + .sp -1 + .IP \(bu 2.3 + .\} +- + ETP + \- The event type \-\- one of "INFO", "ERROR", "WARNING", "AUDIT SUCCESS" or "AUDIT FAILURE"\&. + .RE +@@ -198,7 +191,6 @@ ETP + .sp -1 + .IP \(bu 2.3 + .\} +- + ECT + \- The event category; this depends on the message file\&. It is primarily used as a means of filtering in the eventlog viewer\&. + .RE +@@ -211,7 +203,6 @@ ECT + .sp -1 + .IP \(bu 2.3 + .\} +- + RS2 + \- This field should be 0\&. + .RE +@@ -224,7 +215,6 @@ RS2 + .sp -1 + .IP \(bu 2.3 + .\} +- + CRN + \- This field should be 0\&. + .RE +@@ -237,7 +227,6 @@ CRN + .sp -1 + .IP \(bu 2.3 + .\} +- + USL + \- This field should be 0\&. + .RE +@@ -250,7 +239,6 @@ USL + .sp -1 + .IP \(bu 2.3 + .\} +- + SRC + \- This field contains the source name associated with the event log\&. If a message file is used with an event log, there will be a registry entry for associating this source name with a message file DLL\&. + .RE +@@ -263,7 +251,6 @@ SRC + .sp -1 + .IP \(bu 2.3 + .\} +- + SRN + \- The name of the machine on which the eventlog was generated\&. This is typically the host name\&. + .RE +@@ -276,7 +263,6 @@ SRN + .sp -1 + .IP \(bu 2.3 + .\} +- + STR + \- The text associated with the eventlog\&. There may be more than one string in a record\&. + .RE +@@ -289,7 +275,6 @@ STR + .sp -1 + .IP \(bu 2.3 + .\} +- + DAT + \- This field should be left unset\&. + .RE +Index: samba-3.6.23/docs/manpages/findsmb.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/findsmb.1 ++++ samba-3.6.23/docs/manpages/findsmb.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: findsmb + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "FINDSMB" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "FINDSMB" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_ad.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_ad.8 ++++ samba-3.6.23/docs/manpages/idmap_ad.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_ad + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_AD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_AD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_adex.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_adex.8 ++++ samba-3.6.23/docs/manpages/idmap_adex.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_adex + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_ADEX" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_ADEX" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_autorid.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_autorid.8 ++++ samba-3.6.23/docs/manpages/idmap_autorid.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_autorid + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_AUTORID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_AUTORID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_hash.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_hash.8 ++++ samba-3.6.23/docs/manpages/idmap_hash.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_hash + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_HASH" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_HASH" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_ldap.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_ldap.8 ++++ samba-3.6.23/docs/manpages/idmap_ldap.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_ldap + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_LDAP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_LDAP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_nss.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_nss.8 ++++ samba-3.6.23/docs/manpages/idmap_nss.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_nss + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_NSS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_NSS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_rid.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_rid.8 ++++ samba-3.6.23/docs/manpages/idmap_rid.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_rid + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_RID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_RID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_tdb2.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_tdb2.8 ++++ samba-3.6.23/docs/manpages/idmap_tdb2.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_tdb2 + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_TDB2" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_TDB2" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/idmap_tdb.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/idmap_tdb.8 ++++ samba-3.6.23/docs/manpages/idmap_tdb.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: idmap_tdb + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "IDMAP_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "IDMAP_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/libsmbclient.7 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/libsmbclient.7 ++++ samba-3.6.23/docs/manpages/libsmbclient.7 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: libsmbclient + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: 7 + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "LIBSMBCLIENT" "7" "09/18/2013" "Samba 3\&.6" "7" ++.TH "LIBSMBCLIENT" "7" "04/11/2016" "Samba 3\&.6" "7" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -40,11 +40,9 @@ This tool is part of the + \fBsamba\fR(7) + suite\&. + .PP +- + libsmbclient + is a library toolset that permits applications to manipulate CIFS/SMB network resources using many of the standards POSIX functions available for manipulating local UNIX/Linux files\&. It permits much more than just browsing, files can be opened and read or written, permissions changed, file times modified, attributes and ACL\*(Aqs can be manipulated, and so on\&. Of course, its functionality includes all the capabilities commonly called browsing\&. + .PP +- + libsmbclient + can not be used directly from the command line, instead it provides an extension of the capabilities of tools such as file managers and browsers\&. This man page describes the configuration options for this tool so that the user may obtain greatest utility of use\&. + .SH "OPTIONS" +@@ -77,7 +75,6 @@ and then append the contents of the + ~/\&.smb/smb\&.conf\&.append + to it\&. + .PP +- + libsmbclient + will check the users shell environment for the + USER +Index: samba-3.6.23/docs/manpages/lmhosts.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/lmhosts.5 ++++ samba-3.6.23/docs/manpages/lmhosts.5 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: lmhosts + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: File Formats and Conventions + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "LMHOSTS" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions" ++.TH "LMHOSTS" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/log2pcap.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/log2pcap.1 ++++ samba-3.6.23/docs/manpages/log2pcap.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: log2pcap + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "LOG2PCAP" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "LOG2PCAP" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -74,7 +74,7 @@ pcap_file + Name of the output file to write the pcap (or hexdump) data to\&. If this argument is not specified, output data will be written to stdout\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/net.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/net.8 ++++ samba-3.6.23/docs/manpages/net.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: net + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "NET" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "NET" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -41,7 +41,7 @@ suite\&. + The Samba net utility is meant to work just like the net utility available for windows and DOS\&. The first argument should be used to specify the protocol to use when executing a certain command\&. ADS is used for ActiveDirectory, RAP is using for old (Win9x/NT3) clients and RPC can be used for NT4 and Windows 2000\&. If this argument is omitted, net will try to determine it automatically\&. Not all commands are available on all protocols\&. + .SH "OPTIONS" + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +@@ -113,6 +113,11 @@ Make queries to the external server usin + Let client requests timeout after 30 seconds the default is 10 seconds\&. + .RE + .PP ++\-\-no\-dns\-updates ++.RS 4 ++Do not perform DNS updates as part of "net ads join"\&. ++.RE ++.PP + \-d|\-\-debuglevel=level + .RS 4 + \fIlevel\fR +@@ -153,7 +158,7 @@ Tries to set the date and time of the lo + .SS "TIME ZONE" + .PP + Displays the timezone in hours from GMT on the remote computer\&. +-.SS "[RPC|ADS] JOIN [TYPE] [\-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]" ++.SS "[RPC|ADS] JOIN [TYPE] [\-\-no\-dns\-updates] [\-U username[%password]] [createupn=UPN] [createcomputer=OU] [options]" + .PP + Join a domain\&. If the account already exists on the server, and [TYPE] is MEMBER, the machine will attempt to join automatically\&. (Assuming that the machine has been created in server manager) Otherwise, a password will be prompted for, and a new account may be created\&. + .PP +@@ -509,8 +514,6 @@ net groupmap delete {ntgroup=string|sid= + .PP + Update en existing group entry\&. + .PP +- +-.sp + .if n \{\ + .RS 4 + .\} +@@ -1208,8 +1211,7 @@ may be one of + \fImulti_sz\fR + or + \fIdword\fR\&. In case of +-\fImulti_sz\fR +-\fIvalue\fR ++\fImulti_sz\fR\fIvalue\fR + may be given multiple times\&. + .SS "REGISTRY INCREMENT key name [inc]" + .PP +Index: samba-3.6.23/docs/manpages/nmbd.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/nmbd.8 ++++ samba-3.6.23/docs/manpages/nmbd.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: nmbd + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "NMBD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "NMBD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -106,7 +106,7 @@ also logs to standard output, as if the + parameter had been given\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +@@ -264,7 +264,6 @@ The debug log level of nmbd may be raise + This man page is correct for version 3 of the Samba suite\&. + .SH "SEE ALSO" + .PP +- + \fBinetd\fR(8), + \fBsmbd\fR(8), + \fBsmb.conf\fR(5), +Index: samba-3.6.23/docs/manpages/nmblookup.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/nmblookup.1 ++++ samba-3.6.23/docs/manpages/nmblookup.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: nmblookup + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "NMBLOOKUP" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "NMBLOOKUP" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -109,7 +109,7 @@ smb\&.conf + manual page for the list of valid options\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/ntlm_auth.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/ntlm_auth.1 ++++ samba-3.6.23/docs/manpages/ntlm_auth.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: ntlm_auth + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "NTLM_AUTH" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "NTLM_AUTH" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -347,7 +347,7 @@ Base directory name for log/debug files\ + will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/pam_winbind.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/pam_winbind.8 ++++ samba-3.6.23/docs/manpages/pam_winbind.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: pam_winbind + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: 8 + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "PAM_WINBIND" "8" "09/18/2013" "Samba 3\&.6" "8" ++.TH "PAM_WINBIND" "8" "04/11/2016" "Samba 3\&.6" "8" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/pam_winbind.conf.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/pam_winbind.conf.5 ++++ samba-3.6.23/docs/manpages/pam_winbind.conf.5 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: pam_winbind.conf + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: 5 + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "PAM_WINBIND\&.CONF" "5" "09/18/2013" "Samba 3\&.6" "5" ++.TH "PAM_WINBIND\&.CONF" "5" "04/11/2016" "Samba 3\&.6" "5" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/pdbedit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/pdbedit.8 ++++ samba-3.6.23/docs/manpages/pdbedit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: pdbedit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "PDBEDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "PDBEDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -204,8 +204,6 @@ Example: + .RS 4 + This option can be used while adding or modifying a user account\&. It will specify the users\*(Aq account control property\&. Possible flags are listed below\&. + .sp +- +-.sp + .RS 4 + .ie n \{\ + \h'-04'\(bu\h'+03'\c +@@ -555,7 +553,7 @@ Example: + This option is currently not being used\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/profiles.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/profiles.1 ++++ samba-3.6.23/docs/manpages/profiles.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: profiles + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "PROFILES" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "PROFILES" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -59,7 +59,7 @@ file + by SID2\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/rpcclient.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/rpcclient.1 ++++ samba-3.6.23/docs/manpages/rpcclient.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: rpcclient + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "RPCCLIENT" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "RPCCLIENT" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -199,7 +199,7 @@ smb\&.conf + manual page for the list of valid options\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/samba.7 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/samba.7 ++++ samba-3.6.23/docs/manpages/samba.7 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: samba + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: Miscellanea + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SAMBA" "7" "09/18/2013" "Samba 3\&.6" "Miscellanea" ++.TH "SAMBA" "7" "04/11/2016" "Samba 3\&.6" "Miscellanea" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/sharesec.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/sharesec.1 ++++ samba-3.6.23/docs/manpages/sharesec.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: sharesec + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SHARESEC" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SHARESEC" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -82,7 +82,7 @@ Remove ACEs\&. + Overwrite an existing share permission ACL\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smbcacls.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbcacls.1 ++++ samba-3.6.23/docs/manpages/smbcacls.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbcacls + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBCACLS" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBCACLS" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -102,7 +102,7 @@ This option displays all ACL information + Don\*(Aqt actually do anything, only validate the correctness of the arguments\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smbclient.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbclient.1 ++++ samba-3.6.23/docs/manpages/smbclient.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbclient + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBCLIENT" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBCLIENT" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -205,7 +205,7 @@ This parameter sets the maximum protocol + Make queries to the external server using the machine account of the local server\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smb.conf.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smb.conf.5 ++++ samba-3.6.23/docs/manpages/smb.conf.5 +@@ -2,12 +2,12 @@ + .\" Title: smb.conf + .\" Author: [see the "AUTHOR" section] + .\" Generator: DocBook XSL Stylesheets v1.78.1 +-.\" Date: 10/15/2015 ++.\" Date: 04/11/2016 + .\" Manual: File Formats and Conventions + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMB\&.CONF" "5" "10/15/2015" "Samba 3\&.6" "File Formats and Conventions" ++.TH "SMB\&.CONF" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -1371,6 +1371,24 @@ Example: + \fI\fIallocation roundup size\fR\fR\fI = \fR\fI0 # (to disable roundups)\fR\fI \fR + .RE + ++allow dcerpc auth level connect (G) ++.\" allow dcerpc auth level connect ++.PP ++.RS 4 ++This option controls whether DCERPC services are allowed to be used with DCERPC_AUTH_LEVEL_CONNECT, which provides authentication, but no per message integrity nor privacy protection\&. ++.sp ++The behavior can be controlled per interface name (e\&.g\&. lsarpc, netlogon, samr, srvsvc, winreg, wkssvc \&.\&.\&.) by using \*(Aqallow dcerpc auth level connect:interface = no\*(Aq as option\&. ++.sp ++This option yields precedence to the implentation specific restrictions\&. E\&.g\&. the drsuapi and backupkey protocols require DCERPC_AUTH_LEVEL_PRIVACY\&. While others like samr and lsarpc have a hardcoded default of ++\fBno\fR\&. ++.sp ++Default: ++\fI\fIallow dcerpc auth level connect\fR\fR\fI = \fR\fIno\fR\fI \fR ++.sp ++Example: ++\fI\fIallow dcerpc auth level connect\fR\fR\fI = \fR\fIyes\fR\fI \fR ++.RE ++ + allow insecure wide links (G) + .\" allow insecure wide links + .PP +@@ -1826,6 +1844,24 @@ Example: + \fI\fIcheck password script\fR\fR\fI = \fR\fI/usr/local/sbin/crackcheck\fR\fI \fR + .RE + ++client ipc signing (G) ++.\" client ipc signing ++.PP ++.RS 4 ++This controls whether the client is allowed or required to use SMB signing for IPC$ connections as DCERPC transport inside of winbind\&. Possible values are ++\fIauto\fR, ++\fImandatory\fR ++and ++\fIdisabled\fR\&. ++.sp ++When set to auto, SMB signing is offered, but not enforced and if set to disabled, SMB signing is not offered either\&. ++.sp ++Connections from winbindd to Active Directory Domain Controllers always enforce signing\&. ++.sp ++Default: ++\fI\fIclient ipc signing\fR\fR\fI = \fR\fImandatory\fR\fI \fR ++.RE ++ + client lanman auth (G) + .\" client lanman auth + .PP +@@ -1874,14 +1910,11 @@ is just an alias for + \fIseal\fR\&. + .sp + The default value is +-\fIplain\fR +-which is not irritable to KRB5 clock skew errors\&. That implies synchronizing the time with the KDC in the case of using +-\fIsign\fR +-or +-\fIseal\fR\&. ++\fIsign\fR\&. That implies synchronizing the time with the KDC in the case of using ++\fIKerberos\fR\&. + .sp + Default: +-\fI\fIclient ldap sasl wrapping\fR\fR\fI = \fR\fIplain\fR\fI \fR ++\fI\fIclient ldap sasl wrapping\fR\fR\fI = \fR\fIsign\fR\fI \fR + .RE + + client ntlmv2 auth (G) +@@ -1905,6 +1938,12 @@ client lanman auth\&. + .sp + Note that Windows Vista and later versions already use NTLMv2 by default, and some sites (particularly those following \*(Aqbest practice\*(Aq security polices) only allow NTLMv2 responses, and not the weaker LM or NTLM\&. + .sp ++When ++\m[blue]\fBclient use spnego\fR\m[] ++is also set to ++\fByes\fR ++extended security (SPNEGO) is required in order to use NTLMv2 only within NTLMSSP\&. This behavior was introduced with the patches for CVE\-2016\-2111\&. ++.sp + Default: + \fI\fIclient ntlmv2 auth\fR\fR\fI = \fR\fIyes\fR\fI \fR + .RE +@@ -1949,6 +1988,7 @@ and + \fIdisabled\fR\&. + .sp + When set to auto, SMB signing is offered, but not enforced\&. When set to mandatory, SMB signing is required and if set to disabled, SMB signing is not offered either\&. ++IPC$ connections for DCERPC e\&.g\&. in winbindd, are handled by the \m[blue]\fBclient ipc signing\fR\m[] option\&. + .sp + Default: + \fI\fIclient signing\fR\fR\fI = \fR\fIauto\fR\fI \fR +@@ -1978,6 +2018,12 @@ client use spnego (G) + .RS 4 + This variable controls whether Samba clients will try to use Simple and Protected NEGOciation (as specified by rfc2478) with supporting servers (including WindowsXP, Windows2000 and Samba 3\&.0) to agree upon an authentication mechanism\&. This enables Kerberos authentication in particular\&. + .sp ++When ++\m[blue]\fBclient NTLMv2 auth\fR\m[] ++is also set to ++\fByes\fR ++extended security (SPNEGO) is required in order to use NTLMv2 only within NTLMSSP\&. This behavior was introduced with the patches for CVE\-2016\-2111\&. ++.sp + Default: + \fI\fIclient use spnego\fR\fR\fI = \fR\fIyes\fR\fI \fR + .RE +@@ -8103,6 +8149,24 @@ Example: + \fI\fIqueueresume command\fR\fR\fI = \fR\fIenable %p\fR\fI \fR + .RE + ++raw NTLMv2 auth (G) ++.\" raw NTLMv2 auth ++.PP ++.RS 4 ++This parameter determines whether or not ++\fBsmbd\fR(8) ++will allow SMB1 clients without extended security (without SPNEGO) to use NTLMv2 authentication\&. ++.sp ++If this option, ++lanman auth ++and ++ntlm auth ++are all disabled, then only clients with SPNEGO support will be permitted\&. That means NTLMv2 is only supported within NTLMSSP\&. ++.sp ++Default: ++\fI\fIraw NTLMv2 auth\fR\fR\fI = \fR\fIno\fR\fI \fR ++.RE ++ + read list (S) + .\" read list + .PP +@@ -10699,6 +10763,18 @@ Default: + \fI\fIwinbind rpc only\fR\fR\fI = \fR\fIno\fR\fI \fR + .RE + ++winbind sealed pipes (G) ++.\" winbind sealed pipes ++.PP ++.RS 4 ++This option controls whether any requests from winbindd to domain controllers pipe will be sealed\&. Disabling sealing can be useful for debugging purposes\&. ++.sp ++The behavior can be controlled per netbios domain by using \*(Aqwinbind sealed pipes:NETBIOSDOMAIN = no\*(Aq as option\&. ++.sp ++Default: ++\fI\fIwinbind sealed pipes\fR\fR\fI = \fR\fIyes\fR\fI \fR ++.RE ++ + winbind separator (G) + .\" winbind separator + .PP +Index: samba-3.6.23/docs/manpages/smbcontrol.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbcontrol.1 ++++ samba-3.6.23/docs/manpages/smbcontrol.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbcontrol + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBCONTROL" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBCONTROL" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -48,7 +48,7 @@ is a very small program, which sends mes + daemon running on the system\&. + .SH "OPTIONS" + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smbcquotas.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbcquotas.1 ++++ samba-3.6.23/docs/manpages/smbcquotas.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbcquotas + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBCQUOTAS" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBCQUOTAS" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -82,7 +82,7 @@ Don\*(Aqt actually do anything, only val + Be verbose\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smbd.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbd.8 ++++ samba-3.6.23/docs/manpages/smbd.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbd + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SMBD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -130,7 +130,7 @@ Base directory name for log/debug files\ + will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +@@ -207,8 +207,7 @@ if this variable is not defined) as the + .SH "PAM INTERACTION" + .PP + Samba uses PAM for authentication (when presented with a plaintext password), for account checking (is this account disabled?) and for session management\&. The degree too which samba supports PAM is restricted by the limitations of the SMB protocol and the +-\m[blue]\fBobey pam restrictions\fR\m[] +-\fBsmb.conf\fR(5) ++\m[blue]\fBobey pam restrictions\fR\m[]\fBsmb.conf\fR(5) + parameter\&. When this is set, the following restrictions apply: + .sp + .RS 4 +@@ -359,8 +358,7 @@ configuration file within a short period + To shut down a user\*(Aqs + smbd + process it is recommended that +-SIGKILL (\-9) +-\fINOT\fR ++SIGKILL (\-9)\fINOT\fR + be used, except as a last resort, as this may leave the shared memory area in an inconsistent state\&. The safe way to terminate an + smbd + is to send it a SIGTERM (\-15) signal and wait for it to die on its own\&. +Index: samba-3.6.23/docs/manpages/smbget.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbget.1 ++++ samba-3.6.23/docs/manpages/smbget.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbget + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBGET" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBGET" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbgetrc.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbgetrc.5 ++++ samba-3.6.23/docs/manpages/smbgetrc.5 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbgetrc + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: File Formats and Conventions + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBGETRC" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions" ++.TH "SMBGETRC" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbpasswd.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbpasswd.5 ++++ samba-3.6.23/docs/manpages/smbpasswd.5 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbpasswd + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: File Formats and Conventions + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBPASSWD" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions" ++.TH "SMBPASSWD" "5" "04/11/2016" "Samba 3\&.6" "File Formats and Conventions" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbpasswd.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbpasswd.8 ++++ samba-3.6.23/docs/manpages/smbpasswd.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbpasswd + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBPASSWD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SMBPASSWD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbspool.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbspool.8 ++++ samba-3.6.23/docs/manpages/smbspool.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbspool + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBSPOOL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SMBSPOOL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbstatus.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbstatus.1 ++++ samba-3.6.23/docs/manpages/smbstatus.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbstatus + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBSTATUS" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBSTATUS" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -114,7 +114,7 @@ processes and exit\&. Useful for scripti + causes smbstatus to only list shares\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/smbtar.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbtar.1 ++++ samba-3.6.23/docs/manpages/smbtar.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbtar + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBTAR" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBTAR" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbta-util.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbta-util.8 ++++ samba-3.6.23/docs/manpages/smbta-util.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbta-util + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBTA\-UTIL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SMBTA\-UTIL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/smbtree.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smbtree.1 ++++ samba-3.6.23/docs/manpages/smbtree.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smbtree + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMBTREE" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "SMBTREE" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -153,7 +153,7 @@ rpcclient + to prompt for a password and type it in directly\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/swat.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/swat.8 ++++ samba-3.6.23/docs/manpages/swat.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: swat + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SWAT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SWAT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -116,7 +116,7 @@ Base directory name for log/debug files\ + will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/tdbbackup.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/tdbbackup.8 ++++ samba-3.6.23/docs/manpages/tdbbackup.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: tdbbackup + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "TDBBACKUP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "TDBBACKUP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -84,7 +84,6 @@ Samba \&.tdb files are stored in various + .sp -1 + .IP \(bu 2.3 + .\} +- + secrets\&.tdb + \- usual location is in the /usr/local/samba/private directory, or on some systems in /etc/samba\&. + .RE +@@ -97,7 +96,6 @@ secrets\&.tdb + .sp -1 + .IP \(bu 2.3 + .\} +- + passdb\&.tdb + \- usual location is in the /usr/local/samba/private directory, or on some systems in /etc/samba\&. + .RE +@@ -110,7 +108,6 @@ passdb\&.tdb + .sp -1 + .IP \(bu 2.3 + .\} +- + *\&.tdb + located in the /usr/local/samba/var directory or on some systems in the /var/cache or /var/lib/samba directories\&. + .RE +Index: samba-3.6.23/docs/manpages/tdbdump.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/tdbdump.8 ++++ samba-3.6.23/docs/manpages/tdbdump.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: tdbdump + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "TDBDUMP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "TDBDUMP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/tdbtool.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/tdbtool.8 ++++ samba-3.6.23/docs/manpages/tdbtool.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: tdbtool + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "TDBTOOL" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "TDBTOOL" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/testparm.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/testparm.1 ++++ samba-3.6.23/docs/manpages/testparm.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: testparm + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "TESTPARM" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "TESTPARM" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -66,7 +66,7 @@ testparm + will prompt for a carriage return after printing the service names and before dumping the service definitions\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/vfs_acl_tdb.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_acl_tdb.8 ++++ samba-3.6.23/docs/manpages/vfs_acl_tdb.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_acl_tdb + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_ACL_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_ACL_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_acl_xattr.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_acl_xattr.8 ++++ samba-3.6.23/docs/manpages/vfs_acl_xattr.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_acl_xattr + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_ACL_XATTR" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_ACL_XATTR" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_aio_fork.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_aio_fork.8 ++++ samba-3.6.23/docs/manpages/vfs_aio_fork.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_aio_fork + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_AIO_FORK" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_AIO_FORK" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_aio_pthread.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_aio_pthread.8 ++++ samba-3.6.23/docs/manpages/vfs_aio_pthread.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_aio_pthread + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_AIO_PTHREAD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_AIO_PTHREAD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_audit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_audit.8 ++++ samba-3.6.23/docs/manpages/vfs_audit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_audit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_cacheprime.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_cacheprime.8 ++++ samba-3.6.23/docs/manpages/vfs_cacheprime.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_cacheprime + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_CACHEPRIME" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_CACHEPRIME" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_cap.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_cap.8 ++++ samba-3.6.23/docs/manpages/vfs_cap.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_cap + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_CAP" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_CAP" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_catia.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_catia.8 ++++ samba-3.6.23/docs/manpages/vfs_catia.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_catia + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_CATIA" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_CATIA" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_commit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_commit.8 ++++ samba-3.6.23/docs/manpages/vfs_commit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_commit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_COMMIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_COMMIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_crossrename.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_crossrename.8 ++++ samba-3.6.23/docs/manpages/vfs_crossrename.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_crossrename + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_CROSSRENAME" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_CROSSRENAME" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_default_quota.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_default_quota.8 ++++ samba-3.6.23/docs/manpages/vfs_default_quota.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_default_quota + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_DEFAULT_QUOTA" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_DEFAULT_QUOTA" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_dirsort.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_dirsort.8 ++++ samba-3.6.23/docs/manpages/vfs_dirsort.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_dirsort + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_DIRSORT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_DIRSORT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_extd_audit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_extd_audit.8 ++++ samba-3.6.23/docs/manpages/vfs_extd_audit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_extd_audit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_EXTD_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_EXTD_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_fake_perms.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_fake_perms.8 ++++ samba-3.6.23/docs/manpages/vfs_fake_perms.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_fake_perms + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_FAKE_PERMS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_FAKE_PERMS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_fileid.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_fileid.8 ++++ samba-3.6.23/docs/manpages/vfs_fileid.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_fileid + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_FILEID" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_FILEID" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_full_audit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_full_audit.8 ++++ samba-3.6.23/docs/manpages/vfs_full_audit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_full_audit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_FULL_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_FULL_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_gpfs.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_gpfs.8 ++++ samba-3.6.23/docs/manpages/vfs_gpfs.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_gpfs + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_GPFS" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_GPFS" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -96,7 +96,6 @@ Enable/Disable cross node sharemode hand + .sp -1 + .IP \(bu 2.3 + .\} +- + yes(default) + \- propagate sharemodes across all GPFS nodes\&. + .RE +@@ -109,7 +108,6 @@ yes(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + no + \- do not propagate sharemodes across all GPFS nodes\&. This should only be used if the GPFS file system is exclusively exported by Samba\&. Access by local unix application or NFS exports could lead to corrupted files\&. + .RE +@@ -133,7 +131,6 @@ options to the same value\&. + .sp -1 + .IP \(bu 2.3 + .\} +- + yes(default) + \- propagate leases across all GPFS nodes\&. + .RE +@@ -146,7 +143,6 @@ yes(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + no + \- do not propagate leases across all GPFS nodes\&. This should only be used if the GPFS file system is exclusively exported by Samba\&. Access by local unix application or NFS exports could lead to corrupted files\&. + .RE +@@ -166,7 +162,6 @@ Enable/Disable announcing if this FS has + .sp -1 + .IP \(bu 2.3 + .\} +- + no(default) + \- Do not announce HSM\&. + .RE +@@ -179,7 +174,6 @@ no(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + no + \- Announce HSM\&. + .RE +@@ -201,7 +195,6 @@ function\&. This improves the casesensit + .sp -1 + .IP \(bu 2.3 + .\} +- + yes(default) + \- use + gpfs_get_realfilename_path()\&. +@@ -215,7 +208,6 @@ gpfs_get_realfilename_path()\&. + .sp -1 + .IP \(bu 2.3 + .\} +- + no + \- do not use + gpfs_get_realfilename_path()\&. It seems that +@@ -238,7 +230,6 @@ Enable/Disable usage of the windows attr + .sp -1 + .IP \(bu 2.3 + .\} +- + no(default) + \- do not use GPFS windows attributes\&. + .RE +@@ -251,7 +242,6 @@ no(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + yes + \- use GPFS windows attributes\&. + .RE +@@ -271,7 +261,6 @@ GPFS ACLs doesn\*(Aqt know about the \*( + .sp -1 + .IP \(bu 2.3 + .\} +- + yes(default) + \- map \*(AqAPPEND\*(Aq to \*(AqWRITE\*(Aq\&. + .RE +@@ -284,7 +273,6 @@ yes(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + no + \- do not map \*(AqAPPEND\*(Aq to \*(AqWRITE\*(Aq\&. + .RE +@@ -308,7 +296,6 @@ to enable an explicit check for this fla + .sp -1 + .IP \(bu 2.3 + .\} +- + no(default) + \- ignore the DESC_DACL_PROTECTED flags\&. + .RE +@@ -321,7 +308,6 @@ no(default) + .sp -1 + .IP \(bu 2.3 + .\} +- + yes + \- reject ACLs with DESC_DACL_PROTECTED\&. + .RE +Index: samba-3.6.23/docs/manpages/vfs_netatalk.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_netatalk.8 ++++ samba-3.6.23/docs/manpages/vfs_netatalk.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_netatalk + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_NETATALK" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_NETATALK" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_notify_fam.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_notify_fam.8 ++++ samba-3.6.23/docs/manpages/vfs_notify_fam.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_notify_fam + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_NOTIFY_FAM" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_NOTIFY_FAM" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_prealloc.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_prealloc.8 ++++ samba-3.6.23/docs/manpages/vfs_prealloc.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_prealloc + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_PREALLOC" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_PREALLOC" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_preopen.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_preopen.8 ++++ samba-3.6.23/docs/manpages/vfs_preopen.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_preopen + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_PREOPEN" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_PREOPEN" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_readahead.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_readahead.8 ++++ samba-3.6.23/docs/manpages/vfs_readahead.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_readahead + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_READAHEAD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_READAHEAD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_readonly.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_readonly.8 ++++ samba-3.6.23/docs/manpages/vfs_readonly.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_readonly + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_READONLY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_READONLY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_recycle.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_recycle.8 ++++ samba-3.6.23/docs/manpages/vfs_recycle.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_recycle + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_RECYCLE" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_RECYCLE" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_scannedonly.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_scannedonly.8 ++++ samba-3.6.23/docs/manpages/vfs_scannedonly.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_scannedonly + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_SCANNEDONLY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_SCANNEDONLY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_shadow_copy2.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_shadow_copy2.8 ++++ samba-3.6.23/docs/manpages/vfs_shadow_copy2.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_shadow_copy2 + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_SHADOW_COPY2" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_SHADOW_COPY2" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_shadow_copy.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_shadow_copy.8 ++++ samba-3.6.23/docs/manpages/vfs_shadow_copy.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_shadow_copy + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_SHADOW_COPY" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_SHADOW_COPY" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_smb_traffic_analyzer.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_smb_traffic_analyzer.8 ++++ samba-3.6.23/docs/manpages/vfs_smb_traffic_analyzer.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smb_traffic_analyzer + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMB_TRAFFIC_ANALYZER" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "SMB_TRAFFIC_ANALYZER" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -185,7 +185,6 @@ Several drawbacks have been seen with pr + .sp -1 + .IP \(bu 2.3 + .\} +- + Problematic parsing \- + Protocol version 1 uses hyphen and comma to seperate blocks of data\&. Once there is a filename with a hyphen, you will run into problems because the receiver decodes the data in a wrong way\&. + .RE +@@ -198,7 +197,6 @@ Protocol version 1 uses hyphen and comma + .sp -1 + .IP \(bu 2.3 + .\} +- + Insecure network transfer \- + Protocol version 1 sends all it\*(Aqs data as plaintext over the network\&. + .RE +@@ -211,7 +209,6 @@ Protocol version 1 sends all it\*(Aqs da + .sp -1 + .IP \(bu 2.3 + .\} +- + Limited set of supported VFS operations \- + Protocol version 1 supports only four VFS operations\&. + .RE +@@ -224,7 +221,6 @@ Protocol version 1 supports only four VF + .sp -1 + .IP \(bu 2.3 + .\} +- + No subreleases of the protocol \- + Protocol version 1 is fixed on it\*(Aqs version, making it unable to introduce new features or bugfixes through compatible sub\-releases\&. + .RE +Index: samba-3.6.23/docs/manpages/vfs_streams_depot.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_streams_depot.8 ++++ samba-3.6.23/docs/manpages/vfs_streams_depot.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_streams_depot + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_STREAMS_DEPOT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_STREAMS_DEPOT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_streams_xattr.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_streams_xattr.8 ++++ samba-3.6.23/docs/manpages/vfs_streams_xattr.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_streams_xattr + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_STREAMS_XATTR" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_STREAMS_XATTR" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfstest.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfstest.1 ++++ samba-3.6.23/docs/manpages/vfstest.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfstest + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFSTEST" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "VFSTEST" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -47,7 +47,7 @@ is a small command line utility that has + Execute the specified (colon\-separated) commands\&. See below for the commands that are available\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/vfs_time_audit.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_time_audit.8 ++++ samba-3.6.23/docs/manpages/vfs_time_audit.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_time_audit + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_TIME_AUDIT" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_TIME_AUDIT" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/vfs_xattr_tdb.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/vfs_xattr_tdb.8 ++++ samba-3.6.23/docs/manpages/vfs_xattr_tdb.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: vfs_xattr_tdb + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "VFS_XATTR_TDB" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "VFS_XATTR_TDB" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +Index: samba-3.6.23/docs/manpages/wbinfo.1 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/wbinfo.1 ++++ samba-3.6.23/docs/manpages/wbinfo.1 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: wbinfo + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: User Commands + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "WBINFO" "1" "09/18/2013" "Samba 3\&.6" "User Commands" ++.TH "WBINFO" "1" "04/11/2016" "Samba 3\&.6" "User Commands" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -206,8 +206,7 @@ The + option queries + \fBwinbindd\fR(8) + for the SID associated with the name specified\&. Domain names can be specified before the user name by using the winbind separator character\&. For example CWDOM1/Administrator refers to the Administrator user in the domain CWDOM1\&. If no domain is specified then the domain used is the one specified in the +-\fBsmb.conf\fR(5) +-\fIworkgroup \fR ++\fBsmb.conf\fR(5)\fIworkgroup \fR + parameter\&. + .RE + .PP +@@ -360,7 +359,7 @@ then the operation will fail\&. + Prints the program version number\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +Index: samba-3.6.23/docs/manpages/winbindd.8 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/winbindd.8 ++++ samba-3.6.23/docs/manpages/winbindd.8 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: winbindd + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: System Administration tools + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "WINBINDD" "8" "09/18/2013" "Samba 3\&.6" "System Administration tools" ++.TH "WINBINDD" "8" "04/11/2016" "Samba 3\&.6" "System Administration tools" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -207,7 +207,7 @@ Base directory name for log/debug files\ + will be appended (e\&.g\&. log\&.smbclient, log\&.smbd, etc\&.\&.\&.)\&. The log file is never removed by the client\&. + .RE + .PP +-\-h|\-\-help ++\-?|\-\-help + .RS 4 + Print a summary of command line options\&. + .RE +@@ -254,7 +254,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind separator\fR\m[] + .RE + .sp +@@ -266,7 +265,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBidmap config * : range\fR\m[] + .RE + .sp +@@ -278,7 +276,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBidmap config * : backend\fR\m[] + .RE + .sp +@@ -290,7 +287,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind cache time\fR\m[] + .RE + .sp +@@ -302,7 +298,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind enum users\fR\m[] + .RE + .sp +@@ -314,7 +309,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind enum groups\fR\m[] + .RE + .sp +@@ -326,7 +320,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBtemplate homedir\fR\m[] + .RE + .sp +@@ -338,7 +331,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBtemplate shell\fR\m[] + .RE + .sp +@@ -350,7 +342,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind use default domain\fR\m[] + .RE + .sp +@@ -362,7 +353,6 @@ file\&. All parameters should be specifi + .sp -1 + .IP \(bu 2.3 + .\} +- + \m[blue]\fBwinbind: rpc only\fR\m[] + Setting this parameter forces winbindd to use RPC instead of LDAP to retrieve information from Domain Controllers\&. + .RE +Index: samba-3.6.23/docs/manpages/winbind_krb5_locator.7 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/winbind_krb5_locator.7 ++++ samba-3.6.23/docs/manpages/winbind_krb5_locator.7 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: winbind_krb5_locator + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 04/11/2016 + .\" Manual: 7 + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "WINBIND_KRB5_LOCATOR" "7" "09/18/2013" "Samba 3\&.6" "7" ++.TH "WINBIND_KRB5_LOCATOR" "7" "04/11/2016" "Samba 3\&.6" "7" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -35,7 +35,6 @@ This plugin is part of the + \fBsamba\fR(7) + suite\&. + .PP +- + winbind_krb5_locator + is a plugin that permits MIT and Heimdal Kerberos libraries to detect Kerberos Servers (for the KDC and kpasswd service) using the same semantics that other tools of the Samba suite use\&. This include site\-aware DNS service record lookups and caching of closest dc\&. The plugin uses the public locator API provided by most modern Kerberos implementations\&. + .SH "PREREQUISITES" diff --git a/src/patches/samba/samba-3.2.0pre1-grouppwd.patch b/src/patches/samba/samba-3.2.0pre1-grouppwd.patch new file mode 100644 index 000000000..b19a020e7 --- /dev/null +++ b/src/patches/samba/samba-3.2.0pre1-grouppwd.patch @@ -0,0 +1,13 @@ +Index: samba-3.6.22/source3/winbindd/winbindd_group.c +=================================================================== +--- samba-3.6.22.orig/source3/winbindd/winbindd_group.c ++++ samba-3.6.22/source3/winbindd/winbindd_group.c +@@ -69,7 +69,7 @@ bool fill_grent(TALLOC_CTX *mem_ctx, str + /* Group name and password */ + + safe_strcpy(gr->gr_name, full_group_name, sizeof(gr->gr_name) - 1); +- safe_strcpy(gr->gr_passwd, "x", sizeof(gr->gr_passwd) - 1); ++ safe_strcpy(gr->gr_passwd, "*", sizeof(gr->gr_passwd) - 1); + + return True; + } diff --git a/src/patches/samba/samba-3.2.0pre1-pipedir.patch b/src/patches/samba/samba-3.2.0pre1-pipedir.patch new file mode 100644 index 000000000..a138c706e --- /dev/null +++ b/src/patches/samba/samba-3.2.0pre1-pipedir.patch @@ -0,0 +1,13 @@ +Index: samba-3.6.6/nsswitch/winbind_struct_protocol.h +=================================================================== +--- samba-3.6.6.orig/nsswitch/winbind_struct_protocol.h ++++ samba-3.6.6/nsswitch/winbind_struct_protocol.h +@@ -29,7 +29,7 @@ typedef char fstring[FSTRING_LEN]; + * is needed for launchd support -- jpeach. + */ + #ifndef WINBINDD_SOCKET_DIR +-#define WINBINDD_SOCKET_DIR "/tmp/.winbindd" /* Name of PF_UNIX dir */ ++#define WINBINDD_SOCKET_DIR "/var/run/winbindd" /* Name of PF_UNIX dir */ + #endif + + /* diff --git a/src/patches/samba/samba-3.2.5-inotify.patch b/src/patches/samba/samba-3.2.5-inotify.patch new file mode 100644 index 000000000..e215f5bcc --- /dev/null +++ b/src/patches/samba/samba-3.2.5-inotify.patch @@ -0,0 +1,49 @@ +Index: samba-3.6.6/source3/smbd/notify_inotify.c +=================================================================== +--- samba-3.6.6.orig/source3/smbd/notify_inotify.c ++++ samba-3.6.6/source3/smbd/notify_inotify.c +@@ -77,6 +77,7 @@ struct inotify_private { + struct sys_notify_context *ctx; + int fd; + struct inotify_watch_context *watches; ++ bool broken_inotify; /* Late stop for broken system */ + }; + + struct inotify_watch_context { +@@ -241,8 +242,15 @@ static void inotify_handler(struct event + filenames, and thus can't know how much to allocate + otherwise + */ +- if (ioctl(in->fd, FIONREAD, &bufsize) != 0 || +- bufsize == 0) { ++ if ((ioctl(in->fd, FIONREAD, &bufsize) != 0) && (errno == EACCES)) { ++ /* ++ * Workaround for broken system (SELinux policy bug fixed since long but it is always better not to loop on EACCES) ++ */ ++ TALLOC_FREE(fde); ++ in->broken_inotify = True; ++ return; ++ } ++ if (bufsize == 0) { + DEBUG(0,("No data on inotify fd?!\n")); + TALLOC_FREE(fde); + return; +@@ -300,6 +308,7 @@ static NTSTATUS inotify_setup(struct sys + } + in->ctx = ctx; + in->watches = NULL; ++ in->broken_inotify = False; + + ctx->private_data = in; + talloc_set_destructor(in, inotify_destructor); +@@ -394,6 +403,10 @@ NTSTATUS inotify_watch(struct sys_notify + + in = talloc_get_type(ctx->private_data, struct inotify_private); + ++ if (in->broken_inotify) { ++ return NT_STATUS_OK; ++ } ++ + mask = inotify_map(e); + if (mask == 0) { + /* this filter can't be handled by inotify */ diff --git a/src/patches/samba/samba-3.5.11-docs.patch b/src/patches/samba/samba-3.5.11-docs.patch new file mode 100644 index 000000000..35db3dcc5 --- /dev/null +++ b/src/patches/samba/samba-3.5.11-docs.patch @@ -0,0 +1,70 @@ +From 337e286f110f594f02ea6780900e0a95ec6794c2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 5 Aug 2011 12:25:52 +0200 +Subject: [PATCH] s3-docs: document --user-sidinfo wbinfo option. + +Guenther +--- + docs-xml/manpages-3/wbinfo.1.xml | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +Index: samba-3.6.22/docs-xml/manpages-3/wbinfo.1.xml +=================================================================== +--- samba-3.6.22.orig/docs-xml/manpages-3/wbinfo.1.xml ++++ samba-3.6.22/docs-xml/manpages-3/wbinfo.1.xml +@@ -47,7 +47,7 @@ + --online-status + --own-domain + -p +- -P|--ping-dc ++ --ping-dc + -r user + -R|--lookup-rids + -s sid +@@ -61,6 +61,7 @@ + --uid-info uid + --usage + --user-domgroups sid ++ --user-sidinfo sid + --user-sids sid + -U uid + -V +@@ -414,6 +415,13 @@ + + + ++ --user-sidinfo sid ++ Get user info by sid. ++ ++ ++ ++ ++ + --user-sids sid + Get user group SIDs for user. + +Index: samba-3.6.22/docs/manpages/wbinfo.1 +=================================================================== +--- samba-3.6.22.orig/docs/manpages/wbinfo.1 ++++ samba-3.6.22/docs/manpages/wbinfo.1 +@@ -31,7 +31,7 @@ + wbinfo \- Query information from winbind daemon + .SH "SYNOPSIS" + .HP \w'\ 'u +-wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-P|\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid] ++wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid] + .SH "DESCRIPTION" + .PP + This tool is part of the +@@ -328,6 +328,11 @@ Print brief help overview\&. + Get user domain groups\&. + .RE + .PP ++\-\-user\-sidinfo \fIsid\fR ++.RS 4 ++Get user info by sid\&. ++.RE ++.PP + \-\-user\-sids \fIsid\fR + .RS 4 + Get user group SIDs for user\&. diff --git a/src/patches/samba/samba-3.5.11-idmapdebug.patch b/src/patches/samba/samba-3.5.11-idmapdebug.patch new file mode 100644 index 000000000..44da0ff9d --- /dev/null +++ b/src/patches/samba/samba-3.5.11-idmapdebug.patch @@ -0,0 +1,26 @@ +Index: samba-3.6.6/source3/winbindd/idmap.c +=================================================================== +--- samba-3.6.6.orig/source3/winbindd/idmap.c ++++ samba-3.6.6/source3/winbindd/idmap.c +@@ -129,7 +129,7 @@ NTSTATUS smb_register_idmap(int version, + + for (entry = backends; entry != NULL; entry = entry->next) { + if (strequal(entry->name, name)) { +- DEBUG(0,("Idmap module %s already registered!\n", ++ DEBUG(5,("Idmap module %s already registered!\n", + name)); + return NT_STATUS_OBJECT_NAME_COLLISION; + } +Index: samba-3.6.6/source3/winbindd/nss_info.c +=================================================================== +--- samba-3.6.6.orig/source3/winbindd/nss_info.c ++++ samba-3.6.6/source3/winbindd/nss_info.c +@@ -66,7 +66,7 @@ static struct nss_function_entry *nss_ge + } + + if ( nss_get_backend(name) ) { +- DEBUG(0,("smb_register_idmap_nss: idmap module %s " ++ DEBUG(5,("smb_register_idmap_nss: idmap module %s " + "already registered!\n", name)); + return NT_STATUS_OBJECT_NAME_COLLISION; + } diff --git a/src/patches/samba/samba-3.5.11-nss_info_doc.patch b/src/patches/samba/samba-3.5.11-nss_info_doc.patch new file mode 100644 index 000000000..50051a007 --- /dev/null +++ b/src/patches/samba/samba-3.5.11-nss_info_doc.patch @@ -0,0 +1,75 @@ +From 47871b11df083ec6936599e1196a553379c044b3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Wed, 19 Oct 2011 00:19:58 +0200 +Subject: [PATCH 1/2] s3-docs: Document Services for Unix 2.0 (sfu20) nss_info + ldap schema support. + +Guenther +--- + docs-xml/manpages-3/idmap_ad.8.xml | 4 +++- + docs-xml/smbdotconf/winbind/winbindnssinfo.xml | 5 +++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +Index: samba-3.6.22/docs-xml/manpages-3/idmap_ad.8.xml +=================================================================== +--- samba-3.6.22.orig/docs-xml/manpages-3/idmap_ad.8.xml ++++ samba-3.6.22/docs-xml/manpages-3/idmap_ad.8.xml +@@ -63,12 +63,17 @@ + + + +- schema_mode = <rfc2307 | sfu > ++ schema_mode = <rfc2307 | sfu | sfu20> + + Defines the schema that idmap_ad should use when querying + Active Directory regarding user and group information. + This can be either the RFC2307 schema support included + in Windows 2003 R2 or the Service for Unix (SFU) schema. ++ For SFU 3.0 or 3.5 please choose "sfu", for SFU 2.0 ++ please choose "sfu20". ++ ++ Please note that primary group membership is currently always calculated ++ via the "primaryGroupID" LDAP attribute. + + + +Index: samba-3.6.22/docs-xml/smbdotconf/winbind/winbindnssinfo.xml +=================================================================== +--- samba-3.6.22.orig/docs-xml/smbdotconf/winbind/winbindnssinfo.xml ++++ samba-3.6.22/docs-xml/smbdotconf/winbind/winbindnssinfo.xml +@@ -18,14 +18,16 @@ + + + +- <sfu | rfc2307 > ++ <sfu | sfu20 | rfc2307 > + - When Samba is running in security = ads and your Active Directory + Domain Controller does support the Microsoft "Services for Unix" (SFU) + LDAP schema, winbind can retrieve the login shell and the home +- directory attributes directly from your Directory Server. Note that ++ directory attributes directly from your Directory Server. For SFU 3.0 or 3.5 simply choose ++ "sfu", if you use SFU 2.0 please choose "sfu20". Note that + retrieving UID and GID from your ADS-Server requires to + use idmap config DOMAIN:backend = ad +- as well. ++ as well. The primary group membership is currently ++ always calculated via the "primaryGroupID" LDAP attribute. + + + +Index: samba-3.6.22/docs/manpages/idmap_ad.8 +=================================================================== +--- samba-3.6.22.orig/docs/manpages/idmap_ad.8 ++++ samba-3.6.22/docs/manpages/idmap_ad.8 +@@ -48,9 +48,9 @@ range = low \- high + Defines the available matching UID and GID range for which the backend is authoritative\&. Note that the range acts as a filter\&. If specified any UID or GID stored in AD that fall outside the range is ignored and the corresponding map is discarded\&. It is intended as a way to avoid accidental UID/GID overlaps between local and remotely defined IDs\&. + .RE + .PP +-schema_mode = ++schema_mode = + .RS 4 +-Defines the schema that idmap_ad should use when querying Active Directory regarding user and group information\&. This can be either the RFC2307 schema support included in Windows 2003 R2 or the Service for Unix (SFU) schema\&. ++Defines the schema that idmap_ad should use when querying Active Directory regarding user and group information\&. This can be either the RFC2307 schema support included in Windows 2003 R2 or the Service for Unix (SFU) schema\&. For SFU 3\&.0 or 3\&.5 please choose "sfu", for SFU 2\&.0 please choose "sfu20"\&. Please note that primary group membership is currently always calculated via the "primaryGroupID" LDAP attribute\&. + .RE + .SH "EXAMPLES" + .PP diff --git a/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch b/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch new file mode 100644 index 000000000..635553368 --- /dev/null +++ b/src/patches/samba/samba-3.5.11-wbinfo_manpage.patch @@ -0,0 +1,65 @@ +From 21027216d43c33fac220746c32acff6b355c4e7d Mon Sep 17 00:00:00 2001 +From: Christian Ambach +Date: Fri, 30 Sep 2011 17:07:05 +0200 +Subject: [PATCH] s3-docs: some corrections for wbinfo + +Parameters for --group-info and --gid-info were not listed +properly in the SYNOPSIS and the OPTIONS section + +Autobuild-User: Christian Ambach +Autobuild-Date: Fri Sep 30 18:44:34 CEST 2011 on sn-devel-104 +--- + docs-xml/manpages-3/wbinfo.1.xml | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +Index: samba-3.6.6/docs-xml/manpages-3/wbinfo.1.xml +=================================================================== +--- samba-3.6.6.orig/docs-xml/manpages-3/wbinfo.1.xml ++++ samba-3.6.6/docs-xml/manpages-3/wbinfo.1.xml +@@ -33,8 +33,8 @@ + --getdcname domain + --get-auth-user + -G gid +- --gid-info +- --group-info ++ --gid-info gid ++ --group-info group + --help|-? + -i user + -I ip +@@ -171,8 +171,8 @@ + + + +- --group-info user +- Get group info for user. ++ --group-info group ++ Get group info from group name. + + + +Index: samba-3.6.6/docs/manpages/wbinfo.1 +=================================================================== +--- samba-3.6.6.orig/docs/manpages/wbinfo.1 ++++ samba-3.6.6/docs/manpages/wbinfo.1 +@@ -31,7 +31,7 @@ + wbinfo \- Query information from winbind daemon + .SH "SYNOPSIS" + .HP \w'\ 'u +-wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info] [\-\-group\-info] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid] ++wbinfo [\-a\ user%password] [\-\-all\-domains] [\-\-allocate\-gid] [\-\-allocate\-uid] [\-c] [\-\-ccache\-save] [\-\-change\-user\-password] [\-D\ domain] [\-\-domain\ domain] [\-\-dsgetdcname\ domain] [\-g] [\-\-getdcname\ domain] [\-\-get\-auth\-user] [\-G\ gid] [\-\-gid\-info\ gid] [\-\-group\-info\ group] [\-\-help|\-?] [\-i\ user] [\-I\ ip] [\-K\ user%password] [\-\-lanman] [\-m] [\-n\ name] [\-N\ netbios\-name] [\-\-ntlmv2] [\-\-online\-status] [\-\-own\-domain] [\-p] [\-\-ping\-dc] [\-r\ user] [\-R|\-\-lookup\-rids] [\-s\ sid] [\-\-separator] [\-\-set\-auth\-user\ user%password] [\-S\ sid] [\-\-sid\-aliases] [\-\-sid\-to\-fullname] [\-t] [\-u] [\-\-uid\-info\ uid] [\-\-usage] [\-\-user\-domgroups\ sid] [\-\-user\-sidinfo\ sid] [\-\-user\-sids\ sid] [\-U\ uid] [\-V] [\-\-verbose] [\-Y\ sid] + .SH "DESCRIPTION" + .PP + This tool is part of the +@@ -130,9 +130,9 @@ Find a DC for a domain\&. + Get group info from gid\&. + .RE + .PP +-\-\-group\-info \fIuser\fR ++\-\-group\-info \fIgroup\fR + .RS 4 +-Get group info for user\&. ++Get group info from group name\&. + .RE + .PP + \-g|\-\-domain\-groups diff --git a/src/patches/samba/samba-3.5.12-dns.patch b/src/patches/samba/samba-3.5.12-dns.patch new file mode 100644 index 000000000..d655a8254 --- /dev/null +++ b/src/patches/samba/samba-3.5.12-dns.patch @@ -0,0 +1,27 @@ +From 1b0421a1a3d2b2e0168c0957864c16adf93e326d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Wed, 21 Dec 2011 15:47:35 +0100 +Subject: [PATCH] s3-dns: prevent from potentially doing wrong SRV DNS + lookups. + +With an empty sitename we asked for e.g. +_ldap._tcp.._sites.dc._msdcs.AD.EXAMPLE.COM + +Guenther +--- + source3/libads/dns.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: samba-3.6.6/source3/libads/dns.c +=================================================================== +--- samba-3.6.6.orig/source3/libads/dns.c ++++ samba-3.6.6/source3/libads/dns.c +@@ -741,7 +741,7 @@ static NTSTATUS ads_dns_query_internal(T + int *numdcs ) + { + char *name; +- if (sitename) { ++ if (sitename && strlen(sitename)) { + name = talloc_asprintf(ctx, "%s._tcp.%s._sites.%s._msdcs.%s", + servicename, sitename, + dc_pdc_gc_domains, realm); diff --git a/src/patches/samba/samba-3.5.12-pam_radio_type.patch b/src/patches/samba/samba-3.5.12-pam_radio_type.patch new file mode 100644 index 000000000..624b73f26 --- /dev/null +++ b/src/patches/samba/samba-3.5.12-pam_radio_type.patch @@ -0,0 +1,31 @@ +From 516ba47988f00f83dd4ee53556e0be6463de88ec Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Thu, 5 Apr 2012 14:05:00 +0200 +Subject: [PATCH] nsswitch: disable HAVE_PAM_RADIO_TYPE handling until proper + PAM_RADIO_TYPE handling is available. + + This is needed that gdm doesn't crash. + +Guenther +--- + nsswitch/pam_winbind.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c +index b802036..0ed91d8 100644 +--- a/nsswitch/pam_winbind.c ++++ b/nsswitch/pam_winbind.c +@@ -807,7 +807,9 @@ static int wbc_auth_error_to_pam_error(struct pwb_context *ctx, + return pam_winbind_request_log(ctx, ret, username, fn); + } + +-#if defined(HAVE_PAM_RADIO_TYPE) ++#if 0 ++/* #if defined(HAVE_PAM_RADIO_TYPE) currently disabled until proper ++ * PAM_RADIO_TYPE is implemented - gd */ + static bool _pam_winbind_change_pwd(struct pwb_context *ctx) + { + struct pam_message msg, *pmsg; +-- +1.7.7.6 + diff --git a/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch b/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch new file mode 100644 index 000000000..dac2edeaf --- /dev/null +++ b/src/patches/samba/samba-3.6.18-fix_net_ads_join_segfault.patch @@ -0,0 +1,40 @@ +From 814b2c730b2f38767712a005bf328a4a04478f63 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 17 May 2013 15:14:35 +0200 +Subject: [PATCH 1/2] s3-libads: Fail + create_local_private_krb5_conf_for_domain() if parameters missing. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Stefan Metzmacher +Reviewed-by: Andreas Schneider +(cherry picked from commit 6dc7c63efa95d0c04b542667d9b6a6621c8139bf) +--- + source3/libads/kerberos.c | 4 ++++ + 1 file changed, 4 insertions(+) + +Index: samba-3.6.22/source3/libads/kerberos.c +=================================================================== +--- samba-3.6.22.orig/source3/libads/kerberos.c ++++ samba-3.6.22/source3/libads/kerberos.c +@@ -866,6 +866,16 @@ bool create_local_private_krb5_conf_for_ + return false; + } + ++ if (realm == NULL) { ++ DEBUG(0, ("No realm has been specified! Do you really want to " ++ "join an Active Directory server?\n")); ++ return false; ++ } ++ ++ if (domain == NULL || pss == NULL || kdc_name == NULL) { ++ return false; ++ } ++ + dname = lock_path("smb_krb5"); + if (!dname) { + return false; diff --git a/src/patches/samba/samba-3.6.19-valid_users_doc.patch b/src/patches/samba/samba-3.6.19-valid_users_doc.patch new file mode 100644 index 000000000..602783bdc --- /dev/null +++ b/src/patches/samba/samba-3.6.19-valid_users_doc.patch @@ -0,0 +1,53 @@ +From 3c7822bac97ce4646f1b2c8419d1dae773c02c1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Tue, 17 Sep 2013 12:47:58 +0200 +Subject: [PATCH] docs: point out side-effects of global "valid users" setting. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Guenther + +Signed-off-by: Günther Deschner +--- + docs-xml/smbdotconf/security/validusers.xml | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +Index: samba-3.6.22/docs-xml/smbdotconf/security/validusers.xml +=================================================================== +--- samba-3.6.22.orig/docs-xml/smbdotconf/security/validusers.xml ++++ samba-3.6.22/docs-xml/smbdotconf/security/validusers.xml +@@ -19,6 +19,16 @@ + The current servicename is substituted for %S. + This is useful in the [homes] section. + ++ ++ Note: When used in the [global] section this ++ parameter may have unwanted side effects. For example: If samba is configured as a MASTER BROWSER (see ++ local master, ++ os level, ++ domain master, ++ preferred master) this option ++ will prevent workstations from being able to browse the network. ++ ++ + + + invalid users +Index: samba-3.6.22/docs/manpages/smb.conf.5 +=================================================================== +--- samba-3.6.22.orig/docs/manpages/smb.conf.5 ++++ samba-3.6.22/docs/manpages/smb.conf.5 +@@ -10311,6 +10311,12 @@ list then access is denied for that user + The current servicename is substituted for + \fI%S\fR\&. This is useful in the [homes] section\&. + .sp ++\fINote: \fRWhen used in the [global] section this parameter may have unwanted side effects\&. For example: If samba is configured as a MASTER BROWSER (see ++\fIlocal master\fR, ++\fIos level\fR, ++\fIdomain master\fR, ++\fIpreferred master\fR) this option will prevent workstations from being able to browse the network\&. ++.sp + Default: + \fI\fIvalid users\fR\fR\fI = \fR\fI # No valid users list (anyone can login) \fR\fI \fR + .sp diff --git a/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch b/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch new file mode 100644 index 000000000..9b6d22189 --- /dev/null +++ b/src/patches/samba/samba-3.6.23-fix_libads_krb5_ipv6.patch @@ -0,0 +1,788 @@ +From 918ac8f0ed19aeaa4718fa94fcabe87d0419d768 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Mon, 13 Jan 2014 15:59:26 +0100 +Subject: [PATCH 1/5] PATCHSET11: s3-kerberos: remove print_kdc_line() + completely. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Just calling print_canonical_sockaddr() is sufficient, as it already deals with +ipv6 as well. The port handling, which was only done for IPv6 (not IPv4), is +removed as well. It was pointless because it always derived the port number from +the provided address which was either a SMB (usually port 445) or LDAP +connection. No KDC will ever run on port 389 or 445 on a Windows/Samba DC. +Finally, the kerberos libraries that we support and build with, can deal with +ipv6 addresses in krb5.conf, so we no longer put the (unnecessary) burden of +resolving the DC name on the kerberos library anymore. + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Andreas Schneider + +Conflicts: + source3/libads/kerberos.c +--- + source3/libads/kerberos.c | 86 +++++------------------------------------------ + 1 file changed, 9 insertions(+), 77 deletions(-) + +diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c +index 1153ccb..064e5f7 100644 +--- a/source3/libads/kerberos.c ++++ b/source3/libads/kerberos.c +@@ -661,73 +661,6 @@ int kerberos_kinit_password(const char *principal, + } + + /************************************************************************ +-************************************************************************/ +- +-static char *print_kdc_line(char *mem_ctx, +- const char *prev_line, +- const struct sockaddr_storage *pss, +- const char *kdc_name) +-{ +- char *kdc_str = NULL; +- +- if (pss->ss_family == AF_INET) { +- kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", +- prev_line, +- print_canonical_sockaddr(mem_ctx, pss)); +- } else { +- char addr[INET6_ADDRSTRLEN]; +- uint16_t port = get_sockaddr_port(pss); +- +- DEBUG(10,("print_kdc_line: IPv6 case for kdc_name: %s, port: %d\n", +- kdc_name, port)); +- +- if (port != 0 && port != DEFAULT_KRB5_PORT) { +- /* Currently for IPv6 we can't specify a non-default +- krb5 port with an address, as this requires a ':'. +- Resolve to a name. */ +- char hostname[MAX_DNS_NAME_LENGTH]; +- int ret = sys_getnameinfo((const struct sockaddr *)pss, +- sizeof(*pss), +- hostname, sizeof(hostname), +- NULL, 0, +- NI_NAMEREQD); +- if (ret) { +- DEBUG(0,("print_kdc_line: can't resolve name " +- "for kdc with non-default port %s. " +- "Error %s\n.", +- print_canonical_sockaddr(mem_ctx, pss), +- gai_strerror(ret))); +- return NULL; +- } +- /* Success, use host:port */ +- kdc_str = talloc_asprintf(mem_ctx, +- "%s\tkdc = %s:%u\n", +- prev_line, +- hostname, +- (unsigned int)port); +- } else { +- +- /* no krb5 lib currently supports "kdc = ipv6 address" +- * at all, so just fill in just the kdc_name if we have +- * it and let the krb5 lib figure out the appropriate +- * ipv6 address - gd */ +- +- if (kdc_name) { +- kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", +- prev_line, kdc_name); +- } else { +- kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", +- prev_line, +- print_sockaddr(addr, +- sizeof(addr), +- pss)); +- } +- } +- } +- return kdc_str; +-} +- +-/************************************************************************ + Create a string list of available kdc's, possibly searching by sitename. + Does DNS queries. + +@@ -746,7 +679,8 @@ static char *get_kdc_ip_string(char *mem_ctx, + struct ip_service *ip_srv_nonsite = NULL; + int count_site = 0; + int count_nonsite; +- char *kdc_str = print_kdc_line(mem_ctx, "", pss, kdc_name); ++ char *kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", "", ++ print_canonical_sockaddr(mem_ctx, pss)); + + if (kdc_str == NULL) { + return NULL; +@@ -768,10 +702,9 @@ static char *get_kdc_ip_string(char *mem_ctx, + } + /* Append to the string - inefficient + * but not done often. */ +- kdc_str = print_kdc_line(mem_ctx, +- kdc_str, +- &ip_srv_site[i].ss, +- NULL); ++ kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", ++ kdc_str, ++ print_canonical_sockaddr(mem_ctx, &ip_srv_site[i].ss)); + if (!kdc_str) { + SAFE_FREE(ip_srv_site); + return NULL; +@@ -806,11 +739,10 @@ static char *get_kdc_ip_string(char *mem_ctx, + } + + /* Append to the string - inefficient but not done often. */ +- kdc_str = print_kdc_line(mem_ctx, +- kdc_str, +- &ip_srv_nonsite[i].ss, +- NULL); +- if (!kdc_str) { ++ kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", ++ kdc_str, ++ print_canonical_sockaddr(mem_ctx, &ip_srv_nonsite[i].ss)); ++ if (kdc_str == NULL) { + SAFE_FREE(ip_srv_site); + SAFE_FREE(ip_srv_nonsite); + return NULL; +-- +1.9.0 + + +From b4eba7d838b60230b9f6c9a08ef0ddc00e3e47f0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 7 Mar 2014 14:47:31 +0100 +Subject: [PATCH 2/5] PATCHSET11: s3-kerberos: remove unused kdc_name from + create_local_private_krb5_conf_for_domain(). +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Andreas Schneider + +Autobuild-User(master): Günther Deschner +Autobuild-Date(master): Fri Mar 7 18:43:57 CET 2014 on sn-devel-104 + +Conflicts: + source3/libads/kerberos.c + source3/libads/kerberos_proto.h + source3/libnet/libnet_join.c + source3/winbindd/winbindd_cm.c +--- + source3/libads/kerberos.c | 10 ++++------ + source3/libads/kerberos_proto.h | 3 +-- + source3/libnet/libnet_join.c | 2 +- + source3/libsmb/namequery_dc.c | 6 ++---- + source3/winbindd/winbindd_cm.c | 6 ++---- + 5 files changed, 10 insertions(+), 17 deletions(-) + +diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c +index 064e5f7..b826cb3 100644 +--- a/source3/libads/kerberos.c ++++ b/source3/libads/kerberos.c +@@ -671,8 +671,7 @@ int kerberos_kinit_password(const char *principal, + static char *get_kdc_ip_string(char *mem_ctx, + const char *realm, + const char *sitename, +- struct sockaddr_storage *pss, +- const char *kdc_name) ++ struct sockaddr_storage *pss) + { + int i; + struct ip_service *ip_srv_site = NULL; +@@ -769,8 +768,7 @@ static char *get_kdc_ip_string(char *mem_ctx, + bool create_local_private_krb5_conf_for_domain(const char *realm, + const char *domain, + const char *sitename, +- struct sockaddr_storage *pss, +- const char *kdc_name) ++ struct sockaddr_storage *pss) + { + char *dname; + char *tmpname = NULL; +@@ -794,7 +792,7 @@ bool create_local_private_krb5_conf_for_domain(const char *realm, + return false; + } + +- if (domain == NULL || pss == NULL || kdc_name == NULL) { ++ if (domain == NULL || pss == NULL) { + return false; + } + +@@ -825,7 +823,7 @@ bool create_local_private_krb5_conf_for_domain(const char *realm, + realm_upper = talloc_strdup(fname, realm); + strupper_m(realm_upper); + +- kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss, kdc_name); ++ kdc_ip_string = get_kdc_ip_string(dname, realm, sitename, pss); + if (!kdc_ip_string) { + goto done; + } +diff --git a/source3/libads/kerberos_proto.h b/source3/libads/kerberos_proto.h +index 406669cc..90d7cd9 100644 +--- a/source3/libads/kerberos_proto.h ++++ b/source3/libads/kerberos_proto.h +@@ -75,8 +75,7 @@ int kerberos_kinit_password(const char *principal, + bool create_local_private_krb5_conf_for_domain(const char *realm, + const char *domain, + const char *sitename, +- struct sockaddr_storage *pss, +- const char *kdc_name); ++ struct sockaddr_storage *pss); + + /* The following definitions come from libads/authdata.c */ + +diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c +index e84682d..f1736ec 100644 +--- a/source3/libnet/libnet_join.c ++++ b/source3/libnet/libnet_join.c +@@ -1985,7 +1985,7 @@ static WERROR libnet_DomainJoin(TALLOC_CTX *mem_ctx, + + create_local_private_krb5_conf_for_domain( + r->out.dns_domain_name, r->out.netbios_domain_name, +- NULL, &cli->dest_ss, cli->desthost); ++ NULL, &cli->dest_ss); + + if (r->out.domain_is_ad && r->in.account_ou && + !(r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_UNSECURE)) { +diff --git a/source3/libsmb/namequery_dc.c b/source3/libsmb/namequery_dc.c +index 39b780c..149121a 100644 +--- a/source3/libsmb/namequery_dc.c ++++ b/source3/libsmb/namequery_dc.c +@@ -111,14 +111,12 @@ static bool ads_dc_name(const char *domain, + create_local_private_krb5_conf_for_domain(realm, + domain, + sitename, +- &ads->ldap.ss, +- ads->config.ldap_server_name); ++ &ads->ldap.ss); + } else { + create_local_private_krb5_conf_for_domain(realm, + domain, + NULL, +- &ads->ldap.ss, +- ads->config.ldap_server_name); ++ &ads->ldap.ss); + } + } + #endif +diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c +index 8271279..59f30a5 100644 +--- a/source3/winbindd/winbindd_cm.c ++++ b/source3/winbindd/winbindd_cm.c +@@ -1226,8 +1226,7 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx, + create_local_private_krb5_conf_for_domain(domain->alt_name, + domain->name, + sitename, +- pss, +- name); ++ pss); + + SAFE_FREE(sitename); + } else { +@@ -1235,8 +1234,7 @@ static bool dcip_to_name(TALLOC_CTX *mem_ctx, + create_local_private_krb5_conf_for_domain(domain->alt_name, + domain->name, + NULL, +- pss, +- name); ++ pss); + } + winbindd_set_locator_kdc_envs(domain); + +-- +1.9.0 + + +From db840b57e81922cea984530e2dc1b42cc99e75de Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Wed, 2 Apr 2014 19:37:34 +0200 +Subject: [PATCH 3/5] PATCHSET11: s3-kerberos: make ipv6 support for generated + krb5 config files more robust. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Older MIT Kerberos libraries will add any secondary ipv6 address as +ipv4 address, defining the (default) krb5 port 88 circumvents that. + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Andreas Schneider + +Autobuild-User(master): Günther Deschner +Autobuild-Date(master): Fri Apr 4 16:33:12 CEST 2014 on sn-devel-104 + +Conflicts: + source3/libads/kerberos.c +--- + source3/libads/kerberos.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c +index b826cb3..5e34aa3 100644 +--- a/source3/libads/kerberos.c ++++ b/source3/libads/kerberos.c +@@ -668,6 +668,31 @@ int kerberos_kinit_password(const char *principal, + + ************************************************************************/ + ++/* print_canonical_sockaddr prints an ipv6 addr in the form of ++* [ipv6.addr]. This string, when put in a generated krb5.conf file is not ++* always properly dealt with by some older krb5 libraries. Adding the hard-coded ++* portnumber workarounds the issue. - gd */ ++ ++static char *print_canonical_sockaddr_with_port(TALLOC_CTX *mem_ctx, ++ const struct sockaddr_storage *pss) ++{ ++ char *str = NULL; ++ ++ str = print_canonical_sockaddr(mem_ctx, pss); ++ if (str == NULL) { ++ return NULL; ++ } ++ ++ if (pss->ss_family != AF_INET6) { ++ return str; ++ } ++ ++#if defined(HAVE_IPV6) ++ str = talloc_asprintf_append(str, ":88"); ++#endif ++ return str; ++} ++ + static char *get_kdc_ip_string(char *mem_ctx, + const char *realm, + const char *sitename, +@@ -679,7 +704,7 @@ static char *get_kdc_ip_string(char *mem_ctx, + int count_site = 0; + int count_nonsite; + char *kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", "", +- print_canonical_sockaddr(mem_ctx, pss)); ++ print_canonical_sockaddr_with_port(mem_ctx, pss)); + + if (kdc_str == NULL) { + return NULL; +@@ -740,7 +765,7 @@ static char *get_kdc_ip_string(char *mem_ctx, + /* Append to the string - inefficient but not done often. */ + kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", + kdc_str, +- print_canonical_sockaddr(mem_ctx, &ip_srv_nonsite[i].ss)); ++ print_canonical_sockaddr_with_port(mem_ctx, &ip_srv_nonsite[i].ss)); + if (kdc_str == NULL) { + SAFE_FREE(ip_srv_site); + SAFE_FREE(ip_srv_nonsite); +-- +1.9.0 + + +From 208f1d7b5ae557bf34a39c847aeb1925ce4cb171 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Tue, 26 Apr 2011 17:03:32 +1000 +Subject: [PATCH 4/5] PATCHSET11: s3-libads Pass a struct sockaddr_storage to + cldap routines + +This avoids these routines doing a DNS lookup that has already been +done, and ensures that the emulated DNS lookup isn't thrown away. + +Andrew Bartlett +--- + source3/libads/cldap.c | 14 ++++-------- + source3/libads/cldap.h | 4 ++-- + source3/libads/ldap.c | 41 ++++++++++------------------------- + source3/libsmb/dsgetdcname.c | 3 ++- + source3/utils/net_ads.c | 7 +++--- + source3/winbindd/idmap_adex/gc_util.c | 12 +++++++++- + 6 files changed, 33 insertions(+), 48 deletions(-) + +diff --git a/source3/libads/cldap.c b/source3/libads/cldap.c +index 5d2e900..03fa17c 100644 +--- a/source3/libads/cldap.c ++++ b/source3/libads/cldap.c +@@ -30,7 +30,7 @@ + *******************************************************************/ + + bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx, +- const char *server, ++ struct sockaddr_storage *ss, + const char *realm, + uint32_t nt_version, + struct netlogon_samlogon_response **_reply) +@@ -39,18 +39,12 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx, + struct cldap_netlogon io; + struct netlogon_samlogon_response *reply; + NTSTATUS status; +- struct sockaddr_storage ss; + char addrstr[INET6_ADDRSTRLEN]; + const char *dest_str; + int ret; + struct tsocket_address *dest_addr; + +- if (!interpret_string_addr_prefer_ipv4(&ss, server, 0)) { +- DEBUG(2,("Failed to resolve[%s] into an address for cldap\n", +- server)); +- return false; +- } +- dest_str = print_sockaddr(addrstr, sizeof(addrstr), &ss); ++ dest_str = print_sockaddr(addrstr, sizeof(addrstr), ss); + + ret = tsocket_address_inet_from_strings(mem_ctx, "ip", + dest_str, LDAP_PORT, +@@ -113,7 +107,7 @@ failed: + *******************************************************************/ + + bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx, +- const char *server, ++ struct sockaddr_storage *ss, + const char *realm, + struct NETLOGON_SAM_LOGON_RESPONSE_EX *reply5) + { +@@ -121,7 +115,7 @@ bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx, + struct netlogon_samlogon_response *reply = NULL; + bool ret; + +- ret = ads_cldap_netlogon(mem_ctx, server, realm, nt_version, &reply); ++ ret = ads_cldap_netlogon(mem_ctx, ss, realm, nt_version, &reply); + if (!ret) { + return false; + } +diff --git a/source3/libads/cldap.h b/source3/libads/cldap.h +index d2ad4b0..60e1c56 100644 +--- a/source3/libads/cldap.h ++++ b/source3/libads/cldap.h +@@ -27,12 +27,12 @@ + + /* The following definitions come from libads/cldap.c */ + bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx, +- const char *server, ++ struct sockaddr_storage *ss, + const char *realm, + uint32_t nt_version, + struct netlogon_samlogon_response **reply); + bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx, +- const char *server, ++ struct sockaddr_storage *ss, + const char *realm, + struct NETLOGON_SAM_LOGON_RESPONSE_EX *reply5); + +diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c +index b841c84..0db0bcd 100644 +--- a/source3/libads/ldap.c ++++ b/source3/libads/ldap.c +@@ -196,45 +196,32 @@ bool ads_closest_dc(ADS_STRUCT *ads) + */ + static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc) + { +- char *srv; + struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply; + TALLOC_CTX *frame = talloc_stackframe(); + bool ret = false; ++ struct sockaddr_storage ss; ++ char addr[INET6_ADDRSTRLEN]; + + if (!server || !*server) { + TALLOC_FREE(frame); + return False; + } + +- if (!is_ipaddress(server)) { +- struct sockaddr_storage ss; +- char addr[INET6_ADDRSTRLEN]; +- +- if (!resolve_name(server, &ss, 0x20, true)) { +- DEBUG(5,("ads_try_connect: unable to resolve name %s\n", +- server )); +- TALLOC_FREE(frame); +- return false; +- } +- print_sockaddr(addr, sizeof(addr), &ss); +- srv = talloc_strdup(frame, addr); +- } else { +- /* this copes with inet_ntoa brokenness */ +- srv = talloc_strdup(frame, server); +- } +- +- if (!srv) { ++ if (!resolve_name(server, &ss, 0x20, true)) { ++ DEBUG(5,("ads_try_connect: unable to resolve name %s\n", ++ server )); + TALLOC_FREE(frame); + return false; + } ++ print_sockaddr(addr, sizeof(addr), &ss); + + DEBUG(5,("ads_try_connect: sending CLDAP request to %s (realm: %s)\n", +- srv, ads->server.realm)); ++ addr, ads->server.realm)); + + ZERO_STRUCT( cldap_reply ); + +- if ( !ads_cldap_netlogon_5(frame, srv, ads->server.realm, &cldap_reply ) ) { +- DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", srv)); ++ if ( !ads_cldap_netlogon_5(frame, &ss, ads->server.realm, &cldap_reply ) ) { ++ DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", addr)); + ret = false; + goto out; + } +@@ -243,7 +230,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc) + + if ( !(cldap_reply.server_type & NBT_SERVER_LDAP) ) { + DEBUG(1,("ads_try_connect: %s's CLDAP reply says it is not an LDAP server!\n", +- srv)); ++ addr)); + ret = false; + goto out; + } +@@ -273,13 +260,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc) + ads->server.workgroup = SMB_STRDUP(cldap_reply.domain_name); + + ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT; +- if (!interpret_string_addr(&ads->ldap.ss, srv, 0)) { +- DEBUG(1,("ads_try_connect: unable to convert %s " +- "to an address\n", +- srv)); +- ret = false; +- goto out; +- } ++ ads->ldap.ss = ss; + + /* Store our site name. */ + sitename_store( cldap_reply.domain_name, cldap_reply.client_site); +diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c +index 841a179..2f8b8dc 100644 +--- a/source3/libsmb/dsgetdcname.c ++++ b/source3/libsmb/dsgetdcname.c +@@ -863,9 +863,10 @@ static NTSTATUS process_dc_dns(TALLOC_CTX *mem_ctx, + + for (i=0; ildap.ss); +- if ( !ads_cldap_netlogon_5(talloc_tos(), addr, ads->server.realm, &reply ) ) { ++ ++ if ( !ads_cldap_netlogon_5(talloc_tos(), &ads->ldap.ss, ads->server.realm, &reply ) ) { + d_fprintf(stderr, _("CLDAP query failed!\n")); + return -1; + } +@@ -385,7 +386,6 @@ int net_ads_check(struct net_context *c) + static int net_ads_workgroup(struct net_context *c, int argc, const char **argv) + { + ADS_STRUCT *ads; +- char addr[INET6_ADDRSTRLEN]; + struct NETLOGON_SAM_LOGON_RESPONSE_EX reply; + + if (c->display_usage) { +@@ -407,8 +407,7 @@ static int net_ads_workgroup(struct net_context *c, int argc, const char **argv) + ads->ldap.port = 389; + } + +- print_sockaddr(addr, sizeof(addr), &ads->ldap.ss); +- if ( !ads_cldap_netlogon_5(talloc_tos(), addr, ads->server.realm, &reply ) ) { ++ if ( !ads_cldap_netlogon_5(talloc_tos(), &ads->ldap.ss, ads->server.realm, &reply ) ) { + d_fprintf(stderr, _("CLDAP query failed!\n")); + ads_destroy(&ads); + return -1; +diff --git a/source3/winbindd/idmap_adex/gc_util.c b/source3/winbindd/idmap_adex/gc_util.c +index 77b318c..e625265 100644 +--- a/source3/winbindd/idmap_adex/gc_util.c ++++ b/source3/winbindd/idmap_adex/gc_util.c +@@ -107,6 +107,7 @@ done: + NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; + struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply; + TALLOC_CTX *frame = talloc_stackframe(); ++ struct sockaddr_storage ss; + + if (!gc || !domain) { + return NT_STATUS_INVALID_PARAMETER; +@@ -126,8 +127,17 @@ done: + nt_status = ads_ntstatus(ads_status); + BAIL_ON_NTSTATUS_ERROR(nt_status); + ++ if (!resolve_name(ads->config.ldap_server_name, &ss, 0x20, true)) { ++ DEBUG(5,("gc_find_forest_root: unable to resolve name %s\n", ++ ads->config.ldap_server_name)); ++ nt_status = NT_STATUS_IO_TIMEOUT; ++ /* This matches the old code which did the resolve in ++ * ads_cldap_netlogon_5 */ ++ BAIL_ON_NTSTATUS_ERROR(nt_status); ++ } ++ + if (!ads_cldap_netlogon_5(frame, +- ads->config.ldap_server_name, ++ &ss, + ads->config.realm, + &cldap_reply)) + { +-- +1.9.0 + + +From 4eb02e7caa83b725988dd9f659b3568873522a30 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Wed, 16 Apr 2014 16:07:14 +0200 +Subject: [PATCH 5/5] PATCHSET11: s3-libads: allow ads_try_connect() to re-use + a resolved ip address. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Pass down a struct sockaddr_storage to ads_try_connect. + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Andreas Schneider + +Autobuild-User(master): Günther Deschner +Autobuild-Date(master): Thu Apr 17 19:56:16 CEST 2014 on sn-devel-104 +--- + source3/libads/ldap.c | 44 ++++++++++++++++++++++++++------------------ + 1 file changed, 26 insertions(+), 18 deletions(-) + +diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c +index 0db0bcd..f8349cf 100644 +--- a/source3/libads/ldap.c ++++ b/source3/libads/ldap.c +@@ -194,33 +194,27 @@ bool ads_closest_dc(ADS_STRUCT *ads) + try a connection to a given ldap server, returning True and setting the servers IP + in the ads struct if successful + */ +-static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc) ++static bool ads_try_connect(ADS_STRUCT *ads, bool gc, ++ struct sockaddr_storage *ss) + { + struct NETLOGON_SAM_LOGON_RESPONSE_EX cldap_reply; + TALLOC_CTX *frame = talloc_stackframe(); + bool ret = false; +- struct sockaddr_storage ss; + char addr[INET6_ADDRSTRLEN]; + +- if (!server || !*server) { ++ if (ss == NULL) { + TALLOC_FREE(frame); + return False; + } + +- if (!resolve_name(server, &ss, 0x20, true)) { +- DEBUG(5,("ads_try_connect: unable to resolve name %s\n", +- server )); +- TALLOC_FREE(frame); +- return false; +- } +- print_sockaddr(addr, sizeof(addr), &ss); ++ print_sockaddr(addr, sizeof(addr), ss); + + DEBUG(5,("ads_try_connect: sending CLDAP request to %s (realm: %s)\n", + addr, ads->server.realm)); + + ZERO_STRUCT( cldap_reply ); + +- if ( !ads_cldap_netlogon_5(frame, &ss, ads->server.realm, &cldap_reply ) ) { ++ if ( !ads_cldap_netlogon_5(frame, ss, ads->server.realm, &cldap_reply ) ) { + DEBUG(3,("ads_try_connect: CLDAP request %s failed.\n", addr)); + ret = false; + goto out; +@@ -260,7 +254,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, const char *server, bool gc) + ads->server.workgroup = SMB_STRDUP(cldap_reply.domain_name); + + ads->ldap.port = gc ? LDAP_GC_PORT : LDAP_PORT; +- ads->ldap.ss = ss; ++ ads->ldap.ss = *ss; + + /* Store our site name. */ + sitename_store( cldap_reply.domain_name, cldap_reply.client_site); +@@ -292,6 +286,7 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads) + bool use_own_domain = False; + char *sitename; + NTSTATUS status = NT_STATUS_UNSUCCESSFUL; ++ bool ok = false; + + /* if the realm and workgroup are both empty, assume they are ours */ + +@@ -345,12 +340,14 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads) + DEBUG(6,("ads_find_dc: (ldap) looking for %s '%s'\n", + (got_realm ? "realm" : "domain"), realm)); + +- if (get_dc_name(domain, realm, srv_name, &ip_out)) { ++ ok = get_dc_name(domain, realm, srv_name, &ip_out); ++ if (ok) { + /* + * we call ads_try_connect() to fill in the + * ads->config details + */ +- if (ads_try_connect(ads, srv_name, false)) { ++ ok = ads_try_connect(ads, false, &ip_out); ++ if (ok) { + return NT_STATUS_OK; + } + } +@@ -406,7 +403,8 @@ static NTSTATUS ads_find_dc(ADS_STRUCT *ads) + } + } + +- if ( ads_try_connect(ads, server, false) ) { ++ ok = ads_try_connect(ads, false, &ip_list[i].ss); ++ if (ok) { + SAFE_FREE(ip_list); + SAFE_FREE(sitename); + return NT_STATUS_OK; +@@ -591,9 +589,19 @@ ADS_STATUS ads_connect(ADS_STRUCT *ads) + TALLOC_FREE(s); + } + +- if (ads->server.ldap_server) +- { +- if (ads_try_connect(ads, ads->server.ldap_server, ads->server.gc)) { ++ if (ads->server.ldap_server) { ++ bool ok = false; ++ struct sockaddr_storage ss; ++ ++ ok = resolve_name(ads->server.ldap_server, &ss, 0x20, true); ++ if (!ok) { ++ DEBUG(5,("ads_connect: unable to resolve name %s\n", ++ ads->server.ldap_server)); ++ status = ADS_ERROR_NT(NT_STATUS_NOT_FOUND); ++ goto out; ++ } ++ ok = ads_try_connect(ads, ads->server.gc, &ss); ++ if (ok) { + goto got_connection; + } + +-- +1.9.0 + +diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c +index b826cb3..5e34aa3 100644 +--- a/source3/libads/kerberos.c ++++ b/source3/libads/kerberos.c +@@ -827,10 +827,6 @@ + return false; + } + +- if (domain == NULL || pss == NULL || kdc_name == NULL) { +- return false; +- } +- + dname = lock_path("smb_krb5"); + if (!dname) { + return false; diff --git a/src/patches/samba/samba-3.6.23-gecos.patch b/src/patches/samba/samba-3.6.23-gecos.patch new file mode 100644 index 000000000..2ecfe862c --- /dev/null +++ b/src/patches/samba/samba-3.6.23-gecos.patch @@ -0,0 +1,42 @@ +From 02da0b0ae947f30480b1246de22e865491e479f0 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 12 Feb 2014 13:26:02 +0100 +Subject: [PATCH] PATCHSET12: s3-winbind: Use strlcpy to avoid log entry. + +The full_name from Windows can be longer than 255 chars which results in +a warning on log level 0 that we have a string overflow. This will avoid +the warning. However we should fix this sooner or later on the protocol +level to have no limit. + +Signed-off-by: Andreas Schneider +Reviewed-by: Volker Lendecke + +Conflicts: + source3/winbindd/wb_fill_pwent.c +--- + source3/winbindd/wb_fill_pwent.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c +index 9634317..9d42b31 100644 +--- a/source3/winbindd/wb_fill_pwent.c ++++ b/source3/winbindd/wb_fill_pwent.c +@@ -141,8 +141,13 @@ static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq) + true); + } + +- fstrcpy(state->pw->pw_name, output_username); +- fstrcpy(state->pw->pw_gecos, state->info->full_name); ++ strlcpy(state->pw->pw_name, ++ output_username, ++ sizeof(state->pw->pw_name)); ++ /* FIXME The full_name can be longer than 255 chars */ ++ strlcpy(state->pw->pw_gecos, ++ state->info->full_name ? state->info->full_name : "", ++ sizeof(state->pw->pw_gecos)); + + /* Home directory and shell */ + ok = fillup_pw_field(lp_template_homedir(), +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.23-glusterfs.patch b/src/patches/samba/samba-3.6.23-glusterfs.patch new file mode 100644 index 000000000..2b82064b4 --- /dev/null +++ b/src/patches/samba/samba-3.6.23-glusterfs.patch @@ -0,0 +1,2318 @@ +From f2f684d4eadadeebf725b513bf4945ccf0aa7371 Mon Sep 17 00:00:00 2001 +From: Anand Avati +Date: Wed, 29 May 2013 07:21:46 -0400 +Subject: [PATCH 1/9] PATCHSET13: vfs_glusterfs: Samba VFS module for glusterfs + +Implement a Samba VFS plugin for glusterfs based on gluster's gfapi. +This is a "bottom" vfs plugin (not something to be stacked on top of +another module), and translates (most) calls into closest actions +on gfapi. + +Reviewed-by: Andrew Bartlett +Reviewed-by: Simo Sorce +Signed-off-by: Anand Avati +--- + source3/Makefile.in | 5 + + source3/configure.in | 23 + + source3/modules/vfs_glusterfs.c | 1461 +++++++++++++++++++++++++++++++++++++++ + source3/modules/wscript_build | 9 + + source3/wscript | 22 + + 5 files changed, 1520 insertions(+) + create mode 100644 source3/modules/vfs_glusterfs.c + +diff --git a/source3/Makefile.in b/source3/Makefile.in +index 9e8e03d..27bc43e 100644 +--- a/source3/Makefile.in ++++ b/source3/Makefile.in +@@ -848,6 +848,7 @@ VFS_SCANNEDONLY_OBJ = modules/vfs_scannedonly.o + VFS_CROSSRENAME_OBJ = modules/vfs_crossrename.o + VFS_LINUX_XFS_SGID_OBJ = modules/vfs_linux_xfs_sgid.o + VFS_TIME_AUDIT_OBJ = modules/vfs_time_audit.o ++VFS_GLUSTERFS_OBJ = modules/vfs_glusterfs.o + + PAM_ERRORS_OBJ = ../libcli/auth/pam_errors.o + PLAINTEXT_AUTH_OBJ = auth/pampass.o auth/pass_check.o $(PAM_ERRORS_OBJ) +@@ -3191,6 +3192,10 @@ bin/time_audit.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_TIME_AUDIT_OBJ) + @echo "Building plugin $@" + @$(SHLD_MODULE) $(VFS_TIME_AUDIT_OBJ) + ++bin/glusterfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_GLUSTERFS_OBJ) ++ @echo "Building plugin $@" ++ $(SHLD_MODULE) $(VFS_GLUSTERFS_OBJ) @GLUSTERFS_LIBS@ ++ + ######################################################### + ## IdMap NSS plugins + +diff --git a/source3/configure.in b/source3/configure.in +index 42c23e3..3cc78e9 100644 +--- a/source3/configure.in ++++ b/source3/configure.in +@@ -6688,6 +6688,29 @@ + fi + + ++############# ++AC_ARG_ENABLE([glusterfs], ++ AC_HELP_STRING([--disable-glusterfs],[Do not build vfs_glusterfs module])) ++ ++GLUTERFS_LIBS="" ++ ++if test "x$enable_glusterfs" != "xno"; then ++ PKG_CHECK_MODULES([GLFS], [glusterfs-api >= 4], glfs_found=yes, glfs_found=no) ++fi ++ ++if test "x$enable_glusterfs" = "xyes" -a "x$glfs_found" != "xyes"; then ++ echo "GFAPI not found in build system" ++ exit 1 ++fi ++ ++if test "x$glfs_found" = "xyes"; then ++ CFLAGS="$CFLAGS $GLFS_CFLAGS" ++ GLUSTERFS_LIBS="$GLFS_LIBS" ++ default_shared_modules="$default_shared_modules vfs_glusterfs" ++fi ++AC_SUBST(GLUSTERFS_LIBS) ++ ++ + ################################################# + # Set pthread stuff + +@@ -7007,6 +7030,7 @@ + SMB_MODULE(vfs_crossrename, \$(VFS_CROSSRENAME_OBJ), "bin/crossrename.$SHLIBEXT", VFS) + SMB_MODULE(vfs_linux_xfs_sgid, \$(VFS_LINUX_XFS_SGID_OBJ), "bin/linux_xfs_sgid.$SHLIBEXT", VFS) + SMB_MODULE(vfs_time_audit, \$(VFS_TIME_AUDIT_OBJ), "bin/time_audit.$SHLIBEXT", VFS) ++SMB_MODULE(vfs_glusterfs, \$(VFS_GLUSTERFS_OBJ), "bin/glusterfs.$SHLIBEXT", VFS) + + SMB_SUBSYSTEM(VFS,smbd/vfs.o) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +new file mode 100644 +index 0000000..4beac1d +--- /dev/null ++++ b/source3/modules/vfs_glusterfs.c +@@ -0,0 +1,1461 @@ ++/* ++ Unix SMB/CIFS implementation. ++ ++ Wrap GlusterFS GFAPI calls in vfs functions. ++ ++ Copyright (c) 2013 Anand Avati ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include "includes.h" ++#include "smbd/smbd.h" ++#include ++#include "api/glfs.h" ++ ++#define DEFAULT_VOLFILE_SERVER "localhost" ++ ++/* ++ TODO ++ ---- ++ Short term: ++ - AIO support ++ - sendfile/recvfile support ++*/ ++ ++/* Helpers to provide 'integer' fds */ ++ ++/* This is global. gfapi's FD operations do not ++ require filesystem context. ++*/ ++static glfs_fd_t **glfd_fd; ++static int glfd_fd_size; ++static int glfd_fd_used; ++static int glfd_fd_store(glfs_fd_t *glfd) ++{ ++ int i; ++ void *tmp; ++ ++ if (glfd_fd_size == glfd_fd_used) { ++ if (glfd_fd_size >= INT_MAX - 1) { ++ errno = ENOMEM; ++ return -1; ++ } ++ ++ tmp = talloc_realloc(glfd_fd, glfd_fd, glfs_fd_t *, ++ glfd_fd_size + 1); ++ if (tmp == NULL) { ++ errno = ENOMEM; ++ return -1; ++ } ++ ++ glfd_fd = tmp; ++ glfd_fd[glfd_fd_size] = 0; ++ glfd_fd_size++; ++ } ++ ++ for (i = 0; i < glfd_fd_size; i++) { ++ if (!glfd_fd[i]) { ++ break; ++ } ++ } ++ glfd_fd_used++; ++ glfd_fd[i] = glfd; ++ return i; ++} ++ ++static glfs_fd_t *glfd_fd_get(int i) ++{ ++ if (i < 0 || i >= glfd_fd_size) { ++ return NULL; ++ } ++ return glfd_fd[i]; ++} ++ ++static glfs_fd_t *glfd_fd_clear(int i) ++{ ++ glfs_fd_t *glfd = NULL; ++ ++ if (i < 0 || i >= glfd_fd_size) { ++ return NULL; ++ } ++ ++ glfd = glfd_fd[i]; ++ glfd_fd[i] = 0; ++ glfd_fd_used--; ++ return glfd; ++} ++ ++/* Helper to convert stat to stat_ex */ ++ ++static void smb_stat_ex_from_stat(struct stat_ex *dst, const struct stat *src) ++{ ++ ZERO_STRUCTP(dst); ++ ++ dst->st_ex_dev = src->st_dev; ++ dst->st_ex_ino = src->st_ino; ++ dst->st_ex_mode = src->st_mode; ++ dst->st_ex_nlink = src->st_nlink; ++ dst->st_ex_uid = src->st_uid; ++ dst->st_ex_gid = src->st_gid; ++ dst->st_ex_rdev = src->st_rdev; ++ dst->st_ex_size = src->st_size; ++ dst->st_ex_atime.tv_sec = src->st_atime; ++#ifdef STAT_HAVE_NSEC ++ dst->st_ex_atime.tv_nsec = src->st_atime_nsec; ++#endif ++ dst->st_ex_mtime.tv_sec = src->st_mtime; ++#ifdef STAT_HAVE_NSEC ++ dst->st_ex_mtime.tv_nsec = src->st_mtime_nsec; ++#endif ++ dst->st_ex_ctime.tv_sec = src->st_ctime; ++#ifdef STAT_HAVE_NSEC ++ dst->st_ex_ctime.tv_nsec = src->st_ctime_nsec; ++#endif ++ dst->st_ex_btime.tv_sec = src->st_mtime; ++#ifdef STAT_HAVE_NSEC ++ dst->st_ex_btime.tv_nsec = src->st_mtime_nsec; ++#endif ++ dst->st_ex_blksize = src->st_blksize; ++ dst->st_ex_blocks = src->st_blocks; ++} ++ ++/* pre-opened glfs_t */ ++ ++static struct glfs_preopened { ++ char *volume; ++ glfs_t *fs; ++ int ref; ++ struct glfs_preopened *next, *prev; ++} *glfs_preopened; ++ ++ ++int glfs_set_preopened(const char *volume, glfs_t *fs) ++{ ++ struct glfs_preopened *entry = NULL; ++ ++ entry = talloc_zero(NULL, struct glfs_preopened); ++ if (!entry) { ++ errno = ENOMEM; ++ return -1; ++ } ++ ++ entry->volume = talloc_strdup(entry, volume); ++ if (!entry->volume) { ++ talloc_free(entry); ++ errno = ENOMEM; ++ return -1; ++ } ++ ++ entry->fs = fs; ++ entry->ref = 1; ++ ++ DLIST_ADD(glfs_preopened, entry); ++ ++ return 0; ++} ++ ++static glfs_t *glfs_find_preopened(const char *volume) ++{ ++ struct glfs_preopened *entry = NULL; ++ ++ for (entry = glfs_preopened; entry; entry = entry->next) { ++ if (strcmp(entry->volume, volume) == 0) { ++ entry->ref++; ++ return entry->fs; ++ } ++ } ++ ++ return NULL; ++} ++ ++static void glfs_clear_preopened(glfs_t *fs) ++{ ++ int i; ++ struct glfs_preopened *entry = NULL; ++ ++ for (entry = glfs_preopened; entry; entry = entry->next) { ++ if (entry->fs == fs) { ++ if (--entry->ref) ++ return; ++ ++ DLIST_REMOVE(glfs_preopened, entry); ++ ++ glfs_fini(entry->fs); ++ talloc_free(entry); ++ } ++ } ++} ++ ++/* Disk Operations */ ++ ++static int vfs_gluster_connect(struct vfs_handle_struct *handle, ++ const char *service, const char *user) ++{ ++ const char *volfile_server; ++ const char *volume; ++ const char *logfile; ++ int loglevel; ++ glfs_t *fs; ++ int ret; ++ ++ logfile = lp_parm_const_string(SNUM(handle->conn), "glusterfs", ++ "logfile", NULL); ++ ++ loglevel = lp_parm_int(SNUM(handle->conn), "glusterfs", "loglevel", -1); ++ ++ volfile_server = lp_parm_const_string(SNUM(handle->conn), "glusterfs", ++ "volfile_server", NULL); ++ if (volfile_server == NULL) { ++ volfile_server = DEFAULT_VOLFILE_SERVER; ++ } ++ ++ volume = lp_parm_const_string(SNUM(handle->conn), "glusterfs", "volume", ++ NULL); ++ if (volume == NULL) { ++ volume = service; ++ } ++ ++ fs = glfs_find_preopened(volume); ++ if (fs) { ++ goto found; ++ } ++ ++ fs = glfs_new(volume); ++ if (fs == NULL) { ++ return -1; ++ } ++ ++ ret = glfs_set_volfile_server(fs, "tcp", volfile_server, 0); ++ if (ret < 0) { ++ DEBUG(0, ("Failed to set volfile_server %s\n", volfile_server)); ++ glfs_fini(fs); ++ return -1; ++ } ++ ++ ret = glfs_set_xlator_option(fs, "*-md-cache", "cache-posix-acl", ++ "true"); ++ if (ret < 0) { ++ DEBUG(0, ("%s: Failed to set xlator options\n", volume)); ++ glfs_fini(fs); ++ return -1; ++ } ++ ++ ret = glfs_set_logging(fs, logfile, loglevel); ++ if (ret < 0) { ++ DEBUG(0, ("%s: Failed to set logfile %s loglevel %d\n", ++ volume, logfile, loglevel)); ++ glfs_fini(fs); ++ return -1; ++ } ++ ++ ret = glfs_init(fs); ++ if (ret < 0) { ++ DEBUG(0, ("%s: Failed to initialize volume (%s)\n", ++ volume, strerror(errno))); ++ glfs_fini(fs); ++ return -1; ++ } ++ ++ ret = glfs_set_preopened(volume, fs); ++ if (ret < 0) { ++ DEBUG(0, ("%s: Failed to register volume (%s)\n", ++ volume, strerror(errno))); ++ glfs_fini(fs); ++ return -1; ++ } ++found: ++ DEBUG(0, ("%s: Initialized volume from server %s\n", ++ volume, volfile_server)); ++ handle->data = fs; ++ return 0; ++} ++ ++static void vfs_gluster_disconnect(struct vfs_handle_struct *handle) ++{ ++ glfs_t *fs = NULL; ++ ++ fs = handle->data; ++ ++ glfs_clear_preopened(fs); ++} ++ ++static uint64_t ++vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path, ++ bool small_query, uint64_t *bsize_p, uint64_t *dfree_p, ++ uint64_t *dsize_p) ++{ ++ struct statvfs statvfs = { 0, }; ++ uint64_t dfree = 0; ++ int ret; ++ ++ ret = glfs_statvfs(handle->data, path, &statvfs); ++ if (ret < 0) { ++ DEBUG(0, ("glfs_statvfs(%s) failed: %s\n", ++ path, strerror(errno))); ++ return -1; ++ } ++ ++ dfree = statvfs.f_bsize * statvfs.f_bavail; ++ ++ if (bsize_p) { ++ *bsize_p = statvfs.f_bsize; ++ } ++ if (dfree_p) { ++ *dfree_p = dfree; ++ } ++ if (dsize_p) { ++ *dsize_p = statvfs.f_bsize * statvfs.f_blocks; ++ } ++ ++ return dfree; ++} ++ ++static int ++vfs_gluster_get_quota(struct vfs_handle_struct *handle, ++ enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt) ++{ ++ errno = ENOSYS; ++ return -1; ++} ++ ++static int ++vfs_gluster_set_quota(struct vfs_handle_struct *handle, ++ enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt) ++{ ++ errno = ENOSYS; ++ return -1; ++} ++ ++static int vfs_gluster_statvfs(struct vfs_handle_struct *handle, ++ const char *path, ++ struct vfs_statvfs_struct *vfs_statvfs) ++{ ++ struct statvfs statvfs = { 0, }; ++ int ret; ++ ++ ret = glfs_statvfs(handle->data, path, &statvfs); ++ if (ret < 0) { ++ DEBUG(0, ("glfs_statvfs(%s) failed: %s\n", ++ path, strerror(errno))); ++ return -1; ++ } ++ ++ ZERO_STRUCTP(vfs_statvfs); ++ ++ vfs_statvfs->OptimalTransferSize = statvfs.f_frsize; ++ vfs_statvfs->BlockSize = statvfs.f_bsize; ++ vfs_statvfs->TotalBlocks = statvfs.f_blocks; ++ vfs_statvfs->BlocksAvail = statvfs.f_bfree; ++ vfs_statvfs->UserBlocksAvail = statvfs.f_bavail; ++ vfs_statvfs->TotalFileNodes = statvfs.f_files; ++ vfs_statvfs->FreeFileNodes = statvfs.f_ffree; ++ vfs_statvfs->FsIdentifier = statvfs.f_fsid; ++ vfs_statvfs->FsCapabilities = ++ FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES; ++ ++ return ret; ++} ++ ++static uint32_t vfs_gluster_fs_capabilities(struct vfs_handle_struct *handle, ++ enum timestamp_set_resolution *p_ts_res) ++{ ++ uint32_t caps = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES; ++ ++#ifdef STAT_HAVE_NSEC ++ *p_ts_res = TIMESTAMP_SET_NT_OR_BETTER; ++#endif ++ ++ return caps; ++} ++ ++static DIR *vfs_gluster_opendir(struct vfs_handle_struct *handle, ++ const char *path, const char *mask, ++ uint32 attributes) ++{ ++ glfs_fd_t *fd; ++ ++ fd = glfs_opendir(handle->data, path); ++ if (fd == NULL) { ++ DEBUG(0, ("glfs_opendir(%s) failed: %s\n", ++ path, strerror(errno))); ++ } ++ ++ return (DIR *) fd; ++} ++ ++static DIR *vfs_gluster_fdopendir(struct vfs_handle_struct *handle, ++ files_struct *fsp, const char *mask, ++ uint32 attributes) ++{ ++ return (DIR *) glfd_fd_get(fsp->fh->fd); ++} ++ ++static int vfs_gluster_closedir(struct vfs_handle_struct *handle, DIR *dirp) ++{ ++ return glfs_closedir((void *)dirp); ++} ++ ++static SMB_STRUCT_DIRENT *vfs_gluster_readdir(struct vfs_handle_struct *handle, ++ SMB_STRUCT_DIR *dirp, ++ SMB_STRUCT_STAT *sbuf) ++{ ++ char direntbuf[512]; ++ int ret; ++ struct stat stat; ++ struct dirent *dirent = 0; ++ static SMB_STRUCT_DIRENT result; ++ ++ if (sbuf != NULL) { ++ ret = glfs_readdirplus_r((void *)dirp, &stat, (void *)direntbuf, ++ &dirent); ++ } else { ++ ret = glfs_readdir_r((void *)dirp, (void *)direntbuf, &dirent); ++ } ++ ++ if (ret < 0 || (dirent == NULL)) { ++ return NULL; ++ } ++ ++ if (sbuf != NULL) { ++ smb_stat_ex_from_stat(sbuf, &stat); ++ } ++ ++ result.d_ino = dirent->d_ino; ++ result.d_off = dirent->d_off; ++ result.d_reclen = dirent->d_reclen; ++ result.d_type = dirent->d_type; ++ strncpy(result.d_name, dirent->d_name, 256); ++ ++ return &result; ++} ++ ++static long vfs_gluster_telldir(struct vfs_handle_struct *handle, DIR *dirp) ++{ ++ return glfs_telldir((void *)dirp); ++} ++ ++static void vfs_gluster_seekdir(struct vfs_handle_struct *handle, DIR *dirp, ++ long offset) ++{ ++ glfs_seekdir((void *)dirp, offset); ++} ++ ++static void vfs_gluster_rewinddir(struct vfs_handle_struct *handle, ++ DIR *dirp) ++{ ++ glfs_seekdir((void *)dirp, 0); ++} ++ ++static void vfs_gluster_init_search_op(struct vfs_handle_struct *handle, ++ DIR *dirp) ++{ ++ return; ++} ++ ++static int vfs_gluster_mkdir(struct vfs_handle_struct *handle, const char *path, ++ mode_t mode) ++{ ++ return glfs_mkdir(handle->data, path, mode); ++} ++ ++static int vfs_gluster_rmdir(struct vfs_handle_struct *handle, const char *path) ++{ ++ return glfs_rmdir(handle->data, path); ++} ++ ++static int vfs_gluster_open(struct vfs_handle_struct *handle, ++ struct smb_filename *smb_fname, files_struct *fsp, ++ int flags, mode_t mode) ++{ ++ glfs_fd_t *glfd; ++ ++ if (flags & O_DIRECTORY) { ++ glfd = glfs_opendir(handle->data, smb_fname->base_name); ++ } else if (flags & O_CREAT) { ++ glfd = glfs_creat(handle->data, smb_fname->base_name, flags, ++ mode); ++ } else { ++ glfd = glfs_open(handle->data, smb_fname->base_name, flags); ++ } ++ ++ if (glfd == NULL) { ++ DEBUG(0, ("glfs_{open[dir],creat}(%s) failed: %s\n", ++ smb_fname->base_name, strerror(errno))); ++ return -1; ++ } ++ ++ return glfd_fd_store(glfd); ++} ++ ++static int vfs_gluster_close(struct vfs_handle_struct *handle, ++ files_struct *fsp) ++{ ++ return glfs_close(glfd_fd_clear(fsp->fh->fd)); ++} ++ ++static ssize_t vfs_gluster_read(struct vfs_handle_struct *handle, ++ files_struct *fsp, void *data, size_t n) ++{ ++ return glfs_read(glfd_fd_get(fsp->fh->fd), data, n, 0); ++} ++ ++static ssize_t vfs_gluster_pread(struct vfs_handle_struct *handle, ++ files_struct *fsp, void *data, size_t n, ++ off_t offset) ++{ ++ return glfs_pread(glfd_fd_get(fsp->fh->fd), data, n, offset, 0); ++} ++ ++static ssize_t vfs_gluster_write(struct vfs_handle_struct *handle, ++ files_struct *fsp, const void *data, size_t n) ++{ ++ return glfs_write(glfd_fd_get(fsp->fh->fd), data, n, 0); ++} ++ ++static ssize_t vfs_gluster_pwrite(struct vfs_handle_struct *handle, ++ files_struct *fsp, const void *data, size_t n, ++ off_t offset) ++{ ++ return glfs_pwrite(glfd_fd_get(fsp->fh->fd), data, n, offset, 0); ++} ++ ++static off_t vfs_gluster_lseek(struct vfs_handle_struct *handle, ++ files_struct *fsp, off_t offset, int whence) ++{ ++ return glfs_lseek(glfd_fd_get(fsp->fh->fd), offset, whence); ++} ++ ++static ssize_t vfs_gluster_sendfile(struct vfs_handle_struct *handle, int tofd, ++ files_struct *fromfsp, const DATA_BLOB *hdr, ++ off_t offset, size_t n) ++{ ++ errno = ENOTSUP; ++ return -1; ++} ++ ++static ssize_t vfs_gluster_recvfile(struct vfs_handle_struct *handle, ++ int fromfd, files_struct *tofsp, ++ off_t offset, size_t n) ++{ ++ errno = ENOTSUP; ++ return -1; ++} ++ ++static int vfs_gluster_rename(struct vfs_handle_struct *handle, ++ const struct smb_filename *smb_fname_src, ++ const struct smb_filename *smb_fname_dst) ++{ ++ return glfs_rename(handle->data, smb_fname_src->base_name, ++ smb_fname_dst->base_name); ++} ++ ++static int vfs_gluster_fsync(struct vfs_handle_struct *handle, ++ files_struct *fsp) ++{ ++ return glfs_fsync(glfd_fd_get(fsp->fh->fd)); ++} ++ ++static int vfs_gluster_stat(struct vfs_handle_struct *handle, ++ struct smb_filename *smb_fname) ++{ ++ struct stat st; ++ int ret; ++ ++ ret = glfs_stat(handle->data, smb_fname->base_name, &st); ++ if (ret == 0) { ++ smb_stat_ex_from_stat(&smb_fname->st, &st); ++ } ++ if (ret < 0 && errno != ENOENT) { ++ DEBUG(0, ("glfs_stat(%s) failed: %s\n", ++ smb_fname->base_name, strerror(errno))); ++ } ++ return ret; ++} ++ ++static int vfs_gluster_fstat(struct vfs_handle_struct *handle, ++ files_struct *fsp, SMB_STRUCT_STAT *sbuf) ++{ ++ struct stat st; ++ int ret; ++ ++ ret = glfs_fstat(glfd_fd_get(fsp->fh->fd), &st); ++ if (ret == 0) { ++ smb_stat_ex_from_stat(sbuf, &st); ++ } ++ if (ret < 0) { ++ DEBUG(0, ("glfs_ftat(%d) failed: %s\n", ++ fsp->fh->fd, strerror(errno))); ++ } ++ return ret; ++} ++ ++static int vfs_gluster_lstat(struct vfs_handle_struct *handle, ++ struct smb_filename *smb_fname) ++{ ++ struct stat st; ++ int ret; ++ ++ ret = glfs_lstat(handle->data, smb_fname->base_name, &st); ++ if (ret == 0) { ++ smb_stat_ex_from_stat(&smb_fname->st, &st); ++ } ++ if (ret < 0 && errno != ENOENT) { ++ DEBUG(0, ("glfs_lstat(%s) failed: %s\n", ++ smb_fname->base_name, strerror(errno))); ++ } ++ ++ return ret; ++} ++ ++static uint64_t vfs_gluster_get_alloc_size(struct vfs_handle_struct *handle, ++ files_struct *fsp, ++ const SMB_STRUCT_STAT *sbuf) ++{ ++ return sbuf->st_ex_blocks * 512; ++} ++ ++static int vfs_gluster_unlink(struct vfs_handle_struct *handle, ++ const struct smb_filename *smb_fname) ++{ ++ return glfs_unlink(handle->data, smb_fname->base_name); ++} ++ ++static int vfs_gluster_chmod(struct vfs_handle_struct *handle, ++ const char *path, mode_t mode) ++{ ++ return glfs_chmod(handle->data, path, mode); ++} ++ ++static int vfs_gluster_fchmod(struct vfs_handle_struct *handle, ++ files_struct *fsp, mode_t mode) ++{ ++ return glfs_fchmod(glfd_fd_get(fsp->fh->fd), mode); ++} ++ ++static int vfs_gluster_chown(struct vfs_handle_struct *handle, ++ const char *path, uid_t uid, gid_t gid) ++{ ++ return glfs_chown(handle->data, path, uid, gid); ++} ++ ++static int vfs_gluster_fchown(struct vfs_handle_struct *handle, ++ files_struct *fsp, uid_t uid, gid_t gid) ++{ ++ return glfs_fchown(glfd_fd_get(fsp->fh->fd), uid, gid); ++} ++ ++static int vfs_gluster_lchown(struct vfs_handle_struct *handle, ++ const char *path, uid_t uid, gid_t gid) ++{ ++ return glfs_lchown(handle->data, path, uid, gid); ++} ++ ++static int vfs_gluster_chdir(struct vfs_handle_struct *handle, const char *path) ++{ ++ return glfs_chdir(handle->data, path); ++} ++ ++static char *vfs_gluster_getwd(struct vfs_handle_struct *handle, char *path) ++{ ++ return glfs_getcwd(handle->data, path, PATH_MAX); ++} ++ ++static int vfs_gluster_ntimes(struct vfs_handle_struct *handle, ++ const struct smb_filename *smb_fname, ++ struct smb_file_time *ft) ++{ ++ struct timespec times[2]; ++ ++ times[0].tv_sec = ft->atime.tv_sec; ++ times[0].tv_nsec = ft->atime.tv_nsec; ++ times[1].tv_sec = ft->mtime.tv_sec; ++ times[1].tv_nsec = ft->mtime.tv_nsec; ++ ++ return glfs_utimens(handle->data, smb_fname->base_name, times); ++} ++ ++static int vfs_gluster_ftruncate(struct vfs_handle_struct *handle, ++ files_struct *fsp, off_t offset) ++{ ++ return glfs_ftruncate(glfd_fd_get(fsp->fh->fd), offset); ++} ++ ++static int vfs_gluster_fallocate(struct vfs_handle_struct *handle, ++ struct files_struct *fsp, ++ enum vfs_fallocate_mode mode, ++ off_t offset, off_t len) ++{ ++ errno = ENOTSUP; ++ return -1; ++} ++ ++static char *vfs_gluster_realpath(struct vfs_handle_struct *handle, ++ const char *path) ++{ ++ return glfs_realpath(handle->data, path, 0); ++} ++ ++static bool vfs_gluster_lock(struct vfs_handle_struct *handle, ++ files_struct *fsp, int op, off_t offset, ++ off_t count, int type) ++{ ++ struct flock flock = { 0, }; ++ int ret; ++ ++ flock.l_type = type; ++ flock.l_whence = SEEK_SET; ++ flock.l_start = offset; ++ flock.l_len = count; ++ flock.l_pid = 0; ++ ++ ret = glfs_posix_lock(glfd_fd_get(fsp->fh->fd), op, &flock); ++ ++ if (op == F_GETLK) { ++ /* lock query, true if someone else has locked */ ++ if ((ret != -1) && ++ (flock.l_type != F_UNLCK) && ++ (flock.l_pid != 0) && (flock.l_pid != getpid())) ++ return true; ++ /* not me */ ++ return false; ++ } ++ ++ if (ret == -1) { ++ return false; ++ } ++ ++ return true; ++} ++ ++static int vfs_gluster_kernel_flock(struct vfs_handle_struct *handle, ++ files_struct *fsp, uint32 share_mode, ++ uint32_t access_mask) ++{ ++ return 0; ++} ++ ++static int vfs_gluster_linux_setlease(struct vfs_handle_struct *handle, ++ files_struct *fsp, int leasetype) ++{ ++ errno = ENOSYS; ++ return -1; ++} ++ ++static bool vfs_gluster_getlock(struct vfs_handle_struct *handle, ++ files_struct *fsp, off_t *poffset, ++ off_t *pcount, int *ptype, pid_t *ppid) ++{ ++ struct flock flock = { 0, }; ++ int ret; ++ ++ flock.l_type = *ptype; ++ flock.l_whence = SEEK_SET; ++ flock.l_start = *poffset; ++ flock.l_len = *pcount; ++ flock.l_pid = 0; ++ ++ ret = glfs_posix_lock(glfd_fd_get(fsp->fh->fd), F_GETLK, &flock); ++ ++ if (ret == -1) { ++ return false; ++ } ++ ++ *ptype = flock.l_type; ++ *poffset = flock.l_start; ++ *pcount = flock.l_len; ++ *ppid = flock.l_pid; ++ ++ return true; ++} ++ ++static int vfs_gluster_symlink(struct vfs_handle_struct *handle, ++ const char *oldpath, const char *newpath) ++{ ++ return glfs_symlink(handle->data, oldpath, newpath); ++} ++ ++static int vfs_gluster_readlink(struct vfs_handle_struct *handle, ++ const char *path, char *buf, size_t bufsiz) ++{ ++ return glfs_readlink(handle->data, path, buf, bufsiz); ++} ++ ++static int vfs_gluster_link(struct vfs_handle_struct *handle, ++ const char *oldpath, const char *newpath) ++{ ++ return glfs_link(handle->data, oldpath, newpath); ++} ++ ++static int vfs_gluster_mknod(struct vfs_handle_struct *handle, const char *path, ++ mode_t mode, SMB_DEV_T dev) ++{ ++ return glfs_mknod(handle->data, path, mode, dev); ++} ++ ++static NTSTATUS vfs_gluster_notify_watch(struct vfs_handle_struct *vfs_handle, ++ struct sys_notify_context *ctx, ++ struct notify_entry *e, ++ void (*callback) (struct sys_notify_context *ctx, ++ void *private_data, ++ struct notify_event *ev), ++ void *private_data, void *handle) ++{ ++ return NT_STATUS_NOT_IMPLEMENTED; ++} ++ ++static int vfs_gluster_chflags(struct vfs_handle_struct *handle, ++ const char *path, unsigned int flags) ++{ ++ errno = ENOSYS; ++ return -1; ++} ++ ++static int vfs_gluster_get_real_filename(struct vfs_handle_struct *handle, ++ const char *path, const char *name, ++ TALLOC_CTX *mem_ctx, char **found_name) ++{ ++ int ret; ++ char key_buf[NAME_MAX + 64]; ++ char val_buf[NAME_MAX + 1]; ++ ++ if (strlen(name) >= NAME_MAX) { ++ errno = ENAMETOOLONG; ++ return -1; ++ } ++ ++ snprintf(key_buf, NAME_MAX + 64, ++ "user.glusterfs.get_real_filename:%s", name); ++ ++ ret = glfs_getxattr(handle->data, path, key_buf, val_buf, NAME_MAX + 1); ++ if (ret == -1 && errno == ENODATA) { ++ errno = EOPNOTSUPP; ++ return -1; ++ } ++ ++ *found_name = talloc_strdup(mem_ctx, val_buf); ++ if (found_name[0] == NULL) { ++ errno = ENOMEM; ++ return -1; ++ } ++ return 0; ++} ++ ++static const char *vfs_gluster_connectpath(struct vfs_handle_struct *handle, ++ const char *filename) ++{ ++ return handle->conn->connectpath; ++} ++ ++/* EA Operations */ ++ ++static ssize_t vfs_gluster_getxattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name, ++ void *value, size_t size) ++{ ++ return glfs_getxattr(handle->data, path, name, value, size); ++} ++ ++static ssize_t vfs_gluster_lgetxattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name, ++ void *value, size_t size) ++{ ++ return glfs_lgetxattr(handle->data, path, name, value, size); ++} ++ ++static ssize_t vfs_gluster_fgetxattr(struct vfs_handle_struct *handle, ++ files_struct *fsp, const char *name, ++ void *value, size_t size) ++{ ++ return glfs_fgetxattr(glfd_fd_get(fsp->fh->fd), name, value, size); ++} ++ ++static ssize_t vfs_gluster_listxattr(struct vfs_handle_struct *handle, ++ const char *path, char *list, size_t size) ++{ ++ return glfs_listxattr(handle->data, path, list, size); ++} ++ ++static ssize_t vfs_gluster_llistxattr(struct vfs_handle_struct *handle, ++ const char *path, char *list, size_t size) ++{ ++ return glfs_llistxattr(handle->data, path, list, size); ++} ++ ++static ssize_t vfs_gluster_flistxattr(struct vfs_handle_struct *handle, ++ files_struct *fsp, char *list, ++ size_t size) ++{ ++ return glfs_flistxattr(glfd_fd_get(fsp->fh->fd), list, size); ++} ++ ++static int vfs_gluster_removexattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name) ++{ ++ return glfs_removexattr(handle->data, path, name); ++} ++ ++static int vfs_gluster_lremovexattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name) ++{ ++ return glfs_lremovexattr(handle->data, path, name); ++} ++ ++static int vfs_gluster_fremovexattr(struct vfs_handle_struct *handle, ++ files_struct *fsp, const char *name) ++{ ++ return glfs_fremovexattr(glfd_fd_get(fsp->fh->fd), name); ++} ++ ++static int vfs_gluster_setxattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name, ++ const void *value, size_t size, int flags) ++{ ++ return glfs_setxattr(handle->data, path, name, value, size, flags); ++} ++ ++static int vfs_gluster_lsetxattr(struct vfs_handle_struct *handle, ++ const char *path, const char *name, ++ const void *value, size_t size, int flags) ++{ ++ return glfs_lsetxattr(handle->data, path, name, value, size, flags); ++} ++ ++static int vfs_gluster_fsetxattr(struct vfs_handle_struct *handle, ++ files_struct *fsp, const char *name, ++ const void *value, size_t size, int flags) ++{ ++ return glfs_fsetxattr(glfd_fd_get(fsp->fh->fd), name, value, size, ++ flags); ++} ++ ++/* AIO Operations */ ++ ++static bool vfs_gluster_aio_force(struct vfs_handle_struct *handle, ++ files_struct *fsp) ++{ ++ return false; ++} ++ ++/* Offline Operations */ ++ ++static bool vfs_gluster_is_offline(struct vfs_handle_struct *handle, ++ const struct smb_filename *fname, ++ SMB_STRUCT_STAT *sbuf) ++{ ++ return false; ++} ++ ++static int vfs_gluster_set_offline(struct vfs_handle_struct *handle, ++ const struct smb_filename *fname) ++{ ++ errno = ENOTSUP; ++ return -1; ++} ++ ++/* Posix ACL Operations */ ++ ++#define GLUSTER_ACL_VERSION 2 ++#define GLUSTER_ACL_READ 0x04 ++#define GLUSTER_ACL_WRITE 0x02 ++#define GLUSTER_ACL_EXECUTE 0x01 ++ ++#define GLUSTER_ACL_UNDEFINED_TAG 0x00 ++#define GLUSTER_ACL_USER_OBJ 0x01 ++#define GLUSTER_ACL_USER 0x02 ++#define GLUSTER_ACL_GROUP_OBJ 0x04 ++#define GLUSTER_ACL_GROUP 0x08 ++#define GLUSTER_ACL_MASK 0x10 ++#define GLUSTER_ACL_OTHER 0x20 ++ ++#define GLUSTER_ACL_UNDEFINED_ID (-1) ++ ++struct gluster_ace { ++ uint16_t tag; ++ uint16_t perm; ++ uint32_t id; ++}; ++ ++struct gluster_acl_header { ++ uint32_t version; ++ struct gluster_ace entries[]; ++}; ++ ++static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) ++{ ++ int count; ++ size_t size; ++ struct gluster_ace *ace; ++ struct smb_acl_entry *smb_ace; ++ struct gluster_acl_header *hdr; ++ struct smb_acl_t *result; ++ int i; ++ uint16_t tag; ++ uint16_t perm; ++ uint32_t id; ++ ++ size = xattr_size; ++ ++ if (size < sizeof(*hdr)) { ++ /* ACL should be at least as big as the header */ ++ errno = EINVAL; ++ return NULL; ++ } ++ ++ size -= sizeof(*hdr); ++ ++ if (size % sizeof(*ace)) { ++ /* Size of entries must strictly be a multiple of ++ size of an ACE ++ */ ++ errno = EINVAL; ++ return NULL; ++ } ++ ++ count = size / sizeof(*ace); ++ ++ hdr = (void *)buf; ++ ++ if (ntohl(hdr->version) != GLUSTER_ACL_VERSION) { ++ DEBUG(0, ("Unknown gluster ACL version: %d\n", ++ ntohl(hdr->version))); ++ return NULL; ++ } ++ ++ result = SMB_MALLOC(sizeof(struct smb_acl_t) + (sizeof(struct smb_acl_entry) * count)); ++ if (!result) { ++ errno = ENOMEM; ++ return NULL; ++ } ++ ++ result->count = count; ++ ++ smb_ace = result->acl; ++ ace = hdr->entries; ++ ++ for (i = 0; i < count; i++) { ++ tag = ntohs(ace->tag); ++ ++ switch(tag) { ++ case GLUSTER_ACL_USER: ++ smb_ace->a_type = SMB_ACL_USER; ++ break; ++ case GLUSTER_ACL_USER_OBJ: ++ smb_ace->a_type = SMB_ACL_USER_OBJ; ++ break; ++ case GLUSTER_ACL_GROUP: ++ smb_ace->a_type = SMB_ACL_GROUP; ++ break; ++ case GLUSTER_ACL_GROUP_OBJ: ++ smb_ace->a_type = SMB_ACL_GROUP_OBJ; ++ break; ++ case GLUSTER_ACL_OTHER: ++ smb_ace->a_type = SMB_ACL_OTHER; ++ break; ++ case GLUSTER_ACL_MASK: ++ smb_ace->a_type = SMB_ACL_MASK; ++ break; ++ default: ++ DEBUG(0, ("unknown tag type %d\n", (unsigned int) tag)); ++ return NULL; ++ } ++ ++ id = ntohl(ace->id); ++ ++ switch(smb_ace->a_type) { ++ case SMB_ACL_USER: ++ smb_ace->uid = id; ++ break; ++ case SMB_ACL_GROUP: ++ smb_ace->gid = id; ++ break; ++ default: ++ break; ++ } ++ ++ perm = ntohs(ace->perm); ++ ++ smb_ace->a_perm = 0; ++ smb_ace->a_perm |= ++ ((perm & GLUSTER_ACL_READ) ? SMB_ACL_READ : 0); ++ smb_ace->a_perm |= ++ ((perm & GLUSTER_ACL_WRITE) ? SMB_ACL_WRITE : 0); ++ smb_ace->a_perm |= ++ ((perm & GLUSTER_ACL_EXECUTE) ? SMB_ACL_EXECUTE : 0); ++ ++ ace++; ++ smb_ace++; ++ } ++ ++ return result; ++} ++ ++static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len) ++{ ++ ssize_t size; ++ struct gluster_ace *ace; ++ struct smb_acl_entry *smb_ace; ++ struct gluster_acl_header *hdr; ++ int i; ++ int count; ++ uint16_t tag; ++ uint16_t perm; ++ uint32_t id; ++ ++ count = theacl->count; ++ ++ size = sizeof(*hdr) + (count * sizeof(*ace)); ++ if (!buf) { ++ return size; ++ } ++ ++ if (len < size) { ++ errno = ERANGE; ++ return -1; ++ } ++ ++ hdr = (void *)buf; ++ ace = hdr->entries; ++ smb_ace = theacl->acl; ++ ++ hdr->version = htonl(GLUSTER_ACL_VERSION); ++ ++ for (i = 0; i < count; i++) { ++ switch(smb_ace->a_type) { ++ case SMB_ACL_USER: ++ tag = GLUSTER_ACL_USER; ++ break; ++ case SMB_ACL_USER_OBJ: ++ tag = GLUSTER_ACL_USER_OBJ; ++ break; ++ case SMB_ACL_GROUP: ++ tag = GLUSTER_ACL_GROUP; ++ break; ++ case SMB_ACL_GROUP_OBJ: ++ tag = GLUSTER_ACL_GROUP_OBJ; ++ break; ++ case SMB_ACL_OTHER: ++ tag = GLUSTER_ACL_OTHER; ++ break; ++ case SMB_ACL_MASK: ++ tag = GLUSTER_ACL_MASK; ++ break; ++ default: ++ DEBUG(0, ("Unknown tag value %d\n", ++ smb_ace->a_type)); ++ errno = EINVAL; ++ return -1; ++ } ++ ++ ace->tag = ntohs(tag); ++ ++ switch(smb_ace->a_type) { ++ case SMB_ACL_USER: ++ id = smb_ace->uid; ++ break; ++ case SMB_ACL_GROUP: ++ id = smb_ace->gid; ++ break; ++ default: ++ id = GLUSTER_ACL_UNDEFINED_ID; ++ break; ++ } ++ ++ ace->id = ntohl(id); ++ ++ ace->perm = 0; ++ ace->perm |= ++ ((smb_ace->a_perm & SMB_ACL_READ) ? GLUSTER_ACL_READ : 0); ++ ace->perm |= ++ ((smb_ace->a_perm & SMB_ACL_WRITE) ? GLUSTER_ACL_WRITE : 0); ++ ace->perm |= ++ ((smb_ace->a_perm & SMB_ACL_EXECUTE) ? GLUSTER_ACL_EXECUTE : 0); ++ ++ ace++; ++ smb_ace++; ++ } ++ ++ return size; ++} ++ ++ ++static SMB_ACL_T vfs_gluster_sys_acl_get_file(struct vfs_handle_struct *handle, ++ const char *path_p, ++ SMB_ACL_TYPE_T type) ++{ ++ struct smb_acl_t *result; ++ char *buf; ++ char *key; ++ ssize_t ret; ++ ++ switch (type) { ++ case SMB_ACL_TYPE_ACCESS: ++ key = "system.posix_acl_access"; ++ break; ++ case SMB_ACL_TYPE_DEFAULT: ++ key = "system.posix_acl_default"; ++ break; ++ default: ++ errno = EINVAL; ++ return NULL; ++ } ++ ++ ret = glfs_getxattr(handle->data, path_p, key, 0, 0); ++ if (ret <= 0) { ++ return NULL; ++ } ++ ++ buf = alloca(ret); ++ ret = glfs_getxattr(handle->data, path_p, key, buf, ret); ++ if (ret <= 0) { ++ return NULL; ++ } ++ ++ result = gluster_to_smb_acl(buf, ret); ++ ++ return result; ++} ++ ++static SMB_ACL_T vfs_gluster_sys_acl_get_fd(struct vfs_handle_struct *handle, ++ struct files_struct *fsp) ++{ ++ struct smb_acl_t *result; ++ int ret; ++ char *buf; ++ ++ ret = glfs_fgetxattr(glfd_fd_get(fsp->fh->fd), ++ "system.posix_acl_access", 0, 0); ++ if (ret <= 0) { ++ return NULL; ++ } ++ ++ buf = alloca(ret); ++ ret = glfs_fgetxattr(glfd_fd_get(fsp->fh->fd), ++ "system.posix_acl_access", buf, ret); ++ if (ret <= 0) { ++ return NULL; ++ } ++ ++ result = gluster_to_smb_acl(buf, ret); ++ ++ return result; ++} ++ ++static int vfs_gluster_sys_acl_set_file(struct vfs_handle_struct *handle, ++ const char *name, ++ SMB_ACL_TYPE_T acltype, ++ SMB_ACL_T theacl) ++{ ++ int ret; ++ char *key; ++ char *buf; ++ ssize_t size; ++ ++ switch (acltype) { ++ case SMB_ACL_TYPE_ACCESS: ++ key = "system.posix_acl_access"; ++ break; ++ case SMB_ACL_TYPE_DEFAULT: ++ key = "system.posix_acl_default"; ++ break; ++ default: ++ errno = EINVAL; ++ return -1; ++ } ++ ++ size = smb_to_gluster_acl(theacl, 0, 0); ++ buf = alloca(size); ++ ++ size = smb_to_gluster_acl(theacl, buf, size); ++ if (size == -1) { ++ return -1; ++ } ++ ++ ret = glfs_setxattr(handle->data, name, key, buf, size, 0); ++ ++ return ret; ++} ++ ++static int vfs_gluster_sys_acl_set_fd(struct vfs_handle_struct *handle, ++ struct files_struct *fsp, ++ SMB_ACL_T theacl) ++{ ++ int ret; ++ char *buf; ++ ssize_t size; ++ ++ size = smb_to_gluster_acl(theacl, 0, 0); ++ buf = alloca(size); ++ ++ size = smb_to_gluster_acl(theacl, buf, size); ++ if (size == -1) { ++ return -1; ++ } ++ ++ ret = glfs_fsetxattr(glfd_fd_get(fsp->fh->fd), ++ "system.posix_acl_access", buf, size, 0); ++ return ret; ++} ++ ++static int vfs_gluster_sys_acl_delete_def_file(struct vfs_handle_struct *handle, ++ const char *path) ++{ ++ return glfs_removexattr(handle->data, path, "system.posix_acl_default"); ++} ++ ++static struct vfs_fn_pointers glusterfs_fns = { ++ ++ /* Disk Operations */ ++ ++ .connect_fn = vfs_gluster_connect, ++ .disconnect = vfs_gluster_disconnect, ++ .disk_free = vfs_gluster_disk_free, ++ .get_quota = vfs_gluster_get_quota, ++ .set_quota = vfs_gluster_set_quota, ++ .statvfs = vfs_gluster_statvfs, ++ .fs_capabilities = vfs_gluster_fs_capabilities, ++ ++ /* Directory Operations */ ++ ++ .opendir = vfs_gluster_opendir, ++ .fdopendir = vfs_gluster_fdopendir, ++ .readdir = vfs_gluster_readdir, ++ .seekdir = vfs_gluster_seekdir, ++ .telldir = vfs_gluster_telldir, ++ .rewind_dir = vfs_gluster_rewinddir, ++ .mkdir = vfs_gluster_mkdir, ++ .rmdir = vfs_gluster_rmdir, ++ .closedir = vfs_gluster_closedir, ++ .init_search_op = vfs_gluster_init_search_op, ++ ++ /* File Operations */ ++ ++ .open_fn = vfs_gluster_open, ++ .create_file = NULL, ++ .close_fn = vfs_gluster_close, ++ .vfs_read = vfs_gluster_read, ++ .pread = vfs_gluster_pread, ++ .write = vfs_gluster_write, ++ .pwrite = vfs_gluster_pwrite, ++ .lseek = vfs_gluster_lseek, ++ .sendfile = vfs_gluster_sendfile, ++ .recvfile = vfs_gluster_recvfile, ++ .rename = vfs_gluster_rename, ++ .fsync = vfs_gluster_fsync, ++ .stat = vfs_gluster_stat, ++ .fstat = vfs_gluster_fstat, ++ .lstat = vfs_gluster_lstat, ++ .get_alloc_size = vfs_gluster_get_alloc_size, ++ .unlink = vfs_gluster_unlink, ++ ++ .chmod = vfs_gluster_chmod, ++ .fchmod = vfs_gluster_fchmod, ++ .chown = vfs_gluster_chown, ++ .fchown = vfs_gluster_fchown, ++ .lchown = vfs_gluster_lchown, ++ .chdir = vfs_gluster_chdir, ++ .getwd = vfs_gluster_getwd, ++ .ntimes = vfs_gluster_ntimes, ++ .ftruncate = vfs_gluster_ftruncate, ++ .fallocate = vfs_gluster_fallocate, ++ .lock = vfs_gluster_lock, ++ .kernel_flock = vfs_gluster_kernel_flock, ++ .linux_setlease = vfs_gluster_linux_setlease, ++ .getlock = vfs_gluster_getlock, ++ .symlink = vfs_gluster_symlink, ++ .vfs_readlink = vfs_gluster_readlink, ++ .link = vfs_gluster_link, ++ .mknod = vfs_gluster_mknod, ++ .realpath = vfs_gluster_realpath, ++ .notify_watch = vfs_gluster_notify_watch, ++ .chflags = vfs_gluster_chflags, ++ .file_id_create = NULL, ++ .streaminfo = NULL, ++ .get_real_filename = vfs_gluster_get_real_filename, ++ .connectpath = vfs_gluster_connectpath, ++ ++ .brl_lock_windows = NULL, ++ .brl_unlock_windows = NULL, ++ .brl_cancel_windows = NULL, ++ .strict_lock = NULL, ++ .strict_unlock = NULL, ++ .translate_name = NULL, ++ ++ /* NT ACL Operations */ ++ .fget_nt_acl = NULL, ++ .get_nt_acl = NULL, ++ .fset_nt_acl = NULL, ++ ++ /* Posix ACL Operations */ ++ .chmod_acl = NULL, /* passthrough to default */ ++ .fchmod_acl = NULL, /* passthrough to default */ ++ ++ .sys_acl_get_entry = NULL, ++ .sys_acl_get_tag_type = NULL, ++ .sys_acl_get_permset = NULL, ++ .sys_acl_get_qualifier = NULL, ++ .sys_acl_get_file = vfs_gluster_sys_acl_get_file, ++ .sys_acl_get_fd = vfs_gluster_sys_acl_get_fd, ++ .sys_acl_clear_perms = NULL, ++ .sys_acl_add_perm = NULL, ++ .sys_acl_to_text = NULL, ++ .sys_acl_init = NULL, ++ .sys_acl_create_entry = NULL, ++ .sys_acl_set_tag_type = NULL, ++ .sys_acl_set_qualifier = NULL, ++ .sys_acl_set_permset = NULL, ++ .sys_acl_valid = NULL, ++ .sys_acl_set_file = vfs_gluster_sys_acl_set_file, ++ .sys_acl_set_fd = vfs_gluster_sys_acl_set_fd, ++ .sys_acl_delete_def_file = vfs_gluster_sys_acl_delete_def_file, ++ .sys_acl_get_perm = NULL, ++ .sys_acl_free_text = NULL, ++ .sys_acl_free_acl = NULL, ++ .sys_acl_free_qualifier = NULL, ++ ++ /* EA Operations */ ++ .getxattr = vfs_gluster_getxattr, ++ .lgetxattr = vfs_gluster_lgetxattr, ++ .fgetxattr = vfs_gluster_fgetxattr, ++ .listxattr = vfs_gluster_listxattr, ++ .llistxattr = vfs_gluster_llistxattr, ++ .flistxattr = vfs_gluster_flistxattr, ++ .removexattr = vfs_gluster_removexattr, ++ .lremovexattr = vfs_gluster_lremovexattr, ++ .fremovexattr = vfs_gluster_fremovexattr, ++ .setxattr = vfs_gluster_setxattr, ++ .lsetxattr = vfs_gluster_lsetxattr, ++ .fsetxattr = vfs_gluster_fsetxattr, ++ ++ /* AIO Operations */ ++ .aio_read = NULL, ++ .aio_write = NULL, ++ .aio_return_fn = NULL, ++ .aio_cancel = NULL, ++ .aio_error_fn = NULL, ++ .aio_fsync = NULL, ++ .aio_suspend = NULL, ++ .aio_force = vfs_gluster_aio_force, ++ ++ /* Offline Operations */ ++ .is_offline = vfs_gluster_is_offline, ++ .set_offline = vfs_gluster_set_offline, ++}; ++ ++NTSTATUS vfs_glusterfs_init(void); ++NTSTATUS vfs_glusterfs_init(void) ++{ ++ return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, ++ "glusterfs", &glusterfs_fns); ++} +diff --git a/source3/modules/wscript_build b/source3/modules/wscript_build +index ff7163f..31c93be 100644 +--- a/source3/modules/wscript_build ++++ b/source3/modules/wscript_build +@@ -50,6 +50,7 @@ VFS_SCANNEDONLY_SRC = 'vfs_scannedonly.c' + VFS_CROSSRENAME_SRC = 'vfs_crossrename.c' + VFS_LINUX_XFS_SGID_SRC = 'vfs_linux_xfs_sgid.c' + VFS_TIME_AUDIT_SRC = 'vfs_time_audit.c' ++VFS_GLUSTERFS_SRC = 'vfs_glusterfs.c' + + + bld.SAMBA3_SUBSYSTEM('NFS4_ACLS', +@@ -408,6 +409,14 @@ bld.SAMBA3_MODULE('vfs_time_audit', + internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_time_audit'), + enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_time_audit')) + ++bld.SAMBA3_MODULE('vfs_glusterfs', ++ subsystem='vfs', ++ source=VFS_GLUSTERFS_SRC, ++ deps='samba-util gfapi', ++ init_function='', ++ internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_glusterfs'), ++ enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_glusterfs'), ++ allow_undefined_symbols=False) + + + CHARSET_WEIRD_SRC = 'weird.c' +diff --git a/source3/wscript b/source3/wscript +index bcc6ce1..7e34db5 100644 +--- a/source3/wscript ++++ b/source3/wscript +@@ -60,6 +60,7 @@ def set_options(opt): + opt.SAMBA3_ADD_OPTION('automount') + opt.SAMBA3_ADD_OPTION('aio-support') + opt.SAMBA3_ADD_OPTION('profiling-data') ++ opt.SAMBA3_ADD_OPTION('glusterfs', with_name="enable", without_name="disable", default=True) + + opt.SAMBA3_ADD_OPTION('cluster-support') + +@@ -1701,6 +1702,24 @@ main() { + conf.undefine('CLUSTER_SUPPORT') + + ++ # ++ # Checking for GlusterFS ++ # ++ if Options.options.with_glusterfs: ++ conf.check_cfg(package='glusterfs-api', args='"glusterfs-api >= 4" --cflags --libs', ++ msg='Checking for glusterfs-api >= 4', uselib_store="GFAPI") ++ conf.CHECK_HEADERS('api/glfs.h', lib='gfapi') ++ conf.CHECK_LIB('gfapi', shlib=True) ++ ++ if conf.CONFIG_SET('HAVE_API_GLFS_H'): ++ conf.DEFINE('HAVE_GLUSTERFS', '1') ++ else: ++ conf.SET_TARGET_TYPE('gfapi', 'EMPTY') ++ conf.undefine('HAVE_GLUSTERFS') ++ else: ++ conf.SET_TARGET_TYPE('gfapi', 'EMPTY') ++ conf.undefine('HAVE_GLUSTERFS') ++ + + conf.CHECK_CODE('__attribute__((destructor)) static void cleanup(void) { }', + 'HAVE_FUNCTION_ATTRIBUTE_DESTRUCTOR', +@@ -1794,6 +1813,9 @@ main() { + if conf.CONFIG_SET('HAVE_GPFS'): + default_shared_modules.extend(TO_LIST('vfs_gpfs vfs_gpfs_hsm_notify')) + ++ if conf.CONFIG_SET('HAVE_GLUSTERFS'): ++ default_shared_modules.extend(TO_LIST('vfs_glusterfs')) ++ + explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',') + explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',') + +-- +1.9.3 + + +From e2b70ae1e9b072173de2b7d6140381b910d436b4 Mon Sep 17 00:00:00 2001 +From: Raghavendra Talur +Date: Thu, 20 Jun 2013 17:58:15 -0700 +Subject: [PATCH 2/9] PATCHSET13: vfs_glusterfs: New file creation fix. + +When a new document is created in explorer, a check for file_exist is made. +vfs_gluster_get_real_filename was returning 0 even when the file did not +exist. +--- + source3/modules/vfs_glusterfs.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 4beac1d..3752940 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -839,8 +839,10 @@ static int vfs_gluster_get_real_filename(struct vfs_handle_struct *handle, + "user.glusterfs.get_real_filename:%s", name); + + ret = glfs_getxattr(handle->data, path, key_buf, val_buf, NAME_MAX + 1); +- if (ret == -1 && errno == ENODATA) { +- errno = EOPNOTSUPP; ++ if (ret == -1) { ++ if (errno == ENODATA) { ++ errno = EOPNOTSUPP; ++ } + return -1; + } + +-- +1.9.3 + + +From e963ec42b17cdc7369e4b79387447bb3ddc99d2a Mon Sep 17 00:00:00 2001 +From: susant +Date: Wed, 7 Aug 2013 01:00:31 -0500 +Subject: [PATCH 3/9] PATCHSET13: vfs_glusterfs: Volume capacity reported to + Windows is incorrect + +VFS plugin was sending the actual size of the volume instead of the +total number of block units because of which windows was getting the +wrong volume capacity. + +Signed-off-by: susant +Reviewed-by: Anand Avati +--- + source3/modules/vfs_glusterfs.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 3752940..1502776 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -297,7 +297,6 @@ vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path, + uint64_t *dsize_p) + { + struct statvfs statvfs = { 0, }; +- uint64_t dfree = 0; + int ret; + + ret = glfs_statvfs(handle->data, path, &statvfs); +@@ -307,19 +306,17 @@ vfs_gluster_disk_free(struct vfs_handle_struct *handle, const char *path, + return -1; + } + +- dfree = statvfs.f_bsize * statvfs.f_bavail; +- + if (bsize_p) { +- *bsize_p = statvfs.f_bsize; ++ *bsize_p = (uint64_t)statvfs.f_bsize; /* Block size */ + } + if (dfree_p) { +- *dfree_p = dfree; ++ *dfree_p = (uint64_t)statvfs.f_bavail; /* Available Block units */ + } + if (dsize_p) { +- *dsize_p = statvfs.f_bsize * statvfs.f_blocks; ++ *dsize_p = (uint64_t)statvfs.f_blocks; /* Total Block units */ + } + +- return dfree; ++ return (uint64_t)statvfs.f_bavail; + } + + static int +-- +1.9.3 + + +From 1d41227866ede7ae14857105abd6b322e8e41525 Mon Sep 17 00:00:00 2001 +From: Anand Avati +Date: Mon, 12 Aug 2013 14:59:24 -0500 +Subject: [PATCH 4/9] PATCHSET13: vfs_glusterfs: Implement proper + mashalling/unmarshalling of ACLs + +Use the primitives available in Samba byteorder.h for implementing +proper (un)marshalling of ACL xattrs. + +Signed-off-by: Anand Avati +Reviewed-by: Raghavendra Talur +Reviewed-by: Jeremy Allison +Tested-by: "Jose A. Rivera" +--- + source3/modules/vfs_glusterfs.c | 154 +++++++++++++++++++++++++++++----------- + 1 file changed, 112 insertions(+), 42 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 1502776..1b81d06 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -963,13 +963,36 @@ static int vfs_gluster_set_offline(struct vfs_handle_struct *handle, + return -1; + } + +-/* Posix ACL Operations */ ++/* ++ Gluster ACL Format: ++ ++ Size = 4 (header) + N * 8 (entry) ++ ++ Offset Size Field (Little Endian) ++ ------------------------------------- ++ 0-3 4-byte Version ++ ++ 4-5 2-byte Entry-1 tag ++ 6-7 2-byte Entry-1 perm ++ 8-11 4-byte Entry-1 id ++ ++ 12-13 2-byte Entry-2 tag ++ 14-15 2-byte Entry-2 perm ++ 16-19 4-byte Entry-2 id + ++ ... ++ ++ */ ++ ++/* header version */ + #define GLUSTER_ACL_VERSION 2 ++ ++/* perm bits */ + #define GLUSTER_ACL_READ 0x04 + #define GLUSTER_ACL_WRITE 0x02 + #define GLUSTER_ACL_EXECUTE 0x01 + ++/* tag values */ + #define GLUSTER_ACL_UNDEFINED_TAG 0x00 + #define GLUSTER_ACL_USER_OBJ 0x01 + #define GLUSTER_ACL_USER 0x02 +@@ -980,57 +1003,48 @@ static int vfs_gluster_set_offline(struct vfs_handle_struct *handle, + + #define GLUSTER_ACL_UNDEFINED_ID (-1) + +-struct gluster_ace { +- uint16_t tag; +- uint16_t perm; +- uint32_t id; +-}; +- +-struct gluster_acl_header { +- uint32_t version; +- struct gluster_ace entries[]; +-}; ++#define GLUSTER_ACL_HEADER_SIZE 4 ++#define GLUSTER_ACL_ENTRY_SIZE 8 + + static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) + { + int count; + size_t size; +- struct gluster_ace *ace; + struct smb_acl_entry *smb_ace; +- struct gluster_acl_header *hdr; + struct smb_acl_t *result; + int i; ++ int offset; + uint16_t tag; + uint16_t perm; + uint32_t id; + + size = xattr_size; + +- if (size < sizeof(*hdr)) { +- /* ACL should be at least as big as the header */ ++ if (size < GLUSTER_ACL_HEADER_SIZE) { ++ /* ACL should be at least as big as the header (4 bytes) */ + errno = EINVAL; + return NULL; + } + +- size -= sizeof(*hdr); ++ size -= GLUSTER_ACL_HEADER_SIZE; /* size of header = 4 bytes */ + +- if (size % sizeof(*ace)) { ++ if (size % GLUSTER_ACL_ENTRY_SIZE) { + /* Size of entries must strictly be a multiple of +- size of an ACE ++ size of an ACE (8 bytes) + */ + errno = EINVAL; + return NULL; + } + +- count = size / sizeof(*ace); +- +- hdr = (void *)buf; ++ count = size / GLUSTER_ACL_ENTRY_SIZE; + +- if (ntohl(hdr->version) != GLUSTER_ACL_VERSION) { ++ /* Version is the first 4 bytes of the ACL */ ++ if (IVAL(buf, 0) != GLUSTER_ACL_VERSION) { + DEBUG(0, ("Unknown gluster ACL version: %d\n", +- ntohl(hdr->version))); ++ IVAL(buf, 0))); + return NULL; + } ++ offset = GLUSTER_ACL_HEADER_SIZE; + + result = SMB_MALLOC(sizeof(struct smb_acl_t) + (sizeof(struct smb_acl_entry) * count)); + if (!result) { +@@ -1041,10 +1055,19 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) + result->count = count; + + smb_ace = result->acl; +- ace = hdr->entries; + + for (i = 0; i < count; i++) { +- tag = ntohs(ace->tag); ++ /* TAG is the first 2 bytes of an entry */ ++ tag = SVAL(buf, offset); ++ offset += 2; ++ ++ /* PERM is the next 2 bytes of an entry */ ++ perm = SVAL(buf, offset); ++ offset += 2; ++ ++ /* ID is the last 4 bytes of an entry */ ++ id = IVAL(buf, offset); ++ offset += 4; + + switch(tag) { + case GLUSTER_ACL_USER: +@@ -1070,7 +1093,6 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) + return NULL; + } + +- id = ntohl(ace->id); + + switch(smb_ace->a_type) { + case SMB_ACL_USER: +@@ -1083,8 +1105,6 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) + break; + } + +- perm = ntohs(ace->perm); +- + smb_ace->a_perm = 0; + smb_ace->a_perm |= + ((perm & GLUSTER_ACL_READ) ? SMB_ACL_READ : 0); +@@ -1093,28 +1113,61 @@ static SMB_ACL_T gluster_to_smb_acl(const char *buf, size_t xattr_size) + smb_ace->a_perm |= + ((perm & GLUSTER_ACL_EXECUTE) ? SMB_ACL_EXECUTE : 0); + +- ace++; + smb_ace++; + } + + return result; + } + ++ ++static int gluster_ace_cmp(const void *left, const void *right) ++{ ++ int ret = 0; ++ uint16_t tag_left, tag_right; ++ uint32_t id_left, id_right; ++ ++ /* ++ Sorting precedence: ++ ++ - Smaller TAG values must be earlier. ++ ++ - Within same TAG, smaller identifiers must be earlier, E.g: ++ UID 0 entry must be earlier than UID 200 ++ GID 17 entry must be earlier than GID 19 ++ */ ++ ++ /* TAG is the first element in the entry */ ++ tag_left = SVAL(left, 0); ++ tag_right = SVAL(right, 0); ++ ++ ret = (tag_left - tag_right); ++ if (!ret) { ++ /* ID is the third element in the entry, after two short ++ integers (tag and perm), i.e at offset 4. ++ */ ++ id_left = IVAL(left, 4); ++ id_right = IVAL(right, 4); ++ ret = id_left - id_right; ++ } ++ ++ return ret; ++} ++ ++ + static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len) + { + ssize_t size; +- struct gluster_ace *ace; + struct smb_acl_entry *smb_ace; +- struct gluster_acl_header *hdr; + int i; + int count; + uint16_t tag; + uint16_t perm; + uint32_t id; ++ int offset; + + count = theacl->count; + +- size = sizeof(*hdr) + (count * sizeof(*ace)); ++ size = GLUSTER_ACL_HEADER_SIZE + (count * GLUSTER_ACL_ENTRY_SIZE); + if (!buf) { + return size; + } +@@ -1124,13 +1177,14 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len) + return -1; + } + +- hdr = (void *)buf; +- ace = hdr->entries; + smb_ace = theacl->acl; + +- hdr->version = htonl(GLUSTER_ACL_VERSION); ++ /* Version is the first 4 bytes of the ACL */ ++ SIVAL(buf, 0, GLUSTER_ACL_VERSION); ++ offset = GLUSTER_ACL_HEADER_SIZE; + + for (i = 0; i < count; i++) { ++ /* Calculate tag */ + switch(smb_ace->a_type) { + case SMB_ACL_USER: + tag = GLUSTER_ACL_USER; +@@ -1157,8 +1211,8 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len) + return -1; + } + +- ace->tag = ntohs(tag); + ++ /* Calculate id */ + switch(smb_ace->a_type) { + case SMB_ACL_USER: + id = smb_ace->uid; +@@ -1171,20 +1225,36 @@ static ssize_t smb_to_gluster_acl(SMB_ACL_T theacl, char *buf, size_t len) + break; + } + +- ace->id = ntohl(id); ++ /* Calculate perm */ ++ perm = 0; + +- ace->perm = 0; +- ace->perm |= ++ perm |= + ((smb_ace->a_perm & SMB_ACL_READ) ? GLUSTER_ACL_READ : 0); +- ace->perm |= ++ perm |= + ((smb_ace->a_perm & SMB_ACL_WRITE) ? GLUSTER_ACL_WRITE : 0); +- ace->perm |= ++ perm |= + ((smb_ace->a_perm & SMB_ACL_EXECUTE) ? GLUSTER_ACL_EXECUTE : 0); + +- ace++; ++ ++ /* TAG is the first 2 bytes of an entry */ ++ SSVAL(buf, offset, tag); ++ offset += 2; ++ ++ /* PERM is the next 2 bytes of an entry */ ++ SSVAL(buf, offset, perm); ++ offset += 2; ++ ++ /* ID is the last 4 bytes of an entry */ ++ SIVAL(buf, offset, id); ++ offset += 4; ++ + smb_ace++; + } + ++ /* Skip the header, sort @count number of 8-byte entries */ ++ qsort(buf+GLUSTER_ACL_HEADER_SIZE, count, GLUSTER_ACL_ENTRY_SIZE, ++ gluster_ace_cmp); ++ + return size; + } + +-- +1.9.3 + + +From 26673935299da8ce830ff9d0ea5df18f52092092 Mon Sep 17 00:00:00 2001 +From: "Christopher R. Hertel" +Date: Thu, 29 Aug 2013 11:01:24 -0500 +Subject: [PATCH 5/9] PATCHSET13: vfs_glusterfs: Fix excessive debug output + from vfs_gluster_open(). + +The vfs_gluster_open() function generates a debug message (at level 0) +for every failed attempt to open a pathname. This includes cases in +which attempts are made to open a directory as a file (those attempts +are retried calling vfs_gluster_opendir()). The result is that the log +file fills with messages about failed attempts to open directories, +because they are directories. This patch ensures that failed attempts +to open directories as files are logged at log level 4, not 0. In +addition, other failed open attempts are logged at level 1, not 0. + +Signed-off-by: Christopher R. Hertel +Reviewed-by : Susant Palai +Reviewed-by : Raghavendra Talur +Reviewed-by : Jose A. Rivera +--- + source3/modules/vfs_glusterfs.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 1b81d06..b92c7fd 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -488,11 +488,8 @@ static int vfs_gluster_open(struct vfs_handle_struct *handle, + } + + if (glfd == NULL) { +- DEBUG(0, ("glfs_{open[dir],creat}(%s) failed: %s\n", +- smb_fname->base_name, strerror(errno))); + return -1; + } +- + return glfd_fd_store(glfd); + } + +-- +1.9.3 + + +From f396be725dd8e8f93b0eed1b23fcf0a0f61303a9 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 4 Nov 2013 12:32:05 +0100 +Subject: [PATCH 6/9] PATCHSET13: vfs: Fix some build warnings in glusterfs. + +Signed-off-by: Andreas Schneider +Reviewed-by: David Disseldorp +--- + source3/modules/vfs_glusterfs.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index b92c7fd..4b8da4a 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -1262,7 +1262,7 @@ static SMB_ACL_T vfs_gluster_sys_acl_get_file(struct vfs_handle_struct *handle, + { + struct smb_acl_t *result; + char *buf; +- char *key; ++ const char *key; + ssize_t ret; + + switch (type) { +@@ -1324,7 +1324,7 @@ static int vfs_gluster_sys_acl_set_file(struct vfs_handle_struct *handle, + SMB_ACL_T theacl) + { + int ret; +- char *key; ++ const char *key; + char *buf; + ssize_t size; + +-- +1.9.3 + + +From 2b136f8999e171d15736d0a532353799b7251ae2 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 15 Nov 2013 17:02:19 +0100 +Subject: [PATCH 7/9] PATCHSET13: s3-vfs: Make glfs_set_preopened() static. + +Signed-off-by: Andreas Schneider +Reviewed-by: Jeremy Allison +--- + source3/modules/vfs_glusterfs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 4b8da4a..ef505a3 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -141,7 +141,7 @@ static struct glfs_preopened { + } *glfs_preopened; + + +-int glfs_set_preopened(const char *volume, glfs_t *fs) ++static int glfs_set_preopened(const char *volume, glfs_t *fs) + { + struct glfs_preopened *entry = NULL; + +-- +1.9.3 + + +From 9b2c8854a5a27e4fdbe5191abf174d3152b0edfd Mon Sep 17 00:00:00 2001 +From: Poornima Gurusiddaiah +Date: Sun, 24 Nov 2013 21:37:53 +0000 +Subject: [PATCH 8/9] PATCHSET13: vfs_glusterfs: Enable per client log file + +In Samba configuration file, one of the options of gluster type is +log file, the value of this option was not allowed to contain any +variables, as a result all the clients would have a single log file, +which complicated debugging. +In this patch, variable substitution is performed for gluster log file. +Hence allowing user to customise the gluster log file name. + +Signed-off-by: Poornima Gurusiddaiah +Reviewed-by: Ira Cooper +--- + source3/modules/vfs_glusterfs.c | 41 ++++++++++++++++++++++------------------- + 1 file changed, 22 insertions(+), 19 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index ef505a3..3757968 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -205,12 +205,12 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle, + { + const char *volfile_server; + const char *volume; +- const char *logfile; ++ char *logfile; + int loglevel; + glfs_t *fs; +- int ret; ++ int ret = 0; + +- logfile = lp_parm_const_string(SNUM(handle->conn), "glusterfs", ++ logfile = lp_parm_talloc_string(SNUM(handle->conn), "glusterfs", + "logfile", NULL); + + loglevel = lp_parm_int(SNUM(handle->conn), "glusterfs", "loglevel", -1); +@@ -229,57 +229,60 @@ static int vfs_gluster_connect(struct vfs_handle_struct *handle, + + fs = glfs_find_preopened(volume); + if (fs) { +- goto found; ++ goto done; + } + + fs = glfs_new(volume); + if (fs == NULL) { +- return -1; ++ ret = -1; ++ goto done; + } + + ret = glfs_set_volfile_server(fs, "tcp", volfile_server, 0); + if (ret < 0) { + DEBUG(0, ("Failed to set volfile_server %s\n", volfile_server)); +- glfs_fini(fs); +- return -1; ++ goto done; + } + + ret = glfs_set_xlator_option(fs, "*-md-cache", "cache-posix-acl", + "true"); + if (ret < 0) { + DEBUG(0, ("%s: Failed to set xlator options\n", volume)); +- glfs_fini(fs); +- return -1; ++ goto done; + } + + ret = glfs_set_logging(fs, logfile, loglevel); + if (ret < 0) { + DEBUG(0, ("%s: Failed to set logfile %s loglevel %d\n", + volume, logfile, loglevel)); +- glfs_fini(fs); +- return -1; ++ goto done; + } + + ret = glfs_init(fs); + if (ret < 0) { + DEBUG(0, ("%s: Failed to initialize volume (%s)\n", + volume, strerror(errno))); +- glfs_fini(fs); +- return -1; ++ goto done; + } + + ret = glfs_set_preopened(volume, fs); + if (ret < 0) { + DEBUG(0, ("%s: Failed to register volume (%s)\n", + volume, strerror(errno))); +- glfs_fini(fs); ++ goto done; ++ } ++done: ++ talloc_free(logfile); ++ if (ret < 0) { ++ if (fs) ++ glfs_fini(fs); + return -1; ++ } else { ++ DEBUG(0, ("%s: Initialized volume from server %s\n", ++ volume, volfile_server)); ++ handle->data = fs; ++ return 0; + } +-found: +- DEBUG(0, ("%s: Initialized volume from server %s\n", +- volume, volfile_server)); +- handle->data = fs; +- return 0; + } + + static void vfs_gluster_disconnect(struct vfs_handle_struct *handle) +-- +1.9.3 + + +From 8577c573dcd44e26579a6594b83a6d582faef14c Mon Sep 17 00:00:00 2001 +From: Niels de Vos +Date: Fri, 10 Jan 2014 16:26:18 +0100 +Subject: [PATCH 9/9] PATCHSET13: vfs/glusterfs: in case atime is not passed, + set it to the current atime + +The Linux CIFS client does not pass an updated atime when a write() is +done. This causes the vfs/glusterfs module to set the atime to -1 on the +Gluster backend, resulting in an atime far in the future (year 2106). + +Signed-off-by: Niels de Vos +Reviewed-by: Ira Cooper +Reviewed-by: Jeremy Allison + +Autobuild-User(master): Jeremy Allison +Autobuild-Date(master): Wed Jan 15 21:31:30 CET 2014 on sn-devel-104 +--- + source3/modules/vfs_glusterfs.c | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c +index 3757968..24f80dd 100644 +--- a/source3/modules/vfs_glusterfs.c ++++ b/source3/modules/vfs_glusterfs.c +@@ -675,10 +675,28 @@ static int vfs_gluster_ntimes(struct vfs_handle_struct *handle, + { + struct timespec times[2]; + +- times[0].tv_sec = ft->atime.tv_sec; +- times[0].tv_nsec = ft->atime.tv_nsec; +- times[1].tv_sec = ft->mtime.tv_sec; +- times[1].tv_nsec = ft->mtime.tv_nsec; ++ if (null_timespec(ft->atime)) { ++ times[0].tv_sec = smb_fname->st.st_ex_atime.tv_sec; ++ times[0].tv_nsec = smb_fname->st.st_ex_atime.tv_nsec; ++ } else { ++ times[0].tv_sec = ft->atime.tv_sec; ++ times[0].tv_nsec = ft->atime.tv_nsec; ++ } ++ ++ if (null_timespec(ft->mtime)) { ++ times[1].tv_sec = smb_fname->st.st_ex_mtime.tv_sec; ++ times[1].tv_nsec = smb_fname->st.st_ex_mtime.tv_nsec; ++ } else { ++ times[1].tv_sec = ft->mtime.tv_sec; ++ times[1].tv_nsec = ft->mtime.tv_nsec; ++ } ++ ++ if ((timespec_compare(×[0], ++ &smb_fname->st.st_ex_atime) == 0) && ++ (timespec_compare(×[1], ++ &smb_fname->st.st_ex_mtime) == 0)) { ++ return 0; ++ } + + return glfs_utimens(handle->data, smb_fname->base_name, times); + } +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.23-libsmbclient.patch b/src/patches/samba/samba-3.6.23-libsmbclient.patch new file mode 100644 index 000000000..61107c589 --- /dev/null +++ b/src/patches/samba/samba-3.6.23-libsmbclient.patch @@ -0,0 +1,36 @@ +From b2b00b1d7871f7557fe7e8f616fa46a8e5ebd298 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 28 May 2014 16:02:15 +0200 +Subject: [PATCH] PATCHSET10: s3-libsmbclient: Always initialize globals. + +This fixes cases where we dereference NULL pointers of globals which +were not initialized. +--- + source3/libsmb/libsmb_context.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source3/libsmb/libsmb_context.c b/source3/libsmb/libsmb_context.c +index 6c20d65..888c2ef 100644 +--- a/source3/libsmb/libsmb_context.c ++++ b/source3/libsmb/libsmb_context.c +@@ -76,7 +76,7 @@ SMBC_module_init(void * punused) + * defaults ... + */ + +- if (!lp_load(get_dyn_CONFIGFILE(), True, False, False, False)) { ++ if (!lp_load(get_dyn_CONFIGFILE(), True, False, False, True)) { + DEBUG(5, ("Could not load config file: %s\n", + get_dyn_CONFIGFILE())); + } else if (home) { +@@ -89,7 +89,7 @@ SMBC_module_init(void * punused) + if (asprintf(&conf, + "%s/.smb/smb.conf.append", + home) > 0) { +- if (!lp_load(conf, True, False, False, False)) { ++ if (!lp_load(conf, True, False, False, True)) { + DEBUG(10, + ("Could not append config file: " + "%s\n", +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch b/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch new file mode 100644 index 000000000..ee27bd41c --- /dev/null +++ b/src/patches/samba/samba-3.6.26-smb2_case_sensitive.patch @@ -0,0 +1,118 @@ +From 3432aafbf86b4d3a559838d81b3ebc039e72a412 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 10 Jun 2014 14:41:45 -0700 +Subject: [PATCH 1/2] s3: smbd - SMB[2|3]. Ensure a \ or / can't be found + anywhere in a search path, not just at the start. + +Signed-off-by: Jeremy Allison +--- + source3/smbd/smb2_find.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c +index 59e5b66..b0ab7a8 100644 +--- a/source3/smbd/smb2_find.c ++++ b/source3/smbd/smb2_find.c +@@ -255,11 +255,11 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx, + tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID); + return tevent_req_post(req, ev); + } +- if (strcmp(in_file_name, "\\") == 0) { ++ if (strchr_m(in_file_name, '\\') != NULL) { + tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID); + return tevent_req_post(req, ev); + } +- if (strcmp(in_file_name, "/") == 0) { ++ if (strchr_m(in_file_name, '/') != NULL) { + tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_INVALID); + return tevent_req_post(req, ev); + } +-- +1.9.3 + + +From 190d0f39bb400a373c8f4d6847e2980c0df8da2b Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 10 Jun 2014 15:58:15 -0700 +Subject: [PATCH 2/2] s3: smbd : SMB2 - fix SMB2_SEARCH when searching non + wildcard string with a case-canonicalized share. + +We need to go through filename_convert() in order for the filename +canonicalization to be done on a non-wildcard search string (as is +done in the SMB1 findfirst code path). + +Fixes Bug #10650 - "case sensitive = True" option doesn't work with "max protocol = SMB2" or higher in large directories. + +https://bugzilla.samba.org/show_bug.cgi?id=10650 + +Signed-off-by: Jeremy Allison +--- + source3/smbd/smb2_find.c | 38 +++++++++++++++++++++++++++++++++++--- + 1 file changed, 35 insertions(+), 3 deletions(-) + +diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c +index b0ab7a8..6fe6545 100644 +--- a/source3/smbd/smb2_find.c ++++ b/source3/smbd/smb2_find.c +@@ -229,6 +229,7 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx, + uint32_t dirtype = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY; + bool dont_descend = false; + bool ask_sharemode = true; ++ bool wcard_has_wild; + + req = tevent_req_create(mem_ctx, &state, + struct smbd_smb2_find_state); +@@ -303,16 +304,47 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx, + dptr_CloseDir(fsp); + } + ++ wcard_has_wild = ms_has_wild(in_file_name); ++ ++ /* Ensure we've canonicalized any search path if not a wildcard. */ ++ if (!wcard_has_wild) { ++ struct smb_filename *smb_fname = NULL; ++ const char *fullpath; ++ ++ if (ISDOT(fsp->fsp_name->base_name)) { ++ fullpath = in_file_name; ++ } else { ++ fullpath = talloc_asprintf(state, ++ "%s/%s", ++ fsp->fsp_name->base_name, ++ in_file_name); ++ } ++ if (tevent_req_nomem(fullpath, req)) { ++ return tevent_req_post(req, ev); ++ } ++ status = filename_convert(state, ++ conn, ++ false, /* Not a DFS path. */ ++ fullpath, ++ UCF_SAVE_LCOMP | UCF_ALWAYS_ALLOW_WCARD_LCOMP, ++ &wcard_has_wild, ++ &smb_fname); ++ ++ if (!NT_STATUS_IS_OK(status)) { ++ tevent_req_nterror(req, status); ++ return tevent_req_post(req, ev); ++ } ++ ++ in_file_name = smb_fname->original_lcomp; ++ } ++ + if (fsp->dptr == NULL) { +- bool wcard_has_wild; + + if (!(fsp->access_mask & SEC_DIR_LIST)) { + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); + return tevent_req_post(req, ev); + } + +- wcard_has_wild = ms_has_wild(in_file_name); +- + status = dptr_create(conn, + fsp, + fsp->fsp_name->base_name, +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch b/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch new file mode 100644 index 000000000..2b6ce6abc --- /dev/null +++ b/src/patches/samba/samba-3.6.99-2110-ntlmssp-session-setup-nas.patch @@ -0,0 +1,39 @@ +From ce2b7dad823e3af00884bc0c75851eec7445ec88 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 31 Oct 2016 12:25:35 +0100 +Subject: [PATCH] s3-libsmb Allow SESSION KEY setup without signing + +This is not supported by NetApp or EMC NAS systems. They do not +implement the protocol correctly. So work around their broken +implementations. + +Signed-off-by: Andreas Schneider +--- + source3/libsmb/ntlmssp.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source3/libsmb/ntlmssp.c b/source3/libsmb/ntlmssp.c +index 7e58990..446d02d 100644 +--- a/source3/libsmb/ntlmssp.c ++++ b/source3/libsmb/ntlmssp.c +@@ -206,7 +206,7 @@ void ntlmssp_want_feature_list(struct ntlmssp_state *ntlmssp_state, char *featur + * also add NTLMSSP_NEGOTIATE_SEAL here. JRA. + */ + if (in_list("NTLMSSP_FEATURE_SESSION_KEY", feature_list, True)) { +- ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN; ++ ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN; + } + if (in_list("NTLMSSP_FEATURE_SIGN", feature_list, True)) { + ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN; +@@ -231,7 +231,7 @@ void ntlmssp_want_feature(struct ntlmssp_state *ntlmssp_state, uint32_t feature) + { + /* As per JRA's comment above */ + if (feature & NTLMSSP_FEATURE_SESSION_KEY) { +- ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN; ++ ntlmssp_state->neg_flags |= NTLMSSP_NEGOTIATE_SIGN; + } + if (feature & NTLMSSP_FEATURE_SIGN) { + ntlmssp_state->required_flags |= NTLMSSP_NEGOTIATE_SIGN; +-- +2.10.1 + diff --git a/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch b/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch new file mode 100644 index 000000000..3953b299f --- /dev/null +++ b/src/patches/samba/samba-3.6.99-add_spoolss_os_version.patch @@ -0,0 +1,53 @@ +From e5d6a3914151217e1487d9a444c2ced4cfd89491 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Sat, 19 Jan 2013 01:37:29 +0100 +Subject: [PATCH 19/20] PATCHSET9: s3-spoolss: Make it easier to manipulate the + returned OSVersion at runtime. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Andreas Schneider +Signed-off-by: Andreas Schneider +--- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index 8372c43..0c4b582 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -2352,9 +2352,13 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *mem_ctx, + enum ndr_err_code ndr_err; + struct spoolss_OSVersion os; + +- os.major = 5; /* Windows 2000 == 5.0 */ +- os.minor = 0; +- os.build = 2195; /* build */ ++ os.major = lp_parm_int(GLOBAL_SECTION_SNUM, ++ "spoolss", "os_major", 5); ++ /* Windows 2000 == 5.0 */ ++ os.minor = lp_parm_int(GLOBAL_SECTION_SNUM, ++ "spoolss", "os_minor", 0); ++ os.build = lp_parm_int(GLOBAL_SECTION_SNUM, ++ "spoolss", "os_build", 2195); + os.extra_string = ""; /* leave extra string empty */ + + ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &os, +@@ -2363,6 +2367,10 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *mem_ctx, + return WERR_GENERAL_FAILURE; + } + ++ if (DEBUGLEVEL >= 10) { ++ NDR_PRINT_DEBUG(spoolss_OSVersion, &os); ++ } ++ + *type = REG_BINARY; + data->binary = blob; + +-- +1.9.0 + diff --git a/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch b/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch new file mode 100644 index 000000000..7175ca86a --- /dev/null +++ b/src/patches/samba/samba-3.6.99-add_timeout_option_to_smbclient.patch @@ -0,0 +1,147 @@ +commit e8f6a7df1b5ae7f7275ac59b8c21b82de1922c3b +Author: Jeremy Allison +AuthorDate: Fri Aug 16 13:49:39 2013 -0700 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:50:28 2014 +0100 + + Add new "timeout" command and -t option to smbclient to set the per-operation timeout. + + This is needed as once SMB3 encryption is selected the server + response time can be very slow when requesting large numbers + (256) of large encrypted packets (1MB) from a Windows 2012 + virtual machine. This allows clients to tune their allowable + wait time. + + Signed-off-by: Jeremy Allison + Reviewed-by: Michael Adam + (cherry picked from commit d9c88a56dc451be09e8c9fc9aa8857e312fcb444) +--- + source3/client/client.c | 44 ++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 40 insertions(+), 4 deletions(-) + +diff --git a/source3/client/client.c b/source3/client/client.c +index f6e42f6..aa16b14 100644 +--- a/source3/client/client.c ++++ b/source3/client/client.c +@@ -54,7 +54,12 @@ static bool grepable = false; + static char *cmdstr = NULL; + const char *cmd_ptr = NULL; + ++/* 30 second timeout on most commands */ ++#define CLIENT_TIMEOUT (30*1000) ++#define SHORT_TIMEOUT (5*1000) ++ + static int io_bufsize = 524288; ++static int io_timeout = (CLIENT_TIMEOUT/1000); /* Per operation timeout (in seconds). */ + + static int name_type = 0x20; + static int max_protocol = PROTOCOL_NT1; +@@ -64,10 +69,6 @@ static int cmd_help(void); + + #define CREATE_ACCESS_READ READ_CONTROL_ACCESS + +-/* 30 second timeout on most commands */ +-#define CLIENT_TIMEOUT (30*1000) +-#define SHORT_TIMEOUT (5*1000) +- + /* value for unused fid field in trans2 secondary request */ + #define FID_UNUSED (0xFFFF) + +@@ -4264,6 +4265,31 @@ int cmd_iosize(void) + } + + /**************************************************************************** ++ timeout command ++***************************************************************************/ ++ ++static int cmd_timeout(void) ++{ ++ TALLOC_CTX *ctx = talloc_tos(); ++ char *buf; ++ ++ if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) { ++ unsigned int old_timeout = cli_set_timeout(cli, 0); ++ cli_set_timeout(cli, old_timeout); ++ d_printf("timeout (per-operation timeout " ++ "in seconds - currently %u).\n", ++ old_timeout/1000); ++ return 1; ++ } ++ ++ io_timeout = strtol(buf,NULL,0); ++ cli_set_timeout(cli, io_timeout*1000); ++ d_printf("io_timeout per operation is now %d\n", io_timeout); ++ return 0; ++} ++ ++ ++/**************************************************************************** + history + ****************************************************************************/ + static int cmd_history(void) +@@ -4369,6 +4395,7 @@ static struct { + {"symlink",cmd_symlink," create a UNIX symlink",{COMPL_REMOTE,COMPL_REMOTE}}, + {"tar",cmd_tar,"tar [IXFqbgNan] current directory to/from ",{COMPL_NONE,COMPL_NONE}}, + {"tarmode",cmd_tarmode," tar's behaviour towards archive bits",{COMPL_NONE,COMPL_NONE}}, ++ {"timeout",cmd_timeout,"timeout - set the per-operation timeout in seconds (default 20)",{COMPL_NONE,COMPL_NONE}}, + {"translate",cmd_translate,"toggle text translation for printing",{COMPL_NONE,COMPL_NONE}}, + {"unlock",cmd_unlock,"unlock : remove a POSIX lock",{COMPL_REMOTE,COMPL_REMOTE}}, + {"volume",cmd_volume,"print the volume name",{COMPL_NONE,COMPL_NONE}}, +@@ -4465,6 +4492,7 @@ static int process_command_string(const char *cmd_in) + if (!cli) { + return 1; + } ++ cli_set_timeout(cli, io_timeout*1000); + } + + while (cmd[0] != '\0') { +@@ -4942,6 +4970,8 @@ static int process(const char *base_directory) + return 1; + } + ++ cli_set_timeout(cli, io_timeout*1000); ++ + if (base_directory && *base_directory) { + rc = do_cd(base_directory); + if (rc) { +@@ -4972,6 +5002,7 @@ static int do_host_query(const char *query_host) + if (!cli) + return 1; + ++ cli_set_timeout(cli, io_timeout*1000); + browse_host(true); + + /* Ensure that the host can do IPv4 */ +@@ -5003,6 +5034,7 @@ static int do_host_query(const char *query_host) + return 1; + } + ++ cli_set_timeout(cli, io_timeout*1000); + list_servers(lp_workgroup()); + + cli_shutdown(cli); +@@ -5026,6 +5058,7 @@ static int do_tar_op(const char *base_directory) + max_protocol, port, name_type); + if (!cli) + return 1; ++ cli_set_timeout(cli, io_timeout*1000); + } + + recurse=true; +@@ -5091,6 +5124,8 @@ static int do_message_op(struct user_auth_info *a_info) + return 1; + } + ++ cli_set_timeout(cli, io_timeout*1000); ++ + send_message(get_cmdline_auth_info_username(a_info)); + cli_shutdown(cli); + +@@ -5127,6 +5162,7 @@ static int do_message_op(struct user_auth_info *a_info) + { "directory", 'D', POPT_ARG_STRING, NULL, 'D', "Start from directory", "DIR" }, + { "command", 'c', POPT_ARG_STRING, &cmdstr, 'c', "Execute semicolon separated commands" }, + { "send-buffer", 'b', POPT_ARG_INT, &io_bufsize, 'b', "Changes the transmit/send buffer", "BYTES" }, ++ { "timeout", 't', POPT_ARG_INT, &io_timeout, 'b', "Changes the per-operation timeout", "SECONDS" }, + { "port", 'p', POPT_ARG_INT, &port, 'p', "Port to connect to", "PORT" }, + { "grepable", 'g', POPT_ARG_NONE, NULL, 'g', "Produce grepable output" }, + { "browse", 'B', POPT_ARG_NONE, NULL, 'B', "Browse SMB servers using DNS" }, diff --git a/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch b/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch new file mode 100644 index 000000000..19e5f1ad5 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-asserted_identity_sid-S-1-18-1.patch @@ -0,0 +1,223 @@ +From ed26d110b814e2cf0413bd9665bd08bda271ba01 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 15 Jan 2016 14:46:07 +0100 +Subject: [PATCH 1/3] security: Add Asserted Identity sids (S-1-18) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677 + +definitions taken from [MS-DTYP]: Windows Data Types, +2.4.2.4 Well-Known SID Structures. + +Guenther + +Signed-off-by: Günther Deschner +--- + libcli/security/dom_sid.h | 3 +++ + libcli/security/util_sid.c | 8 ++++++++ + librpc/idl/security.idl | 3 +++ + 3 files changed, 14 insertions(+) + +diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h +index 04571c2..503b621 100644 +--- a/libcli/security/dom_sid.h ++++ b/libcli/security/dom_sid.h +@@ -35,6 +35,9 @@ extern const struct dom_sid global_sid_System; + extern const struct dom_sid global_sid_NULL; + extern const struct dom_sid global_sid_Authenticated_Users; + extern const struct dom_sid global_sid_Network; ++extern const struct dom_sid global_sid_Asserted_Identity; ++extern const struct dom_sid global_sid_Asserted_Identity_Service; ++extern const struct dom_sid global_sid_Asserted_Identity_Authentication_Authority; + extern const struct dom_sid global_sid_Creator_Owner; + extern const struct dom_sid global_sid_Creator_Group; + extern const struct dom_sid global_sid_Anonymous; +diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c +index cf1f7f3..5a41ef7 100644 +--- a/libcli/security/util_sid.c ++++ b/libcli/security/util_sid.c +@@ -53,6 +53,14 @@ const struct dom_sid global_sid_Authenticated_Users = /* All authenticated rids + const struct dom_sid global_sid_Restriced = /* Restriced Code */ + { 1, 1, {0,0,0,0,0,5}, {12,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; + #endif ++ ++const struct dom_sid global_sid_Asserted_Identity = /* Asserted Identity */ ++{ 1, 0, {0,0,0,0,0,18}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; ++const struct dom_sid global_sid_Asserted_Identity_Service = /* Asserted Identity Service */ ++{ 1, 1, {0,0,0,0,0,18}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; ++const struct dom_sid global_sid_Asserted_Identity_Authentication_Authority = /* Asserted Identity Authentication Authority */ ++{ 1, 1, {0,0,0,0,0,18}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; ++ + const struct dom_sid global_sid_Network = /* Network rids */ + { 1, 1, {0,0,0,0,0,5}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; + +diff --git a/librpc/idl/security.idl b/librpc/idl/security.idl +index 0ea79a3..7df773e 100644 +--- a/librpc/idl/security.idl ++++ b/librpc/idl/security.idl +@@ -277,6 +277,9 @@ interface security + const string SID_NT_TRUSTED_INSTALLER = + "S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464"; + ++ const string SID_AUTHENTICATION_AUTHORITY_ASSERTED_IDENTITY = "S-1-18-1"; ++ const string SID_SERVICE_ASSERTED_IDENTITY = "S-1-18-2"; ++ + /* well-known domain RIDs */ + const int DOMAIN_RID_LOGON = 9; + const int DOMAIN_RID_ENTERPRISE_READONLY_DCS = 498; +-- +2.5.0 + + +From be247c05146c45bcea5c06a38ff07e8f0c934ab6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 15 Jan 2016 14:43:12 +0100 +Subject: [PATCH 2/3] s3-util: add helper functions to deal with the S-1-18 + domain. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677 + +Guenther + +Signed-off-by: Günther Deschner +--- + source3/Makefile.in | 2 +- + source3/include/proto.h | 5 +++++ + source3/lib/util_specialsids.c | 40 ++++++++++++++++++++++++++++++++++++++++ + source3/wscript_build | 1 + + 4 files changed, 47 insertions(+), 1 deletion(-) + create mode 100644 source3/lib/util_specialsids.c + +diff --git a/source3/Makefile.in b/source3/Makefile.in +index 9e8e03d..8df2bff 100644 +--- a/source3/Makefile.in ++++ b/source3/Makefile.in +@@ -456,7 +456,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \ + lib/access.o lib/smbrun.o \ + lib/bitmap.o lib/dprintf.o $(UTIL_REG_OBJ) \ + lib/wins_srv.o \ +- lib/util_str.o lib/clobber.o lib/util_sid.o \ ++ lib/util_str.o lib/clobber.o lib/util_sid.o lib/util_specialsids.o \ + lib/util_unistr.o ../lib/util/charset/codepoints.o lib/util_file.o \ + lib/util.o lib/util_cmdline.o lib/util_names.o \ + lib/util_sock.o lib/sock_exec.o lib/util_sec.o \ +diff --git a/source3/include/proto.h b/source3/include/proto.h +index 7303e76..8cd162b 100644 +--- a/source3/include/proto.h ++++ b/source3/include/proto.h +@@ -1937,6 +1937,11 @@ bool sid_check_is_in_unix_groups(const struct dom_sid *sid); + const char *unix_groups_domain_name(void); + bool lookup_unix_group_name(const char *name, struct dom_sid *sid); + ++/* The following definitions come from lib/util_specialsids.c */ ++bool sid_check_is_asserted_identity(const struct dom_sid *sid); ++bool sid_check_is_in_asserted_identity(const struct dom_sid *sid); ++const char *asserted_identity_domain_name(void); ++ + /* The following definitions come from lib/filename_util.c */ + + NTSTATUS get_full_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname, +diff --git a/source3/lib/util_specialsids.c b/source3/lib/util_specialsids.c +new file mode 100644 +index 0000000..4c402d6 +--- /dev/null ++++ b/source3/lib/util_specialsids.c +@@ -0,0 +1,40 @@ ++/* ++ Unix SMB/CIFS implementation. ++ Copyright (C) Guenther Deschner 2016 ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include "includes.h" ++#include "../libcli/security/security.h" ++ ++bool sid_check_is_asserted_identity(const struct dom_sid *sid) ++{ ++ return dom_sid_equal(sid, &global_sid_Asserted_Identity); ++} ++ ++bool sid_check_is_in_asserted_identity(const struct dom_sid *sid) ++{ ++ struct dom_sid dom_sid; ++ ++ sid_copy(&dom_sid, sid); ++ sid_split_rid(&dom_sid, NULL); ++ ++ return sid_check_is_asserted_identity(&dom_sid); ++} ++ ++const char *asserted_identity_domain_name(void) ++{ ++ return "Asserted Identity"; ++} +diff --git a/source3/wscript_build b/source3/wscript_build +index 40935d1..ceccbb5 100755 +--- a/source3/wscript_build ++++ b/source3/wscript_build +@@ -74,6 +74,7 @@ LIB_SRC = ''' + lib/bitmap.c lib/dprintf.c + lib/wins_srv.c + lib/clobber.c lib/util_sid.c ++ lib/util_specialsids.c + lib/util_file.c + lib/util.c lib/util_cmdline.c lib/util_names.c + lib/util_sock.c lib/sock_exec.c lib/util_sec.c +-- +2.5.0 + + +From bb5c28c8d45be8e26abe37e4873c4b1c59fff782 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Fri, 15 Jan 2016 14:43:48 +0100 +Subject: [PATCH 3/3] s3-util: skip S-1-18 sids in token generaion in + sid_array_from_info3(). +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11677 + +Guenther + +Signed-off-by: Günther Deschner +--- + source3/lib/util_sid.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c +index f051b7a..92fbc76 100644 +--- a/source3/lib/util_sid.c ++++ b/source3/lib/util_sid.c +@@ -190,6 +190,11 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx, + */ + + for (i = 0; i < info3->sidcount; i++) { ++ ++ if (sid_check_is_in_asserted_identity(info3->sids[i].sid)) { ++ continue; ++ } ++ + status = add_sid_to_array(mem_ctx, info3->sids[i].sid, + &sid_array, &num_sids); + if (!NT_STATUS_IS_OK(status)) { +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-bug-1117059.patch b/src/patches/samba/samba-3.6.99-bug-1117059.patch new file mode 100644 index 000000000..4941e664c --- /dev/null +++ b/src/patches/samba/samba-3.6.99-bug-1117059.patch @@ -0,0 +1,86 @@ +From 7f0edd8c68cd20a136a33d692f32ee2ffc30db76 Mon Sep 17 00:00:00 2001 +From: Michael Adam +Date: Mon, 19 Jan 2015 13:51:55 +0100 +Subject: [PATCH] s3:winbind:grent: don't stop group enumeration when a group + has no gid + +simply continue with the next group + +Note: this patch introduces some code duplication to make it +easier to create minimal backport patch. Subsequent patches +will provide some refactoring to reduce the duplication. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=8905 + +Signed-off-by: Michael Adam +--- + source3/winbindd/wb_next_grent.c | 51 +++++++++++++++++++++++++++++++++++++++- + 1 file changed, 50 insertions(+), 1 deletion(-) + +diff --git a/source3/winbindd/wb_next_grent.c b/source3/winbindd/wb_next_grent.c +index 2b3799a..f52d2d1 100644 +--- a/source3/winbindd/wb_next_grent.c ++++ b/source3/winbindd/wb_next_grent.c +@@ -168,9 +168,58 @@ static void wb_next_grent_getgrsid_done(struct tevent_req *subreq) + status = wb_getgrsid_recv(subreq, talloc_tos(), &domname, &name, + &state->gr->gr_gid, &state->members); + TALLOC_FREE(subreq); +- if (tevent_req_nterror(req, status)) { ++ ++ if (NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED)) { ++ state->gstate->next_group += 1; ++ ++ if (state->gstate->next_group >= state->gstate->num_groups) { ++ TALLOC_FREE(state->gstate->groups); ++ ++ if (state->gstate->domain == NULL) { ++ state->gstate->domain = domain_list(); ++ } else { ++ state->gstate->domain = state->gstate->domain->next; ++ } ++ ++ if ((state->gstate->domain != NULL) && ++ sid_check_is_domain(&state->gstate->domain->sid)) ++ { ++ state->gstate->domain = state->gstate->domain->next; ++ } ++ ++ if (state->gstate->domain == NULL) { ++ tevent_req_nterror(req, ++ NT_STATUS_NO_MORE_ENTRIES); ++ return; ++ } ++ ++ subreq = dcerpc_wbint_QueryGroupList_send( ++ state, state->ev, ++ dom_child_handle(state->gstate->domain), ++ &state->next_groups); ++ if (tevent_req_nomem(subreq, req)) { ++ return; ++ } ++ ++ tevent_req_set_callback(subreq, ++ wb_next_grent_fetch_done, req); ++ return; ++ } ++ ++ subreq = wb_getgrsid_send( ++ state, state->ev, ++ &state->gstate->groups[state->gstate->next_group].sid, ++ state->max_nesting); ++ if (tevent_req_nomem(subreq, req)) { ++ return; ++ } ++ tevent_req_set_callback(subreq, wb_next_grent_getgrsid_done, ++ req); ++ return; ++ } else if (tevent_req_nterror(req, status)) { + return; + } ++ + if (!fill_grent(talloc_tos(), state->gr, domname, name, + state->gr->gr_gid)) { + DEBUG(5, ("fill_grent failed\n")); +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-bug-1192211.patch b/src/patches/samba/samba-3.6.99-bug-1192211.patch new file mode 100644 index 000000000..a14f73602 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-bug-1192211.patch @@ -0,0 +1,42 @@ +From a5b116fe3107a56e1d881906e77d9731b0c6b2c2 Mon Sep 17 00:00:00 2001 +From: Michael Adam +Date: Sat, 1 Jun 2013 02:14:41 +0200 +Subject: [PATCH] shadow_copy2: implement disk_free + +Signed-off-by: Michael Adam +--- + source3/modules/vfs_shadow_copy2.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c +index fedfb53..7fd4dd5 100644 +--- a/source3/modules/vfs_shadow_copy2.c ++++ b/source3/modules/vfs_shadow_copy2.c +@@ -944,6 +944,16 @@ static int shadow_copy2_get_shadow_copy2_data(vfs_handle_struct *handle, + return 0; + } + ++static uint64_t shadow_copy2_disk_free(vfs_handle_struct *handle, ++ const char *fname, bool small_query, ++ uint64_t *bsize, uint64_t *dfree, ++ uint64_t *dsize) ++{ ++ SHADOW2_NEXT(DISK_FREE, ++ (handle, name, small_query, bsize, dfree, dsize), ++ uint64_t, 0); ++} ++ + static struct vfs_fn_pointers vfs_shadow_copy2_fns = { + .opendir = shadow_copy2_opendir, + .mkdir = shadow_copy2_mkdir, +@@ -975,6 +985,7 @@ static struct vfs_fn_pointers vfs_shadow_copy2_fns = { + .get_nt_acl = shadow_copy2_get_nt_acl, + .chmod_acl = shadow_copy2_chmod_acl, + .get_shadow_copy_data = shadow_copy2_get_shadow_copy2_data, ++ .disk_free = shadow_copy2_disk_free, + }; + + NTSTATUS vfs_shadow_copy2_init(void); +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch b/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch new file mode 100644 index 000000000..22330f128 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-doc_netbios_name_length_limit.patch @@ -0,0 +1,257 @@ +From caea507e6b57a82e059803e307f87fd39affde9c Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 15 Jul 2015 13:22:40 +0200 +Subject: [PATCH] PATCHSET31: docs: Documents length limitations for NetBIOS + name + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11401 + +Signed-off-by: Andreas Schneider +Reviewed-by: Michael Adam + +Autobuild-User(master): Andreas Schneider +Autobuild-Date(master): Wed Jul 15 19:35:48 CEST 2015 on sn-devel-104 +--- + docs-xml/smbdotconf/base/netbiosname.xml | 2 ++ + 1 file changed, 2 insertions(+) + +Index: samba-3.6.23/docs-xml/smbdotconf/base/netbiosname.xml +=================================================================== +--- samba-3.6.23.orig/docs-xml/smbdotconf/base/netbiosname.xml ++++ samba-3.6.23/docs-xml/smbdotconf/base/netbiosname.xml +@@ -9,6 +9,8 @@ + the hosts DNS name) will be the name that these services are advertised under. + + ++ Note that the maximum length for a NetBIOS name is 15 charactars. ++ + + There is a bug in Samba-3 that breaks operation of browsing and access to shares if the netbios name + is set to the literal name PIPE. To avoid this problem, do not name your Samba-3 +Index: samba-3.6.23/docs/manpages/smb.conf.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smb.conf.5 ++++ samba-3.6.23/docs/manpages/smb.conf.5 +@@ -1,13 +1,13 @@ + '\" t + .\" Title: smb.conf + .\" Author: [see the "AUTHOR" section] +-.\" Generator: DocBook XSL Stylesheets v1.76.1 +-.\" Date: 09/18/2013 ++.\" Generator: DocBook XSL Stylesheets v1.78.1 ++.\" Date: 10/15/2015 + .\" Manual: File Formats and Conventions + .\" Source: Samba 3.6 + .\" Language: English + .\" +-.TH "SMB\&.CONF" "5" "09/18/2013" "Samba 3\&.6" "File Formats and Conventions" ++.TH "SMB\&.CONF" "5" "10/15/2015" "Samba 3\&.6" "File Formats and Conventions" + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- +@@ -1201,8 +1201,7 @@ add user to group script (G) + .PP + .RS 4 + Full path to the script that will be called when a user is added to a group using the Windows NT domain administration tools\&. It will be run by +-\fBsmbd\fR(8) +-\fIAS ROOT\fR\&. Any ++\fBsmbd\fR(8)\fIAS ROOT\fR\&. Any + \fI%g\fR + will be replaced with the group name and any + \fI%u\fR +@@ -1563,8 +1562,7 @@ smbpasswd + will fail to connect in it\*(Aqs default mode\&. + smbpasswd + can be forced to use the primary IP interface of the local host by using its +-\fBsmbpasswd\fR(8) +-\fI\-r \fR\fI\fIremote machine\fR\fR ++\fBsmbpasswd\fR(8)\fI\-r \fR\fI\fIremote machine\fR\fR + parameter, with + \fIremote machine\fR + set to the IP name of the primary interface of the local host\&. +@@ -1868,8 +1866,7 @@ and + \fIseal\fR + are only available if Samba has been compiled against a modern OpenLDAP version (2\&.3\&.x or higher)\&. + .sp +-This option is needed in the case of Domain Controllers enforcing the usage of signed LDAP connections (e\&.g\&. Windows 2000 SP3 or higher)\&. LDAP sign and seal can be controlled with the registry key "HKLM\eSystem\eCurrentControlSet\eServices\e +-NTDS\eParameters\eLDAPServerIntegrity" on the Windows server side\&. ++This option is needed in the case of Domain Controllers enforcing the usage of signed LDAP connections (e\&.g\&. Windows 2000 SP3 or higher)\&. LDAP sign and seal can be controlled with the registry key "HKLM\eSystem\eCurrentControlSet\eServices\eNTDS\eParameters\eLDAPServerIntegrity" on the Windows server side\&. + .sp + Depending on the used KRB5 library (MIT and older Heimdal versions) it is possible that the message "integrity only" is not supported\&. In this case, + \fIsign\fR +@@ -2513,8 +2510,7 @@ delete group script (G) + .PP + .RS 4 + This is the full pathname to a script that will be run +-\fIAS ROOT\fR +-\fBsmbd\fR(8) ++\fIAS ROOT\fR\fBsmbd\fR(8) + when a group is requested to be deleted\&. It will expand any + \fI%g\fR + to the group name passed\&. This script is only useful for installations using the Windows NT domain administration tools\&. +@@ -2633,8 +2629,7 @@ delete user from group script (G) + .PP + .RS 4 + Full path to the script that will be called when a user is removed from a group using the Windows NT domain administration tools\&. It will be run by +-\fBsmbd\fR(8) +-\fIAS ROOT\fR\&. Any ++\fBsmbd\fR(8)\fIAS ROOT\fR\&. Any + \fI%g\fR + will be replaced with the group name and any + \fI%u\fR +@@ -4895,8 +4890,7 @@ script\&. + LDAP connections should be secured where possible\&. This may be done setting + \fIeither\fR + this parameter to +-\fIStart_tls\fR +-\fIor\fR ++\fIStart_tls\fR\fIor\fR + by specifying + \fIldaps://\fR + in the URL argument of +@@ -4935,9 +4929,7 @@ Please note that this parameter does onl + \fIrpc\fR + methods\&. To enable the LDAPv3 StartTLS extended operation (RFC2830) for + \fIads\fR, set +-\m[blue]\fBldap ssl = yes\fR\m[] +-\fIand\fR +-\m[blue]\fBldap ssl ads = yes\fR\m[]\&. See ++\m[blue]\fBldap ssl = yes\fR\m[]\fIand\fR\m[blue]\fBldap ssl ads = yes\fR\m[]\&. See + smb\&.conf(5) + for more information on + \m[blue]\fBldap ssl ads\fR\m[]\&. +@@ -5100,8 +5092,7 @@ in elections for local master browser\&. + Setting this value to + \fBno\fR + will cause +-nmbd +-\fInever\fR ++nmbd\fInever\fR + to become a local master browser\&. + .sp + Default: +@@ -5463,7 +5454,6 @@ logon home (G) + .RS 4 + This parameter specifies the home directory location when a Win95/98 or NT Workstation logs into a Samba PDC\&. It allows you to do + .sp +- + C:\e>\fBNET USE H: /HOME\fR + .sp + from a command prompt, for example\&. +@@ -5472,7 +5462,6 @@ This option takes the standard substitut + .sp + This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a subdirectory of the user\*(Aqs home directory\&. This is done in the following way: + .sp +- + logon home = \e\e%N\e%U\eprofile + .sp + This tells Samba to return the above string, with substitutions made when a client requests the info, generally in a NetUserGetInfo request\&. Win9X clients truncate the info to \e\eserver\eshare when a user does +@@ -6050,7 +6039,6 @@ The three settings are : + .sp -1 + .IP \(bu 2.3 + .\} +- + \fBYes\fR + \- The read only DOS attribute is mapped to the inverse of the user or owner write bit in the unix permission mode set\&. If the owner write bit is not set, the read only attribute is reported as being set on the file\&. If the read only DOS attribute is set, Samba sets the owner, group and others write bits to zero\&. Write bits set in an ACL are ignored by Samba\&. If the read only DOS attribute is unset, Samba simply sets the write bit of the owner to one\&. + .RE +@@ -6063,7 +6051,6 @@ The three settings are : + .sp -1 + .IP \(bu 2.3 + .\} +- + \fBPermissions\fR + \- The read only DOS attribute is mapped to the effective permissions of the connecting user, as evaluated by + \fBsmbd\fR(8) +@@ -6078,7 +6065,6 @@ by reading the unix permissions and POSI + .sp -1 + .IP \(bu 2.3 + .\} +- + \fBNo\fR + \- The read only DOS attribute is unaffected by permissions, and can only be set by the + \m[blue]\fBstore dos attributes\fR\m[] +@@ -6732,7 +6718,6 @@ The options are: "lmhosts", "host", "win + .sp -1 + .IP \(bu 2.3 + .\} +- + \fBlmhosts\fR + : Lookup an IP address in the Samba lmhosts file\&. If the line in lmhosts has no name type attached to the NetBIOS name (see the manpage for lmhosts for details) then any name type matches for lookup\&. + .RE +@@ -6745,7 +6730,6 @@ The options are: "lmhosts", "host", "win + .sp -1 + .IP \(bu 2.3 + .\} +- + \fBhost\fR + : Do a standard host name to IP address resolution, using the system + /etc/hosts, NIS, or DNS lookups\&. This method of name resolution is operating system depended for instance on IRIX or Solaris this may be controlled by the +@@ -6833,6 +6817,8 @@ netbios name (G) + .RS 4 + This sets the NetBIOS name by which a Samba server is known\&. By default it is the same as the first component of the host\*(Aqs DNS name\&. If a machine is a browse server or logon server this name (or the first component of the hosts DNS name) will be the name that these services are advertised under\&. + .sp ++Note that the maximum length for a NetBIOS name is 15 charactars\&. ++.sp + There is a bug in Samba\-3 that breaks operation of browsing and access to shares if the netbios name is set to the literal name + PIPE\&. To avoid this problem, do not name your Samba\-3 server + PIPE\&. +@@ -7639,7 +7625,6 @@ This option specifies a command to be ru + .sp + An interesting example is to send the users a welcome message every time they log in\&. Maybe a message of the day? Here is an example: + .sp +- + preexec = csh \-c \*(Aqecho \e"Welcome to %S!\e" | /usr/local/samba/bin/smbclient \-M %m \-I %I\*(Aq & + .sp + Of course, this could get annoying after a while :\-) +@@ -8452,9 +8437,7 @@ rpc_server (G) + Defines what kind of rpc server to use for a named pipe\&. The rpc_server prefix must be followed by the pipe name, and a value\&. + .sp + Three possible values are currently supported: +-embedded +-daemon +-external ++embeddeddaemonexternal + .sp + The classic method is to run every pipe as an internal function + \fIembedded\fR +@@ -8632,8 +8615,7 @@ security = share + server)\&. Instead, the clients send authentication information (passwords) on a per\-share basis, at the time they attempt to connect to that share\&. + .sp + Note that +-smbd +-\fIALWAYS\fR ++smbd\fIALWAYS\fR + uses a valid UNIX user to act on behalf of the client, even in + security = share + level security\&. +@@ -10177,8 +10159,6 @@ This parameter specifies the absolute pa + .sp + For example, a valid usershare directory might be /usr/local/samba/lib/usershares, set up as follows\&. + .sp +- +-.sp + .if n \{\ + .RS 4 + .\} +@@ -10650,10 +10630,10 @@ and + .sp -1 + .IP \(bu 2.3 + .\} +-\fI\fR +-\- When Samba is running in security = ads and your Active Directory Domain Controller does support the Microsoft "Services for Unix" (SFU) LDAP schema, winbind can retrieve the login shell and the home directory attributes directly from your Directory Server\&. Note that retrieving UID and GID from your ADS\-Server requires to use ++\fI\fR ++\- When Samba is running in security = ads and your Active Directory Domain Controller does support the Microsoft "Services for Unix" (SFU) LDAP schema, winbind can retrieve the login shell and the home directory attributes directly from your Directory Server\&. For SFU 3\&.0 or 3\&.5 simply choose "sfu", if you use SFU 2\&.0 please choose "sfu20"\&. Note that retrieving UID and GID from your ADS\-Server requires to use + \fIidmap config DOMAIN:backend\fR +-= ad as well\&. ++= ad as well\&. The primary group membership is currently always calculated via the "primaryGroupID" LDAP attribute\&. + .RE + .sp + .RE +@@ -11036,7 +11016,6 @@ special sections make life for an admini + This man page is correct for version 3 of the Samba suite\&. + .SH "SEE ALSO" + .PP +- + \fBsamba\fR(7), + \fBsmbpasswd\fR(8), + \fBswat\fR(8), diff --git a/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch b/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch new file mode 100644 index 000000000..5683ae6d2 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_dirsort_ea-support.patch @@ -0,0 +1,314 @@ +From 252499c1513c45764d039af8732cd97b37c8c494 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Thu, 9 Feb 2017 15:40:39 +0100 +Subject: [PATCH 1/3] smbd: Streamline get_ea_names_from_file + +Signed-off-by: Volker Lendecke +Reviewed-by: Ralph Boehme +Backported-by: Andreas Schneider +Backported-from: 27daed8fcf95eed2df112dc1c30c3a40b5c9565b +--- + source3/smbd/trans2.c | 89 +++++++++++++++++++++++++++++---------------------- + 1 file changed, 51 insertions(+), 38 deletions(-) + +diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c +index 98fd2af..49cfe9f 100644 +--- a/source3/smbd/trans2.c ++++ b/source3/smbd/trans2.c +@@ -201,12 +201,14 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, + files_struct *fsp, const char *fname, + char ***pnames, size_t *pnum_names) + { ++ char smallbuf[1024]; + /* Get a list of all xattrs. Max namesize is 64k. */ + size_t ea_namelist_size = 1024; +- char *ea_namelist = NULL; ++ char *ea_namelist = smallbuf; ++ char *to_free = NULL; + + char *p; +- char **names, **tmp; ++ char **names; + size_t num_names; + ssize_t sizeret = -1; + NTSTATUS status; +@@ -228,25 +230,24 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, + return NT_STATUS_OK; + } + +- /* +- * TALLOC the result early to get the talloc hierarchy right. +- */ +- +- names = TALLOC_ARRAY(mem_ctx, char *, 1); +- if (names == NULL) { +- DEBUG(0, ("talloc failed\n")); +- return NT_STATUS_NO_MEMORY; ++ if (fsp && fsp->fh->fd != -1) { ++ sizeret = SMB_VFS_FLISTXATTR(fsp, ea_namelist, ++ ea_namelist_size); ++ } else { ++ sizeret = SMB_VFS_LISTXATTR(conn, ++ fname, ++ ea_namelist, ++ ea_namelist_size); + } + +- while (ea_namelist_size <= 65536) { +- +- ea_namelist = TALLOC_REALLOC_ARRAY( +- names, ea_namelist, char, ea_namelist_size); ++ if ((sizeret == -1) && (errno == ERANGE)) { ++ ea_namelist_size = 65536; ++ ea_namelist = TALLOC_ARRAY(mem_ctx, char, ea_namelist_size); + if (ea_namelist == NULL) { + DEBUG(0, ("talloc failed\n")); +- TALLOC_FREE(names); + return NT_STATUS_NO_MEMORY; + } ++ to_free = ea_namelist; + + if (fsp && fsp->fh->fd != -1) { + sizeret = SMB_VFS_FLISTXATTR(fsp, ea_namelist, +@@ -255,25 +256,18 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, + sizeret = SMB_VFS_LISTXATTR(conn, fname, ea_namelist, + ea_namelist_size); + } +- +- if ((sizeret == -1) && (errno == ERANGE)) { +- ea_namelist_size *= 2; +- } +- else { +- break; +- } + } + + if (sizeret == -1) { +- TALLOC_FREE(names); +- return map_nt_error_from_unix(errno); ++ status = map_nt_error_from_unix(errno); ++ TALLOC_FREE(to_free); ++ return status; + } + +- DEBUG(10, ("get_ea_list_from_file: ea_namelist size = %u\n", +- (unsigned int)sizeret)); ++ DEBUG(10, ("ea_namelist size = %zd\n", sizeret)); + + if (sizeret == 0) { +- TALLOC_FREE(names); ++ TALLOC_FREE(to_free); + return NT_STATUS_OK; + } + +@@ -282,7 +276,7 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, + */ + + if (ea_namelist[sizeret-1] != '\0') { +- TALLOC_FREE(names); ++ TALLOC_FREE(to_free); + return NT_STATUS_INTERNAL_ERROR; + } + +@@ -295,26 +289,45 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, + num_names += 1; + } + +- tmp = TALLOC_REALLOC_ARRAY(mem_ctx, names, char *, num_names); +- if (tmp == NULL) { ++ *pnum_names = num_names; ++ ++ if (pnames == NULL) { ++ TALLOC_FREE(to_free); ++ return NT_STATUS_OK; ++ } ++ ++ names = TALLOC_ARRAY(mem_ctx, char *, num_names); ++ if (names == NULL) { + DEBUG(0, ("talloc failed\n")); +- TALLOC_FREE(names); ++ TALLOC_FREE(to_free); + return NT_STATUS_NO_MEMORY; + } + +- names = tmp; ++ if (ea_namelist == smallbuf) { ++ ea_namelist = talloc_memdup(names, smallbuf, sizeret); ++ if (ea_namelist == NULL) { ++ TALLOC_FREE(names); ++ return NT_STATUS_NO_MEMORY; ++ } ++ } else { ++ talloc_steal(names, ea_namelist); ++ ++ ea_namelist = talloc_realloc(names, ea_namelist, char, ++ sizeret); ++ if (ea_namelist == NULL) { ++ TALLOC_FREE(names); ++ return NT_STATUS_NO_MEMORY; ++ } ++ } ++ + num_names = 0; + + for (p = ea_namelist; p - ea_namelist < sizeret; p += strlen(p)+1) { + names[num_names++] = p; + } + +- if (pnames) { +- *pnames = names; +- } else { +- TALLOC_FREE(names); +- } +- *pnum_names = num_names; ++ *pnames = names; ++ + return NT_STATUS_OK; + } + +-- +2.9.3 + + +From 17563ab22ad19b34e1d9a1d12b2594c4186718b6 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Tue, 25 Oct 2016 12:28:12 +0200 +Subject: [PATCH 2/3] lib/util/charset: Optimize next_codepoint for the ascii + case + +Signed-off-by: Volker Lendecke +Reviewed-by: Ralph Boehme + +(cherry picked from commit 07d9a909ba6853fb0b96f6d86e4cf0d5d1b35b28) +--- + lib/util/charset/codepoints.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/util/charset/codepoints.c b/lib/util/charset/codepoints.c +index 5ee95a8..7d157a3 100644 +--- a/lib/util/charset/codepoints.c ++++ b/lib/util/charset/codepoints.c +@@ -495,6 +495,10 @@ _PUBLIC_ codepoint_t next_codepoint_ext(const char *str, charset_t src_charset, + + _PUBLIC_ codepoint_t next_codepoint(const char *str, size_t *size) + { ++ if ((str[0] & 0x80) == 0) { ++ *size = 1; ++ return str[0]; ++ } + return next_codepoint_convenience(get_iconv_convenience(), str, size); + } + +-- +2.9.3 + + +From ac8f6faa891fd282fb39ccb8e75a364bf97a5f2b Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Thu, 9 Feb 2017 15:05:01 +0100 +Subject: [PATCH 3/3] s3-vfs: Only walk the directory once in + open_and_sort_dir() + +On a slow filesystem or network filesystem this can make a huge +difference. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=12571 + +Signed-off-by: Andreas Schneider +--- + source3/modules/vfs_dirsort.c | 61 +++++++++++++++++++++++++++---------------- + 1 file changed, 38 insertions(+), 23 deletions(-) + +diff --git a/source3/modules/vfs_dirsort.c b/source3/modules/vfs_dirsort.c +index 698e96b..66582e6 100644 +--- a/source3/modules/vfs_dirsort.c ++++ b/source3/modules/vfs_dirsort.c +@@ -68,8 +68,10 @@ static bool get_sorted_dir_mtime(vfs_handle_struct *handle, + static bool open_and_sort_dir(vfs_handle_struct *handle, + struct dirsort_privates *data) + { +- unsigned int i = 0; +- unsigned int total_count = 0; ++ uint32_t total_count = 0; ++ /* This should be enough for most use cases */ ++ uint32_t dirent_allocated = 64; ++ SMB_STRUCT_DIRENT *dp; + + data->number_of_entries = 0; + +@@ -77,38 +79,51 @@ static bool open_and_sort_dir(vfs_handle_struct *handle, + return false; + } + +- while (SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL) +- != NULL) { +- total_count++; +- } +- +- if (total_count == 0) { ++ dp = SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL); ++ if (dp == NULL) { + return false; + } + +- /* Open the underlying directory and count the number of entries +- Skip back to the beginning as we'll read it again */ +- SMB_VFS_NEXT_REWINDDIR(handle, data->source_directory); +- + /* Set up an array and read the directory entries into it */ + TALLOC_FREE(data->directory_list); /* destroy previous cache if needed */ + data->directory_list = talloc_zero_array(data, + SMB_STRUCT_DIRENT, +- total_count); +- if (!data->directory_list) { ++ dirent_allocated); ++ if (data->directory_list == NULL) { + return false; + } +- for (i = 0; i < total_count; i++) { +- SMB_STRUCT_DIRENT *dp = SMB_VFS_NEXT_READDIR(handle, +- data->source_directory, +- NULL); +- if (dp == NULL) { +- break; ++ ++ do { ++ if (total_count >= dirent_allocated) { ++ struct dirent *dlist; ++ ++ /* ++ * Be memory friendly. ++ * ++ * We should not double the amount of memory. With a lot ++ * of files we reach easily 50MB, and doubling will ++ * get much bigger just for a few files more. ++ * ++ * For 200k files this means 50 memory reallocations. ++ */ ++ dirent_allocated += 4096; ++ ++ dlist = talloc_realloc(data, ++ data->directory_list, ++ SMB_STRUCT_DIRENT, ++ dirent_allocated); ++ if (dlist == NULL) { ++ break; ++ } ++ data->directory_list = dlist; + } +- data->directory_list[i] = *dp; +- } ++ data->directory_list[total_count] = *dp; ++ ++ total_count++; ++ dp = SMB_VFS_NEXT_READDIR(handle, data->source_directory, NULL); ++ } while (dp != NULL); + +- data->number_of_entries = i; ++ data->number_of_entries = total_count; + + /* Sort the directory entries by name */ + TYPESAFE_QSORT(data->directory_list, data->number_of_entries, compare_dirent); +-- +2.9.3 + diff --git a/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch b/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch new file mode 100644 index 000000000..564ecb423 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_dropbox_share.patch @@ -0,0 +1,271 @@ +From 8f286450a223d002358f6dfe81b770fee86c3c85 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Tue, 3 Dec 2013 13:20:17 +0100 +Subject: [PATCH 1/3] PATCHSET15: smbd: Fix regression for the dropbox case. + +We need to allow to save a file to a directory with perm -wx. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297 + +Signed-off-by: Volker Lendecke +Reviewed-by: Jeremy Allison +Reviewed-by: Andreas Schneider +(cherry picked from commit 5b49fe24c906cbae12beff7a1b45de6809258cab) +--- + source3/smbd/filename.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c +index 8ef0c0a..ca19369 100644 +--- a/source3/smbd/filename.c ++++ b/source3/smbd/filename.c +@@ -716,7 +716,10 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx, + * here. + */ + if (errno == EACCES) { +- if (ucf_flags & UCF_CREATING_FILE) { ++ if ((ucf_flags & UCF_CREATING_FILE) == 0) { ++ status = NT_STATUS_ACCESS_DENIED; ++ goto fail; ++ } else { + /* + * This is the dropbox + * behaviour. A dropbox is a +@@ -728,11 +731,8 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx, + * nevertheless want to allow + * users creating a file. + */ +- status = NT_STATUS_OBJECT_PATH_NOT_FOUND; +- } else { +- status = NT_STATUS_ACCESS_DENIED; ++ errno = 0; + } +- goto fail; + } + + if ((errno != 0) && (errno != ENOENT)) { +-- +1.9.3 + + +From 38674e8f208a7e8f2ead72266292f30b7ea33c87 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 3 Dec 2013 10:19:09 -0800 +Subject: [PATCH 2/3] PATCHSET15: smbd: change flag name from UCF_CREATING_FILE + to UCF_PREP_CREATEFILE + +In preparation to using it for all open calls. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297 + +Signed-off-by: Jeremy Allison +Reviewed-by: Volker Lendecke +(cherry picked from commit 874318a97868e08837a1febb1be8e8a167b5ae0f) +--- + source3/include/smb.h | 2 +- + source3/smbd/filename.c | 2 +- + source3/smbd/nttrans.c | 4 ++-- + source3/smbd/reply.c | 10 +++++----- + source3/smbd/smb2_create.c | 2 +- + 5 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/source3/include/smb.h b/source3/include/smb.h +index 2d04373..559e061 100644 +--- a/source3/include/smb.h ++++ b/source3/include/smb.h +@@ -1716,7 +1716,7 @@ struct smb_file_time { + #define UCF_COND_ALLOW_WCARD_LCOMP 0x00000004 + #define UCF_POSIX_PATHNAMES 0x00000008 + #define UCF_UNIX_NAME_LOOKUP 0x00000010 +-#define UCF_CREATING_FILE 0x00000020 ++#define UCF_PREP_CREATEFILE 0x00000020 + + /* + * smb_filename +diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c +index ca19369..2e68e52 100644 +--- a/source3/smbd/filename.c ++++ b/source3/smbd/filename.c +@@ -716,7 +716,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx, + * here. + */ + if (errno == EACCES) { +- if ((ucf_flags & UCF_CREATING_FILE) == 0) { ++ if ((ucf_flags & UCF_PREP_CREATEFILE) == 0) { + status = NT_STATUS_ACCESS_DENIED; + goto fail; + } else { +diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c +index 4c145e0..f5da720 100644 +--- a/source3/smbd/nttrans.c ++++ b/source3/smbd/nttrans.c +@@ -537,7 +537,7 @@ void reply_ntcreate_and_X(struct smb_request *req) + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, + (create_disposition == FILE_CREATE) +- ? UCF_CREATING_FILE : 0, ++ ? UCF_PREP_CREATEFILE : 0, + NULL, + &smb_fname); + +@@ -1167,7 +1167,7 @@ static void call_nt_transact_create(connection_struct *conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, + (create_disposition == FILE_CREATE) +- ? UCF_CREATING_FILE : 0, ++ ? UCF_PREP_CREATEFILE : 0, + NULL, + &smb_fname); + +diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c +index 0585a6e..8478031 100644 +--- a/source3/smbd/reply.c ++++ b/source3/smbd/reply.c +@@ -1761,7 +1761,7 @@ void reply_open(struct smb_request *req) + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, + (create_disposition == FILE_CREATE) +- ? UCF_CREATING_FILE : 0, ++ ? UCF_PREP_CREATEFILE : 0, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +@@ -1939,7 +1939,7 @@ void reply_open_and_X(struct smb_request *req) + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, + (create_disposition == FILE_CREATE) +- ? UCF_CREATING_FILE : 0, ++ ? UCF_PREP_CREATEFILE : 0, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +@@ -2147,7 +2147,7 @@ void reply_mknew(struct smb_request *req) + conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- UCF_CREATING_FILE, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +@@ -2288,7 +2288,7 @@ void reply_ctemp(struct smb_request *req) + status = filename_convert(ctx, conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- UCF_CREATING_FILE, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +@@ -5541,7 +5541,7 @@ void reply_mkdir(struct smb_request *req) + status = filename_convert(ctx, conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + directory, +- UCF_CREATING_FILE, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_dname); + if (!NT_STATUS_IS_OK(status)) { +diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c +index 0862990..cd15852 100644 +--- a/source3/smbd/smb2_create.c ++++ b/source3/smbd/smb2_create.c +@@ -695,7 +695,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, + smb1req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, + (in_create_disposition == FILE_CREATE) ? +- UCF_CREATING_FILE : 0, ++ UCF_PREP_CREATEFILE : 0, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +-- +1.9.3 + + +From d3fb56a7239ef4173ff13f2fec2beb44402dee6b Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Tue, 3 Dec 2013 10:21:16 -0800 +Subject: [PATCH 3/3] PATCHSET15: smbd: Always use UCF_PREP_CREATEFILE for + filename_convert calls to resolve a path for open. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=10297 + +Signed-off-by: Jeremy Allison +Reviewed-by: Volker Lendecke + +Autobuild-User(master): Jeremy Allison +Autobuild-Date(master): Mon Dec 9 21:02:21 CET 2013 on sn-devel-104 + +(cherry picked from commit f98d10af2a05f0261611f4cabdfe274cd9fe91c0) +--- + source3/smbd/nttrans.c | 6 ++---- + source3/smbd/reply.c | 6 ++---- + source3/smbd/smb2_create.c | 3 +-- + 3 files changed, 5 insertions(+), 10 deletions(-) + +diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c +index f5da720..f7d9b9d 100644 +--- a/source3/smbd/nttrans.c ++++ b/source3/smbd/nttrans.c +@@ -536,8 +536,7 @@ void reply_ntcreate_and_X(struct smb_request *req) + conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- (create_disposition == FILE_CREATE) +- ? UCF_PREP_CREATEFILE : 0, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + +@@ -1166,8 +1165,7 @@ static void call_nt_transact_create(connection_struct *conn, + conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- (create_disposition == FILE_CREATE) +- ? UCF_PREP_CREATEFILE : 0, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + +diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c +index 8478031..1583c23 100644 +--- a/source3/smbd/reply.c ++++ b/source3/smbd/reply.c +@@ -1760,8 +1760,7 @@ void reply_open(struct smb_request *req) + conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- (create_disposition == FILE_CREATE) +- ? UCF_PREP_CREATEFILE : 0, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +@@ -1938,8 +1937,7 @@ void reply_open_and_X(struct smb_request *req) + conn, + req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- (create_disposition == FILE_CREATE) +- ? UCF_PREP_CREATEFILE : 0, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c +index cd15852..d0cda33 100644 +--- a/source3/smbd/smb2_create.c ++++ b/source3/smbd/smb2_create.c +@@ -694,8 +694,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, + smb1req->conn, + smb1req->flags2 & FLAGS2_DFS_PATHNAMES, + fname, +- (in_create_disposition == FILE_CREATE) ? +- UCF_PREP_CREATEFILE : 0, ++ UCF_PREP_CREATEFILE, + NULL, + &smb_fname); + if (!NT_STATUS_IS_OK(status)) { +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.99-fix_force_group.patch b/src/patches/samba/samba-3.6.99-fix_force_group.patch new file mode 100644 index 000000000..2d4bb9557 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_force_group.patch @@ -0,0 +1,68 @@ +From a502759e2e20e8001355b26d1e974a7116d78b92 Mon Sep 17 00:00:00 2001 +From: Justin Maggard +Date: Tue, 21 Jul 2015 15:17:30 -0700 +Subject: [PATCH] PATCHSET27: s3-passdb: Respect LOOKUP_NAME_GROUP flag in sid + lookup. + +Somewhere along the line, a config line like "valid users = @foo" +broke when "foo" also exists as a user. + +user_ok_token() already does the right thing by adding the LOOKUP_NAME_GROUP +flag; but lookup_name() was not respecting that flag, and went ahead and looked +for users anyway. + +Regression test to follow. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11320 + +Signed-off-by: Justin Maggard +Reviewed-by: Jeremy Allison +Reviewed-by: Marc Muehlfeld + +Autobuild-User(master): Jeremy Allison +Autobuild-Date(master): Tue Jul 28 21:35:58 CEST 2015 on sn-devel-104 + +(cherry picked from commit dc99d451bf23668d73878847219682fced547622) +--- + source3/passdb/lookup_sid.c | 4 ++-- + source3/passdb/lookup_sid.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c +index dcc2911..18d0e37 100644 +--- a/source3/passdb/lookup_sid.c ++++ b/source3/passdb/lookup_sid.c +@@ -119,7 +119,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx, + goto ok; + } + +- if (((flags & LOOKUP_NAME_NO_NSS) == 0) ++ if (((flags & (LOOKUP_NAME_NO_NSS|LOOKUP_NAME_GROUP)) == 0) + && strequal(domain, unix_users_domain_name())) { + if (lookup_unix_user_name(name, &sid)) { + type = SID_NAME_USER; +@@ -292,7 +292,7 @@ bool lookup_name(TALLOC_CTX *mem_ctx, + /* 11. Ok, windows would end here. Samba has two more options: + Unmapped users and unmapped groups */ + +- if (((flags & LOOKUP_NAME_NO_NSS) == 0) ++ if (((flags & (LOOKUP_NAME_NO_NSS|LOOKUP_NAME_GROUP)) == 0) + && lookup_unix_user_name(name, &sid)) { + domain = talloc_strdup(tmp_ctx, unix_users_domain_name()); + type = SID_NAME_USER; +diff --git a/source3/passdb/lookup_sid.h b/source3/passdb/lookup_sid.h +index b2f5cf5..4b26e0a 100644 +--- a/source3/passdb/lookup_sid.h ++++ b/source3/passdb/lookup_sid.h +@@ -29,7 +29,7 @@ + #define LOOKUP_NAME_NONE 0x00000000 + #define LOOKUP_NAME_ISOLATED 0x00000001 /* Look up unqualified names */ + #define LOOKUP_NAME_REMOTE 0x00000002 /* Ask others */ +-#define LOOKUP_NAME_GROUP 0x00000004 /* (unused) This is a NASTY hack for ++#define LOOKUP_NAME_GROUP 0x00000004 /* This is a NASTY hack for + valid users = @foo where foo also + exists in as user. */ + #define LOOKUP_NAME_NO_NSS 0x00000008 /* no NSS calls to avoid +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch b/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch new file mode 100644 index 000000000..6552e1a0d --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_force_user_winbind_default_domain.patch @@ -0,0 +1,58 @@ +From 4d187b353d77761d40b04b8451f7ebe11fc8fab8 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 31 Mar 2015 18:15:51 +0200 +Subject: [PATCH] PATCHSET24: s3-passdb: Fix 'force user' with winbind default + domain + +If we set 'winbind use default domain' and specify 'force user = user' +without a domain name we fail to log in. In this case we need to try a +lookup with the domain name. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11185 + +Signed-off-by: Andreas Schneider +Reviewed-by: Jeremy Allison + +(cherry picked from commit cd4442c7ac93e165862c9195a7c345472646aa59) +--- + source3/passdb/lookup_sid.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c +index 64a181e..dcc2911 100644 +--- a/source3/passdb/lookup_sid.c ++++ b/source3/passdb/lookup_sid.c +@@ -391,6 +391,30 @@ bool lookup_name_smbconf(TALLOC_CTX *mem_ctx, + ret_sid, ret_type); + } + ++ /* Try with winbind default domain name. */ ++ if (lp_winbind_use_default_domain()) { ++ bool ok; ++ ++ qualified_name = talloc_asprintf(mem_ctx, ++ "%s\\%s", ++ lp_workgroup(), ++ full_name); ++ if (qualified_name == NULL) { ++ return false; ++ } ++ ++ ok = lookup_name(mem_ctx, ++ qualified_name, ++ flags, ++ ret_domain, ++ ret_name, ++ ret_sid, ++ ret_type); ++ if (ok) { ++ return true; ++ } ++ } ++ + /* Try with our own SAM name. */ + qualified_name = talloc_asprintf(mem_ctx, "%s\\%s", + get_global_sam_name(), +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch b/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch new file mode 100644 index 000000000..cd732b04b --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_force_user_with_security_ads.patch @@ -0,0 +1,1292 @@ +From 77942b3569d379a097b2f7c58203d0379fd80ddc Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 16 Dec 2013 12:57:20 +0100 +Subject: [PATCH 1/6] s3-lib: Add winbind_lookup_usersids(). + +Pair-Programmed-With: Guenther Deschner +Signed-off-by: Guenther Deschner +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett +--- + source3/lib/winbind_util.c | 34 ++++++++++++++++++++++++++++++++++ + source3/lib/winbind_util.h | 4 ++++ + 2 files changed, 38 insertions(+) + +diff --git a/source3/lib/winbind_util.c b/source3/lib/winbind_util.c +index f30bcfc..758fe73 100644 +--- a/source3/lib/winbind_util.c ++++ b/source3/lib/winbind_util.c +@@ -342,6 +342,40 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx, + return true; + } + ++bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx, ++ const struct dom_sid *user_sid, ++ uint32_t *p_num_sids, ++ struct dom_sid **p_sids) ++{ ++ wbcErr ret; ++ struct wbcDomainSid dom_sid; ++ struct wbcDomainSid *sid_list = NULL; ++ uint32_t num_sids; ++ ++ memcpy(&dom_sid, user_sid, sizeof(dom_sid)); ++ ++ ret = wbcLookupUserSids(&dom_sid, ++ false, ++ &num_sids, ++ &sid_list); ++ if (ret != WBC_ERR_SUCCESS) { ++ return false; ++ } ++ ++ *p_sids = talloc_array(mem_ctx, struct dom_sid, num_sids); ++ if (*p_sids == NULL) { ++ wbcFreeMemory(sid_list); ++ return false; ++ } ++ ++ memcpy(*p_sids, sid_list, sizeof(dom_sid) * num_sids); ++ ++ *p_num_sids = num_sids; ++ wbcFreeMemory(sid_list); ++ ++ return true; ++} ++ + #else /* WITH_WINBIND */ + + struct passwd * winbind_getpwnam(const char * name) +diff --git a/source3/lib/winbind_util.h b/source3/lib/winbind_util.h +index 541bb95..abbc5a9 100644 +--- a/source3/lib/winbind_util.h ++++ b/source3/lib/winbind_util.h +@@ -58,5 +58,9 @@ bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx, + size_t num_members, + uint32_t **pp_alias_rids, + size_t *p_num_alias_rids); ++bool winbind_lookup_usersids(TALLOC_CTX *mem_ctx, ++ const struct dom_sid *user_sid, ++ uint32_t *p_num_sids, ++ struct dom_sid **p_sids); + + #endif /* __LIB__WINBIND_UTIL_H__ */ +-- +1.8.5.3 + + +From a776571e344110b89340f5008bed869763aa4dff Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 13 Dec 2013 19:08:34 +0100 +Subject: [PATCH 2/6] s3-auth: Add passwd_to_SamInfo3(). + +First this function tries to contacts winbind if the user is a domain +user to get valid information about it. If winbind isn't running it will +try to create everything from the passwd struct. This is not always +reliable but works in most cases. It improves the current situation +which doesn't talk to winbind at all. + +Pair-Programmed-With: Guenther Deschner +Signed-off-by: Guenther Deschner +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett +--- + source3/auth/proto.h | 4 ++ + source3/auth/server_info.c | 116 +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 120 insertions(+) + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index 3d1fa06..c5a9647 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -225,6 +225,10 @@ NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx, + const char *login_server, + struct netr_SamInfo3 **_info3, + struct extra_auth_info *extra); ++NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, ++ const char *unix_username, ++ const struct passwd *pwd, ++ struct netr_SamInfo3 **pinfo3); + struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx, + struct netr_SamInfo3 *orig); + struct netr_SamInfo3 *wbcAuthUserInfo_to_netr_SamInfo3(TALLOC_CTX *mem_ctx, +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index 90b3ed6..32ffd3a 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -24,6 +24,7 @@ + #include "../libcli/security/security.h" + #include "rpc_client/util_netlogon.h" + #include "nsswitch/libwbclient/wbclient.h" ++#include "lib/winbind_util.h" + #include "passdb.h" + + #undef DBGC_CLASS +@@ -476,6 +477,121 @@ NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx, + return NT_STATUS_OK; + } + ++NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, ++ const char *unix_username, ++ const struct passwd *pwd, ++ struct netr_SamInfo3 **pinfo3) ++{ ++ struct netr_SamInfo3 *info3; ++ NTSTATUS status; ++ TALLOC_CTX *tmp_ctx; ++ const char *domain_name = NULL; ++ const char *user_name = NULL; ++ struct dom_sid domain_sid; ++ struct dom_sid user_sid; ++ struct dom_sid group_sid; ++ enum lsa_SidType type; ++ uint32_t num_sids = 0; ++ struct dom_sid *user_sids = NULL; ++ bool ok; ++ ++ tmp_ctx = talloc_stackframe(); ++ ++ ok = lookup_name_smbconf(tmp_ctx, ++ unix_username, ++ LOOKUP_NAME_ALL, ++ &domain_name, ++ &user_name, ++ &user_sid, ++ &type); ++ if (!ok) { ++ status = NT_STATUS_NO_SUCH_USER; ++ goto done; ++ } ++ ++ if (type != SID_NAME_USER) { ++ status = NT_STATUS_NO_SUCH_USER; ++ goto done; ++ } ++ ++ ok = winbind_lookup_usersids(tmp_ctx, ++ &user_sid, ++ &num_sids, ++ &user_sids); ++ /* Check if winbind is running */ ++ if (ok) { ++ /* ++ * Winbind is running and the first element of the user_sids ++ * is the primary group. ++ */ ++ if (num_sids > 0) { ++ group_sid = user_sids[0]; ++ } ++ } else { ++ /* ++ * Winbind is not running, create the group_sid from the ++ * group id. ++ */ ++ gid_to_sid(&group_sid, pwd->pw_gid); ++ } ++ ++ /* Make sure we have a valid group sid */ ++ ok = !is_null_sid(&group_sid); ++ if (!ok) { ++ status = NT_STATUS_NO_SUCH_USER; ++ goto done; ++ } ++ ++ /* Construct a netr_SamInfo3 from the information we have */ ++ info3 = talloc_zero(tmp_ctx, struct netr_SamInfo3); ++ if (!info3) { ++ status = NT_STATUS_NO_MEMORY; ++ goto done; ++ } ++ ++ info3->base.account_name.string = talloc_strdup(info3, unix_username); ++ if (info3->base.account_name.string == NULL) { ++ status = NT_STATUS_NO_MEMORY; ++ goto done; ++ } ++ ++ ZERO_STRUCT(domain_sid); ++ ++ sid_copy(&domain_sid, &user_sid); ++ sid_split_rid(&domain_sid, &info3->base.rid); ++ info3->base.domain_sid = dom_sid_dup(info3, &domain_sid); ++ ++ ok = sid_peek_check_rid(&domain_sid, &group_sid, ++ &info3->base.primary_gid); ++ if (!ok) { ++ DEBUG(1, ("The primary group domain sid(%s) does not " ++ "match the domain sid(%s) for %s(%s)\n", ++ sid_string_dbg(&group_sid), ++ sid_string_dbg(&domain_sid), ++ unix_username, ++ sid_string_dbg(&user_sid))); ++ status = NT_STATUS_INVALID_SID; ++ goto done; ++ } ++ ++ info3->base.acct_flags = ACB_NORMAL; ++ ++ if (num_sids) { ++ status = group_sids_to_info3(info3, user_sids, num_sids); ++ if (!NT_STATUS_IS_OK(status)) { ++ goto done; ++ } ++ } ++ ++ *pinfo3 = talloc_steal(mem_ctx, info3); ++ ++ status = NT_STATUS_OK; ++done: ++ talloc_free(tmp_ctx); ++ ++ return status; ++} ++ + #undef RET_NOMEM + + #define RET_NOMEM(ptr) do { \ +-- +1.8.5.3 + + +From de5914820e7e8665036411061911a9a5ed06a673 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 13 Dec 2013 19:11:01 +0100 +Subject: [PATCH 3/6] s3-auth: Pass talloc context to make_server_info_pw(). + +Pair-Programmed-With: Guenther Deschner +Signed-off-by: Guenther Deschner +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett +--- + source3/auth/auth_server.c | 5 ++++- + source3/auth/auth_unix.c | 7 +++++-- + source3/auth/auth_util.c | 51 ++++++++++++++++++++++++++-------------------- + source3/auth/proto.h | 9 ++++---- + source3/auth/user_krb5.c | 2 +- + 5 files changed, 44 insertions(+), 30 deletions(-) + +diff --git a/source3/auth/auth_server.c b/source3/auth/auth_server.c +index fdd7671..969caad 100644 +--- a/source3/auth/auth_server.c ++++ b/source3/auth/auth_server.c +@@ -448,7 +448,10 @@ use this machine as the password server.\n")); + if ( (pass = smb_getpwnam(talloc_tos(), user_info->mapped.account_name, + &real_username, True )) != NULL ) + { +- nt_status = make_server_info_pw(server_info, pass->pw_name, pass); ++ nt_status = make_server_info_pw(mem_ctx, ++ pass->pw_name, ++ pass, ++ server_info); + TALLOC_FREE(pass); + TALLOC_FREE(real_username); + } +diff --git a/source3/auth/auth_unix.c b/source3/auth/auth_unix.c +index 086c39e..d6ef547 100644 +--- a/source3/auth/auth_unix.c ++++ b/source3/auth/auth_unix.c +@@ -56,8 +56,11 @@ static NTSTATUS check_unix_security(const struct auth_context *auth_context, + unbecome_root(); + + if (NT_STATUS_IS_OK(nt_status)) { +- if (pass) { +- make_server_info_pw(server_info, pass->pw_name, pass); ++ if (pass != NULL) { ++ nt_status = make_server_info_pw(mem_ctx, ++ pass->pw_name, ++ pass, ++ server_info); + } else { + /* we need to do somthing more useful here */ + nt_status = NT_STATUS_NO_SUCH_USER; +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index 288f461..3aa229d 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -555,14 +555,15 @@ NTSTATUS create_local_token(struct auth_serversupplied_info *server_info) + to a struct samu + ***************************************************************************/ + +-NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info, +- char *unix_username, +- struct passwd *pwd) ++NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx, ++ const char *unix_username, ++ const struct passwd *pwd, ++ struct auth_serversupplied_info **server_info) + { + NTSTATUS status; + struct samu *sampass = NULL; + char *qualified_name = NULL; +- TALLOC_CTX *mem_ctx = NULL; ++ TALLOC_CTX *tmp_ctx; + struct dom_sid u_sid; + enum lsa_SidType type; + struct auth_serversupplied_info *result; +@@ -580,27 +581,27 @@ NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info, + * plaintext passwords were used with no SAM backend. + */ + +- mem_ctx = talloc_init("make_server_info_pw_tmp"); +- if (!mem_ctx) { ++ tmp_ctx = talloc_stackframe(); ++ if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + +- qualified_name = talloc_asprintf(mem_ctx, "%s\\%s", ++ qualified_name = talloc_asprintf(tmp_ctx, "%s\\%s", + unix_users_domain_name(), + unix_username ); + if (!qualified_name) { +- TALLOC_FREE(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + return NT_STATUS_NO_MEMORY; + } + +- if (!lookup_name(mem_ctx, qualified_name, LOOKUP_NAME_ALL, ++ if (!lookup_name(tmp_ctx, qualified_name, LOOKUP_NAME_ALL, + NULL, NULL, + &u_sid, &type)) { +- TALLOC_FREE(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + return NT_STATUS_NO_SUCH_USER; + } + +- TALLOC_FREE(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + + if (type != SID_NAME_USER) { + return NT_STATUS_NO_SUCH_USER; +@@ -623,7 +624,7 @@ NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info, + /* set the user sid to be the calculated u_sid */ + pdb_set_user_sid(sampass, &u_sid, PDB_SET); + +- result = make_server_info(NULL); ++ result = make_server_info(mem_ctx); + if (result == NULL) { + TALLOC_FREE(sampass); + return NT_STATUS_NO_MEMORY; +@@ -908,37 +909,43 @@ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx, + { + struct auth_serversupplied_info *result; + struct passwd *pwd; ++ TALLOC_CTX *tmp_ctx; + NTSTATUS status; + +- pwd = Get_Pwnam_alloc(talloc_tos(), username); +- if (pwd == NULL) { +- return NT_STATUS_NO_SUCH_USER; ++ tmp_ctx = talloc_stackframe(); ++ if (tmp_ctx == NULL) { ++ return NT_STATUS_NO_MEMORY; + } + +- status = make_server_info_pw(&result, pwd->pw_name, pwd); +- +- TALLOC_FREE(pwd); ++ pwd = Get_Pwnam_alloc(tmp_ctx, username); ++ if (pwd == NULL) { ++ status = NT_STATUS_NO_SUCH_USER; ++ goto done; ++ } + ++ status = make_server_info_pw(tmp_ctx, pwd->pw_name, pwd, &result); + if (!NT_STATUS_IS_OK(status)) { +- return status; ++ goto done; + } + + result->nss_token = true; + result->guest = is_guest; + + if (use_guest_token) { +- status = make_server_info_guest(mem_ctx, &result); ++ status = make_server_info_guest(tmp_ctx, &result); + } else { + status = create_local_token(result); + } + ++ *presult = talloc_steal(mem_ctx, result); ++done: ++ talloc_free(tmp_ctx); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(result); + return status; + } + +- *presult = talloc_steal(mem_ctx, result); +- return NT_STATUS_OK; ++ return status; + } + + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index c5a9647..50a27cf 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -144,14 +144,15 @@ NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username, + bool user_in_group_sid(const char *username, const struct dom_sid *group_sid); + bool user_in_group(const char *username, const char *groupname); + struct passwd; +-NTSTATUS make_server_info_pw(struct auth_serversupplied_info **server_info, +- char *unix_username, +- struct passwd *pwd); ++NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx, ++ const char *unix_username, ++ const struct passwd *pwd, ++ struct auth_serversupplied_info **server_info); + NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx, + const char *username, + bool use_guest_token, + bool is_guest, +- struct auth_serversupplied_info **presult); ++ struct auth_serversupplied_info **session_info); + struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *src); + bool init_guest_info(void); +diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c +index e52149a..1214b45 100644 +--- a/source3/auth/user_krb5.c ++++ b/source3/auth/user_krb5.c +@@ -238,7 +238,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + */ + DEBUG(10, ("didn't find user %s in passdb, calling " + "make_server_info_pw\n", username)); +- status = make_server_info_pw(&tmp, username, pw); ++ status = make_server_info_pw(mem_ctx, username, pw, &tmp); + } + TALLOC_FREE(sampass); + +-- +1.8.5.3 + + +From 840b5b996a719922a1fdaa5ee2188a4d4c60f345 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 13 Dec 2013 19:19:02 +0100 +Subject: [PATCH 4/6] s3-auth: Use passwd_to_SamInfo3(). + +Correctly lookup users which come from smb.conf. passwd_to_SamInfo3() +tries to contact winbind if the user is a domain user to get +valid information about it. If winbind isn't running it will try to +create everything from the passwd struct. This is not always reliable +but works in most cases. It improves the current situation which doesn't +talk to winbind at all. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598 + +Pair-Programmed-With: Guenther Deschner +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett + +Autobuild-User(master): Andrew Bartlett +Autobuild-Date(master): Wed Feb 5 01:40:38 CET 2014 on sn-devel-104 +--- + source3/auth/auth_util.c | 91 +++++++++------------------------------------- + source3/auth/server_info.c | 22 ++++++++++- + 2 files changed, 37 insertions(+), 76 deletions(-) + +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index 3aa229d..5ffdb25f 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -561,100 +561,43 @@ NTSTATUS make_server_info_pw(TALLOC_CTX *mem_ctx, + struct auth_serversupplied_info **server_info) + { + NTSTATUS status; +- struct samu *sampass = NULL; +- char *qualified_name = NULL; +- TALLOC_CTX *tmp_ctx; +- struct dom_sid u_sid; +- enum lsa_SidType type; ++ TALLOC_CTX *tmp_ctx = NULL; + struct auth_serversupplied_info *result; + +- /* +- * The SID returned in server_info->sam_account is based +- * on our SAM sid even though for a pure UNIX account this should +- * not be the case as it doesn't really exist in the SAM db. +- * This causes lookups on "[in]valid users" to fail as they +- * will lookup this name as a "Unix User" SID to check against +- * the user token. Fix this by adding the "Unix User"\unix_username +- * SID to the sid array. The correct fix should probably be +- * changing the server_info->sam_account user SID to be a +- * S-1-22 Unix SID, but this might break old configs where +- * plaintext passwords were used with no SAM backend. +- */ +- + tmp_ctx = talloc_stackframe(); + if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + +- qualified_name = talloc_asprintf(tmp_ctx, "%s\\%s", +- unix_users_domain_name(), +- unix_username ); +- if (!qualified_name) { +- TALLOC_FREE(tmp_ctx); +- return NT_STATUS_NO_MEMORY; +- } +- +- if (!lookup_name(tmp_ctx, qualified_name, LOOKUP_NAME_ALL, +- NULL, NULL, +- &u_sid, &type)) { +- TALLOC_FREE(tmp_ctx); +- return NT_STATUS_NO_SUCH_USER; +- } +- +- TALLOC_FREE(tmp_ctx); +- +- if (type != SID_NAME_USER) { +- return NT_STATUS_NO_SUCH_USER; +- } +- +- if ( !(sampass = samu_new( NULL )) ) { +- return NT_STATUS_NO_MEMORY; +- } +- +- status = samu_set_unix( sampass, pwd ); +- if (!NT_STATUS_IS_OK(status)) { +- return status; +- } +- +- /* In pathological cases the above call can set the account +- * name to the DOMAIN\username form. Reset the account name +- * using unix_username */ +- pdb_set_username(sampass, unix_username, PDB_SET); +- +- /* set the user sid to be the calculated u_sid */ +- pdb_set_user_sid(sampass, &u_sid, PDB_SET); +- +- result = make_server_info(mem_ctx); ++ result = make_server_info(tmp_ctx); + if (result == NULL) { +- TALLOC_FREE(sampass); +- return NT_STATUS_NO_MEMORY; ++ status = NT_STATUS_NO_MEMORY; ++ goto done; + } + +- status = samu_to_SamInfo3(result, sampass, global_myname(), +- &result->info3, &result->extra); +- TALLOC_FREE(sampass); ++ status = passwd_to_SamInfo3(result, ++ unix_username, ++ pwd, ++ &result->info3); + if (!NT_STATUS_IS_OK(status)) { +- DEBUG(10, ("Failed to convert samu to info3: %s\n", +- nt_errstr(status))); +- TALLOC_FREE(result); +- return status; ++ goto done; + } + + result->unix_name = talloc_strdup(result, unix_username); +- result->sanitized_username = sanitize_username(result, unix_username); +- +- if ((result->unix_name == NULL) +- || (result->sanitized_username == NULL)) { +- TALLOC_FREE(result); +- return NT_STATUS_NO_MEMORY; ++ if (result->unix_name == NULL) { ++ status = NT_STATUS_NO_MEMORY; ++ goto done; + } + + result->utok.uid = pwd->pw_uid; + result->utok.gid = pwd->pw_gid; + +- *server_info = result; ++ *server_info = talloc_steal(mem_ctx, result); ++ status = NT_STATUS_OK; ++done: ++ talloc_free(tmp_ctx); + +- return NT_STATUS_OK; ++ return status; + } + + static NTSTATUS get_system_info3(TALLOC_CTX *mem_ctx, +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index 32ffd3a..077bb6b 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -529,10 +529,28 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + } + } else { + /* +- * Winbind is not running, create the group_sid from the +- * group id. ++ * Winbind is not running, try to create the group_sid from the ++ * passwd group id. ++ */ ++ ++ /* ++ * This can lead to a primary group of S-1-22-2-XX which ++ * will be rejected by other Samba code. + */ + gid_to_sid(&group_sid, pwd->pw_gid); ++ ++ ZERO_STRUCT(domain_sid); ++ ++ /* ++ * If we are a unix group, set the group_sid to the ++ * 'Domain Users' RID of 513 which will always resolve to a ++ * name. ++ */ ++ if (sid_check_is_in_unix_groups(&group_sid)) { ++ sid_compose(&group_sid, ++ get_global_sam_sid(), ++ DOMAIN_RID_USERS); ++ } + } + + /* Make sure we have a valid group sid */ +-- +1.8.5.3 + + +From 7d8da06b8966cfb45ede48ce2be0754fd592ff62 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 18 Feb 2014 10:02:57 +0100 +Subject: [PATCH 5/6] s3-auth: Pass mem_ctx to make_server_info_sam(). + +Coverity-Id: 1168009 +BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598 + +Signed-off-by: Andreas Schneider + +Change-Id: Ie614b0654c3a7eec1ebb10dbb9763696eec795bd +Reviewed-by: Andrew Bartlett + +(cherry picked from commit 3dc72266005e87a291f5bf9847257e8c54314d39) +--- + source3/auth/check_samsec.c | 2 +- + source3/auth/proto.h | 5 ++-- + source3/auth/server_info_sam.c | 63 +++++++++++++++++++++++++----------------- + source3/auth/user_krb5.c | 12 ++++---- + 4 files changed, 49 insertions(+), 33 deletions(-) + +diff --git a/source3/auth/check_samsec.c b/source3/auth/check_samsec.c +index f918dc0..ed30e0d 100644 +--- a/source3/auth/check_samsec.c ++++ b/source3/auth/check_samsec.c +@@ -482,7 +482,7 @@ NTSTATUS check_sam_security(const DATA_BLOB *challenge, + } + + become_root(); +- nt_status = make_server_info_sam(server_info, sampass); ++ nt_status = make_server_info_sam(mem_ctx, sampass, server_info); + unbecome_root(); + + TALLOC_FREE(sampass); +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index 50a27cf..e6830aa 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -133,8 +133,9 @@ NTSTATUS make_user_info_for_reply_enc(struct auth_usersupplied_info **user_info, + DATA_BLOB lm_resp, DATA_BLOB nt_resp); + bool make_user_info_guest(struct auth_usersupplied_info **user_info) ; + struct samu; +-NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info, +- struct samu *sampass); ++NTSTATUS make_server_info_sam(TALLOC_CTX *mem_ctx, ++ struct samu *sampass, ++ struct auth_serversupplied_info **pserver_info); + NTSTATUS create_local_token(struct auth_serversupplied_info *server_info); + NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username, + bool is_guest, +diff --git a/source3/auth/server_info_sam.c b/source3/auth/server_info_sam.c +index 31fd9f9..aed70fa 100644 +--- a/source3/auth/server_info_sam.c ++++ b/source3/auth/server_info_sam.c +@@ -58,45 +58,54 @@ static bool is_our_machine_account(const char *username) + Make (and fill) a user_info struct from a struct samu + ***************************************************************************/ + +-NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info, +- struct samu *sampass) ++NTSTATUS make_server_info_sam(TALLOC_CTX *mem_ctx, ++ struct samu *sampass, ++ struct auth_serversupplied_info **pserver_info) + { + struct passwd *pwd; +- struct auth_serversupplied_info *result; ++ struct auth_serversupplied_info *server_info; + const char *username = pdb_get_username(sampass); ++ TALLOC_CTX *tmp_ctx; + NTSTATUS status; + +- if ( !(result = make_server_info(NULL)) ) { ++ tmp_ctx = talloc_stackframe(); ++ if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; + } + +- if ( !(pwd = Get_Pwnam_alloc(result, username)) ) { ++ server_info = make_server_info(tmp_ctx); ++ if (server_info == NULL) { ++ status = NT_STATUS_NO_MEMORY; ++ goto out; ++ } ++ ++ pwd = Get_Pwnam_alloc(tmp_ctx, username); ++ if (pwd == NULL) { + DEBUG(1, ("User %s in passdb, but getpwnam() fails!\n", + pdb_get_username(sampass))); +- TALLOC_FREE(result); +- return NT_STATUS_NO_SUCH_USER; ++ status = NT_STATUS_NO_SUCH_USER; ++ goto out; + } + +- status = samu_to_SamInfo3(result, sampass, global_myname(), +- &result->info3, &result->extra); ++ status = samu_to_SamInfo3(server_info, ++ sampass, ++ global_myname(), ++ &server_info->info3, ++ &server_info->extra); + if (!NT_STATUS_IS_OK(status)) { +- TALLOC_FREE(result); +- return status; ++ goto out; + } + +- result->unix_name = pwd->pw_name; +- /* Ensure that we keep pwd->pw_name, because we will free pwd below */ +- talloc_steal(result, pwd->pw_name); +- result->utok.gid = pwd->pw_gid; +- result->utok.uid = pwd->pw_uid; ++ server_info->unix_name = talloc_steal(server_info, pwd->pw_name); + +- TALLOC_FREE(pwd); ++ server_info->utok.gid = pwd->pw_gid; ++ server_info->utok.uid = pwd->pw_uid; + +- result->sanitized_username = sanitize_username(result, +- result->unix_name); +- if (result->sanitized_username == NULL) { +- TALLOC_FREE(result); +- return NT_STATUS_NO_MEMORY; ++ server_info->sanitized_username = sanitize_username(server_info, ++ server_info->unix_name); ++ if (server_info->sanitized_username == NULL) { ++ status = NT_STATUS_NO_MEMORY; ++ goto out; + } + + if (IS_DC && is_our_machine_account(username)) { +@@ -117,9 +126,13 @@ NTSTATUS make_server_info_sam(struct auth_serversupplied_info **server_info, + } + + DEBUG(5,("make_server_info_sam: made server info for user %s -> %s\n", +- pdb_get_username(sampass), result->unix_name)); ++ pdb_get_username(sampass), server_info->unix_name)); ++ ++ *pserver_info = talloc_steal(mem_ctx, server_info); + +- *server_info = result; ++ status = NT_STATUS_OK; ++out: ++ talloc_free(tmp_ctx); + +- return NT_STATUS_OK; ++ return status; + } +diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c +index 1214b45..1441f88 100644 +--- a/source3/auth/user_krb5.c ++++ b/source3/auth/user_krb5.c +@@ -219,9 +219,6 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + * SID consistency with ntlmssp session setup + */ + struct samu *sampass; +- /* The stupid make_server_info_XX functions here +- don't take a talloc context. */ +- struct auth_serversupplied_info *tmp = NULL; + + sampass = samu_new(talloc_tos()); + if (sampass == NULL) { +@@ -231,14 +228,19 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + if (pdb_getsampwnam(sampass, username)) { + DEBUG(10, ("found user %s in passdb, calling " + "make_server_info_sam\n", username)); +- status = make_server_info_sam(&tmp, sampass); ++ status = make_server_info_sam(mem_ctx, ++ sampass, ++ &server_info); + } else { + /* + * User not in passdb, make it up artificially + */ + DEBUG(10, ("didn't find user %s in passdb, calling " + "make_server_info_pw\n", username)); +- status = make_server_info_pw(mem_ctx, username, pw, &tmp); ++ status = make_server_info_pw(mem_ctx, ++ username, ++ pw, ++ &server_info); + } + TALLOC_FREE(sampass); + +-- +1.8.5.3 + + +From 77c2d6c08ab3f3894a225a306dbc87f5575a1902 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 18 Feb 2014 10:19:57 +0100 +Subject: [PATCH 6/6] s3-auth: Pass mem_ctx to auth_check_ntlm_password(). + +Coverity-Id: 1168009 +BUG: https://bugzilla.samba.org/show_bug.cgi?id=8598 + +Signed-off-by: Andreas Schneider + +Change-Id: Ie01674561a6a75239a13918d3190c2f21c3efc7a +Reviewed-by: Andrew Bartlett + +(cherry picked from commit 4d792db03f18aa164b565c7fdc7b446c174fba28) +--- + source3/auth/auth.c | 51 ++++++++++++++++++----------- + source3/auth/auth_compat.c | 19 ++++++++--- + source3/auth/auth_ntlmssp.c | 6 ++-- + source3/auth/proto.h | 3 +- + source3/auth/user_krb5.c | 7 ++-- + source3/include/auth.h | 3 +- + source3/rpc_server/netlogon/srv_netlog_nt.c | 6 ++-- + source3/smbd/sesssetup.c | 16 +++++---- + 8 files changed, 69 insertions(+), 42 deletions(-) + +diff --git a/source3/auth/auth.c b/source3/auth/auth.c +index dbe337f..17431b8 100644 +--- a/source3/auth/auth.c ++++ b/source3/auth/auth.c +@@ -201,19 +201,19 @@ static bool check_domain_match(const char *user, const char *domain) + * @return An NTSTATUS with NT_STATUS_OK or an appropriate error. + * + **/ +- +-static NTSTATUS check_ntlm_password(const struct auth_context *auth_context, +- const struct auth_usersupplied_info *user_info, +- struct auth_serversupplied_info **server_info) ++static NTSTATUS check_ntlm_password(TALLOC_CTX *mem_ctx, ++ const struct auth_context *auth_context, ++ const struct auth_usersupplied_info *user_info, ++ struct auth_serversupplied_info **pserver_info) + { + /* if all the modules say 'not for me' this is reasonable */ + NTSTATUS nt_status = NT_STATUS_NO_SUCH_USER; + const char *unix_username; + auth_methods *auth_method; +- TALLOC_CTX *mem_ctx; + +- if (!user_info || !auth_context || !server_info) ++ if (user_info == NULL || auth_context == NULL || pserver_info == NULL) { + return NT_STATUS_LOGON_FAILURE; ++ } + + DEBUG(3, ("check_ntlm_password: Checking password for unmapped user [%s]\\[%s]@[%s] with the new password interface\n", + user_info->client.domain_name, user_info->client.account_name, user_info->workstation_name)); +@@ -247,17 +247,27 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context, + return NT_STATUS_LOGON_FAILURE; + + for (auth_method = auth_context->auth_method_list;auth_method; auth_method = auth_method->next) { ++ struct auth_serversupplied_info *server_info; ++ TALLOC_CTX *tmp_ctx; + NTSTATUS result; + +- mem_ctx = talloc_init("%s authentication for user %s\\%s", auth_method->name, +- user_info->mapped.domain_name, user_info->client.account_name); ++ tmp_ctx = talloc_named(mem_ctx, ++ 0, ++ "%s authentication for user %s\\%s", ++ auth_method->name, ++ user_info->mapped.domain_name, ++ user_info->client.account_name); + +- result = auth_method->auth(auth_context, auth_method->private_data, mem_ctx, user_info, server_info); ++ result = auth_method->auth(auth_context, ++ auth_method->private_data, ++ tmp_ctx, ++ user_info, ++ &server_info); + + /* check if the module did anything */ + if ( NT_STATUS_V(result) == NT_STATUS_V(NT_STATUS_NOT_IMPLEMENTED) ) { + DEBUG(10,("check_ntlm_password: %s had nothing to say\n", auth_method->name)); +- talloc_destroy(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + continue; + } + +@@ -271,19 +281,20 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context, + auth_method->name, user_info->client.account_name, nt_errstr(nt_status))); + } + +- talloc_destroy(mem_ctx); +- +- if ( NT_STATUS_IS_OK(nt_status)) +- { +- break; ++ if (NT_STATUS_IS_OK(nt_status)) { ++ *pserver_info = talloc_steal(mem_ctx, server_info); ++ TALLOC_FREE(tmp_ctx); ++ break; + } ++ ++ TALLOC_FREE(tmp_ctx); + } + + /* successful authentication */ + + if (NT_STATUS_IS_OK(nt_status)) { +- unix_username = (*server_info)->unix_name; +- if (!(*server_info)->guest) { ++ unix_username = (*pserver_info)->unix_name; ++ if (!(*pserver_info)->guest) { + /* We might not be root if we are an RPC call */ + become_root(); + nt_status = smb_pam_accountcheck( +@@ -301,9 +312,9 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context, + } + + if (NT_STATUS_IS_OK(nt_status)) { +- DEBUG((*server_info)->guest ? 5 : 2, ++ DEBUG((*pserver_info)->guest ? 5 : 2, + ("check_ntlm_password: %sauthentication for user [%s] -> [%s] -> [%s] succeeded\n", +- (*server_info)->guest ? "guest " : "", ++ (*pserver_info)->guest ? "guest " : "", + user_info->client.account_name, + user_info->mapped.account_name, + unix_username)); +@@ -317,7 +328,7 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context, + DEBUG(2, ("check_ntlm_password: Authentication for user [%s] -> [%s] FAILED with error %s\n", + user_info->client.account_name, user_info->mapped.account_name, + nt_errstr(nt_status))); +- ZERO_STRUCTP(server_info); ++ ZERO_STRUCTP(pserver_info); + + return nt_status; + } +diff --git a/source3/auth/auth_compat.c b/source3/auth/auth_compat.c +index 0ae712a..d51c96f 100644 +--- a/source3/auth/auth_compat.c ++++ b/source3/auth/auth_compat.c +@@ -35,7 +35,8 @@ check if a username/password is OK assuming the password is in plaintext + return True if the password is correct, False otherwise + ****************************************************************************/ + +-NTSTATUS check_plaintext_password(const char *smb_name, ++NTSTATUS check_plaintext_password(TALLOC_CTX *mem_ctx, ++ const char *smb_name, + DATA_BLOB plaintext_blob, + struct auth_serversupplied_info **server_info) + { +@@ -59,8 +60,10 @@ NTSTATUS check_plaintext_password(const char *smb_name, + return NT_STATUS_NO_MEMORY; + } + +- nt_status = plaintext_auth_context->check_ntlm_password(plaintext_auth_context, +- user_info, server_info); ++ nt_status = plaintext_auth_context->check_ntlm_password(mem_ctx, ++ plaintext_auth_context, ++ user_info, ++ server_info); + + TALLOC_FREE(plaintext_auth_context); + free_user_info(&user_info); +@@ -84,7 +87,10 @@ static NTSTATUS pass_check_smb(struct auth_context *actx, + domain, + lm_pwd, + nt_pwd); +- nt_status = actx->check_ntlm_password(actx, user_info, &server_info); ++ nt_status = actx->check_ntlm_password(talloc_tos(), ++ actx, ++ user_info, ++ &server_info); + free_user_info(&user_info); + TALLOC_FREE(server_info); + return nt_status; +@@ -127,7 +133,10 @@ bool password_ok(struct auth_context *actx, bool global_encrypted, + } + } else { + struct auth_serversupplied_info *server_info = NULL; +- NTSTATUS nt_status = check_plaintext_password(smb_name, password_blob, &server_info); ++ NTSTATUS nt_status = check_plaintext_password(talloc_tos(), ++ smb_name, ++ password_blob, ++ &server_info); + TALLOC_FREE(server_info); + if (NT_STATUS_IS_OK(nt_status)) { + return True; +diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c +index ae29c30..097501c 100644 +--- a/source3/auth/auth_ntlmssp.c ++++ b/source3/auth/auth_ntlmssp.c +@@ -143,8 +143,10 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state, + + user_info->logon_parameters = MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT | MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT; + +- nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(auth_ntlmssp_state->auth_context, +- user_info, &auth_ntlmssp_state->server_info); ++ nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(mem_ctx, ++ auth_ntlmssp_state->auth_context, ++ user_info, ++ &auth_ntlmssp_state->server_info); + + username_was_mapped = user_info->was_mapped; + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index e6830aa..fccabc4 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -50,7 +50,8 @@ NTSTATUS auth_builtin_init(void); + + /* The following definitions come from auth/auth_compat.c */ + +-NTSTATUS check_plaintext_password(const char *smb_name, ++NTSTATUS check_plaintext_password(TALLOC_CTX *mem_ctx, ++ const char *smb_name, + DATA_BLOB plaintext_password, + struct auth_serversupplied_info **server_info); + bool password_ok(struct auth_context *actx, bool global_encrypted, +diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c +index 1441f88..1e5254e 100644 +--- a/source3/auth/user_krb5.c ++++ b/source3/auth/user_krb5.c +@@ -230,7 +230,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + "make_server_info_sam\n", username)); + status = make_server_info_sam(mem_ctx, + sampass, +- &server_info); ++ server_info); + } else { + /* + * User not in passdb, make it up artificially +@@ -240,7 +240,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + status = make_server_info_pw(mem_ctx, + username, + pw, +- &server_info); ++ server_info); + } + TALLOC_FREE(sampass); + +@@ -250,9 +250,6 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + return status; + } + +- /* Steal tmp server info into the server_info pointer. */ +- *server_info = talloc_move(mem_ctx, &tmp); +- + /* make_server_info_pw does not set the domain. Without this + * we end up with the local netbios name in substitutions for + * %D. */ +diff --git a/source3/include/auth.h b/source3/include/auth.h +index c017da9..b0ac11a 100644 +--- a/source3/include/auth.h ++++ b/source3/include/auth.h +@@ -89,7 +89,8 @@ struct auth_context { + + NTSTATUS (*get_ntlm_challenge)(struct auth_context *auth_context, + uint8_t chal[8]); +- NTSTATUS (*check_ntlm_password)(const struct auth_context *auth_context, ++ NTSTATUS (*check_ntlm_password)(TALLOC_CTX *mem_ctx, ++ const struct auth_context *auth_context, + const struct auth_usersupplied_info *user_info, + struct auth_serversupplied_info **server_info); + NTSTATUS (*nt_status_squash)(NTSTATUS nt_status); +diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c +index 3fd93bc..1cf04df 100644 +--- a/source3/rpc_server/netlogon/srv_netlog_nt.c ++++ b/source3/rpc_server/netlogon/srv_netlog_nt.c +@@ -1563,8 +1563,10 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p, + } /* end switch */ + + if ( NT_STATUS_IS_OK(status) ) { +- status = auth_context->check_ntlm_password(auth_context, +- user_info, &server_info); ++ status = auth_context->check_ntlm_password(p->mem_ctx, ++ auth_context, ++ user_info, ++ &server_info); + } + + TALLOC_FREE(auth_context); +diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c +index 75c2a15..2a40e1b 100644 +--- a/source3/smbd/sesssetup.c ++++ b/source3/smbd/sesssetup.c +@@ -140,7 +140,8 @@ static void reply_sesssetup_blob(struct smb_request *req, + Do a 'guest' logon, getting back the + ****************************************************************************/ + +-static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_info) ++static NTSTATUS check_guest_password(TALLOC_CTX *mem_ctx, ++ struct auth_serversupplied_info **server_info) + { + struct auth_context *auth_context; + struct auth_usersupplied_info *user_info = NULL; +@@ -150,7 +151,7 @@ static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_in + + DEBUG(3,("Got anonymous request\n")); + +- nt_status = make_auth_context_fixed(talloc_tos(), &auth_context, chal); ++ nt_status = make_auth_context_fixed(mem_ctx, &auth_context, chal); + if (!NT_STATUS_IS_OK(nt_status)) { + return nt_status; + } +@@ -160,9 +161,10 @@ static NTSTATUS check_guest_password(struct auth_serversupplied_info **server_in + return NT_STATUS_NO_MEMORY; + } + +- nt_status = auth_context->check_ntlm_password(auth_context, +- user_info, +- server_info); ++ nt_status = auth_context->check_ntlm_password(mem_ctx, ++ auth_context, ++ user_info, ++ server_info); + TALLOC_FREE(auth_context); + free_user_info(&user_info); + return nt_status; +@@ -1609,7 +1611,7 @@ void reply_sesssetup_and_X(struct smb_request *req) + + if (!*user) { + +- nt_status = check_guest_password(&server_info); ++ nt_status = check_guest_password(talloc_tos(), &server_info); + + } else if (doencrypt) { + struct auth_context *negprot_auth_context = NULL; +@@ -1627,6 +1629,7 @@ void reply_sesssetup_and_X(struct smb_request *req) + lm_resp, nt_resp); + if (NT_STATUS_IS_OK(nt_status)) { + nt_status = negprot_auth_context->check_ntlm_password( ++ talloc_tos(), + negprot_auth_context, + user_info, + &server_info); +@@ -1651,6 +1654,7 @@ void reply_sesssetup_and_X(struct smb_request *req) + + if (NT_STATUS_IS_OK(nt_status)) { + nt_status = plaintext_auth_context->check_ntlm_password( ++ talloc_tos(), + plaintext_auth_context, + user_info, + &server_info); +-- +1.8.5.3 + +From f07614228629e650b0e0a27dd4d15b6e5eef5baa Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 28 May 2014 15:12:29 +0200 +Subject: [PATCH 18/20] PATCHSET1: Allocate server_info on the correct memory + context. + +This fixes a talloc double free PANIC when connecting to share. + +Signed-off-by: Andreas Schneider +--- + source3/auth/auth_ntlmssp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source3/auth/auth_ntlmssp.c b/source3/auth/auth_ntlmssp.c +index 097501c..3c7e324 100644 +--- a/source3/auth/auth_ntlmssp.c ++++ b/source3/auth/auth_ntlmssp.c +@@ -143,7 +143,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state, + + user_info->logon_parameters = MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT | MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT; + +- nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(mem_ctx, ++ nt_status = auth_ntlmssp_state->auth_context->check_ntlm_password(auth_ntlmssp_state, + auth_ntlmssp_state->auth_context, + user_info, + &auth_ntlmssp_state->server_info); +-- +1.9.0 + +commit 0c6838663d42a04a80e25a8a3827710926952077 +Author: Andreas Schneider +AuthorDate: Wed Jul 2 16:39:22 2014 +0200 +Commit: Andreas Schneider +CommitDate: Wed Jul 2 16:47:43 2014 +0200 + + PATCHSET1 s3-auth: Do not double free the result. + + Signed-off-by: Andreas Schneider + Reviewed-by: Guenther Deschner +--- + source3/auth/auth_util.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index 5ffdb25f..1f1fed9 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -883,10 +883,6 @@ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx, + *presult = talloc_steal(mem_ctx, result); + done: + talloc_free(tmp_ctx); +- if (!NT_STATUS_IS_OK(status)) { +- TALLOC_FREE(result); +- return status; +- } + + return status; + } +commit 879e576d439fddf33ab2353b4a54ccd162020a03 +Author: Andreas Schneider +AuthorDate: Tue Jul 8 10:26:51 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 8 17:08:10 2014 +0200 + + PATCHSET1 s3-auth: Fix support for 'security = share' in passwd_to_SamInfo3(). + + Signed-off-by: Andreas Schneider +--- + source3/auth/server_info.c | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index 077bb6b..e627892 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -575,9 +575,21 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + + ZERO_STRUCT(domain_sid); + +- sid_copy(&domain_sid, &user_sid); +- sid_split_rid(&domain_sid, &info3->base.rid); +- info3->base.domain_sid = dom_sid_dup(info3, &domain_sid); ++ /* ++ * Check if this is a "Unix Users" domain user, ++ * we need to handle it in a special way if that's the case. ++ */ ++ if (sid_check_is_in_unix_users(&user_sid)) { ++ /* ++ * In info3 you can only set rids for the user and the ++ * primary group, and the domain sid must be that of ++ * the sam domain. ++ */ ++ sid_copy(&domain_sid, get_global_sam_sid()); ++ } else { ++ sid_copy(&domain_sid, &user_sid); ++ sid_split_rid(&domain_sid, &info3->base.rid); ++ } + + ok = sid_peek_check_rid(&domain_sid, &group_sid, + &info3->base.primary_gid); +@@ -592,6 +604,7 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + goto done; + } + ++ info3->base.domain_sid = dom_sid_dup(info3, &domain_sid); + info3->base.acct_flags = ACB_NORMAL; + + if (num_sids) { diff --git a/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch b/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch new file mode 100644 index 000000000..acb0c51fc --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_gecos_interactive.patch @@ -0,0 +1,922 @@ +commit 8a7159aa1b000593ffe89ca8d7477e6373764aaf +Author: Günther Deschner +AuthorDate: Tue Jul 15 14:16:56 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:27 2014 +0200 + + PATCHSET14 s3-rpc_client: return info3 in rpccli_netlogon_password_logon(). + + Guenther + + Signed-off-by: Günther Deschner + Pair-Programmed-With: Andreas Schneider + Reviewed-by: Andreas Schneider +--- + source3/rpc_client/cli_netlogon.c | 100 +++++++++++++++++++++----------------- + source3/rpc_client/cli_netlogon.h | 3 +- + source3/rpcclient/cmd_netlogon.c | 3 +- + 3 files changed, 60 insertions(+), 46 deletions(-) + +diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c +index c69a933..9454226 100644 +--- a/source3/rpc_client/cli_netlogon.c ++++ b/source3/rpc_client/cli_netlogon.c +@@ -153,6 +153,53 @@ NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli, + return NT_STATUS_OK; + } + ++static NTSTATUS map_validation_to_info3(TALLOC_CTX *mem_ctx, ++ uint16_t validation_level, ++ union netr_Validation *validation, ++ struct netr_SamInfo3 **info3_p) ++{ ++ struct netr_SamInfo3 *info3; ++ NTSTATUS status; ++ ++ if (validation == NULL) { ++ return NT_STATUS_INVALID_PARAMETER; ++ } ++ ++ switch (validation_level) { ++ case 3: ++ if (validation->sam3 == NULL) { ++ return NT_STATUS_INVALID_PARAMETER; ++ } ++ ++ info3 = talloc_move(mem_ctx, &validation->sam3); ++ break; ++ case 6: ++ if (validation->sam6 == NULL) { ++ return NT_STATUS_INVALID_PARAMETER; ++ } ++ ++ info3 = talloc_zero(mem_ctx, struct netr_SamInfo3); ++ if (info3 == NULL) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ status = copy_netr_SamBaseInfo(info3, &validation->sam6->base, &info3->base); ++ if (!NT_STATUS_IS_OK(status)) { ++ TALLOC_FREE(info3); ++ return status; ++ } ++ ++ info3->sidcount = validation->sam6->sidcount; ++ info3->sids = talloc_move(info3, &validation->sam6->sids); ++ break; ++ default: ++ return NT_STATUS_BAD_VALIDATION_CLASS; ++ } ++ ++ *info3_p = info3; ++ ++ return NT_STATUS_OK; ++} ++ + /* Logon domain user */ + + NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, +@@ -163,7 +210,8 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, + const char *password, + const char *workstation, + uint16_t validation_level, +- int logon_type) ++ int logon_type, ++ struct netr_SamInfo3 **info3) + { + NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + NTSTATUS status; +@@ -298,54 +346,18 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, + return NT_STATUS_ACCESS_DENIED; + } + +- return result; +-} +- +-static NTSTATUS map_validation_to_info3(TALLOC_CTX *mem_ctx, +- uint16_t validation_level, +- union netr_Validation *validation, +- struct netr_SamInfo3 **info3_p) +-{ +- struct netr_SamInfo3 *info3; +- NTSTATUS status; +- +- if (validation == NULL) { +- return NT_STATUS_INVALID_PARAMETER; ++ if (!NT_STATUS_IS_OK(result)) { ++ return result; + } + +- switch (validation_level) { +- case 3: +- if (validation->sam3 == NULL) { +- return NT_STATUS_INVALID_PARAMETER; +- } +- +- info3 = talloc_move(mem_ctx, &validation->sam3); +- break; +- case 6: +- if (validation->sam6 == NULL) { +- return NT_STATUS_INVALID_PARAMETER; +- } +- +- info3 = talloc_zero(mem_ctx, struct netr_SamInfo3); +- if (info3 == NULL) { +- return NT_STATUS_NO_MEMORY; +- } +- status = copy_netr_SamBaseInfo(info3, &validation->sam6->base, &info3->base); +- if (!NT_STATUS_IS_OK(status)) { +- TALLOC_FREE(info3); +- return status; +- } ++ netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation); + +- info3->sidcount = validation->sam6->sidcount; +- info3->sids = talloc_move(info3, &validation->sam6->sids); +- break; +- default: +- return NT_STATUS_BAD_VALIDATION_CLASS; ++ result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3); ++ if (!NT_STATUS_IS_OK(result)) { ++ return result; + } + +- *info3_p = info3; +- +- return NT_STATUS_OK; ++ return result; + } + + /** +diff --git a/source3/rpc_client/cli_netlogon.h b/source3/rpc_client/cli_netlogon.h +index ad59d5b..9c6cbc8 100644 +--- a/source3/rpc_client/cli_netlogon.h ++++ b/source3/rpc_client/cli_netlogon.h +@@ -41,7 +41,8 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, + const char *password, + const char *workstation, + uint16_t validation_level, +- int logon_type); ++ int logon_type, ++ struct netr_SamInfo3 **info3); + NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + uint32 logon_parameters, +diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c +index 63057ac..e285145 100644 +--- a/source3/rpcclient/cmd_netlogon.c ++++ b/source3/rpcclient/cmd_netlogon.c +@@ -724,6 +724,7 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli, + uint16_t validation_level = 3; + uint32 logon_param = 0; + const char *workstation = NULL; ++ struct netr_SamInfo3 *info3 = NULL; + + /* Check arguments */ + +@@ -750,7 +751,7 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli, + + /* Perform the sam logon */ + +- result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, validation_level, logon_type); ++ result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, validation_level, logon_type, &info3); + + if (!NT_STATUS_IS_OK(result)) + goto done; +commit 53c404ade6d660c449a9dddb56aa80dc6d5ea920 +Author: Günther Deschner +AuthorDate: Tue Jul 15 14:25:19 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:29 2014 +0200 + + PATCHSET14 s3-winbindd: call interactive samlogon via rpccli_netlogon_password_logon. + + Guenther + + Signed-off-by: Guenther Deschner + Pair-Programmed-With: Andreas Schneider + Reviewed-by: Andreas Schneider +--- + source3/winbindd/winbindd_pam.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c +index 125e393..2b31d54 100644 +--- a/source3/winbindd/winbindd_pam.c ++++ b/source3/winbindd/winbindd_pam.c +@@ -1152,11 +1152,13 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain, + uint32_t logon_parameters, + const char *server, + const char *username, ++ const char *password, + const char *domainname, + const char *workstation, + const uint8_t chal[8], + DATA_BLOB lm_response, + DATA_BLOB nt_response, ++ bool interactive, + struct netr_SamInfo3 **info3) + { + int attempts = 0; +@@ -1269,7 +1271,19 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain, + domain->can_do_validation6 = false; + } + +- if (domain->can_do_samlogon_ex && domain->can_do_validation6) { ++ if (interactive && username != NULL && password != NULL) { ++ result = rpccli_netlogon_sam_logon( ++ netlogon_pipe, ++ mem_ctx, ++ logon_parameters, ++ domainname, ++ username, ++ password, ++ workstation, ++ 3, /* FIXME */ ++ NetlogonInteractiveInformation, ++ info3); ++ } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) { + result = rpccli_netlogon_sam_network_logon_ex( + netlogon_pipe, + mem_ctx, +@@ -1453,11 +1467,13 @@ static NTSTATUS winbindd_dual_pam_auth_samlogon(TALLOC_CTX *mem_ctx, + 0, + domain->dcname, + name_user, ++ pass, + name_domain, + global_myname(), + chal, + lm_resp, + nt_resp, ++ true, + &my_info3); + if (!NT_STATUS_IS_OK(result)) { + goto done; +@@ -1874,12 +1890,14 @@ enum winbindd_result winbindd_dual_pam_auth_crap(struct winbindd_domain *domain, + state->request->data.auth_crap.logon_parameters, + domain->dcname, + name_user, ++ NULL, /* password */ + name_domain, + /* Bug #3248 - found by Stefan Burkei. */ + workstation, /* We carefully set this above so use it... */ + state->request->data.auth_crap.chal, + lm_resp, + nt_resp, ++ false, /* interactive */ + &info3); + if (!NT_STATUS_IS_OK(result)) { + goto done; +commit f73d1b92b78c4c3f23f411807273e3d09d39c10a +Author: Günther Deschner +AuthorDate: Mon Jul 7 17:14:37 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:30 2014 +0200 + + PATCHSET14 s3-winbindd: add wcache_query_user_fullname(). + + This helper function is used to query the full name of a cached user object (for + further gecos processing). + + Thanks to Matt Rogers . + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440 + + Guenther + + Pair-Programmed-With: Andreas Schneider + Signed-off-by: Günther Deschner + Reviewed-by: Andreas Schneider +--- + source3/winbindd/winbindd_cache.c | 34 ++++++++++++++++++++++++++++++++++ + source3/winbindd/winbindd_proto.h | 4 ++++ + 2 files changed, 38 insertions(+) + +diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c +index 0a65953..82c8087 100644 +--- a/source3/winbindd/winbindd_cache.c ++++ b/source3/winbindd/winbindd_cache.c +@@ -2282,6 +2282,40 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain, + return status; + } + ++ ++/** ++* @brief Query a fullname from the username cache (for further gecos processing) ++* ++* @param domain A pointer to the winbindd_domain struct. ++* @param mem_ctx The talloc context. ++* @param user_sid The user sid. ++* @param full_name A pointer to the full_name string. ++* ++* @return NTSTATUS code ++*/ ++NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain, ++ TALLOC_CTX *mem_ctx, ++ const struct dom_sid *user_sid, ++ const char **full_name) ++{ ++ NTSTATUS status; ++ struct wbint_userinfo info; ++ ++ status = wcache_query_user(domain, mem_ctx, user_sid, &info); ++ if (!NT_STATUS_IS_OK(status)) { ++ return status; ++ } ++ ++ if (info.full_name != NULL) { ++ *full_name = talloc_strdup(mem_ctx, info.full_name); ++ if (*full_name == NULL) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ } ++ ++ return NT_STATUS_OK; ++} ++ + /* Lookup user information from a rid */ + static NTSTATUS query_user(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, +diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h +index 82176b2..585853e 100644 +--- a/source3/winbindd/winbindd_proto.h ++++ b/source3/winbindd/winbindd_proto.h +@@ -103,6 +103,10 @@ NTSTATUS wcache_query_user(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + const struct dom_sid *user_sid, + struct wbint_userinfo *info); ++NTSTATUS wcache_query_user_fullname(struct winbindd_domain *domain, ++ TALLOC_CTX *mem_ctx, ++ const struct dom_sid *user_sid, ++ const char **full_name); + NTSTATUS wcache_lookup_useraliases(struct winbindd_domain *domain, + TALLOC_CTX *mem_ctx, + uint32 num_sids, const struct dom_sid *sids, +commit d4d04c269ade1e96f84b71e60a1c6c322eec5514 +Author: Günther Deschner +AuthorDate: Mon Jul 7 17:16:32 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:31 2014 +0200 + + PATCHSET14 s3-winbindd: use wcache_query_user_fullname after inspecting samlogon cache. + + The reason for this followup query is that very often the samlogon cache only + contains a info3 netlogon user structure that has been retrieved during a + netlogon samlogon authentication using "network" logon level. With that logon + level only a few info3 fields are filled in; the user's fullname is never filled + in that case. This is problematic when the cache is used to fill in the user's + gecos field (for NSS queries). When we have retrieved the user's fullname during + other queries, reuse it from the other caches. + + Thanks to Matt Rogers . + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440 + + Guenther + + Pair-Programmed-With: Andreas Schneider + Signed-off-by: Guenther Deschner + Reviewed-by: Andreas Schneider +--- + source3/winbindd/winbindd_ads.c | 8 ++++++++ + source3/winbindd/winbindd_msrpc.c | 8 ++++++++ + source3/winbindd/winbindd_pam.c | 41 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 57 insertions(+) + +diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c +index 3099ff0..7d960fc 100644 +--- a/source3/winbindd/winbindd_ads.c ++++ b/source3/winbindd/winbindd_ads.c +@@ -515,6 +515,14 @@ static NTSTATUS query_user(struct winbindd_domain *domain, + + TALLOC_FREE(user); + ++ if (info->full_name == NULL) { ++ /* this might fail so we dont check the return code */ ++ wcache_query_user_fullname(domain, ++ mem_ctx, ++ sid, ++ &info->full_name); ++ } ++ + return NT_STATUS_OK; + } + +diff --git a/source3/winbindd/winbindd_msrpc.c b/source3/winbindd/winbindd_msrpc.c +index b426884..eae822c 100644 +--- a/source3/winbindd/winbindd_msrpc.c ++++ b/source3/winbindd/winbindd_msrpc.c +@@ -439,6 +439,14 @@ static NTSTATUS msrpc_query_user(struct winbindd_domain *domain, + user_info->full_name = talloc_strdup(user_info, + user->base.full_name.string); + ++ if (user_info->full_name == NULL) { ++ /* this might fail so we dont check the return code */ ++ wcache_query_user_fullname(domain, ++ mem_ctx, ++ user_sid, ++ &user_info->full_name); ++ } ++ + status = NT_STATUS_OK; + goto done; + } +diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c +index 2b31d54..86b352e 100644 +--- a/source3/winbindd/winbindd_pam.c ++++ b/source3/winbindd/winbindd_pam.c +@@ -1739,6 +1739,26 @@ process_result: + sid_compose(&user_sid, info3->base.domain_sid, + info3->base.rid); + ++ if (info3->base.full_name.string == NULL) { ++ struct netr_SamInfo3 *cached_info3; ++ ++ cached_info3 = netsamlogon_cache_get(state->mem_ctx, ++ &user_sid); ++ if (cached_info3 != NULL && ++ cached_info3->base.full_name.string != NULL) { ++ info3->base.full_name.string = ++ talloc_strdup(info3, ++ cached_info3->base.full_name.string); ++ } else { ++ ++ /* this might fail so we dont check the return code */ ++ wcache_query_user_fullname(domain, ++ info3, ++ &user_sid, ++ &info3->base.full_name.string); ++ } ++ } ++ + wcache_invalidate_samlogon(find_domain_from_name(name_domain), + &user_sid); + netsamlogon_cache_store(name_user, info3); +@@ -1910,6 +1930,27 @@ process_result: + + sid_compose(&user_sid, info3->base.domain_sid, + info3->base.rid); ++ ++ if (info3->base.full_name.string == NULL) { ++ struct netr_SamInfo3 *cached_info3; ++ ++ cached_info3 = netsamlogon_cache_get(state->mem_ctx, ++ &user_sid); ++ if (cached_info3 != NULL && ++ cached_info3->base.full_name.string != NULL) { ++ info3->base.full_name.string = ++ talloc_strdup(info3, ++ cached_info3->base.full_name.string); ++ } else { ++ ++ /* this might fail so we dont check the return code */ ++ wcache_query_user_fullname(domain, ++ info3, ++ &user_sid, ++ &info3->base.full_name.string); ++ } ++ } ++ + wcache_invalidate_samlogon(find_domain_from_name(name_domain), + &user_sid); + netsamlogon_cache_store(name_user, info3); +commit 7a38729ac2b93d0bd8c2450821cfcedff6fa3f53 +Author: Günther Deschner +AuthorDate: Wed Jul 9 13:36:06 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:32 2014 +0200 + + PATCHSET14 samlogon_cache: use a talloc_stackframe inside netsamlogon_cache_store. + + Guenther + + Signed-off-by: Günther Deschner + Reviewed-by: Andreas Schneider +--- + source3/libsmb/samlogon_cache.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c +index 590c950..4281965 100644 +--- a/source3/libsmb/samlogon_cache.c ++++ b/source3/libsmb/samlogon_cache.c +@@ -132,7 +132,7 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3) + bool result = false; + struct dom_sid user_sid; + time_t t = time(NULL); +- TALLOC_CTX *mem_ctx; ++ TALLOC_CTX *tmp_ctx = talloc_stackframe(); + DATA_BLOB blob; + enum ndr_err_code ndr_err; + struct netsamlogoncache_entry r; +@@ -156,11 +156,6 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3) + + /* Prepare data */ + +- if (!(mem_ctx = TALLOC_P( NULL, int))) { +- DEBUG(0,("netsamlogon_cache_store: talloc() failed!\n")); +- return false; +- } +- + /* only Samba fills in the username, not sure why NT doesn't */ + /* so we fill it in since winbindd_getpwnam() makes use of it */ + +@@ -175,11 +170,11 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3) + NDR_PRINT_DEBUG(netsamlogoncache_entry, &r); + } + +- ndr_err = ndr_push_struct_blob(&blob, mem_ctx, &r, ++ ndr_err = ndr_push_struct_blob(&blob, tmp_ctx, &r, + (ndr_push_flags_fn_t)ndr_push_netsamlogoncache_entry); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + DEBUG(0,("netsamlogon_cache_store: failed to push entry to cache\n")); +- TALLOC_FREE(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + return false; + } + +@@ -190,7 +185,7 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3) + result = true; + } + +- TALLOC_FREE(mem_ctx); ++ TALLOC_FREE(tmp_ctx); + + return result; + } +commit f89b793bd672a66f5e75ade33467f6621545f0d4 +Author: Andreas Schneider +AuthorDate: Thu Jul 3 16:17:46 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:32 2014 +0200 + + PATCHSET14 samlogon_cache: avoid overwriting info3->base.full_name.string. + + This field servers as a source for the gecos field. We should not overwrite it + when a info3 struct from a samlogon network level gets saved in which case this + field is always NULL. + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440 + + Signed-off-by: Andreas Schneider + Reviewed-by: Guenther Deschner +--- + source3/libsmb/samlogon_cache.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c +index 4281965..8a3dbd2 100644 +--- a/source3/libsmb/samlogon_cache.c ++++ b/source3/libsmb/samlogon_cache.c +@@ -156,6 +156,20 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3) + + /* Prepare data */ + ++ if (info3->base.full_name.string == NULL) { ++ struct netr_SamInfo3 *cached_info3; ++ const char *full_name = NULL; ++ ++ cached_info3 = netsamlogon_cache_get(tmp_ctx, &user_sid); ++ if (cached_info3 != NULL) { ++ full_name = cached_info3->base.full_name.string; ++ } ++ ++ if (full_name != NULL) { ++ info3->base.full_name.string = talloc_strdup(info3, full_name); ++ } ++ } ++ + /* only Samba fills in the username, not sure why NT doesn't */ + /* so we fill it in since winbindd_getpwnam() makes use of it */ + +commit 8fcaeecf174a1c9088c84f271e2859f75e9a5101 +Author: Andreas Schneider +AuthorDate: Thu Jul 3 16:19:42 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 15:25:33 2014 +0200 + + PATCHSET14 s3-winbind: Don't set the gecos field to NULL. + + The value is loaded from the cache anyway. So it will be set to NULL if + it is not available. + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10440 + + Signed-off-by: Andreas Schneider + Reviewed-by: Guenther Deschner +--- + source3/winbindd/nss_info_template.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/source3/winbindd/nss_info_template.c b/source3/winbindd/nss_info_template.c +index 5fdfd9b..de93803 100644 +--- a/source3/winbindd/nss_info_template.c ++++ b/source3/winbindd/nss_info_template.c +@@ -48,7 +48,6 @@ static NTSTATUS nss_template_get_info( struct nss_domain_entry *e, + username */ + *homedir = talloc_strdup( ctx, lp_template_homedir() ); + *shell = talloc_strdup( ctx, lp_template_shell() ); +- *gecos = NULL; + + if ( !*homedir || !*shell ) { + return NT_STATUS_NO_MEMORY; +commit d32503872aec4fca41056b2d9d9bbb6b15ce9701 +Author: Günther Deschner +AuthorDate: Tue Jul 15 16:21:08 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 16:24:59 2014 +0200 + + PATCHSET14 s3-rpc_client: add rpccli_netlogon_sam_logon_ex(). + + This function deals with interactive samlogon and does a dcerpc_netr_SamLogonEx + call (w/o credential chaining). + + Guenther + + Signed-off-by: Günther Deschner +--- + source3/rpc_client/cli_netlogon.c | 152 ++++++++++++++++++++++++++++++++++++++ + source3/rpc_client/cli_netlogon.h | 10 +++ + 2 files changed, 162 insertions(+) + +diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c +index 9454226..0290944 100644 +--- a/source3/rpc_client/cli_netlogon.c ++++ b/source3/rpc_client/cli_netlogon.c +@@ -360,6 +360,158 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, + return result; + } + ++/* Logon domain user */ ++ ++NTSTATUS rpccli_netlogon_sam_logon_ex(struct rpc_pipe_client *cli, ++ TALLOC_CTX *mem_ctx, ++ uint32 logon_parameters, ++ const char *domain, ++ const char *username, ++ const char *password, ++ const char *workstation, ++ uint16_t validation_level, ++ int logon_type, ++ struct netr_SamInfo3 **info3) ++{ ++ NTSTATUS result = NT_STATUS_UNSUCCESSFUL; ++ NTSTATUS status; ++ struct netr_Authenticator ret_creds; ++ union netr_LogonLevel *logon; ++ union netr_Validation validation; ++ uint8_t authoritative; ++ fstring clnt_name_slash; ++ struct dcerpc_binding_handle *b = cli->binding_handle; ++ uint32_t flags = 0; ++ ++ ZERO_STRUCT(ret_creds); ++ ++ logon = TALLOC_ZERO_P(mem_ctx, union netr_LogonLevel); ++ if (!logon) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ ++ if (workstation) { ++ fstr_sprintf( clnt_name_slash, "\\\\%s", workstation ); ++ } else { ++ fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() ); ++ } ++ ++ /* Initialise input parameters */ ++ ++ switch (logon_type) { ++ case NetlogonInteractiveInformation: { ++ ++ struct netr_PasswordInfo *password_info; ++ ++ struct samr_Password lmpassword; ++ struct samr_Password ntpassword; ++ ++ password_info = TALLOC_ZERO_P(mem_ctx, struct netr_PasswordInfo); ++ if (!password_info) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ ++ nt_lm_owf_gen(password, ntpassword.hash, lmpassword.hash); ++ ++ if (cli->dc->negotiate_flags & NETLOGON_NEG_ARCFOUR) { ++ netlogon_creds_arcfour_crypt(cli->dc, lmpassword.hash, 16); ++ netlogon_creds_arcfour_crypt(cli->dc, ntpassword.hash, 16); ++ } else { ++ netlogon_creds_des_encrypt(cli->dc, &lmpassword); ++ netlogon_creds_des_encrypt(cli->dc, &ntpassword); ++ } ++ ++ password_info->identity_info.domain_name.string = domain; ++ password_info->identity_info.parameter_control = logon_parameters; ++ password_info->identity_info.logon_id_low = 0xdead; ++ password_info->identity_info.logon_id_high = 0xbeef; ++ password_info->identity_info.account_name.string = username; ++ password_info->identity_info.workstation.string = clnt_name_slash; ++ ++ password_info->lmpassword = lmpassword; ++ password_info->ntpassword = ntpassword; ++ ++ logon->password = password_info; ++ ++ break; ++ } ++ case NetlogonNetworkInformation: { ++ struct netr_NetworkInfo *network_info; ++ uint8 chal[8]; ++ unsigned char local_lm_response[24]; ++ unsigned char local_nt_response[24]; ++ struct netr_ChallengeResponse lm; ++ struct netr_ChallengeResponse nt; ++ ++ ZERO_STRUCT(lm); ++ ZERO_STRUCT(nt); ++ ++ network_info = TALLOC_ZERO_P(mem_ctx, struct netr_NetworkInfo); ++ if (!network_info) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ ++ generate_random_buffer(chal, 8); ++ ++ SMBencrypt(password, chal, local_lm_response); ++ SMBNTencrypt(password, chal, local_nt_response); ++ ++ lm.length = 24; ++ lm.data = local_lm_response; ++ ++ nt.length = 24; ++ nt.data = local_nt_response; ++ ++ network_info->identity_info.domain_name.string = domain; ++ network_info->identity_info.parameter_control = logon_parameters; ++ network_info->identity_info.logon_id_low = 0xdead; ++ network_info->identity_info.logon_id_high = 0xbeef; ++ network_info->identity_info.account_name.string = username; ++ network_info->identity_info.workstation.string = clnt_name_slash; ++ ++ memcpy(network_info->challenge, chal, 8); ++ network_info->nt = nt; ++ network_info->lm = lm; ++ ++ logon->network = network_info; ++ ++ break; ++ } ++ default: ++ DEBUG(0, ("switch value %d not supported\n", ++ logon_type)); ++ return NT_STATUS_INVALID_INFO_CLASS; ++ } ++ ++ status = dcerpc_netr_LogonSamLogonEx(b, mem_ctx, ++ cli->srv_name_slash, ++ global_myname(), ++ logon_type, ++ logon, ++ validation_level, ++ &validation, ++ &authoritative, ++ &flags, ++ &result); ++ if (!NT_STATUS_IS_OK(status)) { ++ return status; ++ } ++ ++ if (!NT_STATUS_IS_OK(result)) { ++ return result; ++ } ++ ++ netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation); ++ ++ result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3); ++ if (!NT_STATUS_IS_OK(result)) { ++ return result; ++ } ++ ++ return result; ++} ++ ++ + /** + * Logon domain user with an 'network' SAM logon + * +diff --git a/source3/rpc_client/cli_netlogon.h b/source3/rpc_client/cli_netlogon.h +index 9c6cbc8..3763843 100644 +--- a/source3/rpc_client/cli_netlogon.h ++++ b/source3/rpc_client/cli_netlogon.h +@@ -43,6 +43,16 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, + uint16_t validation_level, + int logon_type, + struct netr_SamInfo3 **info3); ++NTSTATUS rpccli_netlogon_sam_logon_ex(struct rpc_pipe_client *cli, ++ TALLOC_CTX *mem_ctx, ++ uint32 logon_parameters, ++ const char *domain, ++ const char *username, ++ const char *password, ++ const char *workstation, ++ uint16_t validation_level, ++ int logon_type, ++ struct netr_SamInfo3 **info3); + NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + uint32 logon_parameters, +commit f39f18e062207427ea436c85a7c721629a38bc0d +Author: Günther Deschner +AuthorDate: Tue Jul 15 16:22:15 2014 +0200 +Commit: Andreas Schneider +CommitDate: Tue Jul 15 16:25:04 2014 +0200 + + PATCHSET14 s3-winbindd: prefer to do a rpccli_netlogon_sam_logon_ex if we can. + + Guenther + + Signed-off-by: Günther Deschner +--- + source3/winbindd/winbindd_pam.c | 36 +++++++++++++++++++++++++----------- + 1 file changed, 25 insertions(+), 11 deletions(-) + +diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c +index 86b352e..e838ac6 100644 +--- a/source3/winbindd/winbindd_pam.c ++++ b/source3/winbindd/winbindd_pam.c +@@ -1272,17 +1272,31 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain, + } + + if (interactive && username != NULL && password != NULL) { +- result = rpccli_netlogon_sam_logon( +- netlogon_pipe, +- mem_ctx, +- logon_parameters, +- domainname, +- username, +- password, +- workstation, +- 3, /* FIXME */ +- NetlogonInteractiveInformation, +- info3); ++ if (domain->can_do_samlogon_ex && domain->can_do_validation6) { ++ result = rpccli_netlogon_sam_logon_ex( ++ netlogon_pipe, ++ mem_ctx, ++ logon_parameters, ++ domainname, ++ username, ++ password, ++ workstation, ++ 6, ++ NetlogonInteractiveInformation, ++ info3); ++ } else { ++ result = rpccli_netlogon_sam_logon( ++ netlogon_pipe, ++ mem_ctx, ++ logon_parameters, ++ domainname, ++ username, ++ password, ++ workstation, ++ domain->can_do_validation6 ? 6 : 3, ++ NetlogonInteractiveInformation, ++ info3); ++ } + } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) { + result = rpccli_netlogon_sam_network_logon_ex( + netlogon_pipe, +From fa58aff691268b021ba4dde1eb580d0387b917e1 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 20 Aug 2014 15:51:21 +0200 +Subject: [PATCH] PATCHSET14: Reset netlogon pipe for interactive samlogon_ex. + +--- + source3/winbindd/winbindd_pam.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c +index e838ac6..5316232 100644 +--- a/source3/winbindd/winbindd_pam.c ++++ b/source3/winbindd/winbindd_pam.c +@@ -1297,6 +1297,18 @@ static NTSTATUS winbind_samlogon_retry_loop(struct winbindd_domain *domain, + NetlogonInteractiveInformation, + info3); + } ++ ++ if (NT_STATUS_EQUAL(result, NT_STATUS_WRONG_PASSWORD)) { ++ /* ++ * HACK: This is a 3.6 hack that we get a new ++ * session_key to do a successfuly interactive ++ * logon ++ */ ++ TALLOC_FREE(domain->conn.netlogon_pipe); ++ attempts += 1; ++ retry = true; ++ continue; ++ } + } else if (domain->can_do_samlogon_ex && domain->can_do_validation6) { + result = rpccli_netlogon_sam_network_logon_ex( + netlogon_pipe, +-- +1.9.3 + diff --git a/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch b/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch new file mode 100644 index 000000000..28661d7b2 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_group_expansion_in_service_path.patch @@ -0,0 +1,46 @@ +commit 1d5f14acc3bacb96f7b8b300b3aeccd793552122 +Author: Andreas Schneider +AuthorDate: Wed Nov 27 17:21:01 2013 +0100 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:44:51 2014 +0100 + + s3-lib: Fix %G substitution for domain users in smbd + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10286 + Signed-off-by: Andreas Schneider + Reviewed-by: Christian Ambach + + Autobuild-User(master): Christian Ambach + Autobuild-Date(master): Tue Dec 10 16:39:43 CET 2013 on sn-devel-104 + + (cherry picked from commit 8eef4ab79ec5fb7e96ad2f2ad6c9bf30db13a50d) +--- + source3/lib/substitute.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c +index 10beed7..5f72a5d 100644 +--- a/source3/lib/substitute.c ++++ b/source3/lib/substitute.c +@@ -605,10 +605,20 @@ static char *alloc_sub_basic(const char *smb_name, const char *domain_name, + break; + case 'G' : { + struct passwd *pass; +- r = talloc_strdup(tmp_ctx, smb_name); ++ ++ if (domain_name != NULL && domain_name[0] != '\0') { ++ r = talloc_asprintf(tmp_ctx, ++ "%s%c%s", ++ domain_name, ++ *lp_winbind_separator(), ++ smb_name); ++ } else { ++ r = talloc_strdup(tmp_ctx, smb_name); ++ } + if (r == NULL) { + goto error; + } ++ + pass = Get_Pwnam_alloc(tmp_ctx, r); + if (pass != NULL) { + a_string = realloc_string_sub( diff --git a/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch b/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch new file mode 100644 index 000000000..6d43f7c59 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_group_expansion_with_nss_templates.patch @@ -0,0 +1,376 @@ +commit 75989f1d0d3ec86bb2046511b962ad72119c750b +Author: Andreas Schneider +AuthorDate: Mon Nov 18 14:58:04 2013 +0100 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:38:44 2014 +0100 + + s3-lib: Add grpname to talloc_sub_specified(). + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191 +--- + source3/include/proto.h | 1 + + source3/lib/substitute.c | 31 +++++++++++++++++++++++++------ + source3/passdb/passdb.c | 8 ++++---- + source3/passdb/pdb_ldap.c | 24 +++++++++++++++++++++--- + source3/torture/torture.c | 2 +- + source3/utils/net_sam.c | 2 ++ + source3/winbindd/wb_fill_pwent.c | 4 ++-- + 7 files changed, 56 insertions(+), 16 deletions(-) + +diff --git a/source3/include/proto.h b/source3/include/proto.h +index 7303e76..db091ce 100644 +--- a/source3/include/proto.h ++++ b/source3/include/proto.h +@@ -365,6 +365,7 @@ char *talloc_sub_basic(TALLOC_CTX *mem_ctx, const char *smb_name, + char *talloc_sub_specified(TALLOC_CTX *mem_ctx, + const char *input_string, + const char *username, ++ const char *grpname, + const char *domain, + uid_t uid, + gid_t gid); +diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c +index 68328e5..10beed7 100644 +--- a/source3/lib/substitute.c ++++ b/source3/lib/substitute.c +@@ -722,6 +722,7 @@ done: + char *talloc_sub_specified(TALLOC_CTX *mem_ctx, + const char *input_string, + const char *username, ++ const char *grpname, + const char *domain, + uid_t uid, + gid_t gid) +@@ -757,9 +758,18 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, + break; + case 'G' : + if (gid != -1) { +- a_string = talloc_string_sub( +- tmp_ctx, a_string, "%G", +- gidtoname(gid)); ++ const char *name; ++ ++ if (grpname != NULL) { ++ name = grpname; ++ } else { ++ name = gidtoname(gid); ++ } ++ ++ a_string = talloc_string_sub(tmp_ctx, ++ a_string, ++ "%G", ++ name); + } else { + a_string = talloc_string_sub( + tmp_ctx, a_string, +@@ -768,9 +778,18 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, + break; + case 'g' : + if (gid != -1) { +- a_string = talloc_string_sub( +- tmp_ctx, a_string, "%g", +- gidtoname(gid)); ++ const char *name; ++ ++ if (grpname != NULL) { ++ name = grpname; ++ } else { ++ name = gidtoname(gid); ++ } ++ ++ a_string = talloc_string_sub(tmp_ctx, ++ a_string, ++ "%g", ++ name); + } else { + a_string = talloc_string_sub( + tmp_ctx, a_string, "%g", "NO_GROUP"); +diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c +index 52c1129..493a694 100644 +--- a/source3/passdb/passdb.c ++++ b/source3/passdb/passdb.c +@@ -228,16 +228,16 @@ static NTSTATUS samu_set_unix_internal(struct samu *user, const struct passwd *p + /* set some basic attributes */ + + pdb_set_profile_path(user, talloc_sub_specified(user, +- lp_logon_path(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), ++ lp_logon_path(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid), + PDB_DEFAULT); + pdb_set_homedir(user, talloc_sub_specified(user, +- lp_logon_home(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), ++ lp_logon_home(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid), + PDB_DEFAULT); + pdb_set_dir_drive(user, talloc_sub_specified(user, +- lp_logon_drive(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), ++ lp_logon_drive(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid), + PDB_DEFAULT); + pdb_set_logon_script(user, talloc_sub_specified(user, +- lp_logon_script(), pwd->pw_name, domain, pwd->pw_uid, pwd->pw_gid), ++ lp_logon_script(), pwd->pw_name, NULL, domain, pwd->pw_uid, pwd->pw_gid), + PDB_DEFAULT); + } + +diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c +index 9316f40..1665641 100644 +--- a/source3/passdb/pdb_ldap.c ++++ b/source3/passdb/pdb_ldap.c +@@ -5399,11 +5399,29 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, + + if (is_machine) { + /* TODO: choose a more appropriate default for machines */ +- homedir = talloc_sub_specified(tmp_ctx, lp_template_homedir(), "SMB_workstations_home", ldap_state->domain_name, uid, gid); ++ homedir = talloc_sub_specified(tmp_ctx, ++ lp_template_homedir(), ++ "SMB_workstations_home", ++ NULL, ++ ldap_state->domain_name, ++ uid, ++ gid); + shell = talloc_strdup(tmp_ctx, "/bin/false"); + } else { +- homedir = talloc_sub_specified(tmp_ctx, lp_template_homedir(), name, ldap_state->domain_name, uid, gid); +- shell = talloc_sub_specified(tmp_ctx, lp_template_shell(), name, ldap_state->domain_name, uid, gid); ++ homedir = talloc_sub_specified(tmp_ctx, ++ lp_template_homedir(), ++ name, ++ NULL, ++ ldap_state->domain_name, ++ uid, ++ gid); ++ shell = talloc_sub_specified(tmp_ctx, ++ lp_template_shell(), ++ name, ++ NULL, ++ ldap_state->domain_name, ++ uid, ++ gid); + } + uidstr = talloc_asprintf(tmp_ctx, "%u", (unsigned int)uid); + gidstr = talloc_asprintf(tmp_ctx, "%u", (unsigned int)gid); +diff --git a/source3/torture/torture.c b/source3/torture/torture.c +index d37d83c..def177b 100644 +--- a/source3/torture/torture.c ++++ b/source3/torture/torture.c +@@ -5976,7 +5976,7 @@ static bool subst_test(const char *str, const char *user, const char *domain, + char *subst; + bool result = true; + +- subst = talloc_sub_specified(talloc_tos(), str, user, domain, uid, gid); ++ subst = talloc_sub_specified(talloc_tos(), str, user, NULL, domain, uid, gid); + + if (strcmp(subst, expected) != 0) { + printf("sub_specified(%s, %s, %s, %d, %d) returned [%s], expected " +diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c +index 0ff7c55..b49bb73 100644 +--- a/source3/utils/net_sam.c ++++ b/source3/utils/net_sam.c +@@ -1847,10 +1847,12 @@ doma_done: + gidstr = talloc_asprintf(tc, "%u", (unsigned int)domadmins_gid); + dir = talloc_sub_specified(tc, lp_template_homedir(), + "Administrator", ++ NULL, + get_global_sam_name(), + uid, domadmins_gid); + shell = talloc_sub_specified(tc, lp_template_shell(), + "Administrator", ++ NULL, + get_global_sam_name(), + uid, domadmins_gid); + +diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c +index 8f09480..4d94a31 100644 +--- a/source3/winbindd/wb_fill_pwent.c ++++ b/source3/winbindd/wb_fill_pwent.c +@@ -181,11 +181,11 @@ static bool fillup_pw_field(const char *lp_template, + + if ((in != NULL) && (in[0] != '\0') && (lp_security() == SEC_ADS)) { + templ = talloc_sub_specified(talloc_tos(), in, +- username, domname, ++ username, NULL, domname, + uid, gid); + } else { + templ = talloc_sub_specified(talloc_tos(), lp_template, +- username, domname, ++ username, NULL, domname, + uid, gid); + } + +commit 5faa0adf0a8c450897d7a61d348a600f889e5bef +Author: Andreas Schneider +AuthorDate: Mon Nov 18 14:58:14 2013 +0100 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:43:17 2014 +0100 + + s3-winbind: Pass the group name to fillup_pw_field(). + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191 +--- + source3/winbindd/wb_fill_pwent.c | 58 +++++++++++++++++++++++++++++----------- + 1 file changed, 42 insertions(+), 16 deletions(-) + +diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c +index 4d94a31..878c5ad 100644 +--- a/source3/winbindd/wb_fill_pwent.c ++++ b/source3/winbindd/wb_fill_pwent.c +@@ -29,6 +29,7 @@ struct wb_fill_pwent_state { + + static bool fillup_pw_field(const char *lp_template, + const char *username, ++ const char *grpname, + const char *domname, + uid_t uid, + gid_t gid, +@@ -36,7 +37,7 @@ static bool fillup_pw_field(const char *lp_template, + fstring out); + + static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq); +-static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq); ++static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq); + + struct tevent_req *wb_fill_pwent_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, +@@ -76,33 +77,44 @@ static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq) + return; + } + +- subreq = wb_sid2gid_send(state, state->ev, &state->info->group_sid); ++ subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 1); + if (tevent_req_nomem(subreq, req)) { + return; + } +- tevent_req_set_callback(subreq, wb_fill_pwent_sid2gid_done, req); ++ tevent_req_set_callback(subreq, wb_fill_pwent_getgrsid_done, req); + } + +-static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq) ++static void wb_fill_pwent_getgrsid_done(struct tevent_req *subreq) + { + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct wb_fill_pwent_state *state = tevent_req_data( + req, struct wb_fill_pwent_state); + struct winbindd_domain *domain; +- char *dom_name; ++ const char *dom_name; ++ const char *grp_name; + fstring user_name, output_username; + char *mapped_name = NULL; ++ struct talloc_dict *members; ++ TALLOC_CTX *tmp_ctx = talloc_stackframe(); + NTSTATUS status; +- +- status = wb_sid2gid_recv(subreq, &state->pw->pw_gid); ++ bool ok; ++ ++ status = wb_getgrsid_recv(subreq, ++ tmp_ctx, ++ &dom_name, ++ &grp_name, ++ &state->pw->pw_gid, ++ &members); + TALLOC_FREE(subreq); + if (tevent_req_nterror(req, status)) { ++ talloc_free(tmp_ctx); + return; + } + + domain = find_domain_from_sid_noinit(&state->info->user_sid); + if (domain == NULL) { ++ talloc_free(tmp_ctx); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return; + } +@@ -133,17 +145,30 @@ static void wb_fill_pwent_sid2gid_done(struct tevent_req *subreq) + fstrcpy(state->pw->pw_gecos, state->info->full_name); + + /* Home directory and shell */ +- +- if (!fillup_pw_field(lp_template_homedir(), user_name, dom_name, +- state->pw->pw_uid, state->pw->pw_gid, +- state->info->homedir, state->pw->pw_dir)) { ++ ok = fillup_pw_field(lp_template_homedir(), ++ user_name, ++ grp_name, ++ dom_name, ++ state->pw->pw_uid, ++ state->pw->pw_gid, ++ state->info->homedir, ++ state->pw->pw_dir); ++ if (!ok) { ++ talloc_free(tmp_ctx); + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return; + } + +- if (!fillup_pw_field(lp_template_shell(), user_name, dom_name, +- state->pw->pw_uid, state->pw->pw_gid, +- state->info->shell, state->pw->pw_shell)) { ++ ok = fillup_pw_field(lp_template_shell(), ++ user_name, ++ grp_name, ++ dom_name, ++ state->pw->pw_uid, ++ state->pw->pw_gid, ++ state->info->shell, ++ state->pw->pw_shell); ++ talloc_free(tmp_ctx); ++ if (!ok) { + tevent_req_nterror(req, NT_STATUS_NO_SUCH_USER); + return; + } +@@ -162,6 +187,7 @@ NTSTATUS wb_fill_pwent_recv(struct tevent_req *req) + + static bool fillup_pw_field(const char *lp_template, + const char *username, ++ const char *grpname, + const char *domname, + uid_t uid, + gid_t gid, +@@ -181,11 +207,11 @@ static bool fillup_pw_field(const char *lp_template, + + if ((in != NULL) && (in[0] != '\0') && (lp_security() == SEC_ADS)) { + templ = talloc_sub_specified(talloc_tos(), in, +- username, NULL, domname, ++ username, grpname, domname, + uid, gid); + } else { + templ = talloc_sub_specified(talloc_tos(), lp_template, +- username, NULL, domname, ++ username, grpname, domname, + uid, gid); + } + +commit db176c22f4f3e4c4f38288144d63822c3c191419 +Author: Volker Lendecke +AuthorDate: Thu Jan 16 16:10:25 2014 +0100 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:44:15 2014 +0100 + + s3-winbind: Improve performance of wb_fill_pwent_sid2uid_done(). + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=2191 + + Signed-off-by: Volker Lendecke + Reviewed-by: Andreas Schneider + + Autobuild-User(master): Andreas Schneider + Autobuild-Date(master): Thu Jan 16 20:17:24 CET 2014 on sn-devel-104 + + (cherry picked from commit 1a43778433934530d77791edd1af538de8b1d8a3) +--- + source3/winbindd/wb_fill_pwent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source3/winbindd/wb_fill_pwent.c b/source3/winbindd/wb_fill_pwent.c +index 878c5ad..9634317 100644 +--- a/source3/winbindd/wb_fill_pwent.c ++++ b/source3/winbindd/wb_fill_pwent.c +@@ -77,7 +77,7 @@ static void wb_fill_pwent_sid2uid_done(struct tevent_req *subreq) + return; + } + +- subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 1); ++ subreq = wb_getgrsid_send(state, state->ev, &state->info->group_sid, 0); + if (tevent_req_nomem(subreq, req)) { + return; + } diff --git a/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch b/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch new file mode 100644 index 000000000..6c78b23e1 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_keytab_null_termination.patch @@ -0,0 +1,37 @@ +From e56b5bf5eddfa89ae948dc7bb154dfc6154199a6 Mon Sep 17 00:00:00 2001 +From: Matt Rogers +Date: Wed, 12 Nov 2014 17:21:05 +0100 +Subject: [PATCH] PATCHSET17: s3-keytab: fix keytab array NULL termination. + +Signed-off-by: Matt Rogers +Reviewed-by: Guenther Deschner +Reviewed-by: Jeremy Allison +(cherry picked from commit 0de6799996955fbf8e19ace8c4b7b61f5a262cb5) +Signed-off-by: Andreas Schneider +--- + source3/libads/kerberos_keytab.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/source3/libads/kerberos_keytab.c b/source3/libads/kerberos_keytab.c +index badce3e..1033842 100644 +--- a/source3/libads/kerberos_keytab.c ++++ b/source3/libads/kerberos_keytab.c +@@ -629,14 +629,13 @@ int ads_keytab_create_default(ADS_STRUCT *ads) + goto done; + } + +- oldEntries = talloc_array(tmpctx, char *, found); ++ oldEntries = talloc_zero_array(tmpctx, char *, found + 1); + if (!oldEntries) { + DEBUG(1, (__location__ ": Failed to allocate space to store " + "the old keytab entries (talloc failed?).\n")); + ret = -1; + goto done; + } +- memset(oldEntries, '\0', found * sizeof(char *)); + + ret = krb5_kt_start_seq_get(context, keytab, &cursor); + if (ret == KRB5_KT_END || ret == ENOENT) { +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch b/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch new file mode 100644 index 000000000..c42548972 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_lookups_with_one_way_trusts.patch @@ -0,0 +1,37 @@ +commit afcc7e5ef289d25c19c7ac881ce505ec910fde7c +Author: Gregor Beck +AuthorDate: Thu Feb 20 11:25:53 2014 +0100 +Commit: Andreas Schneider +CommitDate: Mon Mar 3 16:49:42 2014 +0100 + + s3:winbindd: avoid directly asking a trusted domain in wb_lookupsids*() + + As a domain member we should always use a DC of our own domain. + + It would be possible to pass all sids in one single dcerpc_wbint_LookupSids() + call. For now we just fix bug. + + Pair-Programmed-With: Stefan Metzmacher + + Bug: https://bugzilla.samba.org/show_bug.cgi?id=10458 + Signed-off-by: Gregor Beck + Signed-off-by: Stefan Metzmacher + Reviewed-by: Andreas Schneider + (cherry picked from commit 66fb0ce9557553a4c01607b517e65ac4c93841d0) +--- + source3/winbindd/wb_lookupsids.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source3/winbindd/wb_lookupsids.c b/source3/winbindd/wb_lookupsids.c +index 2fd735d..1bfdba8 100644 +--- a/source3/winbindd/wb_lookupsids.c ++++ b/source3/winbindd/wb_lookupsids.c +@@ -320,7 +320,7 @@ static struct wb_lookupsids_domain *wb_lookupsids_get_domain( + } + } + +- wb_domain = find_domain_from_sid_noinit(sid); ++ wb_domain = find_lookup_domain_from_sid(sid); + if (wb_domain == NULL) { + return NULL; + } diff --git a/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch b/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch new file mode 100644 index 000000000..ce19a972c --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_mangling_hash_segfault.patch @@ -0,0 +1,38 @@ +From 9f974a391260e95340f08091fdbc822845eae160 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Tue, 19 Aug 2014 14:32:15 +0000 +Subject: [PATCH] PATCHSET29: smbd: Properly initialize mangle_hash + +[Bug 10782] mangle_hash() can fail to initialize charset (smbd crash). + +https://bugzilla.samba.org/show_bug.cgi?id=10782 + +Signed-off-by: Volker Lendecke +Reviewed-by: Jeremy Allison + +Autobuild-User(master): Jeremy Allison +Autobuild-Date(master): Tue Aug 26 01:30:38 CEST 2014 on sn-devel-104 + +(cherry picked from commit e914c2c52db7ecf3bb2a3860820c5cfe8812696e) +--- + source3/smbd/mangle_hash.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/source3/smbd/mangle_hash.c b/source3/smbd/mangle_hash.c +index bafcd03..35a098f 100644 +--- a/source3/smbd/mangle_hash.c ++++ b/source3/smbd/mangle_hash.c +@@ -706,6 +706,10 @@ const struct mangle_fns *mangle_hash_init(void) + { + mangle_reset(); + ++ if (chartest == NULL) { ++ init_chartest(); ++ } ++ + /* Create the in-memory tdb using our custom hash function. */ + tdb_mangled_cache = tdb_open_ex("mangled_cache", 1031, TDB_INTERNAL, + (O_RDWR|O_CREAT), 0644, NULL, fast_string_hash); +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch b/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch new file mode 100644 index 000000000..3d5add11f --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_map_to_guest_bad_uid.patch @@ -0,0 +1,76 @@ +From c370237f44f91f98e4e5cce81fafeea442573bad Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 19 Aug 2015 16:24:08 +0200 +Subject: [PATCH 1/2] PATCHSET32: s3-auth: Pass nt_username to check_account() + +We set nt_username above but do not use it in this function. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=9862 + +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +(cherry picked from commit e8c76932e4ac192a00afa3b9731f5921c4b37da6) +--- + source3/auth/auth_util.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index a548b7b..aa269d6 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -1251,9 +1251,12 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, + + /* this call will try to create the user if necessary */ + +- nt_status = check_account(mem_ctx, nt_domain, sent_nt_username, +- &found_username, &pwd, +- &username_was_mapped); ++ nt_status = check_account(mem_ctx, ++ nt_domain, ++ nt_username, ++ &found_username, ++ &pwd, ++ &username_was_mapped); + + if (!NT_STATUS_IS_OK(nt_status)) { + return nt_status; +-- +2.5.0 + + +From 1ab3cd252942b4fa5637d3f98b48ac3ba098de30 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 19 Aug 2015 16:11:47 +0200 +Subject: [PATCH 2/2] PATCHSET32: s3-auth: Fix 'map to guest = Bad Uid' support + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=9862 + +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +(cherry picked from commit 34965d4d98d172e848e2b96fad8a9e0b99288ba7) +--- + source3/auth/auth_util.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index aa269d6..cfda8b7 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -1259,6 +1259,14 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, + &username_was_mapped); + + if (!NT_STATUS_IS_OK(nt_status)) { ++ /* Handle 'map to guest = Bad Uid */ ++ if (NT_STATUS_EQUAL(nt_status, NT_STATUS_NO_SUCH_USER) && ++ (lp_security() == SEC_ADS || lp_security() == SEC_DOMAIN) && ++ lp_map_to_guest() == MAP_TO_GUEST_ON_BAD_UID) { ++ DEBUG(2, ("Try to map %s to guest account\n", ++ nt_username)); ++ return make_server_info_guest(mem_ctx, server_info); ++ } + return nt_status; + } + +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch b/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch new file mode 100644 index 000000000..819a4f501 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_member_auth_after_changed_secret.patch @@ -0,0 +1,89 @@ +From 51fbcb75007faddfbea29ef78a3857ba878a2327 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Thu, 6 Dec 2012 14:54:25 +0100 +Subject: [PATCH] s3-rpc_server: Remove obsolete process_creds boolean in + samlogon server. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Guenther + +Signed-off-by: Günther Deschner +Reviewed-by: Stefan Metzmacher + +(cherry picked from commit c1fb595081c2b0bf66bce06c09750f53e8031311) +--- + source3/rpc_server/netlogon/srv_netlog_nt.c | 27 +++------------------------ + 1 file changed, 3 insertions(+), 24 deletions(-) + +diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c +index 8079b3a..d14d0ed 100644 +--- a/source3/rpc_server/netlogon/srv_netlog_nt.c ++++ b/source3/rpc_server/netlogon/srv_netlog_nt.c +@@ -1416,21 +1416,16 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p, + struct auth_usersupplied_info *user_info = NULL; + struct auth_serversupplied_info *server_info = NULL; + struct auth_context *auth_context = NULL; +- uint8_t pipe_session_key[16]; +- bool process_creds = true; + const char *fn; + + switch (p->opnum) { + case NDR_NETR_LOGONSAMLOGON: +- process_creds = true; + fn = "_netr_LogonSamLogon"; + break; + case NDR_NETR_LOGONSAMLOGONWITHFLAGS: +- process_creds = true; + fn = "_netr_LogonSamLogonWithFlags"; + break; + case NDR_NETR_LOGONSAMLOGONEX: +- process_creds = false; + fn = "_netr_LogonSamLogonEx"; + break; + default: +@@ -1621,29 +1616,13 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p, + the SAM Local Security Authority should record that the user is + logged in to the domain. */ + +- if (process_creds) { +- /* Get the pipe session key from the creds. */ +- memcpy(pipe_session_key, creds->session_key, 16); +- } else { +- struct schannel_state *schannel_auth; +- /* Get the pipe session key from the schannel. */ +- if ((p->auth.auth_type != DCERPC_AUTH_TYPE_SCHANNEL) +- || (p->auth.auth_ctx == NULL)) { +- return NT_STATUS_INVALID_HANDLE; +- } +- +- schannel_auth = talloc_get_type_abort(p->auth.auth_ctx, +- struct schannel_state); +- memcpy(pipe_session_key, schannel_auth->creds->session_key, 16); +- } +- + switch (r->in.validation_level) { + case 2: +- status = serverinfo_to_SamInfo2(server_info, pipe_session_key, 16, ++ status = serverinfo_to_SamInfo2(server_info, creds->session_key, 16, + r->out.validation->sam2); + break; + case 3: +- status = serverinfo_to_SamInfo3(server_info, pipe_session_key, 16, ++ status = serverinfo_to_SamInfo3(server_info, creds->session_key, 16, + r->out.validation->sam3); + break; + case 6: +@@ -1655,7 +1634,7 @@ static NTSTATUS _netr_LogonSamLogon_base(struct pipes_struct *p, + break; + } + +- status = serverinfo_to_SamInfo6(server_info, pipe_session_key, 16, ++ status = serverinfo_to_SamInfo6(server_info, creds->session_key, 16, + r->out.validation->sam6); + break; + } +-- +2.9.3 + diff --git a/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch b/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch new file mode 100644 index 000000000..979809c3d --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_memleak_in_printer_list.patch @@ -0,0 +1,34 @@ +commit 5c6cbc0becb78f57dea333185a56ea782716c334 +Author: Jeremy Allison +AuthorDate: Mon Feb 24 16:18:31 2014 -0800 +Commit: Andreas Schneider +CommitDate: Fri Feb 28 17:17:49 2014 +0100 + + s3-printing: Fix obvious memory leak in printer_list_get_printer(). + + https://bugzilla.samba.org/show_bug.cgi?id=9993 + + Signed-off-by: Jeremy Allison + Reviewed-by: Ira Cooper + Reviewed-by: Andreas Schneider + + Autobuild-User(master): Andreas Schneider + Autobuild-Date(master): Tue Feb 25 13:19:37 CET 2014 on sn-devel-104 + + (cherry picked from commit 148bbdd8d04400b5d873f636671dd443952ca04f) +--- + source3/printing/printer_list.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/source3/printing/printer_list.c b/source3/printing/printer_list.c +index 8f196a5..603ce4b 100644 +--- a/source3/printing/printer_list.c ++++ b/source3/printing/printer_list.c +@@ -133,6 +133,7 @@ NTSTATUS printer_list_get_printer(TALLOC_CTX *mem_ctx, + done: + SAFE_FREE(nstr); + SAFE_FREE(cstr); ++ SAFE_FREE(lstr); + TALLOC_FREE(key); + return status; + } diff --git a/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch b/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch new file mode 100644 index 000000000..6de8a211d --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch @@ -0,0 +1,46 @@ +From cf53bff0e8482e35068d8e894af5634a0a9b1399 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 29 Jun 2016 13:38:19 +0200 +Subject: [PATCH] s3-winbind: Fix memory leak with each cached credential login + +When we allow offline logon and have a lot of logins, windbind will leak +4k of memory which each log in. On systems with heavy load this can grow +quickly and the OOM killer will kill Winbind. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11999 + +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +--- + source3/winbindd/winbindd_cache.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c +index 82c8087..2e983cd 100644 +--- a/source3/winbindd/winbindd_cache.c ++++ b/source3/winbindd/winbindd_cache.c +@@ -3415,7 +3415,7 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const + struct winbind_cache *cache = get_cache(domain); + NTSTATUS status; + int ret; +- struct cred_list *cred, *oldest = NULL; ++ struct cred_list *cred, *next, *oldest = NULL; + + if (!cache->tdb) { + return NT_STATUS_INTERNAL_DB_ERROR; +@@ -3484,7 +3484,11 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct winbindd_domain *domain, const + status = NT_STATUS_UNSUCCESSFUL; + } + done: +- SAFE_FREE(wcache_cred_list); ++ for (cred = wcache_cred_list; cred; cred = next) { ++ next = cred->next; ++ DLIST_REMOVE(wcache_cred_list, cred); ++ SAFE_FREE(cred); ++ } + SAFE_FREE(oldest); + + return status; +-- +2.9.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch b/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch new file mode 100644 index 000000000..9d99f4478 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_nbt_query_with_many_components.patch @@ -0,0 +1,35 @@ +commit 9c3a46e53ebfff376eefee88c2b8745e17bdc21b +Author: Günther Deschner +AuthorDate: Tue Feb 4 16:38:46 2014 +0100 +Commit: Andreas Schneider +CommitDate: Mon Mar 10 17:18:14 2014 +0100 + + PATCHSET6 librpc/nbt: increase MAX_COMPONENTS limit for nbt_names. + + domains with more then 10 subdomains are not so uncommon. + + https://bugzilla.samba.org/show_bug.cgi?id=10439 + + Guenther + + Signed-off-by: Günther Deschner + Reviewed-by: Andreas Schneider + + (cherry picked from commit 4e05bad0d18e351cb2a2db74860e77adea727c79) +--- + libcli/nbt/nbtname.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libcli/nbt/nbtname.c b/libcli/nbt/nbtname.c +index fec8e8e..3aa0000 100644 +--- a/libcli/nbt/nbtname.c ++++ b/libcli/nbt/nbtname.c +@@ -30,7 +30,7 @@ + #include "lib/util/util_net.h" + + /* don't allow an unlimited number of name components */ +-#define MAX_COMPONENTS 10 ++#define MAX_COMPONENTS 128 + + /** + print a nbt string diff --git a/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch b/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch new file mode 100644 index 000000000..954af029c --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_pam_winbind_parsing_segfault.patch @@ -0,0 +1,112 @@ +From 580eabc2c9dfe29d719a026ff8f6ac3d2ead1983 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 8 Sep 2015 16:48:08 +0200 +Subject: [PATCH] PATCHSET28: pam_winbind: Fix a segfault if initialization + fails + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11502 + +Signed-off-by: Andreas Schneider +Reviewed-by: Michael Adam + +Autobuild-User(master): Michael Adam +Autobuild-Date(master): Tue Sep 8 21:39:21 CEST 2015 on sn-devel-104 + +(cherry picked from commit 7d84cd6e40024fd361ea21635f7befed40f0e41f) +--- + nsswitch/pam_winbind.c | 19 ++++++++----------- + 1 file changed, 8 insertions(+), 11 deletions(-) + +diff --git a/nsswitch/pam_winbind.c b/nsswitch/pam_winbind.c +index d126494..cfaa5f1 100644 +--- a/nsswitch/pam_winbind.c ++++ b/nsswitch/pam_winbind.c +@@ -2465,7 +2465,7 @@ static int _pam_delete_cred(pam_handle_t *pamh, int flags, + + retval = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (retval) { +- goto out; ++ return retval; + } + + _PAM_LOG_FUNCTION_ENTER("_pam_delete_cred", ctx); +@@ -2600,7 +2600,7 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags, + + retval = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (retval) { +- goto out; ++ return retval; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_authenticate", ctx); +@@ -2752,7 +2752,7 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags, + + ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (ret) { +- goto out; ++ return ret; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_setcred", ctx); +@@ -2782,8 +2782,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags, + break; + } + +- out: +- + _PAM_LOG_FUNCTION_LEAVE("pam_sm_setcred", ctx, ret); + + TALLOC_FREE(ctx); +@@ -2806,7 +2804,7 @@ int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + + ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (ret) { +- goto out; ++ return ret; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_acct_mgmt", ctx); +@@ -2901,7 +2899,7 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags, + + ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (ret) { +- goto out; ++ return ret; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_open_session", ctx); +@@ -2910,7 +2908,7 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags, + /* check and create homedir */ + ret = _pam_mkhomedir(ctx); + } +- out: ++ + _PAM_LOG_FUNCTION_LEAVE("pam_sm_open_session", ctx, ret); + + TALLOC_FREE(ctx); +@@ -2927,12 +2925,11 @@ int pam_sm_close_session(pam_handle_t *pamh, int flags, + + ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (ret) { +- goto out; ++ return ret; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_close_session", ctx); + +-out: + _PAM_LOG_FUNCTION_LEAVE("pam_sm_close_session", ctx, ret); + + TALLOC_FREE(ctx); +@@ -3012,7 +3009,7 @@ int pam_sm_chauthtok(pam_handle_t * pamh, int flags, + + ret = _pam_winbind_init_context(pamh, flags, argc, argv, &ctx); + if (ret) { +- goto out; ++ return ret; + } + + _PAM_LOG_FUNCTION_ENTER("pam_sm_chauthtok", ctx); +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch b/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch new file mode 100644 index 000000000..7c5921111 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_printcap_cpu_utilization.patch @@ -0,0 +1,958 @@ +From 61c58824cc9117ffe206ae7c126929bfa2384486 Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Thu, 10 Jul 2014 00:18:10 +0200 +Subject: [PATCH 1/7] PATCHSET18: printing: traverse_read the printer list for + share updates +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The printcap update procedure involves the background printer process +obtaining the printcap information from the printing backend, writing +this to printer_list.tdb, and then notifying all smbd processes of the +new list. The processes then all attempt to simultaneously traverse +printer_list.tdb, in order to update their local share lists. + +With a large number of printers, and a large number of per-client smbd +processes, this traversal results in significant lock contention, mostly +due to the fact that the traversal is unnecessarily done with an +exclusive (write) lock on the printer_list.tdb database. + +This commit changes the share update code path to perform a read-only +traversal. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Reported-by: Alex K +Reported-by: Franz Pförtsch +Signed-off-by: David Disseldorp +--- + source3/printing/load.c | 2 +- + source3/printing/pcap.c | 4 ++-- + source3/printing/pcap.h | 2 +- + source3/printing/printer_list.c | 17 +++++++++++------ + source3/printing/printer_list.h | 4 ++-- + 5 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/source3/printing/load.c b/source3/printing/load.c +index 829c3e3..0a3de73 100644 +--- a/source3/printing/load.c ++++ b/source3/printing/load.c +@@ -70,5 +70,5 @@ void load_printers(struct tevent_context *ev, + + /* load all printcap printers */ + if (lp_load_printers() && lp_servicenumber(PRINTERS_NAME) >= 0) +- pcap_printer_fn(lp_add_one_printer, NULL); ++ pcap_printer_read_fn(lp_add_one_printer, NULL); + } +diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c +index 62db4f5..6ad8e33 100644 +--- a/source3/printing/pcap.c ++++ b/source3/printing/pcap.c +@@ -229,11 +229,11 @@ void pcap_printer_fn_specific(const struct pcap_cache *pc, + return; + } + +-void pcap_printer_fn(void (*fn)(const char *, const char *, const char *, void *), void *pdata) ++void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *pdata) + { + NTSTATUS status; + +- status = printer_list_run_fn(fn, pdata); ++ status = printer_list_read_run_fn(fn, pdata); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(3, ("Failed to run fn for all printers!\n")); + } +diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h +index 7056213..6c062c3 100644 +--- a/source3/printing/pcap.h ++++ b/source3/printing/pcap.h +@@ -39,7 +39,7 @@ bool pcap_cache_add(const char *name, const char *comment, const char *location) + bool pcap_cache_loaded(void); + bool pcap_cache_replace(const struct pcap_cache *cache); + void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *); +-void pcap_printer_fn(void (*fn)(const char *, const char *, const char *, void *), void *); ++void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *); + + void pcap_cache_reload(struct tevent_context *ev, + struct messaging_context *msg_ctx, +diff --git a/source3/printing/printer_list.c b/source3/printing/printer_list.c +index 603ce4b..b24bf83 100644 +--- a/source3/printing/printer_list.c ++++ b/source3/printing/printer_list.c +@@ -280,7 +280,8 @@ done: + typedef int (printer_list_trv_fn_t)(struct db_record *, void *); + + static NTSTATUS printer_list_traverse(printer_list_trv_fn_t *fn, +- void *private_data) ++ void *private_data, ++ bool read_only) + { + struct db_context *db; + int ret; +@@ -290,7 +291,11 @@ static NTSTATUS printer_list_traverse(printer_list_trv_fn_t *fn, + return NT_STATUS_INTERNAL_DB_CORRUPTION; + } + +- ret = db->traverse(db, fn, private_data); ++ if (read_only) { ++ ret = db->traverse_read(db, fn, private_data); ++ } else { ++ ret = db->traverse(db, fn, private_data); ++ } + if (ret < 0) { + return NT_STATUS_UNSUCCESSFUL; + } +@@ -357,7 +362,7 @@ NTSTATUS printer_list_clean_old(void) + + state.status = NT_STATUS_OK; + +- status = printer_list_traverse(printer_list_clean_fn, &state); ++ status = printer_list_traverse(printer_list_clean_fn, &state, false); + if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) && + !NT_STATUS_IS_OK(state.status)) { + status = state.status; +@@ -404,8 +409,8 @@ static int printer_list_exec_fn(struct db_record *rec, void *private_data) + return 0; + } + +-NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char *, void *), +- void *private_data) ++NTSTATUS printer_list_read_run_fn(void (*fn)(const char *, const char *, const char *, void *), ++ void *private_data) + { + struct printer_list_exec_state state; + NTSTATUS status; +@@ -414,7 +419,7 @@ NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char * + state.private_data = private_data; + state.status = NT_STATUS_OK; + +- status = printer_list_traverse(printer_list_exec_fn, &state); ++ status = printer_list_traverse(printer_list_exec_fn, &state, true); + if (NT_STATUS_EQUAL(status, NT_STATUS_UNSUCCESSFUL) && + !NT_STATUS_IS_OK(state.status)) { + status = state.status; +diff --git a/source3/printing/printer_list.h b/source3/printing/printer_list.h +index fb2e007..b12c192 100644 +--- a/source3/printing/printer_list.h ++++ b/source3/printing/printer_list.h +@@ -100,6 +100,6 @@ NTSTATUS printer_list_mark_reload(void); + */ + NTSTATUS printer_list_clean_old(void); + +-NTSTATUS printer_list_run_fn(void (*fn)(const char *, const char *, const char *, void *), +- void *private_data); ++NTSTATUS printer_list_read_run_fn(void (*fn)(const char *, const char *, const char *, void *), ++ void *private_data); + #endif /* _PRINTER_LIST_H_ */ +-- +2.1.0 + + +From 18b15f127b656ad9232789b073460c95b1aaa835 Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Fri, 11 Jul 2014 17:00:05 +0200 +Subject: [PATCH 2/7] PATCHSET18: printing: only reload printer shares on + client enum + +Currently, automatic printer share updates are handled in the following +way: +- Background printer process (BPP) forked on startup +- Parent smbd and per-client children await MSG_PRINTER_PCAP messages +- BPP periodically polls the printing backend for printcap data + - printcap data written to printer_list.tdb + - MSG_PRINTER_PCAP sent to all smbd processes following update +- smbd processes all read the latest printer_list.tdb data, and update + their share listings + +This procedure is not scalable, as all smbd processes hit +printer_list.tdb in parallel, resulting in a large spike in CPU usage. + +This change sees smbd processes only update their printer share lists +only when a client asks for this information, e.g. via NetShareEnum or +EnumPrinters. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Suggested-by: Volker Lendecke +Signed-off-by: David Disseldorp +--- + source3/printing/spoolssd.c | 17 +---------------- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 11 ++++++++++- + source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 1 + + source3/smbd/lanman.c | 3 +++ + source3/smbd/server.c | 27 +++++---------------------- + 5 files changed, 20 insertions(+), 39 deletions(-) + +diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c +index 83727df..7953237 100644 +--- a/source3/printing/spoolssd.c ++++ b/source3/printing/spoolssd.c +@@ -74,20 +74,6 @@ static void smb_conf_updated(struct messaging_context *msg, + spoolss_reopen_logs(); + } + +-static void spoolss_pcap_updated(struct messaging_context *msg, +- void *private_data, +- uint32_t msg_type, +- struct server_id server_id, +- DATA_BLOB *data) +-{ +- struct tevent_context *ev_ctx = talloc_get_type_abort(private_data, +- struct tevent_context); +- +- DEBUG(10, ("Got message saying pcap was updated. Reloading.\n")); +- change_to_root_user(); +- reload_printers(ev_ctx, msg); +-} +- + static void spoolss_sig_term_handler(struct tevent_context *ev, + struct tevent_signal *se, + int signum, +@@ -206,12 +192,11 @@ void start_spoolssd(struct tevent_context *ev_ctx, + exit(1); + } + ++ /* printer shares updated from printer_list.tdb on client enumeration */ + messaging_register(msg_ctx, NULL, + MSG_PRINTER_UPDATE, print_queue_receive); + messaging_register(msg_ctx, ev_ctx, + MSG_SMB_CONF_UPDATED, smb_conf_updated); +- messaging_register(msg_ctx, ev_ctx, +- MSG_PRINTER_PCAP, spoolss_pcap_updated); + + /* + * Initialize spoolss with an init function to convert printers first. +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index 516b7dc..db48574 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -4316,12 +4316,21 @@ static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx, + uint32_t *count_p) + { + int snum; +- int n_services = lp_numservices(); ++ int n_services; + union spoolss_PrinterInfo *info = NULL; + uint32_t count = 0; + WERROR result = WERR_OK; + struct dcerpc_binding_handle *b = NULL; + ++ /* ++ * printer shares are only updated on client enumeration. The background ++ * printer process updates printer_list.tdb at regular intervals. ++ */ ++ become_root(); ++ reload_printers(messaging_event_context(msg_ctx), msg_ctx); ++ unbecome_root(); ++ ++ n_services = lp_numservices(); + *count_p = 0; + *info_p = NULL; + +diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +index b9345d6..4600da3 100644 +--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c ++++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +@@ -568,6 +568,7 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, + + /* Ensure all the usershares are loaded. */ + become_root(); ++ reload_printers(messaging_event_context(p->msg_ctx), p->msg_ctx); + load_usershare_shares(); + load_registry_shares(); + num_services = lp_numservices(); +diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c +index f56ea30..49f7583 100644 +--- a/source3/smbd/lanman.c ++++ b/source3/smbd/lanman.c +@@ -43,6 +43,7 @@ + #include "passdb/machine_sid.h" + #include "auth.h" + #include "rpc_server/rpc_ncacn_np.h" ++#include "messages.h" + + #ifdef CHECK_TYPES + #undef CHECK_TYPES +@@ -2091,6 +2092,8 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn, + + /* Ensure all the usershares are loaded. */ + become_root(); ++ reload_printers(messaging_event_context(sconn->msg_ctx), ++ sconn->msg_ctx); + load_registry_shares(); + count = load_usershare_shares(); + unbecome_root(); +diff --git a/source3/smbd/server.c b/source3/smbd/server.c +index a26dbc4..102e8dd 100644 +--- a/source3/smbd/server.c ++++ b/source3/smbd/server.c +@@ -111,24 +111,6 @@ static void smb_conf_updated(struct messaging_context *msg, + /* printer reload triggered by background printing process */ + } + +-/******************************************************************* +- What to do when printcap is updated. +- ********************************************************************/ +- +-static void smb_pcap_updated(struct messaging_context *msg, +- void *private_data, +- uint32_t msg_type, +- struct server_id server_id, +- DATA_BLOB *data) +-{ +- struct tevent_context *ev_ctx = +- talloc_get_type_abort(private_data, struct tevent_context); +- +- DEBUG(10,("Got message saying pcap was updated. Reloading.\n")); +- change_to_root_user(); +- reload_printers(ev_ctx, msg); +-} +- + static void smbd_sig_term_handler(struct tevent_context *ev, + struct tevent_signal *se, + int signum, +@@ -1287,10 +1269,11 @@ extern void build_options(bool screen); + + if (is_daemon && !interactive + && lp_parm_bool(-1, "smbd", "backgroundqueue", true)) { +- /* background queue is responsible for printcap cache updates */ +- messaging_register(smbd_server_conn->msg_ctx, +- smbd_event_context(), +- MSG_PRINTER_PCAP, smb_pcap_updated); ++ /* ++ * background queue is responsible for printcap cache updates. ++ * Other smbd processes only reload printers when a client ++ * issues an enumeration request. ++ */ + start_background_queue(server_event_context(), + smbd_server_conn->msg_ctx); + } else { +-- +2.1.0 + + +From 52196380547dde4784e42c35c46135bb5230a08d Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Tue, 22 Jul 2014 20:17:38 +0200 +Subject: [PATCH 3/7] PATCHSET18: printing: reload printer_list.tdb from in + memory list + +This will allow in future for a single atomic printer_list.tdb update. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Signed-off-by: David Disseldorp +--- + source3/printing/pcap.c | 26 +++++++++++--------------- + source3/printing/pcap.h | 8 ++++---- + source3/printing/print_aix.c | 17 ++++++++++++++--- + source3/printing/print_iprint.c | 16 ++++++++++------ + source3/printing/print_standard.c | 8 ++++++-- + source3/printing/print_svid.c | 11 +++++++---- + 6 files changed, 52 insertions(+), 34 deletions(-) + +diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c +index 6ad8e33..5173fc9 100644 +--- a/source3/printing/pcap.c ++++ b/source3/printing/pcap.c +@@ -83,7 +83,7 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache) + *pp_cache = NULL; + } + +-bool pcap_cache_add(const char *name, const char *comment, const char *location) ++static bool pcap_cache_add(const char *name, const char *comment, const char *location) + { + NTSTATUS status; + time_t t = time_mono(NULL); +@@ -132,8 +132,8 @@ void pcap_cache_reload(struct tevent_context *ev, + { + const char *pcap_name = lp_printcapname(); + bool pcap_reloaded = False; +- NTSTATUS status; + bool post_cache_fill_fn_handled = false; ++ struct pcap_cache *pcache = NULL; + + DEBUG(3, ("reloading printcap cache\n")); + +@@ -143,12 +143,6 @@ void pcap_cache_reload(struct tevent_context *ev, + return; + } + +- status = printer_list_mark_reload(); +- if (!NT_STATUS_IS_OK(status)) { +- DEBUG(0, ("Failed to mark printer list for reload!\n")); +- return; +- } +- + #ifdef HAVE_CUPS + if (strequal(pcap_name, "cups")) { + pcap_reloaded = cups_cache_reload(ev, msg_ctx, +@@ -164,26 +158,26 @@ void pcap_cache_reload(struct tevent_context *ev, + + #ifdef HAVE_IPRINT + if (strequal(pcap_name, "iprint")) { +- pcap_reloaded = iprint_cache_reload(); ++ pcap_reloaded = iprint_cache_reload(&pcache); + goto done; + } + #endif + + #if defined(SYSV) || defined(HPUX) + if (strequal(pcap_name, "lpstat")) { +- pcap_reloaded = sysv_cache_reload(); ++ pcap_reloaded = sysv_cache_reload(&pcache); + goto done; + } + #endif + + #ifdef AIX + if (strstr_m(pcap_name, "/qconfig") != NULL) { +- pcap_reloaded = aix_cache_reload(); ++ pcap_reloaded = aix_cache_reload(&pcache); + goto done; + } + #endif + +- pcap_reloaded = std_pcap_cache_reload(pcap_name); ++ pcap_reloaded = std_pcap_cache_reload(pcap_name, &pcache); + + done: + DEBUG(3, ("reload status: %s\n", (pcap_reloaded) ? "ok" : "error")); +@@ -192,14 +186,16 @@ done: + /* cleanup old entries only if the operation was successful, + * otherwise keep around the old entries until we can + * successfuly reaload */ +- status = printer_list_clean_old(); +- if (!NT_STATUS_IS_OK(status)) { +- DEBUG(0, ("Failed to cleanup printer list!\n")); ++ ++ if (!pcap_cache_replace(pcache)) { ++ DEBUG(0, ("Failed to replace printer list!\n")); + } ++ + if (post_cache_fill_fn != NULL) { + post_cache_fill_fn(ev, msg_ctx); + } + } ++ pcap_cache_destroy_specific(&pcache); + + return; + } +diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h +index 6c062c3..d388d7d 100644 +--- a/source3/printing/pcap.h ++++ b/source3/printing/pcap.h +@@ -49,7 +49,7 @@ bool pcap_printername_ok(const char *printername); + + /* The following definitions come from printing/print_aix.c */ + +-bool aix_cache_reload(void); ++bool aix_cache_reload(struct pcap_cache **_pcache); + + /* The following definitions come from printing/print_cups.c */ + +@@ -60,13 +60,13 @@ bool cups_cache_reload(struct tevent_context *ev, + + /* The following definitions come from printing/print_iprint.c */ + +-bool iprint_cache_reload(void); ++bool iprint_cache_reload(struct pcap_cache **_pcache); + + /* The following definitions come from printing/print_svid.c */ + +-bool sysv_cache_reload(void); ++bool sysv_cache_reload(struct pcap_cache **_pcache); + + /* The following definitions come from printing/print_standard.c */ +-bool std_pcap_cache_reload(const char *pcap_name); ++bool std_pcap_cache_reload(const char *pcap_name, struct pcap_cache **_pcache); + + #endif /* _PRINTING_PCAP_H_ */ +diff --git a/source3/printing/print_aix.c b/source3/printing/print_aix.c +index 23d9a86..927a71b 100644 +--- a/source3/printing/print_aix.c ++++ b/source3/printing/print_aix.c +@@ -29,12 +29,13 @@ + #include "printing/pcap.h" + + #ifdef AIX +-bool aix_cache_reload(void) ++bool aix_cache_reload(struct pcap_cache **_pcache) + { + int iEtat; + XFILE *pfile; + char *line = NULL, *p; + char *name = NULL; ++ struct pcap_cache *pcache = NULL; + TALLOC_CTX *ctx = talloc_init("aix_cache_reload"); + + if (!ctx) { +@@ -52,6 +53,8 @@ bool aix_cache_reload(void) + iEtat = 0; + /* scan qconfig file for searching : */ + for (;(line = fgets_slash(NULL, 1024, pfile)); free(line)) { ++ bool ok; ++ + if (*line == '*' || *line == 0) + continue; + +@@ -67,6 +70,7 @@ bool aix_cache_reload(void) + if (strcmp(p, "bsh") != 0) { + name = talloc_strdup(ctx, p); + if (!name) { ++ pcap_cache_destroy_specific(&pcache); + SAFE_FREE(line); + x_fclose(pfile); + TALLOC_FREE(ctx); +@@ -86,7 +90,10 @@ bool aix_cache_reload(void) + /* name is found without stanza device */ + /* probably a good printer ??? */ + iEtat = 0; +- if (!pcap_cache_add(name, NULL, NULL)) { ++ ok = pcap_cache_add_specific(&pcache, ++ name, NULL, NULL); ++ if (!ok) { ++ pcap_cache_destroy_specific(&pcache); + SAFE_FREE(line); + x_fclose(pfile); + TALLOC_FREE(ctx); +@@ -101,7 +108,10 @@ bool aix_cache_reload(void) + } else if (strstr_m(line, "device")) { + /* it's a good virtual printer */ + iEtat = 0; +- if (!pcap_cache_add(name, NULL, NULL)) { ++ ok = pcap_cache_add_specific(&pcache, ++ name, NULL, NULL); ++ if (!ok) { ++ pcap_cache_destroy_specific(&pcache); + SAFE_FREE(line); + x_fclose(pfile); + TALLOC_FREE(ctx); +@@ -113,6 +123,7 @@ bool aix_cache_reload(void) + } + } + ++ *_pcache = pcache; + x_fclose(pfile); + TALLOC_FREE(ctx); + return true; +diff --git a/source3/printing/print_iprint.c b/source3/printing/print_iprint.c +index 529f0dd..6e91747 100644 +--- a/source3/printing/print_iprint.c ++++ b/source3/printing/print_iprint.c +@@ -204,7 +204,8 @@ static int iprint_get_server_version(http_t *http, char* serviceUri) + + static int iprint_cache_add_printer(http_t *http, + int reqId, +- char* url) ++ char *url, ++ struct pcap_cache **pcache) + { + ipp_t *request = NULL, /* IPP Request */ + *response = NULL; /* IPP Response */ +@@ -340,7 +341,7 @@ static int iprint_cache_add_printer(http_t *http, + */ + + if (name != NULL && !secure && smb_enabled) +- pcap_cache_add(name, info, NULL); ++ pcap_cache_add_specific(pcache, name, info, NULL); + } + + out: +@@ -349,7 +350,7 @@ static int iprint_cache_add_printer(http_t *http, + return(0); + } + +-bool iprint_cache_reload(void) ++bool iprint_cache_reload(struct pcap_cache **_pcache) + { + http_t *http = NULL; /* HTTP connection to server */ + ipp_t *request = NULL, /* IPP Request */ +@@ -357,7 +358,8 @@ bool iprint_cache_reload(void) + ipp_attribute_t *attr; /* Current attribute */ + cups_lang_t *language = NULL; /* Default language */ + int i; +- bool ret = False; ++ bool ret = false; ++ struct pcap_cache *pcache = NULL; + + DEBUG(5, ("reloading iprint printcap cache\n")); + +@@ -439,14 +441,16 @@ bool iprint_cache_reload(void) + char *url = ippGetString(attr, i, NULL); + if (!url || !strlen(url)) + continue; +- iprint_cache_add_printer(http, i+2, url); ++ iprint_cache_add_printer(http, i+2, url, ++ &pcache); + } + } + attr = ippNextAttribute(response); + } + } + +- ret = True; ++ ret = true; ++ *_pcache = pcache; + + out: + if (response) +diff --git a/source3/printing/print_standard.c b/source3/printing/print_standard.c +index c4f9c5b..b5f1056 100644 +--- a/source3/printing/print_standard.c ++++ b/source3/printing/print_standard.c +@@ -59,10 +59,11 @@ + #include "printing/pcap.h" + + /* handle standard printcap - moved from pcap_printer_fn() */ +-bool std_pcap_cache_reload(const char *pcap_name) ++bool std_pcap_cache_reload(const char *pcap_name, struct pcap_cache **_pcache) + { + XFILE *pcap_file; + char *pcap_line; ++ struct pcap_cache *pcache = NULL; + + if ((pcap_file = x_fopen(pcap_name, O_RDONLY, 0)) == NULL) { + DEBUG(0, ("Unable to open printcap file %s for read!\n", pcap_name)); +@@ -117,12 +118,15 @@ bool std_pcap_cache_reload(const char *pcap_name) + } + } + +- if (*name && !pcap_cache_add(name, comment, NULL)) { ++ if ((*name != '\0') ++ && !pcap_cache_add_specific(&pcache, name, comment, NULL)) { + x_fclose(pcap_file); ++ pcap_cache_destroy_specific(&pcache); + return false; + } + } + + x_fclose(pcap_file); ++ *_pcache = pcache; + return true; + } +diff --git a/source3/printing/print_svid.c b/source3/printing/print_svid.c +index 2226493..879661b 100644 +--- a/source3/printing/print_svid.c ++++ b/source3/printing/print_svid.c +@@ -35,10 +35,11 @@ + #include "printing/pcap.h" + + #if defined(SYSV) || defined(HPUX) +-bool sysv_cache_reload(void) ++bool sysv_cache_reload(struct pcap_cache **_pcache) + { + char **lines; + int i; ++ struct pcap_cache *pcache = NULL; + + #if defined(HPUX) + DEBUG(5, ("reloading hpux printcap cache\n")); +@@ -111,14 +112,16 @@ bool sysv_cache_reload(void) + *tmp = '\0'; + + /* add it to the cache */ +- if (!pcap_cache_add(name, NULL, NULL)) { ++ if (!pcap_cache_add_specific(&pcache, name, NULL, NULL)) { + TALLOC_FREE(lines); +- return False; ++ pcap_cache_destroy_specific(&pcache); ++ return false; + } + } + + TALLOC_FREE(lines); +- return True; ++ *_pcache = pcache; ++ return true; + } + + #else +-- +2.1.0 + + +From 91c0b6477fcd4ad20d1cda45f78f160cee8e58ff Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Fri, 25 Jul 2014 12:18:54 +0200 +Subject: [PATCH 4/7] PATCHSET18: printing: remove pcap_cache_add() + +All print list updates are now done via pcap_cache_replace(), which can +call into the print_list code directly. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Signed-off-by: David Disseldorp +--- + source3/printing/pcap.c | 16 ++++++---------- + source3/printing/pcap.h | 1 - + 2 files changed, 6 insertions(+), 11 deletions(-) + +diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c +index 5173fc9..5059f20 100644 +--- a/source3/printing/pcap.c ++++ b/source3/printing/pcap.c +@@ -83,15 +83,6 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache) + *pp_cache = NULL; + } + +-static bool pcap_cache_add(const char *name, const char *comment, const char *location) +-{ +- NTSTATUS status; +- time_t t = time_mono(NULL); +- +- status = printer_list_set_printer(talloc_tos(), name, comment, location, t); +- return NT_STATUS_IS_OK(status); +-} +- + bool pcap_cache_loaded(void) + { + NTSTATUS status; +@@ -105,6 +96,7 @@ bool pcap_cache_replace(const struct pcap_cache *pcache) + { + const struct pcap_cache *p; + NTSTATUS status; ++ time_t t = time_mono(NULL); + + status = printer_list_mark_reload(); + if (!NT_STATUS_IS_OK(status)) { +@@ -113,7 +105,11 @@ bool pcap_cache_replace(const struct pcap_cache *pcache) + } + + for (p = pcache; p; p = p->next) { +- pcap_cache_add(p->name, p->comment, p->location); ++ status = printer_list_set_printer(talloc_tos(), p->name, ++ p->comment, p->location, t); ++ if (!NT_STATUS_IS_OK(status)) { ++ return false; ++ } + } + + status = printer_list_clean_old(); +diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h +index d388d7d..7dccf84 100644 +--- a/source3/printing/pcap.h ++++ b/source3/printing/pcap.h +@@ -35,7 +35,6 @@ struct pcap_cache; + + bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment, const char *location); + void pcap_cache_destroy_specific(struct pcap_cache **ppcache); +-bool pcap_cache_add(const char *name, const char *comment, const char *location); + bool pcap_cache_loaded(void); + bool pcap_cache_replace(const struct pcap_cache *cache); + void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *); +-- +2.1.0 + + +From 10582491e417d5ab5c77afe2337793dbacd98fa8 Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Wed, 23 Jul 2014 12:12:34 +0200 +Subject: [PATCH 5/7] PATCHSET18: printing: return last change time with + pcap_cache_loaded() + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Signed-off-by: David Disseldorp +--- + source3/printing/load.c | 2 +- + source3/printing/pcap.c | 10 ++++++++-- + source3/printing/pcap.h | 2 +- + source3/web/swat.c | 4 ++-- + 4 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/source3/printing/load.c b/source3/printing/load.c +index 0a3de73..83f1095 100644 +--- a/source3/printing/load.c ++++ b/source3/printing/load.c +@@ -64,7 +64,7 @@ load automatic printer services from pre-populated pcap cache + void load_printers(struct tevent_context *ev, + struct messaging_context *msg_ctx) + { +- SMB_ASSERT(pcap_cache_loaded()); ++ SMB_ASSERT(pcap_cache_loaded(NULL)); + + add_auto_printers(); + +diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c +index 5059f20..027c1b2 100644 +--- a/source3/printing/pcap.c ++++ b/source3/printing/pcap.c +@@ -83,13 +83,19 @@ void pcap_cache_destroy_specific(struct pcap_cache **pp_cache) + *pp_cache = NULL; + } + +-bool pcap_cache_loaded(void) ++bool pcap_cache_loaded(time_t *_last_change) + { + NTSTATUS status; + time_t last; + + status = printer_list_get_last_refresh(&last); +- return NT_STATUS_IS_OK(status); ++ if (!NT_STATUS_IS_OK(status)) { ++ return false; ++ } ++ if (_last_change != NULL) { ++ *_last_change = last; ++ } ++ return true; + } + + bool pcap_cache_replace(const struct pcap_cache *pcache) +diff --git a/source3/printing/pcap.h b/source3/printing/pcap.h +index 7dccf84..8fc9e9d 100644 +--- a/source3/printing/pcap.h ++++ b/source3/printing/pcap.h +@@ -35,7 +35,7 @@ struct pcap_cache; + + bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment, const char *location); + void pcap_cache_destroy_specific(struct pcap_cache **ppcache); +-bool pcap_cache_loaded(void); ++bool pcap_cache_loaded(time_t *_last_change); + bool pcap_cache_replace(const struct pcap_cache *cache); + void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, const char *, void *), void *); + void pcap_printer_read_fn(void (*fn)(const char *, const char *, const char *, void *), void *); +diff --git a/source3/web/swat.c b/source3/web/swat.c +index f8933d2..a1a035c 100644 +--- a/source3/web/swat.c ++++ b/source3/web/swat.c +@@ -586,7 +586,7 @@ static int save_reload(int snum) + return 0; + } + iNumNonAutoPrintServices = lp_numservices(); +- if (pcap_cache_loaded()) { ++ if (pcap_cache_loaded(NULL)) { + load_printers(server_event_context(), + server_messaging_context()); + } +@@ -1572,7 +1572,7 @@ const char *lang_msg_rotate(TALLOC_CTX *ctx, const char *msgid) + reopen_logs(); + load_interfaces(); + iNumNonAutoPrintServices = lp_numservices(); +- if (pcap_cache_loaded()) { ++ if (pcap_cache_loaded(NULL)) { + load_printers(server_event_context(), + server_messaging_context()); + } +-- +2.1.0 + + +From 484667ff73b54b275f8629264aef27ec9628c7fd Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Wed, 23 Jul 2014 14:42:00 +0200 +Subject: [PATCH 6/7] PATCHSET18: smbd: only reprocess printer_list.tdb if it + changed + +The per-client smbd printer share inventory is currently updated from +printer_list.tdb when a client enumerates printers, via EnumPrinters or +NetShareEnum. +printer_list.tdb is populated by the background print process, based on +the latest printcap values retrieved from the printing backend (e.g. +CUPS) at regular intervals. +This change ensures that per-client smbd processes don't reparse +printer_list.tdb if it hasn't been updated since the last enumeration. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Suggested-by: Volker Lendecke +Signed-off-by: David Disseldorp +--- + source3/smbd/server_reload.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c +index c4c5a8d..57f7972 100644 +--- a/source3/smbd/server_reload.c ++++ b/source3/smbd/server_reload.c +@@ -30,6 +30,13 @@ + #include "auth.h" + #include "messages.h" + ++/* ++ * The persistent pcap cache is populated by the background print process. Per ++ * client smbds should only reload their printer share inventories if this ++ * information has changed. Use last_reload_time to detect this. ++ */ ++static time_t reload_last_pcap_time = 0; ++ + /**************************************************************************** + purge stale printers and reload from pre-populated pcap cache + **************************************************************************/ +@@ -40,6 +47,20 @@ void reload_printers(struct tevent_context *ev, + int pnum; + int snum; + const char *pname; ++ bool ok; ++ time_t pcap_last_update; ++ ++ ok = pcap_cache_loaded(&pcap_last_update); ++ if (!ok) { ++ DEBUG(1, ("pcap cache not loaded\n")); ++ return; ++ } ++ ++ if (reload_last_pcap_time == pcap_last_update) { ++ DEBUG(5, ("skipping printer reload, already up to date.\n")); ++ return; ++ } ++ reload_last_pcap_time = pcap_last_update; + + n_services = lp_numservices(); + pnum = lp_servicenumber(PRINTERS_NAME); +-- +2.1.0 + + +From 08848f939b735b5a68066ebcc995247d77f5fa2d Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Wed, 6 Aug 2014 14:33:02 +0200 +Subject: [PATCH 7/7] PATCHSET18: printing: reload printer shares on + OpenPrinter + +The printer share inventory should be reloaded on open _and_ +enumeration, as there are some clients, such as cupsaddsmb, that do not +perform an enumeration prior to access. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=10652 + +Signed-off-by: David Disseldorp +--- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index db48574..fb8f61f 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -1737,6 +1737,16 @@ WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p, + return WERR_INVALID_PARAM; + } + ++ /* ++ * The printcap printer share inventory is updated on client ++ * enumeration. For clients that do not perform enumeration prior to ++ * access, such as cupssmbadd, we reinitialise the printer share ++ * inventory on open as well. ++ */ ++ become_root(); ++ reload_printers(messaging_event_context(p->msg_ctx), p->msg_ctx); ++ unbecome_root(); ++ + /* some sanity check because you can open a printer or a print server */ + /* aka: \\server\printer or \\server */ + +@@ -4323,7 +4333,7 @@ static WERROR enum_all_printers_info_level(TALLOC_CTX *mem_ctx, + struct dcerpc_binding_handle *b = NULL; + + /* +- * printer shares are only updated on client enumeration. The background ++ * printer shares are updated on client enumeration. The background + * printer process updates printer_list.tdb at regular intervals. + */ + become_root(); +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch b/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch new file mode 100644 index 000000000..cc4352890 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_rpc_query_user_list.patch @@ -0,0 +1,37 @@ +From 75497eb3bb57424cefbbbe0c61cd2b0adcad802b Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 2 Nov 2016 17:19:09 +0100 +Subject: [PATCH] s3-winbind: Do not return NO_MEMORY if we have an empty user + list + +The domain child for the MACHINE ACCOUNT might fail with +NT_STATUS_NO_MEMORY because an emtpy user list is returned. + +*pnum_info is already set to 0 at the beginngin so we should just +declare victory here! + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=12405 + +Signed-off-by: Andreas Schneider +--- + source3/winbindd/winbindd_rpc.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/source3/winbindd/winbindd_rpc.c b/source3/winbindd/winbindd_rpc.c +index c560a6b..59bd78a 100644 +--- a/source3/winbindd/winbindd_rpc.c ++++ b/source3/winbindd/winbindd_rpc.c +@@ -88,6 +88,10 @@ NTSTATUS rpc_query_user_list(TALLOC_CTX *mem_ctx, + num_dom_users = disp_info.info1.count; + + num_info += num_dom_users; ++ /* If there are no user to enumerate we're done */ ++ if (num_info == 0) { ++ return NT_STATUS_OK; ++ } + + info = TALLOC_REALLOC_ARRAY(mem_ctx, + info, +-- +2.7.4 + diff --git a/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch b/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch new file mode 100644 index 000000000..02be2c632 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_rpcclient_timeout_command.patch @@ -0,0 +1,73 @@ +From fe30cb2d1932401b5507af9f12149506cf0ae749 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 7 Apr 2015 16:12:18 +0200 +Subject: [PATCH] PATCHSET25: rpcclient: Fix the timeout command + +https://bugzilla.samba.org/show_bug.cgi?id=11199 + +Signed-off-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher + +(cherry picked from commit 2bca4cdc6f83dce48c73a33288c4fd3ae80f883b) +--- + source3/rpcclient/rpcclient.c | 23 +++++++---------------- + 1 file changed, 7 insertions(+), 16 deletions(-) + +diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c +index c2f3e4c..0dbcd01 100644 +--- a/source3/rpcclient/rpcclient.c ++++ b/source3/rpcclient/rpcclient.c +@@ -481,8 +481,6 @@ static NTSTATUS cmd_seal(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, + static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, + int argc, const char **argv) + { +- struct cmd_list *tmp; +- + if (argc > 2) { + printf("Usage: %s timeout\n", argv[0]); + return NT_STATUS_OK; +@@ -490,19 +488,6 @@ static NTSTATUS cmd_timeout(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, + + if (argc == 2) { + timeout = atoi(argv[1]); +- +- for (tmp = cmd_list; tmp; tmp = tmp->next) { +- +- struct cmd_set *tmp_set; +- +- for (tmp_set = tmp->cmd_set; tmp_set->name; tmp_set++) { +- if (tmp_set->rpc_pipe == NULL) { +- continue; +- } +- +- rpccli_set_timeout(tmp_set->rpc_pipe, timeout); +- } +- } + } + + printf("timeout is %d\n", timeout); +@@ -791,6 +776,11 @@ static NTSTATUS do_cmd(struct cli_state *cli, + } + } + ++ /* Set timeout for new connections */ ++ if (cmd_entry->rpc_pipe) { ++ rpccli_set_timeout(cmd_entry->rpc_pipe, timeout); ++ } ++ + /* Run command */ + + if ( cmd_entry->returntype == RPC_RTYPE_NTSTATUS ) { +@@ -1124,7 +1114,8 @@ out_free: + + /* Load command lists */ + +- timeout = cli_set_timeout(cli, 10000); ++ timeout = 10000; ++ cli_set_timeout(cli, timeout); + + cmd_set = rpcclient_command_list; + +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch b/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch new file mode 100644 index 000000000..ad2335328 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_security_server_share_access.patch @@ -0,0 +1,70 @@ +From 56bfca66b8597afe731f4624bb9f862bb45f81ba Mon Sep 17 00:00:00 2001 +From: Matt Rogers +Date: Mon, 12 Oct 2015 14:46:18 +0200 +Subject: [PATCH] PATCHSET33: s3-auch: Fix secuirty = server share access + +Resolve user groups in non-winbind path of passwd_to_SamInfo3(), fixing +group memberships with server security. + +Signed-off-by: Matt Rogers +--- + source3/auth/server_info.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index 1fd9317..91724cc 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -571,7 +571,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + enum lsa_SidType type; + uint32_t num_sids = 0; + struct dom_sid *user_sids = NULL; ++ gid_t *gids = NULL; + bool ok; ++ int i; + + tmp_ctx = talloc_stackframe(); + +@@ -629,6 +631,29 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + get_global_sam_sid(), + DOMAIN_RID_USERS); + } ++ ++ if (!getgroups_unix_user(tmp_ctx, ++ unix_username, ++ pwd->pw_gid, ++ &gids, ++ &num_sids)) { ++ DEBUG(1, ("Failed to get unix user groups.\n")); ++ goto done; ++ } ++ ++ if (num_sids == 0) { ++ smb_panic("primary group missing"); ++ } ++ ++ user_sids = TALLOC_ARRAY(tmp_ctx, struct dom_sid, num_sids); ++ ++ if (user_sids == NULL) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ ++ for (i = 0; i < num_sids; i++) { ++ gid_to_sid(&user_sids[i], gids[i]); ++ } + } + + /* Make sure we have a valid group sid */ +@@ -696,6 +721,9 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + + status = NT_STATUS_OK; + done: ++ if (gids != NULL) { ++ talloc_free(gids); ++ } + talloc_free(tmp_ctx); + + return status; +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch b/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch new file mode 100644 index 000000000..e31f75e97 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_setup_domain_child_logic.patch @@ -0,0 +1,186 @@ +commit 9dd0bb462b613a5f6f41d4130bfd31c0a64debd7 +Author: Jeremy Allison +AuthorDate: Mon Jan 13 15:23:00 2014 +0100 +Commit: Andreas Schneider +CommitDate: Wed Feb 5 11:45:44 2014 +0100 + + s3-winbind: Move setup_domain_child() into add_trusted_domain(). + + Ensure it only gets called when a new domain is allocated + and added to the list. + + This should fix problems with the previous logic where + setup_domain_child() was called in places where an existing + domain was returned. + + BUG: https://bugzilla.samba.org/show_bug.cgi?id=10358 +--- + source3/winbindd/winbindd_util.c | 74 ++++++++++++++++++---------------------- + 1 file changed, 33 insertions(+), 41 deletions(-) + +diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c +index 37b6578..353722e 100644 +--- a/source3/winbindd/winbindd_util.c ++++ b/source3/winbindd/winbindd_util.c +@@ -89,7 +89,10 @@ static bool is_in_internal_domain(const struct dom_sid *sid) + } + + +-/* Add a trusted domain to our list of domains */ ++/* Add a trusted domain to our list of domains. ++ If the domain already exists in the list, ++ return it and don't re-initialize. ++ */ + static struct winbindd_domain *add_trusted_domain(const char *domain_name, const char *alt_name, + struct winbindd_methods *methods, + const struct dom_sid *sid) +@@ -99,6 +102,7 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const + char *idmap_config_option; + const char *param; + const char **ignored_domains, **dom; ++ int role = lp_server_role(); + + ignored_domains = lp_parm_string_list(-1, "winbind", "ignore domains", NULL); + for (dom=ignored_domains; dom && *dom; dom++) { +@@ -146,7 +150,10 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const + + if (domain != NULL) { + /* +- * We found a match. Possibly update the SID ++ * We found a match on domain->name or ++ * domain->alt_name. Possibly update the SID ++ * if the stored SID was the NULL SID ++ * and return the matching entry. + */ + if ((sid != NULL) + && dom_sid_equal(&domain->sid, &global_sid_NULL)) { +@@ -192,6 +199,15 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const + sid_copy(&domain->sid, sid); + } + ++ /* Is this our primary domain ? */ ++ if (strequal(domain_name, get_global_sam_name()) && ++ (role != ROLE_DOMAIN_MEMBER)) { ++ domain->primary = true; ++ } else if (strequal(domain_name, lp_workgroup()) && ++ (role == ROLE_DOMAIN_MEMBER)) { ++ domain->primary = true; ++ } ++ + /* Link to domain list */ + DLIST_ADD_END(_domain_list, domain, struct winbindd_domain *); + +@@ -228,6 +244,8 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const + + done: + ++ setup_domain_child(domain); ++ + DEBUG(2,("Added domain %s %s %s\n", + domain->name, domain->alt_name, + &domain->sid?sid_string_dbg(&domain->sid):"")); +@@ -341,18 +359,10 @@ static void trustdom_list_done(struct tevent_req *req) + necessary. This is important because we need the + SID for sibling domains */ + +- if ( find_domain_from_name_noinit(p) != NULL ) { +- domain = add_trusted_domain(p, alternate_name, +- &cache_methods, +- &sid); +- } else { +- domain = add_trusted_domain(p, alternate_name, +- &cache_methods, +- &sid); +- if (domain) { +- setup_domain_child(domain); +- } +- } ++ (void)add_trusted_domain(p, alternate_name, ++ &cache_methods, ++ &sid); ++ + p=q; + if (p != NULL) + p += 1; +@@ -422,13 +432,10 @@ static void rescan_forest_root_trusts( void ) + d = find_domain_from_name_noinit( dom_list[i].domain_name ); + + if ( !d ) { +- d = add_trusted_domain( dom_list[i].domain_name, ++ (void)add_trusted_domain( dom_list[i].domain_name, + dom_list[i].dns_name, + &cache_methods, +- &dom_list[i].sid ); +- if (d != NULL) { +- setup_domain_child(d); +- } ++ &dom_list[i].sid); + } + + if (d == NULL) { +@@ -494,13 +501,10 @@ static void rescan_forest_trusts( void ) + about it */ + + if ( !d ) { +- d = add_trusted_domain( dom_list[i].domain_name, ++ (void)add_trusted_domain( dom_list[i].domain_name, + dom_list[i].dns_name, + &cache_methods, +- &dom_list[i].sid ); +- if (d != NULL) { +- setup_domain_child(d); +- } ++ &dom_list[i].sid); + } + + if (d == NULL) { +@@ -601,7 +605,6 @@ enum winbindd_result winbindd_dual_init_connection(struct winbindd_domain *domai + /* Look up global info for the winbind daemon */ + bool init_domain_list(void) + { +- struct winbindd_domain *domain; + int role = lp_server_role(); + + /* Free existing list */ +@@ -609,26 +612,18 @@ bool init_domain_list(void) + + /* BUILTIN domain */ + +- domain = add_trusted_domain("BUILTIN", NULL, &cache_methods, +- &global_sid_Builtin); +- if (domain) { +- setup_domain_child(domain); +- } ++ (void)add_trusted_domain("BUILTIN", NULL, &cache_methods, ++ &global_sid_Builtin); + + /* Local SAM */ + +- domain = add_trusted_domain(get_global_sam_name(), NULL, +- &cache_methods, get_global_sam_sid()); +- if (domain) { +- if ( role != ROLE_DOMAIN_MEMBER ) { +- domain->primary = True; +- } +- setup_domain_child(domain); +- } ++ (void)add_trusted_domain(get_global_sam_name(), NULL, ++ &cache_methods, get_global_sam_sid()); + + /* Add ourselves as the first entry. */ + + if ( role == ROLE_DOMAIN_MEMBER ) { ++ struct winbindd_domain *domain; + struct dom_sid our_sid; + + if (!secrets_fetch_domain_sid(lp_workgroup(), &our_sid)) { +@@ -639,9 +634,6 @@ bool init_domain_list(void) + domain = add_trusted_domain( lp_workgroup(), lp_realm(), + &cache_methods, &our_sid); + if (domain) { +- domain->primary = True; +- setup_domain_child(domain); +- + /* Even in the parent winbindd we'll need to + talk to the DC, so try and see if we can + contact it. Theoretically this isn't neccessary diff --git a/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch b/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch new file mode 100644 index 000000000..3b0d1788d --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_smb_conf_doc.patch @@ -0,0 +1,51 @@ +From cea644fd24dbbf2e2359fd7b6d361a698660d5eb Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 2 Mar 2015 11:55:01 +0100 +Subject: [PATCH] PATCHSET20: doc-xml: Add 'sharesec' reference to 'access + based share enum' + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11127 + +Signed-off-by: Andreas Schneider +Reviewed-by: Michael Adam + +Autobuild-User(master): Andreas Schneider +Autobuild-Date(master): Mon Mar 2 14:33:33 CET 2015 on sn-devel-104 + +(cherry picked from commit e2ed224653985afa13e906e2a5f3656a18d622c0) +Signed-off-by: Andreas Schneider +--- + docs-xml/smbdotconf/security/accessbasedshareenum.xml | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +Index: samba-3.6.23/docs-xml/smbdotconf/security/accessbasedshareenum.xml +=================================================================== +--- samba-3.6.23.orig/docs-xml/smbdotconf/security/accessbasedshareenum.xml ++++ samba-3.6.23/docs-xml/smbdotconf/security/accessbasedshareenum.xml +@@ -7,7 +7,10 @@ + If this parameter is yes for a + service, then the share hosted by the service will only be visible + to users who have read or write access to the share during share +- enumeration (for example net view \\sambaserver). This has ++ enumeration (for example net view \\sambaserver). The share ACLs ++ which allow or deny the access to the share can be modified using ++ for example the sharesec command ++ or using the appropriate Windows tools. This has + parallels to access based enumeration, the main difference being + that only share permissions are evaluated, and security + descriptors on files contained on the share are not used in +Index: samba-3.6.23/docs/manpages/smb.conf.5 +=================================================================== +--- samba-3.6.23.orig/docs/manpages/smb.conf.5 ++++ samba-3.6.23/docs/manpages/smb.conf.5 +@@ -784,7 +784,9 @@ access based share enum (S) + .RS 4 + If this parameter is + \fByes\fR +-for a service, then the share hosted by the service will only be visible to users who have read or write access to the share during share enumeration (for example net view \e\esambaserver)\&. This has parallels to access based enumeration, the main difference being that only share permissions are evaluated, and security descriptors on files contained on the share are not used in computing enumeration access rights\&. ++for a service, then the share hosted by the service will only be visible to users who have read or write access to the share during share enumeration (for example net view \e\esambaserver)\&. The share ACLs which allow or deny the access to the share can be modified using for example the ++sharesec ++command or using the appropriate Windows tools\&. This has parallels to access based enumeration, the main difference being that only share permissions are evaluated, and security descriptors on files contained on the share are not used in computing enumeration access rights\&. + .sp + Default: + \fI\fIaccess based share enum\fR\fR\fI = \fR\fIno\fR\fI \fR diff --git a/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch b/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch new file mode 100644 index 000000000..4f136e505 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_smbclient_ntlmv2_auth.patch @@ -0,0 +1,116 @@ +From b413a09fa5b927102655a8332e95a64a80e57825 Mon Sep 17 00:00:00 2001 +From: Stefan Metzmacher +Date: Thu, 21 Jul 2011 21:15:38 +0200 +Subject: [PATCH 1/2] PATCHSET19: s3:libsmb: don't pass cli->called.name to + NTLMv2_generate_names_blob() + +cli->called.name is never initialized, so this change doesn't change +the behavior. And this behavior seems to be correct, see +commit 29c0c37691da10bf061ba90a5b31482bda2fa486 +s4/libcli: do not use netbios name in NTLMv2 blobs w/o spnego. + +metze + +(cherry picked from commit 392ddf970c8f8486e79eec5214ed49912e344e09) +--- + source3/libsmb/cliconnect.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c +index 8653ba7..38ae230 100644 +--- a/source3/libsmb/cliconnect.c ++++ b/source3/libsmb/cliconnect.c +@@ -862,11 +862,11 @@ static struct tevent_req *cli_session_setup_nt1_send( + /* + * note that the 'workgroup' here is a best + * guess - we don't know the server's domain +- * at this point. The 'server name' is also +- * dodgy... ++ * at this point. Windows clients also don't ++ * use hostname... + */ + names_blob = NTLMv2_generate_names_blob( +- NULL, cli->called.name, workgroup); ++ NULL, NULL, workgroup); + + if (tevent_req_nomem(names_blob.data, req)) { + return tevent_req_post(req, ev); +-- +2.1.0 + + +From 1415733b6cfeba129e1459ef55a0a12a5dec0fa3 Mon Sep 17 00:00:00 2001 +From: Christian Ambach +Date: Thu, 7 Apr 2011 14:05:04 +0200 +Subject: [PATCH 2/2] PATCHSET19: s4/libcli: do not use netbios name in NTLMv2 + blobs w/o spnego + +I have seen domain controllers rejecting NTLMv2 blobs presented to +NetrLogonSamLogonEx with LOGON_FAILURE when the MsvAvNbComputerName +was a FQDN or an IP address + +I have not seen this field in NTLMv2 blobs send by Windows clients +when extended security was not available, so omitting the field +makes Samba similar to Windows. + +This prevents errors with some smbtorture testcases that disable +spnego and when a target name is specified that is not a valid +netbios name. + +Signed-off-by: Andrew Bartlett + +Autobuild-User: Andrew Bartlett +Autobuild-Date: Thu Apr 14 02:19:08 CEST 2011 on sn-devel-104 +(cherry picked from commit 29c0c37691da10bf061ba90a5b31482bda2fa486) +--- + source4/libcli/smb_composite/sesssetup.c | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +diff --git a/source4/libcli/smb_composite/sesssetup.c b/source4/libcli/smb_composite/sesssetup.c +index e1159a4..ebc3598 100644 +--- a/source4/libcli/smb_composite/sesssetup.c ++++ b/source4/libcli/smb_composite/sesssetup.c +@@ -280,8 +280,17 @@ static NTSTATUS session_setup_nt1(struct composite_context *c, + struct smbcli_request **req) + { + NTSTATUS nt_status = NT_STATUS_INTERNAL_ERROR; +- struct sesssetup_state *state = talloc_get_type(c->private_data, struct sesssetup_state); +- DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, session->transport->socket->hostname, cli_credentials_get_domain(io->in.credentials)); ++ struct sesssetup_state *state = talloc_get_type(c->private_data, ++ struct sesssetup_state); ++ const char *domain = cli_credentials_get_domain(io->in.credentials); ++ ++ /* ++ * domain controllers tend to reject the NTLM v2 blob ++ * if the netbiosname is not valid (e.g. IP address or FQDN) ++ * so just leave it away (as Windows client do) ++ */ ++ DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, NULL, domain); ++ + DATA_BLOB session_key = data_blob(NULL, 0); + int flags = CLI_CRED_NTLM_AUTH; + +@@ -353,9 +362,18 @@ static NTSTATUS session_setup_old(struct composite_context *c, + struct smbcli_request **req) + { + NTSTATUS nt_status; +- struct sesssetup_state *state = talloc_get_type(c->private_data, struct sesssetup_state); ++ struct sesssetup_state *state = talloc_get_type(c->private_data, ++ struct sesssetup_state); + const char *password = cli_credentials_get_password(io->in.credentials); +- DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, session->transport->socket->hostname, cli_credentials_get_domain(io->in.credentials)); ++ const char *domain = cli_credentials_get_domain(io->in.credentials); ++ ++ /* ++ * domain controllers tend to reject the NTLM v2 blob ++ * if the netbiosname is not valid (e.g. IP address or FQDN) ++ * so just leave it away (as Windows client do) ++ */ ++ DATA_BLOB names_blob = NTLMv2_generate_names_blob(state, NULL, domain); ++ + DATA_BLOB session_key; + int flags = 0; + if (session->options.lanman_auth) { +-- +2.1.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch b/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch new file mode 100644 index 000000000..3ad3b62ae --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_stale_printer_entries_on_rename.patch @@ -0,0 +1,55 @@ +From 20d92c8a18beb4af2b9020efed15f5238d86d13c Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Wed, 1 Apr 2015 01:03:13 +0200 +Subject: [PATCH] PATCHSET30 spoolss: purge the printer name cache on name + change +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently the name cache is only cleared on printer deletion. This means +that if a printer undergoes a name change, the old name remains in the +cache and can be subsequently used incorrecly if another printer takes +the same name as the old. + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=11210 + +Reported-by: Franz Pförtsch +Signed-off-by: David Disseldorp +Reviewed-by: Jeremy Allison + +Autobuild-User(master): Jeremy Allison +Autobuild-Date(master): Tue Apr 14 05:37:50 CEST 2015 on sn-devel-104 + +(cherry picked from commit a97507a9a7ba01beead6a621e1210618e93a9f9c) +--- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index fb8f61f..629bdc2 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -6373,6 +6373,9 @@ static WERROR update_dsspooler(TALLOC_CTX *mem_ctx, + snum, printer->sharename ? + printer->sharename : ""); + } ++ ++ /* name change, purge any cache entries for the old */ ++ prune_printername_cache(); + } + + if (force_update || !strequal(printer->printername, old_printer->printername)) { +@@ -6398,6 +6401,9 @@ static WERROR update_dsspooler(TALLOC_CTX *mem_ctx, + notify_printer_printername(server_event_context(), + msg_ctx, snum, p ? p : ""); + } ++ ++ /* name change, purge any cache entries for the old */ ++ prune_printername_cache(); + } + + if (force_update || !strequal(printer->portname, old_printer->portname)) { +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch b/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch new file mode 100644 index 000000000..8819849f7 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_symlink_verification.patch @@ -0,0 +1,111 @@ +From b6192b3cdeaa9eb719ec5da3977af9470504d294 Mon Sep 17 00:00:00 2001 +From: Michael Adam +Date: Wed, 23 Dec 2015 18:01:23 +0100 +Subject: [PATCH] s3:smbd: fix a corner case of the symlink verification + +Commit 7606c0db257b3f9d84da5b2bf5fbb4034cc8d77d fixes the +path checks in check_reduced_name[_with_privilege]() to +prevent unintended access via wide links. + +The fix fails to correctly treat a corner case where the share +path is "/". This case is important for some real world +scenarios, notably the use of the glusterfs VFS module: + +For the share path "/", the newly introduced checks deny all +operations in the share. + +This change fixes the checks for the corner case. +The point is that the assumptions on which the original +checks are based are not true for the rootdir "/" case. +This is the case where the rootdir starts _and ends_ with +a slash. Hence a subdirectory does not continue with a +slash after the rootdir, since the candidate path has +been normalized. + +This fix just omits the string comparison and the +next character checks in the case of rootdir "/", +which is correct because we know that the candidate +path is normalized and hence starts with a '/'. + +The patch is fairly minimal, but changes indentation, +hence best viewed with 'git show -w'. + +A side effect is that the rootdir="/" case needs +one strncmp less. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11647 + +Pair-Programmed-With: Jose A. Rivera + +Signed-off-by: Michael Adam +Signed-off-by: Jose A. Rivera +Reviewed-by: Jeremy Allison + +Autobuild-User(master): Michael Adam +Autobuild-Date(master): Thu Dec 24 00:57:31 CET 2015 on sn-devel-144 + +(cherry picked from commit ada59ec7b3a5ed0478d11da2fe0c90991d137288) +--- + source3/smbd/vfs.c | 39 +++++++++++++++++++++++++++------------ + 1 file changed, 27 insertions(+), 12 deletions(-) + +diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c +index bd93b7f..2b8000d 100644 +--- a/source3/smbd/vfs.c ++++ b/source3/smbd/vfs.c +@@ -982,7 +982,6 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname) + if (!allow_widelinks || !allow_symlinks) { + const char *conn_rootdir; + size_t rootdir_len; +- bool matched; + + conn_rootdir = SMB_VFS_CONNECTPATH(conn, fname); + if (conn_rootdir == NULL) { +@@ -993,17 +992,33 @@ NTSTATUS check_reduced_name(connection_struct *conn, const char *fname) + } + + rootdir_len = strlen(conn_rootdir); +- matched = (strncmp(conn_rootdir, resolved_name, +- rootdir_len) == 0); +- if (!matched || (resolved_name[rootdir_len] != '/' && +- resolved_name[rootdir_len] != '\0')) { +- DEBUG(2, ("check_reduced_name: Bad access " +- "attempt: %s is a symlink outside the " +- "share path\n", fname)); +- DEBUGADD(2, ("conn_rootdir =%s\n", conn_rootdir)); +- DEBUGADD(2, ("resolved_name=%s\n", resolved_name)); +- SAFE_FREE(resolved_name); +- return NT_STATUS_ACCESS_DENIED; ++ ++ /* ++ * In the case of rootdir_len == 1, we know that ++ * conn_rootdir is "/", and we also know that ++ * resolved_name starts with a slash. So, in this ++ * corner case, resolved_name is automatically a ++ * sub-directory of the conn_rootdir. Thus we can skip ++ * the string comparison and the next character checks ++ * (which are even wrong in this case). ++ */ ++ if (rootdir_len != 1) { ++ bool matched; ++ ++ matched = (strncmp(conn_rootdir, resolved_name, ++ rootdir_len) == 0); ++ if (!matched || (resolved_name[rootdir_len] != '/' && ++ resolved_name[rootdir_len] != '\0')) { ++ DEBUG(2, ("check_reduced_name: Bad access " ++ "attempt: %s is a symlink outside the " ++ "share path\n", fname)); ++ DEBUGADD(2, ("conn_rootdir =%s\n", ++ conn_rootdir)); ++ DEBUGADD(2, ("resolved_name=%s\n", ++ resolved_name)); ++ SAFE_FREE(resolved_name); ++ return NT_STATUS_ACCESS_DENIED; ++ } + } + + /* Extra checks if all symlinks are disallowed. */ +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch b/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch new file mode 100644 index 000000000..a30494e29 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_usergroup_cache_lookup.patch @@ -0,0 +1,397 @@ +From 72494e601ee6027873494f7ee7aff03d9170e3eb Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Mon, 16 Jun 2014 22:49:29 -0700 +Subject: [PATCH 1/5] PATCHSET21: s3: auth: Add some const to the struct + netr_SamInfo3 * arguments of copy_netr_SamInfo3() and + make_server_info_info3() + +Both functions only read from the struct netr_SamInfo3 * argument. + +Signed-off-by: Jeremy Allison +Reviewed-by: Richard Sharpe +Reviewed-by: Simo Sorce +(cherry picked from commit c2411767adb5ce48a4619349075f6f8faae41aab) + +Conflicts: + source3/auth/proto.h +--- + source3/auth/auth_util.c | 2 +- + source3/auth/proto.h | 4 ++-- + source3/auth/server_info.c | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c +index 1f1fed9..a548b7b 100644 +--- a/source3/auth/auth_util.c ++++ b/source3/auth/auth_util.c +@@ -1195,7 +1195,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, + const char *sent_nt_username, + const char *domain, + struct auth_serversupplied_info **server_info, +- struct netr_SamInfo3 *info3) ++ const struct netr_SamInfo3 *info3) + { + static const char zeros[16] = {0, }; + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index fccabc4..c851722 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -173,7 +173,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, + const char *sent_nt_username, + const char *domain, + struct auth_serversupplied_info **server_info, +- struct netr_SamInfo3 *info3); ++ const struct netr_SamInfo3 *info3); + struct wbcAuthUserInfo; + NTSTATUS make_server_info_wbcAuthUserInfo(TALLOC_CTX *mem_ctx, + const char *sent_nt_username, +@@ -233,7 +233,7 @@ NTSTATUS passwd_to_SamInfo3(TALLOC_CTX *mem_ctx, + const struct passwd *pwd, + struct netr_SamInfo3 **pinfo3); + struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx, +- struct netr_SamInfo3 *orig); ++ const struct netr_SamInfo3 *orig); + struct netr_SamInfo3 *wbcAuthUserInfo_to_netr_SamInfo3(TALLOC_CTX *mem_ctx, + const struct wbcAuthUserInfo *info); + +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index e627892..63b4989 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -632,7 +632,7 @@ done: + } } while(0) + + struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx, +- struct netr_SamInfo3 *orig) ++ const struct netr_SamInfo3 *orig) + { + struct netr_SamInfo3 *info3; + unsigned int i; +-- +2.1.0 + + +From 1afd41a9cc31acdff66ab084ba89913c8a239a0f Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Mon, 16 Jun 2014 22:54:45 -0700 +Subject: [PATCH 2/5] PATCHSET21: s3: auth: Change make_server_info_info3() to + take a const struct netr_SamInfo3 pointer instead of a struct PAC_LOGON_INFO. + +make_server_info_info3() only reads from the info3 pointer. + +Signed-off-by: Jeremy Allison +Reviewed-by: Richard Sharpe +Reviewed-by: Simo Sorce +(cherry picked from commit 527f7b54388713acaaf7b66c718cc0f7114fc368) + +Conflicts: + source3/auth/auth_generic.c + source3/auth/proto.h + source3/auth/user_krb5.c +--- + source3/auth/proto.h | 2 +- + source3/auth/user_krb5.c | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index c851722..0ab32a7 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -305,7 +305,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + char *ntdomain, + char *username, + struct passwd *pw, +- struct PAC_LOGON_INFO *logon_info, ++ const struct netr_SamInfo3 *info3, + bool mapped_to_guest, + struct auth_serversupplied_info **server_info); + +diff --git a/source3/auth/user_krb5.c b/source3/auth/user_krb5.c +index 1e5254e..fde2f48 100644 +--- a/source3/auth/user_krb5.c ++++ b/source3/auth/user_krb5.c +@@ -184,7 +184,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + char *ntdomain, + char *username, + struct passwd *pw, +- struct PAC_LOGON_INFO *logon_info, ++ const struct netr_SamInfo3 *info3, + bool mapped_to_guest, + struct auth_serversupplied_info **server_info) + { +@@ -198,14 +198,14 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + return status; + } + +- } else if (logon_info) { ++ } else if (info3) { + /* pass the unmapped username here since map_username() + will be called again in make_server_info_info3() */ + + status = make_server_info_info3(mem_ctx, + ntuser, ntdomain, + server_info, +- &logon_info->info3); ++ info3); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(1, ("make_server_info_info3 failed: %s!\n", + nt_errstr(status))); +@@ -284,7 +284,7 @@ NTSTATUS make_server_info_krb5(TALLOC_CTX *mem_ctx, + char *ntdomain, + char *username, + struct passwd *pw, +- struct PAC_LOGON_INFO *logon_info, ++ const struct netr_SamInfo3 *info3, + bool mapped_to_guest, + struct auth_serversupplied_info **server_info) + { +-- +2.1.0 + + +From 08bf07ec03537aedbd7beb359cf9274be2882edf Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Mon, 16 Jun 2014 23:11:58 -0700 +Subject: [PATCH 3/5] PATCHSET21: s3: auth: Add + create_info3_from_pac_logon_info() to create a new info3 and merge resource + group SIDs into it. + +Originally written by Richard Sharpe Richard Sharpe . + +Signed-off-by: Jeremy Allison +Reviewed-by: Richard Sharpe +Reviewed-by: Simo Sorce +(cherry picked from commit db775c68ccbed0252abf092b5cb811e8f5fa9bb6) +--- + source3/auth/proto.h | 5 ++- + source3/auth/server_info.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 82 insertions(+), 1 deletion(-) + +diff --git a/source3/auth/proto.h b/source3/auth/proto.h +index 0ab32a7..4335cf8 100644 +--- a/source3/auth/proto.h ++++ b/source3/auth/proto.h +@@ -209,6 +209,7 @@ NTSTATUS auth_winbind_init(void); + struct netr_SamInfo2; + struct netr_SamInfo3; + struct netr_SamInfo6; ++struct PAC_LOGON_INFO; + + struct auth_serversupplied_info *make_server_info(TALLOC_CTX *mem_ctx); + NTSTATUS serverinfo_to_SamInfo2(struct auth_serversupplied_info *server_info, +@@ -223,6 +224,9 @@ NTSTATUS serverinfo_to_SamInfo6(struct auth_serversupplied_info *server_info, + uint8_t *pipe_session_key, + size_t pipe_session_key_len, + struct netr_SamInfo6 *sam6); ++NTSTATUS create_info3_from_pac_logon_info(TALLOC_CTX *mem_ctx, ++ const struct PAC_LOGON_INFO *logon_info, ++ struct netr_SamInfo3 **pp_info3); + NTSTATUS samu_to_SamInfo3(TALLOC_CTX *mem_ctx, + struct samu *samu, + const char *login_server, +@@ -289,7 +293,6 @@ bool user_in_netgroup(TALLOC_CTX *ctx, const char *user, const char *ngname); + bool user_in_list(TALLOC_CTX *ctx, const char *user,const char **list); + + /* The following definitions come from auth/user_krb5.c */ +-struct PAC_LOGON_INFO; + NTSTATUS get_user_from_kerberos_info(TALLOC_CTX *mem_ctx, + const char *cli_name, + const char *princ_name, +diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c +index 63b4989..1fd9317 100644 +--- a/source3/auth/server_info.c ++++ b/source3/auth/server_info.c +@@ -21,6 +21,7 @@ + #include "auth.h" + #include "../lib/crypto/arcfour.h" + #include "../librpc/gen_ndr/netlogon.h" ++#include "../librpc/gen_ndr/krb5pac.h" + #include "../libcli/security/security.h" + #include "rpc_client/util_netlogon.h" + #include "nsswitch/libwbclient/wbclient.h" +@@ -293,6 +294,83 @@ static NTSTATUS group_sids_to_info3(struct netr_SamInfo3 *info3, + return NT_STATUS_OK; + } + ++/* ++ * Merge resource SIDs, if any, into the passed in info3 structure. ++ */ ++ ++static NTSTATUS merge_resource_sids(const struct PAC_LOGON_INFO *logon_info, ++ struct netr_SamInfo3 *info3) ++{ ++ uint32_t i = 0; ++ ++ if (!(logon_info->info3.base.user_flags & NETLOGON_RESOURCE_GROUPS)) { ++ return NT_STATUS_OK; ++ } ++ ++ /* ++ * If there are any resource groups (SID Compression) add ++ * them to the extra sids portion of the info3 in the PAC. ++ * ++ * This makes the info3 look like it would if we got the info ++ * from the DC rather than the PAC. ++ */ ++ ++ /* ++ * Construct a SID for each RID in the list and then append it ++ * to the info3. ++ */ ++ for (i = 0; i < logon_info->res_groups.count; i++) { ++ NTSTATUS status; ++ struct dom_sid new_sid; ++ uint32_t attributes = logon_info->res_groups.rids[i].attributes; ++ ++ sid_compose(&new_sid, ++ logon_info->res_group_dom_sid, ++ logon_info->res_groups.rids[i].rid); ++ ++ DEBUG(10, ("Adding SID %s to extra SIDS\n", ++ sid_string_dbg(&new_sid))); ++ ++ status = append_netr_SidAttr(info3, &info3->sids, ++ &info3->sidcount, ++ &new_sid, ++ attributes); ++ if (!NT_STATUS_IS_OK(status)) { ++ DEBUG(1, ("failed to append SID %s to extra SIDS: %s\n", ++ sid_string_dbg(&new_sid), ++ nt_errstr(status))); ++ return status; ++ } ++ } ++ ++ return NT_STATUS_OK; ++} ++ ++/* ++ * Create a copy of an info3 struct from the struct PAC_LOGON_INFO, ++ * then merge resource SIDs, if any, into it. If successful return ++ * the created info3 struct. ++ */ ++ ++NTSTATUS create_info3_from_pac_logon_info(TALLOC_CTX *mem_ctx, ++ const struct PAC_LOGON_INFO *logon_info, ++ struct netr_SamInfo3 **pp_info3) ++{ ++ NTSTATUS status; ++ struct netr_SamInfo3 *info3 = copy_netr_SamInfo3(mem_ctx, ++ &logon_info->info3); ++ if (info3 == NULL) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ status = merge_resource_sids(logon_info, info3); ++ if (!NT_STATUS_IS_OK(status)) { ++ TALLOC_FREE(info3); ++ return status; ++ } ++ *pp_info3 = info3; ++ return NT_STATUS_OK; ++} ++ + #define RET_NOMEM(ptr) do { \ + if (!ptr) { \ + TALLOC_FREE(info3); \ +-- +2.1.0 + + +From 86d58108db53958f05d559b2d2a20185ef2deb55 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 4 Mar 2015 17:45:39 +0100 +Subject: [PATCH 4/5] PATCHSET21: s3-winbind: Merge resource groups from a + trusted PAC into the sid array. + +This is a backport of db775c68ccbed0252abf092b5cb811e8f5fa9bb6. +--- + source3/winbindd/winbindd_pam.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c +index 5316232..b1838a6 100644 +--- a/source3/winbindd/winbindd_pam.c ++++ b/source3/winbindd/winbindd_pam.c +@@ -546,6 +546,7 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx, + time_t time_offset = 0; + const char *user_ccache_file; + struct PAC_LOGON_INFO *logon_info = NULL; ++ struct netr_SamInfo3 *info3_copy = NULL; + + *info3 = NULL; + +@@ -624,7 +625,14 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx, + goto failed; + } + +- *info3 = &logon_info->info3; ++ result = create_info3_from_pac_logon_info(mem_ctx, ++ logon_info, ++ &info3_copy); ++ if (!NT_STATUS_IS_OK(result)) { ++ return result; ++ } ++ ++ *info3 = info3_copy; + + DEBUG(10,("winbindd_raw_kerberos_login: winbindd validated ticket of %s\n", + principal_s)); +-- +2.1.0 + + +From 40731d512ba1ee0502bdbdd831c4154f967d9f3e Mon Sep 17 00:00:00 2001 +From: Michael Adam +Date: Mon, 9 Mar 2015 15:15:37 +0100 +Subject: [PATCH 5/5] PATCHSET21: s3-winbind: Fix chached user group lookup of + trusted domains. + +If a user group lookup has aleady been done before with a machine +account we did always return the incomplete information from the cache. +This patch makes sure we return the correct group information from the +netsamlogon cache. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11143 + +Pair-Programmed-With: Andreas Schneider +Signed-off-by: Michael Adam +Signed-off-by: Andreas Schneider +Reviewed-by: Volker Lendecke + +(cherry picked from commit f5d0204bfa1eb641fe7697613c1f773b6a7e65de) +--- + source3/winbindd/wb_lookupusergroups.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/source3/winbindd/wb_lookupusergroups.c b/source3/winbindd/wb_lookupusergroups.c +index aeffc17..1bb7081 100644 +--- a/source3/winbindd/wb_lookupusergroups.c ++++ b/source3/winbindd/wb_lookupusergroups.c +@@ -37,6 +37,7 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, + { + struct tevent_req *req, *subreq; + struct wb_lookupusergroups_state *state; ++ NTSTATUS status; + + req = tevent_req_create(mem_ctx, &state, + struct wb_lookupusergroups_state); +@@ -45,6 +46,16 @@ struct tevent_req *wb_lookupusergroups_send(TALLOC_CTX *mem_ctx, + } + sid_copy(&state->sid, sid); + ++ status = lookup_usergroups_cached(NULL, ++ state, ++ &state->sid, ++ &state->sids.num_sids, ++ &state->sids.sids); ++ if (NT_STATUS_IS_OK(status)) { ++ tevent_req_done(req); ++ return tevent_req_post(req, ev); ++ } ++ + subreq = dcerpc_wbint_LookupUserGroups_send( + state, ev, dom_child_handle(domain), &state->sid, &state->sids); + if (tevent_req_nomem(subreq, req)) { +-- +2.1.0 diff --git a/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch b/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch new file mode 100644 index 000000000..d25f9ff54 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-fix_winbind_cache_memory_leak.patch @@ -0,0 +1,29 @@ +From 7aa2d48a4952980316dc0418d79053cfc9fea2ed Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Sun, 20 Oct 2013 17:25:27 +0200 +Subject: [PATCH] winbind3: Fix CID 241468 Resource leak + +We were leaking centry in this error case + +Signed-off-by: Volker Lendecke +Reviewed-by: Jeremy Allison +(cherry picked from commit 71c8cd19cf079c7e1462a9ca4432725e3623f7cd) +--- + source3/winbindd/winbindd_cache.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c +index 82c8087..00bd034 100644 +--- a/source3/winbindd/winbindd_cache.c ++++ b/source3/winbindd/winbindd_cache.c +@@ -2076,6 +2076,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain, + } else { + /* something's definitely wrong */ + result = centry->status; ++ centry_free(centry); + goto error; + } + +-- +2.5.5 + diff --git a/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch b/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch new file mode 100644 index 000000000..554a6c942 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-idmap_ad_memleak.patch @@ -0,0 +1,28 @@ +commit d88c59d3690e7c14edfc99411479c245de62e3aa +Author: Andreas Schneider +AuthorDate: Wed Oct 5 10:32:16 2016 +0200 +Commit: Andreas Schneider +CommitDate: Wed Oct 5 10:32:16 2016 +0200 + + s3-winbind: Fix memory leak in ad_idmap_cached_connection_internal() + + Signed-off-by: Andreas Schneider +--- + source3/winbindd/idmap_ad.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/source3/winbindd/idmap_ad.c b/source3/winbindd/idmap_ad.c +index 2b35a4f..2b21051 100644 +--- a/source3/winbindd/idmap_ad.c ++++ b/source3/winbindd/idmap_ad.c +@@ -127,7 +127,9 @@ static ADS_STATUS ad_idmap_cached_connection_internal(struct idmap_domain *dom) + realm = wb_dom->alt_name; + } + +- if ( (ads = ads_init(realm, dom->name, ldap_server)) == NULL ) { ++ ads = ads_init(realm, dom->name, ldap_server); ++ SAFE_FREE(ldap_server); ++ if (ads == NULL) { + DEBUG(1,("ads_init failed\n")); + return ADS_ERROR_NT(NT_STATUS_NO_MEMORY); + } diff --git a/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch b/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch new file mode 100644 index 000000000..dccd3a7fa --- /dev/null +++ b/src/patches/samba/samba-3.6.99-libsmb_fix_dfs_connections.patch @@ -0,0 +1,47 @@ +From 8368c6336f557220d6b2a088e291c5ce61f80f9e Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Wed, 16 Dec 2015 11:04:20 -0800 +Subject: [PATCH] s3: libsmb: Correctly initialize the list head when keeping a + list of primary followed by DFS connections. + +Greatly helped by to +track down this issue. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11624 + +Signed-off-by: Jeremy Allison +Reviewed-by: Volker Lendecke + +Autobuild-User(master): Volker Lendecke +Autobuild-Date(master): Fri Dec 18 01:02:55 CET 2015 on sn-devel-144 + +(cherry picked from commit d7feb1879ee711598540049c2c5eccc80fd6f1e5) +--- + source3/libsmb/libsmb_server.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c +index 45be660..e7416e0 100644 +--- a/source3/libsmb/libsmb_server.c ++++ b/source3/libsmb/libsmb_server.c +@@ -634,7 +634,7 @@ again: + } + + ZERO_STRUCTP(srv); +- srv->cli = c; ++ DLIST_ADD(srv->cli, c); + srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share)); + srv->no_pathinfo = False; + srv->no_pathinfo2 = False; +@@ -821,7 +821,7 @@ SMBC_attr_server(TALLOC_CTX *ctx, + } + + ZERO_STRUCTP(ipc_srv); +- ipc_srv->cli = ipc_cli; ++ DLIST_ADD(ipc_srv->cli, ipc_cli); + + nt_status = cli_rpc_pipe_open_noauth( + ipc_srv->cli, &ndr_table_lsarpc.syntax_id, &pipe_hnd); +-- +2.7.4 + diff --git a/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch b/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch new file mode 100644 index 000000000..3d496975f --- /dev/null +++ b/src/patches/samba/samba-3.6.99-net_ads_join_no_dns_updates.patch @@ -0,0 +1,101 @@ +From df1da96d7f9a11ee1029c1bb55a40255ea63267c Mon Sep 17 00:00:00 2001 +From: Michael Adam +Date: Wed, 6 Jan 2016 11:04:16 +0100 +Subject: [PATCH] PATCHSET35 net: add option --no-dns-updates for net ads join + +If called with this option, 'net ads join' will not attempt +to perform dns updates. + +Backported for Samba 3.6 from master patches: + + ae81a40b1193ef93add61666ace6fff1a1e0676a + d7a617f2f00c4a2b5294523fa651915c85de0d8b + +Signed-off-by: Michael Adam +--- + docs-xml/manpages-3/net.8.xml | 9 ++++++++- + source3/utils/net.c | 2 ++ + source3/utils/net.h | 2 ++ + source3/utils/net_ads.c | 6 +++++- + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/docs-xml/manpages-3/net.8.xml b/docs-xml/manpages-3/net.8.xml +index 65f1272..cff3594 100644 +--- a/docs-xml/manpages-3/net.8.xml ++++ b/docs-xml/manpages-3/net.8.xml +@@ -135,6 +135,13 @@ + + + ++ ++ --no-dns-updates ++ Do not perform DNS updates as part of ++ "net ads join". ++ ++ ++ + &stdarg.server.debug; + + +@@ -194,7 +201,7 @@ the remote server using /bin/date. + + + +-[RPC|ADS] JOIN [TYPE] [-U username[%password]] [createupn=UPN] [createcomputer=OU] [options] ++[RPC|ADS] JOIN [TYPE] [--no-dns-updates] [-U username[%password]] [createupn=UPN] [createcomputer=OU] [options] + + + Join a domain. If the account already exists on the server, and +diff --git a/source3/utils/net.c b/source3/utils/net.c +index c53b285..3a95f7e 100644 +--- a/source3/utils/net.c ++++ b/source3/utils/net.c +@@ -820,6 +820,8 @@ static struct functable net_func[] = { + {"lock", 0, POPT_ARG_NONE, &c->opt_lock}, + {"auto", 'a', POPT_ARG_NONE, &c->opt_auto}, + {"repair", 0, POPT_ARG_NONE, &c->opt_repair}, ++ /* Options for 'net ads join' */ ++ {"no-dns-updates", 0, POPT_ARG_NONE, &c->opt_no_dns_updates}, + POPT_COMMON_SAMBA + { 0, 0, 0, 0} + }; +diff --git a/source3/utils/net.h b/source3/utils/net.h +index 1d1559f..adddf34 100644 +--- a/source3/utils/net.h ++++ b/source3/utils/net.h +@@ -81,6 +81,8 @@ struct net_context { + int opt_auto; + int opt_repair; + ++ int opt_no_dns_updates; ++ + int opt_have_ip; + struct sockaddr_storage opt_dest_ip; + bool smb_encrypt; +diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c +index 816349d..5c541f3 100644 +--- a/source3/utils/net_ads.c ++++ b/source3/utils/net_ads.c +@@ -1296,7 +1296,7 @@ static NTSTATUS net_update_dns(struct net_context *c, TALLOC_CTX *mem_ctx, ADS_S + + static int net_ads_join_usage(struct net_context *c, int argc, const char **argv) + { +- d_printf(_("net ads join [options]\n" ++ d_printf(_("net ads join [--no-dns-updates] [options]\n" + "Valid options:\n")); + d_printf(_(" createupn[=UPN] Set the userPrincipalName attribute during the join.\n" + " The deault UPN is in the form host/netbiosname@REALM.\n")); +@@ -1455,6 +1455,10 @@ int net_ads_join(struct net_context *c, int argc, const char **argv) + } + + #if defined(WITH_DNS_UPDATES) ++ if (c->opt_no_dns_updates) { ++ goto done; ++ } ++ + /* + * In a clustered environment, don't do dynamic dns updates: + * Registering the set of ip addresses that are assigned to +-- +2.5.0 + diff --git a/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch b/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch new file mode 100644 index 000000000..820d136cd --- /dev/null +++ b/src/patches/samba/samba-3.6.99-nt_printer_publish_guid.patch @@ -0,0 +1,620 @@ +From 892d163635563a3505fcde2d3439a2f6b1af92a7 Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Thu, 18 Dec 2014 18:18:21 +0100 +Subject: [PATCH 1/4] PATCHSET16: printing: split out printer DN and GUID + retrieval + +This functions are used for printer publishing. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018 + +Pair-programmed-with: Andreas Schneider +Signed-off-by: David Disseldorp +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +(cherry picked from commit 7cabd89789a50d37fc32735968c493092a37e69f) +--- + source3/printing/nt_printing_ads.c | 209 ++++++++++++++++++++++++------------- + 1 file changed, 137 insertions(+), 72 deletions(-) + +diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c +index bf309b0..25e1ab6 100644 +--- a/source3/printing/nt_printing_ads.c ++++ b/source3/printing/nt_printing_ads.c +@@ -87,6 +87,128 @@ done: + talloc_free(tmp_ctx); + } + ++static WERROR nt_printer_dn_lookup(TALLOC_CTX *mem_ctx, ++ ADS_STRUCT *ads, ++ const char *printer, ++ char **pprinter_dn) ++{ ++ char *printer_dn = NULL; ++ char *srv_dn = NULL; ++ char *srv_cn_0 = NULL; ++ char *srv_cn_escaped = NULL; ++ char *sharename_escaped = NULL; ++ char *srv_dn_utf8 = NULL; ++ char **srv_cn_utf8 = NULL; ++ size_t converted_size; ++ ADS_STATUS ads_status; ++ LDAPMessage *res; ++ WERROR result; ++ bool ok; ++ ++ ads_status = ads_find_machine_acct(ads, &res, global_myname()); ++ if (!ADS_ERR_OK(ads_status)) { ++ DEBUG(2, ("Failed to find machine account for %s\n", ++ global_myname())); ++ result = WERR_NOT_FOUND; ++ goto err_out; ++ } ++ ++ /* ++ * We use ldap_get_dn here as we need the answer in utf8 to call ++ * ldap_explode_dn(). JRA. ++ */ ++ srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res); ++ ads_msgfree(ads, res); ++ if (srv_dn_utf8 == NULL) { ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ srv_cn_utf8 = ldap_explode_dn(srv_dn_utf8, 1); ++ if (srv_cn_utf8 == NULL) { ++ ldap_memfree(srv_dn_utf8); ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ /* Now convert to CH_UNIX. */ ++ ok = pull_utf8_talloc(mem_ctx, &srv_dn, srv_dn_utf8, &converted_size); ++ ldap_memfree(srv_dn_utf8); ++ if (!ok) { ++ ldap_memfree(srv_cn_utf8); ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ ok = pull_utf8_talloc(mem_ctx, &srv_cn_0, srv_cn_utf8[0], &converted_size); ++ ldap_memfree(srv_cn_utf8); ++ if (!ok) { ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn_0); ++ if (srv_cn_escaped == NULL) { ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ sharename_escaped = escape_rdn_val_string_alloc(printer); ++ if (sharename_escaped == NULL) { ++ result = WERR_SERVER_UNAVAILABLE; ++ goto err_out; ++ } ++ ++ printer_dn = talloc_asprintf(mem_ctx, ++ "cn=%s-%s,%s", ++ srv_cn_escaped, ++ sharename_escaped, ++ srv_dn); ++ if (printer_dn == NULL) { ++ result = WERR_NOMEM; ++ goto err_out; ++ } ++ ++ *pprinter_dn = printer_dn; ++ ++ result = WERR_OK; ++err_out: ++ SAFE_FREE(sharename_escaped); ++ SAFE_FREE(srv_cn_escaped); ++ TALLOC_FREE(srv_cn_0); ++ TALLOC_FREE(srv_dn); ++ return result; ++} ++ ++static WERROR nt_printer_guid_retrieve_internal(ADS_STRUCT *ads, ++ const char *printer_dn, ++ struct GUID *pguid) ++{ ++ ADS_STATUS ads_status; ++ LDAPMessage *res; ++ const char *attrs[] = {"objectGUID", NULL}; ++ struct GUID guid; ++ bool ok; ++ ++ ads_status = ads_search_dn(ads, &res, printer_dn, attrs); ++ if (!ADS_ERR_OK(ads_status)) { ++ DEBUG(2, ("Failed to retrieve GUID from DC - %s\n", ++ ads_errstr(ads_status))); ++ return WERR_BADFILE; ++ } ++ ++ ZERO_STRUCT(guid); ++ ok = ads_pull_guid(ads, res, &guid); ++ ads_msgfree(ads, res); ++ if (!ok) { ++ return WERR_NOMEM; ++ } ++ ++ *pguid = guid; ++ ++ return WERR_OK; ++} ++ + WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *session_info, + struct messaging_context *msg_ctx, +@@ -246,16 +368,12 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + struct spoolss_PrinterInfo2 *pinfo2) + { + ADS_STATUS ads_rc; +- LDAPMessage *res; +- char *prt_dn = NULL, *srv_dn, *srv_cn_0, *srv_cn_escaped, *sharename_escaped; +- char *srv_dn_utf8, **srv_cn_utf8; + TALLOC_CTX *ctx; + ADS_MODLIST mods; +- const char *attrs[] = {"objectGUID", NULL}; + struct GUID guid; + WERROR win_rc = WERR_OK; +- size_t converted_size; + const char *printer = pinfo2->sharename; ++ char *printer_dn = NULL; + + /* build the ads mods */ + ctx = talloc_init("nt_printer_publish_ads"); +@@ -265,65 +383,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + + DEBUG(5, ("publishing printer %s\n", printer)); + +- /* figure out where to publish */ +- ads_rc = ads_find_machine_acct(ads, &res, global_myname()); +- if (!ADS_ERR_OK(ads_rc)) { +- DEBUG(0, ("failed to find machine account for %s\n", +- global_myname())); +- TALLOC_FREE(ctx); +- return WERR_NOT_FOUND; +- } +- +- /* We use ldap_get_dn here as we need the answer +- * in utf8 to call ldap_explode_dn(). JRA. */ +- +- srv_dn_utf8 = ldap_get_dn((LDAP *)ads->ldap.ld, (LDAPMessage *)res); +- ads_msgfree(ads, res); +- if (!srv_dn_utf8) { +- TALLOC_FREE(ctx); +- return WERR_SERVER_UNAVAILABLE; +- } +- srv_cn_utf8 = ldap_explode_dn(srv_dn_utf8, 1); +- if (!srv_cn_utf8) { +- TALLOC_FREE(ctx); +- ldap_memfree(srv_dn_utf8); +- return WERR_SERVER_UNAVAILABLE; +- } +- /* Now convert to CH_UNIX. */ +- if (!pull_utf8_talloc(ctx, &srv_dn, srv_dn_utf8, &converted_size)) { +- TALLOC_FREE(ctx); +- ldap_memfree(srv_dn_utf8); +- ldap_memfree(srv_cn_utf8); +- return WERR_SERVER_UNAVAILABLE; +- } +- if (!pull_utf8_talloc(ctx, &srv_cn_0, srv_cn_utf8[0], &converted_size)) { +- TALLOC_FREE(ctx); +- ldap_memfree(srv_dn_utf8); +- ldap_memfree(srv_cn_utf8); +- TALLOC_FREE(srv_dn); +- return WERR_SERVER_UNAVAILABLE; +- } +- +- ldap_memfree(srv_dn_utf8); +- ldap_memfree(srv_cn_utf8); +- +- srv_cn_escaped = escape_rdn_val_string_alloc(srv_cn_0); +- if (!srv_cn_escaped) { +- TALLOC_FREE(ctx); +- return WERR_SERVER_UNAVAILABLE; +- } +- sharename_escaped = escape_rdn_val_string_alloc(printer); +- if (!sharename_escaped) { +- SAFE_FREE(srv_cn_escaped); ++ win_rc = nt_printer_dn_lookup(ctx, ads, printer, &printer_dn); ++ if (!W_ERROR_IS_OK(win_rc)) { ++ DEBUG(2, ("Failed to create printer dn\n")); + TALLOC_FREE(ctx); +- return WERR_SERVER_UNAVAILABLE; ++ return win_rc; + } + +- prt_dn = talloc_asprintf(ctx, "cn=%s-%s,%s", srv_cn_escaped, sharename_escaped, srv_dn); +- +- SAFE_FREE(srv_cn_escaped); +- SAFE_FREE(sharename_escaped); +- + mods = ads_init_mods(ctx); + + if (mods == NULL) { +@@ -338,13 +404,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + } + + /* publish it */ +- ads_rc = ads_mod_printer_entry(ads, prt_dn, ctx, &mods); ++ ads_rc = ads_mod_printer_entry(ads, printer_dn, ctx, &mods); + if (ads_rc.err.rc == LDAP_NO_SUCH_OBJECT) { + int i; + for (i=0; mods[i] != 0; i++) + ; + mods[i] = (LDAPMod *)-1; +- ads_rc = ads_add_printer_entry(ads, prt_dn, ctx, &mods); ++ ads_rc = ads_add_printer_entry(ads, printer_dn, ctx, &mods); + } + + if (!ADS_ERR_OK(ads_rc)) { +@@ -352,16 +418,15 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + printer, ads_errstr(ads_rc))); + } + +- /* retreive the guid and store it locally */ +- if (ADS_ERR_OK(ads_search_dn(ads, &res, prt_dn, attrs))) { +- bool guid_ok; +- ZERO_STRUCT(guid); +- guid_ok = ads_pull_guid(ads, res, &guid); +- ads_msgfree(ads, res); +- if (guid_ok) { +- store_printer_guid(msg_ctx, printer, guid); +- } ++ win_rc = nt_printer_guid_retrieve_internal(ads, printer_dn, &guid); ++ if (!W_ERROR_IS_OK(win_rc)) { ++ TALLOC_FREE(ctx); ++ return win_rc; + } ++ ++ /* TODO add a return value */ ++ store_printer_guid(msg_ctx, printer, guid); ++ + TALLOC_FREE(ctx); + + return win_rc; +-- +2.3.0 + + +From 45bb946d93deaf4926754cf57454f79869e8bfaf Mon Sep 17 00:00:00 2001 +From: David Disseldorp +Date: Thu, 18 Dec 2014 18:23:11 +0100 +Subject: [PATCH 2/4] PATCHSET16: printing: add nt_printer_guid_retrieve() + helper + +This function connects to the domain controller and retrieves the +GUID for the corresponding printer DN. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018 + +Pair-programmed-with: Andreas Schneider +Signed-off-by: David Disseldorp +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +(cherry picked from commit 38dbd054dc331a441b10fdebbdb4bd0fc51cfc0a) +--- + source3/include/nt_printing.h | 3 ++ + source3/printing/nt_printing_ads.c | 58 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 61 insertions(+) + +diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h +index cdbad87..67a0522 100644 +--- a/source3/include/nt_printing.h ++++ b/source3/include/nt_printing.h +@@ -132,6 +132,9 @@ bool print_access_check(const struct auth_serversupplied_info *server_info, + struct messaging_context *msg_ctx, int snum, + int access_type); + ++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer, ++ struct GUID *pguid); ++ + WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *server_info, + struct messaging_context *msg_ctx, +diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c +index 25e1ab6..6fa4bfc 100644 +--- a/source3/printing/nt_printing_ads.c ++++ b/source3/printing/nt_printing_ads.c +@@ -209,6 +209,58 @@ static WERROR nt_printer_guid_retrieve_internal(ADS_STRUCT *ads, + return WERR_OK; + } + ++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer, ++ struct GUID *pguid) ++{ ++ ADS_STRUCT *ads = NULL; ++ char *old_krb5ccname = NULL; ++ char *printer_dn; ++ WERROR result; ++ ADS_STATUS ads_status; ++ TALLOC_CTX *tmp_ctx; ++ ++ tmp_ctx = talloc_new(mem_ctx); ++ if (tmp_ctx == NULL) { ++ return WERR_NOMEM; ++ } ++ ++ ads = ads_init(lp_realm(), lp_workgroup(), NULL); ++ if (ads == NULL) { ++ result = WERR_SERVER_UNAVAILABLE; ++ goto out; ++ } ++ ++ old_krb5ccname = getenv(KRB5_ENV_CCNAME); ++ setenv(KRB5_ENV_CCNAME, "MEMORY:prtpub_cache", 1); ++ SAFE_FREE(ads->auth.password); ++ ads->auth.password = secrets_fetch_machine_password(lp_workgroup(), ++ NULL, NULL); ++ ++ ads_status = ads_connect(ads); ++ if (!ADS_ERR_OK(ads_status)) { ++ DEBUG(3, ("ads_connect failed: %s\n", ads_errstr(ads_status))); ++ result = WERR_ACCESS_DENIED; ++ goto out; ++ } ++ ++ result = nt_printer_dn_lookup(tmp_ctx, ads, printer, &printer_dn); ++ if (!W_ERROR_IS_OK(result)) { ++ goto out; ++ } ++ ++ result = nt_printer_guid_retrieve_internal(ads, printer_dn, pguid); ++out: ++ TALLOC_FREE(tmp_ctx); ++ ads_destroy(&ads); ++ ads_kdestroy("MEMORY:prtpub_cache"); ++ unsetenv(KRB5_ENV_CCNAME); ++ if (old_krb5ccname != NULL) { ++ setenv(KRB5_ENV_CCNAME, old_krb5ccname, 0); ++ } ++ ++ return result; ++} ++ + WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *session_info, + struct messaging_context *msg_ctx, +@@ -652,6 +704,12 @@ bool is_printer_published(TALLOC_CTX *mem_ctx, + return true; + } + #else ++WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer, ++ struct GUID *pguid) ++{ ++ return WERR_NOT_SUPPORTED; ++} ++ + WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *session_info, + struct messaging_context *msg_ctx, +-- +2.3.0 + + +From 228323b1c846d6dfcd39e23c8ce850c79f339de9 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Thu, 18 Dec 2014 15:13:27 +0000 +Subject: [PATCH 3/4] PATCHSET16: printing: rework nt_printer_guid_store to + return errors + +Callers can now choose whether or not to ignore errors. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018 + +Pair-programmed-with: David Disseldorp +Signed-off-by: Andreas Schneider +Signed-off-by: David Disseldorp +Reviewed-by: Guenther Deschner +(cherry picked from commit 6595ced146a53dcef9bbd5d2deb82a44c8ce1a1a) +--- + source3/include/nt_printing.h | 3 +++ + source3/printing/nt_printing_ads.c | 49 +++++++++++++++++++++++++------------- + 2 files changed, 35 insertions(+), 17 deletions(-) + +diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h +index 67a0522..493f4ce 100644 +--- a/source3/include/nt_printing.h ++++ b/source3/include/nt_printing.h +@@ -135,6 +135,9 @@ bool print_access_check(const struct auth_serversupplied_info *server_info, + WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer, + struct GUID *pguid); + ++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx, ++ const char *printer, struct GUID guid); ++ + WERROR nt_printer_guid_get(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *server_info, + struct messaging_context *msg_ctx, +diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c +index 6fa4bfc..540a8a3 100644 +--- a/source3/printing/nt_printing_ads.c ++++ b/source3/printing/nt_printing_ads.c +@@ -35,32 +35,32 @@ + /***************************************************************** + ****************************************************************/ + +-static void store_printer_guid(struct messaging_context *msg_ctx, +- const char *printer, struct GUID guid) ++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx, ++ const char *printer, struct GUID guid) + { + TALLOC_CTX *tmp_ctx; +- struct auth_serversupplied_info *session_info = NULL; ++ const struct auth_serversupplied_info *session_info; + const char *guid_str; + DATA_BLOB blob; +- NTSTATUS status; + WERROR result; + + tmp_ctx = talloc_new(NULL); + if (!tmp_ctx) { +- DEBUG(0, ("store_printer_guid: Out of memory?!\n")); +- return; ++ DEBUG(0, ("Out of memory?!\n")); ++ return WERR_NOMEM; + } + +- status = make_session_info_system(tmp_ctx, &session_info); +- if (!NT_STATUS_IS_OK(status)) { +- DEBUG(0, ("store_printer_guid: " +- "Could not create system session_info\n")); ++ session_info = get_session_info_system(); ++ if (session_info == NULL) { ++ DEBUG(0, ("Could not get system session_info\n")); ++ result = WERR_NOMEM; + goto done; + } + + guid_str = GUID_string(tmp_ctx, &guid); + if (!guid_str) { +- DEBUG(0, ("store_printer_guid: Out of memory?!\n")); ++ DEBUG(0, ("Out of memory?!\n")); ++ result = WERR_NOMEM; + goto done; + } + +@@ -68,9 +68,9 @@ static void store_printer_guid(struct messaging_context *msg_ctx, + Vista to whine */ + + if (!push_reg_sz(tmp_ctx, &blob, guid_str)) { +- DEBUG(0, ("store_printer_guid: " +- "Could not marshall string %s for objectGUID\n", ++ DEBUG(0, ("Could not marshall string %s for objectGUID\n", + guid_str)); ++ result = WERR_NOMEM; + goto done; + } + +@@ -79,12 +79,15 @@ static void store_printer_guid(struct messaging_context *msg_ctx, + SPOOL_DSSPOOLER_KEY, "objectGUID", + REG_SZ, blob.data, blob.length); + if (!W_ERROR_IS_OK(result)) { +- DEBUG(0, ("store_printer_guid: " +- "Failed to store GUID for printer %s\n", printer)); ++ DEBUG(0, ("Failed to store GUID for printer %s\n", printer)); ++ goto done; + } + ++ result = WERR_OK; + done: + talloc_free(tmp_ctx); ++ ++ return result; + } + + static WERROR nt_printer_dn_lookup(TALLOC_CTX *mem_ctx, +@@ -468,6 +471,7 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + if (!ADS_ERR_OK(ads_rc)) { + DEBUG(3, ("error publishing %s: %s\n", + printer, ads_errstr(ads_rc))); ++ /* XXX failed to publish, so no guid to retrieve */ + } + + win_rc = nt_printer_guid_retrieve_internal(ads, printer_dn, &guid); +@@ -476,8 +480,13 @@ static WERROR nt_printer_publish_ads(struct messaging_context *msg_ctx, + return win_rc; + } + +- /* TODO add a return value */ +- store_printer_guid(msg_ctx, printer, guid); ++ win_rc = nt_printer_guid_store(msg_ctx, printer, guid); ++ if (!W_ERROR_IS_OK(win_rc)) { ++ DEBUG(3, ("failed to store printer %s guid\n", ++ printer)); ++ /* not catastrophic, retrieve on next use */ ++ win_rc = WERR_OK; ++ } + + TALLOC_FREE(ctx); + +@@ -704,6 +713,12 @@ bool is_printer_published(TALLOC_CTX *mem_ctx, + return true; + } + #else ++WERROR nt_printer_guid_store(struct messaging_context *msg_ctx, ++ const char *printer, struct GUID guid) ++{ ++ return WERR_NOT_SUPPORTED; ++} ++ + WERROR nt_printer_guid_retrieve(TALLOC_CTX *mem_ctx, const char *printer, + struct GUID *pguid) + { +-- +2.3.0 + + +From d4847deadc4cd6f4f8071fae16d05bc8ec4ed566 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Thu, 18 Dec 2014 15:14:36 +0000 +Subject: [PATCH 4/4] PATCHSET16: spoolss: retrieve published printer GUID if + not in registry +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When a printer is published, the GUID for the published DN is retrieved +from the domain controller and stored in the registry. +When handling a spoolss GetPrinter(level=7) request, the same GUID is +obtained from the registry and returned to the client. + +This change sees the spoolss server query the DC for the published +printer GUID if it is not present in the registry when handling a +spoolss GetPrinter(level=7) request. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11018 + +Pair-Programmed-With: David Disseldorp +Signed-off-by: Andreas Schneider +Signed-off-by: David Disseldorp +Reviewed-by: Guenther Deschner + +Autobuild-User(master): Günther Deschner +Autobuild-Date(master): Wed Feb 18 12:43:44 CET 2015 on sn-devel-104 + +(cherry picked from commit a4157e7c5d75be7003ad0b72fdfe9856a9e5ba8f) +--- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index 0c4b582..516b7dc 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -4213,7 +4213,25 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, + werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx, + printer, &guid); + if (!W_ERROR_IS_OK(werr)) { +- goto out_tmp_free; ++ /* ++ * If we do not have a GUID entry in the registry, then ++ * try to retrieve it from AD and store it now. ++ */ ++ werr = nt_printer_guid_retrieve(tmp_ctx, printer, ++ &guid); ++ if (!W_ERROR_IS_OK(werr)) { ++ DEBUG(1, ("Failed to retrieve GUID for " ++ "printer [%s] from AD - " ++ "Is the the printer still " ++ "published ?\n", printer)); ++ goto out_tmp_free; ++ } ++ ++ werr = nt_printer_guid_store(msg_ctx, printer, guid); ++ if (!W_ERROR_IS_OK(werr)) { ++ DEBUG(3, ("failed to store printer %s guid\n", ++ printer)); ++ } + } + r->guid = talloc_strdup_upper(mem_ctx, GUID_string2(mem_ctx, &guid)); + r->action = DSPRINT_PUBLISH; +-- +2.3.0 + diff --git a/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch b/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch new file mode 100644 index 000000000..641e62b14 --- /dev/null +++ b/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch @@ -0,0 +1,75 @@ +From cd3082b03487eaeddb0105807b5ad39b47aa65f1 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Tue, 8 Nov 2016 12:20:41 +0100 +Subject: [PATCH] s3-spoolss: Remove printer from registry if it is unpublished + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=11665 + +Signed-off-by: Andreas Schneider +Reviewed-by: Guenther Deschner +--- + source3/rpc_server/spoolss/srv_spoolss_nt.c | 34 ++++++++++++++++++++++++----- + 1 file changed, 29 insertions(+), 5 deletions(-) + +diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c +index 556cd4f..f1ab3fb 100644 +--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c ++++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c +@@ -4194,6 +4194,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, + int snum) + { + struct auth_serversupplied_info *session_info; ++ struct spoolss_PrinterInfo2 *pinfo2 = NULL; + char *printer; + NTSTATUS status; + WERROR werr; +@@ -4218,7 +4219,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, + } + + if (is_printer_published(tmp_ctx, session_info, msg_ctx, +- servername, printer, NULL)) { ++ servername, printer, &pinfo2)) { + struct GUID guid; + werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx, + printer, &guid); +@@ -4230,10 +4231,33 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx, + werr = nt_printer_guid_retrieve(tmp_ctx, printer, + &guid); + if (!W_ERROR_IS_OK(werr)) { +- DEBUG(1, ("Failed to retrieve GUID for " +- "printer [%s] from AD - " +- "Is the the printer still " +- "published ?\n", printer)); ++ DEBUG(3, ("Failed to retrieve GUID for " ++ "printer [%s] from AD - %s\n", ++ printer, ++ win_errstr(werr))); ++ if (W_ERROR_EQUAL(werr, WERR_FILE_NOT_FOUND)) { ++ /* ++ * If we did not find it in AD, then it ++ * is unpublished and we should reflect ++ * this in the registry and return ++ * success. ++ */ ++ DEBUG(1, ("Unpublish printer [%s]\n", ++ pinfo2->sharename)); ++ nt_printer_publish(tmp_ctx, ++ session_info, ++ msg_ctx, ++ pinfo2, ++ DSPRINT_UNPUBLISH); ++ r->guid = talloc_strdup(mem_ctx, ""); ++ r->action = DSPRINT_UNPUBLISH; ++ ++ if (r->guid == NULL) { ++ werr = WERR_NOT_ENOUGH_MEMORY; ++ } else { ++ werr = WERR_OK; ++ } ++ } + goto out_tmp_free; + } + +-- +2.10.1 + diff --git a/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch b/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch new file mode 100644 index 000000000..f38aabf6f --- /dev/null +++ b/src/patches/samba/samba-3.6.x-winbind_tevent_poll.patch @@ -0,0 +1,308 @@ +From 1d94210adc6e0bb8a08fbfc1a516a0f958dbf744 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Wed, 16 Jan 2013 12:00:00 +0100 +Subject: [PATCH 1/2] winbind: Use standard tevent_context_init + +This makes winbind use epoll instead of poll +--- + source3/winbindd/winbindd.c | 38 ++++++++++++++++++++++++++++++++----- + source3/winbindd/winbindd.h | 2 -- + source3/winbindd/winbindd_proto.h | 1 + + 3 files changed, 34 insertions(+), 7 deletions(-) + +Index: samba-3.6.22/source3/winbindd/winbindd.c +=================================================================== +--- samba-3.6.22.orig/source3/winbindd/winbindd.c ++++ samba-3.6.22/source3/winbindd/winbindd.c +@@ -48,14 +48,42 @@ static bool interactive = False; + + extern bool override_logfile; + ++struct tevent_context *winbind_event_context(void) ++{ ++ static struct tevent_context *ev = NULL; ++ ++ if (ev != NULL) { ++ return ev; ++ } ++ ++ /* ++ * Note we MUST use the NULL context here, not the autofree context, ++ * to avoid side effects in forked children exiting. ++ */ ++ ev = tevent_context_init(NULL); ++ if (ev == NULL) { ++ smb_panic("Could not init winbindd's messaging context.\n"); ++ } ++ return ev; ++} ++ + struct messaging_context *winbind_messaging_context(void) + { +- struct messaging_context *msg_ctx = server_messaging_context(); +- if (likely(msg_ctx != NULL)) { +- return msg_ctx; ++ static struct messaging_context *msg = NULL; ++ ++ if (msg != NULL) { ++ return msg; ++ } ++ ++ /* ++ * Note we MUST use the NULL context here, not the autofree context, ++ * to avoid side effects in forked children exiting. ++ */ ++ msg = messaging_init(NULL, procid_self(), winbind_event_context()); ++ if (msg == NULL) { ++ smb_panic("Could not init winbindd's messaging context.\n"); + } +- smb_panic("Could not init winbindd's messaging context.\n"); +- return NULL; ++ return msg; + } + + /* Reload configuration */ +Index: samba-3.6.22/source3/winbindd/winbindd.h +=================================================================== +--- samba-3.6.22.orig/source3/winbindd/winbindd.h ++++ samba-3.6.22/source3/winbindd/winbindd.h +@@ -397,6 +397,4 @@ struct WINBINDD_CCACHE_ENTRY { + #define WINBINDD_PAM_AUTH_KRB5_RENEW_TIME 2592000 /* one month */ + #define DOM_SEQUENCE_NONE ((uint32)-1) + +-#define winbind_event_context server_event_context +- + #endif /* _WINBINDD_H */ +Index: samba-3.6.22/source3/winbindd/winbindd_proto.h +=================================================================== +--- samba-3.6.22.orig/source3/winbindd/winbindd_proto.h ++++ samba-3.6.22/source3/winbindd/winbindd_proto.h +@@ -34,6 +34,7 @@ bool winbindd_use_cache(void); + void winbindd_register_handlers(void); + const char *get_winbind_pipe_dir(void); + char *get_winbind_priv_pipe_dir(void); ++struct tevent_context *winbind_event_context(void); + int main(int argc, char **argv, char **envp); + + /* The following definitions come from winbindd/winbindd_ads.c */ +Index: samba-3.6.22/source3/winbindd/winbindd_dual.c +=================================================================== +--- samba-3.6.22.orig/source3/winbindd/winbindd_dual.c ++++ samba-3.6.22/source3/winbindd/winbindd_dual.c +@@ -1284,6 +1284,66 @@ NTSTATUS winbindd_reinit_after_fork(cons + return NT_STATUS_OK; + } + ++struct child_handler_state { ++ struct winbindd_child *child; ++ struct winbindd_cli_state *cli_state; ++}; ++ ++static void child_handler(struct tevent_context *ev, struct tevent_fd *fde, ++ uint16_t flags, void *private_data) ++{ ++ struct child_handler_state *ch_state = ++ (struct child_handler_state *)private_data; ++ struct winbindd_cli_state *state = ch_state->cli_state; ++ struct iovec iov[2]; ++ int iov_count; ++ NTSTATUS status; ++ ++ if ((flags & TEVENT_FD_READ) == 0) { ++ return; ++ } ++ ++ /* fetch a request from the main daemon */ ++ status = child_read_request(state); ++ ++ if (!NT_STATUS_IS_OK(status)) { ++ /* we lost contact with our parent */ ++ _exit(0); ++ } ++ ++ DEBUG(4,("child daemon request %d\n", (int)state->request->cmd)); ++ ++ ZERO_STRUCTP(state->response); ++ state->request->null_term = '\0'; ++ state->mem_ctx = talloc_tos(); ++ child_process_request(ch_state->child, state); ++ ++ DEBUG(4, ("Finished processing child request %d\n", ++ (int)state->request->cmd)); ++ ++ SAFE_FREE(state->request->extra_data.data); ++ ++ iov[0].iov_base = (void *)state->response; ++ iov[0].iov_len = sizeof(struct winbindd_response); ++ iov_count = 1; ++ ++ if (state->response->length > sizeof(struct winbindd_response)) { ++ iov[1].iov_base = ++ (void *)state->response->extra_data.data; ++ iov[1].iov_len = state->response->length-iov[0].iov_len; ++ iov_count = 2; ++ } ++ ++ DEBUG(10, ("Writing %d bytes to parent\n", ++ (int)state->response->length)); ++ ++ if (write_data_iov(state->sock, iov, iov_count) != ++ state->response->length) { ++ DEBUG(0, ("Could not write result\n")); ++ exit(1); ++ } ++} ++ + /* + * In a child there will be only one domain, reference that here. + */ +@@ -1301,6 +1361,7 @@ static bool fork_domain_child(struct win + struct winbindd_request request; + struct winbindd_response response; + struct winbindd_domain *primary_domain = NULL; ++ struct child_handler_state ch_state; + NTSTATUS status; + ssize_t nwritten; + +@@ -1322,6 +1383,9 @@ static bool fork_domain_child(struct win + state.request = &request; + state.response = &response; + ++ ch_state.child = child; ++ ch_state.cli_state = &state; ++ + child->pid = sys_fork(); + + if (child->pid == -1) { +@@ -1464,22 +1528,14 @@ static bool fork_domain_child(struct win + } + } + +- while (1) { ++ if (tevent_add_fd(winbind_event_context(), NULL, state.sock, ++ TEVENT_FD_READ, child_handler, &ch_state) == NULL) { ++ DEBUG(1, ("tevent_add_fd failed\n")); ++ exit(1); ++ } + +- int ret; +- struct pollfd *pfds; +- int num_pfds; +- int timeout; +- struct timeval t; +- struct timeval *tp; ++ while (1) { + TALLOC_CTX *frame = talloc_stackframe(); +- struct iovec iov[2]; +- int iov_count; +- +- if (run_events_poll(winbind_event_context(), 0, NULL, 0)) { +- TALLOC_FREE(frame); +- continue; +- } + + if (child->domain && child->domain->startup && + (time_mono(NULL) > child->domain->startup_time + 30)) { +@@ -1489,99 +1545,12 @@ static bool fork_domain_child(struct win + child->domain->startup = False; + } + +- pfds = TALLOC_ZERO_P(talloc_tos(), struct pollfd); +- if (pfds == NULL) { +- DEBUG(1, ("talloc failed\n")); +- _exit(1); +- } +- +- pfds->fd = state.sock; +- pfds->events = POLLIN|POLLHUP; +- num_pfds = 1; +- +- timeout = INT_MAX; +- +- if (!event_add_to_poll_args( +- winbind_event_context(), talloc_tos(), +- &pfds, &num_pfds, &timeout)) { +- DEBUG(1, ("event_add_to_poll_args failed\n")); +- _exit(1); +- } +- tp = get_timed_events_timeout(winbind_event_context(), &t); +- if (tp) { +- DEBUG(11,("select will use timeout of %u.%u seconds\n", +- (unsigned int)tp->tv_sec, (unsigned int)tp->tv_usec )); +- } +- +- ret = sys_poll(pfds, num_pfds, timeout); +- +- if (run_events_poll(winbind_event_context(), ret, +- pfds, num_pfds)) { +- /* We got a signal - continue. */ +- TALLOC_FREE(frame); +- continue; +- } +- +- TALLOC_FREE(pfds); +- +- if (ret == 0) { +- DEBUG(11,("nothing is ready yet, continue\n")); +- TALLOC_FREE(frame); +- continue; +- } +- +- if (ret == -1 && errno == EINTR) { +- /* We got a signal - continue. */ +- TALLOC_FREE(frame); +- continue; +- } +- +- if (ret == -1 && errno != EINTR) { +- DEBUG(0,("poll error occured\n")); +- TALLOC_FREE(frame); +- perror("poll"); ++ if (tevent_loop_once(winbind_event_context()) != 0) { ++ DEBUG(1, ("tevent_loop_once failed: %s\n", ++ strerror(errno))); + _exit(1); + } + +- /* fetch a request from the main daemon */ +- status = child_read_request(&state); +- +- if (!NT_STATUS_IS_OK(status)) { +- /* we lost contact with our parent */ +- _exit(0); +- } +- +- DEBUG(4,("child daemon request %d\n", (int)state.request->cmd)); +- +- ZERO_STRUCTP(state.response); +- state.request->null_term = '\0'; +- state.mem_ctx = frame; +- child_process_request(child, &state); +- +- DEBUG(4, ("Finished processing child request %d\n", +- (int)state.request->cmd)); +- +- SAFE_FREE(state.request->extra_data.data); +- +- iov[0].iov_base = (void *)state.response; +- iov[0].iov_len = sizeof(struct winbindd_response); +- iov_count = 1; +- +- if (state.response->length > sizeof(struct winbindd_response)) { +- iov[1].iov_base = +- (void *)state.response->extra_data.data; +- iov[1].iov_len = state.response->length-iov[0].iov_len; +- iov_count = 2; +- } +- +- DEBUG(10, ("Writing %d bytes to parent\n", +- (int)state.response->length)); +- +- if (write_data_iov(state.sock, iov, iov_count) != +- state.response->length) { +- DEBUG(0, ("Could not write result\n")); +- exit(1); +- } + TALLOC_FREE(frame); + } + } From b190cbe2266b7af3f27188e5624a7e3b5fb1ddfc Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 28 May 2017 13:01:14 +0100 Subject: [PATCH 430/464] make.sh: Re-enable build of python3-libvirt This line was dropped by accident in a merge conflict Signed-off-by: Michael Tremer --- make.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/make.sh b/make.sh index 19e19a9f1..9092dd5ce 100755 --- a/make.sh +++ b/make.sh @@ -882,6 +882,7 @@ buildipfire() { lfsmake2 libpciaccess lfsmake2 libyajl lfsmake2 libvirt + lfsmake2 python3-libvirt lfsmake2 freeradius lfsmake2 perl-common-sense lfsmake2 perl-inotify2 From 6206273045849859584cbe3dfb09d63327340532 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 28 May 2017 13:05:00 +0100 Subject: [PATCH 431/464] Rootfile update Signed-off-by: Michael Tremer --- config/rootfiles/common/autoconf | 1 + config/rootfiles/common/tzdata | 1 + config/rootfiles/common/x86_64/binutils | 130 ++++++++++++++++++++++-- 3 files changed, 126 insertions(+), 6 deletions(-) diff --git a/config/rootfiles/common/autoconf b/config/rootfiles/common/autoconf index b398eb974..3e28ae744 100644 --- a/config/rootfiles/common/autoconf +++ b/config/rootfiles/common/autoconf @@ -54,6 +54,7 @@ #usr/share/autoconf/m4sugar/m4sugar.m4f #usr/share/autoconf/m4sugar/version.m4 #usr/share/info/autoconf.info +#usr/share/info/standards.info #usr/share/man/man1/autoconf.1 #usr/share/man/man1/autoheader.1 #usr/share/man/man1/autom4te.1 diff --git a/config/rootfiles/common/tzdata b/config/rootfiles/common/tzdata index 61481999e..c44ad4abf 100644 --- a/config/rootfiles/common/tzdata +++ b/config/rootfiles/common/tzdata @@ -1,3 +1,4 @@ +etc/localtime usr/share/zoneinfo #usr/share/zoneinfo/Africa #usr/share/zoneinfo/Africa/Abidjan diff --git a/config/rootfiles/common/x86_64/binutils b/config/rootfiles/common/x86_64/binutils index bb0bf9b1f..88c1da36e 100644 --- a/config/rootfiles/common/x86_64/binutils +++ b/config/rootfiles/common/x86_64/binutils @@ -19,6 +19,7 @@ #usr/include/bfdlink.h #usr/include/dis-asm.h #usr/include/libiberty.h +#usr/include/plugin-api.h #usr/include/symcat.h #usr/lib/ldscripts #usr/lib/ldscripts/elf32_x86_64.x @@ -47,6 +48,19 @@ #usr/lib/ldscripts/elf_i386.xsw #usr/lib/ldscripts/elf_i386.xu #usr/lib/ldscripts/elf_i386.xw +#usr/lib/ldscripts/elf_iamcu.x +#usr/lib/ldscripts/elf_iamcu.xbn +#usr/lib/ldscripts/elf_iamcu.xc +#usr/lib/ldscripts/elf_iamcu.xd +#usr/lib/ldscripts/elf_iamcu.xdc +#usr/lib/ldscripts/elf_iamcu.xdw +#usr/lib/ldscripts/elf_iamcu.xn +#usr/lib/ldscripts/elf_iamcu.xr +#usr/lib/ldscripts/elf_iamcu.xs +#usr/lib/ldscripts/elf_iamcu.xsc +#usr/lib/ldscripts/elf_iamcu.xsw +#usr/lib/ldscripts/elf_iamcu.xu +#usr/lib/ldscripts/elf_iamcu.xw #usr/lib/ldscripts/elf_k1om.x #usr/lib/ldscripts/elf_k1om.xbn #usr/lib/ldscripts/elf_k1om.xc @@ -91,23 +105,127 @@ #usr/lib/ldscripts/i386linux.xn #usr/lib/ldscripts/i386linux.xr #usr/lib/ldscripts/i386linux.xu -#usr/lib/libbfd-2.24.so +#usr/lib/libbfd-2.28.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so -#usr/lib/libiberty.a -#usr/lib/libopcodes-2.24.so +#usr/lib/libopcodes-2.28.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so #usr/share/info/as.info #usr/share/info/bfd.info #usr/share/info/binutils.info -#usr/share/info/configure.info -#usr/share/info/dir #usr/share/info/gprof.info #usr/share/info/ld.info -#usr/share/info/standards.info +#usr/share/locale/bg/LC_MESSAGES/binutils.mo +#usr/share/locale/bg/LC_MESSAGES/gprof.mo +#usr/share/locale/bg/LC_MESSAGES/ld.mo +#usr/share/locale/ca/LC_MESSAGES/binutils.mo +#usr/share/locale/da/LC_MESSAGES/bfd.mo +#usr/share/locale/da/LC_MESSAGES/binutils.mo +#usr/share/locale/da/LC_MESSAGES/gprof.mo +#usr/share/locale/da/LC_MESSAGES/ld.mo +#usr/share/locale/da/LC_MESSAGES/opcodes.mo +#usr/share/locale/de/LC_MESSAGES/gprof.mo +#usr/share/locale/de/LC_MESSAGES/opcodes.mo +#usr/share/locale/eo/LC_MESSAGES/gprof.mo +#usr/share/locale/es/LC_MESSAGES/bfd.mo +#usr/share/locale/es/LC_MESSAGES/binutils.mo +#usr/share/locale/es/LC_MESSAGES/gas.mo +#usr/share/locale/es/LC_MESSAGES/gprof.mo +#usr/share/locale/es/LC_MESSAGES/ld.mo +#usr/share/locale/es/LC_MESSAGES/opcodes.mo +#usr/share/locale/fi/LC_MESSAGES/bfd.mo +#usr/share/locale/fi/LC_MESSAGES/binutils.mo +#usr/share/locale/fi/LC_MESSAGES/gas.mo +#usr/share/locale/fi/LC_MESSAGES/gprof.mo +#usr/share/locale/fi/LC_MESSAGES/ld.mo +#usr/share/locale/fi/LC_MESSAGES/opcodes.mo +#usr/share/locale/fr/LC_MESSAGES/bfd.mo +#usr/share/locale/fr/LC_MESSAGES/binutils.mo +#usr/share/locale/fr/LC_MESSAGES/gas.mo +#usr/share/locale/fr/LC_MESSAGES/gprof.mo +#usr/share/locale/fr/LC_MESSAGES/ld.mo +#usr/share/locale/fr/LC_MESSAGES/opcodes.mo +#usr/share/locale/ga +#usr/share/locale/ga/LC_MESSAGES +#usr/share/locale/ga/LC_MESSAGES/gprof.mo +#usr/share/locale/ga/LC_MESSAGES/ld.mo +#usr/share/locale/ga/LC_MESSAGES/opcodes.mo +#usr/share/locale/hr/LC_MESSAGES/binutils.mo +#usr/share/locale/hu/LC_MESSAGES/gprof.mo +#usr/share/locale/id/LC_MESSAGES/bfd.mo +#usr/share/locale/id/LC_MESSAGES/binutils.mo +#usr/share/locale/id/LC_MESSAGES/gas.mo +#usr/share/locale/id/LC_MESSAGES/gprof.mo +#usr/share/locale/id/LC_MESSAGES/ld.mo +#usr/share/locale/id/LC_MESSAGES/opcodes.mo +#usr/share/locale/it/LC_MESSAGES/binutils.mo +#usr/share/locale/it/LC_MESSAGES/gprof.mo +#usr/share/locale/it/LC_MESSAGES/ld.mo +#usr/share/locale/it/LC_MESSAGES/opcodes.mo +#usr/share/locale/ja/LC_MESSAGES/bfd.mo +#usr/share/locale/ja/LC_MESSAGES/binutils.mo +#usr/share/locale/ja/LC_MESSAGES/gas.mo +#usr/share/locale/ja/LC_MESSAGES/gprof.mo +#usr/share/locale/ja/LC_MESSAGES/ld.mo +#usr/share/locale/ms +#usr/share/locale/ms/LC_MESSAGES +#usr/share/locale/ms/LC_MESSAGES/gprof.mo +#usr/share/locale/nl/LC_MESSAGES/gprof.mo +#usr/share/locale/nl/LC_MESSAGES/opcodes.mo +#usr/share/locale/pt_BR/LC_MESSAGES/gprof.mo +#usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo +#usr/share/locale/ro +#usr/share/locale/ro/LC_MESSAGES +#usr/share/locale/ro/LC_MESSAGES/bfd.mo +#usr/share/locale/ro/LC_MESSAGES/binutils.mo +#usr/share/locale/ro/LC_MESSAGES/gprof.mo +#usr/share/locale/ro/LC_MESSAGES/opcodes.mo +#usr/share/locale/ru/LC_MESSAGES/bfd.mo +#usr/share/locale/ru/LC_MESSAGES/binutils.mo +#usr/share/locale/ru/LC_MESSAGES/gas.mo +#usr/share/locale/ru/LC_MESSAGES/gprof.mo +#usr/share/locale/rw/LC_MESSAGES/bfd.mo +#usr/share/locale/rw/LC_MESSAGES/binutils.mo +#usr/share/locale/rw/LC_MESSAGES/gas.mo +#usr/share/locale/rw/LC_MESSAGES/gprof.mo +#usr/share/locale/sk/LC_MESSAGES/binutils.mo +#usr/share/locale/sr +#usr/share/locale/sr/LC_MESSAGES +#usr/share/locale/sr/LC_MESSAGES/bfd.mo +#usr/share/locale/sr/LC_MESSAGES/binutils.mo +#usr/share/locale/sr/LC_MESSAGES/gprof.mo +#usr/share/locale/sv/LC_MESSAGES/bfd.mo +#usr/share/locale/sv/LC_MESSAGES/binutils.mo +#usr/share/locale/sv/LC_MESSAGES/gprof.mo +#usr/share/locale/sv/LC_MESSAGES/ld.mo +#usr/share/locale/sv/LC_MESSAGES/opcodes.mo +#usr/share/locale/tr/LC_MESSAGES/bfd.mo +#usr/share/locale/tr/LC_MESSAGES/binutils.mo +#usr/share/locale/tr/LC_MESSAGES/gas.mo +#usr/share/locale/tr/LC_MESSAGES/gprof.mo +#usr/share/locale/tr/LC_MESSAGES/ld.mo +#usr/share/locale/tr/LC_MESSAGES/opcodes.mo +#usr/share/locale/uk/LC_MESSAGES/bfd.mo +#usr/share/locale/uk/LC_MESSAGES/binutils.mo +#usr/share/locale/uk/LC_MESSAGES/gas.mo +#usr/share/locale/uk/LC_MESSAGES/gprof.mo +#usr/share/locale/uk/LC_MESSAGES/ld.mo +#usr/share/locale/uk/LC_MESSAGES/opcodes.mo +#usr/share/locale/vi/LC_MESSAGES/bfd.mo +#usr/share/locale/vi/LC_MESSAGES/binutils.mo +#usr/share/locale/vi/LC_MESSAGES/gprof.mo +#usr/share/locale/vi/LC_MESSAGES/ld.mo +#usr/share/locale/vi/LC_MESSAGES/opcodes.mo +#usr/share/locale/zh_CN/LC_MESSAGES/bfd.mo +#usr/share/locale/zh_CN/LC_MESSAGES/binutils.mo +#usr/share/locale/zh_CN/LC_MESSAGES/gas.mo +#usr/share/locale/zh_CN/LC_MESSAGES/ld.mo +#usr/share/locale/zh_CN/LC_MESSAGES/opcodes.mo +#usr/share/locale/zh_TW/LC_MESSAGES/binutils.mo +#usr/share/locale/zh_TW/LC_MESSAGES/ld.mo #usr/share/man/man1/addr2line.1 #usr/share/man/man1/ar.1 #usr/share/man/man1/as.1 From 4efce2359f8ac38a5d3ae53ad1eb45b70e86242f Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 29 May 2017 20:27:25 +0200 Subject: [PATCH 432/464] samba 3.6.25: fixes for lfs-file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed 'unrecognized' configure-options. Deleted empty tab at line end and moved line '-mkdir -p /var/ipfire/samba' because of error message: 'mkdir: cannot create directory ‘/var/ipfire/samba’: File exists' Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/samba | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lfs/samba b/lfs/samba index 076152f48..c298f3e1d 100644 --- a/lfs/samba +++ b/lfs/samba @@ -54,7 +54,7 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: +dist: @$(PAK) ############################################################################### @@ -102,10 +102,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --with-libsmbclient \ --with-libsmbsharemodes \ --with-sendfile-support \ - --without-smbwrapper \ - --with-mmap \ --with-fhs \ - --with-vfs \ --with-winbind \ --disable-swat \ --enable-cups \ @@ -119,8 +116,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) #cd $(DIR_APP)/source3 && install -v -m755 nsswitch/libnss_winbind.so /lib #cd $(DIR_APP)/source3 && ln -v -sf libnss_winbind.so /lib/libnss_winbind.so.2 #cd $(DIR_APP)/source3 && ln -v -sf libnss_wins.so /lib/libnss_wins.so.2 + -mkdir -p /var/ipfire/samba cd $(DIR_APP)/source3 && install -v -m644 ../examples/smb.conf.default /var/ipfire/samba - -mkdir -p /var/ipfire/samba cp -vrf $(DIR_SRC)/config/samba/* /var/ipfire/samba/ chown nobody:nobody -R /var/ipfire/samba/ cp -vfp /var/ipfire/samba/default.global /var/ipfire/samba/global From 3b3fa6775b2d04f1ff4d083a160674980f3c2035 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 25 May 2017 20:16:13 +0100 Subject: [PATCH 433/464] flash-image: Increase size of root partition This should still be small enough to barely fit on a disk that can hold 1GB of data. The actual one. Not the one that some vendors put on it. Signed-off-by: Michael Tremer --- lfs/flash-images | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/flash-images b/lfs/flash-images index 4a1a4d6aa..07547966c 100644 --- a/lfs/flash-images +++ b/lfs/flash-images @@ -75,9 +75,9 @@ else endif # /boot: 64MB - OFFSET -# / : 750MB +# / : 850MB S_BOOT := $(shell echo $$(( 131072 - $(S_OFFSET) ))) -S_ROOT := 1536000 +S_ROOT := 1740800 PADDING = 100 # MB From 82d25bae628797aa3af43c077b29b30fa91d6b30 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 29 May 2017 20:27:25 +0200 Subject: [PATCH 434/464] samba 3.6.25: fixes for lfs-file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed 'unrecognized' configure-options. Deleted empty tab at line end and moved line '-mkdir -p /var/ipfire/samba' because of error message: 'mkdir: cannot create directory ‘/var/ipfire/samba’: File exists' Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/samba | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lfs/samba b/lfs/samba index 8f0b946ec..b29db0209 100644 --- a/lfs/samba +++ b/lfs/samba @@ -54,7 +54,7 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects)) md5 : $(subst %,%_MD5,$(objects)) -dist: +dist: @$(PAK) ############################################################################### @@ -170,10 +170,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --with-libsmbclient \ --with-libsmbsharemodes \ --with-sendfile-support \ - --without-smbwrapper \ - --with-mmap \ --with-fhs \ - --with-vfs \ --with-winbind \ --disable-swat \ --enable-cups \ @@ -187,8 +184,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) #cd $(DIR_APP)/source3 && install -v -m755 nsswitch/libnss_winbind.so /lib #cd $(DIR_APP)/source3 && ln -v -sf libnss_winbind.so /lib/libnss_winbind.so.2 #cd $(DIR_APP)/source3 && ln -v -sf libnss_wins.so /lib/libnss_wins.so.2 + -mkdir -p /var/ipfire/samba cd $(DIR_APP)/source3 && install -v -m644 ../examples/smb.conf.default /var/ipfire/samba - -mkdir -p /var/ipfire/samba cp -vrf $(DIR_SRC)/config/samba/* /var/ipfire/samba/ chown nobody:nobody -R /var/ipfire/samba/ cp -vfp /var/ipfire/samba/default.global /var/ipfire/samba/global From feadf6285e933b76d15769c6cd13f5dbff8029bf Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Tue, 30 May 2017 21:29:53 +0200 Subject: [PATCH 435/464] samba: bump package version Signed-off-by: Arne Fitzenreiter --- lfs/samba | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/samba b/lfs/samba index b29db0209..815a8ece1 100644 --- a/lfs/samba +++ b/lfs/samba @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = samba -PAK_VER = 65 +PAK_VER = 66 DEPS = "cups krb5" From 949815f136a9b89fd4aca2cae7a0e216f4065088 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Wed, 31 May 2017 17:20:47 +0200 Subject: [PATCH 436/464] finish core111 Signed-off-by: Arne Fitzenreiter --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 7e25ce996..b27b4e4f0 100755 --- a/make.sh +++ b/make.sh @@ -26,7 +26,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number CORE="111" # Core Level (Filename) -PAKFIRE_CORE="110" # Core Level (PAKFIRE) +PAKFIRE_CORE="111" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan CONFIG_ROOT=/var/ipfire # Configuration rootdir From c065e264a4d761347e85e1802e75314bd32be1db Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 31 May 2017 21:00:21 +0100 Subject: [PATCH 437/464] cyrus-imapd: Update to 2.5.11 Signed-off-by: Michael Tremer --- config/rootfiles/packages/cyrus-imapd | 198 +++++++++++++++++--------- lfs/cyrus-imapd | 14 +- 2 files changed, 134 insertions(+), 78 deletions(-) diff --git a/config/rootfiles/packages/cyrus-imapd b/config/rootfiles/packages/cyrus-imapd index bbaec3ffb..67d6f7916 100644 --- a/config/rootfiles/packages/cyrus-imapd +++ b/config/rootfiles/packages/cyrus-imapd @@ -1,3 +1,4 @@ +etc/rc.d/init.d/cyrus-imapd usr/bin/cyradm usr/bin/imtest usr/bin/installsieve @@ -9,48 +10,70 @@ usr/bin/pop3test usr/bin/sieveshell usr/bin/sivtest usr/bin/smtptest +usr/bin/synctest #usr/include/cyrus #usr/include/cyrus/acl.h +#usr/include/cyrus/arrayu64.h #usr/include/cyrus/assert.h #usr/include/cyrus/auth.h +#usr/include/cyrus/auth_pts.h +#usr/include/cyrus/bitvector.h #usr/include/cyrus/bsearch.h #usr/include/cyrus/charset.h +#usr/include/cyrus/chartable.h +#usr/include/cyrus/command.h +#usr/include/cyrus/crc32.h +#usr/include/cyrus/cyr_lock.h #usr/include/cyrus/cyrusdb.h +#usr/include/cyrus/exitcodes.h #usr/include/cyrus/glob.h #usr/include/cyrus/gmtoff.h #usr/include/cyrus/hash.h +#usr/include/cyrus/hashu64.h #usr/include/cyrus/imapopts.h #usr/include/cyrus/imapurl.h #usr/include/cyrus/imclient.h #usr/include/cyrus/imparse.h +#usr/include/cyrus/iostat.h #usr/include/cyrus/iptostring.h -#usr/include/cyrus/libconfig.h #usr/include/cyrus/libcyr_cfg.h -#usr/include/cyrus/lock.h #usr/include/cyrus/lsort.h #usr/include/cyrus/map.h +#usr/include/cyrus/mappedfile.h #usr/include/cyrus/mkgmtime.h #usr/include/cyrus/mpool.h #usr/include/cyrus/nonblock.h #usr/include/cyrus/parseaddr.h -#usr/include/cyrus/prot.h #usr/include/cyrus/retry.h -#usr/include/cyrus/rfc822date.h +#usr/include/cyrus/rfc822tok.h +#usr/include/cyrus/sieve +#usr/include/cyrus/sieve/sieve_err.h +#usr/include/cyrus/sieve/sieve_interface.h +#usr/include/cyrus/signals.h +#usr/include/cyrus/strarray.h #usr/include/cyrus/strhash.h -#usr/include/cyrus/strhash.o #usr/include/cyrus/stristr.h #usr/include/cyrus/sysexits.h -#usr/include/cyrus/util.h +#usr/include/cyrus/times.h +#usr/include/cyrus/tok.h +#usr/include/cyrus/vparse.h +#usr/include/cyrus/wildmat.h #usr/include/cyrus/xmalloc.h #usr/lib/cyrus usr/lib/cyrus/arbitron usr/lib/cyrus/chk_cyrus -usr/lib/cyrus/compile_sieve usr/lib/cyrus/ctl_cyrusdb usr/lib/cyrus/ctl_deliver usr/lib/cyrus/ctl_mboxlist usr/lib/cyrus/cvt_cyrusdb +usr/lib/cyrus/cyr_dbtool +usr/lib/cyrus/cyr_deny +usr/lib/cyrus/cyr_df usr/lib/cyrus/cyr_expire +usr/lib/cyrus/cyr_info +usr/lib/cyrus/cyr_sequence +usr/lib/cyrus/cyr_synclog +usr/lib/cyrus/cyr_userseen usr/lib/cyrus/cyrdump usr/lib/cyrus/deliver usr/lib/cyrus/fud @@ -58,86 +81,122 @@ usr/lib/cyrus/idled usr/lib/cyrus/imapd usr/lib/cyrus/ipurge usr/lib/cyrus/lmtpd +usr/lib/cyrus/lmtpproxyd usr/lib/cyrus/master usr/lib/cyrus/mbexamine usr/lib/cyrus/mbpath +usr/lib/cyrus/mbtool usr/lib/cyrus/notifyd usr/lib/cyrus/pop3d usr/lib/cyrus/pop3proxyd +usr/lib/cyrus/proxyd usr/lib/cyrus/quota usr/lib/cyrus/reconstruct usr/lib/cyrus/sievec +usr/lib/cyrus/sieved usr/lib/cyrus/smmapd usr/lib/cyrus/squatter usr/lib/cyrus/timsieved usr/lib/cyrus/tls_prune -#usr/lib/libcyrus.a -#usr/lib/libcyrus_min.a -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP.pm -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/Admin.pm -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/IMSP.pm -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/Shell.pm -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/SIEVE -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/SIEVE/managesieve.pm -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/.packlist -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/IMAP.bs -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/.packlist -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.bs -usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so -#usr/man/man1/imtest.1 -#usr/man/man1/installsieve.1 -#usr/man/man1/lmtptest.1 -#usr/man/man1/mupdatetest.1 -#usr/man/man1/nntptest.1 -#usr/man/man1/pop3test.1 -#usr/man/man1/sieveshell.1 -#usr/man/man1/sivtest.1 -#usr/man/man1/smtptest.1 -#usr/man/man3/imclient.3 -#usr/man/man5/cyrus.conf.5 -#usr/man/man5/imapd.conf.5 -#usr/man/man5/krb.equiv.5 -#usr/man/man8/arbitron.8 -#usr/man/man8/chk_cyrus.8 -#usr/man/man8/ctl_cyrusdb.8 -#usr/man/man8/ctl_deliver.8 -#usr/man/man8/ctl_mboxlist.8 -#usr/man/man8/cvt_cyrusdb.8 -#usr/man/man8/cyr_expire.8 -#usr/man/man8/deliver.8 -#usr/man/man8/fetchnews.8 -#usr/man/man8/fud.8 -#usr/man/man8/idled.8 -#usr/man/man8/imapd.8 -#usr/man/man8/ipurge.8 -#usr/man/man8/lmtpd.8 -#usr/man/man8/master.8 -#usr/man/man8/mbexamine.8 -#usr/man/man8/mbpath.8 -#usr/man/man8/nntpd.8 -#usr/man/man8/notifyd.8 -#usr/man/man8/pop3d.8 -#usr/man/man8/quota.8 -#usr/man/man8/reconstruct.8 -#usr/man/man8/rmnews.8 -#usr/man/man8/smmapd.8 -#usr/man/man8/squatter.8 -#usr/man/man8/syncnews.8 -#usr/man/man8/timsieved.8 -#usr/man/man8/tls_prune.8 +usr/lib/cyrus/unexpunge +#usr/lib/libcyrus.la +#usr/lib/libcyrus.so +usr/lib/libcyrus.so.0 +usr/lib/libcyrus.so.0.0.0 +#usr/lib/libcyrus_imap.la +#usr/lib/libcyrus_imap.so +usr/lib/libcyrus_imap.so.0 +usr/lib/libcyrus_imap.so.0.0.0 +#usr/lib/libcyrus_min.la +#usr/lib/libcyrus_min.so +usr/lib/libcyrus_min.so.0 +usr/lib/libcyrus_min.so.0.0.0 +#usr/lib/libcyrus_sieve.la +#usr/lib/libcyrus_sieve.so +usr/lib/libcyrus_sieve.so.0 +usr/lib/libcyrus_sieve.so.0.0.0 +#usr/lib/perl5/site_perl/5.12.3/Cyrus +#usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator +usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator/Daemon.pm +usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator/Message.pm +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP.pm +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/IMSP.pm +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/SIEVE +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/SIEVE/managesieve.pm +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator/Daemon +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator/Daemon/.packlist +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/.packlist +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.bs +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/.packlist +#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.bs +usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so +#usr/lib/pkgconfig/libcyrus.pc +#usr/lib/pkgconfig/libcyrus_min.pc +#usr/lib/pkgconfig/libcyrus_sieve.pc #usr/share/man/man1/cyradm.1 +#usr/share/man/man1/imtest.1 +#usr/share/man/man1/installsieve.1 +#usr/share/man/man1/lmtptest.1 +#usr/share/man/man1/mupdatetest.1 +#usr/share/man/man1/nntptest.1 +#usr/share/man/man1/pop3test.1 +#usr/share/man/man1/sieveshell.1 +#usr/share/man/man1/sivtest.1 +#usr/share/man/man1/smtptest.1 +#usr/share/man/man3/Cyrus::Annotator::Daemon.3 +#usr/share/man/man3/Cyrus::Annotator::Message.3 #usr/share/man/man3/Cyrus::IMAP.3 #usr/share/man/man3/Cyrus::IMAP::Admin.3 #usr/share/man/man3/Cyrus::IMAP::IMSP.3 #usr/share/man/man3/Cyrus::IMAP::Shell.3 #usr/share/man/man3/Cyrus::SIEVE::managesieve.3 +#usr/share/man/man3/imclient.3 +#usr/share/man/man5/cyrus.conf.5 +#usr/share/man/man5/imapd.conf.5 +#usr/share/man/man5/krb.equiv.5 +#usr/share/man/man8/arbitron.8 +#usr/share/man/man8/chk_cyrus.8 +#usr/share/man/man8/ctl_cyrusdb.8 +#usr/share/man/man8/ctl_deliver.8 +#usr/share/man/man8/ctl_mboxlist.8 +#usr/share/man/man8/cvt_cyrusdb.8 +#usr/share/man/man8/cyr_dbtool.8 +#usr/share/man/man8/cyr_deny.8 +#usr/share/man/man8/cyr_df.8 +#usr/share/man/man8/cyr_expire.8 +#usr/share/man/man8/cyr_info.8 +#usr/share/man/man8/cyr_synclog.8 +#usr/share/man/man8/deliver.8 +#usr/share/man/man8/fud.8 +#usr/share/man/man8/idled.8 +#usr/share/man/man8/imapd.8 +#usr/share/man/man8/ipurge.8 +#usr/share/man/man8/lmtpd.8 +#usr/share/man/man8/mbexamine.8 +#usr/share/man/man8/mbpath.8 +#usr/share/man/man8/notifyd.8 +#usr/share/man/man8/pop3d.8 +#usr/share/man/man8/quota.8 +#usr/share/man/man8/reconstruct.8 +#usr/share/man/man8/rmnews.8 +#usr/share/man/man8/smmapd.8 +#usr/share/man/man8/squatter.8 +#usr/share/man/man8/sync_client.8 +#usr/share/man/man8/sync_reset.8 +#usr/share/man/man8/sync_server.8 +#usr/share/man/man8/timsieved.8 +#usr/share/man/man8/tls_prune.8 +#usr/share/man/man8/unexpunge.8 usr/sieve var/imap var/imap/db @@ -146,10 +205,11 @@ var/imap/msg var/imap/proc var/imap/ptclient var/imap/socket +var/imap/sync var/ipfire/backup/addons/includes/cyrus-imapd var/ipfire/cyrusimap var/ipfire/cyrusimap/cyrus.conf var/ipfire/cyrusimap/imapd.conf var/log/imap var/log/imap/stage. -etc/rc.d/init.d/cyrus-imapd +var/log/imap/sync. diff --git a/lfs/cyrus-imapd b/lfs/cyrus-imapd index e6452aef9..4ae56a925 100644 --- a/lfs/cyrus-imapd +++ b/lfs/cyrus-imapd @@ -24,7 +24,7 @@ include Config -VER = 2.2.12 +VER = 2.5.11 THISAPP = cyrus-imapd-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -33,12 +33,10 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) SUP_ARCH = armv5tel i586 PROG = cyrus-imapd -PAK_VER = 5 +PAK_VER = 6 DEPS = "" -CFLAGS += -I/usr/include/et - ############################################################################### # Top-level Rules ############################################################################### @@ -47,7 +45,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 70b3bba526a8d36d3bb23a87d37e9188 +$(DL_FILE)_MD5 = 674083444c36a786d9431b6612969224 install : $(TARGET) @@ -80,13 +78,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/cyrus-imapd-2.2.12-autocreate-0.9.4.diff - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/cyrus-imapd-2.2.12-gcc4.patch cd $(DIR_APP) && ./configure --prefix=/usr --with-service-path=/usr/lib/cyrus \ --with-cyrus-prefix=/usr/lib/cyrus --sysconfdir=/var/ipfire/cyrusimap \ --with-auth=unix --with-perl --with-sasl --with-idle=idled \ - --with-syslogfacility=MAIL --enable-listext --without-snmp - cd $(DIR_APP) && make depend + --with-syslogfacility=MAIL --enable-listext --without-snmp \ + --enable-autocreate --enable-idled cd $(DIR_APP) && make $(EXTRA_MAKE) cd $(DIR_APP) && make install -mkdir /var/imap From 53094ad2f70d66e02d68cc14bf2e1eea7b7d56fc Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 31 May 2017 21:05:14 +0100 Subject: [PATCH 438/464] Rootfile update Signed-off-by: Michael Tremer --- config/rootfiles/common/i586/binutils | 130 +- config/rootfiles/common/i586/gcc | 2442 +++++----- config/rootfiles/common/i586/glibc | 6122 +------------------------ 3 files changed, 1628 insertions(+), 7066 deletions(-) diff --git a/config/rootfiles/common/i586/binutils b/config/rootfiles/common/i586/binutils index 5f4c1136d..886cdb4bf 100644 --- a/config/rootfiles/common/i586/binutils +++ b/config/rootfiles/common/i586/binutils @@ -19,6 +19,7 @@ #usr/include/bfdlink.h #usr/include/dis-asm.h #usr/include/libiberty.h +#usr/include/plugin-api.h #usr/include/symcat.h #usr/lib/ldscripts #usr/lib/ldscripts/elf32_x86_64.x @@ -47,6 +48,19 @@ #usr/lib/ldscripts/elf_i386.xsw #usr/lib/ldscripts/elf_i386.xu #usr/lib/ldscripts/elf_i386.xw +#usr/lib/ldscripts/elf_iamcu.x +#usr/lib/ldscripts/elf_iamcu.xbn +#usr/lib/ldscripts/elf_iamcu.xc +#usr/lib/ldscripts/elf_iamcu.xd +#usr/lib/ldscripts/elf_iamcu.xdc +#usr/lib/ldscripts/elf_iamcu.xdw +#usr/lib/ldscripts/elf_iamcu.xn +#usr/lib/ldscripts/elf_iamcu.xr +#usr/lib/ldscripts/elf_iamcu.xs +#usr/lib/ldscripts/elf_iamcu.xsc +#usr/lib/ldscripts/elf_iamcu.xsw +#usr/lib/ldscripts/elf_iamcu.xu +#usr/lib/ldscripts/elf_iamcu.xw #usr/lib/ldscripts/elf_k1om.x #usr/lib/ldscripts/elf_k1om.xbn #usr/lib/ldscripts/elf_k1om.xc @@ -91,23 +105,127 @@ #usr/lib/ldscripts/i386linux.xn #usr/lib/ldscripts/i386linux.xr #usr/lib/ldscripts/i386linux.xu -usr/lib/libbfd-2.24.so +usr/lib/libbfd-2.28.so #usr/lib/libbfd.a #usr/lib/libbfd.la #usr/lib/libbfd.so -#usr/lib/libiberty.a -usr/lib/libopcodes-2.24.so +usr/lib/libopcodes-2.28.so #usr/lib/libopcodes.a #usr/lib/libopcodes.la #usr/lib/libopcodes.so #usr/share/info/as.info #usr/share/info/bfd.info #usr/share/info/binutils.info -#usr/share/info/configure.info -#usr/share/info/dir #usr/share/info/gprof.info #usr/share/info/ld.info -#usr/share/info/standards.info +#usr/share/locale/bg/LC_MESSAGES/binutils.mo +#usr/share/locale/bg/LC_MESSAGES/gprof.mo +#usr/share/locale/bg/LC_MESSAGES/ld.mo +#usr/share/locale/ca/LC_MESSAGES/binutils.mo +#usr/share/locale/da/LC_MESSAGES/bfd.mo +#usr/share/locale/da/LC_MESSAGES/binutils.mo +#usr/share/locale/da/LC_MESSAGES/gprof.mo +#usr/share/locale/da/LC_MESSAGES/ld.mo +#usr/share/locale/da/LC_MESSAGES/opcodes.mo +#usr/share/locale/de/LC_MESSAGES/gprof.mo +#usr/share/locale/de/LC_MESSAGES/opcodes.mo +#usr/share/locale/eo/LC_MESSAGES/gprof.mo +#usr/share/locale/es/LC_MESSAGES/bfd.mo +#usr/share/locale/es/LC_MESSAGES/binutils.mo +#usr/share/locale/es/LC_MESSAGES/gas.mo +#usr/share/locale/es/LC_MESSAGES/gprof.mo +#usr/share/locale/es/LC_MESSAGES/ld.mo +#usr/share/locale/es/LC_MESSAGES/opcodes.mo +#usr/share/locale/fi/LC_MESSAGES/bfd.mo +#usr/share/locale/fi/LC_MESSAGES/binutils.mo +#usr/share/locale/fi/LC_MESSAGES/gas.mo +#usr/share/locale/fi/LC_MESSAGES/gprof.mo +#usr/share/locale/fi/LC_MESSAGES/ld.mo +#usr/share/locale/fi/LC_MESSAGES/opcodes.mo +#usr/share/locale/fr/LC_MESSAGES/bfd.mo +#usr/share/locale/fr/LC_MESSAGES/binutils.mo +#usr/share/locale/fr/LC_MESSAGES/gas.mo +#usr/share/locale/fr/LC_MESSAGES/gprof.mo +#usr/share/locale/fr/LC_MESSAGES/ld.mo +#usr/share/locale/fr/LC_MESSAGES/opcodes.mo +#usr/share/locale/ga +#usr/share/locale/ga/LC_MESSAGES +#usr/share/locale/ga/LC_MESSAGES/gprof.mo +#usr/share/locale/ga/LC_MESSAGES/ld.mo +#usr/share/locale/ga/LC_MESSAGES/opcodes.mo +#usr/share/locale/hr/LC_MESSAGES/binutils.mo +#usr/share/locale/hu/LC_MESSAGES/gprof.mo +#usr/share/locale/id/LC_MESSAGES/bfd.mo +#usr/share/locale/id/LC_MESSAGES/binutils.mo +#usr/share/locale/id/LC_MESSAGES/gas.mo +#usr/share/locale/id/LC_MESSAGES/gprof.mo +#usr/share/locale/id/LC_MESSAGES/ld.mo +#usr/share/locale/id/LC_MESSAGES/opcodes.mo +#usr/share/locale/it/LC_MESSAGES/binutils.mo +#usr/share/locale/it/LC_MESSAGES/gprof.mo +#usr/share/locale/it/LC_MESSAGES/ld.mo +#usr/share/locale/it/LC_MESSAGES/opcodes.mo +#usr/share/locale/ja/LC_MESSAGES/bfd.mo +#usr/share/locale/ja/LC_MESSAGES/binutils.mo +#usr/share/locale/ja/LC_MESSAGES/gas.mo +#usr/share/locale/ja/LC_MESSAGES/gprof.mo +#usr/share/locale/ja/LC_MESSAGES/ld.mo +#usr/share/locale/ms +#usr/share/locale/ms/LC_MESSAGES +#usr/share/locale/ms/LC_MESSAGES/gprof.mo +#usr/share/locale/nl/LC_MESSAGES/gprof.mo +#usr/share/locale/nl/LC_MESSAGES/opcodes.mo +#usr/share/locale/pt_BR/LC_MESSAGES/gprof.mo +#usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo +#usr/share/locale/ro +#usr/share/locale/ro/LC_MESSAGES +#usr/share/locale/ro/LC_MESSAGES/bfd.mo +#usr/share/locale/ro/LC_MESSAGES/binutils.mo +#usr/share/locale/ro/LC_MESSAGES/gprof.mo +#usr/share/locale/ro/LC_MESSAGES/opcodes.mo +#usr/share/locale/ru/LC_MESSAGES/bfd.mo +#usr/share/locale/ru/LC_MESSAGES/binutils.mo +#usr/share/locale/ru/LC_MESSAGES/gas.mo +#usr/share/locale/ru/LC_MESSAGES/gprof.mo +#usr/share/locale/rw/LC_MESSAGES/bfd.mo +#usr/share/locale/rw/LC_MESSAGES/binutils.mo +#usr/share/locale/rw/LC_MESSAGES/gas.mo +#usr/share/locale/rw/LC_MESSAGES/gprof.mo +#usr/share/locale/sk/LC_MESSAGES/binutils.mo +#usr/share/locale/sr +#usr/share/locale/sr/LC_MESSAGES +#usr/share/locale/sr/LC_MESSAGES/bfd.mo +#usr/share/locale/sr/LC_MESSAGES/binutils.mo +#usr/share/locale/sr/LC_MESSAGES/gprof.mo +#usr/share/locale/sv/LC_MESSAGES/bfd.mo +#usr/share/locale/sv/LC_MESSAGES/binutils.mo +#usr/share/locale/sv/LC_MESSAGES/gprof.mo +#usr/share/locale/sv/LC_MESSAGES/ld.mo +#usr/share/locale/sv/LC_MESSAGES/opcodes.mo +#usr/share/locale/tr/LC_MESSAGES/bfd.mo +#usr/share/locale/tr/LC_MESSAGES/binutils.mo +#usr/share/locale/tr/LC_MESSAGES/gas.mo +#usr/share/locale/tr/LC_MESSAGES/gprof.mo +#usr/share/locale/tr/LC_MESSAGES/ld.mo +#usr/share/locale/tr/LC_MESSAGES/opcodes.mo +#usr/share/locale/uk/LC_MESSAGES/bfd.mo +#usr/share/locale/uk/LC_MESSAGES/binutils.mo +#usr/share/locale/uk/LC_MESSAGES/gas.mo +#usr/share/locale/uk/LC_MESSAGES/gprof.mo +#usr/share/locale/uk/LC_MESSAGES/ld.mo +#usr/share/locale/uk/LC_MESSAGES/opcodes.mo +#usr/share/locale/vi/LC_MESSAGES/bfd.mo +#usr/share/locale/vi/LC_MESSAGES/binutils.mo +#usr/share/locale/vi/LC_MESSAGES/gprof.mo +#usr/share/locale/vi/LC_MESSAGES/ld.mo +#usr/share/locale/vi/LC_MESSAGES/opcodes.mo +#usr/share/locale/zh_CN/LC_MESSAGES/bfd.mo +#usr/share/locale/zh_CN/LC_MESSAGES/binutils.mo +#usr/share/locale/zh_CN/LC_MESSAGES/gas.mo +#usr/share/locale/zh_CN/LC_MESSAGES/ld.mo +#usr/share/locale/zh_CN/LC_MESSAGES/opcodes.mo +#usr/share/locale/zh_TW/LC_MESSAGES/binutils.mo +#usr/share/locale/zh_TW/LC_MESSAGES/ld.mo #usr/share/man/man1/addr2line.1 #usr/share/man/man1/ar.1 #usr/share/man/man1/as.1 diff --git a/config/rootfiles/common/i586/gcc b/config/rootfiles/common/i586/gcc index 96d54f73a..043d55a9e 100644 --- a/config/rootfiles/common/i586/gcc +++ b/config/rootfiles/common/i586/gcc @@ -8,1102 +8,1348 @@ #usr/bin/gcc-nm #usr/bin/gcc-ranlib #usr/bin/gcov +#usr/bin/gcov-tool #usr/bin/i586-pc-linux-gnu-c++ #usr/bin/i586-pc-linux-gnu-g++ #usr/bin/i586-pc-linux-gnu-gcc -#usr/bin/i586-pc-linux-gnu-gcc-4.9.4 +#usr/bin/i586-pc-linux-gnu-gcc-6.3.0 #usr/bin/i586-pc-linux-gnu-gcc-ar #usr/bin/i586-pc-linux-gnu-gcc-nm #usr/bin/i586-pc-linux-gnu-gcc-ranlib #usr/include/c++ -#usr/include/c++/4.9.4 -#usr/include/c++/4.9.4/algorithm -#usr/include/c++/4.9.4/array -#usr/include/c++/4.9.4/atomic -#usr/include/c++/4.9.4/backward -#usr/include/c++/4.9.4/backward/auto_ptr.h -#usr/include/c++/4.9.4/backward/backward_warning.h -#usr/include/c++/4.9.4/backward/binders.h -#usr/include/c++/4.9.4/backward/hash_fun.h -#usr/include/c++/4.9.4/backward/hash_map -#usr/include/c++/4.9.4/backward/hash_set -#usr/include/c++/4.9.4/backward/hashtable.h -#usr/include/c++/4.9.4/backward/strstream -#usr/include/c++/4.9.4/bits -#usr/include/c++/4.9.4/bits/algorithmfwd.h -#usr/include/c++/4.9.4/bits/alloc_traits.h -#usr/include/c++/4.9.4/bits/allocator.h -#usr/include/c++/4.9.4/bits/atomic_base.h -#usr/include/c++/4.9.4/bits/atomic_lockfree_defines.h -#usr/include/c++/4.9.4/bits/basic_ios.h -#usr/include/c++/4.9.4/bits/basic_ios.tcc -#usr/include/c++/4.9.4/bits/basic_string.h -#usr/include/c++/4.9.4/bits/basic_string.tcc -#usr/include/c++/4.9.4/bits/boost_concept_check.h -#usr/include/c++/4.9.4/bits/c++0x_warning.h -#usr/include/c++/4.9.4/bits/c++14_warning.h -#usr/include/c++/4.9.4/bits/char_traits.h -#usr/include/c++/4.9.4/bits/codecvt.h -#usr/include/c++/4.9.4/bits/concept_check.h -#usr/include/c++/4.9.4/bits/cpp_type_traits.h -#usr/include/c++/4.9.4/bits/cxxabi_forced.h -#usr/include/c++/4.9.4/bits/deque.tcc -#usr/include/c++/4.9.4/bits/enable_special_members.h -#usr/include/c++/4.9.4/bits/exception_defines.h -#usr/include/c++/4.9.4/bits/exception_ptr.h -#usr/include/c++/4.9.4/bits/forward_list.h -#usr/include/c++/4.9.4/bits/forward_list.tcc -#usr/include/c++/4.9.4/bits/fstream.tcc -#usr/include/c++/4.9.4/bits/functexcept.h -#usr/include/c++/4.9.4/bits/functional_hash.h -#usr/include/c++/4.9.4/bits/gslice.h -#usr/include/c++/4.9.4/bits/gslice_array.h -#usr/include/c++/4.9.4/bits/hash_bytes.h -#usr/include/c++/4.9.4/bits/hashtable.h -#usr/include/c++/4.9.4/bits/hashtable_policy.h -#usr/include/c++/4.9.4/bits/indirect_array.h -#usr/include/c++/4.9.4/bits/ios_base.h -#usr/include/c++/4.9.4/bits/istream.tcc -#usr/include/c++/4.9.4/bits/list.tcc -#usr/include/c++/4.9.4/bits/locale_classes.h -#usr/include/c++/4.9.4/bits/locale_classes.tcc -#usr/include/c++/4.9.4/bits/locale_facets.h -#usr/include/c++/4.9.4/bits/locale_facets.tcc -#usr/include/c++/4.9.4/bits/locale_facets_nonio.h -#usr/include/c++/4.9.4/bits/locale_facets_nonio.tcc -#usr/include/c++/4.9.4/bits/localefwd.h -#usr/include/c++/4.9.4/bits/mask_array.h -#usr/include/c++/4.9.4/bits/memoryfwd.h -#usr/include/c++/4.9.4/bits/move.h -#usr/include/c++/4.9.4/bits/nested_exception.h -#usr/include/c++/4.9.4/bits/ostream.tcc -#usr/include/c++/4.9.4/bits/ostream_insert.h -#usr/include/c++/4.9.4/bits/parse_numbers.h -#usr/include/c++/4.9.4/bits/postypes.h -#usr/include/c++/4.9.4/bits/predefined_ops.h -#usr/include/c++/4.9.4/bits/ptr_traits.h -#usr/include/c++/4.9.4/bits/random.h -#usr/include/c++/4.9.4/bits/random.tcc -#usr/include/c++/4.9.4/bits/range_access.h -#usr/include/c++/4.9.4/bits/regex.h -#usr/include/c++/4.9.4/bits/regex.tcc -#usr/include/c++/4.9.4/bits/regex_automaton.h -#usr/include/c++/4.9.4/bits/regex_automaton.tcc -#usr/include/c++/4.9.4/bits/regex_compiler.h -#usr/include/c++/4.9.4/bits/regex_compiler.tcc -#usr/include/c++/4.9.4/bits/regex_constants.h -#usr/include/c++/4.9.4/bits/regex_error.h -#usr/include/c++/4.9.4/bits/regex_executor.h -#usr/include/c++/4.9.4/bits/regex_executor.tcc -#usr/include/c++/4.9.4/bits/regex_scanner.h -#usr/include/c++/4.9.4/bits/regex_scanner.tcc -#usr/include/c++/4.9.4/bits/shared_ptr.h -#usr/include/c++/4.9.4/bits/shared_ptr_base.h -#usr/include/c++/4.9.4/bits/slice_array.h -#usr/include/c++/4.9.4/bits/sstream.tcc -#usr/include/c++/4.9.4/bits/stl_algo.h -#usr/include/c++/4.9.4/bits/stl_algobase.h -#usr/include/c++/4.9.4/bits/stl_bvector.h -#usr/include/c++/4.9.4/bits/stl_construct.h -#usr/include/c++/4.9.4/bits/stl_deque.h -#usr/include/c++/4.9.4/bits/stl_function.h -#usr/include/c++/4.9.4/bits/stl_heap.h -#usr/include/c++/4.9.4/bits/stl_iterator.h -#usr/include/c++/4.9.4/bits/stl_iterator_base_funcs.h -#usr/include/c++/4.9.4/bits/stl_iterator_base_types.h -#usr/include/c++/4.9.4/bits/stl_list.h -#usr/include/c++/4.9.4/bits/stl_map.h -#usr/include/c++/4.9.4/bits/stl_multimap.h -#usr/include/c++/4.9.4/bits/stl_multiset.h -#usr/include/c++/4.9.4/bits/stl_numeric.h -#usr/include/c++/4.9.4/bits/stl_pair.h -#usr/include/c++/4.9.4/bits/stl_queue.h -#usr/include/c++/4.9.4/bits/stl_raw_storage_iter.h -#usr/include/c++/4.9.4/bits/stl_relops.h -#usr/include/c++/4.9.4/bits/stl_set.h -#usr/include/c++/4.9.4/bits/stl_stack.h -#usr/include/c++/4.9.4/bits/stl_tempbuf.h -#usr/include/c++/4.9.4/bits/stl_tree.h -#usr/include/c++/4.9.4/bits/stl_uninitialized.h -#usr/include/c++/4.9.4/bits/stl_vector.h -#usr/include/c++/4.9.4/bits/stream_iterator.h -#usr/include/c++/4.9.4/bits/streambuf.tcc -#usr/include/c++/4.9.4/bits/streambuf_iterator.h -#usr/include/c++/4.9.4/bits/stringfwd.h -#usr/include/c++/4.9.4/bits/unique_ptr.h -#usr/include/c++/4.9.4/bits/unordered_map.h -#usr/include/c++/4.9.4/bits/unordered_set.h -#usr/include/c++/4.9.4/bits/uses_allocator.h -#usr/include/c++/4.9.4/bits/valarray_after.h -#usr/include/c++/4.9.4/bits/valarray_array.h -#usr/include/c++/4.9.4/bits/valarray_array.tcc -#usr/include/c++/4.9.4/bits/valarray_before.h -#usr/include/c++/4.9.4/bits/vector.tcc -#usr/include/c++/4.9.4/bitset -#usr/include/c++/4.9.4/cassert -#usr/include/c++/4.9.4/ccomplex -#usr/include/c++/4.9.4/cctype -#usr/include/c++/4.9.4/cerrno -#usr/include/c++/4.9.4/cfenv -#usr/include/c++/4.9.4/cfloat -#usr/include/c++/4.9.4/chrono -#usr/include/c++/4.9.4/cinttypes -#usr/include/c++/4.9.4/ciso646 -#usr/include/c++/4.9.4/climits -#usr/include/c++/4.9.4/clocale -#usr/include/c++/4.9.4/cmath -#usr/include/c++/4.9.4/complex -#usr/include/c++/4.9.4/complex.h -#usr/include/c++/4.9.4/condition_variable -#usr/include/c++/4.9.4/csetjmp -#usr/include/c++/4.9.4/csignal -#usr/include/c++/4.9.4/cstdalign -#usr/include/c++/4.9.4/cstdarg -#usr/include/c++/4.9.4/cstdbool -#usr/include/c++/4.9.4/cstddef -#usr/include/c++/4.9.4/cstdint -#usr/include/c++/4.9.4/cstdio -#usr/include/c++/4.9.4/cstdlib -#usr/include/c++/4.9.4/cstring -#usr/include/c++/4.9.4/ctgmath -#usr/include/c++/4.9.4/ctime -#usr/include/c++/4.9.4/cwchar -#usr/include/c++/4.9.4/cwctype -#usr/include/c++/4.9.4/cxxabi.h -#usr/include/c++/4.9.4/debug -#usr/include/c++/4.9.4/debug/array -#usr/include/c++/4.9.4/debug/bitset -#usr/include/c++/4.9.4/debug/debug.h -#usr/include/c++/4.9.4/debug/deque -#usr/include/c++/4.9.4/debug/formatter.h -#usr/include/c++/4.9.4/debug/forward_list -#usr/include/c++/4.9.4/debug/functions.h -#usr/include/c++/4.9.4/debug/list -#usr/include/c++/4.9.4/debug/macros.h -#usr/include/c++/4.9.4/debug/map -#usr/include/c++/4.9.4/debug/map.h -#usr/include/c++/4.9.4/debug/multimap.h -#usr/include/c++/4.9.4/debug/multiset.h -#usr/include/c++/4.9.4/debug/safe_base.h -#usr/include/c++/4.9.4/debug/safe_iterator.h -#usr/include/c++/4.9.4/debug/safe_iterator.tcc -#usr/include/c++/4.9.4/debug/safe_local_iterator.h -#usr/include/c++/4.9.4/debug/safe_local_iterator.tcc -#usr/include/c++/4.9.4/debug/safe_sequence.h -#usr/include/c++/4.9.4/debug/safe_sequence.tcc -#usr/include/c++/4.9.4/debug/safe_unordered_base.h -#usr/include/c++/4.9.4/debug/safe_unordered_container.h -#usr/include/c++/4.9.4/debug/safe_unordered_container.tcc -#usr/include/c++/4.9.4/debug/set -#usr/include/c++/4.9.4/debug/set.h -#usr/include/c++/4.9.4/debug/string -#usr/include/c++/4.9.4/debug/unordered_map -#usr/include/c++/4.9.4/debug/unordered_set -#usr/include/c++/4.9.4/debug/vector -#usr/include/c++/4.9.4/decimal -#usr/include/c++/4.9.4/decimal/decimal -#usr/include/c++/4.9.4/decimal/decimal.h -#usr/include/c++/4.9.4/deque -#usr/include/c++/4.9.4/exception -#usr/include/c++/4.9.4/experimental -#usr/include/c++/4.9.4/experimental/optional -#usr/include/c++/4.9.4/experimental/string_view -#usr/include/c++/4.9.4/experimental/string_view.tcc -#usr/include/c++/4.9.4/ext -#usr/include/c++/4.9.4/ext/algorithm -#usr/include/c++/4.9.4/ext/aligned_buffer.h -#usr/include/c++/4.9.4/ext/alloc_traits.h -#usr/include/c++/4.9.4/ext/array_allocator.h -#usr/include/c++/4.9.4/ext/atomicity.h -#usr/include/c++/4.9.4/ext/bitmap_allocator.h -#usr/include/c++/4.9.4/ext/cast.h -#usr/include/c++/4.9.4/ext/cmath -#usr/include/c++/4.9.4/ext/codecvt_specializations.h -#usr/include/c++/4.9.4/ext/concurrence.h -#usr/include/c++/4.9.4/ext/debug_allocator.h -#usr/include/c++/4.9.4/ext/enc_filebuf.h -#usr/include/c++/4.9.4/ext/extptr_allocator.h -#usr/include/c++/4.9.4/ext/functional -#usr/include/c++/4.9.4/ext/hash_map -#usr/include/c++/4.9.4/ext/hash_set -#usr/include/c++/4.9.4/ext/iterator -#usr/include/c++/4.9.4/ext/malloc_allocator.h -#usr/include/c++/4.9.4/ext/memory -#usr/include/c++/4.9.4/ext/mt_allocator.h -#usr/include/c++/4.9.4/ext/new_allocator.h -#usr/include/c++/4.9.4/ext/numeric -#usr/include/c++/4.9.4/ext/numeric_traits.h -#usr/include/c++/4.9.4/ext/pb_ds -#usr/include/c++/4.9.4/ext/pb_ds/assoc_container.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/bin_search_tree_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/entry_pred.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/resize_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/branch_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/branch_policy/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/cond_dealtor.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/container_base_dispatch.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/debug_map_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/eq_by_less.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/lu_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/ov_tree_map_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/priority_queue_base_dispatch.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rb_tree_map_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/node.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/splay_tree_/traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/standard_policies.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_ -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/tree_trace_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/type_utils.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/types_traits.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp -#usr/include/c++/4.9.4/ext/pb_ds/exception.hpp -#usr/include/c++/4.9.4/ext/pb_ds/hash_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/list_update_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/priority_queue.hpp -#usr/include/c++/4.9.4/ext/pb_ds/tag_and_trait.hpp -#usr/include/c++/4.9.4/ext/pb_ds/tree_policy.hpp -#usr/include/c++/4.9.4/ext/pb_ds/trie_policy.hpp -#usr/include/c++/4.9.4/ext/pod_char_traits.h -#usr/include/c++/4.9.4/ext/pointer.h -#usr/include/c++/4.9.4/ext/pool_allocator.h -#usr/include/c++/4.9.4/ext/random -#usr/include/c++/4.9.4/ext/random.tcc -#usr/include/c++/4.9.4/ext/rb_tree -#usr/include/c++/4.9.4/ext/rc_string_base.h -#usr/include/c++/4.9.4/ext/rope -#usr/include/c++/4.9.4/ext/ropeimpl.h -#usr/include/c++/4.9.4/ext/slist -#usr/include/c++/4.9.4/ext/sso_string_base.h -#usr/include/c++/4.9.4/ext/stdio_filebuf.h -#usr/include/c++/4.9.4/ext/stdio_sync_filebuf.h -#usr/include/c++/4.9.4/ext/string_conversions.h -#usr/include/c++/4.9.4/ext/throw_allocator.h -#usr/include/c++/4.9.4/ext/type_traits.h -#usr/include/c++/4.9.4/ext/typelist.h -#usr/include/c++/4.9.4/ext/vstring.h -#usr/include/c++/4.9.4/ext/vstring.tcc -#usr/include/c++/4.9.4/ext/vstring_fwd.h -#usr/include/c++/4.9.4/ext/vstring_util.h -#usr/include/c++/4.9.4/fenv.h -#usr/include/c++/4.9.4/forward_list -#usr/include/c++/4.9.4/fstream -#usr/include/c++/4.9.4/functional -#usr/include/c++/4.9.4/future -#usr/include/c++/4.9.4/i586-pc-linux-gnu -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/atomic_word.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/basic_file.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++allocator.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++config.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++io.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/c++locale.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/cpu_defines.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/ctype_base.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/ctype_inline.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/cxxabi_tweaks.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/error_constants.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/extc++.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-default.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-posix.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr-single.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/gthr.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/messages_members.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/opt_random.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/os_defines.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/stdc++.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/stdtr1c++.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/bits/time_members.h -#usr/include/c++/4.9.4/i586-pc-linux-gnu/ext -#usr/include/c++/4.9.4/i586-pc-linux-gnu/ext/opt_random.h -#usr/include/c++/4.9.4/initializer_list -#usr/include/c++/4.9.4/iomanip -#usr/include/c++/4.9.4/ios -#usr/include/c++/4.9.4/iosfwd -#usr/include/c++/4.9.4/iostream -#usr/include/c++/4.9.4/istream -#usr/include/c++/4.9.4/iterator -#usr/include/c++/4.9.4/limits -#usr/include/c++/4.9.4/list -#usr/include/c++/4.9.4/locale -#usr/include/c++/4.9.4/map -#usr/include/c++/4.9.4/memory -#usr/include/c++/4.9.4/mutex -#usr/include/c++/4.9.4/new -#usr/include/c++/4.9.4/numeric -#usr/include/c++/4.9.4/ostream -#usr/include/c++/4.9.4/parallel -#usr/include/c++/4.9.4/parallel/algo.h -#usr/include/c++/4.9.4/parallel/algobase.h -#usr/include/c++/4.9.4/parallel/algorithm -#usr/include/c++/4.9.4/parallel/algorithmfwd.h -#usr/include/c++/4.9.4/parallel/balanced_quicksort.h -#usr/include/c++/4.9.4/parallel/base.h -#usr/include/c++/4.9.4/parallel/basic_iterator.h -#usr/include/c++/4.9.4/parallel/checkers.h -#usr/include/c++/4.9.4/parallel/compatibility.h -#usr/include/c++/4.9.4/parallel/compiletime_settings.h -#usr/include/c++/4.9.4/parallel/equally_split.h -#usr/include/c++/4.9.4/parallel/features.h -#usr/include/c++/4.9.4/parallel/find.h -#usr/include/c++/4.9.4/parallel/find_selectors.h -#usr/include/c++/4.9.4/parallel/for_each.h -#usr/include/c++/4.9.4/parallel/for_each_selectors.h -#usr/include/c++/4.9.4/parallel/iterator.h -#usr/include/c++/4.9.4/parallel/list_partition.h -#usr/include/c++/4.9.4/parallel/losertree.h -#usr/include/c++/4.9.4/parallel/merge.h -#usr/include/c++/4.9.4/parallel/multiseq_selection.h -#usr/include/c++/4.9.4/parallel/multiway_merge.h -#usr/include/c++/4.9.4/parallel/multiway_mergesort.h -#usr/include/c++/4.9.4/parallel/numeric -#usr/include/c++/4.9.4/parallel/numericfwd.h -#usr/include/c++/4.9.4/parallel/omp_loop.h -#usr/include/c++/4.9.4/parallel/omp_loop_static.h -#usr/include/c++/4.9.4/parallel/par_loop.h -#usr/include/c++/4.9.4/parallel/parallel.h -#usr/include/c++/4.9.4/parallel/partial_sum.h -#usr/include/c++/4.9.4/parallel/partition.h -#usr/include/c++/4.9.4/parallel/queue.h -#usr/include/c++/4.9.4/parallel/quicksort.h -#usr/include/c++/4.9.4/parallel/random_number.h -#usr/include/c++/4.9.4/parallel/random_shuffle.h -#usr/include/c++/4.9.4/parallel/search.h -#usr/include/c++/4.9.4/parallel/set_operations.h -#usr/include/c++/4.9.4/parallel/settings.h -#usr/include/c++/4.9.4/parallel/sort.h -#usr/include/c++/4.9.4/parallel/tags.h -#usr/include/c++/4.9.4/parallel/types.h -#usr/include/c++/4.9.4/parallel/unique_copy.h -#usr/include/c++/4.9.4/parallel/workstealing.h -#usr/include/c++/4.9.4/profile -#usr/include/c++/4.9.4/profile/array -#usr/include/c++/4.9.4/profile/base.h -#usr/include/c++/4.9.4/profile/bitset -#usr/include/c++/4.9.4/profile/deque -#usr/include/c++/4.9.4/profile/forward_list -#usr/include/c++/4.9.4/profile/impl -#usr/include/c++/4.9.4/profile/impl/profiler.h -#usr/include/c++/4.9.4/profile/impl/profiler_algos.h -#usr/include/c++/4.9.4/profile/impl/profiler_container_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_hash_func.h -#usr/include/c++/4.9.4/profile/impl/profiler_hashtable_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_list_to_slist.h -#usr/include/c++/4.9.4/profile/impl/profiler_list_to_vector.h -#usr/include/c++/4.9.4/profile/impl/profiler_map_to_unordered_map.h -#usr/include/c++/4.9.4/profile/impl/profiler_node.h -#usr/include/c++/4.9.4/profile/impl/profiler_state.h -#usr/include/c++/4.9.4/profile/impl/profiler_trace.h -#usr/include/c++/4.9.4/profile/impl/profiler_vector_size.h -#usr/include/c++/4.9.4/profile/impl/profiler_vector_to_list.h -#usr/include/c++/4.9.4/profile/iterator_tracker.h -#usr/include/c++/4.9.4/profile/list -#usr/include/c++/4.9.4/profile/map -#usr/include/c++/4.9.4/profile/map.h -#usr/include/c++/4.9.4/profile/multimap.h -#usr/include/c++/4.9.4/profile/multiset.h -#usr/include/c++/4.9.4/profile/set -#usr/include/c++/4.9.4/profile/set.h -#usr/include/c++/4.9.4/profile/unordered_base.h -#usr/include/c++/4.9.4/profile/unordered_map -#usr/include/c++/4.9.4/profile/unordered_set -#usr/include/c++/4.9.4/profile/vector -#usr/include/c++/4.9.4/queue -#usr/include/c++/4.9.4/random -#usr/include/c++/4.9.4/ratio -#usr/include/c++/4.9.4/regex -#usr/include/c++/4.9.4/scoped_allocator -#usr/include/c++/4.9.4/set -#usr/include/c++/4.9.4/shared_mutex -#usr/include/c++/4.9.4/sstream -#usr/include/c++/4.9.4/stack -#usr/include/c++/4.9.4/stdexcept -#usr/include/c++/4.9.4/streambuf -#usr/include/c++/4.9.4/string -#usr/include/c++/4.9.4/system_error -#usr/include/c++/4.9.4/tgmath.h -#usr/include/c++/4.9.4/thread -#usr/include/c++/4.9.4/tr1 -#usr/include/c++/4.9.4/tr1/array -#usr/include/c++/4.9.4/tr1/bessel_function.tcc -#usr/include/c++/4.9.4/tr1/beta_function.tcc -#usr/include/c++/4.9.4/tr1/ccomplex -#usr/include/c++/4.9.4/tr1/cctype -#usr/include/c++/4.9.4/tr1/cfenv -#usr/include/c++/4.9.4/tr1/cfloat -#usr/include/c++/4.9.4/tr1/cinttypes -#usr/include/c++/4.9.4/tr1/climits -#usr/include/c++/4.9.4/tr1/cmath -#usr/include/c++/4.9.4/tr1/complex -#usr/include/c++/4.9.4/tr1/complex.h -#usr/include/c++/4.9.4/tr1/cstdarg -#usr/include/c++/4.9.4/tr1/cstdbool -#usr/include/c++/4.9.4/tr1/cstdint -#usr/include/c++/4.9.4/tr1/cstdio -#usr/include/c++/4.9.4/tr1/cstdlib -#usr/include/c++/4.9.4/tr1/ctgmath -#usr/include/c++/4.9.4/tr1/ctime -#usr/include/c++/4.9.4/tr1/ctype.h -#usr/include/c++/4.9.4/tr1/cwchar -#usr/include/c++/4.9.4/tr1/cwctype -#usr/include/c++/4.9.4/tr1/ell_integral.tcc -#usr/include/c++/4.9.4/tr1/exp_integral.tcc -#usr/include/c++/4.9.4/tr1/fenv.h -#usr/include/c++/4.9.4/tr1/float.h -#usr/include/c++/4.9.4/tr1/functional -#usr/include/c++/4.9.4/tr1/functional_hash.h -#usr/include/c++/4.9.4/tr1/gamma.tcc -#usr/include/c++/4.9.4/tr1/hashtable.h -#usr/include/c++/4.9.4/tr1/hashtable_policy.h -#usr/include/c++/4.9.4/tr1/hypergeometric.tcc -#usr/include/c++/4.9.4/tr1/inttypes.h -#usr/include/c++/4.9.4/tr1/legendre_function.tcc -#usr/include/c++/4.9.4/tr1/limits.h -#usr/include/c++/4.9.4/tr1/math.h -#usr/include/c++/4.9.4/tr1/memory -#usr/include/c++/4.9.4/tr1/modified_bessel_func.tcc -#usr/include/c++/4.9.4/tr1/poly_hermite.tcc -#usr/include/c++/4.9.4/tr1/poly_laguerre.tcc -#usr/include/c++/4.9.4/tr1/random -#usr/include/c++/4.9.4/tr1/random.h -#usr/include/c++/4.9.4/tr1/random.tcc -#usr/include/c++/4.9.4/tr1/regex -#usr/include/c++/4.9.4/tr1/riemann_zeta.tcc -#usr/include/c++/4.9.4/tr1/shared_ptr.h -#usr/include/c++/4.9.4/tr1/special_function_util.h -#usr/include/c++/4.9.4/tr1/stdarg.h -#usr/include/c++/4.9.4/tr1/stdbool.h -#usr/include/c++/4.9.4/tr1/stdint.h -#usr/include/c++/4.9.4/tr1/stdio.h -#usr/include/c++/4.9.4/tr1/stdlib.h -#usr/include/c++/4.9.4/tr1/tgmath.h -#usr/include/c++/4.9.4/tr1/tuple -#usr/include/c++/4.9.4/tr1/type_traits -#usr/include/c++/4.9.4/tr1/unordered_map -#usr/include/c++/4.9.4/tr1/unordered_map.h -#usr/include/c++/4.9.4/tr1/unordered_set -#usr/include/c++/4.9.4/tr1/unordered_set.h -#usr/include/c++/4.9.4/tr1/utility -#usr/include/c++/4.9.4/tr1/wchar.h -#usr/include/c++/4.9.4/tr1/wctype.h -#usr/include/c++/4.9.4/tr2 -#usr/include/c++/4.9.4/tr2/bool_set -#usr/include/c++/4.9.4/tr2/bool_set.tcc -#usr/include/c++/4.9.4/tr2/dynamic_bitset -#usr/include/c++/4.9.4/tr2/dynamic_bitset.tcc -#usr/include/c++/4.9.4/tr2/ratio -#usr/include/c++/4.9.4/tr2/type_traits -#usr/include/c++/4.9.4/tuple -#usr/include/c++/4.9.4/type_traits -#usr/include/c++/4.9.4/typeindex -#usr/include/c++/4.9.4/typeinfo -#usr/include/c++/4.9.4/unordered_map -#usr/include/c++/4.9.4/unordered_set -#usr/include/c++/4.9.4/utility -#usr/include/c++/4.9.4/valarray -#usr/include/c++/4.9.4/vector +#usr/include/c++/6.3.0 +#usr/include/c++/6.3.0/algorithm +#usr/include/c++/6.3.0/array +#usr/include/c++/6.3.0/atomic +#usr/include/c++/6.3.0/backward +#usr/include/c++/6.3.0/backward/auto_ptr.h +#usr/include/c++/6.3.0/backward/backward_warning.h +#usr/include/c++/6.3.0/backward/binders.h +#usr/include/c++/6.3.0/backward/hash_fun.h +#usr/include/c++/6.3.0/backward/hash_map +#usr/include/c++/6.3.0/backward/hash_set +#usr/include/c++/6.3.0/backward/hashtable.h +#usr/include/c++/6.3.0/backward/strstream +#usr/include/c++/6.3.0/bits +#usr/include/c++/6.3.0/bits/algorithmfwd.h +#usr/include/c++/6.3.0/bits/alloc_traits.h +#usr/include/c++/6.3.0/bits/allocated_ptr.h +#usr/include/c++/6.3.0/bits/allocator.h +#usr/include/c++/6.3.0/bits/atomic_base.h +#usr/include/c++/6.3.0/bits/atomic_futex.h +#usr/include/c++/6.3.0/bits/atomic_lockfree_defines.h +#usr/include/c++/6.3.0/bits/basic_ios.h +#usr/include/c++/6.3.0/bits/basic_ios.tcc +#usr/include/c++/6.3.0/bits/basic_string.h +#usr/include/c++/6.3.0/bits/basic_string.tcc +#usr/include/c++/6.3.0/bits/boost_concept_check.h +#usr/include/c++/6.3.0/bits/c++0x_warning.h +#usr/include/c++/6.3.0/bits/c++14_warning.h +#usr/include/c++/6.3.0/bits/char_traits.h +#usr/include/c++/6.3.0/bits/codecvt.h +#usr/include/c++/6.3.0/bits/concept_check.h +#usr/include/c++/6.3.0/bits/cpp_type_traits.h +#usr/include/c++/6.3.0/bits/cxxabi_forced.h +#usr/include/c++/6.3.0/bits/deque.tcc +#usr/include/c++/6.3.0/bits/enable_special_members.h +#usr/include/c++/6.3.0/bits/exception_defines.h +#usr/include/c++/6.3.0/bits/exception_ptr.h +#usr/include/c++/6.3.0/bits/forward_list.h +#usr/include/c++/6.3.0/bits/forward_list.tcc +#usr/include/c++/6.3.0/bits/fstream.tcc +#usr/include/c++/6.3.0/bits/functexcept.h +#usr/include/c++/6.3.0/bits/functional_hash.h +#usr/include/c++/6.3.0/bits/gslice.h +#usr/include/c++/6.3.0/bits/gslice_array.h +#usr/include/c++/6.3.0/bits/hash_bytes.h +#usr/include/c++/6.3.0/bits/hashtable.h +#usr/include/c++/6.3.0/bits/hashtable_policy.h +#usr/include/c++/6.3.0/bits/indirect_array.h +#usr/include/c++/6.3.0/bits/ios_base.h +#usr/include/c++/6.3.0/bits/istream.tcc +#usr/include/c++/6.3.0/bits/list.tcc +#usr/include/c++/6.3.0/bits/locale_classes.h +#usr/include/c++/6.3.0/bits/locale_classes.tcc +#usr/include/c++/6.3.0/bits/locale_conv.h +#usr/include/c++/6.3.0/bits/locale_facets.h +#usr/include/c++/6.3.0/bits/locale_facets.tcc +#usr/include/c++/6.3.0/bits/locale_facets_nonio.h +#usr/include/c++/6.3.0/bits/locale_facets_nonio.tcc +#usr/include/c++/6.3.0/bits/localefwd.h +#usr/include/c++/6.3.0/bits/mask_array.h +#usr/include/c++/6.3.0/bits/memoryfwd.h +#usr/include/c++/6.3.0/bits/move.h +#usr/include/c++/6.3.0/bits/nested_exception.h +#usr/include/c++/6.3.0/bits/ostream.tcc +#usr/include/c++/6.3.0/bits/ostream_insert.h +#usr/include/c++/6.3.0/bits/parse_numbers.h +#usr/include/c++/6.3.0/bits/postypes.h +#usr/include/c++/6.3.0/bits/predefined_ops.h +#usr/include/c++/6.3.0/bits/ptr_traits.h +#usr/include/c++/6.3.0/bits/quoted_string.h +#usr/include/c++/6.3.0/bits/random.h +#usr/include/c++/6.3.0/bits/random.tcc +#usr/include/c++/6.3.0/bits/range_access.h +#usr/include/c++/6.3.0/bits/regex.h +#usr/include/c++/6.3.0/bits/regex.tcc +#usr/include/c++/6.3.0/bits/regex_automaton.h +#usr/include/c++/6.3.0/bits/regex_automaton.tcc +#usr/include/c++/6.3.0/bits/regex_compiler.h +#usr/include/c++/6.3.0/bits/regex_compiler.tcc +#usr/include/c++/6.3.0/bits/regex_constants.h +#usr/include/c++/6.3.0/bits/regex_error.h +#usr/include/c++/6.3.0/bits/regex_executor.h +#usr/include/c++/6.3.0/bits/regex_executor.tcc +#usr/include/c++/6.3.0/bits/regex_scanner.h +#usr/include/c++/6.3.0/bits/regex_scanner.tcc +#usr/include/c++/6.3.0/bits/shared_ptr.h +#usr/include/c++/6.3.0/bits/shared_ptr_atomic.h +#usr/include/c++/6.3.0/bits/shared_ptr_base.h +#usr/include/c++/6.3.0/bits/slice_array.h +#usr/include/c++/6.3.0/bits/specfun.h +#usr/include/c++/6.3.0/bits/sstream.tcc +#usr/include/c++/6.3.0/bits/std_mutex.h +#usr/include/c++/6.3.0/bits/stl_algo.h +#usr/include/c++/6.3.0/bits/stl_algobase.h +#usr/include/c++/6.3.0/bits/stl_bvector.h +#usr/include/c++/6.3.0/bits/stl_construct.h +#usr/include/c++/6.3.0/bits/stl_deque.h +#usr/include/c++/6.3.0/bits/stl_function.h +#usr/include/c++/6.3.0/bits/stl_heap.h +#usr/include/c++/6.3.0/bits/stl_iterator.h +#usr/include/c++/6.3.0/bits/stl_iterator_base_funcs.h +#usr/include/c++/6.3.0/bits/stl_iterator_base_types.h +#usr/include/c++/6.3.0/bits/stl_list.h +#usr/include/c++/6.3.0/bits/stl_map.h +#usr/include/c++/6.3.0/bits/stl_multimap.h +#usr/include/c++/6.3.0/bits/stl_multiset.h +#usr/include/c++/6.3.0/bits/stl_numeric.h +#usr/include/c++/6.3.0/bits/stl_pair.h +#usr/include/c++/6.3.0/bits/stl_queue.h +#usr/include/c++/6.3.0/bits/stl_raw_storage_iter.h +#usr/include/c++/6.3.0/bits/stl_relops.h +#usr/include/c++/6.3.0/bits/stl_set.h +#usr/include/c++/6.3.0/bits/stl_stack.h +#usr/include/c++/6.3.0/bits/stl_tempbuf.h +#usr/include/c++/6.3.0/bits/stl_tree.h +#usr/include/c++/6.3.0/bits/stl_uninitialized.h +#usr/include/c++/6.3.0/bits/stl_vector.h +#usr/include/c++/6.3.0/bits/stream_iterator.h +#usr/include/c++/6.3.0/bits/streambuf.tcc +#usr/include/c++/6.3.0/bits/streambuf_iterator.h +#usr/include/c++/6.3.0/bits/stringfwd.h +#usr/include/c++/6.3.0/bits/uniform_int_dist.h +#usr/include/c++/6.3.0/bits/unique_ptr.h +#usr/include/c++/6.3.0/bits/unordered_map.h +#usr/include/c++/6.3.0/bits/unordered_set.h +#usr/include/c++/6.3.0/bits/uses_allocator.h +#usr/include/c++/6.3.0/bits/valarray_after.h +#usr/include/c++/6.3.0/bits/valarray_array.h +#usr/include/c++/6.3.0/bits/valarray_array.tcc +#usr/include/c++/6.3.0/bits/valarray_before.h +#usr/include/c++/6.3.0/bits/vector.tcc +#usr/include/c++/6.3.0/bitset +#usr/include/c++/6.3.0/cassert +#usr/include/c++/6.3.0/ccomplex +#usr/include/c++/6.3.0/cctype +#usr/include/c++/6.3.0/cerrno +#usr/include/c++/6.3.0/cfenv +#usr/include/c++/6.3.0/cfloat +#usr/include/c++/6.3.0/chrono +#usr/include/c++/6.3.0/cinttypes +#usr/include/c++/6.3.0/ciso646 +#usr/include/c++/6.3.0/climits +#usr/include/c++/6.3.0/clocale +#usr/include/c++/6.3.0/cmath +#usr/include/c++/6.3.0/codecvt +#usr/include/c++/6.3.0/complex +#usr/include/c++/6.3.0/complex.h +#usr/include/c++/6.3.0/condition_variable +#usr/include/c++/6.3.0/csetjmp +#usr/include/c++/6.3.0/csignal +#usr/include/c++/6.3.0/cstdalign +#usr/include/c++/6.3.0/cstdarg +#usr/include/c++/6.3.0/cstdbool +#usr/include/c++/6.3.0/cstddef +#usr/include/c++/6.3.0/cstdint +#usr/include/c++/6.3.0/cstdio +#usr/include/c++/6.3.0/cstdlib +#usr/include/c++/6.3.0/cstring +#usr/include/c++/6.3.0/ctgmath +#usr/include/c++/6.3.0/ctime +#usr/include/c++/6.3.0/cuchar +#usr/include/c++/6.3.0/cwchar +#usr/include/c++/6.3.0/cwctype +#usr/include/c++/6.3.0/cxxabi.h +#usr/include/c++/6.3.0/debug +#usr/include/c++/6.3.0/debug/array +#usr/include/c++/6.3.0/debug/assertions.h +#usr/include/c++/6.3.0/debug/bitset +#usr/include/c++/6.3.0/debug/debug.h +#usr/include/c++/6.3.0/debug/deque +#usr/include/c++/6.3.0/debug/formatter.h +#usr/include/c++/6.3.0/debug/forward_list +#usr/include/c++/6.3.0/debug/functions.h +#usr/include/c++/6.3.0/debug/helper_functions.h +#usr/include/c++/6.3.0/debug/list +#usr/include/c++/6.3.0/debug/macros.h +#usr/include/c++/6.3.0/debug/map +#usr/include/c++/6.3.0/debug/map.h +#usr/include/c++/6.3.0/debug/multimap.h +#usr/include/c++/6.3.0/debug/multiset.h +#usr/include/c++/6.3.0/debug/safe_base.h +#usr/include/c++/6.3.0/debug/safe_container.h +#usr/include/c++/6.3.0/debug/safe_iterator.h +#usr/include/c++/6.3.0/debug/safe_iterator.tcc +#usr/include/c++/6.3.0/debug/safe_local_iterator.h +#usr/include/c++/6.3.0/debug/safe_local_iterator.tcc +#usr/include/c++/6.3.0/debug/safe_sequence.h +#usr/include/c++/6.3.0/debug/safe_sequence.tcc +#usr/include/c++/6.3.0/debug/safe_unordered_base.h +#usr/include/c++/6.3.0/debug/safe_unordered_container.h +#usr/include/c++/6.3.0/debug/safe_unordered_container.tcc +#usr/include/c++/6.3.0/debug/set +#usr/include/c++/6.3.0/debug/set.h +#usr/include/c++/6.3.0/debug/stl_iterator.h +#usr/include/c++/6.3.0/debug/string +#usr/include/c++/6.3.0/debug/unordered_map +#usr/include/c++/6.3.0/debug/unordered_set +#usr/include/c++/6.3.0/debug/vector +#usr/include/c++/6.3.0/decimal +#usr/include/c++/6.3.0/decimal/decimal +#usr/include/c++/6.3.0/decimal/decimal.h +#usr/include/c++/6.3.0/deque +#usr/include/c++/6.3.0/exception +#usr/include/c++/6.3.0/experimental +#usr/include/c++/6.3.0/experimental/algorithm +#usr/include/c++/6.3.0/experimental/any +#usr/include/c++/6.3.0/experimental/array +#usr/include/c++/6.3.0/experimental/bits +#usr/include/c++/6.3.0/experimental/bits/erase_if.h +#usr/include/c++/6.3.0/experimental/bits/fs_dir.h +#usr/include/c++/6.3.0/experimental/bits/fs_fwd.h +#usr/include/c++/6.3.0/experimental/bits/fs_ops.h +#usr/include/c++/6.3.0/experimental/bits/fs_path.h +#usr/include/c++/6.3.0/experimental/bits/lfts_config.h +#usr/include/c++/6.3.0/experimental/bits/shared_ptr.h +#usr/include/c++/6.3.0/experimental/bits/string_view.tcc +#usr/include/c++/6.3.0/experimental/chrono +#usr/include/c++/6.3.0/experimental/deque +#usr/include/c++/6.3.0/experimental/filesystem +#usr/include/c++/6.3.0/experimental/forward_list +#usr/include/c++/6.3.0/experimental/functional +#usr/include/c++/6.3.0/experimental/iterator +#usr/include/c++/6.3.0/experimental/list +#usr/include/c++/6.3.0/experimental/map +#usr/include/c++/6.3.0/experimental/memory +#usr/include/c++/6.3.0/experimental/memory_resource +#usr/include/c++/6.3.0/experimental/numeric +#usr/include/c++/6.3.0/experimental/optional +#usr/include/c++/6.3.0/experimental/propagate_const +#usr/include/c++/6.3.0/experimental/random +#usr/include/c++/6.3.0/experimental/ratio +#usr/include/c++/6.3.0/experimental/regex +#usr/include/c++/6.3.0/experimental/set +#usr/include/c++/6.3.0/experimental/string +#usr/include/c++/6.3.0/experimental/string_view +#usr/include/c++/6.3.0/experimental/system_error +#usr/include/c++/6.3.0/experimental/tuple +#usr/include/c++/6.3.0/experimental/type_traits +#usr/include/c++/6.3.0/experimental/unordered_map +#usr/include/c++/6.3.0/experimental/unordered_set +#usr/include/c++/6.3.0/experimental/utility +#usr/include/c++/6.3.0/experimental/vector +#usr/include/c++/6.3.0/ext +#usr/include/c++/6.3.0/ext/algorithm +#usr/include/c++/6.3.0/ext/aligned_buffer.h +#usr/include/c++/6.3.0/ext/alloc_traits.h +#usr/include/c++/6.3.0/ext/array_allocator.h +#usr/include/c++/6.3.0/ext/atomicity.h +#usr/include/c++/6.3.0/ext/bitmap_allocator.h +#usr/include/c++/6.3.0/ext/cast.h +#usr/include/c++/6.3.0/ext/cmath +#usr/include/c++/6.3.0/ext/codecvt_specializations.h +#usr/include/c++/6.3.0/ext/concurrence.h +#usr/include/c++/6.3.0/ext/debug_allocator.h +#usr/include/c++/6.3.0/ext/enc_filebuf.h +#usr/include/c++/6.3.0/ext/extptr_allocator.h +#usr/include/c++/6.3.0/ext/functional +#usr/include/c++/6.3.0/ext/hash_map +#usr/include/c++/6.3.0/ext/hash_set +#usr/include/c++/6.3.0/ext/iterator +#usr/include/c++/6.3.0/ext/malloc_allocator.h +#usr/include/c++/6.3.0/ext/memory +#usr/include/c++/6.3.0/ext/mt_allocator.h +#usr/include/c++/6.3.0/ext/new_allocator.h +#usr/include/c++/6.3.0/ext/numeric +#usr/include/c++/6.3.0/ext/numeric_traits.h +#usr/include/c++/6.3.0/ext/pb_ds +#usr/include/c++/6.3.0/ext/pb_ds/assoc_container.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/bin_search_tree_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/branch_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/branch_policy/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/cond_dealtor.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/container_base_dispatch.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/debug_map_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/ov_tree_map_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rb_tree_map_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/node.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/splay_tree_/traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/standard_policies.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_ +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/tree_trace_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/type_utils.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/types_traits.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +#usr/include/c++/6.3.0/ext/pb_ds/exception.hpp +#usr/include/c++/6.3.0/ext/pb_ds/hash_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/list_update_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/priority_queue.hpp +#usr/include/c++/6.3.0/ext/pb_ds/tag_and_trait.hpp +#usr/include/c++/6.3.0/ext/pb_ds/tree_policy.hpp +#usr/include/c++/6.3.0/ext/pb_ds/trie_policy.hpp +#usr/include/c++/6.3.0/ext/pod_char_traits.h +#usr/include/c++/6.3.0/ext/pointer.h +#usr/include/c++/6.3.0/ext/pool_allocator.h +#usr/include/c++/6.3.0/ext/random +#usr/include/c++/6.3.0/ext/random.tcc +#usr/include/c++/6.3.0/ext/rb_tree +#usr/include/c++/6.3.0/ext/rc_string_base.h +#usr/include/c++/6.3.0/ext/rope +#usr/include/c++/6.3.0/ext/ropeimpl.h +#usr/include/c++/6.3.0/ext/slist +#usr/include/c++/6.3.0/ext/sso_string_base.h +#usr/include/c++/6.3.0/ext/stdio_filebuf.h +#usr/include/c++/6.3.0/ext/stdio_sync_filebuf.h +#usr/include/c++/6.3.0/ext/string_conversions.h +#usr/include/c++/6.3.0/ext/throw_allocator.h +#usr/include/c++/6.3.0/ext/type_traits.h +#usr/include/c++/6.3.0/ext/typelist.h +#usr/include/c++/6.3.0/ext/vstring.h +#usr/include/c++/6.3.0/ext/vstring.tcc +#usr/include/c++/6.3.0/ext/vstring_fwd.h +#usr/include/c++/6.3.0/ext/vstring_util.h +#usr/include/c++/6.3.0/fenv.h +#usr/include/c++/6.3.0/forward_list +#usr/include/c++/6.3.0/fstream +#usr/include/c++/6.3.0/functional +#usr/include/c++/6.3.0/future +#usr/include/c++/6.3.0/i586-pc-linux-gnu +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/atomic_word.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/basic_file.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/c++allocator.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/c++config.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/c++io.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/c++locale.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/cpu_defines.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/ctype_base.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/ctype_inline.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/cxxabi_tweaks.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/error_constants.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/extc++.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/gthr-default.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/gthr-posix.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/gthr-single.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/gthr.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/messages_members.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/opt_random.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/os_defines.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/stdc++.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/stdtr1c++.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/bits/time_members.h +#usr/include/c++/6.3.0/i586-pc-linux-gnu/ext +#usr/include/c++/6.3.0/i586-pc-linux-gnu/ext/opt_random.h +#usr/include/c++/6.3.0/initializer_list +#usr/include/c++/6.3.0/iomanip +#usr/include/c++/6.3.0/ios +#usr/include/c++/6.3.0/iosfwd +#usr/include/c++/6.3.0/iostream +#usr/include/c++/6.3.0/istream +#usr/include/c++/6.3.0/iterator +#usr/include/c++/6.3.0/limits +#usr/include/c++/6.3.0/list +#usr/include/c++/6.3.0/locale +#usr/include/c++/6.3.0/map +#usr/include/c++/6.3.0/math.h +#usr/include/c++/6.3.0/memory +#usr/include/c++/6.3.0/mutex +#usr/include/c++/6.3.0/new +#usr/include/c++/6.3.0/numeric +#usr/include/c++/6.3.0/ostream +#usr/include/c++/6.3.0/parallel +#usr/include/c++/6.3.0/parallel/algo.h +#usr/include/c++/6.3.0/parallel/algobase.h +#usr/include/c++/6.3.0/parallel/algorithm +#usr/include/c++/6.3.0/parallel/algorithmfwd.h +#usr/include/c++/6.3.0/parallel/balanced_quicksort.h +#usr/include/c++/6.3.0/parallel/base.h +#usr/include/c++/6.3.0/parallel/basic_iterator.h +#usr/include/c++/6.3.0/parallel/checkers.h +#usr/include/c++/6.3.0/parallel/compatibility.h +#usr/include/c++/6.3.0/parallel/compiletime_settings.h +#usr/include/c++/6.3.0/parallel/equally_split.h +#usr/include/c++/6.3.0/parallel/features.h +#usr/include/c++/6.3.0/parallel/find.h +#usr/include/c++/6.3.0/parallel/find_selectors.h +#usr/include/c++/6.3.0/parallel/for_each.h +#usr/include/c++/6.3.0/parallel/for_each_selectors.h +#usr/include/c++/6.3.0/parallel/iterator.h +#usr/include/c++/6.3.0/parallel/list_partition.h +#usr/include/c++/6.3.0/parallel/losertree.h +#usr/include/c++/6.3.0/parallel/merge.h +#usr/include/c++/6.3.0/parallel/multiseq_selection.h +#usr/include/c++/6.3.0/parallel/multiway_merge.h +#usr/include/c++/6.3.0/parallel/multiway_mergesort.h +#usr/include/c++/6.3.0/parallel/numeric +#usr/include/c++/6.3.0/parallel/numericfwd.h +#usr/include/c++/6.3.0/parallel/omp_loop.h +#usr/include/c++/6.3.0/parallel/omp_loop_static.h +#usr/include/c++/6.3.0/parallel/par_loop.h +#usr/include/c++/6.3.0/parallel/parallel.h +#usr/include/c++/6.3.0/parallel/partial_sum.h +#usr/include/c++/6.3.0/parallel/partition.h +#usr/include/c++/6.3.0/parallel/queue.h +#usr/include/c++/6.3.0/parallel/quicksort.h +#usr/include/c++/6.3.0/parallel/random_number.h +#usr/include/c++/6.3.0/parallel/random_shuffle.h +#usr/include/c++/6.3.0/parallel/search.h +#usr/include/c++/6.3.0/parallel/set_operations.h +#usr/include/c++/6.3.0/parallel/settings.h +#usr/include/c++/6.3.0/parallel/sort.h +#usr/include/c++/6.3.0/parallel/tags.h +#usr/include/c++/6.3.0/parallel/types.h +#usr/include/c++/6.3.0/parallel/unique_copy.h +#usr/include/c++/6.3.0/parallel/workstealing.h +#usr/include/c++/6.3.0/profile +#usr/include/c++/6.3.0/profile/array +#usr/include/c++/6.3.0/profile/base.h +#usr/include/c++/6.3.0/profile/bitset +#usr/include/c++/6.3.0/profile/deque +#usr/include/c++/6.3.0/profile/forward_list +#usr/include/c++/6.3.0/profile/impl +#usr/include/c++/6.3.0/profile/impl/profiler.h +#usr/include/c++/6.3.0/profile/impl/profiler_algos.h +#usr/include/c++/6.3.0/profile/impl/profiler_container_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_hash_func.h +#usr/include/c++/6.3.0/profile/impl/profiler_hashtable_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_list_to_slist.h +#usr/include/c++/6.3.0/profile/impl/profiler_list_to_vector.h +#usr/include/c++/6.3.0/profile/impl/profiler_map_to_unordered_map.h +#usr/include/c++/6.3.0/profile/impl/profiler_node.h +#usr/include/c++/6.3.0/profile/impl/profiler_state.h +#usr/include/c++/6.3.0/profile/impl/profiler_trace.h +#usr/include/c++/6.3.0/profile/impl/profiler_vector_size.h +#usr/include/c++/6.3.0/profile/impl/profiler_vector_to_list.h +#usr/include/c++/6.3.0/profile/iterator_tracker.h +#usr/include/c++/6.3.0/profile/list +#usr/include/c++/6.3.0/profile/map +#usr/include/c++/6.3.0/profile/map.h +#usr/include/c++/6.3.0/profile/multimap.h +#usr/include/c++/6.3.0/profile/multiset.h +#usr/include/c++/6.3.0/profile/ordered_base.h +#usr/include/c++/6.3.0/profile/set +#usr/include/c++/6.3.0/profile/set.h +#usr/include/c++/6.3.0/profile/unordered_base.h +#usr/include/c++/6.3.0/profile/unordered_map +#usr/include/c++/6.3.0/profile/unordered_set +#usr/include/c++/6.3.0/profile/vector +#usr/include/c++/6.3.0/queue +#usr/include/c++/6.3.0/random +#usr/include/c++/6.3.0/ratio +#usr/include/c++/6.3.0/regex +#usr/include/c++/6.3.0/scoped_allocator +#usr/include/c++/6.3.0/set +#usr/include/c++/6.3.0/shared_mutex +#usr/include/c++/6.3.0/sstream +#usr/include/c++/6.3.0/stack +#usr/include/c++/6.3.0/stdexcept +#usr/include/c++/6.3.0/stdlib.h +#usr/include/c++/6.3.0/streambuf +#usr/include/c++/6.3.0/string +#usr/include/c++/6.3.0/system_error +#usr/include/c++/6.3.0/tgmath.h +#usr/include/c++/6.3.0/thread +#usr/include/c++/6.3.0/tr1 +#usr/include/c++/6.3.0/tr1/array +#usr/include/c++/6.3.0/tr1/bessel_function.tcc +#usr/include/c++/6.3.0/tr1/beta_function.tcc +#usr/include/c++/6.3.0/tr1/ccomplex +#usr/include/c++/6.3.0/tr1/cctype +#usr/include/c++/6.3.0/tr1/cfenv +#usr/include/c++/6.3.0/tr1/cfloat +#usr/include/c++/6.3.0/tr1/cinttypes +#usr/include/c++/6.3.0/tr1/climits +#usr/include/c++/6.3.0/tr1/cmath +#usr/include/c++/6.3.0/tr1/complex +#usr/include/c++/6.3.0/tr1/complex.h +#usr/include/c++/6.3.0/tr1/cstdarg +#usr/include/c++/6.3.0/tr1/cstdbool +#usr/include/c++/6.3.0/tr1/cstdint +#usr/include/c++/6.3.0/tr1/cstdio +#usr/include/c++/6.3.0/tr1/cstdlib +#usr/include/c++/6.3.0/tr1/ctgmath +#usr/include/c++/6.3.0/tr1/ctime +#usr/include/c++/6.3.0/tr1/ctype.h +#usr/include/c++/6.3.0/tr1/cwchar +#usr/include/c++/6.3.0/tr1/cwctype +#usr/include/c++/6.3.0/tr1/ell_integral.tcc +#usr/include/c++/6.3.0/tr1/exp_integral.tcc +#usr/include/c++/6.3.0/tr1/fenv.h +#usr/include/c++/6.3.0/tr1/float.h +#usr/include/c++/6.3.0/tr1/functional +#usr/include/c++/6.3.0/tr1/functional_hash.h +#usr/include/c++/6.3.0/tr1/gamma.tcc +#usr/include/c++/6.3.0/tr1/hashtable.h +#usr/include/c++/6.3.0/tr1/hashtable_policy.h +#usr/include/c++/6.3.0/tr1/hypergeometric.tcc +#usr/include/c++/6.3.0/tr1/inttypes.h +#usr/include/c++/6.3.0/tr1/legendre_function.tcc +#usr/include/c++/6.3.0/tr1/limits.h +#usr/include/c++/6.3.0/tr1/math.h +#usr/include/c++/6.3.0/tr1/memory +#usr/include/c++/6.3.0/tr1/modified_bessel_func.tcc +#usr/include/c++/6.3.0/tr1/poly_hermite.tcc +#usr/include/c++/6.3.0/tr1/poly_laguerre.tcc +#usr/include/c++/6.3.0/tr1/random +#usr/include/c++/6.3.0/tr1/random.h +#usr/include/c++/6.3.0/tr1/random.tcc +#usr/include/c++/6.3.0/tr1/regex +#usr/include/c++/6.3.0/tr1/riemann_zeta.tcc +#usr/include/c++/6.3.0/tr1/shared_ptr.h +#usr/include/c++/6.3.0/tr1/special_function_util.h +#usr/include/c++/6.3.0/tr1/stdarg.h +#usr/include/c++/6.3.0/tr1/stdbool.h +#usr/include/c++/6.3.0/tr1/stdint.h +#usr/include/c++/6.3.0/tr1/stdio.h +#usr/include/c++/6.3.0/tr1/stdlib.h +#usr/include/c++/6.3.0/tr1/tgmath.h +#usr/include/c++/6.3.0/tr1/tuple +#usr/include/c++/6.3.0/tr1/type_traits +#usr/include/c++/6.3.0/tr1/unordered_map +#usr/include/c++/6.3.0/tr1/unordered_map.h +#usr/include/c++/6.3.0/tr1/unordered_set +#usr/include/c++/6.3.0/tr1/unordered_set.h +#usr/include/c++/6.3.0/tr1/utility +#usr/include/c++/6.3.0/tr1/wchar.h +#usr/include/c++/6.3.0/tr1/wctype.h +#usr/include/c++/6.3.0/tr2 +#usr/include/c++/6.3.0/tr2/bool_set +#usr/include/c++/6.3.0/tr2/bool_set.tcc +#usr/include/c++/6.3.0/tr2/dynamic_bitset +#usr/include/c++/6.3.0/tr2/dynamic_bitset.tcc +#usr/include/c++/6.3.0/tr2/ratio +#usr/include/c++/6.3.0/tr2/type_traits +#usr/include/c++/6.3.0/tuple +#usr/include/c++/6.3.0/type_traits +#usr/include/c++/6.3.0/typeindex +#usr/include/c++/6.3.0/typeinfo +#usr/include/c++/6.3.0/unordered_map +#usr/include/c++/6.3.0/unordered_set +#usr/include/c++/6.3.0/utility +#usr/include/c++/6.3.0/valarray +#usr/include/c++/6.3.0/vector #usr/lib/gcc #usr/lib/gcc/i586-pc-linux-gnu -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/cc1 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/cc1plus -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/collect2 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbegin.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbeginS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtbeginT.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtend.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtendS.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtfastmath.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec32.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec64.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/crtprec80.o -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/finclude -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/README -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include-fixed/syslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/adxintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ammintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx2intrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512cdintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512erintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512fintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avx512pfintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/avxintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmi2intrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmiintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/bmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_api.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_api_linux.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_stub.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/cilk_undocumented.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/common.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/holder.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/hyperobject_base.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/metaprogramming.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_file.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_list.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_max.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_min.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_min_max.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opadd.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opand.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opmul.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opor.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_opxor.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_ostream.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cilk/reducer_string.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cpuid.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/cross-stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/emmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/f16cintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/float.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fma4intrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fmaintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/fxsrintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ia32intrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/immintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/iso646.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/lwpintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/lzcntintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mm3dnow.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mm_malloc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/mmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/nmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/omp.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/pmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/popcntintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/prfchwintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/quadmath.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/quadmath_weak.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/rdseedintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/rtmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/asan_interface.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/common_interface_defs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/sanitizer/lsan_interface.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/shaintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/smmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/ssp.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/stdio.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/string.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/ssp/unistd.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdalign.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdarg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdatomic.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdbool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stddef.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdfix.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdint-gcc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdint.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/stdnoreturn.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/tbmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/tmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/unwind.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/varargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/wmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/x86intrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xmmintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xopintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xsaveintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xsaveoptintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/include/xtestintrin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixinc.sh -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixinc_list -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/fixincl -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/gsyslimits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include/README -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/include/limits.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/macro_list -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkheaders -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkheaders.conf -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/install-tools/mkinstalldirs -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcc.a -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcc_eh.a -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/libgcov.a -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.la -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so.0 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/liblto_plugin.so.0.0.0 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/lto-wrapper -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/lto1 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/gengtype -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/gtype.state -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada/gcc-interface -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ada/gcc-interface/ada-tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/alias.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/all-tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/alloc-pool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ansidecl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/attribs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/auto-host.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/b-header-vars -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/basic-block.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/bitmap.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/builtins.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/bversion.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-common.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-common.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-objc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-pragma.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-family/c-pretty-print.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/c-tree.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/calls.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfg-flags.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfgexpand.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfghooks.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cfgloop.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cgraph.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cif-code.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cilk-builtins.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cilkplus.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/dbxelf.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/elfos.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/glibc-stdint.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/gnu-user.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386 -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/att.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user-common.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/gnu-user.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386-opts.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386-protos.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/i386.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/linux-common.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/linux.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/stringop.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/unix.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/i386/x86-tune.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/initfini-array.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux-android.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux-protos.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/linux.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/config/vxworks-dummy.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/configargs.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/context.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/coretypes.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cp-tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cp-tree.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/cxx-pretty-print.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/name-lookup.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cp/type-utils.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cppdefault.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/cpplib.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/debug.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/defaults.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/df.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic-color.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic-core.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/diagnostic.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/double-int.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/dumpfile.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/emit-rtl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/except.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/filenames.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/fixed-value.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/flag-types.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/flags.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/fold-const.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/function.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gcc-plugin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gcc-symtab.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/genrtl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ggc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-builder.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-expr.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-fold.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-iterator.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-low.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-pretty-print.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-ssa.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple-walk.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimple.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimplify-me.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gimplify.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gsstruct.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gtm-builtins.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/gtype-desc.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hard-reg-set.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hash-table.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hashtab.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/highlev-plugin-common.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/hwint.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/incpath.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/input.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-codes.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-constants.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-flags.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-modes.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/insn-notes.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/internal-fn.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/internal-fn.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/intl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-prop.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-ref-inline.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-ref.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-reference.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ipa-utils.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/is-a.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/java -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/java/java-tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/langhooks.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/libiberty.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/line-map.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/machmode.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/md5.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/mode-classes.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/objc -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/objc/objc-tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/obstack.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/omp-builtins.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/options.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/opts.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/output.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/params.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/params.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pass-instances.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pass_manager.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin-api.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin-version.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/plugin.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pointer-set.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/predict.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/predict.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/prefix.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/pretty-print.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/print-rtl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/print-tree.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/real.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/realmpfr.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/reg-notes.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/regset.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/resource.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/rtl.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/rtl.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/safe-ctype.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sanitizer.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sbitmap.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/splay-tree.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/ssa-iterators.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/statistics.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stmt.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stor-layout.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/stringpool.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/symtab.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/sync-builtins.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/system.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target-hooks-macros.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/target.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/timevar.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/timevar.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm-preds.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tm_p.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/toplev.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-cfg.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-cfgcleanup.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-check.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-core.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-dfa.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-dump.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-eh.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-hasher.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-inline.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-into-ssa.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-iterator.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-nested.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-object-size.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-outof-ssa.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-parloops.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-pass.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-phinodes.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-pretty-print.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-address.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-alias.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-coalesce.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-dom.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-ivopts.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-manip.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop-niter.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-loop.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-operands.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-sccvn.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-ter.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-threadedge.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa-threadupdate.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssa.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree-ssanames.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/tree.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/treestruct.def -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/varasm.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/vec.h -#usr/lib/gcc/i586-pc-linux-gnu/4.9.4/plugin/include/version.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/cc1 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/cc1plus +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/collect2 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtbegin.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtbeginS.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtbeginT.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtend.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtendS.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtfastmath.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtprec32.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtprec64.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/crtprec80.o +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include-fixed +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include-fixed/README +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include-fixed/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include-fixed/syslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/adxintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ammintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx2intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512bwintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512cdintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512dqintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512erintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512fintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512ifmaintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512ifmavlintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512pfintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512vbmiintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512vbmivlintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512vlbwintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512vldqintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avx512vlintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/avxintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/bmi2intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/bmiintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/bmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/cilk.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/cilk_api.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/cilk_api_linux.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/cilk_stub.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/cilk_undocumented.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/holder.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/hyperobject_base.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/metaprogramming.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_file.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_list.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_max.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_min.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_min_max.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_opadd.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_opand.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_opmul.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_opor.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_opxor.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_ostream.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cilk/reducer_string.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/clflushoptintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/clwbintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/clzerointrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cpuid.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/cross-stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/emmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/f16cintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/float.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/fma4intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/fmaintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/fxsrintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ia32intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/immintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/iso646.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/lwpintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/lzcntintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/mm3dnow.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/mm_malloc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/mmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/mwaitxintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/nmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/omp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/openacc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/pkuintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/pmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/popcntintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/prfchwintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/quadmath.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/quadmath_weak.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/rdseedintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/rtmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/sanitizer +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/sanitizer/asan_interface.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/sanitizer/common_interface_defs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/sanitizer/lsan_interface.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/shaintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/smmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ssp +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ssp/ssp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ssp/stdio.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ssp/string.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/ssp/unistd.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdalign.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdatomic.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdbool.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stddef.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdfix.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdint-gcc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdint.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/stdnoreturn.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/tbmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/tmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/unwind.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/varargs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/wmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/x86intrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xmmintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xopintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xsavecintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xsaveintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xsaveoptintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xsavesintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/include/xtestintrin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/fixinc.sh +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/fixinc_list +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/fixincl +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/gsyslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/include +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/include/README +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/include/limits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/macro_list +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/mkheaders +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/mkheaders.conf +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/install-tools/mkinstalldirs +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/libgcc.a +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/libgcc_eh.a +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/libgcov.a +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/liblto_plugin.la +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/liblto_plugin.so +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/liblto_plugin.so.0 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/liblto_plugin.so.0.0.0 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/lto-wrapper +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/lto1 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/gengtype +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/gtype.state +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ada +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ada/gcc-interface +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ada/gcc-interface/ada-tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/addresses.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/alias.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/all-tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/alloc-pool.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ansidecl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/asan.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/attribs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/auto-host.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/auto-profile.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/b-header-vars +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/backend.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/basic-block.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/bb-reorder.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/bitmap.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/builtin-attrs.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/builtin-types.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/builtins.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/bversion.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family/c-common.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family/c-common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family/c-objc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family/c-pragma.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-family/c-pretty-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/c-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/calls.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ccmp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfg-flags.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfganal.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgbuild.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgcleanup.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgexpand.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfghooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgloop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgloopmanip.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cfgrtl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cgraph.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/chkp-builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cif-code.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cilk-builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cilk.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cilkplus.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/collect-utils.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/collect2-aix.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/collect2.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/conditions.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/dbxelf.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/elfos.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/glibc-stdint.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/gnu-user.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/att.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/gnu-user-common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/gnu-user.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386-opts.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386-protos.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/i386.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/linux-common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/linux.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/stringop.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/unix.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/i386/x86-tune.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/initfini-array.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/linux-android.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/linux-protos.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/linux.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/config/vxworks-dummy.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/configargs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/context.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/convert.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/coretypes.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/coverage.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp/cp-tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp/cp-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp/cxx-pretty-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp/name-lookup.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cp/type-utils.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cppbuiltin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cppdefault.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cpplib.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/cselib.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/data-streamer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dbgcnt.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dbgcnt.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dbxout.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dce.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ddg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/debug.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/defaults.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/df.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dfp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/diagnostic-color.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/diagnostic-core.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/diagnostic.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/diagnostic.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dojump.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dominance.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/domwalk.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/double-int.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dumpfile.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dwarf2asm.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/dwarf2out.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/emit-rtl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/errors.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/et-forest.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/except.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/explow.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/expmed.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/expr.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/fibonacci_heap.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/file-find.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/filenames.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/fixed-value.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/flag-types.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/flags.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/fold-const-call.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/fold-const.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/function.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcc-plugin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcc-rich-location.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcc-symtab.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcov-counter.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcov-io.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcse-common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gcse.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/generic-match.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gengtype.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/genrtl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gensupport.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ggc-internal.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ggc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-builder.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-expr.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-fold.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-iterator.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-low.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-match.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-predict.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-pretty-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-ssa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-streamer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple-walk.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimple.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimplify-me.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gimplify.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/glimits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/graph.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/graphds.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/graphite.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gsstruct.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gstab.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gsyms.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gsyslimits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gtm-builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/gtype-desc.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hard-reg-set.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hash-map-traits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hash-map.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hash-set.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hash-table.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hash-traits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hashtab.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/highlev-plugin-common.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hosthooks-def.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hosthooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hsa-brig-format.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hsa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hw-doloop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/hwint.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ifcvt.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/inchash.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/incpath.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/input.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-addr.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-codes.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-constants.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-flags.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-modes.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/insn-notes.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/internal-fn.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/internal-fn.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/intl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-chkp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-icf-gimple.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-icf.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-inline.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-prop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-ref.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-reference.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ipa-utils.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ira-int.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ira.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/is-a.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/java +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/java/java-tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/langhooks-def.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/langhooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lcm.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/libfuncs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/libiberty.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/limitx.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/limity.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/line-map.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/loop-unroll.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lower-subreg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lra-int.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lra.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lto-compress.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lto-section-names.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/lto-streamer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/machmode.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/machmode.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/md5.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/mem-stats-traits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/mem-stats.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/memory-block.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/mode-classes.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/objc +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/objc/objc-tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/obstack.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/omp-builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/omp-low.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/optabs-libfuncs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/optabs-query.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/optabs-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/optabs.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/optabs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/options.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/opts-diagnostic.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/opts.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/output.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/params-enum.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/params-list.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/params.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/params.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/params.list +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/pass-instances.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/pass_manager.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/passes.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/plugin-api.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/plugin-version.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/plugin.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/plugin.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/predict.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/predict.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/prefix.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/pretty-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/print-rtl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/print-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/profile.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/read-md.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/real.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/realmpfr.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/recog.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/reg-notes.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/regcprop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/regrename.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/regs.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/regset.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/reload.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/resource.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtl-chkp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtl-error.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtl-iter.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtl.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtl.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtlhash.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/rtlhooks-def.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/safe-ctype.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sanitizer.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sbitmap.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sched-int.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sdbout.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sel-sched-dump.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sel-sched-ir.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sel-sched.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sese.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/shrink-wrap.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/signop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sparseset.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/spellcheck.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/splay-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sreal.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ssa-iterators.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ssa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/stab.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/statistics.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/stmt.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/stor-layout.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/streamer-hooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/stringpool.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/symbol-summary.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/symtab.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/sync-builtins.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/system.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target-def.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target-globals.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target-hooks-macros.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target-insns.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/target.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/targhooks.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/timevar.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/timevar.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tm-preds.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tm.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tm_p.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/toplev.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tracer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/trans-mem.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-affine.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-cfg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-cfgcleanup.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-check.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-chkp.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-chrec.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-core.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-data-ref.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-dfa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-diagnostic.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-dump.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-eh.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-hash-traits.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-hasher.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-inline.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-into-ssa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-iterator.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-nested.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-object-size.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-outof-ssa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-parloops.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-pass.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-phinodes.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-pretty-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-scalar-evolution.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-address.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-alias.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-coalesce.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-dom.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-live.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-ivopts.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-manip.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop-niter.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-loop.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-operands.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-propagate.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-sccvn.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-scopedtables.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-ter.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadbackward.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadedge.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa-threadupdate.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssa.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-ssanames.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-stdarg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-streamer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree-vectorizer.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/treestruct.def +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tsan.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/tsystem.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/typeclass.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/typed-splay-tree.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/ubsan.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/valtrack.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/value-prof.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/varasm.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/vec.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/version.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/vmsdbg.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/vtable-verify.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/wide-int-print.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/wide-int.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/xcoff.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/include/xcoffout.h +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/libcc1plugin.la +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so.0 +#usr/lib/gcc/i586-pc-linux-gnu/6.3.0/plugin/libcc1plugin.so.0.0.0 #usr/lib/libasan.a #usr/lib/libasan.la #usr/lib/libasan.so -usr/lib/libasan.so.1 -usr/lib/libasan.so.1.0.0 +usr/lib/libasan.so.3 +usr/lib/libasan.so.3.0.0 usr/lib/libasan_preinit.o #usr/lib/libatomic.a #usr/lib/libatomic.la -usr/lib/libatomic.so +#usr/lib/libatomic.so usr/lib/libatomic.so.1 -usr/lib/libatomic.so.1.1.0 +usr/lib/libatomic.so.1.2.0 +#usr/lib/libcc1.la +#usr/lib/libcc1.so +usr/lib/libcc1.so.0 +usr/lib/libcc1.so.0.0.0 #usr/lib/libcilkrts.a #usr/lib/libcilkrts.la #usr/lib/libcilkrts.so @@ -1122,6 +1368,17 @@ usr/lib/libgomp.so.1.0.0 usr/lib/libitm.so.1 usr/lib/libitm.so.1.0.0 #usr/lib/libitm.spec +#usr/lib/libmpx.a +#usr/lib/libmpx.la +#usr/lib/libmpx.so +usr/lib/libmpx.so.2 +usr/lib/libmpx.so.2.0.0 +#usr/lib/libmpx.spec +#usr/lib/libmpxwrappers.a +#usr/lib/libmpxwrappers.la +#usr/lib/libmpxwrappers.so +usr/lib/libmpxwrappers.so.2 +usr/lib/libmpxwrappers.so.2.0.0 #usr/lib/libquadmath.a #usr/lib/libquadmath.la #usr/lib/libquadmath.so @@ -1136,8 +1393,9 @@ usr/lib/libssp.so.0.0.0 #usr/lib/libssp_nonshared.a #usr/lib/libssp_nonshared.la #usr/lib/libstdc++.a -usr/lib/libstdc++.so.6.0.20 -#usr/lib/libstdc++.so.6.0.20-gdb.py +usr/lib/libstdc++.so.6.0.22 +#usr/lib/libstdc++fs.a +#usr/lib/libstdc++fs.la #usr/lib/libsupc++.a #usr/lib/libsupc++.la #usr/lib/libubsan.a @@ -1145,18 +1403,14 @@ usr/lib/libstdc++.so.6.0.20 #usr/lib/libubsan.so usr/lib/libubsan.so.0 usr/lib/libubsan.so.0.0.0 -#usr/lib/libvtv.a -#usr/lib/libvtv.la -#usr/lib/libvtv.so -usr/lib/libvtv.so.0 -usr/lib/libvtv.so.0.0.0 -#usr/share/gcc-4.9.4 -#usr/share/gcc-4.9.4/python -#usr/share/gcc-4.9.4/python/libstdcxx -#usr/share/gcc-4.9.4/python/libstdcxx/__init__.py -#usr/share/gcc-4.9.4/python/libstdcxx/v6 -#usr/share/gcc-4.9.4/python/libstdcxx/v6/__init__.py -#usr/share/gcc-4.9.4/python/libstdcxx/v6/printers.py +#usr/share/gcc-6.3.0 +#usr/share/gcc-6.3.0/python +#usr/share/gcc-6.3.0/python/libstdcxx +#usr/share/gcc-6.3.0/python/libstdcxx/__init__.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6 +#usr/share/gcc-6.3.0/python/libstdcxx/v6/__init__.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6/printers.py +#usr/share/gcc-6.3.0/python/libstdcxx/v6/xmethods.py #usr/share/info/cpp.info #usr/share/info/cppinternals.info #usr/share/info/gcc.info diff --git a/config/rootfiles/common/i586/glibc b/config/rootfiles/common/i586/glibc index d34a8f598..e5d6e2437 100644 --- a/config/rootfiles/common/i586/glibc +++ b/config/rootfiles/common/i586/glibc @@ -1,48 +1,49 @@ #etc/ld.so.cache -etc/localtime etc/rpc -lib/ld-2.12.so +lib/ld-2.25.so lib/ld-linux.so.2 -lib/libBrokenLocale-2.12.so +lib/libBrokenLocale-2.25.so lib/libBrokenLocale.so.1 #lib/libSegFault.so -lib/libanl-2.12.so +lib/libanl-2.25.so lib/libanl.so.1 -lib/libc-2.12.so +lib/libc-2.25.so lib/libc.so.6 -lib/libcidn-2.12.so +lib/libcidn-2.25.so lib/libcidn.so.1 -lib/libcrypt-2.12.so +lib/libcrypt-2.25.so lib/libcrypt.so.1 -lib/libdl-2.12.so +lib/libdl-2.25.so lib/libdl.so.2 -lib/libm-2.12.so +lib/libm-2.25.so lib/libm.so.6 #lib/libmemusage.so -lib/libnsl-2.12.so +lib/libnsl-2.25.so lib/libnsl.so.1 -lib/libnss_compat-2.12.so +lib/libnss_compat-2.25.so lib/libnss_compat.so.2 -lib/libnss_dns-2.12.so +lib/libnss_db-2.25.so +lib/libnss_db.so.2 +lib/libnss_dns-2.25.so lib/libnss_dns.so.2 -lib/libnss_files-2.12.so +lib/libnss_files-2.25.so lib/libnss_files.so.2 -lib/libnss_hesiod-2.12.so +lib/libnss_hesiod-2.25.so lib/libnss_hesiod.so.2 -lib/libnss_nis-2.12.so +lib/libnss_nis-2.25.so lib/libnss_nis.so.2 -lib/libnss_nisplus-2.12.so +lib/libnss_nisplus-2.25.so lib/libnss_nisplus.so.2 #lib/libpcprofile.so -lib/libpthread-2.12.so +lib/libpthread-2.25.so lib/libpthread.so.0 -lib/libresolv-2.12.so +lib/libresolv-2.25.so lib/libresolv.so.2 -lib/librt-2.12.so +lib/librt-2.25.so lib/librt.so.1 lib/libthread_db-1.0.so lib/libthread_db.so.1 -lib/libutil-2.12.so +lib/libutil-2.25.so lib/libutil.so.1 sbin/ldconfig #sbin/sln @@ -55,9 +56,12 @@ usr/bin/ldd usr/bin/lddlibc4 usr/bin/locale #usr/bin/localedef +#usr/bin/makedb #usr/bin/mtrace #usr/bin/pcprofiledump +#usr/bin/pldd #usr/bin/rpcgen +#usr/bin/sotruss #usr/bin/sprof #usr/bin/tzselect #usr/bin/xtrace @@ -79,6 +83,7 @@ usr/bin/locale #usr/include/assert.h #usr/include/bits #usr/include/bits/a.out.h +#usr/include/bits/byteswap-16.h #usr/include/bits/byteswap.h #usr/include/bits/cmathcalls.h #usr/include/bits/confname.h @@ -87,30 +92,44 @@ usr/bin/locale #usr/include/bits/elfclass.h #usr/include/bits/endian.h #usr/include/bits/environments.h +#usr/include/bits/epoll.h #usr/include/bits/errno.h #usr/include/bits/error.h +#usr/include/bits/eventfd.h +#usr/include/bits/fcntl-linux.h #usr/include/bits/fcntl.h #usr/include/bits/fcntl2.h #usr/include/bits/fenv.h #usr/include/bits/fenvinline.h +#usr/include/bits/flt-eval-method.h +#usr/include/bits/fp-fast.h +#usr/include/bits/fp-logb.h #usr/include/bits/huge_val.h #usr/include/bits/huge_valf.h #usr/include/bits/huge_vall.h +#usr/include/bits/hwcap.h #usr/include/bits/in.h #usr/include/bits/inf.h #usr/include/bits/initspin.h +#usr/include/bits/inotify.h #usr/include/bits/ioctl-types.h #usr/include/bits/ioctls.h #usr/include/bits/ipc.h #usr/include/bits/ipctypes.h -#usr/include/bits/libc-lock.h +#usr/include/bits/iscanonical.h +#usr/include/bits/libc-header-start.h #usr/include/bits/libio-ldbl.h +#usr/include/bits/libm-simd-decl-stubs.h #usr/include/bits/link.h #usr/include/bits/local_lim.h #usr/include/bits/locale.h +#usr/include/bits/long-double.h +#usr/include/bits/math-finite.h +#usr/include/bits/math-vector.h #usr/include/bits/mathcalls.h #usr/include/bits/mathdef.h #usr/include/bits/mathinline.h +#usr/include/bits/mman-linux.h #usr/include/bits/mman.h #usr/include/bits/monetary-ldbl.h #usr/include/bits/mqueue.h @@ -118,7 +137,9 @@ usr/bin/locale #usr/include/bits/msq.h #usr/include/bits/nan.h #usr/include/bits/netdb.h +#usr/include/bits/param.h #usr/include/bits/poll.h +#usr/include/bits/poll2.h #usr/include/bits/posix1_lim.h #usr/include/bits/posix2_lim.h #usr/include/bits/posix_opt.h @@ -127,6 +148,7 @@ usr/bin/locale #usr/include/bits/resource.h #usr/include/bits/sched.h #usr/include/bits/select.h +#usr/include/bits/select2.h #usr/include/bits/sem.h #usr/include/bits/semaphore.h #usr/include/bits/setjmp.h @@ -135,6 +157,7 @@ usr/bin/locale #usr/include/bits/sigaction.h #usr/include/bits/sigcontext.h #usr/include/bits/siginfo.h +#usr/include/bits/signalfd.h #usr/include/bits/signum.h #usr/include/bits/sigset.h #usr/include/bits/sigstack.h @@ -142,29 +165,48 @@ usr/bin/locale #usr/include/bits/sockaddr.h #usr/include/bits/socket.h #usr/include/bits/socket2.h +#usr/include/bits/socket_type.h #usr/include/bits/stab.def #usr/include/bits/stat.h #usr/include/bits/statfs.h #usr/include/bits/statvfs.h #usr/include/bits/stdio-ldbl.h -#usr/include/bits/stdio-lock.h #usr/include/bits/stdio.h #usr/include/bits/stdio2.h #usr/include/bits/stdio_lim.h +#usr/include/bits/stdlib-bsearch.h +#usr/include/bits/stdlib-float.h #usr/include/bits/stdlib-ldbl.h #usr/include/bits/stdlib.h #usr/include/bits/string.h #usr/include/bits/string2.h #usr/include/bits/string3.h +#usr/include/bits/strings_fortified.h +#usr/include/bits/stropts.h #usr/include/bits/sys_errlist.h #usr/include/bits/syscall.h +#usr/include/bits/sysctl.h #usr/include/bits/syslog-ldbl.h #usr/include/bits/syslog-path.h #usr/include/bits/syslog.h +#usr/include/bits/sysmacros.h #usr/include/bits/termios.h #usr/include/bits/time.h +#usr/include/bits/timerfd.h +#usr/include/bits/timex.h +#usr/include/bits/types #usr/include/bits/types.h +#usr/include/bits/types/clock_t.h +#usr/include/bits/types/clockid_t.h +#usr/include/bits/types/struct_itimerspec.h +#usr/include/bits/types/struct_osockaddr.h +#usr/include/bits/types/struct_timespec.h +#usr/include/bits/types/struct_timeval.h +#usr/include/bits/types/struct_tm.h +#usr/include/bits/types/time_t.h +#usr/include/bits/types/timer_t.h #usr/include/bits/typesizes.h +#usr/include/bits/uintn-identity.h #usr/include/bits/uio.h #usr/include/bits/unistd.h #usr/include/bits/ustat.h @@ -178,6 +220,7 @@ usr/bin/locale #usr/include/bits/wchar2.h #usr/include/bits/wordsize.h #usr/include/bits/xopen_lim.h +#usr/include/bits/xtitypes.h #usr/include/byteswap.h #usr/include/complex.h #usr/include/cpio.h @@ -206,6 +249,7 @@ usr/bin/locale #usr/include/glob.h #usr/include/gnu #usr/include/gnu-versions.h +#usr/include/gnu/lib-names-32.h #usr/include/gnu/lib-names.h #usr/include/gnu/libc-version.h #usr/include/gnu/stubs-32.h @@ -283,6 +327,7 @@ usr/bin/locale #usr/include/paths.h #usr/include/poll.h #usr/include/printf.h +#usr/include/proc_service.h #usr/include/protocols #usr/include/protocols/routed.h #usr/include/protocols/rwhod.h @@ -365,14 +410,17 @@ usr/bin/locale #usr/include/signal.h #usr/include/spawn.h #usr/include/stab.h +#usr/include/stdc-predef.h #usr/include/stdint.h #usr/include/stdio.h #usr/include/stdio_ext.h #usr/include/stdlib.h #usr/include/string.h #usr/include/strings.h +#usr/include/stropts.h #usr/include/sys #usr/include/sys/acct.h +#usr/include/sys/auxv.h #usr/include/sys/bitypes.h #usr/include/sys/cdefs.h #usr/include/sys/debugreg.h @@ -381,6 +429,7 @@ usr/bin/locale #usr/include/sys/epoll.h #usr/include/sys/errno.h #usr/include/sys/eventfd.h +#usr/include/sys/fanotify.h #usr/include/sys/fcntl.h #usr/include/sys/file.h #usr/include/sys/fsuid.h @@ -391,7 +440,6 @@ usr/bin/locale #usr/include/sys/ioctl.h #usr/include/sys/ipc.h #usr/include/sys/kd.h -#usr/include/sys/kdaemon.h #usr/include/sys/klog.h #usr/include/sys/mman.h #usr/include/sys/mount.h @@ -408,6 +456,7 @@ usr/bin/locale #usr/include/sys/ptrace.h #usr/include/sys/queue.h #usr/include/sys/quota.h +#usr/include/sys/random.h #usr/include/sys/raw.h #usr/include/sys/reboot.h #usr/include/sys/reg.h @@ -424,6 +473,7 @@ usr/bin/locale #usr/include/sys/stat.h #usr/include/sys/statfs.h #usr/include/sys/statvfs.h +#usr/include/sys/stropts.h #usr/include/sys/swap.h #usr/include/sys/syscall.h #usr/include/sys/sysctl.h @@ -464,6 +514,7 @@ usr/bin/locale #usr/include/thread_db.h #usr/include/time.h #usr/include/ttyent.h +#usr/include/uchar.h #usr/include/ucontext.h #usr/include/ulimit.h #usr/include/unistd.h @@ -479,6 +530,8 @@ usr/bin/locale #usr/include/xlocale.h #usr/lib/Mcrt1.o #usr/lib/Scrt1.o +#usr/lib/audit +#usr/lib/audit/sotruss-lib.so #usr/lib/crt1.o #usr/lib/crti.o #usr/lib/crtn.o @@ -501,6 +554,11 @@ usr/lib/gconv #usr/lib/gconv/CP1257.so #usr/lib/gconv/CP1258.so #usr/lib/gconv/CP737.so +#usr/lib/gconv/CP770.so +#usr/lib/gconv/CP771.so +#usr/lib/gconv/CP772.so +#usr/lib/gconv/CP773.so +#usr/lib/gconv/CP774.so #usr/lib/gconv/CP775.so #usr/lib/gconv/CP932.so #usr/lib/gconv/CSN_369103.so @@ -738,12 +796,12 @@ usr/lib/gconv #usr/lib/glibc/getconf/POSIX_V6_ILP32_OFFBIG #usr/lib/glibc/getconf/POSIX_V7_ILP32_OFF32 #usr/lib/glibc/getconf/POSIX_V7_ILP32_OFFBIG -#usr/lib/glibc/pt_chown +#usr/lib/glibc/getconf/XBS5_ILP32_OFF32 +#usr/lib/glibc/getconf/XBS5_ILP32_OFFBIG #usr/lib/libBrokenLocale.a #usr/lib/libBrokenLocale.so #usr/lib/libanl.a #usr/lib/libanl.so -#usr/lib/libbsd-compat.a #usr/lib/libc.a #usr/lib/libc.so #usr/lib/libc_nonshared.a @@ -760,6 +818,7 @@ usr/lib/gconv #usr/lib/libnsl.a #usr/lib/libnsl.so #usr/lib/libnss_compat.so +#usr/lib/libnss_db.so #usr/lib/libnss_dns.so #usr/lib/libnss_files.so #usr/lib/libnss_hesiod.so @@ -777,5945 +836,9 @@ usr/lib/gconv #usr/lib/libutil.a #usr/lib/libutil.so usr/lib/locale -#usr/lib/locale/aa_DJ -#usr/lib/locale/aa_DJ.utf8 -#usr/lib/locale/aa_DJ.utf8/LC_ADDRESS -#usr/lib/locale/aa_DJ.utf8/LC_COLLATE -#usr/lib/locale/aa_DJ.utf8/LC_CTYPE -#usr/lib/locale/aa_DJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/aa_DJ.utf8/LC_MEASUREMENT -#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES -#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_DJ.utf8/LC_MONETARY -#usr/lib/locale/aa_DJ.utf8/LC_NAME -#usr/lib/locale/aa_DJ.utf8/LC_NUMERIC -#usr/lib/locale/aa_DJ.utf8/LC_PAPER -#usr/lib/locale/aa_DJ.utf8/LC_TELEPHONE -#usr/lib/locale/aa_DJ.utf8/LC_TIME -#usr/lib/locale/aa_DJ/LC_ADDRESS -#usr/lib/locale/aa_DJ/LC_COLLATE -#usr/lib/locale/aa_DJ/LC_CTYPE -#usr/lib/locale/aa_DJ/LC_IDENTIFICATION -#usr/lib/locale/aa_DJ/LC_MEASUREMENT -#usr/lib/locale/aa_DJ/LC_MESSAGES -#usr/lib/locale/aa_DJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_DJ/LC_MONETARY -#usr/lib/locale/aa_DJ/LC_NAME -#usr/lib/locale/aa_DJ/LC_NUMERIC -#usr/lib/locale/aa_DJ/LC_PAPER -#usr/lib/locale/aa_DJ/LC_TELEPHONE -#usr/lib/locale/aa_DJ/LC_TIME -#usr/lib/locale/aa_ER -#usr/lib/locale/aa_ER/LC_ADDRESS -#usr/lib/locale/aa_ER/LC_COLLATE -#usr/lib/locale/aa_ER/LC_CTYPE -#usr/lib/locale/aa_ER/LC_IDENTIFICATION -#usr/lib/locale/aa_ER/LC_MEASUREMENT -#usr/lib/locale/aa_ER/LC_MESSAGES -#usr/lib/locale/aa_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ER/LC_MONETARY -#usr/lib/locale/aa_ER/LC_NAME -#usr/lib/locale/aa_ER/LC_NUMERIC -#usr/lib/locale/aa_ER/LC_PAPER -#usr/lib/locale/aa_ER/LC_TELEPHONE -#usr/lib/locale/aa_ER/LC_TIME -#usr/lib/locale/aa_ER@saaho -#usr/lib/locale/aa_ER@saaho/LC_ADDRESS -#usr/lib/locale/aa_ER@saaho/LC_COLLATE -#usr/lib/locale/aa_ER@saaho/LC_CTYPE -#usr/lib/locale/aa_ER@saaho/LC_IDENTIFICATION -#usr/lib/locale/aa_ER@saaho/LC_MEASUREMENT -#usr/lib/locale/aa_ER@saaho/LC_MESSAGES -#usr/lib/locale/aa_ER@saaho/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ER@saaho/LC_MONETARY -#usr/lib/locale/aa_ER@saaho/LC_NAME -#usr/lib/locale/aa_ER@saaho/LC_NUMERIC -#usr/lib/locale/aa_ER@saaho/LC_PAPER -#usr/lib/locale/aa_ER@saaho/LC_TELEPHONE -#usr/lib/locale/aa_ER@saaho/LC_TIME -#usr/lib/locale/aa_ET -#usr/lib/locale/aa_ET/LC_ADDRESS -#usr/lib/locale/aa_ET/LC_COLLATE -#usr/lib/locale/aa_ET/LC_CTYPE -#usr/lib/locale/aa_ET/LC_IDENTIFICATION -#usr/lib/locale/aa_ET/LC_MEASUREMENT -#usr/lib/locale/aa_ET/LC_MESSAGES -#usr/lib/locale/aa_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/aa_ET/LC_MONETARY -#usr/lib/locale/aa_ET/LC_NAME -#usr/lib/locale/aa_ET/LC_NUMERIC -#usr/lib/locale/aa_ET/LC_PAPER -#usr/lib/locale/aa_ET/LC_TELEPHONE -#usr/lib/locale/aa_ET/LC_TIME -#usr/lib/locale/af_ZA -#usr/lib/locale/af_ZA.utf8 -#usr/lib/locale/af_ZA.utf8/LC_ADDRESS -#usr/lib/locale/af_ZA.utf8/LC_COLLATE -#usr/lib/locale/af_ZA.utf8/LC_CTYPE -#usr/lib/locale/af_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/af_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/af_ZA.utf8/LC_MESSAGES -#usr/lib/locale/af_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/af_ZA.utf8/LC_MONETARY -#usr/lib/locale/af_ZA.utf8/LC_NAME -#usr/lib/locale/af_ZA.utf8/LC_NUMERIC -#usr/lib/locale/af_ZA.utf8/LC_PAPER -#usr/lib/locale/af_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/af_ZA.utf8/LC_TIME -#usr/lib/locale/af_ZA/LC_ADDRESS -#usr/lib/locale/af_ZA/LC_COLLATE -#usr/lib/locale/af_ZA/LC_CTYPE -#usr/lib/locale/af_ZA/LC_IDENTIFICATION -#usr/lib/locale/af_ZA/LC_MEASUREMENT -#usr/lib/locale/af_ZA/LC_MESSAGES -#usr/lib/locale/af_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/af_ZA/LC_MONETARY -#usr/lib/locale/af_ZA/LC_NAME -#usr/lib/locale/af_ZA/LC_NUMERIC -#usr/lib/locale/af_ZA/LC_PAPER -#usr/lib/locale/af_ZA/LC_TELEPHONE -#usr/lib/locale/af_ZA/LC_TIME -#usr/lib/locale/am_ET -#usr/lib/locale/am_ET/LC_ADDRESS -#usr/lib/locale/am_ET/LC_COLLATE -#usr/lib/locale/am_ET/LC_CTYPE -#usr/lib/locale/am_ET/LC_IDENTIFICATION -#usr/lib/locale/am_ET/LC_MEASUREMENT -#usr/lib/locale/am_ET/LC_MESSAGES -#usr/lib/locale/am_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/am_ET/LC_MONETARY -#usr/lib/locale/am_ET/LC_NAME -#usr/lib/locale/am_ET/LC_NUMERIC -#usr/lib/locale/am_ET/LC_PAPER -#usr/lib/locale/am_ET/LC_TELEPHONE -#usr/lib/locale/am_ET/LC_TIME -#usr/lib/locale/an_ES -#usr/lib/locale/an_ES.utf8 -#usr/lib/locale/an_ES.utf8/LC_ADDRESS -#usr/lib/locale/an_ES.utf8/LC_COLLATE -#usr/lib/locale/an_ES.utf8/LC_CTYPE -#usr/lib/locale/an_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/an_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/an_ES.utf8/LC_MESSAGES -#usr/lib/locale/an_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/an_ES.utf8/LC_MONETARY -#usr/lib/locale/an_ES.utf8/LC_NAME -#usr/lib/locale/an_ES.utf8/LC_NUMERIC -#usr/lib/locale/an_ES.utf8/LC_PAPER -#usr/lib/locale/an_ES.utf8/LC_TELEPHONE -#usr/lib/locale/an_ES.utf8/LC_TIME -#usr/lib/locale/an_ES/LC_ADDRESS -#usr/lib/locale/an_ES/LC_COLLATE -#usr/lib/locale/an_ES/LC_CTYPE -#usr/lib/locale/an_ES/LC_IDENTIFICATION -#usr/lib/locale/an_ES/LC_MEASUREMENT -#usr/lib/locale/an_ES/LC_MESSAGES -#usr/lib/locale/an_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/an_ES/LC_MONETARY -#usr/lib/locale/an_ES/LC_NAME -#usr/lib/locale/an_ES/LC_NUMERIC -#usr/lib/locale/an_ES/LC_PAPER -#usr/lib/locale/an_ES/LC_TELEPHONE -#usr/lib/locale/an_ES/LC_TIME -#usr/lib/locale/ar_AE -#usr/lib/locale/ar_AE.utf8 -#usr/lib/locale/ar_AE.utf8/LC_ADDRESS -#usr/lib/locale/ar_AE.utf8/LC_COLLATE -#usr/lib/locale/ar_AE.utf8/LC_CTYPE -#usr/lib/locale/ar_AE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_AE.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_AE.utf8/LC_MESSAGES -#usr/lib/locale/ar_AE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_AE.utf8/LC_MONETARY -#usr/lib/locale/ar_AE.utf8/LC_NAME -#usr/lib/locale/ar_AE.utf8/LC_NUMERIC -#usr/lib/locale/ar_AE.utf8/LC_PAPER -#usr/lib/locale/ar_AE.utf8/LC_TELEPHONE -#usr/lib/locale/ar_AE.utf8/LC_TIME -#usr/lib/locale/ar_AE/LC_ADDRESS -#usr/lib/locale/ar_AE/LC_COLLATE -#usr/lib/locale/ar_AE/LC_CTYPE -#usr/lib/locale/ar_AE/LC_IDENTIFICATION -#usr/lib/locale/ar_AE/LC_MEASUREMENT -#usr/lib/locale/ar_AE/LC_MESSAGES -#usr/lib/locale/ar_AE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_AE/LC_MONETARY -#usr/lib/locale/ar_AE/LC_NAME -#usr/lib/locale/ar_AE/LC_NUMERIC -#usr/lib/locale/ar_AE/LC_PAPER -#usr/lib/locale/ar_AE/LC_TELEPHONE -#usr/lib/locale/ar_AE/LC_TIME -#usr/lib/locale/ar_BH -#usr/lib/locale/ar_BH.utf8 -#usr/lib/locale/ar_BH.utf8/LC_ADDRESS -#usr/lib/locale/ar_BH.utf8/LC_COLLATE -#usr/lib/locale/ar_BH.utf8/LC_CTYPE -#usr/lib/locale/ar_BH.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_BH.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_BH.utf8/LC_MESSAGES -#usr/lib/locale/ar_BH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_BH.utf8/LC_MONETARY -#usr/lib/locale/ar_BH.utf8/LC_NAME -#usr/lib/locale/ar_BH.utf8/LC_NUMERIC -#usr/lib/locale/ar_BH.utf8/LC_PAPER -#usr/lib/locale/ar_BH.utf8/LC_TELEPHONE -#usr/lib/locale/ar_BH.utf8/LC_TIME -#usr/lib/locale/ar_BH/LC_ADDRESS -#usr/lib/locale/ar_BH/LC_COLLATE -#usr/lib/locale/ar_BH/LC_CTYPE -#usr/lib/locale/ar_BH/LC_IDENTIFICATION -#usr/lib/locale/ar_BH/LC_MEASUREMENT -#usr/lib/locale/ar_BH/LC_MESSAGES -#usr/lib/locale/ar_BH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_BH/LC_MONETARY -#usr/lib/locale/ar_BH/LC_NAME -#usr/lib/locale/ar_BH/LC_NUMERIC -#usr/lib/locale/ar_BH/LC_PAPER -#usr/lib/locale/ar_BH/LC_TELEPHONE -#usr/lib/locale/ar_BH/LC_TIME -#usr/lib/locale/ar_DZ -#usr/lib/locale/ar_DZ.utf8 -#usr/lib/locale/ar_DZ.utf8/LC_ADDRESS -#usr/lib/locale/ar_DZ.utf8/LC_COLLATE -#usr/lib/locale/ar_DZ.utf8/LC_CTYPE -#usr/lib/locale/ar_DZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_DZ.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES -#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_DZ.utf8/LC_MONETARY -#usr/lib/locale/ar_DZ.utf8/LC_NAME -#usr/lib/locale/ar_DZ.utf8/LC_NUMERIC -#usr/lib/locale/ar_DZ.utf8/LC_PAPER -#usr/lib/locale/ar_DZ.utf8/LC_TELEPHONE -#usr/lib/locale/ar_DZ.utf8/LC_TIME -#usr/lib/locale/ar_DZ/LC_ADDRESS -#usr/lib/locale/ar_DZ/LC_COLLATE -#usr/lib/locale/ar_DZ/LC_CTYPE -#usr/lib/locale/ar_DZ/LC_IDENTIFICATION -#usr/lib/locale/ar_DZ/LC_MEASUREMENT -#usr/lib/locale/ar_DZ/LC_MESSAGES -#usr/lib/locale/ar_DZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_DZ/LC_MONETARY -#usr/lib/locale/ar_DZ/LC_NAME -#usr/lib/locale/ar_DZ/LC_NUMERIC -#usr/lib/locale/ar_DZ/LC_PAPER -#usr/lib/locale/ar_DZ/LC_TELEPHONE -#usr/lib/locale/ar_DZ/LC_TIME -#usr/lib/locale/ar_EG -#usr/lib/locale/ar_EG.utf8 -#usr/lib/locale/ar_EG.utf8/LC_ADDRESS -#usr/lib/locale/ar_EG.utf8/LC_COLLATE -#usr/lib/locale/ar_EG.utf8/LC_CTYPE -#usr/lib/locale/ar_EG.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_EG.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_EG.utf8/LC_MESSAGES -#usr/lib/locale/ar_EG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_EG.utf8/LC_MONETARY -#usr/lib/locale/ar_EG.utf8/LC_NAME -#usr/lib/locale/ar_EG.utf8/LC_NUMERIC -#usr/lib/locale/ar_EG.utf8/LC_PAPER -#usr/lib/locale/ar_EG.utf8/LC_TELEPHONE -#usr/lib/locale/ar_EG.utf8/LC_TIME -#usr/lib/locale/ar_EG/LC_ADDRESS -#usr/lib/locale/ar_EG/LC_COLLATE -#usr/lib/locale/ar_EG/LC_CTYPE -#usr/lib/locale/ar_EG/LC_IDENTIFICATION -#usr/lib/locale/ar_EG/LC_MEASUREMENT -#usr/lib/locale/ar_EG/LC_MESSAGES -#usr/lib/locale/ar_EG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_EG/LC_MONETARY -#usr/lib/locale/ar_EG/LC_NAME -#usr/lib/locale/ar_EG/LC_NUMERIC -#usr/lib/locale/ar_EG/LC_PAPER -#usr/lib/locale/ar_EG/LC_TELEPHONE -#usr/lib/locale/ar_EG/LC_TIME -#usr/lib/locale/ar_IN -#usr/lib/locale/ar_IN/LC_ADDRESS -#usr/lib/locale/ar_IN/LC_COLLATE -#usr/lib/locale/ar_IN/LC_CTYPE -#usr/lib/locale/ar_IN/LC_IDENTIFICATION -#usr/lib/locale/ar_IN/LC_MEASUREMENT -#usr/lib/locale/ar_IN/LC_MESSAGES -#usr/lib/locale/ar_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IN/LC_MONETARY -#usr/lib/locale/ar_IN/LC_NAME -#usr/lib/locale/ar_IN/LC_NUMERIC -#usr/lib/locale/ar_IN/LC_PAPER -#usr/lib/locale/ar_IN/LC_TELEPHONE -#usr/lib/locale/ar_IN/LC_TIME -#usr/lib/locale/ar_IQ -#usr/lib/locale/ar_IQ.utf8 -#usr/lib/locale/ar_IQ.utf8/LC_ADDRESS -#usr/lib/locale/ar_IQ.utf8/LC_COLLATE -#usr/lib/locale/ar_IQ.utf8/LC_CTYPE -#usr/lib/locale/ar_IQ.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_IQ.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES -#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IQ.utf8/LC_MONETARY -#usr/lib/locale/ar_IQ.utf8/LC_NAME -#usr/lib/locale/ar_IQ.utf8/LC_NUMERIC -#usr/lib/locale/ar_IQ.utf8/LC_PAPER -#usr/lib/locale/ar_IQ.utf8/LC_TELEPHONE -#usr/lib/locale/ar_IQ.utf8/LC_TIME -#usr/lib/locale/ar_IQ/LC_ADDRESS -#usr/lib/locale/ar_IQ/LC_COLLATE -#usr/lib/locale/ar_IQ/LC_CTYPE -#usr/lib/locale/ar_IQ/LC_IDENTIFICATION -#usr/lib/locale/ar_IQ/LC_MEASUREMENT -#usr/lib/locale/ar_IQ/LC_MESSAGES -#usr/lib/locale/ar_IQ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_IQ/LC_MONETARY -#usr/lib/locale/ar_IQ/LC_NAME -#usr/lib/locale/ar_IQ/LC_NUMERIC -#usr/lib/locale/ar_IQ/LC_PAPER -#usr/lib/locale/ar_IQ/LC_TELEPHONE -#usr/lib/locale/ar_IQ/LC_TIME -#usr/lib/locale/ar_JO -#usr/lib/locale/ar_JO.utf8 -#usr/lib/locale/ar_JO.utf8/LC_ADDRESS -#usr/lib/locale/ar_JO.utf8/LC_COLLATE -#usr/lib/locale/ar_JO.utf8/LC_CTYPE -#usr/lib/locale/ar_JO.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_JO.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_JO.utf8/LC_MESSAGES -#usr/lib/locale/ar_JO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_JO.utf8/LC_MONETARY -#usr/lib/locale/ar_JO.utf8/LC_NAME -#usr/lib/locale/ar_JO.utf8/LC_NUMERIC -#usr/lib/locale/ar_JO.utf8/LC_PAPER -#usr/lib/locale/ar_JO.utf8/LC_TELEPHONE -#usr/lib/locale/ar_JO.utf8/LC_TIME -#usr/lib/locale/ar_JO/LC_ADDRESS -#usr/lib/locale/ar_JO/LC_COLLATE -#usr/lib/locale/ar_JO/LC_CTYPE -#usr/lib/locale/ar_JO/LC_IDENTIFICATION -#usr/lib/locale/ar_JO/LC_MEASUREMENT -#usr/lib/locale/ar_JO/LC_MESSAGES -#usr/lib/locale/ar_JO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_JO/LC_MONETARY -#usr/lib/locale/ar_JO/LC_NAME -#usr/lib/locale/ar_JO/LC_NUMERIC -#usr/lib/locale/ar_JO/LC_PAPER -#usr/lib/locale/ar_JO/LC_TELEPHONE -#usr/lib/locale/ar_JO/LC_TIME -#usr/lib/locale/ar_KW -#usr/lib/locale/ar_KW.utf8 -#usr/lib/locale/ar_KW.utf8/LC_ADDRESS -#usr/lib/locale/ar_KW.utf8/LC_COLLATE -#usr/lib/locale/ar_KW.utf8/LC_CTYPE -#usr/lib/locale/ar_KW.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_KW.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_KW.utf8/LC_MESSAGES -#usr/lib/locale/ar_KW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_KW.utf8/LC_MONETARY -#usr/lib/locale/ar_KW.utf8/LC_NAME -#usr/lib/locale/ar_KW.utf8/LC_NUMERIC -#usr/lib/locale/ar_KW.utf8/LC_PAPER -#usr/lib/locale/ar_KW.utf8/LC_TELEPHONE -#usr/lib/locale/ar_KW.utf8/LC_TIME -#usr/lib/locale/ar_KW/LC_ADDRESS -#usr/lib/locale/ar_KW/LC_COLLATE -#usr/lib/locale/ar_KW/LC_CTYPE -#usr/lib/locale/ar_KW/LC_IDENTIFICATION -#usr/lib/locale/ar_KW/LC_MEASUREMENT -#usr/lib/locale/ar_KW/LC_MESSAGES -#usr/lib/locale/ar_KW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_KW/LC_MONETARY -#usr/lib/locale/ar_KW/LC_NAME -#usr/lib/locale/ar_KW/LC_NUMERIC -#usr/lib/locale/ar_KW/LC_PAPER -#usr/lib/locale/ar_KW/LC_TELEPHONE -#usr/lib/locale/ar_KW/LC_TIME -#usr/lib/locale/ar_LB -#usr/lib/locale/ar_LB.utf8 -#usr/lib/locale/ar_LB.utf8/LC_ADDRESS -#usr/lib/locale/ar_LB.utf8/LC_COLLATE -#usr/lib/locale/ar_LB.utf8/LC_CTYPE -#usr/lib/locale/ar_LB.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_LB.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_LB.utf8/LC_MESSAGES -#usr/lib/locale/ar_LB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LB.utf8/LC_MONETARY -#usr/lib/locale/ar_LB.utf8/LC_NAME -#usr/lib/locale/ar_LB.utf8/LC_NUMERIC -#usr/lib/locale/ar_LB.utf8/LC_PAPER -#usr/lib/locale/ar_LB.utf8/LC_TELEPHONE -#usr/lib/locale/ar_LB.utf8/LC_TIME -#usr/lib/locale/ar_LB/LC_ADDRESS -#usr/lib/locale/ar_LB/LC_COLLATE -#usr/lib/locale/ar_LB/LC_CTYPE -#usr/lib/locale/ar_LB/LC_IDENTIFICATION -#usr/lib/locale/ar_LB/LC_MEASUREMENT -#usr/lib/locale/ar_LB/LC_MESSAGES -#usr/lib/locale/ar_LB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LB/LC_MONETARY -#usr/lib/locale/ar_LB/LC_NAME -#usr/lib/locale/ar_LB/LC_NUMERIC -#usr/lib/locale/ar_LB/LC_PAPER -#usr/lib/locale/ar_LB/LC_TELEPHONE -#usr/lib/locale/ar_LB/LC_TIME -#usr/lib/locale/ar_LY -#usr/lib/locale/ar_LY.utf8 -#usr/lib/locale/ar_LY.utf8/LC_ADDRESS -#usr/lib/locale/ar_LY.utf8/LC_COLLATE -#usr/lib/locale/ar_LY.utf8/LC_CTYPE -#usr/lib/locale/ar_LY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_LY.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_LY.utf8/LC_MESSAGES -#usr/lib/locale/ar_LY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LY.utf8/LC_MONETARY -#usr/lib/locale/ar_LY.utf8/LC_NAME -#usr/lib/locale/ar_LY.utf8/LC_NUMERIC -#usr/lib/locale/ar_LY.utf8/LC_PAPER -#usr/lib/locale/ar_LY.utf8/LC_TELEPHONE -#usr/lib/locale/ar_LY.utf8/LC_TIME -#usr/lib/locale/ar_LY/LC_ADDRESS -#usr/lib/locale/ar_LY/LC_COLLATE -#usr/lib/locale/ar_LY/LC_CTYPE -#usr/lib/locale/ar_LY/LC_IDENTIFICATION -#usr/lib/locale/ar_LY/LC_MEASUREMENT -#usr/lib/locale/ar_LY/LC_MESSAGES -#usr/lib/locale/ar_LY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_LY/LC_MONETARY -#usr/lib/locale/ar_LY/LC_NAME -#usr/lib/locale/ar_LY/LC_NUMERIC -#usr/lib/locale/ar_LY/LC_PAPER -#usr/lib/locale/ar_LY/LC_TELEPHONE -#usr/lib/locale/ar_LY/LC_TIME -#usr/lib/locale/ar_MA -#usr/lib/locale/ar_MA.utf8 -#usr/lib/locale/ar_MA.utf8/LC_ADDRESS -#usr/lib/locale/ar_MA.utf8/LC_COLLATE -#usr/lib/locale/ar_MA.utf8/LC_CTYPE -#usr/lib/locale/ar_MA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_MA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_MA.utf8/LC_MESSAGES -#usr/lib/locale/ar_MA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_MA.utf8/LC_MONETARY -#usr/lib/locale/ar_MA.utf8/LC_NAME -#usr/lib/locale/ar_MA.utf8/LC_NUMERIC -#usr/lib/locale/ar_MA.utf8/LC_PAPER -#usr/lib/locale/ar_MA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_MA.utf8/LC_TIME -#usr/lib/locale/ar_MA/LC_ADDRESS -#usr/lib/locale/ar_MA/LC_COLLATE -#usr/lib/locale/ar_MA/LC_CTYPE -#usr/lib/locale/ar_MA/LC_IDENTIFICATION -#usr/lib/locale/ar_MA/LC_MEASUREMENT -#usr/lib/locale/ar_MA/LC_MESSAGES -#usr/lib/locale/ar_MA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_MA/LC_MONETARY -#usr/lib/locale/ar_MA/LC_NAME -#usr/lib/locale/ar_MA/LC_NUMERIC -#usr/lib/locale/ar_MA/LC_PAPER -#usr/lib/locale/ar_MA/LC_TELEPHONE -#usr/lib/locale/ar_MA/LC_TIME -#usr/lib/locale/ar_OM -#usr/lib/locale/ar_OM.utf8 -#usr/lib/locale/ar_OM.utf8/LC_ADDRESS -#usr/lib/locale/ar_OM.utf8/LC_COLLATE -#usr/lib/locale/ar_OM.utf8/LC_CTYPE -#usr/lib/locale/ar_OM.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_OM.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_OM.utf8/LC_MESSAGES -#usr/lib/locale/ar_OM.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_OM.utf8/LC_MONETARY -#usr/lib/locale/ar_OM.utf8/LC_NAME -#usr/lib/locale/ar_OM.utf8/LC_NUMERIC -#usr/lib/locale/ar_OM.utf8/LC_PAPER -#usr/lib/locale/ar_OM.utf8/LC_TELEPHONE -#usr/lib/locale/ar_OM.utf8/LC_TIME -#usr/lib/locale/ar_OM/LC_ADDRESS -#usr/lib/locale/ar_OM/LC_COLLATE -#usr/lib/locale/ar_OM/LC_CTYPE -#usr/lib/locale/ar_OM/LC_IDENTIFICATION -#usr/lib/locale/ar_OM/LC_MEASUREMENT -#usr/lib/locale/ar_OM/LC_MESSAGES -#usr/lib/locale/ar_OM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_OM/LC_MONETARY -#usr/lib/locale/ar_OM/LC_NAME -#usr/lib/locale/ar_OM/LC_NUMERIC -#usr/lib/locale/ar_OM/LC_PAPER -#usr/lib/locale/ar_OM/LC_TELEPHONE -#usr/lib/locale/ar_OM/LC_TIME -#usr/lib/locale/ar_QA -#usr/lib/locale/ar_QA.utf8 -#usr/lib/locale/ar_QA.utf8/LC_ADDRESS -#usr/lib/locale/ar_QA.utf8/LC_COLLATE -#usr/lib/locale/ar_QA.utf8/LC_CTYPE -#usr/lib/locale/ar_QA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_QA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_QA.utf8/LC_MESSAGES -#usr/lib/locale/ar_QA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_QA.utf8/LC_MONETARY -#usr/lib/locale/ar_QA.utf8/LC_NAME -#usr/lib/locale/ar_QA.utf8/LC_NUMERIC -#usr/lib/locale/ar_QA.utf8/LC_PAPER -#usr/lib/locale/ar_QA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_QA.utf8/LC_TIME -#usr/lib/locale/ar_QA/LC_ADDRESS -#usr/lib/locale/ar_QA/LC_COLLATE -#usr/lib/locale/ar_QA/LC_CTYPE -#usr/lib/locale/ar_QA/LC_IDENTIFICATION -#usr/lib/locale/ar_QA/LC_MEASUREMENT -#usr/lib/locale/ar_QA/LC_MESSAGES -#usr/lib/locale/ar_QA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_QA/LC_MONETARY -#usr/lib/locale/ar_QA/LC_NAME -#usr/lib/locale/ar_QA/LC_NUMERIC -#usr/lib/locale/ar_QA/LC_PAPER -#usr/lib/locale/ar_QA/LC_TELEPHONE -#usr/lib/locale/ar_QA/LC_TIME -#usr/lib/locale/ar_SA -#usr/lib/locale/ar_SA.utf8 -#usr/lib/locale/ar_SA.utf8/LC_ADDRESS -#usr/lib/locale/ar_SA.utf8/LC_COLLATE -#usr/lib/locale/ar_SA.utf8/LC_CTYPE -#usr/lib/locale/ar_SA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SA.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SA.utf8/LC_MESSAGES -#usr/lib/locale/ar_SA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SA.utf8/LC_MONETARY -#usr/lib/locale/ar_SA.utf8/LC_NAME -#usr/lib/locale/ar_SA.utf8/LC_NUMERIC -#usr/lib/locale/ar_SA.utf8/LC_PAPER -#usr/lib/locale/ar_SA.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SA.utf8/LC_TIME -#usr/lib/locale/ar_SA/LC_ADDRESS -#usr/lib/locale/ar_SA/LC_COLLATE -#usr/lib/locale/ar_SA/LC_CTYPE -#usr/lib/locale/ar_SA/LC_IDENTIFICATION -#usr/lib/locale/ar_SA/LC_MEASUREMENT -#usr/lib/locale/ar_SA/LC_MESSAGES -#usr/lib/locale/ar_SA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SA/LC_MONETARY -#usr/lib/locale/ar_SA/LC_NAME -#usr/lib/locale/ar_SA/LC_NUMERIC -#usr/lib/locale/ar_SA/LC_PAPER -#usr/lib/locale/ar_SA/LC_TELEPHONE -#usr/lib/locale/ar_SA/LC_TIME -#usr/lib/locale/ar_SD -#usr/lib/locale/ar_SD.utf8 -#usr/lib/locale/ar_SD.utf8/LC_ADDRESS -#usr/lib/locale/ar_SD.utf8/LC_COLLATE -#usr/lib/locale/ar_SD.utf8/LC_CTYPE -#usr/lib/locale/ar_SD.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SD.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SD.utf8/LC_MESSAGES -#usr/lib/locale/ar_SD.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SD.utf8/LC_MONETARY -#usr/lib/locale/ar_SD.utf8/LC_NAME -#usr/lib/locale/ar_SD.utf8/LC_NUMERIC -#usr/lib/locale/ar_SD.utf8/LC_PAPER -#usr/lib/locale/ar_SD.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SD.utf8/LC_TIME -#usr/lib/locale/ar_SD/LC_ADDRESS -#usr/lib/locale/ar_SD/LC_COLLATE -#usr/lib/locale/ar_SD/LC_CTYPE -#usr/lib/locale/ar_SD/LC_IDENTIFICATION -#usr/lib/locale/ar_SD/LC_MEASUREMENT -#usr/lib/locale/ar_SD/LC_MESSAGES -#usr/lib/locale/ar_SD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SD/LC_MONETARY -#usr/lib/locale/ar_SD/LC_NAME -#usr/lib/locale/ar_SD/LC_NUMERIC -#usr/lib/locale/ar_SD/LC_PAPER -#usr/lib/locale/ar_SD/LC_TELEPHONE -#usr/lib/locale/ar_SD/LC_TIME -#usr/lib/locale/ar_SY -#usr/lib/locale/ar_SY.utf8 -#usr/lib/locale/ar_SY.utf8/LC_ADDRESS -#usr/lib/locale/ar_SY.utf8/LC_COLLATE -#usr/lib/locale/ar_SY.utf8/LC_CTYPE -#usr/lib/locale/ar_SY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_SY.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_SY.utf8/LC_MESSAGES -#usr/lib/locale/ar_SY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SY.utf8/LC_MONETARY -#usr/lib/locale/ar_SY.utf8/LC_NAME -#usr/lib/locale/ar_SY.utf8/LC_NUMERIC -#usr/lib/locale/ar_SY.utf8/LC_PAPER -#usr/lib/locale/ar_SY.utf8/LC_TELEPHONE -#usr/lib/locale/ar_SY.utf8/LC_TIME -#usr/lib/locale/ar_SY/LC_ADDRESS -#usr/lib/locale/ar_SY/LC_COLLATE -#usr/lib/locale/ar_SY/LC_CTYPE -#usr/lib/locale/ar_SY/LC_IDENTIFICATION -#usr/lib/locale/ar_SY/LC_MEASUREMENT -#usr/lib/locale/ar_SY/LC_MESSAGES -#usr/lib/locale/ar_SY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_SY/LC_MONETARY -#usr/lib/locale/ar_SY/LC_NAME -#usr/lib/locale/ar_SY/LC_NUMERIC -#usr/lib/locale/ar_SY/LC_PAPER -#usr/lib/locale/ar_SY/LC_TELEPHONE -#usr/lib/locale/ar_SY/LC_TIME -#usr/lib/locale/ar_TN -#usr/lib/locale/ar_TN.utf8 -#usr/lib/locale/ar_TN.utf8/LC_ADDRESS -#usr/lib/locale/ar_TN.utf8/LC_COLLATE -#usr/lib/locale/ar_TN.utf8/LC_CTYPE -#usr/lib/locale/ar_TN.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_TN.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_TN.utf8/LC_MESSAGES -#usr/lib/locale/ar_TN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_TN.utf8/LC_MONETARY -#usr/lib/locale/ar_TN.utf8/LC_NAME -#usr/lib/locale/ar_TN.utf8/LC_NUMERIC -#usr/lib/locale/ar_TN.utf8/LC_PAPER -#usr/lib/locale/ar_TN.utf8/LC_TELEPHONE -#usr/lib/locale/ar_TN.utf8/LC_TIME -#usr/lib/locale/ar_TN/LC_ADDRESS -#usr/lib/locale/ar_TN/LC_COLLATE -#usr/lib/locale/ar_TN/LC_CTYPE -#usr/lib/locale/ar_TN/LC_IDENTIFICATION -#usr/lib/locale/ar_TN/LC_MEASUREMENT -#usr/lib/locale/ar_TN/LC_MESSAGES -#usr/lib/locale/ar_TN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_TN/LC_MONETARY -#usr/lib/locale/ar_TN/LC_NAME -#usr/lib/locale/ar_TN/LC_NUMERIC -#usr/lib/locale/ar_TN/LC_PAPER -#usr/lib/locale/ar_TN/LC_TELEPHONE -#usr/lib/locale/ar_TN/LC_TIME -#usr/lib/locale/ar_YE -#usr/lib/locale/ar_YE.utf8 -#usr/lib/locale/ar_YE.utf8/LC_ADDRESS -#usr/lib/locale/ar_YE.utf8/LC_COLLATE -#usr/lib/locale/ar_YE.utf8/LC_CTYPE -#usr/lib/locale/ar_YE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ar_YE.utf8/LC_MEASUREMENT -#usr/lib/locale/ar_YE.utf8/LC_MESSAGES -#usr/lib/locale/ar_YE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_YE.utf8/LC_MONETARY -#usr/lib/locale/ar_YE.utf8/LC_NAME -#usr/lib/locale/ar_YE.utf8/LC_NUMERIC -#usr/lib/locale/ar_YE.utf8/LC_PAPER -#usr/lib/locale/ar_YE.utf8/LC_TELEPHONE -#usr/lib/locale/ar_YE.utf8/LC_TIME -#usr/lib/locale/ar_YE/LC_ADDRESS -#usr/lib/locale/ar_YE/LC_COLLATE -#usr/lib/locale/ar_YE/LC_CTYPE -#usr/lib/locale/ar_YE/LC_IDENTIFICATION -#usr/lib/locale/ar_YE/LC_MEASUREMENT -#usr/lib/locale/ar_YE/LC_MESSAGES -#usr/lib/locale/ar_YE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ar_YE/LC_MONETARY -#usr/lib/locale/ar_YE/LC_NAME -#usr/lib/locale/ar_YE/LC_NUMERIC -#usr/lib/locale/ar_YE/LC_PAPER -#usr/lib/locale/ar_YE/LC_TELEPHONE -#usr/lib/locale/ar_YE/LC_TIME -#usr/lib/locale/as_IN -#usr/lib/locale/as_IN/LC_ADDRESS -#usr/lib/locale/as_IN/LC_COLLATE -#usr/lib/locale/as_IN/LC_CTYPE -#usr/lib/locale/as_IN/LC_IDENTIFICATION -#usr/lib/locale/as_IN/LC_MEASUREMENT -#usr/lib/locale/as_IN/LC_MESSAGES -#usr/lib/locale/as_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/as_IN/LC_MONETARY -#usr/lib/locale/as_IN/LC_NAME -#usr/lib/locale/as_IN/LC_NUMERIC -#usr/lib/locale/as_IN/LC_PAPER -#usr/lib/locale/as_IN/LC_TELEPHONE -#usr/lib/locale/as_IN/LC_TIME -#usr/lib/locale/ast_ES -#usr/lib/locale/ast_ES.utf8 -#usr/lib/locale/ast_ES.utf8/LC_ADDRESS -#usr/lib/locale/ast_ES.utf8/LC_COLLATE -#usr/lib/locale/ast_ES.utf8/LC_CTYPE -#usr/lib/locale/ast_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/ast_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/ast_ES.utf8/LC_MESSAGES -#usr/lib/locale/ast_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ast_ES.utf8/LC_MONETARY -#usr/lib/locale/ast_ES.utf8/LC_NAME -#usr/lib/locale/ast_ES.utf8/LC_NUMERIC -#usr/lib/locale/ast_ES.utf8/LC_PAPER -#usr/lib/locale/ast_ES.utf8/LC_TELEPHONE -#usr/lib/locale/ast_ES.utf8/LC_TIME -#usr/lib/locale/ast_ES/LC_ADDRESS -#usr/lib/locale/ast_ES/LC_COLLATE -#usr/lib/locale/ast_ES/LC_CTYPE -#usr/lib/locale/ast_ES/LC_IDENTIFICATION -#usr/lib/locale/ast_ES/LC_MEASUREMENT -#usr/lib/locale/ast_ES/LC_MESSAGES -#usr/lib/locale/ast_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ast_ES/LC_MONETARY -#usr/lib/locale/ast_ES/LC_NAME -#usr/lib/locale/ast_ES/LC_NUMERIC -#usr/lib/locale/ast_ES/LC_PAPER -#usr/lib/locale/ast_ES/LC_TELEPHONE -#usr/lib/locale/ast_ES/LC_TIME -#usr/lib/locale/az_AZ -#usr/lib/locale/az_AZ/LC_ADDRESS -#usr/lib/locale/az_AZ/LC_COLLATE -#usr/lib/locale/az_AZ/LC_CTYPE -#usr/lib/locale/az_AZ/LC_IDENTIFICATION -#usr/lib/locale/az_AZ/LC_MEASUREMENT -#usr/lib/locale/az_AZ/LC_MESSAGES -#usr/lib/locale/az_AZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/az_AZ/LC_MONETARY -#usr/lib/locale/az_AZ/LC_NAME -#usr/lib/locale/az_AZ/LC_NUMERIC -#usr/lib/locale/az_AZ/LC_PAPER -#usr/lib/locale/az_AZ/LC_TELEPHONE -#usr/lib/locale/az_AZ/LC_TIME -#usr/lib/locale/be_BY -#usr/lib/locale/be_BY.utf8 -#usr/lib/locale/be_BY.utf8/LC_ADDRESS -#usr/lib/locale/be_BY.utf8/LC_COLLATE -#usr/lib/locale/be_BY.utf8/LC_CTYPE -#usr/lib/locale/be_BY.utf8/LC_IDENTIFICATION -#usr/lib/locale/be_BY.utf8/LC_MEASUREMENT -#usr/lib/locale/be_BY.utf8/LC_MESSAGES -#usr/lib/locale/be_BY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY.utf8/LC_MONETARY -#usr/lib/locale/be_BY.utf8/LC_NAME -#usr/lib/locale/be_BY.utf8/LC_NUMERIC -#usr/lib/locale/be_BY.utf8/LC_PAPER -#usr/lib/locale/be_BY.utf8/LC_TELEPHONE -#usr/lib/locale/be_BY.utf8/LC_TIME -#usr/lib/locale/be_BY/LC_ADDRESS -#usr/lib/locale/be_BY/LC_COLLATE -#usr/lib/locale/be_BY/LC_CTYPE -#usr/lib/locale/be_BY/LC_IDENTIFICATION -#usr/lib/locale/be_BY/LC_MEASUREMENT -#usr/lib/locale/be_BY/LC_MESSAGES -#usr/lib/locale/be_BY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY/LC_MONETARY -#usr/lib/locale/be_BY/LC_NAME -#usr/lib/locale/be_BY/LC_NUMERIC -#usr/lib/locale/be_BY/LC_PAPER -#usr/lib/locale/be_BY/LC_TELEPHONE -#usr/lib/locale/be_BY/LC_TIME -#usr/lib/locale/be_BY@latin -#usr/lib/locale/be_BY@latin/LC_ADDRESS -#usr/lib/locale/be_BY@latin/LC_COLLATE -#usr/lib/locale/be_BY@latin/LC_CTYPE -#usr/lib/locale/be_BY@latin/LC_IDENTIFICATION -#usr/lib/locale/be_BY@latin/LC_MEASUREMENT -#usr/lib/locale/be_BY@latin/LC_MESSAGES -#usr/lib/locale/be_BY@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/be_BY@latin/LC_MONETARY -#usr/lib/locale/be_BY@latin/LC_NAME -#usr/lib/locale/be_BY@latin/LC_NUMERIC -#usr/lib/locale/be_BY@latin/LC_PAPER -#usr/lib/locale/be_BY@latin/LC_TELEPHONE -#usr/lib/locale/be_BY@latin/LC_TIME -#usr/lib/locale/ber_DZ -#usr/lib/locale/ber_DZ/LC_ADDRESS -#usr/lib/locale/ber_DZ/LC_COLLATE -#usr/lib/locale/ber_DZ/LC_CTYPE -#usr/lib/locale/ber_DZ/LC_IDENTIFICATION -#usr/lib/locale/ber_DZ/LC_MEASUREMENT -#usr/lib/locale/ber_DZ/LC_MESSAGES -#usr/lib/locale/ber_DZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ber_DZ/LC_MONETARY -#usr/lib/locale/ber_DZ/LC_NAME -#usr/lib/locale/ber_DZ/LC_NUMERIC -#usr/lib/locale/ber_DZ/LC_PAPER -#usr/lib/locale/ber_DZ/LC_TELEPHONE -#usr/lib/locale/ber_DZ/LC_TIME -#usr/lib/locale/ber_MA -#usr/lib/locale/ber_MA/LC_ADDRESS -#usr/lib/locale/ber_MA/LC_COLLATE -#usr/lib/locale/ber_MA/LC_CTYPE -#usr/lib/locale/ber_MA/LC_IDENTIFICATION -#usr/lib/locale/ber_MA/LC_MEASUREMENT -#usr/lib/locale/ber_MA/LC_MESSAGES -#usr/lib/locale/ber_MA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ber_MA/LC_MONETARY -#usr/lib/locale/ber_MA/LC_NAME -#usr/lib/locale/ber_MA/LC_NUMERIC -#usr/lib/locale/ber_MA/LC_PAPER -#usr/lib/locale/ber_MA/LC_TELEPHONE -#usr/lib/locale/ber_MA/LC_TIME -#usr/lib/locale/bg_BG -#usr/lib/locale/bg_BG.utf8 -#usr/lib/locale/bg_BG.utf8/LC_ADDRESS -#usr/lib/locale/bg_BG.utf8/LC_COLLATE -#usr/lib/locale/bg_BG.utf8/LC_CTYPE -#usr/lib/locale/bg_BG.utf8/LC_IDENTIFICATION -#usr/lib/locale/bg_BG.utf8/LC_MEASUREMENT -#usr/lib/locale/bg_BG.utf8/LC_MESSAGES -#usr/lib/locale/bg_BG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bg_BG.utf8/LC_MONETARY -#usr/lib/locale/bg_BG.utf8/LC_NAME -#usr/lib/locale/bg_BG.utf8/LC_NUMERIC -#usr/lib/locale/bg_BG.utf8/LC_PAPER -#usr/lib/locale/bg_BG.utf8/LC_TELEPHONE -#usr/lib/locale/bg_BG.utf8/LC_TIME -#usr/lib/locale/bg_BG/LC_ADDRESS -#usr/lib/locale/bg_BG/LC_COLLATE -#usr/lib/locale/bg_BG/LC_CTYPE -#usr/lib/locale/bg_BG/LC_IDENTIFICATION -#usr/lib/locale/bg_BG/LC_MEASUREMENT -#usr/lib/locale/bg_BG/LC_MESSAGES -#usr/lib/locale/bg_BG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bg_BG/LC_MONETARY -#usr/lib/locale/bg_BG/LC_NAME -#usr/lib/locale/bg_BG/LC_NUMERIC -#usr/lib/locale/bg_BG/LC_PAPER -#usr/lib/locale/bg_BG/LC_TELEPHONE -#usr/lib/locale/bg_BG/LC_TIME -#usr/lib/locale/bn_BD -#usr/lib/locale/bn_BD/LC_ADDRESS -#usr/lib/locale/bn_BD/LC_COLLATE -#usr/lib/locale/bn_BD/LC_CTYPE -#usr/lib/locale/bn_BD/LC_IDENTIFICATION -#usr/lib/locale/bn_BD/LC_MEASUREMENT -#usr/lib/locale/bn_BD/LC_MESSAGES -#usr/lib/locale/bn_BD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bn_BD/LC_MONETARY -#usr/lib/locale/bn_BD/LC_NAME -#usr/lib/locale/bn_BD/LC_NUMERIC -#usr/lib/locale/bn_BD/LC_PAPER -#usr/lib/locale/bn_BD/LC_TELEPHONE -#usr/lib/locale/bn_BD/LC_TIME -#usr/lib/locale/bn_IN -#usr/lib/locale/bn_IN/LC_ADDRESS -#usr/lib/locale/bn_IN/LC_COLLATE -#usr/lib/locale/bn_IN/LC_CTYPE -#usr/lib/locale/bn_IN/LC_IDENTIFICATION -#usr/lib/locale/bn_IN/LC_MEASUREMENT -#usr/lib/locale/bn_IN/LC_MESSAGES -#usr/lib/locale/bn_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bn_IN/LC_MONETARY -#usr/lib/locale/bn_IN/LC_NAME -#usr/lib/locale/bn_IN/LC_NUMERIC -#usr/lib/locale/bn_IN/LC_PAPER -#usr/lib/locale/bn_IN/LC_TELEPHONE -#usr/lib/locale/bn_IN/LC_TIME -#usr/lib/locale/bo_CN -#usr/lib/locale/bo_CN/LC_ADDRESS -#usr/lib/locale/bo_CN/LC_COLLATE -#usr/lib/locale/bo_CN/LC_CTYPE -#usr/lib/locale/bo_CN/LC_IDENTIFICATION -#usr/lib/locale/bo_CN/LC_MEASUREMENT -#usr/lib/locale/bo_CN/LC_MESSAGES -#usr/lib/locale/bo_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bo_CN/LC_MONETARY -#usr/lib/locale/bo_CN/LC_NAME -#usr/lib/locale/bo_CN/LC_NUMERIC -#usr/lib/locale/bo_CN/LC_PAPER -#usr/lib/locale/bo_CN/LC_TELEPHONE -#usr/lib/locale/bo_CN/LC_TIME -#usr/lib/locale/bo_IN -#usr/lib/locale/bo_IN/LC_ADDRESS -#usr/lib/locale/bo_IN/LC_COLLATE -#usr/lib/locale/bo_IN/LC_CTYPE -#usr/lib/locale/bo_IN/LC_IDENTIFICATION -#usr/lib/locale/bo_IN/LC_MEASUREMENT -#usr/lib/locale/bo_IN/LC_MESSAGES -#usr/lib/locale/bo_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bo_IN/LC_MONETARY -#usr/lib/locale/bo_IN/LC_NAME -#usr/lib/locale/bo_IN/LC_NUMERIC -#usr/lib/locale/bo_IN/LC_PAPER -#usr/lib/locale/bo_IN/LC_TELEPHONE -#usr/lib/locale/bo_IN/LC_TIME -#usr/lib/locale/br_FR -#usr/lib/locale/br_FR.utf8 -#usr/lib/locale/br_FR.utf8/LC_ADDRESS -#usr/lib/locale/br_FR.utf8/LC_COLLATE -#usr/lib/locale/br_FR.utf8/LC_CTYPE -#usr/lib/locale/br_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/br_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/br_FR.utf8/LC_MESSAGES -#usr/lib/locale/br_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR.utf8/LC_MONETARY -#usr/lib/locale/br_FR.utf8/LC_NAME -#usr/lib/locale/br_FR.utf8/LC_NUMERIC -#usr/lib/locale/br_FR.utf8/LC_PAPER -#usr/lib/locale/br_FR.utf8/LC_TELEPHONE -#usr/lib/locale/br_FR.utf8/LC_TIME -#usr/lib/locale/br_FR/LC_ADDRESS -#usr/lib/locale/br_FR/LC_COLLATE -#usr/lib/locale/br_FR/LC_CTYPE -#usr/lib/locale/br_FR/LC_IDENTIFICATION -#usr/lib/locale/br_FR/LC_MEASUREMENT -#usr/lib/locale/br_FR/LC_MESSAGES -#usr/lib/locale/br_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR/LC_MONETARY -#usr/lib/locale/br_FR/LC_NAME -#usr/lib/locale/br_FR/LC_NUMERIC -#usr/lib/locale/br_FR/LC_PAPER -#usr/lib/locale/br_FR/LC_TELEPHONE -#usr/lib/locale/br_FR/LC_TIME -#usr/lib/locale/br_FR@euro -#usr/lib/locale/br_FR@euro/LC_ADDRESS -#usr/lib/locale/br_FR@euro/LC_COLLATE -#usr/lib/locale/br_FR@euro/LC_CTYPE -#usr/lib/locale/br_FR@euro/LC_IDENTIFICATION -#usr/lib/locale/br_FR@euro/LC_MEASUREMENT -#usr/lib/locale/br_FR@euro/LC_MESSAGES -#usr/lib/locale/br_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/br_FR@euro/LC_MONETARY -#usr/lib/locale/br_FR@euro/LC_NAME -#usr/lib/locale/br_FR@euro/LC_NUMERIC -#usr/lib/locale/br_FR@euro/LC_PAPER -#usr/lib/locale/br_FR@euro/LC_TELEPHONE -#usr/lib/locale/br_FR@euro/LC_TIME -#usr/lib/locale/bs_BA -#usr/lib/locale/bs_BA.utf8 -#usr/lib/locale/bs_BA.utf8/LC_ADDRESS -#usr/lib/locale/bs_BA.utf8/LC_COLLATE -#usr/lib/locale/bs_BA.utf8/LC_CTYPE -#usr/lib/locale/bs_BA.utf8/LC_IDENTIFICATION -#usr/lib/locale/bs_BA.utf8/LC_MEASUREMENT -#usr/lib/locale/bs_BA.utf8/LC_MESSAGES -#usr/lib/locale/bs_BA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bs_BA.utf8/LC_MONETARY -#usr/lib/locale/bs_BA.utf8/LC_NAME -#usr/lib/locale/bs_BA.utf8/LC_NUMERIC -#usr/lib/locale/bs_BA.utf8/LC_PAPER -#usr/lib/locale/bs_BA.utf8/LC_TELEPHONE -#usr/lib/locale/bs_BA.utf8/LC_TIME -#usr/lib/locale/bs_BA/LC_ADDRESS -#usr/lib/locale/bs_BA/LC_COLLATE -#usr/lib/locale/bs_BA/LC_CTYPE -#usr/lib/locale/bs_BA/LC_IDENTIFICATION -#usr/lib/locale/bs_BA/LC_MEASUREMENT -#usr/lib/locale/bs_BA/LC_MESSAGES -#usr/lib/locale/bs_BA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/bs_BA/LC_MONETARY -#usr/lib/locale/bs_BA/LC_NAME -#usr/lib/locale/bs_BA/LC_NUMERIC -#usr/lib/locale/bs_BA/LC_PAPER -#usr/lib/locale/bs_BA/LC_TELEPHONE -#usr/lib/locale/bs_BA/LC_TIME -#usr/lib/locale/byn_ER -#usr/lib/locale/byn_ER/LC_ADDRESS -#usr/lib/locale/byn_ER/LC_COLLATE -#usr/lib/locale/byn_ER/LC_CTYPE -#usr/lib/locale/byn_ER/LC_IDENTIFICATION -#usr/lib/locale/byn_ER/LC_MEASUREMENT -#usr/lib/locale/byn_ER/LC_MESSAGES -#usr/lib/locale/byn_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/byn_ER/LC_MONETARY -#usr/lib/locale/byn_ER/LC_NAME -#usr/lib/locale/byn_ER/LC_NUMERIC -#usr/lib/locale/byn_ER/LC_PAPER -#usr/lib/locale/byn_ER/LC_TELEPHONE -#usr/lib/locale/byn_ER/LC_TIME -#usr/lib/locale/ca_AD -#usr/lib/locale/ca_AD.utf8 -#usr/lib/locale/ca_AD.utf8/LC_ADDRESS -#usr/lib/locale/ca_AD.utf8/LC_COLLATE -#usr/lib/locale/ca_AD.utf8/LC_CTYPE -#usr/lib/locale/ca_AD.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_AD.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_AD.utf8/LC_MESSAGES -#usr/lib/locale/ca_AD.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_AD.utf8/LC_MONETARY -#usr/lib/locale/ca_AD.utf8/LC_NAME -#usr/lib/locale/ca_AD.utf8/LC_NUMERIC -#usr/lib/locale/ca_AD.utf8/LC_PAPER -#usr/lib/locale/ca_AD.utf8/LC_TELEPHONE -#usr/lib/locale/ca_AD.utf8/LC_TIME -#usr/lib/locale/ca_AD/LC_ADDRESS -#usr/lib/locale/ca_AD/LC_COLLATE -#usr/lib/locale/ca_AD/LC_CTYPE -#usr/lib/locale/ca_AD/LC_IDENTIFICATION -#usr/lib/locale/ca_AD/LC_MEASUREMENT -#usr/lib/locale/ca_AD/LC_MESSAGES -#usr/lib/locale/ca_AD/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_AD/LC_MONETARY -#usr/lib/locale/ca_AD/LC_NAME -#usr/lib/locale/ca_AD/LC_NUMERIC -#usr/lib/locale/ca_AD/LC_PAPER -#usr/lib/locale/ca_AD/LC_TELEPHONE -#usr/lib/locale/ca_AD/LC_TIME -#usr/lib/locale/ca_ES -#usr/lib/locale/ca_ES.utf8 -#usr/lib/locale/ca_ES.utf8/LC_ADDRESS -#usr/lib/locale/ca_ES.utf8/LC_COLLATE -#usr/lib/locale/ca_ES.utf8/LC_CTYPE -#usr/lib/locale/ca_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_ES.utf8/LC_MESSAGES -#usr/lib/locale/ca_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES.utf8/LC_MONETARY -#usr/lib/locale/ca_ES.utf8/LC_NAME -#usr/lib/locale/ca_ES.utf8/LC_NUMERIC -#usr/lib/locale/ca_ES.utf8/LC_PAPER -#usr/lib/locale/ca_ES.utf8/LC_TELEPHONE -#usr/lib/locale/ca_ES.utf8/LC_TIME -#usr/lib/locale/ca_ES/LC_ADDRESS -#usr/lib/locale/ca_ES/LC_COLLATE -#usr/lib/locale/ca_ES/LC_CTYPE -#usr/lib/locale/ca_ES/LC_IDENTIFICATION -#usr/lib/locale/ca_ES/LC_MEASUREMENT -#usr/lib/locale/ca_ES/LC_MESSAGES -#usr/lib/locale/ca_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES/LC_MONETARY -#usr/lib/locale/ca_ES/LC_NAME -#usr/lib/locale/ca_ES/LC_NUMERIC -#usr/lib/locale/ca_ES/LC_PAPER -#usr/lib/locale/ca_ES/LC_TELEPHONE -#usr/lib/locale/ca_ES/LC_TIME -#usr/lib/locale/ca_ES@euro -#usr/lib/locale/ca_ES@euro/LC_ADDRESS -#usr/lib/locale/ca_ES@euro/LC_COLLATE -#usr/lib/locale/ca_ES@euro/LC_CTYPE -#usr/lib/locale/ca_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/ca_ES@euro/LC_MEASUREMENT -#usr/lib/locale/ca_ES@euro/LC_MESSAGES -#usr/lib/locale/ca_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_ES@euro/LC_MONETARY -#usr/lib/locale/ca_ES@euro/LC_NAME -#usr/lib/locale/ca_ES@euro/LC_NUMERIC -#usr/lib/locale/ca_ES@euro/LC_PAPER -#usr/lib/locale/ca_ES@euro/LC_TELEPHONE -#usr/lib/locale/ca_ES@euro/LC_TIME -#usr/lib/locale/ca_FR -#usr/lib/locale/ca_FR.utf8 -#usr/lib/locale/ca_FR.utf8/LC_ADDRESS -#usr/lib/locale/ca_FR.utf8/LC_COLLATE -#usr/lib/locale/ca_FR.utf8/LC_CTYPE -#usr/lib/locale/ca_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_FR.utf8/LC_MESSAGES -#usr/lib/locale/ca_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_FR.utf8/LC_MONETARY -#usr/lib/locale/ca_FR.utf8/LC_NAME -#usr/lib/locale/ca_FR.utf8/LC_NUMERIC -#usr/lib/locale/ca_FR.utf8/LC_PAPER -#usr/lib/locale/ca_FR.utf8/LC_TELEPHONE -#usr/lib/locale/ca_FR.utf8/LC_TIME -#usr/lib/locale/ca_FR/LC_ADDRESS -#usr/lib/locale/ca_FR/LC_COLLATE -#usr/lib/locale/ca_FR/LC_CTYPE -#usr/lib/locale/ca_FR/LC_IDENTIFICATION -#usr/lib/locale/ca_FR/LC_MEASUREMENT -#usr/lib/locale/ca_FR/LC_MESSAGES -#usr/lib/locale/ca_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_FR/LC_MONETARY -#usr/lib/locale/ca_FR/LC_NAME -#usr/lib/locale/ca_FR/LC_NUMERIC -#usr/lib/locale/ca_FR/LC_PAPER -#usr/lib/locale/ca_FR/LC_TELEPHONE -#usr/lib/locale/ca_FR/LC_TIME -#usr/lib/locale/ca_IT -#usr/lib/locale/ca_IT.utf8 -#usr/lib/locale/ca_IT.utf8/LC_ADDRESS -#usr/lib/locale/ca_IT.utf8/LC_COLLATE -#usr/lib/locale/ca_IT.utf8/LC_CTYPE -#usr/lib/locale/ca_IT.utf8/LC_IDENTIFICATION -#usr/lib/locale/ca_IT.utf8/LC_MEASUREMENT -#usr/lib/locale/ca_IT.utf8/LC_MESSAGES -#usr/lib/locale/ca_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_IT.utf8/LC_MONETARY -#usr/lib/locale/ca_IT.utf8/LC_NAME -#usr/lib/locale/ca_IT.utf8/LC_NUMERIC -#usr/lib/locale/ca_IT.utf8/LC_PAPER -#usr/lib/locale/ca_IT.utf8/LC_TELEPHONE -#usr/lib/locale/ca_IT.utf8/LC_TIME -#usr/lib/locale/ca_IT/LC_ADDRESS -#usr/lib/locale/ca_IT/LC_COLLATE -#usr/lib/locale/ca_IT/LC_CTYPE -#usr/lib/locale/ca_IT/LC_IDENTIFICATION -#usr/lib/locale/ca_IT/LC_MEASUREMENT -#usr/lib/locale/ca_IT/LC_MESSAGES -#usr/lib/locale/ca_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ca_IT/LC_MONETARY -#usr/lib/locale/ca_IT/LC_NAME -#usr/lib/locale/ca_IT/LC_NUMERIC -#usr/lib/locale/ca_IT/LC_PAPER -#usr/lib/locale/ca_IT/LC_TELEPHONE -#usr/lib/locale/ca_IT/LC_TIME -#usr/lib/locale/crh_UA -#usr/lib/locale/crh_UA/LC_ADDRESS -#usr/lib/locale/crh_UA/LC_COLLATE -#usr/lib/locale/crh_UA/LC_CTYPE -#usr/lib/locale/crh_UA/LC_IDENTIFICATION -#usr/lib/locale/crh_UA/LC_MEASUREMENT -#usr/lib/locale/crh_UA/LC_MESSAGES -#usr/lib/locale/crh_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/crh_UA/LC_MONETARY -#usr/lib/locale/crh_UA/LC_NAME -#usr/lib/locale/crh_UA/LC_NUMERIC -#usr/lib/locale/crh_UA/LC_PAPER -#usr/lib/locale/crh_UA/LC_TELEPHONE -#usr/lib/locale/crh_UA/LC_TIME -#usr/lib/locale/cs_CZ -#usr/lib/locale/cs_CZ.utf8 -#usr/lib/locale/cs_CZ.utf8/LC_ADDRESS -#usr/lib/locale/cs_CZ.utf8/LC_COLLATE -#usr/lib/locale/cs_CZ.utf8/LC_CTYPE -#usr/lib/locale/cs_CZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/cs_CZ.utf8/LC_MEASUREMENT -#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES -#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cs_CZ.utf8/LC_MONETARY -#usr/lib/locale/cs_CZ.utf8/LC_NAME -#usr/lib/locale/cs_CZ.utf8/LC_NUMERIC -#usr/lib/locale/cs_CZ.utf8/LC_PAPER -#usr/lib/locale/cs_CZ.utf8/LC_TELEPHONE -#usr/lib/locale/cs_CZ.utf8/LC_TIME -#usr/lib/locale/cs_CZ/LC_ADDRESS -#usr/lib/locale/cs_CZ/LC_COLLATE -#usr/lib/locale/cs_CZ/LC_CTYPE -#usr/lib/locale/cs_CZ/LC_IDENTIFICATION -#usr/lib/locale/cs_CZ/LC_MEASUREMENT -#usr/lib/locale/cs_CZ/LC_MESSAGES -#usr/lib/locale/cs_CZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cs_CZ/LC_MONETARY -#usr/lib/locale/cs_CZ/LC_NAME -#usr/lib/locale/cs_CZ/LC_NUMERIC -#usr/lib/locale/cs_CZ/LC_PAPER -#usr/lib/locale/cs_CZ/LC_TELEPHONE -#usr/lib/locale/cs_CZ/LC_TIME -#usr/lib/locale/csb_PL -#usr/lib/locale/csb_PL/LC_ADDRESS -#usr/lib/locale/csb_PL/LC_COLLATE -#usr/lib/locale/csb_PL/LC_CTYPE -#usr/lib/locale/csb_PL/LC_IDENTIFICATION -#usr/lib/locale/csb_PL/LC_MEASUREMENT -#usr/lib/locale/csb_PL/LC_MESSAGES -#usr/lib/locale/csb_PL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/csb_PL/LC_MONETARY -#usr/lib/locale/csb_PL/LC_NAME -#usr/lib/locale/csb_PL/LC_NUMERIC -#usr/lib/locale/csb_PL/LC_PAPER -#usr/lib/locale/csb_PL/LC_TELEPHONE -#usr/lib/locale/csb_PL/LC_TIME -#usr/lib/locale/cv_RU -#usr/lib/locale/cv_RU/LC_ADDRESS -#usr/lib/locale/cv_RU/LC_COLLATE -#usr/lib/locale/cv_RU/LC_CTYPE -#usr/lib/locale/cv_RU/LC_IDENTIFICATION -#usr/lib/locale/cv_RU/LC_MEASUREMENT -#usr/lib/locale/cv_RU/LC_MESSAGES -#usr/lib/locale/cv_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cv_RU/LC_MONETARY -#usr/lib/locale/cv_RU/LC_NAME -#usr/lib/locale/cv_RU/LC_NUMERIC -#usr/lib/locale/cv_RU/LC_PAPER -#usr/lib/locale/cv_RU/LC_TELEPHONE -#usr/lib/locale/cv_RU/LC_TIME -#usr/lib/locale/cy_GB -#usr/lib/locale/cy_GB.utf8 -#usr/lib/locale/cy_GB.utf8/LC_ADDRESS -#usr/lib/locale/cy_GB.utf8/LC_COLLATE -#usr/lib/locale/cy_GB.utf8/LC_CTYPE -#usr/lib/locale/cy_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/cy_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/cy_GB.utf8/LC_MESSAGES -#usr/lib/locale/cy_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cy_GB.utf8/LC_MONETARY -#usr/lib/locale/cy_GB.utf8/LC_NAME -#usr/lib/locale/cy_GB.utf8/LC_NUMERIC -#usr/lib/locale/cy_GB.utf8/LC_PAPER -#usr/lib/locale/cy_GB.utf8/LC_TELEPHONE -#usr/lib/locale/cy_GB.utf8/LC_TIME -#usr/lib/locale/cy_GB/LC_ADDRESS -#usr/lib/locale/cy_GB/LC_COLLATE -#usr/lib/locale/cy_GB/LC_CTYPE -#usr/lib/locale/cy_GB/LC_IDENTIFICATION -#usr/lib/locale/cy_GB/LC_MEASUREMENT -#usr/lib/locale/cy_GB/LC_MESSAGES -#usr/lib/locale/cy_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/cy_GB/LC_MONETARY -#usr/lib/locale/cy_GB/LC_NAME -#usr/lib/locale/cy_GB/LC_NUMERIC -#usr/lib/locale/cy_GB/LC_PAPER -#usr/lib/locale/cy_GB/LC_TELEPHONE -#usr/lib/locale/cy_GB/LC_TIME -#usr/lib/locale/da_DK -#usr/lib/locale/da_DK.iso885915 -#usr/lib/locale/da_DK.iso885915/LC_ADDRESS -#usr/lib/locale/da_DK.iso885915/LC_COLLATE -#usr/lib/locale/da_DK.iso885915/LC_CTYPE -#usr/lib/locale/da_DK.iso885915/LC_IDENTIFICATION -#usr/lib/locale/da_DK.iso885915/LC_MEASUREMENT -#usr/lib/locale/da_DK.iso885915/LC_MESSAGES -#usr/lib/locale/da_DK.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK.iso885915/LC_MONETARY -#usr/lib/locale/da_DK.iso885915/LC_NAME -#usr/lib/locale/da_DK.iso885915/LC_NUMERIC -#usr/lib/locale/da_DK.iso885915/LC_PAPER -#usr/lib/locale/da_DK.iso885915/LC_TELEPHONE -#usr/lib/locale/da_DK.iso885915/LC_TIME -#usr/lib/locale/da_DK.utf8 -#usr/lib/locale/da_DK.utf8/LC_ADDRESS -#usr/lib/locale/da_DK.utf8/LC_COLLATE -#usr/lib/locale/da_DK.utf8/LC_CTYPE -#usr/lib/locale/da_DK.utf8/LC_IDENTIFICATION -#usr/lib/locale/da_DK.utf8/LC_MEASUREMENT -#usr/lib/locale/da_DK.utf8/LC_MESSAGES -#usr/lib/locale/da_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK.utf8/LC_MONETARY -#usr/lib/locale/da_DK.utf8/LC_NAME -#usr/lib/locale/da_DK.utf8/LC_NUMERIC -#usr/lib/locale/da_DK.utf8/LC_PAPER -#usr/lib/locale/da_DK.utf8/LC_TELEPHONE -#usr/lib/locale/da_DK.utf8/LC_TIME -#usr/lib/locale/da_DK/LC_ADDRESS -#usr/lib/locale/da_DK/LC_COLLATE -#usr/lib/locale/da_DK/LC_CTYPE -#usr/lib/locale/da_DK/LC_IDENTIFICATION -#usr/lib/locale/da_DK/LC_MEASUREMENT -#usr/lib/locale/da_DK/LC_MESSAGES -#usr/lib/locale/da_DK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/da_DK/LC_MONETARY -#usr/lib/locale/da_DK/LC_NAME -#usr/lib/locale/da_DK/LC_NUMERIC -#usr/lib/locale/da_DK/LC_PAPER -#usr/lib/locale/da_DK/LC_TELEPHONE -#usr/lib/locale/da_DK/LC_TIME -#usr/lib/locale/de_AT -#usr/lib/locale/de_AT.utf8 -#usr/lib/locale/de_AT.utf8/LC_ADDRESS -#usr/lib/locale/de_AT.utf8/LC_COLLATE -#usr/lib/locale/de_AT.utf8/LC_CTYPE -#usr/lib/locale/de_AT.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_AT.utf8/LC_MEASUREMENT -#usr/lib/locale/de_AT.utf8/LC_MESSAGES -#usr/lib/locale/de_AT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT.utf8/LC_MONETARY -#usr/lib/locale/de_AT.utf8/LC_NAME -#usr/lib/locale/de_AT.utf8/LC_NUMERIC -#usr/lib/locale/de_AT.utf8/LC_PAPER -#usr/lib/locale/de_AT.utf8/LC_TELEPHONE -#usr/lib/locale/de_AT.utf8/LC_TIME -#usr/lib/locale/de_AT/LC_ADDRESS -#usr/lib/locale/de_AT/LC_COLLATE -#usr/lib/locale/de_AT/LC_CTYPE -#usr/lib/locale/de_AT/LC_IDENTIFICATION -#usr/lib/locale/de_AT/LC_MEASUREMENT -#usr/lib/locale/de_AT/LC_MESSAGES -#usr/lib/locale/de_AT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT/LC_MONETARY -#usr/lib/locale/de_AT/LC_NAME -#usr/lib/locale/de_AT/LC_NUMERIC -#usr/lib/locale/de_AT/LC_PAPER -#usr/lib/locale/de_AT/LC_TELEPHONE -#usr/lib/locale/de_AT/LC_TIME -#usr/lib/locale/de_AT@euro -#usr/lib/locale/de_AT@euro/LC_ADDRESS -#usr/lib/locale/de_AT@euro/LC_COLLATE -#usr/lib/locale/de_AT@euro/LC_CTYPE -#usr/lib/locale/de_AT@euro/LC_IDENTIFICATION -#usr/lib/locale/de_AT@euro/LC_MEASUREMENT -#usr/lib/locale/de_AT@euro/LC_MESSAGES -#usr/lib/locale/de_AT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_AT@euro/LC_MONETARY -#usr/lib/locale/de_AT@euro/LC_NAME -#usr/lib/locale/de_AT@euro/LC_NUMERIC -#usr/lib/locale/de_AT@euro/LC_PAPER -#usr/lib/locale/de_AT@euro/LC_TELEPHONE -#usr/lib/locale/de_AT@euro/LC_TIME -#usr/lib/locale/de_BE -#usr/lib/locale/de_BE.utf8 -#usr/lib/locale/de_BE.utf8/LC_ADDRESS -#usr/lib/locale/de_BE.utf8/LC_COLLATE -#usr/lib/locale/de_BE.utf8/LC_CTYPE -#usr/lib/locale/de_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/de_BE.utf8/LC_MESSAGES -#usr/lib/locale/de_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE.utf8/LC_MONETARY -#usr/lib/locale/de_BE.utf8/LC_NAME -#usr/lib/locale/de_BE.utf8/LC_NUMERIC -#usr/lib/locale/de_BE.utf8/LC_PAPER -#usr/lib/locale/de_BE.utf8/LC_TELEPHONE -#usr/lib/locale/de_BE.utf8/LC_TIME -#usr/lib/locale/de_BE/LC_ADDRESS -#usr/lib/locale/de_BE/LC_COLLATE -#usr/lib/locale/de_BE/LC_CTYPE -#usr/lib/locale/de_BE/LC_IDENTIFICATION -#usr/lib/locale/de_BE/LC_MEASUREMENT -#usr/lib/locale/de_BE/LC_MESSAGES -#usr/lib/locale/de_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE/LC_MONETARY -#usr/lib/locale/de_BE/LC_NAME -#usr/lib/locale/de_BE/LC_NUMERIC -#usr/lib/locale/de_BE/LC_PAPER -#usr/lib/locale/de_BE/LC_TELEPHONE -#usr/lib/locale/de_BE/LC_TIME -#usr/lib/locale/de_BE@euro -#usr/lib/locale/de_BE@euro/LC_ADDRESS -#usr/lib/locale/de_BE@euro/LC_COLLATE -#usr/lib/locale/de_BE@euro/LC_CTYPE -#usr/lib/locale/de_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/de_BE@euro/LC_MEASUREMENT -#usr/lib/locale/de_BE@euro/LC_MESSAGES -#usr/lib/locale/de_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_BE@euro/LC_MONETARY -#usr/lib/locale/de_BE@euro/LC_NAME -#usr/lib/locale/de_BE@euro/LC_NUMERIC -#usr/lib/locale/de_BE@euro/LC_PAPER -#usr/lib/locale/de_BE@euro/LC_TELEPHONE -#usr/lib/locale/de_BE@euro/LC_TIME -#usr/lib/locale/de_CH -#usr/lib/locale/de_CH.utf8 -#usr/lib/locale/de_CH.utf8/LC_ADDRESS -#usr/lib/locale/de_CH.utf8/LC_COLLATE -#usr/lib/locale/de_CH.utf8/LC_CTYPE -#usr/lib/locale/de_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/de_CH.utf8/LC_MESSAGES -#usr/lib/locale/de_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_CH.utf8/LC_MONETARY -#usr/lib/locale/de_CH.utf8/LC_NAME -#usr/lib/locale/de_CH.utf8/LC_NUMERIC -#usr/lib/locale/de_CH.utf8/LC_PAPER -#usr/lib/locale/de_CH.utf8/LC_TELEPHONE -#usr/lib/locale/de_CH.utf8/LC_TIME -#usr/lib/locale/de_CH/LC_ADDRESS -#usr/lib/locale/de_CH/LC_COLLATE -#usr/lib/locale/de_CH/LC_CTYPE -#usr/lib/locale/de_CH/LC_IDENTIFICATION -#usr/lib/locale/de_CH/LC_MEASUREMENT -#usr/lib/locale/de_CH/LC_MESSAGES -#usr/lib/locale/de_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_CH/LC_MONETARY -#usr/lib/locale/de_CH/LC_NAME -#usr/lib/locale/de_CH/LC_NUMERIC -#usr/lib/locale/de_CH/LC_PAPER -#usr/lib/locale/de_CH/LC_TELEPHONE -#usr/lib/locale/de_CH/LC_TIME -#usr/lib/locale/de_DE -#usr/lib/locale/de_DE.utf8 -#usr/lib/locale/de_DE.utf8/LC_ADDRESS -#usr/lib/locale/de_DE.utf8/LC_COLLATE -#usr/lib/locale/de_DE.utf8/LC_CTYPE -#usr/lib/locale/de_DE.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_DE.utf8/LC_MEASUREMENT -#usr/lib/locale/de_DE.utf8/LC_MESSAGES -#usr/lib/locale/de_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE.utf8/LC_MONETARY -#usr/lib/locale/de_DE.utf8/LC_NAME -#usr/lib/locale/de_DE.utf8/LC_NUMERIC -#usr/lib/locale/de_DE.utf8/LC_PAPER -#usr/lib/locale/de_DE.utf8/LC_TELEPHONE -#usr/lib/locale/de_DE.utf8/LC_TIME -#usr/lib/locale/de_DE/LC_ADDRESS -#usr/lib/locale/de_DE/LC_COLLATE -#usr/lib/locale/de_DE/LC_CTYPE -#usr/lib/locale/de_DE/LC_IDENTIFICATION -#usr/lib/locale/de_DE/LC_MEASUREMENT -#usr/lib/locale/de_DE/LC_MESSAGES -#usr/lib/locale/de_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE/LC_MONETARY -#usr/lib/locale/de_DE/LC_NAME -#usr/lib/locale/de_DE/LC_NUMERIC -#usr/lib/locale/de_DE/LC_PAPER -#usr/lib/locale/de_DE/LC_TELEPHONE -#usr/lib/locale/de_DE/LC_TIME -#usr/lib/locale/de_DE@euro -#usr/lib/locale/de_DE@euro/LC_ADDRESS -#usr/lib/locale/de_DE@euro/LC_COLLATE -#usr/lib/locale/de_DE@euro/LC_CTYPE -#usr/lib/locale/de_DE@euro/LC_IDENTIFICATION -#usr/lib/locale/de_DE@euro/LC_MEASUREMENT -#usr/lib/locale/de_DE@euro/LC_MESSAGES -#usr/lib/locale/de_DE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_DE@euro/LC_MONETARY -#usr/lib/locale/de_DE@euro/LC_NAME -#usr/lib/locale/de_DE@euro/LC_NUMERIC -#usr/lib/locale/de_DE@euro/LC_PAPER -#usr/lib/locale/de_DE@euro/LC_TELEPHONE -#usr/lib/locale/de_DE@euro/LC_TIME -#usr/lib/locale/de_LU -#usr/lib/locale/de_LU.utf8 -#usr/lib/locale/de_LU.utf8/LC_ADDRESS -#usr/lib/locale/de_LU.utf8/LC_COLLATE -#usr/lib/locale/de_LU.utf8/LC_CTYPE -#usr/lib/locale/de_LU.utf8/LC_IDENTIFICATION -#usr/lib/locale/de_LU.utf8/LC_MEASUREMENT -#usr/lib/locale/de_LU.utf8/LC_MESSAGES -#usr/lib/locale/de_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU.utf8/LC_MONETARY -#usr/lib/locale/de_LU.utf8/LC_NAME -#usr/lib/locale/de_LU.utf8/LC_NUMERIC -#usr/lib/locale/de_LU.utf8/LC_PAPER -#usr/lib/locale/de_LU.utf8/LC_TELEPHONE -#usr/lib/locale/de_LU.utf8/LC_TIME -#usr/lib/locale/de_LU/LC_ADDRESS -#usr/lib/locale/de_LU/LC_COLLATE -#usr/lib/locale/de_LU/LC_CTYPE -#usr/lib/locale/de_LU/LC_IDENTIFICATION -#usr/lib/locale/de_LU/LC_MEASUREMENT -#usr/lib/locale/de_LU/LC_MESSAGES -#usr/lib/locale/de_LU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU/LC_MONETARY -#usr/lib/locale/de_LU/LC_NAME -#usr/lib/locale/de_LU/LC_NUMERIC -#usr/lib/locale/de_LU/LC_PAPER -#usr/lib/locale/de_LU/LC_TELEPHONE -#usr/lib/locale/de_LU/LC_TIME -#usr/lib/locale/de_LU@euro -#usr/lib/locale/de_LU@euro/LC_ADDRESS -#usr/lib/locale/de_LU@euro/LC_COLLATE -#usr/lib/locale/de_LU@euro/LC_CTYPE -#usr/lib/locale/de_LU@euro/LC_IDENTIFICATION -#usr/lib/locale/de_LU@euro/LC_MEASUREMENT -#usr/lib/locale/de_LU@euro/LC_MESSAGES -#usr/lib/locale/de_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/de_LU@euro/LC_MONETARY -#usr/lib/locale/de_LU@euro/LC_NAME -#usr/lib/locale/de_LU@euro/LC_NUMERIC -#usr/lib/locale/de_LU@euro/LC_PAPER -#usr/lib/locale/de_LU@euro/LC_TELEPHONE -#usr/lib/locale/de_LU@euro/LC_TIME -#usr/lib/locale/dv_MV -#usr/lib/locale/dv_MV/LC_ADDRESS -#usr/lib/locale/dv_MV/LC_COLLATE -#usr/lib/locale/dv_MV/LC_CTYPE -#usr/lib/locale/dv_MV/LC_IDENTIFICATION -#usr/lib/locale/dv_MV/LC_MEASUREMENT -#usr/lib/locale/dv_MV/LC_MESSAGES -#usr/lib/locale/dv_MV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/dv_MV/LC_MONETARY -#usr/lib/locale/dv_MV/LC_NAME -#usr/lib/locale/dv_MV/LC_NUMERIC -#usr/lib/locale/dv_MV/LC_PAPER -#usr/lib/locale/dv_MV/LC_TELEPHONE -#usr/lib/locale/dv_MV/LC_TIME -#usr/lib/locale/dz_BT -#usr/lib/locale/dz_BT/LC_ADDRESS -#usr/lib/locale/dz_BT/LC_COLLATE -#usr/lib/locale/dz_BT/LC_CTYPE -#usr/lib/locale/dz_BT/LC_IDENTIFICATION -#usr/lib/locale/dz_BT/LC_MEASUREMENT -#usr/lib/locale/dz_BT/LC_MESSAGES -#usr/lib/locale/dz_BT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/dz_BT/LC_MONETARY -#usr/lib/locale/dz_BT/LC_NAME -#usr/lib/locale/dz_BT/LC_NUMERIC -#usr/lib/locale/dz_BT/LC_PAPER -#usr/lib/locale/dz_BT/LC_TELEPHONE -#usr/lib/locale/dz_BT/LC_TIME -#usr/lib/locale/el_CY -#usr/lib/locale/el_CY.utf8 -#usr/lib/locale/el_CY.utf8/LC_ADDRESS -#usr/lib/locale/el_CY.utf8/LC_COLLATE -#usr/lib/locale/el_CY.utf8/LC_CTYPE -#usr/lib/locale/el_CY.utf8/LC_IDENTIFICATION -#usr/lib/locale/el_CY.utf8/LC_MEASUREMENT -#usr/lib/locale/el_CY.utf8/LC_MESSAGES -#usr/lib/locale/el_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_CY.utf8/LC_MONETARY -#usr/lib/locale/el_CY.utf8/LC_NAME -#usr/lib/locale/el_CY.utf8/LC_NUMERIC -#usr/lib/locale/el_CY.utf8/LC_PAPER -#usr/lib/locale/el_CY.utf8/LC_TELEPHONE -#usr/lib/locale/el_CY.utf8/LC_TIME -#usr/lib/locale/el_CY/LC_ADDRESS -#usr/lib/locale/el_CY/LC_COLLATE -#usr/lib/locale/el_CY/LC_CTYPE -#usr/lib/locale/el_CY/LC_IDENTIFICATION -#usr/lib/locale/el_CY/LC_MEASUREMENT -#usr/lib/locale/el_CY/LC_MESSAGES -#usr/lib/locale/el_CY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_CY/LC_MONETARY -#usr/lib/locale/el_CY/LC_NAME -#usr/lib/locale/el_CY/LC_NUMERIC -#usr/lib/locale/el_CY/LC_PAPER -#usr/lib/locale/el_CY/LC_TELEPHONE -#usr/lib/locale/el_CY/LC_TIME -#usr/lib/locale/el_GR -#usr/lib/locale/el_GR.utf8 -#usr/lib/locale/el_GR.utf8/LC_ADDRESS -#usr/lib/locale/el_GR.utf8/LC_COLLATE -#usr/lib/locale/el_GR.utf8/LC_CTYPE -#usr/lib/locale/el_GR.utf8/LC_IDENTIFICATION -#usr/lib/locale/el_GR.utf8/LC_MEASUREMENT -#usr/lib/locale/el_GR.utf8/LC_MESSAGES -#usr/lib/locale/el_GR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_GR.utf8/LC_MONETARY -#usr/lib/locale/el_GR.utf8/LC_NAME -#usr/lib/locale/el_GR.utf8/LC_NUMERIC -#usr/lib/locale/el_GR.utf8/LC_PAPER -#usr/lib/locale/el_GR.utf8/LC_TELEPHONE -#usr/lib/locale/el_GR.utf8/LC_TIME -#usr/lib/locale/el_GR/LC_ADDRESS -#usr/lib/locale/el_GR/LC_COLLATE -#usr/lib/locale/el_GR/LC_CTYPE -#usr/lib/locale/el_GR/LC_IDENTIFICATION -#usr/lib/locale/el_GR/LC_MEASUREMENT -#usr/lib/locale/el_GR/LC_MESSAGES -#usr/lib/locale/el_GR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/el_GR/LC_MONETARY -#usr/lib/locale/el_GR/LC_NAME -#usr/lib/locale/el_GR/LC_NUMERIC -#usr/lib/locale/el_GR/LC_PAPER -#usr/lib/locale/el_GR/LC_TELEPHONE -#usr/lib/locale/el_GR/LC_TIME -#usr/lib/locale/en_AG -#usr/lib/locale/en_AG/LC_ADDRESS -#usr/lib/locale/en_AG/LC_COLLATE -#usr/lib/locale/en_AG/LC_CTYPE -#usr/lib/locale/en_AG/LC_IDENTIFICATION -#usr/lib/locale/en_AG/LC_MEASUREMENT -#usr/lib/locale/en_AG/LC_MESSAGES -#usr/lib/locale/en_AG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AG/LC_MONETARY -#usr/lib/locale/en_AG/LC_NAME -#usr/lib/locale/en_AG/LC_NUMERIC -#usr/lib/locale/en_AG/LC_PAPER -#usr/lib/locale/en_AG/LC_TELEPHONE -#usr/lib/locale/en_AG/LC_TIME -#usr/lib/locale/en_AU -#usr/lib/locale/en_AU.utf8 -#usr/lib/locale/en_AU.utf8/LC_ADDRESS -#usr/lib/locale/en_AU.utf8/LC_COLLATE -#usr/lib/locale/en_AU.utf8/LC_CTYPE -#usr/lib/locale/en_AU.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_AU.utf8/LC_MEASUREMENT -#usr/lib/locale/en_AU.utf8/LC_MESSAGES -#usr/lib/locale/en_AU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AU.utf8/LC_MONETARY -#usr/lib/locale/en_AU.utf8/LC_NAME -#usr/lib/locale/en_AU.utf8/LC_NUMERIC -#usr/lib/locale/en_AU.utf8/LC_PAPER -#usr/lib/locale/en_AU.utf8/LC_TELEPHONE -#usr/lib/locale/en_AU.utf8/LC_TIME -#usr/lib/locale/en_AU/LC_ADDRESS -#usr/lib/locale/en_AU/LC_COLLATE -#usr/lib/locale/en_AU/LC_CTYPE -#usr/lib/locale/en_AU/LC_IDENTIFICATION -#usr/lib/locale/en_AU/LC_MEASUREMENT -#usr/lib/locale/en_AU/LC_MESSAGES -#usr/lib/locale/en_AU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_AU/LC_MONETARY -#usr/lib/locale/en_AU/LC_NAME -#usr/lib/locale/en_AU/LC_NUMERIC -#usr/lib/locale/en_AU/LC_PAPER -#usr/lib/locale/en_AU/LC_TELEPHONE -#usr/lib/locale/en_AU/LC_TIME -#usr/lib/locale/en_BW -#usr/lib/locale/en_BW.utf8 -#usr/lib/locale/en_BW.utf8/LC_ADDRESS -#usr/lib/locale/en_BW.utf8/LC_COLLATE -#usr/lib/locale/en_BW.utf8/LC_CTYPE -#usr/lib/locale/en_BW.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_BW.utf8/LC_MEASUREMENT -#usr/lib/locale/en_BW.utf8/LC_MESSAGES -#usr/lib/locale/en_BW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_BW.utf8/LC_MONETARY -#usr/lib/locale/en_BW.utf8/LC_NAME -#usr/lib/locale/en_BW.utf8/LC_NUMERIC -#usr/lib/locale/en_BW.utf8/LC_PAPER -#usr/lib/locale/en_BW.utf8/LC_TELEPHONE -#usr/lib/locale/en_BW.utf8/LC_TIME -#usr/lib/locale/en_BW/LC_ADDRESS -#usr/lib/locale/en_BW/LC_COLLATE -#usr/lib/locale/en_BW/LC_CTYPE -#usr/lib/locale/en_BW/LC_IDENTIFICATION -#usr/lib/locale/en_BW/LC_MEASUREMENT -#usr/lib/locale/en_BW/LC_MESSAGES -#usr/lib/locale/en_BW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_BW/LC_MONETARY -#usr/lib/locale/en_BW/LC_NAME -#usr/lib/locale/en_BW/LC_NUMERIC -#usr/lib/locale/en_BW/LC_PAPER -#usr/lib/locale/en_BW/LC_TELEPHONE -#usr/lib/locale/en_BW/LC_TIME -#usr/lib/locale/en_CA -#usr/lib/locale/en_CA.utf8 -#usr/lib/locale/en_CA.utf8/LC_ADDRESS -#usr/lib/locale/en_CA.utf8/LC_COLLATE -#usr/lib/locale/en_CA.utf8/LC_CTYPE -#usr/lib/locale/en_CA.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_CA.utf8/LC_MEASUREMENT -#usr/lib/locale/en_CA.utf8/LC_MESSAGES -#usr/lib/locale/en_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_CA.utf8/LC_MONETARY -#usr/lib/locale/en_CA.utf8/LC_NAME -#usr/lib/locale/en_CA.utf8/LC_NUMERIC -#usr/lib/locale/en_CA.utf8/LC_PAPER -#usr/lib/locale/en_CA.utf8/LC_TELEPHONE -#usr/lib/locale/en_CA.utf8/LC_TIME -#usr/lib/locale/en_CA/LC_ADDRESS -#usr/lib/locale/en_CA/LC_COLLATE -#usr/lib/locale/en_CA/LC_CTYPE -#usr/lib/locale/en_CA/LC_IDENTIFICATION -#usr/lib/locale/en_CA/LC_MEASUREMENT -#usr/lib/locale/en_CA/LC_MESSAGES -#usr/lib/locale/en_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_CA/LC_MONETARY -#usr/lib/locale/en_CA/LC_NAME -#usr/lib/locale/en_CA/LC_NUMERIC -#usr/lib/locale/en_CA/LC_PAPER -#usr/lib/locale/en_CA/LC_TELEPHONE -#usr/lib/locale/en_CA/LC_TIME -#usr/lib/locale/en_DK -#usr/lib/locale/en_DK.utf8 -#usr/lib/locale/en_DK.utf8/LC_ADDRESS -#usr/lib/locale/en_DK.utf8/LC_COLLATE -#usr/lib/locale/en_DK.utf8/LC_CTYPE -#usr/lib/locale/en_DK.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_DK.utf8/LC_MEASUREMENT -#usr/lib/locale/en_DK.utf8/LC_MESSAGES -#usr/lib/locale/en_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_DK.utf8/LC_MONETARY -#usr/lib/locale/en_DK.utf8/LC_NAME -#usr/lib/locale/en_DK.utf8/LC_NUMERIC -#usr/lib/locale/en_DK.utf8/LC_PAPER -#usr/lib/locale/en_DK.utf8/LC_TELEPHONE -#usr/lib/locale/en_DK.utf8/LC_TIME -#usr/lib/locale/en_DK/LC_ADDRESS -#usr/lib/locale/en_DK/LC_COLLATE -#usr/lib/locale/en_DK/LC_CTYPE -#usr/lib/locale/en_DK/LC_IDENTIFICATION -#usr/lib/locale/en_DK/LC_MEASUREMENT -#usr/lib/locale/en_DK/LC_MESSAGES -#usr/lib/locale/en_DK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_DK/LC_MONETARY -#usr/lib/locale/en_DK/LC_NAME -#usr/lib/locale/en_DK/LC_NUMERIC -#usr/lib/locale/en_DK/LC_PAPER -#usr/lib/locale/en_DK/LC_TELEPHONE -#usr/lib/locale/en_DK/LC_TIME -#usr/lib/locale/en_GB -#usr/lib/locale/en_GB.iso885915 -#usr/lib/locale/en_GB.iso885915/LC_ADDRESS -#usr/lib/locale/en_GB.iso885915/LC_COLLATE -#usr/lib/locale/en_GB.iso885915/LC_CTYPE -#usr/lib/locale/en_GB.iso885915/LC_IDENTIFICATION -#usr/lib/locale/en_GB.iso885915/LC_MEASUREMENT -#usr/lib/locale/en_GB.iso885915/LC_MESSAGES -#usr/lib/locale/en_GB.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB.iso885915/LC_MONETARY -#usr/lib/locale/en_GB.iso885915/LC_NAME -#usr/lib/locale/en_GB.iso885915/LC_NUMERIC -#usr/lib/locale/en_GB.iso885915/LC_PAPER -#usr/lib/locale/en_GB.iso885915/LC_TELEPHONE -#usr/lib/locale/en_GB.iso885915/LC_TIME -#usr/lib/locale/en_GB.utf8 -#usr/lib/locale/en_GB.utf8/LC_ADDRESS -#usr/lib/locale/en_GB.utf8/LC_COLLATE -#usr/lib/locale/en_GB.utf8/LC_CTYPE -#usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/en_GB.utf8/LC_MESSAGES -#usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB.utf8/LC_MONETARY -#usr/lib/locale/en_GB.utf8/LC_NAME -#usr/lib/locale/en_GB.utf8/LC_NUMERIC -#usr/lib/locale/en_GB.utf8/LC_PAPER -#usr/lib/locale/en_GB.utf8/LC_TELEPHONE -#usr/lib/locale/en_GB.utf8/LC_TIME -#usr/lib/locale/en_GB/LC_ADDRESS -#usr/lib/locale/en_GB/LC_COLLATE -#usr/lib/locale/en_GB/LC_CTYPE -#usr/lib/locale/en_GB/LC_IDENTIFICATION -#usr/lib/locale/en_GB/LC_MEASUREMENT -#usr/lib/locale/en_GB/LC_MESSAGES -#usr/lib/locale/en_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_GB/LC_MONETARY -#usr/lib/locale/en_GB/LC_NAME -#usr/lib/locale/en_GB/LC_NUMERIC -#usr/lib/locale/en_GB/LC_PAPER -#usr/lib/locale/en_GB/LC_TELEPHONE -#usr/lib/locale/en_GB/LC_TIME -#usr/lib/locale/en_HK -#usr/lib/locale/en_HK.utf8 -#usr/lib/locale/en_HK.utf8/LC_ADDRESS -#usr/lib/locale/en_HK.utf8/LC_COLLATE -#usr/lib/locale/en_HK.utf8/LC_CTYPE -#usr/lib/locale/en_HK.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_HK.utf8/LC_MEASUREMENT -#usr/lib/locale/en_HK.utf8/LC_MESSAGES -#usr/lib/locale/en_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_HK.utf8/LC_MONETARY -#usr/lib/locale/en_HK.utf8/LC_NAME -#usr/lib/locale/en_HK.utf8/LC_NUMERIC -#usr/lib/locale/en_HK.utf8/LC_PAPER -#usr/lib/locale/en_HK.utf8/LC_TELEPHONE -#usr/lib/locale/en_HK.utf8/LC_TIME -#usr/lib/locale/en_HK/LC_ADDRESS -#usr/lib/locale/en_HK/LC_COLLATE -#usr/lib/locale/en_HK/LC_CTYPE -#usr/lib/locale/en_HK/LC_IDENTIFICATION -#usr/lib/locale/en_HK/LC_MEASUREMENT -#usr/lib/locale/en_HK/LC_MESSAGES -#usr/lib/locale/en_HK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_HK/LC_MONETARY -#usr/lib/locale/en_HK/LC_NAME -#usr/lib/locale/en_HK/LC_NUMERIC -#usr/lib/locale/en_HK/LC_PAPER -#usr/lib/locale/en_HK/LC_TELEPHONE -#usr/lib/locale/en_HK/LC_TIME -#usr/lib/locale/en_IE -#usr/lib/locale/en_IE.utf8 -#usr/lib/locale/en_IE.utf8/LC_ADDRESS -#usr/lib/locale/en_IE.utf8/LC_COLLATE -#usr/lib/locale/en_IE.utf8/LC_CTYPE -#usr/lib/locale/en_IE.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_IE.utf8/LC_MEASUREMENT -#usr/lib/locale/en_IE.utf8/LC_MESSAGES -#usr/lib/locale/en_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE.utf8/LC_MONETARY -#usr/lib/locale/en_IE.utf8/LC_NAME -#usr/lib/locale/en_IE.utf8/LC_NUMERIC -#usr/lib/locale/en_IE.utf8/LC_PAPER -#usr/lib/locale/en_IE.utf8/LC_TELEPHONE -#usr/lib/locale/en_IE.utf8/LC_TIME -#usr/lib/locale/en_IE/LC_ADDRESS -#usr/lib/locale/en_IE/LC_COLLATE -#usr/lib/locale/en_IE/LC_CTYPE -#usr/lib/locale/en_IE/LC_IDENTIFICATION -#usr/lib/locale/en_IE/LC_MEASUREMENT -#usr/lib/locale/en_IE/LC_MESSAGES -#usr/lib/locale/en_IE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE/LC_MONETARY -#usr/lib/locale/en_IE/LC_NAME -#usr/lib/locale/en_IE/LC_NUMERIC -#usr/lib/locale/en_IE/LC_PAPER -#usr/lib/locale/en_IE/LC_TELEPHONE -#usr/lib/locale/en_IE/LC_TIME -#usr/lib/locale/en_IE@euro -#usr/lib/locale/en_IE@euro/LC_ADDRESS -#usr/lib/locale/en_IE@euro/LC_COLLATE -#usr/lib/locale/en_IE@euro/LC_CTYPE -#usr/lib/locale/en_IE@euro/LC_IDENTIFICATION -#usr/lib/locale/en_IE@euro/LC_MEASUREMENT -#usr/lib/locale/en_IE@euro/LC_MESSAGES -#usr/lib/locale/en_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IE@euro/LC_MONETARY -#usr/lib/locale/en_IE@euro/LC_NAME -#usr/lib/locale/en_IE@euro/LC_NUMERIC -#usr/lib/locale/en_IE@euro/LC_PAPER -#usr/lib/locale/en_IE@euro/LC_TELEPHONE -#usr/lib/locale/en_IE@euro/LC_TIME -#usr/lib/locale/en_IN -#usr/lib/locale/en_IN/LC_ADDRESS -#usr/lib/locale/en_IN/LC_COLLATE -#usr/lib/locale/en_IN/LC_CTYPE -#usr/lib/locale/en_IN/LC_IDENTIFICATION -#usr/lib/locale/en_IN/LC_MEASUREMENT -#usr/lib/locale/en_IN/LC_MESSAGES -#usr/lib/locale/en_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_IN/LC_MONETARY -#usr/lib/locale/en_IN/LC_NAME -#usr/lib/locale/en_IN/LC_NUMERIC -#usr/lib/locale/en_IN/LC_PAPER -#usr/lib/locale/en_IN/LC_TELEPHONE -#usr/lib/locale/en_IN/LC_TIME -#usr/lib/locale/en_NG -#usr/lib/locale/en_NG/LC_ADDRESS -#usr/lib/locale/en_NG/LC_COLLATE -#usr/lib/locale/en_NG/LC_CTYPE -#usr/lib/locale/en_NG/LC_IDENTIFICATION -#usr/lib/locale/en_NG/LC_MEASUREMENT -#usr/lib/locale/en_NG/LC_MESSAGES -#usr/lib/locale/en_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NG/LC_MONETARY -#usr/lib/locale/en_NG/LC_NAME -#usr/lib/locale/en_NG/LC_NUMERIC -#usr/lib/locale/en_NG/LC_PAPER -#usr/lib/locale/en_NG/LC_TELEPHONE -#usr/lib/locale/en_NG/LC_TIME -#usr/lib/locale/en_NZ -#usr/lib/locale/en_NZ.utf8 -#usr/lib/locale/en_NZ.utf8/LC_ADDRESS -#usr/lib/locale/en_NZ.utf8/LC_COLLATE -#usr/lib/locale/en_NZ.utf8/LC_CTYPE -#usr/lib/locale/en_NZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_NZ.utf8/LC_MEASUREMENT -#usr/lib/locale/en_NZ.utf8/LC_MESSAGES -#usr/lib/locale/en_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NZ.utf8/LC_MONETARY -#usr/lib/locale/en_NZ.utf8/LC_NAME -#usr/lib/locale/en_NZ.utf8/LC_NUMERIC -#usr/lib/locale/en_NZ.utf8/LC_PAPER -#usr/lib/locale/en_NZ.utf8/LC_TELEPHONE -#usr/lib/locale/en_NZ.utf8/LC_TIME -#usr/lib/locale/en_NZ/LC_ADDRESS -#usr/lib/locale/en_NZ/LC_COLLATE -#usr/lib/locale/en_NZ/LC_CTYPE -#usr/lib/locale/en_NZ/LC_IDENTIFICATION -#usr/lib/locale/en_NZ/LC_MEASUREMENT -#usr/lib/locale/en_NZ/LC_MESSAGES -#usr/lib/locale/en_NZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_NZ/LC_MONETARY -#usr/lib/locale/en_NZ/LC_NAME -#usr/lib/locale/en_NZ/LC_NUMERIC -#usr/lib/locale/en_NZ/LC_PAPER -#usr/lib/locale/en_NZ/LC_TELEPHONE -#usr/lib/locale/en_NZ/LC_TIME -#usr/lib/locale/en_PH -#usr/lib/locale/en_PH.utf8 -#usr/lib/locale/en_PH.utf8/LC_ADDRESS -#usr/lib/locale/en_PH.utf8/LC_COLLATE -#usr/lib/locale/en_PH.utf8/LC_CTYPE -#usr/lib/locale/en_PH.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_PH.utf8/LC_MEASUREMENT -#usr/lib/locale/en_PH.utf8/LC_MESSAGES -#usr/lib/locale/en_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_PH.utf8/LC_MONETARY -#usr/lib/locale/en_PH.utf8/LC_NAME -#usr/lib/locale/en_PH.utf8/LC_NUMERIC -#usr/lib/locale/en_PH.utf8/LC_PAPER -#usr/lib/locale/en_PH.utf8/LC_TELEPHONE -#usr/lib/locale/en_PH.utf8/LC_TIME -#usr/lib/locale/en_PH/LC_ADDRESS -#usr/lib/locale/en_PH/LC_COLLATE -#usr/lib/locale/en_PH/LC_CTYPE -#usr/lib/locale/en_PH/LC_IDENTIFICATION -#usr/lib/locale/en_PH/LC_MEASUREMENT -#usr/lib/locale/en_PH/LC_MESSAGES -#usr/lib/locale/en_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_PH/LC_MONETARY -#usr/lib/locale/en_PH/LC_NAME -#usr/lib/locale/en_PH/LC_NUMERIC -#usr/lib/locale/en_PH/LC_PAPER -#usr/lib/locale/en_PH/LC_TELEPHONE -#usr/lib/locale/en_PH/LC_TIME -#usr/lib/locale/en_SG -#usr/lib/locale/en_SG.utf8 -#usr/lib/locale/en_SG.utf8/LC_ADDRESS -#usr/lib/locale/en_SG.utf8/LC_COLLATE -#usr/lib/locale/en_SG.utf8/LC_CTYPE -#usr/lib/locale/en_SG.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_SG.utf8/LC_MEASUREMENT -#usr/lib/locale/en_SG.utf8/LC_MESSAGES -#usr/lib/locale/en_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_SG.utf8/LC_MONETARY -#usr/lib/locale/en_SG.utf8/LC_NAME -#usr/lib/locale/en_SG.utf8/LC_NUMERIC -#usr/lib/locale/en_SG.utf8/LC_PAPER -#usr/lib/locale/en_SG.utf8/LC_TELEPHONE -#usr/lib/locale/en_SG.utf8/LC_TIME -#usr/lib/locale/en_SG/LC_ADDRESS -#usr/lib/locale/en_SG/LC_COLLATE -#usr/lib/locale/en_SG/LC_CTYPE -#usr/lib/locale/en_SG/LC_IDENTIFICATION -#usr/lib/locale/en_SG/LC_MEASUREMENT -#usr/lib/locale/en_SG/LC_MESSAGES -#usr/lib/locale/en_SG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_SG/LC_MONETARY -#usr/lib/locale/en_SG/LC_NAME -#usr/lib/locale/en_SG/LC_NUMERIC -#usr/lib/locale/en_SG/LC_PAPER -#usr/lib/locale/en_SG/LC_TELEPHONE -#usr/lib/locale/en_SG/LC_TIME -#usr/lib/locale/en_US -#usr/lib/locale/en_US.iso885915 -#usr/lib/locale/en_US.iso885915/LC_ADDRESS -#usr/lib/locale/en_US.iso885915/LC_COLLATE -#usr/lib/locale/en_US.iso885915/LC_CTYPE -#usr/lib/locale/en_US.iso885915/LC_IDENTIFICATION -#usr/lib/locale/en_US.iso885915/LC_MEASUREMENT -#usr/lib/locale/en_US.iso885915/LC_MESSAGES -#usr/lib/locale/en_US.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US.iso885915/LC_MONETARY -#usr/lib/locale/en_US.iso885915/LC_NAME -#usr/lib/locale/en_US.iso885915/LC_NUMERIC -#usr/lib/locale/en_US.iso885915/LC_PAPER -#usr/lib/locale/en_US.iso885915/LC_TELEPHONE -#usr/lib/locale/en_US.iso885915/LC_TIME -#usr/lib/locale/en_US.utf8 -#usr/lib/locale/en_US.utf8/LC_ADDRESS -#usr/lib/locale/en_US.utf8/LC_COLLATE -#usr/lib/locale/en_US.utf8/LC_CTYPE -#usr/lib/locale/en_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_US.utf8/LC_MEASUREMENT -#usr/lib/locale/en_US.utf8/LC_MESSAGES -#usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US.utf8/LC_MONETARY -#usr/lib/locale/en_US.utf8/LC_NAME -#usr/lib/locale/en_US.utf8/LC_NUMERIC -#usr/lib/locale/en_US.utf8/LC_PAPER -#usr/lib/locale/en_US.utf8/LC_TELEPHONE -#usr/lib/locale/en_US.utf8/LC_TIME -#usr/lib/locale/en_US/LC_ADDRESS -#usr/lib/locale/en_US/LC_COLLATE -#usr/lib/locale/en_US/LC_CTYPE -#usr/lib/locale/en_US/LC_IDENTIFICATION -#usr/lib/locale/en_US/LC_MEASUREMENT -#usr/lib/locale/en_US/LC_MESSAGES -#usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_US/LC_MONETARY -#usr/lib/locale/en_US/LC_NAME -#usr/lib/locale/en_US/LC_NUMERIC -#usr/lib/locale/en_US/LC_PAPER -#usr/lib/locale/en_US/LC_TELEPHONE -#usr/lib/locale/en_US/LC_TIME -#usr/lib/locale/en_ZA -#usr/lib/locale/en_ZA.utf8 -#usr/lib/locale/en_ZA.utf8/LC_ADDRESS -#usr/lib/locale/en_ZA.utf8/LC_COLLATE -#usr/lib/locale/en_ZA.utf8/LC_CTYPE -#usr/lib/locale/en_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/en_ZA.utf8/LC_MESSAGES -#usr/lib/locale/en_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZA.utf8/LC_MONETARY -#usr/lib/locale/en_ZA.utf8/LC_NAME -#usr/lib/locale/en_ZA.utf8/LC_NUMERIC -#usr/lib/locale/en_ZA.utf8/LC_PAPER -#usr/lib/locale/en_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/en_ZA.utf8/LC_TIME -#usr/lib/locale/en_ZA/LC_ADDRESS -#usr/lib/locale/en_ZA/LC_COLLATE -#usr/lib/locale/en_ZA/LC_CTYPE -#usr/lib/locale/en_ZA/LC_IDENTIFICATION -#usr/lib/locale/en_ZA/LC_MEASUREMENT -#usr/lib/locale/en_ZA/LC_MESSAGES -#usr/lib/locale/en_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZA/LC_MONETARY -#usr/lib/locale/en_ZA/LC_NAME -#usr/lib/locale/en_ZA/LC_NUMERIC -#usr/lib/locale/en_ZA/LC_PAPER -#usr/lib/locale/en_ZA/LC_TELEPHONE -#usr/lib/locale/en_ZA/LC_TIME -#usr/lib/locale/en_ZW -#usr/lib/locale/en_ZW.utf8 -#usr/lib/locale/en_ZW.utf8/LC_ADDRESS -#usr/lib/locale/en_ZW.utf8/LC_COLLATE -#usr/lib/locale/en_ZW.utf8/LC_CTYPE -#usr/lib/locale/en_ZW.utf8/LC_IDENTIFICATION -#usr/lib/locale/en_ZW.utf8/LC_MEASUREMENT -#usr/lib/locale/en_ZW.utf8/LC_MESSAGES -#usr/lib/locale/en_ZW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZW.utf8/LC_MONETARY -#usr/lib/locale/en_ZW.utf8/LC_NAME -#usr/lib/locale/en_ZW.utf8/LC_NUMERIC -#usr/lib/locale/en_ZW.utf8/LC_PAPER -#usr/lib/locale/en_ZW.utf8/LC_TELEPHONE -#usr/lib/locale/en_ZW.utf8/LC_TIME -#usr/lib/locale/en_ZW/LC_ADDRESS -#usr/lib/locale/en_ZW/LC_COLLATE -#usr/lib/locale/en_ZW/LC_CTYPE -#usr/lib/locale/en_ZW/LC_IDENTIFICATION -#usr/lib/locale/en_ZW/LC_MEASUREMENT -#usr/lib/locale/en_ZW/LC_MESSAGES -#usr/lib/locale/en_ZW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/en_ZW/LC_MONETARY -#usr/lib/locale/en_ZW/LC_NAME -#usr/lib/locale/en_ZW/LC_NUMERIC -#usr/lib/locale/en_ZW/LC_PAPER -#usr/lib/locale/en_ZW/LC_TELEPHONE -#usr/lib/locale/en_ZW/LC_TIME -#usr/lib/locale/es_AR -#usr/lib/locale/es_AR.utf8 -#usr/lib/locale/es_AR.utf8/LC_ADDRESS -#usr/lib/locale/es_AR.utf8/LC_COLLATE -#usr/lib/locale/es_AR.utf8/LC_CTYPE -#usr/lib/locale/es_AR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_AR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_AR.utf8/LC_MESSAGES -#usr/lib/locale/es_AR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_AR.utf8/LC_MONETARY -#usr/lib/locale/es_AR.utf8/LC_NAME -#usr/lib/locale/es_AR.utf8/LC_NUMERIC -#usr/lib/locale/es_AR.utf8/LC_PAPER -#usr/lib/locale/es_AR.utf8/LC_TELEPHONE -#usr/lib/locale/es_AR.utf8/LC_TIME -#usr/lib/locale/es_AR/LC_ADDRESS -#usr/lib/locale/es_AR/LC_COLLATE -#usr/lib/locale/es_AR/LC_CTYPE -#usr/lib/locale/es_AR/LC_IDENTIFICATION -#usr/lib/locale/es_AR/LC_MEASUREMENT -#usr/lib/locale/es_AR/LC_MESSAGES -#usr/lib/locale/es_AR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_AR/LC_MONETARY -#usr/lib/locale/es_AR/LC_NAME -#usr/lib/locale/es_AR/LC_NUMERIC -#usr/lib/locale/es_AR/LC_PAPER -#usr/lib/locale/es_AR/LC_TELEPHONE -#usr/lib/locale/es_AR/LC_TIME -#usr/lib/locale/es_BO -#usr/lib/locale/es_BO.utf8 -#usr/lib/locale/es_BO.utf8/LC_ADDRESS -#usr/lib/locale/es_BO.utf8/LC_COLLATE -#usr/lib/locale/es_BO.utf8/LC_CTYPE -#usr/lib/locale/es_BO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_BO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_BO.utf8/LC_MESSAGES -#usr/lib/locale/es_BO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_BO.utf8/LC_MONETARY -#usr/lib/locale/es_BO.utf8/LC_NAME -#usr/lib/locale/es_BO.utf8/LC_NUMERIC -#usr/lib/locale/es_BO.utf8/LC_PAPER -#usr/lib/locale/es_BO.utf8/LC_TELEPHONE -#usr/lib/locale/es_BO.utf8/LC_TIME -#usr/lib/locale/es_BO/LC_ADDRESS -#usr/lib/locale/es_BO/LC_COLLATE -#usr/lib/locale/es_BO/LC_CTYPE -#usr/lib/locale/es_BO/LC_IDENTIFICATION -#usr/lib/locale/es_BO/LC_MEASUREMENT -#usr/lib/locale/es_BO/LC_MESSAGES -#usr/lib/locale/es_BO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_BO/LC_MONETARY -#usr/lib/locale/es_BO/LC_NAME -#usr/lib/locale/es_BO/LC_NUMERIC -#usr/lib/locale/es_BO/LC_PAPER -#usr/lib/locale/es_BO/LC_TELEPHONE -#usr/lib/locale/es_BO/LC_TIME -#usr/lib/locale/es_CL -#usr/lib/locale/es_CL.utf8 -#usr/lib/locale/es_CL.utf8/LC_ADDRESS -#usr/lib/locale/es_CL.utf8/LC_COLLATE -#usr/lib/locale/es_CL.utf8/LC_CTYPE -#usr/lib/locale/es_CL.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CL.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CL.utf8/LC_MESSAGES -#usr/lib/locale/es_CL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CL.utf8/LC_MONETARY -#usr/lib/locale/es_CL.utf8/LC_NAME -#usr/lib/locale/es_CL.utf8/LC_NUMERIC -#usr/lib/locale/es_CL.utf8/LC_PAPER -#usr/lib/locale/es_CL.utf8/LC_TELEPHONE -#usr/lib/locale/es_CL.utf8/LC_TIME -#usr/lib/locale/es_CL/LC_ADDRESS -#usr/lib/locale/es_CL/LC_COLLATE -#usr/lib/locale/es_CL/LC_CTYPE -#usr/lib/locale/es_CL/LC_IDENTIFICATION -#usr/lib/locale/es_CL/LC_MEASUREMENT -#usr/lib/locale/es_CL/LC_MESSAGES -#usr/lib/locale/es_CL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CL/LC_MONETARY -#usr/lib/locale/es_CL/LC_NAME -#usr/lib/locale/es_CL/LC_NUMERIC -#usr/lib/locale/es_CL/LC_PAPER -#usr/lib/locale/es_CL/LC_TELEPHONE -#usr/lib/locale/es_CL/LC_TIME -#usr/lib/locale/es_CO -#usr/lib/locale/es_CO.utf8 -#usr/lib/locale/es_CO.utf8/LC_ADDRESS -#usr/lib/locale/es_CO.utf8/LC_COLLATE -#usr/lib/locale/es_CO.utf8/LC_CTYPE -#usr/lib/locale/es_CO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CO.utf8/LC_MESSAGES -#usr/lib/locale/es_CO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CO.utf8/LC_MONETARY -#usr/lib/locale/es_CO.utf8/LC_NAME -#usr/lib/locale/es_CO.utf8/LC_NUMERIC -#usr/lib/locale/es_CO.utf8/LC_PAPER -#usr/lib/locale/es_CO.utf8/LC_TELEPHONE -#usr/lib/locale/es_CO.utf8/LC_TIME -#usr/lib/locale/es_CO/LC_ADDRESS -#usr/lib/locale/es_CO/LC_COLLATE -#usr/lib/locale/es_CO/LC_CTYPE -#usr/lib/locale/es_CO/LC_IDENTIFICATION -#usr/lib/locale/es_CO/LC_MEASUREMENT -#usr/lib/locale/es_CO/LC_MESSAGES -#usr/lib/locale/es_CO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CO/LC_MONETARY -#usr/lib/locale/es_CO/LC_NAME -#usr/lib/locale/es_CO/LC_NUMERIC -#usr/lib/locale/es_CO/LC_PAPER -#usr/lib/locale/es_CO/LC_TELEPHONE -#usr/lib/locale/es_CO/LC_TIME -#usr/lib/locale/es_CR -#usr/lib/locale/es_CR.utf8 -#usr/lib/locale/es_CR.utf8/LC_ADDRESS -#usr/lib/locale/es_CR.utf8/LC_COLLATE -#usr/lib/locale/es_CR.utf8/LC_CTYPE -#usr/lib/locale/es_CR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_CR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_CR.utf8/LC_MESSAGES -#usr/lib/locale/es_CR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CR.utf8/LC_MONETARY -#usr/lib/locale/es_CR.utf8/LC_NAME -#usr/lib/locale/es_CR.utf8/LC_NUMERIC -#usr/lib/locale/es_CR.utf8/LC_PAPER -#usr/lib/locale/es_CR.utf8/LC_TELEPHONE -#usr/lib/locale/es_CR.utf8/LC_TIME -#usr/lib/locale/es_CR/LC_ADDRESS -#usr/lib/locale/es_CR/LC_COLLATE -#usr/lib/locale/es_CR/LC_CTYPE -#usr/lib/locale/es_CR/LC_IDENTIFICATION -#usr/lib/locale/es_CR/LC_MEASUREMENT -#usr/lib/locale/es_CR/LC_MESSAGES -#usr/lib/locale/es_CR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_CR/LC_MONETARY -#usr/lib/locale/es_CR/LC_NAME -#usr/lib/locale/es_CR/LC_NUMERIC -#usr/lib/locale/es_CR/LC_PAPER -#usr/lib/locale/es_CR/LC_TELEPHONE -#usr/lib/locale/es_CR/LC_TIME -#usr/lib/locale/es_DO -#usr/lib/locale/es_DO.utf8 -#usr/lib/locale/es_DO.utf8/LC_ADDRESS -#usr/lib/locale/es_DO.utf8/LC_COLLATE -#usr/lib/locale/es_DO.utf8/LC_CTYPE -#usr/lib/locale/es_DO.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_DO.utf8/LC_MEASUREMENT -#usr/lib/locale/es_DO.utf8/LC_MESSAGES -#usr/lib/locale/es_DO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_DO.utf8/LC_MONETARY -#usr/lib/locale/es_DO.utf8/LC_NAME -#usr/lib/locale/es_DO.utf8/LC_NUMERIC -#usr/lib/locale/es_DO.utf8/LC_PAPER -#usr/lib/locale/es_DO.utf8/LC_TELEPHONE -#usr/lib/locale/es_DO.utf8/LC_TIME -#usr/lib/locale/es_DO/LC_ADDRESS -#usr/lib/locale/es_DO/LC_COLLATE -#usr/lib/locale/es_DO/LC_CTYPE -#usr/lib/locale/es_DO/LC_IDENTIFICATION -#usr/lib/locale/es_DO/LC_MEASUREMENT -#usr/lib/locale/es_DO/LC_MESSAGES -#usr/lib/locale/es_DO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_DO/LC_MONETARY -#usr/lib/locale/es_DO/LC_NAME -#usr/lib/locale/es_DO/LC_NUMERIC -#usr/lib/locale/es_DO/LC_PAPER -#usr/lib/locale/es_DO/LC_TELEPHONE -#usr/lib/locale/es_DO/LC_TIME -#usr/lib/locale/es_EC -#usr/lib/locale/es_EC.utf8 -#usr/lib/locale/es_EC.utf8/LC_ADDRESS -#usr/lib/locale/es_EC.utf8/LC_COLLATE -#usr/lib/locale/es_EC.utf8/LC_CTYPE -#usr/lib/locale/es_EC.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_EC.utf8/LC_MEASUREMENT -#usr/lib/locale/es_EC.utf8/LC_MESSAGES -#usr/lib/locale/es_EC.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_EC.utf8/LC_MONETARY -#usr/lib/locale/es_EC.utf8/LC_NAME -#usr/lib/locale/es_EC.utf8/LC_NUMERIC -#usr/lib/locale/es_EC.utf8/LC_PAPER -#usr/lib/locale/es_EC.utf8/LC_TELEPHONE -#usr/lib/locale/es_EC.utf8/LC_TIME -#usr/lib/locale/es_EC/LC_ADDRESS -#usr/lib/locale/es_EC/LC_COLLATE -#usr/lib/locale/es_EC/LC_CTYPE -#usr/lib/locale/es_EC/LC_IDENTIFICATION -#usr/lib/locale/es_EC/LC_MEASUREMENT -#usr/lib/locale/es_EC/LC_MESSAGES -#usr/lib/locale/es_EC/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_EC/LC_MONETARY -#usr/lib/locale/es_EC/LC_NAME -#usr/lib/locale/es_EC/LC_NUMERIC -#usr/lib/locale/es_EC/LC_PAPER -#usr/lib/locale/es_EC/LC_TELEPHONE -#usr/lib/locale/es_EC/LC_TIME -#usr/lib/locale/es_ES -#usr/lib/locale/es_ES.utf8 -#usr/lib/locale/es_ES.utf8/LC_ADDRESS -#usr/lib/locale/es_ES.utf8/LC_COLLATE -#usr/lib/locale/es_ES.utf8/LC_CTYPE -#usr/lib/locale/es_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/es_ES.utf8/LC_MESSAGES -#usr/lib/locale/es_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES.utf8/LC_MONETARY -#usr/lib/locale/es_ES.utf8/LC_NAME -#usr/lib/locale/es_ES.utf8/LC_NUMERIC -#usr/lib/locale/es_ES.utf8/LC_PAPER -#usr/lib/locale/es_ES.utf8/LC_TELEPHONE -#usr/lib/locale/es_ES.utf8/LC_TIME -#usr/lib/locale/es_ES/LC_ADDRESS -#usr/lib/locale/es_ES/LC_COLLATE -#usr/lib/locale/es_ES/LC_CTYPE -#usr/lib/locale/es_ES/LC_IDENTIFICATION -#usr/lib/locale/es_ES/LC_MEASUREMENT -#usr/lib/locale/es_ES/LC_MESSAGES -#usr/lib/locale/es_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES/LC_MONETARY -#usr/lib/locale/es_ES/LC_NAME -#usr/lib/locale/es_ES/LC_NUMERIC -#usr/lib/locale/es_ES/LC_PAPER -#usr/lib/locale/es_ES/LC_TELEPHONE -#usr/lib/locale/es_ES/LC_TIME -#usr/lib/locale/es_ES@euro -#usr/lib/locale/es_ES@euro/LC_ADDRESS -#usr/lib/locale/es_ES@euro/LC_COLLATE -#usr/lib/locale/es_ES@euro/LC_CTYPE -#usr/lib/locale/es_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/es_ES@euro/LC_MEASUREMENT -#usr/lib/locale/es_ES@euro/LC_MESSAGES -#usr/lib/locale/es_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_ES@euro/LC_MONETARY -#usr/lib/locale/es_ES@euro/LC_NAME -#usr/lib/locale/es_ES@euro/LC_NUMERIC -#usr/lib/locale/es_ES@euro/LC_PAPER -#usr/lib/locale/es_ES@euro/LC_TELEPHONE -#usr/lib/locale/es_ES@euro/LC_TIME -#usr/lib/locale/es_GT -#usr/lib/locale/es_GT.utf8 -#usr/lib/locale/es_GT.utf8/LC_ADDRESS -#usr/lib/locale/es_GT.utf8/LC_COLLATE -#usr/lib/locale/es_GT.utf8/LC_CTYPE -#usr/lib/locale/es_GT.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_GT.utf8/LC_MEASUREMENT -#usr/lib/locale/es_GT.utf8/LC_MESSAGES -#usr/lib/locale/es_GT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_GT.utf8/LC_MONETARY -#usr/lib/locale/es_GT.utf8/LC_NAME -#usr/lib/locale/es_GT.utf8/LC_NUMERIC -#usr/lib/locale/es_GT.utf8/LC_PAPER -#usr/lib/locale/es_GT.utf8/LC_TELEPHONE -#usr/lib/locale/es_GT.utf8/LC_TIME -#usr/lib/locale/es_GT/LC_ADDRESS -#usr/lib/locale/es_GT/LC_COLLATE -#usr/lib/locale/es_GT/LC_CTYPE -#usr/lib/locale/es_GT/LC_IDENTIFICATION -#usr/lib/locale/es_GT/LC_MEASUREMENT -#usr/lib/locale/es_GT/LC_MESSAGES -#usr/lib/locale/es_GT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_GT/LC_MONETARY -#usr/lib/locale/es_GT/LC_NAME -#usr/lib/locale/es_GT/LC_NUMERIC -#usr/lib/locale/es_GT/LC_PAPER -#usr/lib/locale/es_GT/LC_TELEPHONE -#usr/lib/locale/es_GT/LC_TIME -#usr/lib/locale/es_HN -#usr/lib/locale/es_HN.utf8 -#usr/lib/locale/es_HN.utf8/LC_ADDRESS -#usr/lib/locale/es_HN.utf8/LC_COLLATE -#usr/lib/locale/es_HN.utf8/LC_CTYPE -#usr/lib/locale/es_HN.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_HN.utf8/LC_MEASUREMENT -#usr/lib/locale/es_HN.utf8/LC_MESSAGES -#usr/lib/locale/es_HN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_HN.utf8/LC_MONETARY -#usr/lib/locale/es_HN.utf8/LC_NAME -#usr/lib/locale/es_HN.utf8/LC_NUMERIC -#usr/lib/locale/es_HN.utf8/LC_PAPER -#usr/lib/locale/es_HN.utf8/LC_TELEPHONE -#usr/lib/locale/es_HN.utf8/LC_TIME -#usr/lib/locale/es_HN/LC_ADDRESS -#usr/lib/locale/es_HN/LC_COLLATE -#usr/lib/locale/es_HN/LC_CTYPE -#usr/lib/locale/es_HN/LC_IDENTIFICATION -#usr/lib/locale/es_HN/LC_MEASUREMENT -#usr/lib/locale/es_HN/LC_MESSAGES -#usr/lib/locale/es_HN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_HN/LC_MONETARY -#usr/lib/locale/es_HN/LC_NAME -#usr/lib/locale/es_HN/LC_NUMERIC -#usr/lib/locale/es_HN/LC_PAPER -#usr/lib/locale/es_HN/LC_TELEPHONE -#usr/lib/locale/es_HN/LC_TIME -#usr/lib/locale/es_MX -#usr/lib/locale/es_MX.utf8 -#usr/lib/locale/es_MX.utf8/LC_ADDRESS -#usr/lib/locale/es_MX.utf8/LC_COLLATE -#usr/lib/locale/es_MX.utf8/LC_CTYPE -#usr/lib/locale/es_MX.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_MX.utf8/LC_MEASUREMENT -#usr/lib/locale/es_MX.utf8/LC_MESSAGES -#usr/lib/locale/es_MX.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_MX.utf8/LC_MONETARY -#usr/lib/locale/es_MX.utf8/LC_NAME -#usr/lib/locale/es_MX.utf8/LC_NUMERIC -#usr/lib/locale/es_MX.utf8/LC_PAPER -#usr/lib/locale/es_MX.utf8/LC_TELEPHONE -#usr/lib/locale/es_MX.utf8/LC_TIME -#usr/lib/locale/es_MX/LC_ADDRESS -#usr/lib/locale/es_MX/LC_COLLATE -#usr/lib/locale/es_MX/LC_CTYPE -#usr/lib/locale/es_MX/LC_IDENTIFICATION -#usr/lib/locale/es_MX/LC_MEASUREMENT -#usr/lib/locale/es_MX/LC_MESSAGES -#usr/lib/locale/es_MX/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_MX/LC_MONETARY -#usr/lib/locale/es_MX/LC_NAME -#usr/lib/locale/es_MX/LC_NUMERIC -#usr/lib/locale/es_MX/LC_PAPER -#usr/lib/locale/es_MX/LC_TELEPHONE -#usr/lib/locale/es_MX/LC_TIME -#usr/lib/locale/es_NI -#usr/lib/locale/es_NI.utf8 -#usr/lib/locale/es_NI.utf8/LC_ADDRESS -#usr/lib/locale/es_NI.utf8/LC_COLLATE -#usr/lib/locale/es_NI.utf8/LC_CTYPE -#usr/lib/locale/es_NI.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_NI.utf8/LC_MEASUREMENT -#usr/lib/locale/es_NI.utf8/LC_MESSAGES -#usr/lib/locale/es_NI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_NI.utf8/LC_MONETARY -#usr/lib/locale/es_NI.utf8/LC_NAME -#usr/lib/locale/es_NI.utf8/LC_NUMERIC -#usr/lib/locale/es_NI.utf8/LC_PAPER -#usr/lib/locale/es_NI.utf8/LC_TELEPHONE -#usr/lib/locale/es_NI.utf8/LC_TIME -#usr/lib/locale/es_NI/LC_ADDRESS -#usr/lib/locale/es_NI/LC_COLLATE -#usr/lib/locale/es_NI/LC_CTYPE -#usr/lib/locale/es_NI/LC_IDENTIFICATION -#usr/lib/locale/es_NI/LC_MEASUREMENT -#usr/lib/locale/es_NI/LC_MESSAGES -#usr/lib/locale/es_NI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_NI/LC_MONETARY -#usr/lib/locale/es_NI/LC_NAME -#usr/lib/locale/es_NI/LC_NUMERIC -#usr/lib/locale/es_NI/LC_PAPER -#usr/lib/locale/es_NI/LC_TELEPHONE -#usr/lib/locale/es_NI/LC_TIME -#usr/lib/locale/es_PA -#usr/lib/locale/es_PA.utf8 -#usr/lib/locale/es_PA.utf8/LC_ADDRESS -#usr/lib/locale/es_PA.utf8/LC_COLLATE -#usr/lib/locale/es_PA.utf8/LC_CTYPE -#usr/lib/locale/es_PA.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PA.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PA.utf8/LC_MESSAGES -#usr/lib/locale/es_PA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PA.utf8/LC_MONETARY -#usr/lib/locale/es_PA.utf8/LC_NAME -#usr/lib/locale/es_PA.utf8/LC_NUMERIC -#usr/lib/locale/es_PA.utf8/LC_PAPER -#usr/lib/locale/es_PA.utf8/LC_TELEPHONE -#usr/lib/locale/es_PA.utf8/LC_TIME -#usr/lib/locale/es_PA/LC_ADDRESS -#usr/lib/locale/es_PA/LC_COLLATE -#usr/lib/locale/es_PA/LC_CTYPE -#usr/lib/locale/es_PA/LC_IDENTIFICATION -#usr/lib/locale/es_PA/LC_MEASUREMENT -#usr/lib/locale/es_PA/LC_MESSAGES -#usr/lib/locale/es_PA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PA/LC_MONETARY -#usr/lib/locale/es_PA/LC_NAME -#usr/lib/locale/es_PA/LC_NUMERIC -#usr/lib/locale/es_PA/LC_PAPER -#usr/lib/locale/es_PA/LC_TELEPHONE -#usr/lib/locale/es_PA/LC_TIME -#usr/lib/locale/es_PE -#usr/lib/locale/es_PE.utf8 -#usr/lib/locale/es_PE.utf8/LC_ADDRESS -#usr/lib/locale/es_PE.utf8/LC_COLLATE -#usr/lib/locale/es_PE.utf8/LC_CTYPE -#usr/lib/locale/es_PE.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PE.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PE.utf8/LC_MESSAGES -#usr/lib/locale/es_PE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PE.utf8/LC_MONETARY -#usr/lib/locale/es_PE.utf8/LC_NAME -#usr/lib/locale/es_PE.utf8/LC_NUMERIC -#usr/lib/locale/es_PE.utf8/LC_PAPER -#usr/lib/locale/es_PE.utf8/LC_TELEPHONE -#usr/lib/locale/es_PE.utf8/LC_TIME -#usr/lib/locale/es_PE/LC_ADDRESS -#usr/lib/locale/es_PE/LC_COLLATE -#usr/lib/locale/es_PE/LC_CTYPE -#usr/lib/locale/es_PE/LC_IDENTIFICATION -#usr/lib/locale/es_PE/LC_MEASUREMENT -#usr/lib/locale/es_PE/LC_MESSAGES -#usr/lib/locale/es_PE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PE/LC_MONETARY -#usr/lib/locale/es_PE/LC_NAME -#usr/lib/locale/es_PE/LC_NUMERIC -#usr/lib/locale/es_PE/LC_PAPER -#usr/lib/locale/es_PE/LC_TELEPHONE -#usr/lib/locale/es_PE/LC_TIME -#usr/lib/locale/es_PR -#usr/lib/locale/es_PR.utf8 -#usr/lib/locale/es_PR.utf8/LC_ADDRESS -#usr/lib/locale/es_PR.utf8/LC_COLLATE -#usr/lib/locale/es_PR.utf8/LC_CTYPE -#usr/lib/locale/es_PR.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PR.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PR.utf8/LC_MESSAGES -#usr/lib/locale/es_PR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PR.utf8/LC_MONETARY -#usr/lib/locale/es_PR.utf8/LC_NAME -#usr/lib/locale/es_PR.utf8/LC_NUMERIC -#usr/lib/locale/es_PR.utf8/LC_PAPER -#usr/lib/locale/es_PR.utf8/LC_TELEPHONE -#usr/lib/locale/es_PR.utf8/LC_TIME -#usr/lib/locale/es_PR/LC_ADDRESS -#usr/lib/locale/es_PR/LC_COLLATE -#usr/lib/locale/es_PR/LC_CTYPE -#usr/lib/locale/es_PR/LC_IDENTIFICATION -#usr/lib/locale/es_PR/LC_MEASUREMENT -#usr/lib/locale/es_PR/LC_MESSAGES -#usr/lib/locale/es_PR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PR/LC_MONETARY -#usr/lib/locale/es_PR/LC_NAME -#usr/lib/locale/es_PR/LC_NUMERIC -#usr/lib/locale/es_PR/LC_PAPER -#usr/lib/locale/es_PR/LC_TELEPHONE -#usr/lib/locale/es_PR/LC_TIME -#usr/lib/locale/es_PY -#usr/lib/locale/es_PY.utf8 -#usr/lib/locale/es_PY.utf8/LC_ADDRESS -#usr/lib/locale/es_PY.utf8/LC_COLLATE -#usr/lib/locale/es_PY.utf8/LC_CTYPE -#usr/lib/locale/es_PY.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_PY.utf8/LC_MEASUREMENT -#usr/lib/locale/es_PY.utf8/LC_MESSAGES -#usr/lib/locale/es_PY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PY.utf8/LC_MONETARY -#usr/lib/locale/es_PY.utf8/LC_NAME -#usr/lib/locale/es_PY.utf8/LC_NUMERIC -#usr/lib/locale/es_PY.utf8/LC_PAPER -#usr/lib/locale/es_PY.utf8/LC_TELEPHONE -#usr/lib/locale/es_PY.utf8/LC_TIME -#usr/lib/locale/es_PY/LC_ADDRESS -#usr/lib/locale/es_PY/LC_COLLATE -#usr/lib/locale/es_PY/LC_CTYPE -#usr/lib/locale/es_PY/LC_IDENTIFICATION -#usr/lib/locale/es_PY/LC_MEASUREMENT -#usr/lib/locale/es_PY/LC_MESSAGES -#usr/lib/locale/es_PY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_PY/LC_MONETARY -#usr/lib/locale/es_PY/LC_NAME -#usr/lib/locale/es_PY/LC_NUMERIC -#usr/lib/locale/es_PY/LC_PAPER -#usr/lib/locale/es_PY/LC_TELEPHONE -#usr/lib/locale/es_PY/LC_TIME -#usr/lib/locale/es_SV -#usr/lib/locale/es_SV.utf8 -#usr/lib/locale/es_SV.utf8/LC_ADDRESS -#usr/lib/locale/es_SV.utf8/LC_COLLATE -#usr/lib/locale/es_SV.utf8/LC_CTYPE -#usr/lib/locale/es_SV.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_SV.utf8/LC_MEASUREMENT -#usr/lib/locale/es_SV.utf8/LC_MESSAGES -#usr/lib/locale/es_SV.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_SV.utf8/LC_MONETARY -#usr/lib/locale/es_SV.utf8/LC_NAME -#usr/lib/locale/es_SV.utf8/LC_NUMERIC -#usr/lib/locale/es_SV.utf8/LC_PAPER -#usr/lib/locale/es_SV.utf8/LC_TELEPHONE -#usr/lib/locale/es_SV.utf8/LC_TIME -#usr/lib/locale/es_SV/LC_ADDRESS -#usr/lib/locale/es_SV/LC_COLLATE -#usr/lib/locale/es_SV/LC_CTYPE -#usr/lib/locale/es_SV/LC_IDENTIFICATION -#usr/lib/locale/es_SV/LC_MEASUREMENT -#usr/lib/locale/es_SV/LC_MESSAGES -#usr/lib/locale/es_SV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_SV/LC_MONETARY -#usr/lib/locale/es_SV/LC_NAME -#usr/lib/locale/es_SV/LC_NUMERIC -#usr/lib/locale/es_SV/LC_PAPER -#usr/lib/locale/es_SV/LC_TELEPHONE -#usr/lib/locale/es_SV/LC_TIME -#usr/lib/locale/es_US -#usr/lib/locale/es_US.utf8 -#usr/lib/locale/es_US.utf8/LC_ADDRESS -#usr/lib/locale/es_US.utf8/LC_COLLATE -#usr/lib/locale/es_US.utf8/LC_CTYPE -#usr/lib/locale/es_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_US.utf8/LC_MEASUREMENT -#usr/lib/locale/es_US.utf8/LC_MESSAGES -#usr/lib/locale/es_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_US.utf8/LC_MONETARY -#usr/lib/locale/es_US.utf8/LC_NAME -#usr/lib/locale/es_US.utf8/LC_NUMERIC -#usr/lib/locale/es_US.utf8/LC_PAPER -#usr/lib/locale/es_US.utf8/LC_TELEPHONE -#usr/lib/locale/es_US.utf8/LC_TIME -#usr/lib/locale/es_US/LC_ADDRESS -#usr/lib/locale/es_US/LC_COLLATE -#usr/lib/locale/es_US/LC_CTYPE -#usr/lib/locale/es_US/LC_IDENTIFICATION -#usr/lib/locale/es_US/LC_MEASUREMENT -#usr/lib/locale/es_US/LC_MESSAGES -#usr/lib/locale/es_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_US/LC_MONETARY -#usr/lib/locale/es_US/LC_NAME -#usr/lib/locale/es_US/LC_NUMERIC -#usr/lib/locale/es_US/LC_PAPER -#usr/lib/locale/es_US/LC_TELEPHONE -#usr/lib/locale/es_US/LC_TIME -#usr/lib/locale/es_UY -#usr/lib/locale/es_UY.utf8 -#usr/lib/locale/es_UY.utf8/LC_ADDRESS -#usr/lib/locale/es_UY.utf8/LC_COLLATE -#usr/lib/locale/es_UY.utf8/LC_CTYPE -#usr/lib/locale/es_UY.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_UY.utf8/LC_MEASUREMENT -#usr/lib/locale/es_UY.utf8/LC_MESSAGES -#usr/lib/locale/es_UY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_UY.utf8/LC_MONETARY -#usr/lib/locale/es_UY.utf8/LC_NAME -#usr/lib/locale/es_UY.utf8/LC_NUMERIC -#usr/lib/locale/es_UY.utf8/LC_PAPER -#usr/lib/locale/es_UY.utf8/LC_TELEPHONE -#usr/lib/locale/es_UY.utf8/LC_TIME -#usr/lib/locale/es_UY/LC_ADDRESS -#usr/lib/locale/es_UY/LC_COLLATE -#usr/lib/locale/es_UY/LC_CTYPE -#usr/lib/locale/es_UY/LC_IDENTIFICATION -#usr/lib/locale/es_UY/LC_MEASUREMENT -#usr/lib/locale/es_UY/LC_MESSAGES -#usr/lib/locale/es_UY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_UY/LC_MONETARY -#usr/lib/locale/es_UY/LC_NAME -#usr/lib/locale/es_UY/LC_NUMERIC -#usr/lib/locale/es_UY/LC_PAPER -#usr/lib/locale/es_UY/LC_TELEPHONE -#usr/lib/locale/es_UY/LC_TIME -#usr/lib/locale/es_VE -#usr/lib/locale/es_VE.utf8 -#usr/lib/locale/es_VE.utf8/LC_ADDRESS -#usr/lib/locale/es_VE.utf8/LC_COLLATE -#usr/lib/locale/es_VE.utf8/LC_CTYPE -#usr/lib/locale/es_VE.utf8/LC_IDENTIFICATION -#usr/lib/locale/es_VE.utf8/LC_MEASUREMENT -#usr/lib/locale/es_VE.utf8/LC_MESSAGES -#usr/lib/locale/es_VE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_VE.utf8/LC_MONETARY -#usr/lib/locale/es_VE.utf8/LC_NAME -#usr/lib/locale/es_VE.utf8/LC_NUMERIC -#usr/lib/locale/es_VE.utf8/LC_PAPER -#usr/lib/locale/es_VE.utf8/LC_TELEPHONE -#usr/lib/locale/es_VE.utf8/LC_TIME -#usr/lib/locale/es_VE/LC_ADDRESS -#usr/lib/locale/es_VE/LC_COLLATE -#usr/lib/locale/es_VE/LC_CTYPE -#usr/lib/locale/es_VE/LC_IDENTIFICATION -#usr/lib/locale/es_VE/LC_MEASUREMENT -#usr/lib/locale/es_VE/LC_MESSAGES -#usr/lib/locale/es_VE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/es_VE/LC_MONETARY -#usr/lib/locale/es_VE/LC_NAME -#usr/lib/locale/es_VE/LC_NUMERIC -#usr/lib/locale/es_VE/LC_PAPER -#usr/lib/locale/es_VE/LC_TELEPHONE -#usr/lib/locale/es_VE/LC_TIME -#usr/lib/locale/et_EE -#usr/lib/locale/et_EE.iso885915 -#usr/lib/locale/et_EE.iso885915/LC_ADDRESS -#usr/lib/locale/et_EE.iso885915/LC_COLLATE -#usr/lib/locale/et_EE.iso885915/LC_CTYPE -#usr/lib/locale/et_EE.iso885915/LC_IDENTIFICATION -#usr/lib/locale/et_EE.iso885915/LC_MEASUREMENT -#usr/lib/locale/et_EE.iso885915/LC_MESSAGES -#usr/lib/locale/et_EE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE.iso885915/LC_MONETARY -#usr/lib/locale/et_EE.iso885915/LC_NAME -#usr/lib/locale/et_EE.iso885915/LC_NUMERIC -#usr/lib/locale/et_EE.iso885915/LC_PAPER -#usr/lib/locale/et_EE.iso885915/LC_TELEPHONE -#usr/lib/locale/et_EE.iso885915/LC_TIME -#usr/lib/locale/et_EE.utf8 -#usr/lib/locale/et_EE.utf8/LC_ADDRESS -#usr/lib/locale/et_EE.utf8/LC_COLLATE -#usr/lib/locale/et_EE.utf8/LC_CTYPE -#usr/lib/locale/et_EE.utf8/LC_IDENTIFICATION -#usr/lib/locale/et_EE.utf8/LC_MEASUREMENT -#usr/lib/locale/et_EE.utf8/LC_MESSAGES -#usr/lib/locale/et_EE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE.utf8/LC_MONETARY -#usr/lib/locale/et_EE.utf8/LC_NAME -#usr/lib/locale/et_EE.utf8/LC_NUMERIC -#usr/lib/locale/et_EE.utf8/LC_PAPER -#usr/lib/locale/et_EE.utf8/LC_TELEPHONE -#usr/lib/locale/et_EE.utf8/LC_TIME -#usr/lib/locale/et_EE/LC_ADDRESS -#usr/lib/locale/et_EE/LC_COLLATE -#usr/lib/locale/et_EE/LC_CTYPE -#usr/lib/locale/et_EE/LC_IDENTIFICATION -#usr/lib/locale/et_EE/LC_MEASUREMENT -#usr/lib/locale/et_EE/LC_MESSAGES -#usr/lib/locale/et_EE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/et_EE/LC_MONETARY -#usr/lib/locale/et_EE/LC_NAME -#usr/lib/locale/et_EE/LC_NUMERIC -#usr/lib/locale/et_EE/LC_PAPER -#usr/lib/locale/et_EE/LC_TELEPHONE -#usr/lib/locale/et_EE/LC_TIME -#usr/lib/locale/eu_ES -#usr/lib/locale/eu_ES.utf8 -#usr/lib/locale/eu_ES.utf8/LC_ADDRESS -#usr/lib/locale/eu_ES.utf8/LC_COLLATE -#usr/lib/locale/eu_ES.utf8/LC_CTYPE -#usr/lib/locale/eu_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/eu_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/eu_ES.utf8/LC_MESSAGES -#usr/lib/locale/eu_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES.utf8/LC_MONETARY -#usr/lib/locale/eu_ES.utf8/LC_NAME -#usr/lib/locale/eu_ES.utf8/LC_NUMERIC -#usr/lib/locale/eu_ES.utf8/LC_PAPER -#usr/lib/locale/eu_ES.utf8/LC_TELEPHONE -#usr/lib/locale/eu_ES.utf8/LC_TIME -#usr/lib/locale/eu_ES/LC_ADDRESS -#usr/lib/locale/eu_ES/LC_COLLATE -#usr/lib/locale/eu_ES/LC_CTYPE -#usr/lib/locale/eu_ES/LC_IDENTIFICATION -#usr/lib/locale/eu_ES/LC_MEASUREMENT -#usr/lib/locale/eu_ES/LC_MESSAGES -#usr/lib/locale/eu_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES/LC_MONETARY -#usr/lib/locale/eu_ES/LC_NAME -#usr/lib/locale/eu_ES/LC_NUMERIC -#usr/lib/locale/eu_ES/LC_PAPER -#usr/lib/locale/eu_ES/LC_TELEPHONE -#usr/lib/locale/eu_ES/LC_TIME -#usr/lib/locale/eu_ES@euro -#usr/lib/locale/eu_ES@euro/LC_ADDRESS -#usr/lib/locale/eu_ES@euro/LC_COLLATE -#usr/lib/locale/eu_ES@euro/LC_CTYPE -#usr/lib/locale/eu_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/eu_ES@euro/LC_MEASUREMENT -#usr/lib/locale/eu_ES@euro/LC_MESSAGES -#usr/lib/locale/eu_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/eu_ES@euro/LC_MONETARY -#usr/lib/locale/eu_ES@euro/LC_NAME -#usr/lib/locale/eu_ES@euro/LC_NUMERIC -#usr/lib/locale/eu_ES@euro/LC_PAPER -#usr/lib/locale/eu_ES@euro/LC_TELEPHONE -#usr/lib/locale/eu_ES@euro/LC_TIME -#usr/lib/locale/fa_IR -#usr/lib/locale/fa_IR/LC_ADDRESS -#usr/lib/locale/fa_IR/LC_COLLATE -#usr/lib/locale/fa_IR/LC_CTYPE -#usr/lib/locale/fa_IR/LC_IDENTIFICATION -#usr/lib/locale/fa_IR/LC_MEASUREMENT -#usr/lib/locale/fa_IR/LC_MESSAGES -#usr/lib/locale/fa_IR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fa_IR/LC_MONETARY -#usr/lib/locale/fa_IR/LC_NAME -#usr/lib/locale/fa_IR/LC_NUMERIC -#usr/lib/locale/fa_IR/LC_PAPER -#usr/lib/locale/fa_IR/LC_TELEPHONE -#usr/lib/locale/fa_IR/LC_TIME -#usr/lib/locale/fi_FI -#usr/lib/locale/fi_FI.utf8 -#usr/lib/locale/fi_FI.utf8/LC_ADDRESS -#usr/lib/locale/fi_FI.utf8/LC_COLLATE -#usr/lib/locale/fi_FI.utf8/LC_CTYPE -#usr/lib/locale/fi_FI.utf8/LC_IDENTIFICATION -#usr/lib/locale/fi_FI.utf8/LC_MEASUREMENT -#usr/lib/locale/fi_FI.utf8/LC_MESSAGES -#usr/lib/locale/fi_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI.utf8/LC_MONETARY -#usr/lib/locale/fi_FI.utf8/LC_NAME -#usr/lib/locale/fi_FI.utf8/LC_NUMERIC -#usr/lib/locale/fi_FI.utf8/LC_PAPER -#usr/lib/locale/fi_FI.utf8/LC_TELEPHONE -#usr/lib/locale/fi_FI.utf8/LC_TIME -#usr/lib/locale/fi_FI/LC_ADDRESS -#usr/lib/locale/fi_FI/LC_COLLATE -#usr/lib/locale/fi_FI/LC_CTYPE -#usr/lib/locale/fi_FI/LC_IDENTIFICATION -#usr/lib/locale/fi_FI/LC_MEASUREMENT -#usr/lib/locale/fi_FI/LC_MESSAGES -#usr/lib/locale/fi_FI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI/LC_MONETARY -#usr/lib/locale/fi_FI/LC_NAME -#usr/lib/locale/fi_FI/LC_NUMERIC -#usr/lib/locale/fi_FI/LC_PAPER -#usr/lib/locale/fi_FI/LC_TELEPHONE -#usr/lib/locale/fi_FI/LC_TIME -#usr/lib/locale/fi_FI@euro -#usr/lib/locale/fi_FI@euro/LC_ADDRESS -#usr/lib/locale/fi_FI@euro/LC_COLLATE -#usr/lib/locale/fi_FI@euro/LC_CTYPE -#usr/lib/locale/fi_FI@euro/LC_IDENTIFICATION -#usr/lib/locale/fi_FI@euro/LC_MEASUREMENT -#usr/lib/locale/fi_FI@euro/LC_MESSAGES -#usr/lib/locale/fi_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fi_FI@euro/LC_MONETARY -#usr/lib/locale/fi_FI@euro/LC_NAME -#usr/lib/locale/fi_FI@euro/LC_NUMERIC -#usr/lib/locale/fi_FI@euro/LC_PAPER -#usr/lib/locale/fi_FI@euro/LC_TELEPHONE -#usr/lib/locale/fi_FI@euro/LC_TIME -#usr/lib/locale/fil_PH -#usr/lib/locale/fil_PH/LC_ADDRESS -#usr/lib/locale/fil_PH/LC_COLLATE -#usr/lib/locale/fil_PH/LC_CTYPE -#usr/lib/locale/fil_PH/LC_IDENTIFICATION -#usr/lib/locale/fil_PH/LC_MEASUREMENT -#usr/lib/locale/fil_PH/LC_MESSAGES -#usr/lib/locale/fil_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fil_PH/LC_MONETARY -#usr/lib/locale/fil_PH/LC_NAME -#usr/lib/locale/fil_PH/LC_NUMERIC -#usr/lib/locale/fil_PH/LC_PAPER -#usr/lib/locale/fil_PH/LC_TELEPHONE -#usr/lib/locale/fil_PH/LC_TIME -#usr/lib/locale/fo_FO -#usr/lib/locale/fo_FO.utf8 -#usr/lib/locale/fo_FO.utf8/LC_ADDRESS -#usr/lib/locale/fo_FO.utf8/LC_COLLATE -#usr/lib/locale/fo_FO.utf8/LC_CTYPE -#usr/lib/locale/fo_FO.utf8/LC_IDENTIFICATION -#usr/lib/locale/fo_FO.utf8/LC_MEASUREMENT -#usr/lib/locale/fo_FO.utf8/LC_MESSAGES -#usr/lib/locale/fo_FO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fo_FO.utf8/LC_MONETARY -#usr/lib/locale/fo_FO.utf8/LC_NAME -#usr/lib/locale/fo_FO.utf8/LC_NUMERIC -#usr/lib/locale/fo_FO.utf8/LC_PAPER -#usr/lib/locale/fo_FO.utf8/LC_TELEPHONE -#usr/lib/locale/fo_FO.utf8/LC_TIME -#usr/lib/locale/fo_FO/LC_ADDRESS -#usr/lib/locale/fo_FO/LC_COLLATE -#usr/lib/locale/fo_FO/LC_CTYPE -#usr/lib/locale/fo_FO/LC_IDENTIFICATION -#usr/lib/locale/fo_FO/LC_MEASUREMENT -#usr/lib/locale/fo_FO/LC_MESSAGES -#usr/lib/locale/fo_FO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fo_FO/LC_MONETARY -#usr/lib/locale/fo_FO/LC_NAME -#usr/lib/locale/fo_FO/LC_NUMERIC -#usr/lib/locale/fo_FO/LC_PAPER -#usr/lib/locale/fo_FO/LC_TELEPHONE -#usr/lib/locale/fo_FO/LC_TIME -#usr/lib/locale/fr_BE -#usr/lib/locale/fr_BE.utf8 -#usr/lib/locale/fr_BE.utf8/LC_ADDRESS -#usr/lib/locale/fr_BE.utf8/LC_COLLATE -#usr/lib/locale/fr_BE.utf8/LC_CTYPE -#usr/lib/locale/fr_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_BE.utf8/LC_MESSAGES -#usr/lib/locale/fr_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE.utf8/LC_MONETARY -#usr/lib/locale/fr_BE.utf8/LC_NAME -#usr/lib/locale/fr_BE.utf8/LC_NUMERIC -#usr/lib/locale/fr_BE.utf8/LC_PAPER -#usr/lib/locale/fr_BE.utf8/LC_TELEPHONE -#usr/lib/locale/fr_BE.utf8/LC_TIME -#usr/lib/locale/fr_BE/LC_ADDRESS -#usr/lib/locale/fr_BE/LC_COLLATE -#usr/lib/locale/fr_BE/LC_CTYPE -#usr/lib/locale/fr_BE/LC_IDENTIFICATION -#usr/lib/locale/fr_BE/LC_MEASUREMENT -#usr/lib/locale/fr_BE/LC_MESSAGES -#usr/lib/locale/fr_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE/LC_MONETARY -#usr/lib/locale/fr_BE/LC_NAME -#usr/lib/locale/fr_BE/LC_NUMERIC -#usr/lib/locale/fr_BE/LC_PAPER -#usr/lib/locale/fr_BE/LC_TELEPHONE -#usr/lib/locale/fr_BE/LC_TIME -#usr/lib/locale/fr_BE@euro -#usr/lib/locale/fr_BE@euro/LC_ADDRESS -#usr/lib/locale/fr_BE@euro/LC_COLLATE -#usr/lib/locale/fr_BE@euro/LC_CTYPE -#usr/lib/locale/fr_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_BE@euro/LC_MEASUREMENT -#usr/lib/locale/fr_BE@euro/LC_MESSAGES -#usr/lib/locale/fr_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_BE@euro/LC_MONETARY -#usr/lib/locale/fr_BE@euro/LC_NAME -#usr/lib/locale/fr_BE@euro/LC_NUMERIC -#usr/lib/locale/fr_BE@euro/LC_PAPER -#usr/lib/locale/fr_BE@euro/LC_TELEPHONE -#usr/lib/locale/fr_BE@euro/LC_TIME -#usr/lib/locale/fr_CA -#usr/lib/locale/fr_CA.utf8 -#usr/lib/locale/fr_CA.utf8/LC_ADDRESS -#usr/lib/locale/fr_CA.utf8/LC_COLLATE -#usr/lib/locale/fr_CA.utf8/LC_CTYPE -#usr/lib/locale/fr_CA.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_CA.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_CA.utf8/LC_MESSAGES -#usr/lib/locale/fr_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CA.utf8/LC_MONETARY -#usr/lib/locale/fr_CA.utf8/LC_NAME -#usr/lib/locale/fr_CA.utf8/LC_NUMERIC -#usr/lib/locale/fr_CA.utf8/LC_PAPER -#usr/lib/locale/fr_CA.utf8/LC_TELEPHONE -#usr/lib/locale/fr_CA.utf8/LC_TIME -#usr/lib/locale/fr_CA/LC_ADDRESS -#usr/lib/locale/fr_CA/LC_COLLATE -#usr/lib/locale/fr_CA/LC_CTYPE -#usr/lib/locale/fr_CA/LC_IDENTIFICATION -#usr/lib/locale/fr_CA/LC_MEASUREMENT -#usr/lib/locale/fr_CA/LC_MESSAGES -#usr/lib/locale/fr_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CA/LC_MONETARY -#usr/lib/locale/fr_CA/LC_NAME -#usr/lib/locale/fr_CA/LC_NUMERIC -#usr/lib/locale/fr_CA/LC_PAPER -#usr/lib/locale/fr_CA/LC_TELEPHONE -#usr/lib/locale/fr_CA/LC_TIME -#usr/lib/locale/fr_CH -#usr/lib/locale/fr_CH.utf8 -#usr/lib/locale/fr_CH.utf8/LC_ADDRESS -#usr/lib/locale/fr_CH.utf8/LC_COLLATE -#usr/lib/locale/fr_CH.utf8/LC_CTYPE -#usr/lib/locale/fr_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_CH.utf8/LC_MESSAGES -#usr/lib/locale/fr_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CH.utf8/LC_MONETARY -#usr/lib/locale/fr_CH.utf8/LC_NAME -#usr/lib/locale/fr_CH.utf8/LC_NUMERIC -#usr/lib/locale/fr_CH.utf8/LC_PAPER -#usr/lib/locale/fr_CH.utf8/LC_TELEPHONE -#usr/lib/locale/fr_CH.utf8/LC_TIME -#usr/lib/locale/fr_CH/LC_ADDRESS -#usr/lib/locale/fr_CH/LC_COLLATE -#usr/lib/locale/fr_CH/LC_CTYPE -#usr/lib/locale/fr_CH/LC_IDENTIFICATION -#usr/lib/locale/fr_CH/LC_MEASUREMENT -#usr/lib/locale/fr_CH/LC_MESSAGES -#usr/lib/locale/fr_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_CH/LC_MONETARY -#usr/lib/locale/fr_CH/LC_NAME -#usr/lib/locale/fr_CH/LC_NUMERIC -#usr/lib/locale/fr_CH/LC_PAPER -#usr/lib/locale/fr_CH/LC_TELEPHONE -#usr/lib/locale/fr_CH/LC_TIME -#usr/lib/locale/fr_FR -#usr/lib/locale/fr_FR.utf8 -#usr/lib/locale/fr_FR.utf8/LC_ADDRESS -#usr/lib/locale/fr_FR.utf8/LC_COLLATE -#usr/lib/locale/fr_FR.utf8/LC_CTYPE -#usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_FR.utf8/LC_MESSAGES -#usr/lib/locale/fr_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR.utf8/LC_MONETARY -#usr/lib/locale/fr_FR.utf8/LC_NAME -#usr/lib/locale/fr_FR.utf8/LC_NUMERIC -#usr/lib/locale/fr_FR.utf8/LC_PAPER -#usr/lib/locale/fr_FR.utf8/LC_TELEPHONE -#usr/lib/locale/fr_FR.utf8/LC_TIME -#usr/lib/locale/fr_FR/LC_ADDRESS -#usr/lib/locale/fr_FR/LC_COLLATE -#usr/lib/locale/fr_FR/LC_CTYPE -#usr/lib/locale/fr_FR/LC_IDENTIFICATION -#usr/lib/locale/fr_FR/LC_MEASUREMENT -#usr/lib/locale/fr_FR/LC_MESSAGES -#usr/lib/locale/fr_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR/LC_MONETARY -#usr/lib/locale/fr_FR/LC_NAME -#usr/lib/locale/fr_FR/LC_NUMERIC -#usr/lib/locale/fr_FR/LC_PAPER -#usr/lib/locale/fr_FR/LC_TELEPHONE -#usr/lib/locale/fr_FR/LC_TIME -#usr/lib/locale/fr_FR@euro -#usr/lib/locale/fr_FR@euro/LC_ADDRESS -#usr/lib/locale/fr_FR@euro/LC_COLLATE -#usr/lib/locale/fr_FR@euro/LC_CTYPE -#usr/lib/locale/fr_FR@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_FR@euro/LC_MEASUREMENT -#usr/lib/locale/fr_FR@euro/LC_MESSAGES -#usr/lib/locale/fr_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_FR@euro/LC_MONETARY -#usr/lib/locale/fr_FR@euro/LC_NAME -#usr/lib/locale/fr_FR@euro/LC_NUMERIC -#usr/lib/locale/fr_FR@euro/LC_PAPER -#usr/lib/locale/fr_FR@euro/LC_TELEPHONE -#usr/lib/locale/fr_FR@euro/LC_TIME -#usr/lib/locale/fr_LU -#usr/lib/locale/fr_LU.utf8 -#usr/lib/locale/fr_LU.utf8/LC_ADDRESS -#usr/lib/locale/fr_LU.utf8/LC_COLLATE -#usr/lib/locale/fr_LU.utf8/LC_CTYPE -#usr/lib/locale/fr_LU.utf8/LC_IDENTIFICATION -#usr/lib/locale/fr_LU.utf8/LC_MEASUREMENT -#usr/lib/locale/fr_LU.utf8/LC_MESSAGES -#usr/lib/locale/fr_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU.utf8/LC_MONETARY -#usr/lib/locale/fr_LU.utf8/LC_NAME -#usr/lib/locale/fr_LU.utf8/LC_NUMERIC -#usr/lib/locale/fr_LU.utf8/LC_PAPER -#usr/lib/locale/fr_LU.utf8/LC_TELEPHONE -#usr/lib/locale/fr_LU.utf8/LC_TIME -#usr/lib/locale/fr_LU/LC_ADDRESS -#usr/lib/locale/fr_LU/LC_COLLATE -#usr/lib/locale/fr_LU/LC_CTYPE -#usr/lib/locale/fr_LU/LC_IDENTIFICATION -#usr/lib/locale/fr_LU/LC_MEASUREMENT -#usr/lib/locale/fr_LU/LC_MESSAGES -#usr/lib/locale/fr_LU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU/LC_MONETARY -#usr/lib/locale/fr_LU/LC_NAME -#usr/lib/locale/fr_LU/LC_NUMERIC -#usr/lib/locale/fr_LU/LC_PAPER -#usr/lib/locale/fr_LU/LC_TELEPHONE -#usr/lib/locale/fr_LU/LC_TIME -#usr/lib/locale/fr_LU@euro -#usr/lib/locale/fr_LU@euro/LC_ADDRESS -#usr/lib/locale/fr_LU@euro/LC_COLLATE -#usr/lib/locale/fr_LU@euro/LC_CTYPE -#usr/lib/locale/fr_LU@euro/LC_IDENTIFICATION -#usr/lib/locale/fr_LU@euro/LC_MEASUREMENT -#usr/lib/locale/fr_LU@euro/LC_MESSAGES -#usr/lib/locale/fr_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fr_LU@euro/LC_MONETARY -#usr/lib/locale/fr_LU@euro/LC_NAME -#usr/lib/locale/fr_LU@euro/LC_NUMERIC -#usr/lib/locale/fr_LU@euro/LC_PAPER -#usr/lib/locale/fr_LU@euro/LC_TELEPHONE -#usr/lib/locale/fr_LU@euro/LC_TIME -#usr/lib/locale/fur_IT -#usr/lib/locale/fur_IT/LC_ADDRESS -#usr/lib/locale/fur_IT/LC_COLLATE -#usr/lib/locale/fur_IT/LC_CTYPE -#usr/lib/locale/fur_IT/LC_IDENTIFICATION -#usr/lib/locale/fur_IT/LC_MEASUREMENT -#usr/lib/locale/fur_IT/LC_MESSAGES -#usr/lib/locale/fur_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fur_IT/LC_MONETARY -#usr/lib/locale/fur_IT/LC_NAME -#usr/lib/locale/fur_IT/LC_NUMERIC -#usr/lib/locale/fur_IT/LC_PAPER -#usr/lib/locale/fur_IT/LC_TELEPHONE -#usr/lib/locale/fur_IT/LC_TIME -#usr/lib/locale/fy_DE -#usr/lib/locale/fy_DE/LC_ADDRESS -#usr/lib/locale/fy_DE/LC_COLLATE -#usr/lib/locale/fy_DE/LC_CTYPE -#usr/lib/locale/fy_DE/LC_IDENTIFICATION -#usr/lib/locale/fy_DE/LC_MEASUREMENT -#usr/lib/locale/fy_DE/LC_MESSAGES -#usr/lib/locale/fy_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fy_DE/LC_MONETARY -#usr/lib/locale/fy_DE/LC_NAME -#usr/lib/locale/fy_DE/LC_NUMERIC -#usr/lib/locale/fy_DE/LC_PAPER -#usr/lib/locale/fy_DE/LC_TELEPHONE -#usr/lib/locale/fy_DE/LC_TIME -#usr/lib/locale/fy_NL -#usr/lib/locale/fy_NL/LC_ADDRESS -#usr/lib/locale/fy_NL/LC_COLLATE -#usr/lib/locale/fy_NL/LC_CTYPE -#usr/lib/locale/fy_NL/LC_IDENTIFICATION -#usr/lib/locale/fy_NL/LC_MEASUREMENT -#usr/lib/locale/fy_NL/LC_MESSAGES -#usr/lib/locale/fy_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/fy_NL/LC_MONETARY -#usr/lib/locale/fy_NL/LC_NAME -#usr/lib/locale/fy_NL/LC_NUMERIC -#usr/lib/locale/fy_NL/LC_PAPER -#usr/lib/locale/fy_NL/LC_TELEPHONE -#usr/lib/locale/fy_NL/LC_TIME -#usr/lib/locale/ga_IE -#usr/lib/locale/ga_IE.utf8 -#usr/lib/locale/ga_IE.utf8/LC_ADDRESS -#usr/lib/locale/ga_IE.utf8/LC_COLLATE -#usr/lib/locale/ga_IE.utf8/LC_CTYPE -#usr/lib/locale/ga_IE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ga_IE.utf8/LC_MEASUREMENT -#usr/lib/locale/ga_IE.utf8/LC_MESSAGES -#usr/lib/locale/ga_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE.utf8/LC_MONETARY -#usr/lib/locale/ga_IE.utf8/LC_NAME -#usr/lib/locale/ga_IE.utf8/LC_NUMERIC -#usr/lib/locale/ga_IE.utf8/LC_PAPER -#usr/lib/locale/ga_IE.utf8/LC_TELEPHONE -#usr/lib/locale/ga_IE.utf8/LC_TIME -#usr/lib/locale/ga_IE/LC_ADDRESS -#usr/lib/locale/ga_IE/LC_COLLATE -#usr/lib/locale/ga_IE/LC_CTYPE -#usr/lib/locale/ga_IE/LC_IDENTIFICATION -#usr/lib/locale/ga_IE/LC_MEASUREMENT -#usr/lib/locale/ga_IE/LC_MESSAGES -#usr/lib/locale/ga_IE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE/LC_MONETARY -#usr/lib/locale/ga_IE/LC_NAME -#usr/lib/locale/ga_IE/LC_NUMERIC -#usr/lib/locale/ga_IE/LC_PAPER -#usr/lib/locale/ga_IE/LC_TELEPHONE -#usr/lib/locale/ga_IE/LC_TIME -#usr/lib/locale/ga_IE@euro -#usr/lib/locale/ga_IE@euro/LC_ADDRESS -#usr/lib/locale/ga_IE@euro/LC_COLLATE -#usr/lib/locale/ga_IE@euro/LC_CTYPE -#usr/lib/locale/ga_IE@euro/LC_IDENTIFICATION -#usr/lib/locale/ga_IE@euro/LC_MEASUREMENT -#usr/lib/locale/ga_IE@euro/LC_MESSAGES -#usr/lib/locale/ga_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ga_IE@euro/LC_MONETARY -#usr/lib/locale/ga_IE@euro/LC_NAME -#usr/lib/locale/ga_IE@euro/LC_NUMERIC -#usr/lib/locale/ga_IE@euro/LC_PAPER -#usr/lib/locale/ga_IE@euro/LC_TELEPHONE -#usr/lib/locale/ga_IE@euro/LC_TIME -#usr/lib/locale/gd_GB -#usr/lib/locale/gd_GB.utf8 -#usr/lib/locale/gd_GB.utf8/LC_ADDRESS -#usr/lib/locale/gd_GB.utf8/LC_COLLATE -#usr/lib/locale/gd_GB.utf8/LC_CTYPE -#usr/lib/locale/gd_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/gd_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/gd_GB.utf8/LC_MESSAGES -#usr/lib/locale/gd_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gd_GB.utf8/LC_MONETARY -#usr/lib/locale/gd_GB.utf8/LC_NAME -#usr/lib/locale/gd_GB.utf8/LC_NUMERIC -#usr/lib/locale/gd_GB.utf8/LC_PAPER -#usr/lib/locale/gd_GB.utf8/LC_TELEPHONE -#usr/lib/locale/gd_GB.utf8/LC_TIME -#usr/lib/locale/gd_GB/LC_ADDRESS -#usr/lib/locale/gd_GB/LC_COLLATE -#usr/lib/locale/gd_GB/LC_CTYPE -#usr/lib/locale/gd_GB/LC_IDENTIFICATION -#usr/lib/locale/gd_GB/LC_MEASUREMENT -#usr/lib/locale/gd_GB/LC_MESSAGES -#usr/lib/locale/gd_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gd_GB/LC_MONETARY -#usr/lib/locale/gd_GB/LC_NAME -#usr/lib/locale/gd_GB/LC_NUMERIC -#usr/lib/locale/gd_GB/LC_PAPER -#usr/lib/locale/gd_GB/LC_TELEPHONE -#usr/lib/locale/gd_GB/LC_TIME -#usr/lib/locale/gez_ER -#usr/lib/locale/gez_ER/LC_ADDRESS -#usr/lib/locale/gez_ER/LC_COLLATE -#usr/lib/locale/gez_ER/LC_CTYPE -#usr/lib/locale/gez_ER/LC_IDENTIFICATION -#usr/lib/locale/gez_ER/LC_MEASUREMENT -#usr/lib/locale/gez_ER/LC_MESSAGES -#usr/lib/locale/gez_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ER/LC_MONETARY -#usr/lib/locale/gez_ER/LC_NAME -#usr/lib/locale/gez_ER/LC_NUMERIC -#usr/lib/locale/gez_ER/LC_PAPER -#usr/lib/locale/gez_ER/LC_TELEPHONE -#usr/lib/locale/gez_ER/LC_TIME -#usr/lib/locale/gez_ER@abegede -#usr/lib/locale/gez_ER@abegede/LC_ADDRESS -#usr/lib/locale/gez_ER@abegede/LC_COLLATE -#usr/lib/locale/gez_ER@abegede/LC_CTYPE -#usr/lib/locale/gez_ER@abegede/LC_IDENTIFICATION -#usr/lib/locale/gez_ER@abegede/LC_MEASUREMENT -#usr/lib/locale/gez_ER@abegede/LC_MESSAGES -#usr/lib/locale/gez_ER@abegede/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ER@abegede/LC_MONETARY -#usr/lib/locale/gez_ER@abegede/LC_NAME -#usr/lib/locale/gez_ER@abegede/LC_NUMERIC -#usr/lib/locale/gez_ER@abegede/LC_PAPER -#usr/lib/locale/gez_ER@abegede/LC_TELEPHONE -#usr/lib/locale/gez_ER@abegede/LC_TIME -#usr/lib/locale/gez_ET -#usr/lib/locale/gez_ET/LC_ADDRESS -#usr/lib/locale/gez_ET/LC_COLLATE -#usr/lib/locale/gez_ET/LC_CTYPE -#usr/lib/locale/gez_ET/LC_IDENTIFICATION -#usr/lib/locale/gez_ET/LC_MEASUREMENT -#usr/lib/locale/gez_ET/LC_MESSAGES -#usr/lib/locale/gez_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ET/LC_MONETARY -#usr/lib/locale/gez_ET/LC_NAME -#usr/lib/locale/gez_ET/LC_NUMERIC -#usr/lib/locale/gez_ET/LC_PAPER -#usr/lib/locale/gez_ET/LC_TELEPHONE -#usr/lib/locale/gez_ET/LC_TIME -#usr/lib/locale/gez_ET@abegede -#usr/lib/locale/gez_ET@abegede/LC_ADDRESS -#usr/lib/locale/gez_ET@abegede/LC_COLLATE -#usr/lib/locale/gez_ET@abegede/LC_CTYPE -#usr/lib/locale/gez_ET@abegede/LC_IDENTIFICATION -#usr/lib/locale/gez_ET@abegede/LC_MEASUREMENT -#usr/lib/locale/gez_ET@abegede/LC_MESSAGES -#usr/lib/locale/gez_ET@abegede/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gez_ET@abegede/LC_MONETARY -#usr/lib/locale/gez_ET@abegede/LC_NAME -#usr/lib/locale/gez_ET@abegede/LC_NUMERIC -#usr/lib/locale/gez_ET@abegede/LC_PAPER -#usr/lib/locale/gez_ET@abegede/LC_TELEPHONE -#usr/lib/locale/gez_ET@abegede/LC_TIME -#usr/lib/locale/gl_ES -#usr/lib/locale/gl_ES.utf8 -#usr/lib/locale/gl_ES.utf8/LC_ADDRESS -#usr/lib/locale/gl_ES.utf8/LC_COLLATE -#usr/lib/locale/gl_ES.utf8/LC_CTYPE -#usr/lib/locale/gl_ES.utf8/LC_IDENTIFICATION -#usr/lib/locale/gl_ES.utf8/LC_MEASUREMENT -#usr/lib/locale/gl_ES.utf8/LC_MESSAGES -#usr/lib/locale/gl_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES.utf8/LC_MONETARY -#usr/lib/locale/gl_ES.utf8/LC_NAME -#usr/lib/locale/gl_ES.utf8/LC_NUMERIC -#usr/lib/locale/gl_ES.utf8/LC_PAPER -#usr/lib/locale/gl_ES.utf8/LC_TELEPHONE -#usr/lib/locale/gl_ES.utf8/LC_TIME -#usr/lib/locale/gl_ES/LC_ADDRESS -#usr/lib/locale/gl_ES/LC_COLLATE -#usr/lib/locale/gl_ES/LC_CTYPE -#usr/lib/locale/gl_ES/LC_IDENTIFICATION -#usr/lib/locale/gl_ES/LC_MEASUREMENT -#usr/lib/locale/gl_ES/LC_MESSAGES -#usr/lib/locale/gl_ES/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES/LC_MONETARY -#usr/lib/locale/gl_ES/LC_NAME -#usr/lib/locale/gl_ES/LC_NUMERIC -#usr/lib/locale/gl_ES/LC_PAPER -#usr/lib/locale/gl_ES/LC_TELEPHONE -#usr/lib/locale/gl_ES/LC_TIME -#usr/lib/locale/gl_ES@euro -#usr/lib/locale/gl_ES@euro/LC_ADDRESS -#usr/lib/locale/gl_ES@euro/LC_COLLATE -#usr/lib/locale/gl_ES@euro/LC_CTYPE -#usr/lib/locale/gl_ES@euro/LC_IDENTIFICATION -#usr/lib/locale/gl_ES@euro/LC_MEASUREMENT -#usr/lib/locale/gl_ES@euro/LC_MESSAGES -#usr/lib/locale/gl_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gl_ES@euro/LC_MONETARY -#usr/lib/locale/gl_ES@euro/LC_NAME -#usr/lib/locale/gl_ES@euro/LC_NUMERIC -#usr/lib/locale/gl_ES@euro/LC_PAPER -#usr/lib/locale/gl_ES@euro/LC_TELEPHONE -#usr/lib/locale/gl_ES@euro/LC_TIME -#usr/lib/locale/gu_IN -#usr/lib/locale/gu_IN/LC_ADDRESS -#usr/lib/locale/gu_IN/LC_COLLATE -#usr/lib/locale/gu_IN/LC_CTYPE -#usr/lib/locale/gu_IN/LC_IDENTIFICATION -#usr/lib/locale/gu_IN/LC_MEASUREMENT -#usr/lib/locale/gu_IN/LC_MESSAGES -#usr/lib/locale/gu_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gu_IN/LC_MONETARY -#usr/lib/locale/gu_IN/LC_NAME -#usr/lib/locale/gu_IN/LC_NUMERIC -#usr/lib/locale/gu_IN/LC_PAPER -#usr/lib/locale/gu_IN/LC_TELEPHONE -#usr/lib/locale/gu_IN/LC_TIME -#usr/lib/locale/gv_GB -#usr/lib/locale/gv_GB.utf8 -#usr/lib/locale/gv_GB.utf8/LC_ADDRESS -#usr/lib/locale/gv_GB.utf8/LC_COLLATE -#usr/lib/locale/gv_GB.utf8/LC_CTYPE -#usr/lib/locale/gv_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/gv_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/gv_GB.utf8/LC_MESSAGES -#usr/lib/locale/gv_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gv_GB.utf8/LC_MONETARY -#usr/lib/locale/gv_GB.utf8/LC_NAME -#usr/lib/locale/gv_GB.utf8/LC_NUMERIC -#usr/lib/locale/gv_GB.utf8/LC_PAPER -#usr/lib/locale/gv_GB.utf8/LC_TELEPHONE -#usr/lib/locale/gv_GB.utf8/LC_TIME -#usr/lib/locale/gv_GB/LC_ADDRESS -#usr/lib/locale/gv_GB/LC_COLLATE -#usr/lib/locale/gv_GB/LC_CTYPE -#usr/lib/locale/gv_GB/LC_IDENTIFICATION -#usr/lib/locale/gv_GB/LC_MEASUREMENT -#usr/lib/locale/gv_GB/LC_MESSAGES -#usr/lib/locale/gv_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/gv_GB/LC_MONETARY -#usr/lib/locale/gv_GB/LC_NAME -#usr/lib/locale/gv_GB/LC_NUMERIC -#usr/lib/locale/gv_GB/LC_PAPER -#usr/lib/locale/gv_GB/LC_TELEPHONE -#usr/lib/locale/gv_GB/LC_TIME -#usr/lib/locale/ha_NG -#usr/lib/locale/ha_NG/LC_ADDRESS -#usr/lib/locale/ha_NG/LC_COLLATE -#usr/lib/locale/ha_NG/LC_CTYPE -#usr/lib/locale/ha_NG/LC_IDENTIFICATION -#usr/lib/locale/ha_NG/LC_MEASUREMENT -#usr/lib/locale/ha_NG/LC_MESSAGES -#usr/lib/locale/ha_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ha_NG/LC_MONETARY -#usr/lib/locale/ha_NG/LC_NAME -#usr/lib/locale/ha_NG/LC_NUMERIC -#usr/lib/locale/ha_NG/LC_PAPER -#usr/lib/locale/ha_NG/LC_TELEPHONE -#usr/lib/locale/ha_NG/LC_TIME -#usr/lib/locale/he_IL -#usr/lib/locale/he_IL.utf8 -#usr/lib/locale/he_IL.utf8/LC_ADDRESS -#usr/lib/locale/he_IL.utf8/LC_COLLATE -#usr/lib/locale/he_IL.utf8/LC_CTYPE -#usr/lib/locale/he_IL.utf8/LC_IDENTIFICATION -#usr/lib/locale/he_IL.utf8/LC_MEASUREMENT -#usr/lib/locale/he_IL.utf8/LC_MESSAGES -#usr/lib/locale/he_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/he_IL.utf8/LC_MONETARY -#usr/lib/locale/he_IL.utf8/LC_NAME -#usr/lib/locale/he_IL.utf8/LC_NUMERIC -#usr/lib/locale/he_IL.utf8/LC_PAPER -#usr/lib/locale/he_IL.utf8/LC_TELEPHONE -#usr/lib/locale/he_IL.utf8/LC_TIME -#usr/lib/locale/he_IL/LC_ADDRESS -#usr/lib/locale/he_IL/LC_COLLATE -#usr/lib/locale/he_IL/LC_CTYPE -#usr/lib/locale/he_IL/LC_IDENTIFICATION -#usr/lib/locale/he_IL/LC_MEASUREMENT -#usr/lib/locale/he_IL/LC_MESSAGES -#usr/lib/locale/he_IL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/he_IL/LC_MONETARY -#usr/lib/locale/he_IL/LC_NAME -#usr/lib/locale/he_IL/LC_NUMERIC -#usr/lib/locale/he_IL/LC_PAPER -#usr/lib/locale/he_IL/LC_TELEPHONE -#usr/lib/locale/he_IL/LC_TIME -#usr/lib/locale/hi_IN -#usr/lib/locale/hi_IN/LC_ADDRESS -#usr/lib/locale/hi_IN/LC_COLLATE -#usr/lib/locale/hi_IN/LC_CTYPE -#usr/lib/locale/hi_IN/LC_IDENTIFICATION -#usr/lib/locale/hi_IN/LC_MEASUREMENT -#usr/lib/locale/hi_IN/LC_MESSAGES -#usr/lib/locale/hi_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hi_IN/LC_MONETARY -#usr/lib/locale/hi_IN/LC_NAME -#usr/lib/locale/hi_IN/LC_NUMERIC -#usr/lib/locale/hi_IN/LC_PAPER -#usr/lib/locale/hi_IN/LC_TELEPHONE -#usr/lib/locale/hi_IN/LC_TIME -#usr/lib/locale/hne_IN -#usr/lib/locale/hne_IN/LC_ADDRESS -#usr/lib/locale/hne_IN/LC_COLLATE -#usr/lib/locale/hne_IN/LC_CTYPE -#usr/lib/locale/hne_IN/LC_IDENTIFICATION -#usr/lib/locale/hne_IN/LC_MEASUREMENT -#usr/lib/locale/hne_IN/LC_MESSAGES -#usr/lib/locale/hne_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hne_IN/LC_MONETARY -#usr/lib/locale/hne_IN/LC_NAME -#usr/lib/locale/hne_IN/LC_NUMERIC -#usr/lib/locale/hne_IN/LC_PAPER -#usr/lib/locale/hne_IN/LC_TELEPHONE -#usr/lib/locale/hne_IN/LC_TIME -#usr/lib/locale/hr_HR -#usr/lib/locale/hr_HR.utf8 -#usr/lib/locale/hr_HR.utf8/LC_ADDRESS -#usr/lib/locale/hr_HR.utf8/LC_COLLATE -#usr/lib/locale/hr_HR.utf8/LC_CTYPE -#usr/lib/locale/hr_HR.utf8/LC_IDENTIFICATION -#usr/lib/locale/hr_HR.utf8/LC_MEASUREMENT -#usr/lib/locale/hr_HR.utf8/LC_MESSAGES -#usr/lib/locale/hr_HR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hr_HR.utf8/LC_MONETARY -#usr/lib/locale/hr_HR.utf8/LC_NAME -#usr/lib/locale/hr_HR.utf8/LC_NUMERIC -#usr/lib/locale/hr_HR.utf8/LC_PAPER -#usr/lib/locale/hr_HR.utf8/LC_TELEPHONE -#usr/lib/locale/hr_HR.utf8/LC_TIME -#usr/lib/locale/hr_HR/LC_ADDRESS -#usr/lib/locale/hr_HR/LC_COLLATE -#usr/lib/locale/hr_HR/LC_CTYPE -#usr/lib/locale/hr_HR/LC_IDENTIFICATION -#usr/lib/locale/hr_HR/LC_MEASUREMENT -#usr/lib/locale/hr_HR/LC_MESSAGES -#usr/lib/locale/hr_HR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hr_HR/LC_MONETARY -#usr/lib/locale/hr_HR/LC_NAME -#usr/lib/locale/hr_HR/LC_NUMERIC -#usr/lib/locale/hr_HR/LC_PAPER -#usr/lib/locale/hr_HR/LC_TELEPHONE -#usr/lib/locale/hr_HR/LC_TIME -#usr/lib/locale/hsb_DE -#usr/lib/locale/hsb_DE.utf8 -#usr/lib/locale/hsb_DE.utf8/LC_ADDRESS -#usr/lib/locale/hsb_DE.utf8/LC_COLLATE -#usr/lib/locale/hsb_DE.utf8/LC_CTYPE -#usr/lib/locale/hsb_DE.utf8/LC_IDENTIFICATION -#usr/lib/locale/hsb_DE.utf8/LC_MEASUREMENT -#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES -#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hsb_DE.utf8/LC_MONETARY -#usr/lib/locale/hsb_DE.utf8/LC_NAME -#usr/lib/locale/hsb_DE.utf8/LC_NUMERIC -#usr/lib/locale/hsb_DE.utf8/LC_PAPER -#usr/lib/locale/hsb_DE.utf8/LC_TELEPHONE -#usr/lib/locale/hsb_DE.utf8/LC_TIME -#usr/lib/locale/hsb_DE/LC_ADDRESS -#usr/lib/locale/hsb_DE/LC_COLLATE -#usr/lib/locale/hsb_DE/LC_CTYPE -#usr/lib/locale/hsb_DE/LC_IDENTIFICATION -#usr/lib/locale/hsb_DE/LC_MEASUREMENT -#usr/lib/locale/hsb_DE/LC_MESSAGES -#usr/lib/locale/hsb_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hsb_DE/LC_MONETARY -#usr/lib/locale/hsb_DE/LC_NAME -#usr/lib/locale/hsb_DE/LC_NUMERIC -#usr/lib/locale/hsb_DE/LC_PAPER -#usr/lib/locale/hsb_DE/LC_TELEPHONE -#usr/lib/locale/hsb_DE/LC_TIME -#usr/lib/locale/ht_HT -#usr/lib/locale/ht_HT/LC_ADDRESS -#usr/lib/locale/ht_HT/LC_COLLATE -#usr/lib/locale/ht_HT/LC_CTYPE -#usr/lib/locale/ht_HT/LC_IDENTIFICATION -#usr/lib/locale/ht_HT/LC_MEASUREMENT -#usr/lib/locale/ht_HT/LC_MESSAGES -#usr/lib/locale/ht_HT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ht_HT/LC_MONETARY -#usr/lib/locale/ht_HT/LC_NAME -#usr/lib/locale/ht_HT/LC_NUMERIC -#usr/lib/locale/ht_HT/LC_PAPER -#usr/lib/locale/ht_HT/LC_TELEPHONE -#usr/lib/locale/ht_HT/LC_TIME -#usr/lib/locale/hu_HU -#usr/lib/locale/hu_HU.utf8 -#usr/lib/locale/hu_HU.utf8/LC_ADDRESS -#usr/lib/locale/hu_HU.utf8/LC_COLLATE -#usr/lib/locale/hu_HU.utf8/LC_CTYPE -#usr/lib/locale/hu_HU.utf8/LC_IDENTIFICATION -#usr/lib/locale/hu_HU.utf8/LC_MEASUREMENT -#usr/lib/locale/hu_HU.utf8/LC_MESSAGES -#usr/lib/locale/hu_HU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hu_HU.utf8/LC_MONETARY -#usr/lib/locale/hu_HU.utf8/LC_NAME -#usr/lib/locale/hu_HU.utf8/LC_NUMERIC -#usr/lib/locale/hu_HU.utf8/LC_PAPER -#usr/lib/locale/hu_HU.utf8/LC_TELEPHONE -#usr/lib/locale/hu_HU.utf8/LC_TIME -#usr/lib/locale/hu_HU/LC_ADDRESS -#usr/lib/locale/hu_HU/LC_COLLATE -#usr/lib/locale/hu_HU/LC_CTYPE -#usr/lib/locale/hu_HU/LC_IDENTIFICATION -#usr/lib/locale/hu_HU/LC_MEASUREMENT -#usr/lib/locale/hu_HU/LC_MESSAGES -#usr/lib/locale/hu_HU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hu_HU/LC_MONETARY -#usr/lib/locale/hu_HU/LC_NAME -#usr/lib/locale/hu_HU/LC_NUMERIC -#usr/lib/locale/hu_HU/LC_PAPER -#usr/lib/locale/hu_HU/LC_TELEPHONE -#usr/lib/locale/hu_HU/LC_TIME -#usr/lib/locale/hy_AM -#usr/lib/locale/hy_AM.armscii8 -#usr/lib/locale/hy_AM.armscii8/LC_ADDRESS -#usr/lib/locale/hy_AM.armscii8/LC_COLLATE -#usr/lib/locale/hy_AM.armscii8/LC_CTYPE -#usr/lib/locale/hy_AM.armscii8/LC_IDENTIFICATION -#usr/lib/locale/hy_AM.armscii8/LC_MEASUREMENT -#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES -#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hy_AM.armscii8/LC_MONETARY -#usr/lib/locale/hy_AM.armscii8/LC_NAME -#usr/lib/locale/hy_AM.armscii8/LC_NUMERIC -#usr/lib/locale/hy_AM.armscii8/LC_PAPER -#usr/lib/locale/hy_AM.armscii8/LC_TELEPHONE -#usr/lib/locale/hy_AM.armscii8/LC_TIME -#usr/lib/locale/hy_AM/LC_ADDRESS -#usr/lib/locale/hy_AM/LC_COLLATE -#usr/lib/locale/hy_AM/LC_CTYPE -#usr/lib/locale/hy_AM/LC_IDENTIFICATION -#usr/lib/locale/hy_AM/LC_MEASUREMENT -#usr/lib/locale/hy_AM/LC_MESSAGES -#usr/lib/locale/hy_AM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/hy_AM/LC_MONETARY -#usr/lib/locale/hy_AM/LC_NAME -#usr/lib/locale/hy_AM/LC_NUMERIC -#usr/lib/locale/hy_AM/LC_PAPER -#usr/lib/locale/hy_AM/LC_TELEPHONE -#usr/lib/locale/hy_AM/LC_TIME -#usr/lib/locale/id_ID -#usr/lib/locale/id_ID.utf8 -#usr/lib/locale/id_ID.utf8/LC_ADDRESS -#usr/lib/locale/id_ID.utf8/LC_COLLATE -#usr/lib/locale/id_ID.utf8/LC_CTYPE -#usr/lib/locale/id_ID.utf8/LC_IDENTIFICATION -#usr/lib/locale/id_ID.utf8/LC_MEASUREMENT -#usr/lib/locale/id_ID.utf8/LC_MESSAGES -#usr/lib/locale/id_ID.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/id_ID.utf8/LC_MONETARY -#usr/lib/locale/id_ID.utf8/LC_NAME -#usr/lib/locale/id_ID.utf8/LC_NUMERIC -#usr/lib/locale/id_ID.utf8/LC_PAPER -#usr/lib/locale/id_ID.utf8/LC_TELEPHONE -#usr/lib/locale/id_ID.utf8/LC_TIME -#usr/lib/locale/id_ID/LC_ADDRESS -#usr/lib/locale/id_ID/LC_COLLATE -#usr/lib/locale/id_ID/LC_CTYPE -#usr/lib/locale/id_ID/LC_IDENTIFICATION -#usr/lib/locale/id_ID/LC_MEASUREMENT -#usr/lib/locale/id_ID/LC_MESSAGES -#usr/lib/locale/id_ID/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/id_ID/LC_MONETARY -#usr/lib/locale/id_ID/LC_NAME -#usr/lib/locale/id_ID/LC_NUMERIC -#usr/lib/locale/id_ID/LC_PAPER -#usr/lib/locale/id_ID/LC_TELEPHONE -#usr/lib/locale/id_ID/LC_TIME -#usr/lib/locale/ig_NG -#usr/lib/locale/ig_NG/LC_ADDRESS -#usr/lib/locale/ig_NG/LC_COLLATE -#usr/lib/locale/ig_NG/LC_CTYPE -#usr/lib/locale/ig_NG/LC_IDENTIFICATION -#usr/lib/locale/ig_NG/LC_MEASUREMENT -#usr/lib/locale/ig_NG/LC_MESSAGES -#usr/lib/locale/ig_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ig_NG/LC_MONETARY -#usr/lib/locale/ig_NG/LC_NAME -#usr/lib/locale/ig_NG/LC_NUMERIC -#usr/lib/locale/ig_NG/LC_PAPER -#usr/lib/locale/ig_NG/LC_TELEPHONE -#usr/lib/locale/ig_NG/LC_TIME -#usr/lib/locale/ik_CA -#usr/lib/locale/ik_CA/LC_ADDRESS -#usr/lib/locale/ik_CA/LC_COLLATE -#usr/lib/locale/ik_CA/LC_CTYPE -#usr/lib/locale/ik_CA/LC_IDENTIFICATION -#usr/lib/locale/ik_CA/LC_MEASUREMENT -#usr/lib/locale/ik_CA/LC_MESSAGES -#usr/lib/locale/ik_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ik_CA/LC_MONETARY -#usr/lib/locale/ik_CA/LC_NAME -#usr/lib/locale/ik_CA/LC_NUMERIC -#usr/lib/locale/ik_CA/LC_PAPER -#usr/lib/locale/ik_CA/LC_TELEPHONE -#usr/lib/locale/ik_CA/LC_TIME -#usr/lib/locale/is_IS -#usr/lib/locale/is_IS.utf8 -#usr/lib/locale/is_IS.utf8/LC_ADDRESS -#usr/lib/locale/is_IS.utf8/LC_COLLATE -#usr/lib/locale/is_IS.utf8/LC_CTYPE -#usr/lib/locale/is_IS.utf8/LC_IDENTIFICATION -#usr/lib/locale/is_IS.utf8/LC_MEASUREMENT -#usr/lib/locale/is_IS.utf8/LC_MESSAGES -#usr/lib/locale/is_IS.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/is_IS.utf8/LC_MONETARY -#usr/lib/locale/is_IS.utf8/LC_NAME -#usr/lib/locale/is_IS.utf8/LC_NUMERIC -#usr/lib/locale/is_IS.utf8/LC_PAPER -#usr/lib/locale/is_IS.utf8/LC_TELEPHONE -#usr/lib/locale/is_IS.utf8/LC_TIME -#usr/lib/locale/is_IS/LC_ADDRESS -#usr/lib/locale/is_IS/LC_COLLATE -#usr/lib/locale/is_IS/LC_CTYPE -#usr/lib/locale/is_IS/LC_IDENTIFICATION -#usr/lib/locale/is_IS/LC_MEASUREMENT -#usr/lib/locale/is_IS/LC_MESSAGES -#usr/lib/locale/is_IS/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/is_IS/LC_MONETARY -#usr/lib/locale/is_IS/LC_NAME -#usr/lib/locale/is_IS/LC_NUMERIC -#usr/lib/locale/is_IS/LC_PAPER -#usr/lib/locale/is_IS/LC_TELEPHONE -#usr/lib/locale/is_IS/LC_TIME -#usr/lib/locale/it_CH -#usr/lib/locale/it_CH.utf8 -#usr/lib/locale/it_CH.utf8/LC_ADDRESS -#usr/lib/locale/it_CH.utf8/LC_COLLATE -#usr/lib/locale/it_CH.utf8/LC_CTYPE -#usr/lib/locale/it_CH.utf8/LC_IDENTIFICATION -#usr/lib/locale/it_CH.utf8/LC_MEASUREMENT -#usr/lib/locale/it_CH.utf8/LC_MESSAGES -#usr/lib/locale/it_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_CH.utf8/LC_MONETARY -#usr/lib/locale/it_CH.utf8/LC_NAME -#usr/lib/locale/it_CH.utf8/LC_NUMERIC -#usr/lib/locale/it_CH.utf8/LC_PAPER -#usr/lib/locale/it_CH.utf8/LC_TELEPHONE -#usr/lib/locale/it_CH.utf8/LC_TIME -#usr/lib/locale/it_CH/LC_ADDRESS -#usr/lib/locale/it_CH/LC_COLLATE -#usr/lib/locale/it_CH/LC_CTYPE -#usr/lib/locale/it_CH/LC_IDENTIFICATION -#usr/lib/locale/it_CH/LC_MEASUREMENT -#usr/lib/locale/it_CH/LC_MESSAGES -#usr/lib/locale/it_CH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_CH/LC_MONETARY -#usr/lib/locale/it_CH/LC_NAME -#usr/lib/locale/it_CH/LC_NUMERIC -#usr/lib/locale/it_CH/LC_PAPER -#usr/lib/locale/it_CH/LC_TELEPHONE -#usr/lib/locale/it_CH/LC_TIME -#usr/lib/locale/it_IT -#usr/lib/locale/it_IT.utf8 -#usr/lib/locale/it_IT.utf8/LC_ADDRESS -#usr/lib/locale/it_IT.utf8/LC_COLLATE -#usr/lib/locale/it_IT.utf8/LC_CTYPE -#usr/lib/locale/it_IT.utf8/LC_IDENTIFICATION -#usr/lib/locale/it_IT.utf8/LC_MEASUREMENT -#usr/lib/locale/it_IT.utf8/LC_MESSAGES -#usr/lib/locale/it_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT.utf8/LC_MONETARY -#usr/lib/locale/it_IT.utf8/LC_NAME -#usr/lib/locale/it_IT.utf8/LC_NUMERIC -#usr/lib/locale/it_IT.utf8/LC_PAPER -#usr/lib/locale/it_IT.utf8/LC_TELEPHONE -#usr/lib/locale/it_IT.utf8/LC_TIME -#usr/lib/locale/it_IT/LC_ADDRESS -#usr/lib/locale/it_IT/LC_COLLATE -#usr/lib/locale/it_IT/LC_CTYPE -#usr/lib/locale/it_IT/LC_IDENTIFICATION -#usr/lib/locale/it_IT/LC_MEASUREMENT -#usr/lib/locale/it_IT/LC_MESSAGES -#usr/lib/locale/it_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT/LC_MONETARY -#usr/lib/locale/it_IT/LC_NAME -#usr/lib/locale/it_IT/LC_NUMERIC -#usr/lib/locale/it_IT/LC_PAPER -#usr/lib/locale/it_IT/LC_TELEPHONE -#usr/lib/locale/it_IT/LC_TIME -#usr/lib/locale/it_IT@euro -#usr/lib/locale/it_IT@euro/LC_ADDRESS -#usr/lib/locale/it_IT@euro/LC_COLLATE -#usr/lib/locale/it_IT@euro/LC_CTYPE -#usr/lib/locale/it_IT@euro/LC_IDENTIFICATION -#usr/lib/locale/it_IT@euro/LC_MEASUREMENT -#usr/lib/locale/it_IT@euro/LC_MESSAGES -#usr/lib/locale/it_IT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/it_IT@euro/LC_MONETARY -#usr/lib/locale/it_IT@euro/LC_NAME -#usr/lib/locale/it_IT@euro/LC_NUMERIC -#usr/lib/locale/it_IT@euro/LC_PAPER -#usr/lib/locale/it_IT@euro/LC_TELEPHONE -#usr/lib/locale/it_IT@euro/LC_TIME -#usr/lib/locale/iu_CA -#usr/lib/locale/iu_CA/LC_ADDRESS -#usr/lib/locale/iu_CA/LC_COLLATE -#usr/lib/locale/iu_CA/LC_CTYPE -#usr/lib/locale/iu_CA/LC_IDENTIFICATION -#usr/lib/locale/iu_CA/LC_MEASUREMENT -#usr/lib/locale/iu_CA/LC_MESSAGES -#usr/lib/locale/iu_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iu_CA/LC_MONETARY -#usr/lib/locale/iu_CA/LC_NAME -#usr/lib/locale/iu_CA/LC_NUMERIC -#usr/lib/locale/iu_CA/LC_PAPER -#usr/lib/locale/iu_CA/LC_TELEPHONE -#usr/lib/locale/iu_CA/LC_TIME -#usr/lib/locale/iw_IL -#usr/lib/locale/iw_IL.utf8 -#usr/lib/locale/iw_IL.utf8/LC_ADDRESS -#usr/lib/locale/iw_IL.utf8/LC_COLLATE -#usr/lib/locale/iw_IL.utf8/LC_CTYPE -#usr/lib/locale/iw_IL.utf8/LC_IDENTIFICATION -#usr/lib/locale/iw_IL.utf8/LC_MEASUREMENT -#usr/lib/locale/iw_IL.utf8/LC_MESSAGES -#usr/lib/locale/iw_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iw_IL.utf8/LC_MONETARY -#usr/lib/locale/iw_IL.utf8/LC_NAME -#usr/lib/locale/iw_IL.utf8/LC_NUMERIC -#usr/lib/locale/iw_IL.utf8/LC_PAPER -#usr/lib/locale/iw_IL.utf8/LC_TELEPHONE -#usr/lib/locale/iw_IL.utf8/LC_TIME -#usr/lib/locale/iw_IL/LC_ADDRESS -#usr/lib/locale/iw_IL/LC_COLLATE -#usr/lib/locale/iw_IL/LC_CTYPE -#usr/lib/locale/iw_IL/LC_IDENTIFICATION -#usr/lib/locale/iw_IL/LC_MEASUREMENT -#usr/lib/locale/iw_IL/LC_MESSAGES -#usr/lib/locale/iw_IL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/iw_IL/LC_MONETARY -#usr/lib/locale/iw_IL/LC_NAME -#usr/lib/locale/iw_IL/LC_NUMERIC -#usr/lib/locale/iw_IL/LC_PAPER -#usr/lib/locale/iw_IL/LC_TELEPHONE -#usr/lib/locale/iw_IL/LC_TIME -#usr/lib/locale/ja_JP.eucjp -#usr/lib/locale/ja_JP.eucjp/LC_ADDRESS -#usr/lib/locale/ja_JP.eucjp/LC_COLLATE -#usr/lib/locale/ja_JP.eucjp/LC_CTYPE -#usr/lib/locale/ja_JP.eucjp/LC_IDENTIFICATION -#usr/lib/locale/ja_JP.eucjp/LC_MEASUREMENT -#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES -#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ja_JP.eucjp/LC_MONETARY -#usr/lib/locale/ja_JP.eucjp/LC_NAME -#usr/lib/locale/ja_JP.eucjp/LC_NUMERIC -#usr/lib/locale/ja_JP.eucjp/LC_PAPER -#usr/lib/locale/ja_JP.eucjp/LC_TELEPHONE -#usr/lib/locale/ja_JP.eucjp/LC_TIME -#usr/lib/locale/ja_JP.utf8 -#usr/lib/locale/ja_JP.utf8/LC_ADDRESS -#usr/lib/locale/ja_JP.utf8/LC_COLLATE -#usr/lib/locale/ja_JP.utf8/LC_CTYPE -#usr/lib/locale/ja_JP.utf8/LC_IDENTIFICATION -#usr/lib/locale/ja_JP.utf8/LC_MEASUREMENT -#usr/lib/locale/ja_JP.utf8/LC_MESSAGES -#usr/lib/locale/ja_JP.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ja_JP.utf8/LC_MONETARY -#usr/lib/locale/ja_JP.utf8/LC_NAME -#usr/lib/locale/ja_JP.utf8/LC_NUMERIC -#usr/lib/locale/ja_JP.utf8/LC_PAPER -#usr/lib/locale/ja_JP.utf8/LC_TELEPHONE -#usr/lib/locale/ja_JP.utf8/LC_TIME -#usr/lib/locale/ka_GE -#usr/lib/locale/ka_GE.utf8 -#usr/lib/locale/ka_GE.utf8/LC_ADDRESS -#usr/lib/locale/ka_GE.utf8/LC_COLLATE -#usr/lib/locale/ka_GE.utf8/LC_CTYPE -#usr/lib/locale/ka_GE.utf8/LC_IDENTIFICATION -#usr/lib/locale/ka_GE.utf8/LC_MEASUREMENT -#usr/lib/locale/ka_GE.utf8/LC_MESSAGES -#usr/lib/locale/ka_GE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ka_GE.utf8/LC_MONETARY -#usr/lib/locale/ka_GE.utf8/LC_NAME -#usr/lib/locale/ka_GE.utf8/LC_NUMERIC -#usr/lib/locale/ka_GE.utf8/LC_PAPER -#usr/lib/locale/ka_GE.utf8/LC_TELEPHONE -#usr/lib/locale/ka_GE.utf8/LC_TIME -#usr/lib/locale/ka_GE/LC_ADDRESS -#usr/lib/locale/ka_GE/LC_COLLATE -#usr/lib/locale/ka_GE/LC_CTYPE -#usr/lib/locale/ka_GE/LC_IDENTIFICATION -#usr/lib/locale/ka_GE/LC_MEASUREMENT -#usr/lib/locale/ka_GE/LC_MESSAGES -#usr/lib/locale/ka_GE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ka_GE/LC_MONETARY -#usr/lib/locale/ka_GE/LC_NAME -#usr/lib/locale/ka_GE/LC_NUMERIC -#usr/lib/locale/ka_GE/LC_PAPER -#usr/lib/locale/ka_GE/LC_TELEPHONE -#usr/lib/locale/ka_GE/LC_TIME -#usr/lib/locale/kk_KZ -#usr/lib/locale/kk_KZ.utf8 -#usr/lib/locale/kk_KZ.utf8/LC_ADDRESS -#usr/lib/locale/kk_KZ.utf8/LC_COLLATE -#usr/lib/locale/kk_KZ.utf8/LC_CTYPE -#usr/lib/locale/kk_KZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/kk_KZ.utf8/LC_MEASUREMENT -#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES -#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kk_KZ.utf8/LC_MONETARY -#usr/lib/locale/kk_KZ.utf8/LC_NAME -#usr/lib/locale/kk_KZ.utf8/LC_NUMERIC -#usr/lib/locale/kk_KZ.utf8/LC_PAPER -#usr/lib/locale/kk_KZ.utf8/LC_TELEPHONE -#usr/lib/locale/kk_KZ.utf8/LC_TIME -#usr/lib/locale/kk_KZ/LC_ADDRESS -#usr/lib/locale/kk_KZ/LC_COLLATE -#usr/lib/locale/kk_KZ/LC_CTYPE -#usr/lib/locale/kk_KZ/LC_IDENTIFICATION -#usr/lib/locale/kk_KZ/LC_MEASUREMENT -#usr/lib/locale/kk_KZ/LC_MESSAGES -#usr/lib/locale/kk_KZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kk_KZ/LC_MONETARY -#usr/lib/locale/kk_KZ/LC_NAME -#usr/lib/locale/kk_KZ/LC_NUMERIC -#usr/lib/locale/kk_KZ/LC_PAPER -#usr/lib/locale/kk_KZ/LC_TELEPHONE -#usr/lib/locale/kk_KZ/LC_TIME -#usr/lib/locale/kl_GL -#usr/lib/locale/kl_GL.utf8 -#usr/lib/locale/kl_GL.utf8/LC_ADDRESS -#usr/lib/locale/kl_GL.utf8/LC_COLLATE -#usr/lib/locale/kl_GL.utf8/LC_CTYPE -#usr/lib/locale/kl_GL.utf8/LC_IDENTIFICATION -#usr/lib/locale/kl_GL.utf8/LC_MEASUREMENT -#usr/lib/locale/kl_GL.utf8/LC_MESSAGES -#usr/lib/locale/kl_GL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kl_GL.utf8/LC_MONETARY -#usr/lib/locale/kl_GL.utf8/LC_NAME -#usr/lib/locale/kl_GL.utf8/LC_NUMERIC -#usr/lib/locale/kl_GL.utf8/LC_PAPER -#usr/lib/locale/kl_GL.utf8/LC_TELEPHONE -#usr/lib/locale/kl_GL.utf8/LC_TIME -#usr/lib/locale/kl_GL/LC_ADDRESS -#usr/lib/locale/kl_GL/LC_COLLATE -#usr/lib/locale/kl_GL/LC_CTYPE -#usr/lib/locale/kl_GL/LC_IDENTIFICATION -#usr/lib/locale/kl_GL/LC_MEASUREMENT -#usr/lib/locale/kl_GL/LC_MESSAGES -#usr/lib/locale/kl_GL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kl_GL/LC_MONETARY -#usr/lib/locale/kl_GL/LC_NAME -#usr/lib/locale/kl_GL/LC_NUMERIC -#usr/lib/locale/kl_GL/LC_PAPER -#usr/lib/locale/kl_GL/LC_TELEPHONE -#usr/lib/locale/kl_GL/LC_TIME -#usr/lib/locale/km_KH -#usr/lib/locale/km_KH/LC_ADDRESS -#usr/lib/locale/km_KH/LC_COLLATE -#usr/lib/locale/km_KH/LC_CTYPE -#usr/lib/locale/km_KH/LC_IDENTIFICATION -#usr/lib/locale/km_KH/LC_MEASUREMENT -#usr/lib/locale/km_KH/LC_MESSAGES -#usr/lib/locale/km_KH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/km_KH/LC_MONETARY -#usr/lib/locale/km_KH/LC_NAME -#usr/lib/locale/km_KH/LC_NUMERIC -#usr/lib/locale/km_KH/LC_PAPER -#usr/lib/locale/km_KH/LC_TELEPHONE -#usr/lib/locale/km_KH/LC_TIME -#usr/lib/locale/kn_IN -#usr/lib/locale/kn_IN/LC_ADDRESS -#usr/lib/locale/kn_IN/LC_COLLATE -#usr/lib/locale/kn_IN/LC_CTYPE -#usr/lib/locale/kn_IN/LC_IDENTIFICATION -#usr/lib/locale/kn_IN/LC_MEASUREMENT -#usr/lib/locale/kn_IN/LC_MESSAGES -#usr/lib/locale/kn_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kn_IN/LC_MONETARY -#usr/lib/locale/kn_IN/LC_NAME -#usr/lib/locale/kn_IN/LC_NUMERIC -#usr/lib/locale/kn_IN/LC_PAPER -#usr/lib/locale/kn_IN/LC_TELEPHONE -#usr/lib/locale/kn_IN/LC_TIME -#usr/lib/locale/ko_KR.euckr -#usr/lib/locale/ko_KR.euckr/LC_ADDRESS -#usr/lib/locale/ko_KR.euckr/LC_COLLATE -#usr/lib/locale/ko_KR.euckr/LC_CTYPE -#usr/lib/locale/ko_KR.euckr/LC_IDENTIFICATION -#usr/lib/locale/ko_KR.euckr/LC_MEASUREMENT -#usr/lib/locale/ko_KR.euckr/LC_MESSAGES -#usr/lib/locale/ko_KR.euckr/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ko_KR.euckr/LC_MONETARY -#usr/lib/locale/ko_KR.euckr/LC_NAME -#usr/lib/locale/ko_KR.euckr/LC_NUMERIC -#usr/lib/locale/ko_KR.euckr/LC_PAPER -#usr/lib/locale/ko_KR.euckr/LC_TELEPHONE -#usr/lib/locale/ko_KR.euckr/LC_TIME -#usr/lib/locale/ko_KR.utf8 -#usr/lib/locale/ko_KR.utf8/LC_ADDRESS -#usr/lib/locale/ko_KR.utf8/LC_COLLATE -#usr/lib/locale/ko_KR.utf8/LC_CTYPE -#usr/lib/locale/ko_KR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ko_KR.utf8/LC_MEASUREMENT -#usr/lib/locale/ko_KR.utf8/LC_MESSAGES -#usr/lib/locale/ko_KR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ko_KR.utf8/LC_MONETARY -#usr/lib/locale/ko_KR.utf8/LC_NAME -#usr/lib/locale/ko_KR.utf8/LC_NUMERIC -#usr/lib/locale/ko_KR.utf8/LC_PAPER -#usr/lib/locale/ko_KR.utf8/LC_TELEPHONE -#usr/lib/locale/ko_KR.utf8/LC_TIME -#usr/lib/locale/kok_IN -#usr/lib/locale/kok_IN/LC_ADDRESS -#usr/lib/locale/kok_IN/LC_COLLATE -#usr/lib/locale/kok_IN/LC_CTYPE -#usr/lib/locale/kok_IN/LC_IDENTIFICATION -#usr/lib/locale/kok_IN/LC_MEASUREMENT -#usr/lib/locale/kok_IN/LC_MESSAGES -#usr/lib/locale/kok_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kok_IN/LC_MONETARY -#usr/lib/locale/kok_IN/LC_NAME -#usr/lib/locale/kok_IN/LC_NUMERIC -#usr/lib/locale/kok_IN/LC_PAPER -#usr/lib/locale/kok_IN/LC_TELEPHONE -#usr/lib/locale/kok_IN/LC_TIME -#usr/lib/locale/ks_IN -#usr/lib/locale/ks_IN/LC_ADDRESS -#usr/lib/locale/ks_IN/LC_COLLATE -#usr/lib/locale/ks_IN/LC_CTYPE -#usr/lib/locale/ks_IN/LC_IDENTIFICATION -#usr/lib/locale/ks_IN/LC_MEASUREMENT -#usr/lib/locale/ks_IN/LC_MESSAGES -#usr/lib/locale/ks_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ks_IN/LC_MONETARY -#usr/lib/locale/ks_IN/LC_NAME -#usr/lib/locale/ks_IN/LC_NUMERIC -#usr/lib/locale/ks_IN/LC_PAPER -#usr/lib/locale/ks_IN/LC_TELEPHONE -#usr/lib/locale/ks_IN/LC_TIME -#usr/lib/locale/ks_IN@devanagari -#usr/lib/locale/ks_IN@devanagari/LC_ADDRESS -#usr/lib/locale/ks_IN@devanagari/LC_COLLATE -#usr/lib/locale/ks_IN@devanagari/LC_CTYPE -#usr/lib/locale/ks_IN@devanagari/LC_IDENTIFICATION -#usr/lib/locale/ks_IN@devanagari/LC_MEASUREMENT -#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES -#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ks_IN@devanagari/LC_MONETARY -#usr/lib/locale/ks_IN@devanagari/LC_NAME -#usr/lib/locale/ks_IN@devanagari/LC_NUMERIC -#usr/lib/locale/ks_IN@devanagari/LC_PAPER -#usr/lib/locale/ks_IN@devanagari/LC_TELEPHONE -#usr/lib/locale/ks_IN@devanagari/LC_TIME -#usr/lib/locale/ku_TR -#usr/lib/locale/ku_TR.utf8 -#usr/lib/locale/ku_TR.utf8/LC_ADDRESS -#usr/lib/locale/ku_TR.utf8/LC_COLLATE -#usr/lib/locale/ku_TR.utf8/LC_CTYPE -#usr/lib/locale/ku_TR.utf8/LC_IDENTIFICATION -#usr/lib/locale/ku_TR.utf8/LC_MEASUREMENT -#usr/lib/locale/ku_TR.utf8/LC_MESSAGES -#usr/lib/locale/ku_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ku_TR.utf8/LC_MONETARY -#usr/lib/locale/ku_TR.utf8/LC_NAME -#usr/lib/locale/ku_TR.utf8/LC_NUMERIC -#usr/lib/locale/ku_TR.utf8/LC_PAPER -#usr/lib/locale/ku_TR.utf8/LC_TELEPHONE -#usr/lib/locale/ku_TR.utf8/LC_TIME -#usr/lib/locale/ku_TR/LC_ADDRESS -#usr/lib/locale/ku_TR/LC_COLLATE -#usr/lib/locale/ku_TR/LC_CTYPE -#usr/lib/locale/ku_TR/LC_IDENTIFICATION -#usr/lib/locale/ku_TR/LC_MEASUREMENT -#usr/lib/locale/ku_TR/LC_MESSAGES -#usr/lib/locale/ku_TR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ku_TR/LC_MONETARY -#usr/lib/locale/ku_TR/LC_NAME -#usr/lib/locale/ku_TR/LC_NUMERIC -#usr/lib/locale/ku_TR/LC_PAPER -#usr/lib/locale/ku_TR/LC_TELEPHONE -#usr/lib/locale/ku_TR/LC_TIME -#usr/lib/locale/kw_GB -#usr/lib/locale/kw_GB.utf8 -#usr/lib/locale/kw_GB.utf8/LC_ADDRESS -#usr/lib/locale/kw_GB.utf8/LC_COLLATE -#usr/lib/locale/kw_GB.utf8/LC_CTYPE -#usr/lib/locale/kw_GB.utf8/LC_IDENTIFICATION -#usr/lib/locale/kw_GB.utf8/LC_MEASUREMENT -#usr/lib/locale/kw_GB.utf8/LC_MESSAGES -#usr/lib/locale/kw_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kw_GB.utf8/LC_MONETARY -#usr/lib/locale/kw_GB.utf8/LC_NAME -#usr/lib/locale/kw_GB.utf8/LC_NUMERIC -#usr/lib/locale/kw_GB.utf8/LC_PAPER -#usr/lib/locale/kw_GB.utf8/LC_TELEPHONE -#usr/lib/locale/kw_GB.utf8/LC_TIME -#usr/lib/locale/kw_GB/LC_ADDRESS -#usr/lib/locale/kw_GB/LC_COLLATE -#usr/lib/locale/kw_GB/LC_CTYPE -#usr/lib/locale/kw_GB/LC_IDENTIFICATION -#usr/lib/locale/kw_GB/LC_MEASUREMENT -#usr/lib/locale/kw_GB/LC_MESSAGES -#usr/lib/locale/kw_GB/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/kw_GB/LC_MONETARY -#usr/lib/locale/kw_GB/LC_NAME -#usr/lib/locale/kw_GB/LC_NUMERIC -#usr/lib/locale/kw_GB/LC_PAPER -#usr/lib/locale/kw_GB/LC_TELEPHONE -#usr/lib/locale/kw_GB/LC_TIME -#usr/lib/locale/ky_KG -#usr/lib/locale/ky_KG/LC_ADDRESS -#usr/lib/locale/ky_KG/LC_COLLATE -#usr/lib/locale/ky_KG/LC_CTYPE -#usr/lib/locale/ky_KG/LC_IDENTIFICATION -#usr/lib/locale/ky_KG/LC_MEASUREMENT -#usr/lib/locale/ky_KG/LC_MESSAGES -#usr/lib/locale/ky_KG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ky_KG/LC_MONETARY -#usr/lib/locale/ky_KG/LC_NAME -#usr/lib/locale/ky_KG/LC_NUMERIC -#usr/lib/locale/ky_KG/LC_PAPER -#usr/lib/locale/ky_KG/LC_TELEPHONE -#usr/lib/locale/ky_KG/LC_TIME -#usr/lib/locale/lg_UG -#usr/lib/locale/lg_UG.utf8 -#usr/lib/locale/lg_UG.utf8/LC_ADDRESS -#usr/lib/locale/lg_UG.utf8/LC_COLLATE -#usr/lib/locale/lg_UG.utf8/LC_CTYPE -#usr/lib/locale/lg_UG.utf8/LC_IDENTIFICATION -#usr/lib/locale/lg_UG.utf8/LC_MEASUREMENT -#usr/lib/locale/lg_UG.utf8/LC_MESSAGES -#usr/lib/locale/lg_UG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lg_UG.utf8/LC_MONETARY -#usr/lib/locale/lg_UG.utf8/LC_NAME -#usr/lib/locale/lg_UG.utf8/LC_NUMERIC -#usr/lib/locale/lg_UG.utf8/LC_PAPER -#usr/lib/locale/lg_UG.utf8/LC_TELEPHONE -#usr/lib/locale/lg_UG.utf8/LC_TIME -#usr/lib/locale/lg_UG/LC_ADDRESS -#usr/lib/locale/lg_UG/LC_COLLATE -#usr/lib/locale/lg_UG/LC_CTYPE -#usr/lib/locale/lg_UG/LC_IDENTIFICATION -#usr/lib/locale/lg_UG/LC_MEASUREMENT -#usr/lib/locale/lg_UG/LC_MESSAGES -#usr/lib/locale/lg_UG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lg_UG/LC_MONETARY -#usr/lib/locale/lg_UG/LC_NAME -#usr/lib/locale/lg_UG/LC_NUMERIC -#usr/lib/locale/lg_UG/LC_PAPER -#usr/lib/locale/lg_UG/LC_TELEPHONE -#usr/lib/locale/lg_UG/LC_TIME -#usr/lib/locale/li_BE -#usr/lib/locale/li_BE/LC_ADDRESS -#usr/lib/locale/li_BE/LC_COLLATE -#usr/lib/locale/li_BE/LC_CTYPE -#usr/lib/locale/li_BE/LC_IDENTIFICATION -#usr/lib/locale/li_BE/LC_MEASUREMENT -#usr/lib/locale/li_BE/LC_MESSAGES -#usr/lib/locale/li_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/li_BE/LC_MONETARY -#usr/lib/locale/li_BE/LC_NAME -#usr/lib/locale/li_BE/LC_NUMERIC -#usr/lib/locale/li_BE/LC_PAPER -#usr/lib/locale/li_BE/LC_TELEPHONE -#usr/lib/locale/li_BE/LC_TIME -#usr/lib/locale/li_NL -#usr/lib/locale/li_NL/LC_ADDRESS -#usr/lib/locale/li_NL/LC_COLLATE -#usr/lib/locale/li_NL/LC_CTYPE -#usr/lib/locale/li_NL/LC_IDENTIFICATION -#usr/lib/locale/li_NL/LC_MEASUREMENT -#usr/lib/locale/li_NL/LC_MESSAGES -#usr/lib/locale/li_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/li_NL/LC_MONETARY -#usr/lib/locale/li_NL/LC_NAME -#usr/lib/locale/li_NL/LC_NUMERIC -#usr/lib/locale/li_NL/LC_PAPER -#usr/lib/locale/li_NL/LC_TELEPHONE -#usr/lib/locale/li_NL/LC_TIME -#usr/lib/locale/lo_LA -#usr/lib/locale/lo_LA/LC_ADDRESS -#usr/lib/locale/lo_LA/LC_COLLATE -#usr/lib/locale/lo_LA/LC_CTYPE -#usr/lib/locale/lo_LA/LC_IDENTIFICATION -#usr/lib/locale/lo_LA/LC_MEASUREMENT -#usr/lib/locale/lo_LA/LC_MESSAGES -#usr/lib/locale/lo_LA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lo_LA/LC_MONETARY -#usr/lib/locale/lo_LA/LC_NAME -#usr/lib/locale/lo_LA/LC_NUMERIC -#usr/lib/locale/lo_LA/LC_PAPER -#usr/lib/locale/lo_LA/LC_TELEPHONE -#usr/lib/locale/lo_LA/LC_TIME -#usr/lib/locale/lt_LT -#usr/lib/locale/lt_LT.utf8 -#usr/lib/locale/lt_LT.utf8/LC_ADDRESS -#usr/lib/locale/lt_LT.utf8/LC_COLLATE -#usr/lib/locale/lt_LT.utf8/LC_CTYPE -#usr/lib/locale/lt_LT.utf8/LC_IDENTIFICATION -#usr/lib/locale/lt_LT.utf8/LC_MEASUREMENT -#usr/lib/locale/lt_LT.utf8/LC_MESSAGES -#usr/lib/locale/lt_LT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lt_LT.utf8/LC_MONETARY -#usr/lib/locale/lt_LT.utf8/LC_NAME -#usr/lib/locale/lt_LT.utf8/LC_NUMERIC -#usr/lib/locale/lt_LT.utf8/LC_PAPER -#usr/lib/locale/lt_LT.utf8/LC_TELEPHONE -#usr/lib/locale/lt_LT.utf8/LC_TIME -#usr/lib/locale/lt_LT/LC_ADDRESS -#usr/lib/locale/lt_LT/LC_COLLATE -#usr/lib/locale/lt_LT/LC_CTYPE -#usr/lib/locale/lt_LT/LC_IDENTIFICATION -#usr/lib/locale/lt_LT/LC_MEASUREMENT -#usr/lib/locale/lt_LT/LC_MESSAGES -#usr/lib/locale/lt_LT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lt_LT/LC_MONETARY -#usr/lib/locale/lt_LT/LC_NAME -#usr/lib/locale/lt_LT/LC_NUMERIC -#usr/lib/locale/lt_LT/LC_PAPER -#usr/lib/locale/lt_LT/LC_TELEPHONE -#usr/lib/locale/lt_LT/LC_TIME -#usr/lib/locale/lv_LV -#usr/lib/locale/lv_LV.utf8 -#usr/lib/locale/lv_LV.utf8/LC_ADDRESS -#usr/lib/locale/lv_LV.utf8/LC_COLLATE -#usr/lib/locale/lv_LV.utf8/LC_CTYPE -#usr/lib/locale/lv_LV.utf8/LC_IDENTIFICATION -#usr/lib/locale/lv_LV.utf8/LC_MEASUREMENT -#usr/lib/locale/lv_LV.utf8/LC_MESSAGES -#usr/lib/locale/lv_LV.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lv_LV.utf8/LC_MONETARY -#usr/lib/locale/lv_LV.utf8/LC_NAME -#usr/lib/locale/lv_LV.utf8/LC_NUMERIC -#usr/lib/locale/lv_LV.utf8/LC_PAPER -#usr/lib/locale/lv_LV.utf8/LC_TELEPHONE -#usr/lib/locale/lv_LV.utf8/LC_TIME -#usr/lib/locale/lv_LV/LC_ADDRESS -#usr/lib/locale/lv_LV/LC_COLLATE -#usr/lib/locale/lv_LV/LC_CTYPE -#usr/lib/locale/lv_LV/LC_IDENTIFICATION -#usr/lib/locale/lv_LV/LC_MEASUREMENT -#usr/lib/locale/lv_LV/LC_MESSAGES -#usr/lib/locale/lv_LV/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/lv_LV/LC_MONETARY -#usr/lib/locale/lv_LV/LC_NAME -#usr/lib/locale/lv_LV/LC_NUMERIC -#usr/lib/locale/lv_LV/LC_PAPER -#usr/lib/locale/lv_LV/LC_TELEPHONE -#usr/lib/locale/lv_LV/LC_TIME -#usr/lib/locale/mai_IN -#usr/lib/locale/mai_IN/LC_ADDRESS -#usr/lib/locale/mai_IN/LC_COLLATE -#usr/lib/locale/mai_IN/LC_CTYPE -#usr/lib/locale/mai_IN/LC_IDENTIFICATION -#usr/lib/locale/mai_IN/LC_MEASUREMENT -#usr/lib/locale/mai_IN/LC_MESSAGES -#usr/lib/locale/mai_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mai_IN/LC_MONETARY -#usr/lib/locale/mai_IN/LC_NAME -#usr/lib/locale/mai_IN/LC_NUMERIC -#usr/lib/locale/mai_IN/LC_PAPER -#usr/lib/locale/mai_IN/LC_TELEPHONE -#usr/lib/locale/mai_IN/LC_TIME -#usr/lib/locale/mg_MG -#usr/lib/locale/mg_MG.utf8 -#usr/lib/locale/mg_MG.utf8/LC_ADDRESS -#usr/lib/locale/mg_MG.utf8/LC_COLLATE -#usr/lib/locale/mg_MG.utf8/LC_CTYPE -#usr/lib/locale/mg_MG.utf8/LC_IDENTIFICATION -#usr/lib/locale/mg_MG.utf8/LC_MEASUREMENT -#usr/lib/locale/mg_MG.utf8/LC_MESSAGES -#usr/lib/locale/mg_MG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mg_MG.utf8/LC_MONETARY -#usr/lib/locale/mg_MG.utf8/LC_NAME -#usr/lib/locale/mg_MG.utf8/LC_NUMERIC -#usr/lib/locale/mg_MG.utf8/LC_PAPER -#usr/lib/locale/mg_MG.utf8/LC_TELEPHONE -#usr/lib/locale/mg_MG.utf8/LC_TIME -#usr/lib/locale/mg_MG/LC_ADDRESS -#usr/lib/locale/mg_MG/LC_COLLATE -#usr/lib/locale/mg_MG/LC_CTYPE -#usr/lib/locale/mg_MG/LC_IDENTIFICATION -#usr/lib/locale/mg_MG/LC_MEASUREMENT -#usr/lib/locale/mg_MG/LC_MESSAGES -#usr/lib/locale/mg_MG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mg_MG/LC_MONETARY -#usr/lib/locale/mg_MG/LC_NAME -#usr/lib/locale/mg_MG/LC_NUMERIC -#usr/lib/locale/mg_MG/LC_PAPER -#usr/lib/locale/mg_MG/LC_TELEPHONE -#usr/lib/locale/mg_MG/LC_TIME -#usr/lib/locale/mi_NZ -#usr/lib/locale/mi_NZ.utf8 -#usr/lib/locale/mi_NZ.utf8/LC_ADDRESS -#usr/lib/locale/mi_NZ.utf8/LC_COLLATE -#usr/lib/locale/mi_NZ.utf8/LC_CTYPE -#usr/lib/locale/mi_NZ.utf8/LC_IDENTIFICATION -#usr/lib/locale/mi_NZ.utf8/LC_MEASUREMENT -#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES -#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mi_NZ.utf8/LC_MONETARY -#usr/lib/locale/mi_NZ.utf8/LC_NAME -#usr/lib/locale/mi_NZ.utf8/LC_NUMERIC -#usr/lib/locale/mi_NZ.utf8/LC_PAPER -#usr/lib/locale/mi_NZ.utf8/LC_TELEPHONE -#usr/lib/locale/mi_NZ.utf8/LC_TIME -#usr/lib/locale/mi_NZ/LC_ADDRESS -#usr/lib/locale/mi_NZ/LC_COLLATE -#usr/lib/locale/mi_NZ/LC_CTYPE -#usr/lib/locale/mi_NZ/LC_IDENTIFICATION -#usr/lib/locale/mi_NZ/LC_MEASUREMENT -#usr/lib/locale/mi_NZ/LC_MESSAGES -#usr/lib/locale/mi_NZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mi_NZ/LC_MONETARY -#usr/lib/locale/mi_NZ/LC_NAME -#usr/lib/locale/mi_NZ/LC_NUMERIC -#usr/lib/locale/mi_NZ/LC_PAPER -#usr/lib/locale/mi_NZ/LC_TELEPHONE -#usr/lib/locale/mi_NZ/LC_TIME -#usr/lib/locale/mk_MK -#usr/lib/locale/mk_MK.utf8 -#usr/lib/locale/mk_MK.utf8/LC_ADDRESS -#usr/lib/locale/mk_MK.utf8/LC_COLLATE -#usr/lib/locale/mk_MK.utf8/LC_CTYPE -#usr/lib/locale/mk_MK.utf8/LC_IDENTIFICATION -#usr/lib/locale/mk_MK.utf8/LC_MEASUREMENT -#usr/lib/locale/mk_MK.utf8/LC_MESSAGES -#usr/lib/locale/mk_MK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mk_MK.utf8/LC_MONETARY -#usr/lib/locale/mk_MK.utf8/LC_NAME -#usr/lib/locale/mk_MK.utf8/LC_NUMERIC -#usr/lib/locale/mk_MK.utf8/LC_PAPER -#usr/lib/locale/mk_MK.utf8/LC_TELEPHONE -#usr/lib/locale/mk_MK.utf8/LC_TIME -#usr/lib/locale/mk_MK/LC_ADDRESS -#usr/lib/locale/mk_MK/LC_COLLATE -#usr/lib/locale/mk_MK/LC_CTYPE -#usr/lib/locale/mk_MK/LC_IDENTIFICATION -#usr/lib/locale/mk_MK/LC_MEASUREMENT -#usr/lib/locale/mk_MK/LC_MESSAGES -#usr/lib/locale/mk_MK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mk_MK/LC_MONETARY -#usr/lib/locale/mk_MK/LC_NAME -#usr/lib/locale/mk_MK/LC_NUMERIC -#usr/lib/locale/mk_MK/LC_PAPER -#usr/lib/locale/mk_MK/LC_TELEPHONE -#usr/lib/locale/mk_MK/LC_TIME -#usr/lib/locale/ml_IN -#usr/lib/locale/ml_IN/LC_ADDRESS -#usr/lib/locale/ml_IN/LC_COLLATE -#usr/lib/locale/ml_IN/LC_CTYPE -#usr/lib/locale/ml_IN/LC_IDENTIFICATION -#usr/lib/locale/ml_IN/LC_MEASUREMENT -#usr/lib/locale/ml_IN/LC_MESSAGES -#usr/lib/locale/ml_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ml_IN/LC_MONETARY -#usr/lib/locale/ml_IN/LC_NAME -#usr/lib/locale/ml_IN/LC_NUMERIC -#usr/lib/locale/ml_IN/LC_PAPER -#usr/lib/locale/ml_IN/LC_TELEPHONE -#usr/lib/locale/ml_IN/LC_TIME -#usr/lib/locale/mn_MN -#usr/lib/locale/mn_MN/LC_ADDRESS -#usr/lib/locale/mn_MN/LC_COLLATE -#usr/lib/locale/mn_MN/LC_CTYPE -#usr/lib/locale/mn_MN/LC_IDENTIFICATION -#usr/lib/locale/mn_MN/LC_MEASUREMENT -#usr/lib/locale/mn_MN/LC_MESSAGES -#usr/lib/locale/mn_MN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mn_MN/LC_MONETARY -#usr/lib/locale/mn_MN/LC_NAME -#usr/lib/locale/mn_MN/LC_NUMERIC -#usr/lib/locale/mn_MN/LC_PAPER -#usr/lib/locale/mn_MN/LC_TELEPHONE -#usr/lib/locale/mn_MN/LC_TIME -#usr/lib/locale/mr_IN -#usr/lib/locale/mr_IN/LC_ADDRESS -#usr/lib/locale/mr_IN/LC_COLLATE -#usr/lib/locale/mr_IN/LC_CTYPE -#usr/lib/locale/mr_IN/LC_IDENTIFICATION -#usr/lib/locale/mr_IN/LC_MEASUREMENT -#usr/lib/locale/mr_IN/LC_MESSAGES -#usr/lib/locale/mr_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mr_IN/LC_MONETARY -#usr/lib/locale/mr_IN/LC_NAME -#usr/lib/locale/mr_IN/LC_NUMERIC -#usr/lib/locale/mr_IN/LC_PAPER -#usr/lib/locale/mr_IN/LC_TELEPHONE -#usr/lib/locale/mr_IN/LC_TIME -#usr/lib/locale/ms_MY -#usr/lib/locale/ms_MY.utf8 -#usr/lib/locale/ms_MY.utf8/LC_ADDRESS -#usr/lib/locale/ms_MY.utf8/LC_COLLATE -#usr/lib/locale/ms_MY.utf8/LC_CTYPE -#usr/lib/locale/ms_MY.utf8/LC_IDENTIFICATION -#usr/lib/locale/ms_MY.utf8/LC_MEASUREMENT -#usr/lib/locale/ms_MY.utf8/LC_MESSAGES -#usr/lib/locale/ms_MY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ms_MY.utf8/LC_MONETARY -#usr/lib/locale/ms_MY.utf8/LC_NAME -#usr/lib/locale/ms_MY.utf8/LC_NUMERIC -#usr/lib/locale/ms_MY.utf8/LC_PAPER -#usr/lib/locale/ms_MY.utf8/LC_TELEPHONE -#usr/lib/locale/ms_MY.utf8/LC_TIME -#usr/lib/locale/ms_MY/LC_ADDRESS -#usr/lib/locale/ms_MY/LC_COLLATE -#usr/lib/locale/ms_MY/LC_CTYPE -#usr/lib/locale/ms_MY/LC_IDENTIFICATION -#usr/lib/locale/ms_MY/LC_MEASUREMENT -#usr/lib/locale/ms_MY/LC_MESSAGES -#usr/lib/locale/ms_MY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ms_MY/LC_MONETARY -#usr/lib/locale/ms_MY/LC_NAME -#usr/lib/locale/ms_MY/LC_NUMERIC -#usr/lib/locale/ms_MY/LC_PAPER -#usr/lib/locale/ms_MY/LC_TELEPHONE -#usr/lib/locale/ms_MY/LC_TIME -#usr/lib/locale/mt_MT -#usr/lib/locale/mt_MT.utf8 -#usr/lib/locale/mt_MT.utf8/LC_ADDRESS -#usr/lib/locale/mt_MT.utf8/LC_COLLATE -#usr/lib/locale/mt_MT.utf8/LC_CTYPE -#usr/lib/locale/mt_MT.utf8/LC_IDENTIFICATION -#usr/lib/locale/mt_MT.utf8/LC_MEASUREMENT -#usr/lib/locale/mt_MT.utf8/LC_MESSAGES -#usr/lib/locale/mt_MT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mt_MT.utf8/LC_MONETARY -#usr/lib/locale/mt_MT.utf8/LC_NAME -#usr/lib/locale/mt_MT.utf8/LC_NUMERIC -#usr/lib/locale/mt_MT.utf8/LC_PAPER -#usr/lib/locale/mt_MT.utf8/LC_TELEPHONE -#usr/lib/locale/mt_MT.utf8/LC_TIME -#usr/lib/locale/mt_MT/LC_ADDRESS -#usr/lib/locale/mt_MT/LC_COLLATE -#usr/lib/locale/mt_MT/LC_CTYPE -#usr/lib/locale/mt_MT/LC_IDENTIFICATION -#usr/lib/locale/mt_MT/LC_MEASUREMENT -#usr/lib/locale/mt_MT/LC_MESSAGES -#usr/lib/locale/mt_MT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/mt_MT/LC_MONETARY -#usr/lib/locale/mt_MT/LC_NAME -#usr/lib/locale/mt_MT/LC_NUMERIC -#usr/lib/locale/mt_MT/LC_PAPER -#usr/lib/locale/mt_MT/LC_TELEPHONE -#usr/lib/locale/mt_MT/LC_TIME -#usr/lib/locale/my_MM -#usr/lib/locale/my_MM/LC_ADDRESS -#usr/lib/locale/my_MM/LC_COLLATE -#usr/lib/locale/my_MM/LC_CTYPE -#usr/lib/locale/my_MM/LC_IDENTIFICATION -#usr/lib/locale/my_MM/LC_MEASUREMENT -#usr/lib/locale/my_MM/LC_MESSAGES -#usr/lib/locale/my_MM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/my_MM/LC_MONETARY -#usr/lib/locale/my_MM/LC_NAME -#usr/lib/locale/my_MM/LC_NUMERIC -#usr/lib/locale/my_MM/LC_PAPER -#usr/lib/locale/my_MM/LC_TELEPHONE -#usr/lib/locale/my_MM/LC_TIME -#usr/lib/locale/nan_TW@latin -#usr/lib/locale/nan_TW@latin/LC_ADDRESS -#usr/lib/locale/nan_TW@latin/LC_COLLATE -#usr/lib/locale/nan_TW@latin/LC_CTYPE -#usr/lib/locale/nan_TW@latin/LC_IDENTIFICATION -#usr/lib/locale/nan_TW@latin/LC_MEASUREMENT -#usr/lib/locale/nan_TW@latin/LC_MESSAGES -#usr/lib/locale/nan_TW@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nan_TW@latin/LC_MONETARY -#usr/lib/locale/nan_TW@latin/LC_NAME -#usr/lib/locale/nan_TW@latin/LC_NUMERIC -#usr/lib/locale/nan_TW@latin/LC_PAPER -#usr/lib/locale/nan_TW@latin/LC_TELEPHONE -#usr/lib/locale/nan_TW@latin/LC_TIME -#usr/lib/locale/nb_NO -#usr/lib/locale/nb_NO.utf8 -#usr/lib/locale/nb_NO.utf8/LC_ADDRESS -#usr/lib/locale/nb_NO.utf8/LC_COLLATE -#usr/lib/locale/nb_NO.utf8/LC_CTYPE -#usr/lib/locale/nb_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/nb_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/nb_NO.utf8/LC_MESSAGES -#usr/lib/locale/nb_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nb_NO.utf8/LC_MONETARY -#usr/lib/locale/nb_NO.utf8/LC_NAME -#usr/lib/locale/nb_NO.utf8/LC_NUMERIC -#usr/lib/locale/nb_NO.utf8/LC_PAPER -#usr/lib/locale/nb_NO.utf8/LC_TELEPHONE -#usr/lib/locale/nb_NO.utf8/LC_TIME -#usr/lib/locale/nb_NO/LC_ADDRESS -#usr/lib/locale/nb_NO/LC_COLLATE -#usr/lib/locale/nb_NO/LC_CTYPE -#usr/lib/locale/nb_NO/LC_IDENTIFICATION -#usr/lib/locale/nb_NO/LC_MEASUREMENT -#usr/lib/locale/nb_NO/LC_MESSAGES -#usr/lib/locale/nb_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nb_NO/LC_MONETARY -#usr/lib/locale/nb_NO/LC_NAME -#usr/lib/locale/nb_NO/LC_NUMERIC -#usr/lib/locale/nb_NO/LC_PAPER -#usr/lib/locale/nb_NO/LC_TELEPHONE -#usr/lib/locale/nb_NO/LC_TIME -#usr/lib/locale/nds_DE -#usr/lib/locale/nds_DE/LC_ADDRESS -#usr/lib/locale/nds_DE/LC_COLLATE -#usr/lib/locale/nds_DE/LC_CTYPE -#usr/lib/locale/nds_DE/LC_IDENTIFICATION -#usr/lib/locale/nds_DE/LC_MEASUREMENT -#usr/lib/locale/nds_DE/LC_MESSAGES -#usr/lib/locale/nds_DE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nds_DE/LC_MONETARY -#usr/lib/locale/nds_DE/LC_NAME -#usr/lib/locale/nds_DE/LC_NUMERIC -#usr/lib/locale/nds_DE/LC_PAPER -#usr/lib/locale/nds_DE/LC_TELEPHONE -#usr/lib/locale/nds_DE/LC_TIME -#usr/lib/locale/nds_NL -#usr/lib/locale/nds_NL/LC_ADDRESS -#usr/lib/locale/nds_NL/LC_COLLATE -#usr/lib/locale/nds_NL/LC_CTYPE -#usr/lib/locale/nds_NL/LC_IDENTIFICATION -#usr/lib/locale/nds_NL/LC_MEASUREMENT -#usr/lib/locale/nds_NL/LC_MESSAGES -#usr/lib/locale/nds_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nds_NL/LC_MONETARY -#usr/lib/locale/nds_NL/LC_NAME -#usr/lib/locale/nds_NL/LC_NUMERIC -#usr/lib/locale/nds_NL/LC_PAPER -#usr/lib/locale/nds_NL/LC_TELEPHONE -#usr/lib/locale/nds_NL/LC_TIME -#usr/lib/locale/ne_NP -#usr/lib/locale/ne_NP/LC_ADDRESS -#usr/lib/locale/ne_NP/LC_COLLATE -#usr/lib/locale/ne_NP/LC_CTYPE -#usr/lib/locale/ne_NP/LC_IDENTIFICATION -#usr/lib/locale/ne_NP/LC_MEASUREMENT -#usr/lib/locale/ne_NP/LC_MESSAGES -#usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ne_NP/LC_MONETARY -#usr/lib/locale/ne_NP/LC_NAME -#usr/lib/locale/ne_NP/LC_NUMERIC -#usr/lib/locale/ne_NP/LC_PAPER -#usr/lib/locale/ne_NP/LC_TELEPHONE -#usr/lib/locale/ne_NP/LC_TIME -#usr/lib/locale/nl_AW -#usr/lib/locale/nl_AW/LC_ADDRESS -#usr/lib/locale/nl_AW/LC_COLLATE -#usr/lib/locale/nl_AW/LC_CTYPE -#usr/lib/locale/nl_AW/LC_IDENTIFICATION -#usr/lib/locale/nl_AW/LC_MEASUREMENT -#usr/lib/locale/nl_AW/LC_MESSAGES -#usr/lib/locale/nl_AW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_AW/LC_MONETARY -#usr/lib/locale/nl_AW/LC_NAME -#usr/lib/locale/nl_AW/LC_NUMERIC -#usr/lib/locale/nl_AW/LC_PAPER -#usr/lib/locale/nl_AW/LC_TELEPHONE -#usr/lib/locale/nl_AW/LC_TIME -#usr/lib/locale/nl_BE -#usr/lib/locale/nl_BE.utf8 -#usr/lib/locale/nl_BE.utf8/LC_ADDRESS -#usr/lib/locale/nl_BE.utf8/LC_COLLATE -#usr/lib/locale/nl_BE.utf8/LC_CTYPE -#usr/lib/locale/nl_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/nl_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/nl_BE.utf8/LC_MESSAGES -#usr/lib/locale/nl_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE.utf8/LC_MONETARY -#usr/lib/locale/nl_BE.utf8/LC_NAME -#usr/lib/locale/nl_BE.utf8/LC_NUMERIC -#usr/lib/locale/nl_BE.utf8/LC_PAPER -#usr/lib/locale/nl_BE.utf8/LC_TELEPHONE -#usr/lib/locale/nl_BE.utf8/LC_TIME -#usr/lib/locale/nl_BE/LC_ADDRESS -#usr/lib/locale/nl_BE/LC_COLLATE -#usr/lib/locale/nl_BE/LC_CTYPE -#usr/lib/locale/nl_BE/LC_IDENTIFICATION -#usr/lib/locale/nl_BE/LC_MEASUREMENT -#usr/lib/locale/nl_BE/LC_MESSAGES -#usr/lib/locale/nl_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE/LC_MONETARY -#usr/lib/locale/nl_BE/LC_NAME -#usr/lib/locale/nl_BE/LC_NUMERIC -#usr/lib/locale/nl_BE/LC_PAPER -#usr/lib/locale/nl_BE/LC_TELEPHONE -#usr/lib/locale/nl_BE/LC_TIME -#usr/lib/locale/nl_BE@euro -#usr/lib/locale/nl_BE@euro/LC_ADDRESS -#usr/lib/locale/nl_BE@euro/LC_COLLATE -#usr/lib/locale/nl_BE@euro/LC_CTYPE -#usr/lib/locale/nl_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/nl_BE@euro/LC_MEASUREMENT -#usr/lib/locale/nl_BE@euro/LC_MESSAGES -#usr/lib/locale/nl_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_BE@euro/LC_MONETARY -#usr/lib/locale/nl_BE@euro/LC_NAME -#usr/lib/locale/nl_BE@euro/LC_NUMERIC -#usr/lib/locale/nl_BE@euro/LC_PAPER -#usr/lib/locale/nl_BE@euro/LC_TELEPHONE -#usr/lib/locale/nl_BE@euro/LC_TIME -#usr/lib/locale/nl_NL -#usr/lib/locale/nl_NL.utf8 -#usr/lib/locale/nl_NL.utf8/LC_ADDRESS -#usr/lib/locale/nl_NL.utf8/LC_COLLATE -#usr/lib/locale/nl_NL.utf8/LC_CTYPE -#usr/lib/locale/nl_NL.utf8/LC_IDENTIFICATION -#usr/lib/locale/nl_NL.utf8/LC_MEASUREMENT -#usr/lib/locale/nl_NL.utf8/LC_MESSAGES -#usr/lib/locale/nl_NL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL.utf8/LC_MONETARY -#usr/lib/locale/nl_NL.utf8/LC_NAME -#usr/lib/locale/nl_NL.utf8/LC_NUMERIC -#usr/lib/locale/nl_NL.utf8/LC_PAPER -#usr/lib/locale/nl_NL.utf8/LC_TELEPHONE -#usr/lib/locale/nl_NL.utf8/LC_TIME -#usr/lib/locale/nl_NL/LC_ADDRESS -#usr/lib/locale/nl_NL/LC_COLLATE -#usr/lib/locale/nl_NL/LC_CTYPE -#usr/lib/locale/nl_NL/LC_IDENTIFICATION -#usr/lib/locale/nl_NL/LC_MEASUREMENT -#usr/lib/locale/nl_NL/LC_MESSAGES -#usr/lib/locale/nl_NL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL/LC_MONETARY -#usr/lib/locale/nl_NL/LC_NAME -#usr/lib/locale/nl_NL/LC_NUMERIC -#usr/lib/locale/nl_NL/LC_PAPER -#usr/lib/locale/nl_NL/LC_TELEPHONE -#usr/lib/locale/nl_NL/LC_TIME -#usr/lib/locale/nl_NL@euro -#usr/lib/locale/nl_NL@euro/LC_ADDRESS -#usr/lib/locale/nl_NL@euro/LC_COLLATE -#usr/lib/locale/nl_NL@euro/LC_CTYPE -#usr/lib/locale/nl_NL@euro/LC_IDENTIFICATION -#usr/lib/locale/nl_NL@euro/LC_MEASUREMENT -#usr/lib/locale/nl_NL@euro/LC_MESSAGES -#usr/lib/locale/nl_NL@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nl_NL@euro/LC_MONETARY -#usr/lib/locale/nl_NL@euro/LC_NAME -#usr/lib/locale/nl_NL@euro/LC_NUMERIC -#usr/lib/locale/nl_NL@euro/LC_PAPER -#usr/lib/locale/nl_NL@euro/LC_TELEPHONE -#usr/lib/locale/nl_NL@euro/LC_TIME -#usr/lib/locale/nn_NO -#usr/lib/locale/nn_NO.utf8 -#usr/lib/locale/nn_NO.utf8/LC_ADDRESS -#usr/lib/locale/nn_NO.utf8/LC_COLLATE -#usr/lib/locale/nn_NO.utf8/LC_CTYPE -#usr/lib/locale/nn_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/nn_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/nn_NO.utf8/LC_MESSAGES -#usr/lib/locale/nn_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nn_NO.utf8/LC_MONETARY -#usr/lib/locale/nn_NO.utf8/LC_NAME -#usr/lib/locale/nn_NO.utf8/LC_NUMERIC -#usr/lib/locale/nn_NO.utf8/LC_PAPER -#usr/lib/locale/nn_NO.utf8/LC_TELEPHONE -#usr/lib/locale/nn_NO.utf8/LC_TIME -#usr/lib/locale/nn_NO/LC_ADDRESS -#usr/lib/locale/nn_NO/LC_COLLATE -#usr/lib/locale/nn_NO/LC_CTYPE -#usr/lib/locale/nn_NO/LC_IDENTIFICATION -#usr/lib/locale/nn_NO/LC_MEASUREMENT -#usr/lib/locale/nn_NO/LC_MESSAGES -#usr/lib/locale/nn_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nn_NO/LC_MONETARY -#usr/lib/locale/nn_NO/LC_NAME -#usr/lib/locale/nn_NO/LC_NUMERIC -#usr/lib/locale/nn_NO/LC_PAPER -#usr/lib/locale/nn_NO/LC_TELEPHONE -#usr/lib/locale/nn_NO/LC_TIME -#usr/lib/locale/no_NO -#usr/lib/locale/no_NO.utf8 -#usr/lib/locale/no_NO.utf8/LC_ADDRESS -#usr/lib/locale/no_NO.utf8/LC_COLLATE -#usr/lib/locale/no_NO.utf8/LC_CTYPE -#usr/lib/locale/no_NO.utf8/LC_IDENTIFICATION -#usr/lib/locale/no_NO.utf8/LC_MEASUREMENT -#usr/lib/locale/no_NO.utf8/LC_MESSAGES -#usr/lib/locale/no_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/no_NO.utf8/LC_MONETARY -#usr/lib/locale/no_NO.utf8/LC_NAME -#usr/lib/locale/no_NO.utf8/LC_NUMERIC -#usr/lib/locale/no_NO.utf8/LC_PAPER -#usr/lib/locale/no_NO.utf8/LC_TELEPHONE -#usr/lib/locale/no_NO.utf8/LC_TIME -#usr/lib/locale/no_NO/LC_ADDRESS -#usr/lib/locale/no_NO/LC_COLLATE -#usr/lib/locale/no_NO/LC_CTYPE -#usr/lib/locale/no_NO/LC_IDENTIFICATION -#usr/lib/locale/no_NO/LC_MEASUREMENT -#usr/lib/locale/no_NO/LC_MESSAGES -#usr/lib/locale/no_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/no_NO/LC_MONETARY -#usr/lib/locale/no_NO/LC_NAME -#usr/lib/locale/no_NO/LC_NUMERIC -#usr/lib/locale/no_NO/LC_PAPER -#usr/lib/locale/no_NO/LC_TELEPHONE -#usr/lib/locale/no_NO/LC_TIME -#usr/lib/locale/nr_ZA -#usr/lib/locale/nr_ZA/LC_ADDRESS -#usr/lib/locale/nr_ZA/LC_COLLATE -#usr/lib/locale/nr_ZA/LC_CTYPE -#usr/lib/locale/nr_ZA/LC_IDENTIFICATION -#usr/lib/locale/nr_ZA/LC_MEASUREMENT -#usr/lib/locale/nr_ZA/LC_MESSAGES -#usr/lib/locale/nr_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nr_ZA/LC_MONETARY -#usr/lib/locale/nr_ZA/LC_NAME -#usr/lib/locale/nr_ZA/LC_NUMERIC -#usr/lib/locale/nr_ZA/LC_PAPER -#usr/lib/locale/nr_ZA/LC_TELEPHONE -#usr/lib/locale/nr_ZA/LC_TIME -#usr/lib/locale/nso_ZA -#usr/lib/locale/nso_ZA/LC_ADDRESS -#usr/lib/locale/nso_ZA/LC_COLLATE -#usr/lib/locale/nso_ZA/LC_CTYPE -#usr/lib/locale/nso_ZA/LC_IDENTIFICATION -#usr/lib/locale/nso_ZA/LC_MEASUREMENT -#usr/lib/locale/nso_ZA/LC_MESSAGES -#usr/lib/locale/nso_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/nso_ZA/LC_MONETARY -#usr/lib/locale/nso_ZA/LC_NAME -#usr/lib/locale/nso_ZA/LC_NUMERIC -#usr/lib/locale/nso_ZA/LC_PAPER -#usr/lib/locale/nso_ZA/LC_TELEPHONE -#usr/lib/locale/nso_ZA/LC_TIME -#usr/lib/locale/oc_FR -#usr/lib/locale/oc_FR.utf8 -#usr/lib/locale/oc_FR.utf8/LC_ADDRESS -#usr/lib/locale/oc_FR.utf8/LC_COLLATE -#usr/lib/locale/oc_FR.utf8/LC_CTYPE -#usr/lib/locale/oc_FR.utf8/LC_IDENTIFICATION -#usr/lib/locale/oc_FR.utf8/LC_MEASUREMENT -#usr/lib/locale/oc_FR.utf8/LC_MESSAGES -#usr/lib/locale/oc_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/oc_FR.utf8/LC_MONETARY -#usr/lib/locale/oc_FR.utf8/LC_NAME -#usr/lib/locale/oc_FR.utf8/LC_NUMERIC -#usr/lib/locale/oc_FR.utf8/LC_PAPER -#usr/lib/locale/oc_FR.utf8/LC_TELEPHONE -#usr/lib/locale/oc_FR.utf8/LC_TIME -#usr/lib/locale/oc_FR/LC_ADDRESS -#usr/lib/locale/oc_FR/LC_COLLATE -#usr/lib/locale/oc_FR/LC_CTYPE -#usr/lib/locale/oc_FR/LC_IDENTIFICATION -#usr/lib/locale/oc_FR/LC_MEASUREMENT -#usr/lib/locale/oc_FR/LC_MESSAGES -#usr/lib/locale/oc_FR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/oc_FR/LC_MONETARY -#usr/lib/locale/oc_FR/LC_NAME -#usr/lib/locale/oc_FR/LC_NUMERIC -#usr/lib/locale/oc_FR/LC_PAPER -#usr/lib/locale/oc_FR/LC_TELEPHONE -#usr/lib/locale/oc_FR/LC_TIME -#usr/lib/locale/om_ET -#usr/lib/locale/om_ET/LC_ADDRESS -#usr/lib/locale/om_ET/LC_COLLATE -#usr/lib/locale/om_ET/LC_CTYPE -#usr/lib/locale/om_ET/LC_IDENTIFICATION -#usr/lib/locale/om_ET/LC_MEASUREMENT -#usr/lib/locale/om_ET/LC_MESSAGES -#usr/lib/locale/om_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_ET/LC_MONETARY -#usr/lib/locale/om_ET/LC_NAME -#usr/lib/locale/om_ET/LC_NUMERIC -#usr/lib/locale/om_ET/LC_PAPER -#usr/lib/locale/om_ET/LC_TELEPHONE -#usr/lib/locale/om_ET/LC_TIME -#usr/lib/locale/om_KE -#usr/lib/locale/om_KE.utf8 -#usr/lib/locale/om_KE.utf8/LC_ADDRESS -#usr/lib/locale/om_KE.utf8/LC_COLLATE -#usr/lib/locale/om_KE.utf8/LC_CTYPE -#usr/lib/locale/om_KE.utf8/LC_IDENTIFICATION -#usr/lib/locale/om_KE.utf8/LC_MEASUREMENT -#usr/lib/locale/om_KE.utf8/LC_MESSAGES -#usr/lib/locale/om_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_KE.utf8/LC_MONETARY -#usr/lib/locale/om_KE.utf8/LC_NAME -#usr/lib/locale/om_KE.utf8/LC_NUMERIC -#usr/lib/locale/om_KE.utf8/LC_PAPER -#usr/lib/locale/om_KE.utf8/LC_TELEPHONE -#usr/lib/locale/om_KE.utf8/LC_TIME -#usr/lib/locale/om_KE/LC_ADDRESS -#usr/lib/locale/om_KE/LC_COLLATE -#usr/lib/locale/om_KE/LC_CTYPE -#usr/lib/locale/om_KE/LC_IDENTIFICATION -#usr/lib/locale/om_KE/LC_MEASUREMENT -#usr/lib/locale/om_KE/LC_MESSAGES -#usr/lib/locale/om_KE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/om_KE/LC_MONETARY -#usr/lib/locale/om_KE/LC_NAME -#usr/lib/locale/om_KE/LC_NUMERIC -#usr/lib/locale/om_KE/LC_PAPER -#usr/lib/locale/om_KE/LC_TELEPHONE -#usr/lib/locale/om_KE/LC_TIME -#usr/lib/locale/or_IN -#usr/lib/locale/or_IN/LC_ADDRESS -#usr/lib/locale/or_IN/LC_COLLATE -#usr/lib/locale/or_IN/LC_CTYPE -#usr/lib/locale/or_IN/LC_IDENTIFICATION -#usr/lib/locale/or_IN/LC_MEASUREMENT -#usr/lib/locale/or_IN/LC_MESSAGES -#usr/lib/locale/or_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/or_IN/LC_MONETARY -#usr/lib/locale/or_IN/LC_NAME -#usr/lib/locale/or_IN/LC_NUMERIC -#usr/lib/locale/or_IN/LC_PAPER -#usr/lib/locale/or_IN/LC_TELEPHONE -#usr/lib/locale/or_IN/LC_TIME -#usr/lib/locale/pa_IN -#usr/lib/locale/pa_IN/LC_ADDRESS -#usr/lib/locale/pa_IN/LC_COLLATE -#usr/lib/locale/pa_IN/LC_CTYPE -#usr/lib/locale/pa_IN/LC_IDENTIFICATION -#usr/lib/locale/pa_IN/LC_MEASUREMENT -#usr/lib/locale/pa_IN/LC_MESSAGES -#usr/lib/locale/pa_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pa_IN/LC_MONETARY -#usr/lib/locale/pa_IN/LC_NAME -#usr/lib/locale/pa_IN/LC_NUMERIC -#usr/lib/locale/pa_IN/LC_PAPER -#usr/lib/locale/pa_IN/LC_TELEPHONE -#usr/lib/locale/pa_IN/LC_TIME -#usr/lib/locale/pa_PK -#usr/lib/locale/pa_PK/LC_ADDRESS -#usr/lib/locale/pa_PK/LC_COLLATE -#usr/lib/locale/pa_PK/LC_CTYPE -#usr/lib/locale/pa_PK/LC_IDENTIFICATION -#usr/lib/locale/pa_PK/LC_MEASUREMENT -#usr/lib/locale/pa_PK/LC_MESSAGES -#usr/lib/locale/pa_PK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pa_PK/LC_MONETARY -#usr/lib/locale/pa_PK/LC_NAME -#usr/lib/locale/pa_PK/LC_NUMERIC -#usr/lib/locale/pa_PK/LC_PAPER -#usr/lib/locale/pa_PK/LC_TELEPHONE -#usr/lib/locale/pa_PK/LC_TIME -#usr/lib/locale/pap_AN -#usr/lib/locale/pap_AN/LC_ADDRESS -#usr/lib/locale/pap_AN/LC_COLLATE -#usr/lib/locale/pap_AN/LC_CTYPE -#usr/lib/locale/pap_AN/LC_IDENTIFICATION -#usr/lib/locale/pap_AN/LC_MEASUREMENT -#usr/lib/locale/pap_AN/LC_MESSAGES -#usr/lib/locale/pap_AN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pap_AN/LC_MONETARY -#usr/lib/locale/pap_AN/LC_NAME -#usr/lib/locale/pap_AN/LC_NUMERIC -#usr/lib/locale/pap_AN/LC_PAPER -#usr/lib/locale/pap_AN/LC_TELEPHONE -#usr/lib/locale/pap_AN/LC_TIME -#usr/lib/locale/pl_PL -#usr/lib/locale/pl_PL.utf8 -#usr/lib/locale/pl_PL.utf8/LC_ADDRESS -#usr/lib/locale/pl_PL.utf8/LC_COLLATE -#usr/lib/locale/pl_PL.utf8/LC_CTYPE -#usr/lib/locale/pl_PL.utf8/LC_IDENTIFICATION -#usr/lib/locale/pl_PL.utf8/LC_MEASUREMENT -#usr/lib/locale/pl_PL.utf8/LC_MESSAGES -#usr/lib/locale/pl_PL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pl_PL.utf8/LC_MONETARY -#usr/lib/locale/pl_PL.utf8/LC_NAME -#usr/lib/locale/pl_PL.utf8/LC_NUMERIC -#usr/lib/locale/pl_PL.utf8/LC_PAPER -#usr/lib/locale/pl_PL.utf8/LC_TELEPHONE -#usr/lib/locale/pl_PL.utf8/LC_TIME -#usr/lib/locale/pl_PL/LC_ADDRESS -#usr/lib/locale/pl_PL/LC_COLLATE -#usr/lib/locale/pl_PL/LC_CTYPE -#usr/lib/locale/pl_PL/LC_IDENTIFICATION -#usr/lib/locale/pl_PL/LC_MEASUREMENT -#usr/lib/locale/pl_PL/LC_MESSAGES -#usr/lib/locale/pl_PL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pl_PL/LC_MONETARY -#usr/lib/locale/pl_PL/LC_NAME -#usr/lib/locale/pl_PL/LC_NUMERIC -#usr/lib/locale/pl_PL/LC_PAPER -#usr/lib/locale/pl_PL/LC_TELEPHONE -#usr/lib/locale/pl_PL/LC_TIME -#usr/lib/locale/ps_AF -#usr/lib/locale/ps_AF/LC_ADDRESS -#usr/lib/locale/ps_AF/LC_COLLATE -#usr/lib/locale/ps_AF/LC_CTYPE -#usr/lib/locale/ps_AF/LC_IDENTIFICATION -#usr/lib/locale/ps_AF/LC_MEASUREMENT -#usr/lib/locale/ps_AF/LC_MESSAGES -#usr/lib/locale/ps_AF/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ps_AF/LC_MONETARY -#usr/lib/locale/ps_AF/LC_NAME -#usr/lib/locale/ps_AF/LC_NUMERIC -#usr/lib/locale/ps_AF/LC_PAPER -#usr/lib/locale/ps_AF/LC_TELEPHONE -#usr/lib/locale/ps_AF/LC_TIME -#usr/lib/locale/pt_BR -#usr/lib/locale/pt_BR.utf8 -#usr/lib/locale/pt_BR.utf8/LC_ADDRESS -#usr/lib/locale/pt_BR.utf8/LC_COLLATE -#usr/lib/locale/pt_BR.utf8/LC_CTYPE -#usr/lib/locale/pt_BR.utf8/LC_IDENTIFICATION -#usr/lib/locale/pt_BR.utf8/LC_MEASUREMENT -#usr/lib/locale/pt_BR.utf8/LC_MESSAGES -#usr/lib/locale/pt_BR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_BR.utf8/LC_MONETARY -#usr/lib/locale/pt_BR.utf8/LC_NAME -#usr/lib/locale/pt_BR.utf8/LC_NUMERIC -#usr/lib/locale/pt_BR.utf8/LC_PAPER -#usr/lib/locale/pt_BR.utf8/LC_TELEPHONE -#usr/lib/locale/pt_BR.utf8/LC_TIME -#usr/lib/locale/pt_BR/LC_ADDRESS -#usr/lib/locale/pt_BR/LC_COLLATE -#usr/lib/locale/pt_BR/LC_CTYPE -#usr/lib/locale/pt_BR/LC_IDENTIFICATION -#usr/lib/locale/pt_BR/LC_MEASUREMENT -#usr/lib/locale/pt_BR/LC_MESSAGES -#usr/lib/locale/pt_BR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_BR/LC_MONETARY -#usr/lib/locale/pt_BR/LC_NAME -#usr/lib/locale/pt_BR/LC_NUMERIC -#usr/lib/locale/pt_BR/LC_PAPER -#usr/lib/locale/pt_BR/LC_TELEPHONE -#usr/lib/locale/pt_BR/LC_TIME -#usr/lib/locale/pt_PT -#usr/lib/locale/pt_PT.utf8 -#usr/lib/locale/pt_PT.utf8/LC_ADDRESS -#usr/lib/locale/pt_PT.utf8/LC_COLLATE -#usr/lib/locale/pt_PT.utf8/LC_CTYPE -#usr/lib/locale/pt_PT.utf8/LC_IDENTIFICATION -#usr/lib/locale/pt_PT.utf8/LC_MEASUREMENT -#usr/lib/locale/pt_PT.utf8/LC_MESSAGES -#usr/lib/locale/pt_PT.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT.utf8/LC_MONETARY -#usr/lib/locale/pt_PT.utf8/LC_NAME -#usr/lib/locale/pt_PT.utf8/LC_NUMERIC -#usr/lib/locale/pt_PT.utf8/LC_PAPER -#usr/lib/locale/pt_PT.utf8/LC_TELEPHONE -#usr/lib/locale/pt_PT.utf8/LC_TIME -#usr/lib/locale/pt_PT/LC_ADDRESS -#usr/lib/locale/pt_PT/LC_COLLATE -#usr/lib/locale/pt_PT/LC_CTYPE -#usr/lib/locale/pt_PT/LC_IDENTIFICATION -#usr/lib/locale/pt_PT/LC_MEASUREMENT -#usr/lib/locale/pt_PT/LC_MESSAGES -#usr/lib/locale/pt_PT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT/LC_MONETARY -#usr/lib/locale/pt_PT/LC_NAME -#usr/lib/locale/pt_PT/LC_NUMERIC -#usr/lib/locale/pt_PT/LC_PAPER -#usr/lib/locale/pt_PT/LC_TELEPHONE -#usr/lib/locale/pt_PT/LC_TIME -#usr/lib/locale/pt_PT@euro -#usr/lib/locale/pt_PT@euro/LC_ADDRESS -#usr/lib/locale/pt_PT@euro/LC_COLLATE -#usr/lib/locale/pt_PT@euro/LC_CTYPE -#usr/lib/locale/pt_PT@euro/LC_IDENTIFICATION -#usr/lib/locale/pt_PT@euro/LC_MEASUREMENT -#usr/lib/locale/pt_PT@euro/LC_MESSAGES -#usr/lib/locale/pt_PT@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/pt_PT@euro/LC_MONETARY -#usr/lib/locale/pt_PT@euro/LC_NAME -#usr/lib/locale/pt_PT@euro/LC_NUMERIC -#usr/lib/locale/pt_PT@euro/LC_PAPER -#usr/lib/locale/pt_PT@euro/LC_TELEPHONE -#usr/lib/locale/pt_PT@euro/LC_TIME -#usr/lib/locale/ro_RO -#usr/lib/locale/ro_RO.utf8 -#usr/lib/locale/ro_RO.utf8/LC_ADDRESS -#usr/lib/locale/ro_RO.utf8/LC_COLLATE -#usr/lib/locale/ro_RO.utf8/LC_CTYPE -#usr/lib/locale/ro_RO.utf8/LC_IDENTIFICATION -#usr/lib/locale/ro_RO.utf8/LC_MEASUREMENT -#usr/lib/locale/ro_RO.utf8/LC_MESSAGES -#usr/lib/locale/ro_RO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ro_RO.utf8/LC_MONETARY -#usr/lib/locale/ro_RO.utf8/LC_NAME -#usr/lib/locale/ro_RO.utf8/LC_NUMERIC -#usr/lib/locale/ro_RO.utf8/LC_PAPER -#usr/lib/locale/ro_RO.utf8/LC_TELEPHONE -#usr/lib/locale/ro_RO.utf8/LC_TIME -#usr/lib/locale/ro_RO/LC_ADDRESS -#usr/lib/locale/ro_RO/LC_COLLATE -#usr/lib/locale/ro_RO/LC_CTYPE -#usr/lib/locale/ro_RO/LC_IDENTIFICATION -#usr/lib/locale/ro_RO/LC_MEASUREMENT -#usr/lib/locale/ro_RO/LC_MESSAGES -#usr/lib/locale/ro_RO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ro_RO/LC_MONETARY -#usr/lib/locale/ro_RO/LC_NAME -#usr/lib/locale/ro_RO/LC_NUMERIC -#usr/lib/locale/ro_RO/LC_PAPER -#usr/lib/locale/ro_RO/LC_TELEPHONE -#usr/lib/locale/ro_RO/LC_TIME -#usr/lib/locale/ru_RU -#usr/lib/locale/ru_RU.koi8r -#usr/lib/locale/ru_RU.koi8r/LC_ADDRESS -#usr/lib/locale/ru_RU.koi8r/LC_COLLATE -#usr/lib/locale/ru_RU.koi8r/LC_CTYPE -#usr/lib/locale/ru_RU.koi8r/LC_IDENTIFICATION -#usr/lib/locale/ru_RU.koi8r/LC_MEASUREMENT -#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES -#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU.koi8r/LC_MONETARY -#usr/lib/locale/ru_RU.koi8r/LC_NAME -#usr/lib/locale/ru_RU.koi8r/LC_NUMERIC -#usr/lib/locale/ru_RU.koi8r/LC_PAPER -#usr/lib/locale/ru_RU.koi8r/LC_TELEPHONE -#usr/lib/locale/ru_RU.koi8r/LC_TIME -#usr/lib/locale/ru_RU.utf8 -#usr/lib/locale/ru_RU.utf8/LC_ADDRESS -#usr/lib/locale/ru_RU.utf8/LC_COLLATE -#usr/lib/locale/ru_RU.utf8/LC_CTYPE -#usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION -#usr/lib/locale/ru_RU.utf8/LC_MEASUREMENT -#usr/lib/locale/ru_RU.utf8/LC_MESSAGES -#usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU.utf8/LC_MONETARY -#usr/lib/locale/ru_RU.utf8/LC_NAME -#usr/lib/locale/ru_RU.utf8/LC_NUMERIC -#usr/lib/locale/ru_RU.utf8/LC_PAPER -#usr/lib/locale/ru_RU.utf8/LC_TELEPHONE -#usr/lib/locale/ru_RU.utf8/LC_TIME -#usr/lib/locale/ru_RU/LC_ADDRESS -#usr/lib/locale/ru_RU/LC_COLLATE -#usr/lib/locale/ru_RU/LC_CTYPE -#usr/lib/locale/ru_RU/LC_IDENTIFICATION -#usr/lib/locale/ru_RU/LC_MEASUREMENT -#usr/lib/locale/ru_RU/LC_MESSAGES -#usr/lib/locale/ru_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_RU/LC_MONETARY -#usr/lib/locale/ru_RU/LC_NAME -#usr/lib/locale/ru_RU/LC_NUMERIC -#usr/lib/locale/ru_RU/LC_PAPER -#usr/lib/locale/ru_RU/LC_TELEPHONE -#usr/lib/locale/ru_RU/LC_TIME -#usr/lib/locale/ru_UA -#usr/lib/locale/ru_UA.utf8 -#usr/lib/locale/ru_UA.utf8/LC_ADDRESS -#usr/lib/locale/ru_UA.utf8/LC_COLLATE -#usr/lib/locale/ru_UA.utf8/LC_CTYPE -#usr/lib/locale/ru_UA.utf8/LC_IDENTIFICATION -#usr/lib/locale/ru_UA.utf8/LC_MEASUREMENT -#usr/lib/locale/ru_UA.utf8/LC_MESSAGES -#usr/lib/locale/ru_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_UA.utf8/LC_MONETARY -#usr/lib/locale/ru_UA.utf8/LC_NAME -#usr/lib/locale/ru_UA.utf8/LC_NUMERIC -#usr/lib/locale/ru_UA.utf8/LC_PAPER -#usr/lib/locale/ru_UA.utf8/LC_TELEPHONE -#usr/lib/locale/ru_UA.utf8/LC_TIME -#usr/lib/locale/ru_UA/LC_ADDRESS -#usr/lib/locale/ru_UA/LC_COLLATE -#usr/lib/locale/ru_UA/LC_CTYPE -#usr/lib/locale/ru_UA/LC_IDENTIFICATION -#usr/lib/locale/ru_UA/LC_MEASUREMENT -#usr/lib/locale/ru_UA/LC_MESSAGES -#usr/lib/locale/ru_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ru_UA/LC_MONETARY -#usr/lib/locale/ru_UA/LC_NAME -#usr/lib/locale/ru_UA/LC_NUMERIC -#usr/lib/locale/ru_UA/LC_PAPER -#usr/lib/locale/ru_UA/LC_TELEPHONE -#usr/lib/locale/ru_UA/LC_TIME -#usr/lib/locale/rw_RW -#usr/lib/locale/rw_RW/LC_ADDRESS -#usr/lib/locale/rw_RW/LC_COLLATE -#usr/lib/locale/rw_RW/LC_CTYPE -#usr/lib/locale/rw_RW/LC_IDENTIFICATION -#usr/lib/locale/rw_RW/LC_MEASUREMENT -#usr/lib/locale/rw_RW/LC_MESSAGES -#usr/lib/locale/rw_RW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/rw_RW/LC_MONETARY -#usr/lib/locale/rw_RW/LC_NAME -#usr/lib/locale/rw_RW/LC_NUMERIC -#usr/lib/locale/rw_RW/LC_PAPER -#usr/lib/locale/rw_RW/LC_TELEPHONE -#usr/lib/locale/rw_RW/LC_TIME -#usr/lib/locale/sa_IN -#usr/lib/locale/sa_IN/LC_ADDRESS -#usr/lib/locale/sa_IN/LC_COLLATE -#usr/lib/locale/sa_IN/LC_CTYPE -#usr/lib/locale/sa_IN/LC_IDENTIFICATION -#usr/lib/locale/sa_IN/LC_MEASUREMENT -#usr/lib/locale/sa_IN/LC_MESSAGES -#usr/lib/locale/sa_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sa_IN/LC_MONETARY -#usr/lib/locale/sa_IN/LC_NAME -#usr/lib/locale/sa_IN/LC_NUMERIC -#usr/lib/locale/sa_IN/LC_PAPER -#usr/lib/locale/sa_IN/LC_TELEPHONE -#usr/lib/locale/sa_IN/LC_TIME -#usr/lib/locale/sc_IT -#usr/lib/locale/sc_IT/LC_ADDRESS -#usr/lib/locale/sc_IT/LC_COLLATE -#usr/lib/locale/sc_IT/LC_CTYPE -#usr/lib/locale/sc_IT/LC_IDENTIFICATION -#usr/lib/locale/sc_IT/LC_MEASUREMENT -#usr/lib/locale/sc_IT/LC_MESSAGES -#usr/lib/locale/sc_IT/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sc_IT/LC_MONETARY -#usr/lib/locale/sc_IT/LC_NAME -#usr/lib/locale/sc_IT/LC_NUMERIC -#usr/lib/locale/sc_IT/LC_PAPER -#usr/lib/locale/sc_IT/LC_TELEPHONE -#usr/lib/locale/sc_IT/LC_TIME -#usr/lib/locale/sd_IN -#usr/lib/locale/sd_IN/LC_ADDRESS -#usr/lib/locale/sd_IN/LC_COLLATE -#usr/lib/locale/sd_IN/LC_CTYPE -#usr/lib/locale/sd_IN/LC_IDENTIFICATION -#usr/lib/locale/sd_IN/LC_MEASUREMENT -#usr/lib/locale/sd_IN/LC_MESSAGES -#usr/lib/locale/sd_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sd_IN/LC_MONETARY -#usr/lib/locale/sd_IN/LC_NAME -#usr/lib/locale/sd_IN/LC_NUMERIC -#usr/lib/locale/sd_IN/LC_PAPER -#usr/lib/locale/sd_IN/LC_TELEPHONE -#usr/lib/locale/sd_IN/LC_TIME -#usr/lib/locale/sd_IN@devanagari -#usr/lib/locale/sd_IN@devanagari/LC_ADDRESS -#usr/lib/locale/sd_IN@devanagari/LC_COLLATE -#usr/lib/locale/sd_IN@devanagari/LC_CTYPE -#usr/lib/locale/sd_IN@devanagari/LC_IDENTIFICATION -#usr/lib/locale/sd_IN@devanagari/LC_MEASUREMENT -#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES -#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sd_IN@devanagari/LC_MONETARY -#usr/lib/locale/sd_IN@devanagari/LC_NAME -#usr/lib/locale/sd_IN@devanagari/LC_NUMERIC -#usr/lib/locale/sd_IN@devanagari/LC_PAPER -#usr/lib/locale/sd_IN@devanagari/LC_TELEPHONE -#usr/lib/locale/sd_IN@devanagari/LC_TIME -#usr/lib/locale/se_NO -#usr/lib/locale/se_NO/LC_ADDRESS -#usr/lib/locale/se_NO/LC_COLLATE -#usr/lib/locale/se_NO/LC_CTYPE -#usr/lib/locale/se_NO/LC_IDENTIFICATION -#usr/lib/locale/se_NO/LC_MEASUREMENT -#usr/lib/locale/se_NO/LC_MESSAGES -#usr/lib/locale/se_NO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/se_NO/LC_MONETARY -#usr/lib/locale/se_NO/LC_NAME -#usr/lib/locale/se_NO/LC_NUMERIC -#usr/lib/locale/se_NO/LC_PAPER -#usr/lib/locale/se_NO/LC_TELEPHONE -#usr/lib/locale/se_NO/LC_TIME -#usr/lib/locale/shs_CA -#usr/lib/locale/shs_CA/LC_ADDRESS -#usr/lib/locale/shs_CA/LC_COLLATE -#usr/lib/locale/shs_CA/LC_CTYPE -#usr/lib/locale/shs_CA/LC_IDENTIFICATION -#usr/lib/locale/shs_CA/LC_MEASUREMENT -#usr/lib/locale/shs_CA/LC_MESSAGES -#usr/lib/locale/shs_CA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/shs_CA/LC_MONETARY -#usr/lib/locale/shs_CA/LC_NAME -#usr/lib/locale/shs_CA/LC_NUMERIC -#usr/lib/locale/shs_CA/LC_PAPER -#usr/lib/locale/shs_CA/LC_TELEPHONE -#usr/lib/locale/shs_CA/LC_TIME -#usr/lib/locale/si_LK -#usr/lib/locale/si_LK/LC_ADDRESS -#usr/lib/locale/si_LK/LC_COLLATE -#usr/lib/locale/si_LK/LC_CTYPE -#usr/lib/locale/si_LK/LC_IDENTIFICATION -#usr/lib/locale/si_LK/LC_MEASUREMENT -#usr/lib/locale/si_LK/LC_MESSAGES -#usr/lib/locale/si_LK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/si_LK/LC_MONETARY -#usr/lib/locale/si_LK/LC_NAME -#usr/lib/locale/si_LK/LC_NUMERIC -#usr/lib/locale/si_LK/LC_PAPER -#usr/lib/locale/si_LK/LC_TELEPHONE -#usr/lib/locale/si_LK/LC_TIME -#usr/lib/locale/sid_ET -#usr/lib/locale/sid_ET/LC_ADDRESS -#usr/lib/locale/sid_ET/LC_COLLATE -#usr/lib/locale/sid_ET/LC_CTYPE -#usr/lib/locale/sid_ET/LC_IDENTIFICATION -#usr/lib/locale/sid_ET/LC_MEASUREMENT -#usr/lib/locale/sid_ET/LC_MESSAGES -#usr/lib/locale/sid_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sid_ET/LC_MONETARY -#usr/lib/locale/sid_ET/LC_NAME -#usr/lib/locale/sid_ET/LC_NUMERIC -#usr/lib/locale/sid_ET/LC_PAPER -#usr/lib/locale/sid_ET/LC_TELEPHONE -#usr/lib/locale/sid_ET/LC_TIME -#usr/lib/locale/sk_SK -#usr/lib/locale/sk_SK.utf8 -#usr/lib/locale/sk_SK.utf8/LC_ADDRESS -#usr/lib/locale/sk_SK.utf8/LC_COLLATE -#usr/lib/locale/sk_SK.utf8/LC_CTYPE -#usr/lib/locale/sk_SK.utf8/LC_IDENTIFICATION -#usr/lib/locale/sk_SK.utf8/LC_MEASUREMENT -#usr/lib/locale/sk_SK.utf8/LC_MESSAGES -#usr/lib/locale/sk_SK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sk_SK.utf8/LC_MONETARY -#usr/lib/locale/sk_SK.utf8/LC_NAME -#usr/lib/locale/sk_SK.utf8/LC_NUMERIC -#usr/lib/locale/sk_SK.utf8/LC_PAPER -#usr/lib/locale/sk_SK.utf8/LC_TELEPHONE -#usr/lib/locale/sk_SK.utf8/LC_TIME -#usr/lib/locale/sk_SK/LC_ADDRESS -#usr/lib/locale/sk_SK/LC_COLLATE -#usr/lib/locale/sk_SK/LC_CTYPE -#usr/lib/locale/sk_SK/LC_IDENTIFICATION -#usr/lib/locale/sk_SK/LC_MEASUREMENT -#usr/lib/locale/sk_SK/LC_MESSAGES -#usr/lib/locale/sk_SK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sk_SK/LC_MONETARY -#usr/lib/locale/sk_SK/LC_NAME -#usr/lib/locale/sk_SK/LC_NUMERIC -#usr/lib/locale/sk_SK/LC_PAPER -#usr/lib/locale/sk_SK/LC_TELEPHONE -#usr/lib/locale/sk_SK/LC_TIME -#usr/lib/locale/sl_SI -#usr/lib/locale/sl_SI.utf8 -#usr/lib/locale/sl_SI.utf8/LC_ADDRESS -#usr/lib/locale/sl_SI.utf8/LC_COLLATE -#usr/lib/locale/sl_SI.utf8/LC_CTYPE -#usr/lib/locale/sl_SI.utf8/LC_IDENTIFICATION -#usr/lib/locale/sl_SI.utf8/LC_MEASUREMENT -#usr/lib/locale/sl_SI.utf8/LC_MESSAGES -#usr/lib/locale/sl_SI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sl_SI.utf8/LC_MONETARY -#usr/lib/locale/sl_SI.utf8/LC_NAME -#usr/lib/locale/sl_SI.utf8/LC_NUMERIC -#usr/lib/locale/sl_SI.utf8/LC_PAPER -#usr/lib/locale/sl_SI.utf8/LC_TELEPHONE -#usr/lib/locale/sl_SI.utf8/LC_TIME -#usr/lib/locale/sl_SI/LC_ADDRESS -#usr/lib/locale/sl_SI/LC_COLLATE -#usr/lib/locale/sl_SI/LC_CTYPE -#usr/lib/locale/sl_SI/LC_IDENTIFICATION -#usr/lib/locale/sl_SI/LC_MEASUREMENT -#usr/lib/locale/sl_SI/LC_MESSAGES -#usr/lib/locale/sl_SI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sl_SI/LC_MONETARY -#usr/lib/locale/sl_SI/LC_NAME -#usr/lib/locale/sl_SI/LC_NUMERIC -#usr/lib/locale/sl_SI/LC_PAPER -#usr/lib/locale/sl_SI/LC_TELEPHONE -#usr/lib/locale/sl_SI/LC_TIME -#usr/lib/locale/so_DJ -#usr/lib/locale/so_DJ.utf8 -#usr/lib/locale/so_DJ.utf8/LC_ADDRESS -#usr/lib/locale/so_DJ.utf8/LC_COLLATE -#usr/lib/locale/so_DJ.utf8/LC_CTYPE -#usr/lib/locale/so_DJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_DJ.utf8/LC_MEASUREMENT -#usr/lib/locale/so_DJ.utf8/LC_MESSAGES -#usr/lib/locale/so_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_DJ.utf8/LC_MONETARY -#usr/lib/locale/so_DJ.utf8/LC_NAME -#usr/lib/locale/so_DJ.utf8/LC_NUMERIC -#usr/lib/locale/so_DJ.utf8/LC_PAPER -#usr/lib/locale/so_DJ.utf8/LC_TELEPHONE -#usr/lib/locale/so_DJ.utf8/LC_TIME -#usr/lib/locale/so_DJ/LC_ADDRESS -#usr/lib/locale/so_DJ/LC_COLLATE -#usr/lib/locale/so_DJ/LC_CTYPE -#usr/lib/locale/so_DJ/LC_IDENTIFICATION -#usr/lib/locale/so_DJ/LC_MEASUREMENT -#usr/lib/locale/so_DJ/LC_MESSAGES -#usr/lib/locale/so_DJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_DJ/LC_MONETARY -#usr/lib/locale/so_DJ/LC_NAME -#usr/lib/locale/so_DJ/LC_NUMERIC -#usr/lib/locale/so_DJ/LC_PAPER -#usr/lib/locale/so_DJ/LC_TELEPHONE -#usr/lib/locale/so_DJ/LC_TIME -#usr/lib/locale/so_ET -#usr/lib/locale/so_ET/LC_ADDRESS -#usr/lib/locale/so_ET/LC_COLLATE -#usr/lib/locale/so_ET/LC_CTYPE -#usr/lib/locale/so_ET/LC_IDENTIFICATION -#usr/lib/locale/so_ET/LC_MEASUREMENT -#usr/lib/locale/so_ET/LC_MESSAGES -#usr/lib/locale/so_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_ET/LC_MONETARY -#usr/lib/locale/so_ET/LC_NAME -#usr/lib/locale/so_ET/LC_NUMERIC -#usr/lib/locale/so_ET/LC_PAPER -#usr/lib/locale/so_ET/LC_TELEPHONE -#usr/lib/locale/so_ET/LC_TIME -#usr/lib/locale/so_KE -#usr/lib/locale/so_KE.utf8 -#usr/lib/locale/so_KE.utf8/LC_ADDRESS -#usr/lib/locale/so_KE.utf8/LC_COLLATE -#usr/lib/locale/so_KE.utf8/LC_CTYPE -#usr/lib/locale/so_KE.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_KE.utf8/LC_MEASUREMENT -#usr/lib/locale/so_KE.utf8/LC_MESSAGES -#usr/lib/locale/so_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_KE.utf8/LC_MONETARY -#usr/lib/locale/so_KE.utf8/LC_NAME -#usr/lib/locale/so_KE.utf8/LC_NUMERIC -#usr/lib/locale/so_KE.utf8/LC_PAPER -#usr/lib/locale/so_KE.utf8/LC_TELEPHONE -#usr/lib/locale/so_KE.utf8/LC_TIME -#usr/lib/locale/so_KE/LC_ADDRESS -#usr/lib/locale/so_KE/LC_COLLATE -#usr/lib/locale/so_KE/LC_CTYPE -#usr/lib/locale/so_KE/LC_IDENTIFICATION -#usr/lib/locale/so_KE/LC_MEASUREMENT -#usr/lib/locale/so_KE/LC_MESSAGES -#usr/lib/locale/so_KE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_KE/LC_MONETARY -#usr/lib/locale/so_KE/LC_NAME -#usr/lib/locale/so_KE/LC_NUMERIC -#usr/lib/locale/so_KE/LC_PAPER -#usr/lib/locale/so_KE/LC_TELEPHONE -#usr/lib/locale/so_KE/LC_TIME -#usr/lib/locale/so_SO -#usr/lib/locale/so_SO.utf8 -#usr/lib/locale/so_SO.utf8/LC_ADDRESS -#usr/lib/locale/so_SO.utf8/LC_COLLATE -#usr/lib/locale/so_SO.utf8/LC_CTYPE -#usr/lib/locale/so_SO.utf8/LC_IDENTIFICATION -#usr/lib/locale/so_SO.utf8/LC_MEASUREMENT -#usr/lib/locale/so_SO.utf8/LC_MESSAGES -#usr/lib/locale/so_SO.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_SO.utf8/LC_MONETARY -#usr/lib/locale/so_SO.utf8/LC_NAME -#usr/lib/locale/so_SO.utf8/LC_NUMERIC -#usr/lib/locale/so_SO.utf8/LC_PAPER -#usr/lib/locale/so_SO.utf8/LC_TELEPHONE -#usr/lib/locale/so_SO.utf8/LC_TIME -#usr/lib/locale/so_SO/LC_ADDRESS -#usr/lib/locale/so_SO/LC_COLLATE -#usr/lib/locale/so_SO/LC_CTYPE -#usr/lib/locale/so_SO/LC_IDENTIFICATION -#usr/lib/locale/so_SO/LC_MEASUREMENT -#usr/lib/locale/so_SO/LC_MESSAGES -#usr/lib/locale/so_SO/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/so_SO/LC_MONETARY -#usr/lib/locale/so_SO/LC_NAME -#usr/lib/locale/so_SO/LC_NUMERIC -#usr/lib/locale/so_SO/LC_PAPER -#usr/lib/locale/so_SO/LC_TELEPHONE -#usr/lib/locale/so_SO/LC_TIME -#usr/lib/locale/sq_AL -#usr/lib/locale/sq_AL.utf8 -#usr/lib/locale/sq_AL.utf8/LC_ADDRESS -#usr/lib/locale/sq_AL.utf8/LC_COLLATE -#usr/lib/locale/sq_AL.utf8/LC_CTYPE -#usr/lib/locale/sq_AL.utf8/LC_IDENTIFICATION -#usr/lib/locale/sq_AL.utf8/LC_MEASUREMENT -#usr/lib/locale/sq_AL.utf8/LC_MESSAGES -#usr/lib/locale/sq_AL.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_AL.utf8/LC_MONETARY -#usr/lib/locale/sq_AL.utf8/LC_NAME -#usr/lib/locale/sq_AL.utf8/LC_NUMERIC -#usr/lib/locale/sq_AL.utf8/LC_PAPER -#usr/lib/locale/sq_AL.utf8/LC_TELEPHONE -#usr/lib/locale/sq_AL.utf8/LC_TIME -#usr/lib/locale/sq_AL/LC_ADDRESS -#usr/lib/locale/sq_AL/LC_COLLATE -#usr/lib/locale/sq_AL/LC_CTYPE -#usr/lib/locale/sq_AL/LC_IDENTIFICATION -#usr/lib/locale/sq_AL/LC_MEASUREMENT -#usr/lib/locale/sq_AL/LC_MESSAGES -#usr/lib/locale/sq_AL/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_AL/LC_MONETARY -#usr/lib/locale/sq_AL/LC_NAME -#usr/lib/locale/sq_AL/LC_NUMERIC -#usr/lib/locale/sq_AL/LC_PAPER -#usr/lib/locale/sq_AL/LC_TELEPHONE -#usr/lib/locale/sq_AL/LC_TIME -#usr/lib/locale/sq_MK -#usr/lib/locale/sq_MK/LC_ADDRESS -#usr/lib/locale/sq_MK/LC_COLLATE -#usr/lib/locale/sq_MK/LC_CTYPE -#usr/lib/locale/sq_MK/LC_IDENTIFICATION -#usr/lib/locale/sq_MK/LC_MEASUREMENT -#usr/lib/locale/sq_MK/LC_MESSAGES -#usr/lib/locale/sq_MK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sq_MK/LC_MONETARY -#usr/lib/locale/sq_MK/LC_NAME -#usr/lib/locale/sq_MK/LC_NUMERIC -#usr/lib/locale/sq_MK/LC_PAPER -#usr/lib/locale/sq_MK/LC_TELEPHONE -#usr/lib/locale/sq_MK/LC_TIME -#usr/lib/locale/sr_ME -#usr/lib/locale/sr_ME/LC_ADDRESS -#usr/lib/locale/sr_ME/LC_COLLATE -#usr/lib/locale/sr_ME/LC_CTYPE -#usr/lib/locale/sr_ME/LC_IDENTIFICATION -#usr/lib/locale/sr_ME/LC_MEASUREMENT -#usr/lib/locale/sr_ME/LC_MESSAGES -#usr/lib/locale/sr_ME/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_ME/LC_MONETARY -#usr/lib/locale/sr_ME/LC_NAME -#usr/lib/locale/sr_ME/LC_NUMERIC -#usr/lib/locale/sr_ME/LC_PAPER -#usr/lib/locale/sr_ME/LC_TELEPHONE -#usr/lib/locale/sr_ME/LC_TIME -#usr/lib/locale/sr_RS -#usr/lib/locale/sr_RS/LC_ADDRESS -#usr/lib/locale/sr_RS/LC_COLLATE -#usr/lib/locale/sr_RS/LC_CTYPE -#usr/lib/locale/sr_RS/LC_IDENTIFICATION -#usr/lib/locale/sr_RS/LC_MEASUREMENT -#usr/lib/locale/sr_RS/LC_MESSAGES -#usr/lib/locale/sr_RS/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_RS/LC_MONETARY -#usr/lib/locale/sr_RS/LC_NAME -#usr/lib/locale/sr_RS/LC_NUMERIC -#usr/lib/locale/sr_RS/LC_PAPER -#usr/lib/locale/sr_RS/LC_TELEPHONE -#usr/lib/locale/sr_RS/LC_TIME -#usr/lib/locale/sr_RS@latin -#usr/lib/locale/sr_RS@latin/LC_ADDRESS -#usr/lib/locale/sr_RS@latin/LC_COLLATE -#usr/lib/locale/sr_RS@latin/LC_CTYPE -#usr/lib/locale/sr_RS@latin/LC_IDENTIFICATION -#usr/lib/locale/sr_RS@latin/LC_MEASUREMENT -#usr/lib/locale/sr_RS@latin/LC_MESSAGES -#usr/lib/locale/sr_RS@latin/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sr_RS@latin/LC_MONETARY -#usr/lib/locale/sr_RS@latin/LC_NAME -#usr/lib/locale/sr_RS@latin/LC_NUMERIC -#usr/lib/locale/sr_RS@latin/LC_PAPER -#usr/lib/locale/sr_RS@latin/LC_TELEPHONE -#usr/lib/locale/sr_RS@latin/LC_TIME -#usr/lib/locale/ss_ZA -#usr/lib/locale/ss_ZA/LC_ADDRESS -#usr/lib/locale/ss_ZA/LC_COLLATE -#usr/lib/locale/ss_ZA/LC_CTYPE -#usr/lib/locale/ss_ZA/LC_IDENTIFICATION -#usr/lib/locale/ss_ZA/LC_MEASUREMENT -#usr/lib/locale/ss_ZA/LC_MESSAGES -#usr/lib/locale/ss_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ss_ZA/LC_MONETARY -#usr/lib/locale/ss_ZA/LC_NAME -#usr/lib/locale/ss_ZA/LC_NUMERIC -#usr/lib/locale/ss_ZA/LC_PAPER -#usr/lib/locale/ss_ZA/LC_TELEPHONE -#usr/lib/locale/ss_ZA/LC_TIME -#usr/lib/locale/st_ZA -#usr/lib/locale/st_ZA.utf8 -#usr/lib/locale/st_ZA.utf8/LC_ADDRESS -#usr/lib/locale/st_ZA.utf8/LC_COLLATE -#usr/lib/locale/st_ZA.utf8/LC_CTYPE -#usr/lib/locale/st_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/st_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/st_ZA.utf8/LC_MESSAGES -#usr/lib/locale/st_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/st_ZA.utf8/LC_MONETARY -#usr/lib/locale/st_ZA.utf8/LC_NAME -#usr/lib/locale/st_ZA.utf8/LC_NUMERIC -#usr/lib/locale/st_ZA.utf8/LC_PAPER -#usr/lib/locale/st_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/st_ZA.utf8/LC_TIME -#usr/lib/locale/st_ZA/LC_ADDRESS -#usr/lib/locale/st_ZA/LC_COLLATE -#usr/lib/locale/st_ZA/LC_CTYPE -#usr/lib/locale/st_ZA/LC_IDENTIFICATION -#usr/lib/locale/st_ZA/LC_MEASUREMENT -#usr/lib/locale/st_ZA/LC_MESSAGES -#usr/lib/locale/st_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/st_ZA/LC_MONETARY -#usr/lib/locale/st_ZA/LC_NAME -#usr/lib/locale/st_ZA/LC_NUMERIC -#usr/lib/locale/st_ZA/LC_PAPER -#usr/lib/locale/st_ZA/LC_TELEPHONE -#usr/lib/locale/st_ZA/LC_TIME -#usr/lib/locale/sv_FI -#usr/lib/locale/sv_FI.utf8 -#usr/lib/locale/sv_FI.utf8/LC_ADDRESS -#usr/lib/locale/sv_FI.utf8/LC_COLLATE -#usr/lib/locale/sv_FI.utf8/LC_CTYPE -#usr/lib/locale/sv_FI.utf8/LC_IDENTIFICATION -#usr/lib/locale/sv_FI.utf8/LC_MEASUREMENT -#usr/lib/locale/sv_FI.utf8/LC_MESSAGES -#usr/lib/locale/sv_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI.utf8/LC_MONETARY -#usr/lib/locale/sv_FI.utf8/LC_NAME -#usr/lib/locale/sv_FI.utf8/LC_NUMERIC -#usr/lib/locale/sv_FI.utf8/LC_PAPER -#usr/lib/locale/sv_FI.utf8/LC_TELEPHONE -#usr/lib/locale/sv_FI.utf8/LC_TIME -#usr/lib/locale/sv_FI/LC_ADDRESS -#usr/lib/locale/sv_FI/LC_COLLATE -#usr/lib/locale/sv_FI/LC_CTYPE -#usr/lib/locale/sv_FI/LC_IDENTIFICATION -#usr/lib/locale/sv_FI/LC_MEASUREMENT -#usr/lib/locale/sv_FI/LC_MESSAGES -#usr/lib/locale/sv_FI/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI/LC_MONETARY -#usr/lib/locale/sv_FI/LC_NAME -#usr/lib/locale/sv_FI/LC_NUMERIC -#usr/lib/locale/sv_FI/LC_PAPER -#usr/lib/locale/sv_FI/LC_TELEPHONE -#usr/lib/locale/sv_FI/LC_TIME -#usr/lib/locale/sv_FI@euro -#usr/lib/locale/sv_FI@euro/LC_ADDRESS -#usr/lib/locale/sv_FI@euro/LC_COLLATE -#usr/lib/locale/sv_FI@euro/LC_CTYPE -#usr/lib/locale/sv_FI@euro/LC_IDENTIFICATION -#usr/lib/locale/sv_FI@euro/LC_MEASUREMENT -#usr/lib/locale/sv_FI@euro/LC_MESSAGES -#usr/lib/locale/sv_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_FI@euro/LC_MONETARY -#usr/lib/locale/sv_FI@euro/LC_NAME -#usr/lib/locale/sv_FI@euro/LC_NUMERIC -#usr/lib/locale/sv_FI@euro/LC_PAPER -#usr/lib/locale/sv_FI@euro/LC_TELEPHONE -#usr/lib/locale/sv_FI@euro/LC_TIME -#usr/lib/locale/sv_SE -#usr/lib/locale/sv_SE.iso885915 -#usr/lib/locale/sv_SE.iso885915/LC_ADDRESS -#usr/lib/locale/sv_SE.iso885915/LC_COLLATE -#usr/lib/locale/sv_SE.iso885915/LC_CTYPE -#usr/lib/locale/sv_SE.iso885915/LC_IDENTIFICATION -#usr/lib/locale/sv_SE.iso885915/LC_MEASUREMENT -#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES -#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE.iso885915/LC_MONETARY -#usr/lib/locale/sv_SE.iso885915/LC_NAME -#usr/lib/locale/sv_SE.iso885915/LC_NUMERIC -#usr/lib/locale/sv_SE.iso885915/LC_PAPER -#usr/lib/locale/sv_SE.iso885915/LC_TELEPHONE -#usr/lib/locale/sv_SE.iso885915/LC_TIME -#usr/lib/locale/sv_SE.utf8 -#usr/lib/locale/sv_SE.utf8/LC_ADDRESS -#usr/lib/locale/sv_SE.utf8/LC_COLLATE -#usr/lib/locale/sv_SE.utf8/LC_CTYPE -#usr/lib/locale/sv_SE.utf8/LC_IDENTIFICATION -#usr/lib/locale/sv_SE.utf8/LC_MEASUREMENT -#usr/lib/locale/sv_SE.utf8/LC_MESSAGES -#usr/lib/locale/sv_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE.utf8/LC_MONETARY -#usr/lib/locale/sv_SE.utf8/LC_NAME -#usr/lib/locale/sv_SE.utf8/LC_NUMERIC -#usr/lib/locale/sv_SE.utf8/LC_PAPER -#usr/lib/locale/sv_SE.utf8/LC_TELEPHONE -#usr/lib/locale/sv_SE.utf8/LC_TIME -#usr/lib/locale/sv_SE/LC_ADDRESS -#usr/lib/locale/sv_SE/LC_COLLATE -#usr/lib/locale/sv_SE/LC_CTYPE -#usr/lib/locale/sv_SE/LC_IDENTIFICATION -#usr/lib/locale/sv_SE/LC_MEASUREMENT -#usr/lib/locale/sv_SE/LC_MESSAGES -#usr/lib/locale/sv_SE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/sv_SE/LC_MONETARY -#usr/lib/locale/sv_SE/LC_NAME -#usr/lib/locale/sv_SE/LC_NUMERIC -#usr/lib/locale/sv_SE/LC_PAPER -#usr/lib/locale/sv_SE/LC_TELEPHONE -#usr/lib/locale/sv_SE/LC_TIME -#usr/lib/locale/ta_IN -#usr/lib/locale/ta_IN/LC_ADDRESS -#usr/lib/locale/ta_IN/LC_COLLATE -#usr/lib/locale/ta_IN/LC_CTYPE -#usr/lib/locale/ta_IN/LC_IDENTIFICATION -#usr/lib/locale/ta_IN/LC_MEASUREMENT -#usr/lib/locale/ta_IN/LC_MESSAGES -#usr/lib/locale/ta_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ta_IN/LC_MONETARY -#usr/lib/locale/ta_IN/LC_NAME -#usr/lib/locale/ta_IN/LC_NUMERIC -#usr/lib/locale/ta_IN/LC_PAPER -#usr/lib/locale/ta_IN/LC_TELEPHONE -#usr/lib/locale/ta_IN/LC_TIME -#usr/lib/locale/te_IN -#usr/lib/locale/te_IN/LC_ADDRESS -#usr/lib/locale/te_IN/LC_COLLATE -#usr/lib/locale/te_IN/LC_CTYPE -#usr/lib/locale/te_IN/LC_IDENTIFICATION -#usr/lib/locale/te_IN/LC_MEASUREMENT -#usr/lib/locale/te_IN/LC_MESSAGES -#usr/lib/locale/te_IN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/te_IN/LC_MONETARY -#usr/lib/locale/te_IN/LC_NAME -#usr/lib/locale/te_IN/LC_NUMERIC -#usr/lib/locale/te_IN/LC_PAPER -#usr/lib/locale/te_IN/LC_TELEPHONE -#usr/lib/locale/te_IN/LC_TIME -#usr/lib/locale/tg_TJ -#usr/lib/locale/tg_TJ.utf8 -#usr/lib/locale/tg_TJ.utf8/LC_ADDRESS -#usr/lib/locale/tg_TJ.utf8/LC_COLLATE -#usr/lib/locale/tg_TJ.utf8/LC_CTYPE -#usr/lib/locale/tg_TJ.utf8/LC_IDENTIFICATION -#usr/lib/locale/tg_TJ.utf8/LC_MEASUREMENT -#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES -#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tg_TJ.utf8/LC_MONETARY -#usr/lib/locale/tg_TJ.utf8/LC_NAME -#usr/lib/locale/tg_TJ.utf8/LC_NUMERIC -#usr/lib/locale/tg_TJ.utf8/LC_PAPER -#usr/lib/locale/tg_TJ.utf8/LC_TELEPHONE -#usr/lib/locale/tg_TJ.utf8/LC_TIME -#usr/lib/locale/tg_TJ/LC_ADDRESS -#usr/lib/locale/tg_TJ/LC_COLLATE -#usr/lib/locale/tg_TJ/LC_CTYPE -#usr/lib/locale/tg_TJ/LC_IDENTIFICATION -#usr/lib/locale/tg_TJ/LC_MEASUREMENT -#usr/lib/locale/tg_TJ/LC_MESSAGES -#usr/lib/locale/tg_TJ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tg_TJ/LC_MONETARY -#usr/lib/locale/tg_TJ/LC_NAME -#usr/lib/locale/tg_TJ/LC_NUMERIC -#usr/lib/locale/tg_TJ/LC_PAPER -#usr/lib/locale/tg_TJ/LC_TELEPHONE -#usr/lib/locale/tg_TJ/LC_TIME -#usr/lib/locale/th_TH -#usr/lib/locale/th_TH.utf8 -#usr/lib/locale/th_TH.utf8/LC_ADDRESS -#usr/lib/locale/th_TH.utf8/LC_COLLATE -#usr/lib/locale/th_TH.utf8/LC_CTYPE -#usr/lib/locale/th_TH.utf8/LC_IDENTIFICATION -#usr/lib/locale/th_TH.utf8/LC_MEASUREMENT -#usr/lib/locale/th_TH.utf8/LC_MESSAGES -#usr/lib/locale/th_TH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/th_TH.utf8/LC_MONETARY -#usr/lib/locale/th_TH.utf8/LC_NAME -#usr/lib/locale/th_TH.utf8/LC_NUMERIC -#usr/lib/locale/th_TH.utf8/LC_PAPER -#usr/lib/locale/th_TH.utf8/LC_TELEPHONE -#usr/lib/locale/th_TH.utf8/LC_TIME -#usr/lib/locale/th_TH/LC_ADDRESS -#usr/lib/locale/th_TH/LC_COLLATE -#usr/lib/locale/th_TH/LC_CTYPE -#usr/lib/locale/th_TH/LC_IDENTIFICATION -#usr/lib/locale/th_TH/LC_MEASUREMENT -#usr/lib/locale/th_TH/LC_MESSAGES -#usr/lib/locale/th_TH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/th_TH/LC_MONETARY -#usr/lib/locale/th_TH/LC_NAME -#usr/lib/locale/th_TH/LC_NUMERIC -#usr/lib/locale/th_TH/LC_PAPER -#usr/lib/locale/th_TH/LC_TELEPHONE -#usr/lib/locale/th_TH/LC_TIME -#usr/lib/locale/ti_ER -#usr/lib/locale/ti_ER/LC_ADDRESS -#usr/lib/locale/ti_ER/LC_COLLATE -#usr/lib/locale/ti_ER/LC_CTYPE -#usr/lib/locale/ti_ER/LC_IDENTIFICATION -#usr/lib/locale/ti_ER/LC_MEASUREMENT -#usr/lib/locale/ti_ER/LC_MESSAGES -#usr/lib/locale/ti_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ti_ER/LC_MONETARY -#usr/lib/locale/ti_ER/LC_NAME -#usr/lib/locale/ti_ER/LC_NUMERIC -#usr/lib/locale/ti_ER/LC_PAPER -#usr/lib/locale/ti_ER/LC_TELEPHONE -#usr/lib/locale/ti_ER/LC_TIME -#usr/lib/locale/ti_ET -#usr/lib/locale/ti_ET/LC_ADDRESS -#usr/lib/locale/ti_ET/LC_COLLATE -#usr/lib/locale/ti_ET/LC_CTYPE -#usr/lib/locale/ti_ET/LC_IDENTIFICATION -#usr/lib/locale/ti_ET/LC_MEASUREMENT -#usr/lib/locale/ti_ET/LC_MESSAGES -#usr/lib/locale/ti_ET/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ti_ET/LC_MONETARY -#usr/lib/locale/ti_ET/LC_NAME -#usr/lib/locale/ti_ET/LC_NUMERIC -#usr/lib/locale/ti_ET/LC_PAPER -#usr/lib/locale/ti_ET/LC_TELEPHONE -#usr/lib/locale/ti_ET/LC_TIME -#usr/lib/locale/tig_ER -#usr/lib/locale/tig_ER/LC_ADDRESS -#usr/lib/locale/tig_ER/LC_COLLATE -#usr/lib/locale/tig_ER/LC_CTYPE -#usr/lib/locale/tig_ER/LC_IDENTIFICATION -#usr/lib/locale/tig_ER/LC_MEASUREMENT -#usr/lib/locale/tig_ER/LC_MESSAGES -#usr/lib/locale/tig_ER/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tig_ER/LC_MONETARY -#usr/lib/locale/tig_ER/LC_NAME -#usr/lib/locale/tig_ER/LC_NUMERIC -#usr/lib/locale/tig_ER/LC_PAPER -#usr/lib/locale/tig_ER/LC_TELEPHONE -#usr/lib/locale/tig_ER/LC_TIME -#usr/lib/locale/tk_TM -#usr/lib/locale/tk_TM/LC_ADDRESS -#usr/lib/locale/tk_TM/LC_COLLATE -#usr/lib/locale/tk_TM/LC_CTYPE -#usr/lib/locale/tk_TM/LC_IDENTIFICATION -#usr/lib/locale/tk_TM/LC_MEASUREMENT -#usr/lib/locale/tk_TM/LC_MESSAGES -#usr/lib/locale/tk_TM/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tk_TM/LC_MONETARY -#usr/lib/locale/tk_TM/LC_NAME -#usr/lib/locale/tk_TM/LC_NUMERIC -#usr/lib/locale/tk_TM/LC_PAPER -#usr/lib/locale/tk_TM/LC_TELEPHONE -#usr/lib/locale/tk_TM/LC_TIME -#usr/lib/locale/tl_PH -#usr/lib/locale/tl_PH.utf8 -#usr/lib/locale/tl_PH.utf8/LC_ADDRESS -#usr/lib/locale/tl_PH.utf8/LC_COLLATE -#usr/lib/locale/tl_PH.utf8/LC_CTYPE -#usr/lib/locale/tl_PH.utf8/LC_IDENTIFICATION -#usr/lib/locale/tl_PH.utf8/LC_MEASUREMENT -#usr/lib/locale/tl_PH.utf8/LC_MESSAGES -#usr/lib/locale/tl_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tl_PH.utf8/LC_MONETARY -#usr/lib/locale/tl_PH.utf8/LC_NAME -#usr/lib/locale/tl_PH.utf8/LC_NUMERIC -#usr/lib/locale/tl_PH.utf8/LC_PAPER -#usr/lib/locale/tl_PH.utf8/LC_TELEPHONE -#usr/lib/locale/tl_PH.utf8/LC_TIME -#usr/lib/locale/tl_PH/LC_ADDRESS -#usr/lib/locale/tl_PH/LC_COLLATE -#usr/lib/locale/tl_PH/LC_CTYPE -#usr/lib/locale/tl_PH/LC_IDENTIFICATION -#usr/lib/locale/tl_PH/LC_MEASUREMENT -#usr/lib/locale/tl_PH/LC_MESSAGES -#usr/lib/locale/tl_PH/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tl_PH/LC_MONETARY -#usr/lib/locale/tl_PH/LC_NAME -#usr/lib/locale/tl_PH/LC_NUMERIC -#usr/lib/locale/tl_PH/LC_PAPER -#usr/lib/locale/tl_PH/LC_TELEPHONE -#usr/lib/locale/tl_PH/LC_TIME -#usr/lib/locale/tn_ZA -#usr/lib/locale/tn_ZA/LC_ADDRESS -#usr/lib/locale/tn_ZA/LC_COLLATE -#usr/lib/locale/tn_ZA/LC_CTYPE -#usr/lib/locale/tn_ZA/LC_IDENTIFICATION -#usr/lib/locale/tn_ZA/LC_MEASUREMENT -#usr/lib/locale/tn_ZA/LC_MESSAGES -#usr/lib/locale/tn_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tn_ZA/LC_MONETARY -#usr/lib/locale/tn_ZA/LC_NAME -#usr/lib/locale/tn_ZA/LC_NUMERIC -#usr/lib/locale/tn_ZA/LC_PAPER -#usr/lib/locale/tn_ZA/LC_TELEPHONE -#usr/lib/locale/tn_ZA/LC_TIME -#usr/lib/locale/tr_CY -#usr/lib/locale/tr_CY.utf8 -#usr/lib/locale/tr_CY.utf8/LC_ADDRESS -#usr/lib/locale/tr_CY.utf8/LC_COLLATE -#usr/lib/locale/tr_CY.utf8/LC_CTYPE -#usr/lib/locale/tr_CY.utf8/LC_IDENTIFICATION -#usr/lib/locale/tr_CY.utf8/LC_MEASUREMENT -#usr/lib/locale/tr_CY.utf8/LC_MESSAGES -#usr/lib/locale/tr_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_CY.utf8/LC_MONETARY -#usr/lib/locale/tr_CY.utf8/LC_NAME -#usr/lib/locale/tr_CY.utf8/LC_NUMERIC -#usr/lib/locale/tr_CY.utf8/LC_PAPER -#usr/lib/locale/tr_CY.utf8/LC_TELEPHONE -#usr/lib/locale/tr_CY.utf8/LC_TIME -#usr/lib/locale/tr_CY/LC_ADDRESS -#usr/lib/locale/tr_CY/LC_COLLATE -#usr/lib/locale/tr_CY/LC_CTYPE -#usr/lib/locale/tr_CY/LC_IDENTIFICATION -#usr/lib/locale/tr_CY/LC_MEASUREMENT -#usr/lib/locale/tr_CY/LC_MESSAGES -#usr/lib/locale/tr_CY/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_CY/LC_MONETARY -#usr/lib/locale/tr_CY/LC_NAME -#usr/lib/locale/tr_CY/LC_NUMERIC -#usr/lib/locale/tr_CY/LC_PAPER -#usr/lib/locale/tr_CY/LC_TELEPHONE -#usr/lib/locale/tr_CY/LC_TIME -#usr/lib/locale/tr_TR -#usr/lib/locale/tr_TR.utf8 -#usr/lib/locale/tr_TR.utf8/LC_ADDRESS -#usr/lib/locale/tr_TR.utf8/LC_COLLATE -#usr/lib/locale/tr_TR.utf8/LC_CTYPE -#usr/lib/locale/tr_TR.utf8/LC_IDENTIFICATION -#usr/lib/locale/tr_TR.utf8/LC_MEASUREMENT -#usr/lib/locale/tr_TR.utf8/LC_MESSAGES -#usr/lib/locale/tr_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_TR.utf8/LC_MONETARY -#usr/lib/locale/tr_TR.utf8/LC_NAME -#usr/lib/locale/tr_TR.utf8/LC_NUMERIC -#usr/lib/locale/tr_TR.utf8/LC_PAPER -#usr/lib/locale/tr_TR.utf8/LC_TELEPHONE -#usr/lib/locale/tr_TR.utf8/LC_TIME -#usr/lib/locale/tr_TR/LC_ADDRESS -#usr/lib/locale/tr_TR/LC_COLLATE -#usr/lib/locale/tr_TR/LC_CTYPE -#usr/lib/locale/tr_TR/LC_IDENTIFICATION -#usr/lib/locale/tr_TR/LC_MEASUREMENT -#usr/lib/locale/tr_TR/LC_MESSAGES -#usr/lib/locale/tr_TR/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tr_TR/LC_MONETARY -#usr/lib/locale/tr_TR/LC_NAME -#usr/lib/locale/tr_TR/LC_NUMERIC -#usr/lib/locale/tr_TR/LC_PAPER -#usr/lib/locale/tr_TR/LC_TELEPHONE -#usr/lib/locale/tr_TR/LC_TIME -#usr/lib/locale/ts_ZA -#usr/lib/locale/ts_ZA/LC_ADDRESS -#usr/lib/locale/ts_ZA/LC_COLLATE -#usr/lib/locale/ts_ZA/LC_CTYPE -#usr/lib/locale/ts_ZA/LC_IDENTIFICATION -#usr/lib/locale/ts_ZA/LC_MEASUREMENT -#usr/lib/locale/ts_ZA/LC_MESSAGES -#usr/lib/locale/ts_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ts_ZA/LC_MONETARY -#usr/lib/locale/ts_ZA/LC_NAME -#usr/lib/locale/ts_ZA/LC_NUMERIC -#usr/lib/locale/ts_ZA/LC_PAPER -#usr/lib/locale/ts_ZA/LC_TELEPHONE -#usr/lib/locale/ts_ZA/LC_TIME -#usr/lib/locale/tt_RU -#usr/lib/locale/tt_RU/LC_ADDRESS -#usr/lib/locale/tt_RU/LC_COLLATE -#usr/lib/locale/tt_RU/LC_CTYPE -#usr/lib/locale/tt_RU/LC_IDENTIFICATION -#usr/lib/locale/tt_RU/LC_MEASUREMENT -#usr/lib/locale/tt_RU/LC_MESSAGES -#usr/lib/locale/tt_RU/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tt_RU/LC_MONETARY -#usr/lib/locale/tt_RU/LC_NAME -#usr/lib/locale/tt_RU/LC_NUMERIC -#usr/lib/locale/tt_RU/LC_PAPER -#usr/lib/locale/tt_RU/LC_TELEPHONE -#usr/lib/locale/tt_RU/LC_TIME -#usr/lib/locale/tt_RU@iqtelif -#usr/lib/locale/tt_RU@iqtelif/LC_ADDRESS -#usr/lib/locale/tt_RU@iqtelif/LC_COLLATE -#usr/lib/locale/tt_RU@iqtelif/LC_CTYPE -#usr/lib/locale/tt_RU@iqtelif/LC_IDENTIFICATION -#usr/lib/locale/tt_RU@iqtelif/LC_MEASUREMENT -#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES -#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/tt_RU@iqtelif/LC_MONETARY -#usr/lib/locale/tt_RU@iqtelif/LC_NAME -#usr/lib/locale/tt_RU@iqtelif/LC_NUMERIC -#usr/lib/locale/tt_RU@iqtelif/LC_PAPER -#usr/lib/locale/tt_RU@iqtelif/LC_TELEPHONE -#usr/lib/locale/tt_RU@iqtelif/LC_TIME -#usr/lib/locale/ug_CN -#usr/lib/locale/ug_CN/LC_ADDRESS -#usr/lib/locale/ug_CN/LC_COLLATE -#usr/lib/locale/ug_CN/LC_CTYPE -#usr/lib/locale/ug_CN/LC_IDENTIFICATION -#usr/lib/locale/ug_CN/LC_MEASUREMENT -#usr/lib/locale/ug_CN/LC_MESSAGES -#usr/lib/locale/ug_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ug_CN/LC_MONETARY -#usr/lib/locale/ug_CN/LC_NAME -#usr/lib/locale/ug_CN/LC_NUMERIC -#usr/lib/locale/ug_CN/LC_PAPER -#usr/lib/locale/ug_CN/LC_TELEPHONE -#usr/lib/locale/ug_CN/LC_TIME -#usr/lib/locale/uk_UA -#usr/lib/locale/uk_UA.utf8 -#usr/lib/locale/uk_UA.utf8/LC_ADDRESS -#usr/lib/locale/uk_UA.utf8/LC_COLLATE -#usr/lib/locale/uk_UA.utf8/LC_CTYPE -#usr/lib/locale/uk_UA.utf8/LC_IDENTIFICATION -#usr/lib/locale/uk_UA.utf8/LC_MEASUREMENT -#usr/lib/locale/uk_UA.utf8/LC_MESSAGES -#usr/lib/locale/uk_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uk_UA.utf8/LC_MONETARY -#usr/lib/locale/uk_UA.utf8/LC_NAME -#usr/lib/locale/uk_UA.utf8/LC_NUMERIC -#usr/lib/locale/uk_UA.utf8/LC_PAPER -#usr/lib/locale/uk_UA.utf8/LC_TELEPHONE -#usr/lib/locale/uk_UA.utf8/LC_TIME -#usr/lib/locale/uk_UA/LC_ADDRESS -#usr/lib/locale/uk_UA/LC_COLLATE -#usr/lib/locale/uk_UA/LC_CTYPE -#usr/lib/locale/uk_UA/LC_IDENTIFICATION -#usr/lib/locale/uk_UA/LC_MEASUREMENT -#usr/lib/locale/uk_UA/LC_MESSAGES -#usr/lib/locale/uk_UA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uk_UA/LC_MONETARY -#usr/lib/locale/uk_UA/LC_NAME -#usr/lib/locale/uk_UA/LC_NUMERIC -#usr/lib/locale/uk_UA/LC_PAPER -#usr/lib/locale/uk_UA/LC_TELEPHONE -#usr/lib/locale/uk_UA/LC_TIME -#usr/lib/locale/ur_PK -#usr/lib/locale/ur_PK/LC_ADDRESS -#usr/lib/locale/ur_PK/LC_COLLATE -#usr/lib/locale/ur_PK/LC_CTYPE -#usr/lib/locale/ur_PK/LC_IDENTIFICATION -#usr/lib/locale/ur_PK/LC_MEASUREMENT -#usr/lib/locale/ur_PK/LC_MESSAGES -#usr/lib/locale/ur_PK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ur_PK/LC_MONETARY -#usr/lib/locale/ur_PK/LC_NAME -#usr/lib/locale/ur_PK/LC_NUMERIC -#usr/lib/locale/ur_PK/LC_PAPER -#usr/lib/locale/ur_PK/LC_TELEPHONE -#usr/lib/locale/ur_PK/LC_TIME -#usr/lib/locale/uz_UZ -#usr/lib/locale/uz_UZ/LC_ADDRESS -#usr/lib/locale/uz_UZ/LC_COLLATE -#usr/lib/locale/uz_UZ/LC_CTYPE -#usr/lib/locale/uz_UZ/LC_IDENTIFICATION -#usr/lib/locale/uz_UZ/LC_MEASUREMENT -#usr/lib/locale/uz_UZ/LC_MESSAGES -#usr/lib/locale/uz_UZ/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uz_UZ/LC_MONETARY -#usr/lib/locale/uz_UZ/LC_NAME -#usr/lib/locale/uz_UZ/LC_NUMERIC -#usr/lib/locale/uz_UZ/LC_PAPER -#usr/lib/locale/uz_UZ/LC_TELEPHONE -#usr/lib/locale/uz_UZ/LC_TIME -#usr/lib/locale/uz_UZ@cyrillic -#usr/lib/locale/uz_UZ@cyrillic/LC_ADDRESS -#usr/lib/locale/uz_UZ@cyrillic/LC_COLLATE -#usr/lib/locale/uz_UZ@cyrillic/LC_CTYPE -#usr/lib/locale/uz_UZ@cyrillic/LC_IDENTIFICATION -#usr/lib/locale/uz_UZ@cyrillic/LC_MEASUREMENT -#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES -#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/uz_UZ@cyrillic/LC_MONETARY -#usr/lib/locale/uz_UZ@cyrillic/LC_NAME -#usr/lib/locale/uz_UZ@cyrillic/LC_NUMERIC -#usr/lib/locale/uz_UZ@cyrillic/LC_PAPER -#usr/lib/locale/uz_UZ@cyrillic/LC_TELEPHONE -#usr/lib/locale/uz_UZ@cyrillic/LC_TIME -#usr/lib/locale/ve_ZA -#usr/lib/locale/ve_ZA/LC_ADDRESS -#usr/lib/locale/ve_ZA/LC_COLLATE -#usr/lib/locale/ve_ZA/LC_CTYPE -#usr/lib/locale/ve_ZA/LC_IDENTIFICATION -#usr/lib/locale/ve_ZA/LC_MEASUREMENT -#usr/lib/locale/ve_ZA/LC_MESSAGES -#usr/lib/locale/ve_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/ve_ZA/LC_MONETARY -#usr/lib/locale/ve_ZA/LC_NAME -#usr/lib/locale/ve_ZA/LC_NUMERIC -#usr/lib/locale/ve_ZA/LC_PAPER -#usr/lib/locale/ve_ZA/LC_TELEPHONE -#usr/lib/locale/ve_ZA/LC_TIME -#usr/lib/locale/vi_VN -#usr/lib/locale/vi_VN.tcvn -#usr/lib/locale/vi_VN.tcvn/LC_ADDRESS -#usr/lib/locale/vi_VN.tcvn/LC_COLLATE -#usr/lib/locale/vi_VN.tcvn/LC_CTYPE -#usr/lib/locale/vi_VN.tcvn/LC_IDENTIFICATION -#usr/lib/locale/vi_VN.tcvn/LC_MEASUREMENT -#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES -#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/vi_VN.tcvn/LC_MONETARY -#usr/lib/locale/vi_VN.tcvn/LC_NAME -#usr/lib/locale/vi_VN.tcvn/LC_NUMERIC -#usr/lib/locale/vi_VN.tcvn/LC_PAPER -#usr/lib/locale/vi_VN.tcvn/LC_TELEPHONE -#usr/lib/locale/vi_VN.tcvn/LC_TIME -#usr/lib/locale/vi_VN/LC_ADDRESS -#usr/lib/locale/vi_VN/LC_COLLATE -#usr/lib/locale/vi_VN/LC_CTYPE -#usr/lib/locale/vi_VN/LC_IDENTIFICATION -#usr/lib/locale/vi_VN/LC_MEASUREMENT -#usr/lib/locale/vi_VN/LC_MESSAGES -#usr/lib/locale/vi_VN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/vi_VN/LC_MONETARY -#usr/lib/locale/vi_VN/LC_NAME -#usr/lib/locale/vi_VN/LC_NUMERIC -#usr/lib/locale/vi_VN/LC_PAPER -#usr/lib/locale/vi_VN/LC_TELEPHONE -#usr/lib/locale/vi_VN/LC_TIME -#usr/lib/locale/wa_BE -#usr/lib/locale/wa_BE.utf8 -#usr/lib/locale/wa_BE.utf8/LC_ADDRESS -#usr/lib/locale/wa_BE.utf8/LC_COLLATE -#usr/lib/locale/wa_BE.utf8/LC_CTYPE -#usr/lib/locale/wa_BE.utf8/LC_IDENTIFICATION -#usr/lib/locale/wa_BE.utf8/LC_MEASUREMENT -#usr/lib/locale/wa_BE.utf8/LC_MESSAGES -#usr/lib/locale/wa_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE.utf8/LC_MONETARY -#usr/lib/locale/wa_BE.utf8/LC_NAME -#usr/lib/locale/wa_BE.utf8/LC_NUMERIC -#usr/lib/locale/wa_BE.utf8/LC_PAPER -#usr/lib/locale/wa_BE.utf8/LC_TELEPHONE -#usr/lib/locale/wa_BE.utf8/LC_TIME -#usr/lib/locale/wa_BE/LC_ADDRESS -#usr/lib/locale/wa_BE/LC_COLLATE -#usr/lib/locale/wa_BE/LC_CTYPE -#usr/lib/locale/wa_BE/LC_IDENTIFICATION -#usr/lib/locale/wa_BE/LC_MEASUREMENT -#usr/lib/locale/wa_BE/LC_MESSAGES -#usr/lib/locale/wa_BE/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE/LC_MONETARY -#usr/lib/locale/wa_BE/LC_NAME -#usr/lib/locale/wa_BE/LC_NUMERIC -#usr/lib/locale/wa_BE/LC_PAPER -#usr/lib/locale/wa_BE/LC_TELEPHONE -#usr/lib/locale/wa_BE/LC_TIME -#usr/lib/locale/wa_BE@euro -#usr/lib/locale/wa_BE@euro/LC_ADDRESS -#usr/lib/locale/wa_BE@euro/LC_COLLATE -#usr/lib/locale/wa_BE@euro/LC_CTYPE -#usr/lib/locale/wa_BE@euro/LC_IDENTIFICATION -#usr/lib/locale/wa_BE@euro/LC_MEASUREMENT -#usr/lib/locale/wa_BE@euro/LC_MESSAGES -#usr/lib/locale/wa_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wa_BE@euro/LC_MONETARY -#usr/lib/locale/wa_BE@euro/LC_NAME -#usr/lib/locale/wa_BE@euro/LC_NUMERIC -#usr/lib/locale/wa_BE@euro/LC_PAPER -#usr/lib/locale/wa_BE@euro/LC_TELEPHONE -#usr/lib/locale/wa_BE@euro/LC_TIME -#usr/lib/locale/wo_SN -#usr/lib/locale/wo_SN/LC_ADDRESS -#usr/lib/locale/wo_SN/LC_COLLATE -#usr/lib/locale/wo_SN/LC_CTYPE -#usr/lib/locale/wo_SN/LC_IDENTIFICATION -#usr/lib/locale/wo_SN/LC_MEASUREMENT -#usr/lib/locale/wo_SN/LC_MESSAGES -#usr/lib/locale/wo_SN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/wo_SN/LC_MONETARY -#usr/lib/locale/wo_SN/LC_NAME -#usr/lib/locale/wo_SN/LC_NUMERIC -#usr/lib/locale/wo_SN/LC_PAPER -#usr/lib/locale/wo_SN/LC_TELEPHONE -#usr/lib/locale/wo_SN/LC_TIME -#usr/lib/locale/xh_ZA -#usr/lib/locale/xh_ZA.utf8 -#usr/lib/locale/xh_ZA.utf8/LC_ADDRESS -#usr/lib/locale/xh_ZA.utf8/LC_COLLATE -#usr/lib/locale/xh_ZA.utf8/LC_CTYPE -#usr/lib/locale/xh_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/xh_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES -#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/xh_ZA.utf8/LC_MONETARY -#usr/lib/locale/xh_ZA.utf8/LC_NAME -#usr/lib/locale/xh_ZA.utf8/LC_NUMERIC -#usr/lib/locale/xh_ZA.utf8/LC_PAPER -#usr/lib/locale/xh_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/xh_ZA.utf8/LC_TIME -#usr/lib/locale/xh_ZA/LC_ADDRESS -#usr/lib/locale/xh_ZA/LC_COLLATE -#usr/lib/locale/xh_ZA/LC_CTYPE -#usr/lib/locale/xh_ZA/LC_IDENTIFICATION -#usr/lib/locale/xh_ZA/LC_MEASUREMENT -#usr/lib/locale/xh_ZA/LC_MESSAGES -#usr/lib/locale/xh_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/xh_ZA/LC_MONETARY -#usr/lib/locale/xh_ZA/LC_NAME -#usr/lib/locale/xh_ZA/LC_NUMERIC -#usr/lib/locale/xh_ZA/LC_PAPER -#usr/lib/locale/xh_ZA/LC_TELEPHONE -#usr/lib/locale/xh_ZA/LC_TIME -#usr/lib/locale/yi_US -#usr/lib/locale/yi_US.utf8 -#usr/lib/locale/yi_US.utf8/LC_ADDRESS -#usr/lib/locale/yi_US.utf8/LC_COLLATE -#usr/lib/locale/yi_US.utf8/LC_CTYPE -#usr/lib/locale/yi_US.utf8/LC_IDENTIFICATION -#usr/lib/locale/yi_US.utf8/LC_MEASUREMENT -#usr/lib/locale/yi_US.utf8/LC_MESSAGES -#usr/lib/locale/yi_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yi_US.utf8/LC_MONETARY -#usr/lib/locale/yi_US.utf8/LC_NAME -#usr/lib/locale/yi_US.utf8/LC_NUMERIC -#usr/lib/locale/yi_US.utf8/LC_PAPER -#usr/lib/locale/yi_US.utf8/LC_TELEPHONE -#usr/lib/locale/yi_US.utf8/LC_TIME -#usr/lib/locale/yi_US/LC_ADDRESS -#usr/lib/locale/yi_US/LC_COLLATE -#usr/lib/locale/yi_US/LC_CTYPE -#usr/lib/locale/yi_US/LC_IDENTIFICATION -#usr/lib/locale/yi_US/LC_MEASUREMENT -#usr/lib/locale/yi_US/LC_MESSAGES -#usr/lib/locale/yi_US/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yi_US/LC_MONETARY -#usr/lib/locale/yi_US/LC_NAME -#usr/lib/locale/yi_US/LC_NUMERIC -#usr/lib/locale/yi_US/LC_PAPER -#usr/lib/locale/yi_US/LC_TELEPHONE -#usr/lib/locale/yi_US/LC_TIME -#usr/lib/locale/yo_NG -#usr/lib/locale/yo_NG/LC_ADDRESS -#usr/lib/locale/yo_NG/LC_COLLATE -#usr/lib/locale/yo_NG/LC_CTYPE -#usr/lib/locale/yo_NG/LC_IDENTIFICATION -#usr/lib/locale/yo_NG/LC_MEASUREMENT -#usr/lib/locale/yo_NG/LC_MESSAGES -#usr/lib/locale/yo_NG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/yo_NG/LC_MONETARY -#usr/lib/locale/yo_NG/LC_NAME -#usr/lib/locale/yo_NG/LC_NUMERIC -#usr/lib/locale/yo_NG/LC_PAPER -#usr/lib/locale/yo_NG/LC_TELEPHONE -#usr/lib/locale/yo_NG/LC_TIME -#usr/lib/locale/zh_CN -#usr/lib/locale/zh_CN.gb18030 -#usr/lib/locale/zh_CN.gb18030/LC_ADDRESS -#usr/lib/locale/zh_CN.gb18030/LC_COLLATE -#usr/lib/locale/zh_CN.gb18030/LC_CTYPE -#usr/lib/locale/zh_CN.gb18030/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.gb18030/LC_MEASUREMENT -#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES -#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.gb18030/LC_MONETARY -#usr/lib/locale/zh_CN.gb18030/LC_NAME -#usr/lib/locale/zh_CN.gb18030/LC_NUMERIC -#usr/lib/locale/zh_CN.gb18030/LC_PAPER -#usr/lib/locale/zh_CN.gb18030/LC_TELEPHONE -#usr/lib/locale/zh_CN.gb18030/LC_TIME -#usr/lib/locale/zh_CN.gbk -#usr/lib/locale/zh_CN.gbk/LC_ADDRESS -#usr/lib/locale/zh_CN.gbk/LC_COLLATE -#usr/lib/locale/zh_CN.gbk/LC_CTYPE -#usr/lib/locale/zh_CN.gbk/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.gbk/LC_MEASUREMENT -#usr/lib/locale/zh_CN.gbk/LC_MESSAGES -#usr/lib/locale/zh_CN.gbk/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.gbk/LC_MONETARY -#usr/lib/locale/zh_CN.gbk/LC_NAME -#usr/lib/locale/zh_CN.gbk/LC_NUMERIC -#usr/lib/locale/zh_CN.gbk/LC_PAPER -#usr/lib/locale/zh_CN.gbk/LC_TELEPHONE -#usr/lib/locale/zh_CN.gbk/LC_TIME -#usr/lib/locale/zh_CN.utf8 -#usr/lib/locale/zh_CN.utf8/LC_ADDRESS -#usr/lib/locale/zh_CN.utf8/LC_COLLATE -#usr/lib/locale/zh_CN.utf8/LC_CTYPE -#usr/lib/locale/zh_CN.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_CN.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_CN.utf8/LC_MESSAGES -#usr/lib/locale/zh_CN.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN.utf8/LC_MONETARY -#usr/lib/locale/zh_CN.utf8/LC_NAME -#usr/lib/locale/zh_CN.utf8/LC_NUMERIC -#usr/lib/locale/zh_CN.utf8/LC_PAPER -#usr/lib/locale/zh_CN.utf8/LC_TELEPHONE -#usr/lib/locale/zh_CN.utf8/LC_TIME -#usr/lib/locale/zh_CN/LC_ADDRESS -#usr/lib/locale/zh_CN/LC_COLLATE -#usr/lib/locale/zh_CN/LC_CTYPE -#usr/lib/locale/zh_CN/LC_IDENTIFICATION -#usr/lib/locale/zh_CN/LC_MEASUREMENT -#usr/lib/locale/zh_CN/LC_MESSAGES -#usr/lib/locale/zh_CN/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_CN/LC_MONETARY -#usr/lib/locale/zh_CN/LC_NAME -#usr/lib/locale/zh_CN/LC_NUMERIC -#usr/lib/locale/zh_CN/LC_PAPER -#usr/lib/locale/zh_CN/LC_TELEPHONE -#usr/lib/locale/zh_CN/LC_TIME -#usr/lib/locale/zh_HK -#usr/lib/locale/zh_HK.utf8 -#usr/lib/locale/zh_HK.utf8/LC_ADDRESS -#usr/lib/locale/zh_HK.utf8/LC_COLLATE -#usr/lib/locale/zh_HK.utf8/LC_CTYPE -#usr/lib/locale/zh_HK.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_HK.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_HK.utf8/LC_MESSAGES -#usr/lib/locale/zh_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_HK.utf8/LC_MONETARY -#usr/lib/locale/zh_HK.utf8/LC_NAME -#usr/lib/locale/zh_HK.utf8/LC_NUMERIC -#usr/lib/locale/zh_HK.utf8/LC_PAPER -#usr/lib/locale/zh_HK.utf8/LC_TELEPHONE -#usr/lib/locale/zh_HK.utf8/LC_TIME -#usr/lib/locale/zh_HK/LC_ADDRESS -#usr/lib/locale/zh_HK/LC_COLLATE -#usr/lib/locale/zh_HK/LC_CTYPE -#usr/lib/locale/zh_HK/LC_IDENTIFICATION -#usr/lib/locale/zh_HK/LC_MEASUREMENT -#usr/lib/locale/zh_HK/LC_MESSAGES -#usr/lib/locale/zh_HK/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_HK/LC_MONETARY -#usr/lib/locale/zh_HK/LC_NAME -#usr/lib/locale/zh_HK/LC_NUMERIC -#usr/lib/locale/zh_HK/LC_PAPER -#usr/lib/locale/zh_HK/LC_TELEPHONE -#usr/lib/locale/zh_HK/LC_TIME -#usr/lib/locale/zh_SG -#usr/lib/locale/zh_SG.gbk -#usr/lib/locale/zh_SG.gbk/LC_ADDRESS -#usr/lib/locale/zh_SG.gbk/LC_COLLATE -#usr/lib/locale/zh_SG.gbk/LC_CTYPE -#usr/lib/locale/zh_SG.gbk/LC_IDENTIFICATION -#usr/lib/locale/zh_SG.gbk/LC_MEASUREMENT -#usr/lib/locale/zh_SG.gbk/LC_MESSAGES -#usr/lib/locale/zh_SG.gbk/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG.gbk/LC_MONETARY -#usr/lib/locale/zh_SG.gbk/LC_NAME -#usr/lib/locale/zh_SG.gbk/LC_NUMERIC -#usr/lib/locale/zh_SG.gbk/LC_PAPER -#usr/lib/locale/zh_SG.gbk/LC_TELEPHONE -#usr/lib/locale/zh_SG.gbk/LC_TIME -#usr/lib/locale/zh_SG.utf8 -#usr/lib/locale/zh_SG.utf8/LC_ADDRESS -#usr/lib/locale/zh_SG.utf8/LC_COLLATE -#usr/lib/locale/zh_SG.utf8/LC_CTYPE -#usr/lib/locale/zh_SG.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_SG.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_SG.utf8/LC_MESSAGES -#usr/lib/locale/zh_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG.utf8/LC_MONETARY -#usr/lib/locale/zh_SG.utf8/LC_NAME -#usr/lib/locale/zh_SG.utf8/LC_NUMERIC -#usr/lib/locale/zh_SG.utf8/LC_PAPER -#usr/lib/locale/zh_SG.utf8/LC_TELEPHONE -#usr/lib/locale/zh_SG.utf8/LC_TIME -#usr/lib/locale/zh_SG/LC_ADDRESS -#usr/lib/locale/zh_SG/LC_COLLATE -#usr/lib/locale/zh_SG/LC_CTYPE -#usr/lib/locale/zh_SG/LC_IDENTIFICATION -#usr/lib/locale/zh_SG/LC_MEASUREMENT -#usr/lib/locale/zh_SG/LC_MESSAGES -#usr/lib/locale/zh_SG/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_SG/LC_MONETARY -#usr/lib/locale/zh_SG/LC_NAME -#usr/lib/locale/zh_SG/LC_NUMERIC -#usr/lib/locale/zh_SG/LC_PAPER -#usr/lib/locale/zh_SG/LC_TELEPHONE -#usr/lib/locale/zh_SG/LC_TIME -#usr/lib/locale/zh_TW -#usr/lib/locale/zh_TW.euctw -#usr/lib/locale/zh_TW.euctw/LC_ADDRESS -#usr/lib/locale/zh_TW.euctw/LC_COLLATE -#usr/lib/locale/zh_TW.euctw/LC_CTYPE -#usr/lib/locale/zh_TW.euctw/LC_IDENTIFICATION -#usr/lib/locale/zh_TW.euctw/LC_MEASUREMENT -#usr/lib/locale/zh_TW.euctw/LC_MESSAGES -#usr/lib/locale/zh_TW.euctw/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW.euctw/LC_MONETARY -#usr/lib/locale/zh_TW.euctw/LC_NAME -#usr/lib/locale/zh_TW.euctw/LC_NUMERIC -#usr/lib/locale/zh_TW.euctw/LC_PAPER -#usr/lib/locale/zh_TW.euctw/LC_TELEPHONE -#usr/lib/locale/zh_TW.euctw/LC_TIME -#usr/lib/locale/zh_TW.utf8 -#usr/lib/locale/zh_TW.utf8/LC_ADDRESS -#usr/lib/locale/zh_TW.utf8/LC_COLLATE -#usr/lib/locale/zh_TW.utf8/LC_CTYPE -#usr/lib/locale/zh_TW.utf8/LC_IDENTIFICATION -#usr/lib/locale/zh_TW.utf8/LC_MEASUREMENT -#usr/lib/locale/zh_TW.utf8/LC_MESSAGES -#usr/lib/locale/zh_TW.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW.utf8/LC_MONETARY -#usr/lib/locale/zh_TW.utf8/LC_NAME -#usr/lib/locale/zh_TW.utf8/LC_NUMERIC -#usr/lib/locale/zh_TW.utf8/LC_PAPER -#usr/lib/locale/zh_TW.utf8/LC_TELEPHONE -#usr/lib/locale/zh_TW.utf8/LC_TIME -#usr/lib/locale/zh_TW/LC_ADDRESS -#usr/lib/locale/zh_TW/LC_COLLATE -#usr/lib/locale/zh_TW/LC_CTYPE -#usr/lib/locale/zh_TW/LC_IDENTIFICATION -#usr/lib/locale/zh_TW/LC_MEASUREMENT -#usr/lib/locale/zh_TW/LC_MESSAGES -#usr/lib/locale/zh_TW/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zh_TW/LC_MONETARY -#usr/lib/locale/zh_TW/LC_NAME -#usr/lib/locale/zh_TW/LC_NUMERIC -#usr/lib/locale/zh_TW/LC_PAPER -#usr/lib/locale/zh_TW/LC_TELEPHONE -#usr/lib/locale/zh_TW/LC_TIME -#usr/lib/locale/zu_ZA -#usr/lib/locale/zu_ZA.utf8 -#usr/lib/locale/zu_ZA.utf8/LC_ADDRESS -#usr/lib/locale/zu_ZA.utf8/LC_COLLATE -#usr/lib/locale/zu_ZA.utf8/LC_CTYPE -#usr/lib/locale/zu_ZA.utf8/LC_IDENTIFICATION -#usr/lib/locale/zu_ZA.utf8/LC_MEASUREMENT -#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES -#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zu_ZA.utf8/LC_MONETARY -#usr/lib/locale/zu_ZA.utf8/LC_NAME -#usr/lib/locale/zu_ZA.utf8/LC_NUMERIC -#usr/lib/locale/zu_ZA.utf8/LC_PAPER -#usr/lib/locale/zu_ZA.utf8/LC_TELEPHONE -#usr/lib/locale/zu_ZA.utf8/LC_TIME -#usr/lib/locale/zu_ZA/LC_ADDRESS -#usr/lib/locale/zu_ZA/LC_COLLATE -#usr/lib/locale/zu_ZA/LC_CTYPE -#usr/lib/locale/zu_ZA/LC_IDENTIFICATION -#usr/lib/locale/zu_ZA/LC_MEASUREMENT -#usr/lib/locale/zu_ZA/LC_MESSAGES -#usr/lib/locale/zu_ZA/LC_MESSAGES/SYS_LC_MESSAGES -#usr/lib/locale/zu_ZA/LC_MONETARY -#usr/lib/locale/zu_ZA/LC_NAME -#usr/lib/locale/zu_ZA/LC_NUMERIC -#usr/lib/locale/zu_ZA/LC_PAPER -#usr/lib/locale/zu_ZA/LC_TELEPHONE -#usr/lib/locale/zu_ZA/LC_TIME +usr/lib/locale/locale-archive #usr/sbin/iconvconfig #usr/sbin/nscd -#usr/sbin/rpcinfo #usr/sbin/zdump #usr/sbin/zic #usr/share/i18n @@ -6741,6 +864,11 @@ usr/lib/locale #usr/share/i18n/charmaps/CP1257.gz #usr/share/i18n/charmaps/CP1258.gz #usr/share/i18n/charmaps/CP737.gz +#usr/share/i18n/charmaps/CP770.gz +#usr/share/i18n/charmaps/CP771.gz +#usr/share/i18n/charmaps/CP772.gz +#usr/share/i18n/charmaps/CP773.gz +#usr/share/i18n/charmaps/CP774.gz #usr/share/i18n/charmaps/CP775.gz #usr/share/i18n/charmaps/CP949.gz #usr/share/i18n/charmaps/CSA_Z243.4-1985-1.gz @@ -6954,8 +1082,10 @@ usr/lib/locale #usr/share/i18n/locales/aa_ER@saaho #usr/share/i18n/locales/aa_ET #usr/share/i18n/locales/af_ZA +#usr/share/i18n/locales/ak_GH #usr/share/i18n/locales/am_ET #usr/share/i18n/locales/an_ES +#usr/share/i18n/locales/anp_IN #usr/share/i18n/locales/ar_AE #usr/share/i18n/locales/ar_BH #usr/share/i18n/locales/ar_DZ @@ -6971,23 +1101,29 @@ usr/lib/locale #usr/share/i18n/locales/ar_QA #usr/share/i18n/locales/ar_SA #usr/share/i18n/locales/ar_SD +#usr/share/i18n/locales/ar_SS #usr/share/i18n/locales/ar_SY #usr/share/i18n/locales/ar_TN #usr/share/i18n/locales/ar_YE #usr/share/i18n/locales/as_IN #usr/share/i18n/locales/ast_ES +#usr/share/i18n/locales/ayc_PE #usr/share/i18n/locales/az_AZ #usr/share/i18n/locales/be_BY #usr/share/i18n/locales/be_BY@latin +#usr/share/i18n/locales/bem_ZM #usr/share/i18n/locales/ber_DZ #usr/share/i18n/locales/ber_MA #usr/share/i18n/locales/bg_BG +#usr/share/i18n/locales/bhb_IN +#usr/share/i18n/locales/bho_IN #usr/share/i18n/locales/bn_BD #usr/share/i18n/locales/bn_IN #usr/share/i18n/locales/bo_CN #usr/share/i18n/locales/bo_IN #usr/share/i18n/locales/br_FR #usr/share/i18n/locales/br_FR@euro +#usr/share/i18n/locales/brx_IN #usr/share/i18n/locales/bs_BA #usr/share/i18n/locales/byn_ER #usr/share/i18n/locales/ca_AD @@ -6995,6 +1131,9 @@ usr/lib/locale #usr/share/i18n/locales/ca_ES@euro #usr/share/i18n/locales/ca_FR #usr/share/i18n/locales/ca_IT +#usr/share/i18n/locales/ce_RU +#usr/share/i18n/locales/chr_US +#usr/share/i18n/locales/cmn_TW #usr/share/i18n/locales/crh_UA #usr/share/i18n/locales/cs_CZ #usr/share/i18n/locales/csb_PL @@ -7008,8 +1147,11 @@ usr/lib/locale #usr/share/i18n/locales/de_CH #usr/share/i18n/locales/de_DE #usr/share/i18n/locales/de_DE@euro +#usr/share/i18n/locales/de_IT +#usr/share/i18n/locales/de_LI #usr/share/i18n/locales/de_LU #usr/share/i18n/locales/de_LU@euro +#usr/share/i18n/locales/doi_IN #usr/share/i18n/locales/dv_MV #usr/share/i18n/locales/dz_BT #usr/share/i18n/locales/el_CY @@ -7024,6 +1166,7 @@ usr/lib/locale #usr/share/i18n/locales/en_HK #usr/share/i18n/locales/en_IE #usr/share/i18n/locales/en_IE@euro +#usr/share/i18n/locales/en_IL #usr/share/i18n/locales/en_IN #usr/share/i18n/locales/en_NG #usr/share/i18n/locales/en_NZ @@ -7031,12 +1174,15 @@ usr/lib/locale #usr/share/i18n/locales/en_SG #usr/share/i18n/locales/en_US #usr/share/i18n/locales/en_ZA +#usr/share/i18n/locales/en_ZM #usr/share/i18n/locales/en_ZW +#usr/share/i18n/locales/eo #usr/share/i18n/locales/es_AR #usr/share/i18n/locales/es_BO #usr/share/i18n/locales/es_CL #usr/share/i18n/locales/es_CO #usr/share/i18n/locales/es_CR +#usr/share/i18n/locales/es_CU #usr/share/i18n/locales/es_DO #usr/share/i18n/locales/es_EC #usr/share/i18n/locales/es_ES @@ -7057,8 +1203,8 @@ usr/lib/locale #usr/share/i18n/locales/eu_ES #usr/share/i18n/locales/eu_ES@euro #usr/share/i18n/locales/fa_IR +#usr/share/i18n/locales/ff_SN #usr/share/i18n/locales/fi_FI -#usr/share/i18n/locales/fi_FI.orig #usr/share/i18n/locales/fi_FI@euro #usr/share/i18n/locales/fil_PH #usr/share/i18n/locales/fo_FO @@ -7085,6 +1231,7 @@ usr/lib/locale #usr/share/i18n/locales/gu_IN #usr/share/i18n/locales/gv_GB #usr/share/i18n/locales/ha_NG +#usr/share/i18n/locales/hak_TW #usr/share/i18n/locales/he_IL #usr/share/i18n/locales/hi_IN #usr/share/i18n/locales/hne_IN @@ -7094,6 +1241,7 @@ usr/lib/locale #usr/share/i18n/locales/hu_HU #usr/share/i18n/locales/hy_AM #usr/share/i18n/locales/i18n +#usr/share/i18n/locales/ia_FR #usr/share/i18n/locales/id_ID #usr/share/i18n/locales/ig_NG #usr/share/i18n/locales/ik_CA @@ -7105,7 +1253,6 @@ usr/lib/locale #usr/share/i18n/locales/it_IT #usr/share/i18n/locales/it_IT@euro #usr/share/i18n/locales/iu_CA -#usr/share/i18n/locales/iw_IL #usr/share/i18n/locales/ja_JP #usr/share/i18n/locales/ka_GE #usr/share/i18n/locales/kk_KZ @@ -7119,57 +1266,73 @@ usr/lib/locale #usr/share/i18n/locales/ku_TR #usr/share/i18n/locales/kw_GB #usr/share/i18n/locales/ky_KG +#usr/share/i18n/locales/lb_LU #usr/share/i18n/locales/lg_UG #usr/share/i18n/locales/li_BE #usr/share/i18n/locales/li_NL +#usr/share/i18n/locales/lij_IT +#usr/share/i18n/locales/ln_CD #usr/share/i18n/locales/lo_LA #usr/share/i18n/locales/lt_LT #usr/share/i18n/locales/lv_LV +#usr/share/i18n/locales/lzh_TW +#usr/share/i18n/locales/mag_IN #usr/share/i18n/locales/mai_IN #usr/share/i18n/locales/mg_MG +#usr/share/i18n/locales/mhr_RU #usr/share/i18n/locales/mi_NZ #usr/share/i18n/locales/mk_MK #usr/share/i18n/locales/ml_IN #usr/share/i18n/locales/mn_MN +#usr/share/i18n/locales/mni_IN #usr/share/i18n/locales/mr_IN #usr/share/i18n/locales/ms_MY #usr/share/i18n/locales/mt_MT #usr/share/i18n/locales/my_MM +#usr/share/i18n/locales/nan_TW #usr/share/i18n/locales/nan_TW@latin #usr/share/i18n/locales/nb_NO #usr/share/i18n/locales/nds_DE #usr/share/i18n/locales/nds_NL #usr/share/i18n/locales/ne_NP +#usr/share/i18n/locales/nhn_MX +#usr/share/i18n/locales/niu_NU +#usr/share/i18n/locales/niu_NZ #usr/share/i18n/locales/nl_AW #usr/share/i18n/locales/nl_BE #usr/share/i18n/locales/nl_BE@euro #usr/share/i18n/locales/nl_NL #usr/share/i18n/locales/nl_NL@euro #usr/share/i18n/locales/nn_NO -#usr/share/i18n/locales/no_NO #usr/share/i18n/locales/nr_ZA #usr/share/i18n/locales/nso_ZA #usr/share/i18n/locales/oc_FR #usr/share/i18n/locales/om_ET #usr/share/i18n/locales/om_KE #usr/share/i18n/locales/or_IN +#usr/share/i18n/locales/os_RU #usr/share/i18n/locales/pa_IN #usr/share/i18n/locales/pa_PK -#usr/share/i18n/locales/pap_AN +#usr/share/i18n/locales/pap_AW +#usr/share/i18n/locales/pap_CW #usr/share/i18n/locales/pl_PL #usr/share/i18n/locales/ps_AF #usr/share/i18n/locales/pt_BR #usr/share/i18n/locales/pt_PT #usr/share/i18n/locales/pt_PT@euro +#usr/share/i18n/locales/quz_PE +#usr/share/i18n/locales/raj_IN #usr/share/i18n/locales/ro_RO #usr/share/i18n/locales/ru_RU #usr/share/i18n/locales/ru_UA #usr/share/i18n/locales/rw_RW #usr/share/i18n/locales/sa_IN +#usr/share/i18n/locales/sat_IN #usr/share/i18n/locales/sc_IT #usr/share/i18n/locales/sd_IN #usr/share/i18n/locales/sd_IN@devanagari #usr/share/i18n/locales/se_NO +#usr/share/i18n/locales/sgs_LT #usr/share/i18n/locales/shs_CA #usr/share/i18n/locales/si_LK #usr/share/i18n/locales/sid_ET @@ -7189,10 +1352,16 @@ usr/lib/locale #usr/share/i18n/locales/sv_FI #usr/share/i18n/locales/sv_FI@euro #usr/share/i18n/locales/sv_SE +#usr/share/i18n/locales/sw_KE +#usr/share/i18n/locales/sw_TZ +#usr/share/i18n/locales/szl_PL #usr/share/i18n/locales/ta_IN +#usr/share/i18n/locales/ta_LK +#usr/share/i18n/locales/tcy_IN #usr/share/i18n/locales/te_IN #usr/share/i18n/locales/tg_TJ #usr/share/i18n/locales/th_TH +#usr/share/i18n/locales/the_NP #usr/share/i18n/locales/ti_ER #usr/share/i18n/locales/ti_ET #usr/share/i18n/locales/tig_ER @@ -7218,6 +1387,7 @@ usr/lib/locale #usr/share/i18n/locales/tt_RU@iqtelif #usr/share/i18n/locales/ug_CN #usr/share/i18n/locales/uk_UA +#usr/share/i18n/locales/unm_US #usr/share/i18n/locales/ur_IN #usr/share/i18n/locales/ur_PK #usr/share/i18n/locales/uz_UZ @@ -7226,11 +1396,13 @@ usr/lib/locale #usr/share/i18n/locales/vi_VN #usr/share/i18n/locales/wa_BE #usr/share/i18n/locales/wa_BE@euro +#usr/share/i18n/locales/wae_CH #usr/share/i18n/locales/wal_ET #usr/share/i18n/locales/wo_SN #usr/share/i18n/locales/xh_ZA #usr/share/i18n/locales/yi_US #usr/share/i18n/locales/yo_NG +#usr/share/i18n/locales/yue_HK #usr/share/i18n/locales/zh_CN #usr/share/i18n/locales/zh_HK #usr/share/i18n/locales/zh_SG @@ -7241,6 +1413,10 @@ usr/lib/locale #usr/share/info/libc.info-1 #usr/share/info/libc.info-10 #usr/share/info/libc.info-11 +#usr/share/info/libc.info-12 +#usr/share/info/libc.info-13 +#usr/share/info/libc.info-14 +#usr/share/info/libc.info-15 #usr/share/info/libc.info-2 #usr/share/info/libc.info-3 #usr/share/info/libc.info-4 @@ -7273,6 +1449,9 @@ usr/lib/locale #usr/share/locale/en_GB #usr/share/locale/en_GB/LC_MESSAGES #usr/share/locale/en_GB/LC_MESSAGES/libc.mo +#usr/share/locale/eo +#usr/share/locale/eo/LC_MESSAGES +#usr/share/locale/eo/LC_MESSAGES/libc.mo #usr/share/locale/es #usr/share/locale/es/LC_MESSAGES #usr/share/locale/es/LC_MESSAGES/libc.mo @@ -7291,6 +1470,9 @@ usr/lib/locale #usr/share/locale/hu #usr/share/locale/hu/LC_MESSAGES #usr/share/locale/hu/LC_MESSAGES/libc.mo +#usr/share/locale/ia +#usr/share/locale/ia/LC_MESSAGES +#usr/share/locale/ia/LC_MESSAGES/libc.mo #usr/share/locale/id #usr/share/locale/id/LC_MESSAGES #usr/share/locale/id/LC_MESSAGES/libc.mo @@ -7328,12 +1510,18 @@ usr/lib/locale #usr/share/locale/sk #usr/share/locale/sk/LC_MESSAGES #usr/share/locale/sk/LC_MESSAGES/libc.mo +#usr/share/locale/sl +#usr/share/locale/sl/LC_MESSAGES +#usr/share/locale/sl/LC_MESSAGES/libc.mo #usr/share/locale/sv #usr/share/locale/sv/LC_MESSAGES #usr/share/locale/sv/LC_MESSAGES/libc.mo #usr/share/locale/tr #usr/share/locale/tr/LC_MESSAGES #usr/share/locale/tr/LC_MESSAGES/libc.mo +#usr/share/locale/uk +#usr/share/locale/uk/LC_MESSAGES +#usr/share/locale/uk/LC_MESSAGES/libc.mo #usr/share/locale/vi #usr/share/locale/vi/LC_MESSAGES #usr/share/locale/vi/LC_MESSAGES/libc.mo @@ -7345,3 +1533,5 @@ usr/lib/locale #usr/share/locale/zh_TW/LC_MESSAGES/libc.mo #var/cache/ldconfig #var/cache/ldconfig/aux-cache +#var/db +#var/db/Makefile From 5eccecab97e13d5acc500c670d7619a5e71fb3b2 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Wed, 31 May 2017 19:04:44 +0200 Subject: [PATCH 439/464] freeradius: Update to 3.0.14 For details see: http://freeradius.org/press/ (Fixes CVE-2017-9148) Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- lfs/freeradius | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lfs/freeradius b/lfs/freeradius index a07a535ab..90928e91d 100644 --- a/lfs/freeradius +++ b/lfs/freeradius @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2016 IPFire Team # +# Copyright (C) 2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.0.11 +VER = 3.0.14 THISAPP = freeradius-server-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = freeradius -PAK_VER = 1 +PAK_VER = 2 DEPS = "samba" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 9428ba0d25293a2b5acd3b85f3dd46d0 +$(DL_FILE)_MD5 = 71f0593f68e6d4dd2efc47a61219643d install : $(TARGET) From 3b1c776259eba53514c6fa4c120d919b7f3f365e Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 1 Jun 2017 10:15:18 +0200 Subject: [PATCH 440/464] dhcpcd: fix delay after dhcp down. this also cause a delay with some nic's that cannot set the mtu in up state. (eg. e1000e) Signed-off-by: Arne Fitzenreiter --- src/initscripts/networking/dhcpcd.exe | 1 + 1 file changed, 1 insertion(+) diff --git a/src/initscripts/networking/dhcpcd.exe b/src/initscripts/networking/dhcpcd.exe index 6c1391d71..a2cdc66d2 100644 --- a/src/initscripts/networking/dhcpcd.exe +++ b/src/initscripts/networking/dhcpcd.exe @@ -79,6 +79,7 @@ dhcpcd_down() # Only if RED_TYPE=DHCP update /var/ipfire/red if [ "$RED_TYPE" == "DHCP" ]; then logger -p local0.info -t dhcpcd.exe[$$] "${interface} has been brought down" + rm -f /var/ipfire/red/active run_subdir ${rc_base}/init.d/networking/red.down/ fi } From 33848e1d24e1667bb75f081f61c92bef511a91af Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 1 Jun 2017 10:06:57 +0100 Subject: [PATCH 441/464] strongswan: Update to 5.5.3 Has security fixes for CVE-2017-9022 and CVE-2017-9023. Signed-off-by: Michael Tremer --- lfs/strongswan | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/strongswan b/lfs/strongswan index 32f549219..85c4f2b85 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -24,7 +24,7 @@ include Config -VER = 5.5.2 +VER = 5.5.3 THISAPP = strongswan-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 546f7e5346b754f5946ff1282702ceb9 +$(DL_FILE)_MD5 = 4afffe3c219bb2e04f09510905af836b install : $(TARGET) From fdc0944aa7125a536292e5d21973deda66ddab0f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 1 Jun 2017 10:13:31 +0100 Subject: [PATCH 442/464] make.sh: Fix MAKETUNING This variable was not passed any more after the toolchain stage which caused builds to be very slow. Signed-off-by: Michael Tremer --- tools/make-functions | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index 62f16642f..8e40163fc 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -645,7 +645,9 @@ lfsmake2() { local PS1='\u:\w$ ' enterchroot \ - bash -x -c "cd /usr/src/lfs && make -f $* LFS_BASEDIR=/usr/src install" \ + bash -x -c "cd /usr/src/lfs && make -f $* \ + MAKETUNING=${MAKETUNING} \ + LFS_BASEDIR=/usr/src install" \ >> ${LOGFILE} 2>&1 local COMPILE_SUCCESS=$? From c78e43d7826bd7a2a6a40275964db0f8b3941294 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 1 Jun 2017 19:16:00 +0200 Subject: [PATCH 443/464] ncurses: fix toolchain build Signed-off-by: Arne Fitzenreiter --- lfs/ncurses | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lfs/ncurses b/lfs/ncurses index dd6e56f1c..1d8fd40d2 100644 --- a/lfs/ncurses +++ b/lfs/ncurses @@ -96,7 +96,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ifneq "$(ROOT)" "" mkdir -pv /tools/lib/pkgconfig/ endif - cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) + cd $(DIR_APP) && CPPFLAGS=-P ./configure $(EXTRA_CONFIG) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install From ea465705ad9b11af4d08417518ee8068c73477a7 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 1 Jun 2017 19:17:50 +0200 Subject: [PATCH 444/464] make.sh: remove display of native gcc this grep fails on debian and the output is useless Signed-off-by: Arne Fitzenreiter --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 9092dd5ce..f91dec2b7 100755 --- a/make.sh +++ b/make.sh @@ -1014,7 +1014,7 @@ build) #only restore on a clean disk if [ ! -e "${BASEDIR}/build/tools/.toolchain-successful" ]; then if [ ! -n "$PACKAGE" ]; then - beautify build_stage "Full toolchain compilation - Native GCC: `gcc --version | grep GCC | awk {'print $3'}`" + beautify build_stage "Full toolchain compilation" prepareenv buildtoolchain else From 61da1e32f99f699cd7bffce23cb5031c290758da Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Thu, 1 Jun 2017 19:18:58 +0200 Subject: [PATCH 445/464] bash: fix symlink in toolchain Signed-off-by: Arne Fitzenreiter --- lfs/bash | 1 + 1 file changed, 1 insertion(+) diff --git a/lfs/bash b/lfs/bash index 6e09c5b1b..04e6c5084 100644 --- a/lfs/bash +++ b/lfs/bash @@ -101,6 +101,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ifeq "$(TOOLCHAIN)" "1" ln -svf bash /tools/bin/sh + ln -svf ../tools/bin/bash $(ROOT)/bin/sh else ln -svf bash /bin/sh endif From 63ba176be3ef1d72e92a056f64c724ca5b5c81b6 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 2 Jun 2017 08:46:16 +0100 Subject: [PATCH 446/464] u-boot: Fix compile issues with GCC 6 Signed-off-by: Michael Tremer --- lfs/u-boot | 2 + src/patches/u-boot-c99-inline-fix.patch | 20 +++++++ src/patches/u-boot-support-gcc-6.patch | 71 +++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 src/patches/u-boot-c99-inline-fix.patch create mode 100644 src/patches/u-boot-support-gcc-6.patch diff --git a/lfs/u-boot b/lfs/u-boot index 3b3fbf221..e34f76a15 100644 --- a/lfs/u-boot +++ b/lfs/u-boot @@ -76,6 +76,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/U-Boot-v2-fs-fat-read-fix-fat16-ls-read-issue.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/u-boot-support-gcc-6.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/u-boot-c99-inline-fix.patch # Pandaboard -mkdir -pv /usr/share/u-boot/pandaboard diff --git a/src/patches/u-boot-c99-inline-fix.patch b/src/patches/u-boot-c99-inline-fix.patch new file mode 100644 index 000000000..5956e55b7 --- /dev/null +++ b/src/patches/u-boot-c99-inline-fix.patch @@ -0,0 +1,20 @@ +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index 9896e54..99c6dcc 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -44,9 +44,10 @@ + */ + #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ + !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) +-# define inline inline __attribute__((always_inline)) +-# define __inline__ __inline__ __attribute__((always_inline)) +-# define __inline __inline __attribute__((always_inline)) ++/* XXX: check __GNUC_STDC_INLINE__, fix line length */ ++# define inline inline __attribute__((always_inline)) __attribute__((__gnu_inline__)) ++# define __inline__ __inline__ __attribute__((always_inline)) __attribute__((__gnu_inline__)) ++# define __inline __inline __attribute__((always_inline)) __attribute__((__gnu_inline__)) + #endif + + #define __deprecated __attribute__((deprecated)) +-- +1.8.3.2 diff --git a/src/patches/u-boot-support-gcc-6.patch b/src/patches/u-boot-support-gcc-6.patch new file mode 100644 index 000000000..f6b4c3046 --- /dev/null +++ b/src/patches/u-boot-support-gcc-6.patch @@ -0,0 +1,71 @@ +diff --git a/include/linux/compiler-gcc6.h b/include/linux/compiler-gcc6.h +new file mode 100644 +index 0000000..622117b +--- /dev/null ++++ b/include/linux/compiler-gcc6.h +@@ -0,0 +1,65 @@ ++#ifndef __LINUX_COMPILER_H ++#error "Please don't include directly, include instead." ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __must_check __attribute__((warn_unused_result)) ++#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ++ ++/* Mark functions as cold. gcc will assume any path leading to a call ++ to them will be unlikely. This means a lot of manual unlikely()s ++ are unnecessary now for any paths leading to the usual suspects ++ like BUG(), printk(), panic() etc. [but let's keep them for now for ++ older compilers] ++ ++ Early snapshots of gcc 4.3 don't support this and we can't detect this ++ in the preprocessor, but we can live with this because they're unreleased. ++ Maketime probing would be overkill here. ++ ++ gcc also has a __attribute__((__hot__)) to move hot functions into ++ a special section, but I don't see any sense in this right now in ++ the kernel context */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++ ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ From 7103cbf60b639941b0966b21846e17fe1b36d3a4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 7 Jun 2017 09:21:16 +0100 Subject: [PATCH 447/464] Big rootfile update Signed-off-by: Michael Tremer --- config/rootfiles/common/i586/python | 52 ++-- config/rootfiles/common/x86_64/python | 52 ++-- config/rootfiles/packages/cyrus-imapd | 42 +-- config/rootfiles/packages/freeradius | 27 +- config/rootfiles/packages/i586/directfb | 346 +++++++++++++++++------- 5 files changed, 354 insertions(+), 165 deletions(-) diff --git a/config/rootfiles/common/i586/python b/config/rootfiles/common/i586/python index a308ae0e4..9248201f9 100644 --- a/config/rootfiles/common/i586/python +++ b/config/rootfiles/common/i586/python @@ -1463,8 +1463,8 @@ usr/lib/python2.7/encodings/zlib_codec.pyc #usr/lib/python2.7/ensurepip/__main__.pyc #usr/lib/python2.7/ensurepip/__main__.pyo #usr/lib/python2.7/ensurepip/_bundled -#usr/lib/python2.7/ensurepip/_bundled/pip-6.1.1-py2.py3-none-any.whl -#usr/lib/python2.7/ensurepip/_bundled/setuptools-15.2-py2.py3-none-any.whl +#usr/lib/python2.7/ensurepip/_bundled/pip-9.0.1-py2.py3-none-any.whl +#usr/lib/python2.7/ensurepip/_bundled/setuptools-28.8.0-py2.py3-none-any.whl #usr/lib/python2.7/ensurepip/_uninstall.py #usr/lib/python2.7/ensurepip/_uninstall.pyc #usr/lib/python2.7/ensurepip/_uninstall.pyo @@ -1718,6 +1718,10 @@ usr/lib/python2.7/httplib.pyc #usr/lib/python2.7/idlelib/dynOptionMenuWidget.pyc #usr/lib/python2.7/idlelib/dynOptionMenuWidget.pyo #usr/lib/python2.7/idlelib/extend.txt +#usr/lib/python2.7/idlelib/help.html +#usr/lib/python2.7/idlelib/help.py +#usr/lib/python2.7/idlelib/help.pyc +#usr/lib/python2.7/idlelib/help.pyo #usr/lib/python2.7/idlelib/help.txt #usr/lib/python2.7/idlelib/idle.bat #usr/lib/python2.7/idlelib/idle.py @@ -1756,12 +1760,18 @@ usr/lib/python2.7/httplib.pyc #usr/lib/python2.7/idlelib/idle_test/test_delegator.py #usr/lib/python2.7/idlelib/idle_test/test_delegator.pyc #usr/lib/python2.7/idlelib/idle_test/test_delegator.pyo +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.py +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.pyc +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.pyo #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.py #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.pyc #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.pyo #usr/lib/python2.7/idlelib/idle_test/test_grep.py #usr/lib/python2.7/idlelib/idle_test/test_grep.pyc #usr/lib/python2.7/idlelib/idle_test/test_grep.pyo +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.py +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.pyc +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.pyo #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.py #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.pyc #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.pyo @@ -1916,7 +1926,7 @@ usr/lib/python2.7/json/tool.pyc usr/lib/python2.7/keyword.pyc #usr/lib/python2.7/keyword.pyo #usr/lib/python2.7/lib-dynload -#usr/lib/python2.7/lib-dynload/Python-2.7.10-py2.7.egg-info +#usr/lib/python2.7/lib-dynload/Python-2.7.13-py2.7.egg-info usr/lib/python2.7/lib-dynload/_bisect.so usr/lib/python2.7/lib-dynload/_bsddb.so usr/lib/python2.7/lib-dynload/_codecs_cn.so @@ -2092,9 +2102,9 @@ usr/lib/python2.7/lib-dynload/zlib.so #usr/lib/python2.7/lib-tk/turtle.pyo #usr/lib/python2.7/lib2to3 #usr/lib/python2.7/lib2to3/Grammar.txt -#usr/lib/python2.7/lib2to3/Grammar2.7.10.final.0.pickle +#usr/lib/python2.7/lib2to3/Grammar2.7.13.final.0.pickle #usr/lib/python2.7/lib2to3/PatternGrammar.txt -#usr/lib/python2.7/lib2to3/PatternGrammar2.7.10.final.0.pickle +#usr/lib/python2.7/lib2to3/PatternGrammar2.7.13.final.0.pickle #usr/lib/python2.7/lib2to3/__init__.py #usr/lib/python2.7/lib2to3/__init__.pyc #usr/lib/python2.7/lib2to3/__init__.pyo @@ -2129,9 +2139,6 @@ usr/lib/python2.7/lib-dynload/zlib.so #usr/lib/python2.7/lib2to3/fixes/fix_buffer.py #usr/lib/python2.7/lib2to3/fixes/fix_buffer.pyc #usr/lib/python2.7/lib2to3/fixes/fix_buffer.pyo -#usr/lib/python2.7/lib2to3/fixes/fix_callable.py -#usr/lib/python2.7/lib2to3/fixes/fix_callable.pyc -#usr/lib/python2.7/lib2to3/fixes/fix_callable.pyo #usr/lib/python2.7/lib2to3/fixes/fix_dict.py #usr/lib/python2.7/lib2to3/fixes/fix_dict.pyc #usr/lib/python2.7/lib2to3/fixes/fix_dict.pyo @@ -2750,6 +2757,7 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/_mock_backport.py #usr/lib/python2.7/test/_mock_backport.pyc #usr/lib/python2.7/test/_mock_backport.pyo +#usr/lib/python2.7/test/allsans.pem #usr/lib/python2.7/test/audiodata #usr/lib/python2.7/test/audiodata/pluck-pcm16.aiff #usr/lib/python2.7/test/audiodata/pluck-pcm16.au @@ -2784,16 +2792,14 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/badsyntax_future8.py #usr/lib/python2.7/test/badsyntax_future9.py #usr/lib/python2.7/test/badsyntax_nocaret.py -#usr/lib/python2.7/test/buffer_tests.py -#usr/lib/python2.7/test/buffer_tests.pyc -#usr/lib/python2.7/test/buffer_tests.pyo #usr/lib/python2.7/test/capath +#usr/lib/python2.7/test/capath/0e4015b9.0 #usr/lib/python2.7/test/capath/4e1295a3.0 #usr/lib/python2.7/test/capath/5ed36f99.0 #usr/lib/python2.7/test/capath/6e88d7b8.0 #usr/lib/python2.7/test/capath/99d0fa06.0 +#usr/lib/python2.7/test/capath/ce7b8643.0 #usr/lib/python2.7/test/cfgparser.1 -#usr/lib/python2.7/test/check_soundcard.vbs #usr/lib/python2.7/test/cjkencodings #usr/lib/python2.7/test/cjkencodings/big5-utf8.txt #usr/lib/python2.7/test/cjkencodings/big5.txt @@ -2993,7 +2999,6 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/gdb_sample.pyc #usr/lib/python2.7/test/gdb_sample.pyo #usr/lib/python2.7/test/greyrgb.uue -#usr/lib/python2.7/test/https_svn_python_org_root.pem #usr/lib/python2.7/test/ieee754.txt #usr/lib/python2.7/test/imghdrdata #usr/lib/python2.7/test/imghdrdata/python.bmp @@ -3105,6 +3110,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/ssl_servers.py #usr/lib/python2.7/test/ssl_servers.pyc #usr/lib/python2.7/test/ssl_servers.pyo +#usr/lib/python2.7/test/ssltests.py +#usr/lib/python2.7/test/ssltests.pyc +#usr/lib/python2.7/test/ssltests.pyo #usr/lib/python2.7/test/string_tests.py #usr/lib/python2.7/test/string_tests.pyc #usr/lib/python2.7/test/string_tests.pyo @@ -3319,9 +3327,6 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_codeop.py #usr/lib/python2.7/test/test_codeop.pyc #usr/lib/python2.7/test/test_codeop.pyo -#usr/lib/python2.7/test/test_coding.py -#usr/lib/python2.7/test/test_coding.pyc -#usr/lib/python2.7/test/test_coding.pyo #usr/lib/python2.7/test/test_coercion.py #usr/lib/python2.7/test/test_coercion.pyc #usr/lib/python2.7/test/test_coercion.pyo @@ -3837,6 +3842,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_optparse.py #usr/lib/python2.7/test/test_optparse.pyc #usr/lib/python2.7/test/test_optparse.pyo +#usr/lib/python2.7/test/test_ordered_dict.py +#usr/lib/python2.7/test/test_ordered_dict.pyc +#usr/lib/python2.7/test/test_ordered_dict.pyo #usr/lib/python2.7/test/test_os.py #usr/lib/python2.7/test/test_os.pyc #usr/lib/python2.7/test/test_os.pyo @@ -3855,15 +3863,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_pep247.py #usr/lib/python2.7/test/test_pep247.pyc #usr/lib/python2.7/test/test_pep247.pyo -#usr/lib/python2.7/test/test_pep263.py -#usr/lib/python2.7/test/test_pep263.pyc -#usr/lib/python2.7/test/test_pep263.pyo #usr/lib/python2.7/test/test_pep277.py #usr/lib/python2.7/test/test_pep277.pyc #usr/lib/python2.7/test/test_pep277.pyo -#usr/lib/python2.7/test/test_pep292.py -#usr/lib/python2.7/test/test_pep292.pyc -#usr/lib/python2.7/test/test_pep292.pyo #usr/lib/python2.7/test/test_pep352.py #usr/lib/python2.7/test/test_pep352.pyc #usr/lib/python2.7/test/test_pep352.pyo @@ -4047,6 +4049,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_sort.py #usr/lib/python2.7/test/test_sort.pyc #usr/lib/python2.7/test/test_sort.pyo +#usr/lib/python2.7/test/test_source_encoding.py +#usr/lib/python2.7/test/test_source_encoding.pyc +#usr/lib/python2.7/test/test_source_encoding.pyo #usr/lib/python2.7/test/test_spwd.py #usr/lib/python2.7/test/test_spwd.pyc #usr/lib/python2.7/test/test_spwd.pyo @@ -4194,6 +4199,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_tuple.py #usr/lib/python2.7/test/test_tuple.pyc #usr/lib/python2.7/test/test_tuple.pyo +#usr/lib/python2.7/test/test_turtle.py +#usr/lib/python2.7/test/test_turtle.pyc +#usr/lib/python2.7/test/test_turtle.pyo #usr/lib/python2.7/test/test_typechecks.py #usr/lib/python2.7/test/test_typechecks.pyc #usr/lib/python2.7/test/test_typechecks.pyo diff --git a/config/rootfiles/common/x86_64/python b/config/rootfiles/common/x86_64/python index 0155f244b..9824e19cb 100644 --- a/config/rootfiles/common/x86_64/python +++ b/config/rootfiles/common/x86_64/python @@ -1463,8 +1463,8 @@ usr/lib/python2.7/encodings/zlib_codec.pyc #usr/lib/python2.7/ensurepip/__main__.pyc #usr/lib/python2.7/ensurepip/__main__.pyo #usr/lib/python2.7/ensurepip/_bundled -#usr/lib/python2.7/ensurepip/_bundled/pip-6.1.1-py2.py3-none-any.whl -#usr/lib/python2.7/ensurepip/_bundled/setuptools-15.2-py2.py3-none-any.whl +#usr/lib/python2.7/ensurepip/_bundled/pip-9.0.1-py2.py3-none-any.whl +#usr/lib/python2.7/ensurepip/_bundled/setuptools-28.8.0-py2.py3-none-any.whl #usr/lib/python2.7/ensurepip/_uninstall.py #usr/lib/python2.7/ensurepip/_uninstall.pyc #usr/lib/python2.7/ensurepip/_uninstall.pyo @@ -1718,6 +1718,10 @@ usr/lib/python2.7/httplib.pyc #usr/lib/python2.7/idlelib/dynOptionMenuWidget.pyc #usr/lib/python2.7/idlelib/dynOptionMenuWidget.pyo #usr/lib/python2.7/idlelib/extend.txt +#usr/lib/python2.7/idlelib/help.html +#usr/lib/python2.7/idlelib/help.py +#usr/lib/python2.7/idlelib/help.pyc +#usr/lib/python2.7/idlelib/help.pyo #usr/lib/python2.7/idlelib/help.txt #usr/lib/python2.7/idlelib/idle.bat #usr/lib/python2.7/idlelib/idle.py @@ -1756,12 +1760,18 @@ usr/lib/python2.7/httplib.pyc #usr/lib/python2.7/idlelib/idle_test/test_delegator.py #usr/lib/python2.7/idlelib/idle_test/test_delegator.pyc #usr/lib/python2.7/idlelib/idle_test/test_delegator.pyo +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.py +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.pyc +#usr/lib/python2.7/idlelib/idle_test/test_editmenu.pyo #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.py #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.pyc #usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.pyo #usr/lib/python2.7/idlelib/idle_test/test_grep.py #usr/lib/python2.7/idlelib/idle_test/test_grep.pyc #usr/lib/python2.7/idlelib/idle_test/test_grep.pyo +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.py +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.pyc +#usr/lib/python2.7/idlelib/idle_test/test_helpabout.pyo #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.py #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.pyc #usr/lib/python2.7/idlelib/idle_test/test_hyperparser.pyo @@ -1916,7 +1926,7 @@ usr/lib/python2.7/json/tool.pyc usr/lib/python2.7/keyword.pyc #usr/lib/python2.7/keyword.pyo #usr/lib/python2.7/lib-dynload -#usr/lib/python2.7/lib-dynload/Python-2.7.10-py2.7.egg-info +#usr/lib/python2.7/lib-dynload/Python-2.7.13-py2.7.egg-info usr/lib/python2.7/lib-dynload/_bisect.so usr/lib/python2.7/lib-dynload/_bsddb.so usr/lib/python2.7/lib-dynload/_codecs_cn.so @@ -2090,9 +2100,9 @@ usr/lib/python2.7/lib-dynload/zlib.so #usr/lib/python2.7/lib-tk/turtle.pyo #usr/lib/python2.7/lib2to3 #usr/lib/python2.7/lib2to3/Grammar.txt -#usr/lib/python2.7/lib2to3/Grammar2.7.10.final.0.pickle +#usr/lib/python2.7/lib2to3/Grammar2.7.13.final.0.pickle #usr/lib/python2.7/lib2to3/PatternGrammar.txt -#usr/lib/python2.7/lib2to3/PatternGrammar2.7.10.final.0.pickle +#usr/lib/python2.7/lib2to3/PatternGrammar2.7.13.final.0.pickle #usr/lib/python2.7/lib2to3/__init__.py #usr/lib/python2.7/lib2to3/__init__.pyc #usr/lib/python2.7/lib2to3/__init__.pyo @@ -2127,9 +2137,6 @@ usr/lib/python2.7/lib-dynload/zlib.so #usr/lib/python2.7/lib2to3/fixes/fix_buffer.py #usr/lib/python2.7/lib2to3/fixes/fix_buffer.pyc #usr/lib/python2.7/lib2to3/fixes/fix_buffer.pyo -#usr/lib/python2.7/lib2to3/fixes/fix_callable.py -#usr/lib/python2.7/lib2to3/fixes/fix_callable.pyc -#usr/lib/python2.7/lib2to3/fixes/fix_callable.pyo #usr/lib/python2.7/lib2to3/fixes/fix_dict.py #usr/lib/python2.7/lib2to3/fixes/fix_dict.pyc #usr/lib/python2.7/lib2to3/fixes/fix_dict.pyo @@ -2748,6 +2755,7 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/_mock_backport.py #usr/lib/python2.7/test/_mock_backport.pyc #usr/lib/python2.7/test/_mock_backport.pyo +#usr/lib/python2.7/test/allsans.pem #usr/lib/python2.7/test/audiodata #usr/lib/python2.7/test/audiodata/pluck-pcm16.aiff #usr/lib/python2.7/test/audiodata/pluck-pcm16.au @@ -2782,16 +2790,14 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/badsyntax_future8.py #usr/lib/python2.7/test/badsyntax_future9.py #usr/lib/python2.7/test/badsyntax_nocaret.py -#usr/lib/python2.7/test/buffer_tests.py -#usr/lib/python2.7/test/buffer_tests.pyc -#usr/lib/python2.7/test/buffer_tests.pyo #usr/lib/python2.7/test/capath +#usr/lib/python2.7/test/capath/0e4015b9.0 #usr/lib/python2.7/test/capath/4e1295a3.0 #usr/lib/python2.7/test/capath/5ed36f99.0 #usr/lib/python2.7/test/capath/6e88d7b8.0 #usr/lib/python2.7/test/capath/99d0fa06.0 +#usr/lib/python2.7/test/capath/ce7b8643.0 #usr/lib/python2.7/test/cfgparser.1 -#usr/lib/python2.7/test/check_soundcard.vbs #usr/lib/python2.7/test/cjkencodings #usr/lib/python2.7/test/cjkencodings/big5-utf8.txt #usr/lib/python2.7/test/cjkencodings/big5.txt @@ -2991,7 +2997,6 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/gdb_sample.pyc #usr/lib/python2.7/test/gdb_sample.pyo #usr/lib/python2.7/test/greyrgb.uue -#usr/lib/python2.7/test/https_svn_python_org_root.pem #usr/lib/python2.7/test/ieee754.txt #usr/lib/python2.7/test/imghdrdata #usr/lib/python2.7/test/imghdrdata/python.bmp @@ -3103,6 +3108,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/ssl_servers.py #usr/lib/python2.7/test/ssl_servers.pyc #usr/lib/python2.7/test/ssl_servers.pyo +#usr/lib/python2.7/test/ssltests.py +#usr/lib/python2.7/test/ssltests.pyc +#usr/lib/python2.7/test/ssltests.pyo #usr/lib/python2.7/test/string_tests.py #usr/lib/python2.7/test/string_tests.pyc #usr/lib/python2.7/test/string_tests.pyo @@ -3317,9 +3325,6 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_codeop.py #usr/lib/python2.7/test/test_codeop.pyc #usr/lib/python2.7/test/test_codeop.pyo -#usr/lib/python2.7/test/test_coding.py -#usr/lib/python2.7/test/test_coding.pyc -#usr/lib/python2.7/test/test_coding.pyo #usr/lib/python2.7/test/test_coercion.py #usr/lib/python2.7/test/test_coercion.pyc #usr/lib/python2.7/test/test_coercion.pyo @@ -3835,6 +3840,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_optparse.py #usr/lib/python2.7/test/test_optparse.pyc #usr/lib/python2.7/test/test_optparse.pyo +#usr/lib/python2.7/test/test_ordered_dict.py +#usr/lib/python2.7/test/test_ordered_dict.pyc +#usr/lib/python2.7/test/test_ordered_dict.pyo #usr/lib/python2.7/test/test_os.py #usr/lib/python2.7/test/test_os.pyc #usr/lib/python2.7/test/test_os.pyo @@ -3853,15 +3861,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_pep247.py #usr/lib/python2.7/test/test_pep247.pyc #usr/lib/python2.7/test/test_pep247.pyo -#usr/lib/python2.7/test/test_pep263.py -#usr/lib/python2.7/test/test_pep263.pyc -#usr/lib/python2.7/test/test_pep263.pyo #usr/lib/python2.7/test/test_pep277.py #usr/lib/python2.7/test/test_pep277.pyc #usr/lib/python2.7/test/test_pep277.pyo -#usr/lib/python2.7/test/test_pep292.py -#usr/lib/python2.7/test/test_pep292.pyc -#usr/lib/python2.7/test/test_pep292.pyo #usr/lib/python2.7/test/test_pep352.py #usr/lib/python2.7/test/test_pep352.pyc #usr/lib/python2.7/test/test_pep352.pyo @@ -4045,6 +4047,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_sort.py #usr/lib/python2.7/test/test_sort.pyc #usr/lib/python2.7/test/test_sort.pyo +#usr/lib/python2.7/test/test_source_encoding.py +#usr/lib/python2.7/test/test_source_encoding.pyc +#usr/lib/python2.7/test/test_source_encoding.pyo #usr/lib/python2.7/test/test_spwd.py #usr/lib/python2.7/test/test_spwd.pyc #usr/lib/python2.7/test/test_spwd.pyo @@ -4192,6 +4197,9 @@ usr/lib/python2.7/tempfile.pyc #usr/lib/python2.7/test/test_tuple.py #usr/lib/python2.7/test/test_tuple.pyc #usr/lib/python2.7/test/test_tuple.pyo +#usr/lib/python2.7/test/test_turtle.py +#usr/lib/python2.7/test/test_turtle.pyc +#usr/lib/python2.7/test/test_turtle.pyo #usr/lib/python2.7/test/test_typechecks.py #usr/lib/python2.7/test/test_typechecks.pyc #usr/lib/python2.7/test/test_typechecks.pyo diff --git a/config/rootfiles/packages/cyrus-imapd b/config/rootfiles/packages/cyrus-imapd index 67d6f7916..a8c156e5c 100644 --- a/config/rootfiles/packages/cyrus-imapd +++ b/config/rootfiles/packages/cyrus-imapd @@ -119,27 +119,27 @@ usr/lib/libcyrus_sieve.so.0.0.0 #usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator/Daemon.pm usr/lib/perl5/site_perl/5.12.3/Cyrus/Annotator/Message.pm -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP.pm -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/IMSP.pm -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/SIEVE -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/Cyrus/SIEVE/managesieve.pm -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator/Daemon -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/Annotator/Daemon/.packlist -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/.packlist -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.bs -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/.packlist -#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.bs -usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP.pm +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/Admin.pm +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/IMSP.pm +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/IMAP/Shell.pm +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/SIEVE +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Cyrus/SIEVE/managesieve.pm +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/Annotator +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/Annotator/Daemon +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/Annotator/Daemon/.packlist +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/.packlist +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/IMAP.bs +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/.packlist +#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.bs +usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so #usr/lib/pkgconfig/libcyrus.pc #usr/lib/pkgconfig/libcyrus_min.pc #usr/lib/pkgconfig/libcyrus_sieve.pc diff --git a/config/rootfiles/packages/freeradius b/config/rootfiles/packages/freeradius index 9bcd3a4ff..7cf776064 100644 --- a/config/rootfiles/packages/freeradius +++ b/config/rootfiles/packages/freeradius @@ -46,6 +46,7 @@ etc/raddb #etc/raddb/mods-available/logintime #etc/raddb/mods-available/mac2ip #etc/raddb/mods-available/mac2vlan +#etc/raddb/mods-available/moonshot-targeted-ids #etc/raddb/mods-available/mschap #etc/raddb/mods-available/ntlm_auth #etc/raddb/mods-available/opendirectory @@ -163,12 +164,23 @@ etc/raddb #etc/raddb/mods-config/sql/main/sqlite #etc/raddb/mods-config/sql/main/sqlite/queries.conf #etc/raddb/mods-config/sql/main/sqlite/schema.sql +#etc/raddb/mods-config/sql/moonshot-targeted-ids +#etc/raddb/mods-config/sql/moonshot-targeted-ids/mysql +#etc/raddb/mods-config/sql/moonshot-targeted-ids/mysql/queries.conf +#etc/raddb/mods-config/sql/moonshot-targeted-ids/mysql/schema.sql +#etc/raddb/mods-config/sql/moonshot-targeted-ids/postgresql +#etc/raddb/mods-config/sql/moonshot-targeted-ids/postgresql/queries.conf +#etc/raddb/mods-config/sql/moonshot-targeted-ids/postgresql/schema.sql +#etc/raddb/mods-config/sql/moonshot-targeted-ids/sqlite +#etc/raddb/mods-config/sql/moonshot-targeted-ids/sqlite/queries.conf +#etc/raddb/mods-config/sql/moonshot-targeted-ids/sqlite/schema.sql #etc/raddb/mods-config/unbound #etc/raddb/mods-enabled #etc/raddb/mods-enabled/always #etc/raddb/mods-enabled/attr_filter #etc/raddb/mods-enabled/cache_eap #etc/raddb/mods-enabled/chap +#etc/raddb/mods-enabled/date #etc/raddb/mods-enabled/detail #etc/raddb/mods-enabled/detail.log #etc/raddb/mods-enabled/dhcp @@ -205,6 +217,7 @@ etc/raddb #etc/raddb/policy.d/dhcp #etc/raddb/policy.d/eap #etc/raddb/policy.d/filter +#etc/raddb/policy.d/moonshot-targeted-ids #etc/raddb/policy.d/operator-name #etc/raddb/proxy.conf #etc/raddb/radiusd.conf @@ -311,6 +324,7 @@ usr/bin/smbencrypt #usr/include/freeradius/rfc7155.h #usr/include/freeradius/rfc7268.h #usr/include/freeradius/rfc7499.h +#usr/include/freeradius/rfc7930.h #usr/include/freeradius/sha1.h #usr/include/freeradius/stats.h #usr/include/freeradius/sysutmp.h @@ -376,6 +390,9 @@ usr/lib/freeradius/rlm_dynamic_clients.so #usr/lib/freeradius/rlm_eap.a #usr/lib/freeradius/rlm_eap.la usr/lib/freeradius/rlm_eap.so +#usr/lib/freeradius/rlm_eap_fast.a +#usr/lib/freeradius/rlm_eap_fast.la +usr/lib/freeradius/rlm_eap_fast.so #usr/lib/freeradius/rlm_eap_gtc.a #usr/lib/freeradius/rlm_eap_gtc.la usr/lib/freeradius/rlm_eap_gtc.so @@ -641,7 +658,6 @@ usr/sbin/radmin #usr/share/doc/freeradius/schemas/ldap/openldap/freeradius.schema #usr/share/doc/freeradius/schemas/logstash #usr/share/doc/freeradius/schemas/logstash/README -#usr/share/doc/freeradius/schemas/logstash/kibana3-dashboard.json #usr/share/doc/freeradius/schemas/logstash/kibana4-dashboard.json #usr/share/doc/freeradius/schemas/logstash/log-courier.conf #usr/share/doc/freeradius/schemas/logstash/logstash-radius.conf @@ -660,6 +676,7 @@ usr/share/freeradius #usr/share/freeradius/dictionary.acc #usr/share/freeradius/dictionary.acme #usr/share/freeradius/dictionary.actelis +#usr/share/freeradius/dictionary.adtran #usr/share/freeradius/dictionary.aerohive #usr/share/freeradius/dictionary.airespace #usr/share/freeradius/dictionary.alcatel @@ -694,6 +711,7 @@ usr/share/freeradius #usr/share/freeradius/dictionary.cablelabs #usr/share/freeradius/dictionary.cabletron #usr/share/freeradius/dictionary.camiant +#usr/share/freeradius/dictionary.checkpoint #usr/share/freeradius/dictionary.chillispot #usr/share/freeradius/dictionary.cisco #usr/share/freeradius/dictionary.cisco.asa @@ -702,12 +720,14 @@ usr/share/freeradius #usr/share/freeradius/dictionary.cisco.vpn5000 #usr/share/freeradius/dictionary.citrix #usr/share/freeradius/dictionary.clavister +#usr/share/freeradius/dictionary.cnergee #usr/share/freeradius/dictionary.colubris #usr/share/freeradius/dictionary.columbia_university #usr/share/freeradius/dictionary.compat #usr/share/freeradius/dictionary.compatible #usr/share/freeradius/dictionary.cosine #usr/share/freeradius/dictionary.dante +#usr/share/freeradius/dictionary.dellemc #usr/share/freeradius/dictionary.dhcp #usr/share/freeradius/dictionary.digium #usr/share/freeradius/dictionary.dlink @@ -756,6 +776,7 @@ usr/share/freeradius #usr/share/freeradius/dictionary.meraki #usr/share/freeradius/dictionary.merit #usr/share/freeradius/dictionary.meru +#usr/share/freeradius/dictionary.microsemi #usr/share/freeradius/dictionary.microsoft #usr/share/freeradius/dictionary.mikrotik #usr/share/freeradius/dictionary.motorola @@ -813,11 +834,13 @@ usr/share/freeradius #usr/share/freeradius/dictionary.rfc7155 #usr/share/freeradius/dictionary.rfc7268 #usr/share/freeradius/dictionary.rfc7499 +#usr/share/freeradius/dictionary.rfc7930 #usr/share/freeradius/dictionary.riverbed #usr/share/freeradius/dictionary.riverstone #usr/share/freeradius/dictionary.roaringpenguin #usr/share/freeradius/dictionary.ruckus #usr/share/freeradius/dictionary.ruggedcom +#usr/share/freeradius/dictionary.sangoma #usr/share/freeradius/dictionary.sg #usr/share/freeradius/dictionary.shasta #usr/share/freeradius/dictionary.shiva @@ -859,6 +882,8 @@ usr/share/freeradius #usr/share/freeradius/dictionary.zeus #usr/share/freeradius/dictionary.zte #usr/share/freeradius/dictionary.zyxel +#usr/share/man/man1/dhcpclient.1 +#usr/share/man/man1/rad_counter.1 #usr/share/man/man1/radclient.1 #usr/share/man/man1/radeapclient.1 #usr/share/man/man1/radlast.1 diff --git a/config/rootfiles/packages/i586/directfb b/config/rootfiles/packages/i586/directfb index 1f48350df..9e61f8bf8 100644 --- a/config/rootfiles/packages/i586/directfb +++ b/config/rootfiles/packages/i586/directfb @@ -1,30 +1,96 @@ usr/bin/dfbdump +usr/bin/dfbdumpinput usr/bin/dfbfx usr/bin/dfbg usr/bin/dfbinfo usr/bin/dfbinput +usr/bin/dfbinspector usr/bin/dfblayer +usr/bin/dfbmaster usr/bin/dfbpenmount +usr/bin/dfbplay usr/bin/dfbscreen +usr/bin/dfbshow +usr/bin/dfbswitch usr/bin/directfb-config usr/bin/directfb-csource usr/bin/mkdfiff usr/bin/mkdgiff +usr/bin/mkdgifft +usr/bin/pxa3xx_dump +#usr/include/++dfb +#usr/include/++dfb/++dfb.h +#usr/include/++dfb/++dfb_mangle.h +#usr/include/++dfb/++dfb_unmangle.h +#usr/include/++dfb/idirectfb.h +#usr/include/++dfb/idirectfbdatabuffer.h +#usr/include/++dfb/idirectfbdisplaylayer.h +#usr/include/++dfb/idirectfbeventbuffer.h +#usr/include/++dfb/idirectfbfont.h +#usr/include/++dfb/idirectfbimageprovider.h +#usr/include/++dfb/idirectfbinputdevice.h +#usr/include/++dfb/idirectfbpalette.h +#usr/include/++dfb/idirectfbscreen.h +#usr/include/++dfb/idirectfbsurface.h +#usr/include/++dfb/idirectfbvideoprovider.h +#usr/include/++dfb/idirectfbwindow.h #usr/include/directfb #usr/include/directfb-internal #usr/include/directfb-internal/core +#usr/include/directfb-internal/core/CoreDFB.h +#usr/include/directfb-internal/core/CoreDFB_CallMode.h +#usr/include/directfb-internal/core/CoreDFB_includes.h +#usr/include/directfb-internal/core/CoreGraphicsState.h +#usr/include/directfb-internal/core/CoreGraphicsStateClient.h +#usr/include/directfb-internal/core/CoreGraphicsState_includes.h +#usr/include/directfb-internal/core/CoreInputDevice.h +#usr/include/directfb-internal/core/CoreInputDevice_includes.h +#usr/include/directfb-internal/core/CoreLayer.h +#usr/include/directfb-internal/core/CoreLayerContext.h +#usr/include/directfb-internal/core/CoreLayerContext_includes.h +#usr/include/directfb-internal/core/CoreLayerRegion.h +#usr/include/directfb-internal/core/CoreLayerRegion_includes.h +#usr/include/directfb-internal/core/CoreLayer_includes.h +#usr/include/directfb-internal/core/CorePalette.h +#usr/include/directfb-internal/core/CorePalette_includes.h +#usr/include/directfb-internal/core/CoreScreen.h +#usr/include/directfb-internal/core/CoreScreen_includes.h +#usr/include/directfb-internal/core/CoreSlave.h +#usr/include/directfb-internal/core/CoreSlave_includes.h +#usr/include/directfb-internal/core/CoreSurface.h +#usr/include/directfb-internal/core/CoreSurfaceClient.h +#usr/include/directfb-internal/core/CoreSurfaceClient_includes.h +#usr/include/directfb-internal/core/CoreSurface_includes.h +#usr/include/directfb-internal/core/CoreWindow.h +#usr/include/directfb-internal/core/CoreWindowStack.h +#usr/include/directfb-internal/core/CoreWindowStack_includes.h +#usr/include/directfb-internal/core/CoreWindow_includes.h +#usr/include/directfb-internal/core/Debug.h +#usr/include/directfb-internal/core/DisplayTask.h +#usr/include/directfb-internal/core/Fifo.h +#usr/include/directfb-internal/core/Interface.h +#usr/include/directfb-internal/core/PacketBuffer.h +#usr/include/directfb-internal/core/Renderer.h +#usr/include/directfb-internal/core/SurfaceTask.h +#usr/include/directfb-internal/core/Task.h +#usr/include/directfb-internal/core/TaskManager.h +#usr/include/directfb-internal/core/TaskThreadsQ.h +#usr/include/directfb-internal/core/Util.h #usr/include/directfb-internal/core/clipboard.h #usr/include/directfb-internal/core/colorhash.h #usr/include/directfb-internal/core/core.h #usr/include/directfb-internal/core/core_parts.h +#usr/include/directfb-internal/core/core_strings.h #usr/include/directfb-internal/core/core_system.h #usr/include/directfb-internal/core/coredefs.h #usr/include/directfb-internal/core/coretypes.h #usr/include/directfb-internal/core/fonts.h #usr/include/directfb-internal/core/gfxcard.h #usr/include/directfb-internal/core/graphics_driver.h +#usr/include/directfb-internal/core/graphics_state.h #usr/include/directfb-internal/core/input.h #usr/include/directfb-internal/core/input_driver.h +#usr/include/directfb-internal/core/input_hub.h #usr/include/directfb-internal/core/layer_context.h #usr/include/directfb-internal/core/layer_control.h #usr/include/directfb-internal/core/layer_region.h @@ -36,8 +102,12 @@ usr/bin/mkdgiff #usr/include/directfb-internal/core/screens_internal.h #usr/include/directfb-internal/core/state.h #usr/include/directfb-internal/core/surface.h +#usr/include/directfb-internal/core/surface_allocation.h #usr/include/directfb-internal/core/surface_buffer.h +#usr/include/directfb-internal/core/surface_client.h +#usr/include/directfb-internal/core/surface_core.h #usr/include/directfb-internal/core/surface_pool.h +#usr/include/directfb-internal/core/surface_pool_bridge.h #usr/include/directfb-internal/core/system.h #usr/include/directfb-internal/core/windows.h #usr/include/directfb-internal/core/windows_internal.h @@ -54,6 +124,8 @@ usr/bin/mkdgiff #usr/include/directfb-internal/display/idirectfbsurface.h #usr/include/directfb-internal/display/idirectfbsurface_layer.h #usr/include/directfb-internal/display/idirectfbsurface_window.h +#usr/include/directfb-internal/dummy +#usr/include/directfb-internal/dummy/dummy.h #usr/include/directfb-internal/fbdev #usr/include/directfb-internal/fbdev/agp.h #usr/include/directfb-internal/fbdev/fb.h @@ -67,13 +139,16 @@ usr/bin/mkdgiff #usr/include/directfb-internal/gfx/generic/generic.h #usr/include/directfb-internal/gfx/util.h #usr/include/directfb-internal/idirectfb.h +#usr/include/directfb-internal/init.h #usr/include/directfb-internal/input #usr/include/directfb-internal/input/idirectfbinputbuffer.h #usr/include/directfb-internal/input/idirectfbinputdevice.h #usr/include/directfb-internal/media #usr/include/directfb-internal/media/idirectfbdatabuffer.h +#usr/include/directfb-internal/media/idirectfbdatabuffer_client.h #usr/include/directfb-internal/media/idirectfbfont.h #usr/include/directfb-internal/media/idirectfbimageprovider.h +#usr/include/directfb-internal/media/idirectfbimageprovider_client.h #usr/include/directfb-internal/media/idirectfbvideoprovider.h #usr/include/directfb-internal/misc #usr/include/directfb-internal/misc/conf.h @@ -85,20 +160,60 @@ usr/bin/mkdgiff #usr/include/directfb/dfiff.h #usr/include/directfb/dgiff.h #usr/include/directfb/direct +#usr/include/directfb/direct/Lists.h +#usr/include/directfb/direct/LockWQ.h +#usr/include/directfb/direct/Magic.h +#usr/include/directfb/direct/Mutex.h +#usr/include/directfb/direct/Performer.h +#usr/include/directfb/direct/String.h +#usr/include/directfb/direct/TLSObject.h +#usr/include/directfb/direct/ToString.h +#usr/include/directfb/direct/Types++.h +#usr/include/directfb/direct/atomic.h #usr/include/directfb/direct/build.h #usr/include/directfb/direct/clock.h +#usr/include/directfb/direct/compiler.h #usr/include/directfb/direct/conf.h #usr/include/directfb/direct/debug.h #usr/include/directfb/direct/direct.h +#usr/include/directfb/direct/fastlz.h +#usr/include/directfb/direct/fifo.h +#usr/include/directfb/direct/filesystem.h +#usr/include/directfb/direct/flz.h #usr/include/directfb/direct/hash.h +#usr/include/directfb/direct/init.h #usr/include/directfb/direct/interface.h #usr/include/directfb/direct/interface_implementation.h #usr/include/directfb/direct/list.h #usr/include/directfb/direct/log.h +#usr/include/directfb/direct/log_domain.h +#usr/include/directfb/direct/map.h #usr/include/directfb/direct/mem.h #usr/include/directfb/direct/memcpy.h #usr/include/directfb/direct/messages.h #usr/include/directfb/direct/modules.h +#usr/include/directfb/direct/os +#usr/include/directfb/direct/os/clock.h +#usr/include/directfb/direct/os/filesystem.h +#usr/include/directfb/direct/os/linux +#usr/include/directfb/direct/os/linux/glibc +#usr/include/directfb/direct/os/linux/glibc/filesystem.h +#usr/include/directfb/direct/os/linux/glibc/mutex.h +#usr/include/directfb/direct/os/linux/glibc/thread.h +#usr/include/directfb/direct/os/linux/glibc/types.h +#usr/include/directfb/direct/os/linux/glibc/waitqueue.h +#usr/include/directfb/direct/os/log.h +#usr/include/directfb/direct/os/mem.h +#usr/include/directfb/direct/os/mutex.h +#usr/include/directfb/direct/os/signals.h +#usr/include/directfb/direct/os/system.h +#usr/include/directfb/direct/os/thread.h +#usr/include/directfb/direct/os/types.h +#usr/include/directfb/direct/os/waitqueue.h +#usr/include/directfb/direct/perf.h +#usr/include/directfb/direct/print.h +#usr/include/directfb/direct/processor.h +#usr/include/directfb/direct/result.h #usr/include/directfb/direct/serial.h #usr/include/directfb/direct/signals.h #usr/include/directfb/direct/stream.h @@ -109,14 +224,23 @@ usr/bin/mkdgiff #usr/include/directfb/direct/types.h #usr/include/directfb/direct/utf8.h #usr/include/directfb/direct/util.h +#usr/include/directfb/direct/uuid.h +#usr/include/directfb/directfb++.h #usr/include/directfb/directfb.h +#usr/include/directfb/directfb_build.h +#usr/include/directfb/directfb_graphics.h #usr/include/directfb/directfb_keyboard.h #usr/include/directfb/directfb_keynames.h #usr/include/directfb/directfb_strings.h #usr/include/directfb/directfb_util.h #usr/include/directfb/directfb_version.h +#usr/include/directfb/directfb_water.h +#usr/include/directfb/directfb_water_strings.h +#usr/include/directfb/directfb_windows.h #usr/include/directfb/directfbgl.h +#usr/include/directfb/directfbgl2.h #usr/include/directfb/fusion +#usr/include/directfb/fusion/Debug.h #usr/include/directfb/fusion/arena.h #usr/include/directfb/fusion/build.h #usr/include/directfb/fusion/call.h @@ -124,6 +248,7 @@ usr/bin/mkdgiff #usr/include/directfb/fusion/fusion.h #usr/include/directfb/fusion/fusion_internal.h #usr/include/directfb/fusion/hash.h +#usr/include/directfb/fusion/init.h #usr/include/directfb/fusion/lock.h #usr/include/directfb/fusion/object.h #usr/include/directfb/fusion/property.h @@ -137,113 +262,136 @@ usr/bin/mkdgiff #usr/include/directfb/fusion/shmalloc.h #usr/include/directfb/fusion/types.h #usr/include/directfb/fusion/vector.h -#usr/lib/directfb-1.1-0 -#usr/lib/directfb-1.1-0/gfxdrivers -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_ati128.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_ati128.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cle266.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cle266.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cyber5k.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_cyber5k.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i810.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i810.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i830.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_i830.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_mach64.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_mach64.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_neomagic.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_neomagic.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nsc.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nsc.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nvidia.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_nvidia.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_radeon.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_radeon.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_savage.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_savage.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sdlgraphics.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sdlgraphics.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sh7722.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sh7722.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sis315.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_sis315.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_tdfx.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_tdfx.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_unichrome.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_unichrome.so -#usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_vmware.la -usr/lib/directfb-1.1-0/gfxdrivers/libdirectfb_vmware.so -#usr/lib/directfb-1.1-0/inputdrivers -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_joystick.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_joystick.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_keyboard.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_keyboard.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_linux_input.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_linux_input.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_lirc.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_lirc.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_mutouch.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_mutouch.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_penmount.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_penmount.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_ps2mouse.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_ps2mouse.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sdlinput.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sdlinput.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_serialmouse.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_serialmouse.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sonypi.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_sonypi.so -#usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_wm97xx_ts.la -usr/lib/directfb-1.1-0/inputdrivers/libdirectfb_wm97xx_ts.so -#usr/lib/directfb-1.1-0/interfaces -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_default.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_default.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_ft2.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBFont/libidirectfbfont_ft2.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so -#usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider -#usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.la -usr/lib/directfb-1.1-0/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so -#usr/lib/directfb-1.1-0/systems -#usr/lib/directfb-1.1-0/systems/libdirectfb_devmem.la -usr/lib/directfb-1.1-0/systems/libdirectfb_devmem.so -#usr/lib/directfb-1.1-0/systems/libdirectfb_fbdev.la -usr/lib/directfb-1.1-0/systems/libdirectfb_fbdev.so -#usr/lib/directfb-1.1-0/systems/libdirectfb_sdl.la -usr/lib/directfb-1.1-0/systems/libdirectfb_sdl.so -#usr/lib/directfb-1.1-0/wm -#usr/lib/directfb-1.1-0/wm/libdirectfbwm_default.la -usr/lib/directfb-1.1-0/wm/libdirectfbwm_default.so -usr/lib/libdirect-1.1.so.0 -usr/lib/libdirect-1.1.so.0.1.0 +#usr/lib/directfb-1.7-7 +#usr/lib/directfb-1.7-7/gfxdrivers +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i810.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i810.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i830.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_i830.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_neomagic.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_neomagic.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.so +#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.la +usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.so +#usr/lib/directfb-1.7-7/inputdrivers +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.so +#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.la +usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.so +#usr/lib/directfb-1.7-7/interfaces +#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager +#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.la +usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.so +#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows +#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.la +usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.so +#usr/lib/directfb-1.7-7/interfaces/IWater +#usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.la +usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.so +#usr/lib/directfb-1.7-7/systems +#usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.la +usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.la +usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.la +usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.so +#usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.la +usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.so +#usr/lib/directfb-1.7-7/wm +#usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.la +usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.so +usr/lib/lib++dfb-1.7.so.7 +usr/lib/lib++dfb-1.7.so.7.0.0 +#usr/lib/lib++dfb.la +#usr/lib/lib++dfb.so +usr/lib/libdirect-1.7.so.7 +usr/lib/libdirect-1.7.so.7.0.0 #usr/lib/libdirect.la -usr/lib/libdirect.so -usr/lib/libdirectfb-1.1.so.0 -usr/lib/libdirectfb-1.1.so.0.1.0 +#usr/lib/libdirect.so +usr/lib/libdirectfb-1.7.so.7 +usr/lib/libdirectfb-1.7.so.7.0.0 #usr/lib/libdirectfb.la usr/lib/libdirectfb.so -usr/lib/libfusion-1.1.so.0 -usr/lib/libfusion-1.1.so.0.1.0 +usr/lib/libfusion-1.7.so.7 +usr/lib/libfusion-1.7.so.7.0.0 #usr/lib/libfusion.la -usr/lib/libfusion.so +#usr/lib/libfusion.so +#usr/lib/pkgconfig/++dfb.pc #usr/lib/pkgconfig/direct.pc #usr/lib/pkgconfig/directfb-internal.pc #usr/lib/pkgconfig/directfb.pc #usr/lib/pkgconfig/fusion.pc -#usr/share/directfb-1.1.1 -usr/share/directfb-1.1.1/cursor.dat +#usr/share/directfb-1.7.7 +usr/share/directfb-1.7.7/cursor.dat +usr/share/directfb-1.7.7/cursor.png +usr/share/directfb-1.7.7/decker.dgiff +usr/share/directfb-1.7.7/decker.ttf #usr/share/man/man1/dfbg.1 #usr/share/man/man1/directfb-csource.1 #usr/share/man/man5/directfbrc.5 From 2be66b3d8551f0b0ee8b7309b9c955e29f48a7a1 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Mon, 5 Jun 2017 15:24:55 +0200 Subject: [PATCH 448/464] Cosmetic fix for 'make-functions'-output '$LAST_STAGE_TIME'-output got overwritten by the following 'version/options/time/status'-line. Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- tools/make-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/make-functions b/tools/make-functions index 8e40163fc..508f5f21e 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -225,7 +225,7 @@ beautify() STAGE_TIME_START=`date +%s` echo -ne "${BOLD}*** (${BUILD_ARCH}) ${MESSAGE}${NORMAL}" if [ "$LAST_STAGE_TIME" ]; then - echo -ne "${DONE} (Last stage took $LAST_STAGE_TIME secs)${NORMAL}" + echo -ne "${DONE} (Last stage took $LAST_STAGE_TIME secs)${NORMAL}\n" fi echo -ne "${BOLD}${SET_VER_COL} version${SET_OPT_COL} options${SET_TIME_COL} time (sec)${SET_RESULT_COL} status${NORMAL}\n" ;; From cb0969580b75480f1829cee8e0057b27ea23d395 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 09:22:09 +0200 Subject: [PATCH 449/464] ccache: update to 3.3.4 https://ccache.samba.org/releasenotes.html#_ccache_3_3_4 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- lfs/ccache | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/ccache b/lfs/ccache index 9fbb72822..43f4df70e 100644 --- a/lfs/ccache +++ b/lfs/ccache @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.2.3 +VER = 3.3.4 THISAPP = ccache-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 608c78632086a4a051514722d6067a7b +$(DL_FILE)_MD5 = 95ab3c56284129cc2a32460c23069516 install : $(TARGET) From 1a533a1cd1ddf00735be07c9a283a9309d356e1e Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 09:57:22 +0200 Subject: [PATCH 450/464] flex: update to 2.6.4 https://github.com/westes/flex/releases Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/common/flex | 7 +------ lfs/flex | 9 +++++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/config/rootfiles/common/flex b/config/rootfiles/common/flex index 65b558834..2cb328657 100644 --- a/config/rootfiles/common/flex +++ b/config/rootfiles/common/flex @@ -7,18 +7,13 @@ #usr/lib/libfl.so usr/lib/libfl.so.2 usr/lib/libfl.so.2.0.0 -#usr/lib/libfl_pic.a -#usr/lib/libfl_pic.la -#usr/lib/libfl_pic.so -usr/lib/libfl_pic.so.2 -usr/lib/libfl_pic.so.2.0.0 #usr/lib/libl.a #usr/share/doc/flex #usr/share/doc/flex/AUTHORS #usr/share/doc/flex/COPYING #usr/share/doc/flex/NEWS #usr/share/doc/flex/ONEWS -#usr/share/doc/flex/README +#usr/share/doc/flex/README.md #usr/share/info/flex.info #usr/share/info/flex.info-1 #usr/share/info/flex.info-2 diff --git a/lfs/flex b/lfs/flex index 3101c86a1..4b1a75b09 100644 --- a/lfs/flex +++ b/lfs/flex @@ -24,10 +24,10 @@ include Config -VER = 2.6.1 +VER = 2.6.4 THISAPP = flex-$(VER) -DL_FILE = $(THISAPP).tar.xz +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = cd3c86290fc2676a641aefafeb10848a +$(DL_FILE)_MD5 = 2882e3179748cc9f9c23ec593d6adc8d install : $(TARGET) @@ -70,7 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls + cd $(DIR_APP) && HELP2MAN=/tools/bin/true \ + ./configure --prefix=/usr --disable-nls cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make $(EXTRA_INSTALL) install ifeq "$(ROOT)" "" From 14c9349c80eb33bee7c063ba40fd0a310c00daf1 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 10:02:11 +0200 Subject: [PATCH 451/464] bc: update to 1.07.1 https://www.gnu.org/software/bc/ Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/common/bc | 8 ++++---- lfs/bc | 14 +++++--------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/config/rootfiles/common/bc b/config/rootfiles/common/bc index 145c17789..2e983a862 100644 --- a/config/rootfiles/common/bc +++ b/config/rootfiles/common/bc @@ -1,6 +1,6 @@ usr/bin/bc usr/bin/dc -#usr/info/bc.info -#usr/info/dc.info -#usr/man/man1/bc.1 -#usr/man/man1/dc.1 +#usr/share/info/bc.info +#usr/share/info/dc.info +#usr/share/man/man1/bc.1 +#usr/share/man/man1/dc.1 diff --git a/lfs/bc b/lfs/bc index 28b27cb16..51dd08419 100644 --- a/lfs/bc +++ b/lfs/bc @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.06 +VER = 1.07.1 THISAPP = bc-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d44b5dddebd8a7a7309aea6c36fda117 +$(DL_FILE)_MD5 = cda93857418655ea43590736fc3ca9fc install : $(TARGET) @@ -69,12 +69,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && sed -i '/PROTO.*readline/d' bc/scan.l - cd $(DIR_APP) && sed -i '/flex -I8/s/8//' configure - cd $(DIR_APP) && sed -i '/stdlib/a #include ' lib/number.c - cd $(DIR_APP) && sed -i 's/program.*save/static &/' bc/load.c - cd $(DIR_APP) && ./configure --prefix=/usr --with-readline + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --with-readline --mandir=/usr/share/man --infodir=/usr/share/info cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) From 5dd7cec068f0e7478712f18ed23f20b2d05beb71 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 10:07:57 +0200 Subject: [PATCH 452/464] pkg-config: update to 2.29.2 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- lfs/pkg-config | 5 ++-- .../pkg-config-0.29-glib-compile-fix.patch | 29 ------------------- 2 files changed, 2 insertions(+), 32 deletions(-) delete mode 100644 src/patches/pkg-config-0.29-glib-compile-fix.patch diff --git a/lfs/pkg-config b/lfs/pkg-config index 8523d8af4..36fb40ae9 100644 --- a/lfs/pkg-config +++ b/lfs/pkg-config @@ -24,7 +24,7 @@ include Config -VER = 0.29.1 +VER = 0.29.2 THISAPP = pkg-config-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -50,7 +50,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f739a28cae4e0ca291f82d1d41ef107d +$(DL_FILE)_MD5 = f6e931e319531b736fadc017f470e68a install : $(TARGET) @@ -80,7 +80,6 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP)/glib && patch -Np1 < $(DIR_SRC)/src/patches/pkg-config-0.29-glib-compile-fix.patch ifeq "$(ROOT)" "" else mkdir -pv /tools/lib/pkgconfig diff --git a/src/patches/pkg-config-0.29-glib-compile-fix.patch b/src/patches/pkg-config-0.29-glib-compile-fix.patch deleted file mode 100644 index a092882ab..000000000 --- a/src/patches/pkg-config-0.29-glib-compile-fix.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0817af40e8c74c721c30f6ef482b1f53d12044c7 Mon Sep 17 00:00:00 2001 -From: coypu -Date: Mon, 8 Feb 2016 00:06:06 +0200 -Subject: gdate: Suppress string format literal warning - -Newer versions of GCC emit an error here, but we know it's safe. -https://bugzilla.gnome.org/761550 ---- - glib/gdate.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/glib/gdate.c b/glib/gdate.c -index 4aece02..cdc735c 100644 ---- a/glib/gdate.c -+++ b/glib/gdate.c -@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s, - * recognize whether strftime actually failed or just returned "". - */ - tmpbuf[0] = '\1'; -+ #pragma GCC diagnostic push -+ #pragma GCC diagnostic ignored "-Wformat-nonliteral" - tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm); -+ #pragma GCC diagnostic pop - - if (tmplen == 0 && tmpbuf[0] != '\0') - { --- -cgit v0.12 - From 8e700473ac31eea7e24a78626a69de38bf5b3ab8 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 10:25:37 +0200 Subject: [PATCH 453/464] remove old bash 3.2 patches Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- src/patches/bash/bash32-052 | 104 ------------------------------------ src/patches/bash/bash32-053 | 54 ------------------- 2 files changed, 158 deletions(-) delete mode 100644 src/patches/bash/bash32-052 delete mode 100644 src/patches/bash/bash32-053 diff --git a/src/patches/bash/bash32-052 b/src/patches/bash/bash32-052 deleted file mode 100644 index 78e7d9270..000000000 --- a/src/patches/bash/bash32-052 +++ /dev/null @@ -1,104 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.2 -Patch-ID: bash32-052 - -Bug-Reported-by: Stephane Chazelas -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -Under certain circumstances, bash will execute user code while processing the -environment for exported function definitions. - -Patch (apply with `patch -p0'): - -*** ../bash-3.2.51/builtins/common.h 2006-03-06 09:38:44.000000000 -0500 ---- builtins/common.h 2014-09-16 19:08:02.000000000 -0400 -*************** -*** 34,37 **** ---- 34,39 ---- - - /* Flags for describe_command, shared between type.def and command.def */ -+ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ -+ #define SEVAL_ONECMD 0x100 /* only allow a single command */ - #define CDESC_ALL 0x001 /* type -a */ - #define CDESC_SHORTDESC 0x002 /* command -V */ -*** ../bash-3.2.51/builtins/evalstring.c 2008-11-15 17:47:04.000000000 -0500 ---- builtins/evalstring.c 2014-09-16 19:08:02.000000000 -0400 -*************** -*** 235,238 **** ---- 235,246 ---- - struct fd_bitmap *bitmap; - -+ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) -+ { -+ internal_warning ("%s: ignoring function definition attempt", from_file); -+ should_jump_to_top_level = 0; -+ last_result = last_command_exit_value = EX_BADUSAGE; -+ break; -+ } -+ - bitmap = new_fd_bitmap (FD_BITMAP_SIZE); - begin_unwind_frame ("pe_dispose"); -*************** -*** 292,295 **** ---- 300,306 ---- - dispose_fd_bitmap (bitmap); - discard_unwind_frame ("pe_dispose"); -+ -+ if (flags & SEVAL_ONECMD) -+ break; - } - } -*** ../bash-3.2.51/variables.c 2008-11-15 17:15:06.000000000 -0500 ---- variables.c 2014-09-16 19:10:39.000000000 -0400 -*************** -*** 319,328 **** - strcpy (temp_string + char_index + 1, string); - -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); -! -! /* Ancient backwards compatibility. Old versions of bash exported -! functions like name()=() {...} */ -! if (name[char_index - 1] == ')' && name[char_index - 2] == '(') -! name[char_index - 2] = '\0'; - - if (temp_var = find_function (name)) ---- 319,326 ---- - strcpy (temp_string + char_index + 1, string); - -! /* Don't import function names that are invalid identifiers from the -! environment. */ -! if (legal_identifier (name)) -! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); - - if (temp_var = find_function (name)) -*************** -*** 333,340 **** - else - report_error (_("error importing function definition for `%s'"), name); -- -- /* ( */ -- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') -- name[char_index - 2] = '('; /* ) */ - } - #if defined (ARRAY_VARS) ---- 331,334 ---- -*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 ---- patchlevel.h Mon Oct 16 14:22:54 2006 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 51 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 52 - - #endif /* _PATCHLEVEL_H_ */ diff --git a/src/patches/bash/bash32-053 b/src/patches/bash/bash32-053 deleted file mode 100644 index e7efce71a..000000000 --- a/src/patches/bash/bash32-053 +++ /dev/null @@ -1,54 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.2 -Patch-ID: bash32-053 - -Bug-Reported-by: Tavis Ormandy -Bug-Reference-ID: -Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 - -Bug-Description: - -Under certain circumstances, bash can incorrectly save a lookahead character and -return it on a subsequent call, even when reading a new line. - -Patch: - -*** ../bash-3.2.52/parse.y 2008-04-29 21:24:55.000000000 -0400 ---- parse.y 2014-09-25 16:18:41.000000000 -0400 -*************** -*** 2504,2507 **** ---- 2504,2509 ---- - word_desc_to_read = (WORD_DESC *)NULL; - -+ eol_ungetc_lookahead = 0; -+ - last_read_token = '\n'; - token_to_read = '\n'; -*** ../bash-3.2.52/y.tab.c 2006-09-25 08:15:16.000000000 -0400 ---- y.tab.c 2014-09-25 20:28:17.000000000 -0400 -*************** -*** 3833,3836 **** ---- 3833,3838 ---- - word_desc_to_read = (WORD_DESC *)NULL; - -+ eol_ungetc_lookahead = 0; -+ - last_read_token = '\n'; - token_to_read = '\n'; -*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006 ---- patchlevel.h Mon Oct 16 14:22:54 2006 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 52 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 53 - - #endif /* _PATCHLEVEL_H_ */ From d31ef401a65514b0f62791a03d3f06c4bceca692 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 10:32:00 +0200 Subject: [PATCH 454/464] gawk: update to 4.1.4 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/common/gawk | 46 ++++++++++++++++----- lfs/gawk | 35 ++++++---------- src/patches/gawk-3.1.5-segfault_fix-1.patch | 43 ------------------- 3 files changed, 48 insertions(+), 76 deletions(-) delete mode 100644 src/patches/gawk-3.1.5-segfault_fix-1.patch diff --git a/config/rootfiles/common/gawk b/config/rootfiles/common/gawk index 2a39be65d..f9e1e8ae4 100644 --- a/config/rootfiles/common/gawk +++ b/config/rootfiles/common/gawk @@ -1,18 +1,24 @@ usr/bin/awk usr/bin/gawk -#usr/bin/gawk-3.1.5 +#usr/bin/gawk-4.1.4 #usr/bin/igawk -#usr/bin/pgawk -#usr/bin/pgawk-3.1.5 -#usr/info/dir -#usr/info/gawk.info -#usr/info/gawkinet.info +#usr/include/gawkapi.h #usr/lib/awk #usr/lib/awk/grcat #usr/lib/awk/pwcat -#usr/man/man1/gawk.1 -#usr/man/man1/igawk.1 -#usr/man/man1/pgawk.1 +#usr/lib/gawk +usr/lib/gawk/filefuncs.so +usr/lib/gawk/fnmatch.so +usr/lib/gawk/fork.so +usr/lib/gawk/inplace.so +usr/lib/gawk/ordchr.so +usr/lib/gawk/readdir.so +usr/lib/gawk/readfile.so +usr/lib/gawk/revoutput.so +usr/lib/gawk/revtwoway.so +usr/lib/gawk/rwarray.so +usr/lib/gawk/testext.so +usr/lib/gawk/time.so #usr/share/awk #usr/share/awk/assert.awk #usr/share/awk/bits2str.awk @@ -22,14 +28,34 @@ usr/bin/gawk #usr/share/awk/getopt.awk #usr/share/awk/gettime.awk #usr/share/awk/group.awk +#usr/share/awk/inplace.awk #usr/share/awk/join.awk #usr/share/awk/libintl.awk -#usr/share/awk/nextfile.awk #usr/share/awk/noassign.awk #usr/share/awk/ord.awk #usr/share/awk/passwd.awk +#usr/share/awk/processarray.awk +#usr/share/awk/quicksort.awk #usr/share/awk/readable.awk +#usr/share/awk/readfile.awk #usr/share/awk/rewind.awk #usr/share/awk/round.awk +#usr/share/awk/shellquote.awk #usr/share/awk/strtonum.awk +#usr/share/awk/walkarray.awk #usr/share/awk/zerofile.awk +#usr/share/info/gawk.info +#usr/share/info/gawkinet.info +#usr/share/man/man1/gawk.1 +#usr/share/man/man1/igawk.1 +#usr/share/man/man3/filefuncs.3am +#usr/share/man/man3/fnmatch.3am +#usr/share/man/man3/fork.3am +#usr/share/man/man3/inplace.3am +#usr/share/man/man3/ordchr.3am +#usr/share/man/man3/readdir.3am +#usr/share/man/man3/readfile.3am +#usr/share/man/man3/revoutput.3am +#usr/share/man/man3/revtwoway.3am +#usr/share/man/man3/rwarray.3am +#usr/share/man/man3/time.3am diff --git a/lfs/gawk b/lfs/gawk index c8cb89231..62bad0164 100644 --- a/lfs/gawk +++ b/lfs/gawk @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2015 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -18,35 +18,29 @@ # # ############################################################################### + ############################################################################### # Definitions ############################################################################### include Config -VER = 3.1.5 +VER = 4.1.4 THISAPP = gawk-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) # Normal build or /tools build. -# ifeq "$(ROOT)" "" - TARGET = $(DIR_INFO)/$(THISAPP) - EXTRA_CONFIG = --prefix=/usr --libexecdir=/usr/lib --disable-nls - EXTRA_MAKE = - EXTRA_INSTALL = + TARGET = $(DIR_INFO)/$(THISAPP) + EXTRA_CONFIG = --prefix=/usr --libexecdir=/usr/lib --disable-nls else - TARGET = $(DIR_INFO)/$(THISAPP)-tools - EXTRA_CONFIG = --prefix=/tools --disable-nls --build=$(BUILDTARGET) - EXTRA_MAKE = - EXTRA_INSTALL = + TARGET = $(DIR_INFO)/$(THISAPP)-tools + EXTRA_CONFIG = --prefix=/tools --disable-nls endif -EXTRA_CONFIG += ac_cv_func_working_mktime=yes - ############################################################################### # Top-level Rules ############################################################################### @@ -55,7 +49,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5703f72d0eea1d463f735aad8222655f +$(DL_FILE)_MD5 = 4e7dbc81163e60fd4f0b52496e7542c9 install : $(TARGET) @@ -84,14 +78,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -ifeq "$(ROOT)" "" - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-segfault_fix-1.patch -endif + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure $(EXTRA_CONFIG) - cd $(DIR_APP) && echo "#define HAVE_LANGINFO_CODESET 1" >> config.h - cd $(DIR_APP) && echo "#define HAVE_LC_MESSAGES 1" >> config.h - cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) - cd $(DIR_APP) && make $(EXTRA_INSTALL) install + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/patches/gawk-3.1.5-segfault_fix-1.patch b/src/patches/gawk-3.1.5-segfault_fix-1.patch deleted file mode 100644 index aa2f17b6d..000000000 --- a/src/patches/gawk-3.1.5-segfault_fix-1.patch +++ /dev/null @@ -1,43 +0,0 @@ -Submitted By: Matthew Burgess -Date: 2005-09-24 -Initial Package Version: 3.1.5 -Upstream Status: From Upstream -Origin: http://lists.gnu.org/archive/html/bug-gnu-utils/2005-08/msg00047.html -Description: Fixes a bug which causes gawk to segfault when operating on a non-existent file. - -diff -Naur gawk-3.1.5.orig/io.c gawk-3.1.5/io.c ---- gawk-3.1.5.orig/io.c 2005-07-26 18:07:43.000000000 +0000 -+++ gawk-3.1.5/io.c 2005-09-24 14:43:13.771380264 +0000 -@@ -2480,9 +2480,12 @@ - { - struct stat sbuf; - struct open_hook *oh; -+ int iop_malloced = FALSE; - -- if (iop == NULL) -+ if (iop == NULL) { - emalloc(iop, IOBUF *, sizeof(IOBUF), "iop_alloc"); -+ iop_malloced = TRUE; -+ } - memset(iop, '\0', sizeof(IOBUF)); - iop->flag = 0; - iop->fd = fd; -@@ -2495,7 +2498,8 @@ - } - - if (iop->fd == INVALID_HANDLE) { -- free(iop); -+ if (iop_malloced) -+ free(iop); - return NULL; - } - if (isatty(iop->fd)) -@@ -2503,7 +2507,7 @@ - iop->readsize = iop->size = optimal_bufsize(iop->fd, & sbuf); - iop->sbuf = sbuf; - if (do_lint && S_ISREG(sbuf.st_mode) && sbuf.st_size == 0) -- lintwarn(_("data file `%s' is empty"), name); -+ lintwarn(_("data file `%s' is empty"), name); - errno = 0; - iop->count = iop->scanoff = 0; - emalloc(iop->buf, char *, iop->size += 2, "iop_alloc"); From c0694233c319e5a6c388b8644b9736593635ab40 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 10:52:00 +0200 Subject: [PATCH 455/464] grep: update to 2.27 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- lfs/grep | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/grep b/lfs/grep index 32a674870..5ac45c15a 100644 --- a/lfs/grep +++ b/lfs/grep @@ -24,7 +24,7 @@ include Config -VER = 2.24 +VER = 2.27 THISAPP = grep-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -51,7 +51,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f1c980134c04692a90078e87283074b6 +$(DL_FILE)_MD5 = 6138dd227c39d4a25f81eea76a44d4cb install : $(TARGET) From 35d4925c744595bd1c2088b1e2a7d73cb708eec0 Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 14:14:01 +0200 Subject: [PATCH 456/464] 7zip: update to 16.02 Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/packages/7zip | 212 +++++++++--------- lfs/7zip | 11 +- src/patches/p7zip_change_install_folder.patch | 10 + 3 files changed, 121 insertions(+), 112 deletions(-) create mode 100644 src/patches/p7zip_change_install_folder.patch diff --git a/config/rootfiles/packages/7zip b/config/rootfiles/packages/7zip index d3a5c38f3..bcf0322d6 100644 --- a/config/rootfiles/packages/7zip +++ b/config/rootfiles/packages/7zip @@ -1,106 +1,106 @@ -usr/local/bin/7z -usr/local/lib/p7zip -#usr/local/lib/p7zip/7z -#usr/local/lib/p7zip/7z.so -#usr/local/lib/p7zip/Codecs -usr/local/lib/p7zip/Codecs/Rar.so -#usr/local/man/man1/7z.1 -#usr/local/man/man1/7za.1 -#usr/local/man/man1/7zr.1 -#usr/local/share/doc/p7zip -#usr/local/share/doc/p7zip/ChangeLog -#usr/local/share/doc/p7zip/DOC -#usr/local/share/doc/p7zip/DOC/7zC.txt -#usr/local/share/doc/p7zip/DOC/7zFormat.txt -#usr/local/share/doc/p7zip/DOC/License.txt -#usr/local/share/doc/p7zip/DOC/MANUAL -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/add.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/bench.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/delete.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/extract.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/extract_full.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/hash.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/list.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/rename.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/test.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/commands/update.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/exit_codes.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_exclude.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_include.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_no.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/bb.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/bs.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/charset.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/email.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/exclude.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/include.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/large_pages.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/list_tech.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/method.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/output_dir.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/overwrite.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/password.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/recurse.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sa.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/scc.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/scrc.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sdel.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sfx.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/shared.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sni.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sns.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/spf.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ssc.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stdin.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stdout.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stl.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stop_switch.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stx.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/type.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/update.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/volume.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/working_dir.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/switches/yes.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/cmdline/syntax.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/about.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/benchmark.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/menu.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/options.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/add.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/extract.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/plugins/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/fm/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/general -#usr/local/share/doc/p7zip/DOC/MANUAL/general/7z.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/faq.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/formats.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/index.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/license.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/performance.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/general/style.css -#usr/local/share/doc/p7zip/DOC/MANUAL/general/thanks.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/start.htm -#usr/local/share/doc/p7zip/DOC/MANUAL/style.css -#usr/local/share/doc/p7zip/DOC/Methods.txt -#usr/local/share/doc/p7zip/DOC/copying.txt -#usr/local/share/doc/p7zip/DOC/lzma.txt -#usr/local/share/doc/p7zip/DOC/readme.txt -#usr/local/share/doc/p7zip/DOC/src-history.txt -#usr/local/share/doc/p7zip/DOC/unRarLicense.txt -#usr/local/share/doc/p7zip/README +usr/bin/7z +usr/lib/p7zip +#usr/lib/p7zip/7z +#usr/lib/p7zip/7z.so +#usr/lib/p7zip/Codecs +usr/lib/p7zip/Codecs/Rar.so +#usr/man/man1/7z.1 +#usr/man/man1/7za.1 +#usr/man/man1/7zr.1 +#usr/share/doc/p7zip +#usr/share/doc/p7zip/ChangeLog +#usr/share/doc/p7zip/DOC +#usr/share/doc/p7zip/DOC/7zC.txt +#usr/share/doc/p7zip/DOC/7zFormat.txt +#usr/share/doc/p7zip/DOC/License.txt +#usr/share/doc/p7zip/DOC/MANUAL +#usr/share/doc/p7zip/DOC/MANUAL/cmdline +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/add.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/bench.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/delete.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/extract.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/extract_full.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/hash.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/list.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/rename.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/style.css +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/test.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/commands/update.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/exit_codes.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/style.css +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_exclude.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_include.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ar_no.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/bb.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/bs.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/charset.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/email.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/exclude.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/include.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/large_pages.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/list_tech.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/method.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/output_dir.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/overwrite.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/password.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/recurse.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sa.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/scc.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/scrc.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sdel.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sfx.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/shared.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sni.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/sns.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/spf.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/ssc.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stdin.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stdout.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stl.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stop_switch.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/stx.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/style.css +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/type.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/update.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/volume.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/working_dir.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/switches/yes.htm +#usr/share/doc/p7zip/DOC/MANUAL/cmdline/syntax.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm +#usr/share/doc/p7zip/DOC/MANUAL/fm/about.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/benchmark.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/menu.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/options.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/add.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/extract.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/7-zip/style.css +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/fm/plugins/style.css +#usr/share/doc/p7zip/DOC/MANUAL/fm/style.css +#usr/share/doc/p7zip/DOC/MANUAL/general +#usr/share/doc/p7zip/DOC/MANUAL/general/7z.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/faq.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/formats.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/index.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/license.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/performance.htm +#usr/share/doc/p7zip/DOC/MANUAL/general/style.css +#usr/share/doc/p7zip/DOC/MANUAL/general/thanks.htm +#usr/share/doc/p7zip/DOC/MANUAL/start.htm +#usr/share/doc/p7zip/DOC/MANUAL/style.css +#usr/share/doc/p7zip/DOC/Methods.txt +#usr/share/doc/p7zip/DOC/copying.txt +#usr/share/doc/p7zip/DOC/lzma.txt +#usr/share/doc/p7zip/DOC/readme.txt +#usr/share/doc/p7zip/DOC/src-history.txt +#usr/share/doc/p7zip/DOC/unRarLicense.txt +#usr/share/doc/p7zip/README diff --git a/lfs/7zip b/lfs/7zip index 847f89f86..fbf63b353 100644 --- a/lfs/7zip +++ b/lfs/7zip @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2016 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 15.14.1 +VER = 16.02 THISAPP = p7zip_$(VER) DL_FILE = $(THISAPP)_src_all.tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = 7zip -PAK_VER = 6 +PAK_VER = 7 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 92cca093312b5a71a7be7dc7d1d32509 +$(DL_FILE)_MD5 = a0128d661cfe7cc8c121e73519c54fbf install : $(TARGET) @@ -77,8 +77,7 @@ dist: $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) patch -Np1 < $(DIR_SRC)/src/patches/p7zip/CVE-2016-2334.patch - cd $(DIR_APP) patch -Np1 < $(DIR_SRC)/src/patches/p7zip/CVE-2016-2335.patch + cd $(DIR_APP) && cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/p7zip_change_install_folder.patch cd $(DIR_APP) && make 7z $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/src/patches/p7zip_change_install_folder.patch b/src/patches/p7zip_change_install_folder.patch new file mode 100644 index 000000000..4a8334329 --- /dev/null +++ b/src/patches/p7zip_change_install_folder.patch @@ -0,0 +1,10 @@ +--- p7zip_15.14.1/makefile.common ++++ p7zip_15.14.1/makefile.common +@@ -1,6 +1,6 @@ + MKDIR = mkdir -p + +-DEST_HOME=/usr/local ++DEST_HOME=/usr + DEST_BIN=$(DEST_HOME)/bin + DEST_SHARE=$(DEST_HOME)/lib/p7zip + DEST_SHARE_DOC=$(DEST_HOME)/share/doc/p7zip From ac442269ccd3eb699c108427a7c470184374240b Mon Sep 17 00:00:00 2001 From: Marcel Lorenz Date: Tue, 6 Jun 2017 14:30:58 +0200 Subject: [PATCH 457/464] libarchive: update to 3.3.1 https://www.libarchive.org/ Signed-off-by: Marcel Lorenz Signed-off-by: Michael Tremer --- config/rootfiles/common/libarchive | 6 +++--- lfs/libarchive | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/rootfiles/common/libarchive b/config/rootfiles/common/libarchive index 80daa2d5b..c190eef7b 100644 --- a/config/rootfiles/common/libarchive +++ b/config/rootfiles/common/libarchive @@ -1,15 +1,15 @@ -#usr/bin/bsdcpio #usr/bin/bsdcat +#usr/bin/bsdcpio #usr/bin/bsdtar #usr/include/archive.h #usr/include/archive_entry.h #usr/lib/libarchive.la #usr/lib/libarchive.so #usr/lib/libarchive.so.13 -#usr/lib/libarchive.so.13.2.1 +#usr/lib/libarchive.so.13.3.1 #usr/lib/pkgconfig/libarchive.pc -#usr/share/man/man1/bsdcpio.1 #usr/share/man/man1/bsdcat.1 +#usr/share/man/man1/bsdcpio.1 #usr/share/man/man1/bsdtar.1 #usr/share/man/man3/archive_entry.3 #usr/share/man/man3/archive_entry_acl.3 diff --git a/lfs/libarchive b/lfs/libarchive index 58b4b6e16..2c34225aa 100644 --- a/lfs/libarchive +++ b/lfs/libarchive @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2016 IPFire Team # +# Copyright (C) 2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.2.1 +VER = 3.3.1 THISAPP = libarchive-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -41,7 +41,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = afa257047d1941a565216edbf0171e72 +$(DL_FILE)_MD5 = d2af45480aa5b0db5b5f3919cd0ea65e install : $(TARGET) From 6872b9e0a851b4dccb68872f7cafbb1392b0cde3 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 3 Jun 2017 15:38:40 +0200 Subject: [PATCH 458/464] libgcrypt: Update to 1.7.7 For details see: https://github.com/gpg/libgcrypt/commits/master Best, Matthias Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/libgcrypt | 2 +- lfs/libgcrypt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/common/libgcrypt b/config/rootfiles/common/libgcrypt index 470634341..725593f8b 100644 --- a/config/rootfiles/common/libgcrypt +++ b/config/rootfiles/common/libgcrypt @@ -6,7 +6,7 @@ #usr/lib/libgcrypt.la #usr/lib/libgcrypt.so usr/lib/libgcrypt.so.20 -usr/lib/libgcrypt.so.20.1.3 +usr/lib/libgcrypt.so.20.1.7 #usr/share/aclocal/libgcrypt.m4 #usr/share/info/gcrypt.info #usr/share/man/man1/hmac256.1 diff --git a/lfs/libgcrypt b/lfs/libgcrypt index 5a060325b..5d5572c99 100644 --- a/lfs/libgcrypt +++ b/lfs/libgcrypt @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.7.3 +VER = 1.7.7 THISAPP = libgcrypt-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = c869e542cc13a1c28d8055487bf7f5c4 +$(DL_FILE)_MD5 = d1769481b1b506a632fd66c5e5f62e41 install : $(TARGET) From 8be68155071b6465a589fdfc429662ba4d833435 Mon Sep 17 00:00:00 2001 From: Matthias Fischer Date: Sat, 3 Jun 2017 15:45:24 +0200 Subject: [PATCH 459/464] libgpg-error: Update to 1.27 Signed-off-by: Matthias Fischer Signed-off-by: Michael Tremer --- config/rootfiles/common/libgpg-error | 5 ++++- lfs/libgpg-error | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/config/rootfiles/common/libgpg-error b/config/rootfiles/common/libgpg-error index 92ac1f3f9..6945f3495 100644 --- a/config/rootfiles/common/libgpg-error +++ b/config/rootfiles/common/libgpg-error @@ -1,10 +1,11 @@ usr/bin/gpg-error #usr/bin/gpg-error-config #usr/include/gpg-error.h +#usr/include/gpgrt.h #usr/lib/libgpg-error.la #usr/lib/libgpg-error.so usr/lib/libgpg-error.so.0 -usr/lib/libgpg-error.so.0.19.1 +usr/lib/libgpg-error.so.0.22.0 #usr/share/aclocal/gpg-error.m4 #usr/share/common-lisp #usr/share/common-lisp/source @@ -14,6 +15,8 @@ usr/lib/libgpg-error.so.0.19.1 #usr/share/common-lisp/source/gpg-error/gpg-error.asd #usr/share/common-lisp/source/gpg-error/gpg-error.lisp #usr/share/info/gpgrt.info +#usr/share/libgpg-error +#usr/share/libgpg-error/errorref.txt #usr/share/locale/cs/LC_MESSAGES/libgpg-error.mo #usr/share/locale/da/LC_MESSAGES/libgpg-error.mo #usr/share/locale/de/LC_MESSAGES/libgpg-error.mo diff --git a/lfs/libgpg-error b/lfs/libgpg-error index 84af2aa36..ac618dcca 100644 --- a/lfs/libgpg-error +++ b/lfs/libgpg-error @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2016 IPFire Team # +# Copyright (C) 2007-2017 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.24 +VER = 1.27 THISAPP = libgpg-error-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = feb42198c0aaf3b28eabe8f41a34b983 +$(DL_FILE)_MD5 = 5217ef3e76a7275a2a3b569a12ddc989 install : $(TARGET) From b98ca5fa2d75d0ce5f03786f91a5ecaed625e914 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 7 Jun 2017 10:34:43 +0100 Subject: [PATCH 460/464] stripper: Abort if stripping fails Signed-off-by: Michael Tremer --- src/stripper | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/stripper b/src/stripper index 2b4feafe9..3601e7427 100755 --- a/src/stripper +++ b/src/stripper @@ -45,13 +45,13 @@ for dir in ${dirs}; do find ${dir} -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \ | file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped/\1/p' | while read file; do - _strip ${file} - done + _strip ${file} || exit $? + done || exit $? # Strip static archives. find ${dir} -name \*.a -a -exec file {} \; \ | grep 'current ar archive' | sed -n -e 's/^\(.*\):[ ]*current ar archive/\1/p' | while read file; do - _strip ${file} - done + _strip ${file} || exit $? + done || exit $? done From 2ee623a89ad42306001d454c4638a561cf9685c2 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 7 Jun 2017 10:34:58 +0100 Subject: [PATCH 461/464] stripper: Fix for newer versions of file The output has changed and this patch will now ignore any additional output. Signed-off-by: Michael Tremer --- src/stripper | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stripper b/src/stripper index 3601e7427..d73848fc6 100755 --- a/src/stripper +++ b/src/stripper @@ -43,7 +43,7 @@ function _strip() { for dir in ${dirs}; do # Strip shared objects. find ${dir} -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \ - | file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped/\1/p' | + | file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped.*/\1/p' | while read file; do _strip ${file} || exit $? done || exit $? From 4960c9123246d13c04347551b179b45d9dae39d1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 7 Jun 2017 10:58:02 +0100 Subject: [PATCH 462/464] Run strip with tools from the host system Signed-off-by: Michael Tremer --- lfs/strip | 2 +- make.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/strip b/lfs/strip index d07ff43ee..237f4d2b3 100644 --- a/lfs/strip +++ b/lfs/strip @@ -49,6 +49,6 @@ $(TARGET) : # Don't strip VDR binaries, because they use a weird plugin system # which does not work when unneeded symbols get stripped from # /usr/sbin/vdr. - STRIP="/tools/bin/strip" $(DIR_SRC)/src/stripper / \ + $(DIR_SRC)/src/stripper $(ROOT) \ --exclude=/usr/src --exclude=/tools \ --exclude=/usr/sbin/vdr --exclude=/usr/lib/vdr diff --git a/make.sh b/make.sh index 9c4c6ca08..a0f2dffc2 100755 --- a/make.sh +++ b/make.sh @@ -895,7 +895,7 @@ buildinstaller() { export LOGFILE lfsmake2 memtest lfsmake2 installer - lfsmake2 strip + lfsmake1 strip } buildpackages() { From b7ab17ad83877436f13215cc850e993ade0cb846 Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Wed, 7 Jun 2017 15:13:56 +0200 Subject: [PATCH 463/464] BUG11278: It is not possible to create subnets of internal networks in firewallgroups Fixes: #11278 When creating networks which are part of an internal network, there was an errormessage displayed and the creation was prohibited. Now it is possible to create such subnets. This is used at own risk! Users have to take care of the firewallrule sequence. It is possible to create situations that are not wanted. Signed-off-by: Alexander Marx Signed-off-by: Michael Tremer --- config/cfgroot/general-functions.pl | 24 ++++++++++++++++++++++-- html/cgi-bin/fwhosts.cgi | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 5e5417d09..f448c34be 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -465,6 +465,7 @@ sub checksubnets my $ccdname=$_[0]; my $ccdnet=$_[1]; my $ownnet=$_[2]; + my $checktype=$_[3]; my $errormessage; my ($ip,$cidr)=split(/\//,$ccdnet); $cidr=&iporsubtocidr($cidr); @@ -542,10 +543,15 @@ sub checksubnets } #call check_net_internal - &General::check_net_internal($ccdnet); + if ($checktype eq "exact") + { + &General::check_net_internal_exact($ccdnet); + }else{ + &General::check_net_internal_range($ccdnet); + } } -sub check_net_internal{ +sub check_net_internal_range{ my $network=shift; my ($ip,$cidr)=split(/\//,$network); my %ownnet=(); @@ -559,6 +565,20 @@ sub check_net_internal{ if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} } +sub check_net_internal_exact{ + my $network=shift; + my ($ip,$cidr)=split(/\//,$network); + my %ownnet=(); + my $errormessage; + $cidr=&iporsubtocidr($cidr); + #check if we use one of ipfire's networks (green,orange,blue) + &readhash("${General::swroot}/ethernet/settings", \%ownnet); + if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'GREEN_NETADDRESS'}/$ownnet{'GREEN_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} + if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'ORANGE_NETADDRESS'}/$ownnet{'ORANGE_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} + if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'BLUE_NETADDRESS'}/$ownnet{'BLUE_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} + if (($ownnet{'RED_NETADDRESS'} ne '' && $ownnet{'RED_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'RED_NETADDRESS'}/$ownnet{'RED_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;} +} + sub validport { $_ = $_[0]; diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi index 1b0fe0751..25ab489ea 100644 --- a/html/cgi-bin/fwhosts.cgi +++ b/html/cgi-bin/fwhosts.cgi @@ -301,7 +301,7 @@ if ($fwhostsettings{'ACTION'} eq 'savenet' ) } if($fwhostsettings{'error'} ne 'on'){ my $fullip="$fwhostsettings{'IP'}/".&General::iporsubtocidr($fwhostsettings{'SUBNET'}); - $errormessage=$errormessage.&General::checksubnets($fwhostsettings{'HOSTNAME'},$fullip,""); + $errormessage=$errormessage.&General::checksubnets($fwhostsettings{'HOSTNAME'},$fullip,"","exact"); } #only check plausi when no error till now if (!$errormessage){ From 357b8c14111373a8d4e02b9e9b9506e6d83c40be Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 7 Jun 2017 09:12:26 +0100 Subject: [PATCH 464/464] bash: Fix toolchain build again I am too stupid to get this right Signed-off-by: Michael Tremer --- lfs/bash | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lfs/bash b/lfs/bash index 04e6c5084..e98b6fdba 100644 --- a/lfs/bash +++ b/lfs/bash @@ -101,6 +101,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ifeq "$(TOOLCHAIN)" "1" ln -svf bash /tools/bin/sh + + mkdir -pv $(ROOT)/bin ln -svf ../tools/bin/bash $(ROOT)/bin/sh else ln -svf bash /bin/sh